]> git.donarmstrong.com Git - roundcube.git/commitdiff
Imported Upstream version 0.8.4 upstream
authorDon Armstrong <don@debian.org>
Tue, 11 Dec 2012 02:39:19 +0000 (18:39 -0800)
committerDon Armstrong <don@debian.org>
Tue, 11 Dec 2012 02:39:19 +0000 (18:39 -0800)
2542 files changed:
.htaccess
CHANGELOG
INSTALL
INSTALL.orig [deleted file]
LICENSE
README [deleted file]
README.md [new file with mode: 0644]
SQL/mssql.initial.sql
SQL/mssql.upgrade.sql
SQL/mysql.update.sql
UPGRADING
bin/cleandb.sh
bin/decrypt.sh
bin/dumpschema.sh [deleted file]
bin/exportgettext.sh [new file with mode: 0755]
bin/importgettext.sh [new file with mode: 0755]
bin/indexcontacts.sh
bin/installto.sh
bin/makedoc.sh [deleted file]
bin/msgexport.sh
bin/update.sh
config/db.inc.php.dist
config/main.inc.php.dist
config/mimetypes.php
index.php
installer/check.php
installer/client.js
installer/config.php
installer/images/rcube_logo.gif [deleted file]
installer/images/roundcube_logo.png [new file with mode: 0644]
installer/index.php
installer/rcube_install.php
installer/utils.php
installer/welcome.html [deleted file]
plugins/acl/acl.js
plugins/acl/acl.php
plugins/acl/localization/bs_BA.inc [new file with mode: 0644]
plugins/acl/localization/ca_ES.inc [new file with mode: 0644]
plugins/acl/localization/cs_CZ.inc [new file with mode: 0644]
plugins/acl/localization/cy_GB.inc [new file with mode: 0644]
plugins/acl/localization/da_DK.inc [new file with mode: 0644]
plugins/acl/localization/de_CH.inc [new file with mode: 0644]
plugins/acl/localization/de_DE.inc
plugins/acl/localization/en_GB.inc [new file with mode: 0644]
plugins/acl/localization/eo.inc [new file with mode: 0644]
plugins/acl/localization/es_ES.inc [new file with mode: 0644]
plugins/acl/localization/et_EE.inc [new file with mode: 0644]
plugins/acl/localization/fa_IR.inc [new file with mode: 0644]
plugins/acl/localization/fi_FI.inc [new file with mode: 0644]
plugins/acl/localization/fr_FR.inc [new file with mode: 0644]
plugins/acl/localization/he_IL.inc [new file with mode: 0644]
plugins/acl/localization/hu_HU.inc [new file with mode: 0644]
plugins/acl/localization/hy_AM.inc [new file with mode: 0644]
plugins/acl/localization/it_IT.inc [new file with mode: 0644]
plugins/acl/localization/ja_JP.inc [new file with mode: 0644]
plugins/acl/localization/ko_KR.inc [new file with mode: 0644]
plugins/acl/localization/nb_NB.inc [new file with mode: 0644]
plugins/acl/localization/nl_NL.inc [new file with mode: 0644]
plugins/acl/localization/pl_PL.inc
plugins/acl/localization/pt_BR.inc [new file with mode: 0644]
plugins/acl/localization/pt_PT.inc [new file with mode: 0644]
plugins/acl/localization/ru_RU.inc [new file with mode: 0644]
plugins/acl/localization/sk_SK.inc [new file with mode: 0644]
plugins/acl/localization/sl_SI.inc [new file with mode: 0644]
plugins/acl/localization/sv_SE.inc [new file with mode: 0644]
plugins/acl/localization/tr_TR.inc [new file with mode: 0644]
plugins/acl/localization/vi_VN.inc [new file with mode: 0644]
plugins/acl/localization/zh_CN.inc [new file with mode: 0644]
plugins/acl/localization/zh_TW.inc [new file with mode: 0644]
plugins/acl/package.xml [new file with mode: 0644]
plugins/acl/skins/classic/acl.css [new file with mode: 0644]
plugins/acl/skins/classic/images/enabled.png [new file with mode: 0644]
plugins/acl/skins/classic/images/partial.png [new file with mode: 0644]
plugins/acl/skins/classic/templates/table.html [new file with mode: 0644]
plugins/acl/skins/default/acl.css [deleted file]
plugins/acl/skins/default/images/enabled.png [deleted file]
plugins/acl/skins/default/images/partial.png [deleted file]
plugins/acl/skins/default/templates/table.html [deleted file]
plugins/acl/skins/larry/acl.css [new file with mode: 0644]
plugins/acl/skins/larry/images/enabled.png [new file with mode: 0644]
plugins/acl/skins/larry/images/partial.png [new file with mode: 0644]
plugins/acl/skins/larry/templates/table.html [new file with mode: 0644]
plugins/additional_message_headers/package.xml
plugins/archive/archive.js
plugins/archive/archive.php
plugins/archive/localization/ar_SA.inc [new file with mode: 0644]
plugins/archive/localization/be_BE.inc [new file with mode: 0644]
plugins/archive/localization/bs_BA.inc [new file with mode: 0644]
plugins/archive/localization/ca_ES.inc [new file with mode: 0644]
plugins/archive/localization/cs_CZ.inc
plugins/archive/localization/cy_GB.inc [new file with mode: 0644]
plugins/archive/localization/da_DK.inc [new file with mode: 0644]
plugins/archive/localization/de_CH.inc
plugins/archive/localization/de_DE.inc
plugins/archive/localization/el_GR.inc [new file with mode: 0644]
plugins/archive/localization/en_GB.inc [new file with mode: 0644]
plugins/archive/localization/en_US.inc
plugins/archive/localization/eo.inc [new file with mode: 0644]
plugins/archive/localization/es_AR.inc
plugins/archive/localization/es_ES.inc
plugins/archive/localization/et_EE.inc
plugins/archive/localization/fa_IR.inc [new file with mode: 0644]
plugins/archive/localization/fi_FI.inc [new file with mode: 0644]
plugins/archive/localization/fr_FR.inc
plugins/archive/localization/gl_ES.inc
plugins/archive/localization/he_IL.inc [new file with mode: 0644]
plugins/archive/localization/hr_HR.inc [new file with mode: 0644]
plugins/archive/localization/hu_HU.inc [new file with mode: 0644]
plugins/archive/localization/hy_AM.inc [new file with mode: 0644]
plugins/archive/localization/id_ID.inc [new file with mode: 0644]
plugins/archive/localization/it_IT.inc [new file with mode: 0644]
plugins/archive/localization/ja_JP.inc
plugins/archive/localization/ko_KR.inc [new file with mode: 0644]
plugins/archive/localization/ku.inc [new file with mode: 0644]
plugins/archive/localization/lt_LT.inc [new file with mode: 0644]
plugins/archive/localization/lv_LV.inc [new file with mode: 0644]
plugins/archive/localization/ml_IN.inc [new file with mode: 0644]
plugins/archive/localization/ml_ML.inc [new file with mode: 0644]
plugins/archive/localization/mr_IN.inc [new file with mode: 0644]
plugins/archive/localization/nb_NB.inc [new file with mode: 0644]
plugins/archive/localization/nl_NL.inc
plugins/archive/localization/pl_PL.inc
plugins/archive/localization/pt_BR.inc
plugins/archive/localization/pt_PT.inc [new file with mode: 0644]
plugins/archive/localization/ro_RO.inc [new file with mode: 0644]
plugins/archive/localization/ru_RU.inc
plugins/archive/localization/si_LK.inc [new file with mode: 0644]
plugins/archive/localization/sk_SK.inc [new file with mode: 0644]
plugins/archive/localization/sl_SI.inc [new file with mode: 0644]
plugins/archive/localization/sr_CS.inc [new file with mode: 0644]
plugins/archive/localization/sv_SE.inc
plugins/archive/localization/tr_TR.inc [new file with mode: 0644]
plugins/archive/localization/uk_UA.inc [new file with mode: 0644]
plugins/archive/localization/vi_VN.inc [new file with mode: 0644]
plugins/archive/localization/zh_CN.inc [new file with mode: 0644]
plugins/archive/localization/zh_TW.inc
plugins/archive/package.xml
plugins/archive/skins/classic/archive.css [new file with mode: 0644]
plugins/archive/skins/classic/archive_act.png [new file with mode: 0644]
plugins/archive/skins/classic/archive_pas.png [new file with mode: 0644]
plugins/archive/skins/classic/foldericon.png [new file with mode: 0644]
plugins/archive/skins/default/archive_act.png [deleted file]
plugins/archive/skins/default/archive_pas.png [deleted file]
plugins/archive/skins/default/foldericon.png [deleted file]
plugins/archive/skins/larry/.gitignore [new file with mode: 0644]
plugins/autologon/autologon.php
plugins/database_attachments/database_attachments.php
plugins/database_attachments/package.xml [new file with mode: 0644]
plugins/debug_logger/debug_logger.php
plugins/debug_logger/package.xml [new file with mode: 0644]
plugins/emoticons/emoticons.php
plugins/emoticons/package.xml [new file with mode: 0644]
plugins/enigma/lib/enigma_engine.php
plugins/enigma/skins/classic/enigma.css [new file with mode: 0644]
plugins/enigma/skins/classic/enigma.png [new file with mode: 0644]
plugins/enigma/skins/classic/enigma_error.png [new file with mode: 0644]
plugins/enigma/skins/classic/key.png [new file with mode: 0644]
plugins/enigma/skins/classic/key_add.png [new file with mode: 0644]
plugins/enigma/skins/classic/keys_toolbar.png [new file with mode: 0644]
plugins/enigma/skins/classic/templates/keyimport.html [new file with mode: 0644]
plugins/enigma/skins/classic/templates/keyinfo.html [new file with mode: 0644]
plugins/enigma/skins/classic/templates/keys.html [new file with mode: 0644]
plugins/enigma/skins/default/enigma.css [deleted file]
plugins/enigma/skins/default/enigma.png [deleted file]
plugins/enigma/skins/default/enigma_error.png [deleted file]
plugins/enigma/skins/default/key.png [deleted file]
plugins/enigma/skins/default/key_add.png [deleted file]
plugins/enigma/skins/default/keys_toolbar.png [deleted file]
plugins/enigma/skins/default/templates/keyimport.html [deleted file]
plugins/enigma/skins/default/templates/keyinfo.html [deleted file]
plugins/enigma/skins/default/templates/keys.html [deleted file]
plugins/example_addressbook/package.xml [new file with mode: 0644]
plugins/filesystem_attachments/filesystem_attachments.php
plugins/filesystem_attachments/package.xml [new file with mode: 0644]
plugins/help/content/about.html
plugins/help/content/license.html
plugins/help/help.php
plugins/help/localization/bs_BA.inc [new file with mode: 0644]
plugins/help/localization/ca_ES.inc [new file with mode: 0644]
plugins/help/localization/cy_GB.inc [new file with mode: 0644]
plugins/help/localization/de_CH.inc [new file with mode: 0644]
plugins/help/localization/en_GB.inc
plugins/help/localization/eo.inc [new file with mode: 0644]
plugins/help/localization/fa_IR.inc [new file with mode: 0644]
plugins/help/localization/fi_FI.inc [new file with mode: 0644]
plugins/help/localization/fr_FR.inc [new file with mode: 0644]
plugins/help/localization/he_IL.inc [new file with mode: 0644]
plugins/help/localization/hy_AM.inc [new file with mode: 0644]
plugins/help/localization/it_IT.inc [new file with mode: 0644]
plugins/help/localization/ja_JP.inc
plugins/help/localization/ko_KR.inc [new file with mode: 0644]
plugins/help/localization/lt_LT.inc [new file with mode: 0644]
plugins/help/localization/nb_NB.inc [new file with mode: 0644]
plugins/help/localization/nl_NL.inc [new file with mode: 0644]
plugins/help/localization/pt_PT.inc [new file with mode: 0644]
plugins/help/localization/sk_SK.inc [new file with mode: 0644]
plugins/help/localization/sl_SI.inc [new file with mode: 0644]
plugins/help/localization/sr_CS.inc [new file with mode: 0644]
plugins/help/localization/tr_TR.inc [new file with mode: 0644]
plugins/help/localization/vi_VN.inc [new file with mode: 0644]
plugins/help/localization/zh_CN.inc [new file with mode: 0644]
plugins/help/package.xml [new file with mode: 0644]
plugins/help/skins/classic/help.css [new file with mode: 0644]
plugins/help/skins/classic/help.gif [new file with mode: 0644]
plugins/help/skins/classic/templates/help.html [new file with mode: 0644]
plugins/help/skins/default/help.css [deleted file]
plugins/help/skins/default/help.gif [deleted file]
plugins/help/skins/default/templates/help.html [deleted file]
plugins/help/skins/larry/help.css [new file with mode: 0644]
plugins/help/skins/larry/help.png [new file with mode: 0644]
plugins/help/skins/larry/icons.psd [new file with mode: 0644]
plugins/help/skins/larry/templates/help.html [new file with mode: 0644]
plugins/hide_blockquote/hide_blockquote.js [new file with mode: 0644]
plugins/hide_blockquote/hide_blockquote.php [new file with mode: 0644]
plugins/hide_blockquote/localization/bs_BA.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/ca_ES.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/cs_CZ.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/cy_GB.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/da_DK.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/de_CH.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/de_DE.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/en_GB.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/en_US.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/eo.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/es_ES.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/et_EE.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/fa_IR.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/fi_FI.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/fr_FR.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/gl_ES.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/he_IL.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/hu_HU.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/hy_AM.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/it_IT.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/ja_JP.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/ko_KR.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/lt_LT.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/nb_NB.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/nl_NL.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/pl_PL.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/pt_BR.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/pt_PT.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/ru_RU.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/sk_SK.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/sl_SI.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/sr_CS.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/sv_SE.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/tr_TR.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/vi_VN.inc [new file with mode: 0644]
plugins/hide_blockquote/localization/zh_CN.inc [new file with mode: 0644]
plugins/hide_blockquote/package.xml [new file with mode: 0644]
plugins/hide_blockquote/skins/larry/style.css [new file with mode: 0644]
plugins/http_authentication/http_authentication.php
plugins/http_authentication/package.xml [new file with mode: 0644]
plugins/jqueryui/config.inc.php.dist
plugins/jqueryui/jqueryui.php
plugins/jqueryui/js/jquery-ui-1.8.14.custom.min.js [deleted file]
plugins/jqueryui/js/jquery-ui-1.8.18.custom.min.js [new file with mode: 0755]
plugins/jqueryui/package.xml [new file with mode: 0644]
plugins/jqueryui/themes/classic/images/buttongradient.png [new file with mode: 0644]
plugins/jqueryui/themes/classic/images/listheader.png [new file with mode: 0644]
plugins/jqueryui/themes/classic/images/ui-bg_flat_0_aaaaaa_40x100.png [new file with mode: 0755]
plugins/jqueryui/themes/classic/images/ui-bg_flat_75_ffffff_40x100.png [new file with mode: 0755]
plugins/jqueryui/themes/classic/images/ui-bg_flat_90_cc3333_40x100.png [new file with mode: 0755]
plugins/jqueryui/themes/classic/images/ui-bg_glass_95_fef1ec_1x400.png [new file with mode: 0755]
plugins/jqueryui/themes/classic/images/ui-bg_highlight-hard_90_a3a3a3_1x100.png [new file with mode: 0755]
plugins/jqueryui/themes/classic/images/ui-bg_highlight-hard_90_e6e6e7_1x100.png [new file with mode: 0755]
plugins/jqueryui/themes/classic/images/ui-bg_highlight-hard_90_f4f4f4_1x100.png [new file with mode: 0755]
plugins/jqueryui/themes/classic/images/ui-icons_000000_256x240.png [new file with mode: 0755]
plugins/jqueryui/themes/classic/images/ui-icons_333333_256x240.png [new file with mode: 0755]
plugins/jqueryui/themes/classic/images/ui-icons_666666_256x240.png [new file with mode: 0755]
plugins/jqueryui/themes/classic/images/ui-icons_cc3333_256x240.png [new file with mode: 0755]
plugins/jqueryui/themes/classic/images/ui-icons_dddddd_256x240.png [new file with mode: 0755]
plugins/jqueryui/themes/classic/jquery-ui-1.8.18.custom.css [new file with mode: 0755]
plugins/jqueryui/themes/classic/roundcube-custom.diff [new file with mode: 0644]
plugins/jqueryui/themes/default/images/buttongradient.png [deleted file]
plugins/jqueryui/themes/default/images/listheader.png [deleted file]
plugins/jqueryui/themes/default/images/ui-bg_flat_0_aaaaaa_40x100.png [deleted file]
plugins/jqueryui/themes/default/images/ui-bg_flat_75_ffffff_40x100.png [deleted file]
plugins/jqueryui/themes/default/images/ui-bg_flat_90_cc3333_40x100.png [deleted file]
plugins/jqueryui/themes/default/images/ui-bg_glass_95_fef1ec_1x400.png [deleted file]
plugins/jqueryui/themes/default/images/ui-bg_highlight-hard_90_a3a3a3_1x100.png [deleted file]
plugins/jqueryui/themes/default/images/ui-bg_highlight-hard_90_e6e6e7_1x100.png [deleted file]
plugins/jqueryui/themes/default/images/ui-bg_highlight-hard_90_f4f4f4_1x100.png [deleted file]
plugins/jqueryui/themes/default/images/ui-icons_000000_256x240.png [deleted file]
plugins/jqueryui/themes/default/images/ui-icons_333333_256x240.png [deleted file]
plugins/jqueryui/themes/default/images/ui-icons_666666_256x240.png [deleted file]
plugins/jqueryui/themes/default/images/ui-icons_cc3333_256x240.png [deleted file]
plugins/jqueryui/themes/default/images/ui-icons_dddddd_256x240.png [deleted file]
plugins/jqueryui/themes/default/jquery-ui-1.8.14.custom.css [deleted file]
plugins/jqueryui/themes/default/roundcube-custom.diff [deleted file]
plugins/jqueryui/themes/larry/images/ui-bg_highlight-hard_55_b0ccd7_1x100.png [new file with mode: 0755]
plugins/jqueryui/themes/larry/images/ui-bg_highlight-hard_65_ffffff_1x100.png [new file with mode: 0755]
plugins/jqueryui/themes/larry/images/ui-bg_highlight-hard_75_eaeaea_1x100.png [new file with mode: 0755]
plugins/jqueryui/themes/larry/images/ui-bg_highlight-hard_75_f8f8f8_1x100.png [new file with mode: 0755]
plugins/jqueryui/themes/larry/images/ui-bg_highlight-soft_75_fafafa_1x100.png [new file with mode: 0755]
plugins/jqueryui/themes/larry/images/ui-bg_highlight-soft_90_e4e4e4_1x100.png [new file with mode: 0755]
plugins/jqueryui/themes/larry/images/ui-dialog-close.png [new file with mode: 0644]
plugins/jqueryui/themes/larry/images/ui-icons-datepicker.png [new file with mode: 0644]
plugins/jqueryui/themes/larry/images/ui-icons_004458_256x240.png [new file with mode: 0755]
plugins/jqueryui/themes/larry/images/ui-icons_d7211e_256x240.png [new file with mode: 0755]
plugins/jqueryui/themes/larry/images/ui-icons_ffffff_256x240.png [new file with mode: 0755]
plugins/jqueryui/themes/larry/jquery-ui-1.8.18.custom.css [new file with mode: 0755]
plugins/jqueryui/themes/redmond/jquery-ui-1.8.14.custom.css [deleted file]
plugins/jqueryui/themes/redmond/jquery-ui-1.8.18.custom.css [new file with mode: 0755]
plugins/managesieve/Changelog
plugins/managesieve/lib/Net/Sieve.php
plugins/managesieve/lib/rcube_sieve.php
plugins/managesieve/lib/rcube_sieve_script.php
plugins/managesieve/localization/be_BE.inc [new file with mode: 0644]
plugins/managesieve/localization/bs_BA.inc [new file with mode: 0644]
plugins/managesieve/localization/ca_ES.inc [new file with mode: 0644]
plugins/managesieve/localization/cs_CZ.inc
plugins/managesieve/localization/cy_GB.inc [new file with mode: 0644]
plugins/managesieve/localization/da_DK.inc [new file with mode: 0644]
plugins/managesieve/localization/de_CH.inc
plugins/managesieve/localization/de_DE.inc
plugins/managesieve/localization/en_GB.inc
plugins/managesieve/localization/en_US.inc
plugins/managesieve/localization/eo.inc [new file with mode: 0644]
plugins/managesieve/localization/es_ES.inc
plugins/managesieve/localization/et_EE.inc
plugins/managesieve/localization/fa_IR.inc [new file with mode: 0644]
plugins/managesieve/localization/fi_FI.inc
plugins/managesieve/localization/fr_FR.inc
plugins/managesieve/localization/gl_ES.inc
plugins/managesieve/localization/he_IL.inc [new file with mode: 0644]
plugins/managesieve/localization/hr_HR.inc
plugins/managesieve/localization/hu_HU.inc
plugins/managesieve/localization/hy_AM.inc [new file with mode: 0644]
plugins/managesieve/localization/ia.inc [new file with mode: 0644]
plugins/managesieve/localization/ia_IA.inc [new file with mode: 0644]
plugins/managesieve/localization/id_ID.inc [new file with mode: 0644]
plugins/managesieve/localization/it_IT.inc
plugins/managesieve/localization/ja_JP.inc
plugins/managesieve/localization/ko_KR.inc [new file with mode: 0644]
plugins/managesieve/localization/lt_LT.inc [new file with mode: 0644]
plugins/managesieve/localization/lv_LV.inc
plugins/managesieve/localization/ml_IN.inc [new file with mode: 0644]
plugins/managesieve/localization/ml_ML.inc [new file with mode: 0644]
plugins/managesieve/localization/mr_IN.inc [new file with mode: 0644]
plugins/managesieve/localization/nb_NO.inc
plugins/managesieve/localization/nl_NL.inc
plugins/managesieve/localization/pl_PL.inc
plugins/managesieve/localization/pt_BR.inc
plugins/managesieve/localization/pt_PT.inc
plugins/managesieve/localization/ro_RO.inc [new file with mode: 0644]
plugins/managesieve/localization/ru_RU.inc
plugins/managesieve/localization/si_LK.inc [new file with mode: 0644]
plugins/managesieve/localization/sk_SK.inc
plugins/managesieve/localization/sl_SI.inc
plugins/managesieve/localization/sv_SE.inc
plugins/managesieve/localization/tr_TR.inc [new file with mode: 0644]
plugins/managesieve/localization/vi_VN.inc [new file with mode: 0644]
plugins/managesieve/localization/zh_CN.inc
plugins/managesieve/localization/zh_TW.inc
plugins/managesieve/managesieve.js
plugins/managesieve/managesieve.php
plugins/managesieve/package.xml
plugins/managesieve/skins/classic/images/add.png [new file with mode: 0644]
plugins/managesieve/skins/classic/images/del.png [new file with mode: 0644]
plugins/managesieve/skins/classic/images/down_small.gif [new file with mode: 0644]
plugins/managesieve/skins/classic/images/filter.png [new file with mode: 0644]
plugins/managesieve/skins/classic/images/up_small.gif [new file with mode: 0644]
plugins/managesieve/skins/classic/managesieve.css [new file with mode: 0644]
plugins/managesieve/skins/classic/managesieve_mail.css [new file with mode: 0644]
plugins/managesieve/skins/classic/templates/filteredit.html [new file with mode: 0644]
plugins/managesieve/skins/classic/templates/managesieve.html [new file with mode: 0644]
plugins/managesieve/skins/classic/templates/setedit.html [new file with mode: 0644]
plugins/managesieve/skins/default/images/add.png [deleted file]
plugins/managesieve/skins/default/images/del.png [deleted file]
plugins/managesieve/skins/default/images/down_small.gif [deleted file]
plugins/managesieve/skins/default/images/filter.png [deleted file]
plugins/managesieve/skins/default/images/up_small.gif [deleted file]
plugins/managesieve/skins/default/managesieve.css [deleted file]
plugins/managesieve/skins/default/managesieve_mail.css [deleted file]
plugins/managesieve/skins/default/templates/filteredit.html [deleted file]
plugins/managesieve/skins/default/templates/managesieve.html [deleted file]
plugins/managesieve/skins/default/templates/setedit.html [deleted file]
plugins/managesieve/skins/larry/images/add.png [new file with mode: 0644]
plugins/managesieve/skins/larry/images/del.png [new file with mode: 0644]
plugins/managesieve/skins/larry/images/down_small.gif [new file with mode: 0644]
plugins/managesieve/skins/larry/images/up_small.gif [new file with mode: 0644]
plugins/managesieve/skins/larry/managesieve.css [new file with mode: 0644]
plugins/managesieve/skins/larry/managesieve_mail.css [new file with mode: 0644]
plugins/managesieve/skins/larry/templates/filteredit.html [new file with mode: 0644]
plugins/managesieve/skins/larry/templates/managesieve.html [new file with mode: 0644]
plugins/managesieve/skins/larry/templates/setedit.html [new file with mode: 0644]
plugins/markasjunk/localization/be_BE.inc [new file with mode: 0644]
plugins/markasjunk/localization/bs_BA.inc [new file with mode: 0644]
plugins/markasjunk/localization/ca_ES.inc [new file with mode: 0644]
plugins/markasjunk/localization/cs_CZ.inc
plugins/markasjunk/localization/cy_GB.inc [new file with mode: 0644]
plugins/markasjunk/localization/da_DK.inc
plugins/markasjunk/localization/de_CH.inc
plugins/markasjunk/localization/de_DE.inc
plugins/markasjunk/localization/el_GR.inc [new file with mode: 0644]
plugins/markasjunk/localization/en_GB.inc [new file with mode: 0644]
plugins/markasjunk/localization/en_US.inc
plugins/markasjunk/localization/eo.inc [new file with mode: 0644]
plugins/markasjunk/localization/es_AR.inc
plugins/markasjunk/localization/es_ES.inc
plugins/markasjunk/localization/et_EE.inc
plugins/markasjunk/localization/fa_IR.inc [new file with mode: 0644]
plugins/markasjunk/localization/fi_FI.inc [new file with mode: 0644]
plugins/markasjunk/localization/fr_FR.inc [new file with mode: 0644]
plugins/markasjunk/localization/gl_ES.inc
plugins/markasjunk/localization/he_IL.inc [new file with mode: 0644]
plugins/markasjunk/localization/hr_HR.inc [new file with mode: 0644]
plugins/markasjunk/localization/hu_HU.inc [new file with mode: 0644]
plugins/markasjunk/localization/hy_AM.inc [new file with mode: 0644]
plugins/markasjunk/localization/id_ID.inc [new file with mode: 0644]
plugins/markasjunk/localization/it_IT.inc
plugins/markasjunk/localization/ja_JP.inc
plugins/markasjunk/localization/ko_KR.inc [new file with mode: 0644]
plugins/markasjunk/localization/ku.inc [new file with mode: 0644]
plugins/markasjunk/localization/lt_LT.inc [new file with mode: 0644]
plugins/markasjunk/localization/lv_LV.inc [new file with mode: 0644]
plugins/markasjunk/localization/ml_IN.inc [new file with mode: 0644]
plugins/markasjunk/localization/ml_ML.inc [new file with mode: 0644]
plugins/markasjunk/localization/mr_IN.inc [new file with mode: 0644]
plugins/markasjunk/localization/nb_NB.inc [new file with mode: 0644]
plugins/markasjunk/localization/nl_NL.inc [new file with mode: 0644]
plugins/markasjunk/localization/pl_PL.inc
plugins/markasjunk/localization/pt_BR.inc [new file with mode: 0644]
plugins/markasjunk/localization/pt_PT.inc [new file with mode: 0644]
plugins/markasjunk/localization/ro_RO.inc [new file with mode: 0644]
plugins/markasjunk/localization/ru_RU.inc
plugins/markasjunk/localization/si_LK.inc [new file with mode: 0644]
plugins/markasjunk/localization/sk_SK.inc
plugins/markasjunk/localization/sl_SI.inc [new file with mode: 0644]
plugins/markasjunk/localization/sr_CS.inc [new file with mode: 0644]
plugins/markasjunk/localization/sv_SE.inc
plugins/markasjunk/localization/tr_TR.inc [new file with mode: 0644]
plugins/markasjunk/localization/uk_UA.inc [new file with mode: 0644]
plugins/markasjunk/localization/vi_VN.inc [new file with mode: 0644]
plugins/markasjunk/localization/zh_CN.inc [new file with mode: 0644]
plugins/markasjunk/localization/zh_TW.inc
plugins/markasjunk/markasjunk.php
plugins/markasjunk/package.xml
plugins/markasjunk/skins/classic/junk_act.png [new file with mode: 0644]
plugins/markasjunk/skins/classic/junk_pas.png [new file with mode: 0644]
plugins/markasjunk/skins/classic/markasjunk.css [new file with mode: 0644]
plugins/markasjunk/skins/default/junk_act.png [deleted file]
plugins/markasjunk/skins/default/junk_pas.png [deleted file]
plugins/markasjunk/skins/larry/.gitignore [new file with mode: 0644]
plugins/new_user_dialog/localization/be_BE.inc [new file with mode: 0644]
plugins/new_user_dialog/localization/bg_BG.inc
plugins/new_user_dialog/localization/bs_BA.inc [new file with mode: 0644]
plugins/new_user_dialog/localization/ca_ES.inc [new file with mode: 0644]
plugins/new_user_dialog/localization/cs_CZ.inc
plugins/new_user_dialog/localization/cy_GB.inc [new file with mode: 0644]
plugins/new_user_dialog/localization/da_DK.inc [new file with mode: 0644]
plugins/new_user_dialog/localization/de_CH.inc
plugins/new_user_dialog/localization/de_DE.inc
plugins/new_user_dialog/localization/el_GR.inc [new file with mode: 0644]
plugins/new_user_dialog/localization/en_GB.inc [new file with mode: 0644]
plugins/new_user_dialog/localization/eo.inc [new file with mode: 0644]
plugins/new_user_dialog/localization/es_ES.inc
plugins/new_user_dialog/localization/et_EE.inc
plugins/new_user_dialog/localization/fa_IR.inc [new file with mode: 0644]
plugins/new_user_dialog/localization/fi_FI.inc [new file with mode: 0644]
plugins/new_user_dialog/localization/fr_FR.inc [new file with mode: 0644]
plugins/new_user_dialog/localization/gl_ES.inc
plugins/new_user_dialog/localization/he_IL.inc [new file with mode: 0644]
plugins/new_user_dialog/localization/hr_HR.inc [new file with mode: 0644]
plugins/new_user_dialog/localization/hu_HU.inc [new file with mode: 0644]
plugins/new_user_dialog/localization/hy_AM.inc [new file with mode: 0644]
plugins/new_user_dialog/localization/id_ID.inc [new file with mode: 0644]
plugins/new_user_dialog/localization/it_IT.inc
plugins/new_user_dialog/localization/ja_JP.inc
plugins/new_user_dialog/localization/ko_KR.inc [new file with mode: 0644]
plugins/new_user_dialog/localization/ku.inc [new file with mode: 0644]
plugins/new_user_dialog/localization/lt_LT.inc [new file with mode: 0644]
plugins/new_user_dialog/localization/lv_LV.inc [new file with mode: 0644]
plugins/new_user_dialog/localization/ml_IN.inc [new file with mode: 0644]
plugins/new_user_dialog/localization/ml_ML.inc [new file with mode: 0644]
plugins/new_user_dialog/localization/mr_IN.inc [new file with mode: 0644]
plugins/new_user_dialog/localization/nb_NB.inc [new file with mode: 0644]
plugins/new_user_dialog/localization/nl_NL.inc
plugins/new_user_dialog/localization/pl_PL.inc
plugins/new_user_dialog/localization/pt_BR.inc
plugins/new_user_dialog/localization/ro_RO.inc [new file with mode: 0644]
plugins/new_user_dialog/localization/ru_RU.inc
plugins/new_user_dialog/localization/sk_SK.inc
plugins/new_user_dialog/localization/sl_SI.inc
plugins/new_user_dialog/localization/sr_CS.inc [new file with mode: 0644]
plugins/new_user_dialog/localization/sv_SE.inc
plugins/new_user_dialog/localization/tr_TR.inc [new file with mode: 0644]
plugins/new_user_dialog/localization/uk_UA.inc [new file with mode: 0644]
plugins/new_user_dialog/localization/vi_VN.inc [new file with mode: 0644]
plugins/new_user_dialog/localization/zh_CN.inc [new file with mode: 0644]
plugins/new_user_dialog/localization/zh_TW.inc
plugins/new_user_dialog/new_user_dialog.php
plugins/new_user_dialog/newuserdialog.css
plugins/new_user_dialog/package.xml
plugins/new_user_identity/new_user_identity.php
plugins/new_user_identity/package.xml [new file with mode: 0644]
plugins/newmail_notifier/localization/be_BE.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/bs_BA.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/ca_ES.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/cs_CZ.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/cy_GB.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/da_DK.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/de_CH.inc
plugins/newmail_notifier/localization/en_GB.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/eo.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/es_ES.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/et_EE.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/fa_IR.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/fi_FI.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/fr_FR.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/gl_ES.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/he_IL.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/hr_HR.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/hu_HU.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/hy_AM.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/ia.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/ia_IA.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/id_ID.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/it_IT.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/ja_JP.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/ko_KR.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/lt_LT.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/ml_IN.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/ml_ML.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/mr_IN.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/nb_NB.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/nl_NL.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/pt_PT.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/ro_RO.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/si_LK.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/sk_SK.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/sl_SI.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/sr_CS.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/sv_SE.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/tr_TR.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/uk_UA.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/vi_VN.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/zh_CN.inc [new file with mode: 0644]
plugins/newmail_notifier/localization/zh_TW.inc [new file with mode: 0644]
plugins/newmail_notifier/newmail_notifier.js
plugins/newmail_notifier/newmail_notifier.php
plugins/newmail_notifier/package.xml [new file with mode: 0644]
plugins/password/README
plugins/password/config.inc.php.dist
plugins/password/drivers/chgsaslpasswd.c [deleted file]
plugins/password/drivers/chgvirtualminpasswd.c [deleted file]
plugins/password/drivers/chpass-wrapper.py [deleted file]
plugins/password/drivers/chpasswd.php
plugins/password/drivers/cpanel.php
plugins/password/drivers/dbmail.php [new file with mode: 0644]
plugins/password/drivers/directadmin.php
plugins/password/drivers/domainfactory.php [new file with mode: 0644]
plugins/password/drivers/expect.php [new file with mode: 0644]
plugins/password/drivers/hmail.php
plugins/password/drivers/ldap.php
plugins/password/drivers/ldap_simple.php
plugins/password/drivers/pam.php
plugins/password/drivers/poppassd.php
plugins/password/drivers/pw_usermod.php [new file with mode: 0644]
plugins/password/drivers/sasl.php
plugins/password/drivers/smb.php [new file with mode: 0644]
plugins/password/drivers/sql.php
plugins/password/drivers/virtualmin.php
plugins/password/drivers/vpopmaild.php
plugins/password/drivers/ximss.php
plugins/password/drivers/xmail.php
plugins/password/helpers/chgdbmailusers.c [new file with mode: 0644]
plugins/password/helpers/chgsaslpasswd.c [new file with mode: 0644]
plugins/password/helpers/chgvirtualminpasswd.c [new file with mode: 0644]
plugins/password/helpers/chpass-wrapper.py [new file with mode: 0644]
plugins/password/helpers/passwd-expect [new file with mode: 0644]
plugins/password/localization/az_AZ.inc
plugins/password/localization/bg_BG.inc
plugins/password/localization/bs_BA.inc [new file with mode: 0644]
plugins/password/localization/ca_ES.inc
plugins/password/localization/cs_CZ.inc
plugins/password/localization/cy_GB.inc [new file with mode: 0644]
plugins/password/localization/da_DK.inc
plugins/password/localization/de_CH.inc
plugins/password/localization/de_DE.inc
plugins/password/localization/en_GB.inc [new file with mode: 0644]
plugins/password/localization/eo.inc [new file with mode: 0644]
plugins/password/localization/es_AR.inc
plugins/password/localization/es_ES.inc
plugins/password/localization/et_EE.inc
plugins/password/localization/fa_IR.inc [new file with mode: 0644]
plugins/password/localization/fi_FI.inc
plugins/password/localization/fr_FR.inc
plugins/password/localization/gl_ES.inc
plugins/password/localization/he_IL.inc [new file with mode: 0644]
plugins/password/localization/hr_HR.inc
plugins/password/localization/hu_HU.inc
plugins/password/localization/hy_AM.inc [new file with mode: 0644]
plugins/password/localization/it_IT.inc
plugins/password/localization/ja_JP.inc
plugins/password/localization/ko_KR.inc [new file with mode: 0644]
plugins/password/localization/lt_LT.inc
plugins/password/localization/lv_LV.inc
plugins/password/localization/nb_NB.inc [new file with mode: 0644]
plugins/password/localization/nl_NL.inc
plugins/password/localization/pl_PL.inc
plugins/password/localization/pt_BR.inc
plugins/password/localization/pt_PT.inc
plugins/password/localization/ru_RU.inc
plugins/password/localization/sk_SK.inc
plugins/password/localization/sl_SI.inc
plugins/password/localization/sr_CS.inc [new file with mode: 0644]
plugins/password/localization/sv_SE.inc
plugins/password/localization/tr_TR.inc
plugins/password/localization/vi_VN.inc [new file with mode: 0644]
plugins/password/localization/zh_CN.inc [new file with mode: 0644]
plugins/password/localization/zh_TW.inc
plugins/password/package.xml
plugins/password/password.js
plugins/password/password.php
plugins/redundant_attachments/package.xml [new file with mode: 0644]
plugins/show_additional_headers/package.xml [new file with mode: 0644]
plugins/show_additional_headers/show_additional_headers.php
plugins/subscriptions_option/localization/bs_BA.inc [new file with mode: 0644]
plugins/subscriptions_option/localization/ca_ES.inc [new file with mode: 0644]
plugins/subscriptions_option/localization/cs_CZ.inc
plugins/subscriptions_option/localization/cy_GB.inc [new file with mode: 0644]
plugins/subscriptions_option/localization/da_DK.inc [new file with mode: 0644]
plugins/subscriptions_option/localization/de_CH.inc
plugins/subscriptions_option/localization/de_DE.inc
plugins/subscriptions_option/localization/en_GB.inc [new file with mode: 0644]
plugins/subscriptions_option/localization/es_ES.inc
plugins/subscriptions_option/localization/et_EE.inc
plugins/subscriptions_option/localization/fa_IR.inc [new file with mode: 0644]
plugins/subscriptions_option/localization/fi_FI.inc [new file with mode: 0644]
plugins/subscriptions_option/localization/fr_FR.inc [new file with mode: 0644]
plugins/subscriptions_option/localization/gl_ES.inc
plugins/subscriptions_option/localization/he_IL.inc [new file with mode: 0644]
plugins/subscriptions_option/localization/hu_HU.inc [new file with mode: 0644]
plugins/subscriptions_option/localization/hy_AM.inc [new file with mode: 0644]
plugins/subscriptions_option/localization/ja_JP.inc
plugins/subscriptions_option/localization/ko_KR.inc [new file with mode: 0644]
plugins/subscriptions_option/localization/lt_LT.inc [new file with mode: 0644]
plugins/subscriptions_option/localization/nl_NL.inc [new file with mode: 0644]
plugins/subscriptions_option/localization/pl_PL.inc
plugins/subscriptions_option/localization/pt_BR.inc [new file with mode: 0644]
plugins/subscriptions_option/localization/pt_PT.inc [new file with mode: 0644]
plugins/subscriptions_option/localization/ru_RU.inc
plugins/subscriptions_option/localization/sk_SK.inc [new file with mode: 0644]
plugins/subscriptions_option/localization/sl_SI.inc [new file with mode: 0644]
plugins/subscriptions_option/localization/sr_CS.inc [new file with mode: 0644]
plugins/subscriptions_option/localization/sv_SE.inc
plugins/subscriptions_option/localization/tr_TR.inc [new file with mode: 0644]
plugins/subscriptions_option/localization/zh_TW.inc
plugins/subscriptions_option/package.xml [new file with mode: 0644]
plugins/subscriptions_option/subscriptions_option.php
plugins/userinfo/localization/ar_SA.inc [new file with mode: 0644]
plugins/userinfo/localization/be_BE.inc [new file with mode: 0644]
plugins/userinfo/localization/bs_BA.inc [new file with mode: 0644]
plugins/userinfo/localization/ca_ES.inc [new file with mode: 0644]
plugins/userinfo/localization/cs_CZ.inc
plugins/userinfo/localization/cy_GB.inc [new file with mode: 0644]
plugins/userinfo/localization/da_DK.inc
plugins/userinfo/localization/de_CH.inc
plugins/userinfo/localization/de_DE.inc [new file with mode: 0644]
plugins/userinfo/localization/en_GB.inc [new file with mode: 0644]
plugins/userinfo/localization/eo.inc [new file with mode: 0644]
plugins/userinfo/localization/es_ES.inc
plugins/userinfo/localization/et_EE.inc
plugins/userinfo/localization/fa_IR.inc [new file with mode: 0644]
plugins/userinfo/localization/fi_FI.inc [new file with mode: 0644]
plugins/userinfo/localization/fr_FR.inc [changed mode: 0644->0755]
plugins/userinfo/localization/gl_ES.inc
plugins/userinfo/localization/he_IL.inc [new file with mode: 0644]
plugins/userinfo/localization/hr_HR.inc [new file with mode: 0644]
plugins/userinfo/localization/hu_HU.inc [new file with mode: 0644]
plugins/userinfo/localization/hy_AM.inc [new file with mode: 0644]
plugins/userinfo/localization/ia.inc [new file with mode: 0644]
plugins/userinfo/localization/ia_IA.inc [new file with mode: 0644]
plugins/userinfo/localization/id_ID.inc [new file with mode: 0644]
plugins/userinfo/localization/it_IT.inc [new file with mode: 0644]
plugins/userinfo/localization/ja_JP.inc
plugins/userinfo/localization/ko_KR.inc [new file with mode: 0644]
plugins/userinfo/localization/ku.inc [new file with mode: 0644]
plugins/userinfo/localization/lt_LT.inc [new file with mode: 0644]
plugins/userinfo/localization/lv_LV.inc [new file with mode: 0644]
plugins/userinfo/localization/ml_IN.inc [new file with mode: 0644]
plugins/userinfo/localization/ml_ML.inc [new file with mode: 0644]
plugins/userinfo/localization/mr_IN.inc [new file with mode: 0644]
plugins/userinfo/localization/nb_NB.inc [new file with mode: 0644]
plugins/userinfo/localization/nl_NL.inc [new file with mode: 0644]
plugins/userinfo/localization/pl_PL.inc
plugins/userinfo/localization/pt_BR.inc
plugins/userinfo/localization/pt_PT.inc
plugins/userinfo/localization/ro_RO.inc [changed mode: 0644->0755]
plugins/userinfo/localization/ru_RU.inc
plugins/userinfo/localization/sk_SK.inc [new file with mode: 0644]
plugins/userinfo/localization/sl_SI.inc [new file with mode: 0644]
plugins/userinfo/localization/sr_CS.inc [new file with mode: 0644]
plugins/userinfo/localization/sv_SE.inc
plugins/userinfo/localization/tr_TR.inc [new file with mode: 0644]
plugins/userinfo/localization/uk_UA.inc [new file with mode: 0644]
plugins/userinfo/localization/vi_VN.inc [new file with mode: 0644]
plugins/userinfo/localization/zh_CN.inc [new file with mode: 0644]
plugins/userinfo/localization/zh_TW.inc
plugins/userinfo/package.xml [new file with mode: 0644]
plugins/vcard_attachments/localization/be_BE.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/bs_BA.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/ca_ES.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/cs_CZ.inc
plugins/vcard_attachments/localization/cy_GB.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/da_DK.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/de_CH.inc
plugins/vcard_attachments/localization/de_DE.inc
plugins/vcard_attachments/localization/en_GB.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/eo.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/es_ES.inc
plugins/vcard_attachments/localization/et_EE.inc
plugins/vcard_attachments/localization/fa_IR.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/fi_FI.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/fr_FR.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/gl_ES.inc
plugins/vcard_attachments/localization/he_IL.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/hr_HR.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/hu_HU.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/hy_AM.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/id_ID.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/it_IT.inc
plugins/vcard_attachments/localization/ja_JP.inc
plugins/vcard_attachments/localization/ko_KR.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/lt_LT.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/lv_LV.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/ml_IN.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/ml_ML.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/mr_IN.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/nb_NB.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/nl_NL.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/pl_PL.inc
plugins/vcard_attachments/localization/pt_BR.inc
plugins/vcard_attachments/localization/pt_PT.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/ro_RO.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/ru_RU.inc
plugins/vcard_attachments/localization/si_LK.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/sk_SK.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/sl_SI.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/sr_CS.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/sv_SE.inc
plugins/vcard_attachments/localization/tr_TR.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/uk_UA.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/vi_VN.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/zh_CN.inc [new file with mode: 0644]
plugins/vcard_attachments/localization/zh_TW.inc
plugins/vcard_attachments/package.xml
plugins/vcard_attachments/skins/classic/style.css [new file with mode: 0644]
plugins/vcard_attachments/skins/classic/vcard.png [new file with mode: 0644]
plugins/vcard_attachments/skins/classic/vcard_add_contact.png [new file with mode: 0644]
plugins/vcard_attachments/skins/default/vcard.png [deleted file]
plugins/vcard_attachments/skins/default/vcard_add_contact.png [deleted file]
plugins/vcard_attachments/skins/larry/style.css [new file with mode: 0644]
plugins/vcard_attachments/skins/larry/vcard.png [new file with mode: 0644]
plugins/vcard_attachments/skins/larry/vcard_add_contact.png [new file with mode: 0644]
plugins/vcard_attachments/vcard_attachments.php
plugins/vcard_attachments/vcardattach.js
plugins/virtuser_file/package.xml [new file with mode: 0644]
plugins/virtuser_file/virtuser_file.php
plugins/virtuser_query/package.xml [new file with mode: 0644]
plugins/virtuser_query/virtuser_query.php
program/include/clisetup.php
program/include/html.php
program/include/iniset.php [changed mode: 0755->0644]
program/include/main.inc
program/include/rcmail.php
program/include/rcmail.php.orig [deleted file]
program/include/rcube_addressbook.php
program/include/rcube_browser.php
program/include/rcube_cache.php
program/include/rcube_charset.php [new file with mode: 0644]
program/include/rcube_config.php
program/include/rcube_contacts.php
program/include/rcube_content_filter.php
program/include/rcube_html_page.php
program/include/rcube_image.php [new file with mode: 0644]
program/include/rcube_imap.php
program/include/rcube_imap_cache.php
program/include/rcube_imap_generic.php
program/include/rcube_json_output.php
program/include/rcube_ldap.php
program/include/rcube_mdb2.php
program/include/rcube_message.php
program/include/rcube_mime.php [new file with mode: 0644]
program/include/rcube_plugin.php
program/include/rcube_plugin_api.php
program/include/rcube_result_index.php [new file with mode: 0644]
program/include/rcube_result_set.php
program/include/rcube_result_thread.php [new file with mode: 0644]
program/include/rcube_session.php
program/include/rcube_shared.inc
program/include/rcube_smtp.php
program/include/rcube_spellchecker.php
program/include/rcube_sqlite.inc
program/include/rcube_storage.php [new file with mode: 0644]
program/include/rcube_string_replacer.php
program/include/rcube_template.php [changed mode: 0755->0644]
program/include/rcube_user.php
program/include/rcube_vcard.php
program/js/app.js
program/js/app.js.src
program/js/common.js
program/js/common.js.src
program/js/editor.js
program/js/editor_images.js [deleted file]
program/js/googiespell.js
program/js/googiespell.js.src
program/js/jquery.min.js
program/js/list.js
program/js/list.js.src
program/js/tiny_mce/langs/ar.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/az.js
program/js/tiny_mce/langs/bg.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/bn.js
program/js/tiny_mce/langs/br.js
program/js/tiny_mce/langs/bs.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/ca.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/cs.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/cy.js
program/js/tiny_mce/langs/da.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/de.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/el.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/en.js
program/js/tiny_mce/langs/eo.js [new file with mode: 0644]
program/js/tiny_mce/langs/es.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/et.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/eu.js
program/js/tiny_mce/langs/fa.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/fi.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/fr.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/gl.js
program/js/tiny_mce/langs/he.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/hi.js
program/js/tiny_mce/langs/hr.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/hu.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/hy.js
program/js/tiny_mce/langs/ia.js [deleted file]
program/js/tiny_mce/langs/id.js
program/js/tiny_mce/langs/is.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/it.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/ja.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/ka.js
program/js/tiny_mce/langs/ko.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/lt.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/lv.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/mk.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/ms.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/nb.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/nl.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/nn.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/no.js [deleted file]
program/js/tiny_mce/langs/pl.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/ps.js
program/js/tiny_mce/langs/pt.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/ro.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/ru.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/si.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/sk.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/sl.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/sq.js
program/js/tiny_mce/langs/sr.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/sv.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/ta.js
program/js/tiny_mce/langs/te.js [deleted file]
program/js/tiny_mce/langs/th.js
program/js/tiny_mce/langs/tr.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/tw.js [deleted file]
program/js/tiny_mce/langs/uk.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/vi.js [changed mode: 0755->0644]
program/js/tiny_mce/langs/zh-cn.js [new file with mode: 0644]
program/js/tiny_mce/langs/zh-tw.js [new file with mode: 0644]
program/js/tiny_mce/langs/zh.js [deleted file]
program/js/tiny_mce/plugins/advhr/css/advhr.css [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/editor_plugin.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/editor_plugin_src.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/js/rule.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/ar_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/az_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/bg_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/bn_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/br_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/bs_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/ca_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/cs_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/cy_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/da_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/de_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/el_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/en_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/eo_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/es_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/et_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/eu_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/fa_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/fi_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/fr_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/gl_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/he_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/hi_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/hr_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/hu_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/hy_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/id_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/is_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/it_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/ja_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/ka_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/ko_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/lt_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/lv_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/mk_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/ms_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/nb_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/nl_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/nn_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/pl_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/ps_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/pt_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/ro_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/ru_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/si_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/sk_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/sl_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/sq_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/sr_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/sv_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/ta_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/th_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/tr_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/uk_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/vi_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/zh-cn_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/langs/zh-tw_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advhr/rule.htm [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/css/advimage.css [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/editor_plugin.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/editor_plugin_src.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/image.htm [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/img/sample.gif [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/js/image.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/ar_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/az_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/bg_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/bn_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/br_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/bs_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/ca_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/cs_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/cy_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/da_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/de_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/el_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/en_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/eo_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/es_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/et_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/eu_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/fa_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/fi_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/fr_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/gl_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/he_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/hi_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/hr_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/hu_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/hy_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/id_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/is_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/it_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/ja_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/ka_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/ko_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/lt_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/lv_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/mk_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/ms_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/nb_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/nl_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/nn_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/pl_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/ps_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/pt_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/ro_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/ru_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/si_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/sk_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/sl_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/sq_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/sr_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/sv_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/ta_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/th_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/tr_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/uk_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/vi_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/zh-cn_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advimage/langs/zh-tw_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/css/advlink.css [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/editor_plugin.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/editor_plugin_src.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/js/advlink.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/ar_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/az_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/bg_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/bn_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/br_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/bs_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/ca_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/cs_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/cy_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/da_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/de_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/el_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/en_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/eo_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/es_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/et_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/eu_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/fa_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/fi_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/fr_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/gl_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/he_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/hi_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/hr_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/hu_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/hy_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/id_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/is_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/it_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/ja_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/ka_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/ko_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/lt_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/lv_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/mk_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/ms_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/nb_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/nl_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/nn_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/pl_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/ps_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/pt_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/ro_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/ru_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/si_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/sk_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/sl_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/sq_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/sr_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/sv_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/ta_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/th_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/tr_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/uk_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/vi_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/zh-cn_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/langs/zh-tw_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlink/link.htm [new file with mode: 0644]
program/js/tiny_mce/plugins/advlist/editor_plugin.js [new file with mode: 0644]
program/js/tiny_mce/plugins/advlist/editor_plugin_src.js [new file with mode: 0644]
program/js/tiny_mce/plugins/autolink/editor_plugin.js [new file with mode: 0644]
program/js/tiny_mce/plugins/autolink/editor_plugin_src.js [new file with mode: 0644]
program/js/tiny_mce/plugins/autoresize/editor_plugin.js [new file with mode: 0644]
program/js/tiny_mce/plugins/autoresize/editor_plugin_src.js [new file with mode: 0644]
program/js/tiny_mce/plugins/autosave/editor_plugin.js [new file with mode: 0644]
program/js/tiny_mce/plugins/autosave/editor_plugin_src.js [new file with mode: 0644]
program/js/tiny_mce/plugins/autosave/langs/en.js [new file with mode: 0644]
program/js/tiny_mce/plugins/bbcode/editor_plugin.js [new file with mode: 0644]
program/js/tiny_mce/plugins/bbcode/editor_plugin_src.js [new file with mode: 0644]
program/js/tiny_mce/plugins/contextmenu/editor_plugin.js
program/js/tiny_mce/plugins/contextmenu/editor_plugin_src.js
program/js/tiny_mce/plugins/directionality/editor_plugin.js
program/js/tiny_mce/plugins/directionality/editor_plugin_src.js
program/js/tiny_mce/plugins/emotions/emotions.htm
program/js/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif
program/js/tiny_mce/plugins/emotions/img/smiley-laughing.gif
program/js/tiny_mce/plugins/emotions/img/smiley-sealed.gif
program/js/tiny_mce/plugins/emotions/img/smiley-smile.gif
program/js/tiny_mce/plugins/emotions/img/smiley-surprised.gif
program/js/tiny_mce/plugins/emotions/img/smiley-wink.gif
program/js/tiny_mce/plugins/emotions/js/emotions.js
program/js/tiny_mce/plugins/emotions/langs/ar_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/az_dlg.js
program/js/tiny_mce/plugins/emotions/langs/be_dlg.js [deleted file]
program/js/tiny_mce/plugins/emotions/langs/bg_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/br_dlg.js
program/js/tiny_mce/plugins/emotions/langs/bs_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/ca_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/cs_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/cy_dlg.js
program/js/tiny_mce/plugins/emotions/langs/da_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/de_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/el_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/en_dlg.js
program/js/tiny_mce/plugins/emotions/langs/eo_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/emotions/langs/es_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/et_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/eu_dlg.js
program/js/tiny_mce/plugins/emotions/langs/fa_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/fi_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/fr_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/gl_dlg.js
program/js/tiny_mce/plugins/emotions/langs/he_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/hi_dlg.js
program/js/tiny_mce/plugins/emotions/langs/hr_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/hu_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/hy_dlg.js
program/js/tiny_mce/plugins/emotions/langs/ia_dlg.js [deleted file]
program/js/tiny_mce/plugins/emotions/langs/id_dlg.js
program/js/tiny_mce/plugins/emotions/langs/is_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/it_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/ja_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/ka_dlg.js
program/js/tiny_mce/plugins/emotions/langs/ko_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/lt_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/lv_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/mk_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/ms_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/nb_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/nl_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/nn_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/no_dlg.js [deleted file]
program/js/tiny_mce/plugins/emotions/langs/pl_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/ps_dlg.js
program/js/tiny_mce/plugins/emotions/langs/pt_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/ro_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/ru_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/si_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/sk_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/sl_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/sq_dlg.js
program/js/tiny_mce/plugins/emotions/langs/sr_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/sv_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/ta_dlg.js
program/js/tiny_mce/plugins/emotions/langs/te_dlg.js [deleted file]
program/js/tiny_mce/plugins/emotions/langs/th_dlg.js
program/js/tiny_mce/plugins/emotions/langs/tr_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/tw_dlg.js [deleted file]
program/js/tiny_mce/plugins/emotions/langs/uk_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/vi_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/emotions/langs/zh-cn_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/emotions/langs/zh-tw_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/emotions/langs/zh_dlg.js [deleted file]
program/js/tiny_mce/plugins/example/dialog.htm [new file with mode: 0644]
program/js/tiny_mce/plugins/example/editor_plugin.js [new file with mode: 0644]
program/js/tiny_mce/plugins/example/editor_plugin_src.js [new file with mode: 0644]
program/js/tiny_mce/plugins/example/img/example.gif [new file with mode: 0644]
program/js/tiny_mce/plugins/example/js/dialog.js [new file with mode: 0644]
program/js/tiny_mce/plugins/example/langs/en.js [new file with mode: 0644]
program/js/tiny_mce/plugins/example/langs/en_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/example_dependency/editor_plugin.js [new file with mode: 0644]
program/js/tiny_mce/plugins/example_dependency/editor_plugin_src.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/css/fullpage.css [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/editor_plugin.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/editor_plugin_src.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/fullpage.htm [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/js/fullpage.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/ar_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/az_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/bg_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/bn_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/br_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/bs_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/ca_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/cs_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/cy_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/da_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/de_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/el_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/en_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/eo_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/es_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/et_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/eu_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/fa_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/fi_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/fr_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/gl_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/he_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/hi_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/hr_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/hu_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/hy_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/id_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/is_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/it_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/ja_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/ka_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/ko_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/lt_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/lv_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/mk_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/ms_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/nb_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/nl_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/nn_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/pl_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/ps_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/pt_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/ro_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/ru_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/si_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/sk_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/sl_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/sq_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/sr_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/sv_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/ta_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/th_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/tr_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/uk_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/vi_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/zh-cn_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullpage/langs/zh-tw_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullscreen/editor_plugin.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullscreen/editor_plugin_src.js [new file with mode: 0644]
program/js/tiny_mce/plugins/fullscreen/fullscreen.htm [new file with mode: 0644]
program/js/tiny_mce/plugins/iespell/editor_plugin.js [new file with mode: 0644]
program/js/tiny_mce/plugins/iespell/editor_plugin_src.js [new file with mode: 0644]
program/js/tiny_mce/plugins/inlinepopups/editor_plugin.js [new file with mode: 0644]
program/js/tiny_mce/plugins/inlinepopups/editor_plugin_src.js [new file with mode: 0644]
program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif [new file with mode: 0644]
program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif [new file with mode: 0644]
program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif [new file with mode: 0644]
program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif [new file with mode: 0644]
program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif [new file with mode: 0644]
program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif [new file with mode: 0644]
program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif [new file with mode: 0644]
program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css [new file with mode: 0644]
program/js/tiny_mce/plugins/inlinepopups/template.htm [new file with mode: 0644]
program/js/tiny_mce/plugins/insertdatetime/editor_plugin.js [new file with mode: 0644]
program/js/tiny_mce/plugins/insertdatetime/editor_plugin_src.js [new file with mode: 0644]
program/js/tiny_mce/plugins/layer/editor_plugin.js [new file with mode: 0644]
program/js/tiny_mce/plugins/layer/editor_plugin_src.js [new file with mode: 0644]
program/js/tiny_mce/plugins/legacyoutput/editor_plugin.js [new file with mode: 0644]
program/js/tiny_mce/plugins/legacyoutput/editor_plugin_src.js [new file with mode: 0644]
program/js/tiny_mce/plugins/lists/editor_plugin.js [new file with mode: 0644]
program/js/tiny_mce/plugins/lists/editor_plugin_src.js [new file with mode: 0644]
program/js/tiny_mce/plugins/media/editor_plugin.js
program/js/tiny_mce/plugins/media/editor_plugin_src.js
program/js/tiny_mce/plugins/media/js/media.js
program/js/tiny_mce/plugins/media/langs/ar_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/az_dlg.js
program/js/tiny_mce/plugins/media/langs/be_dlg.js [deleted file]
program/js/tiny_mce/plugins/media/langs/bg_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/bn_dlg.js
program/js/tiny_mce/plugins/media/langs/br_dlg.js
program/js/tiny_mce/plugins/media/langs/bs_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/ca_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/cs_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/cy_dlg.js
program/js/tiny_mce/plugins/media/langs/da_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/de_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/el_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/en_dlg.js
program/js/tiny_mce/plugins/media/langs/eo_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/media/langs/es_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/et_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/eu_dlg.js
program/js/tiny_mce/plugins/media/langs/fa_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/fi_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/fr_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/gl_dlg.js
program/js/tiny_mce/plugins/media/langs/he_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/hi_dlg.js
program/js/tiny_mce/plugins/media/langs/hr_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/hu_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/hy_dlg.js
program/js/tiny_mce/plugins/media/langs/ia_dlg.js [deleted file]
program/js/tiny_mce/plugins/media/langs/id_dlg.js
program/js/tiny_mce/plugins/media/langs/is_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/it_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/ja_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/ka_dlg.js
program/js/tiny_mce/plugins/media/langs/ko_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/lt_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/lv_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/mk_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/ms_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/nb_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/nl_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/nn_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/no_dlg.js [deleted file]
program/js/tiny_mce/plugins/media/langs/pl_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/ps_dlg.js
program/js/tiny_mce/plugins/media/langs/pt_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/ro_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/ru_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/si_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/sk_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/sl_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/sq_dlg.js
program/js/tiny_mce/plugins/media/langs/sr_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/sv_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/ta_dlg.js
program/js/tiny_mce/plugins/media/langs/te_dlg.js [deleted file]
program/js/tiny_mce/plugins/media/langs/th_dlg.js
program/js/tiny_mce/plugins/media/langs/tr_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/tw_dlg.js [deleted file]
program/js/tiny_mce/plugins/media/langs/uk_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/vi_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/media/langs/zh-cn_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/media/langs/zh-tw_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/media/langs/zh_dlg.js [deleted file]
program/js/tiny_mce/plugins/media/media.htm
program/js/tiny_mce/plugins/media/moxieplayer.swf [new file with mode: 0644]
program/js/tiny_mce/plugins/nonbreaking/editor_plugin.js
program/js/tiny_mce/plugins/nonbreaking/editor_plugin_src.js
program/js/tiny_mce/plugins/noneditable/editor_plugin.js [new file with mode: 0644]
program/js/tiny_mce/plugins/noneditable/editor_plugin_src.js [new file with mode: 0644]
program/js/tiny_mce/plugins/pagebreak/editor_plugin.js [new file with mode: 0644]
program/js/tiny_mce/plugins/pagebreak/editor_plugin_src.js [new file with mode: 0644]
program/js/tiny_mce/plugins/paste/editor_plugin.js
program/js/tiny_mce/plugins/paste/editor_plugin_src.js
program/js/tiny_mce/plugins/paste/langs/ar_dlg.js
program/js/tiny_mce/plugins/paste/langs/az_dlg.js
program/js/tiny_mce/plugins/paste/langs/be_dlg.js [deleted file]
program/js/tiny_mce/plugins/paste/langs/bg_dlg.js
program/js/tiny_mce/plugins/paste/langs/br_dlg.js
program/js/tiny_mce/plugins/paste/langs/bs_dlg.js
program/js/tiny_mce/plugins/paste/langs/cs_dlg.js
program/js/tiny_mce/plugins/paste/langs/cy_dlg.js
program/js/tiny_mce/plugins/paste/langs/da_dlg.js
program/js/tiny_mce/plugins/paste/langs/de_dlg.js
program/js/tiny_mce/plugins/paste/langs/el_dlg.js
program/js/tiny_mce/plugins/paste/langs/en_dlg.js
program/js/tiny_mce/plugins/paste/langs/eo_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/paste/langs/es_dlg.js
program/js/tiny_mce/plugins/paste/langs/et_dlg.js
program/js/tiny_mce/plugins/paste/langs/eu_dlg.js
program/js/tiny_mce/plugins/paste/langs/fa_dlg.js
program/js/tiny_mce/plugins/paste/langs/fi_dlg.js
program/js/tiny_mce/plugins/paste/langs/fr_dlg.js
program/js/tiny_mce/plugins/paste/langs/gl_dlg.js
program/js/tiny_mce/plugins/paste/langs/he_dlg.js
program/js/tiny_mce/plugins/paste/langs/hi_dlg.js
program/js/tiny_mce/plugins/paste/langs/hr_dlg.js
program/js/tiny_mce/plugins/paste/langs/hy_dlg.js
program/js/tiny_mce/plugins/paste/langs/ia_dlg.js [deleted file]
program/js/tiny_mce/plugins/paste/langs/id_dlg.js
program/js/tiny_mce/plugins/paste/langs/is_dlg.js
program/js/tiny_mce/plugins/paste/langs/it_dlg.js
program/js/tiny_mce/plugins/paste/langs/ja_dlg.js
program/js/tiny_mce/plugins/paste/langs/ka_dlg.js
program/js/tiny_mce/plugins/paste/langs/ko_dlg.js
program/js/tiny_mce/plugins/paste/langs/lt_dlg.js
program/js/tiny_mce/plugins/paste/langs/lv_dlg.js
program/js/tiny_mce/plugins/paste/langs/mk_dlg.js
program/js/tiny_mce/plugins/paste/langs/ms_dlg.js
program/js/tiny_mce/plugins/paste/langs/nl_dlg.js
program/js/tiny_mce/plugins/paste/langs/nn_dlg.js
program/js/tiny_mce/plugins/paste/langs/no_dlg.js [deleted file]
program/js/tiny_mce/plugins/paste/langs/ps_dlg.js
program/js/tiny_mce/plugins/paste/langs/pt_dlg.js
program/js/tiny_mce/plugins/paste/langs/ro_dlg.js
program/js/tiny_mce/plugins/paste/langs/si_dlg.js
program/js/tiny_mce/plugins/paste/langs/sk_dlg.js
program/js/tiny_mce/plugins/paste/langs/sl_dlg.js
program/js/tiny_mce/plugins/paste/langs/sq_dlg.js
program/js/tiny_mce/plugins/paste/langs/sr_dlg.js
program/js/tiny_mce/plugins/paste/langs/ta_dlg.js
program/js/tiny_mce/plugins/paste/langs/te_dlg.js [deleted file]
program/js/tiny_mce/plugins/paste/langs/th_dlg.js
program/js/tiny_mce/plugins/paste/langs/tr_dlg.js
program/js/tiny_mce/plugins/paste/langs/tw_dlg.js [deleted file]
program/js/tiny_mce/plugins/paste/langs/uk_dlg.js
program/js/tiny_mce/plugins/paste/langs/vi_dlg.js
program/js/tiny_mce/plugins/paste/langs/zh-cn_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/paste/langs/zh-tw_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/paste/langs/zh_dlg.js [deleted file]
program/js/tiny_mce/plugins/preview/editor_plugin.js [new file with mode: 0644]
program/js/tiny_mce/plugins/preview/editor_plugin_src.js [new file with mode: 0644]
program/js/tiny_mce/plugins/preview/example.html [new file with mode: 0644]
program/js/tiny_mce/plugins/preview/jscripts/embed.js [new file with mode: 0644]
program/js/tiny_mce/plugins/preview/preview.html [new file with mode: 0644]
program/js/tiny_mce/plugins/print/editor_plugin.js [new file with mode: 0644]
program/js/tiny_mce/plugins/print/editor_plugin_src.js [new file with mode: 0644]
program/js/tiny_mce/plugins/save/editor_plugin.js [new file with mode: 0644]
program/js/tiny_mce/plugins/save/editor_plugin_src.js [new file with mode: 0644]
program/js/tiny_mce/plugins/searchreplace/langs/ar_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/az_dlg.js
program/js/tiny_mce/plugins/searchreplace/langs/be_dlg.js [deleted file]
program/js/tiny_mce/plugins/searchreplace/langs/bg_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/br_dlg.js
program/js/tiny_mce/plugins/searchreplace/langs/bs_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/ca_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/cs_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/cy_dlg.js
program/js/tiny_mce/plugins/searchreplace/langs/da_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/de_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/el_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/en_dlg.js
program/js/tiny_mce/plugins/searchreplace/langs/eo_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/searchreplace/langs/es_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/et_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/eu_dlg.js
program/js/tiny_mce/plugins/searchreplace/langs/fa_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/fi_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/fr_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/gl_dlg.js
program/js/tiny_mce/plugins/searchreplace/langs/he_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/hi_dlg.js
program/js/tiny_mce/plugins/searchreplace/langs/hr_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/hu_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/hy_dlg.js
program/js/tiny_mce/plugins/searchreplace/langs/ia_dlg.js [deleted file]
program/js/tiny_mce/plugins/searchreplace/langs/id_dlg.js
program/js/tiny_mce/plugins/searchreplace/langs/is_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/it_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/ja_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/ka_dlg.js
program/js/tiny_mce/plugins/searchreplace/langs/ko_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/lt_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/lv_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/mk_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/ms_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/nb_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/nl_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/nn_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/no_dlg.js [deleted file]
program/js/tiny_mce/plugins/searchreplace/langs/pl_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/ps_dlg.js
program/js/tiny_mce/plugins/searchreplace/langs/pt_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/ro_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/ru_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/si_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/sk_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/sl_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/sq_dlg.js
program/js/tiny_mce/plugins/searchreplace/langs/sr_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/sv_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/ta_dlg.js
program/js/tiny_mce/plugins/searchreplace/langs/te_dlg.js [deleted file]
program/js/tiny_mce/plugins/searchreplace/langs/th_dlg.js
program/js/tiny_mce/plugins/searchreplace/langs/tr_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/tw_dlg.js [deleted file]
program/js/tiny_mce/plugins/searchreplace/langs/uk_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/vi_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/searchreplace/langs/zh-cn_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/searchreplace/langs/zh-tw_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/searchreplace/langs/zh_dlg.js [deleted file]
program/js/tiny_mce/plugins/searchreplace/searchreplace.htm
program/js/tiny_mce/plugins/spellchecker/editor_plugin.js
program/js/tiny_mce/plugins/spellchecker/editor_plugin_src.js
program/js/tiny_mce/plugins/style/css/props.css [new file with mode: 0644]
program/js/tiny_mce/plugins/style/editor_plugin.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/editor_plugin_src.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/js/props.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/ar_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/az_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/bg_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/bn_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/br_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/bs_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/ca_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/cs_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/cy_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/da_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/de_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/el_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/en_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/eo_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/es_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/et_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/eu_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/fa_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/fi_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/fr_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/gl_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/he_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/hi_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/hr_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/hu_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/hy_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/id_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/is_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/it_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/ja_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/ka_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/ko_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/lt_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/lv_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/mk_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/ms_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/nb_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/nl_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/nn_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/pl_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/ps_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/pt_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/ro_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/ru_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/si_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/sk_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/sl_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/sq_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/sr_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/sv_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/ta_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/th_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/tr_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/uk_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/vi_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/zh-cn_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/langs/zh-tw_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/style/props.htm [new file with mode: 0644]
program/js/tiny_mce/plugins/style/readme.txt [new file with mode: 0644]
program/js/tiny_mce/plugins/tabfocus/editor_plugin.js
program/js/tiny_mce/plugins/tabfocus/editor_plugin_src.js
program/js/tiny_mce/plugins/table/cell.htm
program/js/tiny_mce/plugins/table/editor_plugin.js
program/js/tiny_mce/plugins/table/editor_plugin_src.js
program/js/tiny_mce/plugins/table/js/cell.js
program/js/tiny_mce/plugins/table/js/row.js
program/js/tiny_mce/plugins/table/js/table.js
program/js/tiny_mce/plugins/table/langs/ar_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/az_dlg.js
program/js/tiny_mce/plugins/table/langs/be_dlg.js [deleted file]
program/js/tiny_mce/plugins/table/langs/bg_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/bn_dlg.js
program/js/tiny_mce/plugins/table/langs/br_dlg.js
program/js/tiny_mce/plugins/table/langs/bs_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/ca_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/cs_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/cy_dlg.js
program/js/tiny_mce/plugins/table/langs/da_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/de_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/el_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/en_dlg.js
program/js/tiny_mce/plugins/table/langs/eo_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/table/langs/es_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/et_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/eu_dlg.js
program/js/tiny_mce/plugins/table/langs/fa_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/fi_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/fr_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/gl_dlg.js
program/js/tiny_mce/plugins/table/langs/he_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/hi_dlg.js
program/js/tiny_mce/plugins/table/langs/hr_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/hu_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/hy_dlg.js
program/js/tiny_mce/plugins/table/langs/ia_dlg.js [deleted file]
program/js/tiny_mce/plugins/table/langs/id_dlg.js
program/js/tiny_mce/plugins/table/langs/is_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/it_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/ja_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/ka_dlg.js
program/js/tiny_mce/plugins/table/langs/ko_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/lt_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/lv_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/mk_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/ms_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/nb_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/nl_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/nn_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/no_dlg.js [deleted file]
program/js/tiny_mce/plugins/table/langs/pl_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/ps_dlg.js
program/js/tiny_mce/plugins/table/langs/pt_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/ro_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/ru_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/si_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/sk_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/sl_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/sq_dlg.js
program/js/tiny_mce/plugins/table/langs/sr_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/sv_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/ta_dlg.js
program/js/tiny_mce/plugins/table/langs/te_dlg.js [deleted file]
program/js/tiny_mce/plugins/table/langs/th_dlg.js
program/js/tiny_mce/plugins/table/langs/tr_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/tw_dlg.js [deleted file]
program/js/tiny_mce/plugins/table/langs/uk_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/vi_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/plugins/table/langs/zh-cn_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/table/langs/zh-tw_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/table/langs/zh_dlg.js [deleted file]
program/js/tiny_mce/plugins/table/row.htm
program/js/tiny_mce/plugins/table/table.htm
program/js/tiny_mce/plugins/template/blank.htm [new file with mode: 0644]
program/js/tiny_mce/plugins/template/css/template.css [new file with mode: 0644]
program/js/tiny_mce/plugins/template/editor_plugin.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/editor_plugin_src.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/js/template.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/ar_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/az_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/bg_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/bn_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/br_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/bs_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/ca_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/cs_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/cy_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/da_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/de_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/el_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/en_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/eo_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/es_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/et_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/eu_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/fa_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/fi_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/fr_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/gl_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/he_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/hi_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/hr_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/hu_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/hy_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/id_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/is_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/it_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/ja_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/ka_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/ko_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/lt_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/lv_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/mk_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/ms_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/nb_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/nl_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/nn_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/pl_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/ps_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/pt_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/ro_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/ru_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/si_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/sk_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/sl_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/sq_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/sr_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/sv_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/ta_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/th_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/tr_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/uk_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/vi_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/zh-cn_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/langs/zh-tw_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/template/template.htm [new file with mode: 0644]
program/js/tiny_mce/plugins/visualblocks/css/visualblocks.css [new file with mode: 0644]
program/js/tiny_mce/plugins/visualblocks/editor_plugin.js [new file with mode: 0644]
program/js/tiny_mce/plugins/visualblocks/editor_plugin_src.js [new file with mode: 0644]
program/js/tiny_mce/plugins/wordcount/editor_plugin.js [new file with mode: 0644]
program/js/tiny_mce/plugins/wordcount/editor_plugin_src.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/abbr.htm [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/acronym.htm [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/attributes.htm [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/cite.htm [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/css/attributes.css [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/css/popup.css [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/del.htm [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/editor_plugin.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/ins.htm [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/js/abbr.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/js/acronym.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/js/attributes.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/js/cite.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/js/del.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/js/element_common.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/js/ins.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/ar_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/az_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/bg_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/bn_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/br_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/bs_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/ca_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/cs_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/cy_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/da_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/de_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/el_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/eo_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/es_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/et_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/eu_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/fa_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/fi_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/fr_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/gl_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/he_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/hi_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/hr_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/hu_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/hy_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/id_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/is_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/it_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/ja_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/ka_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/ko_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/lt_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/lv_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/mk_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/ms_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/nb_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/nl_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/nn_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/pl_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/ps_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/pt_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/ro_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/ru_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/si_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/sk_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/sl_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/sq_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/sr_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/sv_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/ta_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/th_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/tr_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/uk_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/vi_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/zh-cn_dlg.js [new file with mode: 0644]
program/js/tiny_mce/plugins/xhtmlxtras/langs/zh-tw_dlg.js [new file with mode: 0644]
program/js/tiny_mce/themes/advanced/charmap.htm
program/js/tiny_mce/themes/advanced/color_picker.htm
program/js/tiny_mce/themes/advanced/editor_template.js
program/js/tiny_mce/themes/advanced/editor_template_src.js
program/js/tiny_mce/themes/advanced/img/colorpicker.jpg
program/js/tiny_mce/themes/advanced/img/flash.gif
program/js/tiny_mce/themes/advanced/img/icons.gif
program/js/tiny_mce/themes/advanced/img/quicktime.gif
program/js/tiny_mce/themes/advanced/img/shockwave.gif
program/js/tiny_mce/themes/advanced/js/anchor.js
program/js/tiny_mce/themes/advanced/js/charmap.js
program/js/tiny_mce/themes/advanced/js/color_picker.js
program/js/tiny_mce/themes/advanced/js/image.js
program/js/tiny_mce/themes/advanced/js/link.js
program/js/tiny_mce/themes/advanced/js/source_editor.js
program/js/tiny_mce/themes/advanced/langs/ar.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/ar_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/az.js
program/js/tiny_mce/themes/advanced/langs/az_dlg.js
program/js/tiny_mce/themes/advanced/langs/be.js [deleted file]
program/js/tiny_mce/themes/advanced/langs/be_dlg.js [deleted file]
program/js/tiny_mce/themes/advanced/langs/bg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/bg_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/bn.js
program/js/tiny_mce/themes/advanced/langs/bn_dlg.js
program/js/tiny_mce/themes/advanced/langs/br.js
program/js/tiny_mce/themes/advanced/langs/br_dlg.js
program/js/tiny_mce/themes/advanced/langs/bs.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/bs_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/ca.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/ca_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/cs.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/cs_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/cy.js
program/js/tiny_mce/themes/advanced/langs/cy_dlg.js
program/js/tiny_mce/themes/advanced/langs/da.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/da_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/de.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/de_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/el.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/el_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/en.js
program/js/tiny_mce/themes/advanced/langs/en_dlg.js
program/js/tiny_mce/themes/advanced/langs/eo.js [new file with mode: 0644]
program/js/tiny_mce/themes/advanced/langs/eo_dlg.js [new file with mode: 0644]
program/js/tiny_mce/themes/advanced/langs/es.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/es_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/et.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/et_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/eu.js
program/js/tiny_mce/themes/advanced/langs/eu_dlg.js
program/js/tiny_mce/themes/advanced/langs/fa.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/fa_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/fi.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/fi_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/fr.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/fr_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/gl.js
program/js/tiny_mce/themes/advanced/langs/gl_dlg.js
program/js/tiny_mce/themes/advanced/langs/he.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/he_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/hi.js
program/js/tiny_mce/themes/advanced/langs/hi_dlg.js
program/js/tiny_mce/themes/advanced/langs/hr.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/hr_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/hu.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/hu_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/hy.js
program/js/tiny_mce/themes/advanced/langs/hy_dlg.js
program/js/tiny_mce/themes/advanced/langs/ia.js [deleted file]
program/js/tiny_mce/themes/advanced/langs/ia_dlg.js [deleted file]
program/js/tiny_mce/themes/advanced/langs/id.js
program/js/tiny_mce/themes/advanced/langs/id_dlg.js
program/js/tiny_mce/themes/advanced/langs/is.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/is_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/it.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/it_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/ja.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/ja_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/ka.js
program/js/tiny_mce/themes/advanced/langs/ka_dlg.js
program/js/tiny_mce/themes/advanced/langs/ko.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/ko_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/lt.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/lt_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/lv.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/lv_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/mk.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/mk_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/ms.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/ms_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/nb.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/nb_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/nl.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/nl_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/nn.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/nn_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/no.js [deleted file]
program/js/tiny_mce/themes/advanced/langs/no_dlg.js [deleted file]
program/js/tiny_mce/themes/advanced/langs/pl.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/pl_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/ps.js
program/js/tiny_mce/themes/advanced/langs/ps_dlg.js
program/js/tiny_mce/themes/advanced/langs/pt.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/pt_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/ro.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/ro_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/ru.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/ru_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/si.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/si_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/sk.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/sk_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/sl.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/sl_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/sq.js
program/js/tiny_mce/themes/advanced/langs/sq_dlg.js
program/js/tiny_mce/themes/advanced/langs/sr.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/sr_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/sv.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/sv_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/ta.js
program/js/tiny_mce/themes/advanced/langs/ta_dlg.js
program/js/tiny_mce/themes/advanced/langs/te.js [deleted file]
program/js/tiny_mce/themes/advanced/langs/te_dlg.js [deleted file]
program/js/tiny_mce/themes/advanced/langs/th.js
program/js/tiny_mce/themes/advanced/langs/th_dlg.js
program/js/tiny_mce/themes/advanced/langs/tr.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/tr_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/tw.js [deleted file]
program/js/tiny_mce/themes/advanced/langs/tw_dlg.js [deleted file]
program/js/tiny_mce/themes/advanced/langs/uk.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/uk_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/vi.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/vi_dlg.js [changed mode: 0755->0644]
program/js/tiny_mce/themes/advanced/langs/zh-cn.js [new file with mode: 0644]
program/js/tiny_mce/themes/advanced/langs/zh-cn_dlg.js [new file with mode: 0644]
program/js/tiny_mce/themes/advanced/langs/zh-tw.js [new file with mode: 0644]
program/js/tiny_mce/themes/advanced/langs/zh-tw_dlg.js [new file with mode: 0644]
program/js/tiny_mce/themes/advanced/langs/zh.js [deleted file]
program/js/tiny_mce/themes/advanced/langs/zh_dlg.js [deleted file]
program/js/tiny_mce/themes/advanced/shortcuts.htm [new file with mode: 0644]
program/js/tiny_mce/themes/advanced/skins/default/content.css
program/js/tiny_mce/themes/advanced/skins/default/dialog.css
program/js/tiny_mce/themes/advanced/skins/default/img/buttons.png
program/js/tiny_mce/themes/advanced/skins/default/img/items.gif
program/js/tiny_mce/themes/advanced/skins/default/img/tabs.gif
program/js/tiny_mce/themes/advanced/skins/default/ui.css
program/js/tiny_mce/themes/advanced/skins/highcontrast/content.css [new file with mode: 0644]
program/js/tiny_mce/themes/advanced/skins/highcontrast/dialog.css [new file with mode: 0644]
program/js/tiny_mce/themes/advanced/skins/highcontrast/ui.css [new file with mode: 0644]
program/js/tiny_mce/themes/advanced/skins/o2k7/content.css
program/js/tiny_mce/themes/advanced/skins/o2k7/dialog.css
program/js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png
program/js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png
program/js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png
program/js/tiny_mce/themes/advanced/skins/o2k7/ui.css
program/js/tiny_mce/themes/advanced/source_editor.htm
program/js/tiny_mce/themes/simple/img/icons.gif
program/js/tiny_mce/themes/simple/langs/ar.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/az.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/bg.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/bn.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/br.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/bs.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/ca.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/cs.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/cy.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/da.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/de.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/el.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/en.js
program/js/tiny_mce/themes/simple/langs/eo.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/es.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/et.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/eu.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/fa.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/fi.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/fr.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/gl.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/he.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/hi.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/hr.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/hu.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/hy.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/id.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/is.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/it.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/ja.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/ka.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/ko.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/lt.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/lv.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/mk.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/ms.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/nb.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/nl.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/nn.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/pl.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/ps.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/pt.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/ro.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/ru.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/si.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/sk.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/sl.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/sq.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/sr.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/sv.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/ta.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/th.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/tr.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/uk.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/vi.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/zh-cn.js [new file with mode: 0644]
program/js/tiny_mce/themes/simple/langs/zh-tw.js [new file with mode: 0644]
program/js/tiny_mce/tiny_mce.js
program/js/tiny_mce/tiny_mce_popup.js
program/js/tiny_mce/tiny_mce_src.js
program/js/tiny_mce/utils/editable_selects.js
program/lib/Auth/SASL.php [new file with mode: 0644]
program/lib/Auth/SASL/Anonymous.php [new file with mode: 0644]
program/lib/Auth/SASL/Common.php [new file with mode: 0644]
program/lib/Auth/SASL/CramMD5.php [new file with mode: 0644]
program/lib/Auth/SASL/DigestMD5.php [new file with mode: 0644]
program/lib/Auth/SASL/External.php [new file with mode: 0644]
program/lib/Auth/SASL/Login.php [new file with mode: 0644]
program/lib/Auth/SASL/Plain.php [new file with mode: 0644]
program/lib/Auth/SASL/SCRAM.php [new file with mode: 0644]
program/lib/MDB2.php [new file with mode: 0644]
program/lib/MDB2/Date.php [new file with mode: 0644]
program/lib/MDB2/Driver/Datatype/Common.php [new file with mode: 0644]
program/lib/MDB2/Driver/Datatype/mssql.php [new file with mode: 0644]
program/lib/MDB2/Driver/Datatype/mysql.php [new file with mode: 0644]
program/lib/MDB2/Driver/Datatype/mysqli.php [new file with mode: 0644]
program/lib/MDB2/Driver/Datatype/pgsql.php [new file with mode: 0644]
program/lib/MDB2/Driver/Datatype/sqlite.php [new file with mode: 0644]
program/lib/MDB2/Driver/Datatype/sqlsrv.php [new file with mode: 0644]
program/lib/MDB2/Driver/Function/Common.php [new file with mode: 0644]
program/lib/MDB2/Driver/Function/mssql.php [new file with mode: 0644]
program/lib/MDB2/Driver/Function/mysql.php [new file with mode: 0644]
program/lib/MDB2/Driver/Function/mysqli.php [new file with mode: 0644]
program/lib/MDB2/Driver/Function/pgsql.php [new file with mode: 0644]
program/lib/MDB2/Driver/Function/sqlite.php [new file with mode: 0644]
program/lib/MDB2/Driver/Function/sqlsrv.php [new file with mode: 0644]
program/lib/MDB2/Driver/Manager/Common.php [new file with mode: 0644]
program/lib/MDB2/Driver/Manager/mssql.php [new file with mode: 0644]
program/lib/MDB2/Driver/Manager/mysql.php [new file with mode: 0644]
program/lib/MDB2/Driver/Manager/mysqli.php [new file with mode: 0644]
program/lib/MDB2/Driver/Manager/pgsql.php [new file with mode: 0644]
program/lib/MDB2/Driver/Manager/sqlite.php [new file with mode: 0644]
program/lib/MDB2/Driver/Manager/sqlsrv.php [new file with mode: 0644]
program/lib/MDB2/Driver/Native/Common.php [new file with mode: 0644]
program/lib/MDB2/Driver/Native/mssql.php [new file with mode: 0644]
program/lib/MDB2/Driver/Native/mysql.php [new file with mode: 0644]
program/lib/MDB2/Driver/Native/mysqli.php [new file with mode: 0644]
program/lib/MDB2/Driver/Native/pgsql.php [new file with mode: 0644]
program/lib/MDB2/Driver/Native/sqlite.php [new file with mode: 0644]
program/lib/MDB2/Driver/Native/sqlsrv.php [new file with mode: 0644]
program/lib/MDB2/Driver/Reverse/Common.php [new file with mode: 0644]
program/lib/MDB2/Driver/Reverse/mssql.php [new file with mode: 0644]
program/lib/MDB2/Driver/Reverse/mysql.php [new file with mode: 0644]
program/lib/MDB2/Driver/Reverse/mysqli.php [new file with mode: 0644]
program/lib/MDB2/Driver/Reverse/pgsql.php [new file with mode: 0644]
program/lib/MDB2/Driver/Reverse/sqlite.php [new file with mode: 0644]
program/lib/MDB2/Driver/Reverse/sqlsrv.php [new file with mode: 0644]
program/lib/MDB2/Driver/mssql.php [new file with mode: 0644]
program/lib/MDB2/Driver/mysql.php [new file with mode: 0644]
program/lib/MDB2/Driver/mysqli.php [new file with mode: 0644]
program/lib/MDB2/Driver/pgsql.php [new file with mode: 0644]
program/lib/MDB2/Driver/sqlite.php [new file with mode: 0644]
program/lib/MDB2/Driver/sqlsrv.php [new file with mode: 0644]
program/lib/MDB2/Extended.php [new file with mode: 0644]
program/lib/MDB2/Iterator.php [new file with mode: 0644]
program/lib/MDB2/LOB.php [new file with mode: 0644]
program/lib/Mail/mime.php [new file with mode: 0644]
program/lib/Mail/mimeDecode.php [new file with mode: 0644]
program/lib/Mail/mimePart.php [new file with mode: 0644]
program/lib/Net/IDNA2.php [new file with mode: 0644]
program/lib/Net/IDNA2/Exception.php [new file with mode: 0644]
program/lib/Net/IDNA2/Exception/Nameprep.php [new file with mode: 0644]
program/lib/Net/SMTP.php [new file with mode: 0644]
program/lib/Net/Socket.php [new file with mode: 0644]
program/lib/PEAR.php [new file with mode: 0644]
program/lib/PEAR5.php [new file with mode: 0644]
program/lib/des.inc [new file with mode: 0644]
program/lib/encoding/CP1250.map [new file with mode: 0644]
program/lib/encoding/CP1251.map [new file with mode: 0644]
program/lib/encoding/CP1252.map [new file with mode: 0644]
program/lib/encoding/CP1253.map [new file with mode: 0644]
program/lib/encoding/CP1254.map [new file with mode: 0644]
program/lib/encoding/CP1255.map [new file with mode: 0644]
program/lib/encoding/CP1256.map [new file with mode: 0644]
program/lib/encoding/CP1257.map [new file with mode: 0644]
program/lib/encoding/CP1258.map [new file with mode: 0644]
program/lib/encoding/ISO-8859-1.map [new file with mode: 0644]
program/lib/encoding/ISO-8859-10.map [new file with mode: 0644]
program/lib/encoding/ISO-8859-11.map [new file with mode: 0644]
program/lib/encoding/ISO-8859-13.map [new file with mode: 0644]
program/lib/encoding/ISO-8859-14.map [new file with mode: 0644]
program/lib/encoding/ISO-8859-15.map [new file with mode: 0644]
program/lib/encoding/ISO-8859-16.map [new file with mode: 0644]
program/lib/encoding/ISO-8859-2.map [new file with mode: 0644]
program/lib/encoding/ISO-8859-3.map [new file with mode: 0644]
program/lib/encoding/ISO-8859-4.map [new file with mode: 0644]
program/lib/encoding/ISO-8859-5.map [new file with mode: 0644]
program/lib/encoding/ISO-8859-6.map [new file with mode: 0644]
program/lib/encoding/ISO-8859-7.map [new file with mode: 0644]
program/lib/encoding/ISO-8859-8.map [new file with mode: 0644]
program/lib/encoding/ISO-8859-9.map [new file with mode: 0644]
program/lib/encoding/KOI8R.map [new file with mode: 0644]
program/lib/encoding/KSC5601.map [new file with mode: 0644]
program/lib/html2text.php
program/lib/magic [new file with mode: 0644]
program/lib/utf7.inc [deleted file]
program/lib/utf8.class.php [new file with mode: 0644]
program/lib/washtml.php
program/localization/ar_SA/labels.inc
program/localization/ar_SA/messages.inc
program/localization/ast/labels.inc
program/localization/ast/messages.inc
program/localization/az_AZ/labels.inc
program/localization/az_AZ/messages.inc
program/localization/be_BE/labels.inc [new file with mode: 0644]
program/localization/be_BE/messages.inc [new file with mode: 0644]
program/localization/bg_BG/labels.inc
program/localization/bg_BG/messages.inc
program/localization/bn_BD/labels.inc
program/localization/bn_BD/messages.inc
program/localization/br/labels.inc
program/localization/br/messages.inc
program/localization/bs_BA/labels.inc
program/localization/bs_BA/messages.inc
program/localization/ca_ES/labels.inc
program/localization/ca_ES/messages.inc
program/localization/cs_CZ/labels.inc
program/localization/cs_CZ/messages.inc
program/localization/cy_GB/labels.inc
program/localization/cy_GB/messages.inc
program/localization/da_DK/labels.inc
program/localization/da_DK/messages.inc
program/localization/de_CH/labels.inc
program/localization/de_CH/messages.inc
program/localization/de_DE/labels.inc
program/localization/de_DE/messages.inc
program/localization/el_GR/labels.inc
program/localization/el_GR/messages.inc
program/localization/en_GB/labels.inc
program/localization/en_GB/messages.inc
program/localization/en_US/labels.inc
program/localization/en_US/messages.inc
program/localization/eo/labels.inc
program/localization/eo/messages.inc
program/localization/es_AR/labels.inc
program/localization/es_AR/messages.inc
program/localization/es_ES/labels.inc
program/localization/es_ES/messages.inc
program/localization/et_EE/labels.inc
program/localization/et_EE/messages.inc
program/localization/eu_ES/labels.inc
program/localization/eu_ES/messages.inc
program/localization/fa/labels.inc [deleted file]
program/localization/fa/messages.inc [deleted file]
program/localization/fa_AF/labels.inc
program/localization/fa_AF/messages.inc
program/localization/fa_IR/labels.inc [new file with mode: 0644]
program/localization/fa_IR/messages.inc [new file with mode: 0644]
program/localization/fi_FI/labels.inc
program/localization/fi_FI/messages.inc
program/localization/fr_FR/labels.inc
program/localization/fr_FR/messages.inc
program/localization/ga_IE/labels.inc
program/localization/ga_IE/messages.inc
program/localization/gl_ES/labels.inc
program/localization/gl_ES/messages.inc
program/localization/he_IL/labels.inc
program/localization/he_IL/messages.inc
program/localization/hi_IN/labels.inc
program/localization/hi_IN/messages.inc
program/localization/hr_HR/labels.inc
program/localization/hr_HR/messages.inc
program/localization/hu_HU/labels.inc
program/localization/hu_HU/messages.inc
program/localization/hy_AM/labels.inc
program/localization/hy_AM/messages.inc
program/localization/ia/labels.inc [new file with mode: 0644]
program/localization/ia/messages.inc [new file with mode: 0644]
program/localization/id_ID/labels.inc
program/localization/id_ID/messages.inc
program/localization/index.inc
program/localization/is_IS/labels.inc
program/localization/is_IS/messages.inc
program/localization/it_IT/labels.inc
program/localization/it_IT/messages.inc
program/localization/ja_JP/labels.inc
program/localization/ja_JP/messages.inc
program/localization/ka_GE/labels.inc
program/localization/ka_GE/messages.inc
program/localization/kh_KH/labels.inc [deleted file]
program/localization/kh_KH/messages.inc [deleted file]
program/localization/km_KH/labels.inc [new file with mode: 0644]
program/localization/km_KH/messages.inc [new file with mode: 0644]
program/localization/ko_KR/labels.inc
program/localization/ko_KR/messages.inc
program/localization/ku/labels.inc
program/localization/ku/messages.inc
program/localization/lt_LT/labels.inc
program/localization/lt_LT/messages.inc
program/localization/lv_LV/labels.inc
program/localization/lv_LV/messages.inc
program/localization/mk_MK/labels.inc
program/localization/mk_MK/messages.inc
program/localization/ml_IN/labels.inc [new file with mode: 0644]
program/localization/ml_IN/messages.inc [new file with mode: 0644]
program/localization/mr_IN/labels.inc
program/localization/mr_IN/messages.inc
program/localization/ms_MY/labels.inc
program/localization/ms_MY/messages.inc
program/localization/nb_NO/labels.inc
program/localization/nb_NO/messages.inc
program/localization/ne_NP/labels.inc
program/localization/ne_NP/messages.inc
program/localization/nl_BE/labels.inc
program/localization/nl_BE/messages.inc
program/localization/nl_NL/labels.inc
program/localization/nl_NL/messages.inc
program/localization/nn_NO/labels.inc
program/localization/nn_NO/messages.inc
program/localization/pl_PL/labels.inc
program/localization/pl_PL/messages.inc
program/localization/ps/labels.inc
program/localization/ps/messages.inc
program/localization/pt_BR/labels.inc
program/localization/pt_BR/messages.inc
program/localization/pt_PT/labels.inc
program/localization/pt_PT/messages.inc
program/localization/ro_RO/labels.inc
program/localization/ro_RO/messages.inc
program/localization/ru_RU/labels.inc
program/localization/ru_RU/messages.inc
program/localization/si_LK/labels.inc
program/localization/si_LK/messages.inc
program/localization/sk_SK/labels.inc
program/localization/sk_SK/messages.inc
program/localization/sl_SI/labels.inc
program/localization/sl_SI/messages.inc
program/localization/sq_AL/labels.inc
program/localization/sq_AL/messages.inc
program/localization/sr_CS/labels.inc
program/localization/sr_CS/messages.inc
program/localization/sv_SE/labels.inc
program/localization/sv_SE/messages.inc
program/localization/ta_IN/labels.inc
program/localization/ta_IN/messages.inc
program/localization/th_TH/labels.inc
program/localization/th_TH/messages.inc
program/localization/tr_TR/labels.inc
program/localization/tr_TR/messages.inc
program/localization/uk_UA/labels.inc
program/localization/uk_UA/messages.inc
program/localization/vi_VN/labels.inc
program/localization/vi_VN/messages.inc
program/localization/zh_CN/labels.inc
program/localization/zh_CN/messages.inc
program/localization/zh_TW/labels.inc
program/localization/zh_TW/messages.inc
program/steps/addressbook/copy.inc
program/steps/addressbook/delete.inc
program/steps/addressbook/edit.inc
program/steps/addressbook/export.inc
program/steps/addressbook/func.inc
program/steps/addressbook/groups.inc
program/steps/addressbook/import.inc
program/steps/addressbook/list.inc
program/steps/addressbook/mailto.inc
program/steps/addressbook/save.inc
program/steps/addressbook/search.inc
program/steps/addressbook/show.inc
program/steps/addressbook/undo.inc
program/steps/addressbook/upload_photo.inc
program/steps/mail/addcontact.inc
program/steps/mail/attachments.inc
program/steps/mail/autocomplete.inc
program/steps/mail/check_recent.inc
program/steps/mail/compose.inc
program/steps/mail/copy.inc
program/steps/mail/folders.inc
program/steps/mail/func.inc
program/steps/mail/get.inc
program/steps/mail/getunread.inc
program/steps/mail/headers.inc
program/steps/mail/list.inc
program/steps/mail/list_contacts.inc [new file with mode: 0644]
program/steps/mail/mark.inc
program/steps/mail/move_del.inc
program/steps/mail/pagenav.inc
program/steps/mail/search.inc
program/steps/mail/sendmail.inc
program/steps/mail/sendmdn.inc
program/steps/mail/show.inc
program/steps/mail/viewsource.inc
program/steps/settings/about.inc [new file with mode: 0644]
program/steps/settings/delete_identity.inc
program/steps/settings/edit_folder.inc
program/steps/settings/edit_identity.inc
program/steps/settings/edit_prefs.inc
program/steps/settings/folders.inc
program/steps/settings/func.inc
program/steps/settings/identities.inc
program/steps/settings/save_folder.inc
program/steps/settings/save_identity.inc
program/steps/settings/save_prefs.inc
program/steps/utils/error.inc
program/steps/utils/html2text.inc
program/steps/utils/killcache.inc
program/steps/utils/modcss.inc
program/steps/utils/save_pref.inc
program/steps/utils/spell.inc
program/steps/utils/spell_html.inc
skins/classic/README [new file with mode: 0644]
skins/classic/addressbook.css [new file with mode: 0644]
skins/classic/common.css [new file with mode: 0644]
skins/classic/editor_content.css [new file with mode: 0644]
skins/classic/functions.js [new file with mode: 0644]
skins/classic/googiespell.css [new file with mode: 0644]
skins/classic/ie6hacks.css [new file with mode: 0644]
skins/classic/iehacks.css [new file with mode: 0644]
skins/classic/images/abook_toolbar.gif [new file with mode: 0644]
skins/classic/images/abook_toolbar.png [new file with mode: 0644]
skins/classic/images/blank.gif [new file with mode: 0644]
skins/classic/images/buttons/add_act.png [new file with mode: 0644]
skins/classic/images/buttons/add_pas.png [new file with mode: 0644]
skins/classic/images/buttons/add_sel.png [new file with mode: 0644]
skins/classic/images/buttons/bg.gif [new file with mode: 0644]
skins/classic/images/cleardot.png [new file with mode: 0644]
skins/classic/images/contactpic.png [new file with mode: 0644]
skins/classic/images/dbutton.png [new file with mode: 0644]
skins/classic/images/dimple.png [new file with mode: 0644]
skins/classic/images/display/icons.gif [new file with mode: 0644]
skins/classic/images/display/icons.png [new file with mode: 0644]
skins/classic/images/display/loading.gif [new file with mode: 0644]
skins/classic/images/display/loading_blue.gif [new file with mode: 0644]
skins/classic/images/favicon.ico [new file with mode: 0644]
skins/classic/images/googiespell/change_lang.gif [new file with mode: 0644]
skins/classic/images/googiespell/indicator.gif [new file with mode: 0644]
skins/classic/images/googiespell/ok.gif [new file with mode: 0644]
skins/classic/images/googiespell/spellc.gif [new file with mode: 0644]
skins/classic/images/icons/attachment.png [new file with mode: 0644]
skins/classic/images/icons/blank.gif [new file with mode: 0644]
skins/classic/images/icons/collapsed.png [new file with mode: 0644]
skins/classic/images/icons/columnpicker.gif [new file with mode: 0644]
skins/classic/images/icons/delete.png [new file with mode: 0644]
skins/classic/images/icons/deleted.png [new file with mode: 0644]
skins/classic/images/icons/dot.png [new file with mode: 0644]
skins/classic/images/icons/down_small.gif [new file with mode: 0644]
skins/classic/images/icons/expanded.png [new file with mode: 0644]
skins/classic/images/icons/extwin.png [new file with mode: 0644]
skins/classic/images/icons/flagged.png [new file with mode: 0644]
skins/classic/images/icons/folders.gif [new file with mode: 0644]
skins/classic/images/icons/folders.png [new file with mode: 0644]
skins/classic/images/icons/forwarded.png [new file with mode: 0644]
skins/classic/images/icons/forwarded_replied.png [new file with mode: 0644]
skins/classic/images/icons/glass.gif [new file with mode: 0644]
skins/classic/images/icons/glass.png [new file with mode: 0644]
skins/classic/images/icons/glass_roll.png [new file with mode: 0644]
skins/classic/images/icons/groupactions.gif [new file with mode: 0644]
skins/classic/images/icons/groupactions.png [new file with mode: 0644]
skins/classic/images/icons/minus.gif [new file with mode: 0644]
skins/classic/images/icons/plus.gif [new file with mode: 0644]
skins/classic/images/icons/rename.png [new file with mode: 0644]
skins/classic/images/icons/replied.png [new file with mode: 0644]
skins/classic/images/icons/reset.gif [new file with mode: 0644]
skins/classic/images/icons/silhouette.png [new file with mode: 0644]
skins/classic/images/icons/sort.gif [new file with mode: 0644]
skins/classic/images/icons/unflagged.png [new file with mode: 0644]
skins/classic/images/icons/unread.png [new file with mode: 0644]
skins/classic/images/icons/unread_children.png [new file with mode: 0644]
skins/classic/images/icons/up_small.gif [new file with mode: 0644]
skins/classic/images/listheader.gif [new file with mode: 0644]
skins/classic/images/mail_footer.gif [new file with mode: 0644]
skins/classic/images/mail_footer.png [new file with mode: 0644]
skins/classic/images/mail_toolbar.gif [new file with mode: 0644]
skins/classic/images/mail_toolbar.png [new file with mode: 0644]
skins/classic/images/messageactions.gif [new file with mode: 0644]
skins/classic/images/messageactions.png [new file with mode: 0644]
skins/classic/images/messageicons.gif [new file with mode: 0644]
skins/classic/images/messageicons.png [new file with mode: 0644]
skins/classic/images/pagenav.gif [new file with mode: 0644]
skins/classic/images/quota-colors.png [new file with mode: 0644]
skins/classic/images/quota.gif [new file with mode: 0644]
skins/classic/images/quota.png [new file with mode: 0644]
skins/classic/images/roundcube_logo.png [new file with mode: 0644]
skins/classic/images/searchfield.gif [new file with mode: 0644]
skins/classic/images/tabs-left.gif [new file with mode: 0644]
skins/classic/images/tabs-right.gif [new file with mode: 0644]
skins/classic/images/taskbar.gif [new file with mode: 0644]
skins/classic/images/taskbar.png [new file with mode: 0644]
skins/classic/images/taskicons.gif [new file with mode: 0644]
skins/classic/images/taskicons.png [new file with mode: 0644]
skins/classic/images/tree.gif [new file with mode: 0644]
skins/classic/images/watermark.gif [new file with mode: 0644]
skins/classic/includes/header.html [new file with mode: 0644]
skins/classic/includes/links.html [new file with mode: 0644]
skins/classic/includes/messagetoolbar.html [new file with mode: 0644]
skins/classic/includes/settingstabs.html [new file with mode: 0644]
skins/classic/includes/taskbar.html [new file with mode: 0644]
skins/classic/mail.css [new file with mode: 0644]
skins/classic/pngbehavior.htc [new file with mode: 0644]
skins/classic/print.css [new file with mode: 0644]
skins/classic/safari.css [new file with mode: 0644]
skins/classic/settings.css [new file with mode: 0644]
skins/classic/splitter.js [new file with mode: 0644]
skins/classic/templates/about.html [new file with mode: 0644]
skins/classic/templates/addressbook.html [new file with mode: 0644]
skins/classic/templates/compose.html [new file with mode: 0644]
skins/classic/templates/contact.html [new file with mode: 0644]
skins/classic/templates/contactadd.html [new file with mode: 0644]
skins/classic/templates/contactedit.html [new file with mode: 0644]
skins/classic/templates/contactsearch.html [new file with mode: 0644]
skins/classic/templates/error.html [new file with mode: 0644]
skins/classic/templates/folderedit.html [new file with mode: 0644]
skins/classic/templates/folders.html [new file with mode: 0644]
skins/classic/templates/identities.html [new file with mode: 0644]
skins/classic/templates/identityedit.html [new file with mode: 0644]
skins/classic/templates/importcontacts.html [new file with mode: 0644]
skins/classic/templates/login.html [new file with mode: 0644]
skins/classic/templates/mail.html [new file with mode: 0644]
skins/classic/templates/message.html [new file with mode: 0644]
skins/classic/templates/messageerror.html [new file with mode: 0644]
skins/classic/templates/messagepart.html [new file with mode: 0644]
skins/classic/templates/messagepreview.html [new file with mode: 0644]
skins/classic/templates/messageprint.html [new file with mode: 0644]
skins/classic/templates/plugin.html [new file with mode: 0644]
skins/classic/templates/settings.html [new file with mode: 0644]
skins/classic/templates/settingsedit.html [new file with mode: 0644]
skins/classic/watermark.html [new file with mode: 0644]
skins/default/README [deleted file]
skins/default/addressbook.css [deleted file]
skins/default/common.css [deleted file]
skins/default/editor_content.css [deleted file]
skins/default/functions.js [deleted file]
skins/default/googiespell.css [deleted file]
skins/default/ie6hacks.css [deleted file]
skins/default/iehacks.css [deleted file]
skins/default/images/abook_toolbar.gif [deleted file]
skins/default/images/abook_toolbar.png [deleted file]
skins/default/images/blank.gif [deleted file]
skins/default/images/buttons/add_act.png [deleted file]
skins/default/images/buttons/add_pas.png [deleted file]
skins/default/images/buttons/add_sel.png [deleted file]
skins/default/images/buttons/bg.gif [deleted file]
skins/default/images/cleardot.png [deleted file]
skins/default/images/contactpic.png [deleted file]
skins/default/images/dbutton.png [deleted file]
skins/default/images/dimple.png [deleted file]
skins/default/images/display/icons.gif [deleted file]
skins/default/images/display/icons.png [deleted file]
skins/default/images/display/loading.gif [deleted file]
skins/default/images/display/loading_blue.gif [deleted file]
skins/default/images/favicon.ico [deleted file]
skins/default/images/googiespell/change_lang.gif [deleted file]
skins/default/images/googiespell/indicator.gif [deleted file]
skins/default/images/googiespell/ok.gif [deleted file]
skins/default/images/googiespell/spellc.gif [deleted file]
skins/default/images/icons/attachment.png [deleted file]
skins/default/images/icons/blank.gif [deleted file]
skins/default/images/icons/collapsed.png [deleted file]
skins/default/images/icons/columnpicker.gif [deleted file]
skins/default/images/icons/delete.png [deleted file]
skins/default/images/icons/deleted.png [deleted file]
skins/default/images/icons/dot.png [deleted file]
skins/default/images/icons/down_small.gif [deleted file]
skins/default/images/icons/expanded.png [deleted file]
skins/default/images/icons/extwin.png [deleted file]
skins/default/images/icons/flagged.png [deleted file]
skins/default/images/icons/folders.gif [deleted file]
skins/default/images/icons/folders.png [deleted file]
skins/default/images/icons/forwarded.png [deleted file]
skins/default/images/icons/forwarded_replied.png [deleted file]
skins/default/images/icons/glass.gif [deleted file]
skins/default/images/icons/glass.png [deleted file]
skins/default/images/icons/glass_roll.png [deleted file]
skins/default/images/icons/groupactions.gif [deleted file]
skins/default/images/icons/groupactions.png [deleted file]
skins/default/images/icons/minus.gif [deleted file]
skins/default/images/icons/plus.gif [deleted file]
skins/default/images/icons/rename.png [deleted file]
skins/default/images/icons/replied.png [deleted file]
skins/default/images/icons/reset.gif [deleted file]
skins/default/images/icons/silhouette.png [deleted file]
skins/default/images/icons/sort.gif [deleted file]
skins/default/images/icons/unflagged.png [deleted file]
skins/default/images/icons/unread.png [deleted file]
skins/default/images/icons/unread_children.png [deleted file]
skins/default/images/icons/up_small.gif [deleted file]
skins/default/images/listheader.gif [deleted file]
skins/default/images/mail_footer.gif [deleted file]
skins/default/images/mail_footer.png [deleted file]
skins/default/images/mail_toolbar.gif [deleted file]
skins/default/images/mail_toolbar.png [deleted file]
skins/default/images/messageactions.gif [deleted file]
skins/default/images/messageactions.png [deleted file]
skins/default/images/messageicons.gif [deleted file]
skins/default/images/messageicons.png [deleted file]
skins/default/images/pagenav.gif [deleted file]
skins/default/images/quota-colors.png [deleted file]
skins/default/images/quota.gif [deleted file]
skins/default/images/quota.png [deleted file]
skins/default/images/roundcube_logo.png [deleted file]
skins/default/images/searchfield.gif [deleted file]
skins/default/images/tabs-left.gif [deleted file]
skins/default/images/tabs-right.gif [deleted file]
skins/default/images/taskbar.gif [deleted file]
skins/default/images/taskbar.png [deleted file]
skins/default/images/taskicons.gif [deleted file]
skins/default/images/taskicons.png [deleted file]
skins/default/images/tree.gif [deleted file]
skins/default/images/watermark.gif [deleted file]
skins/default/includes/header.html [deleted file]
skins/default/includes/links.html [deleted file]
skins/default/includes/messagetoolbar.html [deleted file]
skins/default/includes/settingstabs.html [deleted file]
skins/default/includes/taskbar.html [deleted file]
skins/default/mail.css [deleted file]
skins/default/pngbehavior.htc [deleted file]
skins/default/print.css [deleted file]
skins/default/safari.css [deleted file]
skins/default/settings.css [deleted file]
skins/default/splitter.js [deleted file]
skins/default/templates/addressbook.html [deleted file]
skins/default/templates/compose.html [deleted file]
skins/default/templates/contact.html [deleted file]
skins/default/templates/contactadd.html [deleted file]
skins/default/templates/contactedit.html [deleted file]
skins/default/templates/contactsearch.html [deleted file]
skins/default/templates/error.html [deleted file]
skins/default/templates/folderedit.html [deleted file]
skins/default/templates/folders.html [deleted file]
skins/default/templates/identities.html [deleted file]
skins/default/templates/identityedit.html [deleted file]
skins/default/templates/importcontacts.html [deleted file]
skins/default/templates/login.html [deleted file]
skins/default/templates/mail.html [deleted file]
skins/default/templates/message.html [deleted file]
skins/default/templates/messageerror.html [deleted file]
skins/default/templates/messagepart.html [deleted file]
skins/default/templates/messagepreview.html [deleted file]
skins/default/templates/messageprint.html [deleted file]
skins/default/templates/plugin.html [deleted file]
skins/default/templates/settings.html [deleted file]
skins/default/templates/settingsedit.html [deleted file]
skins/default/watermark.html [deleted file]
skins/larry/README [new file with mode: 0644]
skins/larry/addressbook.css [new file with mode: 0644]
skins/larry/editor_content.css [new file with mode: 0644]
skins/larry/googiespell.css [new file with mode: 0644]
skins/larry/ie7hacks.css [new file with mode: 0644]
skins/larry/iehacks.css [new file with mode: 0644]
skins/larry/images/addcontact.png [new file with mode: 0644]
skins/larry/images/ajaxloader.gif [new file with mode: 0644]
skins/larry/images/buttons.gif [new file with mode: 0644]
skins/larry/images/buttons.png [new file with mode: 0644]
skins/larry/images/contactpic.png [new file with mode: 0644]
skins/larry/images/favicon.ico [new file with mode: 0644]
skins/larry/images/filetypes.png [new file with mode: 0644]
skins/larry/images/googiespell/change_lang.gif [new file with mode: 0644]
skins/larry/images/googiespell/indicator.gif [new file with mode: 0644]
skins/larry/images/googiespell/ok.gif [new file with mode: 0644]
skins/larry/images/googiespell/spellc.gif [new file with mode: 0644]
skins/larry/images/linen.jpg [new file with mode: 0644]
skins/larry/images/linen_header.jpg [new file with mode: 0644]
skins/larry/images/linen_login.jpg [new file with mode: 0644]
skins/larry/images/listicons.png [new file with mode: 0644]
skins/larry/images/login_shadow.png [new file with mode: 0644]
skins/larry/images/messages.png [new file with mode: 0644]
skins/larry/images/overflowshadow.png [new file with mode: 0644]
skins/larry/images/quota.png [new file with mode: 0644]
skins/larry/images/roundcube_logo.png [new file with mode: 0644]
skins/larry/images/selector.png [new file with mode: 0644]
skins/larry/images/splitter.png [new file with mode: 0644]
skins/larry/images/watermark.jpg [new file with mode: 0644]
skins/larry/includes/footer.html [new file with mode: 0644]
skins/larry/includes/header.html [new file with mode: 0644]
skins/larry/includes/links.html [new file with mode: 0644]
skins/larry/includes/mailtoolbar.html [new file with mode: 0644]
skins/larry/includes/settingstabs.html [new file with mode: 0644]
skins/larry/mail.css [new file with mode: 0644]
skins/larry/print.css [new file with mode: 0644]
skins/larry/settings.css [new file with mode: 0644]
skins/larry/styles.css [new file with mode: 0644]
skins/larry/svggradient.php [new file with mode: 0644]
skins/larry/svggradients.css [new file with mode: 0644]
skins/larry/templates/about.html [new file with mode: 0644]
skins/larry/templates/addressbook.html [new file with mode: 0644]
skins/larry/templates/compose.html [new file with mode: 0644]
skins/larry/templates/contact.html [new file with mode: 0644]
skins/larry/templates/contactedit.html [new file with mode: 0644]
skins/larry/templates/contactsearch.html [new file with mode: 0644]
skins/larry/templates/error.html [new file with mode: 0644]
skins/larry/templates/folderedit.html [new file with mode: 0644]
skins/larry/templates/folders.html [new file with mode: 0644]
skins/larry/templates/identities.html [new file with mode: 0644]
skins/larry/templates/identityedit.html [new file with mode: 0644]
skins/larry/templates/importcontacts.html [new file with mode: 0644]
skins/larry/templates/login.html [new file with mode: 0644]
skins/larry/templates/mail.html [new file with mode: 0644]
skins/larry/templates/message.html [new file with mode: 0644]
skins/larry/templates/messageerror.html [new file with mode: 0644]
skins/larry/templates/messagepart.html [new file with mode: 0644]
skins/larry/templates/messagepreview.html [new file with mode: 0644]
skins/larry/templates/messageprint.html [new file with mode: 0644]
skins/larry/templates/plugin.html [new file with mode: 0644]
skins/larry/templates/settings.html [new file with mode: 0644]
skins/larry/templates/settingsedit.html [new file with mode: 0644]
skins/larry/ui.js [new file with mode: 0644]
skins/larry/watermark.html [new file with mode: 0644]

index 55dad98edcfbb8838af7025037f3c17751525ed2..25e153f8c0529e8a7439d29d7290be73a36502a8 100644 (file)
--- a/.htaccess
+++ b/.htaccess
@@ -28,10 +28,10 @@ php_value   mbstring.func_overload  0
 
 <IfModule mod_rewrite.c>
 RewriteEngine On
-RewriteRule ^favicon.ico$ skins/default/images/favicon.ico
+RewriteRule ^favicon\.ico$ skins/larry/images/favicon.ico
 # security rules
-RewriteRule .svn/ - [F]
-RewriteRule ^README|INSTALL|LICENSE|SQL|bin|CHANGELOG$ - [F]
+RewriteRule .git - [F]
+RewriteRule ^/?(README(.md)?|INSTALL|LICENSE|SQL|bin|CHANGELOG)$ - [F]
 </IfModule>
 
 <IfModule mod_deflate.c>
index 1aef31f1f1bd0a90c422ebb29a1c623bec500335..29a9adb4a069b748499a6a35f4ced077e55dcdf7 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,174 @@
 CHANGELOG Roundcube Webmail
 ===========================
 
+- Fix XSS vulnerability in handling of text/enriched messages (#1488806)
+- Fix handling of 'media' attribute on linked css (#1488789)
+- Fix regression where unintentional page reload was done after request abort (#1488802)
+- Fix excessive LFs at the end of composed message with top_posting=true (#1488797)
+- Fix bug where leading blanks were stripped from quoted lines (#1488795)
+
+RELEASE 0.8.3
+-------------
+- Fix AREA links handling (#1488792)
+- Fix possible HTTP DoS on error in keep-alive requests (#1488782)
+- Fix compatybility with MDB2 2.5.0b4 (#1488779)
+- Fix a bug where saving a message in INBOX wasn't possible
+- Fix HTML part detection in messages with attachments (#1488769)
+- Fix bug where wrong words were highlighted on spell-before-send check
+- Fix scrolling quirk in email preview frame using Opera 12 (#1488763)
+- Fix displaying of multipart/alternative messages with empty parts (#1488750)
+- Fix Warning: htmlspecialchars(): charset `RCMAIL_CHARSET' not supported warning in Installer (#1488744)
+- Fix threaded list sorting on PHP < 5.2.9 (#1488748)
+
+RELEASE 0.8.2
+-------------
+- Fix XSS vulnerability from HTTP User-Agent header (#1488737)
+- Force fonts in compose fields to be all the same (#1488690)
+- Add full headers view in message preview window (#1488538)
+- Fix message display page issues (#1488590, #1488642)
+- Fix handling vCard entries with TEL;TYPE=CELL (#1488728)
+- Fix error where session wasn't updated after folder rename/delete (#1488692)
+- Fix PLAIN authentication for some IMAP servers (#1488674)
+- Fix encoding vCard file when contains PHOTO;ENCODING=b (#1488683)
+- Fix focus issue in IE when selecting message row (#1488620)
+- Fix displaying all headers when they contain malformed characters (#1488666)
+- Fix decoding of HTML messages with UTF-16 charset specified (#1488654)
+- Fix quota capability detection so it can be overwritten by a plugin (#1488655)
+- Fix identity selection on reply (#1488101)
+- Fix Larry's messages list filter in IE (#1488632)
+- Fix more IE issues by disabling Compat. mode with X-UA-Compatible meta tag (#1488626)
+- Fix setting locales under Solaris - use additional .UTF-8 suffix (#1488628)
+- Fix email address validation for addresses with IP address in domain part
+- Fix Larry skin issues in IE7 compat. mode (#1488618)
+- Fix so subscribed non-existing/non-accessible shared folder can be unsubscribed
+
+RELEASE 0.8.1
+-------------
+- Fix bug where domain name was converted to lower-case even with login_lc=false (#1488593)
+- Fix lower-casing email address on replies (#1488598)
+- Fix line separator in exported messages (#1488603)
+- Fix XSS issue where plain signatures wasn't secured in HTML mode (#1488613)
+- Fix XSS issue where href="javascript:" wasn't secured (#1488613)
+- Fix impossible to create message with empty plain text part (#1488610)
+- Fix stripped apostrophes when replying in plain text to HTML message (#1488606)
+- Fix inactive Save search option after advanced search (#1488607)
+- Fix Remove from group option is active for contact search result (#1488608)
+- Disable autocapitalization in login form on iPad/iPhone (#1488609)
+- Fix focus on the list when list row is clicked (#1488600)
+- Added separate From and To columns apart from smart From/To column (#1486891)
+- Fix fallback to Larry skin when configured skin isn't available (#1488591)
+- Fix (workaround) delete operations with some versions of memcache (#1488592)
+- Fix (disable) request validation for spell and spell_html actions
+
+RELEASE 0.8.0
+-------------
+- Don't show product version on login screen (can be enabled by config)
+- Renamed old default skin to 'classic'. Larry is the new default skin.
+- Support connections to memcached socket file (#1488577)
+- Enable TinyMCE inlinepopups plugin
+- Update to TinyMCE 3.5.6
+- Correctly escape localized labels in javascript variable (#1488567)
+- Update Net_SMTP/Auth_SASL packages to fix Digest-MD5/Cram-MD5 authentication (#1488571)
+- Don't add attachments content into reply/forward/draft message body (#1488557)
+- Fix 'no connection' errors on page unloads (#1488547)
+- Plugin API: Add 'unauthenticated' hook (#1488138)
+- Show explicit error message when provided hostname is invalid (#1488550)
+- Fix wrong compose screen elements focus in IE9 (#1488541)
+- Fix fatal error when date.timezone isn't set (#1488546)
+- Update to TinyMCE 3.5.4.1
+- Better icons with distinct shapes for priority columns (#1488377)
+- Show dedicated icon for multipart/report messages (#1488524)
+- Properly hide text of icon links/buttons (#1488534)
+- Fix handling of unitless CSS size values in HTML message (#1488535)
+- Fix removing contact photo using LDAP addressbook (#1488420)
+- Fix storing X-ANNIVERSARY date in vCard format (#1488527)
+- Update to Mail_Mime-1.8.5 (#1488521)
+- Fix XSS vulnerability in message subject handling using Larry skin (#1488519)
+- Fix handling of links with various URI schemes e.g. "skype:" (#1488106)
+- Fix handling of links inside PRE elements on html to text conversion
+- Fix indexing of links on html to text conversion
+- Decode header value in rcube_mime::get() by default (#1488511)
+- Fix errors with enabled PHP magic_quotes_sybase option (#1488506)
+- Fix SQL query for contacts listing on MS SQL Server (#1488505)
+- Fix window.resize handler on IE8 and Opera (#1488453)
+- Don't let error message popups cover the login form (#1488500)
+- Don't show errors when moving contacts into groups they are already in (#1488493)
+- Make folders with unread messages in subfolders bold again (#1486793)
+- Abbreviate long attachment file names with ellipsis (#1488499)
+- Fix html2text conversion of strong|b|a|th|h tags when used in upper case
+- Add listcontrols template container in Larry skin (#1488498)
+- Fix host autoselection when default_host is an array (#1488495)
+- Move messages forwarding mode setting into Preferences
+- Fix HTML entities handling in HTML editor (#1488483)
+- Fix listing shared folders on Courier IMAP (#1488466)
+
+RELEASE 0.8-rc
+--------------
+- Added new translations in Belarusian, Interlingua and Malayalam
+- Flipped compose options arrow (#1488474)
+- Fix handling of large uuencode attachments (#1488473)
+- Fix handling of "usemap" attribute (#1488472)
+- Fix handling of some HTML tags e.g. IMG (#1488471)
+- Use similar language as a fallback for plugin localization (#1488401)
+- Fix issue where signature wasn't re-added on draft compose (#1488322)
+- Update to TinyMCE 3.5 (#1488459)
+- Fixed multi-threaded autocompletion when number of threads > number of sources
+- Allow to configure the number of values allowed for each LDAP attribute
+- Support for serialized LDAP address values (usually delimited with a $)
+- Less restrictive session auth checks, repeat keep-alive requests on failure (#1488449)
+- Fix redirect to mail/compose on re-login (#1488226)
+- Add IE8 hack for messages list issue (#1487821)
+- Fix handling errors on draft auto-save
+- Fix importing vCard photo with ENCODING param specified (#1488432)
+- Support mutliple name/email pairs for Bcc and Reply-To identity settings (#1488445)
+- Fix parent folder permissions checking on folder creation (#1488443)
+- Set flexible width to login form fields (#1488418)
+- Fix re-draw bug on list columns change in IE8 (#1487822)
+- Allow mass-removal of addresses from a group (#1487748)
+- Fix removing all contacts on import to LDAP addressbook
+- Fix so "Back" from compose/show doesn't reset search request (#1488238)
+- Add option to delete messages instead of moving to Trash when in Junk folder (#1486686)
+- Fix invisible cursor when replying to a html message (#1487073)
+- Reset IP stored in session when destroying session data (#1488056)
+- Fix bug where memory_limit = -1 wasn't handled properly
+- Support mutliple name/email pairs for Bcc and Reply-To identity settings (#1488445)
+- Support LDAP RFC2256's country object class read/write (#1488123)
+- Upgraded to jQuery 1.7.2
+- Image resize with GD extension (#1488383)
+- Fix lack of warning when switching task in compose window (#1488399)
+- Fix bug where it wasn't possible to enter ( or & characters in autocomplete fields
+- Request all needed fields from address book backends (#1488394)
+- Unified (single) spellchecker button
+- Scroll long lists on drag&drop (#1485946)
+- Copy all skins in installto script (#1488376)
+
+RELEASE 0.8-beta
+----------------
+- Upgraded to jQuery 1.7.1 (#1488337) and jQuery UI 1.8.18
+- Add Russian to the spellchecker languages list (#1488135)
+- Remember custom skin selection after logout (#1488355)
+- Make sure About tab is always the last tab (#1488257)
+- Fix issue with folder creation under INBOX. namespace (#1488349)
+- Added mailto: protocol handler registration link in User Preferences (#1486580)
+- Handle identity details box with an iframe (#1487020)
+- Fix issue where some text from original message was missing on reply (#1488340)
+- Fix autoselect_host() for login (#1488297)
+- Changed license to GNU GPLv3+ with exceptions for skins & plugins
+- Added address book widget on compose screen
+- Use proper timezones from PHP's internal timezonedb (#1485592)
+- Add separate pagesize setting for mail messages and contacts (#1488269)
+- Deprecate $DB, $USER, $IMAP global variables, Use $RCMAIL instead
+- Add option to set default font for HTML message (#1484137)
+- Fix issues with big memory allocation of IMAP results
+- Prevent from memory_limit exceeding when trying to parse big messages bodies (#1487424)
+- Add possibility to add SASL mechanisms for SMTP in smtp_connect hook (#1487937)
+- Mark (with different color) folders with recent messages (#1486234)
+- Added About tab in Settings
+- TinyMCE updated to 3.4.6
+
+RELEASE 0.7.2
+-------------
+- Fix encoding of attachment with comma in name (#1488389)
 - Fix handling of % character in IMAP protocol (#1488382)
 - Fix duplicate names handling in addressbook searches (#1488375)
 - Fix displaying of HTML messages from Disqus (#1488372)
@@ -18,6 +186,7 @@ CHANGELOG Roundcube Webmail
 - Make mime type detection based on filename extension to be case-insensitive
 - Fix failure on MySQL database upgrade from 0.7 - text column can't have default value (#1488300)
 
+
 RELEASE 0.7.1
 -------------
 - Fix bug in handling of base href and inline content (#1488290)
@@ -28,8 +197,8 @@ RELEASE 0.7.1
 - Fix wrong (long) label usage (#1488283)
 - Fix handling of INBOX's subfolders in special folders config (#1488279)
 - Add ifModule statement for setting Options -Indexes in .htaccess file (#1488274)
+- Fix crashes with eAccelerator (#1488256)
 - Fix searching on IMAP servers without CHARSET specifier support (#1488271)
-- Fix crash with eAccelerator (#1488256)
 - Fix expanding folders during drag&drop (#1488260)
 - Fix wrong postgres sequence name in upgrade from 0.6
 - Fix broken CREATE INDEX queries in SQLite DDL files (#1488255)
@@ -111,3 +280,1147 @@ RELEASE 0.7-beta
 - Added 'priority' column on messages list (#1486782)
 - Localize forwarded message header (#1488058)
 
+RELEASE 0.6
+-----------
+- Fix bug where the last identity is used on reply (#1488101)
+- Fix locked folder rename option on servers supporting RFC2086 only (#1488089)
+- Fix session race conditions when composing new messages
+- Fix encoding of LDAP contacts identifiers (#1488079)
+- jQuery 1.6.4
+- Fix handling of binary attachments encoded with quoted-printable (#1488065)
+- Fix text-overflow:ellipsis issues on messages list in FF7 and Webkit (#1488061)
+- Fix handling of links with IP address
+- Fix compacting folder resets message list filter (#1488076)
+
+RELEASE 0.6-rc
+----------------
+- Send X-Frame-Options headers to protect from clickjacking (#1487037)
+- Fallback to mail_domain in LDAP variable replacements; added 'host' to 'user_create' hook arguments (#1488024)
+- Fixed wrong vCard type parameter mobile (#1488067)
+- Fixed vCard WORKFAX issue (#1488046)
+- Add vCard's Profile URL support (#1488062)
+- jQuery 1.6.3
+- Fix imap_cache setting to values other than 'db' (#1488060)
+- Fix handling of attachments inside message/rfc822 parts (#1488026)
+- Make list of mimetypes that open in preview window configurable (#1487625)
+- Added plugin hook 'message_part_get' for attachment downloads
+- Added unique connection identifier to IMAP debug messages
+- Fix image type check for contact photo uploads
+
+RELEASE 0.6-beta
+----------------
+- Fixed selecting identity on reply/forward (#1487981)
+- Add option to hide selected LDAP addressbook on the list
+- Add client-side checking of uploaded files size
+- Add newlines between organization, department, jobtitle (#1488028)
+- Recalculate date when replying to a message and localize the cite header (#1487675)
+- Fix handling of email addresses with quoted local part (#1487939)
+- Fix EOL character in vCard exports (#1487873)
+- Added optional "multithreading" autocomplete feature
+- Plugin API: Added 'config_get' hook
+- Fixed new_user_identity plugin to work with updated rcube_ldap class (#1487994)
+- Plugin API: added folder_delete and folder_rename hooks
+- Added possibility to undo last contact delete operation
+- Fix sorting of contact groups after group create (#1487747)
+- Add optional textual upload progress indicator (#1486039)
+- Fix parsing URLs containing commas (#1487970)
+- Added vertical splitter for books/groups list in addressbook (#1487923)
+- Improved namespace roots handling in folder manager
+- Added searching in all addressbook sources
+- Added addressbook source selection in contacts import
+- Implement LDAPv3 Virtual List View (VLV) for paged results listing
+- Use 'address_template' config option when adding a new address block (#1487944)
+- Added addressbook advanced search
+- Add popup with basic fields selection for addressbook search
+- Case-insensitive matching in autocompletion (#1487933)
+- Added option to force spellchecking before sending a message (#1485458)
+- Fix handling of "<" character in contact data, search fields and folder names (#1487864)
+- Fix saving "<" character in identity name and organization fields (#1487864)
+- Added option to specify to which address book add new contacts
+- Added plugin hook for keep-alive requests
+- Store user preferences in session when write-master is not available and session is stored in memcache, write them later
+- Improve performence of folder manager operations
+- Fix default_port option handling in Installer when config.inc.php file exists (#1487925)
+- Removed option focus_on_new_message, added newmail_notifier plugin
+- Added general rcube_cache class with Memcache and APC support
+- Improved caching performance by skipping writes of unchanged data
+- Option enable_caching replaced by imap_cache and messages_cache options
+- Fix WORKFAX saving in address book (#1487910)
+- Add forward-as-attachment feature
+- jQuery-1.6.2 (#1487913, #1487144)
+- Improve display name composition when saving contacts (#1487143)
+- Fix problems with subfolders of INBOX folder on some IMAP servers (#1487725)
+- Fix handling of folders that doesn't belong to any namespace (#1487637)
+- Enable multiselection for attachments uploading in capable browsers (#1485969)
+- Add possibility to change HTML editor configuration by skin
+- Fix a bug where selecting too many contacts would produce too large URI request (#1487892)
+- Improve performance by including files with absolute path (#1487849)
+- Move folder name truncation to client/skin (#1485412)
+- Added plugin hook for request token creation
+- Replace LDAP vars in group queries (#1487837)
+- Fix vcard folding with uncode characters (#1487868)
+- Keep all submitted data if contact form validation fails (#1487865)
+- Handle uncode strings in rcube_addressbook::normalize_string() (#1487866)
+- Fix handling of debug_level=4 in ajax requests (#1487831)
+- Enable TinyMCE's contextmenu (#1487014)
+- Allow multiple concurrent compose sessions
+- New config option for custom logo
+- Allow skins to define/override texts with <roundcube:label />
+- Add simple ACL rights/namespace handling in folder manager
+- Force IE to send referers (#1487806)
+- Better display of vcard import results (#1485457)
+- Improved vcard import
+- Interactive update script with improved DB schema check
+- Fix problem with contactgroupmembers table creation on MySQL 4.x, add index on contact_id column
+- Add LDAP SASL bind and proxy authentication (#1486692)
+- Replying to a sent message puts the old recipient as the new recipient (#1487074)
+- Fulltext search over (almost) all data for contacts
+- Extend address book with rich contact information
+
+RELEASE 0.5.4
+-------------
+- Fix XSS vulnerability in UI messages (#1488030)
+
+RELEASE 0.5.3
+-------------
+- Fix identities "reply-to" and "bcc" fields have a bogus value when left empty (#1487943)
+- Fix issue which cases IMAP disconnection when encrypt() method was used (#1487900)
+- Fix some CSS issues in Settings for Internet Explorer 
+- Fixed handling of folder with name "0" in folder selector
+- Fix bug where messages were deleted instead moved to trash folder after Shift key was used (#1487902)
+- Fix relative URLs handling according to a <base> in HTML (#1487889)
+- Fix handling of top-level domains with more than 5 chars or unicode chars (#1487883)
+- Fix usage of non-standard HTTP error codes (#1487797)
+- Fix PHP warning on mistaken in_array() usage (#1487901)
+
+RELEASE 0.5.2
+-------------
+- TinyMCE 3.4.2 now compatible with IE9
+- PEAR::Net_SMTP 1.5.2, fixed timeout issue (#1487843)
+- Fix bug where template name without plugin prefix was used in render_page hook
+- Support 'abort' and 'result' response in 'preferences_save' hook, add error handling
+- Fix bug where some content would cause hang on html2text conversion (#1487863)
+- Improve space-stuffing handling in format=flowed messages (#1487861)
+- Fix bug where some dates would produce SQL error in MySQL (#1487856)
+- Added workaround for some IMAP server with broken STATUS response (#1487859)
+- Fix bug where default_charset was not used for text messages (#1487836)
+- Stateless request tokens. No keep-alive necessary on login page (#1487829)
+- Force names of unique constraints in PostgreSQL DDL
+- Add code for prevention from IMAP connection hangs when server closes socket unexpectedly
+- Remove redundant DELETE query (for old session deletion) on login
+- Get around unreliable rand() and mt_rand() in session ID generation (#1486281)
+- Fix some emails are not shown using Cyrus IMAP (#1487820)
+- Fix handling of mime-encoded words with non-integral number of octets in a word (#1487801)
+- Fix parsing links with non-printable characters inside (#1487805)
+- Fixed de_CH Localization bugs (#1487773)
+- Add variable for 'Today' label in date_today option (#1486120)
+- Fix dont_override setting does not override existing user preferences (#1487664)
+- Use only one from IMAP authentication methods to prevent login delays (1487784)
+- Support strftime format in date_today option
+- Fix SQL query in rcube_user::query() so it uses index on MySQL again
+- Removed redundant </form> tags from contact add/edit pages
+- Fix CSS error in contact details screen on IE7 (#1487775)
+
+RELEASE 0.5.1
+-------------
+- Fix handling of attachments with invalid content type (#1487767)
+- Add workaround for DBMail's bug http://www.dbmail.org/mantis/view.php?id=881 (#1487766)
+- Use IMAP's ID extension (RFC2971) to print more info into debug log
+- Security: add optional referer check to prevent CSRF in GET requests
+- Fix email_dns_check setting not used for identities/contacts (#1487740)
+- Fix ICANN example addresses doesn't validate (#1487742)
+- Security: protect login form submission from CSRF
+- Security: prevent from relaying malicious requests through modcss.inc
+- Fix handling of non-image attachments in multipart/related messages (#1487750)
+- Fix IDNA support when IDN/INTL modules are in use (#1487742)
+- Fix handling of invalid HTML comments in messages (#1487759)
+- Fix parsing FETCH response for very long headers (#1487753)
+- Fix add/remove columns in message list when message_sort_order isn't set (#1487751)
+- Check mime headers before attempt to parse them (#1487745)
+- Quote header values in show_additional_headers plugin (#1487744)
+- Fix settings UI on IE 6 (#1487724)
+- Remove double borders in folder listing (#1487713)
+- Separate full message headers UI element from headers table (#1487715)
+- Add part MIME ID to message_part_* hooks (#1487718) 
+- Improve parsing of MS Outlook vCards (#1487716)
+- Updated PEAR::Net_Socket to 1.0.10
+- Updated PEAR::Net_IDNA2 to 0.1.1
+- Fix handling of comments inside an email address spec. (#1487673)
+- Show full mail subject as title when hovering a cut subject link (#1487128)
+- Fix randomly disappearing folders list in IE (#1487704)
+- Fix list column add/removal in IE (#1487703)
+- Fix login redirect issues (#1487686)
+- Require PHP 5.2.1 or greater
+- Fix %h/%z variables in username_domain option (#1487701)
+- Workaround for setting charset in case of malformed bodystructure response (#1487700)
+- Fix impossible to subscribe to protected folders (#1487656)
+- Fix setting timezone in Preferences (#1487705)
+
+RELEASE 0.5
+-----------
+- Fix double-login/session issue (#1487104)
+- Wrap HTML parts with <html><body> and add Doctype declaration (#1487098)
+- Make rcube_autoload silently skip unknown classes (#1487109)
+- Fix charset detection in vcards with encoded values (#1485542)
+- Better CSS cursors for splitters (#1486874)
+- Show the same message only once (#1487641)
+- Fix namespaces handling (#1487649)
+- Add handling of multifolder METADATA/ANNOTATION responses
+- Fix handling of INBOX when personal namespace prefix is non-empty (#1487657)
+- Fix handling square brackets in links (#1487672)
+- Add description of 'use_https' option in main.inc.php.dist file
+
+RELEASE 0.5-RC
+--------------
+- Plugin API: Add 'pass' argument in 'authenticate' hook (#1487134)
+- Fix attachments of type message/rfc822 are not listed on attachments list
+- Add 'login_lc' config option for case-insensitive authentication (#1487113)
+- Fix window is blur'ed in IE when selecting a message (#1487316)
+- Fix cursor position on compose form in Webkit browsers (#1486674)
+- Fix setting charset of attachment filenames (#1487122)
+- Allow setting autocomplete attribute for all inputs separately (#1487313)
+- New Folder Manager UI
+- Fix invalid Request when creating a folder (#1487443)
+- Add folder size and quota indicator in folder manager (#1485780)
+- Add possibility to move a subfolder into root folder (#1486791)
+- Fix copying all messages in a folder copies only messages from current page
+- Improve performance of moving or copying of all messages in a folder
+- Fix plaintext versions of HTML messages don't contain placeholders for emotions (#1485206)
+- Improve performance of folder rename and delete actions
+- Better support for READ-ONLY and NOPERM responses handling (#1487083)
+- Add confirmation message on purge/expunge command response
+- Fix handling of untagged responses for AUTHENTICATE command (#1487450)
+- Add username and IP address to log message on unsuccessful login (#1487626)
+- Improved Mail-Followup-To and Mail-Reply-To headers handling
+- Fix charset conversion for text attachments without charset specification (#1487634)
+
+RELEASE 0.5-BETA
+----------------
+- Make session data storage more robust against garbage session data (#1487136)
+- Config option for autocomplete on login screen
+- Allow plugin templates to include local files (#1487133)
+- List groups in address detail view and allow to subscribe/unsubscribe from there (#1486753)
+- Messages caching: performance improvements, fixed syncing, fixes related with #1486748
+- Add link to identities in compose window (#1486729)
+- Add Internationalized Domain Name (IDNA) support (#1483894)
+- Add option to automatically send read notifications for known senders (#1485883)
+- Add option to "Return receipt" will be always checked (#1486352)
+- Fix HTML to plain text conversion doesn't handle citation blocks (#1486921)
+- Use custom sorting when SORT is disabled by IMAP admin (#1486959)
+- Allow setting some washtml options from plugin (#1486578)
+- Add option do bind for an individual LDAP address book (#1486997)
+- Change reply prefix to display email address only if sender name doesn't exist (#1486550)
+- Plugin API: improved 'abort' flag handling, added 'result' item in some hooks (#1486914)
+- Fix mailto optional params in plain text messages aren't handled (#1487026)
+- Add Reply-to-List feature (#1484252)
+- Add Mail-Followup-To/Mail-Reply-To support (#1485547)
+- Fix confirmation message isn't displayed after sending mail on Chrome (#1486177)
+- Fix keyboard doesn't work with autocomplete list with Chrome (#1487029)
+- Improve tabs to fixed width and add tabs in identities info (#1486974)
+- Add unique index on users.username+users.mail_host
+- Make htmleditor option more consistent and add option to use HTML on reply to HTML message (#1485840)
+- Use empty envelope sender address for message disposition notifications (RFC 2298.3)
+- Support SMTP Delivery Status Notifications - RFC 3461 (#1486142)
+- Use css sprite image for messages list
+- Add (different) attachment icon for messages of type multipart/report (#1486165)
+- Prevent from inserting empty link when composing HTML message (#1486944)
+- Add caching support in id2uid and uid2id functions (#1487019)
+- Add SASL proxy authentication for SMTP (#1486693)
+- Improve displaying of UI messages (#1486977)
+- Fix double e-mail filed in identity form (#1487054)
+- Display IMAP errors for LIST/THREAD/SEARCH commands (#1486905)
+- Add LITERAL+ (IMAP4 non-synchronizing literals) support (RFC 2088)
+- Add separate column for message status icon (#1486665)
+- Add ACL extension support into IMAP classes (RFC 4314)
+- Add ANNOTATEMORE extension support into IMAP classes (draft-daboo-imap-annotatemore)
+- Add METADATA extension support into IMAP classes (RFC 5464)
+- Fix decoding of e-mail address strings in message headers (#1487068)
+- Fix handling of attachments when Content-Disposition is not inline nor attachment (#1487051)
+- Improve performance of unseen messages counting (#1487058)
+- Improve performance of messages counting using ESEARCH extension (RFC4731)
+- Add LIST-STATUS support in rcube_imap_generic class (RFC 5819)
+- Add SASL-IR support in IMAP (RFC 4959)
+- Add LOGINDISABLED support (RFC 2595)
+- Add support for AUTH=PLAIN in IMAP authentication
+- Re-implemented SMTP proxy authentication support
+- Add support for IMAP proxy authentication (#1486690)
+- Add support for AUTH=DIGEST-MD5 in IMAP (RFC 2831)
+- Fix parent folder with unread subfolder not bold when message is open (#1487078)
+- Add basic IMAP LIST's \Noselect option support
+- Add support for selection options from LIST-EXTENDED extension (RFC 5258)
+- Don't list subscribed but non-existent folders (#1486225)
+- Fix handling of URLs with tilde (~) or semicolon (;) character (#1487087, #1487088)
+- Plugin API: added 'contact_form' hook
+- Add SORT=DISPLAY support (RFC 5957)
+- Plugin API: add possibility to disable plugin in AJAX mode, 'noajax' property
+- Plugin API: add possibility to disable plugin in framed mode, 'noframe' property
+- Improve performance of setting IMAP flags using .SILENT suffix
+- Improve performance of message cache status checking with skip_disabled=true
+- Support contact's email addresses up to 255 characters long (#1487095)
+- Add option to place replies in the folder of the message being replied to (#1485945)
+- Add missing confirmation/error messages on contact/group/message actions (#1486845)
+- Add 'loading' message on message move/copy/delete/mark actions
+- Improve responsiveness of messages displaying (#1486986)
+- Add option for minimum length of autocomplete's string (#1486428)
+- Fix operations on messages in unsubscribed folder (#1487107)
+- Add support for shared folders (#1403507)
+- Fix handling of folders with name "0" (#1487119)
+- Fix handling of folders with "<>" characters in name
+- jQuery 1.4.4
+- Fix handling of HTML entity strings in plain text messages
+- Fix focused elements aren't unfocused when clicking on the list (#1487123)
+- Fix error in MSSQL DDL scripts (#1487112)
+- Lock submit button in onsubmit event on login page (#1487036)
+- Don't set attachment's charset in Content-type header (#1487122)
+- Fix handling of message bodies (quoted-printable encoded) with NULL characters (#1486189)
+- Add workaround for MSOE's multipart/related messages with non-related attachments
+
+RELEASE 0.4.2
+-------------
+- Fix handling of backslash as IMAP delimiter
+- Fix charset replacement in HTML message bodies (#1487021)
+- Fix: contact group input is empty when using rename action more than once on the same group record
+- Fix "Server Error! (Not Found)" when using utils/save-pref action (#1487023)
+- Fix handling of Thunderbird's vCards (#1487024)
+
+RELEASE 0.4.1
+-------------
+- Fix space-stuffing in format=flowed messages (#1487018)
+- Fix msgexport.sh now using the new imap wrapper
+- Avoid displaying password on shell (#1486947)
+- Only lower-case user name if first login attempt failed (#1486393)
+- Make alias setting in squirrelmail_usercopy plugin configurable (patch by pommi, #1487007)
+- Prevent from saving a non-existing skin path in user prefs (#1486936)
+- Improve handling of single-part messages with bogus BODYSTRUCTURE (#1486898)
+- Fix path to SQL files when using pgsql/mysqli/sqlsrv drivers (#1486902)
+- Fix upgrade script for SQLite (#1486903)
+- Fixes in SQL init script + added update script for MSSQL database
+- Remove redundant date in syslog messages (#1486945)
+- Fix contacts list page controls when a group is selected (#1486946)
+- Fix SMTP test in Installer (#1486952)
+- Fix "Select all" causes message to be opened in folder with exactly one message (#1486913)
+- Fix Tab key doesn't work in HTML editor in Google Chrome (#1486925)
+- Fix TinyMCE uses zh_CN when zh_TW locale is set (#1486929)
+- Fix TinyMCE buttons are hidden in Opera (#1486922)
+- Fix JS error on IE when trying to send HTML message with enabled spellchecker (#1486940)
+- Display inline images with known extensions and non-image content-type (#1486934)
+- Fix "Threaded" checkbox after subfolder creation (#1486928)
+- Fix timezone string in sent mail (#1486961)
+- Show disabled checkboxes for protected folders instead of dots (#1485498)
+- Added fieldsets in Identity form, added 'identity_form' hook
+- Re-added 'Close' button in upload form (#1486930, #1486823)
+- Fix handling of charsets with LATIN-* label
+- Fix messages background image handling in some cases (#1486990)
+- Fix format=flowed handling (#1486989)
+- Fix when IMAP connection fails in 'get' action session shouldn't be destroyed (#1486995)
+- Fix list_cols is not updated after column dragging (#1486999)
+- Support %z variable in host configuration options (#1487003)
+
+RELEASE 0.4
+-----------
+- Fix disapearing upload form disapears when user selects a file on Safari (#1486823)
+- Don't replace error messages with loading info (#1486300)
+- Fix JS errors on compose mode switch (#1486870)
+- Fix message structure parsing when it lacks optional fields (#1486881)
+- Include all recipients in sendmail log
+- Support HTTP_X_FORWARDED_PROTO header for HTTPS detecting (#1486866)
+- Fix default IMAP port configuration (#1486864)
+- Create Sent folder when starting to compose a new message (#1486802)
+- Fix handling of messages with Content-Type: application/* and no filename (#1484050)
+- Improved compose screen: resizable body and attachments list, vertical splitter, options menu
+- Fix RC forgets search results (#1483883)
+- TinyMCE 3.3.7
+- Improve parsing of styled empty tags in HTML messages (#1486812)
+- Add %dc variable support in base_dn/bind_dn config (#1486779)
+- Add button to hide/unhide the preview pane (#1484215)
+- Fix no-cache headers on https to prevent content caching by proxies (#1486798)
+- Fix attachment filenames broken with TNEF decoder using long filenames (#1486795)
+- Use user's timezone in Date header, not server's timezone (#1486119)
+- Add option to set separate footer for HTML messages (#1486660)
+- Add real SMTP error description to displayed error messages (#1485927)
+- Fix some IMAP errors handling when opening the message (#1485443)
+- Fix related parts aren't displayed when got mimetype other than image/* (#1486432)
+- Multiple identity and database support for squirrelmail_usercopy plugin (#1486517)
+- Support dynamic hostname (%d/%n) variables in configuration options (#1485438)
+- Add 'messages_list' hook (#1486266)
+- Add request* event triggers in http_post/http_request (#1486054)
+- Fix use RFC-compliant line-delimiter when saving messages on IMAP (#1486712)
+- Add 'imap_timeout' option (#1486760)
+- Fix forwarding of messages with winmail attachments
+- Fix handling of uuencoded attachments in message body (#1485839)
+- Added list_mailboxes hook in rcube_imap::list_unsubscribed() (#1486668)
+- Fix wrong message on file upload error (#1486725)
+- Add support for data URI scheme [RFC2397] (#1486740)
+- Added 'actionbefore', 'actionafter', 'responsebefore', 'responseafter' events
+- Fix double-addition of e-mail domain to content ID in HTML images
+- Read and send messages with format=flowed (#1484370), fixes word wrapping issues (#1486543)
+- Fix duplicated attachments when forwarding a message (#1486487)
+- Fix message/rfc822 attachments containing only attachments are not parsed properly (#1486743)
+- Fix %00 character in winmail.dat attachments names (#1486738)
+- Fix handling errors of folder deletion (#1486705)
+- Parse untagged CAPABILITY response for LOGIN command (#1486742)
+- Renamed all php-cli scripts to use .sh extension
+- Some files from /bin + spellchecking actions moved to the new 'utils' task
+- Added thread tree icons
+- Extend contact groups support (#1486682)
+- Fix check-recent action issues and performance (#1486526)
+- Fix messages order after checking for recent (#1484664)
+- Fix autocomplete shows entries without email (#1486452)
+- Fix listupdate event doesn't trigger on search response (#1486708)
+- Fix select_all_mode value after selecting a message (#1486720)
+- Set focus to editor on reply in HTML mode (#1486632)
+- Fix composing in HTML jumps cursor to body instead of recipients (#1486674)
+- Allow columns order change per user - drag&drop (#1485795)
+- Add References header in read receipt (#1486681)
+- Fix database constraint violation when opening a message (#1486696)
+- Add 'loading' message while login is in progress (#1486667)
+- Fix quota_zero_as_unlimited (#1486662)
+- Fix folder subscription checking (#1486684)
+- Fix INBOX appears (sometimes) twice in mailbox list (#1486672)
+- Fix listing of attachments of some types e.g. "x-epoc/x-sisx-app" (#1486653)
+- Fix DB Schema checking when some db_table_* options are not set (#1486654)
+
+RELEASE 0.4-beta
+----------------
+- Add sizelimit and timelimit variables in LDAP config (#1486544)
+- Hide IMAP host dropdown when single host is defined (#1486326)
+- Add images pre-loading on login page (#1451160)
+- Add HTTP_X_REAL_IP and HTTP_X_FORWARDED_FOR to successful logins log (#1486441)
+- Fix setting spellcheck languages with extended codes (#1486605)
+- Fix messages list scrolling in FF3.6 (#1486472)
+- Fix quicksearch input focus (#1486637)
+- Always set changed date when flagging a DB record as deleted + provide a cleanup script
+- Fix address book/group selection (#1486619)
+- Assign newly created contacts to the active group (#1486626)
+- Added option not to mark messages as read when viewed in preview pane (#1485012)
+- Allow plugins modify the Sent folder when composing (#1486548)
+- Added optional (max_recipients) support to restrict total number of recipients per message (#1484542)
+- Re-organize editor buttons, add blockquote and search buttons
+- Make possible to write inside or after a quoted html message (#1485476)
+- Fix bugs on unexpected IMAP connection close (#1486190, #1486270)
+- Iloha's imap.inc rewritten into rcube_imap_generic class
+- Added contact groups in address book (not finished yet)
+- Added PageUp/PageDown/Home/End keys support on lists (#1486430)
+- Added possibility to select all messages in a folder (#1484756)
+- Added 'imap_force_caps' option for after-login CAPABILITY checking (#1485750)
+- Password: Support dovecotpw encryption
+- TinyMCE 3.3.1
+- Implemented messages copying using drag&drop + SHIFT (#1484086)
+- Improved performance of folders operations (#1486525)
+- Fix blocked.gif attachment is not attached to the message (#1486516)
+- Managesieve: import from Horde-INGO
+- Managesieve: support for more than one match (#1486078)
+- Managesieve: support for selectively disabling rules within a single sieve script (#1485882)
+- Threaded message listing now available
+- Added sorting by ARRIVAL and CC
+- Message list columns configurable by the user
+- Removed 'index_sort' option, now we're using empty 'message_sort_col' for this
+- virtuser_query: support other identity data (#1486148)
+- Options virtuser_* replaced with virtuser_* plugins
+- Plugin API: Implemented 'email2user' and 'user2email' hooks
+- Fix forwarding message omits CC header (#1486305)
+- Add 'default_charset' option to user preferences (#1485451)
+- Add 'delete_always' option to user preferences
+- Support/Require tls:// prefix in 'smtp_server' option for TLS connections
+- Fix inconsistent behaviour of 'delete_always' option (#1486299)
+- Fix deleting all messages from last list page (#1486293)
+- Flag original messages when sending a draft (#1486203)
+- Changed signature separator when top-posting (#1486330)
+- Let the admin define defaults for search modifiers (#1485897)
+- Fix long e-mail addresses validation (#1486453)
+- Remember search modifiers in user prefs (#1486146)
+- Added force_7bit option to force MIME encoding of plain/text messages (#1486510)
+- Use case sensitive check when checking for default folders (#1486346)
+- Fix checking for new mail: now checks unseen count of inbox (#1485794)
+- Improve performance by avoiding unnecessary updates to the session table (#1486325)
+- Fix invalid <font> tags which cause HTML message rendering problems (#1486521)
+- Fix CVE-2010-0464: Disable DNS prefetching (#1486449)
+- Fix Received headers to behave better with SpamAssassin (#1486513)
+- Password: Make passwords encoding consistent with core, add 'password_charset' global option (#1486473)
+- Fix adding contacts SQL error on mysql (#1486459)
+- Squirrelmail_usercopy: support reply-to field (#1486506)
+- Fix IE spellcheck suggestion popup issue (#1486471)
+- Fix email address auto-completion shows regexp pattern (#1486258)
+- Fix merging of configuration parameters: user prefs always survive (#1486368) 
+- Fix quota indicator value after folder purge/expunge (#1486488)
+- Fix external mailto links support for use as protocol handler (#1486037)
+- Fix attachment excessive memory use, support messages of any size (#1484660)
+- Fix setting task name according to auth state
+- Password: fix vpopmaild driver (#1486478)
+- Add workaround for MySQL bug [http://bugs.mysql.com/bug.php?id=46293] (#1486474)
+- Fix quoted text wrapping when replying to an HTML email in plain text (#1484141)
+- Fix handling of extended mailto links (with params) (#1486354)
+- Fix sorting by date of messages without date header on servers without SORT (#1486286)
+- Fix inconsistency when not using default table names (#1486467)
+- Fix folder rename/delete buttons do not appear on creation of first folder (#1486468)
+- Fix character set conversion fails on systems where iconv doesn't accept //IGNORE (#1486375)
+- Log in performance: Create default folders on first login only
+- Import contacts into the selected address book (by Phil Weir)
+- Add support for MDB2's 'sqlsrv' driver (#1486395)
+- Use jQuery-1.4
+- Removed problematic browser-caching of messages
+- Fix incompatybility with suhosin.executor.disable_emodifier (#1486321)
+- Use PLAIN auth when CRAM fails and imap_auth_type='check' (#1486371)
+- Fix removal of <title> tag from HTML messages (#1486432)
+- Fix 'force_https' to specified port when URL contains a port number (#1486411)
+- Fix to-text converting of HTML entities inside b/strong/th/hX tags (#1486422)
+- Bug in spellchecker suggestions when server charset != UTF8 (#1486406)
+- Managesieve: Fix requires generation for multiple actions (#1486397)
+- Fix LDAP problem with special characters in RDN (#1486320)
+- Improved handling of message parts of type message/rfc822
+- Plugin API: added 'quota' hook
+- Fix parsing conditional comments in HTML messages (#1486350)
+- Use built-in json_encode() for proper JSON format in AJAX replies
+- Allow setting only selected params in 'message_compose' hook (#1486312)
+- Plugin API: added 'message_compose_body' hook (#1486285)
+- Fix counters of all folders are checked in 'getunread' action  with check_all_folders disabled (#1486128)
+- Fix displaying alternative parts in messages of type message/rfc822 (#1486246)
+- Fix possible messages exposure when using Roundcube behind a proxy (#1486281)
+- Fix unicode para and line separators in javascript response (#1486310)
+- Additional_message_headers: allow unsetting headers, support plugin's config file (#1486268)
+- Fix displaying of hidden directories in skins list (#1486301)
+- Fix open_basedir restriction error when reading skins list (#1486304)
+- Fix pasting from Office apps into html editor (#1486271)
+- Fix empty <a> tags parsing (#1486272)
+- Don't cut off attachment names when using non-RFC2231 encoding (#1485515)
+- Allow inserting signatures above replied message body (#1484272)
+- Managesieve 2.0: multi-script support
+- Fix imap_auth_type regression (#1486263)
+
+RELEASE 0.3.1
+------------------
+- Specify toolbar container in compose template (#1486247)
+- Fix $_SERVER['HTTPS'] check for SSL forcing on IIS (#1486243)
+- Avoid unnecessary page loads for selected tab (#1486032)
+- Fix quota indicator issues by content generation on client-size (#1486197, #1486220)
+- Don't display disabled sections in Settings (#1486099)
+- Added server-side e-mail address validation with 'email_dns_check' option (#1485857)
+- Fix login page loading into an iframe when session expires (#1485952)
+- Allow setting port number in 'force_https' option (#1486091)
+- Option 'force_https' replaced by 'force_https' plugin
+- Fix IE issue with non-UTF-8 characters in AJAX response (#1486159)
+- Partially fixed "empty body" issue by showing raw body of malformed message (#1486166)
+- Fix importing/sending to email address with whitespace (#1486214)
+- Added XIMSS (CommuniGate) driver for Password plugin
+- Fix newly attached files are not saved in drafts w/o editing any text (#1486202)
+- Added attachment upload indicator with parallel upload (#1486058)
+- Use default_charset for bodies of messages without charset definition (#1486187)
+- Password: added cPanel driver
+- Fix return to first page from e-mail screen (#1486105)
+- Fix handling HTML comments in HTML messages (#1486189)
+- Fix folder/messagelist controls alignment - icons used (#1486072)
+- Fix LDAP addressbook shows 'Contact not found' error sometimes (#1486178)
+- Fix cache status checking + improve cache operations performance (#1486104)
+- Prevent from setting INBOX as any of special folders (#1486114)
+- Fix regular expression for e-mail address (#1486152)
+- Fix Received header format
+- Implemented sorting by message index - added 'index_sort' option (#1485936)
+- Fix dl() use in installer (#1486150)
+- Added 'ldap_debug' option
+- Fix "Empty startup greeting" bug (#1486085)
+- Fix setting user name in 'new_user_identity' plugin (#1486137)
+- Fix incorrect count of new messages in folder list when using multiple IMAP clients (#1485995)
+- Fix all folders checking for new messages with disabled caching (#1486128)
+- Support skins in 'archive' and 'markasjunk' plugins
+- Added 'html_editor' hook (#1486068)
+- Fix DB constraint violation when populating messages cache (#1486052)
+- Password: added password strength options (#1486062)
+- Fix LDAP partial result warning (#1485536)
+- Fix delete in message view deletes permanently with flag_for_deletion=true (#1486101)
+- Use faster/secure mt_rand() (#1486094)
+- Fix roundcube hangs on empty inbox with bincimapd (#1486093)
+- Fix wrong headers for IE on servers without $_SERVER['HTTPS'] (#1485926)
+- Force IE style headers for attachments in non-HTTPS session, 'use_https' option (#1485655)
+- Check 'post_max_size' for upload max filesize (#1486089) 
+- Password Plugin: Fix %d inserts username instead of domain (#1486088)
+- Fix rcube_mdb2::affected_rows() (#1486082)
+
+RELEASE 0.3-stable
+------------------
+- Fix gn and givenName should be synonymous in LDAP addressbook (#1485892)
+- Add mail_domain to LDAP email entries without @ sign (#1485201)
+- Fix saving empty values in LDAP contact data (#1485781)
+- Fix LDAP contact update when RDN field is changed (#1485788)
+- Fix LDAP attributes case senitivity problems (#1485830)
+- Fix LDAP addressbook browsing when only one directory is used (#1486022)
+- Fix endless loop on error response for APPEND command (#1486060)
+- Don't require date.timezone setting in installer (#1485989)
+- Fix date sorting problem with Courier IMAP server (#1486065)
+- Unselect pressed buttons on mouse up (#1485987)
+- Don't set php_value error_log in .htaccess but mention in INSTALL (#1485924)
+- Fix too small status/flag/attachment columns in Safari 4 (#1486063)
+- Fix selection disabling while dragging splitter in webkit browsers (#1486056)
+- Added 'new_messages' plugin hook (#1486005)
+- Added 'logout_after' plugin hook (#1486042)
+- Added 'message_compose' hook
+- Added 'imap_connect' hook (#1485956)
+- Fix vcard_attachments plugin (#1486035)
+- Updated PEAR::Auth_SASL to 1.0.3 version
+- Use sequence names only with PostgreSQL (#1486018)
+- Re-designed User Preferences interface 
+- Fix MS SQL DDL (#1486020)
+- Fix rcube_mdb2.php: call to setCharset not implemented in mssql driver (#1486019)
+- Added 'display_next' option
+- Fix rcube_mdb2::unixtimestamp for MS SQL (#1486015)
+- Fix HTML washing to respect character encoding
+- Fix endless loop in iil_C_Login() with Courier IMAP (#1486010)
+- Fix #messagemenu display on IE (#1486006)
+- Speedup UI by using sprites for (toolbar) buttons
+- Fix charset names with X- prefix handling
+- Fix displaying of HTML messages with unknown/malformed tags (#1486003)
+
+RELEASE 0.3-RC1
+---------------
+- Fix import of vCard entries with params (#1485453)
+- Fix HTML messages output with empty block elements (#1485974)
+- Use request tokens to protect POST requests from CSRF
+- Added hook when killing a session
+- Added hook to write_log function (#1485971)
+- Performance improvements by use UID commands (#1485690)
+- Fix HTML editor tabIndex setting (#1485972)
+- Added 'imap_debug' and 'smtp_debug' options
+- Support strftime's format modifiers in date_* options (#1484806)
+- Support %h variable in 'smtp_server' option (#1485766)
+- Show SMTP errors in browser (#1485927)
+- Allow WBR tag in HTML message (#1485960)
+- Use spl_autoload_register() instead of __autoload (#1485947)
+- Add hook for identities listing (#1485958)
+- Trigger hook 'smtp_connect' when opening an SMTP connection (#1485954)
+- Added config option to enforce HTTPS connections
+- Fix non-unicode characters caching in unicode database (#1484608)
+- Performance improvements of messages caching
+- Fix empty Date header issue (#1485923)
+- Open collapsed folders during drag & drop (#1485914)
+- Fixed link text replacements (#1485789)
+- Also trigger 'insertrow' events on page load (#1485826)
+- No link on subject in IE browsers (#1484913)
+- Fixed filename encoding according to RFC2231 (#1485875)
+- Added message Edit feature (#1483891, #1484440)
+- Fix message Etag generation for counter issues (#1485623)
+- Fix messages searching on MailEnable IMAP (#1485762)
+- Fixed many 'skip_deleted' issues (#1485634)
+- Fixed messages list sorting on servers without SORT capability
+- Colorized signatures in plain text messages
+- Reviewed/fixed skip_deleted/read_when_deleted/flag_for_deletion options handling in UI
+- Fix displaying of big maximum upload filesize (#1485889)
+- Added possibility to invert messages selection
+- After move/delete from 'show' action display next message instead of messages list (#1485887)
+- Fixed problem with double quote at the end of folder name (#1485884)
+- Speedup UI by using CSS sprites and etags/expires/deflate in Apache config (#1484858,#1485800)
+- Support UID EXPUNGE: remove only moved/deleted messages
+- Add drag cancelling with ESC key (#1484344)
+- Support initial identity name from virtuser_query (#1484003)
+- Added message menu, removed Print and Source buttons
+- Added possibility to save message as .eml file (#1485861)
+- Added 1 minute interval in autosave options (#1485854)
+- Support UTF-7 encoding in messages (#1485832)
+- Better support for malformed character names (#1485758)
+
+RELEASE 0.3-BETA
+----------------
+- Plugin API + jQuery engine
+- Added possibility to encrypt received header, option 'http_received_header_encrypt',
+  added some more logic in encrypt/decrypt functions for security
+- Fix Answered/Forwarded flag setting for messages in subfolders
+- Fix autocomplete problem with capital letters (#1485792)
+- Support UUencode content encoding (#1485839)
+- Minimize chance of race condition in session handling (#1485659, #1484678)
+- Fix session handling on non-session SQL query error (#1485734)
+- Fix html editor mode setting when reopening draft message (#1485834)
+- Added quick search box menu (#1484304)
+- Fix wrong column sort order icons (#1485823)
+- Updated TinyMCE to 3.2.3 version
+- Fix attachment names encoding when charset isn't specified in attachment part (#1484969)
+- Fix message normal priority problem (#1485820)
+- Fix autocomplete spinning wheel does not disappear (#1485804)
+- Added log_date_format option (#1485709)
+- Fix text wrapping in HTML editor after switching from plain text to HTML (#1485521)
+- Fix auto-complete function hangs with plus sign (#1485815)
+- Fix AJAX requests errors handler (#1485000)
+- Speed up message list displaying on IE
+- Fix read/write database recognition (#1485811)
+
+RELEASE 0.2.2
+-------------
+- Fix quicksearchbox look in Chrome and Konqueror (#1484841)
+- Fix UTF-8 byte-order mark removing (#1485514)
+- Fix folders subscribtions on Konqueror (#1484841) 
+- Fix debug console on Konqueror and Safari
+- Fix messagelist focus issue when modifying status of selected messages (#1485807)
+- Support STARTTLS in IMAP connection (#1485284)
+- Fix DEL key problem in search boxes (#1485528)
+- Support several e-mail addresses per user from virtuser_file (#1485678)
+- Fix drag&drop with scrolling on IE (#1485786)
+- Fix adding signature separator in html mode (#1485350)
+- Fix opening attachment marks message as read (#1485803)
+- Fix 'temp_dir' does not support relative path under Windows (#1484529)
+- Fix "Initialize Database" button missing from installer (#1485802)
+- Fix compose window doesn't fit 1024x768 window (#1485396)
+- Fix service not available error when pressing back from compose dialog (#1485552)
+- Fix using mail() on Windows (#1485779)
+- Fix word wrapping in message-part's <PRE>s for printing (#1485787)
+- Fix incorrect word wrapping in outgoing plaintext multibyte messages (#1485714)
+- Fix double footer in HTML message with embedded images
+- Fix TNEF implementation bug (#1485773)
+- Fix incorrect row id parsing for LDAP contacts list (#1485784) 
+- Fix 'mode' parameter in sqlite DSN (#1485772)
+
+RELEASE 0.2.1
+------------------
+- Use US-ASCII as failover when Unicode searching fails (#1485762)
+- Fix errors handling in IMAP command continuations (#1485762)
+- Fix FETCH result parsing for servers returning flags at the end of result (#1485763)
+- Fix datetime columns defaults in mysql's DDL (#1485641)
+- Fix attaching more than nine inline images (#1485759)
+- Support 'UNICODE-1-1-UTF-7' alias for UTF-7 encoding (#1485758)
+- Fix mime-type detection using a hard-coded map (#1485311)
+- Don't return empty string if charset conversion failed (#1485757)
+- Disable concurrent autocomplete query results display (#1485743)
+- Fix new lines stripped from message footer (#1485751)
+- Fix IE problem with mouse click autocomplete (#1485739)
+- Fix html body washing on reply/forward + fix attachments handling (#1485676)
+- Fix multiple recipients input parsing (#1485733)
+- Fix replying to message with html attachment (#1485676)
+- Use default_charset for messages without specified charset (#1485661, #1484961)
+- Support non-standard "GMT-XXXX" literal in date header (#1485729)
+- Added TNEF support to decode MS Outlook attachments (winmail.dat)
+- Fix "value continuation" MIME headers by adding required semicolon (#1485727)
+- Fix pressing select all/unread multiple times (#1485723)
+- Fix selecting all unread does not honor new messages (#1485724)
+- Fix some base64 encoded attachments handling (#1485725)
+- Support NGINX as IMAP backend: better BAD response handling (#1485720)
+- Performance fix: don't fetch attachment parts headers twice to parse filename
+- Fix checking for recent messages on various IMAP servers (#1485702)
+- Performance fix: Don't fetch quota and recent messages in "message view" mode
+- Fix displaying of alternative-inside-alternative messages (#1485713)
+- Fix MDNSent flag checking, use arbitrary keywords (asterisk) flag (#1485706)
+- Fix creation of folders with '&' sign in name
+- Fix parsing of email addresses without angle brackets (#1485693)
+- Save spellcheck corrections when switching from plain to html editor (and spellchecking is on)
+- Fix large search results on server without SORT capability (#1485668)
+- Get rid of preg_replace() with eval modifier and create_function usage (#1485686)
+- Bring back <base> and <link> tags in HTML messages
+- Fix XSS vulnerability through background attributes as reported by Julien Cayssol
+- Fix problems with backslash as IMAP hierarchy delimiter (#1484467)
+- Secure vcard export by getting rid of preg's 'e' modifier use (#1485689)
+- Fix authentication when submitting form with existing session (#1485679)
+- Allow absolute URLs to images in HTML messages/sigs (#1485666)
+- Fix message body which contains both inline attachments and emotions
+- Fix SQL query execution errors handling in rcube_mdb2 class (#1485509)
+- Fix address names with '@' sign handling (#1485654)
+- Improve messages display performance
+- Fix messages searching with 'to:' modifier
+
+RELEASE 0.2-STABLE
+------------------
+- Fix mark popup in IE 7 (#1485369)
+- Fix line-break issue when copy & paste in Firefox (#1485425)
+- Fix autocomplete "unknown server error" (#1485637)
+- Fix STARTTLS before AUTH in SMTP connection (#1484883)
+- Support multiple quota values in QUOTAROOT resonse (#1485626)
+- Only abbreviate file name for IE < 7 browsers (#1485063)
+- Performance: allow setting imap rootdir and delimiter before connect (#1485172)
+- Fix sorting of folders with more than 2 levels (#1485569)
+- Fix search results page jumps in LDAP addressbook (#1485253)
+- Fix empty line before the signature in IE (#1485351)
+- Fix horizontal scrollbar in preview pane on IE (#1484633)
+- Add Robots meta tag in login page and installer (#1484846)
+- Added 'show_images' option, removed 'addrbook_show_images' (#1485597)
+- Option to check for new mails in all folders (#1484374)
+- Don't set client busy when checking for new messages (#1485276)
+- Allow UTF-8 folder names in config (#1485579)
+- Add junk_mbox option configuration in installer (#1485579)
+- Do serverside addressbook queries for autocompletion (#1485531)
+- Allow setting attachment col position in 'list_cols' option
+- Allow override 'list_cols' via skin (#1485577)
+- Fix 'cache' table cleanup on session destroy (#1485516)
+- Increase speed of session destroy and garbage clean up
+- Fix session timeout when DB server got clock skew (#1485490)
+- Fix handling of some malformed messages (#1484438)
+- Speed up raw message body handling
+- Better HTML entities conversion in html2text (#1485519)
+- Fix big memory consumption and speed up searching on servers without SORT capability
+- Fix setting locale to tr_TR, ku and az_AZ (#1485470) 
+- Use SORT for searching on servers with SORT capability
+- Added message status filter
+- Fix empty file sending (#1485389)
+- Improved searching with many criterias (calling one SEARCH command)
+- Fix HTML editor initialization on IE (#1485304)
+- Add warning when switching editor mode from html to plain (#1485488)
+- Make identities list scrollable (#1485538)
+- Fix problem with numeric folder names (#1485527)
+- Added BYE response simple support to prevent from endless loops in imap.inc (#1483956)
+- Fix unread message unintentionally marked as read if read_when_deleted=true (#1485409)
+- Remove port number from SERVER_NAME in smtp_helo_host (#1485518)
+- Don't send disposition notification receipts for messages marked as 'read' (#1485523)
+- Added 'keep_alive' and 'min_keep_alive' options (#1485360)
+- Added option 'identities_level', removed 'multiple_identities'
+- Allow deleting identities when multiple_identities=false (#1485435)
+- Added option focus_on_new_message (#1485374)
+- Fix html2text class autoloading on Windows (#1485505)
+- Fix html signature formatting when identity save error occured (#1485426)
+- Add feedback and set busy when moving folder (#1485497)
+- Fix 'Empty' link visibility for some languages e.g. Slovak (#1485489)
+- Fix messages count bar overlapping (#1485270)
+- Fix adding signature in drafts compose mode (#1485484)
+- Fix iil_C_Sort() to support very long and/or divided responses (#1485283)
+- Fix matching case sensitivity when setting identity on reply (#1485480)
+- Prefer default identity on reply
+- Fix imap searching on ISMail server (#1485466)
+- Add css class for flagged messages (#1485464)
+- Write username instead of id in sendmail log (#1485477)
+- Fix htmlspecialchars() use for PHP version < 5.2.3 (#1485475)
+- Fix js keywords escaping in json_serialize() for IE/Opera (#1485472)
+- Added bin/killcache.php script (#1485434)
+- Add support for SJIS, GB2312, BIG5 in rc_detect_encoding()
+- Fix vCard file encoding detection for non-UTF-8 strings (#1485410)
+- Add 'skip_deleted' option in User Preferences (#1485445)
+- Minimize "inline" javascript scripts use (#1485433)
+- Fix css class setting for folders with names matching defined classes names (#1485355)
+- Fix race conditions when changing mailbox
+- Fix spellchecking when switching to html editor (#1485362)
+- Fix compose window width/height (#1485396)
+- Allow calling msgimport.sh/msgexport.sh from any directory (#1485431)
+- Localized filesize units (#1485340)
+- Better handling of "no identity" and "no email in identity" situations (#1485117)
+- Added 'mime_param_folding' option with possibility to choose long/non-ascii attachment names encoding eg. to be readable in MS Outlook/OE (#1485320)
+- Added "advanced options" feature in User Preferences
+- Fix unread counter when displaying cached massage in preview panel (#1485290)
+- Fix htmleditor spellchecking on MS Windows (#1485397)
+- Fix problem with non-ascii attachment names in Mail_mime (#1485267, #1485096)
+- Fix language autodetection (#1485401)
+- Fix button label in folders management (#1485405)
+- Fix collapsed folder not indicating unread msgs count of all subfolders (#1485403)
+- Fix handling of apostrophes in filenames decoded according to rfc2231
+
+RELEASE 0.2-BETA
+----------------
+- Made config files location configurable (#1485215)
+- Reduced memory footprint when forwarding attachments (#1485345)
+- Allow and use spellcheck attribute for input/textarea fields (#1485060)
+- Added icons for forwarded/forwarded+replied messages (#1485257)
+- Added Reply-To to forwarded emails (#1485315)
+- Display progress message for folders create/delete/rename (#1485357)
+- Smart Tags and NOBR tag support in html messages (#1485363, #1485327)
+- Redesign of the identities settings (#1484042)
+- Add config option to disable creation/deletion of identities (#1484498)
+- Added 'sendmail_delay' option to restrict messages sending interval (#1484491)
+- Added vertical splitter for folders list resizing
+- Added possibility to view all headers in message view
+- Fixed splitter drag/resize on Opera (#1485170)
+- Fixed quota img height/width setting from template (#1484857)
+- Refactor drag & drop functionality. Don't rely on browser events anymore (#1484453)
+- Insert "virtual" folders in subscription list (#1484779)
+- Added link to open message in new window
+- Enable export of address book contacts as vCard
+- Add feature to import contacts from vcard files (#1326103)
+- Respect Content-Location headers in multipart/related messages according to RFC2110 (#1484946)
+- Allowed max. attachment size now indicated in compose screen (#1485030)
+- Also capture backspace key in list mode (#1484566)
+- Allow application/pgp parts to be displayed (#1484753)
+- Correctly handle options in mailto-links (#1485228)
+- Immediately save sort_col/sort_order in user prefs (#1485265)
+- Truncate very long (above 50 characters) attachment filenames when displaying
+- Allow to auto-detect client language if none set (#1484434)
+- Auto-detect the client timezone (user configurable)
+- Add RFC2231 header value continuations support for attachment filenames + hack for servers that not support that feature
+- Fix Reply-To header displaying (#1485314)
+- Mark form buttons that provide the most obvious operation (mainaction)
+- Added option 'quota_zero_as_unlimited' (#1484604)
+- Added PRE handling in html2text class (#1484740)
+- Added folder hierarchy collapsing
+- Added options to use syslog instead of log file (#1484850)
+- Added Logging & Debugging section in Installer
+- Fix In-Reply-To and References headers when composing saved draft message (#1485288)
+- Fix html message charset conversion for charsets with underline (#1485287) 
+- Fix buttons status after contacts deletion (#1485233)
+- Fix escaping of To: and From: fields when building message body for reply or forward in the HTML editor (#1484904)
+- Use current mailbox name in template (#1485256)
+- Better fix for skipping untagged responses (#1485261)
+- Added pspell support patch by Kris Steinhoff (#1483960)
+- Enable spellchecker for HTML editor (#1485114)
+- Respect spellcheck_uri in tinyMCE spellchecker (#1484196)
+- Case insensitive contacts searching using PostgreSQL (#1485259)
+- Make default imap folders configurable for each user (#1485075)
+- Save outgoing mail to selectable folder (#1324581)
+- Fix hiding of mark menu when clicking th button again (#1484944)
+- Use long date format in print mode (#1485191)
+- Updated TinyMCE to version 3.1.0.1
+- Re-enable autocomplete attribute for login form (#1485211)
+- Check PERMANENTFLAGS before saving $MDNSent flag (#1484963, #1485163)
+- Added flag column on messages list (#1484623)
+- Patched Mail/MimePart.php (http://pear.php.net/bugs/bug.php?id=14232)
+- Allow trash/junk subfolders to be purged (#1485085)
+- Store compose parameters in session and redirect to a unique URL
+- Fixed CRAM-MD5 authentication (#1484819)
+- Fixed forwarding messages with one HTML attachment (#1484442)
+- Fixed encoding of message/rfc822 attachments and image/pjpeg handling (#1484914)
+- Added option to select skin in user preferences
+- Added option to configure displaying of attached images below the message body
+- Added option to display images in messages from known senders (#1484601)
+- User preferences grouped in more fieldsets
+- Fix corrupted MIME headers of messages in Sent folder (#1485111)
+- Fixed bug in MDB2 package: http://pear.php.net/bugs/bug.php?id=14124
+- Use keypress instead of keydown to select list's row (#1484816)
+- Don't call expunge and don't remove message row after message move if flag_for_deletion is set to true (#1485002)
+
+RELEASE 0.2-ALPHA
+-----------------
+- Added option to disable autocompletion from selected LDAP address books (#1484922)
+- TLS support in LDAP connections: 'use_tls' property (#1485104)
+- Fixed removing messages from search set after deleting them (#1485106)
+- imap.inc: Fixed iil_C_FetchStructureString() to handle many 
+  literal strings in response (#1484969)
+- Support for subfolders in default/protected folders (#1484665)
+- Disallowed delimiter in folder name (#1484803)
+- Support " and \ in folder names
+- Escape \ in login (#1484614)
+- Better HTML sanitization with the DOM-based washtml script (#1484701)
+- Fixed sorting of folders with non-ascii characters
+- Fixed Mysql DDL for default identities creation (#1485070)
+- In Preferences added possibility to configure 'read_when_deleted',
+  'mdn_requests', 'flag_for_deletion' options
+- Made IMAP auth type configurable (#1483825)
+- Fixed empty values with FROM_UNIXTIME() in rcube_mdb2 (#1485055)
+- Fixed attachment list on IE 6/7 (#1484807)
+- Fixed JavaScript in compose.html that shows cc/bcc fields if populated
+- Make password input fields of type password in installer (#1484886)
+- Don't attempt to delete cache entries if enable_caching is FALSE (#1485051)
+- Optimized messages sorting on servers without sort capability (#1485049)
+- Corrected message headers decoding when charset isn't specified and improved
+  support for native languages (#1485050, #1485048)
+- Expanded LDAP configuration options to support LDAP server writes.
+- Installer: encode special characters in DB username/password (#1485042)
+- Fixed management of folders with national characters in names (#1485036, #1485001)
+- Fixed identities saving when using MDB2 pgsql driver (#1485032)
+- Fixed BCC header reset (#1484997)
+- Improved messages list performance - patch from Justin Heesemann
+- Append skin_path to images location only when it starts with '/' sign (#1484859)
+- Fix IMAP response in message body when message has no body (#1484964)
+- Fixed non-RFC dates formatting (#1484901)
+- Fixed typo in set_charset() (#1484991)
+- Decode entities when inserting HTML signature to plain text message (#1484990)
+- HTML editing is now working with PHP5 updates and TinyMCE v3.0.6
+- Fixed signature loading on Windows (#1484545)
+- Added language support to HTML editing (#1484862)
+- Fixed remove signature when replying (#1333167)
+- Fixed problem with line with a space at the end (#1484916)
+- Fixed <!DOCTYPE> tag filtering (#1484391)
+- Fixed <?xml> tag filtering (#1484403)
+- Added sections (fieldset+label) in Settings interface
+- Mark as read in one action with message preview (#1484972)
+- Deleted redundant quota reads (#1484972)
+- Added options for empty trash and expunge inbox on logout (#1483863)
+- Removed lines wrapping when displaying message
+- Fixed month localization
+- Changed codebase to PHP5 with autoloader
+
+RELEASE 0.1.1
+-------------
+- Clear selection when selecting single item (#1484942)
+- Remove hard-coded image size in skin templates (#1484893)
+- Database schema improvements (dropped unnecessary indexes)
+- Fixed creating a new folder with a comma in its name (#1484681)
+- Fixed sorting of messages when default mailbox is empty (#1484317)
+- Improve message previewpane - less loading (#1484316)
+- Fixed login form autoompletion (#1484839)
+- Fixed virtuser_query option for mdb2 backend (#1484874)
+- Fixed attachment resoting from Drafts when message body was empty (#1484506)
+- Fixed usage of ob_gzhandler (#1484851)
+- Fixed message part window in IE6 (#1484610)
+- Fixed decoding of mime-encoded strings (#1484191)
+- Fixed some iconv/mb_string problems (#1484598)
+- Correctly quote mailbox name when using in URL (#1484313)
+- Fixed "headers already sent" errors (#1484860)
+
+RELEASE 0.1-STABLE
+------------------
+- Added interactive installer script
+- Fix folder adding/renaming inspired by #1484800
+- Localize folder name in page title (#1484785)
+- Fix code using wrong variable name (#1484018)
+- Allow to send mail with BCC recipients only
+- condense TinyMCE toolbar down to one line, removing table buttons (#1484747)
+- Add function to mark the selected messages as read/unread (#1457360)
+- Also do charset decoding as suggested in RFC 2231 (fix #1484321)
+- Show message count in folder list and hint when creating a subfolder
+- Distinguish ssl and tls for imap connections (#1484667)
+- Added some charset aliases to fix typical mis-labelling (#1484565)
+- Remember decision to display images for a certain message during session (#1484754)
+- Truncate attachment filenames to 55 characters due to an IE bug (#1484757)
+- Make sending of read receipts configurable
+- Respect config when localize folder names (#1484707)
+- Also respect receipt and priority settings when re-opening a draft message
+- Remember search results (closes #1483883), patch by the_glu
+- Add Received header on outgoing mail
+- Upgrade to TinyMCE 2.1.3
+- Allow inserting image attachments into HTML messages while composing (#1484557)
+- Implement Message-Disposition-Notification (Receipts)
+- Fix overriding of session vars when register_globals is on (#1484670)
+- Fix bug with case-sensitive folder names (#1484245)
+- Don't create default folders by default
+- Fixed some potential security risks (audited by Andris)
+- Only show new messages if they match the current search (#1484176)
+- Switch to/from when searcing in Sent folder (#1484555)
+- Correctly read the References header (#1484646)
+- Unset old cookie before sending a new value (#1484639)
+- Correctly decode attachments when downloading them (#1484645 and #1484642)
+- Suppress IE errors when clearing attachments form (#1484356)
+- Log error when login fails due to auto_create_user turned off
+- Filter linked/imported CSS files (closes #1484056)
+- Improve message compose screen (closes #1484383)
+- Select next row after removing one from list (#1484387)
+
+RELEASE 0.1-RC2
+---------------
+- Enable drag-&-dropping of folders to a new parent and allow to create subfolders (#1457344)
+- Suppress IE errors when clearing attachments form (#1484356)
+- Set preferences field in user table to NULL (#1484386)
+- Log error when login fails due to auto_create_user turned off
+- Filter linked/imported CSS files (closes #1484056)
+- Improve message compose screen (closes #1484383)
+- Select next row after removing one from list (#1484387)
+- Make smtp HELO/EHLO hostname configurable (#1484067)
+- IPv6 Compatability (#1484322), Patch #1484373
+- Unlock interface when message sending fails (#1484570)
+- Eval PHP code in template includes (if configured)
+- Show message when folder is empty. Mo more static text in table (#1484395)
+- Only display unread count in page title when new messages arrived
+- Fixed wrong delete button tooltip (#1483965)
+- Fixed charset encoding bug (#1484429)
+- Applied patch for LDAP version (#1484552)
+- Improved XHTML validation
+- Fix message list selection (#1484550)
+- Better fix lowercased usernames (#1484473)
+- Update pngbehavior Script as suggested in #1484490
+- Fixed moving/deleting messages when more than 1 is selected
+- Applied patch for LDAP contacts listing by Glen Ogilvie
+- Applied patch for more address fields in LDAP contacts (#1484402)
+- Add alternative for getallheaders() (fix #1484508)
+- Identify mailboxes case-sensitive
+- Sort mailbox list case-insensitive (closes #1484338)
+- Fix display of multipart messages from Apple Mail (closes #1484027)
+- Protect AJAX request from being fetched by a foreign site (XSS)
+- Make autocomplete for loginform configurable by the skin template
+- Fix compose function from address book (closes #1484426)
+- Added //IGNORE to iconv call (patch #1484420, closes #1484023)
+- Check if mbstring supports charset (#1484290 and #1484292)
+- Prefer iconv over mbstring (as suggested in #1484292)
+- Check filesize of template includes (#1484409)
+- Fixed bug with buttons not dimming/enabling properly after switching folders
+- Fixed compose window becoming unresponsive after saving a draft (#1484487)
+- Re-enabled "Back" button in compose window now that bug #1484487 is fixed
+- Fixed unresponsive interface issue when downloading attachments (#1484496)
+- Lowered status message time from 5 to 3 seconds to improve responsiveness
+- Raised .htaccess upload_max_filesize from 2M to 5M to differ from default php.ini
+- Increased "mailboxcontrols" mail.css width from 160 to 170px to fix non-english languages (#1484499)
+- Fix status message bug #1484464 with regard to #1484353
+- Fix address adding bug reported by David Koblas
+- Applied socket error patch by Thomas Mangin
+- Pass-by-reference workarround for PHP5 in sendmail.inc
+- Fixed buggy imap_root settings (closes #1484379)
+- Prevent default events on subject links (#1484399)
+- Use HTTP-POST requests for actions that change state
+
+RELEASE 0.1-RC1
+---------------
+- Use global filters and bind username/ for Ldap searches (#1484159)
+- Hide quota display if imap server does not support it
+- Hide address groups if no LDAP servers configured
+- Add link to message subjects (closes #1484257)
+- Better SQL query for contact listing/search (closes #1484369)
+- Fixed marking as read in preview pane (closes #1484364)
+- CSS hack to display attachments correctly in IE6
+- Wrap message body text (closes #1484148)
+- LDAP access is back in address book (closes #1484087)
+- Added search function for contacts
+- New Template parsing and output encoding
+- Fixed bugs #1484119 and #1483978
+- Fixed message moving procedure (closes #1484308)
+- Fixed display of multiple attachments (closes #1466563)
+- Fixed check for new messages (closes #1484310)
+- List attachments without filename
+- New session authentication: Change sessid cookie when login, authentication with sessauth cookie is now configurable.
+  Should close bugs #1483951 and #1484299
+- Correctly translate mailbox names (closes #1484276)
+- Quote e-mail address links (closes #1484300)
+- Updated PEAR::Mail_mime package
+- Accept single quotes for HTML attributes when modifying message body (thanks Jason)
+- Sanitize input for new users/identities (thanks Colin Alston)
+- Don't download HTML message parts
+- Convert HTML parts to plaintext if 'prefer_html' is off
+- Correctly parse message/rfc822 parts (closes #1484045)
+- Also use user_id for unique key in messages table (closes #1484074)
+- Hide contacts drop down on blur (closes #1484203)
+- Make entries in contacts drop down clickable
+- Turn off browser autocompletion on login page
+- Quote <? in text/html message parts
+- Hide border around radio buttons
+- Applied patch for attachment download by crichardson (closes #1484198)
+- Fixed bug in Postgres DB handling (closes #1484068)
+- Fixed bug of invalid calls to fetchRow() in rcube_db.inc (closes #1484280)
+- Fixed array_merge bug (closes #1484281)
+- Fixed flag for deletion in list view (closes #1484264)
+- Finally support semicolons as recipient separator (closes ##1484251)
+- Fixed message headers (subject) encoding
+- check if safe mode is on or not (closes #1484269)
+- Show "no subject" in message list if subject is missing (closes #1484243)
+- Solved page caching of message preview (closes #1484153)
+- Only use gzip compression if configured (closes #1484236)
+- Fixed priority selector issue (#1484150)
+- Fixed some CSS issues in default skin (closes #1484210 and #1484161)
+- Prevent from double quoting of numeric HTML character references (closes #1484253)
+- Fixed display of HTML message attachments (closes #1484178)
+- Applied patch for preview caching (closes #1484186)
+- Added error handling for attachment uploads
+- Use multibyte safe string functions where necessary (closes #1483988)
+- Applied security patch to validate the submitted host value (by Kees Cook)
+- Applied security patch to validate input values when deleting contacts (by Kees Cook)
+- Applied security patch that sanitizes emoticon paths when attaching them (by Kees Cook)
+- Applied a patch to more aggressively sanitize a HTML message
+- Visualize blocked images in HTML messages
+- Fixed wrong message listing when showing search results (closes #1484131)
+- Show remote images when opening HTML message part as attachment
+- Improve memory usage when sending mail (closes #1484098)
+- Mark messages as read once the preview is loaded (closes #1484132)
+- Include smtp final response in log (closes #1484081)
+- Corrected date string in sent message header (closes #1484125)
+- Correclty choose "To" column in sent and draft mailboxes (closes #1483943)
+- Changed srong tooltips for message browse buttons (closes #1483930)
+- Fixed signature delimeter character to be standard (Bug #1484035)
+- Fixed XSS vulnerability (Bug #1484109)
+- Remove newlines from mail headers (Bug #1484031)
+- Selection issues when moving/deleting (Bug #1484044)
+- Applied patch of Clement Moulin for imap host auto-selection
+- ISO-encode IMAP password for plaintext login (Bugs #1483977 & #1483886)
+- Fixed folder name encoding in subscription list (Bug #1484113)
+- Fixed JS errors in identity list (Bug #1484120)
+- Translate foldernames in folder form (closes #1484113)
+- Added first and last buttons to message list, address book
+  and message detail
+- Pressing Shift-Del bypasses Trash folder
+- Enable purge command for Junk folder
+- Fetch all aliases if virtuser_query is used instead
+- Re-enabled multi select of contacts (Bug #1484017)
+- Enable contact editing right after creation (Bug #1459641)
+- Correct UTF-7 to UTF-8 conversion if mbstring is not available
+- Fixed IMAP fetch of message body (Bug #1484019)
+- Fixed safe_mode problems (Bug #1418381)
+- Fixed wrong header encoding (Bug #1483976)
+- Made automatic draft saving configurable
+- Fixed JS bug when renaming folders (Bug #1483989)
+- Added quota display as image (by Brett Patterson)
+- Corrected creation of a message-id
+- New indentation for quoted message text
+- Improved HTML validity
+- Fixed URL character set (Ticket #1445501)
+- Fixed saving of contact into MySQL from LDAP query results (Ticket #1483820)
+- Fixed folder renaming: unsubscribe before rename (Bug #1483920)
+- Finalized new message parsing (+ chaching)
+- Fixed wrong usage of mbstring (Bug #1462439)
+- Set default spelling language (Ticket #1483938)
+- Added support for Nox Spell Server
+- Re-built message parsing (Bug #1327068)
+  Now based on the message structure delivered by the IMAP server.
+- Fixed some XSS and SQL injection issues
+- Fixed charset problems with folder renaming
diff --git a/INSTALL b/INSTALL
index 3fc6f5dfef03db456be5b70ead9a7105a6dbacd9..c2cb29c0fdf43550d1eb0811c927d69f2fb0b5df 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -13,17 +13,15 @@ REQUIREMENTS
 * .htaccess support allowing overrides for DirectoryIndex
 * PHP Version 5.2.1 or greater including
    - PCRE, DOM, JSON, XML, Session, Sockets (required)
-   - Libiconv
-   - Multibyte String (mbstring)
-   - Mcrypt (supporting Triple DES)
-   - Fileinfo (optional)
-   - Database driver for either MySQL, Postgres or SQLite
-* The PEAR framework with the following packages installed:
+   - libiconv (recommended)
+   - mbstring, fileinfo, mcrypt (optional)
+* PEAR packages distributed with Roundcube or external:
    - MDB2 2.5.0 or newer
    - Mail_Mime 1.8.1 or newer
+   - Mail_mimeDecode 1.5.5 or newer
    - Net_SMTP 1.4.2 or newer
    - Net_IDNA2 0.1.1 or newer
-   - Auth_SASL 1.0.3 or newer
+   - Auth_SASL 1.0.6 or newer
 * php.ini options (see .htaccess file):
    - error_reporting E_ALL & ~E_NOTICE (or lower)
    - memory_limit > 16MB (increase as suitable to support large attachments)
@@ -33,6 +31,7 @@ REQUIREMENTS
    - suhosin.session.encrypt disabled
    - mbstring.func_overload disabled
    - magic_quotes_runtime disabled
+   - magic_quotes_sybase disabled
 * PHP compiled with OpenSSL to connect to IMAPS and to use the spell checker
 * A MySQL (4.0.8 or newer), PostgreSQL, MSSQL database engine
   or the SQLite extension for PHP
diff --git a/INSTALL.orig b/INSTALL.orig
deleted file mode 100644 (file)
index 493baf7..0000000
+++ /dev/null
@@ -1,233 +0,0 @@
-INTRODUCTION
-============
-
-This file describes the basic steps to install Roundcube Webmail on your
-web server. For additional information, please also consult the project's
-wiki page at http://trac.roundcube.net/wiki
-
-
-REQUIREMENTS
-============
-
-* The Apache, Lighttpd, Cherokee or Hiawatha web server
-* .htaccess support allowing overrides for DirectoryIndex
-* PHP Version 5.2.1 or greater including
-   - PCRE, DOM, JSON, XML, Session, Sockets (required)
-   - libiconv (recommended)
-   - mbstring, fileinfo, mcrypt (optional)
-* PEAR packages distributed with Roundcube or external:
-   - MDB2 2.5.0 or newer
-   - Mail_Mime 1.8.1 or newer
-   - Net_SMTP 1.4.2 or newer
-   - Net_IDNA2 0.1.1 or newer
-   - Auth_SASL 1.0.3 or newer
-* php.ini options (see .htaccess file):
-   - error_reporting E_ALL & ~E_NOTICE (or lower)
-   - memory_limit > 16MB (increase as suitable to support large attachments)
-   - file_uploads enabled (for attachment upload features)
-   - session.auto_start disabled
-   - zend.ze1_compatibility_mode disabled
-   - suhosin.session.encrypt disabled
-   - mbstring.func_overload disabled
-   - magic_quotes_runtime disabled
-* PHP compiled with OpenSSL to connect to IMAPS and to use the spell checker
-* A MySQL (4.0.8 or newer), PostgreSQL, MSSQL database engine
-  or the SQLite extension for PHP
-* One of the above databases with permission to create tables
-* An SMTP server (recommended) or PHP configured for mail delivery
-
-
-INSTALLATION
-============
-
-1. Decompress and put this folder somewhere inside your document root
-2. Make sure that the following directories (and the files within)
-   are writable by the webserver
-   - /temp
-   - /logs
-3. Create a new database and a database user for Roundcube (see DATABASE SETUP)
-4. Point your browser to http://url-to-roundcube/installer/
-5. Follow the instructions of the install script (or see MANUAL CONFIGURATION)
-6. After creating and testing the configuration, remove the installer directory
-7. Done!
-
-
-CONFIGURATION HINTS
-===================
-
-Roundcube writes internal errors to the 'errors' log file located in the logs
-directory which can be configured in config/main.inc.php. If you want ordinary
-PHP errors to be logged there as well, enable the 'php_value error_log' line
-in the .htaccess file and set the path to the log file accordingly.
-
-By default the session_path settings of PHP are not modified by Roundcube.
-However if you want to limit the session cookies to the directory where
-Roundcube resides you can uncomment and configure the according line
-in the .htaccess file.
-
-
-DATABASE SETUP
-==============
-
-Note: Database for Roundcube must use UTF-8 character set.
-
-* MySQL
--------
-Setting up the mysql database can be done by creating an empty database,
-importing the table layout and granting the proper permissions to the
-roundcube user. Here is an example of that procedure:
-
-# mysql
-> CREATE DATABASE roundcubemail /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
-> GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost
-    IDENTIFIED BY 'password';
-> quit
-
-# mysql roundcubemail < SQL/mysql.initial.sql
-
-Note 1: 'password' is the master password for the roundcube user. It is strongly
-recommended you replace this with a more secure password. Please keep in
-mind: You need to specify this password later in 'config/db.inc.php'.
-
-
-* SQLite
---------
-You need sqlite 2 (preferably 2.8) to setup the sqlite db 
-(sqlite 3.x also doesn't work at the moment). Here is
-an example how you can setup the sqlite.db for roundcube:
-
-# sqlite -init SQL/sqlite.initial.sql sqlite.db
-Loading resources from SQL/sqlite.initial.sql
-SQLite version 2.8.16
-Enter ".help" for instructions
-sqlite> .exit
-# chmod o+rw sqlite.db
-
-Make sure your configuration points to the sqlite.db file and that the
-webserver can write to the file and the directory containing the file.
-
-
-* PostgreSQL
-------------
-To use Roundcube with PostgreSQL support you have to follow these
-simple steps, which have to be done as the postgres system user (or
-which ever is the database superuser):
-
-$ createuser roundcube
-$ createdb -O roundcube -E UNICODE roundcubemail
-$ psql roundcubemail
-
-roundcubemail =# ALTER USER roundcube WITH PASSWORD 'the_new_password';
-roundcubemail =# \c - roundcube
-roundcubemail => \i SQL/postgres.initial.sql
-
-All this has been tested with PostgreSQL 8.x and 7.4.x. Older
-versions don't have a -O option for the createdb, so if you are
-using that version you'll have to change ownership of the DB later.
-
-
-Database cleaning
------------------
-Do keep your database slick and clean we recommend to periodically execute
-bin/cleandb.sh which finally removes all records that are marked as deleted.
-Best solution is to install a cronjob running this script daily.
-
-
-
-MANUAL CONFIGURATION
-====================
-
-First of all, rename the files config/*.inc.php.dist to config/*.inc.php.
-You can then change these files according to your environment and your needs.
-Details about the config parameters can be found in the config files.
-See http://trac.roundcube.net/wiki/Howto_Install for even more guidance.
-
-You can also modify the default .htaccess file. This is necessary to
-increase the allowed size of file attachments, for example:
-       php_value       upload_max_filesize     2M
-
-
-UPGRADING
-=========
-
-If you already have a previous version of Roundcube installed,
-please refer to the instructions in UPGRADING guide.
-
-
-OPTIMISING
-==========
-
-There are two forms of optimisation here, compression and caching, both aimed
-at increasing an end user's experience using Roundcube Webmail. Compression
-allows the static web pages to be delivered with less bandwidth. The index.php
-of Roundcube Webmail already enables compression on its output. The settings
-below allow compression to occur for all static files. Caching sets HTTP 
-response headers that enable a user's web client to understand what is static
-and how to cache it.
-
-The caching directives used are:
- * Etags - sets at tag so the client can request is the page has changed
- * Cache-control - defines the age of the page and that the page is 'public'
-   This enables clients to cache javascript files that don't have private 
-   information between sessions even if using HTTPS. It also allows proxies
-   to share the same cached page between users.
- * Expires - provides another hint to increase the lifetime of static pages.
-
-For more information refer to RFC 2616.
-
-Side effects:
--------------
-These directives are designed for production use. If you are using this in
-a development environment you may get horribly confused if your webclient
-is caching stuff that you changed on the server. Disabling the expires 
-parts below should save you some grief.
-
-If you are changing the skins, it is recommended that you copy content to 
-a different directory apart from 'default'.
-
-Apache:
--------
-To enable these features in apache the following modules need to be enabled:
- * mod_deflate
- * mod_expires
- * mod_headers
-
-The optimisation is already included in the .htaccess file in the top 
-directory of your installation.
-
-If you are using Apache version 2.2.9 and later, in the .htaccess file
-change the 'append' word to 'merge' for a more correct response. Keeping
-as 'append' shouldn't cause any problems though changing to merge will 
-eliminate the possibility of duplicate 'public' headers in Cache-control.
-
-Lighttpd:
----------
-With Lightty the addition of Expire: tags by mod_expire is incompatible with
-the addition of "Cache-control: public". Using Cache-control 'public' is 
-used below as it is assumed to give a better caching result.
-
-Enable modules in server.modules:
-    "mod_setenv"
-    "mod_compress"
-
-Mod_compress is a server side cache of compressed files to improve its performance.
-
-$HTTP["host"] == "www.example.com" {
-
-    static-file.etags = "enable"
-    # http://redmine.lighttpd.net/projects/lighttpd/wiki/Etag.use-mtimeDetails
-    etag.use-mtime = "enable"
-
-    # http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ModSetEnv
-    $HTTP["url"] =~ "^/roundcubemail/(plugins|skins|program)" {
-        setenv.add-response-header  = ( "Cache-Control" => "public, max-age=2592000")
-    }
-
-    # http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ModCompress
-    # set compress.cache-dir to somewhere outside the docroot.
-    compress.cache-dir   = var.statedir + "/cache/compress"
-
-    compress.filetype = ("text/plain", "text/html", "text/javascript", "text/css", "text/xml", "image/gif", "image/png")
-}
-
-
diff --git a/LICENSE b/LICENSE
index d511905c1647a1e311e8b20d5930a37a9c2531cd..94a9ed024d3859793618152ea559a168bbcbb5e2 100644 (file)
--- a/LICENSE
+++ b/LICENSE
-                   GNU GENERAL PUBLIC LICENSE
-                      Version 2, June 1991
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
 
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
  Everyone is permitted to copy and distribute verbatim copies
  of this license document, but changing it is not allowed.
 
-                           Preamble
+                            Preamble
 
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.)  You can apply it to
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
 your programs, too.
 
   When we speak of free software, we are referring to freedom, 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 or use pieces of it
-in new free programs; and that you know you can do these things.
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
 
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
 
   For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
 
   The precise terms and conditions for copying, distribution and
 modification follow.
 
-                   GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-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 give any other recipients of the Program a copy of this License
-along with the Program.
-
-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 Program or any portion
-of it, thus forming a work based on the Program, 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) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-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 Program, 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 Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) 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; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, 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 executable.  However, as a
-special exception, the source code 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.
-
-If distribution of executable or 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 counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program 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.
-
-  5. 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 Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program 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 to
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
 this License.
 
-  7. 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
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If 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 Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program 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 Program.
-
-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.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program 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.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU 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 Program
-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 Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, 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
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "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 PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. 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 PROGRAM 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 PROGRAM (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 PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), 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 Programs
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "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 PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM 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 PROGRAM (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 PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
 
   If you develop a new program, and you want it to be of the greatest
 possible use to the public, the best way to achieve this is to make it
@@ -287,15 +628,15 @@ free software which everyone can redistribute and change under these terms.
 
   To do so, attach the following notices to the program.  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
+state 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 program's name and a brief idea of what it does.>
     Copyright (C) <year>  <name of author>
 
-    This program is free software; you can redistribute it and/or modify
+    This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
+    the Free Software Foundation, either version 3 of the License, or
     (at your option) any later version.
 
     This program is distributed in the hope that it will be useful,
@@ -303,37 +644,31 @@ the "copyright" line and a pointer to where the full notice is found.
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     GNU General Public License for more details.
 
-    You should have received a copy of the GNU General Public License along
-    with this program; if not, write to the Free Software Foundation, Inc.,
-    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 Also add information on how to contact you by electronic and paper mail.
 
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
 
-    Gnomovision version 69, Copyright (C) year name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
     This is free software, and you are welcome to redistribute it
     under certain conditions; type `show c' for details.
 
 The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/README b/README
deleted file mode 100644 (file)
index 3af0a1f..0000000
--- a/README
+++ /dev/null
@@ -1,60 +0,0 @@
-Roundcube Webmail (http://roundcube.net)
-
-
-Introduction:
--------------
-Roundcube Webmail is a browser-based multilingual IMAP client with an
-application-like user interface. It provides full functionality you expect
-from an e-mail client, including MIME support, address book, folder management,
-message searching and spell checking. Roundcube Webmail is written in PHP and
-requires the MySQL, PostgreSQL or SQLite database. With its plugin API it is
-easily extendable and the user interface is fully customizable using skins
-which are pure XHTML and CSS 2.
-
-This project includes other open-source classes/libraries from PEAR
-(http://pear.php.net), an IMAP library derived from IlohaMail
-the TinyMCE rich text editor, Googiespell library for spell checking
-or the HTML sanitizer by Frederic Motte.
-
-The current default skin uses icons designed by Stephen Horlander and Kevin 
-Gerich for Mozilla.org.
-
-
-Installation:
--------------
-For detailed instructions on how to install Roundcube webmail on your server,
-please refer to the INSTALL document in the same directory as this document.
-Please carefully read the REQUIREMENTS section of the INSTALL instructions.
-
-If you're updating an older version of Roundcube please follow the steps
-described in the UPGRADING file.
-
-
-Licensing:
-----------
-This product is distributed under the GNU General Public License Version 2.
-Please read through the file LICENSE for more information about our license.
-
-Even if skins might contain some programming work, they are not considered
-as a linked part of the application and therefore skins DO NOT fall under
-the provisions of the GPL license. See the README file located in the skins
-folder for details on the skin license.
-
-
-Contribution:
--------------
-Want to help make Roundcube the best webmail solution ever?
-Roundcube is open source software. Our developers and contributors all
-are volunteers and we're always looking for new additions and resources.
-For more information visit http://roundcube.net/contribute
-
-
-Contact:
---------
-For any bug reports or feature requests please refer to the tracking system
-at trac.roundcube.net (http://trac.roundcube.net/wiki/Howto_ReportIssues) or 
-subscribe to our mailing list. See http://roundcube.net/support
-for details.
-
-You're always welcome to send a message to the project admin:
-hello@roundcube.net
diff --git a/README.md b/README.md
new file mode 100644 (file)
index 0000000..b6c3811
--- /dev/null
+++ b/README.md
@@ -0,0 +1,93 @@
+Roundcube Webmail 
+=================
+[roundcube.net](http://roundcube.net)
+
+
+INTRODUCTION
+------------
+Roundcube Webmail is a browser-based multilingual IMAP client with an
+application-like user interface. It provides full functionality you expect
+from an email client, including MIME support, address book, folder management,
+message searching and spell checking. Roundcube Webmail is written in PHP and
+requires the MySQL, PostgreSQL or SQLite database. With its plugin API it is
+easily extendable and the user interface is fully customizable using skins
+which are pure XHTML and CSS 2.
+
+The code is mainly written in PHP and is designed to run on a webserver.
+It includes other open-source classes/libraries from [PEAR][pear],
+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.
+
+
+INSTALLATION
+------------
+For detailed instructions on how to install Roundcube webmail on your server,
+please refer to the INSTALL document in the same directory as this document.
+
+If you're updating an older version of Roundcube please follow the steps
+described in the UPGRADING file.
+
+
+LICENSE
+-------
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License (**with exceptions
+for skins & plugins**) as published by the Free Software Foundation,
+either version 3 of the License, or (at your option) any later version.
+
+This program 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see [www.gnu.org/licenses/][gpl].
+
+This file forms part of the Roundcube Webmail Software for which the
+following exception is added: Plugins and Skins which merely make
+function calls to the Roundcube Webmail Software, and for that purpose
+include it by reference shall not be considered modifications of
+the software.
+
+If you wish to use this file in another project or create a modified
+version that will not be part of the Roundcube Webmail Software, you
+may remove the exception above and use this source code under the
+original version of the license.
+
+For more details about licensing and the exceptions for skins and plugins
+see [roundcube.net/license][license]
+
+
+CONTRIBUTION
+------------
+Want to help make Roundcube the best webmail solution ever?
+Roundcube is open source software. Our developers and contributors all
+are volunteers and we're always looking for new additions and resources.
+For more information visit [roundcube.net/contribute][contrib]
+
+
+CONTACT
+-------
+For any bug reports or feature requests please refer to the tracking system
+at [trac.roundcube.net][tracreport] or subscribe to our mailing list.
+See [roundcube.net/support][support] for details.
+
+You're always welcome to send a message to the project admin:
+hello(at)roundcube(dot)net
+
+
+[pear]:         http://pear.php.net
+[iloha]:        http://sourceforge.net/projects/ilohamail/
+[tinymce]:      http://www.tinymce.com/
+[googiespell]:  http://orangoo.com/labs/GoogieSpell/
+[washtml]:      http://www.ubixis.com/washtml/
+[kmgerich]:     http://kmgerich.com/
+[gpl]:          http://www.gnu.org/licenses/
+[license]:      http://roundcube.net/license
+[contrib]:      http://roundcube.net/contribute
+[support]:      http://roundcube.net/support
+[tracreport]:   http://trac.roundcube.net/wiki/Howto_ReportIssues
index 72c24f1269cf20888c524ebfca695e3e084cf966..2ac6aa63ecd033eb5450c0365f50cbfd5451be75 100644 (file)
@@ -40,7 +40,7 @@ CREATE TABLE [dbo].[contacts] (
        [changed] [datetime] NOT NULL ,\r
        [del] [char] (1) COLLATE Latin1_General_CI_AI NOT NULL ,\r
        [name] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,\r
-       [email] [text] COLLATE Latin1_General_CI_AI NOT NULL ,\r
+       [email] [varchar] (8000) COLLATE Latin1_General_CI_AI NOT NULL ,\r
        [firstname] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,\r
        [surname] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,\r
        [vcard] [text] COLLATE Latin1_General_CI_AI NULL ,\r
index d4a5e41ce7108a6594d34820abbba77b1116f875..d111ef3e794ebb66e52da9ae7a56ffe2d28e0ab1 100644 (file)
@@ -246,6 +246,19 @@ GO
 \r
 -- Updates from version 0.7\r
 \r
+ALTER TABLE [dbo].[contacts] DROP CONSTRAINT [DF_contacts_email]\r
+GO\r
 ALTER TABLE [dbo].[contacts] ALTER COLUMN [email] [text] COLLATE Latin1_General_CI_AI NOT NULL\r
 GO\r
+ALTER TABLE [dbo].[contacts] ADD CONSTRAINT [DF_contacts_email] DEFAULT ('') FOR [email]\r
+GO\r
+\r
+-- Updates from version 0.8-rc\r
 \r
+ALTER TABLE [dbo].[contacts] DROP CONSTRAINT [DF_contacts_email]\r
+GO\r
+ALTER TABLE [dbo].[contacts] ALTER COLUMN [email] [varchar] (8000) COLLATE Latin1_General_CI_AI NOT NULL\r
+GO\r
+ALTER TABLE [dbo].[contacts] ADD CONSTRAINT [DF_contacts_email] DEFAULT ('') FOR [email]\r
+GO\r
+\r
\ No newline at end of file
index 177ba936bcd3d4204e03074cdb41def29b1c5549..300ceb59df47c15b9d4285968bded101fd36f8f1 100644 (file)
@@ -147,6 +147,8 @@ TRUNCATE TABLE `cache`;
 
 -- Updates from version 0.6
 
+/*!40014 SET FOREIGN_KEY_CHECKS=0 */;
+
 ALTER TABLE `users` CHANGE `alias` `alias` varchar(128) BINARY NOT NULL;
 ALTER TABLE `users` CHANGE `username` `username` varchar(128) BINARY NOT NULL;
 
@@ -209,6 +211,8 @@ CREATE TABLE `cache_messages` (
  PRIMARY KEY (`user_id`, `mailbox`, `uid`)
 ) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
 
+/*!40014 SET FOREIGN_KEY_CHECKS=1 */;
+
 -- Updates from version 0.7-beta
 
 ALTER TABLE `session` CHANGE `sess_id` `sess_id` varchar(128) NOT NULL;
index ce951d1147cff891b2cdd1ab78cdf0d587ca1151..babe168aab7e1078adb2d3538614ad5ae693a782 100644 (file)
--- a/UPGRADING
+++ b/UPGRADING
@@ -32,17 +32,18 @@ it on a unix system, you need to do the following operations by hand:
    - ./bin/
    - ./SQL/
    - ./program/
-   - ./installer/
-   - ./skins/default/
-   - ./plugins/
-2. Run ./bin/update.sh from the commandline OR
+2. rsync the contents of the following folders from your installation
+   directory into the target folder:
+   ./skins/
+   ./plugins/
+3. Run ./bin/update.sh from the commandline OR
    open http://url-to-roundcube/installer/ in a browser and choose "3 Test config".
    To enable the latter one, you have to temporary set 'enable_installer'
    to true in your local config/main.inc.php file.
-3. Let the update script/installer check your configuration and
+4. Let the update script/installer check your configuration and
    update your config files and database schema as suggested by the updater.
-4. Make sure 'enable_installer' is set to false again.
-5. See Post-Upgrade Activities section.
+5. Make sure 'enable_installer' is set to false again.
+6. See Post-Upgrade Activities section.
 
 
 Post-Upgrade Activities
index a1b38d05526ab19c502765a917bb960b51060407..174cbb1f508efb5520d90af1a9482b9ad220571f 100755 (executable)
@@ -7,7 +7,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2010, The Roundcube Dev Team                            |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Finally remove all db records marked as deleted some time ago       |
@@ -16,7 +19,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: cleandb.sh 4677 2011-04-20 13:10:45Z alec $
+ $Id$
 
 */
 
index 75269ef436e0726cbd14ea474bc9c2d043802fd2..d257f9bb49a863a65b28a5d359f41177848f44c9 100755 (executable)
@@ -7,7 +7,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2009, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Decrypt the encrypted parts of the HTTP Received: headers           |
@@ -16,7 +19,7 @@
  | Author: Tomas Tevesz <ice@extreme.hu>                                 |
  +-----------------------------------------------------------------------+
 
- $Id: decrypt.sh 4677 2011-04-20 13:10:45Z alec $
+ $Id$
 */
 
 /*-
diff --git a/bin/dumpschema.sh b/bin/dumpschema.sh
deleted file mode 100755 (executable)
index 9240bf3..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-#!/usr/bin/env php
-<?php
-/*
-
- +-----------------------------------------------------------------------+
- | bin/dumpschema.sh                                                     |
- |                                                                       |
- | This file is part of the Roundcube Webmail client                     |
- | Copyright (C) 2005-2009, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
- |                                                                       |
- | PURPOSE:                                                              |
- |   Dumps database schema in XML format using MDB2_Schema               |
- |                                                                       |
- +-----------------------------------------------------------------------+
- | Author: Thomas Bruederli <roundcube@gmail.com>                        |
- +-----------------------------------------------------------------------+
-
- $Id: dumpschema.sh 4677 2011-04-20 13:10:45Z alec $
-
-*/
-
-define('INSTALL_PATH', realpath(dirname(__FILE__) . '/..') . '/' );
-
-require INSTALL_PATH.'program/include/clisetup.php';
-
-/** callback function for schema dump **/
-function print_schema($dump)
-{
-       foreach ((array)$dump as $part)
-               echo $dump . "\n";
-}
-
-$config = new rcube_config();
-
-// don't allow public access if not in devel_mode
-if (!$config->get('devel_mode') && $_SERVER['REMOTE_ADDR']) {
-       header("HTTP/1.0 401 Access denied");
-       die("Access denied!");
-}
-
-$options = array(
-       'use_transactions' => false,
-       'log_line_break' => "\n",
-       'idxname_format' => '%s',
-       'debug' => false,
-       'quote_identifier' => true,
-       'force_defaults' => false,
-       'portability' => false,
-);
-
-$dsnw = $config->get('db_dsnw');
-$dsn_array = MDB2::parseDSN($dsnw);
-
-// set options for postgres databases
-if ($dsn_array['phptype'] == 'pgsql') {
-       $options['disable_smart_seqname'] = true;
-       $options['seqname_format'] = '%s';
-}
-
-$schema =& MDB2_Schema::factory($dsnw, $options);
-$schema->db->supported['transactions'] = false;
-
-
-// send as text/xml when opened in browser
-if ($_SERVER['REMOTE_ADDR'])
-       header('Content-Type: text/xml');
-
-
-if (PEAR::isError($schema)) {
-       $error = $schema->getMessage() . ' ' . $schema->getUserInfo();
-}
-else {
-       $dump_config = array(
-               // 'output_mode' => 'file',
-               'output' => 'print_schema',
-       );
-       
-       $definition = $schema->getDefinitionFromDatabase();
-       $definition['charset'] = 'utf8';
-
-       if (PEAR::isError($definition)) {
-               $error = $definition->getMessage() . ' ' . $definition->getUserInfo();
-       }
-       else {
-               $operation = $schema->dumpDatabase($definition, $dump_config, MDB2_SCHEMA_DUMP_STRUCTURE);
-               if (PEAR::isError($operation)) {
-                       $error = $operation->getMessage() . ' ' . $operation->getUserInfo();
-               }
-       }
-}
-
-$schema->disconnect();
-
-if ($error && !$_SERVER['REMOTE_ADDR'])
-       fputs(STDERR, $error);
-
-?>
diff --git a/bin/exportgettext.sh b/bin/exportgettext.sh
new file mode 100755 (executable)
index 0000000..c1e6302
--- /dev/null
@@ -0,0 +1,236 @@
+#!/usr/bin/env php
+<?php
+/*
+
+ +-----------------------------------------------------------------------+
+ | bin/exportgettext.sh                                                  |
+ |                                                                       |
+ | This file is part of the Roundcube Webmail client                     |
+ | Copyright (C) 2011, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ | PURPOSE:                                                              |
+ |   Export PHP-based localization files to PO files for gettext         |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas Bruederli <roundcube@gmail.com>                        |
+ +-----------------------------------------------------------------------+
+
+ $Id$
+
+*/
+
+define('INSTALL_PATH', realpath(dirname(__FILE__) . '/..') . '/' );
+require INSTALL_PATH.'program/include/clisetup.php';
+
+if ($argc < 2) {
+       die("Usage: " . basename($argv[0]) . " SRCDIR DESTDIR\n");
+}
+
+$srcdir = unslashify(realpath($argv[1]));
+$destdir = unslashify($argv[2]);
+$layout = 'launchpad';  # or 'narro';
+$langcode_map = array(
+       'hy_AM' => 'hy',
+       'ar_SA' => 'ar',
+       'az_AZ' => 'az',
+       'bg_BG' => 'bg',
+       'bs_BA' => 'bs',
+       'ca_ES' => 'ca',
+       'cs_CZ' => 'cs',
+       'cy_GB' => 'cy',
+       'da_DK' => 'da',
+       'et_EE' => 'et',
+       'el_GR' => 'el',
+       'eu_ES' => 'eu',
+       'fa_IR' => 'fa',
+       'ga_IE' => 'ga',
+       'ka_GE' => 'ka',
+       'gl_ES' => 'gl',
+       'he_IL' => 'he',
+       'hi_IN' => 'hi',
+       'hr_HR' => 'hr',
+       'ja_JP' => 'ja',
+       'ko_KR' => 'ko',
+       'km_KH' => 'km',
+       'ms_MY' => 'ms',
+       'mr_IN' => 'mr',
+       'pl_PL' => 'pl',
+       'si_LK' => 'si',
+       'sl_SI' => 'sl',
+       'sq_AL' => 'sq',
+       'sr_CS' => 'sr',
+       'sv_SE' => 'sv',
+       'uk_UA' => 'uk',
+       'vi_VN' => 'vi',
+);
+
+
+// converting roundcube localization dir
+if (is_dir($srcdir.'/en_US')) {
+       load_en_US($srcdir.'/en_US');
+       
+       foreach (glob($srcdir.'/*') as $locdir) {
+               if (is_dir($locdir)) {
+                       $lang = basename($locdir);
+                       //echo "$locdir => $destdir$lang\n";
+                       convert_dir($locdir, $destdir . ($layout != 'launchpad' ? $lang : ''));
+               }
+       }
+}
+// converting single localization directory
+else if (is_dir($srcdir)) {
+       if (is_file($srcdir.'/en_US.inc'))  // plugin localization
+               load_en_US($srcdir.'/en_US.inc');
+       else
+               load_en_US(realpath($srcdir.'/../en_US'));  // single language
+       convert_dir($srcdir, $destdir);
+}
+// converting a single file
+else if (is_file($srcdir)) {
+       //load_en_US();
+       convert_file($srcdir, $destdir);
+}
+
+
+/**
+ * Load en_US localization which is used to build msgids
+ */
+function load_en_US($fn)
+{
+       $texts = array();
+       
+       if (is_dir($fn)) {
+               foreach (glob($fn.'/*.inc') as $ifn) {
+                       include($ifn);
+                       $texts = array_merge($texts, (array)$labels, (array)$messages);
+               }
+       }
+       else if (is_file($fn)) {
+               include($fn);
+               $texts = array_merge($texts, (array)$labels, (array)$messages);
+       }
+       
+       $GLOBALS['en_US'] = $texts;
+}
+
+/**
+ * Convert all .inc files in the given src directory
+ */
+function convert_dir($indir, $outdir)
+{
+       global $layout;
+       
+       if (!is_dir($outdir))  // attempt to create destination dir
+               mkdir($outdir, 0777, true);
+
+       foreach (glob($indir.'/*.inc') as $fn) {
+               $filename = basename($fn);
+
+               // create subdir for each template (launchpad rules)
+               if ($layout == 'launchpad' && preg_match('/^(labels|messages)/', $filename, $m)) {
+                       $lang = end(explode('/', $indir));
+                       $destdir = $outdir . '/' . $m[1];
+                       if (!is_dir($destdir))
+                               mkdir($destdir, 0777, true);
+                       $outfn = $destdir . '/' . $lang . '.po';
+               }
+               else {
+                       $outfn = $outdir . '/' . preg_replace('/\.[a-z0-9]+$/i', '', basename($fn)) . '.po';
+               }
+
+               convert_file($fn, $outfn);
+       }
+}
+
+/**
+ * Convert the given Roundcube localization file into a gettext .po file
+ */
+function convert_file($fn, $outfn)
+{
+       global $layout, $langcode_map;
+
+       $basename =  basename($fn);
+       $srcname = str_replace(INSTALL_PATH, '', $fn);
+       $product = preg_match('!plugins/(\w+)!', $srcname, $m) ? 'roundcube-plugin-' . $m[1] : 'roundcubemail';
+       $lang = preg_match('!/([a-z]{2}(_[A-Z]{2})?)[./]!', $outfn, $m) ? $m[1] : '';
+       $labels = $messages = $seen = array();
+
+       if (is_dir($outfn))
+               $outfn .= '/' . $basename . '.po';
+
+       // launchpad requires the template file to have the same name as the directory
+       if (strstr($outfn, '/en_US') && $layout == 'launchpad') {
+               $a = explode('/', $outfn);
+               array_pop($a);
+               $templ = end($a);
+               $a[] = $templ . '.pot';
+               $outfn = join('/', $a);
+               $is_pot = true;
+       }
+       // launchpad is very picky about file names
+       else if ($layout == 'launchpad' && preg_match($regex = '!/([a-z]{2})_([A-Z]{2})!', $outfn, $m)) {
+               if ($shortlang = $langcode_map[$lang])
+                       $outfn = preg_replace($regex, '/'.$shortlang, $outfn);
+               else if ($m[1] == strtolower($m[2]))
+                       $outfn = preg_replace($regex, '/\1', $outfn);
+       }
+
+       include($fn);
+       $texts = array_merge($labels, $messages);
+       
+       // write header
+       $header = <<<EOF
+# Converted from Roundcube PHP localization files
+# Copyright (C) 2011 The Roundcube Dev Team
+# This file is distributed under the same license as the Roundcube package.
+#
+#: %s
+msgid ""
+msgstr ""
+"Project-Id-Version: %s\\n"
+"Report-Msgid-Bugs-To: \\n"
+"%s: %s\\n"
+"Last-Translator: \\n"
+"Language-Team: Translations <hello@roundcube.net>\\n"
+"Language: %s\\n"
+"Content-Type: text/plain; charset=UTF-8\\n"
+"Content-Transfer-Encoding: 8bit\\n"
+EOF;
+       
+       $out = sprintf($header, $srcname, $product, $is_pot ? "POT-Creation-Date" : "PO-Revision-Date", date('c'), $shortlang ? $shortlang : $lang);
+       $out .= "\n";
+       
+       $messages = array();
+       foreach ((array)$texts as $label => $msgstr) {
+               $msgid = $is_pot ? $msgstr : ($GLOBALS['en_US'][$label] ?: $label);
+               $messages[$msgid][] = $label;
+       }
+       
+       foreach ($messages as $msgid => $labels) {
+               $out .= "\n";
+               foreach ($labels as $label)
+                       $out .= "#: $srcname:$label\n";
+               $msgstr = $texts[$label];
+               $out .= 'msgid ' . gettext_quote($msgid) . "\n";
+               $out .= 'msgstr ' . gettext_quote(!$is_pot ? $msgstr : '') . "\n";
+       }
+
+       if ($outfn == '-')
+               echo $out;
+       else {
+               echo "$fn\t=>\t$outfn\n";
+               file_put_contents($outfn, $out);
+       }
+}
+
+function gettext_quote($str)
+{
+       $out = "";
+       $lines = explode("\n", wordwrap(stripslashes($str)));
+       $last = count($lines) - 1;
+       foreach ($lines as $i => $line)
+               $out .= '"' . addcslashes($line, '"') . ($i < $last ? ' ' : '') . "\"\n";
+       return rtrim($out);
+}
+
+?>
diff --git a/bin/importgettext.sh b/bin/importgettext.sh
new file mode 100755 (executable)
index 0000000..cda1f6e
--- /dev/null
@@ -0,0 +1,199 @@
+#!/usr/bin/env php
+<?php
+/*
+
+ +-----------------------------------------------------------------------+
+ | bin/importgettext.sh                                                  |
+ |                                                                       |
+ | This file is part of the Roundcube Webmail client                     |
+ | Copyright (C) 2011, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ | PURPOSE:                                                              |
+ |   Import localizations from gettext PO format                         |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas Bruederli <roundcube@gmail.com>                        |
+ +-----------------------------------------------------------------------+
+
+ $Id$
+
+*/
+
+define('INSTALL_PATH', realpath(dirname(__FILE__) . '/..') . '/' );
+require INSTALL_PATH.'program/include/clisetup.php';
+
+if ($argc < 2) {
+       die("Usage: " . basename($argv[0]) . " SRCDIR\n");
+}
+
+$srcdir = unslashify(realpath($argv[1]));
+
+if (is_dir($srcdir)) {
+       $out = import_dir($srcdir);
+}
+else if (is_file($srcdir)) {
+       $out = import_file($srcdir);
+}
+
+// write output files
+foreach ($out as $outfn => $texts) {
+       $lang = preg_match('!/([a-z]{2}(_[A-Z]{2})?)[./]!', $outfn, $m) ? $m[1] : '';
+       $varname = strpos($outfn, 'messages.inc') !== false ? 'messages' : 'labels';
+       
+       $header = <<<EOF
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/%s/%-51s|
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) %s, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: %-62s|
+ +-----------------------------------------------------------------------+
+*/
+
+$%s = array();
+
+EOF;
+
+    $author = preg_replace('/\s*<Unknown>/i', '', $texts['_translator']);
+       $output = sprintf($header, $lang, $varname.'.inc', date('Y'), $author, $varname);
+
+       foreach ($texts as $label => $value) {
+           if (is_array($value)) { var_dump($outfn, $label, $value); exit; }
+               if ($label[0] != '_' && strlen($value))
+                       $output .= sprintf("\$%s['%s'] = '%s';\n", $varname, $label, strtr(addcslashes($value, "'"), array("\r" => '', "\n" => '\n')));
+       }
+
+       $output .= "\n";
+       $dir = dirname($outfn);
+       @mkdir($dir, 664, true);
+       if (file_put_contents($outfn, $output))
+               echo "-> $outfn\n";
+}
+
+
+/**
+ * Convert all .po files in the given src directory
+ */
+function import_dir($indir)
+{
+       $out = array();
+       foreach (glob($indir.'/*.po') as $fn) {
+               $out = array_merge_recursive($out, import_file($fn));
+       }
+       return $out;
+}
+
+/**
+ * Convert the given .po file into a Roundcube localization array
+ */
+function import_file($fn)
+{
+       $out = array();
+       $lines = file($fn);
+       $language = '';
+       $translator = '';
+
+       // get language code from file name
+       if (preg_match('/-([a-z_]+).po$/i', $fn, $m))
+         $language = expand_langcode($m[1]);
+
+       $is_header = true;
+       $msgid = null;
+       $msgstr = '';
+       $dests = array();
+       foreach ($lines as $i => $line) {
+               $line = trim($line);
+
+               // parse header
+               if ($is_header && $line[0] == '"') {
+                       list($key, $val) = explode(": ", preg_replace('/\\\n$/', '', trim($line, '"')), 2);
+                       switch (strtolower($key)) {
+                               case 'language':
+                                       $language = expand_langcode($val);
+                                       break;
+                               case 'last-translator':
+                                       $translator = $val;
+                                       break;
+                       }
+               }
+
+               // empty line
+               if ($line == '') {
+                       if ($msgid && $dests) {
+                               foreach ($dests as $dest) {
+                                       list($file, $label) = explode(':', $dest);
+                                       $out[$file][$label] = $msgstr;
+                               }
+                       }
+                       
+                       $msgid = null;
+                       $msgstr = '';
+                       $dests = array();
+               }
+
+               // meta line
+               if ($line[0] == '#') {
+                       $value = trim(substr($line, 2));
+                       if ($line[1] == ':')
+                               $dests[] = str_replace('en_US', $language, $value);
+               }
+               else if (strpos($line, 'msgid') === 0) {
+                       $msgid = gettext_decode(substr($line, 6));
+
+                       if (!empty($msgid))
+                               $is_header = false;
+               }
+               else if (strpos($line, 'msgstr') === 0) {
+                       $msgstr = gettext_decode(substr($line, 7));
+               }
+               else if ($msgid && $line[0] == '"') {
+                       $msgstr .= gettext_decode($line);
+               }
+               else if ($msgid !== null && $line[0] == '"') {
+                       $msgid .= gettext_decode($line);
+               }
+       }
+
+       if ($msgid && $dests) {
+               foreach ($dests as $dest) {
+                       list($file, $label) = explode(':', $dest);
+                       $out[$file][$label] = $msgstr;
+                       $out[$file]['_translator'] = $translator;
+               }
+       }
+       
+       return $language ? $out : array();
+}
+
+
+function gettext_decode($str)
+{
+       return stripslashes(trim($str, '"'));
+}
+
+/**
+ * Translate two-chars language codes to our internally used language identifiers
+ */
+function expand_langcode($lang)
+{
+       static $rcube_language_aliases, $rcube_languages;
+
+       if (!$rcube_language_aliases)
+               include(INSTALL_PATH . 'program/localization/index.inc');
+
+       if ($rcube_language_aliases[$lang])
+               return $rcube_language_aliases[$lang];
+       else if (strlen($lang) == 2 && !isset($rcube_languages[$lang]))
+               return strtolower($lang) . '_' . strtoupper($lang);
+       else
+               return $lang;
+}
+
+
+?>
index cbeffe96b5353814d5f5f37665ebd6c82bd7ba41..3f1e8119ae2c0a39719ac51819b686dcb74a47a3 100755 (executable)
@@ -7,7 +7,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2011, The Roundcube Dev Team                            |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Update the fulltext index for all contacts of the internal          |
@@ -16,7 +19,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: indexcontacts.sh 5307 2011-10-05 09:28:25Z alec $
+ $Id$
 
 */
 
index bcba57c7586422477d9959877ac7da4803e1d1ec..4107cf960fcb737b5a02e2994cedaf0a9542b34f 100755 (executable)
@@ -5,8 +5,11 @@
  | bin/installto.sh                                                      |
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
- | Copyright (C) 2011, The Roundcube Dev Team                            |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2012, 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:                                                              |
  |   Update an existing Roundcube installation with files from           |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: installto.sh 5311 2011-10-06 08:20:11Z thomasb $
+ $Id$
 
 */
 
@@ -44,20 +47,31 @@ $input = trim(fgets(STDIN));
 if (strtolower($input) == 'y') {
   $err = false;
   echo "Copying files to target location...";
-  foreach (array('program','installer','bin','SQL','plugins','skins/default') as $dir) {
+  foreach (array('program','installer','bin','SQL','plugins','skins') as $dir) {
     if (!system("rsync -avC " . INSTALL_PATH . "$dir/* $target_dir/$dir/")) {
       $err = true;
       break;
     }
   }
-  foreach (array('index.php','.htaccess','config/main.inc.php.dist','config/db.inc.php.dist','CHANGELOG','README','UPGRADING') as $file) {
+  foreach (array('index.php','.htaccess','config/main.inc.php.dist','config/db.inc.php.dist','CHANGELOG','README.md','UPGRADING','LICENSE') as $file) {
     if (!system("rsync -av " . INSTALL_PATH . "$file $target_dir/$file")) {
       $err = true;
       break;
     }
   }
   echo "done.\n\n";
-  
+
+  if (is_dir("$target_dir/skins/default")) {
+      echo "Removing old default skin...";
+      system("rm -rf $target_dir/skins/default $target_dir/plugins/jqueryui/themes/default");
+      foreach (glob(INSTALL_PATH . "plugins/*/skins") as $plugin_skin_dir) {
+          $plugin_skin_dir = preg_replace('!^.*' . INSTALL_PATH . '!', '', $plugin_skin_dir);
+          if (is_dir("$target_dir/$plugin_skin_dir/classic"))
+            system("rm -rf $target_dir/$plugin_skin_dir/default");
+      }
+      echo "done.\n\n";
+  }
+
   if (!$err) {
     echo "Running update script at target...\n";
     system("cd $target_dir && bin/update.sh --version=$oldversion");
diff --git a/bin/makedoc.sh b/bin/makedoc.sh
deleted file mode 100755 (executable)
index 40c75bf..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/sh
-
-TITLE="Roundcube Classes"
-PACKAGES="Core"
-
-INSTALL_PATH="`dirname $0`/.."
-PATH_PROJECT=$INSTALL_PATH/program/include
-PATH_DOCS=$INSTALL_PATH/doc/phpdoc
-BIN_PHPDOC="`/usr/bin/which phpdoc`"
-
-if [ ! -x "$BIN_PHPDOC" ]
-then
-  echo "phpdoc not found: $BIN_PHPDOC"
-  exit 1
-fi
-
-OUTPUTFORMAT=HTML
-CONVERTER=frames
-TEMPLATE=earthli
-PRIVATE=off
-
-# make documentation
-$BIN_PHPDOC -d $PATH_PROJECT -t $PATH_DOCS -ti "$TITLE" -dn $PACKAGES \
--o $OUTPUTFORMAT:$CONVERTER:$TEMPLATE -pp $PRIVATE
-
index 0aa33b5a85482f7710bc3732f76e276fa73f804f..c876f5f1010dedba44d9f481f046f8b85d34b385 100755 (executable)
@@ -30,12 +30,16 @@ function progress_update($pos, $max)
 function export_mailbox($mbox, $filename)
 {
        global $IMAP;
-       
-       $IMAP->set_mailbox($mbox);
-       
+
+       $IMAP->set_folder($mbox);
+
+    $index = $IMAP->index($mbox, null, 'ASC');
+    $count = $index->countMessages();
+    $index = $index->get();
+
        vputs("Getting message list of {$mbox}...");
-       vputs($IMAP->messagecount()." messages\n");
-       
+       vputs("$count messages\n");
+
        if ($filename)
        {
                if (!($out = fopen($filename, 'w')))
@@ -47,21 +51,20 @@ function export_mailbox($mbox, $filename)
        }
        else
                $out = STDOUT;
-       
-       for ($count = $IMAP->messagecount(), $i=1; $i <= $count; $i++)
+
+       for ($i = 0; $i < $count; $i++)
        {
-               $headers = $IMAP->get_headers($i, null, false);
-               $from = current($IMAP->decode_address_list($headers->from, 1, false));
-               
+               $headers = $IMAP->get_message_headers($index[$i]);
+               $from = current(rcube_mime::decode_address_list($headers->from, 1, false));
+
                fwrite($out, sprintf("From %s %s UID %d\n", $from['mailto'], $headers->date, $headers->uid));
-               fwrite($out, $IMAP->conn->fetchPartHeader($mbox, $i));
-               fwrite($out, $IMAP->conn->handlePartBody($mbox, $i));
+               fwrite($out, $IMAP->print_raw_body($headers->uid));
                fwrite($out, "\n\n\n");
-               
-               progress_update($i, $count);
+
+               progress_update($i+1, $count);
        }
        vputs("\ncomplete.\n");
-       
+
        if ($filename)
                fclose($out);
 }
@@ -114,9 +117,9 @@ $IMAP = new rcube_imap(null);
 if ($IMAP->connect($host, $args['user'], $args['pass'], $imap_port, $imap_ssl))
 {
        vputs("IMAP login successful.\n");
-       
+
        $filename = null;
-       $mailboxes = $args['mbox'] == '*' ? $IMAP->list_mailboxes(null) : array($args['mbox']);
+       $mailboxes = $args['mbox'] == '*' ? $IMAP->list_folders(null) : array($args['mbox']);
 
        foreach ($mailboxes as $mbox)
        {
@@ -124,7 +127,7 @@ if ($IMAP->connect($host, $args['user'], $args['pass'], $imap_port, $imap_ssl))
                        $filename = preg_replace('/\.[a-z0-9]{3,4}$/i', '', $args['file']) . asciiwords($mbox) . '.mbox';
                else if ($args['mbox'] == '*')
                        $filename = asciiwords($mbox) . '.mbox';
-                       
+
                if ($args['mbox'] == '*' && in_array(strtolower($mbox), array('junk','spam','trash')))
                        continue;
 
index 52ac637348be7316c455de11f0b43d7b71ae7884..9c71be2b7763f836b073b1dfe20ece82570c6f48 100755 (executable)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2010-2011, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Check local configuration and database schema after upgrading       |
@@ -111,6 +114,12 @@ if ($RCI->configured) {
         if ($write1 && $write2) {
           echo "Done.\n";
           echo "Your configuration files are now up-to-date!\n";
+
+          if ($messages['missing']) {
+            echo "But you still need to add the following missing options:\n";
+            foreach ($messages['missing'] as $msg)
+              echo "- '" . $msg['prop'] . ($msg['name'] ? "': " . $msg['name'] : "'") . "\n";
+          }
         }
         else {
           echo "Failed to write config files!\n";
index c1464f91470bcef76ae7b11ddba0e2aa660ea502..a02d7dc5b920343b735b4852482cbd3a3c7c2442 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2009, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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.                     |
  |                                                                       |
  +-----------------------------------------------------------------------+
 
index e4de49f3f251a30c786d1903ff18c11ee447ed92..15da00d66284b701aafe7683931a4eac8a23008f 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2011, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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.                     |
  |                                                                       |
  +-----------------------------------------------------------------------+
 
@@ -103,6 +106,10 @@ $rcmail_config['imap_force_caps'] = false;
 // Enable this option to force LSUB command usage instead.
 $rcmail_config['imap_force_lsub'] = false;
 
+// Some server configurations (e.g. Courier) doesn't list folders in all namespaces
+// Enable this option to force listing of folders in all namespaces
+$rcmail_config['imap_force_ns'] = false;
+
 // IMAP connection timeout, in seconds. Default: 0 (no limit)
 $rcmail_config['imap_timeout'] = 0;
 
@@ -134,7 +141,8 @@ $rcmail_config['messages_cache'] = false;
 // For example %n = mail.domain.tld, %d = domain.tld
 $rcmail_config['smtp_server'] = '';
 
-// SMTP port (default is 25; 465 for SSL)
+// SMTP port (default is 25; use 587 for STARTTLS or 465 for the
+// deprecated SSL over SMTP (aka SMTPS))
 $rcmail_config['smtp_port'] = 25;
 
 // SMTP username (if required) if you use %u as the username Roundcube
@@ -172,6 +180,19 @@ $rcmail_config['smtp_timeout'] = 0;
 // ONLY ENABLE IT IF YOU'RE REALLY SURE WHAT YOU'RE DOING!
 $rcmail_config['enable_installer'] = false;
 
+// provide an URL where a user can get support for this Roundcube installation
+// PLEASE DO NOT LINK TO THE ROUNDCUBE.NET WEBSITE HERE!
+$rcmail_config['support_url'] = '';
+
+// replace Roundcube logo with this image
+// specify an URL relative to the document root of this Roundcube installation
+$rcmail_config['skin_logo'] = null;
+
+// automatically create a new Roundcube user when log-in the first time.
+// a new user will be created once the IMAP login succeeds.
+// set to false if only registered users can use this service
+$rcmail_config['auto_create_user'] = true;
+
 // use this folder to store log files (must be writeable for apache user)
 // This is used by the 'file' log driver.
 $rcmail_config['log_dir'] = 'logs/';
@@ -191,30 +212,26 @@ $rcmail_config['force_https'] = false;
 // tell PHP that it should work as under secure connection
 // even if it doesn't recognize it as secure ($_SERVER['HTTPS'] is not set)
 // e.g. when you're running Roundcube behind a https proxy
+// this option is mutually exclusive to 'force_https' and only either one of them should be set to true.
 $rcmail_config['use_https'] = false;
 
 // Allow browser-autocompletion on login form.
 // 0 - disabled, 1 - username and host only, 2 - username, host, password
 $rcmail_config['login_autocomplete'] = 0;
 
-// If users authentication is not case sensitive this must be enabled.
-// You can also use it to force conversion of logins to lower case.
+// Forces conversion of logins to lower case.
+// 0 - disabled, 1 - only domain part, 2 - domain and local part.
+// If users authentication is not case-sensitive this must be enabled.
 // After enabling it all user records need to be updated, e.g. with query:
 // UPDATE users SET username = LOWER(username);
-$rcmail_config['login_lc'] = false;
-
-// automatically create a new Roundcube user when log-in the first time.
-// a new user will be created once the IMAP login succeeds.
-// set to false if only registered users can use this service
-$rcmail_config['auto_create_user'] = true;
-
-// replace Roundcube logo with this image
-// specify an URL relative to the document root of this Roundcube installation
-$rcmail_config['skin_logo'] = null;
+$rcmail_config['login_lc'] = 0;
 
 // Includes should be interpreted as PHP files
 $rcmail_config['skin_include_php'] = false;
 
+// display software version on login screen
+$rcmail_config['display_version'] = false;
+
 // Session lifetime in minutes
 // must be greater than 'keep_alive'/60
 $rcmail_config['session_lifetime'] = 10;
@@ -231,8 +248,8 @@ $rcmail_config['session_name'] = null;
 $rcmail_config['session_storage'] = 'db';
 
 // Use these hosts for accessing memcached
-// Define any number of hosts in the form hostname:port
-$rcmail_config['memcache_hosts'] = null; // e.g. array( 'localhost:11211', '192.168.1.12:11211' );
+// Define any number of hosts in the form of hostname:port or unix:///path/to/sock.file
+$rcmail_config['memcache_hosts'] = null; // e.g. array( 'localhost:11211', '192.168.1.12:11211', 'unix:///var/tmp/memcached.sock' );
 
 // check client IP in session athorization
 $rcmail_config['ip_check'] = false;
@@ -365,15 +382,15 @@ $rcmail_config['plugins'] = array();
 // ----------------------------------
 
 // default messages sort column. Use empty value for default server's sorting, 
-// or 'arrival', 'date', 'subject', 'from', 'to', 'size', 'cc'
+// or 'arrival', 'date', 'subject', 'from', 'to', 'fromto', 'size', 'cc'
 $rcmail_config['message_sort_col'] = '';
 
 // default messages sort order
 $rcmail_config['message_sort_order'] = 'DESC';
 
 // These cols are shown in the message list. Available cols are:
-// subject, from, to, cc, replyto, date, size, status, flag, attachment, 'priority'
-$rcmail_config['list_cols'] = array('subject', 'status', 'from', 'date', 'size', 'flag', 'attachment');
+// subject, from, to, fromto, cc, replyto, date, size, status, flag, attachment, 'priority'
+$rcmail_config['list_cols'] = array('subject', 'status', 'fromto', 'date', 'size', 'flag', 'attachment');
 
 // the default locale setting (leave empty for auto-detection)
 // RFC1766 formatted language name like en_US, de_DE, de_CH, fr_FR, pt_BR
@@ -419,7 +436,7 @@ $rcmail_config['trash_mbox'] = 'Trash';
 // display these folders separately in the mailbox list.
 // these folders will also be displayed with localized names
 // NOTE: Use folder names with namespace prefix (INBOX. on Courier-IMAP)
-$rcmail_config['default_imap_folders'] = array('INBOX', 'Drafts', 'Sent', 'Junk', 'Trash');
+$rcmail_config['default_folders'] = array('INBOX', 'Drafts', 'Sent', 'Junk', 'Trash');
 
 // automatically create the above listed default folders on first login
 $rcmail_config['create_default_folders'] = false;
@@ -566,27 +583,42 @@ $rcmail_config['ldap_public']['Verisign'] = array(
   // The RDN field that is used for new entries, this field needs
   // to be one of the search_fields, the base of base_dn is appended
   // to the RDN to insert into the LDAP directory.
-  'LDAP_rdn'       => 'mail',
+  'LDAP_rdn'       => 'cn',
   // The required fields needed to build a new contact as required by
   // the object classes (can include additional fields not required by the object classes).
   'required_fields' => array('cn', 'sn', 'mail'),
   'search_fields'   => array('mail', 'cn'),  // fields to search in
   // mapping of contact fields to directory attributes
+  //   for every attribute one can specify the number of values (limit) allowed.
+  //   default is 1, a wildcard * means unlimited
   'fieldmap' => array(
-    // Roundcube  => LDAP
+    // Roundcube  => LDAP:limit
     'name'        => 'cn',
     'surname'     => 'sn',
     'firstname'   => 'givenName',
-    'email'       => 'mail',
+    'title'       => 'title',
+    'email'       => 'mail:*',
     'phone:home'  => 'homePhone',
     'phone:work'  => 'telephoneNumber',
     'phone:mobile' => 'mobile',
+    'phone:pager' => 'pager',
     'street'      => 'street',
     'zipcode'     => 'postalCode',
+    'region'      => 'st',
     'locality'    => 'l',
-    'country'     => 'c',
-    'organization' => 'o',
+// if you uncomment country, you need to modify 'sub_fields' above
+//    'country'     => 'c',
+    'department'  => 'departmentNumber',
+    'notes'       => 'description',
+// these currently don't work:
+//    'phone:workfax' => 'facsimileTelephoneNumber',
+//    'photo'        => 'jpegPhoto',
+//    'organization' => 'o',
+//    'manager'      => 'manager',
+//    'assistant'    => 'secretary',
   ),
+  // Map of contact sub-objects (attribute name => objectClass(es)), e.g. 'c' => 'country'
+  'sub_fields' => array(),
   'sort'          => 'cn',    // The field to sort the listing by.
   'scope'         => 'sub',   // search mode: sub|base|list
   'filter'        => '(objectClass=inetOrgPerson)',      // used for basic listing (if not empty) and will be &'d with search queries. example: status=act
@@ -649,10 +681,13 @@ $rcmail_config['addressbook_search_mode'] = 0;
 $rcmail_config['default_charset'] = 'ISO-8859-1';
 
 // skin name: folder from skins/
-$rcmail_config['skin'] = 'default';
+$rcmail_config['skin'] = 'larry';
+
+// show up to X items in messages list view
+$rcmail_config['mail_pagesize'] = 50;
 
-// show up to X items in list view
-$rcmail_config['pagesize'] = 40;
+// show up to X items in contacts list view
+$rcmail_config['addressbook_pagesize'] = 50;
 
 // sort contacts by this col (preferably either one of name, firstname, surname)
 $rcmail_config['addressbook_sort_col'] = 'surname';
@@ -665,11 +700,10 @@ $rcmail_config['addressbook_sort_col'] = 'surname';
 $rcmail_config['addressbook_name_listing'] = 0;
 
 // use this timezone to display date/time
+// valid timezone identifers are listed here: php.net/manual/en/timezones.php
+// 'auto' will use the browser's timezone settings
 $rcmail_config['timezone'] = 'auto';
 
-// is daylight saving On? Default: (bool)date('I');
-$rcmail_config['dst_active'] = null;
-
 // prefer displaying HTML messages
 $rcmail_config['prefer_html'] = true;
 
@@ -760,7 +794,7 @@ $rcmail_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 $rcmail_config['default_imap_folders']
+// Please note that folder names should to be in sync with $rcmail_config['default_folders']
 $rcmail_config['search_mods'] = null;  // Example: array('*' => array('subject'=>1, 'from'=>1), 'Sent' => array('subject'=>1, 'to'=>1));
 
 // Defaults of the addressbook search field configuration.
@@ -772,6 +806,9 @@ $rcmail_config['addressbook_search_mods'] = null;  // Example: array('name'=>1,
 // when user is over quota and Trash is included in the quota.
 $rcmail_config['delete_always'] = false;
 
+// Directly delete messages in Junk instead of moving to Trash
+$rcmail_config['delete_junk'] = false;
+
 // Behavior if a received message requests a message delivery notification (read receipt)
 // 0 = ask the user, 1 = send automatically, 2 = ignore (never send or ask)
 // 3 = send automatically if sender is in addressbook, otherwise ask the user
@@ -801,4 +838,9 @@ $rcmail_config['spellcheck_before_send'] = false;
 // Skip alternative email addresses in autocompletion (show one address per contact)
 $rcmail_config['autocomplete_single'] = false;
 
+// Default font for composed HTML message.
+// Supported values: Andale Mono, Arial, Arial Black, Book Antiqua, Courier New,
+// Georgia, Helvetica, Impact, Tahoma, Terminal, Times New Roman, Trebuchet MS, Verdana
+$rcmail_config['default_font'] = '';
+
 // end of config file
index d404c1f2ca55f8b73baad65d509f57af28845a5c..f0c1013041656d9c72dd3275af3071009d81f561 100644 (file)
@@ -46,4 +46,4 @@ return array(
   'ics' => 'text/calendar',
 );
 
-?>
\ No newline at end of file
+?>
index 43a47f049b9b17868db9b2c4662629632486d8e4..30ade93fc42bdc1146a8753542fbbe799f5c84f9 100644 (file)
--- a/index.php
+++ b/index.php
@@ -2,28 +2,39 @@
 /*
  +-------------------------------------------------------------------------+
  | Roundcube Webmail IMAP Client                                           |
- | Version 0.7.2                                                           |
+ | Version 0.8.4                                                           |
  |                                                                         |
  | Copyright (C) 2005-2012, 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 version 2          |
- | as published by the Free Software Foundation.                           |
+ | This program is free software: you can redistribute it and/or modify    |
+ | it under the terms of the GNU General Public License (with exceptions   |
+ | for skins & plugins) as published by the Free Software Foundation,      |
+ | either version 3 of the License, or (at your option) any later version. |
+ |                                                                         |
+ | This file forms part of the Roundcube Webmail Software for which the    |
+ | following exception is added: Plugins and Skins which merely make       |
+ | function calls to the Roundcube Webmail Software, and for that purpose  |
+ | include it by reference shall not be considered modifications of        |
+ | the software.                                                           |
+ |                                                                         |
+ | If you wish to use this file in another project or create a modified    |
+ | version that will not be part of the Roundcube Webmail Software, you    |
+ | may remove the exception above and use this source code under the       |
+ | original version of the license.                                        |
  |                                                                         |
  | This program 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           |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            |
  | GNU General Public License for more details.                            |
  |                                                                         |
- | You should have received a copy of the GNU General Public License along |
- | with this program; if not, write to the Free Software Foundation, Inc., |
- | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.             |
+ | You should have received a copy of the GNU General Public License       |
+ | along with this program.  If not, see http://www.gnu.org/licenses/.     |
  |                                                                         |
  +-------------------------------------------------------------------------+
  | Author: Thomas Bruederli <roundcube@gmail.com>                          |
  +-------------------------------------------------------------------------+
 
- $Id: index.php 5995 2012-03-11 16:22:50Z thomasb $
+ $Id$
 
 */
 
@@ -48,7 +59,7 @@ if ($err_str = $RCMAIL->config->get_error()) {
 }
 
 // check DB connections and exit on failure
-if ($err_str = $DB->is_error()) {
+if ($err_str = $RCMAIL->db->is_error()) {
   raise_error(array(
     'code' => 603,
     'type' => 'db',
@@ -92,13 +103,9 @@ if ($RCMAIL->task == 'login' && $RCMAIL->action == 'login') {
     'valid' => $request_valid,
   ));
 
-  // check if client supports cookies
-  if ($auth['cookiecheck'] && empty($_COOKIE)) {
-    $OUTPUT->show_message("cookiesdisabled", 'warning');
-  }
-  else if ($auth['valid'] && !$auth['abort'] &&
-        !empty($auth['host']) && !empty($auth['user']) &&
-        $RCMAIL->login($auth['user'], $auth['pass'], $auth['host'])
+  // Login
+  if ($auth['valid'] && !$auth['abort'] &&
+    $RCMAIL->login($auth['user'], $auth['pass'], $auth['host'], $auth['cookiecheck'])
   ) {
     // create new session ID, don't destroy the current session
     // it was destroyed already by $RCMAIL->kill_session() above
@@ -119,6 +126,10 @@ if ($RCMAIL->task == 'login' && $RCMAIL->action == 'login') {
       // prevent endless looping on login page
       if ($query['_task'] == 'login')
         unset($query['_task']);
+
+      // prevent redirect to compose with specified ID (#1488226)
+      if ($query['_action'] == 'compose' && !empty($query['_id']))
+        $query = array();
     }
 
     // allow plugins to control the redirect url after login success
@@ -129,9 +140,23 @@ if ($RCMAIL->task == 'login' && $RCMAIL->action == 'login') {
     $OUTPUT->redirect($redir);
   }
   else {
-    $error_code = is_object($IMAP) ? $IMAP->get_error_code() : -1;
+    if (!$auth['valid']) {
+      $error_code  = RCMAIL::ERROR_INVALID_REQUEST;
+    }
+    else {
+      $error_code = $auth['error'] ? $auth['error'] : $RCMAIL->login_error();
+    }
+
+    $error_labels = array(
+      RCMAIL::ERROR_STORAGE          => 'storageerror',
+      RCMAIL::ERROR_COOKIES_DISABLED => 'cookiesdisabled',
+      RCMAIL::ERROR_INVALID_REQUEST  => 'invalidrequest',
+      RCMAIL::ERROR_INVALID_HOST     => 'invalidhost',
+    );
+
+    $error_message = $error_labels[$error_code] ? $error_labels[$error_code] : 'loginfailed';
 
-    $OUTPUT->show_message($error_code < -1 ? 'imaperror' : (!$auth['valid'] ? 'invalidrequest' : 'loginfailed'), 'warning');
+    $OUTPUT->show_message($error_message, 'warning');
     $RCMAIL->plugins->exec_hook('login_failed', array(
       'code' => $error_code, 'host' => $auth['host'], 'user' => $auth['user']));
     $RCMAIL->kill_session();
@@ -140,7 +165,11 @@ if ($RCMAIL->task == 'login' && $RCMAIL->action == 'login') {
 
 // end session (after optional referer check)
 else if ($RCMAIL->task == 'logout' && isset($_SESSION['user_id']) && (!$RCMAIL->config->get('referer_check') || rcube_check_referer())) {
-  $userdata = array('user' => $_SESSION['username'], 'host' => $_SESSION['imap_host'], 'lang' => $RCMAIL->user->language);
+  $userdata = array(
+    'user' => $_SESSION['username'],
+    'host' => $_SESSION['storage_host'],
+    'lang' => $RCMAIL->user->language,
+  );
   $OUTPUT->show_message('loggedout');
   $RCMAIL->logout_actions();
   $RCMAIL->kill_session();
@@ -184,33 +213,35 @@ if (empty($RCMAIL->user->ID)) {
   if ($session_error || $_REQUEST['_err'] == 'session')
     $OUTPUT->show_message('sessionerror', 'error', null, true, -1);
 
-  $RCMAIL->set_task('login');
-  $OUTPUT->send('login');
+  $plugin = $RCMAIL->plugins->exec_hook('unauthenticated', array('task' => 'login', 'error' => $session_error));
+
+  $RCMAIL->set_task($plugin['task']);
+  $OUTPUT->send($plugin['task']);
 }
 // CSRF prevention
 else {
-  // don't check for valid request tokens in these actions
-  $request_check_whitelist = array('login'=>1, 'spell'=>1);
-
-  // check client X-header to verify request origin
-  if ($OUTPUT->ajax_call) {
-    if (rc_request_header('X-Roundcube-Request') != $RCMAIL->get_request_token() && !$RCMAIL->config->get('devel_mode')) {
-      header('HTTP/1.1 403 Forbidden');
-      die("Invalid Request");
+  $request_check_whitelist = array('login'=>1, 'spell'=>1, 'spell_html'=>1);
+
+  if (!$request_check_whitelist[$RCMAIL->action]) {
+    // check client X-header to verify request origin
+    if ($OUTPUT->ajax_call) {
+      if (rc_request_header('X-Roundcube-Request') != $RCMAIL->get_request_token()) {
+        header('HTTP/1.1 403 Forbidden');
+        die("Invalid Request");
+      }
+    }
+    // check request token in POST form submissions
+    else if (!empty($_POST) && !$RCMAIL->check_request()) {
+      $OUTPUT->show_message('invalidrequest', 'error');
+      $OUTPUT->send($RCMAIL->task);
     }
-  }
-  // check request token in POST form submissions
-  else if (!empty($_POST) && !$request_check_whitelist[$RCMAIL->action] && !$RCMAIL->check_request()) {
-    $OUTPUT->show_message('invalidrequest', 'error');
-    $OUTPUT->send($RCMAIL->task);
-  }
 
-  // check referer if configured
-  if (!$request_check_whitelist[$RCMAIL->action] && $RCMAIL->config->get('referer_check') && !rcube_check_referer()) {
-    raise_error(array(
-      'code' => 403,
-      'type' => 'php',
-      'message' => "Referer check failed"), true, true);
+    // check referer if configured
+    if ($RCMAIL->config->get('referer_check') && !rcube_check_referer()) {
+      raise_error(array(
+        'code' => 403, 'type' => 'php',
+        'message' => "Referer check failed"), true, true);
+    }
   }
 }
 
index 944d3840f8ddab3e1a341b08dc8d149c14aab1f4..5cb30225ebee574e765aa005d85785894253a1f6 100644 (file)
@@ -16,6 +16,7 @@ $optional_php_exts = array(
     'OpenSSL'   => 'openssl',
     'Mcrypt'    => 'mcrypt',
     'Intl'      => 'intl',
+    'Exif'      => 'exif',
 );
 
 $required_libs = array(
@@ -39,10 +40,14 @@ $ini_checks = array(
     'zend.ze1_compatibility_mode'   => 0,
     'mbstring.func_overload'        => 0,
     'suhosin.session.encrypt'       => 0,
+    'magic_quotes_runtime'          => 0,
+    'magic_quotes_sybase'           => 0,
+    'date.timezone'                 => '-NOTEMPTY-',
 );
 
 $optional_checks = array(
-    'date.timezone' => '-NOTEMPTY-',
+    // required for utils/modcss.inc, should we require this?
+    'allow_url_fopen'  => 1,
 );
 
 $source_urls = array(
@@ -57,10 +62,12 @@ $source_urls = array(
     'JSON'      => 'http://www.php.net/manual/en/book.json.php',
     'DOM'       => 'http://www.php.net/manual/en/book.dom.php',
     'Intl'      => 'http://www.php.net/manual/en/book.intl.php',
+    'Exif'      => 'http://www.php.net/manual/en/book.exif.php',
     'PEAR'      => 'http://pear.php.net',
     'MDB2'      => 'http://pear.php.net/package/MDB2',
     'Net_SMTP'  => 'http://pear.php.net/package/Net_SMTP',
     'Mail_mime' => 'http://pear.php.net/package/Mail_mime',
+    'Net_IDNA2' => 'http://pear.php.net/package/Net_IDNA2',
 );
 
 echo '<input type="hidden" name="_step" value="' . ($RCI->configured ? 3 : 2) . '" />';
@@ -165,7 +172,15 @@ foreach ($ini_checks as $var => $val) {
     $status = ini_get($var);
     if ($val === '-NOTEMPTY-') {
         if (empty($status)) {
-            $RCI->fail($var, "cannot be empty and needs to be set");
+            $RCI->fail($var, "empty value detected");
+        } else if ($var == 'date.timezone') {
+            try {
+                $tz = new DateTimeZone($status);
+                $RCI->pass($var);
+            }
+            catch (Exception $e) {
+                $RCI->fail($var, "invalid value detected");
+            }
         } else {
             $RCI->pass($var);
         }
index 3121b2693474242ea91b26c5900e21adc4ce0bef..5a1e6daf55222c08f7425a3c1293df2a011862d7 100644 (file)
@@ -1,3 +1,20 @@
+/*
+ +-----------------------------------------------------------------------+
+ | Roundcube installer cleint function                                   |
+ |                                                                       |
+ | This file is part of the Roundcube web development suite              |
+ | Copyright (C) 2009-2012, 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: Thomas Bruederli <roundcube@gmail.com>                        |
+ +-----------------------------------------------------------------------+
+ $Id$
+*/
 
 function toggleblock(id, link)
 {
index dabc478c964a80551384ed5b2a9c903b40d0198c..bd676b12e30a88facfb26600632a3743bc13f525 100644 (file)
@@ -59,29 +59,39 @@ echo $input_prodname->show($RCI->getprop('product_name'));
 <div>The name of your service (used to compose page titles)</div>
 </dd>
 
-<dt class="propname">temp_dir</dt>
+<dt class="propname">support_url</dt>
 <dd>
 <?php
 
-$input_tempdir = new html_inputfield(array('name' => '_temp_dir', 'size' => 30, 'id' => "cfgtempdir"));
-echo $input_tempdir->show($RCI->getprop('temp_dir'));
+$input_support = new html_inputfield(array('name' => '_support_url', 'size' => 50, 'id' => "cfgsupporturl"));
+echo $input_support->show($RCI->getprop('support_url'));
 
 ?>
-<div>Use this folder to store temp files (must be writeable for webserver)</div>
+<div>Provide an URL where a user can get support for this Roundcube installation.<br/>PLEASE DO NOT LINK TO THE ROUNDCUBE.NET WEBSITE HERE!</div>
+<p class="hint">Enter an absolute URL (inculding http://) to a support page/form or a mailto: link.</p>
 </dd>
 
-
-<dt class="propname">ip_check</dt>
+<dt class="propname">skin_logo</dt>
 <dd>
 <?php
 
-$check_ipcheck = new html_checkbox(array('name' => '_ip_check', 'id' => "cfgipcheck"));
-echo $check_ipcheck->show(intval($RCI->getprop('ip_check')), array('value' => 1));
+$input_skin = new html_inputfield(array('name' => '_skin_logo', 'size' => 50, 'id' => "cfgskinlogo"));
+echo $input_skin->show($RCI->getprop('skin_logo'));
 
 ?>
-<label for="cfgipcheck">Check client IP in session authorization</label><br />
+<div>Custom image to display instead of the Roundcube logo.</div>
+<p class="hint">Enter a URL relative to the document root of this Roundcube installation.</p>
+</dd>
 
-<p class="hint">This increases security but can cause sudden logouts when someone uses a proxy with changing IPs.</p>
+<dt class="propname">temp_dir</dt>
+<dd>
+<?php
+
+$input_tempdir = new html_inputfield(array('name' => '_temp_dir', 'size' => 30, 'id' => "cfgtempdir"));
+echo $input_tempdir->show($RCI->getprop('temp_dir'));
+
+?>
+<div>Use this folder to store temp files (must be writeable for webserver)</div>
 </dd>
 
 <dt class="propname">des_key</dt>
@@ -97,6 +107,19 @@ echo $input_deskey->show($RCI->getprop('des_key'));
 If you enter it manually please provide a string of exactly 24 chars.</p>
 </dd>
 
+<dt class="propname">ip_check</dt>
+<dd>
+<?php
+
+$check_ipcheck = new html_checkbox(array('name' => '_ip_check', 'id' => "cfgipcheck"));
+echo $check_ipcheck->show(intval($RCI->getprop('ip_check')), array('value' => 1));
+
+?>
+<label for="cfgipcheck">Check client IP in session authorization</label><br />
+
+<p class="hint">This increases security but can cause sudden logouts when someone uses a proxy with changing IPs.</p>
+</dd>
+
 <dt class="propname">enable_caching</dt>
 <dd>
 <?php
@@ -512,27 +535,34 @@ echo $input_skin->show($RCI->getprop('skin'));
 <div>Name of interface skin (folder in /skins)</div>
 </dd>
 
-<dt class="propname">skin_logo</dt>
+<dt class="propname">mail_pagesize <span class="userconf">*</span></dt>
 <dd>
 <?php
 
-$input_skin = new html_inputfield(array('name' => '_skin_logo', 'size' => 50, 'id' => "cfgskinlogo"));
-echo $input_skin->show($RCI->getprop('skin_logo'));
+$pagesize = $RCI->getprop('mail_pagesize');
+if (!$pagesize) {
+    $pagesize = $RCI->getprop('pagesize');
+}
+$input_pagesize = new html_inputfield(array('name' => '_mail_pagesize', 'size' => 6, 'id' => "cfgmailpagesize"));
+echo $input_pagesize->show($pagesize);
 
 ?>
-<div>Custom image to display instead of the Roundcube logo.</div>
-<p class="hint">Enter a URL relative to the document root of this Roundcube installation.</p>
+<div>Show up to X items in the mail messages list view.</div>
 </dd>
 
-<dt class="propname">pagesize <span class="userconf">*</span></dt>
+<dt class="propname">addressbook_pagesize <span class="userconf">*</span></dt>
 <dd>
 <?php
 
-$input_pagesize = new html_inputfield(array('name' => '_pagesize', 'size' => 6, 'id' => "cfgpagesize"));
-echo $input_pagesize->show($RCI->getprop('pagesize'));
+$pagesize = $RCI->getprop('addressbook_pagesize');
+if (!$pagesize) {
+    $pagesize = $RCI->getprop('pagesize');
+}
+$input_pagesize = new html_inputfield(array('name' => '_addressbook_pagesize', 'size' => 6, 'id' => "cfgabookpagesize"));
+echo $input_pagesize->show($pagesize);
 
 ?>
-<div>Show up to X items in list view.</div>
+<div>Show up to X items in the contacts list view.</div>
 </dd>
 
 <dt class="propname">prefer_html <span class="userconf">*</span></dt>
diff --git a/installer/images/rcube_logo.gif b/installer/images/rcube_logo.gif
deleted file mode 100644 (file)
index 26f82ff..0000000
Binary files a/installer/images/rcube_logo.gif and /dev/null differ
diff --git a/installer/images/roundcube_logo.png b/installer/images/roundcube_logo.png
new file mode 100644 (file)
index 0000000..c14b74e
Binary files /dev/null and b/installer/images/roundcube_logo.png differ
index 7ed52240ba9a631d3c6e061f09d3a085f232d752..4c94fea7d7469447ae2269dc7a31a764e64b5339 100644 (file)
@@ -3,22 +3,33 @@
 /*
  +-------------------------------------------------------------------------+
  | Roundcube Webmail setup tool                                            |
- | Version 0.6                                                             |
+ | Version 0.8                                                             |
  |                                                                         |
- | Copyright (C) 2009-2011, The Roundcube Dev Team                         |
+ | Copyright (C) 2009-2012, 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 version 2          |
- | as published by the Free Software Foundation.                           |
+ | This program is free software: you can redistribute it and/or modify    |
+ | it under the terms of the GNU General Public License (with exceptions   |
+ | for skins & plugins) as published by the Free Software Foundation,      |
+ | either version 3 of the License, or (at your option) any later version. |
+ |                                                                         |
+ | This file forms part of the Roundcube Webmail Software for which the    |
+ | following exception is added: Plugins and Skins which merely make       |
+ | function calls to the Roundcube Webmail Software, and for that purpose  |
+ | include it by reference shall not be considered modifications of        |
+ | the software.                                                           |
+ |                                                                         |
+ | If you wish to use this file in another project or create a modified    |
+ | version that will not be part of the Roundcube Webmail Software, you    |
+ | may remove the exception above and use this source code under the       |
+ | original version of the license.                                        |
  |                                                                         |
  | This program 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           |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            |
  | GNU General Public License for more details.                            |
  |                                                                         |
- | You should have received a copy of the GNU General Public License along |
- | with this program; if not, write to the Free Software Foundation, Inc., |
- | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.             |
+ | You should have received a copy of the GNU General Public License       |
+ | along with this program.  If not, see http://www.gnu.org/licenses/.     |
  |                                                                         |
  +-------------------------------------------------------------------------+
  | Author: Thomas Bruederli <roundcube@gmail.com>                          |
@@ -33,6 +44,7 @@ ini_set('display_errors', 1);
 
 define('INSTALL_PATH', realpath(dirname(__FILE__) . '/../').'/');
 define('RCMAIL_CONFIG_DIR', INSTALL_PATH . 'config');
+define('RCMAIL_CHARSET', 'UTF-8');
 
 $include_path  = INSTALL_PATH . 'program/lib' . PATH_SEPARATOR;
 $include_path .= INSTALL_PATH . 'program' . PATH_SEPARATOR;
@@ -97,7 +109,7 @@ if ($RCI->configured && empty($_REQUEST['_step'])) {
 
 <div id="banner">
   <div class="banner-bg"></div>
-  <div class="banner-logo"><a href="http://roundcube.net"><img src="images/rcube_logo.gif" width="210" height="55" border="0" alt="Roundcube - Open source webmail project" /></a></div>
+  <div class="banner-logo"><a href="http://roundcube.net"><img src="images/roundcube_logo.png" width="210" height="55" border="0" alt="Roundcube - open source webmail software" /></a></div>
 </div>
 
 <div id="topnav">
@@ -116,14 +128,23 @@ if ($RCI->configured && empty($_REQUEST['_step'])) {
     echo '</div></body></html>';
     exit;
   }
-  
+
 ?>
 
 <h1>Roundcube Webmail Installer</h1>
 
 <ol id="progress">
 <?php
-  
+  $include_steps = array(
+    1 => './check.php',
+    2 => './config.php',
+    3 => './test.php',
+  );
+
+  if (!in_array($RCI->step, array_keys($include_steps))) {
+    $RCI->step = 1;
+  }
+
   foreach (array('Check environment', 'Create config', 'Test config') as $i => $item) {
     $j = $i + 1;
     $link = ($RCI->step >= $j || $RCI->configured) ? '<a href="./index.php?_step='.$j.'">' . Q($item) . '</a>' : Q($item);
@@ -133,21 +154,14 @@ if ($RCI->configured && empty($_REQUEST['_step'])) {
 </ol>
 
 <?php
-$include_steps = array('./welcome.html', './check.php', './config.php', './test.php');
 
-if ($include_steps[$RCI->step]) {
-  include $include_steps[$RCI->step];
-}
-else {
-  header("HTTP/1.0 404 Not Found");
-  echo '<h2 class="error">Invalid step</h2>';
-}
+include $include_steps[$RCI->step];
 
 ?>
 </div>
 
 <div id="footer">
-  Installer by the Roundcube Dev Team. Copyright &copy; 2008-2011 - Published under the GNU Public License;&nbsp;
+  Installer by the Roundcube Dev Team. Copyright &copy; 2008-2012 – Published under the GNU Public License;&nbsp;
   Icons by <a href="http://famfamfam.com">famfamfam</a>
 </div>
 </body>
index f23009de098a77cec24df0fb7eab29852270c8db..02eb7a9c491cd4604bae0846e90d6bc27f72a6f1 100644 (file)
@@ -5,11 +5,14 @@
  | rcube_install.php                                                     |
  |                                                                       |
  | This file is part of the Roundcube Webmail package                    |
- | Copyright (C) 2008-2011, The Roundcube Dev Team                       |
- | Licensed under the GNU Public License                                 |
+ | Copyright (C) 2008-2012, 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.                     |
  +-----------------------------------------------------------------------+
 
- $Id:  $
+ $Id$
 
 */
 
@@ -40,14 +43,16 @@ class rcube_install
     'multiple_identities' => 'identities_level',
     'addrbook_show_images' => 'show_images',
     'imap_root' => 'imap_ns_personal',
+    'pagesize' => 'mail_pagesize',
+    'default_imap_folders' => 'default_folders',
   );
-  
+
   // these config options are required for a working system
   var $required_config = array(
     'db_dsnw', 'db_table_contactgroups', 'db_table_contactgroupmembers',
-    'des_key', 'session_lifetime',
+    'des_key', 'session_lifetime', 'support_url',
   );
-  
+
   /**
    * Constructor
    */
@@ -169,7 +174,7 @@ class rcube_install
         if (count($value) <= 1)
           $value = $value[0];
       }
-      else if ($prop == 'pagesize') {
+      else if ($prop == 'mail_pagesize' || $prop == 'addressbook_pagesize') {
         $value = max(2, intval($value));
       }
       else if ($prop == 'smtp_user' && !empty($_POST['_smtp_user_u'])) {
@@ -178,9 +183,9 @@ class rcube_install
       else if ($prop == 'smtp_pass' && !empty($_POST['_smtp_user_u'])) {
         $value = '%p';
       }
-      else if ($prop == 'default_imap_folders') {
+      else if ($prop == 'default_folders') {
            $value = array();
-           foreach ($this->config['default_imap_folders'] as $_folder) {
+           foreach ($this->config['default_folders'] as $_folder) {
              switch ($_folder) {
              case 'Drafts': $_folder = $this->config['drafts_mbox']; break;
              case 'Sent':   $_folder = $this->config['sent_mbox']; break;
@@ -249,7 +254,7 @@ class rcube_install
     
     // iterate over default config
     foreach ($defaults as $prop => $value) {
-      if (!isset($seen[$prop]) && !isset($this->config[$prop]) && isset($required[$prop]))
+      if (!isset($seen[$prop]) && isset($required[$prop]) && !(is_bool($this->config[$prop]) || strlen($this->config[$prop])))
         $out['missing'][] = array('prop' => $prop);
     }
 
@@ -261,7 +266,7 @@ class rcube_install
       }
       else if (!empty($this->config['spellcheck_languages'])) {
         foreach ($this->config['spellcheck_languages'] as $lang => $descr)
-          if (!pspell_new($lang))
+          if (!@pspell_new($lang))
             $out['dependencies'][] = array('prop' => 'spellcheck_languages',
               'explain' => "You are missing pspell support for language $lang ($descr)");
       }
@@ -408,7 +413,7 @@ class rcube_install
   {
     if (!$this->configured)
       return false;
-    
+
     $options = array(
       'use_transactions' => false,
       'log_line_break' => "\n",
@@ -418,11 +423,11 @@ class rcube_install
       'force_defaults' => false,
       'portability' => true
     );
-    
+
     $dsnw = $this->config['db_dsnw'];
     $schema = MDB2_Schema::factory($dsnw, $options);
     $schema->db->supported['transactions'] = false;
-    
+
     if (PEAR::isError($schema)) {
       $this->raise_error(array('code' => $schema->getCode(), 'message' => $schema->getMessage() . ' ' . $schema->getUserInfo()));
       return false;
@@ -430,33 +435,33 @@ class rcube_install
     else {
       $definition = $schema->getDefinitionFromDatabase();
       $definition['charset'] = 'utf8';
-      
+
       if (PEAR::isError($definition)) {
         $this->raise_error(array('code' => $definition->getCode(), 'message' => $definition->getMessage() . ' ' . $definition->getUserInfo()));
         return false;
       }
-      
+
       // load reference schema
       $dsn_arr = MDB2::parseDSN($this->config['db_dsnw']);
 
       $ref_schema = INSTALL_PATH . 'SQL/' . $dsn_arr['phptype'] . '.schema.xml';
-      
+
       if (is_readable($ref_schema)) {
         $reference = $schema->parseDatabaseDefinition($ref_schema, false, array(), $schema->options['fail_on_invalid_names']);
-        
+
         if (PEAR::isError($reference)) {
           $this->raise_error(array('code' => $reference->getCode(), 'message' => $reference->getMessage() . ' ' . $reference->getUserInfo()));
         }
         else {
           $diff = $schema->compareDefinitions($reference, $definition);
-          
+
           if (empty($diff)) {
             return true;
           }
           else if ($update) {
             // update database schema with the diff from the above check
             $success = $schema->alterDatabase($reference, $definition, $diff);
-            
+
             if (PEAR::isError($success)) {
               $this->raise_error(array('code' => $success->getCode(), 'message' => $success->getMessage() . ' ' . $success->getUserInfo()));
             }
@@ -471,11 +476,11 @@ class rcube_install
         $this->raise_error(array('message' => "Could not find reference schema file ($ref_schema)"));
         return false;
     }
-    
+
     return false;
   }
-  
-  
+
+
   /**
    * Getter for the last error message
    *
@@ -485,8 +490,8 @@ class rcube_install
   {
       return $this->last_error['message'];
   }
-  
-  
+
+
   /**
    * Return a list with all imap hosts configured
    *
@@ -496,12 +501,12 @@ class rcube_install
   {
     $default_hosts = (array)$this->getprop('default_host');
     $out = array();
-    
+
     foreach ($default_hosts as $key => $name) {
       if (!empty($name))
         $out[] = rcube_parse_host(is_numeric($key) ? $name : $key);
     }
-    
+
     return $out;
   }
 
@@ -518,7 +523,8 @@ class rcube_install
         '0.4-beta', '0.4.2',
         '0.5-beta', '0.5', '0.5.1',
         '0.6-beta', '0.6',
-        '0.7-beta', '0.7', '0.7.1'
+        '0.7-beta', '0.7', '0.7.1', '0.7.2', '0.7.3',
+        '0.8-beta', '0.8-rc', '0.8.0', '0.8.1', '0.8.2', '0.8.3',
     ));
     return $select;
   }
@@ -537,7 +543,7 @@ class rcube_install
     }
     return $skins;
   }
-  
+
   /**
    * Display OK status
    *
@@ -549,8 +555,8 @@ class rcube_install
     echo Q($name) . ':&nbsp; <span class="success">OK</span>';
     $this->_showhint($message);
   }
-  
-  
+
+
   /**
    * Display an error status and increase failure count
    *
@@ -561,7 +567,7 @@ class rcube_install
   function fail($name, $message = '', $url = '')
   {
     $this->failures++;
-    
+
     echo Q($name) . ':&nbsp; <span class="fail">NOT OK</span>';
     $this->_showhint($message, $url);
   }
@@ -579,8 +585,8 @@ class rcube_install
     echo Q($name) . ':&nbsp; <span class="na">NOT OK</span>';
     $this->_showhint($message, $url);
   }
-  
-  
+
+
   /**
    * Display warning status
    *
@@ -593,24 +599,24 @@ class rcube_install
     echo Q($name) . ':&nbsp; <span class="na">NOT AVAILABLE</span>';
     $this->_showhint($message, $url);
   }
-  
-  
+
+
   function _showhint($message, $url = '')
   {
     $hint = Q($message);
-    
+
     if ($url)
       $hint .= ($hint ? '; ' : '') . 'See <a href="' . Q($url) . '" target="_blank">' . Q($url) . '</a>';
-      
+
     if ($hint)
       echo '<span class="indent">(' . $hint . ')</span>';
   }
-  
-  
+
+
   static function _clean_array($arr)
   {
     $out = array();
-    
+
     foreach (array_unique($arr) as $k => $val) {
       if (!empty($val)) {
         if (is_numeric($k))
@@ -619,11 +625,11 @@ class rcube_install
           $out[$k] = $val;
       }
     }
-    
+
     return $out;
   }
-  
-  
+
+
   static function _dump_var($var, $name=null) {
     // special values
     switch ($name) {
@@ -652,16 +658,16 @@ class rcube_install
             break;
           }
         }
-        
+
         if ($isnum)
           return 'array(' . join(', ', array_map(array('rcube_install', '_dump_var'), $var)) . ')';
       }
     }
-    
+
     return var_export($var, true);
   }
-  
-  
+
+
   /**
    * Initialize the database with the according schema
    *
@@ -671,7 +677,7 @@ class rcube_install
   function init_db($DB)
   {
     $engine = isset($this->db_map[$DB->db_provider]) ? $this->db_map[$DB->db_provider] : $DB->db_provider;
-    
+
     // read schema file from /SQL/*
     $fname = INSTALL_PATH . "SQL/$engine.initial.sql";
     if ($sql = @file_get_contents($fname)) {
@@ -681,7 +687,7 @@ class rcube_install
       $this->fail('DB Schema', "Cannot read the schema file: $fname");
       return false;
     }
-    
+
     if ($err = $this->get_error()) {
       $this->fail('DB Schema', "Error creating database schema: $err");
       return false;
@@ -689,8 +695,8 @@ class rcube_install
 
     return true;
   }
-  
-  
+
+
   /**
    * Update database with SQL statements from SQL/*.update.sql
    *
@@ -702,7 +708,7 @@ class rcube_install
   {
     $version = strtolower($version);
     $engine = isset($this->db_map[$DB->db_provider]) ? $this->db_map[$DB->db_provider] : $DB->db_provider;
-    
+
     // read schema file from /SQL/*
     $fname = INSTALL_PATH . "SQL/$engine.update.sql";
     if ($lines = @file($fname, FILE_SKIP_EMPTY_LINES)) {
@@ -717,7 +723,7 @@ class rcube_install
         if ($from && !$is_comment)
           $sql .= $line. "\n";
       }
-      
+
       if ($sql)
         $this->exec_sql($sql, $DB);
     }
@@ -725,7 +731,7 @@ class rcube_install
       $this->fail('DB Schema', "Cannot read the update file: $fname");
       return false;
     }
-    
+
     if ($err = $this->get_error()) {
       $this->fail('DB Schema', "Error updating database: $err");
       return false;
@@ -733,8 +739,8 @@ class rcube_install
 
     return true;
   }
-  
-  
+
+
   /**
    * Execute the given SQL queries on the database connection
    *
@@ -748,7 +754,7 @@ class rcube_install
     foreach (explode("\n", $sql) as $line) {
       if (preg_match('/^--/', $line) || trim($line) == '')
         continue;
-        
+
       $buff .= $line . "\n";
       if (preg_match('/(;|^GO)$/', trim($line))) {
         $DB->query($buff);
@@ -757,11 +763,11 @@ class rcube_install
           break;
       }
     }
-    
+
     return !$DB->is_error();
   }
-  
-  
+
+
   /**
    * Handler for Roundcube errors
    */
@@ -769,8 +775,8 @@ class rcube_install
   {
       $this->last_error = $p;
   }
-  
-  
+
+
   /**
    * Generarte a ramdom string to be used as encryption key
    *
@@ -782,12 +788,12 @@ class rcube_install
   {
     $alpha = 'ABCDEFGHIJKLMNOPQERSTUVXYZabcdefghijklmnopqrtsuvwxyz0123456789+*%&?!$-_=';
     $out = '';
-    
+
     for ($i=0; $i < $length; $i++)
       $out .= $alpha{rand(0, strlen($alpha)-1)};
-    
+
     return $out;
   }
-  
+
 }
 
index a7521b980259eed822e468365cc884ddbf7f271c..d559df14e9547d1970f45c7264082ae408a36b0c 100644 (file)
@@ -1,23 +1,13 @@
 <?php
 /*
  +-------------------------------------------------------------------------+
- | Roundcube Webmail IMAP Client                                           |
- | Version 0.6                                                             |
+ | Roundcube Webmail installer utilities                                   |
  |                                                                         |
  | Copyright (C) 2005-2011, 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 version 2          |
- | as published by the Free Software Foundation.                           |
- |                                                                         |
- | This program 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 General Public License for more details.                            |
- |                                                                         |
- | You should have received a copy of the GNU General Public License along |
- | with this program; if not, write to the Free Software Foundation, Inc., |
- | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.             |
+ | 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: Thomas Bruederli <roundcube@gmail.com>                          |
diff --git a/installer/welcome.html b/installer/welcome.html
deleted file mode 100644 (file)
index a992c5e..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<form action="index.php" methond="get">
-<input type="hidden" name="_step" value="1" />
-
-<p>Welcome to the interactive install script for the Roundcube Webmail package</p>
-<p>First let's check your local environment and find out if everything Roundcube needs is available.</p>
-
-<p>The basic requirements are:</p>
-<ul>
-  <li>PHP Version 5.2.0 or greater including
-    <ul>
-      <li>PCRE (perl compatible regular expression)</li>
-      <li>Session support</li>
-      <li>Libiconv (recommended)</li>
-      <li>OpenSSL (recommended)</li>
-      <li>FileInfo (optional)</li>
-      <li>Multibyte/mbstring (optional)</li>
-      <li>Mcrypt (optional)</li>
-      </ul>
-    </li>
-    <li>php.ini options:
-      <ul>
-        <li>error_reporting E_ALL &amp; ~E_NOTICE (or lower)</li>
-        <li>file_uploads on (for attachment upload features)</li>
-        <li>session.auto_start needs to be off</li>
-      </ul>
-    </li>
-    <li>A MySQL or PostgreSQL database engine or the SQLite extension for PHP</li>
-    <li>An SMTP server (recommended) or PHP configured for mail delivery</li>
-</ul>
-
-<input type="submit" value="START INSTALLATION" />
-
-</form>
index aa9e06d3da3685b764ebbcf4a1ab800b7c06f30b..b6e2c811d1593ed27528b3b1e78f667e41dc86b6 100644 (file)
@@ -28,6 +28,9 @@ if (window.rcmail) {
 
         rcmail.enable_command('acl-create', 'acl-save', 'acl-cancel', 'acl-mode-switch', true);
         rcmail.enable_command('acl-delete', 'acl-edit', false);
+
+        if (rcmail.env.acl_advanced)
+            $('#acl-switch').addClass('selected');
     });
 }
 
@@ -129,6 +132,8 @@ rcube_webmail.prototype.acl_mode_switch = function(elem)
 // ACL table initialization
 rcube_webmail.prototype.acl_list_init = function()
 {
+    $('#acl-switch')[this.env.acl_advanced ? 'addClass' : 'removeClass']('selected');
+
     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); });
index b2e5b8d470ca53b7781802d6dcf1038cc3d15b1d..e916b996a888426b49d5ac5b7e62a15d2623d56e 100644 (file)
@@ -7,7 +7,7 @@
  * @author Aleksander Machniak <alec@alec.pl>
  *
  *
- * Copyright (C) 2011, Kolab Systems AG
+ * Copyright (C) 2011-2012, Kolab Systems AG
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2
@@ -58,8 +58,7 @@ class acl extends rcube_plugin
         $action = trim(get_input_value('_act', RCUBE_INPUT_GPC));
 
         // Connect to IMAP
-        $this->rc->imap_init();
-        $this->rc->imap_connect();
+        $this->rc->storage_init();
 
         // Load localization and configuration
         $this->add_texts('localization/');
@@ -129,8 +128,10 @@ class acl extends rcube_plugin
      */
     function folder_form($args)
     {
-        // Edited folder name (empty in create-folder mode)
         $mbox_imap = $args['options']['name'];
+        $myrights  = $args['options']['rights'];
+
+        // Edited folder name (empty in create-folder mode)
         if (!strlen($mbox_imap)) {
             return $args;
         }
@@ -140,18 +141,8 @@ class acl extends rcube_plugin
             return $args;
         }
 */
-        // Namespace root
-        if ($args['options']['is_root']) {
-            return $args;
-        }
-
         // Get MYRIGHTS
-        if (!($myrights = $args['options']['rights'])) {
-            return $args;
-        }
-
-        // Do nothing if no ACL support
-        if (!$this->rc->imap->get_capability('ACL')) {
+        if (empty($myrights)) {
             return $args;
         }
 
@@ -242,8 +233,7 @@ class acl extends rcube_plugin
 
         // Advanced rights
         $attrib['id'] = 'advancedrights';
-        foreach ($supported as $val) {
-            $id = "acl$val";
+        foreach ($supported as $idx => $val) {
             $ul .= html::tag('li', null,
                 $input->show('', array(
                     'name' => "acl[$val]", 'value' => $val, 'id' => $id))
@@ -335,7 +325,7 @@ class acl extends rcube_plugin
     private function list_rights($attrib=array())
     {
         // Get ACL for the folder
-        $acl = $this->rc->imap->get_acl($this->mbox);
+        $acl = $this->rc->storage->get_acl($this->mbox);
 
         if (!is_array($acl)) {
             $acl = array();
@@ -389,13 +379,14 @@ class acl extends rcube_plugin
         // Create table header
         $table->add_header('user', $this->gettext('identifier'));
         foreach (array_keys($items) as $key) {
-            $table->add_header('acl'.$key, $this->gettext('shortacl'.$key));
+            $label = $this->gettext('shortacl'.$key);
+            $table->add_header(array('class' => 'acl'.$key, 'title' => $label), $label);
         }
 
         $i = 1;
         $js_table = array();
         foreach ($acl as $user => $rights) {
-            if ($this->rc->imap->conn->user == $user) {
+            if ($this->rc->storage->conn->user == $user) {
                 continue;
             }
 
@@ -462,7 +453,7 @@ class acl extends rcube_plugin
             }
 
             if ($user != $_SESSION['username'] && $username != $_SESSION['username']) {
-                if ($this->rc->imap->set_acl($mbox, $user, $acl)) {
+                if ($this->rc->storage->set_acl($mbox, $user, $acl)) {
                     $ret = array('id' => html_identifier($user),
                          'username' => $username, 'acl' => implode($acl), 'old' => $oldid);
                     $this->rc->output->command('acl_update', $ret);
@@ -491,7 +482,7 @@ class acl extends rcube_plugin
 
         foreach ($user as $u) {
             $u = trim($u);
-            if ($this->rc->imap->delete_acl($mbox, $u)) {
+            if ($this->rc->storage->delete_acl($mbox, $u)) {
                 $this->rc->output->command('acl_remove_row', html_identifier($u));
             }
             else {
@@ -603,7 +594,7 @@ class acl extends rcube_plugin
             return $this->supported;
         }
 
-        $capa = $this->rc->imap->get_capability('RIGHTS');
+        $capa = $this->rc->storage->get_capability('RIGHTS');
 
         if (is_array($capa)) {
             $rights = strtolower($capa[0]);
@@ -636,7 +627,7 @@ class acl extends rcube_plugin
         // whether or not the user ID in ACL entries need to be qualified and how
         // they would need to be qualified.
         if (empty($domain)) {
-            $acl = $this->rc->imap->get_acl('INBOX');
+            $acl = $this->rc->storage->get_acl('INBOX');
             if (is_array($acl)) {
                 $regexp = '/^' . preg_quote($_SESSION['username'], '/') . '@(.*)$/';
                 foreach (array_keys($acl) as $name) {
diff --git a/plugins/acl/localization/bs_BA.inc b/plugins/acl/localization/bs_BA.inc
new file mode 100644 (file)
index 0000000..90eb254
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/bs_BA/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kenan Dervišević <kenan3008@gmail.com>                      |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['sharing'] = 'Razmjena';
+$labels['myrights'] = 'Prava pristupa';
+$labels['username'] = 'Korisnik:';
+$labels['advanced'] = 'napredni mod';
+$labels['newuser'] = 'Dodaj unos';
+$labels['actions'] = 'Akcije za prava pristupa...';
+$labels['anyone'] = 'Svi korisnici (bilo ko)';
+$labels['anonymous'] = 'Gosti (anonimno)';
+$labels['identifier'] = 'Identifikator';
+$labels['acll'] = 'Pronađi';
+$labels['shortacll'] = 'Pronađi';
+$labels['aclr'] = 'Pročitaj poruke';
+$labels['acls'] = 'Zadrži stanje pregleda';
+$labels['aclw'] = 'Oznake za pisanje';
+$labels['acli'] = 'Umetni (Kopiraj u)';
+$labels['aclp'] = 'Objavi';
+$labels['shortaclp'] = 'Objavi';
+$labels['aclc'] = 'Napravi podfoldere';
+$labels['aclk'] = 'Napravi podfoldere';
+$labels['acld'] = 'Obriši poruke';
+$labels['aclt'] = 'Obriši poruke';
+$labels['acle'] = 'Izbriši';
+$labels['shortacle'] = 'Izbriši';
+$labels['aclx'] = 'Obriši folder';
+$labels['acla'] = 'Administracija';
+$labels['shortacla'] = 'Administracija';
+$labels['aclfull'] = 'Puna kontrola';
+$labels['aclother'] = 'Ostalo';
+$labels['shortaclother'] = 'Ostalo';
+$labels['aclread'] = 'Pročitano';
+$labels['shortaclr'] = 'Pročitano';
+$labels['shortaclread'] = 'Pročitano';
+$labels['aclwrite'] = 'Piši';
+$labels['shortaclw'] = 'Piši';
+$labels['shortaclwrite'] = 'Piši';
+$labels['acldelete'] = 'Obriši';
+$labels['shortacld'] = 'Obriši';
+$labels['shortaclt'] = 'Obriši';
+$labels['shortacldelete'] = 'Obriši';
+$labels['shortacls'] = 'Zadrži';
+$labels['shortacli'] = 'Umetni';
+$labels['shortaclc'] = 'Kreiraj';
+$labels['shortaclk'] = 'Kreiraj';
+$labels['shortaclx'] = 'Brisanje foldera';
+$labels['longacll'] = 'Ovaj folder je vidljiv u listama i moguće je izvršiti pretplatu na njega';
+$labels['longaclr'] = 'Folder je moguće otvoriti radi čitanja';
+$labels['longaclread'] = 'Folder je moguće otvoriti radi čitanja';
+$labels['longacls'] = 'Oznaka čitanja za poruke se može promijeniti';
+$labels['longaclw'] = 'Oznake za poruke i ključne riječi je moguće promijeniti, osim za pregledano i obrisano';
+$labels['longacli'] = 'Moguće je kopirati i zapisivati poruke u folder';
+$labels['longaclp'] = 'Moguće je objavljivati poruke u ovaj folder';
+$labels['longaclc'] = 'Moguće je kreirati (ili preimenovati) foldere diretno ispod ovog foldera';
+$labels['longaclk'] = 'Moguće je kreirati (ili preimenovati) foldere diretno ispod ovog foldera';
+$labels['longacld'] = 'Oznaka za obrisane poruke se može mijenjati';
+$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['longaclfull'] = 'Puna kontrola uključujući i administraciju foldera';
+$labels['longaclwrite'] = 'Moguće je označavati, zapisivati i kopirati poruke u folder';
+$labels['longacldelete'] = 'Moguće je obrisati poruke';
+$labels['deleting'] = 'Brišem prava pristupa...';
+$labels['saving'] = 'Snimam prava pristupa...';
+$labels['updatesuccess'] = 'Prava pristupa su uspješno promijenjena';
+$labels['deletesuccess'] = 'Prava pristupa su uspješno obrisana';
+$labels['createsuccess'] = 'Prava pristupa su uspješno dodana';
+$labels['updateerror'] = 'Nije moguće ažurirati prava pristupa';
+$labels['deleteerror'] = 'Nije moguće obrisati prava pristupa';
+$labels['createerror'] = 'Nije moguće dodati prava pristupa';
+$labels['deleteconfirm'] = 'Jeste li sigurni da želite ukloniti prava pristupa za odabrane korisnike?';
+$labels['norights'] = 'Niste odabrali prava pristupa!';
+$labels['nouser'] = 'Niste odabrali korisničko ime!';
+
diff --git a/plugins/acl/localization/ca_ES.inc b/plugins/acl/localization/ca_ES.inc
new file mode 100644 (file)
index 0000000..c182736
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ca_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jordi Sanfeliu <jordi@fibranet.cat>                           |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['sharing'] = 'Comparteix';
+$labels['myrights'] = 'Permisos d\'accés';
+$labels['username'] = 'Usuari:';
+$labels['advanced'] = 'Mode avançat';
+$labels['newuser'] = 'Afegeix una entrada';
+$labels['actions'] = 'Accions dels permisos d\'accés';
+$labels['anyone'] = 'Tots els usuaris';
+$labels['anonymous'] = 'Convidats';
+$labels['identifier'] = 'Identificador';
+$labels['acll'] = 'Cerca';
+$labels['shortacll'] = 'Cerca';
+$labels['aclr'] = 'Llegeix missatges';
+$labels['acls'] = 'Conserva\'l com a llegit';
+$labels['aclw'] = 'Escriu marques';
+$labels['acli'] = 'Insereix (copia dins)';
+$labels['aclp'] = 'Envia l\'entrada';
+$labels['shortaclp'] = 'Envia l\'entrada';
+$labels['aclc'] = 'Crea subcarpetes';
+$labels['aclk'] = 'Crea subcarpetes';
+$labels['acld'] = 'Suprimeix missatges';
+$labels['aclt'] = 'Suprimeix missatges';
+$labels['acle'] = 'Buida';
+$labels['shortacle'] = 'Buida';
+$labels['aclx'] = 'Suprimeix carpeta';
+$labels['acla'] = 'Administra';
+$labels['shortacla'] = 'Administra';
+$labels['aclfull'] = 'Control total';
+$labels['aclother'] = 'Un altre';
+$labels['shortaclother'] = 'Un altre';
+$labels['aclread'] = 'Lectura';
+$labels['shortaclr'] = 'Lectura';
+$labels['shortaclread'] = 'Lectura';
+$labels['aclwrite'] = 'Escriptura';
+$labels['shortaclw'] = 'Escriptura';
+$labels['shortaclwrite'] = 'Escriptura';
+$labels['acldelete'] = 'Suprimeix';
+$labels['shortacld'] = 'Suprimeix';
+$labels['shortaclt'] = 'Suprimeix';
+$labels['shortacldelete'] = 'Suprimeix';
+$labels['shortacls'] = 'Conserva';
+$labels['shortacli'] = 'Insereix';
+$labels['shortaclc'] = 'Crea';
+$labels['shortaclk'] = 'Crea';
+$labels['shortaclx'] = 'Suprimeix carpeta';
+$labels['longacll'] = 'La carpeta és visible a les llistes i s\'hi pot subscriure';
+$labels['longaclr'] = 'La carpeta pot ser oberta per llegir';
+$labels['longaclread'] = 'La carpeta pot ser oberta per llegir';
+$labels['longacls'] = 'Els missatges marcats com a Llegit poden ser canviats';
+$labels['longaclw'] = 'Les marques i les paraules clau dels missatges poden ser canviats, excepte els Llegit i Suprimit';
+$labels['longacli'] = 'Els missatges poden ser escrits i copiats a la carpeta';
+$labels['longaclp'] = 'Els missatges poden ser enviats a aquesta carpeta';
+$labels['longaclc'] = 'Es poden crear (or reanomenar) carpetes directament sota aquesta carpeta';
+$labels['longaclk'] = 'Es poden crear (or reanomenar) carpetes directament sota aquesta carpeta';
+$labels['longacld'] = 'Poden ser canviats els missatges amb l\'indicador Suprimit';
+$labels['longaclt'] = 'Poden ser canviats els missatges amb l\'indicador Suprimit';
+$labels['longacle'] = 'Els missatges poden ser purgats';
+$labels['longaclx'] = 'La carpeta pot ser suprimida o reanomenada';
+$labels['longacla'] = 'Els permisos d\'accés a la carpeta poden ser canviats';
+$labels['longaclfull'] = 'Control total fins i tot la gestió de carpetes';
+$labels['longaclwrite'] = 'Els missatges poden ser marcats, escrits o copiats a la carpeta';
+$labels['longacldelete'] = 'Els missatges poden ser suprimits';
+$labels['deleting'] = 'Suprimint els permisos d\'accés...';
+$labels['saving'] = 'Desant els permisos d\'accés...';
+$labels['updatesuccess'] = 'Els permisos d\'accés han estat canviats correctament';
+$labels['deletesuccess'] = 'Els permisos d\'accés han estat suprimits correctament';
+$labels['createsuccess'] = 'Els permisos d\'accés han afegits suprimits correctament';
+$labels['updateerror'] = 'No s\'ha pogut actualitzar els permisos d\'accés';
+$labels['deleteerror'] = 'No s\'ha pogut suprimir els permisos d\'accés';
+$labels['createerror'] = 'No s\'ha pogut afegir els permisos d\'accés';
+$labels['deleteconfirm'] = 'Esteu segurs que voleu suprimir els permisos d\'accés de l\'usuari o usuaris seleccionats?';
+$labels['norights'] = 'No s\'ha especificat cap permís';
+$labels['nouser'] = 'No s\'ha especificat cap nom d\'usuari';
+
diff --git a/plugins/acl/localization/cs_CZ.inc b/plugins/acl/localization/cs_CZ.inc
new file mode 100644 (file)
index 0000000..f37acf6
--- /dev/null
@@ -0,0 +1,76 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/cs_CZ/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Martin Bárta <martin.bartama@gmail.com>                      |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['sharing'] = 'Sdílení';
+$labels['myrights'] = 'Přístupová práva';
+$labels['username'] = 'Uživatel:';
+$labels['advanced'] = 'pokročilý režim';
+$labels['newuser'] = 'Přidat záznam';
+$labels['anyone'] = 'Všichni uživatelé (kdokoli)';
+$labels['anonymous'] = 'Hosté (anonymní)';
+$labels['identifier'] = 'Identifikátor';
+$labels['aclr'] = 'Číst zprávy';
+$labels['aclw'] = 'Zapsat označení';
+$labels['acli'] = 'Vložit (Kopírovat do)';
+$labels['aclp'] = 'Odeslat';
+$labels['shortaclp'] = 'Odeslat';
+$labels['aclc'] = 'Vytvořit podsložky';
+$labels['aclk'] = 'Vytvořit podsložky';
+$labels['acld'] = 'Smazat zprávy';
+$labels['aclt'] = 'Smazat zprávy';
+$labels['acle'] = 'Vyprázdnit';
+$labels['shortacle'] = 'Vyprázdnit';
+$labels['aclx'] = 'Smazat složku';
+$labels['acla'] = 'Spravovat';
+$labels['shortacla'] = 'Spravovat';
+$labels['aclfull'] = 'Plný přístup';
+$labels['aclother'] = 'Ostatní';
+$labels['shortaclother'] = 'Ostatní';
+$labels['aclread'] = 'Číst';
+$labels['shortaclr'] = 'Číst';
+$labels['shortaclread'] = 'Číst';
+$labels['aclwrite'] = 'Zapsat';
+$labels['shortaclw'] = 'Zapsat';
+$labels['shortaclwrite'] = 'Zapsat';
+$labels['acldelete'] = 'Smazat';
+$labels['shortacld'] = 'Smazat';
+$labels['shortaclt'] = 'Smazat';
+$labels['shortacldelete'] = 'Smazat';
+$labels['shortacls'] = 'Zachovat';
+$labels['shortacli'] = 'Vložit';
+$labels['shortaclc'] = 'Vytvořit';
+$labels['shortaclk'] = 'Vytvořit';
+$labels['shortaclx'] = 'Mazat složky';
+$labels['longaclr'] = 'Složka může být otevřena pro čtení';
+$labels['longaclread'] = 'Složka může být otevřena pro čtení';
+$labels['longacls'] = 'Označená zpráva byla změněna';
+$labels['longaclp'] = 'Zpráva byla odeslána do složky';
+$labels['longacle'] = 'Zpráva může být smazána';
+$labels['longaclx'] = 'Složka může být smazána nebo přejmenována';
+$labels['longacla'] = 'Přístupová práva složky mohou být změněna';
+$labels['longacldelete'] = 'Zprávy mohou být smazány';
+$labels['deleting'] = 'Odstraňuji přístupová práva...';
+$labels['saving'] = 'Ukládám přístupová práva...';
+$labels['updatesuccess'] = 'Přístupová práva byla úspěšně změněna';
+$labels['deletesuccess'] = 'Přístupová páva byla úspěšně odstraněna';
+$labels['createsuccess'] = 'Přístupová práva byla úspěšně přídána';
+$labels['updateerror'] = 'Nelze upravit přístupová práva';
+$labels['deleteerror'] = 'Nelze odstranit přístupová práva';
+$labels['createerror'] = 'Nelze přidat přístupová práva';
+$labels['deleteconfirm'] = 'Opravdu si přejete odstranit přístupová práva pro vybrané(ho) uživatele?';
+$labels['norights'] = 'Nejsou specifikována žádná práva!';
+$labels['nouser'] = 'Není specifikováno uživatelské jméno';
+
diff --git a/plugins/acl/localization/cy_GB.inc b/plugins/acl/localization/cy_GB.inc
new file mode 100644 (file)
index 0000000..20dd149
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/cy_GB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Dafydd Tomos                                                  |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['sharing'] = 'Rhannu';
+$labels['myrights'] = 'Hawliau Mynediad';
+$labels['username'] = 'Defnyddiwr:';
+$labels['advanced'] = 'Modd uwch';
+$labels['newuser'] = 'Ychwanegu cofnod';
+$labels['actions'] = 'Gweithredoedd hawl mynediad...';
+$labels['anyone'] = 'Pob defnyddiwr (unrhywun)';
+$labels['anonymous'] = 'Gwestai (anhysbys)';
+$labels['identifier'] = 'Dynodwr';
+$labels['acll'] = 'Chwilio';
+$labels['shortacll'] = 'Chwilio';
+$labels['aclr'] = 'Darllen negeseuon';
+$labels['acls'] = 'Cadw stad Gwelwyd';
+$labels['aclw'] = 'Fflagiau ysgrifennu';
+$labels['acli'] = 'Mewnosod (Copïo fewn i)';
+$labels['aclp'] = 'Postio';
+$labels['shortaclp'] = 'Postio';
+$labels['aclc'] = 'Creu is-ffolderi';
+$labels['aclk'] = 'Creu is-ffolderi';
+$labels['acld'] = 'Dileu negeseuon';
+$labels['aclt'] = 'Dileu negeseuon';
+$labels['acle'] = 'Dileu';
+$labels['shortacle'] = 'Dileu';
+$labels['aclx'] = 'Dileu ffolder';
+$labels['acla'] = 'Gweinyddu';
+$labels['shortacla'] = 'Gweinyddu';
+$labels['aclfull'] = 'Rheolaeth lawn';
+$labels['aclother'] = 'Arall';
+$labels['shortaclother'] = 'Arall';
+$labels['aclread'] = 'Darllen';
+$labels['shortaclr'] = 'Darllen';
+$labels['shortaclread'] = 'Darllen';
+$labels['aclwrite'] = 'Ysgrifennu';
+$labels['shortaclw'] = 'Ysgrifennu';
+$labels['shortaclwrite'] = 'Ysgrifennu';
+$labels['acldelete'] = 'Dileu';
+$labels['shortacld'] = 'Dileu';
+$labels['shortaclt'] = 'Dileu';
+$labels['shortacldelete'] = 'Dileu';
+$labels['shortacls'] = 'Cadw';
+$labels['shortacli'] = 'Mewnosod';
+$labels['shortaclc'] = 'Creu';
+$labels['shortaclk'] = 'Creu';
+$labels['shortaclx'] = 'Dileu ffolder';
+$labels['longacll'] = 'Mae\'r ffolder hwn i\'w weld ar y rhestrau a mae\'n bosib tanysgrifio iddo';
+$labels['longaclr'] = 'Gellir agor y ffolder hwn i\'w ddarllen';
+$labels['longaclread'] = 'Gellir agor y ffolder hwn i\'w ddarllen';
+$labels['longacls'] = 'Gellir newid y fflag negeseuon Gwelwyd';
+$labels['longaclw'] = 'Gellir newid y fflagiau negeseuon a allweddeiriau, heblaw Gwelwyd a Dilëuwyd';
+$labels['longacli'] = 'Gellir ysgrifennu neu copïo negeseuon i\'r ffolder';
+$labels['longaclp'] = 'Gellir postio negeseuon i\'r ffolder hwn';
+$labels['longaclc'] = 'Gellir creu (neu ail-enwi) ffolderi yn uniongyrchol o dan y ffolder hwn';
+$labels['longaclk'] = 'Gellir creu (neu ail-enwi) ffolderi yn uniongyrchol o dan y ffolder hwn';
+$labels['longacld'] = 'Gellir newid fflag neges Dileu';
+$labels['longaclt'] = 'Gellir newid fflag neges Dileu';
+$labels['longacle'] = 'Gellir gwaredu negeseuon';
+$labels['longaclx'] = 'Gellir dileu neu ail-enwi\'r ffolder';
+$labels['longacla'] = 'Gellir newid hawliau mynediad y ffolder';
+$labels['longaclfull'] = 'Rheolaeth lawn yn cynnwys rheolaeth ffolderi';
+$labels['longaclwrite'] = 'Gellir nodi, ysgrifennu neu copïo negeseuon i\'r ffolder';
+$labels['longacldelete'] = 'Gellir dileu negeseuon';
+$labels['deleting'] = 'Yn dileu hawliau mynediad...';
+$labels['saving'] = 'Yn cadw hawliau mynediad...';
+$labels['updatesuccess'] = 'Wedi newid hawliau mynediad yn llwyddiannus';
+$labels['deletesuccess'] = 'Wedi dileu hawliau mynediad yn llwyddiannus';
+$labels['createsuccess'] = 'Wedi ychwanegu hawliau mynediad yn llwyddiannus';
+$labels['updateerror'] = 'Methwyd diweddaru hawliau mynediad';
+$labels['deleteerror'] = 'Methwyd dileu hawliau mynediad';
+$labels['createerror'] = 'Methwyd ychwanegu hawliau mynediad';
+$labels['deleteconfirm'] = 'Ydych chi\'n siwr eich bod am ddileu hawliau mynediad y defnyddiwr/wyr ddewiswyd?';
+$labels['norights'] = 'Nid oes hawliau wedi eu nodi!';
+$labels['nouser'] = 'Nid oes enw defnyddiwr wedi ei nodi!';
+
diff --git a/plugins/acl/localization/da_DK.inc b/plugins/acl/localization/da_DK.inc
new file mode 100644 (file)
index 0000000..d37e7c4
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/da_DK/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Johannes Hessellund <osos@openeyes.dk>                        |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['sharing'] = 'Deling';
+$labels['myrights'] = 'Adgangrettigheder';
+$labels['username'] = 'Bruger:';
+$labels['advanced'] = 'avanceret mode';
+$labels['newuser'] = 'Tilføj indgang';
+$labels['actions'] = 'Tilgangsrettigheder...';
+$labels['anyone'] = 'Alle brugere';
+$labels['anonymous'] = 'Gæst (anonym)';
+$labels['identifier'] = 'Identifikator';
+$labels['acll'] = 'Slå op';
+$labels['shortacll'] = 'Slå op';
+$labels['aclr'] = 'Læs beskeder';
+$labels['acls'] = 'Behold læst-status';
+$labels['aclw'] = 'Skriv flag';
+$labels['acli'] = 'Indsæt (kopier ind i)';
+$labels['aclp'] = 'Send';
+$labels['shortaclp'] = 'Send';
+$labels['aclc'] = 'Opret undermapper';
+$labels['aclk'] = 'Opret undermapper';
+$labels['acld'] = 'Slet beskeder';
+$labels['aclt'] = 'Slet beskeder';
+$labels['acle'] = 'Udslet';
+$labels['shortacle'] = 'Udslet';
+$labels['aclx'] = 'Slet mappe';
+$labels['acla'] = 'Administrer';
+$labels['shortacla'] = 'Administrer';
+$labels['aclfull'] = 'Fuld kontrol';
+$labels['aclother'] = 'Andet';
+$labels['shortaclother'] = 'Andet';
+$labels['aclread'] = 'Læse';
+$labels['shortaclr'] = 'Læse';
+$labels['shortaclread'] = 'Læse';
+$labels['aclwrite'] = 'Skrive';
+$labels['shortaclw'] = 'Skrive';
+$labels['shortaclwrite'] = 'Skrive';
+$labels['acldelete'] = 'Slet';
+$labels['shortacld'] = 'Slet';
+$labels['shortaclt'] = 'Slet';
+$labels['shortacldelete'] = 'Slet';
+$labels['shortacls'] = 'Behold';
+$labels['shortacli'] = 'Indsæt';
+$labels['shortaclc'] = 'Opret';
+$labels['shortaclk'] = 'Opret';
+$labels['shortaclx'] = 'Slet mappe';
+$labels['longacll'] = 'Mappen er synlig på listen og kan abonneres på';
+$labels['longaclr'] = 'Mappen kan åbnes for læsning';
+$labels['longaclread'] = 'Mappen kan åbnes for læsning';
+$labels['longacls'] = 'Beskeders Læst-flag kan ændres';
+$labels['longaclw'] = 'Beskeders flag og nøgleord kan ændres med undtagelse af Læst og Slettet';
+$labels['longacli'] = 'Beskeder kan blive skrevet eller kopieret til mappen';
+$labels['longaclp'] = 'Beskeder kan sendes til denne mappe';
+$labels['longaclc'] = 'Mapper kan blive oprettet (eller omdøbt) direkte under denne mappe';
+$labels['longaclk'] = 'Mapper kan blive oprettet (eller omdøbt) direkte under denne mappe';
+$labels['longacld'] = 'Beskeders Slet-flag kan ændres';
+$labels['longaclt'] = 'Beskeders Slet-flag kan ændres';
+$labels['longacle'] = 'Beskeder kan slettes';
+$labels['longaclx'] = 'Mappen kan blive slettet eller omdøbt';
+$labels['longacla'] = 'Mappen adgangsrettigheder kan ændres';
+$labels['longaclfull'] = 'Fuld kontrol inklusiv mappeadministration';
+$labels['longaclwrite'] = 'Beskeder kan blive markeret, skrevet eller kopieret til mappen';
+$labels['longacldelete'] = 'Beskeder kan slettes';
+$labels['deleting'] = 'Slette rettigheder...';
+$labels['saving'] = 'Gemme rettigheder...';
+$labels['updatesuccess'] = 'Tilgangsrettighederne blev ændret';
+$labels['deletesuccess'] = 'Sletterettigheder blev ændret';
+$labels['createsuccess'] = 'Tilgangsrettigheder blev tilføjet';
+$labels['updateerror'] = 'Kunne ikke opdatere tilgangsrettigheder';
+$labels['deleteerror'] = 'Kunne ikke slette tilgangsrettigheder';
+$labels['createerror'] = 'Kunne ikke tilføje tilgangsrettigheder';
+$labels['deleteconfirm'] = 'Er du sikker på, at du vil slette tilgangsrettigheder fra de(n) valgte bruger(e)?';
+$labels['norights'] = 'Der er ikke specificeret nogle rettigheder!';
+$labels['nouser'] = 'Der er ikke angiver et brugernavn!';
+
diff --git a/plugins/acl/localization/de_CH.inc b/plugins/acl/localization/de_CH.inc
new file mode 100644 (file)
index 0000000..f90404d
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/de_CH/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['sharing'] = 'Freigabe';
+$labels['myrights'] = 'Zugriffsrechte';
+$labels['username'] = 'Benutzer:';
+$labels['advanced'] = 'erweiterter Modus';
+$labels['newuser'] = 'Eintrag hinzufügen';
+$labels['actions'] = 'Zugriffsrechte Aktionen...';
+$labels['anyone'] = 'Alle Benutzer (anyone)';
+$labels['anonymous'] = 'Gäste (anonymous)';
+$labels['identifier'] = 'Bezeichnung';
+$labels['acll'] = 'Sichtbar';
+$labels['shortacll'] = 'Sichtbar';
+$labels['aclr'] = 'Nachrichten lesen';
+$labels['acls'] = 'Lesestatus ändern';
+$labels['aclw'] = 'Flags schreiben';
+$labels['acli'] = 'Nachrichten hinzufügen';
+$labels['aclp'] = 'Senden an';
+$labels['shortaclp'] = 'Senden an';
+$labels['aclc'] = 'Unterordner erstellen';
+$labels['aclk'] = 'Unterordner erstellen';
+$labels['acld'] = 'Nachrichten als gelöscht markieren';
+$labels['aclt'] = 'Nachrichten als gelöscht markieren';
+$labels['acle'] = 'Endgültig löschen';
+$labels['shortacle'] = 'Endgültig löschen';
+$labels['aclx'] = 'Ordner löschen';
+$labels['acla'] = 'Verwalten';
+$labels['shortacla'] = 'Verwalten';
+$labels['aclfull'] = 'Vollzugriff';
+$labels['aclother'] = 'Andere';
+$labels['shortaclother'] = 'Andere';
+$labels['aclread'] = 'Lesen';
+$labels['shortaclr'] = 'Lesen';
+$labels['shortaclread'] = 'Lesen';
+$labels['aclwrite'] = 'Schreiben';
+$labels['shortaclw'] = 'Schreiben';
+$labels['shortaclwrite'] = 'Schreiben';
+$labels['acldelete'] = 'Löschen';
+$labels['shortacld'] = 'Löschen';
+$labels['shortaclt'] = 'Löschen';
+$labels['shortacldelete'] = 'Löschen';
+$labels['shortacls'] = 'Behalte';
+$labels['shortacli'] = 'Hinzufügen';
+$labels['shortaclc'] = 'Erstellen';
+$labels['shortaclk'] = 'Erstellen';
+$labels['shortaclx'] = 'Ordner löschen';
+$labels['longacll'] = 'Der Ordner ist sichtbar und kann abonniert werden';
+$labels['longaclr'] = 'Der Ordnerinhalt kann gelesen werden';
+$labels['longaclread'] = 'Der Ordnerinhalt kann gelesen werden';
+$labels['longacls'] = 'Der Lesestatus von Nachrichten kann geändert werden';
+$labels['longaclw'] = 'Alle Nachrichten-Flags und Schlüsselwörter ausser "Gelesen" und "Gelöscht" können geändert werden';
+$labels['longacli'] = 'Nachrichten können in diesen Ordner kopiert oder verschoben werden';
+$labels['longaclp'] = 'Nachrichten können an diesen Ordner gesendet werden';
+$labels['longaclc'] = 'Unterordner können in diesem Ordner erstellt oder umbenannt werden';
+$labels['longaclk'] = 'Unterordner können in diesem Ordner erstellt oder umbenannt werden';
+$labels['longacld'] = 'Der "gelöscht" Status von Nachrichten kann geändert werden';
+$labels['longaclt'] = 'Der "gelöscht" Status von Nachrichten kann geändert werden';
+$labels['longacle'] = 'Als "gelöscht" markierte Nachrichten können entfernt werden';
+$labels['longaclx'] = 'Der Ordner kann gelöscht oder umbenannt werden';
+$labels['longacla'] = 'Die Zugriffsrechte des Ordners können geändert werden';
+$labels['longaclfull'] = 'Vollzugriff inklusive Ordner-Verwaltung';
+$labels['longaclwrite'] = 'Nachrichten können markiert, an den Ordner gesendet und in den Ordner kopiert oder verschoben werden';
+$labels['longacldelete'] = 'Nachrichten können gelöscht werden';
+$labels['deleting'] = 'Zugriffsrechte werden entzogen...';
+$labels['saving'] = 'Zugriffsrechte werden gespeichert...';
+$labels['updatesuccess'] = 'Zugriffsrechte erfolgreich geändert';
+$labels['deletesuccess'] = 'Zugriffsrechte erfolgreich entzogen';
+$labels['createsuccess'] = 'Zugriffsrechte erfolgreich hinzugefügt';
+$labels['updateerror'] = 'Zugriffsrechte konnten nicht geändert werden';
+$labels['deleteerror'] = 'Zugriffsrechte konnten nicht entzogen werden';
+$labels['createerror'] = 'Zugriffsrechte konnten nicht gewährt werden';
+$labels['deleteconfirm'] = 'Sind Sie sicher, dass Sie die Zugriffsrechte den ausgewählten Benutzern entziehen möchten?';
+$labels['norights'] = 'Es wurden keine Zugriffsrechte ausgewählt!';
+$labels['nouser'] = 'Es wurde kein Benutzer ausgewählt!';
+
index 92c7e4290eb5055a77e3273adec5d96b0f16dd35..cfb685c739eb5b858aee2b94d0e39362cfd76cf8 100644 (file)
@@ -1,5 +1,19 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/de_DE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
 $labels['sharing'] = 'Freigabe';
 $labels['myrights'] = 'Zugriffsrechte';
 $labels['username'] = 'Benutzer:';
@@ -9,48 +23,44 @@ $labels['actions'] = 'Zugriffsrechte Aktionen...';
 $labels['anyone'] = 'Alle Benutzer (anyone)';
 $labels['anonymous'] = 'Gäste (anonymous)';
 $labels['identifier'] = 'Bezeichnung';
-
-$labels['acll'] = 'Ordner sichtbar';
+$labels['acll'] = 'Sichtbar';
+$labels['shortacll'] = 'Sichtbar';
 $labels['aclr'] = 'Nachrichten lesen';
 $labels['acls'] = 'Lesestatus ändern';
 $labels['aclw'] = 'Flags schreiben';
 $labels['acli'] = 'Nachrichten Hinzufügen';
-$labels['aclp'] = 'Nachrichten Senden an';
+$labels['aclp'] = 'Senden an';
+$labels['shortaclp'] = 'Senden an';
 $labels['aclc'] = 'Unterordner erstellen';
 $labels['aclk'] = 'Unterordner erstellen';
 $labels['acld'] = 'Nachrichten als gelöscht markieren';
 $labels['aclt'] = 'Nachrichten als gelöscht markieren';
-$labels['acle'] = 'Nachrichten endgültig Löschen';
+$labels['acle'] = 'endgültig löschen';
+$labels['shortacle'] = 'endgültig löschen';
 $labels['aclx'] = 'Ordner löschen';
-$labels['acla'] = 'Zugriffsrechte Verwalten';
-
+$labels['acla'] = 'Verwalten';
+$labels['shortacla'] = 'Verwalten';
 $labels['aclfull'] = 'Vollzugriff';
 $labels['aclother'] = 'Andere';
+$labels['shortaclother'] = 'Andere';
 $labels['aclread'] = 'Lesen';
+$labels['shortaclr'] = 'Lesen';
+$labels['shortaclread'] = 'Lesen';
 $labels['aclwrite'] = 'Schreiben';
+$labels['shortaclw'] = 'Schreiben';
+$labels['shortaclwrite'] = 'Schreiben';
 $labels['acldelete'] = 'Löschen';
-
-$labels['shortacll'] = 'Sichtbar';
-$labels['shortaclr'] = 'Lesen';
+$labels['shortacld'] = 'Löschen';
+$labels['shortaclt'] = 'Löschen';
+$labels['shortacldelete'] = 'Löschen';
 $labels['shortacls'] = 'Lesestatus';
-$labels['shortaclw'] = 'Flags ändern';
 $labels['shortacli'] = 'Hinzufügen';
-$labels['shortaclp'] = 'Senden an';
 $labels['shortaclc'] = 'Erstellen';
 $labels['shortaclk'] = 'Erstellen';
-$labels['shortacld'] = 'Löschen';
-$labels['shortaclt'] = 'Löschen';
-$labels['shortacle'] = 'endgültig löschen';
 $labels['shortaclx'] = 'Ordner löschen';
-$labels['shortacla'] = 'Verwalten';
-
-$labels['shortaclother'] = 'Andere';
-$labels['shortaclread'] = 'Lesen';
-$labels['shortaclwrite'] = 'Schreiben';
-$labels['shortacldelete'] = 'Löschen';
-
 $labels['longacll'] = 'Der Ordner ist sichtbar und kann abonniert werden';
-$labels['longaclr'] = 'Nachrichten im Ordner können gelesen werden';
+$labels['longaclr'] = 'Der Ordnerinhalt kann gelesen werden';
+$labels['longaclread'] = 'Der Ordnerinhalt kann gelesen werden';
 $labels['longacls'] = 'Der Lesestatus von Nachrichten kann geändert werden';
 $labels['longaclw'] = 'Alle Nachrichten-Flags und Schlüsselwörter außer "Gelesen" und "Gelöscht" können geändert werden';
 $labels['longacli'] = 'Nachrichten können in diesen Ordner kopiert oder verschoben werden';
@@ -62,22 +72,18 @@ $labels['longaclt'] = 'Der "gelöscht" Status von Nachrichten kann geändert wer
 $labels['longacle'] = 'Als "gelöscht" markiert Nachrichten können gelöscht werden.';
 $labels['longaclx'] = 'Der Ordner kann gelöscht oder umbenannt werden';
 $labels['longacla'] = 'Die Zugriffsrechte des Ordners können geändert werden';
-
 $labels['longaclfull'] = 'Vollzugriff inklusive Ordner-Verwaltung';
-$labels['longaclread'] = 'Der Ordnerinhalt kann gelesen werden';
 $labels['longaclwrite'] = 'Nachrichten können markiert, an den Ordner gesendet und in den Ordner kopiert oder verschoben werden';
 $labels['longacldelete'] = 'Nachrichten können gelöscht werden';
+$labels['deleting'] = 'Zugriffsrechte werden entzogen...';
+$labels['saving'] = 'Zugriffsrechte werden gewährt...';
+$labels['updatesuccess'] = 'Zugriffsrechte erfolgreich geändert';
+$labels['deletesuccess'] = 'Zugriffsrechte erfolgreich entzogen';
+$labels['createsuccess'] = 'Zugriffsrechte erfolgreich gewährt';
+$labels['updateerror'] = 'Zugriffsrechte konnten nicht geändert werden';
+$labels['deleteerror'] = 'Zugriffsrechte konnten nicht entzogen werden';
+$labels['createerror'] = 'Zugriffsrechte konnten nicht gewährt werden';
+$labels['deleteconfirm'] = 'Sind Sie sicher, daß Sie die Zugriffsrechte den ausgewählten Benutzern entziehen möchten?';
+$labels['norights'] = 'Es wurden keine Zugriffsrechte ausgewählt!';
+$labels['nouser'] = 'Es wurde kein Benutzer ausgewählt!';
 
-$messages['deleting'] = 'Zugriffsrechte werden entzogen...';
-$messages['saving'] = 'Zugriffsrechte werden gewährt...';
-$messages['updatesuccess'] = 'Zugriffsrechte erfolgreich geändert';
-$messages['deletesuccess'] = 'Zugriffsrechte erfolgreich entzogen';
-$messages['createsuccess'] = 'Zugriffsrechte erfolgreich gewährt';
-$messages['updateerror'] = 'Zugriffsrechte konnten nicht geändert werden';
-$messages['deleteerror'] = 'Zugriffsrechte konnten nicht entzogen werden';
-$messages['createerror'] = 'Zugriffsrechte konnten nicht gewährt werden';
-$messages['deleteconfirm'] = 'Sind Sie sicher, daß Sie die Zugriffsrechte den ausgewählten Benutzern entziehen möchten?';
-$messages['norights'] = 'Es wurden keine Zugriffsrechte ausgewählt!';
-$messages['nouser'] = 'Es wurde kein Benutzer ausgewählt!';
-
-?>
diff --git a/plugins/acl/localization/en_GB.inc b/plugins/acl/localization/en_GB.inc
new file mode 100644 (file)
index 0000000..201cb3c
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/en_GB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Lazlo                                                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['sharing'] = 'Sharing';
+$labels['myrights'] = 'Access Rights';
+$labels['username'] = 'User:';
+$labels['advanced'] = 'advanced mode';
+$labels['newuser'] = 'Add entry';
+$labels['actions'] = 'Access right actions...';
+$labels['anyone'] = 'All users (anyone)';
+$labels['anonymous'] = 'Guests (anonymous)';
+$labels['identifier'] = 'Identifier';
+$labels['acll'] = 'Look-up';
+$labels['shortacll'] = 'Look-up';
+$labels['aclr'] = 'Read messages';
+$labels['acls'] = 'Keep Seen state';
+$labels['aclw'] = 'Write flags';
+$labels['acli'] = 'Insert (copy into)';
+$labels['aclp'] = 'Post';
+$labels['shortaclp'] = 'Post';
+$labels['aclc'] = 'Create sub-folders';
+$labels['aclk'] = 'Create sub-folders';
+$labels['acld'] = 'Delete messages';
+$labels['aclt'] = 'Delete messages';
+$labels['acle'] = 'Expunge';
+$labels['shortacle'] = 'Expunge';
+$labels['aclx'] = 'Delete folder';
+$labels['acla'] = 'Administer';
+$labels['shortacla'] = 'Administer';
+$labels['aclfull'] = 'Full control';
+$labels['aclother'] = 'Other';
+$labels['shortaclother'] = 'Other';
+$labels['aclread'] = 'Read';
+$labels['shortaclr'] = 'Read';
+$labels['shortaclread'] = 'Read';
+$labels['aclwrite'] = 'Write';
+$labels['shortaclw'] = 'Write';
+$labels['shortaclwrite'] = 'Write';
+$labels['acldelete'] = 'Delete';
+$labels['shortacld'] = 'Delete';
+$labels['shortaclt'] = 'Delete';
+$labels['shortacldelete'] = 'Delete';
+$labels['shortacls'] = 'Keep';
+$labels['shortacli'] = 'Insert';
+$labels['shortaclc'] = 'Create';
+$labels['shortaclk'] = 'Create';
+$labels['shortaclx'] = 'Folder delete';
+$labels['longacll'] = 'The folder is visible on lists and can be subscribed to.';
+$labels['longaclr'] = 'The folder can be opened for reading';
+$labels['longaclread'] = 'The folder can be opened for reading';
+$labels['longacls'] = 'Messages Seen flag can be changed';
+$labels['longaclw'] = 'Messages flags and keywords can be changed, except Seen and Deleted.';
+$labels['longacli'] = 'Messages can be written or copied to the folder';
+$labels['longaclp'] = 'Messages can be posted to this folder';
+$labels['longaclc'] = 'Folders can be created (or renamed) directly under this folder';
+$labels['longaclk'] = 'Folders can be created (or renamed) directly under this folder';
+$labels['longacld'] = 'Messages Delete flag can be changed';
+$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['longaclfull'] = 'Full control including folder administration';
+$labels['longaclwrite'] = 'Messages can be marked, written or copied to the folder';
+$labels['longacldelete'] = 'Messages can be deleted';
+$labels['deleting'] = 'Deleting access rights...';
+$labels['saving'] = 'Saving access rights...';
+$labels['updatesuccess'] = 'Successfully changed access rights';
+$labels['deletesuccess'] = 'Successfully deleted access rights';
+$labels['createsuccess'] = 'Successfully added access rights';
+$labels['updateerror'] = 'Ubable to update access rights';
+$labels['deleteerror'] = 'Unable to delete access rights';
+$labels['createerror'] = 'Unable to add access rights';
+$labels['deleteconfirm'] = 'Are you sure, you want to remove access rights of selected user(s)?';
+$labels['norights'] = 'No rights has been specified!';
+$labels['nouser'] = 'No username has been specified!';
+
diff --git a/plugins/acl/localization/eo.inc b/plugins/acl/localization/eo.inc
new file mode 100644 (file)
index 0000000..b24ebcc
--- /dev/null
@@ -0,0 +1,63 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/eo/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Michael Moroni <michael.moroni@mailoo.org>                    |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['sharing'] = 'Kunhavigado';
+$labels['myrights'] = 'Atingrajtoj';
+$labels['username'] = 'Uzanto:';
+$labels['advanced'] = 'progresinta reĝimo';
+$labels['newuser'] = 'Aldoni eron';
+$labels['actions'] = 'Agoj de atingrajtoj...';
+$labels['anyone'] = 'Ĉiuj uzantoj (iu ajn)';
+$labels['anonymous'] = 'Gasto (sennome)';
+$labels['identifier'] = 'Identigilo';
+$labels['acll'] = 'Elserĉo';
+$labels['shortacll'] = 'Elserĉo';
+$labels['aclr'] = 'Legi mesaĝojn';
+$labels['acls'] = 'Manteni legitan staton';
+$labels['acli'] = 'Enmeti (alglui)';
+$labels['aclp'] = 'Afiŝi';
+$labels['shortaclp'] = 'Afiŝi';
+$labels['aclc'] = 'Krei subdosierujojn';
+$labels['aclk'] = 'Krei subdosierujojn';
+$labels['acld'] = 'Forigi mesaĝojn';
+$labels['aclt'] = 'Forigi mesaĝojn';
+$labels['aclx'] = 'Forigi dosierujon';
+$labels['acla'] = 'Administri';
+$labels['shortacla'] = 'Administri';
+$labels['aclfull'] = 'Plena kontrolo';
+$labels['aclother'] = 'Alia';
+$labels['shortaclother'] = 'Alia';
+$labels['aclread'] = 'Legi';
+$labels['shortaclr'] = 'Legi';
+$labels['shortaclread'] = 'Legi';
+$labels['aclwrite'] = 'Skribi';
+$labels['shortaclw'] = 'Skribi';
+$labels['shortaclwrite'] = 'Skribi';
+$labels['acldelete'] = 'Forigi';
+$labels['shortacld'] = 'Forigi';
+$labels['shortaclt'] = 'Forigi';
+$labels['shortacldelete'] = 'Forigi';
+$labels['shortacls'] = 'Manteni';
+$labels['shortacli'] = 'Enmeti';
+$labels['shortaclc'] = 'Krei';
+$labels['shortaclk'] = 'Krei';
+$labels['shortaclx'] = 'Forigo de dosierujo';
+$labels['longacll'] = 'La dosierujo videblas en listoj kaj oni povas aboni al ĝi';
+$labels['longaclr'] = 'La dosierujo malfermeblas por legado';
+$labels['longaclread'] = 'La dosierujo malfermeblas por legado';
+$labels['longacli'] = 'Mesaĝoj skribeblas aŭ kopieblas en la dosierujo';
+$labels['longaclp'] = 'Mesaĝoj afiŝeblas en ĉi tiu dosierujo';
+
diff --git a/plugins/acl/localization/es_ES.inc b/plugins/acl/localization/es_ES.inc
new file mode 100644 (file)
index 0000000..a95dcc5
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/es_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: pompilos <ciordia@gmail.com>                                  |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['sharing'] = 'Compartir';
+$labels['myrights'] = 'Permisos de acceso';
+$labels['username'] = 'Usuario:';
+$labels['advanced'] = 'Modo avanzado';
+$labels['newuser'] = 'Añadir una entrada';
+$labels['actions'] = 'Acciones sobre los permisos de acceso…';
+$labels['anyone'] = 'Todos los usuarios (cualquiera)';
+$labels['anonymous'] = 'Invitados (anónimo)';
+$labels['identifier'] = 'Identificador';
+$labels['acll'] = 'Búsqueda';
+$labels['shortacll'] = 'Búsqueda';
+$labels['aclr'] = 'Leer mensajes';
+$labels['acls'] = 'Mantener como "Leído';
+$labels['aclw'] = 'Escribir etiquetas';
+$labels['acli'] = 'Insertar (Copiar dentro)';
+$labels['aclp'] = 'Enviar';
+$labels['shortaclp'] = 'Enviar';
+$labels['aclc'] = 'Crear subcarpetas';
+$labels['aclk'] = 'Crear subcarpetas';
+$labels['acld'] = 'Borrar mensajes';
+$labels['aclt'] = 'Borrar mensajes';
+$labels['acle'] = 'Expurgar';
+$labels['shortacle'] = 'Expurgar';
+$labels['aclx'] = 'Borrar carpeta';
+$labels['acla'] = 'Administrar';
+$labels['shortacla'] = 'Administrar';
+$labels['aclfull'] = 'Control total';
+$labels['aclother'] = 'Otro';
+$labels['shortaclother'] = 'Otro';
+$labels['aclread'] = 'Leer';
+$labels['shortaclr'] = 'Leer';
+$labels['shortaclread'] = 'Leer';
+$labels['aclwrite'] = 'Escribir';
+$labels['shortaclw'] = 'Escribir';
+$labels['shortaclwrite'] = 'Escribir';
+$labels['acldelete'] = 'Borrar';
+$labels['shortacld'] = 'Borrar';
+$labels['shortaclt'] = 'Borrar';
+$labels['shortacldelete'] = 'Borrar';
+$labels['shortacls'] = 'Conservar';
+$labels['shortacli'] = 'Insertar';
+$labels['shortaclc'] = 'Crear';
+$labels['shortaclk'] = 'Crear';
+$labels['shortaclx'] = 'Borrar carpeta';
+$labels['longacll'] = 'La carpeta es visible en las listas y es posible suscribirse a ella';
+$labels['longaclr'] = 'Se puede abrir la carpeta para leer';
+$labels['longaclread'] = 'Se puede abrir la carpeta para leer';
+$labels['longacls'] = 'Se pueden cambiar los mensajes con la etiqueta "Leído';
+$labels['longaclw'] = 'Las etiquetas de mensaje y las palabras clave se pueden cambiar, excepto "Leído" y "Borrado';
+$labels['longacli'] = 'Se pueden escribir mensajes o copiarlos a la carpeta';
+$labels['longaclp'] = 'Se pueden enviar mensajes a esta carpeta';
+$labels['longaclc'] = 'Se pueden crear (o renombrar) carpetas directamente bajo esta carpeta';
+$labels['longaclk'] = 'Se pueden crear (o renombrar) carpetas directamente bajo esta carpeta';
+$labels['longacld'] = 'No se pueden cambiar los mensajes etiquetados como "Borrado';
+$labels['longaclt'] = 'No se pueden cambiar los mensajes etiquetados como "Borrado';
+$labels['longacle'] = 'No se pueden expurgar los mensajes';
+$labels['longaclx'] = 'La carpeta se puede borrar o renombrar';
+$labels['longacla'] = 'Se pueden cambiar los permisos de acceso';
+$labels['longaclfull'] = 'Control total, incluyendo la gestión de carpetas';
+$labels['longaclwrite'] = 'Se pueden etiquetar, escribir o copiar mensajes a la carpeta';
+$labels['longacldelete'] = 'Los mensajes se pueden borrar';
+$labels['deleting'] = 'Borrando permisos de acceso…';
+$labels['saving'] = 'Guardando permisos de acceso…';
+$labels['updatesuccess'] = 'Se han cambiado los permisos de acceso';
+$labels['deletesuccess'] = 'Se han borrado los permisos de acceso';
+$labels['createsuccess'] = 'Se han añadido los permisos de acceso';
+$labels['updateerror'] = 'No se han podido actualizar los permisos de acceso';
+$labels['deleteerror'] = 'No se han podido borrar los permisos de acceso';
+$labels['createerror'] = 'No se han podido añadir los permisos de acceso';
+$labels['deleteconfirm'] = '¿Seguro que quiere borrar los permisos de acceso del usuairo seleccionado?';
+$labels['norights'] = 'No se han especificado los permisos de acceso';
+$labels['nouser'] = 'No se ha especificado un nombre de usuario';
+
diff --git a/plugins/acl/localization/et_EE.inc b/plugins/acl/localization/et_EE.inc
new file mode 100644 (file)
index 0000000..d8edc19
--- /dev/null
@@ -0,0 +1,32 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/et_EE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: yllar                                                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['sharing'] = 'Jagamine';
+$labels['myrights'] = 'Ligipääsuõigused';
+$labels['username'] = 'Kasutaja:';
+$labels['newuser'] = 'Lisa sissekanne';
+$labels['anonymous'] = 'Külalised (anonüümsed)';
+$labels['aclr'] = 'Lugeda kirju';
+$labels['aclc'] = 'Luua alamkaustu';
+$labels['aclk'] = 'Luua alamkaustu';
+$labels['acld'] = 'Kustutada kirju';
+$labels['aclt'] = 'Kustutada kirju';
+$labels['aclx'] = 'Kustutada kausta';
+$labels['acla'] = 'Administreerida';
+$labels['shortacla'] = 'Administreerida';
+$labels['shortaclc'] = 'Loo';
+$labels['shortaclk'] = 'Loo';
+
diff --git a/plugins/acl/localization/fa_IR.inc b/plugins/acl/localization/fa_IR.inc
new file mode 100644 (file)
index 0000000..db2c496
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fa_IR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Hamid <abbaszadeh.h@gmail.com>                                |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['sharing'] = 'اشتراک‌گذاری';
+$labels['myrights'] = 'مجوزهای دسترسی';
+$labels['username'] = 'کاربر:';
+$labels['advanced'] = 'حالت پیشرفته';
+$labels['newuser'] = 'افزودن مدخل';
+$labels['actions'] = 'فعالیت‌های مجوز دسترسی...';
+$labels['anyone'] = 'همه کاربران (هر کسی)';
+$labels['anonymous'] = 'مهمان‌ها (ناشناس‌ها)';
+$labels['identifier'] = 'شناساگر';
+$labels['acll'] = 'یافتن';
+$labels['shortacll'] = 'یافتن';
+$labels['aclr'] = 'پیام های خوانده شده';
+$labels['acls'] = 'نگه داشتن حالت بازدید';
+$labels['aclw'] = 'پرچم‌های نوشتن';
+$labels['acli'] = 'وارد کردن (کپی کردن در)';
+$labels['aclp'] = 'نوشته';
+$labels['shortaclp'] = 'نوشته';
+$labels['aclc'] = 'ایجاد زیرپوشه‌ها';
+$labels['aclk'] = 'ایجاد زیرپوشه‌ها';
+$labels['acld'] = 'پاک کردن پیغام‌ها';
+$labels['aclt'] = 'پاک کردن پیغام‌ها';
+$labels['acle'] = 'پاک کردن';
+$labels['shortacle'] = 'پاک کردن';
+$labels['aclx'] = 'حذف پوشه';
+$labels['acla'] = 'مدیر';
+$labels['shortacla'] = 'مدیر';
+$labels['aclfull'] = 'کنترل کامل';
+$labels['aclother'] = 'دیگر';
+$labels['shortaclother'] = 'دیگر';
+$labels['aclread'] = 'خوانده شده';
+$labels['shortaclr'] = 'خوانده شده';
+$labels['shortaclread'] = 'خوانده شده';
+$labels['aclwrite'] = 'نوشتن';
+$labels['shortaclw'] = 'نوشتن';
+$labels['shortaclwrite'] = 'نوشتن';
+$labels['acldelete'] = 'حذف';
+$labels['shortacld'] = 'حذف';
+$labels['shortaclt'] = 'حذف';
+$labels['shortacldelete'] = 'حذف';
+$labels['shortacls'] = 'نگه داشتن';
+$labels['shortacli'] = 'جاگذارى';
+$labels['shortaclc'] = 'ایجاد';
+$labels['shortaclk'] = 'ایجاد';
+$labels['shortaclx'] = 'حذف کردن پوشه';
+$labels['longacll'] = 'پوشه در فهرست‌ها قابل مشاهده است و می‌تواند مشترک به';
+$labels['longaclr'] = 'پوشه می‌تواند برای خواندن باز شود';
+$labels['longaclread'] = 'پوشه می‌تواند برای خواندن باز شود';
+$labels['longacls'] = 'پرچم بازدید پیغام‌ها می‌تواند تغییر داده شود';
+$labels['longaclw'] = 'پرچم و کلیدواژه پیغام‌ها می‌تواند تغییر داده شود، به غیر از بازدید و حذف';
+$labels['longacli'] = 'پیغام‌ها می‌توانند کپی یا نوشته شوند به پوشه';
+$labels['longaclp'] = 'پیغام‌ها می‌توانند پست شوند به این پوشه';
+$labels['longaclc'] = 'پوشه‌ها می‌توانند ایجاد شوند (تغییر نام داد شوند) به طور مستقیم در این پوشه';
+$labels['longaclk'] = 'پوشه‌ها می‌توانند ایجاد شوند (تغییر نام داد شوند) به طور مستقیم در این پوشه';
+$labels['longacld'] = 'پرچم حذف پیغام‌ها می‌تواند تغییر داده شود';
+$labels['longaclt'] = 'پرچم حذف پیغام‌ها می‌تواند تغییر داده شود';
+$labels['longacle'] = 'پیغام‌ها می‌توانند حذف شوند';
+$labels['longaclx'] = 'پوشه می‌تواند حذف یا تغییر نام داده شود';
+$labels['longacla'] = 'قوانین دسترسی پوشه می‌تواند تغییر داده شود';
+$labels['longaclfull'] = 'کنترل کامل شما مدیریت پوشه';
+$labels['longaclwrite'] = 'پیغام‌ها می‌توانند علامتگذاری، نوشته و یا کپی شوند در پوشه';
+$labels['longacldelete'] = 'پیغام‌ها می‌توانند حذف شوند';
+$labels['deleting'] = 'حذف کردن قوانین دسترسی...';
+$labels['saving'] = 'ذخیره قوانین دسترسی...';
+$labels['updatesuccess'] = 'قوانین دسترسی با موفقیت تغییر کردند';
+$labels['deletesuccess'] = 'قوانین دسترسی با موفقیت حذف شدند';
+$labels['createsuccess'] = 'قوانین دسترسی با موفقیت اضافه شدند';
+$labels['updateerror'] = 'ناتوانی در بروزرسانی قوانین دسترسی';
+$labels['deleteerror'] = 'ناتوانی در حذف قوانین دسترسی';
+$labels['createerror'] = 'ناتوانی در اضافه کردن قوانین دسترسی';
+$labels['deleteconfirm'] = 'آیا شما مطمئن هستید که می‌خواهید قوانین دسترسی را برای کاربر(ان) انتخاب شده حذف نمایید؟';
+$labels['norights'] = 'هیچ قانونی مشخص نشده است!';
+$labels['nouser'] = 'هیج نام‌کاربری‌ای مشخص نشده است!';
+
diff --git a/plugins/acl/localization/fi_FI.inc b/plugins/acl/localization/fi_FI.inc
new file mode 100644 (file)
index 0000000..7af5b3e
--- /dev/null
@@ -0,0 +1,61 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fi_FI/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jiri Grönroos                                                |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['sharing'] = 'Jakaminen';
+$labels['myrights'] = 'Käyttöoikeudet';
+$labels['username'] = 'Käyttäjä:';
+$labels['advanced'] = 'edistynyt tila';
+$labels['anyone'] = 'Kaikki käyttäjät (kuka tahansa)';
+$labels['anonymous'] = 'Vieraat (anonyymit)';
+$labels['aclr'] = 'Lue viestejä';
+$labels['aclc'] = 'Luo alikansioita';
+$labels['aclk'] = 'Luo alikansioita';
+$labels['acld'] = 'Poista viestejä';
+$labels['aclt'] = 'Poista viestejä';
+$labels['aclx'] = 'Poista kansio';
+$labels['aclfull'] = 'Täysi hallinta';
+$labels['aclother'] = 'Muu';
+$labels['shortaclother'] = 'Muu';
+$labels['aclread'] = 'Luku';
+$labels['shortaclr'] = 'Luku';
+$labels['shortaclread'] = 'Luku';
+$labels['aclwrite'] = 'Kirjoitus';
+$labels['shortaclw'] = 'Kirjoitus';
+$labels['shortaclwrite'] = 'Kirjoitus';
+$labels['acldelete'] = 'Poisto';
+$labels['shortacld'] = 'Poisto';
+$labels['shortaclt'] = 'Poisto';
+$labels['shortacldelete'] = 'Poisto';
+$labels['shortaclc'] = 'Luo';
+$labels['shortaclk'] = 'Luo';
+$labels['longaclr'] = 'Kansio voidaan avata lukua varten';
+$labels['longaclread'] = 'Kansio voidaan avata lukua varten';
+$labels['longaclc'] = 'Kansioita voi luoda (tai nimetä uudelleen) tämän kansion alla';
+$labels['longaclk'] = 'Kansioita voi luoda (tai nimetä uudelleen) tämän kansion alla';
+$labels['longaclx'] = 'Kansion voi poistaa tai nimetä uudelleen';
+$labels['longacla'] = 'Kansion käyttöoikeuksia voi muuttaa';
+$labels['longaclfull'] = 'Täysi hallinta mukaan lukien kansioiden ylläpidon';
+$labels['longacldelete'] = 'Viestejä voi poistaa';
+$labels['deleting'] = 'Poistetaan käyttöoikeuksia...';
+$labels['saving'] = 'Tallennetaan käyttöoikeuksia...';
+$labels['updatesuccess'] = 'Käyttöoikeudet on muutettu onnistuneesti';
+$labels['deletesuccess'] = 'Käyttöoikeudet on poistettu onnistuneesti';
+$labels['createsuccess'] = 'Käyttöoikeudet on lisätty onnistuneesti';
+$labels['deleteerror'] = 'Käyttöoikeuksien poisto epäonnistui';
+$labels['createerror'] = 'Käyttöoikeuksien lisäys epäonnistui';
+$labels['norights'] = 'Käyttöoikeuksia ei ole määritelty!';
+$labels['nouser'] = 'Käyttäjätunnusta ei ole määritelty!';
+
diff --git a/plugins/acl/localization/fr_FR.inc b/plugins/acl/localization/fr_FR.inc
new file mode 100644 (file)
index 0000000..e4239dc
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fr_FR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Tr4sK                                                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['sharing'] = 'Partage';
+$labels['myrights'] = 'Droits d\'accès';
+$labels['username'] = 'Utilisateur :';
+$labels['advanced'] = 'Mode avancé';
+$labels['newuser'] = 'Ajouter l\'entrée';
+$labels['actions'] = 'Action sur les droits d\'accès...';
+$labels['anyone'] = 'Tous les utilisateurs (tout le monde)';
+$labels['anonymous'] = 'Invités (anonymes)';
+$labels['identifier'] = 'Identifiant';
+$labels['acll'] = 'Consultation';
+$labels['shortacll'] = 'Consultation';
+$labels['aclr'] = 'Lire les messages';
+$labels['acls'] = 'Garder l\'état vu';
+$labels['aclw'] = 'Écrire une étiquette';
+$labels['acli'] = 'Insérer (Copier dans)';
+$labels['aclp'] = 'Envoyer';
+$labels['shortaclp'] = 'Envoyer';
+$labels['aclc'] = 'Créer des sous-dossiers';
+$labels['aclk'] = 'Créer des sous-dossiers';
+$labels['acld'] = 'Supprimer des messages';
+$labels['aclt'] = 'Supprimer des messages';
+$labels['acle'] = 'Purger';
+$labels['shortacle'] = 'Purger';
+$labels['aclx'] = 'Supprimer un dossier';
+$labels['acla'] = 'Administrer';
+$labels['shortacla'] = 'Administrer';
+$labels['aclfull'] = 'Contrôle total';
+$labels['aclother'] = 'Autre';
+$labels['shortaclother'] = 'Autre';
+$labels['aclread'] = 'Lecture';
+$labels['shortaclr'] = 'Lecture';
+$labels['shortaclread'] = 'Lecture';
+$labels['aclwrite'] = 'Écriture';
+$labels['shortaclw'] = 'Écriture';
+$labels['shortaclwrite'] = 'Écriture';
+$labels['acldelete'] = 'Translation can be either \'Supprimer\' or \'Effacer\'  depends of the whole context.';
+$labels['shortacld'] = 'Translation can be either \'Supprimer\' or \'Effacer\'  depends of the whole context.';
+$labels['shortaclt'] = 'Translation can be either \'Supprimer\' or \'Effacer\'  depends of the whole context.';
+$labels['shortacldelete'] = 'Translation can be either \'Supprimer\' or \'Effacer\'  depends of the whole context.';
+$labels['shortacls'] = 'Conserver';
+$labels['shortacli'] = 'Insérer';
+$labels['shortaclc'] = 'Créer';
+$labels['shortaclk'] = 'Créer';
+$labels['shortaclx'] = 'Supprimer un dossier';
+$labels['longacll'] = 'Ce dossier est visible dans les listes et peut être souscrit';
+$labels['longaclr'] = 'Le dossier peut-être ouvert pour lecture';
+$labels['longaclread'] = 'Le dossier peut-être ouvert pour lecture';
+$labels['longacls'] = 'L\'étiquette Lu peut-être changée';
+$labels['longaclw'] = 'Les étiquettes et les mot-clés peuvent-être changé, sauf pour Vu et Supprimé';
+$labels['longacli'] = 'Les messages peuvent-être écrit ou copié dans le dossier';
+$labels['longaclp'] = 'Les messages peuvent-être envoyé dans ce dossier';
+$labels['longaclc'] = 'Les dossiers peuvent-être créer (ou renommer) directement depuis ce dossier';
+$labels['longaclk'] = 'Les dossiers peuvent-être créer (ou renommer) directement depuis ce dossier';
+$labels['longacld'] = 'L\'étiquette de suppression des messages peut-être modifiée';
+$labels['longaclt'] = 'L\'étiquette de suppression des messages peut-être modifiée';
+$labels['longacle'] = 'Les messages peuvent-être purgés';
+$labels['longaclx'] = 'Le dossier peut-être supprimé ou renommé';
+$labels['longacla'] = 'Les droits d\'accès au dossier peuvent-être modifiés';
+$labels['longaclfull'] = 'Contrôle total, dossier d\'administration inclus';
+$labels['longaclwrite'] = 'Les messages peuvent-être marqué, écrit ou copié dans ce dossier';
+$labels['longacldelete'] = 'Les messages peuvent-être supprimé';
+$labels['deleting'] = 'Suppression des droits d\'accès…';
+$labels['saving'] = 'Sauvegarde des droits d\'accès…';
+$labels['updatesuccess'] = 'Les droits d\'accès ont été changé avec succès';
+$labels['deletesuccess'] = 'Les droits d\'accès ont été supprimé avec succès';
+$labels['createsuccess'] = 'Les droits d\'accès ont été ajouté avec succès';
+$labels['updateerror'] = 'Impossible de mettre à jour les droits d\'accès';
+$labels['deleteerror'] = 'Impossible de supprimer les droits d\'accès';
+$labels['createerror'] = 'Impossible d\'ajouter des droits d\'accès';
+$labels['deleteconfirm'] = 'Êtes-vous sûr de vouloir retirer les droits d\'accès du/des utilisateur(s) sélectionné ?';
+$labels['norights'] = 'Aucun droit n\'a été spécifié !';
+$labels['nouser'] = 'Aucun nom d\'utilisateur n\'a été spécifié !';
+
diff --git a/plugins/acl/localization/he_IL.inc b/plugins/acl/localization/he_IL.inc
new file mode 100644 (file)
index 0000000..83b3f82
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/he_IL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Moshe Leibovitch <moish@mln.co.il>                            |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['sharing'] = 'שיתוף';
+$labels['myrights'] = 'זכויות גישה';
+$labels['username'] = 'משתמש:';
+$labels['advanced'] = 'מצב מתקדם';
+$labels['newuser'] = 'הוסף ערך';
+$labels['actions'] = 'פעולות על זכויות גישה...';
+$labels['anyone'] = 'כל המשתמשים (כל אחד)';
+$labels['anonymous'] = 'אורחים (אנונימי)';
+$labels['identifier'] = 'מזהה';
+$labels['acll'] = 'חיפוש';
+$labels['shortacll'] = 'חיפוש';
+$labels['aclr'] = 'קריאת הודעות';
+$labels['acls'] = 'שמירה על סטטוס נראה';
+$labels['aclw'] = 'דגלי כתיבה';
+$labels['acli'] = 'הוספה בין ערכים (העתקה לתוך)';
+$labels['aclp'] = 'פרסום';
+$labels['shortaclp'] = 'פרסום';
+$labels['aclc'] = 'יצירת תת־תיקיות';
+$labels['aclk'] = 'יצירת תת־תיקיות';
+$labels['acld'] = 'מחיקת הודעות';
+$labels['aclt'] = 'מחיקת הודעות';
+$labels['acle'] = 'ניקוי רשומות שבוטלו';
+$labels['shortacle'] = 'ניקוי רשומות שבוטלו';
+$labels['aclx'] = 'מחיקת תיקיה';
+$labels['acla'] = 'מנהל';
+$labels['shortacla'] = 'מנהל';
+$labels['aclfull'] = 'שליטה מלאה';
+$labels['aclother'] = 'אחר';
+$labels['shortaclother'] = 'אחר';
+$labels['aclread'] = 'קריאה';
+$labels['shortaclr'] = 'קריאה';
+$labels['shortaclread'] = 'קריאה';
+$labels['aclwrite'] = 'כתיבה';
+$labels['shortaclw'] = 'כתיבה';
+$labels['shortaclwrite'] = 'כתיבה';
+$labels['acldelete'] = 'מחיקה';
+$labels['shortacld'] = 'מחיקה';
+$labels['shortaclt'] = 'מחיקה';
+$labels['shortacldelete'] = 'מחיקה';
+$labels['shortacls'] = 'להשאיר';
+$labels['shortacli'] = 'הוספה בין ערכים';
+$labels['shortaclc'] = 'יצירה';
+$labels['shortaclk'] = 'יצירה';
+$labels['shortaclx'] = 'מחיקת תיקיה';
+$labels['longacll'] = 'התיקיה תראה ברשימות וניתן יהיה להרשם אליה';
+$labels['longaclr'] = 'ניתן לפתוח את התיקיה ולקרוא בה';
+$labels['longaclread'] = 'ניתן לפתוח את התיקיה ולקרוא בה';
+$labels['longacls'] = 'ניתן לשנות דגל נראה בהודעות';
+$labels['longaclw'] = 'ניתן לשנות דגלים ומילות מפתח בהודעות, למעט נראה ונמחק';
+$labels['longacli'] = 'ניתן לכתוב הודעות לתיקיה או למוחקן';
+$labels['longaclp'] = 'ניתן לפרסם הודעות לתוך תיקיה זו';
+$labels['longaclc'] = 'ניתן ליצור (או לשנות שם) תיקיות, ישירות תחת תיקיה זו';
+$labels['longaclk'] = 'ניתן ליצור (או לשנות שם) תיקיות, ישירות תחת תיקיה זו';
+$labels['longacld'] = 'ניתן לשנות דגל נמחק של הודעות';
+$labels['longaclt'] = 'ניתן לשנות דגל נמחק של הודעות';
+$labels['longacle'] = 'ניתן לנקות הודעות שסומנו כמבוטלות';
+$labels['longaclx'] = 'ניתן למחוק תיקיה זו או לשנות שמה';
+$labels['longacla'] = 'ניתן לשנות זכויות גישה של תיקיה זו';
+$labels['longaclfull'] = 'שליטה מלאה כולל ניהול התיקיה';
+$labels['longaclwrite'] = 'ניתן לסמן, לכתוב או להעתיק הודעות לתיקיה זו';
+$labels['longacldelete'] = 'ניתן למחוק הודעות';
+$labels['deleting'] = 'זכויות גישה נמחקות...';
+$labels['saving'] = 'זכויות גישה נשמרות...';
+$labels['updatesuccess'] = 'זכויות גישה שונו בהצלחה';
+$labels['deletesuccess'] = 'זכויות גישה נמחקו בהצלחה';
+$labels['createsuccess'] = 'זכויות גישה נוספו בהצלחה';
+$labels['updateerror'] = 'לא ניתן לעדכן זכויות גישה';
+$labels['deleteerror'] = 'לא ניתן למחוק זכויות גישה';
+$labels['createerror'] = 'לא ניתן להוסיף זכויות גישה';
+$labels['deleteconfirm'] = 'האם ודאי שברצונך להסיר זכויות גישה של המשתמש(ים) שנבחרו?';
+$labels['norights'] = 'לא צוינו זכויות גישה כלשהן !';
+$labels['nouser'] = 'לא צוין שם משתמש כלשהו!';
+
diff --git a/plugins/acl/localization/hu_HU.inc b/plugins/acl/localization/hu_HU.inc
new file mode 100644 (file)
index 0000000..f5ca78f
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/hu_HU/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: bela                                                          |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['sharing'] = 'Megosztás';
+$labels['myrights'] = 'Hozzáférési jogok';
+$labels['username'] = 'Felhasználó:';
+$labels['advanced'] = 'Haladó beállítások';
+$labels['newuser'] = 'Elem hozzáadása';
+$labels['actions'] = 'Hozzáférési jogok müveletei..';
+$labels['anyone'] = 'Minden felhasználó (bárki)';
+$labels['anonymous'] = 'Vendégek (névtelen)';
+$labels['identifier'] = 'Azonosító';
+$labels['acll'] = 'Keresés';
+$labels['shortacll'] = 'Keresés';
+$labels['aclr'] = 'Üzenetek olvasása';
+$labels['acls'] = 'Olvasottsági állapot megtartása';
+$labels['aclw'] = 'Üzenet jelölése';
+$labels['acli'] = 'Beillesztés (Bemásolás)';
+$labels['aclp'] = 'Bejegyzés';
+$labels['shortaclp'] = 'Bejegyzés';
+$labels['aclc'] = 'Almappa létrehozás';
+$labels['aclk'] = 'Almappa létrehozás';
+$labels['acld'] = 'Üzenetek törlése';
+$labels['aclt'] = 'Üzenetek törlése';
+$labels['acle'] = 'Törölt üzenetek eltávolítása';
+$labels['shortacle'] = 'Törölt üzenetek eltávolítása';
+$labels['aclx'] = 'Mappa törlés';
+$labels['acla'] = 'Adminisztrátor';
+$labels['shortacla'] = 'Adminisztrátor';
+$labels['aclfull'] = 'Teljes hozzáférés';
+$labels['aclother'] = 'Egyéb';
+$labels['shortaclother'] = 'Egyéb';
+$labels['aclread'] = 'Olvasás';
+$labels['shortaclr'] = 'Olvasás';
+$labels['shortaclread'] = 'Olvasás';
+$labels['aclwrite'] = 'Írás';
+$labels['shortaclw'] = 'Írás';
+$labels['shortaclwrite'] = 'Írás';
+$labels['acldelete'] = 'Törlés';
+$labels['shortacld'] = 'Törlés';
+$labels['shortaclt'] = 'Törlés';
+$labels['shortacldelete'] = 'Törlés';
+$labels['shortacls'] = 'Megtartás';
+$labels['shortacli'] = 'Beszúrás';
+$labels['shortaclc'] = 'Létrehozás';
+$labels['shortaclk'] = 'Létrehozás';
+$labels['shortaclx'] = 'Mappa törlése';
+$labels['longacll'] = 'A mappa látható a listán és fel tudsz rá iratkozni.';
+$labels['longaclr'] = 'A mappa olvasásra megnyitható';
+$labels['longaclread'] = 'A mappa olvasásra megnyitható';
+$labels['longacls'] = 'Az üzenet megtekintési állapota módosítható';
+$labels['longaclw'] = 'Az üzenetek jelölései és kulcsszavai módosíthatóak, kivéve az olvasottsági állapotot és az üzenet törölt állapotát.';
+$labels['longacli'] = 'Üzenetek irhatóak és máolshatóak a mappába.';
+$labels['longaclp'] = 'Ebbe a mappába tudsz  üzeneteket tenni.';
+$labels['longaclc'] = 'Mappák létrehozhazóak (átnevezhetőek) ez alatt a mappa alatt.';
+$labels['longaclk'] = 'Mappák létrehozhazóak (átnevezhetőek) ez alatt a mappa alatt.';
+$labels['longacld'] = 'Üzenet törölve jelző módositható.';
+$labels['longaclt'] = 'Üzenet törölve jelző módositható.';
+$labels['longacle'] = 'Az üzenetek véglegesen eltávolíthatóak';
+$labels['longaclx'] = 'A mappa törölhető vagy átnevezhető';
+$labels['longacla'] = 'A mappa hozzáférési jogai módosíthatóak';
+$labels['longaclfull'] = 'Teljes hozzáférés beleértve a mappák kezelését';
+$labels['longaclwrite'] = 'Az üzenetek megjelölhetök, irhatók és másolhatók ebbe a mappába';
+$labels['longacldelete'] = 'Az üzenetek törölhetőek';
+$labels['deleting'] = 'Hozzáférési jogok törlése...';
+$labels['saving'] = 'Hozzáférési jogok mentése...';
+$labels['updatesuccess'] = 'A hozzáférési jogok sikeresen módosultak.';
+$labels['deletesuccess'] = 'A hozzáférési jogok törlése sikeresen megtörtént.';
+$labels['createsuccess'] = 'A hozzáférési jogok hozzáadása sikeresen megtörtént.';
+$labels['updateerror'] = 'Nem sikerült módosítani a hozzáférési jogokat.';
+$labels['deleteerror'] = 'Nem sikerült törölni a hozzáférési jogokat.';
+$labels['createerror'] = 'Nem sikerült a hozzáférési jogok hozzáadása';
+$labels['deleteconfirm'] = 'Biztosan eltávolítja a kiválasztott felhasználó(k) hozzáférési jogait?';
+$labels['norights'] = 'Nincsennek jogok megadva.';
+$labels['nouser'] = 'A felhasználónév nincs megadva.';
+
diff --git a/plugins/acl/localization/hy_AM.inc b/plugins/acl/localization/hy_AM.inc
new file mode 100644 (file)
index 0000000..8629298
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/hy_AM/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Vahan Yerkanian <vahan@yerkanian.com>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['sharing'] = 'Կիսվել';
+$labels['myrights'] = 'Մուտքի իրավունքներ';
+$labels['username'] = 'Օգտատեր`';
+$labels['advanced'] = 'Ընդլայնված տարբերակ';
+$labels['newuser'] = 'Ավելացնել գրառում';
+$labels['actions'] = 'Մուտքի իրավունքների գործողություններ…';
+$labels['anyone'] = 'Բոլոր օգտվողները (ցանկացած)';
+$labels['anonymous'] = 'Հյուրերը (անանուն)';
+$labels['identifier'] = 'Նկարագրիչ';
+$labels['acll'] = 'Փնտրում';
+$labels['shortacll'] = 'Փնտրում';
+$labels['aclr'] = 'Կարդալ հաղորդագրությունները';
+$labels['acls'] = 'Պահպանել դիտման կարգավիճակը';
+$labels['aclw'] = 'Գրառման նշումներ';
+$labels['acli'] = 'Ներդնել (Պատճենել ներս)';
+$labels['aclp'] = 'Հրապարակել';
+$labels['shortaclp'] = 'Հրապարակել';
+$labels['aclc'] = 'Ստեղծել ենթապանակներ';
+$labels['aclk'] = 'Ստեղծել ենթապանակներ';
+$labels['acld'] = 'Ջնջել հաղորդագրությունները';
+$labels['aclt'] = 'Ջնջել հաղորդագրությունները';
+$labels['acle'] = 'Հեռացնել';
+$labels['shortacle'] = 'Հեռացնել';
+$labels['aclx'] = 'Ջնջել պանակը';
+$labels['acla'] = 'Կառավարել';
+$labels['shortacla'] = 'Կառավարել';
+$labels['aclfull'] = 'Լրիվ վերահսկում';
+$labels['aclother'] = 'Այլ';
+$labels['shortaclother'] = 'Այլ';
+$labels['aclread'] = 'Կարդալ';
+$labels['shortaclr'] = 'Կարդալ';
+$labels['shortaclread'] = 'Կարդալ';
+$labels['aclwrite'] = 'Գրել';
+$labels['shortaclw'] = 'Գրել';
+$labels['shortaclwrite'] = 'Գրել';
+$labels['acldelete'] = 'Ջնջել';
+$labels['shortacld'] = 'Ջնջել';
+$labels['shortaclt'] = 'Ջնջել';
+$labels['shortacldelete'] = 'Ջնջել';
+$labels['shortacls'] = 'Պահել';
+$labels['shortacli'] = 'Ներդնել';
+$labels['shortaclc'] = 'Ստեղծել';
+$labels['shortaclk'] = 'Ստեղծել';
+$labels['shortaclx'] = 'Պանակի ջնջում';
+$labels['longacll'] = 'Պանակը երևում է ցուցակներում և նրան հնարավոր է բաժանորդագրվել';
+$labels['longaclr'] = 'Պանակը կարող է բացվել ընթերցման համար';
+$labels['longaclread'] = 'Պանակը կարող է բացվել ընթերցման համար';
+$labels['longacls'] = 'Տեսված հաղորդագրությունների նշումը կարող է փոփոխվել';
+$labels['longaclw'] = 'Հաղորդագրությունների նշումները և հիմնաբառերը կարող են փոփոխվել, բացառությամբ Տեսած և Ջնջված նշումների';
+$labels['longacli'] = 'Հաղորդագրությունները կարող են գրվել և պատճենվել պանակի մեջ';
+$labels['longaclp'] = 'Հաղորդագրությունները կարող են հրապարակվել այս պանակում';
+$labels['longaclc'] = 'Պանակները կարող են ստեղծվել (կամ վերանվանվել) այս պանակում';
+$labels['longaclk'] = 'Պանակները կարող են ստեղծվել (կամ վերանվանվել) այս պանակում';
+$labels['longacld'] = 'Հաղորդագրությունների Ջնջել նշումը կարող է փոփոխվել';
+$labels['longaclt'] = 'Հաղորդագրությունների Ջնջել նշումը կարող է փոփոխվել';
+$labels['longacle'] = 'Հաղորդագրությունները կարող են հեռացվել';
+$labels['longaclx'] = 'Պանակը կարող է ջնջվել կամ վերանվանվել';
+$labels['longacla'] = 'Պանակի մուտքի իրավունքները կարող են փոփոխվել';
+$labels['longaclfull'] = 'Լրիվ վերահսկում ներառյալ պանակների կառավարումը';
+$labels['longaclwrite'] = 'Հաղորդագրությունները կարող են նշվել, ստեղծվել և պատճենվել այս պանակում';
+$labels['longacldelete'] = 'Հաղորդագրությունները կարող են ջնջվել';
+$labels['deleting'] = 'Ջնջվում են մուտքի իրավունքները…';
+$labels['saving'] = 'Պահպանվում են մուտքի իրավունքները…';
+$labels['updatesuccess'] = 'Մուտքի իրավունքները բարեհաջող փոփոխվեցին։';
+$labels['deletesuccess'] = 'Մուտքի իրավունքները բարեհաջող ջնջվեցին։';
+$labels['createsuccess'] = 'Մուտքի իրավունքները բարեհաջող ավելացվեցվին։';
+$labels['updateerror'] = 'Մուտքի իրավունքները թարմացումը ձախողվեց։';
+$labels['deleteerror'] = 'Մուտքի իրավունքները ջնջումը ձախողվեց։';
+$labels['createerror'] = 'Մուտքի իրավունքները ավելացումը ձախողվեց։';
+$labels['deleteconfirm'] = 'Դուք վստա՞հ էք, որ ցանկանում եք նշված օգտվողներին զրկել մուտքի իրավունքներից։';
+$labels['norights'] = 'Ոչ մի իրավունք չի՛ նշվել։';
+$labels['nouser'] = 'Օգտվողի անունը չի՛ նշվել։';
+
diff --git a/plugins/acl/localization/it_IT.inc b/plugins/acl/localization/it_IT.inc
new file mode 100644 (file)
index 0000000..ce3751c
--- /dev/null
@@ -0,0 +1,80 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/it_IT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Andrea Bernini <andrea.bernini@gmail.com>                     |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['sharing'] = 'Condivisione';
+$labels['myrights'] = 'Diritti d\'accesso';
+$labels['username'] = 'Utente:';
+$labels['advanced'] = 'modalità avanzata';
+$labels['newuser'] = 'Aggiungi voce';
+$labels['anyone'] = 'Tutti gli utenti';
+$labels['anonymous'] = 'Osptiti (anonimi)';
+$labels['identifier'] = 'Identificatore';
+$labels['acll'] = 'Ricerca';
+$labels['shortacll'] = 'Ricerca';
+$labels['aclr'] = 'Leggi messaggi';
+$labels['acls'] = 'Mantieni lo stato Visto';
+$labels['aclw'] = 'Flag di scrittura';
+$labels['acli'] = 'Inserisci (Copia in)';
+$labels['aclc'] = 'Crea sottocartelle';
+$labels['aclk'] = 'Crea sottocartelle';
+$labels['acld'] = 'Elimina messaggi';
+$labels['aclt'] = 'Elimina messaggi';
+$labels['aclx'] = 'Elimina cartella';
+$labels['acla'] = 'Amministra';
+$labels['shortacla'] = 'Amministra';
+$labels['aclfull'] = 'Controllo completo';
+$labels['aclother'] = 'Altri';
+$labels['shortaclother'] = 'Altri';
+$labels['aclread'] = 'Lettura';
+$labels['shortaclr'] = 'Lettura';
+$labels['shortaclread'] = 'Lettura';
+$labels['aclwrite'] = 'Scrittura';
+$labels['shortaclw'] = 'Scrittura';
+$labels['shortaclwrite'] = 'Scrittura';
+$labels['acldelete'] = 'Elimina';
+$labels['shortacld'] = 'Elimina';
+$labels['shortaclt'] = 'Elimina';
+$labels['shortacldelete'] = 'Elimina';
+$labels['shortacls'] = 'Mantieni';
+$labels['shortacli'] = 'Inserisci';
+$labels['shortaclc'] = 'Crea';
+$labels['shortaclk'] = 'Crea';
+$labels['shortaclx'] = 'Cancella cartella';
+$labels['longacll'] = 'La cartella è visibile sulle liste e può essere sottoscritta';
+$labels['longaclr'] = 'Questa cartella può essere aperta in lettura';
+$labels['longaclread'] = 'Questa cartella può essere aperta in lettura';
+$labels['longacls'] = 'Il flag Messaggio Visto può essere cambiato';
+$labels['longaclw'] = 'I flag dei messaggi e le keywords possono essere cambiati, ad esclusione di Visto ed Eliminato';
+$labels['longacli'] = 'I messaggi possono essere scritti o copiati nella cartella';
+$labels['longacld'] = 'Il flag Messaggio Eliminato può essere cambiato';
+$labels['longaclt'] = 'Il flag Messaggio Eliminato può essere cambiato';
+$labels['longaclx'] = 'La cartella può essere eliminata o rinominata';
+$labels['longacla'] = 'I diritti di accesso della cartella possono essere cambiati';
+$labels['longaclfull'] = 'Controllo completo incluso cartella di amministrazione';
+$labels['longaclwrite'] = 'I messaggi possono essere marcati, scritti o copiati nella cartella';
+$labels['longacldelete'] = 'I messaggi possono essere eliminati';
+$labels['deleting'] = 'Sto eliminando i diritti di accesso...';
+$labels['saving'] = 'Sto salvando i diritti di accesso...';
+$labels['updatesuccess'] = 'I diritti d\'accesso sono stati cambiati';
+$labels['deletesuccess'] = 'I diritti d\'accesso sono stati eliminati';
+$labels['createsuccess'] = 'I diritti d\'accesso sono stati aggiunti';
+$labels['updateerror'] = 'Impossibile aggiornare i diritti d\'accesso';
+$labels['deleteerror'] = 'Impossibile eliminare i diritti d\'accesso';
+$labels['createerror'] = 'Impossibile aggiungere i diritti d\'accesso';
+$labels['deleteconfirm'] = 'Sei sicuro, vuoi rimuovere i diritti d\'accesso degli utenti selezionati?';
+$labels['norights'] = 'Nessun diritto specificato!';
+$labels['nouser'] = 'Lo username non è stato specificato!';
+
diff --git a/plugins/acl/localization/ja_JP.inc b/plugins/acl/localization/ja_JP.inc
new file mode 100644 (file)
index 0000000..3f915e2
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ja_JP/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Takahiro Kambe                                                |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['sharing'] = '共有';
+$labels['myrights'] = 'アクセス権';
+$labels['username'] = 'ユーザー:';
+$labels['advanced'] = '詳細なモード';
+$labels['newuser'] = '項目を追加';
+$labels['actions'] = 'アクセス権の動作...';
+$labels['anyone'] = '(誰でも)すべてのユーザー';
+$labels['anonymous'] = 'ゲスト(匿名)';
+$labels['identifier'] = '識別子';
+$labels['acll'] = '検索';
+$labels['shortacll'] = '検索';
+$labels['aclr'] = 'メッセージを読む';
+$labels['acls'] = '既読の状態を保持';
+$labels['aclw'] = '書き込みフラッグ';
+$labels['acli'] = '挿入(中に複製)';
+$labels['aclp'] = '投稿';
+$labels['shortaclp'] = '投稿';
+$labels['aclc'] = 'サブフォルダを作成';
+$labels['aclk'] = 'サブフォルダを作成';
+$labels['acld'] = 'メッセージを削除';
+$labels['aclt'] = 'メッセージを削除';
+$labels['acle'] = '抹消';
+$labels['shortacle'] = '抹消';
+$labels['aclx'] = 'フォルダーを削除';
+$labels['acla'] = '管理';
+$labels['shortacla'] = '管理';
+$labels['aclfull'] = '完全な制御';
+$labels['aclother'] = 'その他';
+$labels['shortaclother'] = 'その他';
+$labels['aclread'] = '読み込み';
+$labels['shortaclr'] = '読み込み';
+$labels['shortaclread'] = '読み込み';
+$labels['aclwrite'] = '書き込み';
+$labels['shortaclw'] = '書き込み';
+$labels['shortaclwrite'] = '書き込み';
+$labels['acldelete'] = '削除';
+$labels['shortacld'] = '削除';
+$labels['shortaclt'] = '削除';
+$labels['shortacldelete'] = '削除';
+$labels['shortacls'] = '保持';
+$labels['shortacli'] = '挿入';
+$labels['shortaclc'] = '作成';
+$labels['shortaclk'] = '作成';
+$labels['shortaclx'] = 'フォルダーの削除';
+$labels['longacll'] = 'フォルダーをリストに見えるようにして登録可能:';
+$labels['longaclr'] = 'フォルダーを読むことを可能';
+$labels['longaclread'] = 'フォルダーを読むことを可能';
+$labels['longacls'] = 'メッセージの既読のフラッグの変更を可能';
+$labels['longaclw'] = '既読と削除のフラッグを除く、メッセージのフラッグとキーワードの変更を可能';
+$labels['longacli'] = 'メッセージに書き込みとフォルダーへの複製を可能';
+$labels['longaclp'] = 'メッセージをこのフォルダーに投稿を可能';
+$labels['longaclc'] = 'このフォルダーの直下にフォルダーの作成と名前の変更を可能';
+$labels['longaclk'] = 'このフォルダーの直下にフォルダーの作成と名前の変更を可能';
+$labels['longacld'] = 'メッセージの削除フラッグの変更を可能';
+$labels['longaclt'] = 'メッセージの削除フラッグの変更を可能';
+$labels['longacle'] = 'メッセージの抹消を可能';
+$labels['longaclx'] = 'このフォルダーの削除や名前の変更を可能';
+$labels['longacla'] = 'フォルダーのアクセス権の変更を可能';
+$labels['longaclfull'] = 'フォルダーの管理を含めた完全な制御を可能';
+$labels['longaclwrite'] = 'メッセージにマークの設定、書き込み、フォルダーに複製を可能';
+$labels['longacldelete'] = 'メッセージの削除を可能';
+$labels['deleting'] = 'アクセス権を削除中...';
+$labels['saving'] = 'アクセス権を保存中...';
+$labels['updatesuccess'] = 'アクセス権を変更しました。';
+$labels['deletesuccess'] = 'アクセス権を削除しました。';
+$labels['createsuccess'] = 'アクセス権を追加しました。';
+$labels['updateerror'] = 'アクセス権を更新できません。';
+$labels['deleteerror'] = 'アクセス権を削除できません。';
+$labels['createerror'] = 'アクセス権を追加できません。';
+$labels['deleteconfirm'] = '選択したユーザーのアクセス件を本当に削除したいですか?';
+$labels['norights'] = '何の権限も指定されていません!';
+$labels['nouser'] = 'ユーザー名を指定していません!';
+
diff --git a/plugins/acl/localization/ko_KR.inc b/plugins/acl/localization/ko_KR.inc
new file mode 100644 (file)
index 0000000..54f7d40
--- /dev/null
@@ -0,0 +1,55 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ko_KR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kim, Woohyun <woohyun.kim@gmail.com>                          |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['sharing'] = '공유';
+$labels['myrights'] = '접근 권한';
+$labels['username'] = '사용자:';
+$labels['newuser'] = '엔트리 추가';
+$labels['identifier'] = '식별자';
+$labels['acls'] = '읽은 상태로 유지';
+$labels['aclp'] = '게시';
+$labels['shortaclp'] = '게시';
+$labels['aclc'] = '하위 폴더 만들기';
+$labels['aclk'] = '하위 폴더 만들기';
+$labels['acld'] = '메시지 삭제';
+$labels['aclt'] = '메시지 삭제';
+$labels['aclx'] = '폴더 삭제';
+$labels['acla'] = '관리자';
+$labels['shortacla'] = '관리자';
+$labels['shortaclx'] = '폴더 삭제';
+$labels['longacli'] = '폴더에 메시지를 복사하거나 작성할 수 있음';
+$labels['longaclp'] = '이 폴더로 메시지를 게시할 수 있음';
+$labels['longaclc'] = '이 폴더의 바로 밑에 폴더를 생성(또는 이름 변경)할 수 있음';
+$labels['longaclk'] = '이 폴더의 바로 밑에 폴더를 생성(또는 이름 변경)할 수 있음';
+$labels['longacld'] = '메시지 삭제 플래그가 변경될 수 있음';
+$labels['longaclt'] = '메시지 삭제 플래그가 변경될 수 있음';
+$labels['longaclx'] = '폴더를 삭제하거나 이름 변경 할 수 있음';
+$labels['longacla'] = '폴더의 접근 권한을 변경할 수 있음';
+$labels['longaclfull'] = '폴더 관리를 포함한 모든 제어권';
+$labels['longaclwrite'] = '메시지에 표시하거나, 폴더로 메시지를 복사하거나 작성할 수 있음';
+$labels['longacldelete'] = '메시지를 삭제할 수 있음';
+$labels['deleting'] = '접근 권한 삭제 중...';
+$labels['saving'] = '접근 권한 저장 중...';
+$labels['updatesuccess'] = '접근 권한을 변경하는데 성공 함.';
+$labels['deletesuccess'] = '접근 권한을 삭제하는데 성공 함.';
+$labels['createsuccess'] = '접근 권한을 추가하는데 성공 함.';
+$labels['updateerror'] = '접근 권한을 갱신할 수 없음.';
+$labels['deleteerror'] = '접근 권한을 삭제할 수 없음.';
+$labels['createerror'] = '접근 권한을 추가할 수 없음.';
+$labels['deleteconfirm'] = '선택한 사용자(들)의 접근 권한을 삭제하고자 하는 것이 확실 합니까?';
+$labels['norights'] = '지정된 권한이 없음!';
+$labels['nouser'] = '지정된 username이 없음!';
+
diff --git a/plugins/acl/localization/nb_NB.inc b/plugins/acl/localization/nb_NB.inc
new file mode 100644 (file)
index 0000000..7b660b7
--- /dev/null
@@ -0,0 +1,40 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/nb_NB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Peter Grindem <peter@grindem.no>                              |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['sharing'] = 'Deling';
+$labels['myrights'] = 'Tilgangsrettigheter';
+$labels['username'] = 'Bruker:';
+$labels['advanced'] = 'Avansert modus';
+$labels['newuser'] = 'Legg til oppføring';
+$labels['anyone'] = 'Alle brukere (alle)';
+$labels['anonymous'] = 'Gjester (anononyme)';
+$labels['identifier'] = 'Identifikator';
+$labels['acll'] = 'Oppslag';
+$labels['shortacll'] = 'Oppslag';
+$labels['aclr'] = 'Les meldinger';
+$labels['acli'] = 'Lim inn';
+$labels['aclp'] = 'Post';
+$labels['shortaclp'] = 'Post';
+$labels['aclc'] = 'Opprett undermapper';
+$labels['aclk'] = 'Opprett undermapper';
+$labels['acld'] = 'Slett meldinger';
+$labels['aclt'] = 'Slett meldinger';
+$labels['acle'] = 'Slett fullstendig';
+$labels['shortacle'] = 'Slett fullstendig';
+$labels['aclx'] = 'Slett mappe';
+$labels['acla'] = 'Administrer';
+$labels['shortacla'] = 'Administrer';
+
diff --git a/plugins/acl/localization/nl_NL.inc b/plugins/acl/localization/nl_NL.inc
new file mode 100644 (file)
index 0000000..68dcc7f
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/nl_NL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Geert Wirken                                                  |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['sharing'] = 'Delen';
+$labels['myrights'] = 'Toegangsrechten';
+$labels['username'] = 'Gebruiker:';
+$labels['advanced'] = 'geavanceerde modus';
+$labels['newuser'] = 'Item toevoegen';
+$labels['actions'] = 'Toegangsrechtenopties...';
+$labels['anyone'] = 'Alle gebruikers (iedereen)';
+$labels['anonymous'] = 'Gasten (anoniem)';
+$labels['identifier'] = 'Identificatie';
+$labels['acll'] = 'Opzoeken';
+$labels['shortacll'] = 'Opzoeken';
+$labels['aclr'] = 'Berichten lezen';
+$labels['acls'] = 'Onthoud gelezen-status';
+$labels['aclw'] = 'Markeringen instellen';
+$labels['acli'] = 'Invoergen (kopiëren naar)';
+$labels['aclp'] = 'Plaatsen';
+$labels['shortaclp'] = 'Plaatsen';
+$labels['aclc'] = 'Submappen aanmaken';
+$labels['aclk'] = 'Submappen aanmaken';
+$labels['acld'] = 'Berichten verwijderen';
+$labels['aclt'] = 'Berichten verwijderen';
+$labels['acle'] = 'Vernietigen';
+$labels['shortacle'] = 'Vernietigen';
+$labels['aclx'] = 'Map verwijderen';
+$labels['acla'] = 'Beheren';
+$labels['shortacla'] = 'Beheren';
+$labels['aclfull'] = 'Volledige toegang';
+$labels['aclother'] = 'Overig';
+$labels['shortaclother'] = 'Overig';
+$labels['aclread'] = 'Lezen';
+$labels['shortaclr'] = 'Lezen';
+$labels['shortaclread'] = 'Lezen';
+$labels['aclwrite'] = 'Schrijven';
+$labels['shortaclw'] = 'Schrijven';
+$labels['shortaclwrite'] = 'Schrijven';
+$labels['acldelete'] = 'Verwijderen';
+$labels['shortacld'] = 'Verwijderen';
+$labels['shortaclt'] = 'Verwijderen';
+$labels['shortacldelete'] = 'Verwijderen';
+$labels['shortacls'] = 'Behouden';
+$labels['shortacli'] = 'Invoegen';
+$labels['shortaclc'] = 'Aanmaken';
+$labels['shortaclk'] = 'Aanmaken';
+$labels['shortaclx'] = 'Map verwijderen';
+$labels['longacll'] = 'De map is zichtbaar in lijsten en het is mogelijk om te abonneren op deze map';
+$labels['longaclr'] = 'De map kan geopend worden om te lezen';
+$labels['longaclread'] = 'De map kan geopend worden om te lezen';
+$labels['longacls'] = 'De berichtmarkering \'Gelezen\' kan aangepast worden';
+$labels['longaclw'] = 'Berichtmarkeringen en labels kunnen aangepast worden, behalve \'Gelezen\' en \'Verwijderd\'';
+$labels['longacli'] = 'Berichten kunnen opgesteld worden of gekopieerd worden naar deze map';
+$labels['longaclp'] = 'Berichten kunnen geplaatst worden in deze map';
+$labels['longaclc'] = 'Mappen kunnen aangemaakt of hernoemd worden rechtstreeks onder deze map';
+$labels['longaclk'] = 'Mappen kunnen aangemaakt of hernoemd worden rechtstreeks onder deze map';
+$labels['longacld'] = 'De berichtmarkering \'Verwijderd\' kan aangepast worden';
+$labels['longaclt'] = 'De berichtmarkering \'Verwijderd\' kan aangepast worden';
+$labels['longacle'] = 'Berichten kunnen vernietigd worden';
+$labels['longaclx'] = 'De map kan verwijderd of hernoemd worden';
+$labels['longacla'] = 'De toegangsrechten voor deze map kunnen veranderd worden';
+$labels['longaclfull'] = 'Volledige controle inclusief mappenbeheer';
+$labels['longaclwrite'] = 'Berichten kunnen gemarkeerd worden, opgesteld worden of gekopieerd worden naar deze map';
+$labels['longacldelete'] = 'Berichten kunnen verwijderd worden';
+$labels['deleting'] = 'Toegangsrechten worden verwijderd...';
+$labels['saving'] = 'Toegangsrechten worden opgeslagen...';
+$labels['updatesuccess'] = 'Toegangsrechten succesvol veranderd';
+$labels['deletesuccess'] = 'Toegangsrechten succesvol verwijderd';
+$labels['createsuccess'] = 'Toegangsrechten succesvol toegevoegd';
+$labels['updateerror'] = 'Toegangsrechten kunnen niet bijgewerkt worden';
+$labels['deleteerror'] = 'Toegangsrechten kunnen niet verwijderd worden';
+$labels['createerror'] = 'Toegangsrechten kunnen niet toegevoegd worden';
+$labels['deleteconfirm'] = 'Weet u zeker dat u de toegangsrechten van de geselecteerde gebruiker(s) wilt verwijderen?';
+$labels['norights'] = 'Er zijn geen toegangsrechten opgegeven!';
+$labels['nouser'] = 'Er is geen gebruikersnaam opgegeven!';
+
index 0b3689927eb67dd5e2a149f33c0e45e9d407ba43..b8007f0253a59c913cf980f2af39091612156d18 100644 (file)
@@ -1,5 +1,19 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/pl_PL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
 $labels['sharing'] = 'Udostępnianie';
 $labels['myrights'] = 'Prawa dostępu';
 $labels['username'] = 'Użytkownik:';
@@ -9,50 +23,46 @@ $labels['actions'] = 'Akcje na prawach...';
 $labels['anyone'] = 'Wszyscy (anyone)';
 $labels['anonymous'] = 'Goście (anonymous)';
 $labels['identifier'] = 'Identyfikator';
-
-$labels['acll'] = 'Podgląd (Lookup)';
+$labels['acll'] = 'Podgląd';
+$labels['shortacll'] = 'Podgląd';
 $labels['aclr'] = 'Odczyt (Read)';
 $labels['acls'] = 'Zmiana stanu wiadomości (Keep)';
 $labels['aclw'] = 'Zmiana flag wiadomości (Write)';
 $labels['acli'] = 'Dodawanie/Kopiowanie do (Insert)';
-$labels['aclp'] = 'Wysyłanie (Post)';
+$labels['aclp'] = 'Wysyłanie';
+$labels['shortaclp'] = 'Wysyłanie';
 $labels['aclc'] = 'Tworzenie podfolderów (Create)';
 $labels['aclk'] = 'Tworzenie podfolderów (Create)';
 $labels['acld'] = 'Usuwanie wiadomości (Delete)';
 $labels['aclt'] = 'Usuwanie wiadomości (Delete)';
-$labels['acle'] = 'Porządkowanie folderu (Expunge)';
+$labels['acle'] = 'Porządkowanie';
+$labels['shortacle'] = 'Porządkowanie';
 $labels['aclx'] = 'Usuwanie folderu (Delete)';
-$labels['acla'] = 'Administracja (Administer)';
-
+$labels['acla'] = 'Administracja';
+$labels['shortacla'] = 'Administracja';
 $labels['aclfull'] = 'Wszystkie';
-$labels['aclother'] = 'Inne';
+$labels['aclother'] = 'Pozostałe';
+$labels['shortaclother'] = 'Pozostałe';
 $labels['aclread'] = 'Odczyt';
+$labels['shortaclr'] = 'Odczyt';
+$labels['shortaclread'] = 'Odczyt';
 $labels['aclwrite'] = 'Zapis';
+$labels['shortaclw'] = 'Zapis';
+$labels['shortaclwrite'] = 'Zapis';
 $labels['acldelete'] = 'Usuwanie';
-
-$labels['shortacll'] = 'Podgląd';
-$labels['shortaclr'] = 'Odczyt';
+$labels['shortacld'] = 'Usuwanie';
+$labels['shortaclt'] = 'Usuwanie';
+$labels['shortacldelete'] = 'Usuwanie';
 $labels['shortacls'] = 'Zmiana';
-$labels['shortaclw'] = 'Zmiana flag';
 $labels['shortacli'] = 'Dodawanie';
-$labels['shortaclp'] = 'Wysyłanie';
 $labels['shortaclc'] = 'Tworzenie';
 $labels['shortaclk'] = 'Tworzenie';
-$labels['shortacld'] = 'Usuwanie';
-$labels['shortaclt'] = 'Usuwanie';
-$labels['shortacle'] = 'Porządkowanie';
 $labels['shortaclx'] = 'Usuwanie folderu';
-$labels['shortacla'] = 'Administracja';
-
-$labels['shortaclother'] = 'Pozostałe';
-$labels['shortaclread'] = 'Odczyt';
-$labels['shortaclwrite'] = 'Zapis';
-$labels['shortacldelete'] = 'Usuwanie';
-
 $labels['longacll'] = 'Pozwala na subskrybowanie folderu i powoduje, że jest on widoczny na liście';
-$labels['longaclr'] = 'Pozwala na otwarcie folderu w trybie do odczytu';
+$labels['longaclr'] = 'Folder może być otwarty w trybie do odczytu';
+$labels['longaclread'] = 'Folder może być otwarty w trybie do odczytu';
 $labels['longacls'] = 'Pozwala na zmienę stanu wiadomości';
-$labels['longaclw'] = 'Pozwala zmieniać wszystkie flagi wiadomości, oprócz "Przeczytano" i "Usunięto"';
+$labels['longaclw'] = 'Pozwala zmieniać wszystkie flagi wiadomości, oprócz "Przeczytano" i "Usunięto';
 $labels['longacli'] = 'Pozwala zapisywać wiadomości i kopiować do folderu';
 $labels['longaclp'] = 'Pozwala wysyłać wiadomości do folderu';
 $labels['longaclc'] = 'Pozwala tworzyć (lub zmieniać nazwę) podfoldery';
@@ -62,22 +72,18 @@ $labels['longaclt'] = 'Pozwala zmianiać flagę "Usunięto" wiadomości';
 $labels['longacle'] = 'Pozwala na usuwanie wiadomości oznaczonych do usunięcia';
 $labels['longaclx'] = 'Pozwala na zmianę nazwy lub usunięcie folderu';
 $labels['longacla'] = 'Pozwala na zmiane praw dostępu do folderu';
-
 $labels['longaclfull'] = 'Pełna kontrola włącznie z administrowaniem folderem';
-$labels['longaclread'] = 'Folder może być otwarty w trybie do odczytu';
 $labels['longaclwrite'] = 'Wiadomości mogą być oznaczane, zapisywane i kopiowane do folderu';
 $labels['longacldelete'] = 'Wiadomości mogą być usuwane';
+$labels['deleting'] = 'Usuwanie praw dostępu...';
+$labels['saving'] = 'Zapisywanie praw dostępu...';
+$labels['updatesuccess'] = 'Pomyślnie zmieniono prawa dostępu';
+$labels['deletesuccess'] = 'Pomyślnie usunięto prawa dostępu';
+$labels['createsuccess'] = 'Pomyślnie dodano prawa dostępu';
+$labels['updateerror'] = 'Nie udało się zmienić praw dostępu';
+$labels['deleteerror'] = 'Nie udało się usunąć praw dostępu';
+$labels['createerror'] = 'Nie udało się dodać praw dostępu';
+$labels['deleteconfirm'] = 'Czy na pewno chcesz usunąć prawa wybranym użytkownikom?';
+$labels['norights'] = 'Nie wybrano praw dostępu!';
+$labels['nouser'] = 'Nie podano nazwy użytkownika!';
 
-$messages['deleting'] = 'Usuwanie praw dostępu...';
-$messages['saving'] = 'Zapisywanie praw dostępu...';
-$messages['updatesuccess'] = 'Pomyślnie zmieniono prawa dostępu';
-$messages['deletesuccess'] = 'Pomyślnie usunięto prawa dostępu';
-$messages['createsuccess'] = 'Pomyślnie dodano prawa dostępu';
-$messages['updateerror'] = 'Nie udało się zmienić praw dostępu';
-$messages['deleteerror'] = 'Nie udało się usunąć praw dostępu';
-$messages['createerror'] = 'Nie udało się dodać praw dostępu';
-$messages['deleteconfirm'] = 'Czy na pewno chcesz usunąć prawa wybranym użytkownikom?';
-$messages['norights'] = 'Nie wybrano praw dostępu!';
-$messages['nouser'] = 'Nie podano nazwy użytkownika!';
-
-?>
diff --git a/plugins/acl/localization/pt_BR.inc b/plugins/acl/localization/pt_BR.inc
new file mode 100644 (file)
index 0000000..2e48283
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/pt_BR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Claudio F Filho <filhocf@gmail.com>                           |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['sharing'] = 'Compartilhamento';
+$labels['myrights'] = 'Permissões de Acesso';
+$labels['username'] = 'Usuário:';
+$labels['advanced'] = 'modo avançado';
+$labels['newuser'] = 'Adicionar entrada';
+$labels['actions'] = 'Ações de direito de acesso...';
+$labels['anyone'] = 'Todos os usuários (qualquer um)';
+$labels['anonymous'] = 'Convidados (anônimos)';
+$labels['identifier'] = 'Identificador';
+$labels['acll'] = 'Pesquisar';
+$labels['shortacll'] = 'Pesquisar';
+$labels['aclr'] = 'Ler mensagens';
+$labels['acls'] = 'Manter estado de enviado';
+$labels['aclw'] = 'Salvar marcadores';
+$labels['acli'] = 'Inserir (Cópia em)';
+$labels['aclp'] = 'Enviar';
+$labels['shortaclp'] = 'Enviar';
+$labels['aclc'] = 'Criar subpastas';
+$labels['aclk'] = 'Criar subpastas';
+$labels['acld'] = 'Apagar mensagens';
+$labels['aclt'] = 'Apagar mensagens';
+$labels['acle'] = 'Expurgar';
+$labels['shortacle'] = 'Expurgar';
+$labels['aclx'] = 'Apagar pasta';
+$labels['acla'] = 'Administrar';
+$labels['shortacla'] = 'Administrar';
+$labels['aclfull'] = 'Controle total';
+$labels['aclother'] = 'Outro';
+$labels['shortaclother'] = 'Outro';
+$labels['aclread'] = 'Ler';
+$labels['shortaclr'] = 'Ler';
+$labels['shortaclread'] = 'Ler';
+$labels['aclwrite'] = 'Salvar';
+$labels['shortaclw'] = 'Salvar';
+$labels['shortaclwrite'] = 'Salvar';
+$labels['acldelete'] = 'Excluir';
+$labels['shortacld'] = 'Excluir';
+$labels['shortaclt'] = 'Excluir';
+$labels['shortacldelete'] = 'Excluir';
+$labels['shortacls'] = 'Manter';
+$labels['shortacli'] = 'Inserir';
+$labels['shortaclc'] = 'Criar';
+$labels['shortaclk'] = 'Criar';
+$labels['shortaclx'] = 'Excluir pasta';
+$labels['longacll'] = 'A pasta está visível nas listas e pode ser inscrita para';
+$labels['longaclr'] = 'A pasta pode ser aberta para leitura';
+$labels['longaclread'] = 'A pasta pode ser aberta para leitura';
+$labels['longacls'] = 'Marcador de Mensagem Enviada pode ser modificadas';
+$labels['longaclw'] = 'Marcadores de mensagens e palavras-chave podem ser modificadas, exceto de Enviadas e Excluídas';
+$labels['longacli'] = 'As mensagens podem ser escritas ou copiadas para a pasta';
+$labels['longaclp'] = 'As mensagens podem ser enviadas para esta pasta';
+$labels['longaclc'] = 'As pastas podem ser criadas (ou renomeadas) diretamente sob esta pasta';
+$labels['longaclk'] = 'As pastas podem ser criadas (ou renomeadas) diretamente sob esta pasta';
+$labels['longacld'] = 'O marcador de Mensagens Excluídas podem ser modificadas';
+$labels['longaclt'] = 'O marcador de Mensagens Excluídas podem ser modificadas';
+$labels['longacle'] = 'As mensagens podem ser expurgadas';
+$labels['longaclx'] = 'A pasta pode ser apagada ou renomeada';
+$labels['longacla'] = 'As permissões de acesso da pasta podem ser alteradas';
+$labels['longaclfull'] = 'Controle total incluindo a pasta de administração';
+$labels['longaclwrite'] = 'As mensagens podem ser marcadas, salvas ou copiadas para a pasta';
+$labels['longacldelete'] = 'Mensagens podem ser apagadas';
+$labels['deleting'] = 'Apagando permissões de acesso...';
+$labels['saving'] = 'Salvando permissões de acesso...';
+$labels['updatesuccess'] = 'Permissões de acesso alteradas com sucesso';
+$labels['deletesuccess'] = 'Permissões de acesso apagadas com sucesso';
+$labels['createsuccess'] = 'Permissões de acesso adicionadas com sucesso';
+$labels['updateerror'] = 'Não foi possível atualizar as permissões de acesso';
+$labels['deleteerror'] = 'Não foi possível apagar as permissões de acesso';
+$labels['createerror'] = 'Não foi possível adicionar as permissões de acesso';
+$labels['deleteconfirm'] = 'Tem certeza que deseja remover as permissões de acesso do(s) usuário(s) delecionado(s)?';
+$labels['norights'] = 'Não foram definidas permissões!';
+$labels['nouser'] = 'Nome de usuário não especificado!';
+
diff --git a/plugins/acl/localization/pt_PT.inc b/plugins/acl/localization/pt_PT.inc
new file mode 100644 (file)
index 0000000..72c595a
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/pt_PT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: David                                                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['sharing'] = 'Partilhar';
+$labels['myrights'] = 'Permissões de acesso';
+$labels['username'] = 'Utilizador:';
+$labels['advanced'] = 'Modo avançado';
+$labels['newuser'] = 'Adicionar entrada';
+$labels['actions'] = 'Acções de permissão de acesso...';
+$labels['anyone'] = 'Todos os utilizadores (todos)';
+$labels['anonymous'] = 'Convidado (anónimo)';
+$labels['identifier'] = 'Identificador';
+$labels['acll'] = 'Pesquisar';
+$labels['shortacll'] = 'Pesquisar';
+$labels['aclr'] = 'Ler mensagens';
+$labels['acls'] = 'Manter estado de enviado';
+$labels['aclw'] = 'Guardar marcadores';
+$labels['acli'] = 'Inserir (cópia em)';
+$labels['aclp'] = 'Publicar';
+$labels['shortaclp'] = 'Publicar';
+$labels['aclc'] = 'Criar subpastas';
+$labels['aclk'] = 'Criar subpastas';
+$labels['acld'] = 'Eliminar mensagens';
+$labels['aclt'] = 'Eliminar mensagens';
+$labels['acle'] = 'Eliminar';
+$labels['shortacle'] = 'Eliminar';
+$labels['aclx'] = 'Eliminar pasta';
+$labels['acla'] = 'Administrar';
+$labels['shortacla'] = 'Administrar';
+$labels['aclfull'] = 'Controlo total';
+$labels['aclother'] = 'Outro';
+$labels['shortaclother'] = 'Outro';
+$labels['aclread'] = 'Ler';
+$labels['shortaclr'] = 'Ler';
+$labels['shortaclread'] = 'Ler';
+$labels['aclwrite'] = 'Guardar';
+$labels['shortaclw'] = 'Guardar';
+$labels['shortaclwrite'] = 'Guardar';
+$labels['acldelete'] = 'Eliminar';
+$labels['shortacld'] = 'Eliminar';
+$labels['shortaclt'] = 'Eliminar';
+$labels['shortacldelete'] = 'Eliminar';
+$labels['shortacls'] = 'Manter';
+$labels['shortacli'] = 'Inserir';
+$labels['shortaclc'] = 'Criar';
+$labels['shortaclk'] = 'Criar';
+$labels['shortaclx'] = 'Eliminar pasta';
+$labels['longacll'] = 'A pasta está visível na lista e pode subscrita para';
+$labels['longaclr'] = 'A pasta pode ser aberta para leitura';
+$labels['longaclread'] = 'A pasta pode ser aberta para leitura';
+$labels['longacls'] = 'O marcador de mensagem enviada pode ser alterado';
+$labels['longaclw'] = 'Marcadores de mensagens e palavras-chave podem ser alterados, excepto de Enviadas e Eliminadas';
+$labels['longacli'] = 'As mensagens podem ser escritas e copiadas para a pasta';
+$labels['longaclp'] = 'As mensagens podem ser publicadas na pasta';
+$labels['longaclc'] = 'As pastas podem ser criadas (ou renomeadas) directamente nesta pasta';
+$labels['longaclk'] = 'As pastas podem ser criadas (ou renomeadas) directamente nesta pasta';
+$labels['longacld'] = 'O marcador de mensagens Eliminadas pode ser alterado';
+$labels['longaclt'] = 'O marcador de mensagens Eliminadas pode ser alterado';
+$labels['longacle'] = 'As mensagens podem ser eliminadas';
+$labels['longaclx'] = 'A pasta pode ser eliminada ou renomeada';
+$labels['longacla'] = 'As permissões de acesso da pasta podem ser alteradas';
+$labels['longaclfull'] = 'Controlo total incluindo administração da pasta';
+$labels['longaclwrite'] = 'As mensagens podem ser marcadas, guardadas ou copiadas para a pasta';
+$labels['longacldelete'] = 'As mensagens podem ser eliminadas';
+$labels['deleting'] = 'A eliminar as permissões de acesso...';
+$labels['saving'] = 'A guardar as permissões de acesso...';
+$labels['updatesuccess'] = 'Permissões de acesso alteradas com sucesso';
+$labels['deletesuccess'] = 'Permissões de acesso eliminadas com sucesso';
+$labels['createsuccess'] = 'Permissões de acesso adicionadas com sucesso';
+$labels['updateerror'] = 'Não foi possível actualizar as permissões de acesso';
+$labels['deleteerror'] = 'Não foi possível eliminar as permissões de acesso';
+$labels['createerror'] = 'Não foi possível adicionar as permissões de acesso';
+$labels['deleteconfirm'] = 'Tem a certeza que pretende remover as permissões de acesso do(s) utilizador(es) seleccionado(s)?';
+$labels['norights'] = 'Não foram especificadas quaisquer permissões!';
+$labels['nouser'] = 'Não foi especificado nenhum nome de utilizador!';
+
diff --git a/plugins/acl/localization/ru_RU.inc b/plugins/acl/localization/ru_RU.inc
new file mode 100644 (file)
index 0000000..f50610a
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ru_RU/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Vahan Yerkanian <vahan@yerkanian.com>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['sharing'] = 'Совместный доступ';
+$labels['myrights'] = 'Права доступа';
+$labels['username'] = 'Пользователь:';
+$labels['advanced'] = 'Экспертный режим';
+$labels['newuser'] = 'Добавить поле';
+$labels['actions'] = 'Действия с правами доступа...';
+$labels['anyone'] = 'Все пользователи (любые)';
+$labels['anonymous'] = 'Гости (анонимные)';
+$labels['identifier'] = 'Идентификатор';
+$labels['acll'] = 'Поиск';
+$labels['shortacll'] = 'Поиск';
+$labels['aclr'] = 'Прочитать сообщения';
+$labels['acls'] = 'Оставить состояние Увидено';
+$labels['aclw'] = 'Флаги записи';
+$labels['acli'] = 'Вставить (копировать в...)';
+$labels['aclp'] = 'Отправить';
+$labels['shortaclp'] = 'Отправить';
+$labels['aclc'] = 'Создать вложенные папки';
+$labels['aclk'] = 'Создать вложенные папки';
+$labels['acld'] = 'Удалить сообщения';
+$labels['aclt'] = 'Удалить сообщения';
+$labels['acle'] = 'Уничтожить сообщения';
+$labels['shortacle'] = 'Уничтожить сообщения';
+$labels['aclx'] = 'Удалить папку';
+$labels['acla'] = 'Администрировать';
+$labels['shortacla'] = 'Администрировать';
+$labels['aclfull'] = 'Полный доступ';
+$labels['aclother'] = 'Другое';
+$labels['shortaclother'] = 'Другое';
+$labels['aclread'] = 'Чтение';
+$labels['shortaclr'] = 'Чтение';
+$labels['shortaclread'] = 'Чтение';
+$labels['aclwrite'] = 'Запись';
+$labels['shortaclw'] = 'Запись';
+$labels['shortaclwrite'] = 'Запись';
+$labels['acldelete'] = 'Удаление';
+$labels['shortacld'] = 'Удаление';
+$labels['shortaclt'] = 'Удаление';
+$labels['shortacldelete'] = 'Удаление';
+$labels['shortacls'] = 'Оставить';
+$labels['shortacli'] = 'Вставить';
+$labels['shortaclc'] = 'Создать';
+$labels['shortaclk'] = 'Создать';
+$labels['shortaclx'] = 'Удаление папки';
+$labels['longacll'] = 'Папка видима в списках и доступна для подписки';
+$labels['longaclr'] = 'Эта папка может быть открыта для чтения';
+$labels['longaclread'] = 'Эта папка может быть открыта для чтения';
+$labels['longacls'] = 'Флаг Прочитано может быть изменен';
+$labels['longaclw'] = 'Флаги и ключевые слова, кроме Прочитано и Удалено, могут быть изменены';
+$labels['longacli'] = 'Сообщения могут быть записаны или скопированы в папку';
+$labels['longaclp'] = 'Сообщения могут быть отправлены в эту папку';
+$labels['longaclc'] = 'Подпапки могут быть созданы или переименованы прямо в этой папке';
+$labels['longaclk'] = 'Подпапки могут быть созданы или переименованы прямо в этой папке';
+$labels['longacld'] = 'Флаг Удалено может быть изменен';
+$labels['longaclt'] = 'Флаг Удалено может быть изменен';
+$labels['longacle'] = 'Сообщения могут быть уничтожены';
+$labels['longaclx'] = 'Эта папка может быть переименована или удалена';
+$labels['longacla'] = 'Права доступа к папке могут быть изменены';
+$labels['longaclfull'] = 'Полный доступ, включая управление папкой';
+$labels['longaclwrite'] = 'Сообщения можно помечать, записывать или копировать в папку';
+$labels['longacldelete'] = 'Сообщения можно удалять';
+$labels['deleting'] = 'Удаление прав доступа...';
+$labels['saving'] = 'Сохранение прав доступа...';
+$labels['updatesuccess'] = 'Права доступа успешно изменены';
+$labels['deletesuccess'] = 'Права доступа успешно удалены';
+$labels['createsuccess'] = 'Успешно добавлены права доступа';
+$labels['updateerror'] = 'Невозможно обновить права доступа';
+$labels['deleteerror'] = 'Невозможно удалить права доступа';
+$labels['createerror'] = 'Невозможно добавить права доступа';
+$labels['deleteconfirm'] = 'Вы уверены в том, что хотите удалить права доступа выбранных пользователей?';
+$labels['norights'] = 'Права доступа не установлены!';
+$labels['nouser'] = 'Не определено имя пользователя!';
+
diff --git a/plugins/acl/localization/sk_SK.inc b/plugins/acl/localization/sk_SK.inc
new file mode 100644 (file)
index 0000000..d83a87a
--- /dev/null
@@ -0,0 +1,44 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sk_SK/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: panda                                                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['sharing'] = 'Zdieľanie';
+$labels['myrights'] = 'Prístupové práva';
+$labels['username'] = 'Užívateľ:';
+$labels['advanced'] = 'pokročilý mód';
+$labels['newuser'] = 'Pridať údaj';
+$labels['anyone'] = 'Všetci užívatelia (ktokoľvek)';
+$labels['anonymous'] = 'Hostia (anonymne)';
+$labels['identifier'] = 'Identifikátor';
+$labels['acll'] = 'Hľadanie';
+$labels['shortacll'] = 'Hľadanie';
+$labels['aclr'] = 'Čítať správy';
+$labels['acli'] = 'Vložiť (kopírovať do)';
+$labels['aclc'] = 'Vytvoriť podpriečinky';
+$labels['aclk'] = 'Vytvoriť podpriečinky';
+$labels['acld'] = 'Zmazať správy';
+$labels['aclt'] = 'Zmazať správy';
+$labels['aclx'] = 'Zmazať priečinok';
+$labels['acla'] = 'Spravovať';
+$labels['shortacla'] = 'Spravovať';
+$labels['acldelete'] = 'Zmazať';
+$labels['shortacld'] = 'Zmazať';
+$labels['shortaclt'] = 'Zmazať';
+$labels['shortacldelete'] = 'Zmazať';
+$labels['shortacls'] = 'Ponechať';
+$labels['shortacli'] = 'Vložiť';
+$labels['shortaclc'] = 'Vytvoriť';
+$labels['shortaclk'] = 'Vytvoriť';
+
diff --git a/plugins/acl/localization/sl_SI.inc b/plugins/acl/localization/sl_SI.inc
new file mode 100644 (file)
index 0000000..e644c9d
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sl_SI/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Teja Cetinski <teja.cetinski@gmail.com>                       |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['sharing'] = 'Skupna raba';
+$labels['myrights'] = 'Pravice dostopa';
+$labels['username'] = 'Uporabnik:';
+$labels['advanced'] = 'Napredni način';
+$labels['newuser'] = 'Dodaj vnos';
+$labels['actions'] = 'Nastavitve pravic dostopa';
+$labels['anyone'] = 'Vsi uporabniki';
+$labels['anonymous'] = 'Gosti';
+$labels['identifier'] = 'Označevalnik';
+$labels['acll'] = 'Iskanje';
+$labels['shortacll'] = 'Iskanje';
+$labels['aclr'] = 'Prebrana sporočila';
+$labels['acls'] = 'Ohrani status \'Prebrano\'';
+$labels['aclw'] = 'Označi pisanje sporočila';
+$labels['acli'] = 'Vstavi (Kopiraj v)';
+$labels['aclp'] = 'Objava';
+$labels['shortaclp'] = 'Objava';
+$labels['aclc'] = 'Ustvari podmape';
+$labels['aclk'] = 'Ustvari podmape';
+$labels['acld'] = 'Izbriši sporočila';
+$labels['aclt'] = 'Izbriši sporočila';
+$labels['acle'] = 'Izbriši';
+$labels['shortacle'] = 'Izbriši';
+$labels['aclx'] = 'Izbriši mapo';
+$labels['acla'] = 'Uredi';
+$labels['shortacla'] = 'Uredi';
+$labels['aclfull'] = 'Popolno upravljanje';
+$labels['aclother'] = 'Ostalo';
+$labels['shortaclother'] = 'Ostalo';
+$labels['aclread'] = 'Preberi';
+$labels['shortaclr'] = 'Preberi';
+$labels['shortaclread'] = 'Preberi';
+$labels['aclwrite'] = 'Sestavi';
+$labels['shortaclw'] = 'Sestavi';
+$labels['shortaclwrite'] = 'Sestavi';
+$labels['acldelete'] = 'Izbriši';
+$labels['shortacld'] = 'Izbriši';
+$labels['shortaclt'] = 'Izbriši';
+$labels['shortacldelete'] = 'Izbriši';
+$labels['shortacls'] = 'Ohrani';
+$labels['shortacli'] = 'Vstavi';
+$labels['shortaclc'] = 'Ustvari';
+$labels['shortaclk'] = 'Ustvari';
+$labels['shortaclx'] = 'Izbriši mapo';
+$labels['longacll'] = 'Mapa je vidna na seznamih in jo lahko naročite';
+$labels['longaclr'] = 'Mapa je na voljo za branje';
+$labels['longaclread'] = 'Mapa je na voljo za branje';
+$labels['longacls'] = 'Oznaka \'Prebrano sporočilo\' je lahko spremenjena';
+$labels['longaclw'] = 'Oznake sporočil in ključne besede je mogoče spremeniti, z izjemo oznak "Prebrano" in "Izbrisano';
+$labels['longacli'] = 'Sporočilo je lahko poslano ali kopirano v mapo';
+$labels['longaclp'] = 'Sporočilo je lahko poslano v to mapo';
+$labels['longaclc'] = 'V tej mapi so lahko ustvarjene (ali preimenovane) podmape';
+$labels['longaclk'] = 'V tej mapi so lahko ustvarjene (ali preimenovane) podmape';
+$labels['longacld'] = 'Oznako sporočila  \'Izbrisano\' je mogoče spremeniti';
+$labels['longaclt'] = 'Oznako sporočila  \'Izbrisano\' je mogoče spremeniti';
+$labels['longacle'] = 'Sporočila so lahko izbrisana';
+$labels['longaclx'] = 'Mapa je lahko izbrisana ali preimenovana';
+$labels['longacla'] = 'Pravice na mapi so lahko spremenjene';
+$labels['longaclfull'] = 'Popolno upravljanje, vključno z urejanjem map';
+$labels['longaclwrite'] = 'Sporočila je mogoče označiti, sestaviti ali kopirati v mapo';
+$labels['longacldelete'] = 'Sporočila so lahko izbrisana';
+$labels['deleting'] = 'Brisanje pravic';
+$labels['saving'] = 'Shranjevanje pravic';
+$labels['updatesuccess'] = 'Pravice so bile uspešno spremenjene';
+$labels['deletesuccess'] = 'Pravice so bile uspešno izbrisane';
+$labels['createsuccess'] = 'Pravice so bile uspešno dodane';
+$labels['updateerror'] = 'Pravic ni mogoče posodobiti';
+$labels['deleteerror'] = 'Pravic ni mogoče izbrisati';
+$labels['createerror'] = 'Pravic ni bilo mogoče dodati';
+$labels['deleteconfirm'] = 'Ste prepričani, da želite odstraniti pravice dostopa za izbrane uporabnike?';
+$labels['norights'] = 'Pravic niste določili';
+$labels['nouser'] = 'Niste določili uporabnišlega imena';
+
diff --git a/plugins/acl/localization/sv_SE.inc b/plugins/acl/localization/sv_SE.inc
new file mode 100644 (file)
index 0000000..a2f41dc
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sv_SE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jonas Nasholm                                                 |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['sharing'] = 'Utdelning';
+$labels['myrights'] = 'Åtkomsträttigheter';
+$labels['username'] = 'Användare:';
+$labels['advanced'] = 'avancerat läge';
+$labels['newuser'] = 'Lägg till';
+$labels['actions'] = 'Hantera åtkomsträttigheter...';
+$labels['anyone'] = 'Alla användare (alla)';
+$labels['anonymous'] = 'Gäster (anonyma)';
+$labels['identifier'] = 'Identifikation';
+$labels['acll'] = 'Uppslagning';
+$labels['shortacll'] = 'Uppslagning';
+$labels['aclr'] = 'Läs meddelanden';
+$labels['acls'] = 'Behåll status Sett';
+$labels['aclw'] = 'Skriv flaggor';
+$labels['acli'] = 'Infoga (kopiera in)';
+$labels['aclp'] = 'Posta';
+$labels['shortaclp'] = 'Posta';
+$labels['aclc'] = 'Skapa underkataloger';
+$labels['aclk'] = 'Skapa underkataloger';
+$labels['acld'] = 'Ta bort meddelanden';
+$labels['aclt'] = 'Ta bort meddelanden';
+$labels['acle'] = 'Utplåna';
+$labels['shortacle'] = 'Utplåna';
+$labels['aclx'] = 'Ta bort katalog';
+$labels['acla'] = 'Administrera';
+$labels['shortacla'] = 'Administrera';
+$labels['aclfull'] = 'Full kontroll';
+$labels['aclother'] = 'Övrig';
+$labels['shortaclother'] = 'Övrig';
+$labels['aclread'] = 'Läs';
+$labels['shortaclr'] = 'Läs';
+$labels['shortaclread'] = 'Läs';
+$labels['aclwrite'] = 'Skriv';
+$labels['shortaclw'] = 'Skriv';
+$labels['shortaclwrite'] = 'Skriv';
+$labels['acldelete'] = 'Ta bort';
+$labels['shortacld'] = 'Ta bort';
+$labels['shortaclt'] = 'Ta bort';
+$labels['shortacldelete'] = 'Ta bort';
+$labels['shortacls'] = 'Behåll';
+$labels['shortacli'] = 'Infoga';
+$labels['shortaclc'] = 'Skapa';
+$labels['shortaclk'] = 'Skapa';
+$labels['shortaclx'] = 'Ta bort katalog';
+$labels['longacll'] = 'Katalogen är synlig i listor och den kan prenumereras på';
+$labels['longaclr'] = 'Katalogen kan öppnas för läsning';
+$labels['longaclread'] = 'Katalogen kan öppnas för läsning';
+$labels['longacls'] = 'Meddelandeflagga Sett kan ändras';
+$labels['longaclw'] = 'Meddelandeflaggor och nyckelord kan ändras, undantaget Sett och Raderat';
+$labels['longacli'] = 'Meddelanden kan skrivas eller kopieras till katalogen';
+$labels['longaclp'] = 'Meddelanden kan postas till denna katalog';
+$labels['longaclc'] = 'Kataloger kan skapas (eller ges annat namn) direkt i denna katalog';
+$labels['longaclk'] = 'Kataloger kan skapas (eller ges annat namn) direkt i denna katalog';
+$labels['longacld'] = 'Meddelandeflagga Raderat kan ändras';
+$labels['longaclt'] = 'Meddelandeflagga Raderat kan ändras';
+$labels['longacle'] = 'Meddelanden kan utplånas';
+$labels['longaclx'] = 'Katalogen kan tas bort eller ges annat namn';
+$labels['longacla'] = 'Katalogens åtkomsträttigheter kan ändras';
+$labels['longaclfull'] = 'Full kontroll inklusive katalogadministration';
+$labels['longaclwrite'] = 'Meddelanden kan märkas, skrivas eller kopieras till katalogen';
+$labels['longacldelete'] = 'Meddelanden kan tas bort';
+$labels['deleting'] = 'Tar bort åtkomsträttigheter...';
+$labels['saving'] = 'Sparar åtkomsträttigheter...';
+$labels['updatesuccess'] = 'Åtkomsträttigheterna är ändrade';
+$labels['deletesuccess'] = 'Åtkomsträttigheterna är borttagna';
+$labels['createsuccess'] = 'Åtkomsträttigheterna är tillagda';
+$labels['updateerror'] = 'Åtkomsträttigheterna kunde inte ändras';
+$labels['deleteerror'] = 'Åtkomsträttigheterna kunde inte tas bort';
+$labels['createerror'] = 'Åtkomsträttigheterna kunde inte läggas till';
+$labels['deleteconfirm'] = 'Vill du verkligen ta bort åtkomsträttigheterna för markerade användare?';
+$labels['norights'] = 'Inga åtkomsträttigheter angavs!';
+$labels['nouser'] = 'Inget användarnamn angavs!';
+
diff --git a/plugins/acl/localization/tr_TR.inc b/plugins/acl/localization/tr_TR.inc
new file mode 100644 (file)
index 0000000..509effa
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/tr_TR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: ismail yenigul                                                |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['sharing'] = 'Paylaşım';
+$labels['myrights'] = 'Erişim Hakları';
+$labels['username'] = 'Kullanıcı:';
+$labels['advanced'] = 'İleri seviye mod';
+$labels['newuser'] = 'Girdi ekle';
+$labels['actions'] = 'Erişim hakları aksiyonları...';
+$labels['anyone'] = 'Tüm kullanıcılar(kim olursa)';
+$labels['anonymous'] = 'Ziyaretçiler(anonim)';
+$labels['identifier'] = 'Tanımlayıcı';
+$labels['acll'] = 'Arama';
+$labels['shortacll'] = 'Arama';
+$labels['aclr'] = 'Mesajları oku';
+$labels['acls'] = 'Göründü durumunu muhafaza et';
+$labels['aclw'] = 'Yazma bayrakları';
+$labels['acli'] = 'Ekle(kopyala)';
+$labels['aclp'] = 'Gönder';
+$labels['shortaclp'] = 'Gönder';
+$labels['aclc'] = 'Alt dizinler oluştur';
+$labels['aclk'] = 'Alt dizinler oluştur';
+$labels['acld'] = 'Mesajları  sil';
+$labels['aclt'] = 'Mesajları  sil';
+$labels['acle'] = 'Sil';
+$labels['shortacle'] = 'Sil';
+$labels['aclx'] = 'Dizini sil';
+$labels['acla'] = 'Yönet';
+$labels['shortacla'] = 'Yönet';
+$labels['aclfull'] = 'Tam kontrol';
+$labels['aclother'] = 'Diğer';
+$labels['shortaclother'] = 'Diğer';
+$labels['aclread'] = 'Oku';
+$labels['shortaclr'] = 'Oku';
+$labels['shortaclread'] = 'Oku';
+$labels['aclwrite'] = 'Yaz';
+$labels['shortaclw'] = 'Yaz';
+$labels['shortaclwrite'] = 'Yaz';
+$labels['acldelete'] = 'Sil';
+$labels['shortacld'] = 'Sil';
+$labels['shortaclt'] = 'Sil';
+$labels['shortacldelete'] = 'Sil';
+$labels['shortacls'] = 'Koru';
+$labels['shortacli'] = 'Ekle';
+$labels['shortaclc'] = 'Oluştur';
+$labels['shortaclk'] = 'Oluştur';
+$labels['shortaclx'] = 'Dizin sil';
+$labels['longacll'] = 'Klasör listesinde görülebilir ve abone olunabilir';
+$labels['longaclr'] = 'Dizin yazma için okunabilir';
+$labels['longaclread'] = 'Dizin yazma için okunabilir';
+$labels['longacls'] = 'Mesajların göründü bayrağı değiştirilebilir';
+$labels['longaclw'] = 'Görülme ve Silinme bayrakları hariç bayraklar ve anahtar kelimeler değiştirilebilir';
+$labels['longacli'] = 'Mesajlar dizini yazılabilir veya kopyalanabilir';
+$labels['longaclp'] = 'Mesajlar bu dizine gönderilebilir';
+$labels['longaclc'] = 'Dizinler doğrudan bu klasör altında oluşturulabilir veya yeniden adlandırılabilir.';
+$labels['longaclk'] = 'Dizinler doğrudan bu klasör altında oluşturulabilir veya yeniden adlandırılabilir.';
+$labels['longacld'] = 'mesajları sil bayrakları değiştirilebilir';
+$labels['longaclt'] = 'mesajları sil bayrakları değiştirilebilir';
+$labels['longacle'] = 'Mesajlar silinebilir';
+$labels['longaclx'] = 'Klasörü silinebilir veya yeniden adlandırılabilir';
+$labels['longacla'] = 'Dizin erişim hakları değiştirilebilir';
+$labels['longaclfull'] = 'Dizin yönetimi de dahil olmak üzere tam kontrol';
+$labels['longaclwrite'] = 'Dizin yönetimi de dahil olmak üzere tam kontrol';
+$labels['longacldelete'] = 'Mesajlar silinebilir';
+$labels['deleting'] = 'Erişim hakları siliniyor...';
+$labels['saving'] = 'Erişim hakları saklanıyor...';
+$labels['updatesuccess'] = 'Erişim hakları başarıyla değiştirildi';
+$labels['deletesuccess'] = 'Erişim hakları başarıyla silindi';
+$labels['createsuccess'] = 'Erişim hakları başarıyla eklendi';
+$labels['updateerror'] = 'Erişim haklarını güncellenemedi';
+$labels['deleteerror'] = 'Erişim haklarını silinemedi';
+$labels['createerror'] = 'Erişim hakları eklenemedi';
+$labels['deleteconfirm'] = 'Seçilen kullanıcılar için erişim haklarını silmek istediğinizden emin misiniz?';
+$labels['norights'] = 'Hiçbir hak belirtilmemiş!';
+$labels['nouser'] = 'Hiçbir kullanıcı belirtilmemiş!';
+
diff --git a/plugins/acl/localization/vi_VN.inc b/plugins/acl/localization/vi_VN.inc
new file mode 100644 (file)
index 0000000..65dc96d
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/vi_VN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kenny Tran <kennethanh@gmail.com>                             |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['sharing'] = 'Chia sẻ';
+$labels['myrights'] = 'Quyền truy cập';
+$labels['username'] = 'Người dùng:';
+$labels['advanced'] = 'Chế độ tính năng cao hơn';
+$labels['newuser'] = 'Thêm bài viết';
+$labels['actions'] = 'Cách ứng xử quyền truy cập';
+$labels['anyone'] = 'Tất cả người dùng (bất kỳ ai)';
+$labels['anonymous'] = 'Khách (nặc danh)';
+$labels['identifier'] = 'Định danh';
+$labels['acll'] = 'Tìm kiếm';
+$labels['shortacll'] = 'Tìm kiếm';
+$labels['aclr'] = 'Đọc thư';
+$labels['acls'] = 'Giữ trạng thái đã xem qua';
+$labels['aclw'] = 'Cờ đánh dấu cho mục viết';
+$labels['acli'] = 'Chèn thêm (sao chép vào)';
+$labels['aclp'] = 'Đăng bài';
+$labels['shortaclp'] = 'Đăng bài';
+$labels['aclc'] = 'Tạo giữ liệu con';
+$labels['aclk'] = 'Tạo giữ liệu con';
+$labels['acld'] = 'Xóa thư';
+$labels['aclt'] = 'Xóa thư';
+$labels['acle'] = 'Thải bỏ';
+$labels['shortacle'] = 'Thải bỏ';
+$labels['aclx'] = 'Xóa giữ liệu';
+$labels['acla'] = 'Quản lý';
+$labels['shortacla'] = 'Quản lý';
+$labels['aclfull'] = 'Quản lý toàn bộ';
+$labels['aclother'] = 'Loại khác';
+$labels['shortaclother'] = 'Loại khác';
+$labels['aclread'] = 'Đọc';
+$labels['shortaclr'] = 'Đọc';
+$labels['shortaclread'] = 'Đọc';
+$labels['aclwrite'] = 'Viết';
+$labels['shortaclw'] = 'Viết';
+$labels['shortaclwrite'] = 'Viết';
+$labels['acldelete'] = 'Xoá';
+$labels['shortacld'] = 'Xoá';
+$labels['shortaclt'] = 'Xoá';
+$labels['shortacldelete'] = 'Xoá';
+$labels['shortacls'] = 'Giữ';
+$labels['shortacli'] = 'Chèn';
+$labels['shortaclc'] = 'Tạo mới';
+$labels['shortaclk'] = 'Tạo mới';
+$labels['shortaclx'] = 'Giữ liệu được xóa';
+$labels['longacll'] = 'Giữ liệu đã được liệt kê và có thể đóng góp';
+$labels['longaclr'] = 'Giữ liệu có thể được mở để đọc';
+$labels['longaclread'] = 'Giữ liệu có thể được mở để đọc';
+$labels['longacls'] = 'Cờ đánh dấu thư đã xem qua có thể thay đổi';
+$labels['longaclw'] = 'Cờ thư và từ khóa có thể thay đổi, ngoại trừ đã xem qua và bị xóa';
+$labels['longacli'] = 'Thư có thể được ghi hoặc sao chép vào giữ liệu';
+$labels['longaclp'] = 'Thư có thể bỏ vào trong giữ liệu này';
+$labels['longaclc'] = 'Các giữ liệu có thể được tạo (hoặc đặt lại tên) trực tiếp dưới giữ liệu này';
+$labels['longaclk'] = 'Các giữ liệu có thể được tạo (hoặc đặt lại tên) trực tiếp dưới giữ liệu này';
+$labels['longacld'] = 'Cờ đánh dấu thư xóa có thể thay đổi';
+$labels['longaclt'] = 'Cờ đánh dấu thư xóa có thể thay đổi';
+$labels['longacle'] = 'Thư có thể thải bỏ';
+$labels['longaclx'] = 'Giữ liệu có thể xóa được hoặc đặt lại tên';
+$labels['longacla'] = 'Quyên truy cập giữ liệu có thể thay đổi';
+$labels['longaclfull'] = 'Quản lý toàn bộ bao gồm cả sự thi hành giữ liệu';
+$labels['longaclwrite'] = 'Thư có thể được đánh dấu, ghi hoăc sao chép vào giữ liệu';
+$labels['longacldelete'] = 'Thư có thể bị xóa';
+$labels['deleting'] = 'Xóa quyền truy cập...';
+$labels['saving'] = 'Lưu quyền truy cập...';
+$labels['updatesuccess'] = 'Thay đổi quyền truy cập thành công...';
+$labels['deletesuccess'] = 'Xóa quyền truy cập thành công...';
+$labels['createsuccess'] = 'Thêm quyền truy cập thành công...';
+$labels['updateerror'] = 'Không thể cập nhật quyền truy cập';
+$labels['deleteerror'] = 'Khôngthể xóa quyền truy cập';
+$labels['createerror'] = 'Không thể thêm quyền truy cập';
+$labels['deleteconfirm'] = 'Bạn có chắc là muốn xóa bỏ quyền truy cập của người dùng được chọn?';
+$labels['norights'] = 'Chưa có quyền nào được chỉ định!';
+$labels['nouser'] = 'Chưa có tên truy nhập được chỉ định!';
+
diff --git a/plugins/acl/localization/zh_CN.inc b/plugins/acl/localization/zh_CN.inc
new file mode 100644 (file)
index 0000000..3cde07a
--- /dev/null
@@ -0,0 +1,68 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/zh_CN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: WeiHua.Deng <mcp2000@gmail.com>                               |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['sharing'] = '共享中';
+$labels['myrights'] = '访问权限';
+$labels['username'] = '用户名:';
+$labels['advanced'] = '高级模式';
+$labels['newuser'] = '添加条目';
+$labels['anyone'] = '所有用户(任何人)';
+$labels['anonymous'] = '来宾(匿名)';
+$labels['identifier'] = '标识符';
+$labels['acll'] = '查找';
+$labels['shortacll'] = '查找';
+$labels['aclr'] = '读取消息';
+$labels['acls'] = '保存已读状态';
+$labels['acli'] = '插入(复制至)';
+$labels['aclp'] = '发送';
+$labels['shortaclp'] = '发送';
+$labels['aclc'] = '创建子文件夹';
+$labels['aclk'] = '创建子文件夹';
+$labels['acld'] = '删除消息';
+$labels['aclt'] = '删除消息';
+$labels['aclx'] = '删除文件夹';
+$labels['acla'] = '管理';
+$labels['shortacla'] = '管理';
+$labels['aclother'] = '其他';
+$labels['shortaclother'] = '其他';
+$labels['aclwrite'] = '撰写';
+$labels['shortaclw'] = '撰写';
+$labels['shortaclwrite'] = '撰写';
+$labels['acldelete'] = '删除';
+$labels['shortacld'] = '删除';
+$labels['shortaclt'] = '删除';
+$labels['shortacldelete'] = '删除';
+$labels['shortacls'] = '保留';
+$labels['shortacli'] = '插入';
+$labels['shortaclc'] = '新建';
+$labels['shortaclk'] = '新建';
+$labels['shortaclx'] = '删除文件夹';
+$labels['longacll'] = '该文件夹在列表上可见且可被订阅';
+$labels['longaclr'] = '该文件夹可被打开阅读';
+$labels['longaclread'] = '该文件夹可被打开阅读';
+$labels['longaclx'] = '该文件夹可悲删除或重命名';
+$labels['deleting'] = '删除访问权限中…';
+$labels['saving'] = '保存访问权限中…';
+$labels['updatesuccess'] = '成功修改访问权限';
+$labels['deletesuccess'] = '成功删除访问权限';
+$labels['createsuccess'] = '成功添加访问权限';
+$labels['updateerror'] = '无法更新访问权限';
+$labels['deleteerror'] = '无法删除访问权限';
+$labels['createerror'] = '无法添加访问权限';
+$labels['deleteconfirm'] = '您确定要移除选中用户的访问权限吗?';
+$labels['norights'] = '没有已指定的权限!';
+$labels['nouser'] = '没有已指定的用户名!';
+
diff --git a/plugins/acl/localization/zh_TW.inc b/plugins/acl/localization/zh_TW.inc
new file mode 100644 (file)
index 0000000..c58296a
--- /dev/null
@@ -0,0 +1,80 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/zh_TW/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Nansen                                                        |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['sharing'] = '分享';
+$labels['myrights'] = '存取權限';
+$labels['username'] = '使用者:';
+$labels['advanced'] = '進階模式';
+$labels['newuser'] = '新增項目';
+$labels['actions'] = '權限設定';
+$labels['anyone'] = '所有使用者 (anyone)';
+$labels['anonymous'] = '訪客 (anonymous)';
+$labels['identifier'] = '識別';
+$labels['acll'] = '尋找';
+$labels['shortacll'] = '尋找';
+$labels['aclr'] = '讀取訊息';
+$labels['aclw'] = '寫入標幟';
+$labels['aclp'] = '發表';
+$labels['shortaclp'] = '發表';
+$labels['aclc'] = '建立子資料夾';
+$labels['aclk'] = '建立子資料夾';
+$labels['acld'] = '刪除訊息';
+$labels['aclt'] = '刪除訊息';
+$labels['acle'] = '刪去';
+$labels['shortacle'] = '刪去';
+$labels['aclx'] = '刪除資料夾';
+$labels['acla'] = '管理者';
+$labels['shortacla'] = '管理者';
+$labels['aclfull'] = '完全控制';
+$labels['aclother'] = '其它';
+$labels['shortaclother'] = '其它';
+$labels['aclread'] = '讀取';
+$labels['shortaclr'] = '讀取';
+$labels['shortaclread'] = '讀取';
+$labels['aclwrite'] = '寫入';
+$labels['shortaclw'] = '寫入';
+$labels['shortaclwrite'] = '寫入';
+$labels['acldelete'] = '刪除';
+$labels['shortacld'] = '刪除';
+$labels['shortaclt'] = '刪除';
+$labels['shortacldelete'] = '刪除';
+$labels['shortacls'] = '保存';
+$labels['shortacli'] = '插入';
+$labels['shortaclc'] = '建立';
+$labels['shortaclk'] = '建立';
+$labels['shortaclx'] = '資料夾刪除';
+$labels['longaclr'] = '資料夾能被打開與讀取';
+$labels['longaclread'] = '資料夾能被打開與讀取';
+$labels['longacls'] = '能修改訊息標幟';
+$labels['longacli'] = '訊息能寫入或複製到資料夾';
+$labels['longaclp'] = '訊息能被投遞到這個資料夾';
+$labels['longacld'] = '能修改訊息刪除標幟';
+$labels['longaclt'] = '能修改訊息刪除標幟';
+$labels['longacle'] = '能抹除訊息';
+$labels['longaclx'] = '資料夾能被刪除或重新命名';
+$labels['longacla'] = '能變更資料夾權限';
+$labels['longaclfull'] = '完全控制包含資料夾管理者';
+$labels['longacldelete'] = '訊息能被刪除';
+$labels['deleting'] = '刪除權限...';
+$labels['saving'] = '儲存權限...';
+$labels['updatesuccess'] = '權限變更完成';
+$labels['deletesuccess'] = '權限刪除完成';
+$labels['createsuccess'] = '權限新增完成';
+$labels['updateerror'] = '無法更新權限';
+$labels['deleteerror'] = '無法刪除權限';
+$labels['createerror'] = '無法新增權限';
+$labels['deleteconfirm'] = '您確定要刪除所選取使用者的權限嗎?';
+
diff --git a/plugins/acl/package.xml b/plugins/acl/package.xml
new file mode 100644 (file)
index 0000000..e5d411e
--- /dev/null
@@ -0,0 +1,63 @@
+<?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>acl</name>
+       <channel>pear.roundcube.net</channel>
+       <summary>Folders Access Control Lists</summary>
+       <description>IMAP Folders Access Control Lists Management (RFC4314, RFC2086).</description>
+       <lead>
+               <name>Aleksander Machniak</name>
+               <user>alec</user>
+               <email>alec@alec.pl</email>
+               <active>yes</active>
+       </lead>
+       <date>2012-06-28</date>
+       <version>
+               <release>1.0</release>
+               <api>0.7</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>-</notes>
+       <contents>
+               <dir baseinstalldir="/" name="/">
+                       <file name="acl.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="acl.js" role="data">
+                               <tasks:replace from="@name@" to="name" type="package-info"/>
+                               <tasks:replace from="@package_version@" to="version" type="package-info"/>
+                       </file>
+                       <file name="config.inc.php.dist" role="data"></file>
+                       <file name="localization/de_DE.inc" role="data"></file>
+                       <file name="localization/en_US.inc" role="data"></file>
+                       <file name="localization/pl_PL.inc" role="data"></file>
+                       <file name="skins/classic/acl.css" role="data"></file>
+                       <file name="skins/classic/images/enabled.png" role="data"></file>
+                       <file name="skins/classic/images/partial.png" role="data"></file>
+                       <file name="skins/classic/templates/table.html" role="data"></file>
+                       <file name="skins/larry/acl.css" role="data"></file>
+                       <file name="skins/larry/images/enabled.png" role="data"></file>
+                       <file name="skins/larry/images/partial.png" role="data"></file>
+                       <file name="skins/larry/templates/table.html" 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/acl/skins/classic/acl.css b/plugins/acl/skins/classic/acl.css
new file mode 100644 (file)
index 0000000..cf3391f
--- /dev/null
@@ -0,0 +1,100 @@
+#aclmanager
+{
+  position: relative;
+  border: 1px solid #999;
+  min-height: 302px;
+}
+
+#aclcontainer
+{
+  overflow-x: auto;
+}
+
+#acltable
+{
+  width: 100%;
+  border-collapse: collapse;
+  background-color: #F9F9F9;
+}
+
+#acltable td
+{
+  width: 1%;
+  white-space: nowrap;
+}
+
+#acltable thead td
+{
+  padding: 0 4px 0 2px;
+}
+
+#acltable tbody td
+{
+  text-align: center;
+  padding: 2px;
+  border-bottom: 1px solid #999999;
+  cursor: default;
+}
+
+#acltable tbody td.user
+{
+  width: 96%;
+  text-align: left;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+}
+
+#acltable tbody td.partial
+{
+  background: url(images/partial.png) center no-repeat;
+}
+
+#acltable tbody td.enabled
+{
+  background: url(images/enabled.png) center no-repeat;
+}
+
+#acltable tr.selected td
+{
+  color: #FFFFFF;
+  background-color: #CC3333;
+}
+
+#acltable tr.unfocused td
+{
+  color: #FFFFFF;
+  background-color: #929292;
+}
+
+#acladvswitch
+{
+  position: absolute;
+  right: 4px;
+  text-align: right;
+  line-height: 22px;
+}
+
+#acladvswitch input
+{
+  vertical-align: middle;
+}
+
+#acladvswitch span
+{
+  display: block;
+}
+
+#aclform
+{
+  top: 80px;
+  width: 480px;
+  padding: 10px;
+}
+
+#aclform div
+{
+  padding: 0;
+  text-align: center;
+  clear: both;
+}
diff --git a/plugins/acl/skins/classic/images/enabled.png b/plugins/acl/skins/classic/images/enabled.png
new file mode 100644 (file)
index 0000000..98215f6
Binary files /dev/null and b/plugins/acl/skins/classic/images/enabled.png differ
diff --git a/plugins/acl/skins/classic/images/partial.png b/plugins/acl/skins/classic/images/partial.png
new file mode 100644 (file)
index 0000000..12023f0
Binary files /dev/null and b/plugins/acl/skins/classic/images/partial.png differ
diff --git a/plugins/acl/skins/classic/templates/table.html b/plugins/acl/skins/classic/templates/table.html
new file mode 100644 (file)
index 0000000..bca63d0
--- /dev/null
@@ -0,0 +1,50 @@
+<!--[if lte IE 6]>
+    <style type="text/css">
+    #aclmanager { height: expression(Math.min(302, parseInt(document.documentElement.clientHeight))+'px'); }
+    </style>
+<![endif]-->
+
+<div id="aclmanager">
+<div id="aclcontainer" class="boxlistcontent" style="top:0">
+    <roundcube:object name="acltable" id="acltable" class="records-table" />
+</div>
+<div class="boxfooter">
+    <roundcube:button command="acl-create" id="aclcreatelink" type="link" title="acl.newuser" class="buttonPas addgroup" classAct="button addgroup" content=" " />
+    <roundcube:button name="aclmenulink" id="aclmenulink" type="link" title="acl.actions" class="button groupactions" onclick="show_aclmenu(); return false" content=" " />
+</div>
+</div>
+
+<div id="aclmenu" class="popupmenu selectable">
+    <ul>
+        <li><roundcube:button command="acl-edit" label="edit" classAct="active" /></li>
+        <li><roundcube:button command="acl-delete" label="delete" classAct="active" /></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')" class="active" /></li>
+        <roundcube:endif />
+    </ul>
+</div>
+
+<div id="aclform" class="popupmenu">
+    <fieldset class="thinbordered"><legend><roundcube:label name="acl.identifier" /></legend>
+        <roundcube:object name="acluser" class="toolbarmenu" id="acluser" size="35" />
+    </fieldset>
+    <fieldset class="thinbordered"><legend><roundcube:label name="acl.myrights" /></legend>
+        <roundcube:object name="aclrights" class="toolbarmenu" />
+    </fieldset>
+    <div>
+        <roundcube:button command="acl-cancel" type="input" class="button" label="cancel" />
+        <roundcube:button command="acl-save" type="input" class="button mainaction" label="save" />
+    </div>
+</div>
+
+<script type="text/javascript">
+function show_aclmenu()
+{
+    if (!rcmail_ui) {
+        rcube_init_mail_ui();
+        rcmail_ui.popups.aclmenu = {id:'aclmenu', above:1, obj: $('#aclmenu')};
+    }
+
+    rcmail_ui.show_popup('aclmenu');
+}
+</script>
diff --git a/plugins/acl/skins/default/acl.css b/plugins/acl/skins/default/acl.css
deleted file mode 100644 (file)
index cf3391f..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-#aclmanager
-{
-  position: relative;
-  border: 1px solid #999;
-  min-height: 302px;
-}
-
-#aclcontainer
-{
-  overflow-x: auto;
-}
-
-#acltable
-{
-  width: 100%;
-  border-collapse: collapse;
-  background-color: #F9F9F9;
-}
-
-#acltable td
-{
-  width: 1%;
-  white-space: nowrap;
-}
-
-#acltable thead td
-{
-  padding: 0 4px 0 2px;
-}
-
-#acltable tbody td
-{
-  text-align: center;
-  padding: 2px;
-  border-bottom: 1px solid #999999;
-  cursor: default;
-}
-
-#acltable tbody td.user
-{
-  width: 96%;
-  text-align: left;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  -o-text-overflow: ellipsis;
-}
-
-#acltable tbody td.partial
-{
-  background: url(images/partial.png) center no-repeat;
-}
-
-#acltable tbody td.enabled
-{
-  background: url(images/enabled.png) center no-repeat;
-}
-
-#acltable tr.selected td
-{
-  color: #FFFFFF;
-  background-color: #CC3333;
-}
-
-#acltable tr.unfocused td
-{
-  color: #FFFFFF;
-  background-color: #929292;
-}
-
-#acladvswitch
-{
-  position: absolute;
-  right: 4px;
-  text-align: right;
-  line-height: 22px;
-}
-
-#acladvswitch input
-{
-  vertical-align: middle;
-}
-
-#acladvswitch span
-{
-  display: block;
-}
-
-#aclform
-{
-  top: 80px;
-  width: 480px;
-  padding: 10px;
-}
-
-#aclform div
-{
-  padding: 0;
-  text-align: center;
-  clear: both;
-}
diff --git a/plugins/acl/skins/default/images/enabled.png b/plugins/acl/skins/default/images/enabled.png
deleted file mode 100644 (file)
index 98215f6..0000000
Binary files a/plugins/acl/skins/default/images/enabled.png and /dev/null differ
diff --git a/plugins/acl/skins/default/images/partial.png b/plugins/acl/skins/default/images/partial.png
deleted file mode 100644 (file)
index 12023f0..0000000
Binary files a/plugins/acl/skins/default/images/partial.png and /dev/null differ
diff --git a/plugins/acl/skins/default/templates/table.html b/plugins/acl/skins/default/templates/table.html
deleted file mode 100644 (file)
index 2365ef7..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-<!--[if lte IE 6]>
-    <style type="text/css">
-    #aclmanager { height: expression(Math.min(302, parseInt(document.documentElement.clientHeight))+'px'); }
-    </style>
-<![endif]-->
-
-<div id="aclmanager">
-<div id="aclcontainer" class="boxlistcontent" style="top:0">
-    <roundcube:object name="acltable" id="acltable" class="records-table" />
-</div>
-<div class="boxfooter">
-    <roundcube:button command="acl-create" id="aclcreatelink" type="link" title="acl.newuser" class="buttonPas addgroup" classAct="button addgroup" content=" " />
-    <roundcube:button name="aclmenulink" id="aclmenulink" type="link" title="acl.actions" class="button groupactions" onclick="show_aclmenu(); return false" content=" " />
-    <roundcube:if condition="!in_array('acl_advanced_mode', (array)config:dont_override)" />
-    <div id="acladvswitch" class="pagenav">
-        <span><label for="acl-switch"><roundcube:label name="acl.advanced" /></label>
-        <input type="checkbox" id="acl-switch" onclick="rcmail.command('acl-mode-switch')"<roundcube:exp expression="config:acl_advanced_mode == true ? ' checked=checked' : ''" /> />
-        </span>
-    </div>
-    <roundcube:endif />
-</div>
-</div>
-
-<div id="aclmenu" class="popupmenu">
-    <ul>
-        <li><roundcube:button command="acl-edit" label="edit" classAct="active" /></li>
-        <li><roundcube:button command="acl-delete" label="delete" classAct="active" /></li>
-    </ul>
-</div>
-
-<div id="aclform" class="popupmenu">
-    <fieldset class="thinbordered"><legend><roundcube:label name="acl.identifier" /></legend>
-        <roundcube:object name="acluser" class="toolbarmenu" id="acluser" size="35" />
-    </fieldset>
-    <fieldset class="thinbordered"><legend><roundcube:label name="acl.myrights" /></legend>
-        <roundcube:object name="aclrights" class="toolbarmenu" />
-    </fieldset>
-    <div>
-        <roundcube:button command="acl-cancel" type="input" class="button" label="cancel" />
-        <roundcube:button command="acl-save" type="input" class="button mainaction" label="save" />
-    </div>
-</div>
-
-<script type="text/javascript">
-function show_aclmenu()
-{
-    if (!rcmail_ui) {
-        rcube_init_mail_ui();
-        rcmail_ui.popups.aclmenu = {id:'aclmenu', above:1, obj: $('#aclmenu')};
-    }
-
-    rcmail_ui.show_popup('aclmenu');
-}
-</script>
diff --git a/plugins/acl/skins/larry/acl.css b/plugins/acl/skins/larry/acl.css
new file mode 100644 (file)
index 0000000..e392a26
--- /dev/null
@@ -0,0 +1,129 @@
+#aclcontainer
+{
+  overflow-x: auto;
+  border: 1px solid #CCDDE4;
+  background-color: #D9ECF4;
+  height: 272px;
+  box-shadow: none;
+}
+
+#acllist-content
+{
+  position: relative;
+  height: 230px;
+  background-color: white;
+}
+
+#acllist-footer
+{
+  position: relative;
+}
+
+#acltable
+{
+  width: 100%;
+  border-collapse: collapse;
+  border: none;
+}
+
+#acltable td
+{
+  white-space: nowrap;
+  border: none;
+  text-align: center;
+}
+
+#acltable thead tr td
+{
+  border-left: #BBD3DA dotted 1px;
+  font-size: 11px;
+  font-weight: bold;
+}
+
+#acltable tbody td
+{
+  border-bottom: #DDDDDD 1px solid;
+  text-align: center;
+  padding: 2px;
+  cursor: default;
+}
+
+#acltable thead td.user
+{
+  border-left: none;
+}
+
+#acltable tbody td.user
+{
+  text-align: left;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+  border-left: none;
+  width: 50px;
+}
+
+#acltable tbody td.partial
+{
+  background-image: url(images/partial.png);
+  background-position: center;
+  background-repeat: no-repeat;
+}
+
+#acltable tbody td.enabled
+{
+  background-image: url(images/enabled.png);
+  background-position: center;
+  background-repeat: no-repeat;
+}
+
+#acltable tbody tr.selected td.partial
+{
+  background-color: #019bc6;
+  background-image: url(images/partial.png), -moz-linear-gradient(top, #019bc6 0%, #017cb4 100%);
+  background-image: url(images/partial.png), -webkit-gradient(linear, left top, left bottom, color-stop(0%,#019bc6), color-stop(100%,#017cb4));
+  background-image: url(images/partial.png), -o-linear-gradient(top, #019bc6 0%, #017cb4 100%);
+  background-image: url(images/partial.png), -ms-linear-gradient(top, #019bc6 0%, #017cb4 100%);
+  background-image: url(images/partial.png), linear-gradient(top, #019bc6 0%, #017cb4 100%);
+}
+
+#acltable tbody tr.selected td.enabled
+{
+  background-color: #019bc6;
+  background-image: url(images/enabled.png), -moz-linear-gradient(top, #019bc6 0%, #017cb4 100%);
+  background-image: url(images/enabled.png), -webkit-gradient(linear, left top, left bottom, color-stop(0%,#019bc6), color-stop(100%,#017cb4));
+  background-image: url(images/enabled.png), -o-linear-gradient(top, #019bc6 0%, #017cb4 100%);
+  background-image: url(images/enabled.png), -ms-linear-gradient(top, #019bc6 0%, #017cb4 100%);
+  background-image: url(images/enabled.png), linear-gradient(top, #019bc6 0%, #017cb4 100%);
+}
+
+#aclform
+{
+  top: 80px;
+  width: 480px;
+  padding: 10px;
+  background-color: white;
+}
+
+#aclform div
+{
+  padding: 0;
+  text-align: center;
+  clear: both;
+}
+
+#aclform ul
+{
+  list-style: none;
+  margin: 0.2em;
+  padding: 0;
+}
+
+#aclform ul li label
+{
+  margin-left: 0.5em;
+}
+
+ul.toolbarmenu li span.delete {
+  background-position: 0 -1509px;
+}
diff --git a/plugins/acl/skins/larry/images/enabled.png b/plugins/acl/skins/larry/images/enabled.png
new file mode 100644 (file)
index 0000000..98215f6
Binary files /dev/null and b/plugins/acl/skins/larry/images/enabled.png differ
diff --git a/plugins/acl/skins/larry/images/partial.png b/plugins/acl/skins/larry/images/partial.png
new file mode 100644 (file)
index 0000000..12023f0
Binary files /dev/null and b/plugins/acl/skins/larry/images/partial.png differ
diff --git a/plugins/acl/skins/larry/templates/table.html b/plugins/acl/skins/larry/templates/table.html
new file mode 100644 (file)
index 0000000..3cf8292
--- /dev/null
@@ -0,0 +1,31 @@
+<div id="aclcontainer" class="uibox listbox">
+<div id="acllist-content" class="scroller withfooter">
+    <roundcube:object name="acltable" id="acltable" class="records-table" />
+</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;" />
+</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>
+        <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')" class="active" /></li>
+        <roundcube:endif />
+    </ul>
+</div>
+
+<div id="aclform" class="popupmenu propform">
+    <fieldset class="thinbordered"><legend><roundcube:label name="acl.identifier" /></legend>
+        <roundcube:object name="acluser" id="acluser" size="35" />
+    </fieldset>
+    <fieldset class="thinbordered"><legend><roundcube:label name="acl.myrights" /></legend>
+        <roundcube:object name="aclrights" />
+    </fieldset>
+    <div class="formbuttons">
+        <roundcube:button command="acl-cancel" type="input" class="button" label="cancel" />
+        <roundcube:button command="acl-save" type="input" class="button mainaction" label="save" />
+    </div>
+</div>
index d79dbaef1f17ca6c8003008163f7daaa3097405d..73c24fba7b649c4264823fe11712962bcbdcd6bb 100644 (file)
@@ -31,6 +31,7 @@
     <tasks:replace from="@name@" to="name" type="package-info" />
     <tasks:replace from="@package_version@" to="version" type="package-info" />
    </file>
+   <file name="config.inc.php.dist" role="data"></file>
   </dir> <!-- / -->
  </contents>
  <dependencies>
index 5c576e1009444c23151fc0a33c971b0c85d460b4..af2b0d26d0388218e756900cdd8130c8695b95ad 100644 (file)
@@ -27,10 +27,8 @@ if (window.rcmail) {
     
     // set css style for archive folder
     var li;
-    if (rcmail.env.archive_folder && rcmail.env.archive_folder_icon
-      && (li = rcmail.get_folder_li(rcmail.env.archive_folder, '', true))
-    )
-      $(li).css('background-image', 'url(' + rcmail.env.archive_folder_icon + ')');
+    if (rcmail.env.archive_folder && (li = rcmail.get_folder_li(rcmail.env.archive_folder, '', true)))
+      $(li).addClass('archive');
   })
 }
 
index a56806263c2fa2ed9af494a363015ff0d659d879..33e0daa31a7648e9bcea553e9e80590180817a2c 100644 (file)
@@ -7,6 +7,7 @@
  * to move messages to a (user selectable) archive folder.
  *
  * @version @package_version@
+ * @license GNU GPLv3+
  * @author Andre Rodier, Thomas Bruederli
  */
 class archive extends rcube_plugin
@@ -20,16 +21,20 @@ class archive extends rcube_plugin
     // There is no "Archived flags"
     // $GLOBALS['IMAP_FLAGS']['ARCHIVED'] = 'Archive';
     if ($rcmail->task == 'mail' && ($rcmail->action == '' || $rcmail->action == 'show')
-      && ($archive_folder = $rcmail->config->get('archive_mbox'))) {
+        && ($archive_folder = $rcmail->config->get('archive_mbox'))) {
       $skin_path = $this->local_skin_path();
-      
+      if (is_file($this->home . "/$skin_path/archive.css"))
+        $this->include_stylesheet("$skin_path/archive.css");
+
       $this->include_script('archive.js');
       $this->add_texts('localization', true);
       $this->add_button(
         array(
+            'type' => 'link',
+            'label' => 'buttontext',
             'command' => 'plugin.archive',
-            'imagepas' => $skin_path.'/archive_pas.png',
-            'imageact' => $skin_path.'/archive_act.png',
+            'class' => 'button buttonPas archive disabled',
+            'classact' => 'button archive',
             'width' => 32,
             'height' => 32,
             'title' => 'buttontitle',
@@ -42,12 +47,11 @@ class archive extends rcube_plugin
 
       // set env variable for client
       $rcmail->output->set_env('archive_folder', $archive_folder);
-      $rcmail->output->set_env('archive_folder_icon', $this->url($skin_path.'/foldericon.png'));
 
       // add archive folder to the list of default mailboxes
-      if (($default_folders = $rcmail->config->get('default_imap_folders')) && !in_array($archive_folder, $default_folders)) {
+      if (($default_folders = $rcmail->config->get('default_folders')) && !in_array($archive_folder, $default_folders)) {
         $default_folders[] = $archive_folder;
-        $rcmail->config->set('default_imap_folders', $default_folders);
+        $rcmail->config->set('default_folders', $default_folders);
       }  
     }
     else if ($rcmail->task == 'settings') {
diff --git a/plugins/archive/localization/ar_SA.inc b/plugins/archive/localization/ar_SA.inc
new file mode 100644 (file)
index 0000000..053891f
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ar_SA/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Ossama M. Khayat <okhayat@yahoo.com>                          |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'الأرشيف';
+$labels['archivefolder'] = 'الأرشيف';
+$labels['buttontitle'] = 'أرشف هذه الرسالة';
+$labels['archived'] = 'أُرشفت بنجاح';
+
diff --git a/plugins/archive/localization/be_BE.inc b/plugins/archive/localization/be_BE.inc
new file mode 100644 (file)
index 0000000..7e56c3b
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/be_BE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Alex Nehaichik <alex.nehaichik@gmail.com>                     |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Архіў';
+$labels['archivefolder'] = 'Архіў';
+$labels['buttontitle'] = 'Перанесці ў Архіў';
+$labels['archived'] = 'Паспяхова перанесены ў Архіў';
+
diff --git a/plugins/archive/localization/bs_BA.inc b/plugins/archive/localization/bs_BA.inc
new file mode 100644 (file)
index 0000000..ec795e2
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/bs_BA/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kenan Dervišević <kenan3008@gmail.com>                      |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Arhiva';
+$labels['archivefolder'] = 'Arhiva';
+$labels['buttontitle'] = 'Arhiviraj ovu poruku';
+$labels['archived'] = 'Arhiviranje uspješno';
+
diff --git a/plugins/archive/localization/ca_ES.inc b/plugins/archive/localization/ca_ES.inc
new file mode 100644 (file)
index 0000000..22502f0
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ca_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Emi Bcn                                                       |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Arxiva';
+$labels['archivefolder'] = 'Arxiva';
+$labels['buttontitle'] = 'Arxiva aquest missatge';
+$labels['archived'] = 'Arxivat correctament';
+
index bb257bca06332f79a611729e75d4e71039e9fbf5..28a41913b3822b4bf196b833d5e85a4e9a805e5e 100644 (file)
@@ -1,25 +1,21 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/cs_CZ/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube archive plugin                         |
-| Copyright (C) 2005-2009, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Milan Kozak <hodza@hodza.net>                                 |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 2993 2009-09-26 18:32:07Z alec $
-
+ +-----------------------------------------------------------------------+
+ | localization/cs_CZ/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
+$labels['buttontext'] = 'Archiv';
+$labels['archivefolder'] = 'Archiv';
 $labels['buttontitle'] = 'Archivovat zprávu';
 $labels['archived'] = 'Úspěšně vloženo do archivu';
-$labels['archivefolder'] = 'Archiv';
 
-?>
diff --git a/plugins/archive/localization/cy_GB.inc b/plugins/archive/localization/cy_GB.inc
new file mode 100644 (file)
index 0000000..579c5b1
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/cy_GB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Dafydd Tomos                                                  |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Archif';
+$labels['archivefolder'] = 'Archif';
+$labels['buttontitle'] = 'Archifo\'r neges hwn';
+$labels['archived'] = 'Archifwyd yn llwyddiannus';
+
diff --git a/plugins/archive/localization/da_DK.inc b/plugins/archive/localization/da_DK.inc
new file mode 100644 (file)
index 0000000..936c05c
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/da_DK/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Johannes Hessellund <osos@openeyes.dk>                        |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Arkiv';
+$labels['archivefolder'] = 'Arkiv';
+$labels['buttontitle'] = 'Arkivér denne besked';
+$labels['archived'] = 'Succesfuldt arkiveret.';
+
index 2ed0f5ac82aee028bfa0d2e714926c361c258e06..bae441305165cf496420244cc7acca0f2894192e 100644 (file)
@@ -1,8 +1,21 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/de_CH/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
+$labels['buttontext'] = 'Archiv';
+$labels['archivefolder'] = 'Archiv';
 $labels['buttontitle'] = 'Nachricht archivieren';
 $labels['archived'] = 'Nachricht erfolgreich archiviert';
-$labels['archivefolder'] = 'Archiv';
 
-?>
index 2ed0f5ac82aee028bfa0d2e714926c361c258e06..c525837fdfc0faffea1e62c514e8ebb31f49c5b5 100644 (file)
@@ -1,8 +1,21 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/de_DE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
+$labels['buttontext'] = 'Archiv';
+$labels['archivefolder'] = 'Archiv';
 $labels['buttontitle'] = 'Nachricht archivieren';
 $labels['archived'] = 'Nachricht erfolgreich archiviert';
-$labels['archivefolder'] = 'Archiv';
 
-?>
diff --git a/plugins/archive/localization/el_GR.inc b/plugins/archive/localization/el_GR.inc
new file mode 100644 (file)
index 0000000..a06372c
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/el_GR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Nikos Keramidis <info@torus.gr>                               |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Αρχειοθέτηση';
+$labels['archivefolder'] = 'Αρχειοθέτηση';
+$labels['buttontitle'] = 'Αρχειοθέτηση μηνύματος';
+$labels['archived'] = 'Αρχειοθετήθηκε με επιτυχία';
+
diff --git a/plugins/archive/localization/en_GB.inc b/plugins/archive/localization/en_GB.inc
new file mode 100644 (file)
index 0000000..c65672e
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/en_GB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Chris January                                                 |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Archive';
+$labels['archivefolder'] = 'Archive';
+$labels['buttontitle'] = 'Archive this message';
+$labels['archived'] = 'Successfully archived';
+
index fce31a0b519f63de679dfdde2ac6d0f9734a01c0..01a4f1e13b50de9b0cd9ddb230a526e797f4a600 100644 (file)
@@ -1,6 +1,7 @@
 <?php
 
 $labels = array();
+$labels['buttontext'] = 'Archive';
 $labels['buttontitle'] = 'Archive this message';
 $labels['archived'] = 'Successfully archived';
 $labels['archivefolder'] = 'Archive';
diff --git a/plugins/archive/localization/eo.inc b/plugins/archive/localization/eo.inc
new file mode 100644 (file)
index 0000000..e878635
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/eo/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Michael Moroni <michael.moroni@mailoo.org>                    |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Arkivo';
+$labels['archivefolder'] = 'Arkivo';
+$labels['buttontitle'] = 'Arkivigi ĉi tiun mesaĝon';
+$labels['archived'] = 'Sukcese arkivigita';
+
index 7d021f56173d28e388b15e8913f2cdc9a4033e63..39466a98041ed3f80fe2214daa6ade3eb14c5f71 100644 (file)
@@ -1,10 +1,21 @@
 <?php
 
-// MPBAUPGRADE
+/*
+ +-----------------------------------------------------------------------+
+ | localization/es_AR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
 
 $labels = array();
+$labels['buttontext'] = 'Archivo';
+$labels['archivefolder'] = 'Archivo';
 $labels['buttontitle'] = 'Archivar este mensaje';
 $labels['archived'] = 'Mensaje Archivado';
-$labels['archivefolder'] = 'Archivo';
 
-?>
index 7d021f56173d28e388b15e8913f2cdc9a4033e63..7cd5917c698a6d463a9415e00fb9322185848dc7 100644 (file)
@@ -1,10 +1,21 @@
 <?php
 
-// MPBAUPGRADE
+/*
+ +-----------------------------------------------------------------------+
+ | localization/es_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
 
 $labels = array();
+$labels['buttontext'] = 'Archivo';
+$labels['archivefolder'] = 'Archivo';
 $labels['buttontitle'] = 'Archivar este mensaje';
 $labels['archived'] = 'Mensaje Archivado';
-$labels['archivefolder'] = 'Archivo';
 
-?>
index e3968d7558284d51e1fa942c6c24c8cb15e5fefa..53e9b250475505b6305401706f41aa6e2f7a1f5d 100644 (file)
@@ -1,8 +1,21 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/et_EE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
+$labels['buttontext'] = 'Arhiveeri';
+$labels['archivefolder'] = 'Arhiveeri';
 $labels['buttontitle'] = 'Arhiveeri see kiri';
 $labels['archived'] = 'Edukalt arhiveeritud';
-$labels['archivefolder'] = 'Arhiveeri';
 
-?>
diff --git a/plugins/archive/localization/fa_IR.inc b/plugins/archive/localization/fa_IR.inc
new file mode 100644 (file)
index 0000000..c3f2368
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fa_IR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Hamid <abbaszadeh.h@gmail.com>                                |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'بایگانی';
+$labels['archivefolder'] = 'بایگانی';
+$labels['buttontitle'] = 'بایگانی این پیغام';
+$labels['archived'] = 'با موفقیت بایگانی شد';
+
diff --git a/plugins/archive/localization/fi_FI.inc b/plugins/archive/localization/fi_FI.inc
new file mode 100644 (file)
index 0000000..f2b6932
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fi_FI/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jiri Grönroos                                                |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Arkistoi';
+$labels['archivefolder'] = 'Arkistoi';
+$labels['buttontitle'] = 'Arkistoi viesti';
+$labels['archived'] = 'Arkistoitu onnistuneesti';
+
index 498a091fe82810c6af162bce0d5beb04021ded5d..35434dac17c6d40c3dd00d0427e213c282cc64f2 100644 (file)
@@ -1,8 +1,21 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fr_FR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
+$labels['buttontext'] = 'Archive';
+$labels['archivefolder'] = 'Archive';
 $labels['buttontitle'] = 'Archiver ce message';
 $labels['archived'] = 'Message archivé avec success';
-$labels['archivefolder'] = 'Archive';
 
-?>
index 62a767869c6270fc742a8d7d0af45e31572e62d9..1e6c620f9ae9f645a584f4fb032537d1e49ce592 100644 (file)
@@ -1,10 +1,21 @@
 <?php
 
-// MPBAUPGRADE
+/*
+ +-----------------------------------------------------------------------+
+ | localization/gl_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
 
 $labels = array();
+$labels['buttontext'] = 'Arquivo';
+$labels['archivefolder'] = 'Arquivo';
 $labels['buttontitle'] = 'Arquivar esta mensaxe';
 $labels['archived'] = 'Aquivouse a mensaxe';
-$labels['archivefolder'] = 'Arquivo';
 
-?>
diff --git a/plugins/archive/localization/he_IL.inc b/plugins/archive/localization/he_IL.inc
new file mode 100644 (file)
index 0000000..2243bea
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/he_IL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Moshe Leibovitch <moish@mln.co.il>                            |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'ארכיון';
+$labels['archivefolder'] = 'ארכיון';
+$labels['buttontitle'] = 'משלוח ההודעה לארכיב';
+$labels['archived'] = 'עדכון הארכיון הצליח';
+
diff --git a/plugins/archive/localization/hr_HR.inc b/plugins/archive/localization/hr_HR.inc
new file mode 100644 (file)
index 0000000..3ef79d4
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/hr_HR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Svebor Prstačić <svebor.prstacic@gmail.com>                 |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Arhiva';
+$labels['archivefolder'] = 'Arhiva';
+$labels['buttontitle'] = 'Arhiviraj poruku';
+$labels['archived'] = 'Uspješno arhivirana';
+
diff --git a/plugins/archive/localization/hu_HU.inc b/plugins/archive/localization/hu_HU.inc
new file mode 100644 (file)
index 0000000..edc9151
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/hu_HU/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Droszler Gabor <droszler@datatrans.hu>                        |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Archiválás';
+$labels['archivefolder'] = 'Archiválás';
+$labels['buttontitle'] = 'Üzenet archiválása';
+$labels['archived'] = 'Sikeres archiválás';
+
diff --git a/plugins/archive/localization/hy_AM.inc b/plugins/archive/localization/hy_AM.inc
new file mode 100644 (file)
index 0000000..ff29d19
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/hy_AM/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Vahan Yerkanian <vahan@yerkanian.com>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Արխիվ';
+$labels['archivefolder'] = 'Արխիվ';
+$labels['buttontitle'] = 'Արխիվացնել այս հաղորդագրությունը';
+$labels['archived'] = 'Բարեհաջող արխիվացվեց';
+
diff --git a/plugins/archive/localization/id_ID.inc b/plugins/archive/localization/id_ID.inc
new file mode 100644 (file)
index 0000000..aee53a5
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/id_ID/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Putu Arya Sabda Wijaya                                        |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Arsip';
+$labels['archivefolder'] = 'Arsip';
+$labels['buttontitle'] = 'Arsipkan pesan ini';
+$labels['archived'] = 'Berhasil mengarsipkan';
+
diff --git a/plugins/archive/localization/it_IT.inc b/plugins/archive/localization/it_IT.inc
new file mode 100644 (file)
index 0000000..636965d
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/it_IT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: emilio brambilla                                              |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Archivio';
+$labels['archivefolder'] = 'Archivio';
+$labels['buttontitle'] = 'Archivia questo messaggio';
+$labels['archived'] = 'Archiviato correttamente';
+
index 31fa152670c5b39497e000987c44bd9aa854beb5..1de4de0d1a6546e9e11f05539c2a0d8a635a2a5b 100644 (file)
@@ -1,10 +1,21 @@
 <?php
 
-//  EN-Revision: 3891
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ja_JP/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Takahiro Kambe                                                |
+ +-----------------------------------------------------------------------+
+*/
 
 $labels = array();
-$labels['buttontitle'] = 'このメッセージのアーカイブ';
-$labels['archived'] = 'アーカイブに成功しました。';
+$labels['buttontext'] = 'アーカイブ';
 $labels['archivefolder'] = 'アーカイブ';
+$labels['buttontitle'] = 'このメッセージをアーカイブ';
+$labels['archived'] = 'アーカイブしました。';
 
-?>
diff --git a/plugins/archive/localization/ko_KR.inc b/plugins/archive/localization/ko_KR.inc
new file mode 100644 (file)
index 0000000..b067356
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ko_KR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kim, Woohyun <woohyun.kim@gmail.com>                          |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = '보관';
+$labels['archivefolder'] = '보관';
+$labels['buttontitle'] = '이 메시지를 보관';
+$labels['archived'] = '성공적으로 보관 됨';
+
diff --git a/plugins/archive/localization/ku.inc b/plugins/archive/localization/ku.inc
new file mode 100644 (file)
index 0000000..235eedf
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ku/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: david absalan <absalan@live.com>                              |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Arşîv';
+$labels['archivefolder'] = 'Arşîv';
+$labels['buttontitle'] = 'am masaja bxa arşiv';
+$labels['archived'] = 'ba gşti Arşiv kra';
+
diff --git a/plugins/archive/localization/lt_LT.inc b/plugins/archive/localization/lt_LT.inc
new file mode 100644 (file)
index 0000000..2beb031
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/lt_LT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Rimas Kudelis <rq@akl.lt>                                     |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Archyvuoti';
+$labels['archivefolder'] = 'Archyvuoti';
+$labels['buttontitle'] = 'Perkelti šį laišką į archyvą';
+$labels['archived'] = 'Laiškas sėkmingai perkeltas į archyvą';
+
diff --git a/plugins/archive/localization/lv_LV.inc b/plugins/archive/localization/lv_LV.inc
new file mode 100644 (file)
index 0000000..d806fcf
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/lv_LV/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Ivars Strazdiņš                                             |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Arhīvs';
+$labels['archivefolder'] = 'Arhīvs';
+$labels['buttontitle'] = 'Arhivēt vēstuli';
+$labels['archived'] = 'Vēstule sekmīgi arhivēta';
+
diff --git a/plugins/archive/localization/ml_IN.inc b/plugins/archive/localization/ml_IN.inc
new file mode 100644 (file)
index 0000000..13569bf
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ml_IN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Anish A <aneesh.nl@gmail.com>                                 |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'ശേഖരം';
+$labels['archivefolder'] = 'ശേഖരം';
+$labels['buttontitle'] = 'ഈ മെസ്സേജ് ശേഖരിക്കുക';
+$labels['archived'] = 'വിജയകരമായി ശേഖരിച്ചു';
+
diff --git a/plugins/archive/localization/ml_ML.inc b/plugins/archive/localization/ml_ML.inc
new file mode 100644 (file)
index 0000000..5a48366
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ml_ML/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Anish A <aneesh.nl@gmail.com>                                 |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['buttontitle'] = 'ഈ മെസ്സേജ് ശേഖരിക്കുക';
+$labels['archived'] = 'വിജയകരമായി ശേഖരിച്ചു';
+$labels['archivefolder'] = 'ശേഖരം';
+
diff --git a/plugins/archive/localization/mr_IN.inc b/plugins/archive/localization/mr_IN.inc
new file mode 100644 (file)
index 0000000..5b66f43
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/mr_IN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Devendra Buddhikot <devendradb@rediffmail.com>                |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'जतन केलेला';
+$labels['archivefolder'] = 'जतन केलेला';
+$labels['buttontitle'] = 'हा संदेश जतन करा';
+$labels['archived'] = 'यशस्वीरीत्या जतन केला';
+
diff --git a/plugins/archive/localization/nb_NB.inc b/plugins/archive/localization/nb_NB.inc
new file mode 100644 (file)
index 0000000..46e49ab
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/nb_NB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Tobias V. Langhoff <spug@thespug.net>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Arkiv';
+$labels['archivefolder'] = 'Arkiv';
+$labels['buttontitle'] = 'Arkiver meldingen';
+$labels['archived'] = 'Arkivert';
+
index 0d47f7b9ce89e23a8b623fe6485d9f190664d1ef..44f6712396796ed134a9bdeb49f870e30914bc0d 100644 (file)
@@ -1,8 +1,21 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/nl_NL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
+$labels['buttontext'] = 'Archief';
+$labels['archivefolder'] = 'Archief';
 $labels['buttontitle'] = 'Archiveer dit bericht';
 $labels['archived'] = 'Succesvol gearchiveerd';
-$labels['archivefolder'] = 'Archief';
 
-?>
index 2ecc77991228f7634d6c7e06f7652ace0c0c55fe..1e6ff0b4474576401d16803e301f1c98da143bd8 100644 (file)
@@ -1,8 +1,21 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/pl_PL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
+$labels['buttontext'] = 'Archiwum';
+$labels['archivefolder'] = 'Archiwum';
 $labels['buttontitle'] = 'Przenieś do archiwum';
 $labels['archived'] = 'Pomyślnie zarchiwizowano';
-$labels['archivefolder'] = 'Archiwum';
 
-?>
index 224f53caa4c07c7cf98a4dad4d54ffd8fc68083d..1991290ebe7f5a68580826efbb653d62046534e3 100644 (file)
@@ -1,8 +1,21 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/pt_BR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
+$labels['buttontext'] = 'Arquivo';
+$labels['archivefolder'] = 'Arquivo';
 $labels['buttontitle'] = 'Arquivar esta mensagem';
 $labels['archived'] = 'Arquivada com sucesso';
-$labels['archivefolder'] = 'Arquivo';
 
-?>
diff --git a/plugins/archive/localization/pt_PT.inc b/plugins/archive/localization/pt_PT.inc
new file mode 100644 (file)
index 0000000..712e05b
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/pt_PT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: David                                                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Arquivo';
+$labels['archivefolder'] = 'Arquivo';
+$labels['buttontitle'] = 'Arquivar esta mensagem';
+$labels['archived'] = 'Arquivada com sucesso';
+
diff --git a/plugins/archive/localization/ro_RO.inc b/plugins/archive/localization/ro_RO.inc
new file mode 100644 (file)
index 0000000..1d3c6e4
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ro_RO/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: tudor <tudor@starnet-alba.ro>                                 |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Arhivă';
+$labels['archivefolder'] = 'Arhivă';
+$labels['buttontitle'] = 'Arhivează acest mesaj.';
+$labels['archived'] = 'Arhivare reuşită.';
+
index e377ad017e69427d49375219dc50a3f631e0ca15..6fd1dab282d69bfe93a0270ac2d22e56506fab30 100644 (file)
@@ -1,8 +1,21 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ru_RU/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
+$labels['buttontext'] = 'Архив';
+$labels['archivefolder'] = 'Архив';
 $labels['buttontitle'] = 'Переместить выбранное в архив';
 $labels['archived'] = 'Перенесено в Архив';
-$labels['archivefolder'] = 'Архив';
 
-?>
diff --git a/plugins/archive/localization/si_LK.inc b/plugins/archive/localization/si_LK.inc
new file mode 100644 (file)
index 0000000..46acc19
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/si_LK/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Mohamed Rizmi                                                 |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'සංරක්‍ෂණය';
+$labels['archivefolder'] = 'සංරක්‍ෂණය';
+$labels['buttontitle'] = 'මෙම පණිවිඩය සංරක්‍ෂණය කරන්න';
+$labels['archived'] = 'සංරක්‍ෂණය සාර්ථකයි';
+
diff --git a/plugins/archive/localization/sk_SK.inc b/plugins/archive/localization/sk_SK.inc
new file mode 100644 (file)
index 0000000..d531079
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sk_SK/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: panda                                                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Archivovať';
+$labels['archivefolder'] = 'Archivovať';
+$labels['buttontitle'] = 'Archivovať túto správu';
+$labels['archived'] = 'Úspešne archivované';
+
diff --git a/plugins/archive/localization/sl_SI.inc b/plugins/archive/localization/sl_SI.inc
new file mode 100644 (file)
index 0000000..9a50bb5
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sl_SI/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Barbara Krasovec <barbarak@arnes.si>                          |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Arhiv';
+$labels['archivefolder'] = 'Arhiv';
+$labels['buttontitle'] = 'Arhiviraj to sporočilo';
+$labels['archived'] = 'Sporočilo je bilo uspešno arhivirano';
+
diff --git a/plugins/archive/localization/sr_CS.inc b/plugins/archive/localization/sr_CS.inc
new file mode 100644 (file)
index 0000000..81128c4
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sr_CS/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Saša Zejnilović <zejnils@gmail.com>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Arhiva';
+$labels['archivefolder'] = 'Arhiva';
+$labels['buttontitle'] = 'Arhivirati ovu poruku';
+$labels['archived'] = 'Uspěšno arhivirano';
+
index c55da7aafcb9ab5beb60ccd9a7a1ecfc4ca1c0ce..13d0cf007ce3236bc51ec7423743b855fa848cb7 100644 (file)
@@ -1,8 +1,21 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sv_SE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jonas Nasholm                                                 |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
+$labels['buttontext'] = 'Arkiv';
+$labels['archivefolder'] = 'Arkiv';
 $labels['buttontitle'] = 'Arkivera meddelande';
 $labels['archived'] = 'Meddelandet är arkiverat';
-$labels['archivefolder'] = 'Arkiv';
 
-?>
diff --git a/plugins/archive/localization/tr_TR.inc b/plugins/archive/localization/tr_TR.inc
new file mode 100644 (file)
index 0000000..6b63dc8
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/tr_TR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: ismail yenigul                                                |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Arşiv';
+$labels['archivefolder'] = 'Arşiv';
+$labels['buttontitle'] = 'Bu postayı arşivle';
+$labels['archived'] = 'Başarıyla arşivlendi';
+
diff --git a/plugins/archive/localization/uk_UA.inc b/plugins/archive/localization/uk_UA.inc
new file mode 100644 (file)
index 0000000..18d5f93
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/uk_UA/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Anton Gladky                                                  |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Архів';
+$labels['archivefolder'] = 'Архів';
+$labels['buttontitle'] = 'Архівувати це повідомлення';
+$labels['archived'] = 'Перенесено в архів';
+
diff --git a/plugins/archive/localization/vi_VN.inc b/plugins/archive/localization/vi_VN.inc
new file mode 100644 (file)
index 0000000..07775c9
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/vi_VN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kenny Tran <kennethanh@gmail.com>                             |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Lưu trữ';
+$labels['archivefolder'] = 'Lưu trữ';
+$labels['buttontitle'] = 'Lưu lại bức thư này';
+$labels['archived'] = 'Lưu lại thành công';
+
diff --git a/plugins/archive/localization/zh_CN.inc b/plugins/archive/localization/zh_CN.inc
new file mode 100644 (file)
index 0000000..a9eca45
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/zh_CN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: waring_id                                                     |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = '存档';
+$labels['archivefolder'] = '存档';
+$labels['buttontitle'] = '将该信息存档';
+$labels['archived'] = '存档成功';
+
index 5cccebbdce22d542ce6edcf9f60cb8d222bea30a..0f6e9b9431551291813eb1f16799d2001d2b6878 100644 (file)
@@ -1,8 +1,21 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/zh_TW/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
+$labels['buttontext'] = '封存';
+$labels['archivefolder'] = '封存';
 $labels['buttontitle'] = '封存此信件';
 $labels['archived'] = '已成功封存';
-$labels['archivefolder'] = '封存';
 
-?>
index c549fc9b7b516c67b4ee4870173050483169949c..1aeffaf411e1b997b7264ac0bafff0f640a91847 100644 (file)
        </lead>
        <date>2011-11-23</date>
        <version>
-               <release>1.5</release>
-               <api>1.4</api>
+               <release>1.6</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>
+       <license uri="http://www.gnu.org/licenses/gpl.html">GNU GPLv3+</license>
        <notes>-</notes>
        <contents>
                <dir baseinstalldir="/" name="/">
@@ -50,9 +50,9 @@
                        <file name="localization/ru_RU.inc" role="data"></file>
                        <file name="localization/sv_SE.inc" role="data"></file>
                        <file name="localization/zh_TW.inc" role="data"></file>
-                       <file name="skins/default/archive_act.png" role="data"></file>
-                       <file name="skins/default/archive_pas.png" role="data"></file>
-                       <file name="skins/default/foldericon.png" role="data"></file>
+                       <file name="skins/classic/archive_act.png" role="data"></file>
+                       <file name="skins/classic/archive_pas.png" role="data"></file>
+                       <file name="skins/classic/foldericon.png" role="data"></file>
                </dir>
                <!-- / -->
        </contents>
diff --git a/plugins/archive/skins/classic/archive.css b/plugins/archive/skins/classic/archive.css
new file mode 100644 (file)
index 0000000..3880fe3
--- /dev/null
@@ -0,0 +1,10 @@
+
+#messagetoolbar a.button.archive {
+       text-indent: -5000px;
+       background: url(archive_act.png) 0 0 no-repeat;
+}
+
+#mailboxlist li.mailbox.archive {
+       background-image: url(foldericon.png);
+       background-position: 5px 1px;
+}
diff --git a/plugins/archive/skins/classic/archive_act.png b/plugins/archive/skins/classic/archive_act.png
new file mode 100644 (file)
index 0000000..2a17358
Binary files /dev/null and b/plugins/archive/skins/classic/archive_act.png differ
diff --git a/plugins/archive/skins/classic/archive_pas.png b/plugins/archive/skins/classic/archive_pas.png
new file mode 100644 (file)
index 0000000..8de2085
Binary files /dev/null and b/plugins/archive/skins/classic/archive_pas.png differ
diff --git a/plugins/archive/skins/classic/foldericon.png b/plugins/archive/skins/classic/foldericon.png
new file mode 100644 (file)
index 0000000..ec0853c
Binary files /dev/null and b/plugins/archive/skins/classic/foldericon.png differ
diff --git a/plugins/archive/skins/default/archive_act.png b/plugins/archive/skins/default/archive_act.png
deleted file mode 100644 (file)
index 2a17358..0000000
Binary files a/plugins/archive/skins/default/archive_act.png and /dev/null differ
diff --git a/plugins/archive/skins/default/archive_pas.png b/plugins/archive/skins/default/archive_pas.png
deleted file mode 100644 (file)
index 8de2085..0000000
Binary files a/plugins/archive/skins/default/archive_pas.png and /dev/null differ
diff --git a/plugins/archive/skins/default/foldericon.png b/plugins/archive/skins/default/foldericon.png
deleted file mode 100644 (file)
index ec0853c..0000000
Binary files a/plugins/archive/skins/default/foldericon.png and /dev/null differ
diff --git a/plugins/archive/skins/larry/.gitignore b/plugins/archive/skins/larry/.gitignore
new file mode 100644 (file)
index 0000000..e69de29
index 9601d61a6e4f7b629dce6c54f21dd8c2f0bde13e..63ffb943e09fe5c32e8a5b4058f0b4d0fbf970e8 100644 (file)
@@ -3,6 +3,9 @@
 /**
  * Sample plugin to try out some hooks.
  * This performs an automatic login if accessed from localhost
+ *
+ * @license GNU GPLv3+
+ * @author Thomas Bruederli
  */
 class autologon extends rcube_plugin
 {
index 32461cff6c7fe66ffe5a418fa51edb1368acf366..9a279f57e7870472d0432037926b8d1e98f8c61e 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /**
  * Filesystem Attachments
- * 
+ *
  * This plugin which provides database backed storage for temporary
  * attachment file handling.  The primary advantage of this plugin
  * is its compatibility with round-robin dns multi-server roundcube
@@ -10,7 +10,8 @@
  * This plugin relies on the core filesystem_attachments plugin
  *
  * @author Ziba Scott <ziba@umich.edu>
- * 
+ * @author Aleksander Machniak <alec@alec.pl>
+ * @version @package_version@
  */
 require_once('plugins/filesystem_attachments/filesystem_attachments.php');
 class database_attachments extends filesystem_attachments
diff --git a/plugins/database_attachments/package.xml b/plugins/database_attachments/package.xml
new file mode 100644 (file)
index 0000000..40db858
--- /dev/null
@@ -0,0 +1,62 @@
+<?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>database_attachments</name>
+       <channel>pear.roundcube.net</channel>
+       <summary>SQL database storage for uploaded attachments</summary>
+       <description>
+           This plugin which provides database backed storage for temporary
+        attachment file handling. The primary advantage of this plugin
+        is its compatibility with round-robin dns multi-server Roundcube
+        installations.
+       </description>
+       <lead>
+               <name>Aleksander Machniak</name>
+               <user>alec</user>
+               <email>alec@alec.pl</email>
+               <active>yes</active>
+       </lead>
+       <developer>
+               <name>Ziba Scott</name>
+               <user>ziba</user>
+               <email>ziba@umich.edu</email>
+               <active>yes</active>
+       </developer>
+       <date>2011-11-21</date>
+       <version>
+               <release>1.0</release>
+               <api>1.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>-</notes>
+       <contents>
+               <dir baseinstalldir="/" name="/">
+                       <file name="database_attachments.php" role="php">
+                               <tasks:replace from="@name@" to="name" type="package-info"/>
+                               <tasks:replace from="@package_version@" to="version" type="package-info"/>
+                       </file>
+               </dir>
+               <!-- / -->
+       </contents>
+       <dependencies>
+               <required>
+                       <php>
+                               <min>5.2.1</min>
+                       </php>
+                       <pearinstaller>
+                               <min>1.7.0</min>
+                       </pearinstaller>
+                       <package>
+                   <name>filesystem_attachments</name>
+                   <channel>pear.roundcube.net</channel>
+                       </package>
+               </required>
+       </dependencies>
+       <phprelease/>
+</package>
index f04ba6a619fb9e6d64523c40f100c1b8c64dc38d..1e015c2013f5d54b5d9735b8bcfc02cb78dd6de2 100644 (file)
@@ -15,7 +15,7 @@
  * Enable the plugin in config/main.inc.php and add your desired
  * log types and files.
  *
- * @version 1.0
+ * @version @package_version@
  * @author Ziba Scott
  * @website http://roundcube.net
  * 
@@ -106,13 +106,16 @@ class debug_logger extends rcube_plugin
 
         if(!isset($args[1])){
             // This could be extended to detect types based on the 
-            // file which called console.  For now only rcube_imap.inc is supported
+            // file which called console. For now only rcube_imap/rcube_storage is supported
             $bt = debug_backtrace();
             $file  = $bt[3]['file'];
             switch(basename($file)){
                 case 'rcube_imap.php':
                     $type = 'imap';
                     break;
+                case 'rcube_storage.php':
+                    $type = 'storage';
+                    break;
                 default:
                     $type = FALSE; 
                     break; 
diff --git a/plugins/debug_logger/package.xml b/plugins/debug_logger/package.xml
new file mode 100644 (file)
index 0000000..f416238
--- /dev/null
@@ -0,0 +1,55 @@
+<?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>debug_logger</name>
+       <channel>pear.roundcube.net</channel>
+       <summary>Additional debugging logs</summary>
+       <description>
+           Enhanced logging for debugging purposes. It is not recommened
+        to be enabled on production systems without testing because of
+        the somewhat increased memory, cpu and disk i/o overhead.
+       </description>
+       <lead>
+               <name>Ziba Scott</name>
+               <user>ziba</user>
+               <email>ziba@umich.edu</email>
+               <active>yes</active>
+       </lead>
+       <date>2011-11-21</date>
+       <version>
+               <release>1.0</release>
+               <api>1.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>-</notes>
+       <contents>
+               <dir baseinstalldir="/" name="/">
+                       <file name="debug_logger.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="runlog/runlog.php" role="php">
+                               <tasks:replace from="@name@" to="name" type="package-info"/>
+                               <tasks:replace from="@package_version@" to="version" type="package-info"/>
+                       </file>
+               </dir>
+               <!-- / -->
+       </contents>
+       <dependencies>
+               <required>
+                       <php>
+                               <min>5.2.1</min>
+                       </php>
+                       <pearinstaller>
+                               <min>1.7.0</min>
+                       </pearinstaller>
+               </required>
+       </dependencies>
+       <phprelease/>
+</package>
index 95f5ecf39b7635ecf3ed42efea22d411510f2da3..c986686e38d92dfb5726fabecac123affe729006 100644 (file)
@@ -5,7 +5,8 @@
  *
  * Sample plugin to replace emoticons in plain text message body with real icons
  *
- * @version 1.3
+ * @version @package_version@
+ * @license GNU GPLv3+
  * @author Thomas Bruederli
  * @author Aleksander Machniak
  * @website http://roundcube.net
diff --git a/plugins/emoticons/package.xml b/plugins/emoticons/package.xml
new file mode 100644 (file)
index 0000000..b421810
--- /dev/null
@@ -0,0 +1,53 @@
+<?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>emoticons</name>
+       <channel>pear.roundcube.net</channel>
+       <summary>Display emoticons in text messages</summary>
+       <description>Sample plugin to replace emoticons in plain text message body with real icons.</description>
+       <lead>
+               <name>Thomas Bruederli</name>
+               <user>thomasb</user>
+               <email>roundcube@gmail.com</email>
+               <active>yes</active>
+       </lead>
+       <developer>
+               <name>Aleksander Machniak</name>
+               <user>alec</user>
+               <email>alec@alec.pl</email>
+               <active>yes</active>
+       </developer>
+       <date>2011-11-21</date>
+       <version>
+               <release>1.3</release>
+               <api>1.3</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="emoticons.php" role="php">
+                               <tasks:replace from="@name@" to="name" type="package-info"/>
+                               <tasks:replace from="@package_version@" to="version" type="package-info"/>
+                       </file>
+               </dir>
+               <!-- / -->
+       </contents>
+       <dependencies>
+               <required>
+                       <php>
+                               <min>5.2.1</min>
+                       </php>
+                       <pearinstaller>
+                               <min>1.7.0</min>
+                       </pearinstaller>
+               </required>
+       </dependencies>
+       <phprelease/>
+</package>
index 59ae1202c2b751856c31ead0dc1e2161a4b3c28f..89cb4b7965a5402999035a5b39f4b03823bc6d9c 100644 (file)
@@ -503,7 +503,7 @@ class enigma_engine
         $mime_id = get_input_value('_part', RCUBE_INPUT_POST);
 
         if ($uid && $mime_id) {
-            $part = $this->rc->imap->get_message_part($uid, $mime_id);
+            $part = $this->rc->storage->get_message_part($uid, $mime_id);
         }
 
         if ($part && is_array($result = $this->import_key($part))) {
@@ -512,7 +512,7 @@ class enigma_engine
         }
         else
             $this->rc->output->show_message('enigma.keysimportfailed', 'error');
-    
+
         $this->rc->output->send();
     }
 
@@ -528,7 +528,7 @@ class enigma_engine
         // @TODO: Create such function in core
         // @TODO: Handle big bodies using file handles
         if (!isset($part->body)) {
-            $part->body = $this->rc->imap->get_message_part(
+            $part->body = $this->rc->storage->get_message_part(
                 $uid, $part->mime_id, $part);
         }
     }
diff --git a/plugins/enigma/skins/classic/enigma.css b/plugins/enigma/skins/classic/enigma.css
new file mode 100644 (file)
index 0000000..b1c656f
--- /dev/null
@@ -0,0 +1,182 @@
+/*** Style for Enigma plugin ***/
+
+/***** Messages displaying *****/
+
+#enigma-message,
+/* fixes border-top */
+#messagebody div #enigma-message
+{
+  margin: 0;
+  margin-bottom: 5px;
+  min-height: 20px;
+  padding: 10px 10px 6px 46px;
+}
+
+div.enigmaerror,
+/* fixes border-top */
+#messagebody div.enigmaerror
+{
+  background: url(enigma_error.png) 6px 1px no-repeat;
+  background-color: #EF9398;
+  border: 1px solid #DC5757;
+}
+
+div.enigmanotice,
+/* fixes border-top */
+#messagebody div.enigmanotice
+{
+  background: url(enigma.png) 6px 1px no-repeat;
+  background-color: #A6EF7B;
+  border: 1px solid #76C83F;
+}
+
+div.enigmawarning,
+/* fixes border-top */
+#messagebody div.enigmawarning
+{
+  background: url(enigma.png) 6px 1px no-repeat;
+  background-color: #F7FDCB;
+  border: 1px solid #C2D071;
+}
+
+#enigma-message a
+{
+  color: #666666;
+  padding-left: 10px;
+}
+
+#enigma-message a:hover
+{
+  color: #333333;
+}
+
+/***** Keys/Certs Management *****/
+
+div.enigmascreen
+{
+  position: absolute;
+  top: 65px;
+  right: 10px;
+  bottom: 10px;
+  left: 10px;
+}
+
+#enigmacontent-box
+{
+  position: absolute;
+  top: 0px;
+  left: 290px;
+  right: 0px;
+  bottom: 0px;
+  border: 1px solid #999999;
+  overflow: hidden;
+}
+
+#enigmakeyslist
+{
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  left: 0;
+  border: 1px solid #999999;
+  background-color: #F9F9F9;
+  overflow: hidden;
+}
+
+#keylistcountbar
+{
+  margin-top: 4px;
+  margin-left: 4px;
+}
+
+#keys-table
+{
+  width: 100%;
+  table-layout: fixed;
+}
+
+#keys-table td
+{
+  cursor: default;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+}
+
+#key-details table td.title
+{
+  font-weight: bold;
+  text-align: right;
+}
+
+#keystoolbar
+{
+  position: absolute;
+  top: 30px;
+  left: 10px;
+  height: 35px;
+}
+
+#keystoolbar a
+{
+  padding-right: 10px;
+}
+
+#keystoolbar a.button,
+#keystoolbar a.buttonPas,
+#keystoolbar span.separator {
+  display: block;
+  float: left;
+  width: 32px;
+  height: 32px;
+  padding: 0;
+  margin-right: 10px;
+  overflow: hidden;
+  background: url(keys_toolbar.png) 0 0 no-repeat transparent;
+  opacity: 0.99; /* this is needed to make buttons appear correctly in Chrome */
+}
+
+#keystoolbar a.buttonPas {
+  opacity: 0.35;
+}
+
+#keystoolbar a.createSel {
+  background-position: 0 -32px;
+}
+
+#keystoolbar a.create {
+  background-position: 0 0;
+}
+
+#keystoolbar a.deleteSel {
+  background-position: -32px -32px;
+}
+
+#keystoolbar a.delete {
+  background-position: -32px 0;
+}
+
+#keystoolbar a.importSel {
+  background-position: -64px -32px;
+}
+
+#keystoolbar a.import {
+  background-position: -64px 0;
+}
+
+#keystoolbar a.exportSel {
+  background-position: -96px -32px;
+}
+
+#keystoolbar a.export {
+  background-position: -96px 0;
+}
+
+#keystoolbar a.keymenu {
+  background-position: -128px 0;
+  width: 36px;
+}
+
+#keystoolbar span.separator {
+  width: 5px;
+  background-position: -166px 0;
+}
diff --git a/plugins/enigma/skins/classic/enigma.png b/plugins/enigma/skins/classic/enigma.png
new file mode 100644 (file)
index 0000000..3ef106e
Binary files /dev/null and b/plugins/enigma/skins/classic/enigma.png differ
diff --git a/plugins/enigma/skins/classic/enigma_error.png b/plugins/enigma/skins/classic/enigma_error.png
new file mode 100644 (file)
index 0000000..9bf100e
Binary files /dev/null and b/plugins/enigma/skins/classic/enigma_error.png differ
diff --git a/plugins/enigma/skins/classic/key.png b/plugins/enigma/skins/classic/key.png
new file mode 100644 (file)
index 0000000..ea1cbd1
Binary files /dev/null and b/plugins/enigma/skins/classic/key.png differ
diff --git a/plugins/enigma/skins/classic/key_add.png b/plugins/enigma/skins/classic/key_add.png
new file mode 100644 (file)
index 0000000..f22cc87
Binary files /dev/null and b/plugins/enigma/skins/classic/key_add.png differ
diff --git a/plugins/enigma/skins/classic/keys_toolbar.png b/plugins/enigma/skins/classic/keys_toolbar.png
new file mode 100644 (file)
index 0000000..7cc258c
Binary files /dev/null and b/plugins/enigma/skins/classic/keys_toolbar.png differ
diff --git a/plugins/enigma/skins/classic/templates/keyimport.html b/plugins/enigma/skins/classic/templates/keyimport.html
new file mode 100644 (file)
index 0000000..4e0b304
--- /dev/null
@@ -0,0 +1,20 @@
+<!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><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<link rel="stylesheet" type="text/css" href="/this/enigma.css" />
+</head>
+<body class="iframe">
+
+<div id="keyimport-title" class="boxtitle"><roundcube:label name="enigma.importkeys" /></div>
+
+<div id="import-form" class="boxcontent">
+    <roundcube:object name="importform" />
+    <p>
+        <br /><roundcube:button command="plugin.enigma-import" type="input" class="button mainaction" label="import" />
+    </p>
+</div>
+
+</body>
+</html>
diff --git a/plugins/enigma/skins/classic/templates/keyinfo.html b/plugins/enigma/skins/classic/templates/keyinfo.html
new file mode 100644 (file)
index 0000000..2e8ed61
--- /dev/null
@@ -0,0 +1,17 @@
+<!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><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<link rel="stylesheet" type="text/css" href="/this/enigma.css" />
+</head>
+<body class="iframe">
+
+<div id="keyinfo-title" class="boxtitle"><roundcube:object name="keyname" part="name" /></div>
+
+<div id="key-details" class="boxcontent">
+    <roundcube:object name="keydata" />
+</div>
+
+</body>
+</html>
diff --git a/plugins/enigma/skins/classic/templates/keys.html b/plugins/enigma/skins/classic/templates/keys.html
new file mode 100644 (file)
index 0000000..810c4a2
--- /dev/null
@@ -0,0 +1,76 @@
+<!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><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<link rel="stylesheet" type="text/css" href="/this/enigma.css" />
+<script type="text/javascript" src="/functions.js"></script>
+<script type="text/javascript" src="/splitter.js"></script>
+<style type="text/css">                                                                                                                      
+#enigmakeyslist { width: <roundcube:exp expression="!empty(cookie:enigmaviewsplitter) ? cookie:enigmaviewsplitter-5 : 210" />px; }
+#enigmacontent-box { left: <roundcube:exp expression="!empty(cookie:enigmaviewsplitter) ? cookie:enigmaviewsplitter+5 : 220" />px;
+<roundcube:exp expression="browser:ie ? ('width:expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:enigmaeviewsplitter) ? cookie:enigmaviewsplitter+5 : 220).')+\\'px\\');') : ''" />
+}
+</style>
+</head>
+<body class="iframe" onload="rcube_init_mail_ui()">
+
+<div id="prefs-title" class="boxtitle"><roundcube:label name="enigma.enigmakeys" /></div>
+<div id="prefs-details" class="boxcontent">
+
+<div id="keystoolbar">
+    <roundcube:button command="plugin.enigma-key-create" type="link" class="buttonPas create" classAct="button create" classSel="button createSel" title="enigma.createkeys" content=" " />
+    <roundcube:button command="plugin.enigma-key-delete" type="link" class="buttonPas delete" classAct="button delete" classSel="button deleteSel" title="enigma.deletekeys" content=" " />
+    <span class="separator">&nbsp;</span>
+    <roundcube:button command="plugin.enigma-key-import" type="link" class="buttonPas import" classAct="button import" classSel="button importSel" title="enigma.importkeys" content=" " />
+    <roundcube:button command="plugin.enigma-key-export" type="link" class="buttonPas export" classAct="button export" classSel="button exportSel" title="enigma.exportkeys" content=" " />
+    <roundcube:button name="messagemenulink" id="messagemenulink" type="link" class="button keymenu" title="enigma.keyactions" onclick="rcmail_ui.show_popup('messagemenu');return false" content=" " />
+</div>
+
+<div id="quicksearchbar" style="top: 35px; right: 10px;">
+    <roundcube:button name="searchmenulink" id="searchmenulink" image="/images/icons/glass.png" />
+    <roundcube:object name="searchform" id="quicksearchbox" />
+    <roundcube:button command="reset-search" id="searchreset" image="/images/icons/reset.gif" title="resetsearch" />
+</div>
+
+<div class="enigmascreen">
+
+<div id="enigmakeyslist">
+<div class="boxtitle"><roundcube:label name="enigma.keyname" /></div>
+<div class="boxlistcontent">
+    <roundcube:object name="keyslist" id="keys-table" class="records-table" cellspacing="0" noheader="true" />
+</div>
+<div class="boxfooter">
+<div id="keylistcountbar" class="pagenav">
+    <roundcube:button command="firstpage" type="link" class="buttonPas firstpage" classAct="button firstpage" classSel="button firstpageSel" title="firstpage" content=" " />
+    <roundcube:button command="previouspage" type="link" class="buttonPas prevpage" classAct="button prevpage" classSel="button prevpageSel" title="previouspage" content=" " />
+    <roundcube:object name="countdisplay" style="padding:0 .5em; float:left" />
+    <roundcube:button command="nextpage" type="link" class="buttonPas nextpage" classAct="button nextpage" classSel="button nextpageSel" title="nextpage" content=" " />
+    <roundcube:button command="lastpage" type="link" class="buttonPas lastpage" classAct="button lastpage" classSel="button lastpageSel" title="lastpage" content=" " />
+</div>
+</div>
+</div>
+
+<script type="text/javascript">
+    var enigmaviewsplit = new rcube_splitter({id:'enigmaviewsplitter', p1: 'enigmakeyslist', p2: 'enigmacontent-box', orientation: 'v', relative: true, start: 215});
+    rcmail.add_onload('enigmaviewsplit.init()');
+</script>
+
+<div id="enigmacontent-box">
+    <roundcube:object name="keyframe" id="keyframe" width="100%" height="100%" frameborder="0" src="/watermark.html" />
+</div>
+
+</div>
+</div>
+
+<div id="messagemenu" class="popupmenu">
+    <ul class="toolbarmenu">
+        <li><roundcube:button class="disablelink" command="enigma.key-disable" label="enigma.keydisable" target="_blank" classAct="disablelink active" /></li>
+        <li><roundcube:button class="revokelink" command="enigma.key-revoke" label="enigma.keyrevoke" classAct="revokelink active" /></li>
+        <li class="separator_below"><roundcube:button class="sendlink" command="enigma.key-send" label="enigma.keysend" classAct="sendlink active" /></li>
+        <li><roundcube:button class="chpasslink" command="enigma.key-chpass" label="enigma.keychpass" classAct="chpasslink active" /></li>
+    </ul>
+</div>
+
+</body>
+</html>
diff --git a/plugins/enigma/skins/default/enigma.css b/plugins/enigma/skins/default/enigma.css
deleted file mode 100644 (file)
index b1c656f..0000000
+++ /dev/null
@@ -1,182 +0,0 @@
-/*** Style for Enigma plugin ***/
-
-/***** Messages displaying *****/
-
-#enigma-message,
-/* fixes border-top */
-#messagebody div #enigma-message
-{
-  margin: 0;
-  margin-bottom: 5px;
-  min-height: 20px;
-  padding: 10px 10px 6px 46px;
-}
-
-div.enigmaerror,
-/* fixes border-top */
-#messagebody div.enigmaerror
-{
-  background: url(enigma_error.png) 6px 1px no-repeat;
-  background-color: #EF9398;
-  border: 1px solid #DC5757;
-}
-
-div.enigmanotice,
-/* fixes border-top */
-#messagebody div.enigmanotice
-{
-  background: url(enigma.png) 6px 1px no-repeat;
-  background-color: #A6EF7B;
-  border: 1px solid #76C83F;
-}
-
-div.enigmawarning,
-/* fixes border-top */
-#messagebody div.enigmawarning
-{
-  background: url(enigma.png) 6px 1px no-repeat;
-  background-color: #F7FDCB;
-  border: 1px solid #C2D071;
-}
-
-#enigma-message a
-{
-  color: #666666;
-  padding-left: 10px;
-}
-
-#enigma-message a:hover
-{
-  color: #333333;
-}
-
-/***** Keys/Certs Management *****/
-
-div.enigmascreen
-{
-  position: absolute;
-  top: 65px;
-  right: 10px;
-  bottom: 10px;
-  left: 10px;
-}
-
-#enigmacontent-box
-{
-  position: absolute;
-  top: 0px;
-  left: 290px;
-  right: 0px;
-  bottom: 0px;
-  border: 1px solid #999999;
-  overflow: hidden;
-}
-
-#enigmakeyslist
-{
-  position: absolute;
-  top: 0;
-  bottom: 0;
-  left: 0;
-  border: 1px solid #999999;
-  background-color: #F9F9F9;
-  overflow: hidden;
-}
-
-#keylistcountbar
-{
-  margin-top: 4px;
-  margin-left: 4px;
-}
-
-#keys-table
-{
-  width: 100%;
-  table-layout: fixed;
-}
-
-#keys-table td
-{
-  cursor: default;
-  text-overflow: ellipsis;
-  -o-text-overflow: ellipsis;
-}
-
-#key-details table td.title
-{
-  font-weight: bold;
-  text-align: right;
-}
-
-#keystoolbar
-{
-  position: absolute;
-  top: 30px;
-  left: 10px;
-  height: 35px;
-}
-
-#keystoolbar a
-{
-  padding-right: 10px;
-}
-
-#keystoolbar a.button,
-#keystoolbar a.buttonPas,
-#keystoolbar span.separator {
-  display: block;
-  float: left;
-  width: 32px;
-  height: 32px;
-  padding: 0;
-  margin-right: 10px;
-  overflow: hidden;
-  background: url(keys_toolbar.png) 0 0 no-repeat transparent;
-  opacity: 0.99; /* this is needed to make buttons appear correctly in Chrome */
-}
-
-#keystoolbar a.buttonPas {
-  opacity: 0.35;
-}
-
-#keystoolbar a.createSel {
-  background-position: 0 -32px;
-}
-
-#keystoolbar a.create {
-  background-position: 0 0;
-}
-
-#keystoolbar a.deleteSel {
-  background-position: -32px -32px;
-}
-
-#keystoolbar a.delete {
-  background-position: -32px 0;
-}
-
-#keystoolbar a.importSel {
-  background-position: -64px -32px;
-}
-
-#keystoolbar a.import {
-  background-position: -64px 0;
-}
-
-#keystoolbar a.exportSel {
-  background-position: -96px -32px;
-}
-
-#keystoolbar a.export {
-  background-position: -96px 0;
-}
-
-#keystoolbar a.keymenu {
-  background-position: -128px 0;
-  width: 36px;
-}
-
-#keystoolbar span.separator {
-  width: 5px;
-  background-position: -166px 0;
-}
diff --git a/plugins/enigma/skins/default/enigma.png b/plugins/enigma/skins/default/enigma.png
deleted file mode 100644 (file)
index 3ef106e..0000000
Binary files a/plugins/enigma/skins/default/enigma.png and /dev/null differ
diff --git a/plugins/enigma/skins/default/enigma_error.png b/plugins/enigma/skins/default/enigma_error.png
deleted file mode 100644 (file)
index 9bf100e..0000000
Binary files a/plugins/enigma/skins/default/enigma_error.png and /dev/null differ
diff --git a/plugins/enigma/skins/default/key.png b/plugins/enigma/skins/default/key.png
deleted file mode 100644 (file)
index ea1cbd1..0000000
Binary files a/plugins/enigma/skins/default/key.png and /dev/null differ
diff --git a/plugins/enigma/skins/default/key_add.png b/plugins/enigma/skins/default/key_add.png
deleted file mode 100644 (file)
index f22cc87..0000000
Binary files a/plugins/enigma/skins/default/key_add.png and /dev/null differ
diff --git a/plugins/enigma/skins/default/keys_toolbar.png b/plugins/enigma/skins/default/keys_toolbar.png
deleted file mode 100644 (file)
index 7cc258c..0000000
Binary files a/plugins/enigma/skins/default/keys_toolbar.png and /dev/null differ
diff --git a/plugins/enigma/skins/default/templates/keyimport.html b/plugins/enigma/skins/default/templates/keyimport.html
deleted file mode 100644 (file)
index 4e0b304..0000000
+++ /dev/null
@@ -1,20 +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><roundcube:object name="pagetitle" /></title>
-<roundcube:include file="/includes/links.html" />
-<link rel="stylesheet" type="text/css" href="/this/enigma.css" />
-</head>
-<body class="iframe">
-
-<div id="keyimport-title" class="boxtitle"><roundcube:label name="enigma.importkeys" /></div>
-
-<div id="import-form" class="boxcontent">
-    <roundcube:object name="importform" />
-    <p>
-        <br /><roundcube:button command="plugin.enigma-import" type="input" class="button mainaction" label="import" />
-    </p>
-</div>
-
-</body>
-</html>
diff --git a/plugins/enigma/skins/default/templates/keyinfo.html b/plugins/enigma/skins/default/templates/keyinfo.html
deleted file mode 100644 (file)
index 2e8ed61..0000000
+++ /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>
-<title><roundcube:object name="pagetitle" /></title>
-<roundcube:include file="/includes/links.html" />
-<link rel="stylesheet" type="text/css" href="/this/enigma.css" />
-</head>
-<body class="iframe">
-
-<div id="keyinfo-title" class="boxtitle"><roundcube:object name="keyname" part="name" /></div>
-
-<div id="key-details" class="boxcontent">
-    <roundcube:object name="keydata" />
-</div>
-
-</body>
-</html>
diff --git a/plugins/enigma/skins/default/templates/keys.html b/plugins/enigma/skins/default/templates/keys.html
deleted file mode 100644 (file)
index 810c4a2..0000000
+++ /dev/null
@@ -1,76 +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><roundcube:object name="pagetitle" /></title>
-<roundcube:include file="/includes/links.html" />
-<link rel="stylesheet" type="text/css" href="/this/enigma.css" />
-<script type="text/javascript" src="/functions.js"></script>
-<script type="text/javascript" src="/splitter.js"></script>
-<style type="text/css">                                                                                                                      
-#enigmakeyslist { width: <roundcube:exp expression="!empty(cookie:enigmaviewsplitter) ? cookie:enigmaviewsplitter-5 : 210" />px; }
-#enigmacontent-box { left: <roundcube:exp expression="!empty(cookie:enigmaviewsplitter) ? cookie:enigmaviewsplitter+5 : 220" />px;
-<roundcube:exp expression="browser:ie ? ('width:expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:enigmaeviewsplitter) ? cookie:enigmaviewsplitter+5 : 220).')+\\'px\\');') : ''" />
-}
-</style>
-</head>
-<body class="iframe" onload="rcube_init_mail_ui()">
-
-<div id="prefs-title" class="boxtitle"><roundcube:label name="enigma.enigmakeys" /></div>
-<div id="prefs-details" class="boxcontent">
-
-<div id="keystoolbar">
-    <roundcube:button command="plugin.enigma-key-create" type="link" class="buttonPas create" classAct="button create" classSel="button createSel" title="enigma.createkeys" content=" " />
-    <roundcube:button command="plugin.enigma-key-delete" type="link" class="buttonPas delete" classAct="button delete" classSel="button deleteSel" title="enigma.deletekeys" content=" " />
-    <span class="separator">&nbsp;</span>
-    <roundcube:button command="plugin.enigma-key-import" type="link" class="buttonPas import" classAct="button import" classSel="button importSel" title="enigma.importkeys" content=" " />
-    <roundcube:button command="plugin.enigma-key-export" type="link" class="buttonPas export" classAct="button export" classSel="button exportSel" title="enigma.exportkeys" content=" " />
-    <roundcube:button name="messagemenulink" id="messagemenulink" type="link" class="button keymenu" title="enigma.keyactions" onclick="rcmail_ui.show_popup('messagemenu');return false" content=" " />
-</div>
-
-<div id="quicksearchbar" style="top: 35px; right: 10px;">
-    <roundcube:button name="searchmenulink" id="searchmenulink" image="/images/icons/glass.png" />
-    <roundcube:object name="searchform" id="quicksearchbox" />
-    <roundcube:button command="reset-search" id="searchreset" image="/images/icons/reset.gif" title="resetsearch" />
-</div>
-
-<div class="enigmascreen">
-
-<div id="enigmakeyslist">
-<div class="boxtitle"><roundcube:label name="enigma.keyname" /></div>
-<div class="boxlistcontent">
-    <roundcube:object name="keyslist" id="keys-table" class="records-table" cellspacing="0" noheader="true" />
-</div>
-<div class="boxfooter">
-<div id="keylistcountbar" class="pagenav">
-    <roundcube:button command="firstpage" type="link" class="buttonPas firstpage" classAct="button firstpage" classSel="button firstpageSel" title="firstpage" content=" " />
-    <roundcube:button command="previouspage" type="link" class="buttonPas prevpage" classAct="button prevpage" classSel="button prevpageSel" title="previouspage" content=" " />
-    <roundcube:object name="countdisplay" style="padding:0 .5em; float:left" />
-    <roundcube:button command="nextpage" type="link" class="buttonPas nextpage" classAct="button nextpage" classSel="button nextpageSel" title="nextpage" content=" " />
-    <roundcube:button command="lastpage" type="link" class="buttonPas lastpage" classAct="button lastpage" classSel="button lastpageSel" title="lastpage" content=" " />
-</div>
-</div>
-</div>
-
-<script type="text/javascript">
-    var enigmaviewsplit = new rcube_splitter({id:'enigmaviewsplitter', p1: 'enigmakeyslist', p2: 'enigmacontent-box', orientation: 'v', relative: true, start: 215});
-    rcmail.add_onload('enigmaviewsplit.init()');
-</script>
-
-<div id="enigmacontent-box">
-    <roundcube:object name="keyframe" id="keyframe" width="100%" height="100%" frameborder="0" src="/watermark.html" />
-</div>
-
-</div>
-</div>
-
-<div id="messagemenu" class="popupmenu">
-    <ul class="toolbarmenu">
-        <li><roundcube:button class="disablelink" command="enigma.key-disable" label="enigma.keydisable" target="_blank" classAct="disablelink active" /></li>
-        <li><roundcube:button class="revokelink" command="enigma.key-revoke" label="enigma.keyrevoke" classAct="revokelink active" /></li>
-        <li class="separator_below"><roundcube:button class="sendlink" command="enigma.key-send" label="enigma.keysend" classAct="sendlink active" /></li>
-        <li><roundcube:button class="chpasslink" command="enigma.key-chpass" label="enigma.keychpass" classAct="chpasslink active" /></li>
-    </ul>
-</div>
-
-</body>
-</html>
diff --git a/plugins/example_addressbook/package.xml b/plugins/example_addressbook/package.xml
new file mode 100644 (file)
index 0000000..407548d
--- /dev/null
@@ -0,0 +1,51 @@
+<?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>example_addressbook</name>
+       <channel>pear.roundcube.net</channel>
+       <summary>Example addressbook plugin implementation</summary>
+       <description>Sample plugin to add a new address book with just a static list of contacts.</description>
+       <lead>
+               <name>Thomas Bruederli</name>
+               <user>thomasb</user>
+               <email>roundcube@gmail.com</email>
+               <active>yes</active>
+       </lead>
+       <date>2011-11-21</date>
+       <version>
+               <release>1.0</release>
+               <api>1.0</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="example_addressbook.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="example_addressbook_backend.php" role="php">
+                               <tasks:replace from="@name@" to="name" type="package-info"/>
+                               <tasks:replace from="@package_version@" to="version" type="package-info"/>
+                       </file>
+               </dir>
+               <!-- / -->
+       </contents>
+       <dependencies>
+               <required>
+                       <php>
+                               <min>5.2.1</min>
+                       </php>
+                       <pearinstaller>
+                               <min>1.7.0</min>
+                       </pearinstaller>
+               </required>
+       </dependencies>
+       <phprelease/>
+</package>
index 12c78d9734edf468289f7bcaba20e1a1d9c2c86f..fa147795f395eea56b62393e8502297e17582e30 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /**
  * Filesystem Attachments
- * 
+ *
  * This is a core plugin which provides basic, filesystem based
  * attachment temporary file handling.  This includes storing
  * attachments of messages currently being composed, writing attachments
@@ -15,7 +15,7 @@
  *
  * @author Ziba Scott <ziba@umich.edu>
  * @author Thomas Bruederli <roundcube@gmail.com>
- * 
+ *
  */
 class filesystem_attachments extends rcube_plugin
 {
diff --git a/plugins/filesystem_attachments/package.xml b/plugins/filesystem_attachments/package.xml
new file mode 100644 (file)
index 0000000..031a742
--- /dev/null
@@ -0,0 +1,59 @@
+<?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>filesystem_attachments</name>
+       <channel>pear.roundcube.net</channel>
+       <summary>Default database storage for uploaded attachments</summary>
+       <description>
+           This is a core plugin which provides basic, filesystem based
+        attachment temporary file handling. This includes storing
+        attachments of messages currently being composed, writing attachments
+        to disk when drafts with attachments are re-opened and writing
+        attachments to disk for inline display in current html compositions.
+       </description>
+       <lead>
+               <name>Thomas Bruederli</name>
+               <user>thomasb</user>
+               <email>roundcube@gmail.com</email>
+               <active>yes</active>
+       </lead>
+       <developer>
+               <name>Ziba Scott</name>
+               <user>ziba</user>
+               <email>ziba@umich.edu</email>
+               <active>yes</active>
+       </developer>
+       <date>2011-11-21</date>
+       <version>
+               <release>1.0</release>
+               <api>1.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>-</notes>
+       <contents>
+               <dir baseinstalldir="/" name="/">
+                       <file name="filesystem_attachments.php" role="php">
+                               <tasks:replace from="@name@" to="name" type="package-info"/>
+                               <tasks:replace from="@package_version@" to="version" type="package-info"/>
+                       </file>
+               </dir>
+               <!-- / -->
+       </contents>
+       <dependencies>
+               <required>
+                       <php>
+                               <min>5.2.1</min>
+                       </php>
+                       <pearinstaller>
+                               <min>1.7.0</min>
+                       </pearinstaller>
+               </required>
+       </dependencies>
+       <phprelease/>
+</package>
index c5bc2f477a6e579246dc7cac70cf1bb6a33276fa..e3ac9752967278a42051e360af1b5f7246c39ac7 100644 (file)
@@ -1,9 +1,11 @@
-<div id="helpabout">
-<h3 align="center">Copyright &copy; 2005-2010, The Roundcube Dev Team</h3>
+<div id="helpabout" class="readtext">
+<h2 align="center">Copyright &copy; 2005-2012, The Roundcube Dev Team</h2>
 
-<p>This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License version 2
-as published by the Free Software Foundation.
+<p>
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License (with exceptions
+for skins &amp; plugins) as published by the Free Software Foundation,
+either version 3 of the License, or (at your option) any later version.
 </p>
 <p>
 This program is distributed in the hope that it will be useful,
@@ -12,27 +14,14 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 GNU General Public License for more details.
 </p>
 <p>
-You should have received a copy of the GNU General Public License along
-with this program; if not, write to the Free Software Foundation, Inc.,
-51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.   
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <a href="http://www.gnu.org/licenses/">www.gnu.org/licenses</a>.
 </p>
 
-<div align="center">
-<h3>Project management and administration</h3>
-<b>Thomas Bruederli (thomasb)</b> - Project leader and head developer<br />
-<b>Till Klampäckel (till)</b> - Co-leader<br />
-<b>Brett Patterson</b> - Forum administrator<br />
-<b>Adam Grelck</b> - Trac administrator<br />
-<b>Jason Fesler</b> - Mailing list administrator<br />
-<b>Brennan Stehling</b> - Mentor, Coordinator
-
-<h3>Developers</h3>
-<b>Eric Stadtherr (estadtherr)</b><br />
-<b>Robin Elfrink (robin, wobin)</b><br />
-<b>Rich Sandberg (richs)</b><br />
-<b>Tomasz Pajor (tomekp)</b><br />
-<b>Fourat Zouari (fourat.zouari)</b><br />
-<b>Aleksander Machniak (alec)</b>
+<p>
+For more details about licensing and the expections for skins and plugins
+see <a href="http://roundcube.net/license">roundcube.net/license</a>.
+</p>
 
 <p><br/>Website: <a href="http://roundcube.net">roundcube.net</a></p>
 </div>
index 2d83c6013ca37e460608c3730d1056156e5c168d..371dbffe10f3ad99008179c402e3af7e55b5bb83 100644 (file)
-<div id="helplicense">
-<h3>GNU GENERAL PUBLIC LICENSE</h3>
-<p>
-Version 2, June 1991
-</p>
-
-<pre>
-Copyright (C) 1989, 1991 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.
-</pre>
+<div id="helplicense" class="readtext">
+<h2 style="text-align: center;">GNU GENERAL PUBLIC LICENSE</h2>
+<p style="text-align: center;">Version 3, 29 June 2007</p>
+
+<p>Copyright &copy; 2007 Free Software Foundation, Inc.
+ &lt;<a href="http://fsf.org/">http://fsf.org/</a>&gt;</p><p>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.</p>
 
 <h3>Preamble</h3>
 
-<p>
-The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.)  You can apply it to
-your programs, too.
-</p>
-
-<p>
-When we speak of free software, we are referring to freedom, not
+<p>The GNU General Public License is a free, copyleft license for
+software and other kinds of works.</p>
+
+<p>The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.</p>
+
+<p>When we speak of free software, we are referring to freedom, 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 or use pieces of it
-in new free programs; and that you know you can do these things.
-</p>
-
-<p>
-To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-</p>
-
-<p>
-For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-</p>
-
-<p>
-We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-</p>
-
-<p>
-Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-</p>
-
-<p>
-Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-</p>
-
-<p>
-  The precise terms and conditions for copying, distribution and
-modification follow.
-</p>
-
-
-<h3>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</h3>
-
-
-<p>
-<strong>0.</strong>
-This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-</p>
-
-<p>
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-</p>
-
-<p>
-<strong>1.</strong>
-You may copy and distribute verbatim copies of the Program's
-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 give any other recipients of the Program a copy of this License
-along with the Program.
-</p>
-
-<p>
-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.
-</p>
-
-<p>
-<strong>2.</strong>
-You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-</p>
-
-<dl>
-  <dt></dt>
-    <dd>
-      <strong>a)</strong>
-      You must cause the modified files to carry prominent notices
-      stating that you changed the files and the date of any change.
-    </dd>
-  <dt></dt>
-    <dd>
-      <strong>b)</strong>
-      You must cause any work that you distribute or publish, that in
-      whole or in part contains or is derived from the Program or any
-      part thereof, to be licensed as a whole at no charge to all third
-      parties under the terms of this License.
-    </dd>
-  <dt></dt>
-    <dd>
-      <strong>c)</strong>
-      If the modified program normally reads commands interactively
-      when run, you must cause it, when started running for such
-      interactive use in the most ordinary way, to print or display an
-      announcement including an appropriate copyright notice and a
-      notice that there is no warranty (or else, saying that you provide
-      a warranty) and that users may redistribute the program under
-      these conditions, and telling the user how to view a copy of this
-      License.  (Exception: if the Program itself is interactive but
-      does not normally print such an announcement, your work based on
-      the Program is not required to print an announcement.)
-    </dd>
-</dl>
-
-<p>
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-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 Program, 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.
-</p>
-
-<p>
-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 Program.
-</p>
-
-<p>
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-</p>
-
-<p>
-<strong>3.</strong>
-You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-</p>
-
-<dl>
-  <dt></dt>
-    <dd>
-      <strong>a)</strong>
-      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; or,
-    </dd>
-  <dt></dt>
-    <dd>
-      <strong>b)</strong>
-      Accompany it with a written offer, valid for at least three
-      years, to give any third party, for a charge no more than your
-      cost of physically performing source distribution, a complete
-      machine-readable copy of the corresponding source code, to be
-      distributed under the terms of Sections 1 and 2 above on a medium
-      customarily used for software interchange; or,
-    </dd>
-  <dt></dt>
-    <dd>
-      <strong>c)</strong>
-      Accompany it with the information you received as to the offer
-      to distribute corresponding source code.  (This alternative is
-      allowed only for noncommercial distribution and only if you
-      received the program in object code or executable form with such
-      an offer, in accord with Subsection b above.)
-    </dd>
-</dl>
-
-<p>
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, 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 executable.  However, as a
-special exception, the source code 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.
-</p>
-
-<p>
-If distribution of executable or 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 counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-</p>
-
-<p>
-<strong>4.</strong>
-You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program 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.
-</p>
-
-<p>
-<strong>5.</strong>
-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 Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-</p>
-
-<p>
-<strong>6.</strong>
-Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program 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 to
-this License.
-</p>
-
-<p>
-<strong>7.</strong>
-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
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.</p>
+
+<p>To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.</p>
+
+<p>For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.</p>
+
+<p>Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.</p>
+
+<p>For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.</p>
+
+<p>Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.</p>
+
+<p>Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.</p>
+
+<p>The precise terms and conditions for copying, distribution and
+modification follow.</p>
+
+<h3><a name="terms"></a>TERMS AND CONDITIONS</h3>
+
+<h4><a name="section0"></a>0. Definitions.</h4>
+
+<p>&ldquo;This License&rdquo; refers to version 3 of the GNU General Public License.</p>
+
+<p>&ldquo;Copyright&rdquo; also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.</p>
+<p>&ldquo;The Program&rdquo; refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as &ldquo;you&rdquo;.  &ldquo;Licensees&rdquo; and
+&ldquo;recipients&rdquo; may be individuals or organizations.</p>
+
+<p>To &ldquo;modify&rdquo; a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a &ldquo;modified version&rdquo; of the
+earlier work or a work &ldquo;based on&rdquo; the earlier work.</p>
+
+<p>A &ldquo;covered work&rdquo; means either the unmodified Program or a work based
+on the Program.</p>
+
+<p>To &ldquo;propagate&rdquo; a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.</p>
+
+<p>To &ldquo;convey&rdquo; a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.</p>
+
+<p>An interactive user interface displays &ldquo;Appropriate Legal Notices&rdquo;
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.</p>
+
+<h4><a name="section1"></a>1. Source Code.</h4>
+
+<p>The &ldquo;source code&rdquo; for a work means the preferred form of the work
+for making modifications to it.  &ldquo;Object code&rdquo; means any non-source
+form of a work.</p>
+
+<p>A &ldquo;Standard Interface&rdquo; means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.</p>
+
+<p>The &ldquo;System Libraries&rdquo; of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+&ldquo;Major Component&rdquo;, in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.</p>
+
+<p>The &ldquo;Corresponding Source&rdquo; for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.</p>
+
+<p>The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.</p>
+
+<p>The Corresponding Source for a work in source code form is that
+same work.</p>
+
+<h4><a name="section2"></a>2. Basic Permissions.</h4>
+
+<p>All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.</p>
+
+<p>You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.</p>
+
+<p>Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.</p>
+
+<h4><a name="section3"></a>3. Protecting Users' Legal Rights From Anti-Circumvention Law.</h4>
+
+<p>No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.</p>
+
+<p>When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.</p>
+
+<h4><a name="section4"></a>4. Conveying Verbatim Copies.</h4>
+
+<p>You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.</p>
+
+<p>You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.</p>
+
+<h4><a name="section5"></a>5. Conveying Modified Source Versions.</h4>
+
+<p>You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:</p>
+
+<ul>
+<li>a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.</li>
+
+<li>b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    &ldquo;keep intact all notices&rdquo;.</li>
+
+<li>c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.</li>
+
+<li>d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.</li>
+
+</ul>
+
+<p>A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+&ldquo;aggregate&rdquo; if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.</p>
+
+<h4><a name="section6"></a>6. Conveying Non-Source Forms.</h4>
+
+<p>You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:</p>
+
+<ul>
+<li>a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.</li>
+
+<li>b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.</li>
+
+<li>c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.</li>
+
+<li>d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.</li>
+
+<li>e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.</li>
+</ul>
+
+<p>A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.</p>
+
+<p>A &ldquo;User Product&rdquo; is either (1) a &ldquo;consumer product&rdquo;, which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, &ldquo;normally used&rdquo; refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.</p>
+
+<p>&ldquo;Installation Information&rdquo; for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.</p>
+
+<p>If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).</p>
+
+<p>The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.</p>
+
+<p>Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.</p>
+
+<h4><a name="section7"></a>7. Additional Terms.</h4>
+
+<p>&ldquo;Additional permissions&rdquo; are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.</p>
+
+<p>When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.</p>
+
+<p>Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:</p>
+
+<ul>
+<li>a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or</li>
+
+<li>b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or</li>
+
+<li>c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or</li>
+
+<li>d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or</li>
+
+<li>e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or</li>
+
+<li>f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.</li>
+</ul>
+
+<p>All other non-permissive additional terms are considered &ldquo;further
+restrictions&rdquo; within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.</p>
+
+<p>If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.</p>
+
+<p>Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.</p>
+
+<h4><a name="section8"></a>8. Termination.</h4>
+
+<p>You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).</p>
+
+<p>However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.</p>
+
+<p>Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.</p>
+
+<p>Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.</p>
+
+<h4><a name="section9"></a>9. Acceptance Not Required for Having Copies.</h4>
+
+<p>You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.</p>
+
+<h4><a name="section10"></a>10. Automatic Licensing of Downstream Recipients.</h4>
+
+<p>Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.</p>
+
+<p>An &ldquo;entity transaction&rdquo; is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.</p>
+
+<p>You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.</p>
+
+<h4><a name="section11"></a>11. Patents.</h4>
+
+<p>A &ldquo;contributor&rdquo; is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's &ldquo;contributor version&rdquo;.</p>
+
+<p>A contributor's &ldquo;essential patent claims&rdquo; are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, &ldquo;control&rdquo; includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.</p>
+
+<p>Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.</p>
+
+<p>In the following three paragraphs, a &ldquo;patent license&rdquo; is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To &ldquo;grant&rdquo; such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.</p>
+
+<p>If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  &ldquo;Knowingly relying&rdquo; means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.</p>
+
+  
+<p>If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.</p>
+
+<p>A patent license is &ldquo;discriminatory&rdquo; if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.</p>
+
+<p>Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.</p>
+
+<h4><a name="section12"></a>12. No Surrender of Others' Freedom.</h4>
+
+<p>If 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 Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program 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 Program.
-</p>
-
-<p>
-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.
-</p>
-
-<p>
-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.
-</p>
-
-<p>
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-</p>
-
-<p>
-<strong>8.</strong>
-If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program 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.
-</p>
-
-<p>
-<strong>9.</strong>
-The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.</p>
+
+<h4><a name="section13"></a>13. Use with the GNU Affero General Public License.</h4>
+
+<p>Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.</p>
+
+<h4><a name="section14"></a>14. Revised Versions of this License.</h4>
+
+<p>The Free Software Foundation may publish revised and/or new versions of
+the GNU 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.
-</p>
-
-<p>
-Each version is given a distinguishing version number.  If the Program
-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 Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-</p>
-
-<p>
-<strong>10.</strong>
-If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, 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.
-</p>
-
-<p><strong>NO WARRANTY</strong></p>
-
-<p>
-<strong>11.</strong>
-BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "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 PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-</p>
-
-<p>
-<strong>12.</strong>
-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 PROGRAM 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 PROGRAM (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 PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-</p>
+address new problems or concerns.</p>
+
+<p>Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License &ldquo;or any later version&rdquo; applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.</p>
+
+<p>If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.</p>
+
+<p>Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.</p>
+
+<h4><a name="section15"></a>15. Disclaimer of Warranty.</h4>
+
+<p>THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM &ldquo;AS IS&rdquo; 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 PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.</p>
+
+<h4><a name="section16"></a>16. Limitation of Liability.</h4>
+
+<p>IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM 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 PROGRAM (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 PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.</p>
+
+<h4><a name="section17"></a>17. Interpretation of Sections 15 and 16.</h4>
+
+<p>If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.</p>
+
+<p>END OF TERMS AND CONDITIONS</p>
+
+<h3><a name="howto"></a>How to Apply These Terms to Your New Programs</h3>
+
+<p>If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.</p>
+
+<p>To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the &ldquo;copyright&rdquo; line and a pointer to where the full notice is found.</p>
+
+<pre>    &lt;one line to give the program's name and a brief idea of what it does.&gt;
+    Copyright (C) &lt;year&gt;  &lt;name of author&gt;
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program 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 General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.
+</pre>
+
+<p>Also add information on how to contact you by electronic and paper mail.</p>
+
+<p>If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:</p>
+
+<pre>    &lt;program&gt;  Copyright (C) &lt;year&gt;  &lt;name of author&gt;
+
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+</pre>
+
+<p>The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an &ldquo;about box&rdquo;.</p>
+
+<p>You should also get your employer (if you work as a programmer) or school,
+if any, to sign a &ldquo;copyright disclaimer&rdquo; for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+&lt;<a href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>&gt;.</p>
+
+<p>The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+&lt;<a href="http://www.gnu.org/philosophy/why-not-lgpl.html">http://www.gnu.org/philosophy/why-not-lgpl.html</a>&gt;.</p>
+
 </div>
index ccf80820b1d509edb357c91418e93e3bcbeb2c69..ad7dbf0ba1f1c8e29df5f2ae8ee21a91a03cb25d 100644 (file)
@@ -4,7 +4,7 @@
  * Help Plugin
  *
  * @author Aleksander 'A.L.E.C' Machniak
- * @licence GNU GPL
+ * @license GNU GPLv3+
  *
  * Configuration (see config.inc.php.dist)
  * 
@@ -35,21 +35,16 @@ class help extends rcube_plugin
 
         // add taskbar button
         $this->add_button(array(
-               'name'  => 'helptask',
-               'class' => 'button-help',
-               'label' => 'help.help',
-               'href'  => './?_task=help',
-            'onclick' => sprintf("return %s.command('help')", JS_OBJECT_NAME)
-            ), 'taskbar');
-
-        $rcmail->output->add_script(
-            JS_OBJECT_NAME . ".enable_command('help', true);\n" .
-            JS_OBJECT_NAME . ".help = function () { location.href = './?_task=help'; }",
-            'head');
+            'command'    => 'help',
+            'class'      => 'button-help',
+            'classsel'   => 'button-help button-selected',
+            'innerclass' => 'button-inner',
+            'label'      => 'help.help',
+        ), 'taskbar');
 
         $skin = $rcmail->config->get('skin');
         if (!file_exists($this->home."/skins/$skin/help.css"))
-               $skin = 'default';
+            $skin = 'default';
 
         // add style for taskbar button (must be here) and Help UI    
         $this->include_stylesheet("skins/$skin/help.css");
@@ -63,11 +58,11 @@ class help extends rcube_plugin
 
         // register UI objects
         $rcmail->output->add_handlers(array(
-               'helpcontent' => array($this, 'content'),
+            'helpcontent' => array($this, 'content'),
         ));
 
         if ($rcmail->action == 'about')
-               $rcmail->output->set_pagetitle($this->gettext('about'));
+            $rcmail->output->set_pagetitle($this->gettext('about'));
         else if ($rcmail->action == 'license')
             $rcmail->output->set_pagetitle($this->gettext('license'));
         else
@@ -81,27 +76,23 @@ class help extends rcube_plugin
         $rcmail = rcmail::get_instance();
 
         if ($rcmail->action == 'about') {
-               return @file_get_contents($this->home.'/content/about.html');
+            return @file_get_contents($this->home.'/content/about.html');
         }
         else if ($rcmail->action == 'license') {
-               return @file_get_contents($this->home.'/content/license.html');
+            return @file_get_contents($this->home.'/content/license.html');
         }
 
         // default content: iframe
-
         if ($src = $rcmail->config->get('help_source'))
-               $attrib['src'] = $src;
+            $attrib['src'] = $src;
 
         if (empty($attrib['id']))
             $attrib['id'] = 'rcmailhelpcontent';
-    
-        // allow the following attributes to be added to the <iframe> tag
-        $attrib_str = create_attrib_string($attrib, array(
-            'id', 'class', 'style', 'src', 'width', 'height', 'frameborder'));
 
-        $out = sprintf('<iframe name="%s"%s></iframe>'."\n", $attrib['id'], $attrib_str);
-    
-        return $out;
+        $attrib['name'] = $attrib['id'];
+
+        return html::tag('iframe', $attrib, '', array(
+            'id', 'class', 'style', 'src', 'width', 'height', 'frameborder'));
     }
 
 }
diff --git a/plugins/help/localization/bs_BA.inc b/plugins/help/localization/bs_BA.inc
new file mode 100644 (file)
index 0000000..714d4e7
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/bs_BA/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kenan Dervišević <kenan3008@gmail.com>                      |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['help'] = 'Pomoć';
+$labels['about'] = 'O programu';
+$labels['license'] = 'Licenca';
+
diff --git a/plugins/help/localization/ca_ES.inc b/plugins/help/localization/ca_ES.inc
new file mode 100644 (file)
index 0000000..bd45469
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ca_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jordi Sanfeliu <jordi@fibranet.cat>                           |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['help'] = 'Ajuda';
+$labels['about'] = 'Quant a';
+$labels['license'] = 'Llicència';
+
diff --git a/plugins/help/localization/cy_GB.inc b/plugins/help/localization/cy_GB.inc
new file mode 100644 (file)
index 0000000..78969b9
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/cy_GB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Dafydd Tomos                                                  |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['help'] = 'Cymorth';
+$labels['about'] = 'Amdan';
+$labels['license'] = 'Trwydded';
+
diff --git a/plugins/help/localization/de_CH.inc b/plugins/help/localization/de_CH.inc
new file mode 100644 (file)
index 0000000..ee9c786
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/de_CH/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['help'] = 'Hilfe';
+$labels['about'] = 'Information';
+$labels['license'] = 'Lizenz';
+
index 8c2d1517c22d0bf244fb8a57e27ef165b8646358..206856af7b16f7843f82e3767e6693d3f78c17ce 100644 (file)
@@ -1,8 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/en_GB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Anthony Harrington <untaintableangel@ubuntu.com>              |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
 $labels['help'] = 'Help';
 $labels['about'] = 'About';
-$labels['license'] = 'License';
+$labels['license'] = 'Licence';
 
-?>
diff --git a/plugins/help/localization/eo.inc b/plugins/help/localization/eo.inc
new file mode 100644 (file)
index 0000000..0347b77
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/eo/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Michael Moroni <michael.moroni@mailoo.org>                    |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['help'] = 'Helpo';
+$labels['about'] = 'Pri';
+$labels['license'] = 'Permesilo';
+
diff --git a/plugins/help/localization/fa_IR.inc b/plugins/help/localization/fa_IR.inc
new file mode 100644 (file)
index 0000000..5635d70
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fa_IR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Hamid <abbaszadeh.h@gmail.com>                                |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['help'] = 'راهنما';
+$labels['about'] = 'درباره';
+$labels['license'] = 'گواهینامه';
+
diff --git a/plugins/help/localization/fi_FI.inc b/plugins/help/localization/fi_FI.inc
new file mode 100644 (file)
index 0000000..3ca3da3
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fi_FI/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jiri Grönroos                                                |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['help'] = 'Ohje';
+$labels['about'] = 'Tietoja';
+$labels['license'] = 'Lisenssi';
+
diff --git a/plugins/help/localization/fr_FR.inc b/plugins/help/localization/fr_FR.inc
new file mode 100644 (file)
index 0000000..2697239
--- /dev/null
@@ -0,0 +1,8 @@
+<?php
+
+$labels = array();
+$labels['help'] = 'Aide';
+$labels['about'] = 'A propos';
+$labels['license'] = 'Licence';
+
+?>
diff --git a/plugins/help/localization/he_IL.inc b/plugins/help/localization/he_IL.inc
new file mode 100644 (file)
index 0000000..105acbd
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/he_IL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Moshe Leibovitch <moish@mln.co.il>                            |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['help'] = 'עזרה';
+$labels['about'] = 'אודות';
+$labels['license'] = 'רשיון';
+
diff --git a/plugins/help/localization/hy_AM.inc b/plugins/help/localization/hy_AM.inc
new file mode 100644 (file)
index 0000000..7e56fda
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/hy_AM/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Vahan Yerkanian <vahan@yerkanian.com>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['help'] = 'Օգնություն';
+$labels['about'] = 'Նկարագիր';
+$labels['license'] = 'Արտոնագիր';
+
diff --git a/plugins/help/localization/it_IT.inc b/plugins/help/localization/it_IT.inc
new file mode 100644 (file)
index 0000000..b81904d
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/it_IT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Andrea Bernini <andrea.bernini@gmail.com>                     |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['help'] = 'Aiuto';
+$labels['about'] = 'Informazioni';
+$labels['license'] = 'Licenza';
+
index 18081bb7d235c5292eaf1a380c044cbcc752b736..a41a3b1031953bf1deb4976e6a5cd0e1d33e350b 100644 (file)
@@ -1,10 +1,20 @@
 <?php
 
-//  EN-Revision: 3891
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ja_JP/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Takahiro Kambe                                                |
+ +-----------------------------------------------------------------------+
+*/
 
 $labels = array();
 $labels['help'] = 'ヘルプ';
-$labels['about'] = '紹介';
+$labels['about'] = 'このプログラムについて';
 $labels['license'] = 'ライセンス';
 
-?>
diff --git a/plugins/help/localization/ko_KR.inc b/plugins/help/localization/ko_KR.inc
new file mode 100644 (file)
index 0000000..c57dfa0
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ko_KR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kim, Woohyun <woohyun.kim@gmail.com>                          |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['help'] = '도움말';
+$labels['about'] = '정보';
+$labels['license'] = '라이센스';
+
diff --git a/plugins/help/localization/lt_LT.inc b/plugins/help/localization/lt_LT.inc
new file mode 100644 (file)
index 0000000..a7a2b82
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/lt_LT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Rimas Kudelis <rq@akl.lt>                                     |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['help'] = 'Žinynas';
+$labels['about'] = 'Apie';
+$labels['license'] = 'Licencija';
+
diff --git a/plugins/help/localization/nb_NB.inc b/plugins/help/localization/nb_NB.inc
new file mode 100644 (file)
index 0000000..34881d6
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/nb_NB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Tobias V. Langhoff <spug@thespug.net>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['help'] = 'Hjelp';
+$labels['about'] = 'Om';
+$labels['license'] = 'Lisensvilkår';
+
diff --git a/plugins/help/localization/nl_NL.inc b/plugins/help/localization/nl_NL.inc
new file mode 100644 (file)
index 0000000..6fdf8d4
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/nl_NL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Geert Wirken                                                  |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['help'] = 'Help';
+$labels['about'] = 'Over';
+$labels['license'] = 'Licentie';
+
diff --git a/plugins/help/localization/pt_PT.inc b/plugins/help/localization/pt_PT.inc
new file mode 100644 (file)
index 0000000..c28503b
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/pt_PT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: David                                                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['help'] = 'Ajuda';
+$labels['about'] = 'Sobre...';
+$labels['license'] = 'Licença';
+
diff --git a/plugins/help/localization/sk_SK.inc b/plugins/help/localization/sk_SK.inc
new file mode 100644 (file)
index 0000000..6fdacd1
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sk_SK/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: panda                                                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['help'] = 'Nápoveda';
+$labels['about'] = 'O aplikácii';
+$labels['license'] = 'Licencia';
+
diff --git a/plugins/help/localization/sl_SI.inc b/plugins/help/localization/sl_SI.inc
new file mode 100644 (file)
index 0000000..d72cd18
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sl_SI/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Barbara Krasovec <barbarak@arnes.si>                          |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['help'] = 'Pomoč';
+$labels['about'] = 'Vizitka';
+$labels['license'] = 'Licenca';
+
diff --git a/plugins/help/localization/sr_CS.inc b/plugins/help/localization/sr_CS.inc
new file mode 100644 (file)
index 0000000..b0499f0
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sr_CS/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Saša Zejnilović <zejnils@gmail.com>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['help'] = 'Помоћ';
+$labels['about'] = 'Info';
+$labels['license'] = 'Licenca';
+
diff --git a/plugins/help/localization/tr_TR.inc b/plugins/help/localization/tr_TR.inc
new file mode 100644 (file)
index 0000000..306c1c4
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/tr_TR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: ismail yenigul                                                |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['help'] = 'Yardım';
+$labels['about'] = 'Hakkında';
+$labels['license'] = 'Lisans';
+
diff --git a/plugins/help/localization/vi_VN.inc b/plugins/help/localization/vi_VN.inc
new file mode 100644 (file)
index 0000000..9d0f1e4
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/vi_VN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kenny Tran <kennethanh@gmail.com>                             |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['help'] = 'Trợ giúp';
+$labels['about'] = 'Lời ngõ';
+$labels['license'] = 'Bản quyền';
+
diff --git a/plugins/help/localization/zh_CN.inc b/plugins/help/localization/zh_CN.inc
new file mode 100644 (file)
index 0000000..da7b7a8
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/zh_CN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Christopher Meng <cickumqt@gmail.com>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['help'] = '帮助';
+$labels['about'] = '关于';
+$labels['license'] = '许可协议';
+
diff --git a/plugins/help/package.xml b/plugins/help/package.xml
new file mode 100644 (file)
index 0000000..5df7e74
--- /dev/null
@@ -0,0 +1,67 @@
+<?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>help</name>
+       <channel>pear.roundcube.net</channel>
+       <summary>Help for Roundcube</summary>
+       <description>Plugin adds a new item (Help) in taskbar.</description>
+       <lead>
+               <name>Aleksander Machniak</name>
+               <user>alec</user>
+               <email>alec@alec.pl</email>
+               <active>yes</active>
+       </lead>
+       <date>2012-01-18</date>
+       <version>
+               <release>1.2</release>
+               <api>1.2</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="help.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="content/about.html" role="data"></file>
+                       <file name="content/license.html" role="data"></file>
+                       <file name="config.inc.php.dist" role="data"></file>
+                       <file name="skins/classic/help.css" role="data"></file>
+                       <file name="skins/classic/help.gif" role="data"></file>
+                       <file name="skins/classic/templates/help.html" role="data"></file>
+                       <file name="localization/cs_CZ.inc" role="data"></file>
+                       <file name="localization/da_DK.inc" role="data"></file>
+                       <file name="localization/de_DE.inc" role="data"></file>
+                       <file name="localization/en_US.inc" role="data"></file>
+                       <file name="localization/es_ES.inc" role="data"></file>
+                       <file name="localization/et_EE.inc" role="data"></file>
+                       <file name="localization/gl_ES.inc" role="data"></file>
+                       <file name="localization/hu_HU.inc" role="data"></file>
+                       <file name="localization/ja_JP.inc" role="data"></file>
+                       <file name="localization/pl_PL.inc" role="data"></file>
+                       <file name="localization/pt_BR.inc" role="data"></file>
+                       <file name="localization/ru_RU.inc" role="data"></file>
+                       <file name="localization/sv_SE.inc" role="data"></file>
+                       <file name="localization/zh_TW.inc" 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/help/skins/classic/help.css b/plugins/help/skins/classic/help.css
new file mode 100644 (file)
index 0000000..8f67f11
--- /dev/null
@@ -0,0 +1,29 @@
+/***** Roundcube|Mail Help task styles *****/
+
+#taskbar a.button-help
+{
+  background-image: url('help.gif');
+}
+
+.help-box
+{
+  overflow: auto;  
+  background-color: #F2F2F2;
+}
+
+#helplicense, #helpabout
+{
+  width: 46em;
+  padding: 1em 2em;
+}
+
+#helplicense a, #helpabout a
+{
+  color: #900;
+}
+
+#helpabout
+{
+  margin: 0 auto;
+}
+
diff --git a/plugins/help/skins/classic/help.gif b/plugins/help/skins/classic/help.gif
new file mode 100644 (file)
index 0000000..fe41e43
Binary files /dev/null and b/plugins/help/skins/classic/help.gif differ
diff --git a/plugins/help/skins/classic/templates/help.html b/plugins/help/skins/classic/templates/help.html
new file mode 100644 (file)
index 0000000..98beb66
--- /dev/null
@@ -0,0 +1,37 @@
+<!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><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<link rel="stylesheet" type="text/css" href="/this/help.css" />
+<link rel="stylesheet" type="text/css" href="/settings.css" />
+<script type="text/javascript">
+function help_init_settings_tabs()
+{
+    var action, tab = '#helptabdefault';
+    if (window.rcmail && (action = rcmail.env.action)) {
+           tab = '#helptab' + (action ? action : 'default');
+    }
+    $(tab).addClass('tablink-selected');
+}             
+</script>
+</head>
+<body>
+
+<roundcube:include file="/includes/taskbar.html" />
+<roundcube:include file="/includes/header.html" />
+
+<div id="tabsbar">
+<span id="helptabdefault" class="tablink"><roundcube:button name="helpdefault" href="?_task=help" type="link" label="help.help" title="help.help" /></span>
+<span id="helptababout" class="tablink"><roundcube:button name="helpabout" href="?_task=help&_action=about" type="link" label="help.about" title="help.about" class="tablink" /></span>
+<span id="helptablicense" class="tablink"><roundcube:button name="helplicense" href="?_task=help&_action=license" type="link" label="help.license" title="help.license" class="tablink" /></span>
+<roundcube:container name="helptabs" id="helptabsbar" />
+<script type="text/javascript"> if (window.rcmail) rcmail.add_onload(help_init_settings_tabs);</script>
+</div>
+
+<div id="mainscreen" class="box help-box">
+<roundcube:object name="helpcontent" id="helpcontentframe" width="100%" height="100%" frameborder="0" src="/watermark.html" />
+</div>
+
+</body>
+</html>
diff --git a/plugins/help/skins/default/help.css b/plugins/help/skins/default/help.css
deleted file mode 100644 (file)
index 8f67f11..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/***** Roundcube|Mail Help task styles *****/
-
-#taskbar a.button-help
-{
-  background-image: url('help.gif');
-}
-
-.help-box
-{
-  overflow: auto;  
-  background-color: #F2F2F2;
-}
-
-#helplicense, #helpabout
-{
-  width: 46em;
-  padding: 1em 2em;
-}
-
-#helplicense a, #helpabout a
-{
-  color: #900;
-}
-
-#helpabout
-{
-  margin: 0 auto;
-}
-
diff --git a/plugins/help/skins/default/help.gif b/plugins/help/skins/default/help.gif
deleted file mode 100644 (file)
index fe41e43..0000000
Binary files a/plugins/help/skins/default/help.gif and /dev/null differ
diff --git a/plugins/help/skins/default/templates/help.html b/plugins/help/skins/default/templates/help.html
deleted file mode 100644 (file)
index 98beb66..0000000
+++ /dev/null
@@ -1,37 +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><roundcube:object name="pagetitle" /></title>
-<roundcube:include file="/includes/links.html" />
-<link rel="stylesheet" type="text/css" href="/this/help.css" />
-<link rel="stylesheet" type="text/css" href="/settings.css" />
-<script type="text/javascript">
-function help_init_settings_tabs()
-{
-    var action, tab = '#helptabdefault';
-    if (window.rcmail && (action = rcmail.env.action)) {
-           tab = '#helptab' + (action ? action : 'default');
-    }
-    $(tab).addClass('tablink-selected');
-}             
-</script>
-</head>
-<body>
-
-<roundcube:include file="/includes/taskbar.html" />
-<roundcube:include file="/includes/header.html" />
-
-<div id="tabsbar">
-<span id="helptabdefault" class="tablink"><roundcube:button name="helpdefault" href="?_task=help" type="link" label="help.help" title="help.help" /></span>
-<span id="helptababout" class="tablink"><roundcube:button name="helpabout" href="?_task=help&_action=about" type="link" label="help.about" title="help.about" class="tablink" /></span>
-<span id="helptablicense" class="tablink"><roundcube:button name="helplicense" href="?_task=help&_action=license" type="link" label="help.license" title="help.license" class="tablink" /></span>
-<roundcube:container name="helptabs" id="helptabsbar" />
-<script type="text/javascript"> if (window.rcmail) rcmail.add_onload(help_init_settings_tabs);</script>
-</div>
-
-<div id="mainscreen" class="box help-box">
-<roundcube:object name="helpcontent" id="helpcontentframe" width="100%" height="100%" frameborder="0" src="/watermark.html" />
-</div>
-
-</body>
-</html>
diff --git a/plugins/help/skins/larry/help.css b/plugins/help/skins/larry/help.css
new file mode 100644 (file)
index 0000000..eab80b5
--- /dev/null
@@ -0,0 +1,40 @@
+
+#helpcontentframe {
+       border: 0;
+       border-radius: 4px;
+}
+
+#mainscreen .readtext {
+       margin: 0 auto;
+}
+
+#helptoolbar {
+       position: absolute;
+       top: -6px;
+       right: 0;
+       height: 40px;
+       white-space: nowrap;
+}
+
+#taskbar a.button-help span.button-inner {
+       background: url(help.png) 2px 0px no-repeat;
+       height: 19px;
+}
+
+#taskbar a.button-help:hover span.button-inner,
+#taskbar a.button-help.button-selected span.button-inner {
+       background: url(help.png) 2px -24px no-repeat;
+       height: 19px;
+}
+
+.toolbar a.button.help {
+       background: url(help.png) center -51px no-repeat;
+}
+
+.toolbar a.button.about {
+       background: url(help.png) center -89px no-repeat;
+}
+
+.toolbar a.button.license {
+       background: url(help.png) center -130px no-repeat;
+}
diff --git a/plugins/help/skins/larry/help.png b/plugins/help/skins/larry/help.png
new file mode 100644 (file)
index 0000000..fe88ed4
Binary files /dev/null and b/plugins/help/skins/larry/help.png differ
diff --git a/plugins/help/skins/larry/icons.psd b/plugins/help/skins/larry/icons.psd
new file mode 100644 (file)
index 0000000..2ccadfa
Binary files /dev/null and b/plugins/help/skins/larry/icons.psd differ
diff --git a/plugins/help/skins/larry/templates/help.html b/plugins/help/skins/larry/templates/help.html
new file mode 100644 (file)
index 0000000..9790c15
--- /dev/null
@@ -0,0 +1,30 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<link rel="stylesheet" type="text/css" href="/this/help.css" />
+</head>
+<body>
+
+<roundcube:include file="/includes/header.html" />
+
+<div id="mainscreen">
+
+<div id="helptoolbar" class="toolbar">
+<roundcube:button name="helpdefault" href="?_task=help" type="link" label="help.help" title="help.help" class="button help" />
+<roundcube:button name="helpabout" href="?_task=help&amp;_action=about" type="link" label="help.about" title="help.about" class="button about" />
+<roundcube:button name="helplicense" href="?_task=help&amp;_action=license" type="link" label="help.license" title="help.license" class="button license" />
+<roundcube:container name="helptabs" id="helptabsbar" />
+</div>
+
+<div id="pluginbody" class="uibox offset scroller">
+<roundcube:object name="helpcontent" id="helpcontentframe" style="width:100%; height:99%" src="/watermark.html" />
+</div>
+
+</div>
+
+<roundcube:include file="/includes/footer.html" />
+
+</body>
+</html>
diff --git a/plugins/hide_blockquote/hide_blockquote.js b/plugins/hide_blockquote/hide_blockquote.js
new file mode 100644 (file)
index 0000000..20286ee
--- /dev/null
@@ -0,0 +1,46 @@
+if (window.rcmail)
+  rcmail.addEventListener('init', function() { hide_blockquote(); });
+
+function hide_blockquote()
+{
+  var limit = rcmail.env.blockquote_limit;
+
+  if (limit <= 0)
+    return;
+
+  $('pre > blockquote', $('#messagebody')).each(function() {
+    var div, link, q = $(this),
+      text = $.trim(q.text()),
+      res = text.split(/\n/);
+
+    if (res.length <= limit) {
+      // there can be also a block with very long wrapped line
+      // assume line height = 15px
+      if (q.height() <= limit * 15)
+        return;
+    }
+
+    div = $('<blockquote class="blockquote-header">')
+      .css({'white-space': 'nowrap', overflow: 'hidden', position: 'relative'})
+      .text(res[0]);
+
+    link = $('<span class="blockquote-link"></span>')
+      .css({position: 'absolute', 'z-Index': 2})
+      .text(rcmail.gettext('hide_blockquote.show'))
+      .data('parent', div)
+      .click(function() {
+        var t = $(this), parent = t.data('parent'), visible = parent.is(':visible');
+
+        t.text(rcmail.gettext(visible ? 'hide' : 'show', 'hide_blockquote'))
+          .detach().appendTo(visible ? q : parent);
+
+        parent[visible ? 'hide' : 'show']();
+        q[visible ? 'show' : 'hide']();
+      });
+
+    link.appendTo(div);
+
+    // Modify blockquote
+    q.hide().css({position: 'relative'}).before(div);
+  });
+}
diff --git a/plugins/hide_blockquote/hide_blockquote.php b/plugins/hide_blockquote/hide_blockquote.php
new file mode 100644 (file)
index 0000000..7af163d
--- /dev/null
@@ -0,0 +1,78 @@
+<?php
+
+/**
+ * Quotation block hidding
+ *
+ * Plugin that adds a possibility to hide long blocks of cited text in messages.
+ *
+ * Configuration:
+ * // Minimum number of citation lines. Longer citation blocks will be hidden.
+ * // 0 - no limit (no hidding).
+ * $rcmail_config['hide_blockquote_limit'] = 0;
+ *
+ * @version @package_version@
+ * @license GNU GPLv3+
+ * @author Aleksander Machniak <alec@alec.pl>
+ */
+class hide_blockquote extends rcube_plugin
+{
+    public $task = 'mail|settings';
+
+    function init()
+    {
+        $rcmail = rcmail::get_instance();
+
+        if ($rcmail->task == 'mail'
+            && ($rcmail->action == 'preview' || $rcmail->action == 'show')
+            && ($limit = $rcmail->config->get('hide_blockquote_limit'))
+        ) {
+            // include styles
+            $this->include_stylesheet($this->local_skin_path() . "/style.css");
+
+            // Script and localization
+            $this->include_script('hide_blockquote.js');
+            $this->add_texts('localization', true);
+
+            // set env variable for client
+            $rcmail->output->set_env('blockquote_limit', $limit);
+        }
+        else if ($rcmail->task == 'settings') {
+            $dont_override = $rcmail->config->get('dont_override', array());
+            if (!in_array('hide_blockquote_limit', $dont_override)) {
+                $this->add_hook('preferences_list', array($this, 'prefs_table'));
+                $this->add_hook('preferences_save', array($this, 'save_prefs'));
+            }
+        }
+    }
+
+    function prefs_table($args)
+    {
+        if ($args['section'] != 'mailview') {
+            return $args;
+        }
+
+        $this->add_texts('localization');
+
+        $rcmail   = rcmail::get_instance();
+        $limit    = (int) $rcmail->config->get('hide_blockquote_limit');
+        $field_id = 'hide_blockquote_limit';
+        $input    = new html_inputfield(array('name' => '_'.$field_id, 'id' => $field_id, 'size' => 5));
+
+        $args['blocks']['main']['options']['hide_blockquote_limit'] = array(
+            'title' => $this->gettext('quotelimit'),
+            'content' => $input->show($limit ? $limit : '')
+        );
+
+        return $args;
+    }
+
+    function save_prefs($args)
+    {
+        if ($args['section'] == 'mailview') {
+            $args['prefs']['hide_blockquote_limit'] = (int) get_input_value('_hide_blockquote_limit', RCUBE_INPUT_POST);
+        }
+
+        return $args;
+    }
+
+}
diff --git a/plugins/hide_blockquote/localization/bs_BA.inc b/plugins/hide_blockquote/localization/bs_BA.inc
new file mode 100644 (file)
index 0000000..ae9bda5
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/bs_BA/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kenan Dervišević <kenan3008@gmail.com>                      |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = 'Sakrij';
+$labels['show'] = 'Prikaži';
+$labels['quotelimit'] = 'Sakrij citate kada je broj linija veći od';
+
diff --git a/plugins/hide_blockquote/localization/ca_ES.inc b/plugins/hide_blockquote/localization/ca_ES.inc
new file mode 100644 (file)
index 0000000..d8ca7c9
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ca_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jordi Sanfeliu <jordi@fibranet.cat>                           |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = 'Amaga';
+$labels['show'] = 'Mostra';
+$labels['quotelimit'] = 'Amaga la cita quan el nombre de línies sigui més gran de';
+
diff --git a/plugins/hide_blockquote/localization/cs_CZ.inc b/plugins/hide_blockquote/localization/cs_CZ.inc
new file mode 100644 (file)
index 0000000..22b2e87
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/cs_CZ/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Tomáš Kyzlink                                               |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = 'Skrýt';
+$labels['show'] = 'Zobrazit';
+$labels['quotelimit'] = 'Skrýt citaci pokud je počet řádků větší než';
+
diff --git a/plugins/hide_blockquote/localization/cy_GB.inc b/plugins/hide_blockquote/localization/cy_GB.inc
new file mode 100644 (file)
index 0000000..40b0ec2
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/cy_GB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Dafydd Tomos                                                  |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = 'Cuddio';
+$labels['show'] = 'Dangos';
+$labels['quotelimit'] = 'Cuddio dyfynniad pan mae\'r nifer o linellau yn fwy na';
+
diff --git a/plugins/hide_blockquote/localization/da_DK.inc b/plugins/hide_blockquote/localization/da_DK.inc
new file mode 100644 (file)
index 0000000..50fbc71
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/da_DK/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Johannes Hessellund <osos@openeyes.dk>                        |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = 'Skjul';
+$labels['show'] = 'Vis';
+$labels['quotelimit'] = 'Skjul citat antallet af linjer er højere end';
+
diff --git a/plugins/hide_blockquote/localization/de_CH.inc b/plugins/hide_blockquote/localization/de_CH.inc
new file mode 100644 (file)
index 0000000..26b8707
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/de_CH/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = 'ausblenden';
+$labels['show'] = 'einblenden';
+$labels['quotelimit'] = 'Zitate verbergen ab einer Zeilenlänge von';
+
diff --git a/plugins/hide_blockquote/localization/de_DE.inc b/plugins/hide_blockquote/localization/de_DE.inc
new file mode 100644 (file)
index 0000000..4ae3b96
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/de_DE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = 'ausblenden';
+$labels['show'] = 'einblenden';
+$labels['quotelimit'] = 'Zitate verbergen ab einer Zeilenlänge von';
+
diff --git a/plugins/hide_blockquote/localization/en_GB.inc b/plugins/hide_blockquote/localization/en_GB.inc
new file mode 100644 (file)
index 0000000..68f634e
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/en_GB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Aleksander Machniak <alec@alec.pl>                            |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = 'Hide';
+$labels['show'] = 'Show';
+$labels['quotelimit'] = 'Hide citation when lines count is greater than';
+
diff --git a/plugins/hide_blockquote/localization/en_US.inc b/plugins/hide_blockquote/localization/en_US.inc
new file mode 100644 (file)
index 0000000..cf7eb13
--- /dev/null
@@ -0,0 +1,8 @@
+<?php
+
+$labels = array();
+$labels['hide'] = 'Hide';
+$labels['show'] = 'Show';
+$labels['quotelimit'] = 'Hide citation when lines count is greater than';
+
+?>
diff --git a/plugins/hide_blockquote/localization/eo.inc b/plugins/hide_blockquote/localization/eo.inc
new file mode 100644 (file)
index 0000000..81628a3
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/eo/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Michael Moroni <michael.moroni@mailoo.org>                    |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = 'Kaŝi';
+$labels['show'] = 'Montri';
+$labels['quotelimit'] = 'Kaŝi citaĵon kiam la nombro de linioj estas pligranda ol';
+
diff --git a/plugins/hide_blockquote/localization/es_ES.inc b/plugins/hide_blockquote/localization/es_ES.inc
new file mode 100644 (file)
index 0000000..485fef5
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/es_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Eduardo Alberto Calvo                                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = 'Ocultar';
+$labels['show'] = 'Mostrar';
+$labels['quotelimit'] = 'Ocultar la cita cuando el numero de lineas es mayor que';
+
diff --git a/plugins/hide_blockquote/localization/et_EE.inc b/plugins/hide_blockquote/localization/et_EE.inc
new file mode 100644 (file)
index 0000000..ae426f9
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/et_EE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: yllar                                                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = 'Peida';
+$labels['show'] = 'Näita';
+$labels['quotelimit'] = 'Peida tsitaat kui ridade arv on suurem kui';
+
diff --git a/plugins/hide_blockquote/localization/fa_IR.inc b/plugins/hide_blockquote/localization/fa_IR.inc
new file mode 100644 (file)
index 0000000..02934f1
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fa_IR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Hamid <abbaszadeh.h@gmail.com>                                |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = 'مخفی کردن';
+$labels['show'] = 'نشان دادن';
+$labels['quotelimit'] = 'مخفی کردن نقل‌قول وقتی تعداد خطوط بیشتر است از';
+
diff --git a/plugins/hide_blockquote/localization/fi_FI.inc b/plugins/hide_blockquote/localization/fi_FI.inc
new file mode 100644 (file)
index 0000000..ada6d75
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fi_FI/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jiri Grönroos                                                |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = 'Piilota';
+$labels['show'] = 'Näytä';
+$labels['quotelimit'] = 'Piilota lainaus, kun rivien lukumäärä on suurempi kuin';
+
diff --git a/plugins/hide_blockquote/localization/fr_FR.inc b/plugins/hide_blockquote/localization/fr_FR.inc
new file mode 100644 (file)
index 0000000..5964186
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fr_FR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Patrick Fiquet                                                |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = 'Cacher';
+$labels['show'] = 'Afficher';
+$labels['quotelimit'] = 'Cacher la citation quand le nombre de lignes est plus grand que';
+
diff --git a/plugins/hide_blockquote/localization/gl_ES.inc b/plugins/hide_blockquote/localization/gl_ES.inc
new file mode 100644 (file)
index 0000000..bb45812
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/gl_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: oterobueu <oterobueu@gmail.com>                               |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = 'Agochar';
+$labels['show'] = 'Amosar';
+$labels['quotelimit'] = 'Agochar mencións cando haxa demasiadas liñas';
+
diff --git a/plugins/hide_blockquote/localization/he_IL.inc b/plugins/hide_blockquote/localization/he_IL.inc
new file mode 100644 (file)
index 0000000..9ddc6bd
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/he_IL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Moshe Leibovitch <moish@mln.co.il>                            |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = 'הסתר';
+$labels['show'] = 'הצג';
+$labels['quotelimit'] = 'הסתר ציטוט כאשר מספר השורות גדול מ-';
+
diff --git a/plugins/hide_blockquote/localization/hu_HU.inc b/plugins/hide_blockquote/localization/hu_HU.inc
new file mode 100644 (file)
index 0000000..a3418f4
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/hu_HU/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: bela                                                          |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = 'Elrejtés';
+$labels['show'] = 'Megjelenítés';
+$labels['quotelimit'] = 'Idézet elrejtése ha a sorok száma több mint';
+
diff --git a/plugins/hide_blockquote/localization/hy_AM.inc b/plugins/hide_blockquote/localization/hy_AM.inc
new file mode 100644 (file)
index 0000000..8aa5f2d
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/hy_AM/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Vahan Yerkanian <vahan@yerkanian.com>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = 'Թաքցնել';
+$labels['show'] = 'Ցուցադրել';
+$labels['quotelimit'] = 'Թաքցնել ցիտումը երբ տողերի քանակը գերազանցում է';
+
diff --git a/plugins/hide_blockquote/localization/it_IT.inc b/plugins/hide_blockquote/localization/it_IT.inc
new file mode 100644 (file)
index 0000000..6ae2b6e
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/it_IT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Andrea Bernini <andrea.bernini@gmail.com>                     |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = 'Nascondi';
+$labels['show'] = 'Mostra';
+$labels['quotelimit'] = 'Nascondi la citazione quando il numero di righe è maggiore di';
+
diff --git a/plugins/hide_blockquote/localization/ja_JP.inc b/plugins/hide_blockquote/localization/ja_JP.inc
new file mode 100644 (file)
index 0000000..3fbbb28
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ja_JP/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Takahiro Kambe                                                |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = '隠す';
+$labels['show'] = '表示';
+$labels['quotelimit'] = '次の行数より多い引用を非表示';
+
diff --git a/plugins/hide_blockquote/localization/ko_KR.inc b/plugins/hide_blockquote/localization/ko_KR.inc
new file mode 100644 (file)
index 0000000..d83dd8b
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ko_KR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kim, Woohyun <woohyun.kim@gmail.com>                          |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = '숨기기';
+$labels['show'] = '보이기';
+$labels['quotelimit'] = '라인 개수가 정해진 개수보다 클 때 인용구 감추기';
+
diff --git a/plugins/hide_blockquote/localization/lt_LT.inc b/plugins/hide_blockquote/localization/lt_LT.inc
new file mode 100644 (file)
index 0000000..159f174
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/lt_LT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Rimas Kudelis <rq@akl.lt>                                     |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = 'Paslėpti';
+$labels['show'] = 'Parodyti';
+$labels['quotelimit'] = 'Paslėpti citatą, kai joje eilučių daugiau negu';
+
diff --git a/plugins/hide_blockquote/localization/nb_NB.inc b/plugins/hide_blockquote/localization/nb_NB.inc
new file mode 100644 (file)
index 0000000..da50e85
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/nb_NB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Tobias V. Langhoff <spug@thespug.net>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = 'Skjul';
+$labels['show'] = 'Vis';
+$labels['quotelimit'] = 'Skjul sitat når antall linjer er flere enn';
+
diff --git a/plugins/hide_blockquote/localization/nl_NL.inc b/plugins/hide_blockquote/localization/nl_NL.inc
new file mode 100644 (file)
index 0000000..1e14835
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/nl_NL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Geert Wirken                                                  |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = 'Verbergen';
+$labels['show'] = 'Tonen';
+$labels['quotelimit'] = 'Verberg citaat wanneer aantal regels groter is dan';
+
diff --git a/plugins/hide_blockquote/localization/pl_PL.inc b/plugins/hide_blockquote/localization/pl_PL.inc
new file mode 100644 (file)
index 0000000..0a83391
--- /dev/null
@@ -0,0 +1,8 @@
+<?php
+
+$labels = array();
+$labels['hide'] = 'Ukryj';
+$labels['show'] = 'Pokaż';
+$labels['quotelimit'] = 'Ukryj blok cytatu gdy liczba linii jest większa od';
+
+?>
diff --git a/plugins/hide_blockquote/localization/pt_BR.inc b/plugins/hide_blockquote/localization/pt_BR.inc
new file mode 100644 (file)
index 0000000..3acdd45
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/pt_BR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Victor Benincasa <vbenincasa@gmail.com>                       |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = 'Ocultar';
+$labels['show'] = 'Exibir';
+$labels['quotelimit'] = 'Ocultar a citação quando o número de linhas for maior do que';
+
diff --git a/plugins/hide_blockquote/localization/pt_PT.inc b/plugins/hide_blockquote/localization/pt_PT.inc
new file mode 100644 (file)
index 0000000..8afa6d5
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/pt_PT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: David                                                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = 'Ocultar';
+$labels['show'] = 'Mostrar';
+$labels['quotelimit'] = 'Ocultar citação quando o numero de linhas for maior que';
+
diff --git a/plugins/hide_blockquote/localization/ru_RU.inc b/plugins/hide_blockquote/localization/ru_RU.inc
new file mode 100644 (file)
index 0000000..ab7733e
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ru_RU/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Sergey Dukachev <admin@mfitness.ru>                           |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = 'Скрыть';
+$labels['show'] = 'Показать';
+$labels['quotelimit'] = 'Скрыть цитату, если число строк более чем';
+
diff --git a/plugins/hide_blockquote/localization/sk_SK.inc b/plugins/hide_blockquote/localization/sk_SK.inc
new file mode 100644 (file)
index 0000000..e926383
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sk_SK/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: panda                                                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = 'Skryť';
+$labels['show'] = 'Zobraziť';
+$labels['quotelimit'] = 'Skryť citáciu pokiaľ je počet riadkov väčší než';
+
diff --git a/plugins/hide_blockquote/localization/sl_SI.inc b/plugins/hide_blockquote/localization/sl_SI.inc
new file mode 100644 (file)
index 0000000..31cfc3c
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sl_SI/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Barbara Krasovec <barbarak@arnes.si>                          |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = 'Skrij';
+$labels['show'] = 'Prikaži';
+$labels['quotelimit'] = 'Skrij citiran tekst, ko je število vrstic večje od';
+
diff --git a/plugins/hide_blockquote/localization/sr_CS.inc b/plugins/hide_blockquote/localization/sr_CS.inc
new file mode 100644 (file)
index 0000000..485ef59
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sr_CS/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Saša Zejnilović <zejnils@gmail.com>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = 'Сакриј';
+$labels['show'] = 'Прикажи';
+$labels['quotelimit'] = 'Сакриј цитат када је број редова већи од';
+
diff --git a/plugins/hide_blockquote/localization/sv_SE.inc b/plugins/hide_blockquote/localization/sv_SE.inc
new file mode 100644 (file)
index 0000000..c6abb48
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sv_SE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jonas Nasholm                                                 |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = 'Dölj';
+$labels['show'] = 'Visa';
+$labels['quotelimit'] = 'Dölj citat när antalet rader överstiger';
+
diff --git a/plugins/hide_blockquote/localization/tr_TR.inc b/plugins/hide_blockquote/localization/tr_TR.inc
new file mode 100644 (file)
index 0000000..525ec50
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/tr_TR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: ismail yenigul                                                |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = 'Gizle';
+$labels['show'] = 'Göster';
+$labels['quotelimit'] = 'Satır sayısı şu satır sayısındna fazla ile alıntıları gizle:';
+
diff --git a/plugins/hide_blockquote/localization/vi_VN.inc b/plugins/hide_blockquote/localization/vi_VN.inc
new file mode 100644 (file)
index 0000000..fc2cb50
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/vi_VN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Hung Pham <phamhung77@gmail.com>                              |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = 'Ẩn';
+$labels['show'] = 'Hiển thị';
+$labels['quotelimit'] = 'Ẩn trích dẫn khi tổng số dòng lớn hơn';
+
diff --git a/plugins/hide_blockquote/localization/zh_CN.inc b/plugins/hide_blockquote/localization/zh_CN.inc
new file mode 100644 (file)
index 0000000..5d66f4d
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/zh_CN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Christopher Meng <cickumqt@gmail.com>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['hide'] = '隐藏';
+$labels['show'] = '显示';
+$labels['quotelimit'] = '隐藏引用当行数大于';
+
diff --git a/plugins/hide_blockquote/package.xml b/plugins/hide_blockquote/package.xml
new file mode 100644 (file)
index 0000000..0d895c1
--- /dev/null
@@ -0,0 +1,54 @@
+<?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>hide_blockquote</name>
+       <channel>pear.roundcube.net</channel>
+       <summary>Citation blocks hiding for Roundcube</summary>
+       <description>This allows to hide long blocks of cited text in messages.</description>
+       <lead>
+               <name>Aleksander Machniak</name>
+               <user>alec</user>
+               <email>alec@alec.pl</email>
+               <active>yes</active>
+       </lead>
+       <date>2012-05-23</date>
+       <version>
+               <release>1.0</release>
+               <api>1.0</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="hide_blockquote.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="hide_blockquote.js" role="data">
+                               <tasks:replace from="@name@" to="name" type="package-info"/>
+                               <tasks:replace from="@package_version@" to="version" type="package-info"/>
+                       </file>
+                       <file name="localization/en_US.inc" role="data"></file>
+                       <file name="localization/pl_PL.inc" role="data"></file>
+                       <file name="skins/classic/style.css" 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/hide_blockquote/skins/larry/style.css b/plugins/hide_blockquote/skins/larry/style.css
new file mode 100644 (file)
index 0000000..198172f
--- /dev/null
@@ -0,0 +1,31 @@
+span.blockquote-link {
+  font-family: "Lucida Grande", Verdana, Arial, Helvetica, sans-serif;
+  top: 0;
+  cursor: pointer;
+  right: 5px;
+  height: 14px;
+  min-width: 40px;
+  padding: 0 8px;
+  font-size: 10px;
+  font-weight: bold;
+  color: #a8a8a8;
+  line-height: 14px;
+  text-decoration: none;
+  text-shadow: 0px 1px 1px #fff;
+  text-align: center;
+  border: 1px solid #e8e8e8;
+  border-top: none;
+  border-bottom-right-radius: 6px;
+  border-bottom-left-radius: 6px;
+  background: #f8f8f8;
+  background: -moz-linear-gradient(top, #f8f8f8 0%, #e8e8e8 100%);
+  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f8f8f8), color-stop(100%,#e8e8e8));
+  background: -o-linear-gradient(top, #f8f8f8 0%, #e8e8e8 100%);
+  background: -ms-linear-gradient(top, #f8f8f8 0%, #e8e8e8 100%);
+  background: linear-gradient(top, #f8f8f8 0%, #e8e8e8 100%);
+}
+
+blockquote.blockquote-header {
+  text-overflow: ellipsis !important;
+  padding-right: 60px !important;
+}
\ No newline at end of file
index be49b52be0c70fe3a6b0b4fbd29d7c1fb0b7829e..6c873713e9e6d2c5b49044e35280d1d9e13330e8 100644 (file)
@@ -11,7 +11,8 @@
  *
  * See logout.html (in this directory) for an example how HTTP auth can be cleared.
  *
- * @version 1.4
+ * @version @package_version@
+ * @license GNU GPLv3+
  * @author Thomas Bruederli
  */
 class http_authentication extends rcube_plugin
diff --git a/plugins/http_authentication/package.xml b/plugins/http_authentication/package.xml
new file mode 100644 (file)
index 0000000..d8f2036
--- /dev/null
@@ -0,0 +1,48 @@
+<?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>http_authentication</name>
+       <channel>pear.roundcube.net</channel>
+       <summary>HTTP Basic Authentication</summary>
+       <description>Make use of an existing HTTP authentication and perform login with the existing user credentials.</description>
+       <lead>
+               <name>Thomas Bruederli</name>
+               <user>thomasb</user>
+               <email>roundcube@gmail.com</email>
+               <active>yes</active>
+       </lead>
+       <date>2011-11-21</date>
+       <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.html">GNU GPLv3+</license>
+       <notes>-</notes>
+       <contents>
+               <dir baseinstalldir="/" name="/">
+                       <file name="http_authentication.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="logout.html" 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>
index 8526e6a79dabb86a1926c9493ebdb5870dacab0a..a3c3f75a09540bd190e2107cadb5ea089e8887ad 100644 (file)
@@ -5,6 +5,8 @@ $rcmail_config['jquery_ui_i18n'] = array('datepicker');
 
 // map Roundcube skins with jquery-ui themes here
 $rcmail_config['jquery_ui_skin_map'] = array(
+  'larry' => 'larry',
+  'default' => 'larry',
   'groupvice4' => 'redmond',
 );
 
index 7ed2018731670daa87e7077aa0b97b0a937e4c91..f96366ee8d5494dde30bbdf6a8473600add4d160 100644 (file)
@@ -2,53 +2,81 @@
 
 /**
  * jQuery UI
- * 
+ *
  * Provide the jQuery UI library with according themes.
- * 
- * @version 1.8.14
+ *
+ * @version 1.8.18
  * @author Cor Bosman <roundcube@wa.ter.net>
  * @author Thomas Bruederli <roundcube@gmail.com>
  */
 class jqueryui extends rcube_plugin
 {
-  public $noajax = true;
+    public $noajax = true;
 
-  public function init()
-  {
-    $version = '1.8.14';
+    public function init()
+    {
+        $version = '1.8.18';
 
-    $rcmail = rcmail::get_instance();
-    $this->load_config();
+        $rcmail = rcmail::get_instance();
+        $this->load_config();
 
-    // include UI scripts
-    $this->include_script("js/jquery-ui-$version.custom.min.js");
+        // include UI scripts
+        $this->include_script("js/jquery-ui-$version.custom.min.js");
 
-    // include UI stylesheet
-    $skin = $rcmail->config->get('skin', 'default');
-    $ui_map = $rcmail->config->get('jquery_ui_skin_map', array());
-    $ui_theme = $ui_map[$skin] ? $ui_map[$skin] : 'default';
+        // 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;
 
-    if (file_exists($this->home . "/themes/$ui_theme/jquery-ui-$version.custom.css")) {
-      $this->include_stylesheet("themes/$ui_theme/jquery-ui-$version.custom.css");
-    }
-    else {
-      $this->include_stylesheet("themes/default/jquery-ui-$version.custom.css");
-    }
+        if (file_exists($this->home . "/themes/$ui_theme/jquery-ui-$version.custom.css")) {
+            $this->include_stylesheet("themes/$ui_theme/jquery-ui-$version.custom.css");
+        }
+        else {
+            $this->include_stylesheet("themes/larry/jquery-ui-$version.custom.css");
+        }
 
-    // jquery UI localization
-    $jquery_ui_i18n = $rcmail->config->get('jquery_ui_i18n', array());
-    if (count($jquery_ui_i18n) > 0) {
-      $lang_l = str_replace('_', '-', substr($_SESSION['language'], 0, 5));
-      $lang_s = substr($_SESSION['language'], 0, 2);
-      foreach($jquery_ui_i18n as $package) {
-        if (file_exists($this->home . "/js/i18n/jquery.ui.$package-$lang_l.js")) {
-          $this->include_script("js/i18n/jquery.ui.$package-$lang_l.js");
+        if ($ui_theme == 'larry') {
+            // patch dialog position function in order to fully fit the close button into the window
+            $rcmail->output->add_script("jQuery.extend(jQuery.ui.dialog.prototype.options.position, {
+                using: function(pos) {
+                    var me = jQuery(this),
+                        offset = me.css(pos).offset(),
+                        topOffset = offset.top - 12;
+                    if (topOffset < 0)
+                        me.css('top', pos.top - topOffset);
+                    if (offset.left + me.outerWidth() + 12 > jQuery(window).width())
+                        me.css('left', pos.left - 12);
+                }
+            });", 'foot');
         }
-        else if (file_exists($this->home . "/js/i18n/jquery.ui.$package-$lang_s.js")) {
-          $this->include_script("js/i18n/jquery.ui.$package-$lang_s.js");
+
+        // jquery UI localization
+        $jquery_ui_i18n = $rcmail->config->get('jquery_ui_i18n', array('datepicker'));
+        if (count($jquery_ui_i18n) > 0) {
+            $lang_l = str_replace('_', '-', substr($_SESSION['language'], 0, 5));
+            $lang_s = substr($_SESSION['language'], 0, 2);
+            foreach ($jquery_ui_i18n as $package) {
+                if (file_exists($this->home . "/js/i18n/jquery.ui.$package-$lang_l.js")) {
+                    $this->include_script("js/i18n/jquery.ui.$package-$lang_l.js");
+                }
+                else
+                if (file_exists($this->home . "/js/i18n/jquery.ui.$package-$lang_s.js")) {
+                    $this->include_script("js/i18n/jquery.ui.$package-$lang_s.js");
+                }
+            }
         }
-      }
+
+        // Date format for datepicker
+        $date_format = $rcmail->config->get('date_format', 'Y-m-d');
+        $date_format = strtr($date_format, array(
+                'y' => 'y',
+                'Y' => 'yy',
+                'm' => 'mm',
+                'n' => 'm',
+                'd' => 'dd',
+                'j' => 'd',
+        ));
+        $rcmail->output->set_env('date_format', $date_format);
     }
-  }
 
 }
diff --git a/plugins/jqueryui/js/jquery-ui-1.8.14.custom.min.js b/plugins/jqueryui/js/jquery-ui-1.8.14.custom.min.js
deleted file mode 100755 (executable)
index f9e4f1e..0000000
+++ /dev/null
@@ -1,789 +0,0 @@
-/*!
- * jQuery UI 1.8.14
- *
- * 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
- */
-(function(c,j){function k(a,b){var d=a.nodeName.toLowerCase();if("area"===d){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&l(a)}return(/input|select|textarea|button|object/.test(d)?!a.disabled:"a"==d?a.href||b:b)&&l(a)}function l(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.14",
-keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,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,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus();
-b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,
-"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",
-function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,m,n){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(m)g-=parseFloat(c.curCSS(f,"border"+this+"Width",true))||0;if(n)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,outerWidth:c.fn.outerWidth,
-outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h,d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){return k(a,!isNaN(c.attr(a,"tabindex")))},tabbable:function(a){var b=c.attr(a,"tabindex"),d=isNaN(b);
-return(d||b>=0)&&k(a,!d)}});c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=
-0;e<b.length;e++)a.options[b[e][0]]&&b[e][1].apply(a.element,d)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(a,b){if(c(a).css("overflow")==="hidden")return false;b=b&&b==="left"?"scrollLeft":"scrollTop";var d=false;if(a[b]>0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a<b+d},isOver:function(a,b,d,e,h,i){return c.ui.isOverAxis(a,d,h)&&c.ui.isOverAxis(b,e,i)}})}})(jQuery);
-;/*!
- * jQuery UI Widget 1.8.14
- *
- * 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/Widget
- */
-(function(b,j){if(b.cleanData){var k=b.cleanData;b.cleanData=function(a){for(var c=0,d;(d=a[c])!=null;c++)b(d).triggerHandler("remove");k(a)}}else{var l=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add([this]).each(function(){b(this).triggerHandler("remove")});return l.call(b(this),a,c)})}}b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,
-a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend(true,{},c.options);b[e][a].prototype=b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.charAt(0)==="_")return h;
-e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==j){h=i;return false}}):this.each(function(){var g=b.data(this,a);g?g.option(d||{})._init():b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){b.data(c,this.widgetName,this);this.element=b(c);this.options=b.extend(true,{},this.options,
-this._getCreateOptions(),a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},
-widget:function(){return this.element},option:function(a,c){var d=a;if(arguments.length===0)return b.extend({},this.options);if(typeof a==="string"){if(c===j)return this.options[a];d={};d[a]=c}this._setOptions(d);return this},_setOptions:function(a){var c=this;b.each(a,function(d,e){c._setOption(d,e)});return this},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},
-enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a=b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery);
-;/*!
- * jQuery UI Mouse 1.8.14
- *
- * 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/Mouse
- *
- * Depends:
- *     jquery.ui.widget.js
- */
-(function(b){var d=false;b(document).mousedown(function(){d=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(c){return a._mouseDown(c)}).bind("click."+this.widgetName,function(c){if(true===b.data(c.target,a.widgetName+".preventClickEvent")){b.removeData(c.target,a.widgetName+".preventClickEvent");c.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+
-this.widgetName)},_mouseDown:function(a){if(!d){this._mouseStarted&&this._mouseUp(a);this._mouseDownEvent=a;var c=this,f=a.which==1,g=typeof this.options.cancel=="string"?b(a.target).closest(this.options.cancel).length:false;if(!f||g||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){c.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted=this._mouseStart(a)!==
-false;if(!this._mouseStarted){a.preventDefault();return true}}true===b.data(a.target,this.widgetName+".preventClickEvent")&&b.removeData(a.target,this.widgetName+".preventClickEvent");this._mouseMoveDelegate=function(e){return c._mouseMove(e)};this._mouseUpDelegate=function(e){return c._mouseUp(e)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);a.preventDefault();return d=true}},_mouseMove:function(a){if(b.browser.msie&&
-!(document.documentMode>=9)&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=
-false;a.target==this._mouseDownEvent.target&&b.data(a.target,this.widgetName+".preventClickEvent",true);this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery);
-;/*
- * jQuery UI Position 1.8.14
- *
- * 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/Position
- */
-(function(c){c.ui=c.ui||{};var n=/left|center|right/,o=/top|center|bottom/,t=c.fn.position,u=c.fn.offset;c.fn.position=function(b){if(!b||!b.of)return t.apply(this,arguments);b=c.extend({},b);var a=c(b.of),d=a[0],g=(b.collision||"flip").split(" "),e=b.offset?b.offset.split(" "):[0,0],h,k,j;if(d.nodeType===9){h=a.width();k=a.height();j={top:0,left:0}}else if(d.setTimeout){h=a.width();k=a.height();j={top:a.scrollTop(),left:a.scrollLeft()}}else if(d.preventDefault){b.at="left top";h=k=0;j={top:b.of.pageY,
-left:b.of.pageX}}else{h=a.outerWidth();k=a.outerHeight();j=a.offset()}c.each(["my","at"],function(){var f=(b[this]||"").split(" ");if(f.length===1)f=n.test(f[0])?f.concat(["center"]):o.test(f[0])?["center"].concat(f):["center","center"];f[0]=n.test(f[0])?f[0]:"center";f[1]=o.test(f[1])?f[1]:"center";b[this]=f});if(g.length===1)g[1]=g[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(b.at[0]==="right")j.left+=h;else if(b.at[0]==="center")j.left+=h/2;if(b.at[1]==="bottom")j.top+=
-k;else if(b.at[1]==="center")j.top+=k/2;j.left+=e[0];j.top+=e[1];return this.each(function(){var f=c(this),l=f.outerWidth(),m=f.outerHeight(),p=parseInt(c.curCSS(this,"marginLeft",true))||0,q=parseInt(c.curCSS(this,"marginTop",true))||0,v=l+p+(parseInt(c.curCSS(this,"marginRight",true))||0),w=m+q+(parseInt(c.curCSS(this,"marginBottom",true))||0),i=c.extend({},j),r;if(b.my[0]==="right")i.left-=l;else if(b.my[0]==="center")i.left-=l/2;if(b.my[1]==="bottom")i.top-=m;else if(b.my[1]==="center")i.top-=
-m/2;i.left=Math.round(i.left);i.top=Math.round(i.top);r={left:i.left-p,top:i.top-q};c.each(["left","top"],function(s,x){c.ui.position[g[s]]&&c.ui.position[g[s]][x](i,{targetWidth:h,targetHeight:k,elemWidth:l,elemHeight:m,collisionPosition:r,collisionWidth:v,collisionHeight:w,offset:e,my:b.my,at:b.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(i,{using:b.using}))})};c.ui.position={fit:{left:function(b,a){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();b.left=
-d>0?b.left-d:Math.max(b.left-a.collisionPosition.left,b.left)},top:function(b,a){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();b.top=d>0?b.top-d:Math.max(b.top-a.collisionPosition.top,b.top)}},flip:{left:function(b,a){if(a.at[0]!=="center"){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();var g=a.my[0]==="left"?-a.elemWidth:a.my[0]==="right"?a.elemWidth:0,e=a.at[0]==="left"?a.targetWidth:-a.targetWidth,h=-2*a.offset[0];b.left+=
-a.collisionPosition.left<0?g+e+h:d>0?g+e+h:0}},top:function(b,a){if(a.at[1]!=="center"){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();var g=a.my[1]==="top"?-a.elemHeight:a.my[1]==="bottom"?a.elemHeight:0,e=a.at[1]==="top"?a.targetHeight:-a.targetHeight,h=-2*a.offset[1];b.top+=a.collisionPosition.top<0?g+e+h:d>0?g+e+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(b,a){if(/static/.test(c.curCSS(b,"position")))b.style.position="relative";var d=c(b),
-g=d.offset(),e=parseInt(c.curCSS(b,"top",true),10)||0,h=parseInt(c.curCSS(b,"left",true),10)||0;g={top:a.top-g.top+e,left:a.left-g.left+h};"using"in a?a.using.call(b,g):d.css(g)};c.fn.offset=function(b){var a=this[0];if(!a||!a.ownerDocument)return null;if(b)return this.each(function(){c.offset.setOffset(this,b)});return u.call(this)}}})(jQuery);
-;/*
- * jQuery UI Draggable 1.8.14
- *
- * 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/Draggables
- *
- * Depends:
- *     jquery.ui.core.js
- *     jquery.ui.mouse.js
- *     jquery.ui.widget.js
- */
-(function(d){d.widget("ui.draggable",d.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper==
-"original"&&!/^(?: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(){if(this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(a){var b=
-this.options;if(this.helper||b.disabled||d(a.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(a);if(!this.handle)return false;d(b.iframeFix===true?"iframe":b.iframeFix).each(function(){d('<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(d(this).offset()).appendTo("body")});return true},_mouseStart:function(a){var b=this.options;this.helper=
-this._createHelper(a);this._cacheHelperProportions();if(d.ui.ddmanager)d.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};d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});
-this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);b.containment&&this._setContainment();if(this._trigger("start",a)===false){this._clear();return false}this._cacheHelperProportions();d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,true);d.ui.ddmanager&&d.ui.ddmanager.dragStart(this,a);return true},
-_mouseDrag:function(a,b){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!b){b=this._uiHash();if(this._trigger("drag",a,b)===false){this._mouseUp({});return false}this.position=b.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);return false},_mouseStop:function(a){var b=
-false;if(d.ui.ddmanager&&!this.options.dropBehaviour)b=d.ui.ddmanager.drop(this,a);if(this.dropped){b=this.dropped;this.dropped=false}if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return false;if(this.options.revert=="invalid"&&!b||this.options.revert=="valid"&&b||this.options.revert===true||d.isFunction(this.options.revert)&&this.options.revert.call(this.element,b)){var c=this;d(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,
-10),function(){c._trigger("stop",a)!==false&&c._clear()})}else this._trigger("stop",a)!==false&&this._clear();return false},_mouseUp:function(a){this.options.iframeFix===true&&d("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)});d.ui.ddmanager&&d.ui.ddmanager.dragStop(this,a);return d.ui.mouse.prototype._mouseUp.call(this,a)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var b=!this.options.handle||
-!d(this.options.handle,this.element).length?true:false;d(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==a.target)b=true});return b},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a])):b.helper=="clone"?this.element.clone().removeAttr("id"):this.element;a.parents("body").length||a.appendTo(b.appendTo=="parent"?this.element[0].parentNode:b.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&&
-a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]||0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=
-this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),
-10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else 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 a=this.options;if(a.containment=="parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[a.containment=="document"?0:d(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,a.containment=="document"?0:d(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,
-(a.containment=="document"?0:d(window).scrollLeft())+d(a.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a.containment=="document"?0:d(window).scrollTop())+(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&a.containment.constructor!=Array){a=d(a.containment);var b=a[0];if(b){a.offset();var c=d(b).css("overflow")!=
-"hidden";this.containment=[(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0),(parseInt(d(b).css("borderTopWidth"),10)||0)+(parseInt(d(b).css("paddingTop"),10)||0),(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),
-10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom];this.relative_container=a}}else if(a.containment.constructor==Array)this.containment=a.containment},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName);return{top:b.top+
-this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():f?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&&
-!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName),e=a.pageX,h=a.pageY;if(this.originalPosition){var g;if(this.containment){if(this.relative_container){g=this.relative_container.offset();g=[this.containment[0]+g.left,this.containment[1]+g.top,this.containment[2]+g.left,this.containment[3]+g.top]}else g=this.containment;if(a.pageX-this.offset.click.left<g[0])e=g[0]+this.offset.click.left;
-if(a.pageY-this.offset.click.top<g[1])h=g[1]+this.offset.click.top;if(a.pageX-this.offset.click.left>g[2])e=g[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>g[3])h=g[3]+this.offset.click.top}if(b.grid){h=b.grid[1]?this.originalPageY+Math.round((h-this.originalPageY)/b.grid[1])*b.grid[1]:this.originalPageY;h=g?!(h-this.offset.click.top<g[1]||h-this.offset.click.top>g[3])?h:!(h-this.offset.click.top<g[1])?h-b.grid[1]:h+b.grid[1]:h;e=b.grid[0]?this.originalPageX+Math.round((e-this.originalPageX)/
-b.grid[0])*b.grid[0]:this.originalPageX;e=g?!(e-this.offset.click.left<g[0]||e-this.offset.click.left>g[2])?e:!(e-this.offset.click.left<g[0])?e-b.grid[0]:e+b.grid[0]:e}}return{top:h-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():f?0:c.scrollTop()),left:e-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(d.browser.safari&&d.browser.version<
-526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.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=false},_trigger:function(a,b,c){c=c||this._uiHash();d.ui.plugin.call(this,a,[b,c]);if(a=="drag")this.positionAbs=this._convertPositionTo("absolute");return d.Widget.prototype._trigger.call(this,a,b,
-c)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});d.extend(d.ui.draggable,{version:"1.8.14"});d.ui.plugin.add("draggable","connectToSortable",{start:function(a,b){var c=d(this).data("draggable"),f=c.options,e=d.extend({},b,{item:c.element});c.sortables=[];d(f.connectToSortable).each(function(){var h=d.data(this,"sortable");if(h&&!h.options.disabled){c.sortables.push({instance:h,shouldRevert:h.options.revert});
-h.refreshPositions();h._trigger("activate",a,e)}})},stop:function(a,b){var c=d(this).data("draggable"),f=d.extend({},b,{item:c.element});d.each(c.sortables,function(){if(this.instance.isOver){this.instance.isOver=0;c.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert)this.instance.options.revert=true;this.instance._mouseStop(a);this.instance.options.helper=this.instance.options._helper;c.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})}else{this.instance.cancelHelperRemoval=
-false;this.instance._trigger("deactivate",a,f)}})},drag:function(a,b){var c=d(this).data("draggable"),f=this;d.each(c.sortables,function(){this.instance.positionAbs=c.positionAbs;this.instance.helperProportions=c.helperProportions;this.instance.offset.click=c.offset.click;if(this.instance._intersectsWith(this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=1;this.instance.currentItem=d(f).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",true);
-this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return b.helper[0]};a.target=this.instance.currentItem[0];this.instance._mouseCapture(a,true);this.instance._mouseStart(a,true,true);this.instance.offset.click.top=c.offset.click.top;this.instance.offset.click.left=c.offset.click.left;this.instance.offset.parent.left-=c.offset.parent.left-this.instance.offset.parent.left;this.instance.offset.parent.top-=c.offset.parent.top-this.instance.offset.parent.top;
-c._trigger("toSortable",a);c.dropped=this.instance.element;c.currentItem=c.element;this.instance.fromOutside=c}this.instance.currentItem&&this.instance._mouseDrag(a)}else if(this.instance.isOver){this.instance.isOver=0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance._trigger("out",a,this.instance._uiHash(this.instance));this.instance._mouseStop(a,true);this.instance.options.helper=this.instance.options._helper;this.instance.currentItem.remove();this.instance.placeholder&&
-this.instance.placeholder.remove();c._trigger("fromSortable",a);c.dropped=false}})}});d.ui.plugin.add("draggable","cursor",{start:function(){var a=d("body"),b=d(this).data("draggable").options;if(a.css("cursor"))b._cursor=a.css("cursor");a.css("cursor",b.cursor)},stop:function(){var a=d(this).data("draggable").options;a._cursor&&d("body").css("cursor",a._cursor)}});d.ui.plugin.add("draggable","opacity",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options;if(a.css("opacity"))b._opacity=
-a.css("opacity");a.css("opacity",b.opacity)},stop:function(a,b){a=d(this).data("draggable").options;a._opacity&&d(b.helper).css("opacity",a._opacity)}});d.ui.plugin.add("draggable","scroll",{start:function(){var a=d(this).data("draggable");if(a.scrollParent[0]!=document&&a.scrollParent[0].tagName!="HTML")a.overflowOffset=a.scrollParent.offset()},drag:function(a){var b=d(this).data("draggable"),c=b.options,f=false;if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!="HTML"){if(!c.axis||c.axis!=
-"x")if(b.overflowOffset.top+b.scrollParent[0].offsetHeight-a.pageY<c.scrollSensitivity)b.scrollParent[0].scrollTop=f=b.scrollParent[0].scrollTop+c.scrollSpeed;else if(a.pageY-b.overflowOffset.top<c.scrollSensitivity)b.scrollParent[0].scrollTop=f=b.scrollParent[0].scrollTop-c.scrollSpeed;if(!c.axis||c.axis!="y")if(b.overflowOffset.left+b.scrollParent[0].offsetWidth-a.pageX<c.scrollSensitivity)b.scrollParent[0].scrollLeft=f=b.scrollParent[0].scrollLeft+c.scrollSpeed;else if(a.pageX-b.overflowOffset.left<
-c.scrollSensitivity)b.scrollParent[0].scrollLeft=f=b.scrollParent[0].scrollLeft-c.scrollSpeed}else{if(!c.axis||c.axis!="x")if(a.pageY-d(document).scrollTop()<c.scrollSensitivity)f=d(document).scrollTop(d(document).scrollTop()-c.scrollSpeed);else if(d(window).height()-(a.pageY-d(document).scrollTop())<c.scrollSensitivity)f=d(document).scrollTop(d(document).scrollTop()+c.scrollSpeed);if(!c.axis||c.axis!="y")if(a.pageX-d(document).scrollLeft()<c.scrollSensitivity)f=d(document).scrollLeft(d(document).scrollLeft()-
-c.scrollSpeed);else if(d(window).width()-(a.pageX-d(document).scrollLeft())<c.scrollSensitivity)f=d(document).scrollLeft(d(document).scrollLeft()+c.scrollSpeed)}f!==false&&d.ui.ddmanager&&!c.dropBehaviour&&d.ui.ddmanager.prepareOffsets(b,a)}});d.ui.plugin.add("draggable","snap",{start:function(){var a=d(this).data("draggable"),b=a.options;a.snapElements=[];d(b.snap.constructor!=String?b.snap.items||":data(draggable)":b.snap).each(function(){var c=d(this),f=c.offset();this!=a.element[0]&&a.snapElements.push({item:this,
-width:c.outerWidth(),height:c.outerHeight(),top:f.top,left:f.left})})},drag:function(a,b){for(var c=d(this).data("draggable"),f=c.options,e=f.snapTolerance,h=b.offset.left,g=h+c.helperProportions.width,n=b.offset.top,o=n+c.helperProportions.height,i=c.snapElements.length-1;i>=0;i--){var j=c.snapElements[i].left,l=j+c.snapElements[i].width,k=c.snapElements[i].top,m=k+c.snapElements[i].height;if(j-e<h&&h<l+e&&k-e<n&&n<m+e||j-e<h&&h<l+e&&k-e<o&&o<m+e||j-e<g&&g<l+e&&k-e<n&&n<m+e||j-e<g&&g<l+e&&k-e<o&&
-o<m+e){if(f.snapMode!="inner"){var p=Math.abs(k-o)<=e,q=Math.abs(m-n)<=e,r=Math.abs(j-g)<=e,s=Math.abs(l-h)<=e;if(p)b.position.top=c._convertPositionTo("relative",{top:k-c.helperProportions.height,left:0}).top-c.margins.top;if(q)b.position.top=c._convertPositionTo("relative",{top:m,left:0}).top-c.margins.top;if(r)b.position.left=c._convertPositionTo("relative",{top:0,left:j-c.helperProportions.width}).left-c.margins.left;if(s)b.position.left=c._convertPositionTo("relative",{top:0,left:l}).left-c.margins.left}var t=
-p||q||r||s;if(f.snapMode!="outer"){p=Math.abs(k-n)<=e;q=Math.abs(m-o)<=e;r=Math.abs(j-h)<=e;s=Math.abs(l-g)<=e;if(p)b.position.top=c._convertPositionTo("relative",{top:k,left:0}).top-c.margins.top;if(q)b.position.top=c._convertPositionTo("relative",{top:m-c.helperProportions.height,left:0}).top-c.margins.top;if(r)b.position.left=c._convertPositionTo("relative",{top:0,left:j}).left-c.margins.left;if(s)b.position.left=c._convertPositionTo("relative",{top:0,left:l-c.helperProportions.width}).left-c.margins.left}if(!c.snapElements[i].snapping&&
-(p||q||r||s||t))c.options.snap.snap&&c.options.snap.snap.call(c.element,a,d.extend(c._uiHash(),{snapItem:c.snapElements[i].item}));c.snapElements[i].snapping=p||q||r||s||t}else{c.snapElements[i].snapping&&c.options.snap.release&&c.options.snap.release.call(c.element,a,d.extend(c._uiHash(),{snapItem:c.snapElements[i].item}));c.snapElements[i].snapping=false}}}});d.ui.plugin.add("draggable","stack",{start:function(){var a=d(this).data("draggable").options;a=d.makeArray(d(a.stack)).sort(function(c,f){return(parseInt(d(c).css("zIndex"),
-10)||0)-(parseInt(d(f).css("zIndex"),10)||0)});if(a.length){var b=parseInt(a[0].style.zIndex)||0;d(a).each(function(c){this.style.zIndex=b+c});this[0].style.zIndex=b+a.length}}});d.ui.plugin.add("draggable","zIndex",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options;if(a.css("zIndex"))b._zIndex=a.css("zIndex");a.css("zIndex",b.zIndex)},stop:function(a,b){a=d(this).data("draggable").options;a._zIndex&&d(b.helper).css("zIndex",a._zIndex)}})})(jQuery);
-;/*
- * jQuery UI Droppable 1.8.14
- *
- * 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/Droppables
- *
- * Depends:
- *     jquery.ui.core.js
- *     jquery.ui.widget.js
- *     jquery.ui.mouse.js
- *     jquery.ui.draggable.js
- */
-(function(d){d.widget("ui.droppable",{widgetEventPrefix:"drop",options:{accept:"*",activeClass:false,addClasses:true,greedy:false,hoverClass:false,scope:"default",tolerance:"intersect"},_create:function(){var a=this.options,b=a.accept;this.isover=0;this.isout=1;this.accept=d.isFunction(b)?b:function(c){return c.is(b)};this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};d.ui.ddmanager.droppables[a.scope]=d.ui.ddmanager.droppables[a.scope]||[];d.ui.ddmanager.droppables[a.scope].push(this);
-a.addClasses&&this.element.addClass("ui-droppable")},destroy:function(){for(var a=d.ui.ddmanager.droppables[this.options.scope],b=0;b<a.length;b++)a[b]==this&&a.splice(b,1);this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable");return this},_setOption:function(a,b){if(a=="accept")this.accept=d.isFunction(b)?b:function(c){return c.is(b)};d.Widget.prototype._setOption.apply(this,arguments)},_activate:function(a){var b=d.ui.ddmanager.current;this.options.activeClass&&
-this.element.addClass(this.options.activeClass);b&&this._trigger("activate",a,this.ui(b))},_deactivate:function(a){var b=d.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass);b&&this._trigger("deactivate",a,this.ui(b))},_over:function(a){var b=d.ui.ddmanager.current;if(!(!b||(b.currentItem||b.element)[0]==this.element[0]))if(this.accept.call(this.element[0],b.currentItem||b.element)){this.options.hoverClass&&this.element.addClass(this.options.hoverClass);
-this._trigger("over",a,this.ui(b))}},_out:function(a){var b=d.ui.ddmanager.current;if(!(!b||(b.currentItem||b.element)[0]==this.element[0]))if(this.accept.call(this.element[0],b.currentItem||b.element)){this.options.hoverClass&&this.element.removeClass(this.options.hoverClass);this._trigger("out",a,this.ui(b))}},_drop:function(a,b){var c=b||d.ui.ddmanager.current;if(!c||(c.currentItem||c.element)[0]==this.element[0])return false;var e=false;this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var g=
-d.data(this,"droppable");if(g.options.greedy&&!g.options.disabled&&g.options.scope==c.options.scope&&g.accept.call(g.element[0],c.currentItem||c.element)&&d.ui.intersect(c,d.extend(g,{offset:g.element.offset()}),g.options.tolerance)){e=true;return false}});if(e)return false;if(this.accept.call(this.element[0],c.currentItem||c.element)){this.options.activeClass&&this.element.removeClass(this.options.activeClass);this.options.hoverClass&&this.element.removeClass(this.options.hoverClass);this._trigger("drop",
-a,this.ui(c));return this.element}return false},ui:function(a){return{draggable:a.currentItem||a.element,helper:a.helper,position:a.position,offset:a.positionAbs}}});d.extend(d.ui.droppable,{version:"1.8.14"});d.ui.intersect=function(a,b,c){if(!b.offset)return false;var e=(a.positionAbs||a.position.absolute).left,g=e+a.helperProportions.width,f=(a.positionAbs||a.position.absolute).top,h=f+a.helperProportions.height,i=b.offset.left,k=i+b.proportions.width,j=b.offset.top,l=j+b.proportions.height;
-switch(c){case "fit":return i<=e&&g<=k&&j<=f&&h<=l;case "intersect":return i<e+a.helperProportions.width/2&&g-a.helperProportions.width/2<k&&j<f+a.helperProportions.height/2&&h-a.helperProportions.height/2<l;case "pointer":return d.ui.isOver((a.positionAbs||a.position.absolute).top+(a.clickOffset||a.offset.click).top,(a.positionAbs||a.position.absolute).left+(a.clickOffset||a.offset.click).left,j,i,b.proportions.height,b.proportions.width);case "touch":return(f>=j&&f<=l||h>=j&&h<=l||f<j&&h>l)&&(e>=
-i&&e<=k||g>=i&&g<=k||e<i&&g>k);default:return false}};d.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,b){var c=d.ui.ddmanager.droppables[a.options.scope]||[],e=b?b.type:null,g=(a.currentItem||a.element).find(":data(droppable)").andSelf(),f=0;a:for(;f<c.length;f++)if(!(c[f].options.disabled||a&&!c[f].accept.call(c[f].element[0],a.currentItem||a.element))){for(var h=0;h<g.length;h++)if(g[h]==c[f].element[0]){c[f].proportions.height=0;continue a}c[f].visible=c[f].element.css("display")!=
-"none";if(c[f].visible){e=="mousedown"&&c[f]._activate.call(c[f],b);c[f].offset=c[f].element.offset();c[f].proportions={width:c[f].element[0].offsetWidth,height:c[f].element[0].offsetHeight}}}},drop:function(a,b){var c=false;d.each(d.ui.ddmanager.droppables[a.options.scope]||[],function(){if(this.options){if(!this.options.disabled&&this.visible&&d.ui.intersect(a,this,this.options.tolerance))c=c||this._drop.call(this,b);if(!this.options.disabled&&this.visible&&this.accept.call(this.element[0],a.currentItem||
-a.element)){this.isout=1;this.isover=0;this._deactivate.call(this,b)}}});return c},dragStart:function(a,b){a.element.parentsUntil("body").bind("scroll.droppable",function(){a.options.refreshPositions||d.ui.ddmanager.prepareOffsets(a,b)})},drag:function(a,b){a.options.refreshPositions&&d.ui.ddmanager.prepareOffsets(a,b);d.each(d.ui.ddmanager.droppables[a.options.scope]||[],function(){if(!(this.options.disabled||this.greedyChild||!this.visible)){var c=d.ui.intersect(a,this,this.options.tolerance);if(c=
-!c&&this.isover==1?"isout":c&&this.isover==0?"isover":null){var e;if(this.options.greedy){var g=this.element.parents(":data(droppable):eq(0)");if(g.length){e=d.data(g[0],"droppable");e.greedyChild=c=="isover"?1:0}}if(e&&c=="isover"){e.isover=0;e.isout=1;e._out.call(e,b)}this[c]=1;this[c=="isout"?"isover":"isout"]=0;this[c=="isover"?"_over":"_out"].call(this,b);if(e&&c=="isout"){e.isout=0;e.isover=1;e._over.call(e,b)}}}})},dragStop:function(a,b){a.element.parentsUntil("body").unbind("scroll.droppable");
-a.options.refreshPositions||d.ui.ddmanager.prepareOffsets(a,b)}}})(jQuery);
-;/*
- * jQuery UI Resizable 1.8.14
- *
- * 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/Resizables
- *
- * Depends:
- *     jquery.ui.core.js
- *     jquery.ui.mouse.js
- *     jquery.ui.widget.js
- */
-(function(e){e.widget("ui.resizable",e.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1E3},_create:function(){var b=this,a=this.options;this.element.addClass("ui-resizable");e.extend(this,{_aspectRatio:!!a.aspectRatio,aspectRatio:a.aspectRatio,originalElement:this.element,
-_proportionallyResizeElements:[],_helper:a.helper||a.ghost||a.animate?a.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){/relative/.test(this.element.css("position"))&&e.browser.opera&&this.element.css({position:"relative",top:"auto",left:"auto"});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=true;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=a.handles||(!e(".ui-resizable-handle",this.element).length?"e,s,se":{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"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var d=0;d<c.length;d++){var f=e.trim(c[d]),g=e('<div class="ui-resizable-handle '+("ui-resizable-"+f)+'"></div>');/sw|se|ne|nw/.test(f)&&g.css({zIndex:++a.zIndex});"se"==f&&g.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(g)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor==
-String)this.handles[i]=e(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=e(this.handles[i],this.element),l=0;l=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,l);this._proportionallyResize()}e(this.handles[i])}};this._renderAxis(this.element);this._handles=e(".ui-resizable-handle",this.element).disableSelection();
-this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();e(this.element).addClass("ui-resizable-autohide").hover(function(){if(!a.disabled){e(this).removeClass("ui-resizable-autohide");b._handles.show()}},function(){if(!a.disabled)if(!b.resizing){e(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();
-var b=function(c){e(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a=
-false;for(var c in this.handles)if(e(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(),d=this.element;this.resizing=true;this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()};if(d.is(".ui-draggable")||/absolute/.test(d.css("position")))d.css({position:"absolute",top:c.top,left:c.left});e.browser.opera&&/relative/.test(d.css("position"))&&d.css({position:"relative",top:"auto",left:"auto"});
-this._renderProxy();c=m(this.helper.css("left"));var f=m(this.helper.css("top"));if(a.containment){c+=e(a.containment).scrollLeft()||0;f+=e(a.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:c,top:f};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:c,top:f};this.sizeDiff=
-{width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio:this.originalSize.width/this.originalSize.height||1;a=e(".ui-resizable-"+this.axis).css("cursor");e("body").css("cursor",a=="auto"?this.axis+"-resize":a);d.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,d=this._change[this.axis];
-if(!d)return false;c=d.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize",b);a.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(c);this._trigger("resize",b,this.ui());return false},
-_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var d=this._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName);d=f&&e.ui.hasScroll(d[0],"left")?0:c.sizeDiff.height;f=f?0:c.sizeDiff.width;f={width:c.helper.width()-f,height:c.helper.height()-d};d=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var g=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(e.extend(f,
-{top:g,left:d}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}e("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",b);this._helper&&this.helper.remove();return false},_updateVirtualBoundaries:function(b){var a=this.options,c,d,f;a={minWidth:k(a.minWidth)?a.minWidth:0,maxWidth:k(a.maxWidth)?a.maxWidth:Infinity,minHeight:k(a.minHeight)?a.minHeight:0,maxHeight:k(a.maxHeight)?a.maxHeight:
-Infinity};if(this._aspectRatio||b){b=a.minHeight*this.aspectRatio;d=a.minWidth/this.aspectRatio;c=a.maxHeight*this.aspectRatio;f=a.maxWidth/this.aspectRatio;if(b>a.minWidth)a.minWidth=b;if(d>a.minHeight)a.minHeight=d;if(c<a.maxWidth)a.maxWidth=c;if(f<a.maxHeight)a.maxHeight=f}this._vBoundaries=a},_updateCache:function(b){this.offset=this.helper.offset();if(k(b.left))this.position.left=b.left;if(k(b.top))this.position.top=b.top;if(k(b.height))this.size.height=b.height;if(k(b.width))this.size.width=
-b.width},_updateRatio:function(b){var a=this.position,c=this.size,d=this.axis;if(k(b.height))b.width=b.height*this.aspectRatio;else if(k(b.width))b.height=b.width/this.aspectRatio;if(d=="sw"){b.left=a.left+(c.width-b.width);b.top=null}if(d=="nw"){b.top=a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this._vBoundaries,c=this.axis,d=k(b.width)&&a.maxWidth&&a.maxWidth<b.width,f=k(b.height)&&a.maxHeight&&a.maxHeight<b.height,g=k(b.width)&&a.minWidth&&
-a.minWidth>b.width,h=k(b.height)&&a.minHeight&&a.minHeight>b.height;if(g)b.width=a.minWidth;if(h)b.height=a.minHeight;if(d)b.width=a.maxWidth;if(f)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height,l=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(g&&l)b.left=i-a.minWidth;if(d&&l)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(f&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left=
-null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a<this._proportionallyResizeElements.length;a++){var c=this._proportionallyResizeElements[a];if(!this.borderDif){var d=[c.css("borderTopWidth"),c.css("borderRightWidth"),c.css("borderBottomWidth"),c.css("borderLeftWidth")],f=[c.css("paddingTop"),c.css("paddingRight"),c.css("paddingBottom"),c.css("paddingLeft")];this.borderDif=e.map(d,function(g,h){g=parseInt(g,10)||
-0;h=parseInt(f[h],10)||0;return g+h})}e.browser.msie&&(e(b).is(":hidden")||e(b).parents(":hidden").length)||c.css({height:b.height()-this.borderDif[0]-this.borderDif[2]||0,width:b.width()-this.borderDif[1]-this.borderDif[3]||0})}},_renderProxy:function(){var b=this.options;this.elementOffset=this.element.offset();if(this._helper){this.helper=this.helper||e('<div style="overflow:hidden;"></div>');var a=e.browser.msie&&e.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+
-a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+
-c}},se:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){e.ui.plugin.call(this,b,[a,this.ui()]);
-b!="resize"&&this._trigger(b,a,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.extend(e.ui.resizable,{version:"1.8.14"});e.ui.plugin.add("resizable","alsoResize",{start:function(){var b=e(this).data("resizable").options,a=function(c){e(c).each(function(){var d=e(this);d.data("resizable-alsoresize",{width:parseInt(d.width(),
-10),height:parseInt(d.height(),10),left:parseInt(d.css("left"),10),top:parseInt(d.css("top"),10),position:d.css("position")})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else e.each(b.alsoResize,function(c){a(c)});else a(b.alsoResize)},resize:function(b,a){var c=e(this).data("resizable");b=c.options;var d=c.originalSize,f=c.originalPosition,g={height:c.size.height-d.height||0,width:c.size.width-d.width||0,top:c.position.top-
-f.top||0,left:c.position.left-f.left||0},h=function(i,j){e(i).each(function(){var l=e(this),q=e(this).data("resizable-alsoresize"),p={},r=j&&j.length?j:l.parents(a.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(r,function(n,o){if((n=(q[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(e.browser.opera&&/relative/.test(l.css("position"))){c._revertToRelativePosition=true;l.css({position:"absolute",top:"auto",left:"auto"})}l.css(p)})};typeof b.alsoResize=="object"&&!b.alsoResize.nodeType?
-e.each(b.alsoResize,function(i,j){h(i,j)}):h(b.alsoResize)},stop:function(){var b=e(this).data("resizable"),a=b.options,c=function(d){e(d).each(function(){var f=e(this);f.css({position:f.data("resizable-alsoresize").position})})};if(b._revertToRelativePosition){b._revertToRelativePosition=false;typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?e.each(a.alsoResize,function(d){c(d)}):c(a.alsoResize)}e(this).removeData("resizable-alsoresize")}});e.ui.plugin.add("resizable","animate",{stop:function(b){var a=
-e(this).data("resizable"),c=a.options,d=a._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName),g=f&&e.ui.hasScroll(d[0],"left")?0:a.sizeDiff.height;f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height-g};g=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(e.extend(f,h&&g?{top:h,left:g}:{}),{duration:c.animateDuration,easing:c.animateEasing,
-step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};d&&d.length&&e(d[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize",b)}})}});e.ui.plugin.add("resizable","containment",{start:function(){var b=e(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof e?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement=
-e(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}}else{var d=e(a),f=[];e(["Top","Right","Left","Bottom"]).each(function(i,j){f[i]=m(d.css("padding"+j))});b.containerOffset=d.offset();b.containerPosition=d.position();b.containerSize={height:d.innerHeight()-f[3],width:d.innerWidth()-f[1]};c=b.containerOffset;
-var g=b.containerSize.height,h=b.containerSize.width;h=e.ui.hasScroll(a,"left")?a.scrollWidth:h;g=e.ui.hasScroll(a)?a.scrollHeight:g;b.parentData={element:a,left:c.left,top:c.top,width:h,height:g}}}},resize:function(b){var a=e(this).data("resizable"),c=a.options,d=a.containerOffset,f=a.position;b=a._aspectRatio||b.shiftKey;var g={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))g=d;if(f.left<(a._helper?d.left:0)){a.size.width+=a._helper?a.position.left-d.left:
-a.position.left-g.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?d.left:0}if(f.top<(a._helper?d.top:0)){a.size.height+=a._helper?a.position.top-d.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?d.top:0}a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-g.left:a.offset.left-g.left)+a.sizeDiff.width);d=Math.abs((a._helper?a.offset.top-g.top:a.offset.top-
-d.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);g=/relative|absolute/.test(a.containerElement.css("position"));if(f&&g)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(d+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-d;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=e(this).data("resizable"),a=b.options,c=b.containerOffset,d=b.containerPosition,
-f=b.containerElement,g=e(b.helper),h=g.offset(),i=g.outerWidth()-b.sizeDiff.width;g=g.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g});b._helper&&!a.animate&&/static/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g})}});e.ui.plugin.add("resizable","ghost",{start:function(){var b=e(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25,
-display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=e(this).data("resizable");b.ghost&&b.ghost.css({position:"relative",height:b.size.height,width:b.size.width})},stop:function(){var b=e(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});e.ui.plugin.add("resizable","grid",{resize:function(){var b=
-e(this).data("resizable"),a=b.options,c=b.size,d=b.originalSize,f=b.originalPosition,g=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-d.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-d.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else if(/^(ne)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}else{if(/^(sw)$/.test(g)){b.size.width=d.width+h;b.size.height=
-d.height+a}else{b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}b.position.left=f.left-h}}});var m=function(b){return parseInt(b,10)||0},k=function(b){return!isNaN(parseInt(b,10))}})(jQuery);
-;/*
- * jQuery UI Selectable 1.8.14
- *
- * 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/Selectables
- *
- * Depends:
- *     jquery.ui.core.js
- *     jquery.ui.mouse.js
- *     jquery.ui.widget.js
- */
-(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"),
-selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.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").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX,
-c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting");b.unselecting=true;f._trigger("unselecting",
-c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f=this;this.dragged=true;if(!this.options.disabled){var d=
-this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.right<b||a.top>i||a.bottom<g);else if(d.tolerance=="fit")k=a.left>b&&a.right<h&&a.top>g&&a.bottom<i;if(k){if(a.selected){a.$element.removeClass("ui-selected");a.selected=false}if(a.unselecting){a.$element.removeClass("ui-unselecting");
-a.unselecting=false}if(!a.selecting){a.$element.addClass("ui-selecting");a.selecting=true;f._trigger("selecting",c,{selecting:a.element})}}else{if(a.selecting)if(c.metaKey&&a.startselected){a.$element.removeClass("ui-selecting");a.selecting=false;a.$element.addClass("ui-selected");a.selected=true}else{a.$element.removeClass("ui-selecting");a.selecting=false;if(a.startselected){a.$element.addClass("ui-unselecting");a.unselecting=true}f._trigger("unselecting",c,{unselecting:a.element})}if(a.selected)if(!c.metaKey&&
-!a.startselected){a.$element.removeClass("ui-selected");a.selected=false;a.$element.addClass("ui-unselecting");a.unselecting=true;f._trigger("unselecting",c,{unselecting:a.element})}}}});return false}},_mouseStop:function(c){var f=this;this.dragged=false;e(".ui-unselecting",this.element[0]).each(function(){var d=e.data(this,"selectable-item");d.$element.removeClass("ui-unselecting");d.unselecting=false;d.startselected=false;f._trigger("unselected",c,{unselected:d.element})});e(".ui-selecting",this.element[0]).each(function(){var d=
-e.data(this,"selectable-item");d.$element.removeClass("ui-selecting").addClass("ui-selected");d.selecting=false;d.selected=true;d.startselected=true;f._trigger("selected",c,{selected:d.element})});this._trigger("stop",c);this.helper.remove();return false}});e.extend(e.ui.selectable,{version:"1.8.14"})})(jQuery);
-;/*
- * jQuery UI Sortable 1.8.14
- *
- * 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/Sortables
- *
- * Depends:
- *     jquery.ui.core.js
- *     jquery.ui.mouse.js
- *     jquery.ui.widget.js
- */
-(function(d){d.widget("ui.sortable",d.ui.mouse,{widgetEventPrefix:"sort",options:{appendTo:"parent",axis:false,connectWith:false,containment:false,cursor:"auto",cursorAt:false,dropOnEmpty:true,forcePlaceholderSize:false,forceHelperSize:false,grid:false,handle:false,helper:"original",items:"> *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){var a=this.options;this.containerCache={};this.element.addClass("ui-sortable");
-this.refresh();this.floating=this.items.length?a.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var a=this.items.length-1;a>=0;a--)this.items[a].item.removeData("sortable-item");return this},_setOption:function(a,b){if(a===
-"disabled"){this.options[a]=b;this.widget()[b?"addClass":"removeClass"]("ui-sortable-disabled")}else d.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(a,b){if(this.reverting)return false;if(this.options.disabled||this.options.type=="static")return false;this._refreshItems(a);var c=null,e=this;d(a.target).parents().each(function(){if(d.data(this,"sortable-item")==e){c=d(this);return false}});if(d.data(a.target,"sortable-item")==e)c=d(a.target);if(!c)return false;if(this.options.handle&&
-!b){var f=false;d(this.options.handle,c).find("*").andSelf().each(function(){if(this==a.target)f=true});if(!f)return false}this.currentItem=c;this._removeCurrentsFromItems();return true},_mouseStart:function(a,b,c){b=this.options;var e=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);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};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};
-this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder();b.containment&&this._setContainment();if(b.cursor){if(d("body").css("cursor"))this._storedCursor=d("body").css("cursor");d("body").css("cursor",b.cursor)}if(b.opacity){if(this.helper.css("opacity"))this._storedOpacity=this.helper.css("opacity");this.helper.css("opacity",b.opacity)}if(b.zIndex){if(this.helper.css("zIndex"))this._storedZIndex=this.helper.css("zIndex");this.helper.css("zIndex",b.zIndex)}if(this.scrollParent[0]!=
-document&&this.scrollParent[0].tagName!="HTML")this.overflowOffset=this.scrollParent.offset();this._trigger("start",a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!c)for(c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("activate",a,e._uiHash(this));if(d.ui.ddmanager)d.ui.ddmanager.current=this;d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a);
-return true},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!this.lastPositionAbs)this.lastPositionAbs=this.positionAbs;if(this.options.scroll){var b=this.options,c=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageY<b.scrollSensitivity)this.scrollParent[0].scrollTop=c=this.scrollParent[0].scrollTop+b.scrollSpeed;else if(a.pageY-this.overflowOffset.top<
-b.scrollSensitivity)this.scrollParent[0].scrollTop=c=this.scrollParent[0].scrollTop-b.scrollSpeed;if(this.overflowOffset.left+this.scrollParent[0].offsetWidth-a.pageX<b.scrollSensitivity)this.scrollParent[0].scrollLeft=c=this.scrollParent[0].scrollLeft+b.scrollSpeed;else if(a.pageX-this.overflowOffset.left<b.scrollSensitivity)this.scrollParent[0].scrollLeft=c=this.scrollParent[0].scrollLeft-b.scrollSpeed}else{if(a.pageY-d(document).scrollTop()<b.scrollSensitivity)c=d(document).scrollTop(d(document).scrollTop()-
-b.scrollSpeed);else if(d(window).height()-(a.pageY-d(document).scrollTop())<b.scrollSensitivity)c=d(document).scrollTop(d(document).scrollTop()+b.scrollSpeed);if(a.pageX-d(document).scrollLeft()<b.scrollSensitivity)c=d(document).scrollLeft(d(document).scrollLeft()-b.scrollSpeed);else if(d(window).width()-(a.pageX-d(document).scrollLeft())<b.scrollSensitivity)c=d(document).scrollLeft(d(document).scrollLeft()+b.scrollSpeed)}c!==false&&d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,
-a)}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";for(b=this.items.length-1;b>=0;b--){c=this.items[b];var e=c.item[0],f=this._intersectsWithPointer(c);if(f)if(e!=this.currentItem[0]&&this.placeholder[f==1?"next":"prev"]()[0]!=e&&!d.ui.contains(this.placeholder[0],e)&&(this.options.type=="semi-dynamic"?!d.ui.contains(this.element[0],
-e):true)){this.direction=f==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(c))this._rearrange(a,c);else break;this._trigger("change",a,this._uiHash());break}}this._contactContainers(a);d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);this._trigger("sort",a,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(a,b){if(a){d.ui.ddmanager&&!this.options.dropBehaviour&&d.ui.ddmanager.drop(this,a);if(this.options.revert){var c=this;b=c.placeholder.offset();
-c.reverting=true;d(this.helper).animate({left:b.left-this.offset.parent.left-c.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:b.top-this.offset.parent.top-c.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){c._clear(a)})}else this._clear(a,b);return false}},cancel:function(){var a=this;if(this.dragging){this._mouseUp({target:null});this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):
-this.currentItem.show();for(var b=this.containers.length-1;b>=0;b--){this.containers[b]._trigger("deactivate",null,a._uiHash(this));if(this.containers[b].containerCache.over){this.containers[b]._trigger("out",null,a._uiHash(this));this.containers[b].containerCache.over=0}}}if(this.placeholder){this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove();d.extend(this,{helper:null,
-dragging:false,reverting:false,_noFinalSort:null});this.domPosition.prev?d(this.domPosition.prev).after(this.currentItem):d(this.domPosition.parent).prepend(this.currentItem)}return this},serialize:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};d(b).each(function(){var e=(d(a.item||this).attr(a.attribute||"id")||"").match(a.expression||/(.+)[-=_](.+)/);if(e)c.push((a.key||e[1]+"[]")+"="+(a.key&&a.expression?e[1]:e[2]))});!c.length&&a.key&&c.push(a.key+"=");return c.join("&")},
-toArray:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};b.each(function(){c.push(d(a.item||this).attr(a.attribute||"id")||"")});return c},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,e=this.positionAbs.top,f=e+this.helperProportions.height,g=a.left,h=g+a.width,i=a.top,k=i+a.height,j=this.offset.click.top,l=this.offset.click.left;j=e+j>i&&e+j<k&&b+l>g&&b+l<h;return this.options.tolerance=="pointer"||this.options.forcePointerForContainers||
-this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>a[this.floating?"width":"height"]?j:g<b+this.helperProportions.width/2&&c-this.helperProportions.width/2<h&&i<e+this.helperProportions.height/2&&f-this.helperProportions.height/2<k},_intersectsWithPointer:function(a){var b=d.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,a.top,a.height);a=d.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,a.left,a.width);b=b&&a;a=this._getDragVerticalDirection();
-var c=this._getDragHorizontalDirection();if(!b)return false;return this.floating?c&&c=="right"||a=="down"?2:1:a&&(a=="down"?2:1)},_intersectsWithSides:function(a){var b=d.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,a.top+a.height/2,a.height);a=d.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,a.left+a.width/2,a.width);var c=this._getDragVerticalDirection(),e=this._getDragHorizontalDirection();return this.floating&&e?e=="right"&&a||e=="left"&&!a:c&&(c=="down"&&b||c=="up"&&!b)},
-_getDragVerticalDirection:function(){var a=this.positionAbs.top-this.lastPositionAbs.top;return a!=0&&(a>0?"down":"up")},_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a);this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(a){var b=[],c=[],e=this._connectWith();
-if(e&&a)for(a=e.length-1;a>=0;a--)for(var f=d(e[a]),g=f.length-1;g>=0;g--){var h=d.data(f[g],"sortable");if(h&&h!=this&&!h.options.disabled)c.push([d.isFunction(h.options.items)?h.options.items.call(h.element):d(h.options.items,h.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),h])}c.push([d.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):d(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),
-this]);for(a=c.length-1;a>=0;a--)c[a][0].each(function(){b.push(this)});return d(b)},_removeCurrentsFromItems:function(){for(var a=this.currentItem.find(":data(sortable-item)"),b=0;b<this.items.length;b++)for(var c=0;c<a.length;c++)a[c]==this.items[b].item[0]&&this.items.splice(b,1)},_refreshItems:function(a){this.items=[];this.containers=[this];var b=this.items,c=[[d.isFunction(this.options.items)?this.options.items.call(this.element[0],a,{item:this.currentItem}):d(this.options.items,this.element),
-this]],e=this._connectWith();if(e)for(var f=e.length-1;f>=0;f--)for(var g=d(e[f]),h=g.length-1;h>=0;h--){var i=d.data(g[h],"sortable");if(i&&i!=this&&!i.options.disabled){c.push([d.isFunction(i.options.items)?i.options.items.call(i.element[0],a,{item:this.currentItem}):d(i.options.items,i.element),i]);this.containers.push(i)}}for(f=c.length-1;f>=0;f--){a=c[f][1];e=c[f][0];h=0;for(g=e.length;h<g;h++){i=d(e[h]);i.data("sortable-item",a);b.push({item:i,instance:a,width:0,height:0,left:0,top:0})}}},refreshPositions:function(a){if(this.offsetParent&&
-this.helper)this.offset.parent=this._getParentOffset();for(var b=this.items.length-1;b>=0;b--){var c=this.items[b];if(!(c.instance!=this.currentContainer&&this.currentContainer&&c.item[0]!=this.currentItem[0])){var e=this.options.toleranceElement?d(this.options.toleranceElement,c.item):c.item;if(!a){c.width=e.outerWidth();c.height=e.outerHeight()}e=e.offset();c.left=e.left;c.top=e.top}}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(b=
-this.containers.length-1;b>=0;b--){e=this.containers[b].element.offset();this.containers[b].containerCache.left=e.left;this.containers[b].containerCache.top=e.top;this.containers[b].containerCache.width=this.containers[b].element.outerWidth();this.containers[b].containerCache.height=this.containers[b].element.outerHeight()}return this},_createPlaceholder:function(a){var b=a||this,c=b.options;if(!c.placeholder||c.placeholder.constructor==String){var e=c.placeholder;c.placeholder={element:function(){var f=
-d(document.createElement(b.currentItem[0].nodeName)).addClass(e||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];if(!e)f.style.visibility="hidden";return f},update:function(f,g){if(!(e&&!c.forcePlaceholderSize)){g.height()||g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10));g.width()||g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")||
-0,10))}}}}b.placeholder=d(c.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder);c.placeholder.update(b,b.placeholder)},_contactContainers:function(a){for(var b=null,c=null,e=this.containers.length-1;e>=0;e--)if(!d.ui.contains(this.currentItem[0],this.containers[e].element[0]))if(this._intersectsWith(this.containers[e].containerCache)){if(!(b&&d.ui.contains(this.containers[e].element[0],b.element[0]))){b=this.containers[e];c=e}}else if(this.containers[e].containerCache.over){this.containers[e]._trigger("out",
-a,this._uiHash(this));this.containers[e].containerCache.over=0}if(b)if(this.containers.length===1){this.containers[c]._trigger("over",a,this._uiHash(this));this.containers[c].containerCache.over=1}else if(this.currentContainer!=this.containers[c]){b=1E4;e=null;for(var f=this.positionAbs[this.containers[c].floating?"left":"top"],g=this.items.length-1;g>=0;g--)if(d.ui.contains(this.containers[c].element[0],this.items[g].item[0])){var h=this.items[g][this.containers[c].floating?"left":"top"];if(Math.abs(h-
-f)<b){b=Math.abs(h-f);e=this.items[g]}}if(e||this.options.dropOnEmpty){this.currentContainer=this.containers[c];e?this._rearrange(a,e,null,true):this._rearrange(a,null,this.containers[c].element,true);this._trigger("change",a,this._uiHash());this.containers[c]._trigger("change",a,this._uiHash(this));this.options.placeholder.update(this.currentContainer,this.placeholder);this.containers[c]._trigger("over",a,this._uiHash(this));this.containers[c].containerCache.over=1}}},_createHelper:function(a){var b=
-this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a,this.currentItem])):b.helper=="clone"?this.currentItem.clone():this.currentItem;a.parents("body").length||d(b.appendTo!="parent"?b.appendTo:this.currentItem[0].parentNode)[0].appendChild(a[0]);if(a[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")};if(a[0].style.width==
-""||b.forceHelperSize)a.width(this.currentItem.width());if(a[0].style.height==""||b.forceHelperSize)a.height(this.currentItem.height());return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]||0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=
-this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a=
-{top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.currentItem.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else 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 a=this.options;if(a.containment=="parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,d(a.containment=="document"?
-document:window).width()-this.helperProportions.width-this.margins.left,(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)){var b=d(a.containment)[0];a=d(a.containment).offset();var c=d(b).css("overflow")!="hidden";this.containment=[a.left+(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0)-this.margins.left,a.top+(parseInt(d(b).css("borderTopWidth"),
-10)||0)+(parseInt(d(b).css("paddingTop"),10)||0)-this.margins.top,a.left+(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,a.top+(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(a,b){if(!b)b=
-this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(c[0].tagName);return{top:b.top+this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&
-this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(c[0].tagName);if(this.cssPosition=="relative"&&!(this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0]))this.offset.relative=this._getRelativeOffset();
-var f=a.pageX,g=a.pageY;if(this.originalPosition){if(this.containment){if(a.pageX-this.offset.click.left<this.containment[0])f=this.containment[0]+this.offset.click.left;if(a.pageY-this.offset.click.top<this.containment[1])g=this.containment[1]+this.offset.click.top;if(a.pageX-this.offset.click.left>this.containment[2])f=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-
-this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.top<this.containment[1]||g-this.offset.click.top>this.containment[3])?g:!(g-this.offset.click.top<this.containment[1])?g-b.grid[1]:g+b.grid[1]:g;f=this.originalPageX+Math.round((f-this.originalPageX)/b.grid[0])*b.grid[0];f=this.containment?!(f-this.offset.click.left<this.containment[0]||f-this.offset.click.left>this.containment[2])?f:!(f-this.offset.click.left<this.containment[0])?f-b.grid[0]:f+b.grid[0]:f}}return{top:g-
-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(d.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:c.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(d.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:c.scrollLeft())}},_rearrange:function(a,b,c,e){c?c[0].appendChild(this.placeholder[0]):b.item[0].parentNode.insertBefore(this.placeholder[0],
-this.direction=="down"?b.item[0]:b.item[0].nextSibling);this.counter=this.counter?++this.counter:1;var f=this,g=this.counter;window.setTimeout(function(){g==f.counter&&f.refreshPositions(!e)},0)},_clear:function(a,b){this.reverting=false;var c=[];!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem);this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var e in this._storedCSS)if(this._storedCSS[e]=="auto"||this._storedCSS[e]=="static")this._storedCSS[e]=
-"";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!b&&c.push(function(f){this._trigger("receive",f,this._uiHash(this.fromOutside))});if((this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!b)c.push(function(f){this._trigger("update",f,this._uiHash())});if(!d.ui.contains(this.element[0],this.currentItem[0])){b||c.push(function(f){this._trigger("remove",
-f,this._uiHash())});for(e=this.containers.length-1;e>=0;e--)if(d.ui.contains(this.containers[e].element[0],this.currentItem[0])&&!b){c.push(function(f){return function(g){f._trigger("receive",g,this._uiHash(this))}}.call(this,this.containers[e]));c.push(function(f){return function(g){f._trigger("update",g,this._uiHash(this))}}.call(this,this.containers[e]))}}for(e=this.containers.length-1;e>=0;e--){b||c.push(function(f){return function(g){f._trigger("deactivate",g,this._uiHash(this))}}.call(this,
-this.containers[e]));if(this.containers[e].containerCache.over){c.push(function(f){return function(g){f._trigger("out",g,this._uiHash(this))}}.call(this,this.containers[e]));this.containers[e].containerCache.over=0}}this._storedCursor&&d("body").css("cursor",this._storedCursor);this._storedOpacity&&this.helper.css("opacity",this._storedOpacity);if(this._storedZIndex)this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex);this.dragging=false;if(this.cancelHelperRemoval){if(!b){this._trigger("beforeStop",
-a,this._uiHash());for(e=0;e<c.length;e++)c[e].call(this,a);this._trigger("stop",a,this._uiHash())}return false}b||this._trigger("beforeStop",a,this._uiHash());this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.helper[0]!=this.currentItem[0]&&this.helper.remove();this.helper=null;if(!b){for(e=0;e<c.length;e++)c[e].call(this,a);this._trigger("stop",a,this._uiHash())}this.fromOutside=false;return true},_trigger:function(){d.Widget.prototype._trigger.apply(this,arguments)===false&&this.cancel()},
-_uiHash:function(a){var b=a||this;return{helper:b.helper,placeholder:b.placeholder||d([]),position:b.position,originalPosition:b.originalPosition,offset:b.positionAbs,item:b.currentItem,sender:a?a.element:null}}});d.extend(d.ui.sortable,{version:"1.8.14"})})(jQuery);
-;/*
- * jQuery UI Accordion 1.8.14
- *
- * 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
- *
- * Depends:
- *     jquery.ui.core.js
- *     jquery.ui.widget.js
- */
-(function(c){c.widget("ui.accordion",{options:{active:0,animated:"slide",autoHeight:true,clearStyle:false,collapsible:false,event:"click",fillSpace:false,header:"> li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var a=this,b=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix");
-a.headers=a.element.find(b.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){b.disabled||c(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){b.disabled||c(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){b.disabled||c(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){b.disabled||c(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");
-if(b.navigation){var d=a.element.find("a").filter(b.navigationFilter).eq(0);if(d.length){var h=d.closest(".ui-accordion-header");a.active=h.length?h:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||b.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion",
-function(f){return a._keydown(f)}).next().attr("role","tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);c.browser.safari||a.headers.find("a").attr("tabIndex",-1);b.event&&a.headers.bind(b.event.split(" ").join(".accordion ")+".accordion",function(f){a._clickHandler.call(a,f,this);f.preventDefault()})},_createIcons:function(){var a=
-this.options;if(a.icons){c("<span></span>").addClass("ui-icon "+a.icons.header).prependTo(this.headers);this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected);this.element.addClass("ui-accordion-icons")}},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled 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("tabIndex");
-this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var b=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");if(a.autoHeight||a.fillHeight)b.css("height","");return c.Widget.prototype.destroy.call(this)},_setOption:function(a,b){c.Widget.prototype._setOption.apply(this,arguments);a=="active"&&this.activate(b);if(a=="icons"){this._destroyIcons();
-b&&this._createIcons()}if(a=="disabled")this.headers.add(this.headers.next())[b?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!(this.options.disabled||a.altKey||a.ctrlKey)){var b=c.ui.keyCode,d=this.headers.length,h=this.headers.index(a.target),f=false;switch(a.keyCode){case b.RIGHT:case b.DOWN:f=this.headers[(h+1)%d];break;case b.LEFT:case b.UP:f=this.headers[(h-1+d)%d];break;case b.SPACE:case b.ENTER:this._clickHandler({target:a.target},a.target);
-a.preventDefault()}if(f){c(a.target).attr("tabIndex",-1);c(f).attr("tabIndex",0);f.focus();return false}return true}},resize:function(){var a=this.options,b;if(a.fillSpace){if(c.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}b=this.element.parent().height();c.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){b-=c(this).outerHeight(true)});this.headers.next().each(function(){c(this).height(Math.max(0,b-c(this).innerHeight()+
-c(this).height()))}).css("overflow","auto")}else if(a.autoHeight){b=0;this.headers.next().each(function(){b=Math.max(b,c(this).height("").height())}).height(b)}return this},activate:function(a){this.options.active=a;a=this._findActive(a)[0];this._clickHandler({target:a},a);return this},_findActive:function(a){return a?typeof a==="number"?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):a===false?c([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,b){var d=this.options;
-if(!d.disabled)if(a.target){a=c(a.currentTarget||b);b=a[0]===this.active[0];d.active=d.collapsible&&b?false:this.headers.index(a);if(!(this.running||!d.collapsible&&b)){var h=this.active;j=a.next();g=this.active.next();e={options:d,newHeader:b&&d.collapsible?c([]):a,oldHeader:this.active,newContent:b&&d.collapsible?c([]):j,oldContent:g};var f=this.headers.index(this.active[0])>this.headers.index(a[0]);this.active=b?c([]):a;this._toggle(j,g,e,b,f);h.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);
-if(!b){a.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected);a.next().addClass("ui-accordion-content-active")}}}else if(d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);this.active.next().addClass("ui-accordion-content-active");var g=this.active.next(),
-e={options:d,newHeader:c([]),oldHeader:d.active,newContent:c([]),oldContent:g},j=this.active=c([]);this._toggle(j,g,e)}},_toggle:function(a,b,d,h,f){var g=this,e=g.options;g.toShow=a;g.toHide=b;g.data=d;var j=function(){if(g)return g._completed.apply(g,arguments)};g._trigger("changestart",null,g.data);g.running=b.size()===0?a.size():b.size();if(e.animated){d={};d=e.collapsible&&h?{toShow:c([]),toHide:b,complete:j,down:f,autoHeight:e.autoHeight||e.fillSpace}:{toShow:a,toHide:b,complete:j,down:f,autoHeight:e.autoHeight||
-e.fillSpace};if(!e.proxied)e.proxied=e.animated;if(!e.proxiedDuration)e.proxiedDuration=e.duration;e.animated=c.isFunction(e.proxied)?e.proxied(d):e.proxied;e.duration=c.isFunction(e.proxiedDuration)?e.proxiedDuration(d):e.proxiedDuration;h=c.ui.accordion.animations;var i=e.duration,k=e.animated;if(k&&!h[k]&&!c.easing[k])k="slide";h[k]||(h[k]=function(l){this.slide(l,{easing:k,duration:i||700})});h[k](d)}else{if(e.collapsible&&h)a.toggle();else{b.hide();a.show()}j(true)}b.prev().attr({"aria-expanded":"false",
-"aria-selected":"false",tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;if(!this.running){this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""});this.toHide.removeClass("ui-accordion-content-active");if(this.toHide.length)this.toHide.parent()[0].className=this.toHide.parent()[0].className;this._trigger("change",null,this.data)}}});c.extend(c.ui.accordion,{version:"1.8.14",
-animations:{slide:function(a,b){a=c.extend({easing:"swing",duration:300},a,b);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),h=0,f={},g={},e;b=a.toShow;e=b[0].style.width;b.width(parseInt(b.parent().width(),10)-parseInt(b.css("paddingLeft"),10)-parseInt(b.css("paddingRight"),10)-(parseInt(b.css("borderLeftWidth"),10)||0)-(parseInt(b.css("borderRightWidth"),10)||0));c.each(["height","paddingTop","paddingBottom"],function(j,i){g[i]="hide";j=(""+c.css(a.toShow[0],i)).match(/^([\d+-.]+)(.*)$/);
-f[i]={value:j[1],unit:j[2]||"px"}});a.toShow.css({height:0,overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(g,{step:function(j,i){if(i.prop=="height")h=i.end-i.start===0?0:(i.now-i.start)/(i.end-i.start);a.toShow[0].style[i.prop]=h*f[i.prop].value+f[i.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:e,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide",
-paddingTop:"hide",paddingBottom:"hide"},a);else a.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1E3:200})}}})})(jQuery);
-;/*
- * jQuery UI Autocomplete 1.8.14
- *
- * 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
- *
- * Depends:
- *     jquery.ui.core.js
- *     jquery.ui.widget.js
- *     jquery.ui.position.js
- */
-(function(d){var e=0;d.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:false,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var a=this,b=this.element[0].ownerDocument,g;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(!(a.options.disabled||a.element.attr("readonly"))){g=
-false;var f=d.ui.keyCode;switch(c.keyCode){case f.PAGE_UP:a._move("previousPage",c);break;case f.PAGE_DOWN:a._move("nextPage",c);break;case f.UP:a._move("previous",c);c.preventDefault();break;case f.DOWN:a._move("next",c);c.preventDefault();break;case f.ENTER:case f.NUMPAD_ENTER:if(a.menu.active){g=true;c.preventDefault()}case f.TAB:if(!a.menu.active)return;a.menu.select(c);break;case f.ESCAPE:a.element.val(a.term);a.close(c);break;default:clearTimeout(a.searching);a.searching=setTimeout(function(){if(a.term!=
-a.element.val()){a.selectedItem=null;a.search(null,c)}},a.options.delay);break}}}).bind("keypress.autocomplete",function(c){if(g){g=false;c.preventDefault()}}).bind("focus.autocomplete",function(){if(!a.options.disabled){a.selectedItem=null;a.previous=a.element.val()}}).bind("blur.autocomplete",function(c){if(!a.options.disabled){clearTimeout(a.searching);a.closing=setTimeout(function(){a.close(c);a._change(c)},150)}});this._initSource();this.response=function(){return a._response.apply(a,arguments)};
-this.menu=d("<ul></ul>").addClass("ui-autocomplete").appendTo(d(this.options.appendTo||"body",b)[0]).mousedown(function(c){var f=a.menu.element[0];d(c.target).closest(".ui-menu-item").length||setTimeout(function(){d(document).one("mousedown",function(h){h.target!==a.element[0]&&h.target!==f&&!d.ui.contains(f,h.target)&&a.close()})},1);setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(c,f){f=f.item.data("item.autocomplete");false!==a._trigger("focus",c,{item:f})&&/^key/.test(c.originalEvent.type)&&
-a.element.val(f.value)},selected:function(c,f){var h=f.item.data("item.autocomplete"),i=a.previous;if(a.element[0]!==b.activeElement){a.element.focus();a.previous=i;setTimeout(function(){a.previous=i;a.selectedItem=h},1)}false!==a._trigger("select",c,{item:h})&&a.element.val(h.value);a.term=a.element.val();a.close(c);a.selectedItem=h},blur:function(){a.menu.element.is(":visible")&&a.element.val()!==a.term&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");
-d.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");this.menu.element.remove();d.Widget.prototype.destroy.call(this)},_setOption:function(a,b){d.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource();if(a==="appendTo")this.menu.element.appendTo(d(b||"body",this.element[0].ownerDocument)[0]);a==="disabled"&&
-b&&this.xhr&&this.xhr.abort()},_initSource:function(){var a=this,b,g;if(d.isArray(this.options.source)){b=this.options.source;this.source=function(c,f){f(d.ui.autocomplete.filter(b,c.term))}}else if(typeof this.options.source==="string"){g=this.options.source;this.source=function(c,f){a.xhr&&a.xhr.abort();a.xhr=d.ajax({url:g,data:c,dataType:"json",autocompleteRequest:++e,success:function(h){this.autocompleteRequest===e&&f(h)},error:function(){this.autocompleteRequest===e&&f([])}})}}else this.source=
-this.options.source},search:function(a,b){a=a!=null?a:this.element.val();this.term=this.element.val();if(a.length<this.options.minLength)return this.close(b);clearTimeout(this.closing);if(this._trigger("search",b)!==false)return this._search(a)},_search:function(a){this.pending++;this.element.addClass("ui-autocomplete-loading");this.source({term:a},this.response)},_response:function(a){if(!this.options.disabled&&a&&a.length){a=this._normalize(a);this._suggest(a);this._trigger("open")}else this.close();
-this.pending--;this.pending||this.element.removeClass("ui-autocomplete-loading")},close:function(a){clearTimeout(this.closing);if(this.menu.element.is(":visible")){this.menu.element.hide();this.menu.deactivate();this._trigger("close",a)}},_change:function(a){this.previous!==this.element.val()&&this._trigger("change",a,{item:this.selectedItem})},_normalize:function(a){if(a.length&&a[0].label&&a[0].value)return a;return d.map(a,function(b){if(typeof b==="string")return{label:b,value:b};return d.extend({label:b.label||
-b.value,value:b.value||b.label},b)})},_suggest:function(a){var b=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(b,a);this.menu.deactivate();this.menu.refresh();b.show();this._resizeMenu();b.position(d.extend({of:this.element},this.options.position));this.options.autoFocus&&this.menu.next(new d.Event("mouseover"))},_resizeMenu:function(){var a=this.menu.element;a.outerWidth(Math.max(a.width("").outerWidth(),this.element.outerWidth()))},_renderMenu:function(a,b){var g=this;
-d.each(b,function(c,f){g._renderItem(a,f)})},_renderItem:function(a,b){return d("<li></li>").data("item.autocomplete",b).append(d("<a></a>").text(b.label)).appendTo(a)},_move:function(a,b){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](b);else this.search(null,b)},widget:function(){return this.menu.element}});d.extend(d.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,
-"\\$&")},filter:function(a,b){var g=new RegExp(d.ui.autocomplete.escapeRegex(b),"i");return d.grep(a,function(c){return g.test(c.label||c.value||c)})}})})(jQuery);
-(function(d){d.widget("ui.menu",{_create:function(){var e=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(a){if(d(a.target).closest(".ui-menu-item a").length){a.preventDefault();e.select(a)}});this.refresh()},refresh:function(){var e=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex",
--1).mouseenter(function(a){e.activate(a,d(this).parent())}).mouseleave(function(){e.deactivate()})},activate:function(e,a){this.deactivate();if(this.hasScroll()){var b=a.offset().top-this.element.offset().top,g=this.element.scrollTop(),c=this.element.height();if(b<0)this.element.scrollTop(g+b);else b>=c&&this.element.scrollTop(g+b-c+a.height())}this.active=a.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",e,{item:a})},deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id");
-this._trigger("blur");this.active=null}},next:function(e){this.move("next",".ui-menu-item:first",e)},previous:function(e){this.move("prev",".ui-menu-item:last",e)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(e,a,b){if(this.active){e=this.active[e+"All"](".ui-menu-item").eq(0);e.length?this.activate(b,e):this.activate(b,this.element.children(a))}else this.activate(b,
-this.element.children(a))},nextPage:function(e){if(this.hasScroll())if(!this.active||this.last())this.activate(e,this.element.children(".ui-menu-item:first"));else{var a=this.active.offset().top,b=this.element.height(),g=this.element.children(".ui-menu-item").filter(function(){var c=d(this).offset().top-a-b+d(this).height();return c<10&&c>-10});g.length||(g=this.element.children(".ui-menu-item:last"));this.activate(e,g)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active||
-this.last()?":first":":last"))},previousPage:function(e){if(this.hasScroll())if(!this.active||this.first())this.activate(e,this.element.children(".ui-menu-item:last"));else{var a=this.active.offset().top,b=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var g=d(this).offset().top-a+b-d(this).height();return g<10&&g>-10});result.length||(result=this.element.children(".ui-menu-item:first"));this.activate(e,result)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active||
-this.first()?":last":":first"))},hasScroll:function(){return this.element.height()<this.element[d.fn.prop?"prop":"attr"]("scrollHeight")},select:function(e){this._trigger("selected",e,{item:this.active})}})})(jQuery);
-;/*
- * jQuery UI Button 1.8.14
- *
- * 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
- *
- * Depends:
- *     jquery.ui.core.js
- *     jquery.ui.widget.js
- */
-(function(b){var h,i,j,g,l=function(){var a=b(this).find(":ui-button");setTimeout(function(){a.button("refresh")},1)},k=function(a){var c=a.name,e=a.form,f=b([]);if(c)f=e?b(e).find("[name='"+c+"']"):b("[name='"+c+"']",a.ownerDocument).filter(function(){return!this.form});return f};b.widget("ui.button",{options:{disabled:null,text:true,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset.button").bind("reset.button",l);if(typeof this.options.disabled!==
-"boolean")this.options.disabled=this.element.attr("disabled");this._determineButtonType();this.hasTitle=!!this.buttonElement.attr("title");var a=this,c=this.options,e=this.type==="checkbox"||this.type==="radio",f="ui-state-hover"+(!e?" ui-state-active":"");if(c.label===null)c.label=this.buttonElement.html();if(this.element.is(":disabled"))c.disabled=true;this.buttonElement.addClass("ui-button ui-widget ui-state-default ui-corner-all").attr("role","button").bind("mouseenter.button",function(){if(!c.disabled){b(this).addClass("ui-state-hover");
-this===h&&b(this).addClass("ui-state-active")}}).bind("mouseleave.button",function(){c.disabled||b(this).removeClass(f)}).bind("click.button",function(d){if(c.disabled){d.preventDefault();d.stopImmediatePropagation()}});this.element.bind("focus.button",function(){a.buttonElement.addClass("ui-state-focus")}).bind("blur.button",function(){a.buttonElement.removeClass("ui-state-focus")});if(e){this.element.bind("change.button",function(){g||a.refresh()});this.buttonElement.bind("mousedown.button",function(d){if(!c.disabled){g=
-false;i=d.pageX;j=d.pageY}}).bind("mouseup.button",function(d){if(!c.disabled)if(i!==d.pageX||j!==d.pageY)g=true})}if(this.type==="checkbox")this.buttonElement.bind("click.button",function(){if(c.disabled||g)return false;b(this).toggleClass("ui-state-active");a.buttonElement.attr("aria-pressed",a.element[0].checked)});else if(this.type==="radio")this.buttonElement.bind("click.button",function(){if(c.disabled||g)return false;b(this).addClass("ui-state-active");a.buttonElement.attr("aria-pressed",true);
-var d=a.element[0];k(d).not(d).map(function(){return b(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed",false)});else{this.buttonElement.bind("mousedown.button",function(){if(c.disabled)return false;b(this).addClass("ui-state-active");h=this;b(document).one("mouseup",function(){h=null})}).bind("mouseup.button",function(){if(c.disabled)return false;b(this).removeClass("ui-state-active")}).bind("keydown.button",function(d){if(c.disabled)return false;if(d.keyCode==b.ui.keyCode.SPACE||
-d.keyCode==b.ui.keyCode.ENTER)b(this).addClass("ui-state-active")}).bind("keyup.button",function(){b(this).removeClass("ui-state-active")});this.buttonElement.is("a")&&this.buttonElement.keyup(function(d){d.keyCode===b.ui.keyCode.SPACE&&b(this).click()})}this._setOption("disabled",c.disabled);this._resetButton()},_determineButtonType:function(){this.type=this.element.is(":checkbox")?"checkbox":this.element.is(":radio")?"radio":this.element.is("input")?"input":"button";if(this.type==="checkbox"||this.type===
-"radio"){var a=this.element.parents().filter(":last"),c="label[for="+this.element.attr("id")+"]";this.buttonElement=a.find(c);if(!this.buttonElement.length){a=a.length?a.siblings():this.element.siblings();this.buttonElement=a.filter(c);if(!this.buttonElement.length)this.buttonElement=a.find(c)}this.element.addClass("ui-helper-hidden-accessible");(a=this.element.is(":checked"))&&this.buttonElement.addClass("ui-state-active");this.buttonElement.attr("aria-pressed",a)}else this.buttonElement=this.element},
-widget:function(){return this.buttonElement},destroy:function(){this.element.removeClass("ui-helper-hidden-accessible");this.buttonElement.removeClass("ui-button ui-widget ui-state-default ui-corner-all ui-state-hover ui-state-active  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").removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html());this.hasTitle||this.buttonElement.removeAttr("title");
-b.Widget.prototype.destroy.call(this)},_setOption:function(a,c){b.Widget.prototype._setOption.apply(this,arguments);if(a==="disabled")c?this.element.attr("disabled",true):this.element.removeAttr("disabled");else this._resetButton()},refresh:function(){var a=this.element.is(":disabled");a!==this.options.disabled&&this._setOption("disabled",a);if(this.type==="radio")k(this.element[0]).each(function(){b(this).is(":checked")?b(this).button("widget").addClass("ui-state-active").attr("aria-pressed",true):
-b(this).button("widget").removeClass("ui-state-active").attr("aria-pressed",false)});else if(this.type==="checkbox")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(this.type==="input")this.options.label&&this.element.val(this.options.label);else{var a=this.buttonElement.removeClass("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"),
-c=b("<span></span>").addClass("ui-button-text").html(this.options.label).appendTo(a.empty()).text(),e=this.options.icons,f=e.primary&&e.secondary,d=[];if(e.primary||e.secondary){if(this.options.text)d.push("ui-button-text-icon"+(f?"s":e.primary?"-primary":"-secondary"));e.primary&&a.prepend("<span class='ui-button-icon-primary ui-icon "+e.primary+"'></span>");e.secondary&&a.append("<span class='ui-button-icon-secondary ui-icon "+e.secondary+"'></span>");if(!this.options.text){d.push(f?"ui-button-icons-only":
-"ui-button-icon-only");this.hasTitle||a.attr("title",c)}}else d.push("ui-button-text-only");a.addClass(d.join(" "))}}});b.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(a,c){a==="disabled"&&this.buttons.button("option",a,c);b.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){var a=this.element.css("direction")===
-"ltr";this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(a?"ui-corner-left":"ui-corner-right").end().filter(":last").addClass(a?"ui-corner-right":"ui-corner-left").end().end()},destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");
-b.Widget.prototype.destroy.call(this)}})})(jQuery);
-;/*
- * jQuery UI Dialog 1.8.14
- *
- * 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
- *
- * Depends:
- *     jquery.ui.core.js
- *     jquery.ui.widget.js
- *  jquery.ui.button.js
- *     jquery.ui.draggable.js
- *     jquery.ui.mouse.js
- *     jquery.ui.position.js
- *     jquery.ui.resizable.js
- */
-(function(c,l){var m={buttons:true,height:true,maxHeight:true,maxWidth:true,minHeight:true,minWidth:true,width:true},n={maxHeight:true,maxWidth:true,minHeight:true,minWidth:true},o=c.attrFn||{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true,click:true};c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,
-position:{my:"center",at:"center",collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&&c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");if(typeof this.originalTitle!=="string")this.originalTitle="";this.options.title=this.options.title||this.originalTitle;var a=this,b=a.options,d=b.title||"&#160;",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("<div></div>")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+
-b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),
-h=c('<a href="#"></a>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("<span></span>")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("<span></span>").addClass("ui-dialog-title").attr("id",
-e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");
-a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d,e;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!==
-b.uiDialog[0]){e=c(this).css("z-index");isNaN(e)||(d=Math.max(d,e))}});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=
-1;d.uiDialog.css("z-index",c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target===
-f[0]&&e.shiftKey){g.focus(1);return false}}});c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._isOpen=true;a._trigger("open");return a}},_createButtons:function(a){var b=this,d=false,e=c("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("<div></div>").addClass("ui-dialog-buttonset").appendTo(e);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,
-function(){return!(d=true)});if(d){c.each(a,function(f,h){h=c.isFunction(h)?{click:h,text:f}:h;var i=c('<button type="button"></button>').click(function(){h.click.apply(b.element[0],arguments)}).appendTo(g);c.each(h,function(j,k){if(j!=="click")j in o?i[j](k):i.attr(j,k)});c.fn.button&&i.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",
-handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition,
-originalSize:f.originalSize,position:f.position,size:f.size}}a=a===l?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize",
-f,b(h))},stop:function(f,h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop",f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0],e;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):
-[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(g,f){if(+b[g]===b[g]){d[g]=b[g];b[g]=f}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(e=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(c.extend({of:window},a));e||this.uiDialog.hide()},_setOptions:function(a){var b=this,d={},e=false;c.each(a,function(g,f){b._setOption(g,f);
-if(g in m)e=true;if(g in n)d[g]=f});e&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",d)},_setOption:function(a,b){var d=this,e=d.uiDialog;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"):
-e.removeClass("ui-dialog-disabled");break;case "draggable":var g=e.is(":data(draggable)");g&&!b&&e.draggable("destroy");!g&&b&&d._makeDraggable();break;case "position":d._position(b);break;case "resizable":(g=e.is(":data(resizable)"))&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||"&#160;"));break}c.Widget.prototype._setOption.apply(d,arguments)},_size:function(){var a=
-this.options,b,d,e=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();d=Math.max(0,a.minHeight-b);if(a.height==="auto")if(c.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();a=this.element.css("height","auto").height();e||this.uiDialog.hide();this.element.height(Math.max(a,d))}else this.element.height(Math.max(a.height-
-b,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.14",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),
-create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){if(c(d.target).zIndex()<c.ui.dialog.overlay.maxZ)return false})},1);c(document).bind("keydown.dialog-overlay",function(d){if(a.options.closeOnEscape&&d.keyCode&&d.keyCode===c.ui.keyCode.ESCAPE){a.close(d);d.preventDefault()}});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var b=(this.oldInstances.pop()||c("<div></div>").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),
-height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){var b=c.inArray(a,this.instances);b!=-1&&this.oldInstances.push(this.instances.splice(b,1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var d=0;c.each(this.instances,function(){d=Math.max(d,this.css("z-index"))});this.maxZ=d},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);
-b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a<b?c(window).height()+"px":a+"px"}else return c(document).height()+"px"},width:function(){var a,b;if(c.browser.msie){a=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth);b=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth);return a<b?c(window).width()+"px":a+"px"}else return c(document).width()+"px"},resize:function(){var a=c([]);c.each(c.ui.dialog.overlay.instances,function(){a=
-a.add(this)});a.css({width:0,height:0}).css({width:c.ui.dialog.overlay.width(),height:c.ui.dialog.overlay.height()})}});c.extend(c.ui.dialog.overlay.prototype,{destroy:function(){c.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);
-;/*
- * jQuery UI Slider 1.8.14
- *
- * 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
- *
- * Depends:
- *     jquery.ui.core.js
- *     jquery.ui.mouse.js
- *     jquery.ui.widget.js
- */
-(function(d){d.widget("ui.slider",d.ui.mouse,{widgetEventPrefix:"slide",options:{animate:false,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null},_create:function(){var b=this,a=this.options,c=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),f=a.values&&a.values.length||1,e=[];this._mouseSliding=this._keySliding=false;this._animateOff=true;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=d([]);if(a.range){if(a.range===true){if(!a.values)a.values=[this._valueMin(),this._valueMin()];if(a.values.length&&a.values.length!==2)a.values=[a.values[0],a.values[0]]}this.range=d("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(a.range==="min"||a.range==="max"?" ui-slider-range-"+a.range:""))}for(var j=c.length;j<f;j+=1)e.push("<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>");
-this.handles=c.add(d(e.join("")).appendTo(b.element));this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(g){g.preventDefault()}).hover(function(){a.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(a.disabled)d(this).blur();else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(g){d(this).data("index.ui-slider-handle",
-g)});this.handles.keydown(function(g){var k=true,l=d(this).data("index.ui-slider-handle"),i,h,m;if(!b.options.disabled){switch(g.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:k=false;if(!b._keySliding){b._keySliding=true;d(this).addClass("ui-state-active");i=b._start(g,l);if(i===false)return}break}m=b.options.step;i=b.options.values&&b.options.values.length?
-(h=b.values(l)):(h=b.value());switch(g.keyCode){case d.ui.keyCode.HOME:h=b._valueMin();break;case d.ui.keyCode.END:h=b._valueMax();break;case d.ui.keyCode.PAGE_UP:h=b._trimAlignValue(i+(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:h=b._trimAlignValue(i-(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(i===b._valueMax())return;h=b._trimAlignValue(i+m);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(i===b._valueMin())return;h=b._trimAlignValue(i-
-m);break}b._slide(g,l,h);return k}}).keyup(function(g){var k=d(this).data("index.ui-slider-handle");if(b._keySliding){b._keySliding=false;b._stop(g,k);b._change(g,k);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},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").removeData("slider").unbind(".slider");this._mouseDestroy();
-return this},_mouseCapture:function(b){var a=this.options,c,f,e,j,g;if(a.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:b.pageX,y:b.pageY});f=this._valueMax()-this._valueMin()+1;j=this;this.handles.each(function(k){var l=Math.abs(c-j.values(k));if(f>l){f=l;e=d(this);g=k}});if(a.range===true&&this.values(1)===a.min){g+=1;e=d(this.handles[g])}if(this._start(b,g)===false)return false;
-this._mouseSliding=true;j._handleIndex=g;e.addClass("ui-state-active").focus();a=e.offset();this._clickOffset=!d(b.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:b.pageX-a.left-e.width()/2,top:b.pageY-a.top-e.height()/2-(parseInt(e.css("borderTopWidth"),10)||0)-(parseInt(e.css("borderBottomWidth"),10)||0)+(parseInt(e.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(b,g,c);return this._animateOff=true},_mouseStart:function(){return true},_mouseDrag:function(b){var a=
-this._normValueFromMouse({x:b.pageX,y:b.pageY});this._slide(b,this._handleIndex,a);return false},_mouseStop:function(b){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(b,this._handleIndex);this._change(b,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(b){var a;if(this.orientation==="horizontal"){a=
-this.elementSize.width;b=b.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{a=this.elementSize.height;b=b.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}a=b/a;if(a>1)a=1;if(a<0)a=0;if(this.orientation==="vertical")a=1-a;b=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+a*b)},_start:function(b,a){var c={handle:this.handles[a],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(a);
-c.values=this.values()}return this._trigger("start",b,c)},_slide:function(b,a,c){var f;if(this.options.values&&this.options.values.length){f=this.values(a?0:1);if(this.options.values.length===2&&this.options.range===true&&(a===0&&c>f||a===1&&c<f))c=f;if(c!==this.values(a)){f=this.values();f[a]=c;b=this._trigger("slide",b,{handle:this.handles[a],value:c,values:f});this.values(a?0:1);b!==false&&this.values(a,c,true)}}else if(c!==this.value()){b=this._trigger("slide",b,{handle:this.handles[a],value:c});
-b!==false&&this.value(c)}},_stop:function(b,a){var c={handle:this.handles[a],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(a);c.values=this.values()}this._trigger("stop",b,c)},_change:function(b,a){if(!this._keySliding&&!this._mouseSliding){var c={handle:this.handles[a],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(a);c.values=this.values()}this._trigger("change",b,c)}},value:function(b){if(arguments.length){this.options.value=
-this._trimAlignValue(b);this._refreshValue();this._change(null,0)}else return this._value()},values:function(b,a){var c,f,e;if(arguments.length>1){this.options.values[b]=this._trimAlignValue(a);this._refreshValue();this._change(null,b)}else if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;f=arguments[0];for(e=0;e<c.length;e+=1){c[e]=this._trimAlignValue(f[e]);this._change(null,e)}this._refreshValue()}else return this.options.values&&this.options.values.length?this._values(b):
-this.value();else return this._values()},_setOption:function(b,a){var c,f=0;if(d.isArray(this.options.values))f=this.options.values.length;d.Widget.prototype._setOption.apply(this,arguments);switch(b){case "disabled":if(a){this.handles.filter(".ui-state-focus").blur();this.handles.removeClass("ui-state-hover");this.handles.attr("disabled","disabled");this.element.addClass("ui-disabled")}else{this.handles.removeAttr("disabled");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=true;this._refreshValue();this._change(null,0);this._animateOff=false;break;case "values":this._animateOff=true;this._refreshValue();for(c=0;c<f;c+=1)this._change(null,c);this._animateOff=false;break}},_value:function(){var b=this.options.value;return b=this._trimAlignValue(b)},_values:function(b){var a,c;if(arguments.length){a=this.options.values[b];
-return a=this._trimAlignValue(a)}else{a=this.options.values.slice();for(c=0;c<a.length;c+=1)a[c]=this._trimAlignValue(a[c]);return a}},_trimAlignValue:function(b){if(b<=this._valueMin())return this._valueMin();if(b>=this._valueMax())return this._valueMax();var a=this.options.step>0?this.options.step:1,c=(b-this._valueMin())%a;alignValue=b-c;if(Math.abs(c)*2>=a)alignValue+=c>0?a:-a;return parseFloat(alignValue.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},
-_refreshValue:function(){var b=this.options.range,a=this.options,c=this,f=!this._animateOff?a.animate:false,e,j={},g,k,l,i;if(this.options.values&&this.options.values.length)this.handles.each(function(h){e=(c.values(h)-c._valueMin())/(c._valueMax()-c._valueMin())*100;j[c.orientation==="horizontal"?"left":"bottom"]=e+"%";d(this).stop(1,1)[f?"animate":"css"](j,a.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(h===0)c.range.stop(1,1)[f?"animate":"css"]({left:e+"%"},a.animate);
-if(h===1)c.range[f?"animate":"css"]({width:e-g+"%"},{queue:false,duration:a.animate})}else{if(h===0)c.range.stop(1,1)[f?"animate":"css"]({bottom:e+"%"},a.animate);if(h===1)c.range[f?"animate":"css"]({height:e-g+"%"},{queue:false,duration:a.animate})}g=e});else{k=this.value();l=this._valueMin();i=this._valueMax();e=i!==l?(k-l)/(i-l)*100:0;j[c.orientation==="horizontal"?"left":"bottom"]=e+"%";this.handle.stop(1,1)[f?"animate":"css"](j,a.animate);if(b==="min"&&this.orientation==="horizontal")this.range.stop(1,
-1)[f?"animate":"css"]({width:e+"%"},a.animate);if(b==="max"&&this.orientation==="horizontal")this.range[f?"animate":"css"]({width:100-e+"%"},{queue:false,duration:a.animate});if(b==="min"&&this.orientation==="vertical")this.range.stop(1,1)[f?"animate":"css"]({height:e+"%"},a.animate);if(b==="max"&&this.orientation==="vertical")this.range[f?"animate":"css"]({height:100-e+"%"},{queue:false,duration:a.animate})}}});d.extend(d.ui.slider,{version:"1.8.14"})})(jQuery);
-;/*
- * jQuery UI Tabs 1.8.14
- *
- * 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
- *
- * Depends:
- *     jquery.ui.core.js
- *     jquery.ui.widget.js
- */
-(function(d,p){function u(){return++v}function w(){return++x}var v=0,x=0;d.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"<div></div>",remove:null,select:null,show:null,spinner:"<em>Loading&#8230;</em>",tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},_create:function(){this._tabify(true)},_setOption:function(b,e){if(b=="selected")this.options.collapsible&&
-e==this.options.selected||this.select(e);else{this.options[b]=e;this._tabify()}},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+u()},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+w());return d.cookie.apply(null,[b].concat(d.makeArray(arguments)))},_ui:function(b,e){return{tab:b,panel:e,index:this.anchors.index(b)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b=
-d(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(b){function e(g,f){g.css("display","");!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}var a=this,c=this.options,h=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=d(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);this.anchors.each(function(g,f){var i=d(f).attr("href"),l=i.split("#")[0],q;if(l&&(l===location.toString().split("#")[0]||
-(q=d("base")[0])&&l===q.href)){i=f.hash;f.href=i}if(h.test(i))a.panels=a.panels.add(a.element.find(a._sanitizeSelector(i)));else if(i&&i!=="#"){d.data(f,"href.tabs",i);d.data(f,"load.tabs",i.replace(/#.*$/,""));i=a._tabId(f);f.href="#"+i;f=a.element.find("#"+i);if(!f.length){f=d(c.panelTemplate).attr("id",i).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else c.disabled.push(g)});if(b){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all");
-this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(c.selected===p){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){c.selected=g;return false}});if(typeof c.selected!=="number"&&c.cookie)c.selected=parseInt(a._cookie(),10);if(typeof c.selected!=="number"&&this.lis.filter(".ui-tabs-selected").length)c.selected=
-this.lis.index(this.lis.filter(".ui-tabs-selected"));c.selected=c.selected||(this.lis.length?0:-1)}else if(c.selected===null)c.selected=-1;c.selected=c.selected>=0&&this.anchors[c.selected]||c.selected<0?c.selected:0;c.disabled=d.unique(c.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(c.selected,c.disabled)!=-1&&c.disabled.splice(d.inArray(c.selected,c.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active");
-if(c.selected>=0&&this.anchors.length){a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash)).removeClass("ui-tabs-hide");this.lis.eq(c.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[c.selected],a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash))[0]))});this.load(c.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else c.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"));
-this.element[c.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");c.cookie&&this._cookie(c.selected,c.cookie);b=0;for(var j;j=this.lis[b];b++)d(j)[d.inArray(b,c.disabled)!=-1&&!d(j).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");c.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(c.event!=="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+
-g)};this.lis.bind("mouseover.tabs",function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(c.fx)if(d.isArray(c.fx)){m=c.fx[0];o=c.fx[1]}else m=o=c.fx;var r=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal",
-function(){e(f,o);a._trigger("show",null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},s=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")};
-this.anchors.bind(c.event+".tabs",function(){var g=this,f=d(g).closest("li"),i=a.panels.filter(":not(.ui-tabs-hide)"),l=a.element.find(a._sanitizeSelector(g.hash));if(f.hasClass("ui-tabs-selected")&&!c.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a.panels.filter(":animated").length||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}c.selected=a.anchors.index(this);a.abort();if(c.collapsible)if(f.hasClass("ui-tabs-selected")){c.selected=
--1;c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){s(g,i)}).dequeue("tabs");this.blur();return false}else if(!i.length){c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this));this.blur();return false}c.cookie&&a._cookie(c.selected,c.cookie);if(l.length){i.length&&a.element.queue("tabs",function(){s(g,i)});a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier.";
-d.browser.msie&&this.blur()});this.anchors.bind("click.tabs",function(){return false})},_getIndex:function(b){if(typeof b=="string")b=this.anchors.index(this.anchors.filter("[href$="+b+"]"));return b},destroy:function(){var b=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e=
-d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(c,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this,"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});b.cookie&&this._cookie(null,b.cookie);return this},add:function(b,
-e,a){if(a===p)a=this.anchors.length;var c=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,b).replace(/#\{label\}/g,e));b=!b.indexOf("#")?b.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var j=c.element.find("#"+b);j.length||(j=d(h.panelTemplate).attr("id",b).data("destroy.tabs",true));j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);j.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]);
-j.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");j.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){c._trigger("show",null,c._ui(c.anchors[0],c.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(b){b=this._getIndex(b);var e=this.options,a=this.lis.eq(b).remove(),c=this.panels.eq(b).remove();
-if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(b+(b+1<this.anchors.length?1:-1));e.disabled=d.map(d.grep(e.disabled,function(h){return h!=b}),function(h){return h>=b?--h:h});this._tabify();this._trigger("remove",null,this._ui(a.find("a")[0],c[0]));return this},enable:function(b){b=this._getIndex(b);var e=this.options;if(d.inArray(b,e.disabled)!=-1){this.lis.eq(b).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=b});this._trigger("enable",null,
-this._ui(this.anchors[b],this.panels[b]));return this}},disable:function(b){b=this._getIndex(b);var e=this.options;if(b!=e.selected){this.lis.eq(b).addClass("ui-state-disabled");e.disabled.push(b);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[b],this.panels[b]))}return this},select:function(b){b=this._getIndex(b);if(b==-1)if(this.options.collapsible&&this.options.selected!=-1)b=this.options.selected;else return this;this.anchors.eq(b).trigger(this.options.event+".tabs");return this},
-load:function(b){b=this._getIndex(b);var e=this,a=this.options,c=this.anchors.eq(b)[0],h=d.data(c,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(c,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(b).addClass("ui-state-processing");if(a.spinner){var j=d("span",c);j.data("label.tabs",j.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){e.element.find(e._sanitizeSelector(c.hash)).html(k);e._cleanup();a.cache&&d.data(c,
-"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.error(k,n,b,c)}catch(m){}}}));e.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this},
-url:function(b,e){this.anchors.eq(b).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.14"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(b,e){var a=this,c=this.options,h=a._rotate||(a._rotate=function(j){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=c.selected;a.select(++k<a.anchors.length?k:0)},b);j&&j.stopPropagation()});e=a._unrotate||(a._unrotate=!e?function(j){j.clientX&&
-a.rotate(null)}:function(){t=c.selected;h()});if(b){this.element.bind("tabsshow",h);this.anchors.bind(c.event+".tabs",e);h()}else{clearTimeout(a.rotation);this.element.unbind("tabsshow",h);this.anchors.unbind(c.event+".tabs",e);delete this._rotate;delete this._unrotate}return this}})})(jQuery);
-;/*
- * jQuery UI Datepicker 1.8.14
- *
- * 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
- *
- * Depends:
- *     jquery.ui.core.js
- */
-(function(d,C){function M(){this.debug=false;this._curInst=null;this._keyEvent=false;this._disabledInputs=[];this._inDialog=this._datepickerShowing=false;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:false,showMonthAfterYear:false,yearSuffix:""};this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:false,hideIfNoPrevNext:false,navigationAsDateFormat:false,gotoCurrent:false,changeMonth:false,changeYear:false,yearRange:"c-10:c+10",showOtherMonths:false,selectOtherMonths:false,showWeek:false,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:true,showButtonPanel:false,autoSize:false};d.extend(this._defaults,this.regional[""]);this.dpDiv=N(d('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}function N(a){return a.bind("mouseout",function(b){b=
-d(b.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");b.length&&b.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(b){b=d(b.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");if(!(d.datepicker._isDisabledDatepicker(J.inline?a.parent()[0]:J.input[0])||!b.length)){b.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");b.addClass("ui-state-hover");
-b.hasClass("ui-datepicker-prev")&&b.addClass("ui-datepicker-prev-hover");b.hasClass("ui-datepicker-next")&&b.addClass("ui-datepicker-next-hover")}})}function H(a,b){d.extend(a,b);for(var c in b)if(b[c]==null||b[c]==C)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.14"}});var A=(new Date).getTime(),J;d.extend(M.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){H(this._defaults,
-a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]=f}}}e=a.nodeName.toLowerCase();f=e=="div"||e=="span";if(!a.id){this.uuid+=1;a.id="dp"+this.uuid}var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,b){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1"),input:a,selectedDay:0,
-selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:N(d('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}},_connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!c.hasClass(this.markerClassName)){this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(e,f,h){b.settings[f]=
-h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&&b.append.remove();if(c){b.append=d('<span class="'+this._appendClass+'">'+c+"</span>");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c=="focus"||c=="both")a.focus(this._showDatepicker);if(c=="button"||c=="both"){c=
-this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("<img/>").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('<button type="button"></button>').addClass(this._triggerClass).html(f==""?c:d("<img/>").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker():d.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(a){if(this._get(a,
-"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var e=function(f){for(var h=0,i=0,g=0;g<f.length;g++)if(f[g].length>h){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a,c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=d(a);if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",
-function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b),true);this._updateDatepicker(b);this._updateAlternate(b);b.dpDiv.show()}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){this.uuid+=1;this._dialogInput=d('<input type="text" id="'+("dp"+this.uuid)+'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>');this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput);
-a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}H(a.settings,e||{});b=b&&b.constructor==Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left",
-this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,"datepicker");if(e=="input"){c.append.remove();c.trigger.remove();b.removeClass(this.markerClassName).unbind("focus",
-this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span"){b=
-b.children("."+this._inlineClass);b.children().removeClass("ui-state-disabled");b.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")}this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",
-cursor:"default"})}else if(e=="div"||e=="span"){b=b.children("."+this._inlineClass);b.children().addClass("ui-state-disabled");b.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled")}this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false;for(var b=0;b<this._disabledInputs.length;b++)if(this._disabledInputs[b]==a)return true;return false},
-_getInst:function(a){try{return d.data(a,"datepicker")}catch(b){throw"Missing instance data for this datepicker";}},_optionDatepicker:function(a,b,c){var e=this._getInst(a);if(arguments.length==2&&typeof b=="string")return b=="defaults"?d.extend({},d.datepicker._defaults):e?b=="all"?d.extend({},e.settings):this._get(e,b):null;var f=b||{};if(typeof b=="string"){f={};f[b]=c}if(e){this._curInst==e&&this._hideDatepicker();var h=this._getDateDatepicker(a,true),i=this._getMinMaxDate(e,"min"),g=this._getMinMaxDate(e,
-"max");H(e.settings,f);if(i!==null&&f.dateFormat!==C&&f.minDate===C)e.settings.minDate=this._formatDate(e,i);if(g!==null&&f.dateFormat!==C&&f.maxDate===C)e.settings.maxDate=this._formatDate(e,g);this._attachments(d(a),e);this._autoSize(e);this._setDate(e,h);this._updateAlternate(e);this._updateDatepicker(e)}},_changeDatepicker:function(a,b,c){this._optionDatepicker(a,b,c)},_refreshDatepicker:function(a){(a=this._getInst(a))&&this._updateDatepicker(a)},_setDateDatepicker:function(a,b){if(a=this._getInst(a)){this._setDate(a,
-b);this._updateDatepicker(a);this._updateAlternate(a)}},_getDateDatepicker:function(a,b){(a=this._getInst(a))&&!a.inline&&this._setDateFromField(a,b);return a?this._getDate(a):null},_doKeyDown:function(a){var b=d.datepicker._getInst(a.target),c=true,e=b.dpDiv.is(".ui-datepicker-rtl");b._keyEvent=true;if(d.datepicker._datepickerShowing)switch(a.keyCode){case 9:d.datepicker._hideDatepicker();c=false;break;case 13:c=d("td."+d.datepicker._dayOverClass+":not(."+d.datepicker._currentClass+")",b.dpDiv);
-c[0]?d.datepicker._selectDay(a.target,b.selectedMonth,b.selectedYear,c[0]):d.datepicker._hideDatepicker();return false;case 27:d.datepicker._hideDatepicker();break;case 33:d.datepicker._adjustDate(a.target,a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 34:d.datepicker._adjustDate(a.target,a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,"stepMonths"),"M");break;case 35:if(a.ctrlKey||a.metaKey)d.datepicker._clearDate(a.target);
-c=a.ctrlKey||a.metaKey;break;case 36:if(a.ctrlKey||a.metaKey)d.datepicker._gotoToday(a.target);c=a.ctrlKey||a.metaKey;break;case 37:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,e?+1:-1,"D");c=a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 38:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,-7,"D");c=a.ctrlKey||a.metaKey;break;case 39:if(a.ctrlKey||
-a.metaKey)d.datepicker._adjustDate(a.target,e?-1:+1,"D");c=a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,"stepMonths"),"M");break;case 40:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,+7,"D");c=a.ctrlKey||a.metaKey;break;default:c=false}else if(a.keyCode==36&&a.ctrlKey)d.datepicker._showDatepicker(this);else c=false;if(c){a.preventDefault();a.stopPropagation()}},_doKeyPress:function(a){var b=
-d.datepicker._getInst(a.target);if(d.datepicker._get(b,"constrainInput")){b=d.datepicker._possibleChars(d.datepicker._get(b,"dateFormat"));var c=String.fromCharCode(a.charCode==C?a.keyCode:a.charCode);return a.ctrlKey||a.metaKey||c<" "||!b||b.indexOf(c)>-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a);
-d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true},_showDatepicker:function(a){a=a.target||a;if(a.nodeName.toLowerCase()!="input")a=d("input",a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a);if(d.datepicker._curInst&&d.datepicker._curInst!=b){d.datepicker._datepickerShowing&&d.datepicker._triggerOnClose(d.datepicker._curInst);d.datepicker._curInst.dpDiv.stop(true,true)}var c=
-d.datepicker._get(b,"beforeShow");H(b.settings,c?c.apply(a,[a,b]):{});b.lastVal=null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value="";if(!d.datepicker._pos){d.datepicker._pos=d.datepicker._findPos(a);d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-=document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c=
-{left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=null;b.dpDiv.empty();b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b);c=d.datepicker._checkOffset(b,c,e);b.dpDiv.css({position:d.datepicker._inDialog&&d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim");var f=d.datepicker._get(b,"duration"),h=function(){var i=b.dpDiv.find("iframe.ui-datepicker-cover");
-if(i.length){var g=d.datepicker._getBorders(b.dpDiv);i.css({left:-g[0],top:-g[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex(d(a).zIndex()+1);d.datepicker._datepickerShowing=true;d.effects&&d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f,h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst=b}}},_updateDatepicker:function(a){this.maxRows=4;var b=d.datepicker._getBorders(a.dpDiv);
-J=a;a.dpDiv.empty().append(this._generateHTML(a));var c=a.dpDiv.find("iframe.ui-datepicker-cover");c.length&&c.css({left:-b[0],top:-b[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()});a.dpDiv.find("."+this._dayOverClass+" a").mouseover();b=this._getNumberOfMonths(a);c=b[1];a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");c>1&&a.dpDiv.addClass("ui-datepicker-multi-"+c).css("width",17*c+"em");a.dpDiv[(b[0]!=1||b[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");
-a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var e=a.yearshtml;setTimeout(function(){e===a.yearshtml&&a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml);e=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]||
-c};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(),h=a.input?a.input.outerWidth():0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(),j=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+
-i?d(document).scrollTop():0;b.left-=Math.min(b.left,b.left+e>g&&g>e?Math.abs(b.left+e-g):0);b.top-=Math.min(b.top,b.top+f>j&&j>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b=this._get(this._getInst(a),"isRTL");a&&(a.type=="hidden"||a.nodeType!=1||d.expr.filters.hidden(a));)a=a[b?"previousSibling":"nextSibling"];a=d(a).offset();return[a.left,a.top]},_triggerOnClose:function(a){var b=this._get(a,"onClose");if(b)b.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a])},_hideDatepicker:function(a){var b=
-this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b);this._curInst=null};d.effects&&d.effects[a]?b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"?"fadeOut":"hide"](a?c:null,e);a||e();d.datepicker._triggerOnClose(b);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",
-left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(a){if(d.datepicker._curInst){a=d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&&!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&&
-d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a=d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth;b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth=
-b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e._selectingMonthYear=false;e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var b=this._getInst(d(a)[0]);b.input&&b._selectingMonthYear&&setTimeout(function(){b.input.focus()},0);b._selectingMonthYear=
-!b._selectingMonthYear},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay=d("a",e).html();f.selectedMonth=f.currentMonth=b;f.selectedYear=f.currentYear=c;this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){a=d(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a);
-a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a);else{this._hideDatepicker();this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.input.focus();this._lastInput=null}},_updateAlternate:function(a){var b=this._get(a,"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a));
-d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b=a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?b.toString():b+"";if(b=="")return null;var e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;e=typeof e!="string"?e:(new Date).getFullYear()%
-100+parseInt(e,10);for(var f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,j=c=-1,l=-1,u=-1,k=false,o=function(p){(p=B+1<a.length&&a.charAt(B+1)==p)&&B++;return p},m=function(p){var D=o(p);p=new RegExp("^\\d{1,"+(p=="@"?14:p=="!"?20:p=="y"&&D?4:p=="o"?3:2)+"}");p=b.substring(q).match(p);if(!p)throw"Missing number at position "+q;q+=
-p[0].length;return parseInt(p[0],10)},n=function(p,D,K){p=d.map(o(p)?K:D,function(w,x){return[[x,w]]}).sort(function(w,x){return-(w[1].length-x[1].length)});var E=-1;d.each(p,function(w,x){w=x[1];if(b.substr(q,w.length).toLowerCase()==w.toLowerCase()){E=x[0];q+=w.length;return false}});if(E!=-1)return E+1;else throw"Unknown name at position "+q;},s=function(){if(b.charAt(q)!=a.charAt(B))throw"Unexpected literal at position "+q;q++},q=0,B=0;B<a.length;B++)if(k)if(a.charAt(B)=="'"&&!o("'"))k=false;
-else s();else switch(a.charAt(B)){case "d":l=m("d");break;case "D":n("D",f,h);break;case "o":u=m("o");break;case "m":j=m("m");break;case "M":j=n("M",i,g);break;case "y":c=m("y");break;case "@":var v=new Date(m("@"));c=v.getFullYear();j=v.getMonth()+1;l=v.getDate();break;case "!":v=new Date((m("!")-this._ticksTo1970)/1E4);c=v.getFullYear();j=v.getMonth()+1;l=v.getDate();break;case "'":if(o("'"))s();else k=true;break;default:s()}if(q<b.length)throw"Extra/unparsed characters found in date: "+b.substring(q);
-if(c==-1)c=(new Date).getFullYear();else if(c<100)c+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c<=e?0:-100);if(u>-1){j=1;l=u;do{e=this._getDaysInMonth(c,j-1);if(l<=e)break;j++;l-=e}while(1)}v=this._daylightSavingAdjust(new Date(c,j-1,l));if(v.getFullYear()!=c||v.getMonth()+1!=j||v.getDate()!=l)throw"Invalid date";return v},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:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1E7,formatDate:function(a,b,c){if(!b)return"";var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames:null)||this._defaults.monthNames;var i=function(o){(o=k+1<a.length&&a.charAt(k+1)==o)&&k++;return o},g=function(o,m,n){m=""+m;if(i(o))for(;m.length<
-n;)m="0"+m;return m},j=function(o,m,n,s){return i(o)?s[m]:n[m]},l="",u=false;if(b)for(var k=0;k<a.length;k++)if(u)if(a.charAt(k)=="'"&&!i("'"))u=false;else l+=a.charAt(k);else switch(a.charAt(k)){case "d":l+=g("d",b.getDate(),2);break;case "D":l+=j("D",b.getDay(),e,f);break;case "o":l+=g("o",Math.round(((new Date(b.getFullYear(),b.getMonth(),b.getDate())).getTime()-(new Date(b.getFullYear(),0,0)).getTime())/864E5),3);break;case "m":l+=g("m",b.getMonth()+1,2);break;case "M":l+=j("M",b.getMonth(),h,
-c);break;case "y":l+=i("y")?b.getFullYear():(b.getYear()%100<10?"0":"")+b.getYear()%100;break;case "@":l+=b.getTime();break;case "!":l+=b.getTime()*1E4+this._ticksTo1970;break;case "'":if(i("'"))l+="'";else u=true;break;default:l+=a.charAt(k)}return l},_possibleChars:function(a){for(var b="",c=false,e=function(h){(h=f+1<a.length&&a.charAt(f+1)==h)&&f++;return h},f=0;f<a.length;f++)if(c)if(a.charAt(f)=="'"&&!e("'"))c=false;else b+=a.charAt(f);else switch(a.charAt(f)){case "d":case "m":case "y":case "@":b+=
-"0123456789";break;case "D":case "M":return null;case "'":if(e("'"))b+="'";else c=true;break;default:b+=a.charAt(f)}return b},_get:function(a,b){return a.settings[b]!==C?a.settings[b]:this._defaults[b]},_setDateFromField:function(a,b){if(a.input.val()!=a.lastVal){var c=this._get(a,"dateFormat"),e=a.lastVal=a.input?a.input.val():null,f,h;f=h=this._getDefaultDate(a);var i=this._getFormatConfig(a);try{f=this.parseDate(c,e,i)||h}catch(g){this.log(g);e=b?"":e}a.selectedDay=f.getDate();a.drawMonth=a.selectedMonth=
-f.getMonth();a.drawYear=a.selectedYear=f.getFullYear();a.currentDay=e?f.getDate():0;a.currentMonth=e?f.getMonth():0;a.currentYear=e?f.getFullYear():0;this._adjustInstDate(a)}},_getDefaultDate:function(a){return this._restrictMinMax(a,this._determineDate(a,this._get(a,"defaultDate"),new Date))},_determineDate:function(a,b,c){var e=function(h){var i=new Date;i.setDate(i.getDate()+h);return i},f=function(h){try{return d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),h,d.datepicker._getFormatConfig(a))}catch(i){}var g=
-(h.toLowerCase().match(/^c/)?d.datepicker._getDate(a):null)||new Date,j=g.getFullYear(),l=g.getMonth();g=g.getDate();for(var u=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,k=u.exec(h);k;){switch(k[2]||"d"){case "d":case "D":g+=parseInt(k[1],10);break;case "w":case "W":g+=parseInt(k[1],10)*7;break;case "m":case "M":l+=parseInt(k[1],10);g=Math.min(g,d.datepicker._getDaysInMonth(j,l));break;case "y":case "Y":j+=parseInt(k[1],10);g=Math.min(g,d.datepicker._getDaysInMonth(j,l));break}k=u.exec(h)}return new Date(j,
-l,g)};if(b=(b=b==null||b===""?c:typeof b=="string"?f(b):typeof b=="number"?isNaN(b)?c:e(b):new Date(b.getTime()))&&b.toString()=="Invalid Date"?c:b){b.setHours(0);b.setMinutes(0);b.setSeconds(0);b.setMilliseconds(0)}return this._daylightSavingAdjust(b)},_daylightSavingAdjust:function(a){if(!a)return null;a.setHours(a.getHours()>12?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=
-a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e?"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),
-b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),j=this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay?new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),k=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n=
-this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=k&&n<k?k:n;this._daylightSavingAdjust(new Date(m,g,1))>n;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-j,1)),this._getFormatConfig(a));n=this._canAdjustMonth(a,-1,m,g)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'+A+".datepicker._adjustDate('#"+a.id+"', -"+j+", 'M');\" title=\""+n+'"><span class="ui-icon ui-icon-circle-triangle-'+
-(c?"e":"w")+'">'+n+"</span></a>":f?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+n+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+n+"</span></a>";var s=this._get(a,"nextText");s=!h?s:this.formatDate(s,this._daylightSavingAdjust(new Date(m,g+j,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'+A+".datepicker._adjustDate('#"+a.id+"', +"+j+", 'M');\" title=\""+s+'"><span class="ui-icon ui-icon-circle-triangle-'+
-(c?"w":"e")+'">'+s+"</span></a>":f?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+s+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+s+"</span></a>";j=this._get(a,"currentText");s=this._get(a,"gotoCurrent")&&a.currentDay?u:b;j=!h?j:this.formatDate(j,s,this._getFormatConfig(a));h=!a.inline?'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'+A+'.datepicker._hideDatepicker();">'+this._get(a,
-"closeText")+"</button>":"";e=e?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(c?h:"")+(this._isInRange(a,s)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'+A+".datepicker._gotoToday('#"+a.id+"');\">"+j+"</button>":"")+(c?"":h)+"</div>":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;j=this._get(a,"showWeek");s=this._get(a,"dayNames");this._get(a,"dayNamesShort");var q=this._get(a,"dayNamesMin"),B=
-this._get(a,"monthNames"),v=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),D=this._get(a,"showOtherMonths"),K=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var E=this._getDefaultDate(a),w="",x=0;x<i[0];x++){var O="";this.maxRows=4;for(var G=0;G<i[1];G++){var P=this._daylightSavingAdjust(new Date(m,g,a.selectedDay)),t=" ui-corner-all",y="";if(l){y+='<div class="ui-datepicker-group';if(i[1]>1)switch(G){case 0:y+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right":
-"left");break;case i[1]-1:y+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:y+=" ui-datepicker-group-middle";t="";break}y+='">'}y+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+t+'">'+(/all|left/.test(t)&&x==0?c?f:n:"")+(/all|right/.test(t)&&x==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,k,o,x>0||G>0,B,v)+'</div><table class="ui-datepicker-calendar"><thead><tr>';var z=j?'<th class="ui-datepicker-week-col">'+this._get(a,"weekHeader")+"</th>":
-"";for(t=0;t<7;t++){var r=(t+h)%7;z+="<th"+((t+h+6)%7>=5?' class="ui-datepicker-week-end"':"")+'><span title="'+s[r]+'">'+q[r]+"</span></th>"}y+=z+"</tr></thead><tbody>";z=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay,z);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;z=Math.ceil((t+z)/7);this.maxRows=z=l?this.maxRows>z?this.maxRows:z:z;r=this._daylightSavingAdjust(new Date(m,g,1-t));for(var Q=0;Q<z;Q++){y+="<tr>";var R=!j?"":'<td class="ui-datepicker-week-col">'+
-this._get(a,"calculateWeek")(r)+"</td>";for(t=0;t<7;t++){var I=p?p.apply(a.input?a.input[0]:null,[r]):[true,""],F=r.getMonth()!=g,L=F&&!K||!I[0]||k&&r<k||o&&r>o;R+='<td class="'+((t+h+6)%7>=5?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+(r.getTime()==P.getTime()&&g==a.selectedMonth&&a._keyEvent||E.getTime()==r.getTime()&&E.getTime()==P.getTime()?" "+this._dayOverClass:"")+(L?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!D?"":" "+I[1]+(r.getTime()==u.getTime()?" "+
-this._currentClass:"")+(r.getTime()==b.getTime()?" ui-datepicker-today":""))+'"'+((!F||D)&&I[2]?' title="'+I[2]+'"':"")+(L?"":' onclick="DP_jQuery_'+A+".datepicker._selectDay('#"+a.id+"',"+r.getMonth()+","+r.getFullYear()+', this);return false;"')+">"+(F&&!D?"&#xa0;":L?'<span class="ui-state-default">'+r.getDate()+"</span>":'<a class="ui-state-default'+(r.getTime()==b.getTime()?" ui-state-highlight":"")+(r.getTime()==u.getTime()?" ui-state-active":"")+(F?" ui-priority-secondary":"")+'" href="#">'+
-r.getDate()+"</a>")+"</td>";r.setDate(r.getDate()+1);r=this._daylightSavingAdjust(r)}y+=R+"</tr>"}g++;if(g>11){g=0;m++}y+="</tbody></table>"+(l?"</div>"+(i[0]>0&&G==i[1]-1?'<div class="ui-datepicker-row-break"></div>':""):"");O+=y}w+=O}w+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':"");a._keyEvent=false;return w},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var j=this._get(a,"changeMonth"),
-l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),k='<div class="ui-datepicker-title">',o="";if(h||!j)o+='<span class="ui-datepicker-month">'+i[b]+"</span>";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='<select class="ui-datepicker-month" onchange="DP_jQuery_'+A+".datepicker._selectMonthYear('#"+a.id+"', this, 'M');\" onclick=\"DP_jQuery_"+A+".datepicker._clickMonthYear('#"+a.id+"');\">";for(var n=0;n<12;n++)if((!i||n>=e.getMonth())&&(!m||n<=f.getMonth()))o+='<option value="'+
-n+'"'+(n==b?' selected="selected"':"")+">"+g[n]+"</option>";o+="</select>"}u||(k+=o+(h||!(j&&l)?"&#xa0;":""));if(!a.yearshtml){a.yearshtml="";if(h||!l)k+='<span class="ui-datepicker-year">'+c+"</span>";else{g=this._get(a,"yearRange").split(":");var s=(new Date).getFullYear();i=function(q){q=q.match(/c[+-].*/)?c+parseInt(q.substring(1),10):q.match(/[+-].*/)?s+parseInt(q,10):parseInt(q,10);return isNaN(q)?s:q};b=i(g[0]);g=Math.max(b,i(g[1]||""));b=e?Math.max(b,e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()):
-g;for(a.yearshtml+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+A+".datepicker._selectMonthYear('#"+a.id+"', this, 'Y');\" onclick=\"DP_jQuery_"+A+".datepicker._clickMonthYear('#"+a.id+"');\">";b<=g;b++)a.yearshtml+='<option value="'+b+'"'+(b==c?' selected="selected"':"")+">"+b+"</option>";a.yearshtml+="</select>";k+=a.yearshtml;a.yearshtml=null}}k+=this._get(a,"yearSuffix");if(u)k+=(h||!(j&&l)?"&#xa0;":"")+o;k+="</div>";return k},_adjustInstDate:function(a,b,c){var e=a.drawYear+(c==
-"Y"?b:0),f=a.drawMonth+(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&b<c?c:b;return b=a&&b>a?a:b},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");
-if(b)b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a);
-c=this._daylightSavingAdjust(new Date(c,e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a,
-"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker=
-function(a){if(!this.length)return this;if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,
-[this[0]].concat(b));return this.each(function(){typeof a=="string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new M;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.14";window["DP_jQuery_"+A]=d})(jQuery);
-;/*
- * jQuery UI Progressbar 1.8.14
- *
- * 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
- *
- * Depends:
- *   jquery.ui.core.js
- *   jquery.ui.widget.js
- */
-(function(b,d){b.widget("ui.progressbar",{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=b("<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();b.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===d)return this._value();this._setOption("value",a);return this},_setOption:function(a,c){if(a==="value"){this.options.value=c;this._refreshValue();this._value()===this.options.max&&this._trigger("complete")}b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;if(typeof a!=="number")a=0;return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100*
-this._value()/this.options.max},_refreshValue:function(){var a=this.value(),c=this._percentage();if(this.oldValue!==a){this.oldValue=a;this._trigger("change")}this.valueDiv.toggle(a>this.min).toggleClass("ui-corner-right",a===this.options.max).width(c.toFixed(0)+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.14"})})(jQuery);
-;/*
- * jQuery UI Effects 1.8.14
- *
- * 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/Effects/
- */
-jQuery.effects||function(f,j){function m(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1],
-16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return n.transparent;return n[f.trim(c).toLowerCase()]}function s(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return m(b)}function o(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,
-a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function p(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in t||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function u(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function k(c,a,b,d){if(typeof c=="object"){d=
-a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}if(f.isFunction(b)){d=b;b=null}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:b in f.fx.speeds?f.fx.speeds[b]:f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}function l(c){if(!c||typeof c==="number"||f.fx.speeds[c])return true;if(typeof c==="string"&&!f.effects[c])return true;return false}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor",
-"borderTopColor","borderColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=s(b.elem,a);b.end=m(b.end);b.colorInit=true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var n={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,
-0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,
-211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},q=["add","remove","toggle"],t={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};f.effects.animateClass=function(c,a,b,
-d){if(f.isFunction(b)){d=b;b=null}return this.queue(function(){var e=f(this),g=e.attr("style")||" ",h=p(o.call(this)),r,v=e.attr("class");f.each(q,function(w,i){c[i]&&e[i+"Class"](c[i])});r=p(o.call(this));e.attr("class",v);e.animate(u(h,r),{queue:false,duration:a,easing:b,complete:function(){f.each(q,function(w,i){c[i]&&e[i+"Class"](c[i])});if(typeof e.attr("style")=="object"){e.attr("style").cssText="";e.attr("style").cssText=g}else e.attr("style",g);d&&d.apply(this,arguments);f.dequeue(this)}})})};
-f.fn.extend({_addClass:f.fn.addClass,addClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{add:c},a,b,d]):this._addClass(c)},_removeClass:f.fn.removeClass,removeClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{remove:c},a,b,d]):this._removeClass(c)},_toggleClass:f.fn.toggleClass,toggleClass:function(c,a,b,d,e){return typeof a=="boolean"||a===j?b?f.effects.animateClass.apply(this,[a?{add:c}:{remove:c},b,d,e]):this._toggleClass(c,a):f.effects.animateClass.apply(this,
-[{toggle:c},a,b,d])},switchClass:function(c,a,b,d,e){return f.effects.animateClass.apply(this,[{add:a,remove:c},b,d,e])}});f.extend(f.effects,{version:"1.8.14",save:function(c,a){for(var b=0;b<a.length;b++)a[b]!==null&&c.data("ec.storage."+a[b],c[0].style[a[b]])},restore:function(c,a){for(var b=0;b<a.length;b++)a[b]!==null&&c.css(a[b],c.data("ec.storage."+a[b]))},setMode:function(c,a){if(a=="toggle")a=c.is(":hidden")?"show":"hide";return a},getBaseline:function(c,a){var b;switch(c[0]){case "top":b=
-0;break;case "middle":b=0.5;break;case "bottom":b=1;break;default:b=c[0]/a.height}switch(c[1]){case "left":c=0;break;case "center":c=0.5;break;case "right":c=1;break;default:c=c[1]/a.width}return{x:c,y:b}},createWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent();var a={width:c.outerWidth(true),height:c.outerHeight(true),"float":c.css("float")},b=f("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});
-c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"});c.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c);return c},setTransition:function(c,
-a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=k.apply(this,arguments),b={options:a[1],duration:a[2],callback:a[3]};a=b.options.mode;var d=f.effects[c];if(f.fx.off||!d)return a?this[a](b.duration,b.callback):this.each(function(){b.callback&&b.callback.call(this)});return d.call(this,b)},_show:f.fn.show,show:function(c){if(l(c))return this._show.apply(this,arguments);else{var a=k.apply(this,arguments);
-a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(l(c))return this._hide.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(l(c)||typeof c==="boolean"||f.isFunction(c))return this.__toggle.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),b=[];f.each(["em","px","%",
-"pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,a,b,d,e){return d*
-((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,a,b,d,e){if((a/=
-e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==e)return b+d;if((a/=
-e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/
-h);return-(h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g))+b},easeOutElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);return h*Math.pow(2,-10*a)*Math.sin((a*e-c)*2*Math.PI/g)+d+b},easeInOutElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e/2)==2)return b+d;g||(g=e*0.3*1.5);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);if(a<1)return-0.5*
-h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)+b;return h*Math.pow(2,-10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)*0.5+d+b},easeInBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*(a/=e)*a*((g+1)*a-g)+b},easeOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*((a=a/e-1)*a*((g+1)*a+g)+1)+b},easeInOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;if((a/=e/2)<1)return d/2*a*a*(((g*=1.525)+1)*a-g)+b;return d/2*((a-=2)*a*(((g*=1.525)+1)*a+g)+2)+b},easeInBounce:function(c,a,b,d,e){return d-f.easing.easeOutBounce(c,
-e-a,0,d,e)+b},easeOutBounce:function(c,a,b,d,e){return(a/=e)<1/2.75?d*7.5625*a*a+b:a<2/2.75?d*(7.5625*(a-=1.5/2.75)*a+0.75)+b:a<2.5/2.75?d*(7.5625*(a-=2.25/2.75)*a+0.9375)+b:d*(7.5625*(a-=2.625/2.75)*a+0.984375)+b},easeInOutBounce:function(c,a,b,d,e){if(a<e/2)return f.easing.easeInBounce(c,a*2,0,d,e)*0.5+b;return f.easing.easeOutBounce(c,a*2-e,0,d,e)*0.5+d*0.5+b}})}(jQuery);
-;/*
- * jQuery UI Effects Blind 1.8.14
- *
- * 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/Effects/Blind
- *
- * Depends:
- *     jquery.effects.core.js
- */
-(function(b){b.effects.blind=function(c){return this.queue(function(){var a=b(this),g=["position","top","bottom","left","right"],f=b.effects.setMode(a,c.options.mode||"hide"),d=c.options.direction||"vertical";b.effects.save(a,g);a.show();var e=b.effects.createWrapper(a).css({overflow:"hidden"}),h=d=="vertical"?"height":"width";d=d=="vertical"?e.height():e.width();f=="show"&&e.css(h,0);var i={};i[h]=f=="show"?d:0;e.animate(i,c.duration,c.options.easing,function(){f=="hide"&&a.hide();b.effects.restore(a,
-g);b.effects.removeWrapper(a);c.callback&&c.callback.apply(a[0],arguments);a.dequeue()})})}})(jQuery);
-;/*
- * jQuery UI Effects Bounce 1.8.14
- *
- * 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/Effects/Bounce
- *
- * Depends:
- *     jquery.effects.core.js
- */
-(function(e){e.effects.bounce=function(b){return this.queue(function(){var a=e(this),l=["position","top","bottom","left","right"],h=e.effects.setMode(a,b.options.mode||"effect"),d=b.options.direction||"up",c=b.options.distance||20,m=b.options.times||5,i=b.duration||250;/show|hide/.test(h)&&l.push("opacity");e.effects.save(a,l);a.show();e.effects.createWrapper(a);var f=d=="up"||d=="down"?"top":"left";d=d=="up"||d=="left"?"pos":"neg";c=b.options.distance||(f=="top"?a.outerHeight({margin:true})/3:a.outerWidth({margin:true})/
-3);if(h=="show")a.css("opacity",0).css(f,d=="pos"?-c:c);if(h=="hide")c/=m*2;h!="hide"&&m--;if(h=="show"){var g={opacity:1};g[f]=(d=="pos"?"+=":"-=")+c;a.animate(g,i/2,b.options.easing);c/=2;m--}for(g=0;g<m;g++){var j={},k={};j[f]=(d=="pos"?"-=":"+=")+c;k[f]=(d=="pos"?"+=":"-=")+c;a.animate(j,i/2,b.options.easing).animate(k,i/2,b.options.easing);c=h=="hide"?c*2:c/2}if(h=="hide"){g={opacity:0};g[f]=(d=="pos"?"-=":"+=")+c;a.animate(g,i/2,b.options.easing,function(){a.hide();e.effects.restore(a,l);e.effects.removeWrapper(a);
-b.callback&&b.callback.apply(this,arguments)})}else{j={};k={};j[f]=(d=="pos"?"-=":"+=")+c;k[f]=(d=="pos"?"+=":"-=")+c;a.animate(j,i/2,b.options.easing).animate(k,i/2,b.options.easing,function(){e.effects.restore(a,l);e.effects.removeWrapper(a);b.callback&&b.callback.apply(this,arguments)})}a.queue("fx",function(){a.dequeue()});a.dequeue()})}})(jQuery);
-;/*
- * jQuery UI Effects Clip 1.8.14
- *
- * 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/Effects/Clip
- *
- * Depends:
- *     jquery.effects.core.js
- */
-(function(b){b.effects.clip=function(e){return this.queue(function(){var a=b(this),i=["position","top","bottom","left","right","height","width"],f=b.effects.setMode(a,e.options.mode||"hide"),c=e.options.direction||"vertical";b.effects.save(a,i);a.show();var d=b.effects.createWrapper(a).css({overflow:"hidden"});d=a[0].tagName=="IMG"?d:a;var g={size:c=="vertical"?"height":"width",position:c=="vertical"?"top":"left"};c=c=="vertical"?d.height():d.width();if(f=="show"){d.css(g.size,0);d.css(g.position,
-c/2)}var h={};h[g.size]=f=="show"?c:0;h[g.position]=f=="show"?0:c/2;d.animate(h,{queue:false,duration:e.duration,easing:e.options.easing,complete:function(){f=="hide"&&a.hide();b.effects.restore(a,i);b.effects.removeWrapper(a);e.callback&&e.callback.apply(a[0],arguments);a.dequeue()}})})}})(jQuery);
-;/*
- * jQuery UI Effects Drop 1.8.14
- *
- * 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/Effects/Drop
- *
- * Depends:
- *     jquery.effects.core.js
- */
-(function(c){c.effects.drop=function(d){return this.queue(function(){var a=c(this),h=["position","top","bottom","left","right","opacity"],e=c.effects.setMode(a,d.options.mode||"hide"),b=d.options.direction||"left";c.effects.save(a,h);a.show();c.effects.createWrapper(a);var f=b=="up"||b=="down"?"top":"left";b=b=="up"||b=="left"?"pos":"neg";var g=d.options.distance||(f=="top"?a.outerHeight({margin:true})/2:a.outerWidth({margin:true})/2);if(e=="show")a.css("opacity",0).css(f,b=="pos"?-g:g);var i={opacity:e==
-"show"?1:0};i[f]=(e=="show"?b=="pos"?"+=":"-=":b=="pos"?"-=":"+=")+g;a.animate(i,{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){e=="hide"&&a.hide();c.effects.restore(a,h);c.effects.removeWrapper(a);d.callback&&d.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
-;/*
- * jQuery UI Effects Explode 1.8.14
- *
- * 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/Effects/Explode
- *
- * Depends:
- *     jquery.effects.core.js
- */
-(function(j){j.effects.explode=function(a){return this.queue(function(){var c=a.options.pieces?Math.round(Math.sqrt(a.options.pieces)):3,d=a.options.pieces?Math.round(Math.sqrt(a.options.pieces)):3;a.options.mode=a.options.mode=="toggle"?j(this).is(":visible")?"hide":"show":a.options.mode;var b=j(this).show().css("visibility","hidden"),g=b.offset();g.top-=parseInt(b.css("marginTop"),10)||0;g.left-=parseInt(b.css("marginLeft"),10)||0;for(var h=b.outerWidth(true),i=b.outerHeight(true),e=0;e<c;e++)for(var f=
-0;f<d;f++)b.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-f*(h/d),top:-e*(i/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:h/d,height:i/c,left:g.left+f*(h/d)+(a.options.mode=="show"?(f-Math.floor(d/2))*(h/d):0),top:g.top+e*(i/c)+(a.options.mode=="show"?(e-Math.floor(c/2))*(i/c):0),opacity:a.options.mode=="show"?0:1}).animate({left:g.left+f*(h/d)+(a.options.mode=="show"?0:(f-Math.floor(d/2))*(h/d)),top:g.top+
-e*(i/c)+(a.options.mode=="show"?0:(e-Math.floor(c/2))*(i/c)),opacity:a.options.mode=="show"?1:0},a.duration||500);setTimeout(function(){a.options.mode=="show"?b.css({visibility:"visible"}):b.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(b[0]);b.dequeue();j("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery);
-;/*
- * jQuery UI Effects Fade 1.8.14
- *
- * 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/Effects/Fade
- *
- * Depends:
- *     jquery.effects.core.js
- */
-(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:false,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery);
-;/*
- * jQuery UI Effects Fold 1.8.14
- *
- * 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/Effects/Fold
- *
- * Depends:
- *     jquery.effects.core.js
- */
-(function(c){c.effects.fold=function(a){return this.queue(function(){var b=c(this),j=["position","top","bottom","left","right"],d=c.effects.setMode(b,a.options.mode||"hide"),g=a.options.size||15,h=!!a.options.horizFirst,k=a.duration?a.duration/2:c.fx.speeds._default/2;c.effects.save(b,j);b.show();var e=c.effects.createWrapper(b).css({overflow:"hidden"}),f=d=="show"!=h,l=f?["width","height"]:["height","width"];f=f?[e.width(),e.height()]:[e.height(),e.width()];var i=/([0-9]+)%/.exec(g);if(i)g=parseInt(i[1],
-10)/100*f[d=="hide"?0:1];if(d=="show")e.css(h?{height:0,width:g}:{height:g,width:0});h={};i={};h[l[0]]=d=="show"?f[0]:g;i[l[1]]=d=="show"?f[1]:0;e.animate(h,k,a.options.easing).animate(i,k,a.options.easing,function(){d=="hide"&&b.hide();c.effects.restore(b,j);c.effects.removeWrapper(b);a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery);
-;/*
- * jQuery UI Effects Highlight 1.8.14
- *
- * 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/Effects/Highlight
- *
- * Depends:
- *     jquery.effects.core.js
- */
-(function(b){b.effects.highlight=function(c){return this.queue(function(){var a=b(this),e=["backgroundImage","backgroundColor","opacity"],d=b.effects.setMode(a,c.options.mode||"show"),f={backgroundColor:a.css("backgroundColor")};if(d=="hide")f.opacity=0;b.effects.save(a,e);a.show().css({backgroundImage:"none",backgroundColor:c.options.color||"#ffff99"}).animate(f,{queue:false,duration:c.duration,easing:c.options.easing,complete:function(){d=="hide"&&a.hide();b.effects.restore(a,e);d=="show"&&!b.support.opacity&&
-this.style.removeAttribute("filter");c.callback&&c.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
-;/*
- * jQuery UI Effects Pulsate 1.8.14
- *
- * 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/Effects/Pulsate
- *
- * Depends:
- *     jquery.effects.core.js
- */
-(function(d){d.effects.pulsate=function(a){return this.queue(function(){var b=d(this),c=d.effects.setMode(b,a.options.mode||"show");times=(a.options.times||5)*2-1;duration=a.duration?a.duration/2:d.fx.speeds._default/2;isVisible=b.is(":visible");animateTo=0;if(!isVisible){b.css("opacity",0).show();animateTo=1}if(c=="hide"&&isVisible||c=="show"&&!isVisible)times--;for(c=0;c<times;c++){b.animate({opacity:animateTo},duration,a.options.easing);animateTo=(animateTo+1)%2}b.animate({opacity:animateTo},duration,
-a.options.easing,function(){animateTo==0&&b.hide();a.callback&&a.callback.apply(this,arguments)});b.queue("fx",function(){b.dequeue()}).dequeue()})}})(jQuery);
-;/*
- * jQuery UI Effects Scale 1.8.14
- *
- * 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/Effects/Scale
- *
- * Depends:
- *     jquery.effects.core.js
- */
-(function(c){c.effects.puff=function(b){return this.queue(function(){var a=c(this),e=c.effects.setMode(a,b.options.mode||"hide"),g=parseInt(b.options.percent,10)||150,h=g/100,i={height:a.height(),width:a.width()};c.extend(b.options,{fade:true,mode:e,percent:e=="hide"?g:100,from:e=="hide"?i:{height:i.height*h,width:i.width*h}});a.effect("scale",b.options,b.duration,b.callback);a.dequeue()})};c.effects.scale=function(b){return this.queue(function(){var a=c(this),e=c.extend(true,{},b.options),g=c.effects.setMode(a,
-b.options.mode||"effect"),h=parseInt(b.options.percent,10)||(parseInt(b.options.percent,10)==0?0:g=="hide"?0:100),i=b.options.direction||"both",f=b.options.origin;if(g!="effect"){e.origin=f||["middle","center"];e.restore=true}f={height:a.height(),width:a.width()};a.from=b.options.from||(g=="show"?{height:0,width:0}:f);h={y:i!="horizontal"?h/100:1,x:i!="vertical"?h/100:1};a.to={height:f.height*h.y,width:f.width*h.x};if(b.options.fade){if(g=="show"){a.from.opacity=0;a.to.opacity=1}if(g=="hide"){a.from.opacity=
-1;a.to.opacity=0}}e.from=a.from;e.to=a.to;e.mode=g;a.effect("size",e,b.duration,b.callback);a.dequeue()})};c.effects.size=function(b){return this.queue(function(){var a=c(this),e=["position","top","bottom","left","right","width","height","overflow","opacity"],g=["position","top","bottom","left","right","overflow","opacity"],h=["width","height","overflow"],i=["fontSize"],f=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],k=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],
-p=c.effects.setMode(a,b.options.mode||"effect"),n=b.options.restore||false,m=b.options.scale||"both",l=b.options.origin,j={height:a.height(),width:a.width()};a.from=b.options.from||j;a.to=b.options.to||j;if(l){l=c.effects.getBaseline(l,j);a.from.top=(j.height-a.from.height)*l.y;a.from.left=(j.width-a.from.width)*l.x;a.to.top=(j.height-a.to.height)*l.y;a.to.left=(j.width-a.to.width)*l.x}var d={from:{y:a.from.height/j.height,x:a.from.width/j.width},to:{y:a.to.height/j.height,x:a.to.width/j.width}};
-if(m=="box"||m=="both"){if(d.from.y!=d.to.y){e=e.concat(f);a.from=c.effects.setTransition(a,f,d.from.y,a.from);a.to=c.effects.setTransition(a,f,d.to.y,a.to)}if(d.from.x!=d.to.x){e=e.concat(k);a.from=c.effects.setTransition(a,k,d.from.x,a.from);a.to=c.effects.setTransition(a,k,d.to.x,a.to)}}if(m=="content"||m=="both")if(d.from.y!=d.to.y){e=e.concat(i);a.from=c.effects.setTransition(a,i,d.from.y,a.from);a.to=c.effects.setTransition(a,i,d.to.y,a.to)}c.effects.save(a,n?e:g);a.show();c.effects.createWrapper(a);
-a.css("overflow","hidden").css(a.from);if(m=="content"||m=="both"){f=f.concat(["marginTop","marginBottom"]).concat(i);k=k.concat(["marginLeft","marginRight"]);h=e.concat(f).concat(k);a.find("*[width]").each(function(){child=c(this);n&&c.effects.save(child,h);var o={height:child.height(),width:child.width()};child.from={height:o.height*d.from.y,width:o.width*d.from.x};child.to={height:o.height*d.to.y,width:o.width*d.to.x};if(d.from.y!=d.to.y){child.from=c.effects.setTransition(child,f,d.from.y,child.from);
-child.to=c.effects.setTransition(child,f,d.to.y,child.to)}if(d.from.x!=d.to.x){child.from=c.effects.setTransition(child,k,d.from.x,child.from);child.to=c.effects.setTransition(child,k,d.to.x,child.to)}child.css(child.from);child.animate(child.to,b.duration,b.options.easing,function(){n&&c.effects.restore(child,h)})})}a.animate(a.to,{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){a.to.opacity===0&&a.css("opacity",a.from.opacity);p=="hide"&&a.hide();c.effects.restore(a,
-n?e:g);c.effects.removeWrapper(a);b.callback&&b.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
-;/*
- * jQuery UI Effects Shake 1.8.14
- *
- * 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/Effects/Shake
- *
- * Depends:
- *     jquery.effects.core.js
- */
-(function(d){d.effects.shake=function(a){return this.queue(function(){var b=d(this),j=["position","top","bottom","left","right"];d.effects.setMode(b,a.options.mode||"effect");var c=a.options.direction||"left",e=a.options.distance||20,l=a.options.times||3,f=a.duration||a.options.duration||140;d.effects.save(b,j);b.show();d.effects.createWrapper(b);var g=c=="up"||c=="down"?"top":"left",h=c=="up"||c=="left"?"pos":"neg";c={};var i={},k={};c[g]=(h=="pos"?"-=":"+=")+e;i[g]=(h=="pos"?"+=":"-=")+e*2;k[g]=
-(h=="pos"?"-=":"+=")+e*2;b.animate(c,f,a.options.easing);for(e=1;e<l;e++)b.animate(i,f,a.options.easing).animate(k,f,a.options.easing);b.animate(i,f,a.options.easing).animate(c,f/2,a.options.easing,function(){d.effects.restore(b,j);d.effects.removeWrapper(b);a.callback&&a.callback.apply(this,arguments)});b.queue("fx",function(){b.dequeue()});b.dequeue()})}})(jQuery);
-;/*
- * jQuery UI Effects Slide 1.8.14
- *
- * 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/Effects/Slide
- *
- * Depends:
- *     jquery.effects.core.js
- */
-(function(c){c.effects.slide=function(d){return this.queue(function(){var a=c(this),h=["position","top","bottom","left","right"],f=c.effects.setMode(a,d.options.mode||"show"),b=d.options.direction||"left";c.effects.save(a,h);a.show();c.effects.createWrapper(a).css({overflow:"hidden"});var g=b=="up"||b=="down"?"top":"left";b=b=="up"||b=="left"?"pos":"neg";var e=d.options.distance||(g=="top"?a.outerHeight({margin:true}):a.outerWidth({margin:true}));if(f=="show")a.css(g,b=="pos"?isNaN(e)?"-"+e:-e:e);
-var i={};i[g]=(f=="show"?b=="pos"?"+=":"-=":b=="pos"?"-=":"+=")+e;a.animate(i,{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){f=="hide"&&a.hide();c.effects.restore(a,h);c.effects.removeWrapper(a);d.callback&&d.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
-;/*
- * jQuery UI Effects Transfer 1.8.14
- *
- * 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/Effects/Transfer
- *
- * Depends:
- *     jquery.effects.core.js
- */
-(function(e){e.effects.transfer=function(a){return this.queue(function(){var b=e(this),c=e(a.options.to),d=c.offset();c={top:d.top,left:d.left,height:c.innerHeight(),width:c.innerWidth()};d=b.offset();var f=e('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(a.options.className).css({top:d.top,left:d.left,height:b.innerHeight(),width:b.innerWidth(),position:"absolute"}).animate(c,a.duration,a.options.easing,function(){f.remove();a.callback&&a.callback.apply(b[0],arguments);
-b.dequeue()})})}})(jQuery);
-;
\ No newline at end of file
diff --git a/plugins/jqueryui/js/jquery-ui-1.8.18.custom.min.js b/plugins/jqueryui/js/jquery-ui-1.8.18.custom.min.js
new file mode 100755 (executable)
index 0000000..f00a62f
--- /dev/null
@@ -0,0 +1,356 @@
+/*!
+ * jQuery UI 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
+ */(function(a,b){function d(b){return!a(b).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b.parentNode,g=f.name,h;if(!b.href||!g||f.nodeName.toLowerCase()!=="map")return!1;h=a("img[usemap=#"+g+"]")[0];return!!h&&d(h)}return(/input|select|textarea|button|object/.test(e)?!b.disabled:"a"==e?b.href||c:c)&&d(b)}a.ui=a.ui||{};a.ui.version||(a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,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,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}}),a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(b,c){return typeof b=="number"?this.each(function(){var d=this;setTimeout(function(){a(d).focus(),c&&c.call(d)},b)}):this._focus.apply(this,arguments)},scrollParent:function(){var b;a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?b=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):b=this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!b.length?a(document):b},zIndex:function(c){if(c!==b)return this.css("zIndex",c);if(this.length){var d=a(this[0]),e,f;while(d.length&&d[0]!==document){e=d.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){f=parseInt(d.css("zIndex"),10);if(!isNaN(f)&&f!==0)return f}d=d.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),a.each(["Width","Height"],function(c,d){function h(b,c,d,f){a.each(e,function(){c-=parseFloat(a.curCSS(b,"padding"+this,!0))||0,d&&(c-=parseFloat(a.curCSS(b,"border"+this+"Width",!0))||0),f&&(c-=parseFloat(a.curCSS(b,"margin"+this,!0))||0)});return c}var e=d==="Width"?["Left","Right"]:["Top","Bottom"],f=d.toLowerCase(),g={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+d]=function(c){if(c===b)return g["inner"+d].call(this);return this.each(function(){a(this).css(f,h(this,c)+"px")})},a.fn["outer"+d]=function(b,c){if(typeof b!="number")return g["outer"+d].call(this,b);return this.each(function(){a(this).css(f,h(this,b,!0,c)+"px")})}}),a.extend(a.expr[":"],{data:function(b,c,d){return!!a.data(b,d[3])},focusable:function(b){return c(b,!isNaN(a.attr(b,"tabindex")))},tabbable:function(b){var d=a.attr(b,"tabindex"),e=isNaN(d);return(e||d>=0)&&c(b,!e)}}),a(function(){var b=document.body,c=b.appendChild(c=document.createElement("div"));c.offsetHeight,a.extend(c.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),a.support.minHeight=c.offsetHeight===100,a.support.selectstart="onselectstart"in c,b.removeChild(c).style.display="none"}),a.extend(a.ui,{plugin:{add:function(b,c,d){var e=a.ui[b].prototype;for(var f in d)e.plugins[f]=e.plugins[f]||[],e.plugins[f].push([c,d[f]])},call:function(a,b,c){var d=a.plugins[b];if(!!d&&!!a.element[0].parentNode)for(var e=0;e<d.length;e++)a.options[d[e][0]]&&d[e][1].apply(a.element,c)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(b,c){if(a(b).css("overflow")==="hidden")return!1;var d=c&&c==="left"?"scrollLeft":"scrollTop",e=!1;if(b[d]>0)return!0;b[d]=1,e=b[d]>0,b[d]=0;return e},isOverAxis:function(a,b,c){return a>b&&a<b+c},isOver:function(b,c,d,e,f,g){return a.ui.isOverAxis(b,d,f)&&a.ui.isOverAxis(c,e,g)}}))})(jQuery);/*!
+ * jQuery UI Widget 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/Widget
+ */(function(a,b){if(a.cleanData){var c=a.cleanData;a.cleanData=function(b){for(var d=0,e;(e=b[d])!=null;d++)try{a(e).triggerHandler("remove")}catch(f){}c(b)}}else{var d=a.fn.remove;a.fn.remove=function(b,c){return this.each(function(){c||(!b||a.filter(b,[this]).length)&&a("*",this).add([this]).each(function(){try{a(this).triggerHandler("remove")}catch(b){}});return d.call(a(this),b,c)})}}a.widget=function(b,c,d){var e=b.split(".")[0],f;b=b.split(".")[1],f=e+"-"+b,d||(d=c,c=a.Widget),a.expr[":"][f]=function(c){return!!a.data(c,b)},a[e]=a[e]||{},a[e][b]=function(a,b){arguments.length&&this._createWidget(a,b)};var g=new c;g.options=a.extend(!0,{},g.options),a[e][b].prototype=a.extend(!0,g,{namespace:e,widgetName:b,widgetEventPrefix:a[e][b].prototype.widgetEventPrefix||b,widgetBaseClass:f},d),a.widget.bridge(b,a[e][b])},a.widget.bridge=function(c,d){a.fn[c]=function(e){var f=typeof e=="string",g=Array.prototype.slice.call(arguments,1),h=this;e=!f&&g.length?a.extend.apply(null,[!0,e].concat(g)):e;if(f&&e.charAt(0)==="_")return h;f?this.each(function(){var d=a.data(this,c),f=d&&a.isFunction(d[e])?d[e].apply(d,g):d;if(f!==d&&f!==b){h=f;return!1}}):this.each(function(){var b=a.data(this,c);b?b.option(e||{})._init():a.data(this,c,new d(e,this))});return h}},a.Widget=function(a,b){arguments.length&&this._createWidget(a,b)},a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:!1},_createWidget:function(b,c){a.data(c,this.widgetName,this),this.element=a(c),this.options=a.extend(!0,{},this.options,this._getCreateOptions(),b);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()}),this._create(),this._trigger("create"),this._init()},_getCreateOptions:function(){return a.metadata&&a.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName),this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled "+"ui-state-disabled")},widget:function(){return this.element},option:function(c,d){var e=c;if(arguments.length===0)return a.extend({},this.options);if(typeof c=="string"){if(d===b)return this.options[c];e={},e[c]=d}this._setOptions(e);return this},_setOptions:function(b){var c=this;a.each(b,function(a,b){c._setOption(a,b)});return this},_setOption:function(a,b){this.options[a]=b,a==="disabled"&&this.widget()[b?"addClass":"removeClass"](this.widgetBaseClass+"-disabled"+" "+"ui-state-disabled").attr("aria-disabled",b);return this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_trigger:function(b,c,d){var e,f,g=this.options[b];d=d||{},c=a.Event(c),c.type=(b===this.widgetEventPrefix?b:this.widgetEventPrefix+b).toLowerCase(),c.target=this.element[0],f=c.originalEvent;if(f)for(e in f)e in c||(c[e]=f[e]);this.element.trigger(c,d);return!(a.isFunction(g)&&g.call(this.element[0],c,d)===!1||c.isDefaultPrevented())}}})(jQuery);/*!
+ * jQuery UI Mouse 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/Mouse
+ *
+ * Depends:
+ *     jquery.ui.widget.js
+ */(function(a,b){var c=!1;a(document).mouseup(function(a){c=!1}),a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var b=this;this.element.bind("mousedown."+this.widgetName,function(a){return b._mouseDown(a)}).bind("click."+this.widgetName,function(c){if(!0===a.data(c.target,b.widgetName+".preventClickEvent")){a.removeData(c.target,b.widgetName+".preventClickEvent"),c.stopImmediatePropagation();return!1}}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(b){if(!c){this._mouseStarted&&this._mouseUp(b),this._mouseDownEvent=b;var d=this,e=b.which==1,f=typeof this.options.cancel=="string"&&b.target.nodeName?a(b.target).closest(this.options.cancel).length:!1;if(!e||f||!this._mouseCapture(b))return!0;this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){d.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)){this._mouseStarted=this._mouseStart(b)!==!1;if(!this._mouseStarted){b.preventDefault();return!0}}!0===a.data(b.target,this.widgetName+".preventClickEvent")&&a.removeData(b.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(a){return d._mouseMove(a)},this._mouseUpDelegate=function(a){return d._mouseUp(a)},a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),b.preventDefault(),c=!0;return!0}},_mouseMove:function(b){if(a.browser.msie&&!(document.documentMode>=9)&&!b.button)return this._mouseUp(b);if(this._mouseStarted){this._mouseDrag(b);return b.preventDefault()}this._mouseDistanceMet(b)&&this._mouseDelayMet(b)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,b)!==!1,this._mouseStarted?this._mouseDrag(b):this._mouseUp(b));return!this._mouseStarted},_mouseUp:function(b){a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,b.target==this._mouseDownEvent.target&&a.data(b.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(b));return!1},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(a){return this.mouseDelayMet},_mouseStart:function(a){},_mouseDrag:function(a){},_mouseStop:function(a){},_mouseCapture:function(a){return!0}})})(jQuery);/*
+ * jQuery UI Position 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/Position
+ */(function(a,b){a.ui=a.ui||{};var c=/left|center|right/,d=/top|center|bottom/,e="center",f={},g=a.fn.position,h=a.fn.offset;a.fn.position=function(b){if(!b||!b.of)return g.apply(this,arguments);b=a.extend({},b);var h=a(b.of),i=h[0],j=(b.collision||"flip").split(" "),k=b.offset?b.offset.split(" "):[0,0],l,m,n;i.nodeType===9?(l=h.width(),m=h.height(),n={top:0,left:0}):i.setTimeout?(l=h.width(),m=h.height(),n={top:h.scrollTop(),left:h.scrollLeft()}):i.preventDefault?(b.at="left top",l=m=0,n={top:b.of.pageY,left:b.of.pageX}):(l=h.outerWidth(),m=h.outerHeight(),n=h.offset()),a.each(["my","at"],function(){var a=(b[this]||"").split(" ");a.length===1&&(a=c.test(a[0])?a.concat([e]):d.test(a[0])?[e].concat(a):[e,e]),a[0]=c.test(a[0])?a[0]:e,a[1]=d.test(a[1])?a[1]:e,b[this]=a}),j.length===1&&(j[1]=j[0]),k[0]=parseInt(k[0],10)||0,k.length===1&&(k[1]=k[0]),k[1]=parseInt(k[1],10)||0,b.at[0]==="right"?n.left+=l:b.at[0]===e&&(n.left+=l/2),b.at[1]==="bottom"?n.top+=m:b.at[1]===e&&(n.top+=m/2),n.left+=k[0],n.top+=k[1];return this.each(function(){var c=a(this),d=c.outerWidth(),g=c.outerHeight(),h=parseInt(a.curCSS(this,"marginLeft",!0))||0,i=parseInt(a.curCSS(this,"marginTop",!0))||0,o=d+h+(parseInt(a.curCSS(this,"marginRight",!0))||0),p=g+i+(parseInt(a.curCSS(this,"marginBottom",!0))||0),q=a.extend({},n),r;b.my[0]==="right"?q.left-=d:b.my[0]===e&&(q.left-=d/2),b.my[1]==="bottom"?q.top-=g:b.my[1]===e&&(q.top-=g/2),f.fractions||(q.left=Math.round(q.left),q.top=Math.round(q.top)),r={left:q.left-h,top:q.top-i},a.each(["left","top"],function(c,e){a.ui.position[j[c]]&&a.ui.position[j[c]][e](q,{targetWidth:l,targetHeight:m,elemWidth:d,elemHeight:g,collisionPosition:r,collisionWidth:o,collisionHeight:p,offset:k,my:b.my,at:b.at})}),a.fn.bgiframe&&c.bgiframe(),c.offset(a.extend(q,{using:b.using}))})},a.ui.position={fit:{left:function(b,c){var d=a(window),e=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft();b.left=e>0?b.left-e:Math.max(b.left-c.collisionPosition.left,b.left)},top:function(b,c){var d=a(window),e=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop();b.top=e>0?b.top-e:Math.max(b.top-c.collisionPosition.top,b.top)}},flip:{left:function(b,c){if(c.at[0]!==e){var d=a(window),f=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft(),g=c.my[0]==="left"?-c.elemWidth:c.my[0]==="right"?c.elemWidth:0,h=c.at[0]==="left"?c.targetWidth:-c.targetWidth,i=-2*c.offset[0];b.left+=c.collisionPosition.left<0?g+h+i:f>0?g+h+i:0}},top:function(b,c){if(c.at[1]!==e){var d=a(window),f=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop(),g=c.my[1]==="top"?-c.elemHeight:c.my[1]==="bottom"?c.elemHeight:0,h=c.at[1]==="top"?c.targetHeight:-c.targetHeight,i=-2*c.offset[1];b.top+=c.collisionPosition.top<0?g+h+i:f>0?g+h+i:0}}}},a.offset.setOffset||(a.offset.setOffset=function(b,c){/static/.test(a.curCSS(b,"position"))&&(b.style.position="relative");var d=a(b),e=d.offset(),f=parseInt(a.curCSS(b,"top",!0),10)||0,g=parseInt(a.curCSS(b,"left",!0),10)||0,h={top:c.top-e.top+f,left:c.left-e.left+g};"using"in c?c.using.call(b,h):d.css(h)},a.fn.offset=function(b){var c=this[0];if(!c||!c.ownerDocument)return null;if(b)return this.each(function(){a.offset.setOffset(this,b)});return h.call(this)}),function(){var b=document.getElementsByTagName("body")[0],c=document.createElement("div"),d,e,g,h,i;d=document.createElement(b?"div":"body"),g={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},b&&a.extend(g,{position:"absolute",left:"-1000px",top:"-1000px"});for(var j in g)d.style[j]=g[j];d.appendChild(c),e=b||document.documentElement,e.insertBefore(d,e.firstChild),c.style.cssText="position: absolute; left: 10.7432222px; top: 10.432325px; height: 30px; width: 201px;",h=a(c).offset(function(a,b){return b}).offset(),d.innerHTML="",e.removeChild(d),i=h.top+h.left+(b?2e3:0),f.fractions=i>21&&i<22}()})(jQuery);/*
+ * jQuery UI Draggable 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/Draggables
+ *
+ * Depends:
+ *     jquery.ui.core.js
+ *     jquery.ui.mouse.js
+ *     jquery.ui.widget.js
+ */(function(a,b){a.widget("ui.draggable",a.ui.mouse,{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(){this.options.helper=="original"&&!/^(?: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(){if(!!this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy();return this}},_mouseCapture:function(b){var c=this.options;if(this.helper||c.disabled||a(b.target).is(".ui-resizable-handle"))return!1;this.handle=this._getHandle(b);if(!this.handle)return!1;c.iframeFix&&a(c.iframeFix===!0?"iframe":c.iframeFix).each(function(){a('<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(a(this).offset()).appendTo("body")});return!0},_mouseStart:function(b){var c=this.options;this.helper=this._createHelper(b),this._cacheHelperProportions(),a.ui.ddmanager&&(a.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},a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(b),this.originalPageX=b.pageX,this.originalPageY=b.pageY,c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt),c.containment&&this._setContainment();if(this._trigger("start",b)===!1){this._clear();return!1}this._cacheHelperProportions(),a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this.helper.addClass("ui-draggable-dragging"),this._mouseDrag(b,!0),a.ui.ddmanager&&a.ui.ddmanager.dragStart(this,b);return!0},_mouseDrag:function(b,c){this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute");if(!c){var d=this._uiHash();if(this._trigger("drag",b,d)===!1){this._mouseUp({});return!1}this.position=d.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";a.ui.ddmanager&&a.ui.ddmanager.drag(this,b);return!1},_mouseStop:function(b){var c=!1;a.ui.ddmanager&&!this.options.dropBehaviour&&(c=a.ui.ddmanager.drop(this,b)),this.dropped&&(c=this.dropped,this.dropped=!1);if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return!1;if(this.options.revert=="invalid"&&!c||this.options.revert=="valid"&&c||this.options.revert===!0||a.isFunction(this.options.revert)&&this.options.revert.call(this.element,c)){var d=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){d._trigger("stop",b)!==!1&&d._clear()})}else this._trigger("stop",b)!==!1&&this._clear();return!1},_mouseUp:function(b){this.options.iframeFix===!0&&a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),a.ui.ddmanager&&a.ui.ddmanager.dragStop(this,b);return a.ui.mouse.prototype._mouseUp.call(this,b)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(b){var c=!this.options.handle||!a(this.options.handle,this.element).length?!0:!1;a(this.options.handle,this.element).find("*").andSelf().each(function(){this==b.target&&(c=!0)});return c},_createHelper:function(b){var c=this.options,d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[b])):c.helper=="clone"?this.element.clone().removeAttr("id"):this.element;d.parents("body").length||d.appendTo(c.appendTo=="parent"?this.element[0].parentNode:c.appendTo),d[0]!=this.element[0]&&!/(fixed|absolute)/.test(d.css("position"))&&d.css("position","absolute");return d},_adjustOffsetFromHelper:function(b){typeof b=="string"&&(b=b.split(" ")),a.isArray(b)&&(b={left:+b[0],top:+b[1]||0}),"left"in b&&(this.offset.click.left=b.left+this.margins.left),"right"in b&&(this.offset.click.left=this.helperProportions.width-b.right+this.margins.left),"top"in b&&(this.offset.click.top=b.top+this.margins.top),"bottom"in b&&(this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])&&(b.left+=this.scrollParent.scrollLeft(),b.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)b={top:0,left:0};return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.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 b=this.options;b.containment=="parent"&&(b.containment=this.helper[0].parentNode);if(b.containment=="document"||b.containment=="window")this.containment=[b.containment=="document"?0:a(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,b.containment=="document"?0:a(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,(b.containment=="document"?0:a(window).scrollLeft())+a(b.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(b.containment=="document"?0:a(window).scrollTop())+(a(b.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(b.containment)&&b.containment.constructor!=Array){var c=a(b.containment),d=c[0];if(!d)return;var e=c.offset(),f=a(d).css("overflow")!="hidden";this.containment=[(parseInt(a(d).css("borderLeftWidth"),10)||0)+(parseInt(a(d).css("paddingLeft"),10)||0),(parseInt(a(d).css("borderTopWidth"),10)||0)+(parseInt(a(d).css("paddingTop"),10)||0),(f?Math.max(d.scrollWidth,d.offsetWidth):d.offsetWidth)-(parseInt(a(d).css("borderLeftWidth"),10)||0)-(parseInt(a(d).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(f?Math.max(d.scrollHeight,d.offsetHeight):d.offsetHeight)-(parseInt(a(d).css("borderTopWidth"),10)||0)-(parseInt(a(d).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=c}else b.containment.constructor==Array&&(this.containment=b.containment)},_convertPositionTo:function(b,c){c||(c=this.position);var d=b=="absolute"?1:-1,e=this.options,f=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=/(html|body)/i.test(f[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():g?0:f.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:f.scrollLeft())*d)}},_generatePosition:function(b){var c=this.options,d=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(d[0].tagName),f=b.pageX,g=b.pageY;if(this.originalPosition){var h;if(this.containment){if(this.relative_container){var i=this.relative_container.offset();h=[this.containment[0]+i.left,this.containment[1]+i.top,this.containment[2]+i.left,this.containment[3]+i.top]}else h=this.containment;b.pageX-this.offset.click.left<h[0]&&(f=h[0]+this.offset.click.left),b.pageY-this.offset.click.top<h[1]&&(g=h[1]+this.offset.click.top),b.pageX-this.offset.click.left>h[2]&&(f=h[2]+this.offset.click.left),b.pageY-this.offset.click.top>h[3]&&(g=h[3]+this.offset.click.top)}if(c.grid){var j=c.grid[1]?this.originalPageY+Math.round((g-this.originalPageY)/c.grid[1])*c.grid[1]:this.originalPageY;g=h?j-this.offset.click.top<h[1]||j-this.offset.click.top>h[3]?j-this.offset.click.top<h[1]?j+c.grid[1]:j-c.grid[1]:j:j;var k=c.grid[0]?this.originalPageX+Math.round((f-this.originalPageX)/c.grid[0])*c.grid[0]:this.originalPageX;f=h?k-this.offset.click.left<h[0]||k-this.offset.click.left>h[2]?k-this.offset.click.left<h[0]?k+c.grid[0]:k-c.grid[0]:k:k}}return{top:g-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:d.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:d.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(b,c,d){d=d||this._uiHash(),a.ui.plugin.call(this,b,[c,d]),b=="drag"&&(this.positionAbs=this._convertPositionTo("absolute"));return a.Widget.prototype._trigger.call(this,b,c,d)},plugins:{},_uiHash:function(a){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),a.extend(a.ui.draggable,{version:"1.8.18"}),a.ui.plugin.add("draggable","connectToSortable",{start:function(b,c){var d=a(this).data("draggable"),e=d.options,f=a.extend({},c,{item:d.element});d.sortables=[],a(e.connectToSortable).each(function(){var c=a.data(this,"sortable");c&&!c.options.disabled&&(d.sortables.push({instance:c,shouldRevert:c.options.revert}),c.refreshPositions(),c._trigger("activate",b,f))})},stop:function(b,c){var d=a(this).data("draggable"),e=a.extend({},c,{item:d.element});a.each(d.sortables,function(){this.instance.isOver?(this.instance.isOver=0,d.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=!0),this.instance._mouseStop(b),this.instance.options.helper=this.instance.options._helper,d.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",b,e))})},drag:function(b,c){var d=a(this).data("draggable"),e=this,f=function(b){var c=this.offset.click.top,d=this.offset.click.left,e=this.positionAbs.top,f=this.positionAbs.left,g=b.height,h=b.width,i=b.top,j=b.left;return a.ui.isOver(e+c,f+d,i,j,g,h)};a.each(d.sortables,function(f){this.instance.positionAbs=d.positionAbs,this.instance.helperProportions=d.helperProportions,this.instance.offset.click=d.offset.click,this.instance._intersectsWith(this.instance.containerCache)?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=a(e).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 c.helper[0]},b.target=this.instance.currentItem[0],this.instance._mouseCapture(b,!0),this.instance._mouseStart(b,!0,!0),this.instance.offset.click.top=d.offset.click.top,this.instance.offset.click.left=d.offset.click.left,this.instance.offset.parent.left-=d.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=d.offset.parent.top-this.instance.offset.parent.top,d._trigger("toSortable",b),d.dropped=this.instance.element,d.currentItem=d.element,this.instance.fromOutside=d),this.instance.currentItem&&this.instance._mouseDrag(b)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",b,this.instance._uiHash(this.instance)),this.instance._mouseStop(b,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),d._trigger("fromSortable",b),d.dropped=!1)})}}),a.ui.plugin.add("draggable","cursor",{start:function(b,c){var d=a("body"),e=a(this).data("draggable").options;d.css("cursor")&&(e._cursor=d.css("cursor")),d.css("cursor",e.cursor)},stop:function(b,c){var d=a(this).data("draggable").options;d._cursor&&a("body").css("cursor",d._cursor)}}),a.ui.plugin.add("draggable","opacity",{start:function(b,c){var d=a(c.helper),e=a(this).data("draggable").options;d.css("opacity")&&(e._opacity=d.css("opacity")),d.css("opacity",e.opacity)},stop:function(b,c){var d=a(this).data("draggable").options;d._opacity&&a(c.helper).css("opacity",d._opacity)}}),a.ui.plugin.add("draggable","scroll",{start:function(b,c){var d=a(this).data("draggable");d.scrollParent[0]!=document&&d.scrollParent[0].tagName!="HTML"&&(d.overflowOffset=d.scrollParent.offset())},drag:function(b,c){var d=a(this).data("draggable"),e=d.options,f=!1;if(d.scrollParent[0]!=document&&d.scrollParent[0].tagName!="HTML"){if(!e.axis||e.axis!="x")d.overflowOffset.top+d.scrollParent[0].offsetHeight-b.pageY<e.scrollSensitivity?d.scrollParent[0].scrollTop=f=d.scrollParent[0].scrollTop+e.scrollSpeed:b.pageY-d.overflowOffset.top<e.scrollSensitivity&&(d.scrollParent[0].scrollTop=f=d.scrollParent[0].scrollTop-e.scrollSpeed);if(!e.axis||e.axis!="y")d.overflowOffset.left+d.scrollParent[0].offsetWidth-b.pageX<e.scrollSensitivity?d.scrollParent[0].scrollLeft=f=d.scrollParent[0].scrollLeft+e.scrollSpeed:b.pageX-d.overflowOffset.left<e.scrollSensitivity&&(d.scrollParent[0].scrollLeft=f=d.scrollParent[0].scrollLeft-e.scrollSpeed)}else{if(!e.axis||e.axis!="x")b.pageY-a(document).scrollTop()<e.scrollSensitivity?f=a(document).scrollTop(a(document).scrollTop()-e.scrollSpeed):a(window).height()-(b.pageY-a(document).scrollTop())<e.scrollSensitivity&&(f=a(document).scrollTop(a(document).scrollTop()+e.scrollSpeed));if(!e.axis||e.axis!="y")b.pageX-a(document).scrollLeft()<e.scrollSensitivity?f=a(document).scrollLeft(a(document).scrollLeft()-e.scrollSpeed):a(window).width()-(b.pageX-a(document).scrollLeft())<e.scrollSensitivity&&(f=a(document).scrollLeft(a(document).scrollLeft()+e.scrollSpeed))}f!==!1&&a.ui.ddmanager&&!e.dropBehaviour&&a.ui.ddmanager.prepareOffsets(d,b)}}),a.ui.plugin.add("draggable","snap",{start:function(b,c){var d=a(this).data("draggable"),e=d.options;d.snapElements=[],a(e.snap.constructor!=String?e.snap.items||":data(draggable)":e.snap).each(function(){var b=a(this),c=b.offset();this!=d.element[0]&&d.snapElements.push({item:this,width:b.outerWidth(),height:b.outerHeight(),top:c.top,left:c.left})})},drag:function(b,c){var d=a(this).data("draggable"),e=d.options,f=e.snapTolerance,g=c.offset.left,h=g+d.helperProportions.width,i=c.offset.top,j=i+d.helperProportions.height;for(var k=d.snapElements.length-1;k>=0;k--){var l=d.snapElements[k].left,m=l+d.snapElements[k].width,n=d.snapElements[k].top,o=n+d.snapElements[k].height;if(!(l-f<g&&g<m+f&&n-f<i&&i<o+f||l-f<g&&g<m+f&&n-f<j&&j<o+f||l-f<h&&h<m+f&&n-f<i&&i<o+f||l-f<h&&h<m+f&&n-f<j&&j<o+f)){d.snapElements[k].snapping&&d.options.snap.release&&d.options.snap.release.call(d.element,b,a.extend(d._uiHash(),{snapItem:d.snapElements[k].item})),d.snapElements[k].snapping=!1;continue}if(e.snapMode!="inner"){var p=Math.abs(n-j)<=f,q=Math.abs(o-i)<=f,r=Math.abs(l-h)<=f,s=Math.abs(m-g)<=f;p&&(c.position.top=d._convertPositionTo("relative",{top:n-d.helperProportions.height,left:0}).top-d.margins.top),q&&(c.position.top=d._convertPositionTo("relative",{top:o,left:0}).top-d.margins.top),r&&(c.position.left=d._convertPositionTo("relative",{top:0,left:l-d.helperProportions.width}).left-d.margins.left),s&&(c.position.left=d._convertPositionTo("relative",{top:0,left:m}).left-d.margins.left)}var t=p||q||r||s;if(e.snapMode!="outer"){var p=Math.abs(n-i)<=f,q=Math.abs(o-j)<=f,r=Math.abs(l-g)<=f,s=Math.abs(m-h)<=f;p&&(c.position.top=d._convertPositionTo("relative",{top:n,left:0}).top-d.margins.top),q&&(c.position.top=d._convertPositionTo("relative",{top:o-d.helperProportions.height,left:0}).top-d.margins.top),r&&(c.position.left=d._convertPositionTo("relative",{top:0,left:l}).left-d.margins.left),s&&(c.position.left=d._convertPositionTo("relative",{top:0,left:m-d.helperProportions.width}).left-d.margins.left)}!d.snapElements[k].snapping&&(p||q||r||s||t)&&d.options.snap.snap&&d.options.snap.snap.call(d.element,b,a.extend(d._uiHash(),{snapItem:d.snapElements[k].item})),d.snapElements[k].snapping=p||q||r||s||t}}}),a.ui.plugin.add("draggable","stack",{start:function(b,c){var d=a(this).data("draggable").options,e=a.makeArray(a(d.stack)).sort(function(b,c){return(parseInt(a(b).css("zIndex"),10)||0)-(parseInt(a(c).css("zIndex"),10)||0)});if(!!e.length){var f=parseInt(e[0].style.zIndex)||0;a(e).each(function(a){this.style.zIndex=f+a}),this[0].style.zIndex=f+e.length}}}),a.ui.plugin.add("draggable","zIndex",{start:function(b,c){var d=a(c.helper),e=a(this).data("draggable").options;d.css("zIndex")&&(e._zIndex=d.css("zIndex")),d.css("zIndex",e.zIndex)},stop:function(b,c){var d=a(this).data("draggable").options;d._zIndex&&a(c.helper).css("zIndex",d._zIndex)}})})(jQuery);/*
+ * jQuery UI Droppable 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/Droppables
+ *
+ * Depends:
+ *     jquery.ui.core.js
+ *     jquery.ui.widget.js
+ *     jquery.ui.mouse.js
+ *     jquery.ui.draggable.js
+ */(function(a,b){a.widget("ui.droppable",{widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect"},_create:function(){var b=this.options,c=b.accept;this.isover=0,this.isout=1,this.accept=a.isFunction(c)?c:function(a){return a.is(c)},this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight},a.ui.ddmanager.droppables[b.scope]=a.ui.ddmanager.droppables[b.scope]||[],a.ui.ddmanager.droppables[b.scope].push(this),b.addClasses&&this.element.addClass("ui-droppable")},destroy:function(){var b=a.ui.ddmanager.droppables[this.options.scope];for(var c=0;c<b.length;c++)b[c]==this&&b.splice(c,1);this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable");return this},_setOption:function(b,c){b=="accept"&&(this.accept=a.isFunction(c)?c:function(a){return a.is(c)}),a.Widget.prototype._setOption.apply(this,arguments)},_activate:function(b){var c=a.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),c&&this._trigger("activate",b,this.ui(c))},_deactivate:function(b){var c=a.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),c&&this._trigger("deactivate",b,this.ui(c))},_over:function(b){var c=a.ui.ddmanager.current;!!c&&(c.currentItem||c.element)[0]!=this.element[0]&&this.accept.call(this.element[0],c.currentItem||c.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",b,this.ui(c)))},_out:function(b){var c=a.ui.ddmanager.current;!!c&&(c.currentItem||c.element)[0]!=this.element[0]&&this.accept.call(this.element[0],c.currentItem||c.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",b,this.ui(c)))},_drop:function(b,c){var d=c||a.ui.ddmanager.current;if(!d||(d.currentItem||d.element)[0]==this.element[0])return!1;var e=!1;this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var b=a.data(this,"droppable");if(b.options.greedy&&!b.options.disabled&&b.options.scope==d.options.scope&&b.accept.call(b.element[0],d.currentItem||d.element)&&a.ui.intersect(d,a.extend(b,{offset:b.element.offset()}),b.options.tolerance)){e=!0;return!1}});if(e)return!1;if(this.accept.call(this.element[0],d.currentItem||d.element)){this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",b,this.ui(d));return this.element}return!1},ui:function(a){return{draggable:a.currentItem||a.element,helper:a.helper,position:a.position,offset:a.positionAbs}}}),a.extend(a.ui.droppable,{version:"1.8.18"}),a.ui.intersect=function(b,c,d){if(!c.offset)return!1;var e=(b.positionAbs||b.position.absolute).left,f=e+b.helperProportions.width,g=(b.positionAbs||b.position.absolute).top,h=g+b.helperProportions.height,i=c.offset.left,j=i+c.proportions.width,k=c.offset.top,l=k+c.proportions.height;switch(d){case"fit":return i<=e&&f<=j&&k<=g&&h<=l;case"intersect":return i<e+b.helperProportions.width/2&&f-b.helperProportions.width/2<j&&k<g+b.helperProportions.height/2&&h-b.helperProportions.height/2<l;case"pointer":var m=(b.positionAbs||b.position.absolute).left+(b.clickOffset||b.offset.click).left,n=(b.positionAbs||b.position.absolute).top+(b.clickOffset||b.offset.click).top,o=a.ui.isOver(n,m,k,i,c.proportions.height,c.proportions.width);return o;case"touch":return(g>=k&&g<=l||h>=k&&h<=l||g<k&&h>l)&&(e>=i&&e<=j||f>=i&&f<=j||e<i&&f>j);default:return!1}},a.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(b,c){var d=a.ui.ddmanager.droppables[b.options.scope]||[],e=c?c.type:null,f=(b.currentItem||b.element).find(":data(droppable)").andSelf();droppablesLoop:for(var g=0;g<d.length;g++){if(d[g].options.disabled||b&&!d[g].accept.call(d[g].element[0],b.currentItem||b.element))continue;for(var h=0;h<f.length;h++)if(f[h]==d[g].element[0]){d[g].proportions.height=0;continue droppablesLoop}d[g].visible=d[g].element.css("display")!="none";if(!d[g].visible)continue;e=="mousedown"&&d[g]._activate.call(d[g],c),d[g].offset=d[g].element.offset(),d[g].proportions={width:d[g].element[0].offsetWidth,height:d[g].element[0].offsetHeight}}},drop:function(b,c){var d=!1;a.each(a.ui.ddmanager.droppables[b.options.scope]||[],function(){!this.options||(!this.options.disabled&&this.visible&&a.ui.intersect(b,this,this.options.tolerance)&&(d=this._drop.call(this,c)||d),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],b.currentItem||b.element)&&(this.isout=1,this.isover=0,this._deactivate.call(this,c)))});return d},dragStart:function(b,c){b.element.parents(":not(body,html)").bind("scroll.droppable",function(){b.options.refreshPositions||a.ui.ddmanager.prepareOffsets(b,c)})},drag:function(b,c){b.options.refreshPositions&&a.ui.ddmanager.prepareOffsets(b,c),a.each(a.ui.ddmanager.droppables[b.options.scope]||[],function(){if(!(this.options.disabled||this.greedyChild||!this.visible)){var d=a.ui.intersect(b,this,this.options.tolerance),e=!d&&this.isover==1?"isout":d&&this.isover==0?"isover":null;if(!e)return;var f;if(this.options.greedy){var g=this.element.parents(":data(droppable):eq(0)");g.length&&(f=a.data(g[0],"droppable"),f.greedyChild=e=="isover"?1:0)}f&&e=="isover"&&(f.isover=0,f.isout=1,f._out.call(f,c)),this[e]=1,this[e=="isout"?"isover":"isout"]=0,this[e=="isover"?"_over":"_out"].call(this,c),f&&e=="isout"&&(f.isout=0,f.isover=1,f._over.call(f,c))}})},dragStop:function(b,c){b.element.parents(":not(body,html)").unbind("scroll.droppable"),b.options.refreshPositions||a.ui.ddmanager.prepareOffsets(b,c)}}})(jQuery);/*
+ * 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/Resizables
+ *
+ * Depends:
+ *     jquery.ui.core.js
+ *     jquery.ui.mouse.js
+ *     jquery.ui.widget.js
+ */(function(a,b){a.widget("ui.resizable",a.ui.mouse,{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 b=this,c=this.options;this.element.addClass("ui-resizable"),a.extend(this,{_aspectRatio:!!c.aspectRatio,aspectRatio:c.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:c.helper||c.ghost||c.animate?c.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(a('<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=c.handles||(a(".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");if(this.handles.constructor==String){this.handles=="all"&&(this.handles="n,e,s,w,se,sw,ne,nw");var d=this.handles.split(",");this.handles={};for(var e=0;e<d.length;e++){var f=a.trim(d[e]),g="ui-resizable-"+f,h=a('<div class="ui-resizable-handle '+g+'"></div>');/sw|se|ne|nw/.test(f)&&h.css({zIndex:++c.zIndex}),"se"==f&&h.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[f]=".ui-resizable-"+f,this.element.append(h)}}this._renderAxis=function(b){b=b||this.element;for(var c in this.handles){this.handles[c].constructor==String&&(this.handles[c]=a(this.handles[c],this.element).show());if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var d=a(this.handles[c],this.element),e=0;e=/sw|ne|nw|se|n|s/.test(c)?d.outerHeight():d.outerWidth();var f=["padding",/ne|nw|n/.test(c)?"Top":/se|sw|s/.test(c)?"Bottom":/^e$/.test(c)?"Right":"Left"].join("");b.css(f,e),this._proportionallyResize()}if(!a(this.handles[c]).length)continue}},this._renderAxis(this.element),this._handles=a(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){if(!b.resizing){if(this.className)var a=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=a&&a[1]?a[1]:"se"}}),c.autoHide&&(this._handles.hide(),a(this.element).addClass("ui-resizable-autohide").hover(function(){c.disabled||(a(this).removeClass("ui-resizable-autohide"),b._handles.show())},function(){c.disabled||b.resizing||(a(this).addClass("ui-resizable-autohide"),b._handles.hide())})),this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(b){a(b).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){b(this.element);var c=this.element;c.after(this.originalElement.css({position:c.css("position"),width:c.outerWidth(),height:c.outerHeight(),top:c.css("top"),left:c.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle),b(this.originalElement);return this},_mouseCapture:function(b){var c=!1;for(var d in this.handles)a(this.handles[d])[0]==b.target&&(c=!0);return!this.options.disabled&&c},_mouseStart:function(b){var d=this.options,e=this.element.position(),f=this.element;this.resizing=!0,this.documentScroll={top:a(document).scrollTop(),left:a(document).scrollLeft()},(f.is(".ui-draggable")||/absolute/.test(f.css("position")))&&f.css({position:"absolute",top:e.top,left:e.left}),this._renderProxy();var g=c(this.helper.css("left")),h=c(this.helper.css("top"));d.containment&&(g+=a(d.containment).scrollLeft()||0,h+=a(d.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:g,top:h},this.size=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalSize=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalPosition={left:g,top:h},this.sizeDiff={width:f.outerWidth()-f.width(),height:f.outerHeight()-f.height()},this.originalMousePosition={left:b.pageX,top:b.pageY},this.aspectRatio=typeof d.aspectRatio=="number"?d.aspectRatio:this.originalSize.width/this.originalSize.height||1;var i=a(".ui-resizable-"+this.axis).css("cursor");a("body").css("cursor",i=="auto"?this.axis+"-resize":i),f.addClass("ui-resizable-resizing"),this._propagate("start",b);return!0},_mouseDrag:function(b){var c=this.helper,d=this.options,e={},f=this,g=this.originalMousePosition,h=this.axis,i=b.pageX-g.left||0,j=b.pageY-g.top||0,k=this._change[h];if(!k)return!1;var l=k.apply(this,[b,i,j]),m=a.browser.msie&&a.browser.version<7,n=this.sizeDiff;this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)l=this._updateRatio(l,b);l=this._respectSize(l,b),this._propagate("resize",b),c.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(l),this._trigger("resize",b,this.ui());return!1},_mouseStop:function(b){this.resizing=!1;var c=this.options,d=this;if(this._helper){var e=this._proportionallyResizeElements,f=e.length&&/textarea/i.test(e[0].nodeName),g=f&&a.ui.hasScroll(e[0],"left")?0:d.sizeDiff.height,h=f?0:d.sizeDiff.width,i={width:d.helper.width()-h,height:d.helper.height()-g},j=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,k=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;c.animate||this.element.css(a.extend(i,{top:k,left:j})),d.helper.height(d.size.height),d.helper.width(d.size.width),this._helper&&!c.animate&&this._proportionallyResize()}a("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",b),this._helper&&this.helper.remove();return!1},_updateVirtualBoundaries:function(a){var b=this.options,c,e,f,g,h;h={minWidth:d(b.minWidth)?b.minWidth:0,maxWidth:d(b.maxWidth)?b.maxWidth:Infinity,minHeight:d(b.minHeight)?b.minHeight:0,maxHeight:d(b.maxHeight)?b.maxHeight:Infinity};if(this._aspectRatio||a)c=h.minHeight*this.aspectRatio,f=h.minWidth/this.aspectRatio,e=h.maxHeight*this.aspectRatio,g=h.maxWidth/this.aspectRatio,c>h.minWidth&&(h.minWidth=c),f>h.minHeight&&(h.minHeight=f),e<h.maxWidth&&(h.maxWidth=e),g<h.maxHeight&&(h.maxHeight=g);this._vBoundaries=h},_updateCache:function(a){var b=this.options;this.offset=this.helper.offset(),d(a.left)&&(this.position.left=a.left),d(a.top)&&(this.position.top=a.top),d(a.height)&&(this.size.height=a.height),d(a.width)&&(this.size.width=a.width)},_updateRatio:function(a,b){var c=this.options,e=this.position,f=this.size,g=this.axis;d(a.height)?a.width=a.height*this.aspectRatio:d(a.width)&&(a.height=a.width/this.aspectRatio),g=="sw"&&(a.left=e.left+(f.width-a.width),a.top=null),g=="nw"&&(a.top=e.top+(f.height-a.height),a.left=e.left+(f.width-a.width));return a},_respectSize:function(a,b){var c=this.helper,e=this._vBoundaries,f=this._aspectRatio||b.shiftKey,g=this.axis,h=d(a.width)&&e.maxWidth&&e.maxWidth<a.width,i=d(a.height)&&e.maxHeight&&e.maxHeight<a.height,j=d(a.width)&&e.minWidth&&e.minWidth>a.width,k=d(a.height)&&e.minHeight&&e.minHeight>a.height;j&&(a.width=e.minWidth),k&&(a.height=e.minHeight),h&&(a.width=e.maxWidth),i&&(a.height=e.maxHeight);var l=this.originalPosition.left+this.originalSize.width,m=this.position.top+this.size.height,n=/sw|nw|w/.test(g),o=/nw|ne|n/.test(g);j&&n&&(a.left=l-e.minWidth),h&&n&&(a.left=l-e.maxWidth),k&&o&&(a.top=m-e.minHeight),i&&o&&(a.top=m-e.maxHeight);var p=!a.width&&!a.height;p&&!a.left&&a.top?a.top=null:p&&!a.top&&a.left&&(a.left=null);return a},_proportionallyResize:function(){var b=this.options;if(!!this._proportionallyResizeElements.length){var c=this.helper||this.element;for(var d=0;d<this._proportionallyResizeElements.length;d++){var e=this._proportionallyResizeElements[d];if(!this.borderDif){var f=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],g=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];this.borderDif=a.map(f,function(a,b){var c=parseInt(a,10)||0,d=parseInt(g[b],10)||0;return c+d})}if(a.browser.msie&&(!!a(c).is(":hidden")||!!a(c).parents(":hidden").length))continue;e.css({height:c.height()-this.borderDif[0]-this.borderDif[2]||0,width:c.width()-this.borderDif[1]-this.borderDif[3]||0})}}},_renderProxy:function(){var b=this.element,c=this.options;this.elementOffset=b.offset();if(this._helper){this.helper=this.helper||a('<div style="overflow:hidden;"></div>');var d=a.browser.msie&&a.browser.version<7,e=d?1:0,f=d?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+f,height:this.element.outerHeight()+f,position:"absolute",left:this.elementOffset.left-e+"px",top:this.elementOffset.top-e+"px",zIndex:++c.zIndex}),this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(a,b,c){return{width:this.originalSize.width+b}},w:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{left:f.left+b,width:e.width-b}},n:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{top:f.top+c,height:e.height-c}},s:function(a,b,c){return{height:this.originalSize.height+c}},se:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},sw:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,c,d]))},ne:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},nw:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,c,d]))}},_propagate:function(b,c){a.ui.plugin.call(this,b,[c,this.ui()]),b!="resize"&&this._trigger(b,c,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}}}),a.extend(a.ui.resizable,{version:"1.8.18"}),a.ui.plugin.add("resizable","alsoResize",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=function(b){a(b).each(function(){var b=a(this);b.data("resizable-alsoresize",{width:parseInt(b.width(),10),height:parseInt(b.height(),10),left:parseInt(b.css("left"),10),top:parseInt(b.css("top"),10)})})};typeof e.alsoResize=="object"&&!e.alsoResize.parentNode?e.alsoResize.length?(e.alsoResize=e.alsoResize[0],f(e.alsoResize)):a.each(e.alsoResize,function(a){f(a)}):f(e.alsoResize)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.originalSize,g=d.originalPosition,h={height:d.size.height-f.height||0,width:d.size.width-f.width||0,top:d.position.top-g.top||0,left:d.position.left-g.left||0},i=function(b,d){a(b).each(function(){var b=a(this),e=a(this).data("resizable-alsoresize"),f={},g=d&&d.length?d:b.parents(c.originalElement[0]).length?["width","height"]:["width","height","top","left"];a.each(g,function(a,b){var c=(e[b]||0)+(h[b]||0);c&&c>=0&&(f[b]=c||null)}),b.css(f)})};typeof e.alsoResize=="object"&&!e.alsoResize.nodeType?a.each(e.alsoResize,function(a,b){i(a,b)}):i(e.alsoResize)},stop:function(b,c){a(this).removeData("resizable-alsoresize")}}),a.ui.plugin.add("resizable","animate",{stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d._proportionallyResizeElements,g=f.length&&/textarea/i.test(f[0].nodeName),h=g&&a.ui.hasScroll(f[0],"left")?0:d.sizeDiff.height,i=g?0:d.sizeDiff.width,j={width:d.size.width-i,height:d.size.height-h},k=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,l=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;d.element.animate(a.extend(j,l&&k?{top:l,left:k}:{}),{duration:e.animateDuration,easing:e.animateEasing,step:function(){var c={width:parseInt(d.element.css("width"),10),height:parseInt(d.element.css("height"),10),top:parseInt(d.element.css("top"),10),left:parseInt(d.element.css("left"),10)};f&&f.length&&a(f[0]).css({width:c.width,height:c.height}),d._updateCache(c),d._propagate("resize",b)}})}}),a.ui.plugin.add("resizable","containment",{start:function(b,d){var e=a(this).data("resizable"),f=e.options,g=e.element,h=f.containment,i=h instanceof a?h.get(0):/parent/.test(h)?g.parent().get(0):h;if(!!i){e.containerElement=a(i);if(/document/.test(h)||h==document)e.containerOffset={left:0,top:0},e.containerPosition={left:0,top:0},e.parentData={element:a(document),left:0,top:0,width:a(document).width(),height:a(document).height()||document.body.parentNode.scrollHeight};else{var j=a(i),k=[];a(["Top","Right","Left","Bottom"]).each(function(a,b){k[a]=c(j.css("padding"+b))}),e.containerOffset=j.offset(),e.containerPosition=j.position(),e.containerSize={height:j.innerHeight()-k[3],width:j.innerWidth()-k[1]};var l=e.containerOffset,m=e.containerSize.height,n=e.containerSize.width,o=a.ui.hasScroll(i,"left")?i.scrollWidth:n,p=a.ui.hasScroll(i)?i.scrollHeight:m;e.parentData={element:i,left:l.left,top:l.top,width:o,height:p}}}},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.containerSize,g=d.containerOffset,h=d.size,i=d.position,j=d._aspectRatio||b.shiftKey,k={top:0,left:0},l=d.containerElement;l[0]!=document&&/static/.test(l.css("position"))&&(k=g),i.left<(d._helper?g.left:0)&&(d.size.width=d.size.width+(d._helper?d.position.left-g.left:d.position.left-k.left),j&&(d.size.height=d.size.width/e.aspectRatio),d.position.left=e.helper?g.left:0),i.top<(d._helper?g.top:0)&&(d.size.height=d.size.height+(d._helper?d.position.top-g.top:d.position.top),j&&(d.size.width=d.size.height*e.aspectRatio),d.position.top=d._helper?g.top:0),d.offset.left=d.parentData.left+d.position.left,d.offset.top=d.parentData.top+d.position.top;var m=Math.abs((d._helper?d.offset.left-k.left:d.offset.left-k.left)+d.sizeDiff.width),n=Math.abs((d._helper?d.offset.top-k.top:d.offset.top-g.top)+d.sizeDiff.height),o=d.containerElement.get(0)==d.element.parent().get(0),p=/relative|absolute/.test(d.containerElement.css("position"));o&&p&&(m-=d.parentData.left),m+d.size.width>=d.parentData.width&&(d.size.width=d.parentData.width-m,j&&(d.size.height=d.size.width/d.aspectRatio)),n+d.size.height>=d.parentData.height&&(d.size.height=d.parentData.height-n,j&&(d.size.width=d.size.height*d.aspectRatio))},stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.position,g=d.containerOffset,h=d.containerPosition,i=d.containerElement,j=a(d.helper),k=j.offset(),l=j.outerWidth()-d.sizeDiff.width,m=j.outerHeight()-d.sizeDiff.height;d._helper&&!e.animate&&/relative/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m}),d._helper&&!e.animate&&/static/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m})}}),a.ui.plugin.add("resizable","ghost",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size;d.ghost=d.originalElement.clone(),d.ghost.css({opacity:.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof e.ghost=="string"?e.ghost:""),d.ghost.appendTo(d.helper)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.ghost.css({position:"relative",height:d.size.height,width:d.size.width})},stop:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.helper&&d.helper.get(0).removeChild(d.ghost.get(0))}}),a.ui.plugin.add("resizable","grid",{resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size,g=d.originalSize,h=d.originalPosition,i=d.axis,j=e._aspectRatio||b.shiftKey;e.grid=typeof e.grid=="number"?[e.grid,e.grid]:e.grid;var k=Math.round((f.width-g.width)/(e.grid[0]||1))*(e.grid[0]||1),l=Math.round((f.height-g.height)/(e.grid[1]||1))*(e.grid[1]||1);/^(se|s|e)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l):/^(ne)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l):/^(sw)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.left=h.left-k):(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l,d.position.left=h.left-k)}});var c=function(a){return parseInt(a,10)||0},d=function(a){return!isNaN(parseInt(a,10))}})(jQuery);/*
+ * 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/Selectables
+ *
+ * Depends:
+ *     jquery.ui.core.js
+ *     jquery.ui.mouse.js
+ *     jquery.ui.widget.js
+ */(function(a,b){a.widget("ui.selectable",a.ui.mouse,{options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch"},_create:function(){var b=this;this.element.addClass("ui-selectable"),this.dragged=!1;var c;this.refresh=function(){c=a(b.options.filter,b.element[0]),c.addClass("ui-selectee"),c.each(function(){var b=a(this),c=b.offset();a.data(this,"selectable-item",{element:this,$element:b,left:c.left,top:c.top,right:c.left+b.outerWidth(),bottom:c.top+b.outerHeight(),startselected:!1,selected:b.hasClass("ui-selected"),selecting:b.hasClass("ui-selecting"),unselecting:b.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=c.addClass("ui-selectee"),this._mouseInit(),this.helper=a("<div class='ui-selectable-helper'></div>")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable"),this._mouseDestroy();return this},_mouseStart:function(b){var c=this;this.opos=[b.pageX,b.pageY];if(!this.options.disabled){var d=this.options;this.selectees=a(d.filter,this.element[0]),this._trigger("start",b),a(d.appendTo).append(this.helper),this.helper.css({left:b.clientX,top:b.clientY,width:0,height:0}),d.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var d=a.data(this,"selectable-item");d.startselected=!0,!b.metaKey&&!b.ctrlKey&&(d.$element.removeClass("ui-selected"),d.selected=!1,d.$element.addClass("ui-unselecting"),d.unselecting=!0,c._trigger("unselecting",b,{unselecting:d.element}))}),a(b.target).parents().andSelf().each(function(){var d=a.data(this,"selectable-item");if(d){var e=!b.metaKey&&!b.ctrlKey||!d.$element.hasClass("ui-selected");d.$element.removeClass(e?"ui-unselecting":"ui-selected").addClass(e?"ui-selecting":"ui-unselecting"),d.unselecting=!e,d.selecting=e,d.selected=e,e?c._trigger("selecting",b,{selecting:d.element}):c._trigger("unselecting",b,{unselecting:d.element});return!1}})}},_mouseDrag:function(b){var c=this;this.dragged=!0;if(!this.options.disabled){var d=this.options,e=this.opos[0],f=this.opos[1],g=b.pageX,h=b.pageY;if(e>g){var i=g;g=e,e=i}if(f>h){var i=h;h=f,f=i}this.helper.css({left:e,top:f,width:g-e,height:h-f}),this.selectees.each(function(){var i=a.data(this,"selectable-item");if(!!i&&i.element!=c.element[0]){var j=!1;d.tolerance=="touch"?j=!(i.left>g||i.right<e||i.top>h||i.bottom<f):d.tolerance=="fit"&&(j=i.left>e&&i.right<g&&i.top>f&&i.bottom<h),j?(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,c._trigger("selecting",b,{selecting:i.element}))):(i.selecting&&((b.metaKey||b.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),c._trigger("unselecting",b,{unselecting:i.element}))),i.selected&&!b.metaKey&&!b.ctrlKey&&!i.startselected&&(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,c._trigger("unselecting",b,{unselecting:i.element})))}});return!1}},_mouseStop:function(b){var c=this;this.dragged=!1;var d=this.options;a(".ui-unselecting",this.element[0]).each(function(){var d=a.data(this,"selectable-item");d.$element.removeClass("ui-unselecting"),d.unselecting=!1,d.startselected=!1,c._trigger("unselected",b,{unselected:d.element})}),a(".ui-selecting",this.element[0]).each(function(){var d=a.data(this,"selectable-item");d.$element.removeClass("ui-selecting").addClass("ui-selected"),d.selecting=!1,d.selected=!0,d.startselected=!0,c._trigger("selected",b,{selected:d.element})}),this._trigger("stop",b),this.helper.remove();return!1}}),a.extend(a.ui.selectable,{version:"1.8.18"})})(jQuery);/*
+ * jQuery UI Sortable 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/Sortables
+ *
+ * Depends:
+ *     jquery.ui.core.js
+ *     jquery.ui.mouse.js
+ *     jquery.ui.widget.js
+ */(function(a,b){a.widget("ui.sortable",a.ui.mouse,{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 a=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?a.axis==="x"||/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(){a.Widget.prototype.destroy.call(this),this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var b=this.items.length-1;b>=0;b--)this.items[b].item.removeData(this.widgetName+"-item");return this},_setOption:function(b,c){b==="disabled"?(this.options[b]=c,this.widget()[c?"addClass":"removeClass"]("ui-sortable-disabled")):a.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(b,c){var d=this;if(this.reverting)return!1;if(this.options.disabled||this.options.type=="static")return!1;this._refreshItems(b);var e=null,f=this,g=a(b.target).parents().each(function(){if(a.data(this,d.widgetName+"-item")==f){e=a(this);return!1}});a.data(b.target,d.widgetName+"-item")==f&&(e=a(b.target));if(!e)return!1;if(this.options.handle&&!c){var h=!1;a(this.options.handle,e).find("*").andSelf().each(function(){this==b.target&&(h=!0)});if(!h)return!1}this.currentItem=e,this._removeCurrentsFromItems();return!0},_mouseStart:function(b,c,d){var e=this.options,f=this;this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(b),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},this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this._generatePosition(b),this.originalPageX=b.pageX,this.originalPageY=b.pageY,e.cursorAt&&this._adjustOffsetFromHelper(e.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!=this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),e.containment&&this._setContainment(),e.cursor&&(a("body").css("cursor")&&(this._storedCursor=a("body").css("cursor")),a("body").css("cursor",e.cursor)),e.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",e.opacity)),e.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",e.zIndex)),this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",b,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions();if(!d)for(var g=this.containers.length-1;g>=0;g--)this.containers[g]._trigger("activate",b,f._uiHash(this));a.ui.ddmanager&&(a.ui.ddmanager.current=this),a.ui.ddmanager&&!e.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(b);return!0},_mouseDrag:function(b){this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs);if(this.options.scroll){var c=this.options,d=!1;this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-b.pageY<c.scrollSensitivity?this.scrollParent[0].scrollTop=d=this.scrollParent[0].scrollTop+c.scrollSpeed:b.pageY-this.overflowOffset.top<c.scrollSensitivity&&(this.scrollParent[0].scrollTop=d=this.scrollParent[0].scrollTop-c.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-b.pageX<c.scrollSensitivity?this.scrollParent[0].scrollLeft=d=this.scrollParent[0].scrollLeft+c.scrollSpeed:b.pageX-this.overflowOffset.left<c.scrollSensitivity&&(this.scrollParent[0].scrollLeft=d=this.scrollParent[0].scrollLeft-c.scrollSpeed)):(b.pageY-a(document).scrollTop()<c.scrollSensitivity?d=a(document).scrollTop(a(document).scrollTop()-c.scrollSpeed):a(window).height()-(b.pageY-a(document).scrollTop())<c.scrollSensitivity&&(d=a(document).scrollTop(a(document).scrollTop()+c.scrollSpeed)),b.pageX-a(document).scrollLeft()<c.scrollSensitivity?d=a(document).scrollLeft(a(document).scrollLeft()-c.scrollSpeed):a(window).width()-(b.pageX-a(document).scrollLeft())<c.scrollSensitivity&&(d=a(document).scrollLeft(a(document).scrollLeft()+c.scrollSpeed))),d!==!1&&a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b)}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";for(var e=this.items.length-1;e>=0;e--){var f=this.items[e],g=f.item[0],h=this._intersectsWithPointer(f);if(!h)continue;if(g!=this.currentItem[0]&&this.placeholder[h==1?"next":"prev"]()[0]!=g&&!a.ui.contains(this.placeholder[0],g)&&(this.options.type=="semi-dynamic"?!a.ui.contains(this.element[0],g):!0)){this.direction=h==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(f))this._rearrange(b,f);else break;this._trigger("change",b,this._uiHash());break}}this._contactContainers(b),a.ui.ddmanager&&a.ui.ddmanager.drag(this,b),this._trigger("sort",b,this._uiHash()),this.lastPositionAbs=this.positionAbs;return!1},_mouseStop:function(b,c){if(!!b){a.ui.ddmanager&&!this.options.dropBehaviour&&a.ui.ddmanager.drop(this,b);if(this.options.revert){var d=this,e=d.placeholder.offset();d.reverting=!0,a(this.helper).animate({left:e.left-this.offset.parent.left-d.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:e.top-this.offset.parent.top-d.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){d._clear(b)})}else this._clear(b,c);return!1}},cancel:function(){var b=this;if(this.dragging){this._mouseUp({target:null}),this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("deactivate",null,b._uiHash(this)),this.containers[c].containerCache.over&&(this.containers[c]._trigger("out",null,b._uiHash(this)),this.containers[c].containerCache.over=0)}this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),a.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?a(this.domPosition.prev).after(this.currentItem):a(this.domPosition.parent).prepend(this.currentItem));return this},serialize:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];b=b||{},a(c).each(function(){var c=(a(b.item||this).attr(b.attribute||"id")||"").match(b.expression||/(.+)[-=_](.+)/);c&&d.push((b.key||c[1]+"[]")+"="+(b.key&&b.expression?c[1]:c[2]))}),!d.length&&b.key&&d.push(b.key+"=");return d.join("&")},toArray:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];b=b||{},c.each(function(){d.push(a(b.item||this).attr(b.attribute||"id")||"")});return d},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,d=this.positionAbs.top,e=d+this.helperProportions.height,f=a.left,g=f+a.width,h=a.top,i=h+a.height,j=this.offset.click.top,k=this.offset.click.left,l=d+j>h&&d+j<i&&b+k>f&&b+k<g;return this.options.tolerance=="pointer"||this.options.forcePointerForContainers||this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>a[this.floating?"width":"height"]?l:f<b+this.helperProportions.width/2&&c-this.helperProportions.width/2<g&&h<d+this.helperProportions.height/2&&e-this.helperProportions.height/2<i},_intersectsWithPointer:function(b){var c=a.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,b.top,b.height),d=a.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,b.left,b.width),e=c&&d,f=this._getDragVerticalDirection(),g=this._getDragHorizontalDirection();if(!e)return!1;return this.floating?g&&g=="right"||f=="down"?2:1:f&&(f=="down"?2:1)},_intersectsWithSides:function(b){var c=a.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,b.top+b.height/2,b.height),d=a.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,b.left+b.width/2,b.width),e=this._getDragVerticalDirection(),f=this._getDragHorizontalDirection();return this.floating&&f?f=="right"&&d||f=="left"&&!d:e&&(e=="down"&&c||e=="up"&&!c)},_getDragVerticalDirection:function(){var a=this.positionAbs.top-this.lastPositionAbs.top;return a!=0&&(a>0?"down":"up")},_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a),this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(b){var c=this,d=[],e=[],f=this._connectWith();if(f&&b)for(var g=f.length-1;g>=0;g--){var h=a(f[g]);for(var i=h.length-1;i>=0;i--){var j=a.data(h[i],this.widgetName);j&&j!=this&&!j.options.disabled&&e.push([a.isFunction(j.options.items)?j.options.items.call(j.element):a(j.options.items,j.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),j])}}e.push([a.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):a(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(var g=e.length-1;g>=0;g--)e[g][0].each(function(){d.push(this)});return a(d)},_removeCurrentsFromItems:function(){var a=this.currentItem.find(":data("+this.widgetName+"-item)");for(var b=0;b<this.items.length;b++)for(var c=0;c<a.length;c++)a[c]==this.items[b].item[0]&&this.items.splice(b,1)},_refreshItems:function(b){this.items=[],this.containers=[this];var c=this.items,d=this,e=[[a.isFunction(this.options.items)?this.options.items.call(this.element[0],b,{item:this.currentItem}):a(this.options.items,this.element),this]],f=this._connectWith();if(f&&this.ready)for(var g=f.length-1;g>=0;g--){var h=a(f[g]);for(var i=h.length-1;i>=0;i--){var j=a.data(h[i],this.widgetName);j&&j!=this&&!j.options.disabled&&(e.push([a.isFunction(j.options.items)?j.options.items.call(j.element[0],b,{item:this.currentItem}):a(j.options.items,j.element),j]),this.containers.push(j))}}for(var g=e.length-1;g>=0;g--){var k=e[g][1],l=e[g][0];for(var i=0,m=l.length;i<m;i++){var n=a(l[i]);n.data(this.widgetName+"-item",k),c.push({item:n,instance:k,width:0,height:0,left:0,top:0})}}},refreshPositions:function(b){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());for(var c=this.items.length-1;c>=0;c--){var d=this.items[c];if(d.instance!=this.currentContainer&&this.currentContainer&&d.item[0]!=this.currentItem[0])continue;var e=this.options.toleranceElement?a(this.options.toleranceElement,d.item):d.item;b||(d.width=e.outerWidth(),d.height=e.outerHeight());var f=e.offset();d.left=f.left,d.top=f.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(var c=this.containers.length-1;c>=0;c--){var f=this.containers[c].element.offset();this.containers[c].containerCache.left=f.left,this.containers[c].containerCache.top=f.top,this.containers[c].containerCache.width=this.containers[c].element.outerWidth(),this.containers[c].containerCache.height=this.containers[c].element.outerHeight()}return this},_createPlaceholder:function(b){var c=b||this,d=c.options;if(!d.placeholder||d.placeholder.constructor==String){var e=d.placeholder;d.placeholder={element:function(){var b=a(document.createElement(c.currentItem[0].nodeName)).addClass(e||c.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];e||(b.style.visibility="hidden");return b},update:function(a,b){if(!e||!!d.forcePlaceholderSize)b.height()||b.height(c.currentItem.innerHeight()-parseInt(c.currentItem.css("paddingTop")||0,10)-parseInt(c.currentItem.css("paddingBottom")||0,10)),b.width()||b.width(c.currentItem.innerWidth()-parseInt(c.currentItem.css("paddingLeft")||0,10)-parseInt(c.currentItem.css("paddingRight")||0,10))}}}c.placeholder=a(d.placeholder.element.call(c.element,c.currentItem)),c.currentItem.after(c.placeholder),d.placeholder.update(c,c.placeholder)},_contactContainers:function(b){var c=null,d=null;for(var e=this.containers.length-1;e>=0;e--){if(a.ui.contains(this.currentItem[0],this.containers[e].element[0]))continue;if(this._intersectsWith(this.containers[e].containerCache)){if(c&&a.ui.contains(this.containers[e].element[0],c.element[0]))continue;c=this.containers[e],d=e}else this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",b,this._uiHash(this)),this.containers[e].containerCache.over=0)}if(!!c)if(this.containers.length===1)this.containers[d]._trigger("over",b,this._uiHash(this)),this.containers[d].containerCache.over=1;else if(this.currentContainer!=this.containers[d]){var f=1e4,g=null,h=this.positionAbs[this.containers[d].floating?"left":"top"];for(var i=this.items.length-1;i>=0;i--){if(!a.ui.contains(this.containers[d].element[0],this.items[i].item[0]))continue;var j=this.items[i][this.containers[d].floating?"left":"top"];Math.abs(j-h)<f&&(f=Math.abs(j-h),g=this.items[i])}if(!g&&!this.options.dropOnEmpty)return;this.currentContainer=this.containers[d],g?this._rearrange(b,g,null,!0):this._rearrange(b,null,this.containers[d].element,!0),this._trigger("change",b,this._uiHash()),this.containers[d]._trigger("change",b,this._uiHash(this)),this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[d]._trigger("over",b,this._uiHash(this)),this.containers[d].containerCache.over=1}},_createHelper:function(b){var c=this.options,d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[b,this.currentItem])):c.helper=="clone"?this.currentItem.clone():this.currentItem;d.parents("body").length||a(c.appendTo!="parent"?c.appendTo:this.currentItem[0].parentNode)[0].appendChild(d[0]),d[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")}),(d[0].style.width==""||c.forceHelperSize)&&d.width(this.currentItem.width()),(d[0].style.height==""||c.forceHelperSize)&&d.height(this.currentItem.height());return d},_adjustOffsetFromHelper:function(b){typeof b=="string"&&(b=b.split(" ")),a.isArray(b)&&(b={left:+b[0],top:+b[1]||0}),"left"in b&&(this.offset.click.left=b.left+this.margins.left),"right"in b&&(this.offset.click.left=this.helperProportions.width-b.right+this.margins.left),"top"in b&&(this.offset.click.top=b.top+this.margins.top),"bottom"in b&&(this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])&&(b.left+=this.scrollParent.scrollLeft(),b.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)b={top:0,left:0};return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.currentItem.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.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 b=this.options;b.containment=="parent"&&(b.containment=this.helper[0].parentNode);if(b.containment=="document"||b.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a(b.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a(b.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(b.containment)){var c=a(b.containment)[0],d=a(b.containment).offset(),e=a(c).css("overflow")!="hidden";this.containment=[d.left+(parseInt(a(c).css("borderLeftWidth"),10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0)-this.margins.left,d.top+(parseInt(a(c).css("borderTopWidth"),10)||0)+(parseInt(a(c).css("paddingTop"),10)||0)-this.margins.top,d.left+(e?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-(parseInt(a(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,d.top+(e?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("borderTopWidth"),10)||0)-(parseInt(a(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(b,c){c||(c=this.position);var d=b=="absolute"?1:-1,e=this.options,f=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=/(html|body)/i.test(f[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():g?0:f.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:f.scrollLeft())*d)}},_generatePosition:function(b){var c=this.options,d=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(d[0].tagName);this.cssPosition=="relative"&&(this.scrollParent[0]==document||this.scrollParent[0]==this.offsetParent[0])&&(this.offset.relative=this._getRelativeOffset());var f=b.pageX,g=b.pageY;if(this.originalPosition){this.containment&&(b.pageX-this.offset.click.left<this.containment[0]&&(f=this.containment[0]+this.offset.click.left),b.pageY-this.offset.click.top<this.containment[1]&&(g=this.containment[1]+this.offset.click.top),b.pageX-this.offset.click.left>this.containment[2]&&(f=this.containment[2]+this.offset.click.left),b.pageY-this.offset.click.top>this.containment[3]&&(g=this.containment[3]+this.offset.click.top));if(c.grid){var h=this.originalPageY+Math.round((g-this.originalPageY)/c.grid[1])*c.grid[1];g=this.containment?h-this.offset.click.top<this.containment[1]||h-this.offset.click.top>this.containment[3]?h-this.offset.click.top<this.containment[1]?h+c.grid[1]:h-c.grid[1]:h:h;var i=this.originalPageX+Math.round((f-this.originalPageX)/c.grid[0])*c.grid[0];f=this.containment?i-this.offset.click.left<this.containment[0]||i-this.offset.click.left>this.containment[2]?i-this.offset.click.left<this.containment[0]?i+c.grid[0]:i-c.grid[0]:i:i}}return{top:g-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():e?0:d.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():e?0:d.scrollLeft())}},_rearrange:function(a,b,c,d){c?c[0].appendChild(this.placeholder[0]):b.item[0].parentNode.insertBefore(this.placeholder[0],this.direction=="down"?b.item[0]:b.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var e=this,f=this.counter;window.setTimeout(function(){f==e.counter&&e.refreshPositions(!d)},0)},_clear:function(b,c){this.reverting=!1;var d=[],e=this;!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var f in this._storedCSS)if(this._storedCSS[f]=="auto"||this._storedCSS[f]=="static")this._storedCSS[f]="";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!c&&d.push(function(a){this._trigger("receive",a,this._uiHash(this.fromOutside))}),(this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!c&&d.push(function(a){this._trigger("update",a,this._uiHash())});if(!a.ui.contains(this.element[0],this.currentItem[0])){c||d.push(function(a){this._trigger("remove",a,this._uiHash())});for(var f=this.containers.length-1;f>=0;f--)a.ui.contains(this.containers[f].element[0],this.currentItem[0])&&!c&&(d.push(function(a){return function(b){a._trigger("receive",b,this._uiHash(this))}}.call(this,this.containers[f])),d.push(function(a){return function(b){a._trigger("update",b,this._uiHash(this))}}.call(this,this.containers[f])))}for(var f=this.containers.length-1;f>=0;f--)c||d.push(function(a){return function(b){a._trigger("deactivate",b,this._uiHash(this))}}.call(this,this.containers[f])),this.containers[f].containerCache.over&&(d.push(function(a){return function(b){a._trigger("out",b,this._uiHash(this))}}.call(this,this.containers[f])),this.containers[f].containerCache.over=0);this._storedCursor&&a("body").css("cursor",this._storedCursor),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex),this.dragging=!1;if(this.cancelHelperRemoval){if(!c){this._trigger("beforeStop",b,this._uiHash());for(var f=0;f<d.length;f++)d[f].call(this,b);this._trigger("stop",b,this._uiHash())}return!1}c||this._trigger("beforeStop",b,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!=this.currentItem[0]&&this.helper.remove(),this.helper=null;if(!c){for(var f=0;f<d.length;f++)d[f].call(this,b);this._trigger("stop",b,this._uiHash())}this.fromOutside=!1;return!0},_trigger:function(){a.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(b){var c=b||this;return{helper:c.helper,placeholder:c.placeholder||a([]),position:c.position,originalPosition:c.originalPosition,offset:c.positionAbs,item:c.currentItem,sender:b?b.element:null}}}),a.extend(a.ui.sortable,{version:"1.8.18"})})(jQuery);/*
+ * 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
+ *
+ * Depends:
+ *     jquery.ui.core.js
+ *     jquery.ui.widget.js
+ */(function(a,b){a.widget("ui.accordion",{options:{active:0,animated:"slide",autoHeight:!0,clearStyle:!1,collapsible:!1,event:"click",fillSpace:!1,header:"> li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:!1,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var b=this,c=b.options;b.running=0,b.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix"),b.headers=b.element.find(c.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){c.disabled||a(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){c.disabled||a(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){c.disabled||a(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){c.disabled||a(this).removeClass("ui-state-focus")}),b.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");if(c.navigation){var d=b.element.find("a").filter(c.navigationFilter).eq(0);if(d.length){var e=d.closest(".ui-accordion-header");e.length?b.active=e:b.active=d.closest(".ui-accordion-content").prev()}}b.active=b._findActive(b.active||c.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top"),b.active.next().addClass("ui-accordion-content-active"),b._createIcons(),b.resize(),b.element.attr("role","tablist"),b.headers.attr("role","tab").bind("keydown.accordion",function(a){return b._keydown(a)}).next().attr("role","tabpanel"),b.headers.not(b.active||"").attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).next().hide(),b.active.length?b.active.attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}):b.headers.eq(0).attr("tabIndex",0),a.browser.safari||b.headers.find("a").attr("tabIndex",-1),c.event&&b.headers.bind(c.event.split(" ").join(".accordion ")+".accordion",function(a){b._clickHandler.call(b,a,this),a.preventDefault()})},_createIcons:function(){var b=this.options;b.icons&&(a("<span></span>").addClass("ui-icon "+b.icons.header).prependTo(this.headers),this.active.children(".ui-icon").toggleClass(b.icons.header).toggleClass(b.icons.headerSelected),this.element.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.children(".ui-icon").remove(),this.element.removeClass("ui-accordion-icons")},destroy:function(){var b=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled 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("tabIndex"),this.headers.find("a").removeAttr("tabIndex"),this._destroyIcons();var c=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");(b.autoHeight||b.fillHeight)&&c.css("height","");return a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments),b=="active"&&this.activate(c),b=="icons"&&(this._destroyIcons(),c&&this._createIcons()),b=="disabled"&&this.headers.add(this.headers.next())[c?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(b){if(!(this.options.disabled||b.altKey||b.ctrlKey)){var c=a.ui.keyCode,d=this.headers.length,e=this.headers.index(b.target),f=!1;switch(b.keyCode){case c.RIGHT:case c.DOWN:f=this.headers[(e+1)%d];break;case c.LEFT:case c.UP:f=this.headers[(e-1+d)%d];break;case c.SPACE:case c.ENTER:this._clickHandler({target:b.target},b.target),b.preventDefault()}if(f){a(b.target).attr("tabIndex",-1),a(f).attr("tabIndex",0),f.focus();return!1}return!0}},resize:function(){var b=this.options,c;if(b.fillSpace){if(a.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}c=this.element.parent().height(),a.browser.msie&&this.element.parent().css("overflow",d),this.headers.each(function(){c-=a(this).outerHeight(!0)}),this.headers.next().each(function(){a(this).height(Math.max(0,c-a(this).innerHeight()+a(this).height()))}).css("overflow","auto")}else b.autoHeight&&(c=0,this.headers.next().each(function(){c=Math.max(c,a(this).height("").height())}).height(c));return this},activate:function(a){this.options.active=a;var b=this._findActive(a)[0];this._clickHandler({target:b},b);return this},_findActive:function(b){return b?typeof b=="number"?this.headers.filter(":eq("+b+")"):this.headers.not(this.headers.not(b)):b===!1?a([]):this.headers.filter(":eq(0)")},_clickHandler:function(b,c){var d=this.options;if(!d.disabled){if(!b.target){if(!d.collapsible)return;this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header),this.active.next().addClass("ui-accordion-content-active");var e=this.active.next(),f={options:d,newHeader:a([]),oldHeader:d.active,newContent:a([]),oldContent:e},g=this.active=a([]);this._toggle(g,e,f);return}var h=a(b.currentTarget||c),i=h[0]===this.active[0];d.active=d.collapsible&&i?!1:this.headers.index(h);if(this.running||!d.collapsible&&i)return;var j=this.active,g=h.next(),e=this.active.next(),f={options:d,newHeader:i&&d.collapsible?a([]):h,oldHeader:this.active,newContent:i&&d.collapsible?a([]):g,oldContent:e},k=this.headers.index(this.active[0])>this.headers.index(h[0]);this.active=i?a([]):h,this._toggle(g,e,f,i,k),j.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header),i||(h.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected),h.next().addClass("ui-accordion-content-active"));return}},_toggle:function(b,c,d,e,f){var g=this,h=g.options;g.toShow=b,g.toHide=c,g.data=d;var i=function(){if(!!g)return g._completed.apply(g,arguments)};g._trigger("changestart",null,g.data),g.running=c.size()===0?b.size():c.size();if(h.animated){var j={};h.collapsible&&e?j={toShow:a([]),toHide:c,complete:i,down:f,autoHeight:h.autoHeight||h.fillSpace}:j={toShow:b,toHide:c,complete:i,down:f,autoHeight:h.autoHeight||h.fillSpace},h.proxied||(h.proxied=h.animated),h.proxiedDuration||(h.proxiedDuration=h.duration),h.animated=a.isFunction(h.proxied)?h.proxied(j):h.proxied,h.duration=a.isFunction(h.proxiedDuration)?h.proxiedDuration(j):h.proxiedDuration;var k=a.ui.accordion.animations,l=h.duration,m=h.animated;m&&!k[m]&&!a.easing[m]&&(m="slide"),k[m]||(k[m]=function(a){this.slide(a,{easing:m,duration:l||700})}),k[m](j)}else h.collapsible&&e?b.toggle():(c.hide(),b.show()),i(!0);c.prev().attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).blur(),b.prev().attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;this.running||(this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""}),this.toHide.removeClass("ui-accordion-content-active"),this.toHide.length&&(this.toHide.parent()[0].className=this.toHide.parent()[0].className),this._trigger("change",null,this.data))}}),a.extend(a.ui.accordion,{version:"1.8.18",animations:{slide:function(b,c){b=a.extend({easing:"swing",duration:300},b,c);if(!b.toHide.size())b.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},b);else{if(!b.toShow.size()){b.toHide.animate({height:"hide",paddingTop:"hide",paddingBottom:"hide"},b);return}var d=b.toShow.css("overflow"),e=0,f={},g={},h=["height","paddingTop","paddingBottom"],i,j=b.toShow;i=j[0].style.width,j.width(j.parent().width()-parseFloat(j.css("paddingLeft"))-parseFloat(j.css("paddingRight"))-(parseFloat(j.css("borderLeftWidth"))||0)-(parseFloat(j.css("borderRightWidth"))||0)),a.each(h,function(c,d){g[d]="hide";var e=(""+a.css(b.toShow[0],d)).match(/^([\d+-.]+)(.*)$/);f[d]={value:e[1],unit:e[2]||"px"}}),b.toShow.css({height:0,overflow:"hidden"}).show(),b.toHide.filter(":hidden").each(b.complete).end().filter(":visible").animate(g,{step:function(a,c){c.prop=="height"&&(e=c.end-c.start===0?0:(c.now-c.start)/(c.end-c.start)),b.toShow[0].style[c.prop]=e*f[c.prop].value+f[c.prop].unit},duration:b.duration,easing:b.easing,complete:function(){b.autoHeight||b.toShow.css("height",""),b.toShow.css({width:i,overflow:d}),b.complete()}})}},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1e3:200})}}})})(jQuery);/*
+ * 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
+ *
+ * Depends:
+ *     jquery.ui.core.js
+ *     jquery.ui.widget.js
+ *     jquery.ui.position.js
+ */(function(a,b){var c=0;a.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var b=this,c=this.element[0].ownerDocument,d;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(!b.options.disabled&&!b.element.propAttr("readOnly")){d=!1;var e=a.ui.keyCode;switch(c.keyCode){case e.PAGE_UP:b._move("previousPage",c);break;case e.PAGE_DOWN:b._move("nextPage",c);break;case e.UP:b._move("previous",c),c.preventDefault();break;case e.DOWN:b._move("next",c),c.preventDefault();break;case e.ENTER:case e.NUMPAD_ENTER:b.menu.active&&(d=!0,c.preventDefault());case e.TAB:if(!b.menu.active)return;b.menu.select(c);break;case e.ESCAPE:b.element.val(b.term),b.close(c);break;default:clearTimeout(b.searching),b.searching=setTimeout(function(){b.term!=b.element.val()&&(b.selectedItem=null,b.search(null,c))},b.options.delay)}}}).bind("keypress.autocomplete",function(a){d&&(d=!1,a.preventDefault())}).bind("focus.autocomplete",function(){b.options.disabled||(b.selectedItem=null,b.previous=b.element.val())}).bind("blur.autocomplete",function(a){b.options.disabled||(clearTimeout(b.searching),b.closing=setTimeout(function(){b.close(a),b._change(a)},150))}),this._initSource(),this.response=function(){return b._response.apply(b,arguments)},this.menu=a("<ul></ul>").addClass("ui-autocomplete").appendTo(a(this.options.appendTo||"body",c)[0]).mousedown(function(c){var d=b.menu.element[0];a(c.target).closest(".ui-menu-item").length||setTimeout(function(){a(document).one("mousedown",function(c){c.target!==b.element[0]&&c.target!==d&&!a.ui.contains(d,c.target)&&b.close()})},1),setTimeout(function(){clearTimeout(b.closing)},13)}).menu({focus:function(a,c){var d=c.item.data("item.autocomplete");!1!==b._trigger("focus",a,{item:d})&&/^key/.test(a.originalEvent.type)&&b.element.val(d.value)},selected:function(a,d){var e=d.item.data("item.autocomplete"),f=b.previous;b.element[0]!==c.activeElement&&(b.element.focus(),b.previous=f,setTimeout(function(){b.previous=f,b.selectedItem=e},1)),!1!==b._trigger("select",a,{item:e})&&b.element.val(e.value),b.term=b.element.val(),b.close(a),b.selectedItem=e},blur:function(a,c){b.menu.element.is(":visible")&&b.element.val()!==b.term&&b.element.val(b.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu"),a.fn.bgiframe&&this.menu.element.bgiframe(),b.beforeunloadHandler=function(){b.element.removeAttr("autocomplete")},a(window).bind("beforeunload",b.beforeunloadHandler)},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup"),this.menu.element.remove(),a(window).unbind("beforeunload",this.beforeunloadHandler),a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments),b==="source"&&this._initSource(),b==="appendTo"&&this.menu.element.appendTo(a(c||"body",this.element[0].ownerDocument)[0]),b==="disabled"&&c&&this.xhr&&this.xhr.abort()},_initSource:function(){var b=this,d,e;a.isArray(this.options.source)?(d=this.options.source,this.source=function(b,c){c(a.ui.autocomplete.filter(d,b.term))}):typeof this.options.source=="string"?(e=this.options.source,this.source=function(d,f){b.xhr&&b.xhr.abort(),b.xhr=a.ajax({url:e,data:d,dataType:"json",context:{autocompleteRequest:++c},success:function(a,b){this.autocompleteRequest===c&&f(a)},error:function(){this.autocompleteRequest===c&&f([])}})}):this.source=this.options.source},search:function(a,b){a=a!=null?a:this.element.val(),this.term=this.element.val();if(a.length<this.options.minLength)return this.close(b);clearTimeout(this.closing);if(this._trigger("search",b)!==!1)return this._search(a)},_search:function(a){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.source({term:a},this.response)},_response:function(a){!this.options.disabled&&a&&a.length?(a=this._normalize(a),this._suggest(a),this._trigger("open")):this.close(),this.pending--,this.pending||this.element.removeClass("ui-autocomplete-loading")},close:function(a){clearTimeout(this.closing),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.deactivate(),this._trigger("close",a))},_change:function(a){this.previous!==this.element.val()&&this._trigger("change",a,{item:this.selectedItem})},_normalize:function(b){if(b.length&&b[0].label&&b[0].value)return b;return a.map(b,function(b){if(typeof b=="string")return{label:b,value:b};return a.extend({label:b.label||b.value,value:b.value||b.label},b)})},_suggest:function(b){var c=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(c,b),this.menu.deactivate(),this.menu.refresh(),c.show(),this._resizeMenu(),c.position(a.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(new a.Event("mouseover"))},_resizeMenu:function(){var a=this.menu.element;a.outerWidth(Math.max(a.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(b,c){var d=this;a.each(c,function(a,c){d._renderItem(b,c)})},_renderItem:function(b,c){return a("<li></li>").data("item.autocomplete",c).append(a("<a></a>").text(c.label)).appendTo(b)},_move:function(a,b){if(!this.menu.element.is(":visible"))this.search(null,b);else{if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term),this.menu.deactivate();return}this.menu[a](b)}},widget:function(){return this.menu.element}}),a.extend(a.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(b,c){var d=new RegExp(a.ui.autocomplete.escapeRegex(c),"i");return a.grep(b,function(a){return d.test(a.label||a.value||a)})}})})(jQuery),function(a){a.widget("ui.menu",{_create:function(){var b=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){!a(c.target).closest(".ui-menu-item a").length||(c.preventDefault(),b.select(c))}),this.refresh()},refresh:function(){var b=this,c=this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem");c.children("a").addClass("ui-corner-all").attr("tabindex",-1).mouseenter(function(c){b.activate(c,a(this).parent())}).mouseleave(function(){b.deactivate()})},activate:function(a,b){this.deactivate();if(this.hasScroll()){var c=b.offset().top-this.element.offset().top,d=this.element.scrollTop(),e=this.element.height();c<0?this.element.scrollTop(d+c):c>=e&&this.element.scrollTop(d+c-e+b.height())}this.active=b.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end(),this._trigger("focus",a,{item:b})},deactivate:function(){!this.active||(this.active.children("a").removeClass("ui-state-hover").removeAttr("id"),this._trigger("blur"),this.active=null)},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(a,b,c){if(!this.active)this.activate(c,this.element.children(b));else{var d=this.active[a+"All"](".ui-menu-item").eq(0);d.length?this.activate(c,d):this.activate(c,this.element.children(b))}},nextPage:function(b){if(this.hasScroll()){if(!this.active||this.last()){this.activate(b,this.element.children(".ui-menu-item:first"));return}var c=this.active.offset().top,d=this.element.height(),e=this.element.children(".ui-menu-item").filter(function(){var b=a(this).offset().top-c-d+a(this).height();return b<10&&b>-10});e.length||(e=this.element.children(".ui-menu-item:last")),this.activate(b,e)}else this.activate(b,this.element.children(".ui-menu-item").filter(!this.active||this.last()?":first":":last"))},previousPage:function(b){if(this.hasScroll()){if(!this.active||this.first()){this.activate(b,this.element.children(".ui-menu-item:last"));return}var c=this.active.offset().top,d=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var b=a(this).offset().top-c+d-a(this).height();return b<10&&b>-10}),result.length||(result=this.element.children(".ui-menu-item:first")),this.activate(b,result)}else this.activate(b,this.element.children(".ui-menu-item").filter(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()<this.element[a.fn.prop?"prop":"attr"]("scrollHeight")},select:function(a){this._trigger("selected",a,{item:this.active})}})}(jQuery);/*
+ * 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
+ *
+ * Depends:
+ *     jquery.ui.core.js
+ *     jquery.ui.widget.js
+ */(function(a,b){var c,d,e,f,g="ui-button ui-widget ui-state-default ui-corner-all",h="ui-state-hover ui-state-active ",i="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",j=function(){var b=a(this).find(":ui-button");setTimeout(function(){b.button("refresh")},1)},k=function(b){var c=b.name,d=b.form,e=a([]);c&&(d?e=a(d).find("[name='"+c+"']"):e=a("[name='"+c+"']",b.ownerDocument).filter(function(){return!this.form}));return e};a.widget("ui.button",{options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset.button").bind("reset.button",j),typeof this.options.disabled!="boolean"?this.options.disabled=!!this.element.propAttr("disabled"):this.element.propAttr("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var b=this,h=this.options,i=this.type==="checkbox"||this.type==="radio",l="ui-state-hover"+(i?"":" ui-state-active"),m="ui-state-focus";h.label===null&&(h.label=this.buttonElement.html()),this.buttonElement.addClass(g).attr("role","button").bind("mouseenter.button",function(){h.disabled||(a(this).addClass("ui-state-hover"),this===c&&a(this).addClass("ui-state-active"))}).bind("mouseleave.button",function(){h.disabled||a(this).removeClass(l)}).bind("click.button",function(a){h.disabled&&(a.preventDefault(),a.stopImmediatePropagation())}),this.element.bind("focus.button",function(){b.buttonElement.addClass(m)}).bind("blur.button",function(){b.buttonElement.removeClass(m)}),i&&(this.element.bind("change.button",function(){f||b.refresh()}),this.buttonElement.bind("mousedown.button",function(a){h.disabled||(f=!1,d=a.pageX,e=a.pageY)}).bind("mouseup.button",function(a){!h.disabled&&(d!==a.pageX||e!==a.pageY)&&(f=!0)})),this.type==="checkbox"?this.buttonElement.bind("click.button",function(){if(h.disabled||f)return!1;a(this).toggleClass("ui-state-active"),b.buttonElement.attr("aria-pressed",b.element[0].checked)}):this.type==="radio"?this.buttonElement.bind("click.button",function(){if(h.disabled||f)return!1;a(this).addClass("ui-state-active"),b.buttonElement.attr("aria-pressed","true");var c=b.element[0];k(c).not(c).map(function(){return a(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown.button",function(){if(h.disabled)return!1;a(this).addClass("ui-state-active"),c=this,a(document).one("mouseup",function(){c=null})}).bind("mouseup.button",function(){if(h.disabled)return!1;a(this).removeClass("ui-state-active")}).bind("keydown.button",function(b){if(h.disabled)return!1;(b.keyCode==a.ui.keyCode.SPACE||b.keyCode==a.ui.keyCode.ENTER)&&a(this).addClass("ui-state-active")}).bind("keyup.button",function(){a(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(b){b.keyCode===a.ui.keyCode.SPACE&&a(this).click()})),this._setOption("disabled",h.disabled),this._resetButton()},_determineButtonType:function(){this.element.is(":checkbox")?this.type="checkbox":this.element.is(":radio")?this.type="radio":this.element.is("input")?this.type="input":this.type="button";if(this.type==="checkbox"||this.type==="radio"){var a=this.element.parents().filter(":last"),b="label[for='"+this.element.attr("id")+"']";this.buttonElement=a.find(b),this.buttonElement.length||(a=a.length?a.siblings():this.element.siblings(),this.buttonElement=a.filter(b),this.buttonElement.length||(this.buttonElement=a.find(b))),this.element.addClass("ui-helper-hidden-accessible");var c=this.element.is(":checked");c&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.attr("aria-pressed",c)}else this.buttonElement=this.element},widget:function(){return this.buttonElement},destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(g+" "+h+" "+i).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title"),a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments);b==="disabled"?c?this.element.propAttr("disabled",!0):this.element.propAttr("disabled",!1):this._resetButton()},refresh:function(){var b=this.element.is(":disabled");b!==this.options.disabled&&this._setOption("disabled",b),this.type==="radio"?k(this.element[0]).each(function(){a(this).is(":checked")?a(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):a(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):this.type==="checkbox"&&(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(this.type==="input")this.options.label&&this.element.val(this.options.label);else{var b=this.buttonElement.removeClass(i),c=a("<span></span>",this.element[0].ownerDocument).addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,e=d.primary&&d.secondary,f=[];d.primary||d.secondary?(this.options.text&&f.push("ui-button-text-icon"+(e?"s":d.primary?"-primary":"-secondary")),d.primary&&b.prepend("<span class='ui-button-icon-primary ui-icon "+d.primary+"'></span>"),d.secondary&&b.append("<span class='ui-button-icon-secondary ui-icon "+d.secondary+"'></span>"),this.options.text||(f.push(e?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||b.attr("title",c))):f.push("ui-button-text-only"),b.addClass(f.join(" "))}}}),a.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c),a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){var b=this.element.css("direction")==="rtl";this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(b?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(b?"ui-corner-left":"ui-corner-right").end().end()},destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy"),a.Widget.prototype.destroy.call(this)}})})(jQuery);/*
+ * 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
+ *
+ * Depends:
+ *     jquery.ui.core.js
+ *     jquery.ui.widget.js
+ *  jquery.ui.button.js
+ *     jquery.ui.draggable.js
+ *     jquery.ui.mouse.js
+ *     jquery.ui.position.js
+ *     jquery.ui.resizable.js
+ */(function(a,b){var c="ui-dialog ui-widget ui-widget-content ui-corner-all ",d={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},e={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},f=a.attrFn||{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0,click:!0};a.widget("ui.dialog",{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",collision:"fit",using:function(b){var c=a(this).css(b).offset().top;c<0&&a(this).css("top",b.top-c)}},resizable:!0,show:null,stack:!0,title:"",width:300,zIndex:1e3},_create:function(){this.originalTitle=this.element.attr("title"),typeof this.originalTitle!="string"&&(this.originalTitle=""),this.options.title=this.options.title||this.originalTitle;var b=this,d=b.options,e=d.title||"&#160;",f=a.ui.dialog.getTitleId(b.element),g=(b.uiDialog=a("<div></div>")).appendTo(document.body).hide().addClass(c+d.dialogClass).css({zIndex:d.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(c){d.closeOnEscape&&!c.isDefaultPrevented()&&c.keyCode&&c.keyCode===a.ui.keyCode.ESCAPE&&(b.close(c),c.preventDefault())}).attr({role:"dialog","aria-labelledby":f}).mousedown(function(a){b.moveToTop(!1,a)}),h=b.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g),i=(b.uiDialogTitlebar=a("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),j=a('<a href="#"></a>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){j.addClass("ui-state-hover")},function(){j.removeClass("ui-state-hover")}).focus(function(){j.addClass("ui-state-focus")}).blur(function(){j.removeClass("ui-state-focus")}).click(function(a){b.close(a);return!1}).appendTo(i),k=(b.uiDialogTitlebarCloseText=a("<span></span>")).addClass("ui-icon ui-icon-closethick").text(d.closeText).appendTo(j),l=a("<span></span>").addClass("ui-dialog-title").attr("id",f).html(e).prependTo(i);a.isFunction(d.beforeclose)&&!a.isFunction(d.beforeClose)&&(d.beforeClose=d.beforeclose),i.find("*").add(i).disableSelection(),d.draggable&&a.fn.draggable&&b._makeDraggable(),d.resizable&&a.fn.resizable&&b._makeResizable(),b._createButtons(d.buttons),b._isOpen=!1,a.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy(),a.uiDialog.hide(),a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"),a.uiDialog.remove(),a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(b){var c=this,d,e;if(!1!==c._trigger("beforeClose",b)){c.overlay&&c.overlay.destroy(),c.uiDialog.unbind("keypress.ui-dialog"),c._isOpen=!1,c.options.hide?c.uiDialog.hide(c.options.hide,function(){c._trigger("close",b)}):(c.uiDialog.hide(),c._trigger("close",b)),a.ui.dialog.overlay.resize(),c.options.modal&&(d=0,a(".ui-dialog").each(function(){this!==c.uiDialog[0]&&(e=a(this).css("z-index"),isNaN(e)||(d=Math.max(d,e)))}),a.ui.dialog.maxZ=d);return c}},isOpen:function(){return this._isOpen},moveToTop:function(b,c){var d=this,e=d.options,f;if(e.modal&&!b||!e.stack&&!e.modal)return d._trigger("focus",c);e.zIndex>a.ui.dialog.maxZ&&(a.ui.dialog.maxZ=e.zIndex),d.overlay&&(a.ui.dialog.maxZ+=1,d.overlay.$el.css("z-index",a.ui.dialog.overlay.maxZ=a.ui.dialog.maxZ)),f={scrollTop:d.element.scrollTop(),scrollLeft:d.element.scrollLeft()},a.ui.dialog.maxZ+=1,d.uiDialog.css("z-index",a.ui.dialog.maxZ),d.element.attr(f),d._trigger("focus",c);return d},open:function(){if(!this._isOpen){var b=this,c=b.options,d=b.uiDialog;b.overlay=c.modal?new a.ui.dialog.overlay(b):null,b._size(),b._position(c.position),d.show(c.show),b.moveToTop(!0),c.modal&&d.bind("keydown.ui-dialog",function(b){if(b.keyCode===a.ui.keyCode.TAB){var c=a(":tabbable",this),d=c.filter(":first"),e=c.filter(":last");if(b.target===e[0]&&!b.shiftKey){d.focus(1);return!1}if(b.target===d[0]&&b.shiftKey){e.focus(1);return!1}}}),a(b.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus(),b._isOpen=!0,b._trigger("open");return b}},_createButtons:function(b){var c=this,d=!1,e=a("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=a("<div></div>").addClass("ui-dialog-buttonset").appendTo(e);c.uiDialog.find(".ui-dialog-buttonpane").remove(),typeof b=="object"&&b!==null&&a.each(b,function(){return!(d=!0)}),d&&(a.each(b,function(b,d){d=a.isFunction(d)?{click:d,text:b}:d;var e=a('<button type="button"></button>').click(function(){d.click.apply(c.element[0],arguments)}).appendTo(g);a.each(d,function(a,b){a!=="click"&&(a in f?e[a](b):e.attr(a,b))}),a.fn.button&&e.button()}),e.appendTo(c.uiDialog))},_makeDraggable:function(){function f(a){return{position:a.position,offset:a.offset}}var b=this,c=b.options,d=a(document),e;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(d,g){e=c.height==="auto"?"auto":a(this).height(),a(this).height(a(this).height()).addClass("ui-dialog-dragging"),b._trigger("dragStart",d,f(g))},drag:function(a,c){b._trigger("drag",a,f(c))},stop:function(g,h){c.position=[h.position.left-d.scrollLeft(),h.position.top-d.scrollTop()],a(this).removeClass("ui-dialog-dragging").height(e),b._trigger("dragStop",g,f(h)),a.ui.dialog.overlay.resize()}})},_makeResizable:function(c){function h(a){return{originalPosition:a.originalPosition,originalSize:a.originalSize,position:a.position,size:a.size}}c=c===b?this.options.resizable:c;var d=this,e=d.options,f=d.uiDialog.css("position"),g=typeof c=="string"?c:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:g,start:function(b,c){a(this).addClass("ui-dialog-resizing"),d._trigger("resizeStart",b,h(c))},resize:function(a,b){d._trigger("resize",a,h(b))},stop:function(b,c){a(this).removeClass("ui-dialog-resizing"),e.height=a(this).height(),e.width=a(this).width(),d._trigger("resizeStop",b,h(c)),a.ui.dialog.overlay.resize()}}).css("position",f).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(b){var c=[],d=[0,0],e;if(b){if(typeof b=="string"||typeof b=="object"&&"0"in b)c=b.split?b.split(" "):[b[0],b[1]],c.length===1&&(c[1]=c[0]),a.each(["left","top"],function(a,b){+c[a]===c[a]&&(d[a]=c[a],c[a]=b)}),b={my:c.join(" "),at:c.join(" "),offset:d.join(" ")};b=a.extend({},a.ui.dialog.prototype.options.position,b)}else b=a.ui.dialog.prototype.options.position;e=this.uiDialog.is(":visible"),e||this.uiDialog.show(),this.uiDialog.css({top:0,left:0}).position(a.extend({of:window},b)),e||this.uiDialog.hide()},_setOptions:function(b){var c=this,f={},g=!1;a.each(b,function(a,b){c._setOption(a,b),a in d&&(g=!0),a in e&&(f[a]=b)}),g&&this._size(),this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",f)},_setOption:function(b,d){var e=this,f=e.uiDialog;switch(b){case"beforeclose":b="beforeClose";break;case"buttons":e._createButtons(d);break;case"closeText":e.uiDialogTitlebarCloseText.text(""+d);break;case"dialogClass":f.removeClass(e.options.dialogClass).addClass(c+d);break;case"disabled":d?f.addClass("ui-dialog-disabled"):f.removeClass("ui-dialog-disabled");break;case"draggable":var g=f.is(":data(draggable)");g&&!d&&f.draggable("destroy"),!g&&d&&e._makeDraggable();break;case"position":e._position(d);break;case"resizable":var h=f.is(":data(resizable)");h&&!d&&f.resizable("destroy"),h&&typeof d=="string"&&f.resizable("option","handles",d),!h&&d!==!1&&e._makeResizable(d);break;case"title":a(".ui-dialog-title",e.uiDialogTitlebar).html(""+(d||"&#160;"))}a.Widget.prototype._setOption.apply(e,arguments)},_size:function(){var b=this.options,c,d,e=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0}),b.minWidth>b.width&&(b.width=b.minWidth),c=this.uiDialog.css({height:"auto",width:b.width}).height(),d=Math.max(0,b.minHeight-c);if(b.height==="auto")if(a.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();var f=this.element.css("height","auto").height();e||this.uiDialog.hide(),this.element.height(Math.max(f,d))}else this.element.height(Math.max(b.height-c,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}}),a.extend(a.ui.dialog,{version:"1.8.18",uuid:0,maxZ:0,getTitleId:function(a){var b=a.attr("id");b||(this.uuid+=1,b=this.uuid);return"ui-dialog-title-"+b},overlay:function(b){this.$el=a.ui.dialog.overlay.create(b)}}),a.extend(a.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:a.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(b){this.instances.length===0&&(setTimeout(function(){a.ui.dialog.overlay.instances.length&&a(document).bind(a.ui.dialog.overlay.events,function(b){if(a(b.target).zIndex()<a.ui.dialog.overlay.maxZ)return!1})},1),a(document).bind("keydown.dialog-overlay",function(c){b.options.closeOnEscape&&!c.isDefaultPrevented()&&c.keyCode&&c.keyCode===a.ui.keyCode.ESCAPE&&(b.close(c),c.preventDefault())}),a(window).bind("resize.dialog-overlay",a.ui.dialog.overlay.resize));var c=(this.oldInstances.pop()||a("<div></div>").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});a.fn.bgiframe&&c.bgiframe(),this.instances.push(c);return c},destroy:function(b){var c=a.inArray(b,this.instances);c!=-1&&this.oldInstances.push(this.instances.splice(c,1)[0]),this.instances.length===0&&a([document,window]).unbind(".dialog-overlay"),b.remove();var d=0;a.each(this.instances,function(){d=Math.max(d,this.css("z-index"))}),this.maxZ=d},height:function(){var b,c;if(a.browser.msie&&a.browser.version<7){b=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),c=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return b<c?a(window).height()+"px":b+"px"}return a(document).height()+"px"},width:function(){var b,c;if(a.browser.msie){b=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth),c=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth);return b<c?a(window).width()+"px":b+"px"}return a(document).width()+"px"},resize:function(){var b=a([]);a.each(a.ui.dialog.overlay.instances,function(){b=b.add(this)}),b.css({width:0,height:0}).css({width:a.ui.dialog.overlay.width(),height:a.ui.dialog.overlay.height()})}}),a.extend(a.ui.dialog.overlay.prototype,{destroy:function(){a.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);/*
+ * 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
+ *
+ * Depends:
+ *     jquery.ui.core.js
+ *     jquery.ui.mouse.js
+ *     jquery.ui.widget.js
+ */(function(a,b){var c=5;a.widget("ui.slider",a.ui.mouse,{widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null},_create:function(){var b=this,d=this.options,e=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),f="<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>",g=d.values&&d.values.length||1,h=[];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"+(d.disabled?" ui-slider-disabled ui-disabled":"")),this.range=a([]),d.range&&(d.range===!0&&(d.values||(d.values=[this._valueMin(),this._valueMin()]),d.values.length&&d.values.length!==2&&(d.values=[d.values[0],d.values[0]])),this.range=a("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(d.range==="min"||d.range==="max"?" ui-slider-range-"+d.range:"")));for(var i=e.length;i<g;i+=1)h.push(f);this.handles=e.add(a(h.join("")).appendTo(b.element)),this.handle=this.handles.eq(0),this.handles.add(this.range).filter("a").click(function(a){a.preventDefault()}).hover(function(){d.disabled||a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")}).focus(function(){d.disabled?a(this).blur():(a(".ui-slider .ui-state-focus").removeClass("ui-state-focus"),a(this).addClass("ui-state-focus"))}).blur(function(){a(this).removeClass("ui-state-focus")}),this.handles.each(function(b){a(this).data("index.ui-slider-handle",b)}),this.handles.keydown(function(d){var e=a(this).data("index.ui-slider-handle"),f,g,h,i;if(!b.options.disabled){switch(d.keyCode){case a.ui.keyCode.HOME:case a.ui.keyCode.END:case a.ui.keyCode.PAGE_UP:case a.ui.keyCode.PAGE_DOWN:case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:d.preventDefault();if(!b._keySliding){b._keySliding=!0,a(this).addClass("ui-state-active"),f=b._start(d,e);if(f===!1)return}}i=b.options.step,b.options.values&&b.options.values.length?g=h=b.values(e):g=h=b.value();switch(d.keyCode){case a.ui.keyCode.HOME:h=b._valueMin();break;case a.ui.keyCode.END:h=b._valueMax();break;case a.ui.keyCode.PAGE_UP:h=b._trimAlignValue(g+(b._valueMax()-b._valueMin())/c);break;case a.ui.keyCode.PAGE_DOWN:h=b._trimAlignValue(g-(b._valueMax()-b._valueMin())/c);break;case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:if(g===b._valueMax())return;h=b._trimAlignValue(g+i);break;case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:if(g===b._valueMin())return;h=b._trimAlignValue(g-i)}b._slide(d,e,h)}}).keyup(function(c){var d=a(this).data("index.ui-slider-handle");b._keySliding&&(b._keySliding=!1,b._stop(c,d),b._change(c,d),a(this).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").removeData("slider").unbind(".slider"),this._mouseDestroy();return this},_mouseCapture:function(b){var c=this.options,d,e,f,g,h,i,j,k,l;if(c.disabled)return!1;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),d={x:b.pageX,y:b.pageY},e=this._normValueFromMouse(d),f=this._valueMax()-this._valueMin()+1,h=this,this.handles.each(function(b){var c=Math.abs(e-h.values(b));f>c&&(f=c,g=a(this),i=b)}),c.range===!0&&this.values(1)===c.min&&(i+=1,g=a(this.handles[i])),j=this._start(b,i);if(j===!1)return!1;this._mouseSliding=!0,h._handleIndex=i,g.addClass("ui-state-active").focus(),k=g.offset(),l=!a(b.target).parents().andSelf().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:b.pageX-k.left-g.width()/2,top:b.pageY-k.top-g.height()/2-(parseInt(g.css("borderTopWidth"),10)||0)-(parseInt(g.css("borderBottomWidth"),10)||0)+(parseInt(g.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(b,i,e),this._animateOff=!0;return!0},_mouseStart:function(a){return!0},_mouseDrag:function(a){var b={x:a.pageX,y:a.pageY},c=this._normValueFromMouse(b);this._slide(a,this._handleIndex,c);return!1},_mouseStop:function(a){this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(a,this._handleIndex),this._change(a,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1;return!1},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b,c,d,e,f;this.orientation==="horizontal"?(b=this.elementSize.width,c=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(b=this.elementSize.height,c=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),d=c/b,d>1&&(d=1),d<0&&(d=0),this.orientation==="vertical"&&(d=1-d),e=this._valueMax()-this._valueMin(),f=this._valueMin()+d*e;return this._trimAlignValue(f)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values());return this._trigger("start",a,c)},_slide:function(a,b,c){var d,e,f;this.options.values&&this.options.values.length?(d=this.values(b?0:1),this.options.values.length===2&&this.options.range===!0&&(b===0&&c>d||b===1&&c<d)&&(c=d),c!==this.values(b)&&(e=this.values(),e[b]=c,f=this._trigger("slide",a,{handle:this.handles[b],value:c,values:e}),d=this.values(b?0:1),f!==!1&&this.values(b,c,!0))):c!==this.value()&&(f=this._trigger("slide",a,{handle:this.handles[b],value:c}),f!==!1&&this.value(c))},_stop:function(a,b){var c={handle:this.handles[b],value:this.value()};this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values()),this._trigger("stop",a,c)},_change:function(a,b){if(!this._keySliding&&!this._mouseSliding){var c={handle:this.handles[b],value:this.value()};this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values()),this._trigger("change",a,c)}},value:function(a){if(arguments.length)this.options.value=this._trimAlignValue(a),this._refreshValue(),this._change(null,0);else return this._value()},values:function(b,c){var d,e,f;if(arguments.length>1)this.options.values[b]=this._trimAlignValue(c),this._refreshValue(),this._change(null,b);else{if(!arguments.length)return this._values();if(!a.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(b):this.value();d=this.options.values,e=arguments[0];for(f=0;f<d.length;f+=1)d[f]=this._trimAlignValue(e[f]),this._change(null,f);this._refreshValue()}},_setOption:function(b,c){var d,e=0;a.isArray(this.options.values)&&(e=this.options.values.length),a.Widget.prototype._setOption.apply(this,arguments);switch(b){case"disabled":c?(this.handles.filter(".ui-state-focus").blur(),this.handles.removeClass("ui-state-hover"),this.handles.propAttr("disabled",!0),this.element.addClass("ui-disabled")):(this.handles.propAttr("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":this._animateOff=!0,this._refreshValue();for(d=0;d<e;d+=1)this._change(null,d);this._animateOff=!1}},_value:function(){var a=this.options.value;a=this._trimAlignValue(a);return a},_values:function(a){var b,c,d;if(arguments.length){b=this.options.values[a],b=this._trimAlignValue(b);return b}c=this.options.values.slice();for(d=0;d<c.length;d+=1)c[d]=this._trimAlignValue(c[d]);return c},_trimAlignValue:function(a){if(a<=this._valueMin())return this._valueMin();if(a>=this._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=(a-this._valueMin())%b,d=a-c;Math.abs(c)*2>=b&&(d+=c>0?b:-b);return parseFloat(d.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var b=this.options.range,c=this.options,d=this,e=this._animateOff?!1:c.animate,f,g={},h,i,j,k;this.options.values&&this.options.values.length?this.handles.each(function(b,i){f=(d.values(b)-d._valueMin())/(d._valueMax()-d._valueMin())*100,g[d.orientation==="horizontal"?"left":"bottom"]=f+"%",a(this).stop(1,1)[e?"animate":"css"](g,c.animate),d.options.range===!0&&(d.orientation==="horizontal"?(b===0&&d.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},c.animate),b===1&&d.range[e?"animate":"css"]({width:f-h+"%"},{queue:!1,duration:c.animate})):(b===0&&d.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},c.animate),b===1&&d.range[e?"animate":"css"]({height:f-h+"%"},{queue:!1,duration:c.animate}))),h=f}):(i=this.value(),j=this._valueMin(),k=this._valueMax(),f=k!==j?(i-j)/(k-j)*100:0,g[d.orientation==="horizontal"?"left":"bottom"]=f+"%",this.handle.stop(1,1)[e?"animate":"css"](g,c.animate),b==="min"&&this.orientation==="horizontal"&&this.range.stop(1,1)[e?"animate":"css"]({width:f+"%"},c.animate),b==="max"&&this.orientation==="horizontal"&&this.range[e?"animate":"css"]({width:100-f+"%"},{queue:!1,duration:c.animate}),b==="min"&&this.orientation==="vertical"&&this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},c.animate),b==="max"&&this.orientation==="vertical"&&this.range[e?"animate":"css"]({height:100-f+"%"},{queue:!1,duration:c.animate}))}}),a.extend(a.ui.slider,{version:"1.8.18"})})(jQuery);/*
+ * 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
+ *
+ * Depends:
+ *     jquery.ui.core.js
+ *     jquery.ui.widget.js
+ */(function(a,b){function f(){return++d}function e(){return++c}var c=0,d=0;a.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:!1,cookie:null,collapsible:!1,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"<div></div>",remove:null,select:null,show:null,spinner:"<em>Loading&#8230;</em>",tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},_create:function(){this._tabify(!0)},_setOption:function(a,b){if(a=="selected"){if(this.options.collapsible&&b==this.options.selected)return;this.select(b)}else this.options[a]=b,this._tabify()},_tabId:function(a){return a.title&&a.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+e()},_sanitizeSelector:function(a){return a.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+f());return a.cookie.apply(null,[b].concat(a.makeArray(arguments)))},_ui:function(a,b){return{tab:a,panel:b,index:this.anchors.index(a)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b=a(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function m(b,c){b.css("display",""),!a.support.opacity&&c.opacity&&b[0].style.removeAttribute("filter")}var d=this,e=this.options,f=/^#.+/;this.list=this.element.find("ol,ul").eq(0),this.lis=a(" > li:has(a[href])",this.list),this.anchors=this.lis.map(function(){return a("a",this)[0]}),this.panels=a([]),this.anchors.each(function(b,c){var g=a(c).attr("href"),h=g.split("#")[0],i;h&&(h===location.toString().split("#")[0]||(i=a("base")[0])&&h===i.href)&&(g=c.hash,c.href=g);if(f.test(g))d.panels=d.panels.add(d.element.find(d._sanitizeSelector(g)));else if(g&&g!=="#"){a.data(c,"href.tabs",g),a.data(c,"load.tabs",g.replace(/#.*$/,""));var j=d._tabId(c);c.href="#"+j;var k=d.element.find("#"+j);k.length||(k=a(e.panelTemplate).attr("id",j).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(d.panels[b-1]||d.list),k.data("destroy.tabs",!0)),d.panels=d.panels.add(k)}else e.disabled.push(b)}),c?(this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"),this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.lis.addClass("ui-state-default ui-corner-top"),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom"),e.selected===b?(location.hash&&this.anchors.each(function(a,b){if(b.hash==location.hash){e.selected=a;return!1}}),typeof e.selected!="number"&&e.cookie&&(e.selected=parseInt(d._cookie(),10)),typeof e.selected!="number"&&this.lis.filter(".ui-tabs-selected").length&&(e.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))),e.selected=e.selected||(this.lis.length?0:-1)):e.selected===null&&(e.selected=-1),e.selected=e.selected>=0&&this.anchors[e.selected]||e.selected<0?e.selected:0,e.disabled=a.unique(e.disabled.concat(a.map(this.lis.filter(".ui-state-disabled"),function(a,b){return d.lis.index(a)}))).sort(),a.inArray(e.selected,e.disabled)!=-1&&e.disabled.splice(a.inArray(e.selected,e.disabled),1),this.panels.addClass("ui-tabs-hide"),this.lis.removeClass("ui-tabs-selected ui-state-active"),e.selected>=0&&this.anchors.length&&(d.element.find(d._sanitizeSelector(d.anchors[e.selected].hash)).removeClass("ui-tabs-hide"),this.lis.eq(e.selected).addClass("ui-tabs-selected ui-state-active"),d.element.queue("tabs",function(){d._trigger("show",null,d._ui(d.anchors[e.selected],d.element.find(d._sanitizeSelector(d.anchors[e.selected].hash))[0]))}),this.load(e.selected)),a(window).bind("unload",function(){d.lis.add(d.anchors).unbind(".tabs"),d.lis=d.anchors=d.panels=null})):e.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")),this.element[e.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible"),e.cookie&&this._cookie(e.selected,e.cookie);for(var g=0,h;h=this.lis[g];g++)a(h)[a.inArray(g,e.disabled)!=-1&&!a(h).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");e.cache===!1&&this.anchors.removeData("cache.tabs"),this.lis.add(this.anchors).unbind(".tabs");if(e.event!=="mouseover"){var i=function(a,b){b.is(":not(.ui-state-disabled)")&&b.addClass("ui-state-"+a)},j=function(a,b){b.removeClass("ui-state-"+a)};this.lis.bind("mouseover.tabs",function(){i("hover",a(this))}),this.lis.bind("mouseout.tabs",function(){j("hover",a(this))}),this.anchors.bind("focus.tabs",function(){i("focus",a(this).closest("li"))}),this.anchors.bind("blur.tabs",function(){j("focus",a(this).closest("li"))})}var k,l;e.fx&&(a.isArray(e.fx)?(k=e.fx[0],l=e.fx[1]):k=l=e.fx);var n=l?function(b,c){a(b).closest("li").addClass("ui-tabs-selected ui-state-active"),c.hide().removeClass("ui-tabs-hide").animate(l,l.duration||"normal",function(){m(c,l),d._trigger("show",null,d._ui(b,c[0]))})}:function(b,c){a(b).closest("li").addClass("ui-tabs-selected ui-state-active"),c.removeClass("ui-tabs-hide"),d._trigger("show",null,d._ui(b,c[0]))},o=k?function(a,b){b.animate(k,k.duration||"normal",function(){d.lis.removeClass("ui-tabs-selected ui-state-active"),b.addClass("ui-tabs-hide"),m(b,k),d.element.dequeue("tabs")})}:function(a,b,c){d.lis.removeClass("ui-tabs-selected ui-state-active"),b.addClass("ui-tabs-hide"),d.element.dequeue("tabs")};this.anchors.bind(e.event+".tabs",function(){var b=this,c=a(b).closest("li"),f=d.panels.filter(":not(.ui-tabs-hide)"),g=d.element.find(d._sanitizeSelector(b.hash));if(c.hasClass("ui-tabs-selected")&&!e.collapsible||c.hasClass("ui-state-disabled")||c.hasClass("ui-state-processing")||d.panels.filter(":animated").length||d._trigger("select",null,d._ui(this,g[0]))===!1){this.blur();return!1}e.selected=d.anchors.index(this),d.abort();if(e.collapsible){if(c.hasClass("ui-tabs-selected")){e.selected=-1,e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){o(b,f)}).dequeue("tabs"),this.blur();return!1}if(!f.length){e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){n(b,g)}),d.load(d.anchors.index(this)),this.blur();return!1}}e.cookie&&d._cookie(e.selected,e.cookie);if(g.length)f.length&&d.element.queue("tabs",function(){o(b,f)}),d.element.queue("tabs",function(){n(b,g)}),d.load(d.anchors.index(this));else throw"jQuery UI Tabs: Mismatching fragment identifier.";a.browser.msie&&this.blur()}),this.anchors.bind("click.tabs",function(){return!1})},_getIndex:function(a){typeof a=="string"&&(a=this.anchors.index(this.anchors.filter("[href$="+a+"]")));return a},destroy:function(){var b=this.options;this.abort(),this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs"),this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.anchors.each(function(){var b=a.data(this,"href.tabs");b&&(this.href=b);var c=a(this).unbind(".tabs");a.each(["href","load","cache"],function(a,b){c.removeData(b+".tabs")})}),this.lis.unbind(".tabs").add(this.panels).each(function(){a.data(this,"destroy.tabs")?a(this).remove():a(this).removeClass(["ui-state-default","ui-corner-top","ui-tabs-selected","ui-state-active","ui-state-hover","ui-state-focus","ui-state-disabled","ui-tabs-panel","ui-widget-content","ui-corner-bottom","ui-tabs-hide"].join(" "))}),b.cookie&&this._cookie(null,b.cookie);return this},add:function(c,d,e){e===b&&(e=this.anchors.length);var f=this,g=this.options,h=a(g.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,d)),i=c.indexOf("#")?this._tabId(a("a",h)[0]):c.replace("#","");h.addClass("ui-state-default ui-corner-top").data("destroy.tabs",!0);var j=f.element.find("#"+i);j.length||(j=a(g.panelTemplate).attr("id",i).data("destroy.tabs",!0)),j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide"),e>=this.lis.length?(h.appendTo(this.list),j.appendTo(this.list[0].parentNode)):(h.insertBefore(this.lis[e]),j.insertBefore(this.panels[e])),g.disabled=a.map(g.disabled,function(a,b){return a>=e?++a:a}),this._tabify(),this.anchors.length==1&&(g.selected=0,h.addClass("ui-tabs-selected ui-state-active"),j.removeClass("ui-tabs-hide"),this.element.queue("tabs",function(){f._trigger("show",null,f._ui(f.anchors[0],f.panels[0]))}),this.load(0)),this._trigger("add",null,this._ui(this.anchors[e],this.panels[e]));return this},remove:function(b){b=this._getIndex(b);var c=this.options,d=this.lis.eq(b).remove(),e=this.panels.eq(b).remove();d.hasClass("ui-tabs-selected")&&this.anchors.length>1&&this.select(b+(b+1<this.anchors.length?1:-1)),c.disabled=a.map(a.grep(c.disabled,function(a,c){return a!=b}),function(a,c){return a>=b?--a:a}),this._tabify(),this._trigger("remove",null,this._ui(d.find("a")[0],e[0]));return this},enable:function(b){b=this._getIndex(b);var c=this.options;if(a.inArray(b,c.disabled)!=-1){this.lis.eq(b).removeClass("ui-state-disabled"),c.disabled=a.grep(c.disabled,function(a,c){return a!=b}),this._trigger("enable",null,this._ui(this.anchors[b],this.panels[b]));return this}},disable:function(a){a=this._getIndex(a);var b=this,c=this.options;a!=c.selected&&(this.lis.eq(a).addClass("ui-state-disabled"),c.disabled.push(a),c.disabled.sort(),this._trigger("disable",null,this._ui(this.anchors[a],this.panels[a])));return this},select:function(a){a=this._getIndex(a);if(a==-1)if(this.options.collapsible&&this.options.selected!=-1)a=this.options.selected;else return this;this.anchors.eq(a).trigger(this.options.event+".tabs");return this},load:function(b){b=this._getIndex(b);var c=this,d=this.options,e=this.anchors.eq(b)[0],f=a.data(e,"load.tabs");this.abort();if(!f||this.element.queue("tabs").length!==0&&a.data(e,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(b).addClass("ui-state-processing");if(d.spinner){var g=a("span",e);g.data("label.tabs",g.html()).html(d.spinner)}this.xhr=a.ajax(a.extend({},d.ajaxOptions,{url:f,success:function(f,g){c.element.find(c._sanitizeSelector(e.hash)).html(f),c._cleanup(),d.cache&&a.data(e,"cache.tabs",!0),c._trigger("load",null,c._ui(c.anchors[b],c.panels[b]));try{d.ajaxOptions.success(f,g)}catch(h){}},error:function(a,f,g){c._cleanup(),c._trigger("load",null,c._ui(c.anchors[b],c.panels[b]));try{d.ajaxOptions.error(a,f,b,e)}catch(g){}}})),c.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]),this.panels.stop(!1,!0),this.element.queue("tabs",this.element.queue("tabs").splice(-2,2)),this.xhr&&(this.xhr.abort(),delete this.xhr),this._cleanup();return this},url:function(a,b){this.anchors.eq(a).removeData("cache.tabs").data("load.tabs",b);return this},length:function(){return this.anchors.length}}),a.extend(a.ui.tabs,{version:"1.8.18"}),a.extend(a.ui.tabs.prototype,{rotation:null,rotate:function(a,b){var c=this,d=this.options,e=c._rotate||(c._rotate=function(b){clearTimeout(c.rotation),c.rotation=setTimeout(function(){var a=d.selected;c.select(++a<c.anchors.length?a:0)},a),b&&b.stopPropagation()}),f=c._unrotate||(c._unrotate=b?function(a){t=d.selected,e()}:function(a){a.clientX&&c.rotate(null)});a?(this.element.bind("tabsshow",e),this.anchors.bind(d.event+".tabs",f),e()):(clearTimeout(c.rotation),this.element.unbind("tabsshow",e),this.anchors.unbind(d.event+".tabs",f),delete this._rotate,delete this._unrotate);return this}})})(jQuery);/*
+ * 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
+ *
+ * Depends:
+ *     jquery.ui.core.js
+ */(function($,undefined){function isArray(a){return a&&($.browser.safari&&typeof a=="object"&&a.length||a.constructor&&a.constructor.toString().match(/\Array\(\)/))}function extendRemove(a,b){$.extend(a,b);for(var c in b)if(b[c]==null||b[c]==undefined)a[c]=b[c];return a}function bindHover(a){var b="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return a.bind("mouseout",function(a){var c=$(a.target).closest(b);!c.length||c.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(c){var d=$(c.target).closest(b);!$.datepicker._isDisabledDatepicker(instActive.inline?a.parent()[0]:instActive.input[0])&&!!d.length&&(d.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),d.addClass("ui-state-hover"),d.hasClass("ui-datepicker-prev")&&d.addClass("ui-datepicker-prev-hover"),d.hasClass("ui-datepicker-next")&&d.addClass("ui-datepicker-next-hover"))})}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>'))}$.extend($.ui,{datepicker:{version:"1.8.18"}});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(a){extendRemove(this._defaults,a||{});return 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=nodeName=="div"||nodeName=="span";target.id||(this.uuid+=1,target.id="dp"+this.uuid);var inst=this._newInst($(target),inline);inst.settings=$.extend({},settings||{},inlineSettings||{}),nodeName=="input"?this._connectDatepicker(target,inst):inline&&this._inlineDatepicker(target,inst)},_newInst:function(a,b){var c=a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1");return{id:c,input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:b?bindHover($('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')):this.dpDiv}},_connectDatepicker:function(a,b){var c=$(a);b.append=$([]),b.trigger=$([]);c.hasClass(this.markerClassName)||(this._attachments(c,b),c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(a,c,d){b.settings[c]=d}).bind("getData.datepicker",function(a,c){return this._get(b,c)}),this._autoSize(b),$.data(a,PROP_NAME,b),b.settings.disabled&&this._disableDatepicker(a))},_attachments:function(a,b){var c=this._get(b,"appendText"),d=this._get(b,"isRTL");b.append&&b.append.remove(),c&&(b.append=$('<span class="'+this._appendClass+'">'+c+"</span>"),a[d?"before":"after"](b.append)),a.unbind("focus",this._showDatepicker),b.trigger&&b.trigger.remove();var e=this._get(b,"showOn");(e=="focus"||e=="both")&&a.focus(this._showDatepicker);if(e=="button"||e=="both"){var f=this._get(b,"buttonText"),g=this._get(b,"buttonImage");b.trigger=$(this._get(b,"buttonImageOnly")?$("<img/>").addClass(this._triggerClass).attr({src:g,alt:f,title:f}):$('<button type="button"></button>').addClass(this._triggerClass).html(g==""?f:$("<img/>").attr({src:g,alt:f,title:f}))),a[d?"before":"after"](b.trigger),b.trigger.click(function(){$.datepicker._datepickerShowing&&$.datepicker._lastInput==a[0]?$.datepicker._hideDatepicker():$.datepicker._datepickerShowing&&$.datepicker._lastInput!=a[0]?($.datepicker._hideDatepicker(),$.datepicker._showDatepicker(a[0])):$.datepicker._showDatepicker(a[0]);return!1})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var d=function(a){var b=0,c=0;for(var d=0;d<a.length;d++)a[d].length>b&&(b=a[d].length,c=d);return c};b.setMonth(d(this._get(a,c.match(/MM/)?"monthNames":"monthNamesShort"))),b.setDate(d(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=$(a);c.hasClass(this.markerClassName)||(c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(a,c,d){b.settings[c]=d}).bind("getData.datepicker",function(a,c){return this._get(b,c)}),$.data(a,PROP_NAME,b),this._setDate(b,this._getDefaultDate(b),!0),this._updateDatepicker(b),this._updateAlternate(b),b.settings.disabled&&this._disableDatepicker(a),b.dpDiv.css("display","block"))},_dialogDatepicker:function(a,b,c,d,e){var f=this._dialogInst;if(!f){this.uuid+=1;var g="dp"+this.uuid;this._dialogInput=$('<input type="text" id="'+g+'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>'),this._dialogInput.keydown(this._doKeyDown),$("body").append(this._dialogInput),f=this._dialogInst=this._newInst(this._dialogInput,!1),f.settings={},$.data(this._dialogInput[0],PROP_NAME,f)}extendRemove(f.settings,d||{}),b=b&&b.constructor==Date?this._formatDate(f,b):b,this._dialogInput.val(b),this._pos=e?e.length?e:[e.pageX,e.pageY]:null;if(!this._pos){var h=document.documentElement.clientWidth,i=document.documentElement.clientHeight,j=document.documentElement.scrollLeft||document.body.scrollLeft,k=document.documentElement.scrollTop||document.body.scrollTop;this._pos=[h/2-100+j,i/2-150+k]}this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),f.settings.onSelect=c,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),$.blockUI&&$.blockUI(this.dpDiv),$.data(this._dialogInput[0],PROP_NAME,f);return this},_destroyDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!!b.hasClass(this.markerClassName)){var d=a.nodeName.toLowerCase();$.removeData(a,PROP_NAME),d=="input"?(c.append.remove(),c.trigger.remove(),b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):(d=="div"||d=="span")&&b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!!b.hasClass(this.markerClassName)){var d=a.nodeName.toLowerCase();if(d=="input")a.disabled=!1,c.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""});else if(d=="div"||d=="span"){var e=b.children("."+this._inlineClass);e.children().removeClass("ui-state-disabled"),e.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")}this._disabledInputs=$.map(this._disabledInputs,function(b){return b==a?null:b})}},_disableDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!!b.hasClass(this.markerClassName)){var d=a.nodeName.toLowerCase();if(d=="input")a.disabled=!0,c.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"});else if(d=="div"||d=="span"){var e=b.children("."+this._inlineClass);e.children().addClass("ui-state-disabled"),e.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled")}this._disabledInputs=$.map(this._disabledInputs,function(b){return b==a?null:b}),this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return!1;for(var b=0;b<this._disabledInputs.length;b++)if(this._disabledInputs[b]==a)return!0;return!1},_getInst:function(a){try{return $.data(a,PROP_NAME)}catch(b){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(a,b,c){var d=this._getInst(a);if(arguments.length==2&&typeof b=="string")return b=="defaults"?$.extend({},$.datepicker._defaults):d?b=="all"?$.extend({},d.settings):this._get(d,b):null;var e=b||{};typeof b=="string"&&(e={},e[b]=c);if(d){this._curInst==d&&this._hideDatepicker();var f=this._getDateDatepicker(a,!0),g=this._getMinMaxDate(d,"min"),h=this._getMinMaxDate(d,"max");extendRemove(d.settings,e),g!==null&&e.dateFormat!==undefined&&e.minDate===undefined&&(d.settings.minDate=this._formatDate(d,g)),h!==null&&e.dateFormat!==undefined&&e.maxDate===undefined&&(d.settings.maxDate=this._formatDate(d,h)),this._attachments($(a),d),this._autoSize(d),this._setDate(d,f),this._updateAlternate(d),this._updateDatepicker(d)}},_changeDatepicker:function(a,b,c){this._optionDatepicker(a,b,c)},_refreshDatepicker:function(a){var b=this._getInst(a);b&&this._updateDatepicker(b)},_setDateDatepicker:function(a,b){var c=this._getInst(a);c&&(this._setDate(c,b),this._updateDatepicker(c),this._updateAlternate(c))},_getDateDatepicker:function(a,b){var c=this._getInst(a);c&&!c.inline&&this._setDateFromField(c,b);return c?this._getDate(c):null},_doKeyDown:function(a){var b=$.datepicker._getInst(a.target),c=!0,d=b.dpDiv.is(".ui-datepicker-rtl");b._keyEvent=!0;if($.datepicker._datepickerShowing)switch(a.keyCode){case 9:$.datepicker._hideDatepicker(),c=!1;break;case 13:var e=$("td."+$.datepicker._dayOverClass+":not(."+$.datepicker._currentClass+")",b.dpDiv);e[0]&&$.datepicker._selectDay(a.target,b.selectedMonth,b.selectedYear,e[0]);var f=$.datepicker._get(b,"onSelect");if(f){var g=$.datepicker._formatDate(b);f.apply(b.input?b.input[0]:null,[g,b])}else $.datepicker._hideDatepicker();return!1;case 27:$.datepicker._hideDatepicker();break;case 33:$.datepicker._adjustDate(a.target,a.ctrlKey?-$.datepicker._get(b,"stepBigMonths"):-$.datepicker._get(b,"stepMonths"),"M");break;case 34:$.datepicker._adjustDate(a.target,a.ctrlKey?+$.datepicker._get(b,"stepBigMonths"):+$.datepicker._get(b,"stepMonths"),"M");break;case 35:(a.ctrlKey||a.metaKey)&&$.datepicker._clearDate(a.target),c=a.ctrlKey||a.metaKey;break;case 36:(a.ctrlKey||a.metaKey)&&$.datepicker._gotoToday(a.target),c=a.ctrlKey||a.metaKey;break;case 37:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,d?1:-1,"D"),c=a.ctrlKey||a.metaKey,a.originalEvent.altKey&&$.datepicker._adjustDate(a.target,a.ctrlKey?-$.datepicker._get(b,"stepBigMonths"):-$.datepicker._get(b,"stepMonths"),"M");break;case 38:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,-7,"D"),c=a.ctrlKey||a.metaKey;break;case 39:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,d?-1:1,"D"),c=a.ctrlKey||a.metaKey,a.originalEvent.altKey&&$.datepicker._adjustDate(a.target,a.ctrlKey?+$.datepicker._get(b,"stepBigMonths"):+$.datepicker._get(b,"stepMonths"),"M");break;case 40:(a.ctrlKey||a.metaKey)&&$.datepicker._adjustDate(a.target,7,"D"),c=a.ctrlKey||a.metaKey;break;default:c=!1}else a.keyCode==36&&a.ctrlKey?$.datepicker._showDatepicker(this):c=!1;c&&(a.preventDefault(),a.stopPropagation())},_doKeyPress:function(a){var b=$.datepicker._getInst(a.target);if($.datepicker._get(b,"constrainInput")){var c=$.datepicker._possibleChars($.datepicker._get(b,"dateFormat")),d=String.fromCharCode(a.charCode==undefined?a.keyCode:a.charCode);return a.ctrlKey||a.metaKey||d<" "||!c||c.indexOf(d)>-1}},_doKeyUp:function(a){var b=$.datepicker._getInst(a.target);if(b.input.val()!=b.lastVal)try{var c=$.datepicker.parseDate($.datepicker._get(b,"dateFormat"),b.input?b.input.val():null,$.datepicker._getFormatConfig(b));c&&($.datepicker._setDateFromField(b),$.datepicker._updateAlternate(b),$.datepicker._updateDatepicker(b))}catch(a){$.datepicker.log(a)}return!0},_showDatepicker:function(a){a=a.target||a,a.nodeName.toLowerCase()!="input"&&(a=$("input",a.parentNode)[0]);if(!$.datepicker._isDisabledDatepicker(a)&&$.datepicker._lastInput!=a){var b=$.datepicker._getInst(a);$.datepicker._curInst&&$.datepicker._curInst!=b&&($.datepicker._curInst.dpDiv.stop(!0,!0),b&&$.datepicker._datepickerShowing&&$.datepicker._hideDatepicker($.datepicker._curInst.input[0]));var c=$.datepicker._get(b,"beforeShow"),d=c?c.apply(a,[a,b]):{};if(d===!1)return;extendRemove(b.settings,d),b.lastVal=null,$.datepicker._lastInput=a,$.datepicker._setDateFromField(b),$.datepicker._inDialog&&(a.value=""),$.datepicker._pos||($.datepicker._pos=$.datepicker._findPos(a),$.datepicker._pos[1]+=a.offsetHeight);var e=!1;$(a).parents().each(function(){e|=$(this).css("position")=="fixed";return!e}),e&&$.browser.opera&&($.datepicker._pos[0]-=document.documentElement.scrollLeft,$.datepicker._pos[1]-=document.documentElement.scrollTop);var f={left:$.datepicker._pos[0],top:$.datepicker._pos[1]};$.datepicker._pos=null,b.dpDiv.empty(),b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),$.datepicker._updateDatepicker(b),f=$.datepicker._checkOffset(b,f,e),b.dpDiv.css({position:$.datepicker._inDialog&&$.blockUI?"static":e?"fixed":"absolute",display:"none",left:f.left+"px",top:f.top+"px"});if(!b.inline){var g=$.datepicker._get(b,"showAnim"),h=$.datepicker._get(b,"duration"),i=function(){var a=b.dpDiv.find("iframe.ui-datepicker-cover");if(!!a.length){var c=$.datepicker._getBorders(b.dpDiv);a.css({left:-c[0],top:-c[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex($(a).zIndex()+1),$.datepicker._datepickerShowing=!0,$.effects&&$.effects[g]?b.dpDiv.show(g,$.datepicker._get(b,"showOptions"),h,i):b.dpDiv[g||"show"](g?h:null,i),(!g||!h)&&i(),b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus(),$.datepicker._curInst=b}}},_updateDatepicker:function(a){var b=this;b.maxRows=4;var c=$.datepicker._getBorders(a.dpDiv);instActive=a,a.dpDiv.empty().append(this._generateHTML(a));var d=a.dpDiv.find("iframe.ui-datepicker-cover");!d.length||d.css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()}),a.dpDiv.find("."+this._dayOverClass+" a").mouseover();var e=this._getNumberOfMonths(a),f=e[1],g=17;a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),f>1&&a.dpDiv.addClass("ui-datepicker-multi-"+f).css("width",g*f+"em"),a.dpDiv[(e[0]!=1||e[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi"),a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),a==$.datepicker._curInst&&$.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var h=a.yearshtml;setTimeout(function(){h===a.yearshtml&&a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml),h=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(a){return{thin:1,medium:2,thick:3}[a]||a};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var d=a.dpDiv.outerWidth(),e=a.dpDiv.outerHeight(),f=a.input?a.input.outerWidth():0,g=a.input?a.input.outerHeight():0,h=document.documentElement.clientWidth+$(document).scrollLeft(),i=document.documentElement.clientHeight+$(document).scrollTop();b.left-=this._get(a,"isRTL")?d-f:0,b.left-=c&&b.left==a.input.offset().left?$(document).scrollLeft():0,b.top-=c&&b.top==a.input.offset().top+g?$(document).scrollTop():0,b.left-=Math.min(b.left,b.left+d>h&&h>d?Math.abs(b.left+d-h):0),b.top-=Math.min(b.top,b.top+e>i&&i>e?Math.abs(e+g):0);return b},_findPos:function(a){var b=this._getInst(a),c=this._get(b,"isRTL");while(a&&(a.type=="hidden"||a.nodeType!=1||$.expr.filters.hidden(a)))a=a[c?"previousSibling":"nextSibling"];var d=$(a).offset();return[d.left,d.top]},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=$.data(a,PROP_NAME))&&this._datepickerShowing){var c=this._get(b,"showAnim"),d=this._get(b,"duration"),e=this,f=function(){$.datepicker._tidyDialog(b),e._curInst=null};$.effects&&$.effects[c]?b.dpDiv.hide(c,$.datepicker._get(b,"showOptions"),d,f):b.dpDiv[c=="slideDown"?"slideUp":c=="fadeIn"?"fadeOut":"hide"](c?d:null,f),c||f(),this._datepickerShowing=!1;var g=this._get(b,"onClose");g&&g.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b]),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(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(a){if(!!$.datepicker._curInst){var b=$(a.target),c=$.datepicker._getInst(b[0]);(b[0].id!=$.datepicker._mainDivId&&b.parents("#"+$.datepicker._mainDivId).length==0&&!b.hasClass($.datepicker.markerClassName)&&!b.closest("."+$.datepicker._triggerClass).length&&$.datepicker._datepickerShowing&&(!$.datepicker._inDialog||!$.blockUI)||b.hasClass($.datepicker.markerClassName)&&$.datepicker._curInst!=c)&&$.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){var d=$(a),e=this._getInst(d[0]);this._isDisabledDatepicker(d[0])||(this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):0),c),this._updateDatepicker(e))},_gotoToday:function(a){var b=$(a),c=this._getInst(b[0]);if(this._get(c,"gotoCurrent")&&c.currentDay)c.selectedDay=c.currentDay,c.drawMonth=c.selectedMonth=c.currentMonth,c.drawYear=c.selectedYear=c.currentYear;else{var d=new Date;c.selectedDay=d.getDate(),c.drawMonth=c.selectedMonth=d.getMonth(),c.drawYear=c.selectedYear=d.getFullYear()}this._notifyChange(c),this._adjustDate(b)},_selectMonthYear:function(a,b,c){var d=$(a),e=this._getInst(d[0]);e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10),this._notifyChange(e),this._adjustDate(d)},_selectDay:function(a,b,c,d){var e=$(a);if(!$(d).hasClass(this._unselectableClass)&&!this._isDisabledDatepicker(e[0])){var f=this._getInst(e[0]);f.selectedDay=f.currentDay=$("a",d).html(),f.selectedMonth=f.currentMonth=b,f.selectedYear=f.currentYear=c,this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){var b=$(a),c=this._getInst(b[0]);this._selectDate(b,"")},_selectDate:function(a,b){var c=$(a),d=this._getInst(c[0]);b=b!=null?b:this._formatDate(d),d.input&&d.input.val(b),this._updateAlternate(d);var e=this._get(d,"onSelect");e?e.apply(d.input?d.input[0]:null,[b,d]):d.input&&d.input.trigger("change"),d.inline?this._updateDatepicker(d):(this._hideDatepicker(),this._lastInput=d.input[0],typeof d.input[0]!="object"&&d.input.focus(),this._lastInput=null)},_updateAlternate:function(a){var b=this._get(a,"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),d=this._getDate(a),e=this.formatDate(c,d,this._getFormatConfig(a));$(b).each(function(){$(this).val(e)})}},noWeekends:function(a){var b=a.getDay();return[b>0&&b<6,""]},iso8601Week:function(a){var b=new Date(a.getTime());b.setDate(b.getDate()+4-(b.getDay()||7));var c=b.getTime();b.setMonth(0),b.setDate(1);return Math.floor(Math.round((c-b)/864e5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?b.toString():b+"";if(b=="")return null;var d=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;d=typeof d!="string"?d:(new Date).getFullYear()%100+parseInt(d,10);var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,g=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,h=(c?c.monthNames:null)||this._defaults.monthNames,i=-1,j=-1,k=-1,l=-1,m=!1,n=function(b){var c=s+1<a.length&&a.charAt(s+1)==b;c&&s++;return c},o=function(a){var c=n(a),d=a=="@"?14:a=="!"?20:a=="y"&&c?4:a=="o"?3:2,e=new RegExp("^\\d{1,"+d+"}"),f=b.substring(r).match(e);if(!f)throw"Missing number at position "+r;r+=f[0].length;return parseInt(f[0],10)},p=function(a,c,d){var e=$.map(n(a)?d:c,function(a,b){return[[b,a]]}).sort(function(a,b){return-(a[1].length-b[1].length)}),f=-1;$.each(e,function(a,c){var d=c[1];if(b.substr(r,d.length).toLowerCase()==d.toLowerCase()){f=c[0],r+=d.length;return!1}});if(f!=-1)return f+1;throw"Unknown name at position "+r},q=function(){if(b.charAt(r)!=a.charAt(s))throw"Unexpected literal at position "+r;r++},r=0;for(var s=0;s<a.length;s++)if(m)a.charAt(s)=="'"&&!n("'")?m=!1:q();else switch(a.charAt(s)){case"d":k=o("d");break;case"D":p("D",e,f);break;case"o":l=o("o");break;case"m":j=o("m");break;case"M":j=p("M",g,h);break;case"y":i=o("y");break;case"@":var t=new Date(o("@"));i=t.getFullYear(),j=t.getMonth()+1,k=t.getDate();break;case"!":var t=new Date((o("!")-this._ticksTo1970)/1e4);i=t.getFullYear(),j=t.getMonth()+1,k=t.getDate();break;case"'":n("'")?q():m=!0;break;default:q()}if(r<b.length)throw"Extra/unparsed characters found in date: "+b.substring(r);i==-1?i=(new Date).getFullYear():i<100&&(i+=(new Date).getFullYear()-(new Date).getFullYear()%100+(i<=d?0:-100));if(l>-1){j=1,k=l;for(;;){var u=this._getDaysInMonth(i,j-1);if(k<=u)break;j++,k-=u}}var t=this._daylightSavingAdjust(new Date(i,j-1,k));if(t.getFullYear()!=i||t.getMonth()+1!=j||t.getDate()!=k)throw"Invalid date";return t},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:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1e7,formatDate:function(a,b,c){if(!b)return"";var d=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,e=(c?c.dayNames:null)||this._defaults.dayNames,f=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,h=function(b){var c=m+1<a.length&&a.charAt(m+1)==b;c&&m++;return c},i=function(a,b,c){var d=""+b;if(h(a))while(d.length<c)d="0"+d;return d},j=function(a,b,c,d){return h(a)?d[b]:c[b]},k="",l=!1;if(b)for(var m=0;m<a.length;m++)if(l)a.charAt(m)=="'"&&!h("'")?l=!1:k+=a.charAt(m);else switch(a.charAt(m)){case"d":k+=i("d",b.getDate(),2);break;case"D":k+=j("D",b.getDay(),d,e);break;case"o":k+=i("o",Math.round(((new Date(b.getFullYear(),b.getMonth(),b.getDate())).getTime()-(new Date(b.getFullYear(),0,0)).getTime())/864e5),3);break;case"m":k+=i("m",b.getMonth()+1,2);break;case"M":k+=j("M",b.getMonth(),f,g);break;case"y":k+=h("y")?b.getFullYear():(b.getYear()%100<10?"0":"")+b.getYear()%100;break;case"@":k+=b.getTime();break;case"!":k+=b.getTime()*1e4+this._ticksTo1970;break;case"'":h("'")?k+="'":l=!0;break;default:k+=a.charAt(m)}return k},_possibleChars:function(a){var b="",c=!1,d=function(b){var c=e+1<a.length&&a.charAt(e+1)==b;c&&e++;return c};for(var e=0;e<a.length;e++)if(c)a.charAt(e)=="'"&&!d("'")?c=!1:b+=a.charAt(e);else switch(a.charAt(e)){case"d":case"m":case"y":case"@":b+="0123456789";break;case"D":case"M":return null;case"'":d("'")?b+="'":c=!0;break;default:b+=a.charAt(e)}return b},_get:function(a,b){return a.settings[b]!==undefined?a.settings[b]:this._defaults[b]},_setDateFromField:function(a,b){if(a.input.val()!=a.lastVal){var c=this._get(a,"dateFormat"),d=a.lastVal=a.input?a.input.val():null,e,f;e=f=this._getDefaultDate(a);var g=this._getFormatConfig(a);try{e=this.parseDate(c,d,g)||f}catch(h){this.log(h),d=b?"":d}a.selectedDay=e.getDate(),a.drawMonth=a.selectedMonth=e.getMonth(),a.drawYear=a.selectedYear=e.getFullYear(),a.currentDay=d?e.getDate():0,a.currentMonth=d?e.getMonth():0,a.currentYear=d?e.getFullYear():0,this._adjustInstDate(a)}},_getDefaultDate:function(a){return this._restrictMinMax(a,this._determineDate(a,this._get(a,"defaultDate"),new Date))},_determineDate:function(a,b,c){var d=function(a){var b=new Date;b.setDate(b.getDate()+a);return b},e=function(b){try{return $.datepicker.parseDate($.datepicker._get(a,"dateFormat"),b,$.datepicker._getFormatConfig(a))}catch(c){}var d=(b.toLowerCase().match(/^c/)?$.datepicker._getDate(a):null)||new Date,e=d.getFullYear(),f=d.getMonth(),g=d.getDate(),h=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,i=h.exec(b);while(i){switch(i[2]||"d"){case"d":case"D":g+=parseInt(i[1],10);break;case"w":case"W":g+=parseInt(i[1],10)*7;break;case"m":case"M":f+=parseInt(i[1],10),g=Math.min(g,$.datepicker._getDaysInMonth(e,f));break;case"y":case"Y":e+=parseInt(i[1],10),g=Math.min(g,$.datepicker._getDaysInMonth(e,f))}i=h.exec(b)}return new Date(e,f,g)},f=b==null||b===""?c:typeof b=="string"?e(b):typeof b=="number"?isNaN(b)?c:d(b):new Date(b.getTime());f=f&&f.toString()=="Invalid Date"?c:f,f&&(f.setHours(0),f.setMinutes(0),f.setSeconds(0),f.setMilliseconds(0));return this._daylightSavingAdjust(f)},_daylightSavingAdjust:function(a){if(!a)return null;a.setHours(a.getHours()>12?a.getHours()+2:0);return a},_setDate:function(a,b,c){var d=!b,e=a.selectedMonth,f=a.selectedYear,g=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=g.getDate(),a.drawMonth=a.selectedMonth=a.currentMonth=g.getMonth(),a.drawYear=a.selectedYear=a.currentYear=g.getFullYear(),(e!=a.selectedMonth||f!=a.selectedYear)&&!c&&this._notifyChange(a),this._adjustInstDate(a),a.input&&a.input.val(d?"":this._formatDate(a))},_getDate:function(a){var b=!a.currentYear||a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return b},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),d=this._get(a,"showButtonPanel"),e=this._get(a,"hideIfNoPrevNext"),f=this._get(a,"navigationAsDateFormat"),g=this._getNumberOfMonths(a),h=this._get(a,"showCurrentAtPos"),i=this._get(a,"stepMonths"),j=g[0]!=1||g[1]!=1,k=this._daylightSavingAdjust(a.currentDay?new Date(a.currentYear,a.currentMonth,a.currentDay):new Date(9999,9,9)),l=this._getMinMaxDate(a,"min"),m=this._getMinMaxDate(a,"max"),n=a.drawMonth-h,o=a.drawYear;n<0&&(n+=12,o--);if(m){var p=this._daylightSavingAdjust(new Date(m.getFullYear(),m.getMonth()-g[0]*g[1]+1,m.getDate()));p=l&&p<l?l:p;while(this._daylightSavingAdjust(new Date(o,n,1))>p)n--,n<0&&(n=11,o--)}a.drawMonth=n,a.drawYear=o;var q=this._get(a,"prevText");q=f?this.formatDate(q,this._daylightSavingAdjust(new Date(o,n-i,1)),this._getFormatConfig(a)):q;var r=this._canAdjustMonth(a,-1,o,n)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'+dpuuid+".datepicker._adjustDate('#"+a.id+"', -"+i+", 'M');\""+' title="'+q+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+q+"</span></a>":e?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+q+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+q+"</span></a>",s=this._get(a,"nextText");s=f?this.formatDate(s,this._daylightSavingAdjust(new Date(o,n+i,1)),this._getFormatConfig(a)):s;var t=this._canAdjustMonth(a,1,o,n)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'+dpuuid+".datepicker._adjustDate('#"+a.id+"', +"+i+", 'M');\""+' title="'+s+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+s+"</span></a>":e?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+s+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+s+"</span></a>",u=this._get(a,"currentText"),v=this._get(a,"gotoCurrent")&&a.currentDay?k:b;u=f?this.formatDate(u,v,this._getFormatConfig(a)):u;var w=a.inline?"":'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'+dpuuid+'.datepicker._hideDatepicker();">'+this._get(a,"closeText")+"</button>",x=d?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(c?w:"")+(this._isInRange(a,v)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'+dpuuid+".datepicker._gotoToday('#"+a.id+"');\""+">"+u+"</button>":"")+(c?"":w)+"</div>":"",y=parseInt(this._get(a,"firstDay"),10);y=isNaN(y)?0:y;var z=this._get(a,"showWeek"),A=this._get(a,"dayNames"),B=this._get(a,"dayNamesShort"),C=this._get(a,"dayNamesMin"),D=this._get(a,"monthNames"),E=this._get(a,"monthNamesShort"),F=this._get(a,"beforeShowDay"),G=this._get(a,"showOtherMonths"),H=this._get(a,"selectOtherMonths"),I=this._get(a,"calculateWeek")||this.iso8601Week,J=this._getDefaultDate(a),K="";for(var L=0;L<g[0];L++){var M="";this.maxRows=4;for(var N=0;N<g[1];N++){var O=this._daylightSavingAdjust(new Date(o,n,a.selectedDay)),P=" ui-corner-all",Q="";if(j){Q+='<div class="ui-datepicker-group';if(g[1]>1)switch(N){case 0:Q+=" ui-datepicker-group-first",P=" ui-corner-"+(c?"right":"left");break;case g[1]-1:Q+=" ui-datepicker-group-last",P=" ui-corner-"+(c?"left":"right");break;default:Q+=" ui-datepicker-group-middle",P=""}Q+='">'}Q+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+P+'">'+(/all|left/.test(P)&&L==0?c?t:r:"")+(/all|right/.test(P)&&L==0?c?r:t:"")+this._generateMonthYearHeader(a,n,o,l,m,L>0||N>0,D,E)+'</div><table class="ui-datepicker-calendar"><thead>'+"<tr>";var R=z?'<th class="ui-datepicker-week-col">'+this._get(a,"weekHeader")+"</th>":"";for(var S=0;S<7;S++){var T=(S+y)%7;R+="<th"+((S+y+6)%7>=5?' class="ui-datepicker-week-end"':"")+">"+'<span title="'+A[T]+'">'+C[T]+"</span></th>"}Q+=R+"</tr></thead><tbody>";var U=this._getDaysInMonth(o,n);o==a.selectedYear&&n==a.selectedMonth&&(a.selectedDay=Math.min(a.selectedDay,U));var V=(this._getFirstDayOfMonth(o,n)-y+7)%7,W=Math.ceil((V+U)/7),X=j?this.maxRows>W?this.maxRows:W:W;this.maxRows=X;var Y=this._daylightSavingAdjust(new Date(o,n,1-V));for(var Z=0;Z<X;Z++){Q+="<tr>";var _=z?'<td class="ui-datepicker-week-col">'+this._get(a,"calculateWeek")(Y)+"</td>":"";for(var S=0;S<7;S++){var ba=F?F.apply(a.input?a.input[0]:null,[Y]):[!0,""],bb=Y.getMonth()!=n,bc=bb&&!H||!ba[0]||l&&Y<l||m&&Y>m;_+='<td class="'+((S+y+6)%7>=5?" ui-datepicker-week-end":"")+(bb?" ui-datepicker-other-month":"")+(Y.getTime()==O.getTime()&&n==a.selectedMonth&&a._keyEvent||J.getTime()==Y.getTime()&&J.getTime()==O.getTime()?" "+this._dayOverClass:"")+(bc?" "+this._unselectableClass+" ui-state-disabled":"")+(bb&&!G?"":" "+ba[1]+(Y.getTime()==k.getTime()?" "+this._currentClass:"")+(Y.getTime()==b.getTime()?" ui-datepicker-today":""))+'"'+((!bb||G)&&ba[2]?' title="'+ba[2]+'"':"")+(bc?"":' onclick="DP_jQuery_'+dpuuid+".datepicker._selectDay('#"+a.id+"',"+Y.getMonth()+","+Y.getFullYear()+', this);return false;"')+">"+(bb&&!G?"&#xa0;":bc?'<span class="ui-state-default">'+Y.getDate()+"</span>":'<a class="ui-state-default'+(Y.getTime()==b.getTime()?" ui-state-highlight":"")+(Y.getTime()==k.getTime()?" ui-state-active":"")+(bb?" ui-priority-secondary":"")+'" href="#">'+Y.getDate()+"</a>")+"</td>",Y.setDate(Y.getDate()+1),Y=this._daylightSavingAdjust(Y)}Q+=_+"</tr>"}n++,n>11&&(n=0,o++),Q+="</tbody></table>"+(j?"</div>"+(g[0]>0&&N==g[1]-1?'<div class="ui-datepicker-row-break"></div>':""):""),M+=Q}K+=M}K+=x+($.browser.msie&&parseInt($.browser.version,10)<7&&!a.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':""),
+a._keyEvent=!1;return K},_generateMonthYearHeader:function(a,b,c,d,e,f,g,h){var i=this._get(a,"changeMonth"),j=this._get(a,"changeYear"),k=this._get(a,"showMonthAfterYear"),l='<div class="ui-datepicker-title">',m="";if(f||!i)m+='<span class="ui-datepicker-month">'+g[b]+"</span>";else{var n=d&&d.getFullYear()==c,o=e&&e.getFullYear()==c;m+='<select class="ui-datepicker-month" onchange="DP_jQuery_'+dpuuid+".datepicker._selectMonthYear('#"+a.id+"', this, 'M');\" "+">";for(var p=0;p<12;p++)(!n||p>=d.getMonth())&&(!o||p<=e.getMonth())&&(m+='<option value="'+p+'"'+(p==b?' selected="selected"':"")+">"+h[p]+"</option>");m+="</select>"}k||(l+=m+(f||!i||!j?"&#xa0;":""));if(!a.yearshtml){a.yearshtml="";if(f||!j)l+='<span class="ui-datepicker-year">'+c+"</span>";else{var q=this._get(a,"yearRange").split(":"),r=(new Date).getFullYear(),s=function(a){var b=a.match(/c[+-].*/)?c+parseInt(a.substring(1),10):a.match(/[+-].*/)?r+parseInt(a,10):parseInt(a,10);return isNaN(b)?r:b},t=s(q[0]),u=Math.max(t,s(q[1]||""));t=d?Math.max(t,d.getFullYear()):t,u=e?Math.min(u,e.getFullYear()):u,a.yearshtml+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+dpuuid+".datepicker._selectMonthYear('#"+a.id+"', this, 'Y');\" "+">";for(;t<=u;t++)a.yearshtml+='<option value="'+t+'"'+(t==c?' selected="selected"':"")+">"+t+"</option>";a.yearshtml+="</select>",l+=a.yearshtml,a.yearshtml=null}}l+=this._get(a,"yearSuffix"),k&&(l+=(f||!i||!j?"&#xa0;":"")+m),l+="</div>";return l},_adjustInstDate:function(a,b,c){var d=a.drawYear+(c=="Y"?b:0),e=a.drawMonth+(c=="M"?b:0),f=Math.min(a.selectedDay,this._getDaysInMonth(d,e))+(c=="D"?b:0),g=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(d,e,f)));a.selectedDay=g.getDate(),a.drawMonth=a.selectedMonth=g.getMonth(),a.drawYear=a.selectedYear=g.getFullYear(),(c=="M"||c=="Y")&&this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max"),e=c&&b<c?c:b;e=d&&e>d?d:e;return e},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");b&&b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){var b=this._get(a,"numberOfMonths");return b==null?[1,1]:typeof b=="number"?[1,b]:b},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,d){var e=this._getNumberOfMonths(a),f=this._daylightSavingAdjust(new Date(c,d+(b<0?b:e[0]*e[1]),1));b<0&&f.setDate(this._getDaysInMonth(f.getFullYear(),f.getMonth()));return this._isInRange(a,f)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!d||b.getTime()<=d.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a,"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,d){b||(a.currentDay=a.selectedDay,a.currentMonth=a.selectedMonth,a.currentYear=a.selectedYear);var e=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(d,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),e,this._getFormatConfig(a))}}),$.fn.datepicker=function(a){if(!this.length)return this;$.datepicker.initialized||($(document).mousedown($.datepicker._checkExternalClick).find("body").append($.datepicker.dpDiv),$.datepicker.initialized=!0);var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return $.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return $.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this[0]].concat(b));return this.each(function(){typeof a=="string"?$.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this].concat(b)):$.datepicker._attachDatepicker(this,a)})},$.datepicker=new Datepicker,$.datepicker.initialized=!1,$.datepicker.uuid=(new Date).getTime(),$.datepicker.version="1.8.18",window["DP_jQuery_"+dpuuid]=$})(jQuery);/*
+ * 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
+ *
+ * Depends:
+ *   jquery.ui.core.js
+ *   jquery.ui.widget.js
+ */(function(a,b){a.widget("ui.progressbar",{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=a("<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(),a.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===b)return this._value();this._setOption("value",a);return this},_setOption:function(b,c){b==="value"&&(this.options.value=c,this._refreshValue(),this._value()===this.options.max&&this._trigger("complete")),a.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;typeof a!="number"&&(a=0);return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100*this._value()/this.options.max},_refreshValue:function(){var a=this.value(),b=this._percentage();this.oldValue!==a&&(this.oldValue=a,this._trigger("change")),this.valueDiv.toggle(a>this.min).toggleClass("ui-corner-right",a===this.options.max).width(b.toFixed(0)+"%"),this.element.attr("aria-valuenow",a)}}),a.extend(a.ui.progressbar,{version:"1.8.18"})})(jQuery);/*
+ * jQuery UI Effects 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/Effects/
+ */jQuery.effects||function(a,b){function l(b){if(!b||typeof b=="number"||a.fx.speeds[b])return!0;if(typeof b=="string"&&!a.effects[b])return!0;return!1}function k(b,c,d,e){typeof b=="object"&&(e=c,d=null,c=b,b=c.effect),a.isFunction(c)&&(e=c,d=null,c={});if(typeof c=="number"||a.fx.speeds[c])e=d,d=c,c={};a.isFunction(d)&&(e=d,d=null),c=c||{},d=d||c.duration,d=a.fx.off?0:typeof d=="number"?d:d in a.fx.speeds?a.fx.speeds[d]:a.fx.speeds._default,e=e||c.complete;return[b,c,d,e]}function j(a,b){var c={_:0},d;for(d in b)a[d]!=b[d]&&(c[d]=b[d]);return c}function i(b){var c,d;for(c in b)d=b[c],(d==null||a.isFunction(d)||c in g||/scrollbar/.test(c)||!/color/i.test(c)&&isNaN(parseFloat(d)))&&delete b[c];return b}function h(){var a=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,b={},c,d;if(a&&a.length&&a[0]&&a[a[0]]){var e=a.length;while(e--)c=a[e],typeof a[c]=="string"&&(d=c.replace(/\-(\w)/g,function(a,b){return b.toUpperCase()}),b[d]=a[c])}else for(c in a)typeof a[c]=="string"&&(b[c]=a[c]);return b}function d(b,d){var e;do{e=a.curCSS(b,d);if(e!=""&&e!="transparent"||a.nodeName(b,"body"))break;d="backgroundColor"}while(b=b.parentNode);return c(e)}function c(b){var c;if(b&&b.constructor==Array&&b.length==3)return b;if(c=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(b))return[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10)];if(c=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(b))return[parseFloat(c[1])*2.55,parseFloat(c[2])*2.55,parseFloat(c[3])*2.55];if(c=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(b))return[parseInt(c[1],16),parseInt(c[2],16),parseInt(c[3],16)];if(c=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(b))return[parseInt(c[1]+c[1],16),parseInt(c[2]+c[2],16),parseInt(c[3]+c[3],16)];if(c=/rgba\(0, 0, 0, 0\)/.exec(b))return e.transparent;return e[a.trim(b).toLowerCase()]}a.effects={},a.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","borderColor","color","outlineColor"],function(b,e){a.fx.step[e]=function(a){a.colorInit||(a.start=d(a.elem,e),a.end=c(a.end),a.colorInit=!0),a.elem.style[e]="rgb("+Math.max(Math.min(parseInt(a.pos*(a.end[0]-a.start[0])+a.start[0],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[1]-a.start[1])+a.start[1],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[2]-a.start[2])+a.start[2],10),255),0)+")"}});var e={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},f=["add","remove","toggle"],g={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};a.effects.animateClass=function(b,c,d,e){a.isFunction(d)&&(e=d,d=null);return this.queue(function(){var g=a(this),k=g.attr("style")||" ",l=i(h.call(this)),m,n=g.attr("class");a.each(f,function(a,c){b[c]&&g[c+"Class"](b[c])}),m=i(h.call(this)),g.attr("class",n),g.animate(j(l,m),{queue:!1,duration:c,easing:d,complete:function(){a.each(f,function(a,c){b[c]&&g[c+"Class"](b[c])}),typeof g.attr("style")=="object"?(g.attr("style").cssText="",g.attr("style").cssText=k):g.attr("style",k),e&&e.apply(this,arguments),a.dequeue(this)}})})},a.fn.extend({_addClass:a.fn.addClass,addClass:function(b,c,d,e){return c?a.effects.animateClass.apply(this,[{add:b},c,d,e]):this._addClass(b)},_removeClass:a.fn.removeClass,removeClass:function(b,c,d,e){return c?a.effects.animateClass.apply(this,[{remove:b},c,d,e]):this._removeClass(b)},_toggleClass:a.fn.toggleClass,toggleClass:function(c,d,e,f,g){return typeof d=="boolean"||d===b?e?a.effects.animateClass.apply(this,[d?{add:c}:{remove:c},e,f,g]):this._toggleClass(c,d):a.effects.animateClass.apply(this,[{toggle:c},d,e,f])},switchClass:function(b,c,d,e,f){return a.effects.animateClass.apply(this,[{add:c,remove:b},d,e,f])}}),a.extend(a.effects,{version:"1.8.18",save:function(a,b){for(var c=0;c<b.length;c++)b[c]!==null&&a.data("ec.storage."+b[c],a[0].style[b[c]])},restore:function(a,b){for(var c=0;c<b.length;c++)b[c]!==null&&a.css(b[c],a.data("ec.storage."+b[c]))},setMode:function(a,b){b=="toggle"&&(b=a.is(":hidden")?"show":"hide");return b},getBaseline:function(a,b){var c,d;switch(a[0]){case"top":c=0;break;case"middle":c=.5;break;case"bottom":c=1;break;default:c=a[0]/b.height}switch(a[1]){case"left":d=0;break;case"center":d=.5;break;case"right":d=1;break;default:d=a[1]/b.width}return{x:d,y:c}},createWrapper:function(b){if(b.parent().is(".ui-effects-wrapper"))return b.parent();var c={width:b.outerWidth(!0),height:b.outerHeight(!0),"float":b.css("float")},d=a("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e=document.activeElement;b.wrap(d),(b[0]===e||a.contains(b[0],e))&&a(e).focus(),d=b.parent(),b.css("position")=="static"?(d.css({position:"relative"}),b.css({position:"relative"})):(a.extend(c,{position:b.css("position"),zIndex:b.css("z-index")}),a.each(["top","left","bottom","right"],function(a,d){c[d]=b.css(d),isNaN(parseInt(c[d],10))&&(c[d]="auto")}),b.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"}));return d.css(c).show()},removeWrapper:function(b){var c,d=document.activeElement;if(b.parent().is(".ui-effects-wrapper")){c=b.parent().replaceWith(b),(b[0]===d||a.contains(b[0],d))&&a(d).focus();return c}return b},setTransition:function(b,c,d,e){e=e||{},a.each(c,function(a,c){unit=b.cssUnit(c),unit[0]>0&&(e[c]=unit[0]*d+unit[1])});return e}}),a.fn.extend({effect:function(b,c,d,e){var f=k.apply(this,arguments),g={options:f[1],duration:f[2],callback:f[3]},h=g.options.mode,i=a.effects[b];if(a.fx.off||!i)return h?this[h](g.duration,g.callback):this.each(function(){g.callback&&g.callback.call(this)});return i.call(this,g)},_show:a.fn.show,show:function(a){if(l(a))return this._show.apply(this,arguments);var b=k.apply(this,arguments);b[1].mode="show";return this.effect.apply(this,b)},_hide:a.fn.hide,hide:function(a){if(l(a))return this._hide.apply(this,arguments);var b=k.apply(this,arguments);b[1].mode="hide";return this.effect.apply(this,b)},__toggle:a.fn.toggle,toggle:function(b){if(l(b)||typeof b=="boolean"||a.isFunction(b))return this.__toggle.apply(this,arguments);var c=k.apply(this,arguments);c[1].mode="toggle";return this.effect.apply(this,c)},cssUnit:function(b){var c=this.css(b),d=[];a.each(["em","px","%","pt"],function(a,b){c.indexOf(b)>0&&(d=[parseFloat(c),b])});return d}}),a.easing.jswing=a.easing.swing,a.extend(a.easing,{def:"easeOutQuad",swing:function(b,c,d,e,f){return a.easing[a.easing.def](b,c,d,e,f)},easeInQuad:function(a,b,c,d,e){return d*(b/=e)*b+c},easeOutQuad:function(a,b,c,d,e){return-d*(b/=e)*(b-2)+c},easeInOutQuad:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b+c;return-d/2*(--b*(b-2)-1)+c},easeInCubic:function(a,b,c,d,e){return d*(b/=e)*b*b+c},easeOutCubic:function(a,b,c,d,e){return d*((b=b/e-1)*b*b+1)+c},easeInOutCubic:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b*b+c;return d/2*((b-=2)*b*b+2)+c},easeInQuart:function(a,b,c,d,e){return d*(b/=e)*b*b*b+c},easeOutQuart:function(a,b,c,d,e){return-d*((b=b/e-1)*b*b*b-1)+c},easeInOutQuart:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b*b*b+c;return-d/2*((b-=2)*b*b*b-2)+c},easeInQuint:function(a,b,c,d,e){return d*(b/=e)*b*b*b*b+c},easeOutQuint:function(a,b,c,d,e){return d*((b=b/e-1)*b*b*b*b+1)+c},easeInOutQuint:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b*b*b*b+c;return d/2*((b-=2)*b*b*b*b+2)+c},easeInSine:function(a,b,c,d,e){return-d*Math.cos(b/e*(Math.PI/2))+d+c},easeOutSine:function(a,b,c,d,e){return d*Math.sin(b/e*(Math.PI/2))+c},easeInOutSine:function(a,b,c,d,e){return-d/2*(Math.cos(Math.PI*b/e)-1)+c},easeInExpo:function(a,b,c,d,e){return b==0?c:d*Math.pow(2,10*(b/e-1))+c},easeOutExpo:function(a,b,c,d,e){return b==e?c+d:d*(-Math.pow(2,-10*b/e)+1)+c},easeInOutExpo:function(a,b,c,d,e){if(b==0)return c;if(b==e)return c+d;if((b/=e/2)<1)return d/2*Math.pow(2,10*(b-1))+c;return d/2*(-Math.pow(2,-10*--b)+2)+c},easeInCirc:function(a,b,c,d,e){return-d*(Math.sqrt(1-(b/=e)*b)-1)+c},easeOutCirc:function(a,b,c,d,e){return d*Math.sqrt(1-(b=b/e-1)*b)+c},easeInOutCirc:function(a,b,c,d,e){if((b/=e/2)<1)return-d/2*(Math.sqrt(1-b*b)-1)+c;return d/2*(Math.sqrt(1-(b-=2)*b)+1)+c},easeInElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(b==0)return c;if((b/=e)==1)return c+d;g||(g=e*.3);if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return-(h*Math.pow(2,10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g))+c},easeOutElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(b==0)return c;if((b/=e)==1)return c+d;g||(g=e*.3);if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return h*Math.pow(2,-10*b)*Math.sin((b*e-f)*2*Math.PI/g)+d+c},easeInOutElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(b==0)return c;if((b/=e/2)==2)return c+d;g||(g=e*.3*1.5);if(h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);if(b<1)return-0.5*h*Math.pow(2,10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g)+c;return h*Math.pow(2,-10*(b-=1))*Math.sin((b*e-f)*2*Math.PI/g)*.5+d+c},easeInBack:function(a,c,d,e,f,g){g==b&&(g=1.70158);return e*(c/=f)*c*((g+1)*c-g)+d},easeOutBack:function(a,c,d,e,f,g){g==b&&(g=1.70158);return e*((c=c/f-1)*c*((g+1)*c+g)+1)+d},easeInOutBack:function(a,c,d,e,f,g){g==b&&(g=1.70158);if((c/=f/2)<1)return e/2*c*c*(((g*=1.525)+1)*c-g)+d;return e/2*((c-=2)*c*(((g*=1.525)+1)*c+g)+2)+d},easeInBounce:function(b,c,d,e,f){return e-a.easing.easeOutBounce(b,f-c,0,e,f)+d},easeOutBounce:function(a,b,c,d,e){return(b/=e)<1/2.75?d*7.5625*b*b+c:b<2/2.75?d*(7.5625*(b-=1.5/2.75)*b+.75)+c:b<2.5/2.75?d*(7.5625*(b-=2.25/2.75)*b+.9375)+c:d*(7.5625*(b-=2.625/2.75)*b+.984375)+c},easeInOutBounce:function(b,c,d,e,f){if(c<f/2)return a.easing.easeInBounce(b,c*2,0,e,f)*.5+d;return a.easing.easeOutBounce(b,c*2-f,0,e,f)*.5+e*.5+d}})}(jQuery);/*
+ * jQuery UI Effects Blind 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/Effects/Blind
+ *
+ * Depends:
+ *     jquery.effects.core.js
+ */(function(a,b){a.effects.blind=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.direction||"vertical";a.effects.save(c,d),c.show();var g=a.effects.createWrapper(c).css({overflow:"hidden"}),h=f=="vertical"?"height":"width",i=f=="vertical"?g.height():g.width();e=="show"&&g.css(h,0);var j={};j[h]=e=="show"?i:0,g.animate(j,b.duration,b.options.easing,function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()})})}})(jQuery);/*
+ * jQuery UI Effects Bounce 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/Effects/Bounce
+ *
+ * Depends:
+ *     jquery.effects.core.js
+ */(function(a,b){a.effects.bounce=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"effect"),f=b.options.direction||"up",g=b.options.distance||20,h=b.options.times||5,i=b.duration||250;/show|hide/.test(e)&&d.push("opacity"),a.effects.save(c,d),c.show(),a.effects.createWrapper(c);var j=f=="up"||f=="down"?"top":"left",k=f=="up"||f=="left"?"pos":"neg",g=b.options.distance||(j=="top"?c.outerHeight({margin:!0})/3:c.outerWidth({margin:!0})/3);e=="show"&&c.css("opacity",0).css(j,k=="pos"?-g:g),e=="hide"&&(g=g/(h*2)),e!="hide"&&h--;if(e=="show"){var l={opacity:1};l[j]=(k=="pos"?"+=":"-=")+g,c.animate(l,i/2,b.options.easing),g=g/2,h--}for(var m=0;m<h;m++){var n={},p={};n[j]=(k=="pos"?"-=":"+=")+g,p[j]=(k=="pos"?"+=":"-=")+g,c.animate(n,i/2,b.options.easing).animate(p,i/2,b.options.easing),g=e=="hide"?g*2:g/2}if(e=="hide"){var l={opacity:0};l[j]=(k=="pos"?"-=":"+=")+g,c.animate(l,i/2,b.options.easing,function(){c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments)})}else{var n={},p={};n[j]=(k=="pos"?"-=":"+=")+g,p[j]=(k=="pos"?"+=":"-=")+g,c.animate(n,i/2,b.options.easing).animate(p,i/2,b.options.easing,function(){a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments)})}c.queue("fx",function(){c.dequeue()}),c.dequeue()})}})(jQuery);/*
+ * jQuery UI Effects Clip 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/Effects/Clip
+ *
+ * Depends:
+ *     jquery.effects.core.js
+ */(function(a,b){a.effects.clip=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right","height","width"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.direction||"vertical";a.effects.save(c,d),c.show();var g=a.effects.createWrapper(c).css({overflow:"hidden"}),h=c[0].tagName=="IMG"?g:c,i={size:f=="vertical"?"height":"width",position:f=="vertical"?"top":"left"},j=f=="vertical"?h.height():h.width();e=="show"&&(h.css(i.size,0),h.css(i.position,j/2));var k={};k[i.size]=e=="show"?j:0,k[i.position]=e=="show"?0:j/2,h.animate(k,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()}})})}})(jQuery);/*
+ * jQuery UI Effects Drop 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/Effects/Drop
+ *
+ * Depends:
+ *     jquery.effects.core.js
+ */(function(a,b){a.effects.drop=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right","opacity"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.direction||"left";a.effects.save(c,d),c.show(),a.effects.createWrapper(c);var g=f=="up"||f=="down"?"top":"left",h=f=="up"||f=="left"?"pos":"neg",i=b.options.distance||(g=="top"?c.outerHeight({margin:!0})/2:c.outerWidth({margin:!0})/2);e=="show"&&c.css("opacity",0).css(g,h=="pos"?-i:i);var j={opacity:e=="show"?1:0};j[g]=(e=="show"?h=="pos"?"+=":"-=":h=="pos"?"-=":"+=")+i,c.animate(j,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);/*
+ * jQuery UI Effects Explode 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/Effects/Explode
+ *
+ * Depends:
+ *     jquery.effects.core.js
+ */(function(a,b){a.effects.explode=function(b){return this.queue(function(){var c=b.options.pieces?Math.round(Math.sqrt(b.options.pieces)):3,d=b.options.pieces?Math.round(Math.sqrt(b.options.pieces)):3;b.options.mode=b.options.mode=="toggle"?a(this).is(":visible")?"hide":"show":b.options.mode;var e=a(this).show().css("visibility","hidden"),f=e.offset();f.top-=parseInt(e.css("marginTop"),10)||0,f.left-=parseInt(e.css("marginLeft"),10)||0;var g=e.outerWidth(!0),h=e.outerHeight(!0);for(var i=0;i<c;i++)for(var j=0;j<d;j++)e.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-j*(g/d),top:-i*(h/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:g/d,height:h/c,left:f.left+j*(g/d)+(b.options.mode=="show"?(j-Math.floor(d/2))*(g/d):0),top:f.top+i*(h/c)+(b.options.mode=="show"?(i-Math.floor(c/2))*(h/c):0),opacity:b.options.mode=="show"?0:1}).animate({left:f.left+j*(g/d)+(b.options.mode=="show"?0:(j-Math.floor(d/2))*(g/d)),top:f.top+i*(h/c)+(b.options.mode=="show"?0:(i-Math.floor(c/2))*(h/c)),opacity:b.options.mode=="show"?1:0},b.duration||500);setTimeout(function(){b.options.mode=="show"?e.css({visibility:"visible"}):e.css({visibility:"visible"}).hide(),b.callback&&b.callback.apply(e[0]),e.dequeue(),a("div.ui-effects-explode").remove()},b.duration||500)})}})(jQuery);/*
+ * jQuery UI Effects Fade 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/Effects/Fade
+ *
+ * Depends:
+ *     jquery.effects.core.js
+ */(function(a,b){a.effects.fade=function(b){return this.queue(function(){var c=a(this),d=a.effects.setMode(c,b.options.mode||"hide");c.animate({opacity:d},{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);/*
+ * jQuery UI Effects Fold 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/Effects/Fold
+ *
+ * Depends:
+ *     jquery.effects.core.js
+ */(function(a,b){a.effects.fold=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.size||15,g=!!b.options.horizFirst,h=b.duration?b.duration/2:a.fx.speeds._default/2;a.effects.save(c,d),c.show();var i=a.effects.createWrapper(c).css({overflow:"hidden"}),j=e=="show"!=g,k=j?["width","height"]:["height","width"],l=j?[i.width(),i.height()]:[i.height(),i.width()],m=/([0-9]+)%/.exec(f);m&&(f=parseInt(m[1],10)/100*l[e=="hide"?0:1]),e=="show"&&i.css(g?{height:0,width:f}:{height:f,width:0});var n={},p={};n[k[0]]=e=="show"?l[0]:f,p[k[1]]=e=="show"?l[1]:0,i.animate(n,h,b.options.easing).animate(p,h,b.options.easing,function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()})})}})(jQuery);/*
+ * jQuery UI Effects Highlight 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/Effects/Highlight
+ *
+ * Depends:
+ *     jquery.effects.core.js
+ */(function(a,b){a.effects.highlight=function(b){return this.queue(function(){var c=a(this),d=["backgroundImage","backgroundColor","opacity"],e=a.effects.setMode(c,b.options.mode||"show"),f={backgroundColor:c.css("backgroundColor")};e=="hide"&&(f.opacity=0),a.effects.save(c,d),c.show().css({backgroundImage:"none",backgroundColor:b.options.color||"#ffff99"}).animate(f,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),e=="show"&&!a.support.opacity&&this.style.removeAttribute("filter"),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);/*
+ * jQuery UI Effects Pulsate 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/Effects/Pulsate
+ *
+ * Depends:
+ *     jquery.effects.core.js
+ */(function(a,b){a.effects.pulsate=function(b){return this.queue(function(){var c=a(this),d=a.effects.setMode(c,b.options.mode||"show");times=(b.options.times||5)*2-1,duration=b.duration?b.duration/2:a.fx.speeds._default/2,isVisible=c.is(":visible"),animateTo=0,isVisible||(c.css("opacity",0).show(),animateTo=1),(d=="hide"&&isVisible||d=="show"&&!isVisible)&&times--;for(var e=0;e<times;e++)c.animate({opacity:animateTo},duration,b.options.easing),animateTo=(animateTo+1)%2;c.animate({opacity:animateTo},duration,b.options.easing,function(){animateTo==0&&c.hide(),b.callback&&b.callback.apply(this,arguments)}),c.queue("fx",function(){c.dequeue()}).dequeue()})}})(jQuery);/*
+ * jQuery UI Effects Scale 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/Effects/Scale
+ *
+ * Depends:
+ *     jquery.effects.core.js
+ */(function(a,b){a.effects.puff=function(b){return this.queue(function(){var c=a(this),d=a.effects.setMode(c,b.options.mode||"hide"),e=parseInt(b.options.percent,10)||150,f=e/100,g={height:c.height(),width:c.width()};a.extend(b.options,{fade:!0,mode:d,percent:d=="hide"?e:100,from:d=="hide"?g:{height:g.height*f,width:g.width*f}}),c.effect("scale",b.options,b.duration,b.callback),c.dequeue()})},a.effects.scale=function(b){return this.queue(function(){var c=a(this),d=a.extend(!0,{},b.options),e=a.effects.setMode(c,b.options.mode||"effect"),f=parseInt(b.options.percent,10)||(parseInt(b.options.percent,10)==0?0:e=="hide"?0:100),g=b.options.direction||"both",h=b.options.origin;e!="effect"&&(d.origin=h||["middle","center"],d.restore=!0);var i={height:c.height(),width:c.width()};c.from=b.options.from||(e=="show"?{height:0,width:0}:i);var j={y:g!="horizontal"?f/100:1,x:g!="vertical"?f/100:1};c.to={height:i.height*j.y,width:i.width*j.x},b.options.fade&&(e=="show"&&(c.from.opacity=0,c.to.opacity=1),e=="hide"&&(c.from.opacity=1,c.to.opacity=0)),d.from=c.from,d.to=c.to,d.mode=e,c.effect("size",d,b.duration,b.callback),c.dequeue()})},a.effects.size=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right","width","height","overflow","opacity"],e=["position","top","bottom","left","right","overflow","opacity"],f=["width","height","overflow"],g=["fontSize"],h=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],i=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],j=a.effects.setMode(c,b.options.mode||"effect"),k=b.options.restore||!1,l=b.options.scale||"both",m=b.options.origin,n={height:c.height(),width:c.width()};c.from=b.options.from||n,c.to=b.options.to||n;if(m){var p=a.effects.getBaseline(m,n);c.from.top=(n.height-c.from.height)*p.y,c.from.left=(n.width-c.from.width)*p.x,c.to.top=(n.height-c.to.height)*p.y,c.to.left=(n.width-c.to.width)*p.x}var q={from:{y:c.from.height/n.height,x:c.from.width/n.width},to:{y:c.to.height/n.height,x:c.to.width/n.width}};if(l=="box"||l=="both")q.from.y!=q.to.y&&(d=d.concat(h),c.from=a.effects.setTransition(c,h,q.from.y,c.from),c.to=a.effects.setTransition(c,h,q.to.y,c.to)),q.from.x!=q.to.x&&(d=d.concat(i),c.from=a.effects.setTransition(c,i,q.from.x,c.from),c.to=a.effects.setTransition(c,i,q.to.x,c.to));(l=="content"||l=="both")&&q.from.y!=q.to.y&&(d=d.concat(g),c.from=a.effects.setTransition(c,g,q.from.y,c.from),c.to=a.effects.setTransition(c,g,q.to.y,c.to)),a.effects.save(c,k?d:e),c.show(),a.effects.createWrapper(c),c.css("overflow","hidden").css(c.from);if(l=="content"||l=="both")h=h.concat(["marginTop","marginBottom"]).concat(g),i=i.concat(["marginLeft","marginRight"]),f=d.concat(h).concat(i),c.find("*[width]").each(function(){child=a(this),k&&a.effects.save(child,f);var c={height:child.height(),width:child.width()};child.from={height:c.height*q.from.y,width:c.width*q.from.x},child.to={height:c.height*q.to.y,width:c.width*q.to.x},q.from.y!=q.to.y&&(child.from=a.effects.setTransition(child,h,q.from.y,child.from),child.to=a.effects.setTransition(child,h,q.to.y,child.to)),q.from.x!=q.to.x&&(child.from=a.effects.setTransition(child,i,q.from.x,child.from),child.to=a.effects.setTransition(child,i,q.to.x,child.to)),child.css(child.from),child.animate(child.to,b.duration,b.options.easing,function(){k&&a.effects.restore(child,f)})});c.animate(c.to,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){c.to.opacity===0&&c.css("opacity",c.from.opacity),j=="hide"&&c.hide(),a.effects.restore(c,k?d:e),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);/*
+ * jQuery UI Effects Shake 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/Effects/Shake
+ *
+ * Depends:
+ *     jquery.effects.core.js
+ */(function(a,b){a.effects.shake=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"effect"),f=b.options.direction||"left",g=b.options.distance||20,h=b.options.times||3,i=b.duration||b.options.duration||140;a.effects.save(c,d),c.show(),a.effects.createWrapper(c);var j=f=="up"||f=="down"?"top":"left",k=f=="up"||f=="left"?"pos":"neg",l={},m={},n={};l[j]=(k=="pos"?"-=":"+=")+g,m[j]=(k=="pos"?"+=":"-=")+g*2,n[j]=(k=="pos"?"-=":"+=")+g*2,c.animate(l,i,b.options.easing);for(var p=1;p<h;p++)c.animate(m,i,b.options.easing).animate(n,i,b.options.easing);c.animate(m,i,b.options.easing).animate(l,i/2,b.options.easing,function(){a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments)}),c.queue("fx",function(){c.dequeue()}),c.dequeue()})}})(jQuery);/*
+ * jQuery UI Effects Slide 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/Effects/Slide
+ *
+ * Depends:
+ *     jquery.effects.core.js
+ */(function(a,b){a.effects.slide=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"show"),f=b.options.direction||"left";a.effects.save(c,d),c.show(),a.effects.createWrapper(c).css({overflow:"hidden"});var g=f=="up"||f=="down"?"top":"left",h=f=="up"||f=="left"?"pos":"neg",i=b.options.distance||(g=="top"?c.outerHeight({margin:!0}):c.outerWidth({margin:!0}));e=="show"&&c.css(g,h=="pos"?isNaN(i)?"-"+i:-i:i);var j={};j[g]=(e=="show"?h=="pos"?"+=":"-=":h=="pos"?"-=":"+=")+i,c.animate(j,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);/*
+ * jQuery UI Effects Transfer 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/Effects/Transfer
+ *
+ * Depends:
+ *     jquery.effects.core.js
+ */(function(a,b){a.effects.transfer=function(b){return this.queue(function(){var c=a(this),d=a(b.options.to),e=d.offset(),f={top:e.top,left:e.left,height:d.innerHeight(),width:d.innerWidth()},g=c.offset(),h=a('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(b.options.className).css({top:g.top,left:g.left,height:c.innerHeight(),width:c.innerWidth(),position:"absolute"}).animate(f,b.duration,b.options.easing,function(){h.remove(),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()})})}})(jQuery);
\ No newline at end of file
diff --git a/plugins/jqueryui/package.xml b/plugins/jqueryui/package.xml
new file mode 100644 (file)
index 0000000..1d26516
--- /dev/null
@@ -0,0 +1,149 @@
+<?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>thomasb</user>
+               <email>roundcube@gmail.com</email>
+               <active>yes</active>
+       </lead>
+       <date>2011-11-21</date>
+       <version>
+               <release>1.8.14</release>
+               <api>1.8</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>-</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.8.14.custom.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.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-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-GB.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-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-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-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-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-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.8.14.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/redmont/jquery-ui-1.8.14.custom.css" role="data"></file>
+                       <file name="themes/redmont/images/ui-bg_flat_0_aaaaaa_40x100.png" role="data"></file>
+                       <file name="themes/redmont/images/ui-bg_glass_95_fef1ec_1x400.png" role="data"></file>
+                       <file name="themes/redmont/images/ui-icons_217bc0_256x240.png" role="data"></file>
+                       <file name="themes/redmont/images/ui-icons_cd0a0a_256x240.png" role="data"></file>
+                       <file name="themes/redmont/images/ui-bg_flat_55_fbec88_40x100.png" role="data"></file>
+                       <file name="themes/redmont/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png" role="data"></file>
+                       <file name="themes/redmont/images/ui-icons_2e83ff_256x240.png" role="data"></file>
+                       <file name="themes/redmont/images/ui-icons_d8e7f3_256x240.png" role="data"></file>
+                       <file name="themes/redmont/images/ui-bg_glass_75_d0e5f5_1x400.png" role="data"></file>
+                       <file name="themes/redmont/images/ui-bg_inset-hard_100_f5f8f9_1x100.png" role="data"></file>
+                       <file name="themes/redmont/images/ui-icons_469bdd_256x240.png" role="data"></file>
+                       <file name="themes/redmont/images/ui-icons_f9bd01_256x240.png" role="data"></file>
+                       <file name="themes/redmont/images/ui-bg_glass_85_dfeffc_1x400.png" role="data"></file>
+                       <file name="themes/redmont/images/ui-bg_inset-hard_100_fcfdfd_1x100.png" role="data"></file>
+                       <file name="themes/redmont/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/buttongradient.png b/plugins/jqueryui/themes/classic/images/buttongradient.png
new file mode 100644 (file)
index 0000000..0595474
Binary files /dev/null and b/plugins/jqueryui/themes/classic/images/buttongradient.png differ
diff --git a/plugins/jqueryui/themes/classic/images/listheader.png b/plugins/jqueryui/themes/classic/images/listheader.png
new file mode 100644 (file)
index 0000000..670df0c
Binary files /dev/null and b/plugins/jqueryui/themes/classic/images/listheader.png differ
diff --git a/plugins/jqueryui/themes/classic/images/ui-bg_flat_0_aaaaaa_40x100.png b/plugins/jqueryui/themes/classic/images/ui-bg_flat_0_aaaaaa_40x100.png
new file mode 100755 (executable)
index 0000000..5b5dab2
Binary files /dev/null and b/plugins/jqueryui/themes/classic/images/ui-bg_flat_0_aaaaaa_40x100.png differ
diff --git a/plugins/jqueryui/themes/classic/images/ui-bg_flat_75_ffffff_40x100.png b/plugins/jqueryui/themes/classic/images/ui-bg_flat_75_ffffff_40x100.png
new file mode 100755 (executable)
index 0000000..ac8b229
Binary files /dev/null and b/plugins/jqueryui/themes/classic/images/ui-bg_flat_75_ffffff_40x100.png differ
diff --git a/plugins/jqueryui/themes/classic/images/ui-bg_flat_90_cc3333_40x100.png b/plugins/jqueryui/themes/classic/images/ui-bg_flat_90_cc3333_40x100.png
new file mode 100755 (executable)
index 0000000..6a5d37d
Binary files /dev/null and b/plugins/jqueryui/themes/classic/images/ui-bg_flat_90_cc3333_40x100.png differ
diff --git a/plugins/jqueryui/themes/classic/images/ui-bg_glass_95_fef1ec_1x400.png b/plugins/jqueryui/themes/classic/images/ui-bg_glass_95_fef1ec_1x400.png
new file mode 100755 (executable)
index 0000000..4443fdc
Binary files /dev/null and b/plugins/jqueryui/themes/classic/images/ui-bg_glass_95_fef1ec_1x400.png differ
diff --git a/plugins/jqueryui/themes/classic/images/ui-bg_highlight-hard_90_a3a3a3_1x100.png b/plugins/jqueryui/themes/classic/images/ui-bg_highlight-hard_90_a3a3a3_1x100.png
new file mode 100755 (executable)
index 0000000..b3533aa
Binary files /dev/null and b/plugins/jqueryui/themes/classic/images/ui-bg_highlight-hard_90_a3a3a3_1x100.png differ
diff --git a/plugins/jqueryui/themes/classic/images/ui-bg_highlight-hard_90_e6e6e7_1x100.png b/plugins/jqueryui/themes/classic/images/ui-bg_highlight-hard_90_e6e6e7_1x100.png
new file mode 100755 (executable)
index 0000000..d0a127f
Binary files /dev/null and b/plugins/jqueryui/themes/classic/images/ui-bg_highlight-hard_90_e6e6e7_1x100.png differ
diff --git a/plugins/jqueryui/themes/classic/images/ui-bg_highlight-hard_90_f4f4f4_1x100.png b/plugins/jqueryui/themes/classic/images/ui-bg_highlight-hard_90_f4f4f4_1x100.png
new file mode 100755 (executable)
index 0000000..ecc0ac1
Binary files /dev/null and b/plugins/jqueryui/themes/classic/images/ui-bg_highlight-hard_90_f4f4f4_1x100.png differ
diff --git a/plugins/jqueryui/themes/classic/images/ui-icons_000000_256x240.png b/plugins/jqueryui/themes/classic/images/ui-icons_000000_256x240.png
new file mode 100755 (executable)
index 0000000..7c211aa
Binary files /dev/null and b/plugins/jqueryui/themes/classic/images/ui-icons_000000_256x240.png differ
diff --git a/plugins/jqueryui/themes/classic/images/ui-icons_333333_256x240.png b/plugins/jqueryui/themes/classic/images/ui-icons_333333_256x240.png
new file mode 100755 (executable)
index 0000000..fe079a5
Binary files /dev/null and b/plugins/jqueryui/themes/classic/images/ui-icons_333333_256x240.png differ
diff --git a/plugins/jqueryui/themes/classic/images/ui-icons_666666_256x240.png b/plugins/jqueryui/themes/classic/images/ui-icons_666666_256x240.png
new file mode 100755 (executable)
index 0000000..f87de1c
Binary files /dev/null and b/plugins/jqueryui/themes/classic/images/ui-icons_666666_256x240.png differ
diff --git a/plugins/jqueryui/themes/classic/images/ui-icons_cc3333_256x240.png b/plugins/jqueryui/themes/classic/images/ui-icons_cc3333_256x240.png
new file mode 100755 (executable)
index 0000000..b2fe029
Binary files /dev/null and b/plugins/jqueryui/themes/classic/images/ui-icons_cc3333_256x240.png differ
diff --git a/plugins/jqueryui/themes/classic/images/ui-icons_dddddd_256x240.png b/plugins/jqueryui/themes/classic/images/ui-icons_dddddd_256x240.png
new file mode 100755 (executable)
index 0000000..91aada0
Binary files /dev/null and b/plugins/jqueryui/themes/classic/images/ui-icons_dddddd_256x240.png differ
diff --git a/plugins/jqueryui/themes/classic/jquery-ui-1.8.18.custom.css b/plugins/jqueryui/themes/classic/jquery-ui-1.8.18.custom.css
new file mode 100755 (executable)
index 0000000..288e624
--- /dev/null
@@ -0,0 +1,577 @@
+/*
+ * 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-hover,
+.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 */
+/*
+ * 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
new file mode 100644 (file)
index 0000000..f5be879
--- /dev/null
@@ -0,0 +1,118 @@
+--- 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 */
++#ui-active-menuitem { background:#c33; border-color:#a22; color:#fff; }
++
+ /*
+  * jQuery UI Menu 1.8.18
+  *
+@@ -361,6 +365,9 @@
+       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;
+@@ -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; }
+ /* with multiple calendars */
diff --git a/plugins/jqueryui/themes/default/images/buttongradient.png b/plugins/jqueryui/themes/default/images/buttongradient.png
deleted file mode 100644 (file)
index 0595474..0000000
Binary files a/plugins/jqueryui/themes/default/images/buttongradient.png and /dev/null differ
diff --git a/plugins/jqueryui/themes/default/images/listheader.png b/plugins/jqueryui/themes/default/images/listheader.png
deleted file mode 100644 (file)
index 670df0c..0000000
Binary files a/plugins/jqueryui/themes/default/images/listheader.png and /dev/null differ
diff --git a/plugins/jqueryui/themes/default/images/ui-bg_flat_0_aaaaaa_40x100.png b/plugins/jqueryui/themes/default/images/ui-bg_flat_0_aaaaaa_40x100.png
deleted file mode 100755 (executable)
index 5b5dab2..0000000
Binary files a/plugins/jqueryui/themes/default/images/ui-bg_flat_0_aaaaaa_40x100.png and /dev/null differ
diff --git a/plugins/jqueryui/themes/default/images/ui-bg_flat_75_ffffff_40x100.png b/plugins/jqueryui/themes/default/images/ui-bg_flat_75_ffffff_40x100.png
deleted file mode 100755 (executable)
index ac8b229..0000000
Binary files a/plugins/jqueryui/themes/default/images/ui-bg_flat_75_ffffff_40x100.png and /dev/null differ
diff --git a/plugins/jqueryui/themes/default/images/ui-bg_flat_90_cc3333_40x100.png b/plugins/jqueryui/themes/default/images/ui-bg_flat_90_cc3333_40x100.png
deleted file mode 100755 (executable)
index 6a5d37d..0000000
Binary files a/plugins/jqueryui/themes/default/images/ui-bg_flat_90_cc3333_40x100.png and /dev/null differ
diff --git a/plugins/jqueryui/themes/default/images/ui-bg_glass_95_fef1ec_1x400.png b/plugins/jqueryui/themes/default/images/ui-bg_glass_95_fef1ec_1x400.png
deleted file mode 100755 (executable)
index 4443fdc..0000000
Binary files a/plugins/jqueryui/themes/default/images/ui-bg_glass_95_fef1ec_1x400.png and /dev/null differ
diff --git a/plugins/jqueryui/themes/default/images/ui-bg_highlight-hard_90_a3a3a3_1x100.png b/plugins/jqueryui/themes/default/images/ui-bg_highlight-hard_90_a3a3a3_1x100.png
deleted file mode 100755 (executable)
index b3533aa..0000000
Binary files a/plugins/jqueryui/themes/default/images/ui-bg_highlight-hard_90_a3a3a3_1x100.png and /dev/null differ
diff --git a/plugins/jqueryui/themes/default/images/ui-bg_highlight-hard_90_e6e6e7_1x100.png b/plugins/jqueryui/themes/default/images/ui-bg_highlight-hard_90_e6e6e7_1x100.png
deleted file mode 100755 (executable)
index d0a127f..0000000
Binary files a/plugins/jqueryui/themes/default/images/ui-bg_highlight-hard_90_e6e6e7_1x100.png and /dev/null differ
diff --git a/plugins/jqueryui/themes/default/images/ui-bg_highlight-hard_90_f4f4f4_1x100.png b/plugins/jqueryui/themes/default/images/ui-bg_highlight-hard_90_f4f4f4_1x100.png
deleted file mode 100755 (executable)
index ecc0ac1..0000000
Binary files a/plugins/jqueryui/themes/default/images/ui-bg_highlight-hard_90_f4f4f4_1x100.png and /dev/null differ
diff --git a/plugins/jqueryui/themes/default/images/ui-icons_000000_256x240.png b/plugins/jqueryui/themes/default/images/ui-icons_000000_256x240.png
deleted file mode 100755 (executable)
index 7c211aa..0000000
Binary files a/plugins/jqueryui/themes/default/images/ui-icons_000000_256x240.png and /dev/null differ
diff --git a/plugins/jqueryui/themes/default/images/ui-icons_333333_256x240.png b/plugins/jqueryui/themes/default/images/ui-icons_333333_256x240.png
deleted file mode 100755 (executable)
index fe079a5..0000000
Binary files a/plugins/jqueryui/themes/default/images/ui-icons_333333_256x240.png and /dev/null differ
diff --git a/plugins/jqueryui/themes/default/images/ui-icons_666666_256x240.png b/plugins/jqueryui/themes/default/images/ui-icons_666666_256x240.png
deleted file mode 100755 (executable)
index f87de1c..0000000
Binary files a/plugins/jqueryui/themes/default/images/ui-icons_666666_256x240.png and /dev/null differ
diff --git a/plugins/jqueryui/themes/default/images/ui-icons_cc3333_256x240.png b/plugins/jqueryui/themes/default/images/ui-icons_cc3333_256x240.png
deleted file mode 100755 (executable)
index b2fe029..0000000
Binary files a/plugins/jqueryui/themes/default/images/ui-icons_cc3333_256x240.png and /dev/null differ
diff --git a/plugins/jqueryui/themes/default/images/ui-icons_dddddd_256x240.png b/plugins/jqueryui/themes/default/images/ui-icons_dddddd_256x240.png
deleted file mode 100755 (executable)
index 91aada0..0000000
Binary files a/plugins/jqueryui/themes/default/images/ui-icons_dddddd_256x240.png and /dev/null differ
diff --git a/plugins/jqueryui/themes/default/jquery-ui-1.8.14.custom.css b/plugins/jqueryui/themes/default/jquery-ui-1.8.14.custom.css
deleted file mode 100755 (executable)
index dbc78fd..0000000
+++ /dev/null
@@ -1,580 +0,0 @@
-/*
- * jQuery UI CSS Framework 1.8.14
- *
- * 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:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
-.ui-helper-clearfix { display: inline-block; }
-/* required comment for clearfix to work in Opera \*/
-* html .ui-helper-clearfix { height:1%; }
-.ui-helper-clearfix { display:block; }
-/* end clearfix */
-.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.14
- *
- * 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&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.14
- *
- * 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.14
- *
- * 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.14
- *
- * 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.14
- *
- * 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.14
- *
- * 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-hover,
-.ui-menu .ui-menu-item a.ui-state-active {
-       font-weight: normal;
-       margin: -1px;
-}
-/*
- * jQuery UI Button 1.8.14
- *
- * 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: default; text-align: center; zoom: 1; 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 */
-/*
- * jQuery UI Dialog 1.8.14
- *
- * 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.14
- *
- * 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.14
- *
- * 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.14
- *
- * 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.14
- *
- * 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; }
-.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file
diff --git a/plugins/jqueryui/themes/default/roundcube-custom.diff b/plugins/jqueryui/themes/default/roundcube-custom.diff
deleted file mode 100644 (file)
index cd1e300..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
---- jquery-ui-1.8.14.custom.css.orig   2011-07-20 13:59:40.000000000 +0200
-+++ jquery-ui-1.8.14.custom.css        2011-07-24 16:23:47.000000000 +0200
-@@ -61,7 +61,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
-@@ -72,6 +72,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
-@@ -82,7 +84,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
-@@ -349,6 +351,8 @@
- /* 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.14
-  *
-@@ -364,6 +368,9 @@
-       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;
-@@ -397,15 +404,16 @@
-  *
-  * 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; } /* the overflow property removes extra width in IE */
-+.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: default; text-align: center; zoom: 1; 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: .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; }
-@@ -435,7 +443,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; }
-@@ -444,7 +452,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; }
- /*
-@@ -481,13 +489,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.14
-  *
-@@ -497,7 +508,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; }
-@@ -515,8 +526,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; }
- /* with multiple calendars */
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
new file mode 100755 (executable)
index 0000000..04f19af
Binary files /dev/null and b/plugins/jqueryui/themes/larry/images/ui-bg_highlight-hard_55_b0ccd7_1x100.png 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
new file mode 100755 (executable)
index 0000000..eaa8cfa
Binary files /dev/null and b/plugins/jqueryui/themes/larry/images/ui-bg_highlight-hard_65_ffffff_1x100.png 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
new file mode 100755 (executable)
index 0000000..3231591
Binary files /dev/null and b/plugins/jqueryui/themes/larry/images/ui-bg_highlight-hard_75_eaeaea_1x100.png 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
new file mode 100755 (executable)
index 0000000..e228645
Binary files /dev/null and b/plugins/jqueryui/themes/larry/images/ui-bg_highlight-hard_75_f8f8f8_1x100.png 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
new file mode 100755 (executable)
index 0000000..a13a972
Binary files /dev/null and b/plugins/jqueryui/themes/larry/images/ui-bg_highlight-soft_75_fafafa_1x100.png 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
new file mode 100755 (executable)
index 0000000..675c051
Binary files /dev/null and b/plugins/jqueryui/themes/larry/images/ui-bg_highlight-soft_90_e4e4e4_1x100.png differ
diff --git a/plugins/jqueryui/themes/larry/images/ui-dialog-close.png b/plugins/jqueryui/themes/larry/images/ui-dialog-close.png
new file mode 100644 (file)
index 0000000..3fc403f
Binary files /dev/null and b/plugins/jqueryui/themes/larry/images/ui-dialog-close.png differ
diff --git a/plugins/jqueryui/themes/larry/images/ui-icons-datepicker.png b/plugins/jqueryui/themes/larry/images/ui-icons-datepicker.png
new file mode 100644 (file)
index 0000000..1c036f3
Binary files /dev/null and b/plugins/jqueryui/themes/larry/images/ui-icons-datepicker.png differ
diff --git a/plugins/jqueryui/themes/larry/images/ui-icons_004458_256x240.png b/plugins/jqueryui/themes/larry/images/ui-icons_004458_256x240.png
new file mode 100755 (executable)
index 0000000..083a564
Binary files /dev/null and b/plugins/jqueryui/themes/larry/images/ui-icons_004458_256x240.png differ
diff --git a/plugins/jqueryui/themes/larry/images/ui-icons_d7211e_256x240.png b/plugins/jqueryui/themes/larry/images/ui-icons_d7211e_256x240.png
new file mode 100755 (executable)
index 0000000..fdc2c49
Binary files /dev/null and b/plugins/jqueryui/themes/larry/images/ui-icons_d7211e_256x240.png differ
diff --git a/plugins/jqueryui/themes/larry/images/ui-icons_ffffff_256x240.png b/plugins/jqueryui/themes/larry/images/ui-icons_ffffff_256x240.png
new file mode 100755 (executable)
index 0000000..42f8f99
Binary files /dev/null and b/plugins/jqueryui/themes/larry/images/ui-icons_ffffff_256x240.png differ
diff --git a/plugins/jqueryui/themes/larry/jquery-ui-1.8.18.custom.css b/plugins/jqueryui/themes/larry/jquery-ui-1.8.18.custom.css
new file mode 100755 (executable)
index 0000000..b51fb95
--- /dev/null
@@ -0,0 +1,657 @@
+/*
+ * 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-hover,
+.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%);
+       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.ui-state-focus {
+       color: #525252;
+       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);
+}
+
+.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%);
+
+}
+
+/*
+ * 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; }
+/*
+ * 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;
+       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%);
+};
+
+.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%); }
+.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-selected { }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-dialog-content .tabsbar .tablink.selected a { 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%); }
+.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: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-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: 0.5em 1em; margin-top: 0.5em; 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 { width: 49%;}
+.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/redmond/jquery-ui-1.8.14.custom.css b/plugins/jqueryui/themes/redmond/jquery-ui-1.8.14.custom.css
deleted file mode 100755 (executable)
index 49dc0ab..0000000
+++ /dev/null
@@ -1,568 +0,0 @@
-/*
- * jQuery UI CSS Framework 1.8.14
- *
- * 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:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
-.ui-helper-clearfix { display: inline-block; }
-/* required comment for clearfix to work in Opera \*/
-* html .ui-helper-clearfix { height:1%; }
-.ui-helper-clearfix { display:block; }
-/* end clearfix */
-.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.14
- *
- * 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,%20Lucida%20Sans,%20Arial,%20sans-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
- */
-
-
-/* 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 { 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; }
-.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 #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; }
-
-/* 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-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: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;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: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
- * jQuery UI Resizable 1.8.14
- *
- * 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.14
- *
- * 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.14
- *
- * 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.14
- *
- * 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.14
- *
- * 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;
-}
-.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-hover,
-.ui-menu .ui-menu-item a.ui-state-active {
-       font-weight: normal;
-       margin: -1px;
-}
-/*
- * jQuery UI Button 1.8.14
- *
- * 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; } /* 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 */
-/*
- * jQuery UI Dialog 1.8.14
- *
- * 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; }
-.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; }
-/*
- * jQuery UI Slider 1.8.14
- *
- * 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.14
- *
- * 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 .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.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; }
-/*
- * jQuery UI Datepicker 1.8.14
- *
- * 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; }
-.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 {
-    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.14
- *
- * 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; }
-.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file
diff --git a/plugins/jqueryui/themes/redmond/jquery-ui-1.8.18.custom.css b/plugins/jqueryui/themes/redmond/jquery-ui-1.8.18.custom.css
new file mode 100755 (executable)
index 0000000..3767b90
--- /dev/null
@@ -0,0 +1,565 @@
+/*
+ * 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&ffDefault=Lucida%20Grande,%20Lucida%20Sans,%20Arial,%20sans-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
+ */
+
+
+/* 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 { 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; }
+.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 #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; }
+
+/* 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-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: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;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: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
+ * 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 */
+
+/*
+ * 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;
+}
+.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-hover,
+.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 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 */
+/*
+ * 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; }
+.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; }
+/*
+ * 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 .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.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; }
+/*
+ * 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; }
+.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 {
+    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
index 855e80cead5be7c0de8b6ce150a7de96af514456..feb0189c80993080070dd30a733463a4831c0193 100644 (file)
@@ -1,3 +1,19 @@
+- Fixed filter activation/deactivation confirmation message (#1488765)
+- Fixed issue with DBMail bug [http://pear.php.net/bugs/bug.php?id=19077] (#1488594)
+
+* version 5.2 [2012-07-24]
+-----------------------------------------------------------
+- Added GUI for variables setting - RFC5229 (patch from Paweł Słowik)
+- Fixed scrollbars in Larry's iframes
+- Fix performance issue in message_headers_output hook handling
+
+* version 5.1 [2012-06-21]
+-----------------------------------------------------------
+- Fixed filter popup width (for non-english localizations)
+- Fixed tokenizer infinite loop on invalid script content
+- Larry skin support
+- Fixed custom header name validity check, made RFC2822-compliant
+
 * version 5.0 [2012-01-05]
 -----------------------------------------------------------
 - Fixed setting test type to :is when none is specified
 - Added pagetitle setting
 - Added option 'managesieve_replace_delimiter'
 - Fixed errors on IE (still need some css fixes)
-    
+
 * version beta2 [2008-05-20]
 -----------------------------------------------------------    
 - Use 'if' only for first filter and 'elsif' for the rest
index a8e36d8d71b03dee1e54a289e8b624b303a72642..8a0a9b0e120df68d3110a8b2e4f6fdcd234bb485 100644 (file)
@@ -1098,7 +1098,9 @@ class Net_Sieve
                     return PEAR::raiseError(trim($response . $line), 6);
                 }
 
-                if (preg_match('/^{([0-9]+)}/i', $line, $matches)) {
+                // "\+?" is added in the regexp to workaround DBMail bug
+                // http://dbmail.org/mantis/view.php?id=963
+                if (preg_match('/^{([0-9]+)\+?}/i', $line, $matches)) {
                     // Matches literal string responses.
                     $line = $this->_recvBytes($matches[1] + 2);
 
index 7c4f0aa31a20f8d7e257b6cced9688a59f0aa26e..2ed2e54bfc49bb1ff17e3328d435d03894dbb3a0 100644 (file)
@@ -19,7 +19,7 @@
  * with this program; if not, write to the Free Software Foundation, Inc.,
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
- * $Id: rcube_sieve.php 5452 2011-11-18 14:44:48Z alec $
+ * $Id$
  *
  */
 
index 04bcc4c139428939b99a5f4c09388fd03e707481..92f979cfd8a341cecd867499b4473e1fb99e630c 100644 (file)
@@ -19,7 +19,7 @@
  * with this program; if not, write to the Free Software Foundation, Inc.,
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
- * $Id: rcube_sieve_script.php 5452 2011-11-18 14:44:48Z alec $
+ * $Id$
  *
  */
 
@@ -1058,6 +1058,10 @@ class rcube_sieve_script
                         $result[] = $text;
                     }
                 }
+                // fallback, skip one character as infinite loop prevention
+                else {
+                    $str = substr($str, 1);
+                }
 
                 break;
             }
diff --git a/plugins/managesieve/localization/be_BE.inc b/plugins/managesieve/localization/be_BE.inc
new file mode 100644 (file)
index 0000000..00a409c
--- /dev/null
@@ -0,0 +1,53 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/be_BE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Alex Nehaichik <nab@mail.by>                                  |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['filters'] = 'Фільтры';
+$labels['managefilters'] = 'Кіраваць фільтрамі ўваходнае пошты';
+$labels['filtername'] = 'Назва фільтра';
+$labels['newfilter'] = 'Новы фільтар';
+$labels['filteradd'] = 'Дадаць фільтар';
+$labels['filterdel'] = 'Выдаліць фільтар';
+$labels['moveup'] = 'Пасунуць уверх';
+$labels['movedown'] = 'Пасунуць уніз';
+$labels['filterallof'] = 'супадаюць усе наступныя правілы';
+$labels['filteranyof'] = 'супадае любое наступнае правіла';
+$labels['filterany'] = 'усе паведамленні';
+$labels['filtercontains'] = 'змяшчае';
+$labels['filternotcontains'] = 'не змяшчае';
+$labels['filteris'] = 'роўна';
+$labels['filterisnot'] = 'не роўна';
+$labels['filterexists'] = 'існуе';
+$labels['filternotexists'] = 'не існуе';
+$labels['filtermatches'] = 'супадае з выразам';
+$labels['filternotmatches'] = 'не супадае з выразам';
+$labels['filterregex'] = 'супадае са сталым выразам';
+$labels['filternotregex'] = 'не супадае са сталым выразам';
+$labels['addrule'] = 'Дадаць правіла';
+$labels['delrule'] = 'Выдаліць правіла';
+$labels['messagemoveto'] = 'Перамясціць паведамленне ў';
+$labels['messageredirect'] = 'Перанакіраваць павдамленне на';
+$labels['messagecopyto'] = 'Скапіяваць паведамленне ў';
+$labels['messagesendcopy'] = 'Даслаць копію на';
+$labels['messagereply'] = 'Адказаць наступнае';
+$labels['messagedelete'] = 'Выдаліць паведамленне';
+$labels['add'] = 'Дадаць';
+$labels['del'] = 'Выдаліць';
+$labels['sender'] = 'Ад каго';
+$labels['recipient'] = 'Каму';
+$labels['vacationaddresses'] = 'Дадатковы спіс атрымальнікаў (праз коску):';
+$labels['vacationdays'] = 'Як часта дасылаць паведамленні (ў днях):';
+
diff --git a/plugins/managesieve/localization/bs_BA.inc b/plugins/managesieve/localization/bs_BA.inc
new file mode 100644 (file)
index 0000000..106fe6d
--- /dev/null
@@ -0,0 +1,149 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/bs_BA/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kenan Dervišević <kenan3008@gmail.com>                      |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['filters'] = 'Filteri';
+$labels['managefilters'] = 'Upravljanje dolaznim email filterima';
+$labels['filtername'] = 'Naziv filtera';
+$labels['newfilter'] = 'Novi filter';
+$labels['filteradd'] = 'Dodaj filter';
+$labels['filterdel'] = 'Obriši filter';
+$labels['moveup'] = 'Pomjeri gore';
+$labels['movedown'] = 'Pomjeri dole';
+$labels['filterallof'] = 'poklapa se sa svim sljedećim pravilima';
+$labels['filteranyof'] = 'poklapa se sa bilo kojim od sljedećih pravila';
+$labels['filterany'] = 'sve poruke';
+$labels['filtercontains'] = 'sadrži';
+$labels['filternotcontains'] = 'ne sadrži';
+$labels['filteris'] = 'jednako';
+$labels['filterisnot'] = 'nije jednako';
+$labels['filterexists'] = 'postoji';
+$labels['filternotexists'] = 'ne postoji';
+$labels['filtermatches'] = 'poklapa se sa izrazom';
+$labels['filternotmatches'] = 'ne poklapa se sa izrazom';
+$labels['filterregex'] = 'poklapa se sa regularnim izrazom';
+$labels['filternotregex'] = 'ne poklapa se sa regularnim izrazom';
+$labels['filterunder'] = 'ispod';
+$labels['filterover'] = 'iznad';
+$labels['addrule'] = 'Dodaj pravilo';
+$labels['delrule'] = 'Obriši pravilo';
+$labels['messagemoveto'] = 'Premjesti poruku u';
+$labels['messageredirect'] = 'Preusmjeri poruku ka';
+$labels['messagecopyto'] = 'Kopiraj poruku u';
+$labels['messagesendcopy'] = 'Pošalji kopiju poruke';
+$labels['messagereply'] = 'Odgovori';
+$labels['messagedelete'] = 'Obriši poruku';
+$labels['messagediscard'] = 'Odbaci sa porukom';
+$labels['messagesrules'] = 'Za dolazne emailove:';
+$labels['messagesactions'] = '...izvrši sljedeće akcije:';
+$labels['add'] = 'Dodaj';
+$labels['del'] = 'Obriši';
+$labels['sender'] = 'Pošiljaoc';
+$labels['recipient'] = 'Primaoc';
+$labels['vacationaddresses'] = 'Moje dodatne email adrese (odvojite zarezima):';
+$labels['vacationdays'] = 'Frekvencija slanja poruka (u danima):';
+$labels['vacationreason'] = 'Tijelo poruke (razlog za odmor):';
+$labels['vacationsubject'] = 'Naslov poruke:';
+$labels['rulestop'] = 'Prestani procjenjivati pravila';
+$labels['enable'] = 'Omogući/Onemogući';
+$labels['filterset'] = 'Set filtera';
+$labels['filtersets'] = 'Setovi filtera';
+$labels['filtersetadd'] = 'Dodaj set filtera';
+$labels['filtersetdel'] = 'Obriši trenutni set filtera';
+$labels['filtersetact'] = 'Aktiviraj trenutni set filtera';
+$labels['filtersetdeact'] = 'Deaktiviraj trenutni set filtera';
+$labels['filterdef'] = 'Definicija filtera';
+$labels['filtersetname'] = 'Naziv seta filtera';
+$labels['newfilterset'] = 'Novi set filtera';
+$labels['active'] = 'aktivno';
+$labels['none'] = 'ništa';
+$labels['fromset'] = 'iz seta';
+$labels['fromfile'] = 'iz datoteke';
+$labels['filterdisabled'] = 'Filter je onemogućen';
+$labels['countisgreaterthan'] = 'brojač je veći od';
+$labels['countisgreaterthanequal'] = 'brojač je veći ili jednak';
+$labels['countislessthan'] = 'brojač je manji od';
+$labels['countislessthanequal'] = 'brojač je manji ili jednak';
+$labels['countequals'] = 'brojač je jednak';
+$labels['countnotequals'] = 'brojač nije jednak';
+$labels['valueisgreaterthan'] = 'vrijednost je veća od';
+$labels['valueisgreaterthanequal'] = 'vrijednost je veća ili jednaka';
+$labels['valueislessthan'] = 'vrijednost je manja od';
+$labels['valueislessthanequal'] = 'vrijednost je manja ili jednaka';
+$labels['valueequals'] = 'vrijednost je jednaka';
+$labels['valuenotequals'] = 'vrijednost nije jednaka';
+$labels['setflags'] = 'Postavi oznake za poruku';
+$labels['addflags'] = 'Dodaj oznake u poruku';
+$labels['removeflags'] = 'Ukloni oznake iz poruke';
+$labels['flagread'] = 'Pročitano';
+$labels['flagdeleted'] = 'Obrisano';
+$labels['flaganswered'] = 'Odgovoreno';
+$labels['flagflagged'] = 'Važno';
+$labels['flagdraft'] = 'Skica';
+$labels['filtercreate'] = 'Kreiraj filter';
+$labels['usedata'] = 'Koristite sljedeće podatke u filteru:';
+$labels['nextstep'] = 'Sljedeći korak';
+$labels['...'] = '...';
+$labels['advancedopts'] = 'Napredne opcije';
+$labels['body'] = 'Tijelo';
+$labels['address'] = 'adresa';
+$labels['envelope'] = 'koverta';
+$labels['modifier'] = 'prilagođavanje:';
+$labels['text'] = 'tekst';
+$labels['undecoded'] = 'nekodiran (obični)';
+$labels['contenttype'] = 'vrsta sadržaja';
+$labels['modtype'] = 'vrsta:';
+$labels['allparts'] = 'sve';
+$labels['domain'] = 'domena';
+$labels['localpart'] = 'lokalni dio';
+$labels['user'] = 'korisnik';
+$labels['detail'] = 'detalji';
+$labels['comparator'] = 'upoređivač:';
+$labels['default'] = 'početno';
+$labels['octet'] = 'striktno (oktet)';
+$labels['asciicasemap'] = 'osjetljivo na velika/mala slova (ascii-casemap)';
+$labels['asciinumeric'] = 'numerički (ascii-numeric)';
+$labels['filterunknownerror'] = 'Nepoznata serverska greška.';
+$labels['filterconnerror'] = 'Nije se moguće povezati na server.';
+$labels['filterdeleteerror'] = 'Nije moguće obrisati filter. Desila se serverska greška.';
+$labels['filterdeleted'] = 'Filter je uspješno obrisan.';
+$labels['filtersaved'] = 'Filter je uspješno sačuvan.';
+$labels['filtersaveerror'] = 'Nije moguće sačuvati filter. Desila se serverska greška.';
+$labels['filterdeleteconfirm'] = 'Da li zaista želite obrisati označeni filter?';
+$labels['ruledeleteconfirm'] = 'Jeste li sigurni da želite obrisati označeno pravilo?';
+$labels['actiondeleteconfirm'] = 'Jeste li sigurni da želite obrisati označenu akciju?';
+$labels['forbiddenchars'] = 'U polje su uneseni nedozvoljeni znakovi.';
+$labels['cannotbeempty'] = 'Polje ne može biti prazno.';
+$labels['ruleexist'] = 'Filter s tim imenom već postoji.';
+$labels['setactivateerror'] = 'Nije moguće aktivirati označeni set filtera. Desila se serverska greška.';
+$labels['setdeactivateerror'] = 'Nije moguće deaktivirati označeni set filtera. Desila se serverska greška.';
+$labels['setdeleteerror'] = 'Nije moguće obrisati označeni set filtera. Desila se serverska greška.';
+$labels['setactivated'] = 'Set filtera je uspješno aktiviran.';
+$labels['setdeactivated'] = 'Set filtera je uspješno deaktiviran.';
+$labels['setdeleted'] = 'Set filtera je uspješno obrisan.';
+$labels['setdeleteconfirm'] = 'Jeste li sigurni da želite obrisati označeni set filtera?';
+$labels['setcreateerror'] = 'Nije moguće kreirati se filtera. Desila se serverska greška.';
+$labels['setcreated'] = 'Set filtera je uspješno kreiran.';
+$labels['activateerror'] = 'Nije moguće omogućiti označene filtere. Desila se serverska greška.';
+$labels['deactivateerror'] = 'Nije moguće onemogućiti označene filtere. Desila se serverska greška.';
+$labels['deactivated'] = 'Filteri su uspješno onemogućeni.';
+$labels['activated'] = 'Filteri su uspješno omogućeni.';
+$labels['moved'] = 'Filteri su uspješno premješteni.';
+$labels['moveerror'] = 'Nije moguće premjestiti označeni filter. Desila se serverska greška.';
+$labels['nametoolong'] = 'Ime je predugo.';
+$labels['namereserved'] = 'Ime je rezervisano.';
+$labels['setexist'] = 'Set već postoji.';
+$labels['nodata'] = 'Morate označiti barem jednu poziciju!';
+
diff --git a/plugins/managesieve/localization/ca_ES.inc b/plugins/managesieve/localization/ca_ES.inc
new file mode 100644 (file)
index 0000000..ad03bdf
--- /dev/null
@@ -0,0 +1,149 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ca_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jordi Sanfeliu <jordi@fibranet.cat>                           |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['filters'] = 'Filtres';
+$labels['managefilters'] = 'Gestiona els filtres dels missatges d\'entrada';
+$labels['filtername'] = 'Nom del filtre';
+$labels['newfilter'] = 'Filtre Nou';
+$labels['filteradd'] = 'Afegeix un filtre';
+$labels['filterdel'] = 'Suprimeix el filtre';
+$labels['moveup'] = 'Mou amunt';
+$labels['movedown'] = 'Mou avall';
+$labels['filterallof'] = 'que coincideixi amb totes les regles següents';
+$labels['filteranyof'] = 'que no coincideixi amb cap de les regles següents';
+$labels['filterany'] = 'tots els missatges';
+$labels['filtercontains'] = 'conté';
+$labels['filternotcontains'] = 'no conté';
+$labels['filteris'] = 'és igual a';
+$labels['filterisnot'] = 'és diferent de';
+$labels['filterexists'] = 'existeix';
+$labels['filternotexists'] = 'no existeix';
+$labels['filtermatches'] = 'coincideix amb l\'expressió';
+$labels['filternotmatches'] = 'no coincideix amb l\'expressió';
+$labels['filterregex'] = 'coincideix amb l\'expressió regular';
+$labels['filternotregex'] = 'no coincideix amb l\'expressió regular';
+$labels['filterunder'] = 'sota';
+$labels['filterover'] = 'sobre';
+$labels['addrule'] = 'Afegeix una regla';
+$labels['delrule'] = 'Suprimeix regla';
+$labels['messagemoveto'] = 'Mou el missatge a';
+$labels['messageredirect'] = 'Redirigeix el missatge cap a';
+$labels['messagecopyto'] = 'Copia el missatge a';
+$labels['messagesendcopy'] = 'Envia una còpia del missatge a';
+$labels['messagereply'] = 'Respon amb un missatge';
+$labels['messagedelete'] = 'Suprimeix missatge';
+$labels['messagediscard'] = 'Descarta amb un missatge';
+$labels['messagesrules'] = 'Pels missatges entrants:';
+$labels['messagesactions'] = '..executa les següents accions:';
+$labels['add'] = 'Afegeix';
+$labels['del'] = 'Suprimeix';
+$labels['sender'] = 'Remitent';
+$labels['recipient'] = 'Destinatari/a';
+$labels['vacationaddresses'] = 'Altres adreces electròniques meves (separades per coma)';
+$labels['vacationdays'] = 'Cada quan enviar un missatge (en dies):';
+$labels['vacationreason'] = 'Cos del missatge (raó de les vacances):';
+$labels['vacationsubject'] = 'Assumpte del missatge:';
+$labels['rulestop'] = 'Deixa d\'avaluar regles';
+$labels['enable'] = 'Habilita/deshabilita';
+$labels['filterset'] = 'Conjunt de filtres';
+$labels['filtersets'] = 'Conjunts de filtres';
+$labels['filtersetadd'] = 'Afegeix conjunts de filtres';
+$labels['filtersetdel'] = 'Suprimeix el conjunt de filtres actual';
+$labels['filtersetact'] = 'Activa el conjunt de filtres actual';
+$labels['filtersetdeact'] = 'Desactiva el conjunt de filtres actual';
+$labels['filterdef'] = 'Definició del filtre';
+$labels['filtersetname'] = 'Nom del conjunt de filtres';
+$labels['newfilterset'] = 'Nou conjunt de filtres';
+$labels['active'] = 'actiu';
+$labels['none'] = 'cap';
+$labels['fromset'] = 'des del conjunt';
+$labels['fromfile'] = 'des del fitxer';
+$labels['filterdisabled'] = 'Filtre deshabilitat';
+$labels['countisgreaterthan'] = 'el recompte és major que';
+$labels['countisgreaterthanequal'] = 'el recompte és major o igual que';
+$labels['countislessthan'] = 'el recompte és menor que';
+$labels['countislessthanequal'] = 'el recompte és menor o igual que';
+$labels['countequals'] = 'el recompte és igual que';
+$labels['countnotequals'] = 'el recompte és diferent de';
+$labels['valueisgreaterthan'] = 'el valor és major que';
+$labels['valueisgreaterthanequal'] = 'el valor és major o igual que';
+$labels['valueislessthan'] = 'el valor és menor que';
+$labels['valueislessthanequal'] = 'el valor és menor o igual que';
+$labels['valueequals'] = 'el valor és igual que';
+$labels['valuenotequals'] = 'el valor és diferent de';
+$labels['setflags'] = 'Posa indicadors al missatge';
+$labels['addflags'] = 'Afegeix indicadors al missatge';
+$labels['removeflags'] = 'Suprimeix indicadors del missatge';
+$labels['flagread'] = 'Llegit';
+$labels['flagdeleted'] = 'Suprimit';
+$labels['flaganswered'] = 'Respost';
+$labels['flagflagged'] = 'Marcat';
+$labels['flagdraft'] = 'Esborrany';
+$labels['filtercreate'] = 'Crea filtre';
+$labels['usedata'] = 'Fes servir les següents dades al filtre:';
+$labels['nextstep'] = 'Següent pas';
+$labels['...'] = '...';
+$labels['advancedopts'] = 'Opcions avançades';
+$labels['body'] = 'Cos';
+$labels['address'] = 'adreça';
+$labels['envelope'] = 'sobre';
+$labels['modifier'] = 'modificador:';
+$labels['text'] = 'text';
+$labels['undecoded'] = 'descodificat (en brut)';
+$labels['contenttype'] = 'tipus de contigut';
+$labels['modtype'] = 'tipus:';
+$labels['allparts'] = 'tots';
+$labels['domain'] = 'domini';
+$labels['localpart'] = 'part local';
+$labels['user'] = 'usuari/a';
+$labels['detail'] = 'detall';
+$labels['comparator'] = 'comparador:';
+$labels['default'] = 'per omissió';
+$labels['octet'] = 'estricte (octet)';
+$labels['asciicasemap'] = 'No distingeix entre majúscules i minúscules  (ascii-casemap)';
+$labels['asciinumeric'] = 'numèric (ascii-numeric)';
+$labels['filterunknownerror'] = 'Error desconegut al servidor.';
+$labels['filterconnerror'] = 'No s\'ha pogut connectar al servidor.';
+$labels['filterdeleteerror'] = 'No s\'ha pogut suprimir el filtre. Hi ha hagut un error al servidor.';
+$labels['filterdeleted'] = 'El filtre s\'ha suprimit correctament.';
+$labels['filtersaved'] = 'Filtre desat correctament.';
+$labels['filtersaveerror'] = 'No s\'ha pogut desar el filtre. Hi ha hagut un error al servidor.';
+$labels['filterdeleteconfirm'] = 'Realment voleu suprimit el filtre seleccionat?';
+$labels['ruledeleteconfirm'] = 'Esteu segur que voleu suprimir la norma seleccionada?';
+$labels['actiondeleteconfirm'] = 'Esteu segur que voleu suprimir l\'acció seleccionada?';
+$labels['forbiddenchars'] = 'El camp conté caràcters prohibits.';
+$labels['cannotbeempty'] = 'El camp no pot estar buit.';
+$labels['ruleexist'] = 'Ja existeix un filtre amb aquest nom';
+$labels['setactivateerror'] = 'No s\'ha pogut activar el fitlre seleccionat. Hi ha hagut un error al servidor.';
+$labels['setdeactivateerror'] = 'No s\'ha pogut desactivar el fitlre seleccionat. Hi ha hagut un error al servidor.';
+$labels['setdeleteerror'] = 'No s\'ha pogut suprimir el conjunt de filtres seleccionats. Hi ha hagut un error al servidor.';
+$labels['setactivated'] = 'El conjunt de filtres s\'ha activat correctament.';
+$labels['setdeactivated'] = 'El conjunt de filtres s\'ha desactivat correctament.';
+$labels['setdeleted'] = 'El conjunt de filtres s\'ha suprimit correctament.';
+$labels['setdeleteconfirm'] = 'Esteu segurs que voleu suprimir el conjunt de filtres seleccionats?';
+$labels['setcreateerror'] = 'No s\'ha pogut crear el conjunt de filtres. Hi ha hagut un error al servidor.';
+$labels['setcreated'] = 'S\'ha creat correctament el conjunt de filtres.';
+$labels['activateerror'] = 'No s\'ha pogut habilitar el(s) filtre(s) seleccionat(s). Hi ha hagut un error al servidor.';
+$labels['deactivateerror'] = 'No s\'ha pogut deshabilitar el(s) filtre(s) seleccionat(s). Hi ha hagut un error al servidor.';
+$labels['deactivated'] = 'Filtre(s) deshabilitat(s) correctament.';
+$labels['activated'] = 'Filtre(s) habilitat(s) correctament.';
+$labels['moved'] = 'S\'ha mogut correctament el filtre.';
+$labels['moveerror'] = 'No s\'ha pogut moure el filtre seleccionat. Hi ha hagut un error al servidor.';
+$labels['nametoolong'] = 'El nom és massa llarg.';
+$labels['namereserved'] = 'Nom reservat.';
+$labels['setexist'] = 'El conjunt ja existeix.';
+$labels['nodata'] = 'S\'ha de seleccionar com a mínim una posició!';
+
index b2f96b636c94d81b9d9edd74e2149dc14fbb2c4e..c3448ab47b98b90ba62cd07edba5bf892ccaf83f 100644 (file)
@@ -9,7 +9,7 @@
  | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Thomas <Unknown>                                              |
+ | Author: Tomáš Kyzlink <Unknown>                                     |
  +-----------------------------------------------------------------------+
  @version $Id$
 */
@@ -32,12 +32,18 @@ $labels['filteris'] = 'odpovídá';
 $labels['filterisnot'] = 'neodpovídá';
 $labels['filterexists'] = 'existuje';
 $labels['filternotexists'] = 'neexistuje';
+$labels['filtermatches'] = 'odpovídá výrazu';
+$labels['filternotmatches'] = 'neodpovídá výrazu';
+$labels['filterregex'] = 'odpovídá regulárnímu výrazu';
+$labels['filternotregex'] = 'neodpovídá regulárnímu výrazu';
 $labels['filterunder'] = 'pod';
 $labels['filterover'] = 'nad';
 $labels['addrule'] = 'Přidej pravidlo';
 $labels['delrule'] = 'Smaž pravidlo';
 $labels['messagemoveto'] = 'Přesuň zprávu do';
 $labels['messageredirect'] = 'Přeposlat zprávu na';
+$labels['messagecopyto'] = 'Zkopírovat zprávu do';
+$labels['messagesendcopy'] = 'Odeslat kopii zprávy na';
 $labels['messagereply'] = 'Odpovědět se zprávou';
 $labels['messagedelete'] = 'Smazat zprávu';
 $labels['messagediscard'] = 'Smazat se zprávou';
@@ -50,7 +56,66 @@ $labels['recipient'] = 'Příjemce';
 $labels['vacationaddresses'] = 'Seznam příjemců, kterým nebude zpráva odeslána (oddělené čárkou):';
 $labels['vacationdays'] = 'Počet dnů mezi automatickými odpověďmi:';
 $labels['vacationreason'] = 'Zpráva (Důvod nepřítomnosti):';
+$labels['vacationsubject'] = 'Předmět zprávy:';
 $labels['rulestop'] = 'Zastavit pravidla';
+$labels['enable'] = 'Zapnout/Vypnout';
+$labels['filterset'] = 'Sada filtrů';
+$labels['filtersets'] = 'Sady filtrů';
+$labels['filtersetadd'] = 'Přidat sadu filtrů';
+$labels['filtersetdel'] = 'Odebrat tuto sadu filtrů';
+$labels['filtersetact'] = 'Zapnout tuto sadu filtrů';
+$labels['filtersetdeact'] = 'Vypnout tuto sadu filtrů';
+$labels['filterdef'] = 'Definice filtru';
+$labels['filtersetname'] = 'Nastavit název sady filtrů';
+$labels['newfilterset'] = 'Nová sada filtrů';
+$labels['active'] = 'aktivní';
+$labels['none'] = 'nic';
+$labels['fromset'] = 'ze sady';
+$labels['fromfile'] = 'ze souboru';
+$labels['filterdisabled'] = 'Filtr neaktivní';
+$labels['countisgreaterthan'] = 'počet je větší než';
+$labels['countisgreaterthanequal'] = 'počet je větší nebo roven';
+$labels['countislessthan'] = 'počet je nižší než';
+$labels['countislessthanequal'] = 'počet je nižší nebo roven';
+$labels['countequals'] = 'počet je roven';
+$labels['countnotequals'] = 'počet není roven';
+$labels['valueisgreaterthan'] = 'hodnota je větší než';
+$labels['valueisgreaterthanequal'] = 'hodnota je větší nebo stejná jako';
+$labels['valueislessthan'] = 'hodnota je nižší než';
+$labels['valueislessthanequal'] = 'hodnota je nižší nebo stejná jako';
+$labels['valueequals'] = 'hodnota odpovídá';
+$labels['valuenotequals'] = 'hodnota neodpovídá';
+$labels['setflags'] = 'Nastavit vlajky u zprávy';
+$labels['addflags'] = 'Přidat vlajky ke zprávě';
+$labels['removeflags'] = 'Odstranit vlajky ze zprávy';
+$labels['flagread'] = 'Přečteno';
+$labels['flagdeleted'] = 'Smazáno';
+$labels['flaganswered'] = 'Odpovězené';
+$labels['flagflagged'] = 'Označeno';
+$labels['flagdraft'] = 'Koncept';
+$labels['filtercreate'] = 'Vytvořit filtr';
+$labels['usedata'] = 'Použít následující údaje ve filtru:';
+$labels['nextstep'] = 'Další krok';
+$labels['...'] = '...';
+$labels['advancedopts'] = 'Pokročilá nastavení';
+$labels['body'] = 'Tělo';
+$labels['address'] = 'adresa';
+$labels['envelope'] = 'obálka';
+$labels['modifier'] = 'měnič:';
+$labels['text'] = 'text';
+$labels['undecoded'] = 'nedekódované (surové)';
+$labels['contenttype'] = 'typ obsahu';
+$labels['modtype'] = 'typ:';
+$labels['allparts'] = 'vše';
+$labels['domain'] = 'doména';
+$labels['localpart'] = 'místní část';
+$labels['user'] = 'uživatel';
+$labels['detail'] = 'detail';
+$labels['comparator'] = 'porovnávač:';
+$labels['default'] = 'výchozí';
+$labels['octet'] = 'striktní (oktet)';
+$labels['asciicasemap'] = 'necitlivé na velikost písmen (ascii-casemap)';
+$labels['asciinumeric'] = 'číslené (ascii-numeric)';
 $labels['filterunknownerror'] = 'Neznámá chyba serveru';
 $labels['filterconnerror'] = 'Nebylo možné se připojit k sieve serveru';
 $labels['filterdeleteerror'] = 'Nebylo možné smazat filtr. Server nahlásil chybu';
@@ -62,4 +127,24 @@ $labels['ruledeleteconfirm'] = 'Jste si jisti, že chcete smazat vybrané pravid
 $labels['actiondeleteconfirm'] = 'Jste si jisti, že chcete smazat vybranou akci?';
 $labels['forbiddenchars'] = 'Zakázané znaky v poli';
 $labels['cannotbeempty'] = 'Pole nemůže být prázdné';
+$labels['ruleexist'] = 'Filtr s uvedeným názvem již existuje.';
+$labels['setactivateerror'] = 'Nelze zapnout vybranou sadu filtrů. Došlo k chybě serveru.';
+$labels['setdeactivateerror'] = 'Nelze vypnout vybranou sadu filtrů. Došlo k chybě serveru.';
+$labels['setdeleteerror'] = 'Nelze odstranit vybranou sadu filtrů. Došlo k chybě serveru.';
+$labels['setactivated'] = 'Sada filtrů úspěšně zapnuta.';
+$labels['setdeactivated'] = 'Sada filtrů úspěšně vypnuta.';
+$labels['setdeleted'] = 'Sada filtrů úspěšně odstraněna.';
+$labels['setdeleteconfirm'] = 'Opravdu si přejete odebrat vybranou sadu filtrů.';
+$labels['setcreateerror'] = 'Nelze vytvořit sadu filtrů. Došlo k chybě serveru.';
+$labels['setcreated'] = 'Sada filtrů úspěšně vytvořena.';
+$labels['activateerror'] = 'Nelze zapnout vybrané filtr/y. Došlo k chybě serveru.';
+$labels['deactivateerror'] = 'Nelze vypnout vybrané filtr/y. Došlo k chybě serveru.';
+$labels['deactivated'] = 'Filtr/y úspěšne vypnuty.';
+$labels['activated'] = 'Filtr/y úspěšně zapnuty.';
+$labels['moved'] = 'Filtr byl úspěšně přesunut.';
+$labels['moveerror'] = 'Nelze přesunout vybraný filtr. Došlo k chybě na serveru.';
+$labels['nametoolong'] = 'Příliš dlouhý název.';
+$labels['namereserved'] = 'Vyhrazený název.';
+$labels['setexist'] = 'Sada již existuje.';
+$labels['nodata'] = 'Musí být vybrána minimálně jedna pozice!';
 
diff --git a/plugins/managesieve/localization/cy_GB.inc b/plugins/managesieve/localization/cy_GB.inc
new file mode 100644 (file)
index 0000000..4ca1efd
--- /dev/null
@@ -0,0 +1,149 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/cy_GB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Dafydd Tomos                                                  |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['filters'] = 'Hidlyddion';
+$labels['managefilters'] = 'Rheoli hidlyddion ebost i fewn';
+$labels['filtername'] = 'Enw hidlydd';
+$labels['newfilter'] = 'Hidlydd newydd';
+$labels['filteradd'] = 'Ychwanegu hidlydd';
+$labels['filterdel'] = 'Dileu hidlydd';
+$labels['moveup'] = 'Symud i fyny';
+$labels['movedown'] = 'Symud i lawr';
+$labels['filterallof'] = 'sy\'n cyfateb i\'r holl reolau canlynol';
+$labels['filteranyof'] = 'sy\'n cyfateb i unrhyw un i\'r rheolau canlynol';
+$labels['filterany'] = 'pob neges';
+$labels['filtercontains'] = 'yn cynnwys';
+$labels['filternotcontains'] = 'ddim yn cynnwys';
+$labels['filteris'] = 'yn hafal i';
+$labels['filterisnot'] = 'ddim yn hafal i';
+$labels['filterexists'] = 'yn bodoli';
+$labels['filternotexists'] = 'ddim yn bodoli';
+$labels['filtermatches'] = 'yn cyfateb i\'r mynegiant';
+$labels['filternotmatches'] = 'ddim yn cyfateb i\'r mynegiant';
+$labels['filterregex'] = 'yn cyfateb i\'r mynegiant rheolaidd';
+$labels['filternotregex'] = 'ddim yn cyfateb i\'r mynegiant rheolaidd';
+$labels['filterunder'] = 'o dan';
+$labels['filterover'] = 'dros';
+$labels['addrule'] = 'Ychwanegu rheol';
+$labels['delrule'] = 'Dileu rheol';
+$labels['messagemoveto'] = 'Symud neges i';
+$labels['messageredirect'] = 'Ail-gyfeirio neges i';
+$labels['messagecopyto'] = 'Copio neges i';
+$labels['messagesendcopy'] = 'Danfon copi o\'r neges i';
+$labels['messagereply'] = 'Ymateb gyda\'r neges';
+$labels['messagedelete'] = 'Dileu neges';
+$labels['messagediscard'] = 'Gwaredu gyda neges';
+$labels['messagesrules'] = 'Ar gyfer ebost i fewn:';
+$labels['messagesactions'] = '...rhedeg y gweithredoedd canlynol:';
+$labels['add'] = 'Ychwanegu';
+$labels['del'] = 'Dileu';
+$labels['sender'] = 'Anfonwr';
+$labels['recipient'] = 'Derbynnwr';
+$labels['vacationaddresses'] = 'Fy chyfeiriadau ebost ychwanegol (gwahanir gyda coma):';
+$labels['vacationdays'] = 'Pa mor aml i ddanfon negeseuon (mewn dyddiau):';
+$labels['vacationreason'] = 'Corff neges (rheswm ar wyliau):';
+$labels['vacationsubject'] = 'Pwnc neges:';
+$labels['rulestop'] = 'Stopio gwerthuso rheolau';
+$labels['enable'] = 'Galluogi/Analluogi';
+$labels['filterset'] = 'Set hidlyddion';
+$labels['filtersets'] = 'Setiau hidlyddion';
+$labels['filtersetadd'] = 'Ychwanegu set hidlyddion';
+$labels['filtersetdel'] = 'Dileu set hidlyddion cyfredol';
+$labels['filtersetact'] = 'Dileu set hidlyddion gweithredol';
+$labels['filtersetdeact'] = 'Analluogi set hidlyddion cyfredol';
+$labels['filterdef'] = 'Diffiniad hidlydd';
+$labels['filtersetname'] = 'Enw set hidlyddion';
+$labels['newfilterset'] = 'Set hidlyddion newydd';
+$labels['active'] = 'gweithredol';
+$labels['none'] = 'dim';
+$labels['fromset'] = 'o set';
+$labels['fromfile'] = 'o ffeil';
+$labels['filterdisabled'] = 'Analluogwyd hidlydd';
+$labels['countisgreaterthan'] = 'rhif yn fwy na';
+$labels['countisgreaterthanequal'] = 'rhif yn fwy na neu hafal i';
+$labels['countislessthan'] = 'rhif yn llai na';
+$labels['countislessthanequal'] = 'rhif yn llai na neu hafal i';
+$labels['countequals'] = 'rhif yn hafal i';
+$labels['countnotequals'] = 'rhif ddim yn hafal i';
+$labels['valueisgreaterthan'] = 'gwerth yn fwy na';
+$labels['valueisgreaterthanequal'] = 'gwerth yn fwy na neu hafal i';
+$labels['valueislessthan'] = 'gwerth yn llai na';
+$labels['valueislessthanequal'] = 'gwerth yn llai neu hafal i';
+$labels['valueequals'] = 'gwerth yn hafal i';
+$labels['valuenotequals'] = 'gwerth ddim yn hafal i';
+$labels['setflags'] = 'Rhoi fflag ar y neges';
+$labels['addflags'] = 'Ychwanegu fflag i\'r neges';
+$labels['removeflags'] = 'Dileu fflag o\'r neges';
+$labels['flagread'] = 'Darllen';
+$labels['flagdeleted'] = 'Dilewyd';
+$labels['flaganswered'] = 'Atebwyd';
+$labels['flagflagged'] = 'Nodwyd';
+$labels['flagdraft'] = 'Drafft';
+$labels['filtercreate'] = 'Creu hidlydd';
+$labels['usedata'] = 'Defnyddio\'r wybodaeth ganlynol yn yr hidlydd:';
+$labels['nextstep'] = 'Cam nesaf';
+$labels['...'] = '...';
+$labels['advancedopts'] = 'Dewisiadau uwch';
+$labels['body'] = 'Corff';
+$labels['address'] = 'cyfeiriad';
+$labels['envelope'] = 'amlen';
+$labels['modifier'] = 'newidydd:';
+$labels['text'] = 'testun';
+$labels['undecoded'] = 'heb ei ddatgodi (amrwd)';
+$labels['contenttype'] = 'math cynnwys';
+$labels['modtype'] = 'math:';
+$labels['allparts'] = 'popeth';
+$labels['domain'] = 'parth';
+$labels['localpart'] = 'darn lleol';
+$labels['user'] = 'defnyddiwr';
+$labels['detail'] = 'manylion';
+$labels['comparator'] = 'cymharydd';
+$labels['default'] = 'rhagosodiad';
+$labels['octet'] = 'llym (octet)';
+$labels['asciicasemap'] = 'maint llythrennau (ascii-casemap)';
+$labels['asciinumeric'] = 'rhifau (ascii-numeric)';
+$labels['filterunknownerror'] = 'Gwall gweinydd anhysbys.';
+$labels['filterconnerror'] = 'Methwyd cysylltu a\'r gweinydd.';
+$labels['filterdeleteerror'] = 'Methwyd dileu hidlydd. Cafwydd gwall gweinydd.';
+$labels['filterdeleted'] = 'Dilëuwyd hidlydd yn llwyddiannus.';
+$labels['filtersaved'] = 'Cadwyd hidlydd yn llwyddiannus.';
+$labels['filtersaveerror'] = 'Methwyd cadw hidlydd. Cafwyd gwall gweinydd.';
+$labels['filterdeleteconfirm'] = 'Ydych chi wir am ddileu yr hidlydd ddewiswyd?';
+$labels['ruledeleteconfirm'] = 'Ydych chi\'n siwr eich bod am ddileu\'r rheol ddewiswyd?';
+$labels['actiondeleteconfirm'] = 'Ydych chi\'n siwr eich bod am ddileu\'r weithred ddewiswyd?';
+$labels['forbiddenchars'] = 'Llythrennau gwaharddedig yn y maes.';
+$labels['cannotbeempty'] = 'Ni all y maes fod yn wag.';
+$labels['ruleexist'] = 'Mae hidlydd gyda\'r enw yma yn bodoli\'n barod.';
+$labels['setactivateerror'] = 'Methwyd bywiogi y set hidlydd dewiswyd. Cafwyd gwall gweinydd.';
+$labels['setdeactivateerror'] = 'Methwyd dadfywiogi y set hidlydd dewiswyd. Cafwyd gwall gweinydd.';
+$labels['setdeleteerror'] = 'Methwyd dileu y set hidlydd dewiswyd. Cafwyd gwall gweinydd.';
+$labels['setactivated'] = 'Bywiogwyd y set hidlydd yn llwyddiannus.';
+$labels['setdeactivated'] = 'Dadfywiogwyd y set hidlydd yn llwyddiannus.';
+$labels['setdeleted'] = 'Dilëuwyd y set hidlydd yn llwyddiannus.';
+$labels['setdeleteconfirm'] = 'Ydych chi\'n siwr eich bod am ddileu\'r set hidlydd ddewiswyd?';
+$labels['setcreateerror'] = 'Methwyd creu set hidlydd. Cafwyd gwall gweinydd.';
+$labels['setcreated'] = 'Crëuwyd y set hidlydd yn llwyddiannus.';
+$labels['activateerror'] = 'Methwyd galluogi y hidlydd(ion) dewiswyd. Cafwyd gwall gweinydd.';
+$labels['deactivateerror'] = 'Methwyd analluogi y hidlydd(ion) dewiswyd. Cafwyd gwall gweinydd.';
+$labels['deactivated'] = 'Analluogwyd y hidlydd(ion) yn llwyddiannus.';
+$labels['activated'] = 'Galluogwyd y hidlydd(ion) yn llwyddiannus.';
+$labels['moved'] = 'Symudwyd y hidlydd yn llwyddiannus.';
+$labels['moveerror'] = 'Methwyd symud y hidlydd dewiswyd. Cafwyd gwall gweinydd.';
+$labels['nametoolong'] = 'Enw yn rhy hir.';
+$labels['namereserved'] = 'Enw neilltuedig.';
+$labels['setexist'] = 'Mae\'r set yn bodoli\'n barod.';
+$labels['nodata'] = 'Rhaid dewis o leia un safle!';
+
diff --git a/plugins/managesieve/localization/da_DK.inc b/plugins/managesieve/localization/da_DK.inc
new file mode 100644 (file)
index 0000000..8c96a14
--- /dev/null
@@ -0,0 +1,149 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/da_DK/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Johannes Hessellund <osos@openeyes.dk>                        |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['filters'] = 'Filtre';
+$labels['managefilters'] = 'Ændre indgående mail filtreing';
+$labels['filtername'] = 'Filter navn';
+$labels['newfilter'] = 'Nyt filter';
+$labels['filteradd'] = 'Tilføj filter';
+$labels['filterdel'] = 'Slet filter';
+$labels['moveup'] = 'Flyt op';
+$labels['movedown'] = 'Flyt ned';
+$labels['filterallof'] = 'matcher alle af de følgende regler';
+$labels['filteranyof'] = 'matcher en af følgende regler';
+$labels['filterany'] = 'alle meddelelser';
+$labels['filtercontains'] = 'indeholder';
+$labels['filternotcontains'] = 'indeholder ikke';
+$labels['filteris'] = 'er ens med';
+$labels['filterisnot'] = 'er ikke ens med';
+$labels['filterexists'] = 'findes';
+$labels['filternotexists'] = 'ikke eksisterer';
+$labels['filtermatches'] = 'matcher udtryk';
+$labels['filternotmatches'] = 'matcher ikke udtryk';
+$labels['filterregex'] = 'matcher regulært udtryk';
+$labels['filternotregex'] = 'matcher ikke regulært udtryk';
+$labels['filterunder'] = 'under';
+$labels['filterover'] = 'over';
+$labels['addrule'] = 'Tilføj regel';
+$labels['delrule'] = 'Slet regel';
+$labels['messagemoveto'] = 'Flyt besked til';
+$labels['messageredirect'] = 'Redirriger besked til';
+$labels['messagecopyto'] = 'Kopier besked til';
+$labels['messagesendcopy'] = 'Send kopi af besked til';
+$labels['messagereply'] = 'Svar med besked';
+$labels['messagedelete'] = 'Slet besked';
+$labels['messagediscard'] = 'Slet med besked';
+$labels['messagesrules'] = 'For indkomne besked:';
+$labels['messagesactions'] = '...udfør følgende aktioner:';
+$labels['add'] = 'Tilføje';
+$labels['del'] = 'Fjern';
+$labels['sender'] = 'Afsender';
+$labels['recipient'] = 'Modtager';
+$labels['vacationaddresses'] = 'Mine alternative e-mailadresser (kommasepareret):';
+$labels['vacationdays'] = 'Hvor tit skal besked sendes (i dage):';
+$labels['vacationreason'] = 'Besked (ved ferie):';
+$labels['vacationsubject'] = 'Besked emne:';
+$labels['rulestop'] = 'Stop behandling af regler';
+$labels['enable'] = 'Aktivér/Deaktivér';
+$labels['filterset'] = 'Filter sæt';
+$labels['filtersets'] = 'Filtre sæt';
+$labels['filtersetadd'] = 'Tilføj filter sæt';
+$labels['filtersetdel'] = 'Slet aktuel filter sæt';
+$labels['filtersetact'] = 'Aktiver nuværende filter sæt';
+$labels['filtersetdeact'] = 'Deaktiver nuværende filter sæt';
+$labels['filterdef'] = 'Filter definition';
+$labels['filtersetname'] = 'Filter sæt navn';
+$labels['newfilterset'] = 'Nyt filter sæt';
+$labels['active'] = 'aktiv';
+$labels['none'] = 'ingen';
+$labels['fromset'] = 'fra sæt';
+$labels['fromfile'] = 'fra fil';
+$labels['filterdisabled'] = 'Filter deaktiveret';
+$labels['countisgreaterthan'] = 'antal er større end';
+$labels['countisgreaterthanequal'] = 'antal er større end eller lig med';
+$labels['countislessthan'] = 'antal er mindre end';
+$labels['countislessthanequal'] = 'antal er mindre end eller lig med';
+$labels['countequals'] = 'antal er lig med';
+$labels['countnotequals'] = 'antal er ikke lig med';
+$labels['valueisgreaterthan'] = 'værdi er større end';
+$labels['valueisgreaterthanequal'] = 'værdi er større end eller lig med';
+$labels['valueislessthan'] = 'værdi er mindre end';
+$labels['valueislessthanequal'] = 'værdi er mindre end eller lig med';
+$labels['valueequals'] = 'værdi er lig med';
+$labels['valuenotequals'] = 'værdi er ikke lig med';
+$labels['setflags'] = 'Sæt flag i beskeden';
+$labels['addflags'] = 'Tilføj flag til beskeden';
+$labels['removeflags'] = 'Fjern flag fra beskeden';
+$labels['flagread'] = 'Læs';
+$labels['flagdeleted'] = 'Slettede';
+$labels['flaganswered'] = 'Besvaret';
+$labels['flagflagged'] = 'Markeret';
+$labels['flagdraft'] = 'Kladde';
+$labels['filtercreate'] = 'Opret filter';
+$labels['usedata'] = 'Brug følgende data i filteret:';
+$labels['nextstep'] = 'Næste trin';
+$labels['...'] = '...';
+$labels['advancedopts'] = 'Advancerede muligheder';
+$labels['body'] = 'Brødtekst';
+$labels['address'] = 'adresse';
+$labels['envelope'] = 'kuvert';
+$labels['modifier'] = 'modificerer:';
+$labels['text'] = 'tekst';
+$labels['undecoded'] = 'udekodet (råt):';
+$labels['contenttype'] = 'indholdstype';
+$labels['modtype'] = 'type:';
+$labels['allparts'] = 'alle';
+$labels['domain'] = 'domæne';
+$labels['localpart'] = 'lokal del';
+$labels['user'] = 'bruger';
+$labels['detail'] = 'detalje';
+$labels['comparator'] = 'sammenligner:';
+$labels['default'] = 'standard';
+$labels['octet'] = 'præcis (oktet)';
+$labels['asciicasemap'] = 'store og små bogstaver (ascii-bogstaver)';
+$labels['asciinumeric'] = 'numerisk (ascii-numerisk)';
+$labels['filterunknownerror'] = 'Ukendt server fejl.';
+$labels['filterconnerror'] = 'Kan ikke forbinde til server.';
+$labels['filterdeleteerror'] = 'Kan ikke slette filter. Server fejl.';
+$labels['filterdeleted'] = 'Filter slettet.';
+$labels['filtersaved'] = 'Filter gemt.';
+$labels['filtersaveerror'] = 'Kan ikke gemme filter. Server fejl.';
+$labels['filterdeleteconfirm'] = 'Vil du slette det valgte filter?';
+$labels['ruledeleteconfirm'] = 'Er du sikker på at du vil slette den valgte regel?';
+$labels['actiondeleteconfirm'] = 'Er du sikker på du vil slette den valgte handling?';
+$labels['forbiddenchars'] = 'Ulovlige tegn i feltet';
+$labels['cannotbeempty'] = 'Feltet kan ikke være tomt.';
+$labels['ruleexist'] = 'Filter med dette navn eksisterer allerede.';
+$labels['setactivateerror'] = 'Kan ikke aktiverer valgt filter sæt. Server fejl.';
+$labels['setdeactivateerror'] = 'Kan ikke deaktivere valgt filter sæt. Server fejl.';
+$labels['setdeleteerror'] = 'Kan ikke slette valgt filter sæt. Server fejl.';
+$labels['setactivated'] = 'Filter sæt aktiveret.';
+$labels['setdeactivated'] = 'Filter sæt deaktiveret.';
+$labels['setdeleted'] = 'Filter sæt slettet.';
+$labels['setdeleteconfirm'] = 'Er du sikker på du vil slette valgt filter sæt?';
+$labels['setcreateerror'] = 'Kan ikke oprette filter sæt. Server fejl.';
+$labels['setcreated'] = 'Filter sæt oprettet.';
+$labels['activateerror'] = 'Kan ikek aktivere valgt filter sæt. Server fejl.';
+$labels['deactivateerror'] = 'Kan ikke deaktivere valgt filter sæt. Server fejl.';
+$labels['deactivated'] = 'Filter(filtre) deaktiveret.';
+$labels['activated'] = 'Filter(filtre) aktiveret.';
+$labels['moved'] = 'Filter flyttet.';
+$labels['moveerror'] = 'Kan ikke flytte valgt filter. Server fejl.';
+$labels['nametoolong'] = 'Navn er for langt.';
+$labels['namereserved'] = 'Reserveret navn.';
+$labels['setexist'] = 'Filterv sæt eksisterer allerede';
+$labels['nodata'] = 'Mindst en position skal vælges!';
+
index 963d1a6a2439eef415d6be9dca8b0ae065f885e0..ceb7475adfc7fc08295edd24af16c1bfe677277b 100644 (file)
@@ -139,8 +139,8 @@ $labels['setcreateerror'] = 'Filtersatz kann nicht erstellt werden. Serverfehler
 $labels['setcreated'] = 'Filter erfolgreich erstellt.';
 $labels['activateerror'] = 'Filter kann nicht aktiviert werden. Serverfehler.';
 $labels['deactivateerror'] = 'Filter kann nicht deaktiviert werden. Serverfehler.';
-$labels['activated'] = 'Filter erfolgreich deaktiviert.';
-$labels['deactivated'] = 'Filter erfolgreich aktiviert.';
+$labels['deactivated'] = 'Filter erfolgreich deaktiviert.';
+$labels['activated'] = 'Filter erfolgreich aktiviert.';
 $labels['moved'] = 'Filter erfolgreich verschoben.';
 $labels['moveerror'] = 'Filter kann nicht verschoben werden. Serverfehler.';
 $labels['nametoolong'] = 'Filtersatz kann nicht erstellt werden. Name zu lang.';
index 592020b95141a619fdc657cecba7127e1bb27147..8a16d14905f334bb1ad8ae03de6de87f86544c52 100644 (file)
@@ -9,9 +9,8 @@
  | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Christoph Wickert <Unknown>                                   |
+ | Author: Sebastian Schweizer                                           |
  +-----------------------------------------------------------------------+
- @version $Id$
 */
 
 $labels = array();
@@ -48,7 +47,7 @@ $labels['messagereply'] = 'Mit Nachricht antworten';
 $labels['messagedelete'] = 'Nachricht löschen';
 $labels['messagediscard'] = 'Abweisen mit Nachricht';
 $labels['messagesrules'] = 'Für eingehende Nachrichten:';
-$labels['messagesactions'] = '...führende folgende Aktionen aus:';
+$labels['messagesactions'] = '...führe folgende Aktionen aus:';
 $labels['add'] = 'Hinzufügen';
 $labels['del'] = 'Löschen';
 $labels['sender'] = 'Absender';
@@ -135,12 +134,11 @@ $labels['setactivated'] = 'Filtersatz wurde erfolgreich aktiviert';
 $labels['setdeactivated'] = 'Filtersatz wurde erfolgreich deaktiviert';
 $labels['setdeleted'] = 'Filtersatz wurde erfolgreich gelöscht';
 $labels['setdeleteconfirm'] = 'Sind Sie sicher, dass Sie den ausgewählten Filtersatz löschen möchten?';
-$labels['setcreateerror'] = 'Kann Filtersatz nicht erstellen. Serverfehler';
 $labels['setcreated'] = 'Filtersatz wurde erfolgreich erstellt';
 $labels['activateerror'] = 'Filter kann nicht aktiviert werden. Serverfehler.';
 $labels['deactivateerror'] = 'Filter kann nicht deaktiviert werden. Serverfehler.';
-$labels['activated'] = 'Filter erfolgreich deaktiviert.';
-$labels['deactivated'] = 'Filter erfolgreich aktiviert.';
+$labels['activated'] = 'Filter erfolgreich aktiviert.';
+$labels['deactivated'] = 'Filter erfolgreich deaktiviert.';
 $labels['moved'] = 'Filter erfolgreich verschoben.';
 $labels['moveerror'] = 'Filter kann nicht verschoben werden. Serverfehler.';
 $labels['nametoolong'] = 'Kann Filtersatz nicht erstellen. Name zu lang';
index 5e1c83a9c52369501f498f2db886f6198abbc4e9..73882200b811cd96a7f7570c555265f059ede80f 100644 (file)
@@ -9,9 +9,8 @@
  | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Vibhav Pant <vibhavp@gmail.com>                               |
+ | Author: Sebastian Schweizer                                           |
  +-----------------------------------------------------------------------+
- @version $Id$
 */
 
 $labels = array();
@@ -135,12 +134,11 @@ $labels['setactivated'] = 'Filters set activated successfully.';
 $labels['setdeactivated'] = 'Filters set deactivated successfully.';
 $labels['setdeleted'] = 'Filters set deleted successfully.';
 $labels['setdeleteconfirm'] = 'Are you sure, you want to delete selected filters set?';
-$labels['setcreateerror'] = 'Unable to create filters set. Server error occured.';
 $labels['setcreated'] = 'Filters set created successfully.';
 $labels['activateerror'] = 'Unable to enable selected filter(s). Server error occured.';
 $labels['deactivateerror'] = 'Unable to disable selected filter(s). Server error occured.';
-$labels['activated'] = 'Filter(s) disabled successfully.';
-$labels['deactivated'] = 'Filter(s) enabled successfully.';
+$labels['activated'] = 'Filter(s) enabled successfully.';
+$labels['deactivated'] = 'Filter(s) disabled successfully.';
 $labels['moved'] = 'Filter moved successfully.';
 $labels['moveerror'] = 'Unable to move selected filter. Server error occured.';
 $labels['nametoolong'] = 'Name too long.';
index 94e0ba60c92381bc4521490ac77a4005de56d6a4..8a4841cfa6d5cb072570331592887321bf26c0af 100644 (file)
@@ -38,7 +38,7 @@ $labels['add'] = 'Add';
 $labels['del'] = 'Delete';
 $labels['sender'] = 'Sender';
 $labels['recipient'] = 'Recipient';
-$labels['vacationaddresses'] = 'Additional list of recipient e-mails (comma separated):';
+$labels['vacationaddresses'] = 'My additional e-mail addresse(s) (comma-separated):';
 $labels['vacationdays'] = 'How often send messages (in days):';
 $labels['vacationreason'] = 'Message body (vacation reason):';
 $labels['vacationsubject'] = 'Message subject:';
@@ -78,6 +78,16 @@ $labels['flagdeleted'] = 'Deleted';
 $labels['flaganswered'] = 'Answered';
 $labels['flagflagged'] = 'Flagged';
 $labels['flagdraft'] = 'Draft';
+$labels['setvariable'] = 'Set variable';
+$labels['setvarname'] = 'Variable name:';
+$labels['setvarvalue'] = 'Variable value:';
+$labels['setvarmodifiers'] = 'Modifiers:';
+$labels['varlower'] = 'lower-case';
+$labels['varupper'] = 'upper-case';
+$labels['varlowerfirst'] = 'first character lower-case';
+$labels['varupperfirst'] = 'first character upper-case';
+$labels['varquotewildcard'] = 'quote special characters';
+$labels['varlength'] = 'length';
 $labels['filtercreate'] = 'Create filter';
 $labels['usedata'] = 'Use following data in the filter:';
 $labels['nextstep'] = 'Next Step';
@@ -126,8 +136,8 @@ $messages['setcreateerror'] = 'Unable to create filters set. Server error occure
 $messages['setcreated'] = 'Filters set created successfully.';
 $messages['activateerror'] = 'Unable to enable selected filter(s). Server error occured.';
 $messages['deactivateerror'] = 'Unable to disable selected filter(s). Server error occured.';
-$messages['activated'] = 'Filter(s) disabled successfully.';
-$messages['deactivated'] = 'Filter(s) enabled successfully.';
+$messages['deactivated'] = 'Filter(s) disabled successfully.';
+$messages['activated'] = 'Filter(s) enabled successfully.';
 $messages['moved'] = 'Filter moved successfully.';
 $messages['moveerror'] = 'Unable to move selected filter. Server error occured.';
 $messages['nametoolong'] = 'Name too long.';
diff --git a/plugins/managesieve/localization/eo.inc b/plugins/managesieve/localization/eo.inc
new file mode 100644 (file)
index 0000000..04ce69d
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/eo/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Michael Moroni <michael.moroni@mailoo.org>                    |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['filters'] = 'Filtriloj';
+$labels['managefilters'] = 'Mastrumi filtrilojn pri enirantaj mesaĝoj';
+$labels['filtername'] = 'Nomo de filtrilo';
+$labels['newfilter'] = 'Nova filtrilo';
+$labels['filteradd'] = 'Aldoni filtrilon';
+$labels['filterdel'] = 'Forigi filtrilon';
+$labels['moveup'] = 'Movi supren';
+$labels['movedown'] = 'Movi malsupren';
+$labels['filterany'] = 'ĉiuj mesaĝoj';
+$labels['filtercontains'] = 'enhavas';
+$labels['filternotcontains'] = 'ne enhavas';
+$labels['filteris'] = 'egalas al';
+$labels['filterisnot'] = 'ne egalas al';
+$labels['filterexists'] = 'ekzistas';
+$labels['filternotexists'] = 'ne ekzistas';
+$labels['filtermatches'] = 'kongruas esprimon';
+$labels['filternotmatches'] = 'ne kongruas esprimon';
+$labels['filterregex'] = 'kongruas regularan esprimon';
+$labels['filternotregex'] = 'ne kongruas regularan esprimon';
+$labels['filterunder'] = 'sub';
+$labels['filterover'] = 'preter';
+$labels['addrule'] = 'Aldoni regulon';
+$labels['delrule'] = 'Forigi regulon';
+$labels['messagemoveto'] = 'Movi mesaĝon al';
+$labels['messageredirect'] = 'Aidirekti mesaĝon al';
+$labels['messagecopyto'] = 'Kopii mesaĝo en';
+$labels['messagesendcopy'] = 'Sendi kopion de mesaĝo al';
+$labels['messagereply'] = 'Respondi per mesaĝo';
+$labels['messagedelete'] = 'Forigi mesaĝon';
+$labels['add'] = 'Aldoni';
+$labels['del'] = 'Forigi';
+$labels['sender'] = 'Sendanto';
+$labels['recipient'] = 'Ricevanto';
+
index 5c6b9c32a22ff6a6af3711243e61ec5c1c6ac8d7..a171ec4b0349279cf71ad953efb5d2432155f3ad 100644 (file)
@@ -9,7 +9,7 @@
  | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: JorSol <Unknown>                                              |
+ | Author: Marcelo Magaña Silva <magasil7@gmail.com>                    |
  +-----------------------------------------------------------------------+
  @version $Id$
 */
@@ -100,6 +100,22 @@ $labels['...'] = '...';
 $labels['advancedopts'] = 'Opciones avanzadas';
 $labels['body'] = 'Cuerpo del mensaje';
 $labels['address'] = 'dirección';
+$labels['envelope'] = 'envoltura';
+$labels['modifier'] = 'modificador:';
+$labels['text'] = 'texto';
+$labels['undecoded'] = 'decodificar (en bruto)';
+$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'] = 'predeterminado';
+$labels['octet'] = 'estricto (octeto)';
+$labels['asciicasemap'] = 'no sensible a mayúsculas (ascii-casemap)';
+$labels['asciinumeric'] = 'numerico (ascii-numeric)';
 $labels['filterunknownerror'] = 'Error desconocido de servidor';
 $labels['filterconnerror'] = 'Imposible conectar con el servidor managesieve';
 $labels['filterdeleteerror'] = 'Imposible borrar filtro. Ha ocurrido un error en el servidor';
@@ -111,6 +127,7 @@ $labels['ruledeleteconfirm'] = '¿Está seguro de que desea borrar la regla sele
 $labels['actiondeleteconfirm'] = '¿Está seguro de que desea borrar la acción seleccionada?';
 $labels['forbiddenchars'] = 'Caracteres prohibidos en el campo';
 $labels['cannotbeempty'] = 'El campo no puede estar vacío';
+$labels['ruleexist'] = 'Ya existe un filtro con el nombre especificado.';
 $labels['setactivateerror'] = 'Imposible activar el conjunto de filtros seleccionado. Ha ocurrido un error en el servidor';
 $labels['setdeactivateerror'] = 'Imposible desactivar el conjunto de filtros seleccionado. Ha ocurrido un error en el servidor';
 $labels['setdeleteerror'] = 'Imposible borrar el conjunto de filtros seleccionado. Ha ocurrido un error en el servidor';
@@ -120,5 +137,14 @@ $labels['setdeleted'] = 'Conjunto de filtros borrado satisfactoriamente';
 $labels['setdeleteconfirm'] = '¿Está seguro de que desea borrar el conjunto de filtros seleccionado?';
 $labels['setcreateerror'] = 'Imposible crear el conjunto de filtros. Ha ocurrido un error en el servidor';
 $labels['setcreated'] = 'Conjunto de filtros creado satisfactoriamente';
+$labels['activateerror'] = 'No se ha podido habilitar el filtro(s) seleccionado. Se ha producido un error de servidor.';
+$labels['deactivateerror'] = 'No se ha podido deshabilitar el filtro(s) seleccionado. Se ha producido un error de servidor.';
+$labels['deactivated'] = 'Filtro(s) deshabilitado(s) correctamente.';
+$labels['activated'] = 'Filtro(s) habilitado(s) correctamente.';
+$labels['moved'] = 'Filtro movido correctamente';
+$labels['moveerror'] = 'No se ha podido mover el filtro seleccionado. Ha ocurrido un error de servidor.';
 $labels['nametoolong'] = 'Imposible crear el conjunto de filtros. Nombre demasiado largo';
+$labels['namereserved'] = 'Nombre reservado.';
+$labels['setexist'] = 'El conjunto ya existe.';
+$labels['nodata'] = '¡Al menos una posicion debe ser seleccionada!';
 
index fab96639c29ceea90bc3d73c2fac2535a8e56ea5..67501f8d35fa92bdb78bdb389da9de56392d566e 100644 (file)
@@ -130,8 +130,8 @@ $labels['cannotbeempty'] = 'Väli ei või tühi olla';
 $labels['ruleexist'] = 'Määratud nimega filter on juba olemas';
 $labels['activateerror'] = 'Valitud filtrite lubamine nurjus. Ilmnes serveri tõrge.';
 $labels['deactivateerror'] = 'Valitud filtrite keelamine nurjus. Ilmnes serveri tõrge.';
-$labels['activated'] = 'Filter edukalt keelatud.';
-$labels['deactivated'] = 'Filter edukalt lubatud.';
+$labels['deactivated'] = 'Filter edukalt keelatud.';
+$labels['activated'] = 'Filter edukalt lubatud.';
 $labels['moved'] = 'Filter edukalt liigutatud.';
 $labels['moveerror'] = 'Valitud filtri liigutamine nurjus. Ilmnes serveri tõrge.';
 $labels['nametoolong'] = 'Nimi on liiga pikk.';
diff --git a/plugins/managesieve/localization/fa_IR.inc b/plugins/managesieve/localization/fa_IR.inc
new file mode 100644 (file)
index 0000000..9f20dab
--- /dev/null
@@ -0,0 +1,149 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fa_IR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Hamid <abbaszadeh.h@gmail.com>                                |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['filters'] = 'صافی‌ها';
+$labels['managefilters'] = 'مدیریت صافی‌های نامه ورودی';
+$labels['filtername'] = 'نام صافی';
+$labels['newfilter'] = 'صافی جدید';
+$labels['filteradd'] = 'افزودن صافی';
+$labels['filterdel'] = 'حذف صافی';
+$labels['moveup'] = 'انتقال به بالا';
+$labels['movedown'] = 'انتقال به پایین';
+$labels['filterallof'] = 'مطابقت همه قوانین ذیل';
+$labels['filteranyof'] = 'مطابقت هر کدام از قوانین ذیل';
+$labels['filterany'] = 'همه پیغام ها';
+$labels['filtercontains'] = 'شامل‌';
+$labels['filternotcontains'] = 'بدون';
+$labels['filteris'] = 'برابر است با';
+$labels['filterisnot'] = 'برابر نیست با';
+$labels['filterexists'] = 'وجود دارد';
+$labels['filternotexists'] = 'وجود ندارد';
+$labels['filtermatches'] = 'با عبارت تطابق دارد';
+$labels['filternotmatches'] = 'با عبارت تطابق ندارد';
+$labels['filterregex'] = 'با عبارت عمومی تطابق دارد';
+$labels['filternotregex'] = 'با عبارت عمومی تطابق ندارد';
+$labels['filterunder'] = 'زیر';
+$labels['filterover'] = 'بالا';
+$labels['addrule'] = 'افزودن قانون';
+$labels['delrule'] = 'حذف قانون';
+$labels['messagemoveto'] = 'انتقال پیغام به';
+$labels['messageredirect'] = 'بازگردانی پیغام به';
+$labels['messagecopyto'] = 'رونوشت پیغام به';
+$labels['messagesendcopy'] = 'ارسال رونوشت پیغام به';
+$labels['messagereply'] = 'پاسخ همراه پیغام';
+$labels['messagedelete'] = 'حذف پیغام';
+$labels['messagediscard'] = 'دور ریختن با پیغام';
+$labels['messagesrules'] = 'برای  صندوق ورودی:';
+$labels['messagesactions'] = '...انجام اعمال ذیل:';
+$labels['add'] = 'افزودن';
+$labels['del'] = 'حذف';
+$labels['sender'] = 'فرستنده';
+$labels['recipient'] = 'گیرنده';
+$labels['vacationaddresses'] = 'آدرس‌های ایمیل دیگر من (جدا شده با ویرگول):';
+$labels['vacationdays'] = 'پیغام ها در چه مواقعی فرستاده شدند (در روزهای):';
+$labels['vacationreason'] = 'بدنه پیغام (علت مسافرت):';
+$labels['vacationsubject'] = 'موضوع پیغام:';
+$labels['rulestop'] = 'توقف قوانین ارزیابی';
+$labels['enable'] = 'فعال/غیرفعال‌سازی';
+$labels['filterset'] = 'مجموعه صافی‌ها';
+$labels['filtersets'] = 'مجموعه‌های صافی‌ها';
+$labels['filtersetadd'] = 'افزودن مجموعه صافی‌ها';
+$labels['filtersetdel'] = 'حذف مجموعه صافی‌های جاری';
+$labels['filtersetact'] = 'فعال کردن مجموعه صافی‌های جاری';
+$labels['filtersetdeact'] = 'غیرفعال کردن مجموعه صافی‌های جاری';
+$labels['filterdef'] = 'تعریف صافی';
+$labels['filtersetname'] = 'نام مجموعه صافی‌ها';
+$labels['newfilterset'] = 'مجموعه صافی‌های جدید';
+$labels['active'] = 'فعال';
+$labels['none'] = 'هیچ‌کدام';
+$labels['fromset'] = 'از مجموعه';
+$labels['fromfile'] = 'از پرونده';
+$labels['filterdisabled'] = 'صافی غیرفعال شد';
+$labels['countisgreaterthan'] = 'تعداد بیشتر است از';
+$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'] = 'حذف پرچم‌ها از پیغام';
+$labels['flagread'] = 'خوانده‌‌شده';
+$labels['flagdeleted'] = 'حذف شده';
+$labels['flaganswered'] = 'جواب داده شده';
+$labels['flagflagged'] = 'پرچم‌دار';
+$labels['flagdraft'] = 'پیش‌نویس';
+$labels['filtercreate'] = 'ایجاد صافی';
+$labels['usedata'] = 'استفاده از داده ذیل در صافی:';
+$labels['nextstep'] = 'مرحله بعدی';
+$labels['...'] = '...';
+$labels['advancedopts'] = 'گزینه‌های پیشرفته';
+$labels['body'] = 'بدنه';
+$labels['address'] = 'نشانی';
+$labels['envelope'] = 'پاکت';
+$labels['modifier'] = 'تغییر دهنده:';
+$labels['text'] = 'متن‌';
+$labels['undecoded'] = 'کد نشده (خام)';
+$labels['contenttype'] = 'نوع محتوا';
+$labels['modtype'] = 'نوع';
+$labels['allparts'] = 'همه';
+$labels['domain'] = 'دامنه';
+$labels['localpart'] = 'قسمت محلی';
+$labels['user'] = 'کاربر';
+$labels['detail'] = 'جزئیات';
+$labels['comparator'] = 'مقایسه:';
+$labels['default'] = 'پیش‌فرض';
+$labels['octet'] = 'سخت (octet)';
+$labels['asciicasemap'] = 'حساس به حروه کوچک و بزرگ (ascii-casemap)';
+$labels['asciinumeric'] = 'عددی (ascii-numeric)';
+$labels['filterunknownerror'] = 'خطای سرور نامعلوم.';
+$labels['filterconnerror'] = 'ناتوانی در اتصال به سرور.';
+$labels['filterdeleteerror'] = 'ناتوانی در حذف صافی. خطای سرور رخ داد.';
+$labels['filterdeleted'] = 'صافی با موفقیت حذف شد.';
+$labels['filtersaved'] = 'صافی با موفقیت ذخیره شد.';
+$labels['filtersaveerror'] = 'ناتوانی در ذخیره فیلتر. خطای سرور رخ داد.';
+$labels['filterdeleteconfirm'] = 'آیا مطمئن به حذف صافی انتخاب شده هستید؟';
+$labels['ruledeleteconfirm'] = 'آیا مطمئن هستید که می خواهید قانون انتخاب شده را حذف کنید؟';
+$labels['actiondeleteconfirm'] = 'آیا مطمئن هستید که می خواهید عمل انتخاب شده را حذف کنید.';
+$labels['forbiddenchars'] = 'حروف ممنوعه در فیلد.';
+$labels['cannotbeempty'] = 'فیلد نمی تواند خالی باشد.';
+$labels['ruleexist'] = 'صافی با این نام مشخص وجود دارد.';
+$labels['setactivateerror'] = 'ناتوان در فعال کردن مجموعه صافی‌ها انتخاب شده. خطای سرور رخ داد.';
+$labels['setdeactivateerror'] = 'ناتوان در غیرفعال کردن مجموعه صافی‌ها انتخاب شده. خطای سرور رخ داد.';
+$labels['setdeleteerror'] = 'ناتوان در حذف مجموعه صافی‌ها انتخاب شده. خطای سرور رخ داد.';
+$labels['setactivated'] = 'مجموعه صافی‌ها با موفقیت فعال شد.';
+$labels['setdeactivated'] = 'مجموعه صافی‌ها با موفقیت غیرفعال شد.';
+$labels['setdeleted'] = 'مجموعه صافی‌ها با موفقیت حذف شد.';
+$labels['setdeleteconfirm'] = 'آیا مطمئن هستید که می‌خواهید مجموعه صافی‌ها انتخاب شده را حذف کنید؟';
+$labels['setcreateerror'] = 'ناتوانی در ایجاد مجموعه صافی‌ها. خطای سرور رخ داد.';
+$labels['setcreated'] = 'مجموعه صافی‌ها با موفقیت ایجاد شد.';
+$labels['activateerror'] = 'ناتوانی در فعال کردن صافی(های) انتخاب شده. خطای سرور رخ داد.';
+$labels['deactivateerror'] = 'ناتوانی در غیرفعال کردن صافی(های) انتخاب شده. خطای سرور رخ داد.';
+$labels['deactivated'] = 'صافی(ها) با موفقیت غیرفعال شدند.';
+$labels['activated'] = 'صافی(ها) با موفقیت فعال شدند.';
+$labels['moved'] = 'صافی با موفقیت منتقل شد.';
+$labels['moveerror'] = 'ناتوانی در انتقال صافی انتخاب شده. خطای سرور رخ داد.';
+$labels['nametoolong'] = 'نام خیلی بلند.';
+$labels['namereserved'] = 'نام رزرو شده.';
+$labels['setexist'] = 'مجموعه در حال حاضر موجود است.';
+$labels['nodata'] = 'حداقل باید یک موقعیت باید انتخاب شود.';
+
index 09d97b2fe4b5a1c3f01a1300b4cc9cda83e3ac2f..5a0c30954508073d0c0bcfa3400adb37e53715cd 100644 (file)
@@ -9,7 +9,7 @@
  | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Jiri Grönroos <Unknown>                                      |
+ | Author: Esa Immonen <esa.raato@gmail.com>                             |
  +-----------------------------------------------------------------------+
  @version $Id$
 */
@@ -32,12 +32,18 @@ $labels['filteris'] = 'on samanlainen kuin';
 $labels['filterisnot'] = 'ei ole samanlainen kuin';
 $labels['filterexists'] = 'on olemassa';
 $labels['filternotexists'] = 'ei ole olemassa';
+$labels['filtermatches'] = 'vastaa määritelmää';
+$labels['filternotmatches'] = 'ei vastaa määritelmää';
+$labels['filterregex'] = 'täsmää säännölliseen lausekkeeseen';
+$labels['filternotregex'] = 'ei täsmää säännölliseen lausekkeeseen';
 $labels['filterunder'] = 'alla';
 $labels['filterover'] = 'yli';
 $labels['addrule'] = 'Lisää sääntö';
 $labels['delrule'] = 'Poista sääntö';
 $labels['messagemoveto'] = 'Siirrä viesti';
 $labels['messageredirect'] = 'Uudelleen ohjaa viesti';
+$labels['messagecopyto'] = 'Kopioi viesti';
+$labels['messagesendcopy'] = 'Lähetä viestin kopio';
 $labels['messagereply'] = 'Vastaa viestin kanssa';
 $labels['messagedelete'] = 'Poista viesti';
 $labels['messagediscard'] = 'Hylkää viesti';
@@ -49,13 +55,16 @@ $labels['sender'] = 'Lähettäjä';
 $labels['recipient'] = 'Vastaanottaja';
 $labels['vacationaddresses'] = 'Lähetä viesti myös seuraaviin osotteisiin (erottele pilkulla):';
 $labels['vacationdays'] = 'Kuinka monen päivän välein lähetetään uusi vastaus:';
-$labels['vacationreason'] = 'Viesti:';
+$labels['vacationreason'] = 'Viesti (poissaolon syy):';
 $labels['vacationsubject'] = 'Viestin aihe:';
 $labels['rulestop'] = 'Viimeinen sääntö';
+$labels['enable'] = 'Kytke päälle / kytke pois päältä';
 $labels['filterset'] = 'Suodatinlista';
+$labels['filtersets'] = 'Suodatinlista';
 $labels['filtersetadd'] = 'Lisää suodatinlista';
 $labels['filtersetdel'] = 'Poista valittu suodatinlista';
 $labels['filtersetact'] = 'Aktivoi valittu suodatinlista';
+$labels['filtersetdeact'] = 'Kytke suodatinlista pois päältä';
 $labels['filterdef'] = 'Suodatinmääritykset';
 $labels['filtersetname'] = 'Suodatinlistan nimi';
 $labels['newfilterset'] = 'Uusi suodatinlista';
@@ -64,19 +73,50 @@ $labels['none'] = 'ei mitään';
 $labels['fromset'] = 'listasta';
 $labels['fromfile'] = 'tiedostosta';
 $labels['filterdisabled'] = 'Suodatin on poistettu käytöstä';
+$labels['countisgreaterthan'] = 'lukumäärä on suurempi kuin';
+$labels['countisgreaterthanequal'] = 'lukumäärä on suurempi kuin tai yhtä suuri kuin';
+$labels['countislessthan'] = 'lukumäärä on vähemmän kuin';
+$labels['countislessthanequal'] = 'lukumäärä on vähemmän kuin tai yhtä suuri kuin';
+$labels['countequals'] = 'lukumäärä on yhtä suuri kuin';
+$labels['countnotequals'] = 'luku ei ole yhtä suuri';
+$labels['valueisgreaterthan'] = 'arvo on suurempi kuin';
+$labels['valueisgreaterthanequal'] = 'arvo on suurempi kuin tai yhtä suuri kuin';
+$labels['valueislessthan'] = 'arvo on vähemmän kuin';
+$labels['valueislessthanequal'] = 'arvo on vähemmän kuin tai yhtä suuri kuin';
+$labels['valueequals'] = 'arvo on yhtä suuri kuin';
+$labels['valuenotequals'] = 'arvo ei ole yhtä suuri';
+$labels['setflags'] = 'Aseta seurantalippu viestiin';
+$labels['addflags'] = 'Lisää seurantalippu viestiin';
+$labels['removeflags'] = 'Poista seurantalippu viestistä';
 $labels['flagread'] = 'Luettu';
 $labels['flagdeleted'] = 'Poistettu';
 $labels['flaganswered'] = 'Vastattu';
+$labels['flagflagged'] = 'Merkitty lipulla';
 $labels['flagdraft'] = 'Luonnos';
 $labels['filtercreate'] = 'Luo suodatin';
+$labels['usedata'] = 'Käytä seuravaa sisältöä suodattimessa:';
+$labels['nextstep'] = 'Seuraava';
 $labels['...'] = '...';
 $labels['advancedopts'] = 'Lisäasetukset';
+$labels['body'] = 'Sisältö';
 $labels['address'] = 'osoite';
+$labels['envelope'] = 'kirjekuori';
+$labels['modifier'] = 'määrittäjä:';
+$labels['text'] = 'teksti';
+$labels['undecoded'] = 'purkamaton (käsittelemätön)';
+$labels['contenttype'] = 'sisällön tyyppi';
 $labels['modtype'] = 'tyyppi:';
 $labels['allparts'] = 'kaikki';
+$labels['domain'] = 'toimialue';
+$labels['localpart'] = 'paikallinen osa';
 $labels['user'] = 'käyttäjä';
+$labels['detail'] = 'yksityiskohta';
+$labels['comparator'] = 'vertaaja:';
 $labels['default'] = 'oletus';
-$labels['filterunknownerror'] = 'Tuntematon palvelin virhe';
+$labels['octet'] = 'tiukka (oktetti)';
+$labels['asciicasemap'] = 'kirjainasusta riippumaton (ascii-kirjainkartta)';
+$labels['asciinumeric'] = 'numeerinen (ascii-numerot)';
+$labels['filterunknownerror'] = 'Tuntematon palvelin virhe.';
 $labels['filterconnerror'] = 'Yhdistäminen palvelimeen epäonnistui';
 $labels['filterdeleteerror'] = 'Suodattimen poistaminen epäonnistui. Palvelin virhe';
 $labels['filterdeleted'] = 'Suodatin poistettu';
@@ -87,4 +127,24 @@ $labels['ruledeleteconfirm'] = 'Haluatko poistaa valitut säännöt?';
 $labels['actiondeleteconfirm'] = 'Haluatko poistaa valitut tapahtumat?';
 $labels['forbiddenchars'] = 'Sisältää kiellettyjä kirjaimia';
 $labels['cannotbeempty'] = 'Kenttä ei voi olla tyhjä';
+$labels['ruleexist'] = 'Annetun niminen suodatin on jo olemassa';
+$labels['setactivateerror'] = 'Valittua suodatin listaa ei voitu kytkeä päälle. Palvelin virhe.';
+$labels['setdeactivateerror'] = 'Valittua suodatin listaa ei voitu kytkeä pois päältä. Palvelin virhe.';
+$labels['setdeleteerror'] = 'Valittua suodatin listaa ei voitu poistaa. Palvelin virhe.';
+$labels['setactivated'] = 'Suodatinlista on kytketty päälle.';
+$labels['setdeactivated'] = 'Suodatinlista on kytketty pois päältä';
+$labels['setdeleted'] = 'Suodatinlista on poistettu poistettu.';
+$labels['setdeleteconfirm'] = 'Oletko varman, että haluat poistaa valitun suodatin listan?';
+$labels['setcreateerror'] = 'Suodatinlistan luonti epäonnistui. Palvelin virhe.';
+$labels['setcreated'] = 'Suodatinlistan luonti onnistui.';
+$labels['activateerror'] = 'Suodatinlistan päälle kytkeminen epäonnistui. Palvelin virhe.';
+$labels['deactivateerror'] = 'Suodatinlistan pois päältä kytkeminen epäonnistui. Palvelin virhe.';
+$labels['deactivated'] = 'Suodatinlista(t) kytketty pois päältä onnistuneesti.';
+$labels['activated'] = 'Suodatinlista(t) kytketty päälle onnistuneesti.';
+$labels['moved'] = 'Suodatin siirretty onnistuneesti.';
+$labels['moveerror'] = 'Valitun suodattimen siirto epäonnistui palvelinvirheen vuoksi.';
+$labels['nametoolong'] = 'Nimi on liian pitkä.';
+$labels['namereserved'] = 'Varattu nimi.';
+$labels['setexist'] = 'Lista on jo olemassa.';
+$labels['nodata'] = 'Vähintään yksi pitää valinta pitää tehdä!';
 
index 527f071f0b23730bf9519d6a24bc8c8c2bc792fb..b0a4089d1ed4b51318d98168b277127fe01f2aa9 100644 (file)
@@ -9,7 +9,7 @@
  | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Nicolas Delvaux <Unknown>                                     |
+ | Author: François Charlier <Unknown>                                  |
  +-----------------------------------------------------------------------+
  @version $Id$
 */
@@ -127,6 +127,7 @@ $labels['ruledeleteconfirm'] = 'Voulez-vous vraiment supprimer la règle sélect
 $labels['actiondeleteconfirm'] = 'Voulez-vous vraiment supprimer l\'action sélectionnée?';
 $labels['forbiddenchars'] = 'Caractères interdits dans le champ';
 $labels['cannotbeempty'] = 'Le champ ne peut pas être vide';
+$labels['ruleexist'] = 'Un filtre existe déjà avec ce nom.';
 $labels['setactivateerror'] = 'Impossible d\'aactiver le groupe de filtres sélectionné. Le serveur a rencontré une erreur.';
 $labels['setdeactivateerror'] = 'Impossible de désactiver le groupe de filtres sélectionné. Le serveur a rencontré une erreur.';
 $labels['setdeleteerror'] = 'Impossible de supprimer le groupe de filtres sélectionné. Le serveur a rencontré une erreur.';
@@ -136,4 +137,14 @@ $labels['setdeleted'] = 'Le groupe de filtres a bien été supprimé.';
 $labels['setdeleteconfirm'] = 'Voulez vous vraiment supprimer le groupe de filtres sélectionné ?';
 $labels['setcreateerror'] = 'Impossible de créer le groupe de filtres. Le serveur a rencontré une erreur.';
 $labels['setcreated'] = 'Le groupe de filtres a bien été créé.';
+$labels['activateerror'] = 'Impossible d\'activer le(s) filtre(s) sélectionné(s). Une erreur serveur s\'est produite.';
+$labels['deactivateerror'] = 'Impossible de désactiver le(s) filtre(s) sélectionné(s). Une erreur serveur s\'est produite.';
+$labels['deactivated'] = 'Filtre(s) désactivé(s) avec succès';
+$labels['activated'] = 'Filtre(s) activé(s) avec succès';
+$labels['moved'] = 'Filtre déplacé avec succès.';
+$labels['moveerror'] = 'Déplacement du filtre sélectionné impossible. Le serveur a renvoyé une erreur.';
+$labels['nametoolong'] = 'Nom trop long.';
+$labels['namereserved'] = 'Nom réservé.';
+$labels['setexist'] = 'Ce groupe existe déjà.';
+$labels['nodata'] = 'Au moins un élément doit être selectionné !';
 
index 715f358cf017f7e6f48cb2c0d056eea39d16e918..894f52cb90e855f5786f3dc4c876a440822ec4b1 100644 (file)
@@ -9,7 +9,7 @@
  | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Thomas <Unknown>                                              |
+ | Author: ghas <Unknown>                                                |
  +-----------------------------------------------------------------------+
  @version $Id$
 */
@@ -53,6 +53,7 @@ $labels['vacationaddresses'] = 'Lista de enderezos de correo de destinatarios ad
 $labels['vacationdays'] = 'Cada canto enviar mensaxes (en días):';
 $labels['vacationreason'] = 'Corpo da mensaxe (razón de vacacións):';
 $labels['rulestop'] = 'Parar de avaliar regras';
+$labels['enable'] = 'Activar/Desactivar';
 $labels['filterset'] = 'Conxunto de filtros';
 $labels['filtersetadd'] = 'Engadir un conxunto de filtros';
 $labels['filtersetdel'] = 'Eliminar o conxunto de filtros actual';
diff --git a/plugins/managesieve/localization/he_IL.inc b/plugins/managesieve/localization/he_IL.inc
new file mode 100644 (file)
index 0000000..2262841
--- /dev/null
@@ -0,0 +1,149 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/he_IL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Moshe Leibovitch <moish@mln.co.il>                            |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['filters'] = 'מסננים';
+$labels['managefilters'] = 'ניהול מסננים לדואר נכנס';
+$labels['filtername'] = 'שם המסנן';
+$labels['newfilter'] = 'מסנן חדש';
+$labels['filteradd'] = 'הוספת מסנן';
+$labels['filterdel'] = 'מחיקת מסנן';
+$labels['moveup'] = 'הזזה מעלה';
+$labels['movedown'] = 'הזזה מטה';
+$labels['filterallof'] = 'תאימות לכל הכללים שלהלן';
+$labels['filteranyof'] = 'תאימות לחלק מהכללים שלהלן';
+$labels['filterany'] = 'כל ההודעות';
+$labels['filtercontains'] = 'מכיל';
+$labels['filternotcontains'] = 'לא מכיל';
+$labels['filteris'] = 'שווה ערך ל-';
+$labels['filterisnot'] = 'אינו שווה ערך ל-';
+$labels['filterexists'] = 'קיים';
+$labels['filternotexists'] = 'לא קיים';
+$labels['filtermatches'] = 'תואם ביטוי';
+$labels['filternotmatches'] = 'לא תואם ביטוי';
+$labels['filterregex'] = 'תואם ביטוי מורכב';
+$labels['filternotregex'] = 'לא תואם ביטוי מורכב';
+$labels['filterunder'] = 'תחת';
+$labels['filterover'] = 'מעל';
+$labels['addrule'] = 'הוספת כלל';
+$labels['delrule'] = 'מחיקת כלל';
+$labels['messagemoveto'] = 'העברת הודעה אל';
+$labels['messageredirect'] = 'השמה חדשה של ההודעה אל';
+$labels['messagecopyto'] = 'העתקת ההודעה אל';
+$labels['messagesendcopy'] = 'משלוח העתק מההודעה אל';
+$labels['messagereply'] = 'מענה עם הודעה';
+$labels['messagedelete'] = 'מחיקת הודעה';
+$labels['messagediscard'] = 'ביטול ההודעה';
+$labels['messagesrules'] = 'עבור דואר נכנס:';
+$labels['messagesactions'] = '...מבצע הפעולות הבאות:';
+$labels['add'] = 'הוספה';
+$labels['del'] = 'מחיקה';
+$labels['sender'] = 'השולח';
+$labels['recipient'] = 'הנמען';
+$labels['vacationaddresses'] = 'כתובות דוא"ל נוספות שלי (מופרדות ע"י פסיקים)';
+$labels['vacationdays'] = 'באיזו תדירות ( בימים ) לשלוח הודעות:';
+$labels['vacationreason'] = 'גוף ההודעה (סיבת החופשה):';
+$labels['vacationsubject'] = 'נושא ההודעה:';
+$labels['rulestop'] = 'עצירה של בחינת הכללים';
+$labels['enable'] = 'אפשור/ניטרול';
+$labels['filterset'] = 'קבוצת מסננים';
+$labels['filtersets'] = 'קבוצות מסננים';
+$labels['filtersetadd'] = 'הוספה של קבוצת מסננים';
+$labels['filtersetdel'] = 'מחיקה של מסננים נוכחיים';
+$labels['filtersetact'] = 'הפעלה של מסננים נוכחיים';
+$labels['filtersetdeact'] = 'השבתה של מסננים נוכחיים';
+$labels['filterdef'] = 'הגדרת מסנן';
+$labels['filtersetname'] = 'שם של קבוצת מסננים';
+$labels['newfilterset'] = 'קבוצת מסננים חדשה';
+$labels['active'] = 'פעיל';
+$labels['none'] = 'אף אחד מאלה';
+$labels['fromset'] = 'מקבוצה';
+$labels['fromfile'] = 'מקובץ';
+$labels['filterdisabled'] = 'מסנן מושבת';
+$labels['countisgreaterthan'] = 'המספר גדול מ-';
+$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'] = 'הסרת דגלים מההודעה';
+$labels['flagread'] = 'נקרא';
+$labels['flagdeleted'] = 'נמחק';
+$labels['flaganswered'] = 'נענה';
+$labels['flagflagged'] = 'סומן בדגל';
+$labels['flagdraft'] = 'טיוטה';
+$labels['filtercreate'] = 'יצירת מסנן';
+$labels['usedata'] = 'שימוש במידע שלהלן ליצירת המסנן:';
+$labels['nextstep'] = 'הצעד הבא';
+$labels['...'] = '...';
+$labels['advancedopts'] = 'אפשרויות מתקדמות';
+$labels['body'] = 'גוף ההודעה';
+$labels['address'] = 'כתובת';
+$labels['envelope'] = 'מעטפה';
+$labels['modifier'] = 'גורם שינוי:';
+$labels['text'] = 'תמליל';
+$labels['undecoded'] = 'לא מקודד ( גולמי )';
+$labels['contenttype'] = 'סוג התוכן';
+$labels['modtype'] = 'סוג:';
+$labels['allparts'] = 'הכל';
+$labels['domain'] = 'מתחם';
+$labels['localpart'] = 'חלק מקומי';
+$labels['user'] = 'משתמש';
+$labels['detail'] = 'פרטים';
+$labels['comparator'] = 'משווה:';
+$labels['default'] = 'ברירת מחדל';
+$labels['octet'] = 'strict (octet)';
+$labels['asciicasemap'] = 'case insensitive (ascii-casemap)';
+$labels['asciinumeric'] = 'numeric (ascii-numeric)';
+$labels['filterunknownerror'] = 'שגיאת שרת בלתי מוכרת.';
+$labels['filterconnerror'] = 'לא ניתן להתחבר לשרת.';
+$labels['filterdeleteerror'] = 'לא ניתן למחוק את המסנן. אירעה שגיאה בצד השרת.';
+$labels['filterdeleted'] = 'המסנן נמחק בהצלחה.';
+$labels['filtersaved'] = 'המסנן נשמר בהצלחה.';
+$labels['filtersaveerror'] = 'לא ניתן לשמור את המסנן. אירעה שגיאה בצד השרת.';
+$labels['filterdeleteconfirm'] = 'האם אכן ברצונך למחוק את המסנן הנבחר?';
+$labels['ruledeleteconfirm'] = 'האם אכן ברצונך למחוק את הכלל הנבחר?';
+$labels['actiondeleteconfirm'] = 'האם אכן ברצונך למחוק את הפעולה הנבחרת?';
+$labels['forbiddenchars'] = 'תווים אסורים בשדה.';
+$labels['cannotbeempty'] = 'השדה לא יכול להישאר ריק.';
+$labels['ruleexist'] = 'כבר קיים מסנן בשם כזה.';
+$labels['setactivateerror'] = 'לא ניתן להפעיל את ערכת המסננים הנבחרת. אירעה שגיאה בצד השרת.';
+$labels['setdeactivateerror'] = 'לא ניתן לנטרל את ערכת המסננים הנבחרת. אירעה שגיאה בצד השרת.';
+$labels['setdeleteerror'] = 'לא ניתן למחוק את ערכת המסננים הנבחרת. אירעה שגיאה בצד השרת.';
+$labels['setactivated'] = 'ערכת המסננים הופעלה בהצלחה.';
+$labels['setdeactivated'] = 'ערכת המסננים נוטרלה בהצלחה.';
+$labels['setdeleted'] = 'ערכת המסננים נמחקה בהצלחה.';
+$labels['setdeleteconfirm'] = 'האם אכן ברצונך למחוק את ערכת המסננים הנבחרת?';
+$labels['setcreateerror'] = 'לא ניתן ליצור ערכת מסננים. אירעה שגיאה בצד השרת.';
+$labels['setcreated'] = 'ערכת המסננים נוצרה בהצלחה.';
+$labels['activateerror'] = 'לא ניתן להפעיל את המסננים הנבחרים. אירעה שגיאה בצד השרת.';
+$labels['deactivateerror'] = 'לא ניתן לנטרל את המסננים הנבחרים. אירעה שגיאה בצד השרת.';
+$labels['deactivated'] = 'המסננים נוטרלו בהצלחה.';
+$labels['activated'] = 'המסננים הופעלו בהצלחה.';
+$labels['moved'] = 'המסנן הועבר בהצלחה.';
+$labels['moveerror'] = 'לא ניתן להעביר את המסנן הנבחר. אירעה שגיאה בצד השרת.';
+$labels['nametoolong'] = 'השם ארוך מדי.';
+$labels['namereserved'] = 'השם הזה שמור.';
+$labels['setexist'] = 'הערכה כבר קיימת.';
+$labels['nodata'] = 'חובה לבחור במיקום אחד לפחות!';
+
index 369180e3bef3a6d3ee6c4f232878c4eb5df983a5..4e021186804c93e3f04b1cdfeb7c53ec02c91005 100644 (file)
@@ -9,7 +9,7 @@
  | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Thomas <Unknown>                                              |
+ | Author: Svebor Prstačić <svebor.prstacic@gmail.com>                 |
  +-----------------------------------------------------------------------+
  @version $Id$
 */
@@ -58,7 +58,9 @@ $labels['vacationdays'] = 'Koliko često slati poruku (u danima):';
 $labels['vacationreason'] = 'Tijelo poruke (razlog odmora):';
 $labels['vacationsubject'] = 'Naslov poruke:';
 $labels['rulestop'] = 'Prekini izvođenje filtera';
+$labels['enable'] = 'Omogući/Onemogući';
 $labels['filterset'] = 'Grupa filtera';
+$labels['filtersets'] = 'Filteri';
 $labels['filtersetadd'] = 'Dodaj grupu filtera';
 $labels['filtersetdel'] = 'Obriši odabranu grupu filtera';
 $labels['filtersetact'] = 'Aktiviraj odabranu grupu filtera';
@@ -91,6 +93,29 @@ $labels['flagdeleted'] = 'Obrisana';
 $labels['flaganswered'] = 'Odgovorena';
 $labels['flagflagged'] = 'Označena';
 $labels['flagdraft'] = 'Predložak';
+$labels['filtercreate'] = 'Stvori filter';
+$labels['usedata'] = 'Koristi podatke za filter:';
+$labels['nextstep'] = 'Idući korak';
+$labels['...'] = '…';
+$labels['advancedopts'] = 'Napredne postavke';
+$labels['body'] = 'Tijelo poruke';
+$labels['address'] = 'adresa';
+$labels['envelope'] = 'omotnica';
+$labels['modifier'] = 'modificirao:';
+$labels['text'] = 'tekst';
+$labels['undecoded'] = 'nedekodirano (raw)';
+$labels['contenttype'] = 'tip sadržaja';
+$labels['modtype'] = 'tip:';
+$labels['allparts'] = 'sve';
+$labels['domain'] = 'domena';
+$labels['localpart'] = 'lokalni dio';
+$labels['user'] = 'korisnik';
+$labels['detail'] = 'detalj';
+$labels['comparator'] = 'usporedio:';
+$labels['default'] = 'preddefinirano';
+$labels['octet'] = 'strogo (oktet)';
+$labels['asciicasemap'] = 'neosjetljivo na veličinu slova (ascii-casemap)';
+$labels['asciinumeric'] = 'numerički (ascii-numeric)';
 $labels['filterunknownerror'] = 'Nepoznata greška na poslužitelju';
 $labels['filterconnerror'] = 'Nemoguće spajanje na poslužitelj (managesieve)';
 $labels['filterdeleteerror'] = 'Nemoguće brisanje filtera. Greška na poslužitelju';
@@ -102,6 +127,7 @@ $labels['ruledeleteconfirm'] = 'Jeste li sigurni da želite obrisati odabrana pr
 $labels['actiondeleteconfirm'] = 'Jeste li sigurni da želite obrisati odabrane akcije?';
 $labels['forbiddenchars'] = 'Nedozvoljeni znakovi u polju';
 $labels['cannotbeempty'] = 'Polje nesmije biti prazno';
+$labels['ruleexist'] = 'Filter sa zadanim imenom već postoji.';
 $labels['setactivateerror'] = 'Nemoguće aktivirati odabranu grupu filtera. Greška na poslužitelju';
 $labels['setdeactivateerror'] = 'Nemoguće deaktivirati odabranu grupu filtera. Greška na poslužitelju';
 $labels['setdeleteerror'] = 'Nemoguće obrisati odabranu grupu filtera. Greška na poslužitelju';
@@ -111,5 +137,14 @@ $labels['setdeleted'] = 'Grupa filtera je uspješno obrisana';
 $labels['setdeleteconfirm'] = 'Jeste li sigurni da želite obrisati odabranu grupu filtera?';
 $labels['setcreateerror'] = 'Nemoguće stvoriti grupu filtera. Greška na poslužitelju';
 $labels['setcreated'] = 'Grupa filtera je uspješno stvorena';
+$labels['activateerror'] = 'Nije moguće omogućiti odabrani filter(e). Greška poslužitelja.';
+$labels['deactivateerror'] = 'Nije moguće onemogučiti odabrane filter(e). Greška poslužitelja.';
+$labels['deactivated'] = 'Filter(i) onemogućen(i) uspješno.';
+$labels['activated'] = 'Filter(i) omogućen(i) uspješno.';
+$labels['moved'] = 'Filter uspješno premješten.';
+$labels['moveerror'] = 'Nije moguće premjestiti odabrani filter. Greška poslužitelja.';
 $labels['nametoolong'] = 'Nemoguće napraviti grupu filtera. Naziv je predugačak';
+$labels['namereserved'] = 'Rezervirano ime.';
+$labels['setexist'] = 'Skup već postoji.';
+$labels['nodata'] = 'Barem jedan pozicija mora biti odabrana!';
 
index dcd017552f1ff99d1b24cbebb2c04ac3493812d7..1795100873183049017751586f8696bfb8e2727e 100644 (file)
@@ -9,7 +9,7 @@
  | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Thomas <Unknown>                                              |
+ | Author: bela <Unknown>                                                |
  +-----------------------------------------------------------------------+
  @version $Id$
 */
@@ -23,8 +23,8 @@ $labels['filteradd'] = 'Szűrő hozzáadása';
 $labels['filterdel'] = 'Szűrő törlése';
 $labels['moveup'] = 'Mozgatás felfelé';
 $labels['movedown'] = 'Mozgatás lefelé';
-$labels['filterallof'] = 'A következők mind illeszkedjenek';
-$labels['filteranyof'] = 'A következők bármelyike illeszkedjen';
+$labels['filterallof'] = 'A következők szabályok mind illeszkedjenek';
+$labels['filteranyof'] = 'A következő szabályok bármelyike illeszkedjen';
 $labels['filterany'] = 'Minden üzenet illeszkedjen';
 $labels['filtercontains'] = 'tartalmazza';
 $labels['filternotcontains'] = 'nem tartalmazza';
@@ -32,6 +32,10 @@ $labels['filteris'] = 'megegyezik';
 $labels['filterisnot'] = 'nem egyezik meg';
 $labels['filterexists'] = 'létezik';
 $labels['filternotexists'] = 'nem létezik';
+$labels['filtermatches'] = 'kifejezéssel egyezők';
+$labels['filternotmatches'] = 'kifejezéssel nem egyezők';
+$labels['filterregex'] = 'reguláris kifejezéssel egyezők';
+$labels['filternotregex'] = 'reguláris kifejezéssel nem egyezők';
 $labels['filterunder'] = 'alatta';
 $labels['filterover'] = 'felette';
 $labels['addrule'] = 'Szabály hozzáadása';
@@ -39,6 +43,7 @@ $labels['delrule'] = 'Szabály törlése';
 $labels['messagemoveto'] = 'Üzenet áthelyezése ide:';
 $labels['messageredirect'] = 'Üzenet továbbítása ide:';
 $labels['messagecopyto'] = 'Üzenet másolása';
+$labels['messagesendcopy'] = 'Másolat kűldése az üzenetből';
 $labels['messagereply'] = 'Válaszüzenet küldése (autoreply)';
 $labels['messagedelete'] = 'Üzenet törlése';
 $labels['messagediscard'] = 'Válaszüzenet küldése, a levél törlése';
@@ -54,9 +59,63 @@ $labels['vacationreason'] = 'Levél szövege (automatikus válasz):';
 $labels['vacationsubject'] = 'Üzenet tárgya:';
 $labels['rulestop'] = 'Műveletek végrehajtásának befejezése';
 $labels['enable'] = 'Bekapcsol/Kikapcsol';
+$labels['filterset'] = 'Szűrök készlet';
+$labels['filtersets'] = 'Szűrő készletek';
+$labels['filtersetadd'] = 'Szűrő hozzáadása a készlethez';
+$labels['filtersetdel'] = 'Az aktuális szűrő készlet  törlése';
+$labels['filtersetact'] = 'Az aktuális szűrő készlet engedélyezése';
+$labels['filtersetdeact'] = 'Az aktuális szűrő készlet tiltása';
 $labels['filterdef'] = 'Szűrő definíció';
+$labels['filtersetname'] = 'Szűrő készlet neve';
+$labels['newfilterset'] = 'Új szűrő készlet';
 $labels['active'] = 'aktív';
 $labels['none'] = 'nincs';
+$labels['fromset'] = 'készletből';
+$labels['fromfile'] = 'fájlból';
+$labels['filterdisabled'] = 'Szűrő kikapcsolása';
+$labels['countisgreaterthan'] = 'a számláló nagyobb mint';
+$labels['countisgreaterthanequal'] = 'a számláló nagyobb vagy egyenlő';
+$labels['countislessthan'] = 'a számláló kissebb mint';
+$labels['countislessthanequal'] = 'a számláló kissebb vagy egyenlő';
+$labels['countequals'] = 'a számláló egyenlő';
+$labels['countnotequals'] = 'a számláló nem egyenlő';
+$labels['valueisgreaterthan'] = 'az érték nagyobb mint';
+$labels['valueisgreaterthanequal'] = 'az érték nagyobb vagy egyenlő';
+$labels['valueislessthan'] = 'az érték kisebb mint';
+$labels['valueislessthanequal'] = 'az érték kisebb vagy egyenlő';
+$labels['valueequals'] = 'az érték megegyzik';
+$labels['valuenotequals'] = 'az érték nem egyzik meg';
+$labels['setflags'] = 'Jelzők beállítása az üzeneten';
+$labels['addflags'] = 'Jelző hozzáadása az üzenethez';
+$labels['removeflags'] = 'Jelzők eltávolítása az üzenetből';
+$labels['flagread'] = 'Olvasás';
+$labels['flagdeleted'] = 'Törölt';
+$labels['flaganswered'] = 'Megválaszolt';
+$labels['flagflagged'] = 'Megjelölt';
+$labels['flagdraft'] = 'Vázlat';
+$labels['filtercreate'] = 'Szűrő létrehozása';
+$labels['usedata'] = 'A következő adatok használata a szűrőben';
+$labels['nextstep'] = 'Következő lépés';
+$labels['...'] = '…';
+$labels['advancedopts'] = 'Haladó beállítások';
+$labels['body'] = 'Levéltörzs';
+$labels['address'] = 'cím';
+$labels['envelope'] = 'boriték';
+$labels['modifier'] = 'módosító:';
+$labels['text'] = 'szöveg';
+$labels['undecoded'] = 'kódolatlan(nyers)';
+$labels['contenttype'] = 'tartalom tipusa';
+$labels['modtype'] = 'típus:';
+$labels['allparts'] = 'összes';
+$labels['domain'] = 'domain';
+$labels['localpart'] = 'név rész';
+$labels['user'] = 'felhasználó';
+$labels['detail'] = 'részlet';
+$labels['comparator'] = 'összehasonlító';
+$labels['default'] = 'alapértelmezett';
+$labels['octet'] = 'strict (octet)';
+$labels['asciicasemap'] = 'kis-nagybetüre nem érzékeny (ascii-casemap)';
+$labels['asciinumeric'] = 'számszerü (ascii-numeric)';
 $labels['filterunknownerror'] = 'Ismeretlen szerverhiba';
 $labels['filterconnerror'] = 'Nem tudok a szűrőszerverhez kapcsolódni';
 $labels['filterdeleteerror'] = 'A szűrőt nem lehet törölni, szerverhiba történt';
@@ -68,4 +127,24 @@ $labels['ruledeleteconfirm'] = 'Biztosan törli ezt a szabályt?';
 $labels['actiondeleteconfirm'] = 'Biztosan törli ezt a műveletet?';
 $labels['forbiddenchars'] = 'Érvénytelen karakter a mezőben';
 $labels['cannotbeempty'] = 'A mező nem lehet üres';
+$labels['ruleexist'] = 'Már van ilyen névvel elmentett szűrő.';
+$labels['setactivateerror'] = 'A kiválasztott szűrő készletet nem sikerült engedélyezni. Szerver hiba történt.';
+$labels['setdeactivateerror'] = 'A kiválasztott szűrő készletet nem sikerült tiltani. Szerver hiba történt.';
+$labels['setdeleteerror'] = 'Nem sikerült a kiválasztott szűrő készletet törölni. Szerver hiba történt.';
+$labels['setactivated'] = 'A filter készlet engedélyezése sikeresen végrehajtódott.';
+$labels['setdeactivated'] = 'A filter készlet tiltása sikeresen végrehajtódott.';
+$labels['setdeleted'] = 'A filter készlet törlése sikeresen végrehajtódott.';
+$labels['setdeleteconfirm'] = 'Biztosan törölni szeretnéd a kiválasztott szűrő készleteket?';
+$labels['setcreateerror'] = 'Nem sikerült létrehozni a szűrő készletet. Szerver hiba történt.';
+$labels['setcreated'] = 'A szűrő készlet sikeresen létrejött.';
+$labels['activateerror'] = 'Nem sikerült engedélyezni a kiválasztott szűrö(k)et. Szerver hiba történt.';
+$labels['deactivateerror'] = 'Nem sikerült kikapcsolni a kiválasztott szűrő(ke)t. Szerver hiba történt.';
+$labels['deactivated'] = 'Szűrő(k) sikeresen kikapcsolva.';
+$labels['activated'] = 'Szűrő(k) sikeresen bekapcsolva.';
+$labels['moved'] = 'A szűrő sikeresen áthelyezve.';
+$labels['moveerror'] = 'Az áthelyezés nem sikerült. Szerver hiba történt.';
+$labels['nametoolong'] = 'Túll hosszu név';
+$labels['namereserved'] = 'Nem használható (foglalt) név-';
+$labels['setexist'] = 'A készlet már létezik.';
+$labels['nodata'] = 'Legalább egyet ki kell választani.';
 
diff --git a/plugins/managesieve/localization/hy_AM.inc b/plugins/managesieve/localization/hy_AM.inc
new file mode 100644 (file)
index 0000000..be7d0fb
--- /dev/null
@@ -0,0 +1,149 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/hy_AM/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Vahan Yerkanian <vahan@yerkanian.com>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['filters'] = 'Զտիչներ';
+$labels['managefilters'] = 'Կառավարել ստացվող նամակների զտիչները';
+$labels['filtername'] = 'Զտիչի անուն';
+$labels['newfilter'] = 'Նոր զտիչ';
+$labels['filteradd'] = 'Ավելացնել զտիչ';
+$labels['filterdel'] = 'Ջնջել զտիչը';
+$labels['moveup'] = 'Բարձրացնել';
+$labels['movedown'] = 'Իջեցնել';
+$labels['filterallof'] = 'հետևյալ բոլոր պահանջներին համապատասխանող';
+$labels['filteranyof'] = 'հետևյալ պահանջներից ցանկացածին համապատասխանող';
+$labels['filterany'] = 'բոլոր հաղորդագրությունները';
+$labels['filtercontains'] = 'պարունակում է';
+$labels['filternotcontains'] = 'չի պարունակում';
+$labels['filteris'] = 'հավասար է';
+$labels['filterisnot'] = 'հավասար չէ';
+$labels['filterexists'] = 'գոյություն ունի';
+$labels['filternotexists'] = 'գոյություն չունի';
+$labels['filtermatches'] = 'բավարարում է արտահայտությանը';
+$labels['filternotmatches'] = 'չի բավարարում արտահայտությանը';
+$labels['filterregex'] = 'բավարարում է կանոնավոր արտահայտությանը';
+$labels['filternotregex'] = 'չի բավարարում կանոնավոր արտահայտությանը';
+$labels['filterunder'] = 'տակ';
+$labels['filterover'] = 'վրա';
+$labels['addrule'] = 'Ավելացնել պայմանը';
+$labels['delrule'] = 'Ջնջել պայմանը';
+$labels['messagemoveto'] = 'Տեղափոխել հաղորդագրությունը';
+$labels['messageredirect'] = 'Վերահասցեվորել հաղորդագրությունը';
+$labels['messagecopyto'] = 'Պատճենել հաղորդագրությունը';
+$labels['messagesendcopy'] = 'Ուղարկել հաղորդագրության պատճեն';
+$labels['messagereply'] = 'Պատասխանել հաղորդագրությամբ';
+$labels['messagedelete'] = 'Ջնջել հաղորդագրությունը';
+$labels['messagediscard'] = 'Հեռացնել, հաղորդագրությամբ';
+$labels['messagesrules'] = 'Ստացվող հաղորդագրությունների համար';
+$labels['messagesactions'] = '…կատարել հետևյալ գործողությունները.';
+$labels['add'] = 'Ավելացնել';
+$labels['del'] = 'Ջնջել';
+$labels['sender'] = 'Ուղարկող';
+$labels['recipient'] = 'Ստացող';
+$labels['vacationaddresses'] = 'Իմ հավելյալ էլփոստի հասցեներ (բաժանված ստորակետներով).';
+$labels['vacationdays'] = 'Ինչ հաճախությամբ ուղարկել հաղորդագրությունները (օրեր)`';
+$labels['vacationreason'] = 'Հաղորդագրության բովանդակություն (արձակուրդի պատճառ)`';
+$labels['vacationsubject'] = 'Հաղորդագրության վերնագիր`';
+$labels['rulestop'] = 'Դադարել պայմանների ստուգումը';
+$labels['enable'] = 'Միացնել/Անջատել';
+$labels['filterset'] = 'Զտիչների համալիր';
+$labels['filtersets'] = 'Զտիչների համալիրներ';
+$labels['filtersetadd'] = 'Ավելացնել զտիչների համալիր';
+$labels['filtersetdel'] = 'Ջնջել առկա զտիչների համալիրը';
+$labels['filtersetact'] = 'Միացնել առկա զտիչների համալիրը';
+$labels['filtersetdeact'] = 'Անջատել առկա զտիչների համալիրը';
+$labels['filterdef'] = 'Զտիչի սահմանում';
+$labels['filtersetname'] = 'Զտիչների համալիրի անուն';
+$labels['newfilterset'] = 'Նոր զտիչների համալիր';
+$labels['active'] = 'ակտիվ';
+$labels['none'] = 'ոչ մեկը';
+$labels['fromset'] = 'համալիրից';
+$labels['fromfile'] = 'ֆայլից';
+$labels['filterdisabled'] = 'Զտիչը անջատված է';
+$labels['countisgreaterthan'] = 'քանակը գերազանցում է';
+$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'] = 'Հեռացնել նշաններ հաղորդագրությունից';
+$labels['flagread'] = 'Ընթերցված';
+$labels['flagdeleted'] = 'Ջնջված';
+$labels['flaganswered'] = 'Պատասխանված';
+$labels['flagflagged'] = 'Նշված';
+$labels['flagdraft'] = 'Սևագիր';
+$labels['filtercreate'] = 'Ստեղծել զտիչ';
+$labels['usedata'] = 'Զտիչում օգտագործել հետևյալ տեղեկությունը.';
+$labels['nextstep'] = 'Հաջորդ քայլ';
+$labels['...'] = '…';
+$labels['advancedopts'] = 'Հավելյալ ընտրանքներ';
+$labels['body'] = 'Մարմին';
+$labels['address'] = 'հասցե';
+$labels['envelope'] = 'ծրար';
+$labels['modifier'] = 'փոփոխիչ`';
+$labels['text'] = 'տեքստ';
+$labels['undecoded'] = 'մաքուր';
+$labels['contenttype'] = 'բովանդակության տիպ';
+$labels['modtype'] = 'տիպ`';
+$labels['allparts'] = 'բոլորը';
+$labels['domain'] = 'տիրույթ';
+$labels['localpart'] = 'լոկալ մաս';
+$labels['user'] = 'օգտվող';
+$labels['detail'] = 'մաս';
+$labels['comparator'] = 'համեմատիչ`';
+$labels['default'] = 'լռակյաց';
+$labels['octet'] = 'անփոփոխ (օկտետ)';
+$labels['asciicasemap'] = 'case insensitive (ascii-casemap)';
+$labels['asciinumeric'] = 'numeric (ascii-numeric)';
+$labels['filterunknownerror'] = 'Սերվերի անհայտ սխալ';
+$labels['filterconnerror'] = 'Սերվերի հետ կապի խնդիր։';
+$labels['filterdeleteerror'] = 'Սերվերի սխալ, զտիչի ջնջումն ձախողվեց։';
+$labels['filterdeleted'] = 'Զտիչը ջնջվեց։';
+$labels['filtersaved'] = 'Զտիչը պահպանվեց։';
+$labels['filtersaveerror'] = 'Սերվերի սխալ, զտիչի պահպանման սխալ։';
+$labels['filterdeleteconfirm'] = 'Դուք իսկապե՞ս ցանկանում եք ջնջել նշված զտիչը։';
+$labels['ruledeleteconfirm'] = 'Դուք իսկապե՞ս ցանկանում եք ջնջել նշված պայմանը։';
+$labels['actiondeleteconfirm'] = 'Դուք իսկապե՞ս ցանկանում եք ջնջել նշված գործողությունը։';
+$labels['forbiddenchars'] = 'Դաշտում առկա են արգելված նիշեր։';
+$labels['cannotbeempty'] = 'Դաշտը դատարկ չի կարող լինել։';
+$labels['ruleexist'] = 'Տրված անունով զտիչ արդեն գոյություն ունի։';
+$labels['setactivateerror'] = 'Սերվերի սխալ։ Նշված զտիչների համալիրի միացման ձախողում։';
+$labels['setdeactivateerror'] = 'Սերվերի սխալ։ Նշված զտիչների համալիրի անջատման ձախողում։';
+$labels['setdeleteerror'] = 'Սերվերի սխալ։ Նշված զտիչների համալիրի ջնջման ձախողում։';
+$labels['setactivated'] = 'Զտիչների համալիրը միացված է։';
+$labels['setdeactivated'] = 'Զտիչների համալիրը անջատված է։';
+$labels['setdeleted'] = 'Զտիչների համալիրը ջնջված է։';
+$labels['setdeleteconfirm'] = 'Դուք իսկապե՞ս ցանկանում եք ջնջել նշված զտիչների համալիրը։';
+$labels['setcreateerror'] = 'Սերվերի սխալ։ Զտիչների համալիրի ստեղծումը ձախողվեց։';
+$labels['setcreated'] = 'Զտիչների համալիրը ստեղծված է։';
+$labels['activateerror'] = 'Սերվերի սխալ։ Նշված զտիչի միացման ձախողում։';
+$labels['deactivateerror'] = 'Սերվերի սխալ։ Նշված զտիչի անջատման ձախողում։';
+$labels['deactivated'] = 'Զտիչի անջատված է։';
+$labels['activated'] = 'Զտիչի միացված է։';
+$labels['moved'] = 'Զտիչի տեղափոխված է։';
+$labels['moveerror'] = 'Սերվերի սխալ։ Նշված զտիչի տեղափոխման ձախողում։';
+$labels['nametoolong'] = 'Անունը չափազանց երկար է։';
+$labels['namereserved'] = 'Անթույլատրելի անուն։';
+$labels['setexist'] = 'Համալիրը արդեն գոյություն ունի։';
+$labels['nodata'] = 'Պահանջվում է նշել գոնե մեկ դիրք։';
+
diff --git a/plugins/managesieve/localization/ia.inc b/plugins/managesieve/localization/ia.inc
new file mode 100644 (file)
index 0000000..f403f4d
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ia/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Emilio Sepulveda <emilio@chilemoz.org>                        |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['filters'] = 'Filtros';
+$labels['filteradd'] = 'Adder filtro';
+$labels['filterdel'] = 'Deler filtro';
+
diff --git a/plugins/managesieve/localization/ia_IA.inc b/plugins/managesieve/localization/ia_IA.inc
new file mode 100644 (file)
index 0000000..7e74a53
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ia_IA/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Emilio Sepulveda <emilio@chilemoz.org>                        |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['filters'] = 'Filtros';
+$labels['filteradd'] = 'Adder filtro';
+$labels['filterdel'] = 'Deler filtro';
+
diff --git a/plugins/managesieve/localization/id_ID.inc b/plugins/managesieve/localization/id_ID.inc
new file mode 100644 (file)
index 0000000..b9fe476
--- /dev/null
@@ -0,0 +1,150 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/id_ID/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Putu Arya Sabda Wijaya <Unknown>                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['filters'] = 'Filter';
+$labels['managefilters'] = 'Atur filter email masuk';
+$labels['filtername'] = 'Nama filter';
+$labels['newfilter'] = 'Filter baru';
+$labels['filteradd'] = 'Tambah filter';
+$labels['filterdel'] = 'Hapus filter';
+$labels['moveup'] = 'Pindah ke atas';
+$labels['movedown'] = 'Pindah ke bawah';
+$labels['filterallof'] = 'cocok dengan semua aturan berikut ini';
+$labels['filteranyof'] = 'cocok dengan aturan manapun';
+$labels['filterany'] = 'semua pesan';
+$labels['filtercontains'] = 'berisi';
+$labels['filternotcontains'] = 'tidak berisi';
+$labels['filteris'] = 'sama dengan';
+$labels['filterisnot'] = 'tidak sama dengan';
+$labels['filterexists'] = 'ada';
+$labels['filternotexists'] = 'tidak ada';
+$labels['filtermatches'] = 'ekspresi yg cocok';
+$labels['filternotmatches'] = 'ekspresi yg tidak cocok';
+$labels['filterregex'] = 'cocok dengan ekspresi reguler';
+$labels['filternotregex'] = 'tidak cocok dengan ekspresi reguler';
+$labels['filterunder'] = 'di bawah';
+$labels['filterover'] = 'di atas';
+$labels['addrule'] = 'Tambah aturan';
+$labels['delrule'] = 'Hapus aturan';
+$labels['messagemoveto'] = 'Pindah pesan ke';
+$labels['messageredirect'] = 'Alihkan pesan ke';
+$labels['messagecopyto'] = 'Salin pesan ke';
+$labels['messagesendcopy'] = 'Kirim salinan pesan ke';
+$labels['messagereply'] = 'balas dengan pesan';
+$labels['messagedelete'] = 'Hapus pesan';
+$labels['messagediscard'] = 'Buang dengan pesan';
+$labels['messagesrules'] = 'Unutk email masuk:';
+$labels['messagesactions'] = '...mengeksekusi tindakan berikut';
+$labels['add'] = 'Tambah';
+$labels['del'] = 'Hapus';
+$labels['sender'] = 'Pengirim';
+$labels['recipient'] = 'Penerima';
+$labels['vacationaddresses'] = 'Daftar tambahan penerima email (terpisah koma):';
+$labels['vacationdays'] = 'Seberapa sering mengirim pesan (dalam hari):';
+$labels['vacationreason'] = 'Badan pesan (alasan liburan):';
+$labels['vacationsubject'] = 'Judul pesan:';
+$labels['rulestop'] = 'Berhenti mengevaluasi aturan';
+$labels['enable'] = 'Aktifkan/Non-Aktifkan';
+$labels['filterset'] = 'Himpunan filter';
+$labels['filtersets'] = 'Himpunan banyak filter';
+$labels['filtersetadd'] = 'Tambahkan himpunan filter';
+$labels['filtersetdel'] = 'Hapus himpunan filter yang sekarang';
+$labels['filtersetact'] = 'Aktifkan himpunan filter ayng sekarang';
+$labels['filtersetdeact'] = 'Matikan himpunan filter ayng sekarang';
+$labels['filterdef'] = 'Definisi filter';
+$labels['filtersetname'] = 'Nama himpunan filter';
+$labels['newfilterset'] = 'Himpunan filter baru';
+$labels['active'] = 'aktif';
+$labels['none'] = 'nihil';
+$labels['fromset'] = 'dari himpunan';
+$labels['fromfile'] = 'dari berkas';
+$labels['filterdisabled'] = 'Filter dimatikan';
+$labels['countisgreaterthan'] = 'penghitungan lebih besar dari';
+$labels['countisgreaterthanequal'] = 'penghitungan lebih besa dari atau sama dengan';
+$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';
+$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 sama dengan';
+$labels['setflags'] = 'Tandai pesan';
+$labels['addflags'] = 'Tambah tandai pada pesan';
+$labels['removeflags'] = 'Cabut tanda dari pesan';
+$labels['flagread'] = 'Baca';
+$labels['flagdeleted'] = 'Terhapus';
+$labels['flaganswered'] = 'Terjawab';
+$labels['flagflagged'] = 'Ditandai';
+$labels['flagdraft'] = 'Konsep';
+$labels['filtercreate'] = 'Buat filter';
+$labels['usedata'] = 'Gunakan data berikut dalam filter:';
+$labels['nextstep'] = 'Langkah Selanjutnya';
+$labels['...'] = '...';
+$labels['advancedopts'] = 'Pilihan lanjutan';
+$labels['body'] = 'Isi';
+$labels['address'] = 'alamat';
+$labels['envelope'] = 'amplop';
+$labels['modifier'] = 'peubah:';
+$labels['text'] = 'teks';
+$labels['undecoded'] = 'praterjemahan (mentah)';
+$labels['contenttype'] = 'tipe isi';
+$labels['modtype'] = 'tipe:';
+$labels['allparts'] = 'semua';
+$labels['domain'] = 'domain';
+$labels['localpart'] = 'bagian lokal';
+$labels['user'] = 'pengguna';
+$labels['detail'] = 'rinci';
+$labels['comparator'] = 'pembanding:';
+$labels['default'] = 'standar';
+$labels['octet'] = 'ketat (oktet)';
+$labels['asciicasemap'] = 'case insensitive (ascii-casemap)';
+$labels['asciinumeric'] = 'numeric (ascii-numeric)';
+$labels['filterunknownerror'] = 'Galat pada server tak dikenali.';
+$labels['filterconnerror'] = 'Tidak dapat menyambung ke server.';
+$labels['filterdeleteerror'] = 'Tidak bisa menghapus penyaringan. Terjadi galat pada server.';
+$labels['filterdeleted'] = 'Penyaringan berhasil dihapus.';
+$labels['filtersaved'] = 'Penyaringan berhasil disimpan.';
+$labels['filtersaveerror'] = 'Tidak bisa menyimpan penyaringan. Terjadi galat pada server.';
+$labels['filterdeleteconfirm'] = 'Yakin untuk menghapus penyaringan terpilih?';
+$labels['ruledeleteconfirm'] = 'Yakin untuk menghapus aturan terpilih?';
+$labels['actiondeleteconfirm'] = 'Yakin untuk menghapus tindakan terpilih?';
+$labels['forbiddenchars'] = 'Karakter terlarang pada isian.';
+$labels['cannotbeempty'] = 'Isian tidak bisa kosong.';
+$labels['ruleexist'] = 'Penyaringan dengan nama tersebut sudah ada.';
+$labels['setactivateerror'] = 'Tidak bisa menghidupkan kumpulan penyaringan terpilih. Terjadi galat pada server.';
+$labels['setdeactivateerror'] = 'Tidak bisa mematikan kumpulan penyaringan terpilih. Terjadi galat pada server.';
+$labels['setdeleteerror'] = 'Tidak bisa menghapus kumpulan penyaringan terpilih. Terjadi galat pada server.';
+$labels['setactivated'] = 'Kumpulan penyaringan berhasil dihidupkan.';
+$labels['setdeactivated'] = 'Kumpulan penyaringan berhasil dimatikan.';
+$labels['setdeleted'] = 'Kumpulan penyaringan berhasil dihapus.';
+$labels['setdeleteconfirm'] = 'Yakin ingin menghapus kumpulan penyaringan terpilih?';
+$labels['setcreateerror'] = 'Tidak bisa membuat kumpulan penyaringan. Terjadi galat pada server.';
+$labels['setcreated'] = 'Kumpulan penyaringan berhasul dibuat.';
+$labels['activateerror'] = 'Tidak bisa menghidupkan penyaringan terpilih. terjadi galat pada server.';
+$labels['deactivateerror'] = 'Tidak bisa mematikan penyaringan terpilih. Terjadi galat pada server.';
+$labels['deactivated'] = 'Berhasil mematikan penyaringan.';
+$labels['activated'] = 'Berhasil menghidupkan penyaringan.';
+$labels['moved'] = 'Berhasil memindahkan penyaringan.';
+$labels['moveerror'] = 'Tidak bisa memindahkan penyaringan terpilih. Terjadi galat pada server.';
+$labels['nametoolong'] = 'Kepanjangan nama.';
+$labels['namereserved'] = 'Nama sudah ada.';
+$labels['setexist'] = 'Kumpulan sudah ada.';
+$labels['nodata'] = 'Setidaknya satu posisi harus dipilih!';
+
index 53e7d0998be1ebcbe909e05a3bc997a85fda355d..553377ab909112d52ea8fb8dc7e52debb4a5f14a 100644 (file)
@@ -139,8 +139,8 @@ $labels['setcreateerror'] = 'Impossibile creare il gruppo. Errore del server';
 $labels['setcreated'] = 'Gruppo di filtri creato';
 $labels['activateerror'] = 'impossibile selezionare il filtro (server error)';
 $labels['deactivateerror'] = 'impossibile disabilitare il filtro (server error)';
-$labels['activated'] = 'filtro disabilitato';
-$labels['deactivated'] = 'filtro abilitato';
+$labels['deactivated'] = 'filtro disabilitato';
+$labels['activated'] = 'filtro abilitato';
 $labels['moved'] = 'filtro spostato';
 $labels['moveerror'] = 'impossibile spostare il filtro (server error)';
 $labels['nametoolong'] = 'Impossibile creare il gruppo: Nome troppo lungo';
index 9642f14717a04c312d1b4d8e0da4f70abd8d6d22..5bb75f882b5fe98514c07bf151f6e04fdd3b16d8 100644 (file)
@@ -9,65 +9,64 @@
  | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Thomas <Unknown>                                              |
+ | Author: Takahiro Kambe                                                |
  +-----------------------------------------------------------------------+
- @version $Id$
 */
 
 $labels = array();
 $labels['filters'] = 'フィルター';
-$labels['managefilters'] = 'å\8f\97ä¿¡ã\83¡ã\83¼ã\83«ã\81®ã\83\95ã\82£ã\83«ã\82¿ã\83¼ã\81®管理';
-$labels['filtername'] = 'フィルターã\81®å\90\8då\89\8d';
-$labels['newfilter'] = '新フィルター';
-$labels['filteradd'] = 'ã\83\95ã\82£ã\83«ã\82¿ã\83¼ã\81®追加';
-$labels['filterdel'] = 'ã\83\95ã\82£ã\83«ã\82¿ã\83¼ã\81®削除';
+$labels['managefilters'] = 'å\8f\97ä¿¡ã\83¡ã\83¼ã\83«ã\81®ã\83\95ã\82£ã\83«ã\82¿ã\83¼ã\82\92管理';
+$labels['filtername'] = 'フィルターå\90\8d';
+$labels['newfilter'] = '新しいフィルター';
+$labels['filteradd'] = 'ã\83\95ã\82£ã\83«ã\82¿ã\83¼ã\82\92追加';
+$labels['filterdel'] = 'ã\83\95ã\82£ã\83«ã\82¿ã\83¼ã\82\92削除';
 $labels['moveup'] = '上に移動';
 $labels['movedown'] = '下に移動';
-$labels['filterallof'] = '次のルールすべてに一致';
-$labels['filteranyof'] = '次ã\81®ã\83«ã\83¼ã\83«ã\81®ã\81©れかに一致';
-$labels['filterany'] = 'メッセージ';
+$labels['filterallof'] = '次ã\81®ã\83«ã\83¼ã\83«ã\81®ã\81\99ã\81¹ã\81¦ã\81«ä¸\80è\87´';
+$labels['filteranyof'] = '次ã\81®ã\83«ã\83¼ã\83«ã\81®ã\81\84ã\81\9aれかに一致';
+$labels['filterany'] = 'すべてのメッセージ';
 $labels['filtercontains'] = '含む';
 $labels['filternotcontains'] = '含まない';
-$labels['filteris'] = '次ã\81¨ä¸\80è\87´ã\81\99ã\82\8b';
-$labels['filterisnot'] = '次ã\81¨ä¸\80è\87´ã\81\97ない';
-$labels['filterexists'] = '存在する';
-$labels['filternotexists'] = '存在しない';
-$labels['filtermatches'] = '一致する表記';
-$labels['filternotmatches'] = '一致しない表記';
-$labels['filterregex'] = '一致する正規表現';
-$labels['filternotregex'] = '一致しない正規表現';
-$labels['filterunder'] = 'ã\82\88ã\82\8aä¸\8a';
-$labels['filterover'] = 'ã\82\88ã\82\8aä¸\8b';
-$labels['addrule'] = 'ã\83«ã\83¼ã\83«ã\81®追加';
-$labels['delrule'] = 'ã\83«ã\83¼ã\83«ã\81®削除';
-$labels['messagemoveto'] = '次にメッセージを移動する';
-$labels['messageredirect'] = '次のメールアドレスに転送 (リダイレクト)';
-$labels['messagecopyto'] = '次にメッセージをコピーする';
-$labels['messagesendcopy'] = '次にメッセージのコピーを送信する';
-$labels['messagereply'] = 'ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\81«è¿\94ä¿¡ã\81\99ã\82\8b';
-$labels['messagedelete'] = 'メッセージを削除する';
-$labels['messagediscard'] = 'メッセージを破棄する';
-$labels['messagesrules'] = 'å\8f\97ä¿¡ã\83¡ã\83¼ã\83«ã\81¸の処理:';
-$labels['messagesactions'] = '…次の操作の実行:';
+$labels['filteris'] = '次ã\81«ç­\89ã\81\97ã\81\84';
+$labels['filterisnot'] = '次ã\81«ç­\89ã\81\97ã\81\8fない';
+$labels['filterexists'] = 'が存在';
+$labels['filternotexists'] = '存在しない';
+$labels['filtermatches'] = '次の式に一致';
+$labels['filternotmatches'] = '次の式に一致しない';
+$labels['filterregex'] = '次の正規表現に一致';
+$labels['filternotregex'] = '次の正規表現に一致しない';
+$labels['filterunder'] = 'ã\82\88ã\82\8aä¸\8b';
+$labels['filterover'] = 'ã\82\88ã\82\8aä¸\8a';
+$labels['addrule'] = 'ã\83«ã\83¼ã\83«ã\82\92追加';
+$labels['delrule'] = 'ã\83«ã\83¼ã\83«ã\82\92削除';
+$labels['messagemoveto'] = '次にメッセージを移動';
+$labels['messageredirect'] = '次のメールアドレスに転送';
+$labels['messagecopyto'] = '次にメッセージをコピー';
+$labels['messagesendcopy'] = '次にメッセージのコピーを送信';
+$labels['messagereply'] = 'ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82\92è¿\94ä¿¡';
+$labels['messagedelete'] = 'メッセージを削除';
+$labels['messagediscard'] = 'メッセージを破棄';
+$labels['messagesrules'] = 'å\8f\97ä¿¡ã\81\97ã\81\9fã\83¡ã\83¼ã\83«の処理:';
+$labels['messagesactions'] = '以下の操作を実行:';
 $labels['add'] = '追加';
 $labels['del'] = '削除';
 $labels['sender'] = '送信者';
-$labels['recipient'] = 'å\8f\97ä¿¡è\80\85';
-$labels['vacationaddresses'] = '電子メール受信者の一覧を追加する (カンマ区切り):';
-$labels['vacationdays'] = 'ã\81©ã\82\8cä½\8dé »ç¹\81ã\81«ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\81®é\80\81ä¿¡ã\82\92ã\81\99ã\82\8bã\81\8b (1 æ\97¥ã\81\82ã\81\9fã\82\8a):';
-$labels['vacationreason'] = 'メッセージ本文 (vacation reason):';
-$labels['vacationsubject'] = 'メッセージの件名';
-$labels['rulestop'] = 'ルール評価の停止';
+$labels['recipient'] = 'å®\9bå\85\88';
+$labels['vacationaddresses'] = '電子メールの宛先の(コンマ区切った)追加のリスト:';
+$labels['vacationdays'] = 'ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82\92(1æ\97¥ã\81«)é\80\81ä¿¡ã\81\99ã\82\8b頻度:';
+$labels['vacationreason'] = 'メッセージ本体(休暇の理由):';
+$labels['vacationsubject'] = 'メッセージの件名:';
+$labels['rulestop'] = 'ルールの評価を停止';
 $labels['enable'] = '有効/無効';
-$labels['filterset'] = 'フィルター セット';
+$labels['filterset'] = 'フィルターセット';
 $labels['filtersets'] = 'フィルターセット';
-$labels['filtersetadd'] = 'フィルター セットの追加';
-$labels['filtersetdel'] = 'ç\8f¾å\9c¨ã\81®ã\83«ã\83¼ã\83«ã\82»ã\83\83ã\83\88 ã\81®削除';
-$labels['filtersetact'] = '現在のフィルター セットを有効にする';
-$labels['filtersetdeact'] = '現在のフィルター セットを無効にする';
+$labels['filtersetadd'] = 'フィルターセットを追加';
+$labels['filtersetdel'] = 'ç\8f¾å\9c¨ã\81®ã\83\95ã\82£ã\83«ã\82¿ã\83¼ã\82»ã\83\83ã\83\88ã\82\92削除';
+$labels['filtersetact'] = '現在のフィルター セットを有効';
+$labels['filtersetdeact'] = '現在のフィルター セットを無効';
 $labels['filterdef'] = 'フィルターの定義';
-$labels['filtersetname'] = 'フィルター セットの名前';
-$labels['newfilterset'] = '新規フィルター セット';
+$labels['filtersetname'] = 'フィルターセットの名前';
+$labels['newfilterset'] = '新しいフィルターセット';
 $labels['active'] = '有効';
 $labels['none'] = 'なし';
 $labels['fromset'] = 'セットから';
@@ -77,24 +76,24 @@ $labels['countisgreaterthan'] = 'より大きい回数';
 $labels['countisgreaterthanequal'] = '以上の回数';
 $labels['countislessthan'] = '未満の回数';
 $labels['countislessthanequal'] = '以下の回数';
-$labels['countequals'] = '一致する回数';
-$labels['countnotequals'] = '一致しない回数';
+$labels['countequals'] = '次と等しい回数';
+$labels['countnotequals'] = '次と等しくない回数';
 $labels['valueisgreaterthan'] = 'より大きい値';
 $labels['valueisgreaterthanequal'] = '以上の値';
 $labels['valueislessthan'] = '未満の値';
 $labels['valueislessthanequal'] = '以下の値';
-$labels['valueequals'] = '一致する値';
-$labels['valuenotequals'] = '一致しない値';
-$labels['setflags'] = 'メッセージにフラグを設定する';
-$labels['addflags'] = 'ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\81«ã\83\95ã\83©ã\82°ã\81®追加';
-$labels['removeflags'] = 'ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\81\8bã\82\89ã\83\95ã\83©ã\82°ã\81®削除';
+$labels['valueequals'] = '次と等しい値';
+$labels['valuenotequals'] = '次と等しくない値';
+$labels['setflags'] = 'メッセージにフラグを設定';
+$labels['addflags'] = 'ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\81«ã\83\95ã\83©ã\82°ã\82\92追加';
+$labels['removeflags'] = 'ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\81\8bã\82\89ã\83\95ã\83©ã\82°ã\82\92削除';
 $labels['flagread'] = '既読';
 $labels['flagdeleted'] = '削除済み';
 $labels['flaganswered'] = '返信済み';
-$labels['flagflagged'] = 'フラグあり';
+$labels['flagflagged'] = 'フラグ付き';
 $labels['flagdraft'] = '下書き';
-$labels['filtercreate'] = 'ã\83\95ã\82£ã\83«ã\82¿ã\83¼ã\81®作成';
-$labels['usedata'] = 'フィルターで次のデータを使';
+$labels['filtercreate'] = 'ã\83\95ã\82£ã\83«ã\82¿ã\83¼ã\82\92作成';
+$labels['usedata'] = 'フィルターで次のデータを使';
 $labels['nextstep'] = '次のステップ';
 $labels['...'] = '...';
 $labels['advancedopts'] = '高度なオプション';
@@ -103,35 +102,48 @@ $labels['address'] = 'メールアドレス';
 $labels['envelope'] = 'エンベロープ';
 $labels['modifier'] = '修正:';
 $labels['text'] = 'テキスト';
-$labels['undecoded'] = '未デコード (生の状態)';
+$labels['undecoded'] = '未デコード(そのまま)';
+$labels['contenttype'] = 'Content Type';
 $labels['modtype'] = '種類:';
 $labels['allparts'] = 'すべて';
 $labels['domain'] = 'ドメイン';
-$labels['localpart'] = 'ローカル パート(メールアドレスで@の左)';
+$labels['localpart'] = 'ローカルパート';
 $labels['user'] = 'ユーザー';
 $labels['detail'] = '詳細';
+$labels['comparator'] = '比較器:';
 $labels['default'] = '初期値';
-$labels['asciicasemap'] = '英大小文字の同一視(Aとaが同じ)';
-$labels['asciinumeric'] = '数値 (半角数値)';
-$labels['filterunknownerror'] = '不明なサーバーのエラーです';
-$labels['filterconnerror'] = 'managesieve サーバーに接続できません。';
+$labels['octet'] = '厳密(オクテット)';
+$labels['asciicasemap'] = '大文字小文字を区別しない(ascii-casemap)';
+$labels['asciinumeric'] = '数値(ascii-numeric)';
+$labels['filterunknownerror'] = '不明なサーバーのエラーです。';
+$labels['filterconnerror'] = 'サーバに接続できません。';
 $labels['filterdeleteerror'] = 'フィルターを削除できませんでした。サーバーでエラーが発生しました。';
-$labels['filterdeleted'] = 'ã\83\95ã\82£ã\83«ã\82¿ã\83¼ã\81®å\89\8aé\99¤ã\81«æ\88\90å\8a\9fしました。';
-$labels['filtersaved'] = 'ã\83\95ã\82£ã\83«ã\82¿ã\83¼ã\81®ä¿\9då­\98ã\81«æ\88\90å\8a\9fしました。';
-$labels['filtersaveerror'] = 'ã\83\95ã\82£ã\83«ã\82¿ã\83¼ã\81®ä¿\9då­\98ã\81«å¤±æ\95\97ã\81\97ã\81¾した。サーバーでエラーが発生しました。';
+$labels['filterdeleted'] = 'ã\83\95ã\82£ã\83«ã\82¿ã\83¼ã\82\92å\89\8aé\99¤しました。';
+$labels['filtersaved'] = 'ã\83\95ã\82£ã\83«ã\82¿ã\83¼ã\82\92ä¿\9då­\98しました。';
+$labels['filtersaveerror'] = 'ã\83\95ã\82£ã\83«ã\82¿ã\83¼ã\81®ä¿\9då­\98ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§した。サーバーでエラーが発生しました。';
 $labels['filterdeleteconfirm'] = '本当に選択したフィルターを削除しますか?';
 $labels['ruledeleteconfirm'] = '本当に選択したルールを削除しますか?';
 $labels['actiondeleteconfirm'] = '本当に選択した操作を削除しますか?';
-$labels['forbiddenchars'] = '項目に禁止文字があります。';
-$labels['cannotbeempty'] = '空にできませんでした';
-$labels['setactivateerror'] = '選択したフィルター セットの有効化に失敗しました。サーバーでエラーが発生しました。';
-$labels['setdeactivateerror'] = '選択したフィルター セットの無効化に失敗しました。サーバーでエラーが発生しました。';
-$labels['setdeleteerror'] = '選択したフィルター セットの削除に失敗しました。サーバーでエラーが発生しました。';
-$labels['setactivated'] = 'フィルターセットの有効化に成功しました。';
-$labels['setdeactivated'] = 'フィルターセットの無効化に成功しました。';
-$labels['setdeleted'] = 'フィルターセットの削除に成功しました。';
-$labels['setdeleteconfirm'] = '本当に選択したフィルター セットを削除しますか?';
-$labels['setcreateerror'] = 'フィルター セットの作成に失敗しました。サーバーでエラーが発生しました。';
-$labels['setcreated'] = 'フィルター セットの作成に成功しました。';
-$labels['nametoolong'] = 'フィルター セットの作成に失敗しました。名前が長すぎます。';
+$labels['forbiddenchars'] = '項目に禁止している文字が含まれています。';
+$labels['cannotbeempty'] = '項目は空欄にできません。';
+$labels['ruleexist'] = '指定した名前のフィルターが既に存在します。';
+$labels['setactivateerror'] = '選択したフィルターセットを有効にできませんでした。サーバーでエラーが発生しました。';
+$labels['setdeactivateerror'] = '選択したフィルターセットを無効にできませんでした。サーバーでエラーが発生しました。';
+$labels['setdeleteerror'] = '選択したフィルターセットを削除できませんでした。サーバーでエラーが発生しました。';
+$labels['setactivated'] = 'フィルターセットを有効にしました。';
+$labels['setdeactivated'] = 'フィルターセットを無効にしました。';
+$labels['setdeleted'] = 'フィルターセットを削除しました。';
+$labels['setdeleteconfirm'] = '本当に選択したフィルターセットを削除しますか?';
+$labels['setcreateerror'] = 'フィルターセットを作成できませんでした。サーバーでエラーが発生しました。';
+$labels['setcreated'] = 'フィルターセットを作成しました。';
+$labels['activateerror'] = '選択したフィルターを有効にできませんでした。サーバーでエラーが発生しました。';
+$labels['deactivateerror'] = '選択したフィルターを無効にできませんでした。サーバーでエラーが発生しました。';
+$labels['deactivated'] = 'フィルターを無効にしました。';
+$labels['activated'] = 'フィルターを有効にしました。';
+$labels['moved'] = 'フィルターを移動しました。';
+$labels['moveerror'] = '選択したフィルターを移動できませんでした。サーバーでエラーが発生しました。';
+$labels['nametoolong'] = '名前が長すぎます。';
+$labels['namereserved'] = '予約されている名前です。';
+$labels['setexist'] = 'フィルターセットが既に存在します。';
+$labels['nodata'] = '少なくとも1つの場所を選択しなければなりません!';
 
diff --git a/plugins/managesieve/localization/ko_KR.inc b/plugins/managesieve/localization/ko_KR.inc
new file mode 100644 (file)
index 0000000..8a20a17
--- /dev/null
@@ -0,0 +1,131 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ko_KR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kim, Woohyun <woohyun.kim@gmail.com>                          |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['filters'] = '필터';
+$labels['managefilters'] = '수신 메일 필터 관리';
+$labels['filtername'] = '필터 이름';
+$labels['newfilter'] = '새 필터';
+$labels['filteradd'] = '필터 추가';
+$labels['filterdel'] = '필터 삭제';
+$labels['moveup'] = '위로 이동';
+$labels['movedown'] = '아래로 이동';
+$labels['filterallof'] = '다음에 오는 규칙들 전부와 일치';
+$labels['filteranyof'] = '다음에 오는 규칙들 중 어떠한 것 이라도 일치';
+$labels['filterany'] = '모든 메시지';
+$labels['filtercontains'] = '포함합니다';
+$labels['filternotcontains'] = '포함하지 않습니다';
+$labels['filteris'] = '와 같습니다';
+$labels['filterisnot'] = '와 같지 않습니다';
+$labels['filterexists'] = '존재합니다';
+$labels['filternotexists'] = '존재하지 않습니다';
+$labels['filtermatches'] = '표현식과 일치합니다';
+$labels['filternotmatches'] = '표현식과 일치하지 않습니다';
+$labels['filterregex'] = '정규표현식과 일치합니다';
+$labels['filternotregex'] = '정규 표현식과 일치하지 않습니다';
+$labels['addrule'] = '규칙 더하기';
+$labels['delrule'] = '규칙 삭제';
+$labels['messagemoveto'] = '메시지 이동';
+$labels['messageredirect'] = '메시지를 Redirect';
+$labels['messagecopyto'] = '메시지를 복사';
+$labels['messagesendcopy'] = '메시지의 복사본 보내기';
+$labels['messagereply'] = '메시지에 회신하기';
+$labels['messagedelete'] = '메시지 삭제';
+$labels['add'] = '추가';
+$labels['del'] = '삭제';
+$labels['sender'] = '보낸 사람';
+$labels['recipient'] = '수신자';
+$labels['vacationaddresses'] = '나의 추가 e-mail 주소(들) (콤마로 구분 됨):';
+$labels['vacationreason'] = '메시지 본문 (휴가 사유):';
+$labels['vacationsubject'] = '메시지 제목:';
+$labels['rulestop'] = '규칙의 실행을 멈춤';
+$labels['enable'] = '사용/사용안함';
+$labels['filterset'] = '필터 묶음';
+$labels['filtersets'] = '필터 묶음';
+$labels['filtersetadd'] = '필터 묶음 추가';
+$labels['filtersetdel'] = '현재 필터 묶음을 삭제';
+$labels['filtersetact'] = '현재 필터 세트를 활성화';
+$labels['filtersetdeact'] = '현재 필터 세트를 비활성화';
+$labels['filterdef'] = '필터 정의';
+$labels['filtersetname'] = '필터 세트 이름';
+$labels['newfilterset'] = '새로운 필터 세트';
+$labels['active'] = '활성';
+$labels['none'] = '없음';
+$labels['fromset'] = '묶음으로 부터';
+$labels['fromfile'] = '파일로 부터';
+$labels['filterdisabled'] = '필터 사용하지 않음';
+$labels['countisgreaterthan'] = '갯수가 큼';
+$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'] = '메시지에서 플래그를 제거';
+$labels['flagread'] = '읽음';
+$labels['flagdeleted'] = '삭제됨';
+$labels['flaganswered'] = '응답함';
+$labels['flagflagged'] = '표시함';
+$labels['flagdraft'] = '임시 보관함';
+$labels['filtercreate'] = '필터 생성';
+$labels['usedata'] = '필터에서 다음에 오는 데이터를 사용';
+$labels['nextstep'] = '다음 단계';
+$labels['...'] = '...';
+$labels['advancedopts'] = '상세 설정';
+$labels['body'] = '본문';
+$labels['address'] = '주소';
+$labels['text'] = '텍스트';
+$labels['domain'] = '도메인';
+$labels['user'] = '사용자';
+$labels['default'] = '기본값';
+$labels['filterunknownerror'] = '알수 없는 서버 에러.';
+$labels['filterconnerror'] = '서버에 연결할 수 없습니다.';
+$labels['filterdeleteerror'] = '필터를 삭제할 수 없습니다. 서버 에러 발생 함.';
+$labels['filterdeleted'] = '필터를 성공적으로 삭제 함.';
+$labels['filtersaved'] = '필터를 성공적으로 저장 함.';
+$labels['filtersaveerror'] = '필터를 저장할 수 없음. 서버 에러 발생 함.';
+$labels['filterdeleteconfirm'] = '정말로 선택한 필터의 삭제를 원하십니까?';
+$labels['ruledeleteconfirm'] = '선택한 규칙을 삭제하고자 하는 것이 확실합니까?';
+$labels['actiondeleteconfirm'] = '선택한 동작을 삭제하고자 하는 것이 확실합니까?';
+$labels['forbiddenchars'] = '필드에 금지된 문자가 있음.';
+$labels['cannotbeempty'] = '필드는 비어있을 수 없음.';
+$labels['ruleexist'] = '지정한 이름의 필터가 이미 존재 함.';
+$labels['setactivateerror'] = '선택한 필터 묶음을 활성화 할 수 없음. 서버 에러 발생 함.';
+$labels['setdeactivateerror'] = '선택한 필터 묶음을 비활성화 할 수 없음. 서버 에러 발생 함.';
+$labels['setdeleteerror'] = '선택한 필터 묶음을 삭제할 수 없음. 서버 에러 발생 함.';
+$labels['setactivated'] = '필터 묶음을 성공적으로 활성화 하였음.';
+$labels['setdeactivated'] = '필터 묶음을 성공적으로 비활성화 하였음.';
+$labels['setdeleted'] = '필터 묶음을 성공적으로 삭제 함.';
+$labels['setdeleteconfirm'] = '선택한 필터 묶음을 지우고자 하는 것이 확실합니까?';
+$labels['setcreateerror'] = '필터 묶음을 생성할 수 없음. 서버 에러 발생 함.';
+$labels['setcreated'] = '필터 묶음을 성공적으로 생성 함.';
+$labels['activateerror'] = '선택한 필터(들)을 동작하게 할 수 없음. 서버 에러 발생 함.';
+$labels['deactivateerror'] = '선택한 필터(들)을 동작하지 않게 할 수 없음. 서버 에러 발생 함.';
+$labels['deactivated'] = '필터(들)을 동작하지 않게 하는데 성공하였음.';
+$labels['activated'] = '필터(들)을 동작하게 하는데 성공하였음.';
+$labels['moved'] = '필터를 이동하는 데 성공하였음.';
+$labels['moveerror'] = '선택한 필터를 이동할 수 없음. 서버 에러 발생 함.';
+$labels['nametoolong'] = '이름이 너무 김.';
+$labels['namereserved'] = '예약된 이름.';
+$labels['setexist'] = '묶음이 이미 존재 함.';
+$labels['nodata'] = '적어도 하나의 위치가 선택되어야 함!';
+
diff --git a/plugins/managesieve/localization/lt_LT.inc b/plugins/managesieve/localization/lt_LT.inc
new file mode 100644 (file)
index 0000000..5fe6dc0
--- /dev/null
@@ -0,0 +1,118 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/lt_LT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: tomas <tomas@saulessmugis.lt>                                 |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['filters'] = 'Filtrai';
+$labels['managefilters'] = 'Tvarkyti gaunamų laiškų filtrus';
+$labels['filtername'] = 'Filtro pavadinimas';
+$labels['newfilter'] = 'Naujas filtras';
+$labels['filteradd'] = 'Pridėti filtrą';
+$labels['filterdel'] = 'Pašalinti filtrą';
+$labels['moveup'] = 'Pakelti aukštyn';
+$labels['movedown'] = 'Nuleisti žemyn';
+$labels['filterallof'] = 'atitinka visas šias taisykles';
+$labels['filteranyof'] = 'atitinka bet kurią šių taisyklių';
+$labels['filterany'] = 'visi laiškai';
+$labels['filtercontains'] = 'savyje turi';
+$labels['filternotcontains'] = 'savyje neturi';
+$labels['filteris'] = 'yra lygus';
+$labels['filterisnot'] = 'nėra lygus';
+$labels['filterexists'] = 'egzistuoja';
+$labels['filternotexists'] = 'neegzistuoja';
+$labels['filtermatches'] = 'atitinka šabloną';
+$labels['filternotmatches'] = 'neatitinka šablono';
+$labels['filterregex'] = 'atitinka reguliarųjį reiškinį';
+$labels['filternotregex'] = 'neatitinka reguliariojo reiškinio';
+$labels['filterunder'] = 'nesiekia';
+$labels['filterover'] = 'viršija';
+$labels['addrule'] = 'Pridėti taisyklę';
+$labels['delrule'] = 'Pašalinti taisyklę';
+$labels['messagemoveto'] = 'Perkelti laišką į';
+$labels['messageredirect'] = 'Peradresuoti laišką';
+$labels['messagecopyto'] = 'Kopijuoti laišką į';
+$labels['messagesendcopy'] = 'Nusiųsti laiško kopiją';
+$labels['messagereply'] = 'Atsakyti laišku';
+$labels['messagedelete'] = 'Pašalinti laišką';
+$labels['messagesrules'] = 'Gaunamiems laiškams:';
+$labels['messagesactions'] = '…vykdyti šiuos veiksmus:';
+$labels['add'] = 'Pridėti';
+$labels['del'] = 'Pašalinti';
+$labels['sender'] = 'Siuntėjas';
+$labels['recipient'] = 'Gavėjas';
+$labels['vacationaddresses'] = 'Papildomas gavėjų adresų sąrašas (skirti kableliais):';
+$labels['vacationdays'] = 'Kaip dažnai išsiųsti laiškus (dienomis):';
+$labels['vacationreason'] = 'Laiško tekstas';
+$labels['vacationsubject'] = 'Laiško tema:';
+$labels['rulestop'] = 'Nutraukti taisyklių vykdymą';
+$labels['enable'] = 'Įjungti / išjungti';
+$labels['filterset'] = 'Filtrų rinkinys';
+$labels['filtersets'] = 'Filtrų rinkiniai';
+$labels['filtersetadd'] = 'Pridėti filtrų rinkinį';
+$labels['filtersetdel'] = 'Pašalinti šį filtrų rinkinį';
+$labels['filtersetact'] = 'Įgalinti šį filtrų rinkinį';
+$labels['filtersetdeact'] = 'Išjungti šį filtrų rinkinį';
+$labels['filterdef'] = 'Filtro aprašas';
+$labels['filtersetname'] = 'Filtrų rinkinio pavadinimas';
+$labels['newfilterset'] = 'Naujas filtrų rinkinys';
+$labels['active'] = 'aktyvus';
+$labels['none'] = 'joks';
+$labels['fromset'] = 'iš rinkinio';
+$labels['fromfile'] = 'iš failo';
+$labels['filterdisabled'] = 'Filtras išjungtas';
+$labels['countisgreaterthan'] = 'kiekis didesnis nei';
+$labels['countisgreaterthanequal'] = 'kiekis didesnis arba lygus';
+$labels['countislessthan'] = 'kiekis mažesnis nei';
+$labels['countislessthanequal'] = 'kiekis mažesnis arba lygus';
+$labels['countequals'] = 'kiekis lygus';
+$labels['countnotequals'] = 'kiekis nelygus';
+$labels['valueisgreaterthan'] = 'reikšmė didesnė nei';
+$labels['valueisgreaterthanequal'] = 'reikšmė didesnė arba lygi';
+$labels['valueislessthan'] = 'reikšmė mažesnė nei';
+$labels['valueislessthanequal'] = 'reikšmė mažesnė arba lygi';
+$labels['valueequals'] = 'reikšmė lygi';
+$labels['valuenotequals'] = 'reikšmė nelygi';
+$labels['setflags'] = 'Nustatyti laiško požymius';
+$labels['addflags'] = 'Pridėti laiško požymius';
+$labels['removeflags'] = 'Pašalinti laiško požymius';
+$labels['flagread'] = 'Skaitytas';
+$labels['flagdeleted'] = 'Pašalintas';
+$labels['flaganswered'] = 'Atsakytas';
+$labels['flagflagged'] = 'Pažymėtas gairele';
+$labels['flagdraft'] = 'Juodraštis';
+$labels['filtercreate'] = 'Kurti filtrą';
+$labels['usedata'] = 'Filtrui naudoti šiuos duomenis:';
+$labels['nextstep'] = 'Kitas žingsnis';
+$labels['...'] = '…';
+$labels['advancedopts'] = 'Papildomi nustatymai';
+$labels['body'] = 'Laiško tekstas';
+$labels['address'] = 'adresas';
+$labels['envelope'] = 'vokas';
+$labels['modifier'] = 'midifikatorius:';
+$labels['text'] = 'tekstas';
+$labels['undecoded'] = 'neiškoduotas (pirminis) tekstas';
+$labels['contenttype'] = 'turinio tipas';
+$labels['modtype'] = 'tipas:';
+$labels['allparts'] = 'visi';
+$labels['domain'] = 'sritis';
+$labels['localpart'] = 'vietinė adreso dalis';
+$labels['user'] = 'naudotojas';
+$labels['detail'] = 'detalė';
+$labels['comparator'] = 'palyginimo algoritmas:';
+$labels['default'] = 'numatytasis';
+$labels['octet'] = 'griežtas („octet“)';
+$labels['asciicasemap'] = 'nepaisantis raidžių registro („ascii-casemap“)';
+$labels['asciinumeric'] = 'skaitinis („ascii-numeric“)';
+
index dea30e582e80e32ecc31402ba5c369152e565737..98804d08e5520363b951b3ea029cff5ac6baf7c6 100644 (file)
@@ -11,7 +11,7 @@
  +-----------------------------------------------------------------------+
  | Author: Ivars Strazdiņš <Unknown>                                   |
  +-----------------------------------------------------------------------+
- @version $Id: lv_LV.inc 5741 2012-01-08 16:20:12Z thomasb $
+ @version $Id$
 */
 
 $labels = array();
diff --git a/plugins/managesieve/localization/ml_IN.inc b/plugins/managesieve/localization/ml_IN.inc
new file mode 100644 (file)
index 0000000..012278e
--- /dev/null
@@ -0,0 +1,149 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ml_IN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['filters'] = 'അരിപ്പകള്‍';
+$labels['managefilters'] = 'അകത്തോട്ടുള്ള ഇമെയില്‍ അരിപ്പകള്‍ ക്രമീകരിക്കുക';
+$labels['filtername'] = 'അരിപ്പയുടെ പേര്';
+$labels['newfilter'] = 'പുതിയ അരിപ്പ';
+$labels['filteradd'] = 'അരിപ്പ ചേര്‍ക്കുക';
+$labels['filterdel'] = 'അരിപ്പ നീക്കംചെയ്യുക';
+$labels['moveup'] = 'മുകളിലേക്ക് നീക്കുക';
+$labels['movedown'] = 'താഴേക്ക് നീക്കുക';
+$labels['filterallof'] = 'കീഴ്പറഞ്ഞ എല്ലാ നിയമങ്ങളും പാലിക്കുന്നവ';
+$labels['filteranyof'] = 'കീഴ്പറഞ്ഞ ഏതെങ്കിലും നിയമം പാലിക്കുന്നവ';
+$labels['filterany'] = 'എല്ലാ സന്ദേശങ്ങളും';
+$labels['filtercontains'] = 'അടങ്ങുന്നത്';
+$labels['filternotcontains'] = 'ല്‍ അടങ്ങുന്നില്ല';
+$labels['filteris'] = 'ന് തുല്യം';
+$labels['filterisnot'] = 'ന് തുല്യമല്ല';
+$labels['filterexists'] = 'നിലവിലുണ്ട്';
+$labels['filternotexists'] = 'നിലവിലില്ല';
+$labels['filtermatches'] = 'എക്സ്പ്രഷന്‍ ചേരുന്നുണ്ട്';
+$labels['filternotmatches'] = 'എക്സ്പ്രഷന്‍ ചേരുന്നില്ല';
+$labels['filterregex'] = 'റെഗുലര്‍ എക്സ്പ്രഷന്‍ ചേരുന്നുണ്ട്';
+$labels['filternotregex'] = 'റെഗുലര്‍ എക്സ്പ്രഷന്‍ ചേരുന്നില്ല';
+$labels['filterunder'] = 'കീഴില്‍';
+$labels['filterover'] = 'മുകളില്‍';
+$labels['addrule'] = 'നിയമം ചേര്‍ക്കുക';
+$labels['delrule'] = 'നിയമം നീക്കം ചെയ്യുക';
+$labels['messagemoveto'] = 'സന്ദേശം നിക്കു :';
+$labels['messageredirect'] = 'സന്ദേശം മാറ്റിവിടു :';
+$labels['messagecopyto'] = 'സന്ദേശം പകര്‍ത്തു :';
+$labels['messagesendcopy'] = 'സന്ദേശത്തിന്റെ പകര്‍പ്പ് അയക്കു :';
+$labels['messagereply'] = 'സന്ദേശം വെച്ച് മറുപടി അയക്കു';
+$labels['messagedelete'] = 'സന്ദേശം മായ്ക്കു';
+$labels['messagediscard'] = 'സന്ദേശത്തോടെ നിരാകരിക്കുക';
+$labels['messagesrules'] = 'ആഗമന സന്ദേശങ്ങള്‍ക്ക്:';
+$labels['messagesactions'] = '...ഈ പ്രവര്‍ത്തനങ്ങള്‍ ചെയ്യുക:';
+$labels['add'] = 'ചേര്‍ക്കു';
+$labels['del'] = 'നീക്കം ചെയ്യുക';
+$labels['sender'] = 'അയചയാള്‍';
+$labels['recipient'] = 'സ്വീകര്‍ത്താവ്';
+$labels['vacationaddresses'] = 'സ്വീകര്‍ത്താവിന്റെ ഇമെയില്‍ വിലാസങ്ങളുടെ അധികമുള്ള പട്ടിക (കോമയിട്ട് തിരിച്ച)';
+$labels['vacationdays'] = 'എത്ര ഭിവസം കൂടുമ്പോള്‍ സന്ദേശം അയക്കണം:';
+$labels['vacationreason'] = 'സന്ദേശത്തിന്റെ ഉള്ളടക്കം (അവധിയുടെ കാരണം):';
+$labels['vacationsubject'] = 'സന്ദേശത്തിന്റെ വിഷയം:';
+$labels['rulestop'] = 'നിയമങ്ങള്‍ വിലയിരുത്തുന്നത് നിര്‍ത്തുക';
+$labels['enable'] = 'പ്രവര്‍ത്തനസജ്ജം/രഹിതം';
+$labels['filterset'] = 'അരിപ്പകളുടെ കൂട്ടം';
+$labels['filtersets'] = 'അരിപ്പകളുടെ കൂട്ടങ്ങള്‍';
+$labels['filtersetadd'] = 'അരിപ്പകളുടെ കൂട്ടം ചേര്‍ക്കുക';
+$labels['filtersetdel'] = 'ഇപ്പോഴത്തെ അരിപ്പകളുടെ കൂട്ടം മായ്ക്കുക';
+$labels['filtersetact'] = 'ഇപ്പോഴത്തെ അരിപ്പകളുടെ കൂട്ടം പ്രവര്‍ത്തിപ്പിക്കുക';
+$labels['filtersetdeact'] = 'ഇപ്പോഴത്തെ അരിപ്പകളുടെ കൂട്ടം പ്രവര്‍ത്തനം അവസാനിപ്പിക്കുക';
+$labels['filterdef'] = 'അരിപ്പയുടെ നിര്‍വ്വചനം';
+$labels['filtersetname'] = 'അരിപ്പകളുടെ കൂട്ടത്തിന്റെ പേര്';
+$labels['newfilterset'] = 'പുതിയ അരിപ്പയുട കൂട്ടം';
+$labels['active'] = 'സജീവം';
+$labels['none'] = 'ഒന്നുമില്ല';
+$labels['fromset'] = 'സെറ്റില്‍ നിന്ന്';
+$labels['fromfile'] = 'ഫയലില്‍ നിന്ന്';
+$labels['filterdisabled'] = 'അരിപ്പ പ്രവര്‍ത്തനരഹിതമാക്കി';
+$labels['countisgreaterthan'] = 'എണ്ണം ഇതിനെക്കാള്‍ കുടുതല്‍';
+$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'] = 'സന്ദേശത്തില്‍ നിന്നും അടയാളം മാറ്റുക';
+$labels['flagread'] = 'വായിച്ചവ';
+$labels['flagdeleted'] = 'നീക്കം ചെയ്തവ';
+$labels['flaganswered'] = 'മറുപടി നല്‍കിയവ';
+$labels['flagflagged'] = 'അടയാളപ്പെടുത്തിയവ';
+$labels['flagdraft'] = 'കരട്';
+$labels['filtercreate'] = 'അരിപ്പ ഉണ്ടാക്കുക';
+$labels['usedata'] = 'ഈ വിവരങ്ങള്‍ അരിപ്പയില്‍ ഉപയോഗിക്കുക:';
+$labels['nextstep'] = 'അടുത്ത പടി';
+$labels['...'] = '...';
+$labels['advancedopts'] = 'വിപുലീക്രിതമായ ക്രമീകരണങ്ങള്‍';
+$labels['body'] = 'ഉള്ളടക്കം';
+$labels['address'] = 'മേല്‍വിലാസം';
+$labels['envelope'] = 'എന്‍വലപ്പ്';
+$labels['modifier'] = 'മോഡിഫയര്‍:';
+$labels['text'] = 'വാചകം';
+$labels['undecoded'] = 'ഡീക്കോഡ് ചെയ്യാത്തത് (റോ)';
+$labels['contenttype'] = 'ഉള്ളടക്കത്തിന്റെ തരം';
+$labels['modtype'] = 'തരം:';
+$labels['allparts'] = 'എല്ലാം';
+$labels['domain'] = 'ഡൊമൈന്‍';
+$labels['localpart'] = 'പ്രാദേശിക ഭാഗം';
+$labels['user'] = 'ഉപയോക്താവു്';
+$labels['detail'] = 'വിശദാംശം';
+$labels['comparator'] = 'താരതമ്യകന്‍:';
+$labels['default'] = 'സഹജമായ';
+$labels['octet'] = 'കര്‍ശനം (octet)';
+$labels['asciicasemap'] = 'വലിയ-ചെറിയക്ഷരങ്ങള്‍ തമ്മില്‍ വ്യത്യാസമില്ലാത്ത (ascii-casemap)';
+$labels['asciinumeric'] = 'സംഖ്യകള്‍ (ascii-numeric)';
+$labels['filterunknownerror'] = 'അജ്ഞാതമായ സെര്‍വ്വര്‍ പിശക്.';
+$labels['filterconnerror'] = 'സെര്‍വ്വറുമായി ബന്ധപ്പെടാന്‍ സാധിക്കുന്നില്ല.';
+$labels['filterdeleteerror'] = 'അരിപ്പ മായ്ക്കാന്‍ സാധിച്ചില്ല. സേവകനില്‍ കുഴപ്പം.';
+$labels['filterdeleted'] = 'അരിപ്പ വിജകരമായി മായ്ച്ചു.';
+$labels['filtersaved'] = 'അരിപ്പ വിജകരമായി സൂക്ഷിച്ചു.';
+$labels['filtersaveerror'] = 'അരിപ്പ സൂക്ഷിക്കാന്‍ സാധിച്ചില്ല. സേവകനില്‍ കുഴപ്പം.';
+$labels['filterdeleteconfirm'] = 'തെരഞ്ഞെടുത്ത അരിപ്പ നീക്കം ചെയ്യണമെന്ന് ഉറപ്പാണോ?';
+$labels['ruledeleteconfirm'] = 'തെരഞ്ഞെടുത്ത നിയമം നീക്കം ചെയ്യണമെന്ന് ഉറപ്പാണോ?';
+$labels['actiondeleteconfirm'] = 'തെരഞ്ഞെടുത്ത പ്രവര്‍ത്തി നീക്കം ചെയ്യണമെന്ന് ഉറപ്പാണോ?';
+$labels['forbiddenchars'] = 'ഫില്‍ഡില്‍ സാധുവല്ലാത്ത അക്ഷരങ്ങള്‍.';
+$labels['cannotbeempty'] = 'ഫീല്‍ഡ് ശൂന്യമാകാന്‍ പാടില്ല.';
+$labels['ruleexist'] = 'ഈ പേരിലുള്ള അരിപ്പ ഇപ്പോള്‍ തന്നെ ഉണ്ട്.';
+$labels['setactivateerror'] = 'അരിപ്പയുടെ കൂട്ടത്തെ പ്രവര്‍ത്തനസജ്ജമാക്കാന്‍ സാധിച്ചില്ല. സേവകനില്‍ കുഴപ്പം.';
+$labels['setdeactivateerror'] = 'അരിപ്പയുടെ കൂട്ടത്തെ പ്രവര്‍ത്തനരഹിതമാക്കാന്‍ സാധിച്ചില്ല. സേവകനില്‍ കുഴപ്പം.';
+$labels['setdeleteerror'] = 'തെരഞ്ഞെടുത്ത അരിപ്പയുടെ കൂട്ടത്തെ മായ്ക്കാന്‍ സാധിച്ചില്ല. സേവകനില്‍ കുഴപ്പം.';
+$labels['setactivated'] = 'അരിപ്പകളുടെ കൂട്ടത്തെ വിജയകരമായി പ്രവര്‍ത്തനസജ്ജമാക്കി.';
+$labels['setdeactivated'] = 'അരിപ്പകളുടെ കൂട്ടത്തെ വിജയകരമായി പ്രവര്‍ത്തനരഹിതമാക്കി.';
+$labels['setdeleted'] = 'അരിപ്പകളുടെ കൂട്ടത്തെ വിജയകരമായി മായ്ച്ചു.';
+$labels['setdeleteconfirm'] = 'തെരഞ്ഞെടുത്ത അരിപ്പകളുടെ കൂട്ടത്തെ നീക്കം ചെയ്യണമെന്ന് ഉറപ്പാണോ?';
+$labels['setcreateerror'] = 'അരിപ്പയുടെ കൂട്ടത്തെ നിര്‍മ്മിക്കാന്‍ സാധിച്ചില്ല. സേവകനില്‍ കുഴപ്പം.';
+$labels['setcreated'] = 'അരിപ്പകളുടെ കൂട്ടത്തെ വിജയകരമായി നിര്‍മ്മിച്ചു.';
+$labels['activateerror'] = 'അരിപ്പ (കള്‍) പ്രവര്‍ത്തനസജ്ജം ആക്കാന്‍ സാധിച്ചില്ല. സേവകനില്‍ കുഴപ്പം!';
+$labels['deactivateerror'] = 'അരിപ്പ (കള്‍) നിര്‍വീര്യം ആക്കാന്‍ സാധിച്ചില്ല. സേവകനില്‍ കുഴപ്പം!';
+$labels['deactivated'] = 'അരിപ്പകള്‍ നിര്‍വീര്യം ആക്കപ്പെട്ടിരിക്കുന്നു';
+$labels['activated'] = 'അരിപ്പ വിജകരമായി പ്രവര്‍ത്തനസജ്ജമാക്കി.';
+$labels['moved'] = 'അരിപ്പ വിജകരമായി മാറ്റി.';
+$labels['moveerror'] = 'തെരഞ്ഞെടുത്ത അരിപ്പ മാറ്റാന്‍ സാധിച്ചില്ല. സേവകനില്‍ കുഴപ്പം.';
+$labels['nametoolong'] = 'പേരിന് നീളം കൂടുതല്‍.';
+$labels['namereserved'] = 'നീക്കിവെച്ച വാക്ക്.';
+$labels['setexist'] = 'കൂട്ടം നേരത്തെ തന്നെ ഉണ്ട്.';
+$labels['nodata'] = 'ഒരു സ്ഥാനമെങ്കിലും തെരഞ്ഞെടുക്കണം!';
+
diff --git a/plugins/managesieve/localization/ml_ML.inc b/plugins/managesieve/localization/ml_ML.inc
new file mode 100644 (file)
index 0000000..b968f9e
--- /dev/null
@@ -0,0 +1,150 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ml_ML/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Anish A <aneesh.nl@gmail.com>                                 |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['filters'] = 'അരിപ്പകള്‍';
+$labels['managefilters'] = 'അകത്തോട്ടുള്ള ഇമെയില്‍ അരിപ്പകള്‍ ക്രമീകരിക്കുക';
+$labels['filtername'] = 'അരിപ്പയുടെ പേര്';
+$labels['newfilter'] = 'പുതിയ അരിപ്പ';
+$labels['filteradd'] = 'അരിപ്പ ചേര്‍ക്കുക';
+$labels['filterdel'] = 'അരിപ്പ നീക്കംചെയ്യുക';
+$labels['moveup'] = 'മുകളിലേക്ക് നീക്കുക';
+$labels['movedown'] = 'താഴേക്ക് നീക്കുക';
+$labels['filterallof'] = 'കീഴ്പറഞ്ഞ എല്ലാ നിയമങ്ങളും പാലിക്കുന്നവ';
+$labels['filteranyof'] = 'കീഴ്പറഞ്ഞ ഏതെങ്കിലും നിയമം പാലിക്കുന്നവ';
+$labels['filterany'] = 'എല്ലാ സന്ദേശങ്ങളും';
+$labels['filtercontains'] = 'അടങ്ങുന്നത്';
+$labels['filternotcontains'] = 'ല്‍ അടങ്ങുന്നില്ല';
+$labels['filteris'] = 'ന് തുല്യം';
+$labels['filterisnot'] = 'ന് തുല്യമല്ല';
+$labels['filterexists'] = 'നിലവിലുണ്ട്';
+$labels['filternotexists'] = 'നിലവിലില്ല';
+$labels['filtermatches'] = 'എക്സ്പ്രഷന്‍ ചേരുന്നുണ്ട്';
+$labels['filternotmatches'] = 'എക്സ്പ്രഷന്‍ ചേരുന്നില്ല';
+$labels['filterregex'] = 'റെഗുലര്‍ എക്സ്പ്രഷന്‍ ചേരുന്നുണ്ട്';
+$labels['filternotregex'] = 'റെഗുലര്‍ എക്സ്പ്രഷന്‍ ചേരുന്നില്ല';
+$labels['filterunder'] = 'കീഴില്‍';
+$labels['filterover'] = 'മുകളില്‍';
+$labels['addrule'] = 'നിയമം ചേര്‍ക്കുക';
+$labels['delrule'] = 'നിയമം നീക്കം ചെയ്യുക';
+$labels['messagemoveto'] = 'സന്ദേശം നിക്കു :';
+$labels['messageredirect'] = 'സന്ദേശം മാറ്റിവിടു :';
+$labels['messagecopyto'] = 'സന്ദേശം പകര്‍ത്തു :';
+$labels['messagesendcopy'] = 'സന്ദേശത്തിന്റെ പകര്‍പ്പ് അയക്കു :';
+$labels['messagereply'] = 'സന്ദേശം വെച്ച് മറുപടി അയക്കു';
+$labels['messagedelete'] = 'സന്ദേശം മായ്ക്കു';
+$labels['messagediscard'] = 'സന്ദേശത്തോടെ നിരാകരിക്കുക';
+$labels['messagesrules'] = 'ആഗമന സന്ദേശങ്ങള്‍ക്ക്:';
+$labels['messagesactions'] = '...ഈ പ്രവര്‍ത്തനങ്ങള്‍ ചെയ്യുക:';
+$labels['add'] = 'ചേര്‍ക്കു';
+$labels['del'] = 'നീക്കം ചെയ്യുക';
+$labels['sender'] = 'അയചയാള്‍';
+$labels['recipient'] = 'സ്വീകര്‍ത്താവ്';
+$labels['vacationaddresses'] = 'സ്വീകര്‍ത്താവിന്റെ ഇമെയില്‍ വിലാസങ്ങളുടെ അധികമുള്ള പട്ടിക (കോമയിട്ട് തിരിച്ച)';
+$labels['vacationdays'] = 'എത്ര ഭിവസം കൂടുമ്പോള്‍ സന്ദേശം അയക്കണം:';
+$labels['vacationreason'] = 'സന്ദേശത്തിന്റെ ഉള്ളടക്കം (അവധിയുടെ കാരണം):';
+$labels['vacationsubject'] = 'സന്ദേശത്തിന്റെ വിഷയം:';
+$labels['rulestop'] = 'നിയമങ്ങള്‍ വിലയിരുത്തുന്നത് നിര്‍ത്തുക';
+$labels['enable'] = 'പ്രവര്‍ത്തനസജ്ജം/രഹിതം';
+$labels['filterset'] = 'അരിപ്പകളുടെ കൂട്ടം';
+$labels['filtersets'] = 'അരിപ്പകളുടെ കൂട്ടങ്ങള്‍';
+$labels['filtersetadd'] = 'അരിപ്പകളുടെ കൂട്ടം ചേര്‍ക്കുക';
+$labels['filtersetdel'] = 'ഇപ്പോഴത്തെ അരിപ്പകളുടെ കൂട്ടം മായ്ക്കുക';
+$labels['filtersetact'] = 'ഇപ്പോഴത്തെ അരിപ്പകളുടെ കൂട്ടം പ്രവര്‍ത്തിപ്പിക്കുക';
+$labels['filtersetdeact'] = 'ഇപ്പോഴത്തെ അരിപ്പകളുടെ കൂട്ടം പ്രവര്‍ത്തനം അവസാനിപ്പിക്കുക';
+$labels['filterdef'] = 'അരിപ്പയുടെ നിര്‍വ്വചനം';
+$labels['filtersetname'] = 'അരിപ്പകളുടെ കൂട്ടത്തിന്റെ പേര്';
+$labels['newfilterset'] = 'പുതിയ അരിപ്പയുട കൂട്ടം';
+$labels['active'] = 'സജീവം';
+$labels['none'] = 'ഒന്നുമില്ല';
+$labels['fromset'] = 'സെറ്റില്‍ നിന്ന്';
+$labels['fromfile'] = 'ഫയലില്‍ നിന്ന്';
+$labels['filterdisabled'] = 'അരിപ്പ പ്രവര്‍ത്തനരഹിതമാക്കി';
+$labels['countisgreaterthan'] = 'എണ്ണം ഇതിനെക്കാള്‍ കുടുതല്‍';
+$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'] = 'സന്ദേശത്തില്‍ നിന്നും അടയാളം മാറ്റുക';
+$labels['flagread'] = 'വായിച്ചവ';
+$labels['flagdeleted'] = 'നീക്കം ചെയ്തവ';
+$labels['flaganswered'] = 'മറുപടി നല്‍കിയവ';
+$labels['flagflagged'] = 'അടയാളപ്പെടുത്തിയവ';
+$labels['flagdraft'] = 'കരട്';
+$labels['filtercreate'] = 'അരിപ്പ ഉണ്ടാക്കുക';
+$labels['usedata'] = 'ഈ വിവരങ്ങള്‍ അരിപ്പയില്‍ ഉപയോഗിക്കുക:';
+$labels['nextstep'] = 'അടുത്ത പടി';
+$labels['...'] = '...';
+$labels['advancedopts'] = 'വിപുലീക്രിതമായ ക്രമീകരണങ്ങള്‍';
+$labels['body'] = 'ഉള്ളടക്കം';
+$labels['address'] = 'മേല്‍വിലാസം';
+$labels['envelope'] = 'എന്‍വലപ്പ്';
+$labels['modifier'] = 'മോഡിഫയര്‍:';
+$labels['text'] = 'വാചകം';
+$labels['undecoded'] = 'ഡീക്കോഡ് ചെയ്യാത്തത് (റോ)';
+$labels['contenttype'] = 'ഉള്ളടക്കത്തിന്റെ തരം';
+$labels['modtype'] = 'തരം:';
+$labels['allparts'] = 'എല്ലാം';
+$labels['domain'] = 'ഡൊമൈന്‍';
+$labels['localpart'] = 'പ്രാദേശിക ഭാഗം';
+$labels['user'] = 'ഉപയോക്താവു്';
+$labels['detail'] = 'വിശദാംശം';
+$labels['comparator'] = 'താരതമ്യകന്‍:';
+$labels['default'] = 'സഹജമായ';
+$labels['octet'] = 'കര്‍ശനം (octet)';
+$labels['asciicasemap'] = 'വലിയ-ചെറിയക്ഷരങ്ങള്‍ തമ്മില്‍ വ്യത്യാസമില്ലാത്ത (ascii-casemap)';
+$labels['asciinumeric'] = 'സംഖ്യകള്‍ (ascii-numeric)';
+$labels['filterunknownerror'] = 'അജ്ഞാതമായ സെര്‍വ്വര്‍ പിശക്.';
+$labels['filterconnerror'] = 'സെര്‍വ്വറുമായി ബന്ധപ്പെടാന്‍ സാധിക്കുന്നില്ല.';
+$labels['filterdeleteerror'] = 'അരിപ്പ മായ്ക്കാന്‍ സാധിച്ചില്ല. സേവകനില്‍ കുഴപ്പം.';
+$labels['filterdeleted'] = 'അരിപ്പ വിജകരമായി മായ്ച്ചു.';
+$labels['filtersaved'] = 'അരിപ്പ വിജകരമായി സൂക്ഷിച്ചു.';
+$labels['filtersaveerror'] = 'അരിപ്പ സൂക്ഷിക്കാന്‍ സാധിച്ചില്ല. സേവകനില്‍ കുഴപ്പം.';
+$labels['filterdeleteconfirm'] = 'തെരഞ്ഞെടുത്ത അരിപ്പ നീക്കം ചെയ്യണമെന്ന് ഉറപ്പാണോ?';
+$labels['ruledeleteconfirm'] = 'തെരഞ്ഞെടുത്ത നിയമം നീക്കം ചെയ്യണമെന്ന് ഉറപ്പാണോ?';
+$labels['actiondeleteconfirm'] = 'തെരഞ്ഞെടുത്ത പ്രവര്‍ത്തി നീക്കം ചെയ്യണമെന്ന് ഉറപ്പാണോ?';
+$labels['forbiddenchars'] = 'ഫില്‍ഡില്‍ സാധുവല്ലാത്ത അക്ഷരങ്ങള്‍.';
+$labels['cannotbeempty'] = 'ഫീല്‍ഡ് ശൂന്യമാകാന്‍ പാടില്ല.';
+$labels['ruleexist'] = 'ഈ പേരിലുള്ള അരിപ്പ ഇപ്പോള്‍ തന്നെ ഉണ്ട്.';
+$labels['setactivateerror'] = 'അരിപ്പയുടെ കൂട്ടത്തെ പ്രവര്‍ത്തനസജ്ജമാക്കാന്‍ സാധിച്ചില്ല. സേവകനില്‍ കുഴപ്പം.';
+$labels['setdeactivateerror'] = 'അരിപ്പയുടെ കൂട്ടത്തെ പ്രവര്‍ത്തനരഹിതമാക്കാന്‍ സാധിച്ചില്ല. സേവകനില്‍ കുഴപ്പം.';
+$labels['setdeleteerror'] = 'തെരഞ്ഞെടുത്ത അരിപ്പയുടെ കൂട്ടത്തെ മായ്ക്കാന്‍ സാധിച്ചില്ല. സേവകനില്‍ കുഴപ്പം.';
+$labels['setactivated'] = 'അരിപ്പകളുടെ കൂട്ടത്തെ വിജയകരമായി പ്രവര്‍ത്തനസജ്ജമാക്കി.';
+$labels['setdeactivated'] = 'അരിപ്പകളുടെ കൂട്ടത്തെ വിജയകരമായി പ്രവര്‍ത്തനരഹിതമാക്കി.';
+$labels['setdeleted'] = 'അരിപ്പകളുടെ കൂട്ടത്തെ വിജയകരമായി മായ്ച്ചു.';
+$labels['setdeleteconfirm'] = 'തെരഞ്ഞെടുത്ത അരിപ്പകളുടെ കൂട്ടത്തെ നീക്കം ചെയ്യണമെന്ന് ഉറപ്പാണോ?';
+$labels['setcreateerror'] = 'അരിപ്പയുടെ കൂട്ടത്തെ നിര്‍മ്മിക്കാന്‍ സാധിച്ചില്ല. സേവകനില്‍ കുഴപ്പം.';
+$labels['setcreated'] = 'അരിപ്പകളുടെ കൂട്ടത്തെ വിജയകരമായി നിര്‍മ്മിച്ചു.';
+$labels['activateerror'] = 'അരിപ്പ (കള്‍) പ്രവര്‍ത്തനസജ്ജം ആക്കാന്‍ സാധിച്ചില്ല. സേവകനില്‍ കുഴപ്പം!';
+$labels['deactivateerror'] = 'അരിപ്പ (കള്‍) നിര്‍വീര്യം ആക്കാന്‍ സാധിച്ചില്ല. സേവകനില്‍ കുഴപ്പം!';
+$labels['activated'] = 'അരിപ്പകള്‍ നിര്‍വീര്യം ആക്കപ്പെട്ടിരിക്കുന്നു';
+$labels['deactivated'] = 'അരിപ്പ വിജകരമായി പ്രവര്‍ത്തനസജ്ജമാക്കി.';
+$labels['moved'] = 'അരിപ്പ വിജകരമായി മാറ്റി.';
+$labels['moveerror'] = 'തെരഞ്ഞെടുത്ത അരിപ്പ മാറ്റാന്‍ സാധിച്ചില്ല. സേവകനില്‍ കുഴപ്പം.';
+$labels['nametoolong'] = 'പേരിന് നീളം കൂടുതല്‍.';
+$labels['namereserved'] = 'നീക്കിവെച്ച വാക്ക്.';
+$labels['setexist'] = 'കൂട്ടം നേരത്തെ തന്നെ ഉണ്ട്.';
+$labels['nodata'] = 'ഒരു സ്ഥാനമെങ്കിലും തെരഞ്ഞെടുക്കണം!';
+
diff --git a/plugins/managesieve/localization/mr_IN.inc b/plugins/managesieve/localization/mr_IN.inc
new file mode 100644 (file)
index 0000000..6578dd9
--- /dev/null
@@ -0,0 +1,34 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/mr_IN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Devendra Buddhikot <devendradb@rediffmail.com>                |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['filters'] = 'चाळण्या';
+$labels['moveup'] = 'वर हलवा';
+$labels['movedown'] = 'खाली हलवा';
+$labels['filterallof'] = 'खालील सर्व नियम जुळत आहेत';
+$labels['filterany'] = 'सर्व संदेश';
+$labels['filteris'] = 'च्या बरोबर आहे';
+$labels['filterisnot'] = 'च्या बरोबर नाही';
+$labels['filterexists'] = 'अस्तित्वात आहे';
+$labels['filternotexists'] = 'अस्तित्वात नाही';
+$labels['filterunder'] = 'खाली';
+$labels['filterover'] = 'वरती';
+$labels['messagedelete'] = 'संदेश काढून टाका';
+$labels['messagesactions'] = 'खालील कृती आमलात आणा :';
+$labels['add'] = 'समावेश करा';
+$labels['del'] = 'नष्ट करा';
+$labels['sender'] = 'प्रेषक';
+
index 17df730de77dd16ab172bb713d17e5e1048f0c7d..ee6d578b7eb312c42cbba16b7bd45cf9b02ed669 100644 (file)
@@ -9,9 +9,8 @@
  | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Thomas <Unknown>                                              |
+ | Author: Tobias V. Langhoff <spug@thespug.net>                         |
  +-----------------------------------------------------------------------+
- @version $Id$
 */
 
 $labels = array();
@@ -25,13 +24,17 @@ $labels['moveup'] = 'Flytt opp';
 $labels['movedown'] = 'Flytt ned';
 $labels['filterallof'] = 'som treffer alle følgende regler';
 $labels['filteranyof'] = 'som treffer en av følgende regler';
-$labels['filterany'] = 'og alle meldinger';
+$labels['filterany'] = 'alle meldinger';
 $labels['filtercontains'] = 'inneholder';
-$labels['filternotcontains'] = 'ikke innehold';
-$labels['filteris'] = 'er';
-$labels['filterisnot'] = 'ikke er';
+$labels['filternotcontains'] = 'ikke inneholder';
+$labels['filteris'] = 'er lik';
+$labels['filterisnot'] = 'er ulik';
 $labels['filterexists'] = 'eksisterer';
 $labels['filternotexists'] = 'ikke eksisterer';
+$labels['filtermatches'] = 'treffer uttrykk';
+$labels['filternotmatches'] = 'ikke treffer uttrykk';
+$labels['filterregex'] = 'treffer regulært uttrykk';
+$labels['filternotregex'] = 'ikke treffer regulært uttrykk';
 $labels['filterunder'] = 'under';
 $labels['filterover'] = 'over';
 $labels['addrule'] = 'Legg til regel';
@@ -44,7 +47,7 @@ $labels['messagereply'] = 'Svar med melding';
 $labels['messagedelete'] = 'Slett melding';
 $labels['messagediscard'] = 'Avvis med melding';
 $labels['messagesrules'] = 'For innkommende e-post';
-$labels['messagesactions'] = '...gjør følgende';
+$labels['messagesactions'] = '... gjør følgende:';
 $labels['add'] = 'Legg til';
 $labels['del'] = 'Slett';
 $labels['sender'] = 'Avsender';
@@ -52,34 +55,95 @@ $labels['recipient'] = 'Mottaker';
 $labels['vacationaddresses'] = 'Liste med mottakeradresser (adskilt med komma):';
 $labels['vacationdays'] = 'Periode mellom meldinger (i dager):';
 $labels['vacationreason'] = 'Innhold (begrunnelse for fravær)';
+$labels['vacationsubject'] = 'Meldingsemne:';
 $labels['rulestop'] = 'Stopp evaluering av regler';
 $labels['enable'] = 'Aktiver / deaktiver';
+$labels['filterset'] = 'Filtersett';
+$labels['filtersets'] = 'Filtersett';
+$labels['filtersetadd'] = 'Nytt filtersett';
+$labels['filtersetdel'] = 'Slett gjeldende filtersett';
+$labels['filtersetact'] = 'Aktiver gjeldende filtersett';
+$labels['filtersetdeact'] = 'Deaktiver gjeldende filtersett';
+$labels['filterdef'] = 'Filterdefinisjon';
+$labels['filtersetname'] = 'Navn på filtersett';
+$labels['newfilterset'] = 'Nytt filtersett';
 $labels['active'] = 'aktiv';
 $labels['none'] = 'ingen';
+$labels['fromset'] = 'fra sett';
 $labels['fromfile'] = 'fra fil';
-$labels['filterdisabled'] = 'Filter deaktiver';
+$labels['filterdisabled'] = 'Filter deaktivert';
+$labels['countisgreaterthan'] = 'antall er flere enn';
+$labels['countisgreaterthanequal'] = 'antall er flere enn eller lik';
+$labels['countislessthan'] = 'antall er færre enn';
+$labels['countislessthanequal'] = 'antall er færre enn eller lik';
+$labels['countequals'] = 'antall er lik';
+$labels['countnotequals'] = 'antall er ulik';
 $labels['valueisgreaterthan'] = 'verdien er høyrere enn';
 $labels['valueisgreaterthanequal'] = 'verdien er høyere eller lik';
 $labels['valueislessthan'] = 'verdien er lavere enn';
 $labels['valueislessthanequal'] = 'verdien er lavere eller lik';
 $labels['valueequals'] = 'verdien er';
 $labels['valuenotequals'] = 'verdien er ikke';
+$labels['setflags'] = 'Sett meldingsflagg';
+$labels['addflags'] = 'Legg til flagg på meldingen';
+$labels['removeflags'] = 'Fjern flagg fra meldingen';
 $labels['flagread'] = 'Lese';
+$labels['flagdeleted'] = 'Slettet';
 $labels['flaganswered'] = 'Besvart';
 $labels['flagflagged'] = 'Flagget';
 $labels['flagdraft'] = 'Utkast';
 $labels['filtercreate'] = 'Opprett filter';
+$labels['usedata'] = 'Bruk følgende data i filteret:';
+$labels['nextstep'] = 'Neste steg';
+$labels['...'] = '…';
+$labels['advancedopts'] = 'Avanserte alternativer';
+$labels['body'] = 'Meldingstekst';
 $labels['address'] = 'adresse';
+$labels['envelope'] = 'konvolutt';
+$labels['modifier'] = 'modifikator';
 $labels['text'] = 'tekst';
+$labels['undecoded'] = 'ikke dekodet (rå)';
+$labels['contenttype'] = 'innholdstype';
+$labels['modtype'] = 'type:';
+$labels['allparts'] = 'alle';
 $labels['domain'] = 'domene';
+$labels['localpart'] = 'lokal del (localpart)';
+$labels['user'] = 'bruker';
+$labels['detail'] = 'detalj';
+$labels['comparator'] = 'sammenligning:';
+$labels['default'] = 'standard';
+$labels['octet'] = 'streng (octet)';
+$labels['asciicasemap'] = 'ikke skill store og små bokstaver (ascii-casemap)';
+$labels['asciinumeric'] = 'numerisk (ascii-numeric)';
 $labels['filterunknownerror'] = 'Ukjent problem med tjener';
 $labels['filterconnerror'] = 'Kunne ikke koble til MANAGESIEVE-tjener';
 $labels['filterdeleteerror'] = 'Kunne ikke slette filter. Det dukket opp en feil på tjeneren.';
 $labels['filterdeleted'] = 'Filteret er blitt slettet';
 $labels['filtersaved'] = 'Filter er blitt lagret';
 $labels['filtersaveerror'] = 'Kunne ikke lagre filteret. Det dukket opp en feil på tjeneren.';
+$labels['filterdeleteconfirm'] = 'Vil du virkelig slette det valgte filteret?';
 $labels['ruledeleteconfirm'] = 'Er du sikker på at du vil slette valgte regel?';
 $labels['actiondeleteconfirm'] = 'Er du sikker på at du vil slette valgte hendelse?';
 $labels['forbiddenchars'] = 'Ugyldige tegn i felt';
 $labels['cannotbeempty'] = 'Feltet kan ikke stå tomt';
+$labels['ruleexist'] = 'Det finnes allerede et filter med dette navnet.';
+$labels['setactivateerror'] = 'Kunne ikke aktivere det valgte filtersettet. Det oppsto en tjenerfeil.';
+$labels['setdeactivateerror'] = 'Kunne ikke deaktivere det valgte filtersettet. Det oppsto en tjenerfeil.';
+$labels['setdeleteerror'] = 'Kunne ikke slette det valgte filtersettet. Det oppsto en tjenerfeil.';
+$labels['setactivated'] = 'Filtersett aktivert.';
+$labels['setdeactivated'] = 'Filtersett deaktivert.';
+$labels['setdeleted'] = 'Filtersett slettet.';
+$labels['setdeleteconfirm'] = 'Er du sikker på at du vil slette det valgte filtersettet?';
+$labels['setcreateerror'] = 'Kunne ikke opprette filtersettet. Det oppsto en tjenerfeil.';
+$labels['setcreated'] = 'Filtersett opprettet.';
+$labels['activateerror'] = 'Kunne ikke skru på valgte filter. Det oppsto en tjenerfeil.';
+$labels['deactivateerror'] = 'Kunne ikke skru av valgte filter. Det oppsto en tjenerfeil.';
+$labels['deactivated'] = 'Filter skrudd av.';
+$labels['activated'] = 'Filter ble skrudd på.';
+$labels['moved'] = 'Filter ble flyttet.';
+$labels['moveerror'] = 'Kunne ikke flytte valgte filter. Det oppsto en tjenerfeil.';
+$labels['nametoolong'] = 'Navnet er for langt.';
+$labels['namereserved'] = 'Navnet er reservert.';
+$labels['setexist'] = 'Settet eksisterer allerede.';
+$labels['nodata'] = 'Du må velge minst én posisjon!';
 
index 032cde2fc0939894a162ece11f57f0f3b8aab7a3..56b1c95eefcced146bf4b99d9628c0d7f907f745 100644 (file)
@@ -9,7 +9,7 @@
  | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Justin van Beusekom <Unknown>                                 |
+ | Author: Geert Wirken <Unknown>                                        |
  +-----------------------------------------------------------------------+
  @version $Id$
 */
@@ -23,8 +23,8 @@ $labels['filteradd'] = 'Filter toevoegen';
 $labels['filterdel'] = 'Verwijder filter';
 $labels['moveup'] = 'Verplaats omhoog';
 $labels['movedown'] = 'Verplaats omlaag';
-$labels['filterallof'] = 'die voldoen aan alle volgende regels';
-$labels['filteranyof'] = 'die voldoen aan een van de volgende regels';
+$labels['filterallof'] = 'die voldoet aan alle volgende regels';
+$labels['filteranyof'] = 'die voldoet aan één van de volgende regels';
 $labels['filterany'] = 'alle berichten';
 $labels['filtercontains'] = 'bevat';
 $labels['filternotcontains'] = 'bevat niet';
@@ -101,7 +101,7 @@ $labels['advancedopts'] = 'Geavanceerde opties';
 $labels['body'] = 'Inhoud';
 $labels['address'] = 'adres';
 $labels['envelope'] = 'envelope';
-$labels['modifier'] = 'wijziger';
+$labels['modifier'] = 'toets op:';
 $labels['text'] = 'tekst';
 $labels['undecoded'] = 'undecoded (raw)';
 $labels['contenttype'] = 'content type';
@@ -111,7 +111,7 @@ $labels['domain'] = 'domein';
 $labels['localpart'] = 'lokaal gedeelte';
 $labels['user'] = 'gebruiker';
 $labels['detail'] = 'detail';
-$labels['comparator'] = 'vergelijker:';
+$labels['comparator'] = 'vergelijkingswijze:';
 $labels['default'] = 'standaard';
 $labels['octet'] = 'strikt (octet)';
 $labels['asciicasemap'] = 'hoofdletterongevoelig (ascii-casemap)';
@@ -139,8 +139,8 @@ $labels['setcreateerror'] = 'Filterverzameling kon niet aangemaakt worden. Er tr
 $labels['setcreated'] = 'Filterverzameling succesvol aangemaakt.';
 $labels['activateerror'] = 'Geselecteerde filter(s) konden niet ingeschakeld worden. Er trad een serverfout op.';
 $labels['deactivateerror'] = 'Geselecteerde filter(s) konden niet uitgeschakeld worden. Er trad een serverfout op.';
-$labels['activated'] = 'Filter(s) succesvol uitgeschakeld.';
-$labels['deactivated'] = 'Filter(s) succesvol ingeschakeld.';
+$labels['deactivated'] = 'Filter(s) succesvol uitgeschakeld.';
+$labels['activated'] = 'Filter(s) succesvol ingeschakeld.';
 $labels['moved'] = 'Filter succesvol verplaatst.';
 $labels['moveerror'] = 'Geselecteerde filter(s) konden niet verplaatst worden. Er trad een serverfout op.';
 $labels['nametoolong'] = 'Naam is te lang.';
index b6227347dcb839e254c39b5e485d9ed38a7a77da..a7703fc8a73a475f97f53ebb52171a23ccde29e6 100644 (file)
@@ -9,7 +9,7 @@
  | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Thomas <Unknown>                                              |
+ | Author: Aleksander Machniak <alec@alec.pl>                            |
  +-----------------------------------------------------------------------+
  @version $Id$
 */
@@ -93,7 +93,17 @@ $labels['flagdeleted'] = 'Usunięta';
 $labels['flaganswered'] = 'Z odpowiedzią';
 $labels['flagflagged'] = 'Oflagowana';
 $labels['flagdraft'] = 'Szkic';
-$labels['filtercreate'] = 'Utwóż filtr';
+$labels['setvariable'] = 'Ustaw zmienną';
+$labels['setvarname'] = 'Nazwa zmiennej:';
+$labels['setvarvalue'] = 'Wartość zmiennej:';
+$labels['setvarmodifiers'] = 'Modyfikatory:';
+$labels['varlower'] = 'małe litery (:lower)';
+$labels['varupper'] = 'duże litery (:upper)';
+$labels['varlowerfirst'] = 'pierwsza litera mała (:lowerfirst)';
+$labels['varupperfirst'] = 'pierwsza litera duża (:upperfirst)';
+$labels['varquotewildcard'] = 'anulowane znaki specjalne (:quotewildcard)';
+$labels['varlength'] = 'długość (:length)';
+$labels['filtercreate'] = 'Utwórz filtr';
 $labels['usedata'] = 'Użyj następujących danych do utworzenia filtra:';
 $labels['nextstep'] = 'Następny krok';
 $labels['...'] = '...';
@@ -139,8 +149,8 @@ $labels['setcreateerror'] = 'Nie można utworzyć zbioru filtrów. Błąd serwer
 $labels['setcreated'] = 'Zbiór filtrów został utworzony pomyślnie.';
 $labels['activateerror'] = 'Nie można włączyć wybranych filtrów. Błąd serwera.';
 $labels['deactivateerror'] = 'Nie można wyłączyć wybranych filtrów. Błąd serwera.';
-$labels['activated'] = 'Filtr(y) wyłączono pomyślnie.';
-$labels['deactivated'] = 'Filtr(y) włączono pomyślnie.';
+$labels['deactivated'] = 'Filtr(y) wyłączono pomyślnie.';
+$labels['activated'] = 'Filtr(y) włączono pomyślnie.';
 $labels['moved'] = 'Filter został przeniesiony pomyślnie.';
 $labels['moveerror'] = 'Nie można przenieść wybranego filtra. Błąd serwera.';
 $labels['nametoolong'] = 'Zbyt długa nazwa.';
index f0e890d86aa9f19bae47fa941ed6ccd44affddf3..f4b64584a351e9145118a79295bbd0814d318040 100644 (file)
@@ -139,8 +139,8 @@ $labels['setcreateerror'] = 'Não foi possível criar o conjunto de filtros. Oco
 $labels['setcreated'] = 'Conjunto de filtros criado com sucesso.';
 $labels['activateerror'] = 'Não foi possível habilitar o(s) filtro(s) selecionado(s). Ocorreu um erro no servidor.';
 $labels['deactivateerror'] = 'Não foi possível desabilitar o(s) filtro(s) selecionado(s). Ocorreu um erro no servidor.';
-$labels['activated'] = 'Filtro(s) desabilitado(s) com sucesso.';
-$labels['deactivated'] = 'Filtro(s) habilitado(s) com sucesso.';
+$labels['deactivated'] = 'Filtro(s) desabilitado(s) com sucesso.';
+$labels['activated'] = 'Filtro(s) habilitado(s) com sucesso.';
 $labels['moved'] = 'Filtro movido com sucesso.';
 $labels['moveerror'] = 'Não foi possível mover o filtro selecionado. Ocorreu um erro no servidor.';
 $labels['nametoolong'] = 'Nome muito longo.';
index bb0c781a1b4cbc9658e0bea7bcc85e8336692673..8a0a1da3e0d75aa1efadc732f641dc7f2f4f06d5 100644 (file)
@@ -139,8 +139,8 @@ $labels['setcreateerror'] = 'Não foi possível criar o conjunto de filtros. Oco
 $labels['setcreated'] = 'Conjunto de filtros criado com sucesso.';
 $labels['activateerror'] = 'Não foi possível ativar os filtros selecionados. Ocorreu um erro no servidor.';
 $labels['deactivateerror'] = 'Não foi possível desativar os filtros selecionados. Ocorreu um erro no servidor.';
-$labels['activated'] = 'Filtro(s) desativado(s) com sucesso.';
-$labels['deactivated'] = 'Filtro(s) ativado(s) com sucesso.';
+$labels['deactivated'] = 'Filtro(s) desativado(s) com sucesso.';
+$labels['activated'] = 'Filtro(s) ativado(s) com sucesso.';
 $labels['moved'] = 'Filtro movido com sucesso.';
 $labels['moveerror'] = 'Não foi possível mover o filtro selecionado. Ocorreu um erro no servidor.';
 $labels['nametoolong'] = 'Nome demasiado longo.';
diff --git a/plugins/managesieve/localization/ro_RO.inc b/plugins/managesieve/localization/ro_RO.inc
new file mode 100644 (file)
index 0000000..8889852
--- /dev/null
@@ -0,0 +1,150 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ro_RO/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: tudor <tudor@starnet-alba.ro>                                 |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['filters'] = 'Filtre';
+$labels['managefilters'] = 'Administrează filtrele pentru mesaje primite.';
+$labels['filtername'] = 'Nume filtru';
+$labels['newfilter'] = 'Filtru nou.';
+$labels['filteradd'] = 'Adaugă un filtru';
+$labels['filterdel'] = 'Şterge filtru.';
+$labels['moveup'] = 'Mută mai sus';
+$labels['movedown'] = 'Mută mai jos';
+$labels['filterallof'] = 'se potriveşte cu toate din regulile următoare';
+$labels['filteranyof'] = 'se potriveşte cu oricare din regulile următoare';
+$labels['filterany'] = 'toate mesajele';
+$labels['filtercontains'] = 'conține';
+$labels['filternotcontains'] = 'nu conţine';
+$labels['filteris'] = 'este egal cu';
+$labels['filterisnot'] = 'este diferit de';
+$labels['filterexists'] = 'există';
+$labels['filternotexists'] = 'nu există';
+$labels['filtermatches'] = 'se potriveşte cu expresia';
+$labels['filternotmatches'] = 'nu se potriveşte cu expresia';
+$labels['filterregex'] = 'se potriveşte cu expresia regulată';
+$labels['filternotregex'] = 'nu se potriveşte cu expresia regulată';
+$labels['filterunder'] = 'sub';
+$labels['filterover'] = 'peste';
+$labels['addrule'] = 'Adaugă regula';
+$labels['delrule'] = 'Şterge regula';
+$labels['messagemoveto'] = 'Mută mesajul în';
+$labels['messageredirect'] = 'Redirecţionează mesajul către';
+$labels['messagecopyto'] = 'Copiază mesajul în';
+$labels['messagesendcopy'] = 'Trimite o copie a mesajului către';
+$labels['messagereply'] = 'Răspunde cu mesajul';
+$labels['messagedelete'] = 'Şterge mesajul';
+$labels['messagediscard'] = 'Respinge cu mesajul';
+$labels['messagesrules'] = 'Pentru e-mail primit:';
+$labels['messagesactions'] = '...execută următoarele acţiuni:';
+$labels['add'] = 'Adaugă';
+$labels['del'] = 'Șterge';
+$labels['sender'] = 'Expeditor';
+$labels['recipient'] = 'Destinatar';
+$labels['vacationaddresses'] = 'Listă adiţională cu email-urile destinatarilor (separate prin virgulă):';
+$labels['vacationdays'] = 'Cât de des să trimit mesajele (în zile):';
+$labels['vacationreason'] = 'Corpul mesajului (motivul vacanţei):';
+$labels['vacationsubject'] = 'Subiectul mesajului:';
+$labels['rulestop'] = 'Nu mai evalua reguli';
+$labels['enable'] = 'Activează/Dezactivează';
+$labels['filterset'] = 'Filtre setate';
+$labels['filtersets'] = 'Filtrul setează';
+$labels['filtersetadd'] = 'Adaugă set de filtre';
+$labels['filtersetdel'] = 'Şterge setul curent de filtre';
+$labels['filtersetact'] = 'Activează setul curent de filtre';
+$labels['filtersetdeact'] = 'Dezactivează setul curent de filtre';
+$labels['filterdef'] = 'Definiţie filtru';
+$labels['filtersetname'] = 'Nume set filtre';
+$labels['newfilterset'] = 'Set filtre nou';
+$labels['active'] = 'activ';
+$labels['none'] = 'niciunul';
+$labels['fromset'] = 'din setul';
+$labels['fromfile'] = 'din fişier';
+$labels['filterdisabled'] = 'Filtru dezactivat';
+$labels['countisgreaterthan'] = 'numărul este mai mare ca';
+$labels['countisgreaterthanequal'] = 'numărul este mai mare sau egal cu';
+$labels['countislessthan'] = 'numărul este mai mic decât';
+$labels['countislessthanequal'] = 'numărul este mai mic sau egal cu';
+$labels['countequals'] = 'numărul este egal cu';
+$labels['countnotequals'] = 'numărul nu este egal cu';
+$labels['valueisgreaterthan'] = 'valoarea este egală cu';
+$labels['valueisgreaterthanequal'] = 'valoarea este mai mare sau egală cu';
+$labels['valueislessthan'] = 'valoarea este mai mică decât';
+$labels['valueislessthanequal'] = 'valoarea este mai mică sau egală cu';
+$labels['valueequals'] = 'valoarea este egală cu';
+$labels['valuenotequals'] = 'valoarea nu este egală cu';
+$labels['setflags'] = 'Pune marcaje mesajului';
+$labels['addflags'] = 'Adaugă marcaje mesajului';
+$labels['removeflags'] = 'Şterge marcajele mesajului';
+$labels['flagread'] = 'Citit';
+$labels['flagdeleted'] = 'Șters';
+$labels['flaganswered'] = 'Răspuns';
+$labels['flagflagged'] = 'Marcat';
+$labels['flagdraft'] = 'Schiță';
+$labels['filtercreate'] = 'Crează filtru';
+$labels['usedata'] = 'Foloseşte următoarele date în filtru:';
+$labels['nextstep'] = 'Următorul Pas';
+$labels['...'] = '...';
+$labels['advancedopts'] = 'Opţiuni avansate';
+$labels['body'] = 'Corp';
+$labels['address'] = 'adresă';
+$labels['envelope'] = 'plic';
+$labels['modifier'] = 'modificator:';
+$labels['text'] = 'text';
+$labels['undecoded'] = 'nedecodat (brut)';
+$labels['contenttype'] = 'tip conţinut';
+$labels['modtype'] = 'tip:';
+$labels['allparts'] = 'toate';
+$labels['domain'] = 'domeniu';
+$labels['localpart'] = 'partea locală';
+$labels['user'] = 'utilizator';
+$labels['detail'] = 'detaliu';
+$labels['comparator'] = 'comparator:';
+$labels['default'] = 'implicit';
+$labels['octet'] = 'strict (octet)';
+$labels['asciicasemap'] = 'ignoră majusculele (ascii-casemap)';
+$labels['asciinumeric'] = 'numeric (ascii-numeric)';
+$labels['filterunknownerror'] = 'Eroare necunoscută la server:';
+$labels['filterconnerror'] = 'Nu mă pot conecta la server.';
+$labels['filterdeleteerror'] = 'Nu pot şterge filtrul. S-a produs o eroare la server.';
+$labels['filterdeleted'] = 'Filtrul a fost şters cu succes.';
+$labels['filtersaved'] = 'Filtrul a fost salvat cu succes.';
+$labels['filtersaveerror'] = 'Nu am putut salva filtrul. S-a produs o eroare la server.';
+$labels['filterdeleteconfirm'] = 'Chiar vrei să ştergi filtrul selectat?';
+$labels['ruledeleteconfirm'] = 'Eşti sigur că vrei să ştergi regula selectată?';
+$labels['actiondeleteconfirm'] = 'Eşti sigur că vrei să ştergi acţiunea selectată?';
+$labels['forbiddenchars'] = 'Caractere nepermise în câmp.';
+$labels['cannotbeempty'] = 'Câmpul nu poate fi gol.';
+$labels['ruleexist'] = 'Filtrul cu numele specificat există deja.';
+$labels['setactivateerror'] = 'Nu pot activa setul de filtre selectat. S-a produs o eroare la server.';
+$labels['setdeactivateerror'] = 'Nu pot dezactiva setul de filtre selectat. S-a produs o eroare la server.';
+$labels['setdeleteerror'] = 'Nu pot şterge setul de filtre selectat. S-a produs o eroare la server.';
+$labels['setactivated'] = 'Setul de filtre activat cu succes.';
+$labels['setdeactivated'] = 'Setul de filtre dezactivat cu succes.';
+$labels['setdeleted'] = 'Setul de filtre şters cu succes.';
+$labels['setdeleteconfirm'] = 'Eşti sigur(ă) că vrei să ştergi setul de filtre selectat?';
+$labels['setcreateerror'] = 'Nu am putut crea setul de filtre. S-a produs o eroare la server.';
+$labels['setcreated'] = 'Setul de filtre creat cu succes.';
+$labels['activateerror'] = 'Nu am putut activa filtrele selectate. S-a produs o eroare la server.';
+$labels['deactivateerror'] = 'Nu am putut dezactiva filtrele selectate. S-a produs o eroare la server.';
+$labels['deactivated'] = 'Filtrele au fost dezactivate cu succes.';
+$labels['activated'] = 'Filtrele au fost activate cu succes.';
+$labels['moved'] = 'Filtrele au fost mutate cu succes.';
+$labels['moveerror'] = 'Nu am putut muta filtreele selectate. S-a produs o eroare la server.';
+$labels['nametoolong'] = 'Numele este prea lung.';
+$labels['namereserved'] = 'Nume rezervat.';
+$labels['setexist'] = 'Setul există deja.';
+$labels['nodata'] = 'Trebuie selectată cel putin o poziţie!';
+
index aaadc4f32cdedc4a5fe4e886889d1ffdcaff47df..0689bd884b450c24dd70afc65eb924b43db50422 100644 (file)
@@ -9,9 +9,8 @@
  | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Nkolay Parukhin <parukhin@gmail.com>                          |
+ | Author: Vyacheslav Sharmanov                                          |
  +-----------------------------------------------------------------------+
- @version $Id$
 */
 
 $labels = array();
@@ -32,8 +31,12 @@ $labels['filteris'] = 'соответствует';
 $labels['filterisnot'] = 'не соответствует';
 $labels['filterexists'] = 'существует';
 $labels['filternotexists'] = 'не существует';
-$labels['filterunder'] = 'под';
-$labels['filterover'] = 'на';
+$labels['filtermatches'] = 'совпадает с выражением';
+$labels['filternotmatches'] = 'не совпадает с выражением';
+$labels['filterregex'] = 'совпадает с регулярным выражением';
+$labels['filternotregex'] = 'не совпадает с регулярным выражением';
+$labels['filterunder'] = 'меньше';
+$labels['filterover'] = 'больше';
 $labels['addrule'] = 'Добавить правило';
 $labels['delrule'] = 'Удалить правило';
 $labels['messagemoveto'] = 'Переместить сообщение в';
@@ -49,7 +52,7 @@ $labels['add'] = 'Добавить';
 $labels['del'] = 'Удалить';
 $labels['sender'] = 'Отправитель';
 $labels['recipient'] = 'Получатель';
-$labels['vacationaddresses'] = 'СпиÑ\81ок Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ\82елÑ\8cнÑ\8bÑ\85 Ð°Ð´Ñ\80еÑ\81ов Ð¿Ð¾Ð»Ñ\83Ñ\87аÑ\82елÑ\8f (разделённых запятыми):';
+$labels['vacationaddresses'] = 'СпиÑ\81ок Ð¼Ð¾Ð¸Ñ\85 Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ\82елÑ\8cнÑ\8bÑ\85 Ð°Ð´Ñ\80еÑ\81ов (разделённых запятыми):';
 $labels['vacationdays'] = 'Как часто отправлять сообщения (в днях):';
 $labels['vacationreason'] = 'Текст сообщения (причина отсутствия):';
 $labels['vacationsubject'] = 'Тема сообщения:';
@@ -65,7 +68,7 @@ $labels['filterdef'] = 'Описание фильтра';
 $labels['filtersetname'] = 'Название набора фильтров';
 $labels['newfilterset'] = 'Новый набор фильтров';
 $labels['active'] = 'используется';
-$labels['none'] = 'пÑ\83Ñ\81Ñ\82ой';
+$labels['none'] = 'неÑ\82';
 $labels['fromset'] = 'из набора';
 $labels['fromfile'] = 'из файла';
 $labels['filterdisabled'] = 'Отключить фильтр';
@@ -81,8 +84,8 @@ $labels['valueislessthan'] = 'значение меньше, чем';
 $labels['valueislessthanequal'] = 'значение меньше или равно';
 $labels['valueequals'] = 'значение равно';
 $labels['valuenotequals'] = 'значение не равно';
-$labels['setflags'] = 'Установить флаг на сообщение';
-$labels['addflags'] = 'Добавить флаг к сообщению';
+$labels['setflags'] = 'Установить флаги на сообщение';
+$labels['addflags'] = 'Добавить флаги к сообщению';
 $labels['removeflags'] = 'Убрать флаги из сообщения';
 $labels['flagread'] = 'Прочитано';
 $labels['flagdeleted'] = 'Удалено';
@@ -97,32 +100,50 @@ $labels['advancedopts'] = 'Дополнительные параметры';
 $labels['body'] = 'Тело письма';
 $labels['address'] = 'адрес';
 $labels['envelope'] = 'конверт';
+$labels['modifier'] = 'модификатор области поиска:';
 $labels['text'] = 'текст';
+$labels['undecoded'] = 'необработанный (сырой)';
 $labels['contenttype'] = 'тип содержимого';
-$labels['modtype'] = 'тип:';
-$labels['allparts'] = 'все';
-$labels['domain'] = 'домен';
-$labels['user'] = 'пользователь';
+$labels['modtype'] = 'поиск в адресах:';
+$labels['allparts'] = 'везде';
+$labels['domain'] = 'в имени домена';
+$labels['localpart'] = 'только в имени пользователя, без домена';
+$labels['user'] = 'в полном имени пользователя';
+$labels['detail'] = 'в дополнительных сведениях';
+$labels['comparator'] = 'способ сравнения:';
 $labels['default'] = 'по умолчанию';
+$labels['octet'] = 'Строгий (octet)';
+$labels['asciicasemap'] = 'Регистронезависимый (ascii-casemap)';
+$labels['asciinumeric'] = 'Числовой (ascii-numeric)';
 $labels['filterunknownerror'] = 'Неизвестная ошибка сервера';
 $labels['filterconnerror'] = 'Невозможно подсоединится к серверу фильтров';
-$labels['filterdeleteerror'] = 'Невозможно удалить фильтр. Ошибка сервера';
-$labels['filterdeleted'] = 'Фильтр успешно удалён';
-$labels['filtersaved'] = 'Фильтр успешно сохранён';
-$labels['filtersaveerror'] = 'Невозможно сохранить фильтр. Ошибка сервера';
+$labels['filterdeleteerror'] = 'Невозможно удалить фильтр. Ошибка сервера.';
+$labels['filterdeleted'] = 'Фильтр успешно удалён.';
+$labels['filtersaved'] = 'Фильтр успешно сохранён.';
+$labels['filtersaveerror'] = 'Невозможно сохранить фильтр. Ошибка сервера.';
 $labels['filterdeleteconfirm'] = 'Вы действительно хотите удалить фильтр?';
 $labels['ruledeleteconfirm'] = 'Вы уверенны, что хотите удалить это правило?';
 $labels['actiondeleteconfirm'] = 'Вы уверенны, что хотите удалить это действие?';
-$labels['forbiddenchars'] = 'Недопустимые символы в поле';
-$labels['cannotbeempty'] = 'Поле не может быть пустым';
-$labels['setactivateerror'] = 'Невозможно включить выбранный набор фильтров. Ошибка сервера';
-$labels['setdeactivateerror'] = 'Невозможно отключить выбранный набор фильтров. Ошибка сервера';
-$labels['setdeleteerror'] = 'Невозможно удалить выбранный набор фильтров. Ошибка сервера';
-$labels['setactivated'] = 'Набор фильтров успешно включён';
-$labels['setdeactivated'] = 'Набор фильтров успешно отключён';
-$labels['setdeleted'] = 'Набор фильтров успешно удалён';
+$labels['forbiddenchars'] = 'Недопустимые символы в поле.';
+$labels['cannotbeempty'] = 'Поле не может быть пустым.';
+$labels['ruleexist'] = 'Фильтр с таким именем уже существует.';
+$labels['setactivateerror'] = 'Невозможно включить выбранный набор фильтров. Ошибка сервера.';
+$labels['setdeactivateerror'] = 'Невозможно отключить выбранный набор фильтров. Ошибка сервера.';
+$labels['setdeleteerror'] = 'Невозможно удалить выбранный набор фильтров. Ошибка сервера.';
+$labels['setactivated'] = 'Набор фильтров успешно включён.';
+$labels['setdeactivated'] = 'Набор фильтров успешно отключён.';
+$labels['setdeleted'] = 'Набор фильтров успешно удалён.';
 $labels['setdeleteconfirm'] = 'Вы уверены в том, что хотите удалить выбранный набор фильтров?';
-$labels['setcreateerror'] = 'Невозможно создать набор фильтров. Ошибка сервера';
-$labels['setcreated'] = 'Набор фильтров успешно создан';
-$labels['nametoolong'] = 'Невозможно создать набор фильтров. Название слишком длинное';
+$labels['setcreateerror'] = 'Невозможно создать набор фильтров. Ошибка сервера.';
+$labels['setcreated'] = 'Набор фильтров успешно создан.';
+$labels['activateerror'] = 'Невозможно включить выбранный(е) фильтр(ы). Ошибка сервера.';
+$labels['deactivateerror'] = 'Невозможно выключить выбранный(е) фильтр(ы). Ошибка сервера.';
+$labels['deactivated'] = 'Фильтр(ы) успешно отключен(ы).';
+$labels['activated'] = 'Фильтр(ы) успешно включен(ы).';
+$labels['moved'] = 'Фильтр успешно перемещён.';
+$labels['moveerror'] = 'Невозможно переместить фильтр. Ошибка сервера.';
+$labels['nametoolong'] = 'Невозможно создать набор фильтров. Название слишком длинное.';
+$labels['namereserved'] = 'Зарезервированное имя.';
+$labels['setexist'] = 'Набор уже существует.';
+$labels['nodata'] = 'Нужно выбрать хотя бы одну позицию!';
 
diff --git a/plugins/managesieve/localization/si_LK.inc b/plugins/managesieve/localization/si_LK.inc
new file mode 100644 (file)
index 0000000..f0b586f
--- /dev/null
@@ -0,0 +1,42 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/si_LK/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Mohamed Rizmi <Unknown>                                       |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['filters'] = 'පෙරහණ';
+$labels['moveup'] = 'ඉහළට ගෙනයන්න';
+$labels['movedown'] = 'පහළට ගෙනයන්න';
+$labels['filterany'] = 'සියලු පණිවිඩ';
+$labels['filtercontains'] = 'අඩංගු';
+$labels['messagedelete'] = 'පණිවිඩය මකන්න';
+$labels['add'] = 'එක් කරන්න';
+$labels['del'] = 'මකන්න';
+$labels['sender'] = 'යවන්නා';
+$labels['recipient'] = 'ලබන්නා';
+$labels['vacationsubject'] = 'පණිවිඩයේ මාතෘකාව:';
+$labels['enable'] = 'සක්‍රීය කරන්න/අක්‍රීය කරන්න';
+$labels['active'] = 'සක්‍රීය';
+$labels['none'] = 'කිසිවක් නැත';
+$labels['flagread'] = 'කියවන්න';
+$labels['flagdeleted'] = 'මකන ලදී';
+$labels['flagdraft'] = 'කටු සටහන';
+$labels['nextstep'] = 'මීලග පියවර';
+$labels['...'] = '...';
+$labels['address'] = 'ලිපිනය';
+$labels['envelope'] = 'ලියුම් කවරය';
+$labels['modtype'] = 'වර්ගය:';
+$labels['allparts'] = 'සියල්ල';
+$labels['nametoolong'] = 'නම දිග වැඩිය.';
+
index d08611e3a3777377337033bc2a357cd300af8ae2..337dfa690d4751b864feba59c3d42d747359885a 100644 (file)
@@ -23,13 +23,13 @@ $labels['filteradd'] = 'Pridaj filter';
 $labels['filterdel'] = 'Zmaž filter';
 $labels['moveup'] = 'Presuň vyššie';
 $labels['movedown'] = 'Presuň nižšie';
-$labels['filterallof'] = 'vyhovujúcu VŠETKÝM nasledujúcim pravidlám';
-$labels['filteranyof'] = 'vyhovujúcu ĽUBOVOĽNÉMU z nasledujúcich pravidiel';
+$labels['filterallof'] = 'vyhovujúca všetkým z nasledujúcich pravidiel';
+$labels['filteranyof'] = 'vyhovujúca ľubovoľnému z nasledujúcich pravidiel';
 $labels['filterany'] = 'všetky správy';
 $labels['filtercontains'] = 'obsahuje';
 $labels['filternotcontains'] = 'neobsahuje';
-$labels['filteris'] = 'je';
-$labels['filterisnot'] = 'nie je';
+$labels['filteris'] = 'rovná sa';
+$labels['filterisnot'] = 'nerovná sa';
 $labels['filterexists'] = 'existuje';
 $labels['filternotexists'] = 'neexistuje';
 $labels['filtermatches'] = 'vyhovuje výrazu';
@@ -101,7 +101,9 @@ $labels['advancedopts'] = 'Rozšírené nastavenia';
 $labels['body'] = 'Telo';
 $labels['address'] = 'adresa';
 $labels['envelope'] = 'obálka';
+$labels['modifier'] = 'modifikátor:';
 $labels['text'] = 'text';
+$labels['undecoded'] = 'nedekódované (raw)';
 $labels['contenttype'] = 'typ obsahu';
 $labels['modtype'] = 'typ:';
 $labels['allparts'] = 'všetko';
@@ -109,7 +111,11 @@ $labels['domain'] = 'doména';
 $labels['localpart'] = 'lokálna časť';
 $labels['user'] = 'užívateľ';
 $labels['detail'] = 'detail';
+$labels['comparator'] = 'porovnávač:';
 $labels['default'] = 'predvolené';
+$labels['octet'] = 'striktný (osmičkovo)';
+$labels['asciicasemap'] = 'nerozlišuje veľké a malé písmená (ascii tabuľka znakov)';
+$labels['asciinumeric'] = 'numerické (ascii čísla)';
 $labels['filterunknownerror'] = 'Neznáma chyba serveru';
 $labels['filterconnerror'] = 'Nepodarilo sa pripojiť k managesieve serveru';
 $labels['filterdeleteerror'] = 'Nepodarilo sa zmazať filter, server ohlásil chybu';
@@ -121,6 +127,7 @@ $labels['ruledeleteconfirm'] = 'Naozaj si prajete zamzať toto pravidlo?';
 $labels['actiondeleteconfirm'] = 'Naozaj si prajete zmazať túto akciu?';
 $labels['forbiddenchars'] = 'Pole obsahuje nepovolené znaky';
 $labels['cannotbeempty'] = 'Pole nemôže byť prázdne';
+$labels['ruleexist'] = 'Filter so zadaným menom už existuje.';
 $labels['setactivateerror'] = 'Nepodarilo sa aktivovať zvolenú sadu filtrov, server ohlásil chybu';
 $labels['setdeactivateerror'] = 'Nepodarilo sa deaktivovať zvolenú sadu filtrov, server ohlásil chybu';
 $labels['setdeleteerror'] = 'Nepodarilo sa zmazať zvolenú sadu filtrov, server ohlásil chybu';
@@ -130,5 +137,14 @@ $labels['setdeleted'] = 'Sada filtrov bola zmazaná';
 $labels['setdeleteconfirm'] = 'Naozaj si prajete zmazať túto sadu filtrov?';
 $labels['setcreateerror'] = 'Nepodarilo sa vytvoriť sadu filtrov, server ohlásil chybu';
 $labels['setcreated'] = 'Sada filtrov bola vytvorená';
+$labels['activateerror'] = 'Nepodarilo sa povoliť vybraný filter(e). Chyba servera.';
+$labels['deactivateerror'] = 'Nepodarilo sa vypnúť vybraný filter(e). Chyba servera.';
+$labels['deactivated'] = 'Filter(e) úspešne vypnutý.';
+$labels['activated'] = 'Filter(e) povolený.';
+$labels['moved'] = 'Filter presunutý.';
+$labels['moveerror'] = 'Nemôžem presunúť zvolený filter. Chyba servera.';
 $labels['nametoolong'] = 'Názov sady filtrov je príliš dlhý';
+$labels['namereserved'] = 'Rezervovaný názov.';
+$labels['setexist'] = 'Množina už existuje.';
+$labels['nodata'] = 'Aspoň jedna pozícia musí byť zvolená.';
 
index 010332e5f2c0bc69a429b5a779606f74fd18081a..f295225687a16c2967f0d34b84f91ec62edd133b 100644 (file)
@@ -9,20 +9,19 @@
  | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Thomas <Unknown>                                              |
+ | Author: Teja Cetinski <teja.cetinski@gmail.com>                       |
  +-----------------------------------------------------------------------+
- @version $Id$
 */
 
 $labels = array();
-$labels['filters'] = 'Pravila';
-$labels['managefilters'] = 'Uredi sporočilna pravila';
-$labels['filtername'] = 'Ime pravila';
-$labels['newfilter'] = 'Novo pravilo';
-$labels['filteradd'] = 'Dodaj pravilo';
-$labels['filterdel'] = 'Izbriši pravilo';
-$labels['moveup'] = 'Pomakni se više';
-$labels['movedown'] = 'Pomakni se niže';
+$labels['filters'] = 'Filtri';
+$labels['managefilters'] = 'Uredi filtre za dohodno pošto';
+$labels['filtername'] = 'Ime filtra';
+$labels['newfilter'] = 'Nov filter';
+$labels['filteradd'] = 'Dodaj filter';
+$labels['filterdel'] = 'Izbriši filter';
+$labels['moveup'] = 'Pomakni se navzgor';
+$labels['movedown'] = 'Pomakni se navzdol';
 $labels['filterallof'] = 'izpolnjeni morajo biti vsi pogoji';
 $labels['filteranyof'] = 'izpolnjen mora biti vsaj eden od navedenih pogojev';
 $labels['filterany'] = 'pogoj velja za vsa sporočila';
@@ -32,12 +31,18 @@ $labels['filteris'] = 'je enak/a';
 $labels['filterisnot'] = 'ni enak/a';
 $labels['filterexists'] = 'obstaja';
 $labels['filternotexists'] = 'ne obstaja';
+$labels['filtermatches'] = 'ustreza izrazu';
+$labels['filternotmatches'] = 'ne ustreza izrazu';
+$labels['filterregex'] = 'ustreza regularnemu izrazu';
+$labels['filternotregex'] = 'ne ustreza regularnemu izrazu';
 $labels['filterunder'] = 'pod';
 $labels['filterover'] = 'nad';
 $labels['addrule'] = 'Dodaj pravilo';
 $labels['delrule'] = 'Izbriši pravilo';
 $labels['messagemoveto'] = 'Premakni sporočilo v';
 $labels['messageredirect'] = 'Preusmeri sporočilo v';
+$labels['messagecopyto'] = 'Kopiraj sporočila na';
+$labels['messagesendcopy'] = 'Pošlji kopijo sporočila na';
 $labels['messagereply'] = 'Odgovori s sporočilom';
 $labels['messagedelete'] = 'Izbriši sporočilo';
 $labels['messagediscard'] = 'Zavrži s sporočilom';
@@ -50,7 +55,66 @@ $labels['recipient'] = 'Prejemnik';
 $labels['vacationaddresses'] = 'Dodaten seznam naslovov prejemnikov (ločenih z vejico):';
 $labels['vacationdays'] = 'Kako pogosto naj bodo sporočila poslana (v dnevih):';
 $labels['vacationreason'] = 'Vsebina sporočila (vzrok za odsotnost):';
+$labels['vacationsubject'] = 'Zadeva sporočila';
 $labels['rulestop'] = 'Prekini z izvajanjem pravil';
+$labels['enable'] = 'Omogoči/Onemogoči';
+$labels['filterset'] = 'Nastavitev filtrov';
+$labels['filtersets'] = 'Nastavitve filtrov';
+$labels['filtersetadd'] = 'Dodaj nastavitev filtrov';
+$labels['filtersetdel'] = 'Izbriši trenutne nastavitve filtriranja';
+$labels['filtersetact'] = 'Vključi trenutno nastavitev filtriranja';
+$labels['filtersetdeact'] = 'Onemogoči trenutno nastavitev filtriranja';
+$labels['filterdef'] = 'Opis filtra';
+$labels['filtersetname'] = 'Ime filtra';
+$labels['newfilterset'] = 'Nov filter';
+$labels['active'] = 'aktiven';
+$labels['none'] = 'brez';
+$labels['fromset'] = 'iz nastavitve';
+$labels['fromfile'] = 'iz dokumenta';
+$labels['filterdisabled'] = 'Filter onemogočen';
+$labels['countisgreaterthan'] = 'seštevek je večji od';
+$labels['countisgreaterthanequal'] = 'seštevek je večji ali enak';
+$labels['countislessthan'] = 'seštevek je manjši od';
+$labels['countislessthanequal'] = 'seštevel je manjši ali enak';
+$labels['countequals'] = 'seštevek je enak';
+$labels['countnotequals'] = 'seštevek ni enak';
+$labels['valueisgreaterthan'] = 'vrednost je večja od';
+$labels['valueisgreaterthanequal'] = 'vrednost je večja ali enaka';
+$labels['valueislessthan'] = 'vrednost je manjša od';
+$labels['valueislessthanequal'] = 'vrednost je manjša ali enaka';
+$labels['valueequals'] = 'vrednost je enaka';
+$labels['valuenotequals'] = 'vrednost je neenaka';
+$labels['setflags'] = 'Označi sporočilo';
+$labels['addflags'] = 'Označi sporočilo';
+$labels['removeflags'] = 'Odstrani zaznamke s sporočil';
+$labels['flagread'] = 'Prebrano';
+$labels['flagdeleted'] = 'Izbrisano';
+$labels['flaganswered'] = 'Odgovorjeno';
+$labels['flagflagged'] = 'Označeno';
+$labels['flagdraft'] = 'Osnutek';
+$labels['filtercreate'] = 'Ustvari filter';
+$labels['usedata'] = 'Pri stvarjanju filtra uporabi naslednje podatke';
+$labels['nextstep'] = 'Naslednji korak';
+$labels['...'] = '...';
+$labels['advancedopts'] = 'Dodatne možnosti';
+$labels['body'] = 'Vsebina';
+$labels['address'] = 'naslov';
+$labels['envelope'] = 'ovojnica';
+$labels['modifier'] = 'modifikator';
+$labels['text'] = 'besedilo';
+$labels['undecoded'] = 'neobdelano';
+$labels['contenttype'] = 'tip vsebine';
+$labels['modtype'] = 'tip';
+$labels['allparts'] = 'vse';
+$labels['domain'] = 'domena';
+$labels['localpart'] = 'lokalni del';
+$labels['user'] = 'uporabnik';
+$labels['detail'] = 'podrobnosti';
+$labels['comparator'] = 'primerjalnik';
+$labels['default'] = 'privzeto';
+$labels['octet'] = 'strict (octet)';
+$labels['asciicasemap'] = 'ni občutljiv na velike/male črke (ascii-casemap)';
+$labels['asciinumeric'] = 'numerično (ascii-numeric)';
 $labels['filterunknownerror'] = 'Prišlo je do neznane napake.';
 $labels['filterconnerror'] = 'Povezave s strežnikom (managesieve) ni bilo mogoče vzpostaviti';
 $labels['filterdeleteerror'] = 'Pravila ni bilo mogoče izbrisati. Prišlo je do napake.';
@@ -62,4 +126,24 @@ $labels['ruledeleteconfirm'] = 'Ste prepričani, da želite izbrisati izbrano pr
 $labels['actiondeleteconfirm'] = 'Ste prepričani, da želite izbrisati izbrano dejanje?';
 $labels['forbiddenchars'] = 'V polju so neveljavni znaki';
 $labels['cannotbeempty'] = 'Polje ne sme biti prazno';
+$labels['ruleexist'] = 'Filer s tem imenom že obstaja';
+$labels['setactivateerror'] = 'Izbranega filtra ni bilo mogoče vključiti. Prišlo je do napake na strežniku.';
+$labels['setdeactivateerror'] = 'Izbranega filtra ni bilo mogoče izključiti. Prišlo je do napake na strežniku.';
+$labels['setdeleteerror'] = 'Izbranega filtra ni bilo mogoče izbrisati. Prišlo je do napake na strežniku.';
+$labels['setactivated'] = 'Filter je bil uspešno vključen.';
+$labels['setdeactivated'] = 'Filter je bil uspešno onemogočen.';
+$labels['setdeleted'] = 'Filter je bil uspešno izbrisan.';
+$labels['setdeleteconfirm'] = 'Ste prepričani, da želite izbrisati ta filter?';
+$labels['setcreateerror'] = 'Filtra ni bilo mogoče ustvariti. Prišlo je do napake na strežniku.';
+$labels['setcreated'] = 'Filter je bil uspešno ustvarjen.';
+$labels['activateerror'] = 'Izbranega/ih filtra/ov ni bilo mogoče vključiti. Prišlo je do napake na strežniku.';
+$labels['deactivateerror'] = 'Izbranega/ih fitra/ov ni bilo mogoče izključiti. Prišlo je do napake na strežniku.';
+$labels['deactivated'] = 'Filtri so bili uspešno onemogočeni.';
+$labels['activated'] = 'Filtri so bili uspešno omogočeni.';
+$labels['moved'] = 'Filter je bil uspešno premaknjen.';
+$labels['moveerror'] = 'Izbranega filtra ni bilo mogoče premakniti. Prišlo je do napake na strežniku.';
+$labels['nametoolong'] = 'Ime je predolgo.';
+$labels['namereserved'] = 'Rezervirano ime.';
+$labels['setexist'] = 'Nastavitev filtra že obstaja.';
+$labels['nodata'] = 'Izbrana mora biti vsaj ena nastavitev!';
 
index 104690c218f2321b991258f4b710a38faf5e801c..d7c1c76a1150d2d09cd37f73a940c5936163644c 100644 (file)
@@ -9,7 +9,7 @@
  | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Thomas <Unknown>                                              |
+ | Author: Jonas Nasholm <Unknown>                                       |
  +-----------------------------------------------------------------------+
  @version $Id$
 */
@@ -58,7 +58,7 @@ $labels['vacationdays'] = 'Antal dagar mellan auto-svar:';
 $labels['vacationreason'] = 'Meddelande i auto-svar:';
 $labels['vacationsubject'] = 'Meddelandeämne:';
 $labels['rulestop'] = 'Avsluta filtrering';
-$labels['enable'] = 'Aktivera/inaktivera';
+$labels['enable'] = 'Aktivera/deaktivera';
 $labels['filterset'] = 'Filtergrupp';
 $labels['filtersets'] = 'Filtergrupper';
 $labels['filtersetadd'] = 'Lägg till filtergrupp';
@@ -127,6 +127,7 @@ $labels['ruledeleteconfirm'] = 'Vill du ta bort filterregeln?';
 $labels['actiondeleteconfirm'] = 'Vill du ta bort filteråtgärden?';
 $labels['forbiddenchars'] = 'Otillåtet tecken i fältet';
 $labels['cannotbeempty'] = 'Fältet kan inte lämnas tomt';
+$labels['ruleexist'] = 'Ett filter med angivet namn finns redan.';
 $labels['setactivateerror'] = 'Filtergruppen kunde inte aktiveras på grund av serverfel';
 $labels['setdeactivateerror'] = 'Filtergruppen kunde inte deaktiveras på grund av serverfel';
 $labels['setdeleteerror'] = 'Filtergruppen kunde inte tas bort på grund av serverfel';
@@ -136,5 +137,14 @@ $labels['setdeleted'] = 'Filtergruppen är borttagen';
 $labels['setdeleteconfirm'] = 'Vill du ta bort filtergruppen?';
 $labels['setcreateerror'] = 'Filtergruppen kunde inte läggas till på grund av serverfel';
 $labels['setcreated'] = 'Filtergruppen har lagts till';
+$labels['activateerror'] = 'Kunde inte aktivera filter på grund av serverfel.';
+$labels['deactivateerror'] = 'Kunde inte deaktivera filter på grund av serverfel.';
+$labels['deactivated'] = 'Filter deaktiverat.';
+$labels['activated'] = 'Filter aktiverat.';
+$labels['moved'] = 'Filter flyttat.';
+$labels['moveerror'] = 'Kunde inte flytta filter på grund av serverfel.';
 $labels['nametoolong'] = 'Filtergruppen kan inte läggas till med för långt namn';
+$labels['namereserved'] = 'Reserverat namn.';
+$labels['setexist'] = 'Filtergrupp finns redan.';
+$labels['nodata'] = 'Minst en position måste väljas!';
 
diff --git a/plugins/managesieve/localization/tr_TR.inc b/plugins/managesieve/localization/tr_TR.inc
new file mode 100644 (file)
index 0000000..9c3eb7e
--- /dev/null
@@ -0,0 +1,149 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/tr_TR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: ismail yenigul                                                |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['filters'] = 'Filtreler';
+$labels['managefilters'] = 'Gelen e-posta filtrelerini yönet';
+$labels['filtername'] = 'Filtre adı';
+$labels['newfilter'] = 'Yeni filtre';
+$labels['filteradd'] = 'Filtre ekle';
+$labels['filterdel'] = 'Filtre Sil';
+$labels['moveup'] = 'Yukarı taşı';
+$labels['movedown'] = 'Aşağı taşı';
+$labels['filterallof'] = 'Aşağıdaki kuralların hepsine uyan';
+$labels['filteranyof'] = 'Aşağıdaki kuralların herhangi birine uyan';
+$labels['filterany'] = 'Tüm mesajlar';
+$labels['filtercontains'] = 'içeren';
+$labels['filternotcontains'] = 'içermeyen';
+$labels['filteris'] = 'eşittir';
+$labels['filterisnot'] = 'eşit değildir';
+$labels['filterexists'] = 'mevcut';
+$labels['filternotexists'] = 'mevcut değil';
+$labels['filtermatches'] = 'ifadeye uyan';
+$labels['filternotmatches'] = 'ifadeye uymayan';
+$labels['filterregex'] = 'düzenli ifadeye uyan';
+$labels['filternotregex'] = 'düzenli ifadeye uymayan';
+$labels['filterunder'] = 'altında';
+$labels['filterover'] = 'üzerinde';
+$labels['addrule'] = 'Kural ekle';
+$labels['delrule'] = 'Kuralı sil';
+$labels['messagemoveto'] = 'mesajı taşı';
+$labels['messageredirect'] = 'mesajı yönlendir';
+$labels['messagecopyto'] = 'Mesajı kopyala';
+$labels['messagesendcopy'] = 'mesajın kopyasını gönder';
+$labels['messagereply'] = 'mesajla birlikte cevap ver';
+$labels['messagedelete'] = 'Mesajı sil';
+$labels['messagediscard'] = 'mesajı yok say';
+$labels['messagesrules'] = 'Gelen e-postalar için:';
+$labels['messagesactions'] = '... aşağıdaki aksiyonları çalıştır:';
+$labels['add'] = 'Ekle';
+$labels['del'] = 'Sil';
+$labels['sender'] = 'Gönderici';
+$labels['recipient'] = 'Alıcı';
+$labels['vacationaddresses'] = 'İlave e-posta adreslerim(virgül ile ayrılmış)';
+$labels['vacationdays'] = 'Ne sıklıkla mesajlar gönderilir(gün)';
+$labels['vacationreason'] = 'Mesaj gövdesi(tatil sebebi):';
+$labels['vacationsubject'] = 'Mesaj konusu:';
+$labels['rulestop'] = 'Kuralları değerlendirmeyi bitir';
+$labels['enable'] = 'Etkinleştir/Etkisiz Kıl';
+$labels['filterset'] = 'Filtre seti';
+$labels['filtersets'] = 'Filtre setleri';
+$labels['filtersetadd'] = 'Filtre seti ekle';
+$labels['filtersetdel'] = 'Mevcut filtre setini sil';
+$labels['filtersetact'] = 'Mevcut filtre setini etkinleştir';
+$labels['filtersetdeact'] = 'Mevcut filtre setini etkinsizleştir';
+$labels['filterdef'] = 'Filtre tanımı';
+$labels['filtersetname'] = 'Filtre seti adı';
+$labels['newfilterset'] = 'Yeni filtre seti';
+$labels['active'] = 'etkin';
+$labels['none'] = 'hiçbiri';
+$labels['fromset'] = 'gönderici seti';
+$labels['fromfile'] = 'gönderici dosya';
+$labels['filterdisabled'] = 'Filtre iptal edildi';
+$labels['countisgreaterthan'] = 'toplamı büyük';
+$labels['countisgreaterthanequal'] = 'toplamı büyük veya eşit';
+$labels['countislessthan'] = 'toplamı az';
+$labels['countislessthanequal'] = 'toplamı daha az veya eşit';
+$labels['countequals'] = 'toplamı eşit';
+$labels['countnotequals'] = 'toplamı eşit degil';
+$labels['valueisgreaterthan'] = 'değeri büyük';
+$labels['valueisgreaterthanequal'] = 'değeri büyük veya eşit';
+$labels['valueislessthan'] = 'değer az';
+$labels['valueislessthanequal'] = 'değer daha az veya eşit';
+$labels['valueequals'] = 'değer eşit';
+$labels['valuenotequals'] = 'değer eşit değil';
+$labels['setflags'] = 'bayrakları mesaja set et';
+$labels['addflags'] = 'Bayrakları mesaja ekle';
+$labels['removeflags'] = 'Bayrakları mesajdan sil';
+$labels['flagread'] = 'Oku';
+$labels['flagdeleted'] = 'Silindi';
+$labels['flaganswered'] = 'Cevaplanmış';
+$labels['flagflagged'] = 'İşaretli';
+$labels['flagdraft'] = 'Taslak';
+$labels['filtercreate'] = 'Süzgeç oluştur';
+$labels['usedata'] = 'Aşağıdaki verileri süzgeçte kullan';
+$labels['nextstep'] = 'Sonraki adım';
+$labels['...'] = '...';
+$labels['advancedopts'] = 'Gelişmiş seçenekler';
+$labels['body'] = 'Gövde';
+$labels['address'] = 'adres';
+$labels['envelope'] = 'zarf';
+$labels['modifier'] = 'değiştirici';
+$labels['text'] = 'metin';
+$labels['undecoded'] = 'çözülmemiş(ham)';
+$labels['contenttype'] = 'içerik türü';
+$labels['modtype'] = 'tip:';
+$labels['allparts'] = 'hepsi';
+$labels['domain'] = 'alan adı';
+$labels['localpart'] = 'yerel parça';
+$labels['user'] = 'kullanıcı';
+$labels['detail'] = 'detay';
+$labels['comparator'] = 'karşılaştırıcı';
+$labels['default'] = 'öntanımlı';
+$labels['octet'] = 'sıkı(oktet)';
+$labels['asciicasemap'] = 'büyük küçük harf duyarsız(ascii-casemap)';
+$labels['asciinumeric'] = 'sayı (ascii-numeric)';
+$labels['filterunknownerror'] = 'Bilinmeyen sunucu hatası.';
+$labels['filterconnerror'] = 'Sunucuya bağlanamıyor.';
+$labels['filterdeleteerror'] = 'Filtre silinemedi. Sunucuda hata oluştu.';
+$labels['filterdeleted'] = 'Filtre başarıyla silindi.';
+$labels['filtersaved'] = 'Filter başarıyla kaydedildi.';
+$labels['filtersaveerror'] = 'Filtre kaydedilemedi. Sunucuda hata oluştu.';
+$labels['filterdeleteconfirm'] = 'Seçilen filtreleri  gerçekten silmek istiyor musun?';
+$labels['ruledeleteconfirm'] = 'Seçili kuralları silmek istediğinizden emin misiniz?';
+$labels['actiondeleteconfirm'] = 'Seçili aksiyonları silmek istediğinizden emin misiniz?';
+$labels['forbiddenchars'] = 'Alanda izin verilmeyen karakterler var.';
+$labels['cannotbeempty'] = 'Alan boş olmaz';
+$labels['ruleexist'] = 'Belirtilen isimde bir filtre zaten var.';
+$labels['setactivateerror'] = 'Seçilen filtreler etkinleştirilemedi. Sunucuda hata oluştu.';
+$labels['setdeactivateerror'] = 'Seçilen filtreler pasifleştirilemedi. Sunucuda hata oluştu.';
+$labels['setdeleteerror'] = 'Seçilen filtreler silinemedi. Sunucuda hata oluştu.';
+$labels['setactivated'] = 'Filtreler başarıyla etkinleştirilemedi.';
+$labels['setdeactivated'] = 'Filtreler başarıyla pasifleştirildi.';
+$labels['setdeleted'] = 'Filtre seti başarıyla silindi.';
+$labels['setdeleteconfirm'] = 'Seçilen filtre setlerini silmek istediğinizden emin misiniz?';
+$labels['setcreateerror'] = 'Filtre setleri oluşturulamadı. Sunucuda hata oluştu.';
+$labels['setcreated'] = 'Filtre setleri başarıyla oluşturuldu.';
+$labels['activateerror'] = 'Seçilen filtre(ler) etkinleştirilemedi. Sunucuda hata oluştu.';
+$labels['deactivateerror'] = 'Seçilen filtre(ler) pasifleştirilemedi. Sunucuda hata oluştu.';
+$labels['deactivated'] = 'Filtre(ler) başarıyla iptal edildi.';
+$labels['activated'] = 'Filtre(ler) başarıyla etkinleştirildi.';
+$labels['moved'] = 'Filtre başarıyla taşındı.';
+$labels['moveerror'] = 'Seçilen filtre(ler) taşınamadı. Sunucuda hata oluştu.';
+$labels['nametoolong'] = 'İsim çok uzun.';
+$labels['namereserved'] = 'rezerve edilmiş isim.';
+$labels['setexist'] = 'Set zaten var.';
+$labels['nodata'] = 'En az bir pozisyon seçilmelidir.';
+
diff --git a/plugins/managesieve/localization/vi_VN.inc b/plugins/managesieve/localization/vi_VN.inc
new file mode 100644 (file)
index 0000000..14e098d
--- /dev/null
@@ -0,0 +1,149 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/vi_VN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kenny Tran <kennethanh@gmail.com>                             |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['filters'] = 'Bộ lọc';
+$labels['managefilters'] = 'Quản lý bộ lọc thư đến';
+$labels['filtername'] = 'Lọc tên';
+$labels['newfilter'] = 'Bộ lọc mới';
+$labels['filteradd'] = 'Thêm bộ lọc';
+$labels['filterdel'] = 'Xóa bộ lọc';
+$labels['moveup'] = 'Chuyển lên';
+$labels['movedown'] = 'Chuyển xuống';
+$labels['filterallof'] = 'Phù hợp với tất cả các qui luật sau đây';
+$labels['filteranyof'] = 'Phù hợp với bất kỳ qui luật nào sau đây';
+$labels['filterany'] = 'Tất cả tin nhắn';
+$labels['filtercontains'] = 'Bao gồm';
+$labels['filternotcontains'] = 'Không bao gồm';
+$labels['filteris'] = 'Bằng với';
+$labels['filterisnot'] = 'Không bằng với';
+$labels['filterexists'] = 'Tồn tại';
+$labels['filternotexists'] = 'Không tồn tại';
+$labels['filtermatches'] = 'Tương ứng với cách diễn đạt';
+$labels['filternotmatches'] = 'Không tương ứng với cách diễn đạt';
+$labels['filterregex'] = 'Tương ứng với cách diễn đạt thông thường';
+$labels['filternotregex'] = 'Không phù  hợp với cách diễn đạt thông thường';
+$labels['filterunder'] = 'Dưới';
+$labels['filterover'] = 'Hơn';
+$labels['addrule'] = 'Thêm qui luật';
+$labels['delrule'] = 'Xóa qui luật';
+$labels['messagemoveto'] = 'Chuyển tin nhắn tới';
+$labels['messageredirect'] = 'Gửi lại tin nhắn tới';
+$labels['messagecopyto'] = 'Sao chép tin nhắn tới';
+$labels['messagesendcopy'] = 'Gửi bản sao chép tin nhắn tới';
+$labels['messagereply'] = 'Trả lời tin nhắn';
+$labels['messagedelete'] = 'Xóa thư';
+$labels['messagediscard'] = 'Loại bỏ với tin nhắn';
+$labels['messagesrules'] = 'Với thư đến';
+$labels['messagesactions'] = 'Thực hiện các hành động sau:';
+$labels['add'] = 'Thêm';
+$labels['del'] = 'Xoá';
+$labels['sender'] = 'Người gửi';
+$labels['recipient'] = 'Người nhận';
+$labels['vacationaddresses'] = 'Địa chỉ email bổ sung của tôi ( phân cách bằng dấu phẩy)';
+$labels['vacationdays'] = 'Số lần gửi thư (trong ngày)';
+$labels['vacationreason'] = 'Nội dung chính';
+$labels['vacationsubject'] = 'Tiêu đề thư';
+$labels['rulestop'] = 'Ngừng đánh giá qui luật';
+$labels['enable'] = 'Kích hoạt/Không kích hoạt';
+$labels['filterset'] = 'Đặt các bộ lọc';
+$labels['filtersets'] = 'Thiết lập bộ lọc';
+$labels['filtersetadd'] = 'Thêm bộ lọc';
+$labels['filtersetdel'] = 'Xóa bộ lọc hiện tại';
+$labels['filtersetact'] = 'Kích hoạt bộ lọc hiện tại';
+$labels['filtersetdeact'] = 'Ngừng kích hoạt bộ lọc hiện tai';
+$labels['filterdef'] = 'Định nghĩa bộ lọc';
+$labels['filtersetname'] = 'Tên bộ lọc';
+$labels['newfilterset'] = 'Thiết lập bộ lọc mới';
+$labels['active'] = 'Kích hoạt';
+$labels['none'] = 'Không có';
+$labels['fromset'] = 'Từ thiết lập';
+$labels['fromfile'] = 'Từ hồ sơ';
+$labels['filterdisabled'] = 'Bộ lọc được ngừng hoạt động';
+$labels['countisgreaterthan'] = 'Đếm lớn hơn';
+$labels['countisgreaterthanequal'] = 'Đếm lớn hơn hoặc bằng';
+$labels['countislessthan'] = 'Đếm ít hơn';
+$labels['countislessthanequal'] = 'Đếm ít hơn hoặc bằng';
+$labels['countequals'] = 'Đếm bằng';
+$labels['countnotequals'] = 'Đếm không bằng';
+$labels['valueisgreaterthan'] = 'Giá trị lớn hơn';
+$labels['valueisgreaterthanequal'] = 'Giá trị lớn hơn hoặc bằng';
+$labels['valueislessthan'] = 'Giá trị nhỏ hơn';
+$labels['valueislessthanequal'] = 'Giá trị nhỏ hơn hoặc bằng';
+$labels['valueequals'] = 'Giá trị bằng';
+$labels['valuenotequals'] = 'Giá trị không bằng';
+$labels['setflags'] = 'Thiết lập đánh dấu cho thư';
+$labels['addflags'] = 'Thêm đánh dấu cho thư';
+$labels['removeflags'] = 'Bỏ đánh dấu khỏi thư';
+$labels['flagread'] = 'Đọc';
+$labels['flagdeleted'] = 'Đã được xóa';
+$labels['flaganswered'] = 'Đã trả lời';
+$labels['flagflagged'] = 'Đã đánh dấu';
+$labels['flagdraft'] = 'Nháp';
+$labels['filtercreate'] = 'Tạo bộ lọc';
+$labels['usedata'] = 'Dùng dữ liệu trong bộ lọc sau:';
+$labels['nextstep'] = 'Bước tiếp theo';
+$labels['...'] = '…';
+$labels['advancedopts'] = 'Tùy chọn tính năng cao hơn';
+$labels['body'] = 'Nội dung';
+$labels['address'] = 'Địa chỉ';
+$labels['envelope'] = 'Phong bì';
+$labels['modifier'] = 'Bổ nghĩa';
+$labels['text'] = 'Văn bản';
+$labels['undecoded'] = 'Chưa được giải mã (nguyên bản)';
+$labels['contenttype'] = 'Kiểu mẫu nội dung';
+$labels['modtype'] = 'Kiểu:';
+$labels['allparts'] = 'Tất cả';
+$labels['domain'] = 'Phạm vi';
+$labels['localpart'] = 'Phần nội bộ';
+$labels['user'] = 'Người dùng';
+$labels['detail'] = 'Chi tiết';
+$labels['comparator'] = 'Vật so sánh';
+$labels['default'] = 'Mặc định';
+$labels['octet'] = 'Khắt khe';
+$labels['asciicasemap'] = 'Không phân biệt chữ hoa chữ thường';
+$labels['asciinumeric'] = 'Bảng mã ASCII';
+$labels['filterunknownerror'] = 'Không tìm được lỗi máy chủ';
+$labels['filterconnerror'] = 'Không kết nối được với máy chủ.';
+$labels['filterdeleteerror'] = 'Không thể xóa bộ lọc. Xuất hiện lỗi ở máy chủ';
+$labels['filterdeleted'] = 'Xóa bộ lọc thành công';
+$labels['filtersaved'] = 'Lưu bộ lọc thành công';
+$labels['filtersaveerror'] = 'Không thể lưu bộ lọc. Xuất hiện lỗi ở máy chủ';
+$labels['filterdeleteconfirm'] = 'Bạn có thực sự muốn xóa bộ lọc được chọn?';
+$labels['ruledeleteconfirm'] = 'Bạn có chắc chắn muốn xóa qui luật được chọn?';
+$labels['actiondeleteconfirm'] = 'Bạn có chắc chắn muốn xóa hành động được chọn?';
+$labels['forbiddenchars'] = 'Ký tự bị cấm trong ô';
+$labels['cannotbeempty'] = 'Ô không thể bị bỏ trống';
+$labels['ruleexist'] = 'Đã tồn tại bộ lọc với tên cụ thế';
+$labels['setactivateerror'] = 'Không thể kích hoạt bộ lọc được lựa chọn. Xuất hiện lỗi ở máy chủ';
+$labels['setdeactivateerror'] = 'Không thể không kích hoạt bộ lọc được lựa chọn. Xuất hiện lỗi ở máy chủ';
+$labels['setdeleteerror'] = 'Không thể xóa bộ lọc được lựa chọn. Forbidden characters in field.';
+$labels['setactivated'] = 'Bộ lọc được khởi động thành công';
+$labels['setdeactivated'] = 'Ngừng kích hoạt bộ lọc thành công';
+$labels['setdeleted'] = 'Xóa bộ lọc thành công';
+$labels['setdeleteconfirm'] = 'Bạn có chắc bạn muốn xóa thiết lập bộ lọc được chọn?';
+$labels['setcreateerror'] = 'Không thể tạo thiết lập bộ lọc. Có lỗi xuất hiện ở máy chủ';
+$labels['setcreated'] = 'Thiết lập bộ lọc được tạo thành công';
+$labels['activateerror'] = 'Không thể khởi động bộ lọc được chọn. Có lỗi xuất hiện ở máy chủ';
+$labels['deactivateerror'] = 'Không thể tắt bộ lọc đã chọn. Có lỗi xuất hiện ở máy chủ';
+$labels['deactivated'] = 'Bộ lọc được tắt thành công';
+$labels['activated'] = 'Bộ lọc được khởi động thành công';
+$labels['moved'] = 'Bộ lọc được chuyển đi thành công';
+$labels['moveerror'] = 'Không thể chuyển bộc lọc đã chọn. Có lỗi xuất hiện ở máy chủ';
+$labels['nametoolong'] = 'Tên quá dài';
+$labels['namereserved'] = 'Tên đã được bảo vệ';
+$labels['setexist'] = 'Thiết lập đã tồn tại';
+$labels['nodata'] = 'Ít nhất một vị trí phải được chọn';
+
index ac4afd1908a4a7d4a759110453b0d1341cdf0b20..e44fe07a812854d2370b8f508ea71d83c96d5d10 100644 (file)
@@ -9,18 +9,17 @@
  | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Thomas <Unknown>                                              |
+ | Author: Christopher Meng <cickumqt@gmail.com>                         |
  +-----------------------------------------------------------------------+
- @version $Id$
 */
 
 $labels = array();
 $labels['filters'] = '过滤器';
-$labels['managefilters'] = '管理邮件过滤';
-$labels['filtername'] = '过滤名称';
-$labels['newfilter'] = '新建过滤';
-$labels['filteradd'] = '添加过滤';
-$labels['filterdel'] = '删除过滤';
+$labels['managefilters'] = '管理邮件过滤规则';
+$labels['filtername'] = '过滤规则名称';
+$labels['newfilter'] = '新建过滤规则';
+$labels['filteradd'] = '添加过滤规则';
+$labels['filterdel'] = '删除过滤规则';
 $labels['moveup'] = '上移';
 $labels['movedown'] = '下移';
 $labels['filterallof'] = '匹配所有规则';
@@ -40,13 +39,13 @@ $labels['filterunder'] = '小于';
 $labels['filterover'] = '大于';
 $labels['addrule'] = '添加规则';
 $labels['delrule'] = '删除规则';
-$labels['messagemoveto'] = '将邮件移动到';
-$labels['messageredirect'] = '将邮件转发';
+$labels['messagemoveto'] = '将邮件移';
+$labels['messageredirect'] = '将邮件转发';
 $labels['messagecopyto'] = '复制邮件至';
 $labels['messagesendcopy'] = '发送复制邮件至';
 $labels['messagereply'] = '回复以下信息';
 $labels['messagedelete'] = '删除邮件';
-$labels['messagediscard'] = '弃邮件并回复以下信息';
+$labels['messagediscard'] = '弃邮件并回复以下信息';
 $labels['messagesrules'] = '对收取的邮件应用规则:';
 $labels['messagesactions'] = '...执行以下动作:';
 $labels['add'] = '添加';
@@ -54,8 +53,8 @@ $labels['del'] = '删除';
 $labels['sender'] = '发件人';
 $labels['recipient'] = '收件人';
 $labels['vacationaddresses'] = '收件人地址的附加名单(以逗号分隔)';
-$labels['vacationdays'] = '平常å¦\82ä½\95å\8f\91é\80\81é\82®ä»¶ï¼\88天æ\95°ï¼\89ï¼\9a';
-$labels['vacationreason'] = '邮件主体(休假原因)';
+$labels['vacationdays'] = 'å\8f\91é\80\81é\82®ä»¶é¢\91ç\8e\87(天æ\95°):';
+$labels['vacationreason'] = '邮件正文(休假原因)';
 $labels['vacationsubject'] = '邮件主题';
 $labels['rulestop'] = '停止评价规则';
 $labels['enable'] = '启用/禁用';
@@ -127,4 +126,22 @@ $labels['ruledeleteconfirm'] = '您确定要删除所选择的规则吗?';
 $labels['actiondeleteconfirm'] = '您确定要删除所选择的动作吗?';
 $labels['forbiddenchars'] = '内容中包含禁用的字符';
 $labels['cannotbeempty'] = '内容不能为空';
+$labels['ruleexist'] = '指定过滤器名称已存在。';
+$labels['setactivateerror'] = '无法启用指定过滤器,服务器错误。';
+$labels['setdeactivateerror'] = '无法停用指定过滤器,服务器错误。';
+$labels['setdeleteerror'] = '无法删除指定过滤器,服务器错误。';
+$labels['setactivated'] = '过滤器成功启用。';
+$labels['setdeactivated'] = '过滤器成功停用。';
+$labels['setdeleted'] = '过滤器成功删除。';
+$labels['setdeleteconfirm'] = '你确定要删除指定过滤器?';
+$labels['setcreateerror'] = '无法创建过滤器,服务器错误。';
+$labels['setcreated'] = '过滤器成功创建。';
+$labels['activateerror'] = '无法启用选中的过滤器,因为服务器发生错误。';
+$labels['deactivateerror'] = '无法禁用选中的过滤器,因为服务器发生错误。';
+$labels['deactivated'] = '禁用过滤器成功。';
+$labels['activated'] = '启用过滤器成功。';
+$labels['moved'] = '过滤器移动成功。';
+$labels['moveerror'] = '无法移动选中的过滤器,因为服务器发生错误。';
+$labels['nametoolong'] = '名称太长。';
+$labels['setexist'] = '设置已存在。';
 
index 10a547ad77ce1003cf57cbfdc2ebbb6d8a638092..4899d162bff3d05b397e5ec76568e95ebd56fee4 100644 (file)
@@ -9,9 +9,8 @@
  | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Nansen <Unknown>                                              |
+ | Author: Nansen                                                        |
  +-----------------------------------------------------------------------+
- @version $Id$
 */
 
 $labels = array();
@@ -125,5 +124,11 @@ $labels['setdeleted'] = '篩選器集合成功刪除';
 $labels['setdeleteconfirm'] = '你確定要刪除選擇的篩選器集合嗎?';
 $labels['setcreateerror'] = '無法建立篩選器集合。 伺服器發生錯誤';
 $labels['setcreated'] = '篩選器集合成功建立';
+$labels['activateerror'] = '無法啟用選擇的篩選器。伺服器錯誤';
+$labels['deactivateerror'] = '無法停用選擇的篩選器。伺服器錯誤';
+$labels['deactivated'] = '篩選器已停用';
+$labels['activated'] = '篩選器已啟用';
+$labels['moved'] = '篩選器已移動';
+$labels['moveerror'] = '無法移動選擇的篩選器。伺服器錯誤';
 $labels['nametoolong'] = '無法建立篩選器集合。 名稱太長';
 
index 1c6f2def642deeb1018da2d3c06eae8ca274ea0b..61883f6d2487eb4bd67dc7667f7b5f45fc350a5c 100644 (file)
@@ -11,7 +11,7 @@ if (window.rcmail) {
         rcmail.enable_command('managesieve-create', true);
     }
     else {
-      var tab = $('<span>').attr('id', 'settingstabpluginmanagesieve').addClass('tablink'),
+      var tab = $('<span>').attr('id', 'settingstabpluginmanagesieve').addClass('tablink filter'),
         button = $('<a>').attr('href', rcmail.env.comm_path+'&_action=plugin.managesieve')
           .attr('title', rcmail.gettext('managesieve.managefilters'))
           .html(rcmail.gettext('managesieve.filters'))
@@ -674,7 +674,8 @@ rcube_webmail.prototype.managesieve_tip_register = function(tips)
         function(e) {
           var offset = $(this).offset(),
             left = offset.left,
-            top = offset.top - 12;
+            top = offset.top - 12,
+            minwidth = $(this).width();
 
           if (framed) {
             offset = $((rcmail.env.task == 'mail'  ? '#sievefilterform > iframe' : '#filter-box'), parent.document).offset();
@@ -685,7 +686,7 @@ rcube_webmail.prototype.managesieve_tip_register = function(tips)
           tip.html(e.data.str)
           top -= tip.height();
 
-          tip.css({left: left, top: top}).show();
+          tip.css({left: left, top: top, minWidth: (minwidth-2) + 'px'}).show();
         })
       .bind('mouseleave', function(e) { tip.hide(); });
   }
@@ -778,9 +779,10 @@ rcube_webmail.prototype.managesieve_dialog_resize = function(o)
 {
   var dialog = this.env.managesieve_dialog,
     win = $(window), form = $(o);
-    width = form.width(), height = form.height(),
+    width = $('fieldset:first', o).width(), // fieldset width is more appropriate here
+    height = form.height(),
     w = win.width(), h = win.height();
 
   dialog.dialog('option', { height: Math.min(h-20, height+120), width: Math.min(w-20, width+65) })
-    .dialog('option', 'position', ['center', 'center']);  // only works in a separate call (!?)
+    .dialog('option', 'position', ['center', 'center']);  // works in a separate call only (!?)
 }
index 9e2e8e11fb24965c169456545bfc47c77ef5223a..84d8ef6cafde73856e8086b9f3d837e7e849ce68 100644 (file)
@@ -28,7 +28,7 @@
  * with this program; if not, write to the Free Software Foundation, Inc.,
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
- * $Id: managesieve.php 5712 2012-01-05 08:50:07Z alec $
+ * $Id$
  */
 
 class managesieve extends rcube_plugin
@@ -64,7 +64,7 @@ class managesieve extends rcube_plugin
         "x-beenthere",
     );
 
-    const VERSION = '5.0';
+    const VERSION = '5.2';
     const PROGNAME = 'Roundcube (Managesieve)';
 
 
@@ -128,8 +128,9 @@ class managesieve extends rcube_plugin
                 'command'  => 'managesieve-create',
                 'label'    => 'managesieve.filtercreate',
                 'type'     => 'link',
-                'classact' => 'filterlink active',
-                'class'    => 'filterlink',
+                'classact' => 'icon filterlink active',
+                'class'    => 'icon filterlink',
+                'innerclass' => 'icon filterlink',
             ))), 'messagemenu');
 
         // register some labels/messages
@@ -144,17 +145,24 @@ class managesieve extends rcube_plugin
      */
     function mail_headers($args)
     {
+        // this hook can be executed many times
+        if ($this->mail_headers_done) {
+            return $args;
+        }
+
+        $this->mail_headers_done = true;
+
         $headers = $args['headers'];
         $ret     = array();
 
         if ($headers->subject)
-            $ret[] = array('Subject', $this->rc->imap->decode_header($headers->subject));
+            $ret[] = array('Subject', rcube_mime::decode_header($headers->subject));
 
         // @TODO: List-Id, others?
         foreach (array('From', 'To') as $h) {
             $hl = strtolower($h);
             if ($headers->$hl) {
-                $list = $this->rc->imap->decode_address_list($headers->$hl);
+                $list = rcube_mime::decode_address_list($headers->$hl);
                 foreach ($list as $item) {
                     if ($item['mailto']) {
                         $ret[] = array($h, $item['mailto']);
@@ -708,9 +716,12 @@ class managesieve extends rcube_plugin
                             if (!count($headers))
                                 $this->errors['tests'][$i]['header'] = $this->gettext('cannotbeempty');
                             else {
-                                foreach ($headers as $hr)
-                                    if (!preg_match('/^[a-z0-9-]+$/i', $hr))
+                                foreach ($headers as $hr) {
+                                    // RFC2822: printable ASCII except colon
+                                    if (!preg_match('/^[\x21-\x39\x41-\x7E]+$/i', $hr)) {
                                         $this->errors['tests'][$i]['header'] = $this->gettext('forbiddenchars');
+                                    }
+                                }
                             }
 
                             if (empty($this->errors['tests'][$i]['header']))
@@ -1514,7 +1525,6 @@ class managesieve extends rcube_plugin
         else
             $mailbox = '';
 
-        $this->rc->imap_connect();
         $select = rcmail_mailbox_select(array(
             'realnames' => false,
             'maxlength' => 100,
index 56655d248b99e76d610cd987cc3ca46ecf1ba4f8..cde78c9a3feeed2965d916ff2b7a5270436b58ad 100644 (file)
@@ -17,9 +17,9 @@
                <email>alec@alec.pl</email>
                <active>yes</active>
        </lead>
-       <date>2011-11-17</date>
+       <date>2012-06-21</date>
        <version>
-               <release>5.0</release>
+               <release>5.1</release>
                <api>5.0</api>
        </version>
        <stability>
                                <tasks:replace from="@name@" to="name" type="package-info"/>
                                <tasks:replace from="@package_version@" to="version" type="package-info"/>
                        </file>
+                       <file name="localization/be_BE.inc" role="data"></file>
                        <file name="localization/bg_BG.inc" role="data"></file>
+                       <file name="localization/bs_BA.inc" role="data"></file>
+                       <file name="localization/ca_ES_BA.inc" role="data"></file>
                        <file name="localization/cs_CZ.inc" role="data"></file>
+                       <file name="localization/cy_GB.inc" role="data"></file>
+                       <file name="localization/da_DK.inc" role="data"></file>
                        <file name="localization/de_CH.inc" role="data"></file>
                        <file name="localization/de_DE.inc" role="data"></file>
                        <file name="localization/el_GR.inc" role="data"></file>
                        <file name="localization/en_GB.inc" role="data"></file>
                        <file name="localization/en_US.inc" role="data"></file>
+                       <file name="localization/eo.inc" role="data"></file>
                        <file name="localization/es_AR.inc" role="data"></file>
                        <file name="localization/es_ES.inc" role="data"></file>
                        <file name="localization/et_EE.inc" role="data"></file>
+                       <file name="localization/fa_IR.inc" role="data"></file>
                        <file name="localization/fi_FI.inc" role="data"></file>
                        <file name="localization/fr_FR.inc" role="data"></file>
                        <file name="localization/gl_ES.inc" role="data"></file>
+                       <file name="localization/he_IL.inc" role="data"></file>
                        <file name="localization/hr_HR.inc" role="data"></file>
                        <file name="localization/hu_HU.inc" role="data"></file>
+                       <file name="localization/ia_IA.inc" role="data"></file>
+                       <file name="localization/id_ID.inc" role="data"></file>
                        <file name="localization/it_IT.inc" role="data"></file>
                        <file name="localization/ja_JP.inc" role="data"></file>
+                       <file name="localization/lt_LT.inc" role="data"></file>
                        <file name="localization/lv_LV.inc" role="data"></file>
+                       <file name="localization/ml_ML.inc" role="data"></file>
+                       <file name="localization/mr_IN.inc" role="data"></file>
                        <file name="localization/nb_NO.inc" role="data"></file>
                        <file name="localization/nl_NL.inc" role="data"></file>
                        <file name="localization/pl_PL.inc" role="data"></file>
                        <file name="localization/pt_BR.inc" role="data"></file>
                        <file name="localization/pt_PT.inc" role="data"></file>
+                       <file name="localization/ro_RO.inc" role="data"></file>
                        <file name="localization/ru_RU.inc" role="data"></file>
+                       <file name="localization/si_LK.inc" role="data"></file>
                        <file name="localization/sk_SK.inc" role="data"></file>
                        <file name="localization/sl_SI.inc" role="data"></file>
                        <file name="localization/sv_SE.inc" role="data"></file>
+                       <file name="localization/tr_TR.inc" role="data"></file>
                        <file name="localization/uk_UA.inc" role="data"></file>
+                       <file name="localization/vi_VN.inc" role="data"></file>
                        <file name="localization/zh_CN.inc" role="data"></file>
                        <file name="localization/zh_TW.inc" role="data"></file>
-                       <file name="skins/default/managesieve.css" role="data"></file>
-                       <file name="skins/default/managesieve_mail.css" role="data"></file>
-                       <file name="skins/default/templates/filteredit.html" role="data"></file>
-                       <file name="skins/default/templates/managesieve.html" role="data"></file>
-                       <file name="skins/default/templates/setedit.html" role="data"></file>
-                       <file name="skins/default/images/add.png" role="data"></file>
-                       <file name="skins/default/images/del.png" role="data"></file>
-                       <file name="skins/default/images/down_small.gif" role="data"></file>
-                       <file name="skins/default/images/filter.png" role="data"></file>
-                       <file name="skins/default/images/up_small.gif" role="data"></file>
+                       <file name="skins/classic/managesieve.css" role="data"></file>
+                       <file name="skins/classic/managesieve_mail.css" role="data"></file>
+                       <file name="skins/classic/templates/filteredit.html" role="data"></file>
+                       <file name="skins/classic/templates/managesieve.html" role="data"></file>
+                       <file name="skins/classic/templates/setedit.html" role="data"></file>
+                       <file name="skins/classic/images/add.png" role="data"></file>
+                       <file name="skins/classic/images/del.png" role="data"></file>
+                       <file name="skins/classic/images/down_small.gif" role="data"></file>
+                       <file name="skins/classic/images/filter.png" role="data"></file>
+                       <file name="skins/classic/images/up_small.gif" role="data"></file>
                        <file name="managesieve.php" role="php"></file>
                        <file name="lib/rcube_sieve.php" role="php"></file>
                        <file name="lib/rcube_sieve_script.php" role="php"></file>
diff --git a/plugins/managesieve/skins/classic/images/add.png b/plugins/managesieve/skins/classic/images/add.png
new file mode 100644 (file)
index 0000000..97a6422
Binary files /dev/null and b/plugins/managesieve/skins/classic/images/add.png differ
diff --git a/plugins/managesieve/skins/classic/images/del.png b/plugins/managesieve/skins/classic/images/del.png
new file mode 100644 (file)
index 0000000..518905b
Binary files /dev/null and b/plugins/managesieve/skins/classic/images/del.png differ
diff --git a/plugins/managesieve/skins/classic/images/down_small.gif b/plugins/managesieve/skins/classic/images/down_small.gif
new file mode 100644 (file)
index 0000000..f865893
Binary files /dev/null and b/plugins/managesieve/skins/classic/images/down_small.gif differ
diff --git a/plugins/managesieve/skins/classic/images/filter.png b/plugins/managesieve/skins/classic/images/filter.png
new file mode 100644 (file)
index 0000000..a79ba10
Binary files /dev/null and b/plugins/managesieve/skins/classic/images/filter.png differ
diff --git a/plugins/managesieve/skins/classic/images/up_small.gif b/plugins/managesieve/skins/classic/images/up_small.gif
new file mode 100644 (file)
index 0000000..40deb89
Binary files /dev/null and b/plugins/managesieve/skins/classic/images/up_small.gif differ
diff --git a/plugins/managesieve/skins/classic/managesieve.css b/plugins/managesieve/skins/classic/managesieve.css
new file mode 100644 (file)
index 0000000..9527b44
--- /dev/null
@@ -0,0 +1,317 @@
+#filtersetslistbox
+{
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  left: 0;
+  width: 195px;
+  border: 1px solid #999999;
+  background-color: #F9F9F9;
+  overflow: hidden;
+  /* css hack for IE */
+  height: expression(parseInt(this.parentNode.offsetHeight)+'px');
+}
+
+#filtersscreen
+{
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 205px;
+  /* css hack for IE */
+  height: expression(parseInt(this.parentNode.offsetHeight)+'px');
+}
+
+#filterslistbox
+{
+  position: absolute;
+  left: 0;
+  top: 0;
+  bottom: 0;
+  border: 1px solid #999999;
+  overflow: auto;
+  /* css hack for IE */
+  height: expression(parseInt(this.parentNode.offsetHeight)+'px');
+}
+
+#filterslist,
+#filtersetslist
+{
+  width: 100%;
+  table-layout: fixed;
+}
+
+#filterslist tbody td,
+#filtersetslist tbody td
+{
+  cursor: default;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+}
+
+#filterslist tbody tr.disabled td,
+#filtersetslist tbody tr.disabled td
+{
+  color: #999999;
+}
+
+#filtersetslist tbody td
+{
+  font-weight: bold;
+}
+/*
+#filtersetslist tr.selected
+{
+  background-color: #929292;
+  border-bottom: 1px solid #898989;
+  color: #FFF;
+  font-weight: bold;
+}
+*/
+
+#filterslist tbody tr.filtermoveup td
+{
+  border-top: 2px dotted #555;
+  padding-top: 0px;
+}
+
+#filterslist tbody tr.filtermovedown td
+{
+  border-bottom: 2px dotted #555;
+  padding-bottom: 1px;
+}
+
+#filter-box
+{
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  border: 1px solid #999999;
+  overflow: hidden;
+  /* css hack for IE */
+  width: expression((parseInt(this.parentNode.offsetWidth)-20-parseInt(document.getElementById('filterslistbox').offsetWidth))+'px');
+  height: expression(parseInt(this.parentNode.offsetHeight)+'px');
+}
+
+#filter-frame
+{
+  border: none;
+}
+
+body.iframe
+{
+  min-width: 620px;
+  width: expression(Math.max(620, document.documentElement.clientWidth)+'px');
+  background-color: #F2F2F2;
+}
+
+#filter-form
+{
+  min-width: 550px;
+  width: expression(Math.max(550, document.documentElement.clientWidth)+'px');
+  white-space: nowrap;
+  padding: 20px 10px 10px 10px;
+}
+
+legend, label
+{
+  color: #666666;
+}
+
+#rules, #actions
+{
+  margin-top: 5px;
+  padding: 0;
+  border-collapse: collapse;
+}
+
+div.rulerow, div.actionrow
+{
+  width: auto;
+  padding: 2px;
+  white-space: nowrap;
+  border: 1px solid #F2F2F2;
+}
+
+div.rulerow:hover, div.actionrow:hover
+{
+  padding: 2px;
+  white-space: nowrap;
+  background: #F9F9F9;
+  border: 1px solid silver;
+}
+
+div.rulerow table, div.actionrow table
+{
+  padding: 0px;
+  min-width: 600px;
+  width: expression(Math.max(600, document.documentElement.clientWidth)+'px');
+}
+
+td
+{
+  vertical-align: top;
+}
+
+td.advbutton
+{
+  width: 1%;
+}
+
+td.advbutton a
+{
+  display: block;
+  padding-top: 14px;
+  height: 6px;
+  width: 12px;
+  text-decoration: none;
+}
+
+td.advbutton a.show
+{
+  background: url(images/down_small.gif) center no-repeat;
+}
+
+td.advbutton a.hide
+{
+  background: url(images/up_small.gif) center no-repeat;
+}
+
+td.rowbuttons
+{
+  text-align: right;
+  white-space: nowrap;
+  width: 1%;
+}
+
+td.rowactions
+{
+  white-space: nowrap;
+  width: 1%;
+  padding-top: 2px;
+}
+
+td.rowtargets
+{
+  white-space: nowrap;
+  width: 98%;
+  padding-left: 3px;
+  padding-top: 2px;
+}
+
+td.rowtargets div.adv
+{
+  padding-top: 3px;
+}
+
+input.disabled, input.disabled:hover
+{
+  color: #999999;
+}
+
+input.error, textarea.error
+{
+  background-color: #FFFF88;
+}
+
+input.box,
+input.radio
+{
+  border: 0;
+  margin-top: 0;
+}
+
+select.operator_selector
+{
+  width: 200px;
+}
+
+td.rowtargets span,
+span.label
+{
+  color: #666666;
+  font-size: 10px;
+  white-space: nowrap;
+}
+
+#footer
+{
+  padding-top: 5px;
+  width: 100%;
+}
+
+#footer .footerleft
+{
+  padding-left: 2px;
+  white-space: nowrap;
+  float: left;
+}
+
+#footer .footerright
+{
+  padding-right: 2px;
+  white-space: nowrap;
+  text-align: right;
+  float: right;
+}
+
+.itemlist
+{
+  line-height: 25px;
+}
+
+.itemlist input
+{
+  vertical-align: middle;
+}
+
+span.sieve.error
+{
+  color: red;
+}
+
+a.button.add
+{
+  background: url(images/add.png) no-repeat;
+  width: 30px;
+  height: 20px;
+  margin-right: 4px;
+  display: inline-block;
+}
+
+a.button.del
+{
+  background: url(images/del.png) no-repeat;
+  width: 30px;
+  height: 20px;
+  display: inline-block;
+}
+
+a.button.disabled
+{
+  opacity: 0.35;
+  filter: alpha(opacity=35);
+  cursor: default;
+}
+
+#filter-form select,
+#filter-form input,
+#filter-form textarea
+{
+  font-size: 11px;
+}
+
+/* fixes for popup window */
+
+body.iframe.mail
+{
+  margin: 0;
+  padding: 0;
+}
+
+body.iframe.mail #filter-form
+{
+  padding: 10px 5px 5px 5px;
+}
diff --git a/plugins/managesieve/skins/classic/managesieve_mail.css b/plugins/managesieve/skins/classic/managesieve_mail.css
new file mode 100644 (file)
index 0000000..87a11cc
--- /dev/null
@@ -0,0 +1,62 @@
+#messagemenu li a.filterlink {
+  background-image: url(images/filter.png);
+  background-position: 7px 0;
+}
+
+#sievefilterform {
+  top: 0;
+  bottom: 0;
+  left: 0;
+  right: 0;
+  background-color: #F2F2F2;
+  border: 1px solid #999999;
+  padding: 0;
+  margin: 5px;
+}
+
+#sievefilterform iframe {
+  top: 0;
+  bottom: 0;
+  left: 0;
+  right: 0;
+  width: 100%;
+  min-height: 100%; /* Chrome 14 bug */
+  background-color: #F2F2F2;
+  border: 0;
+  padding: 0;
+  margin: 0;
+}
+
+#sievefilterform ul {
+  list-style: none;
+  padding: 0;
+  margin: 0;
+  margin-top: 5px;
+}
+
+#sievefilterform fieldset {
+  margin: 5px;
+}
+
+#sievefilterform ul li {
+  margin-bottom: 5px;
+  white-space: nowrap;
+}
+
+#sievefilterform ul li input {
+  margin-right: 5px;
+}
+
+#sievefilterform label {
+  font-weight: bold;
+}
+
+#managesieve-tip
+{
+  z-index: 100000;
+}
+
+span.sieve.error
+{
+  color: red;
+}
diff --git a/plugins/managesieve/skins/classic/templates/filteredit.html b/plugins/managesieve/skins/classic/templates/filteredit.html
new file mode 100644 (file)
index 0000000..6ecb03c
--- /dev/null
@@ -0,0 +1,33 @@
+<!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><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<link rel="stylesheet" type="text/css" href="/this/managesieve.css" />
+</head>
+<body class="iframe<roundcube:exp expression="env:task != 'mail' ? '' : ' mail'" />">
+
+<roundcube:if condition="env:task != 'mail'" />
+<div id="filter-title" class="boxtitle"><roundcube:label name="managesieve.filterdef" /></div>
+<roundcube:endif />
+
+<div id="filter-form" class="boxcontent">
+<roundcube:object name="filterform" />
+
+<roundcube:if condition="env:task != 'mail'" />
+<div id="footer">
+<div class="footerleft">
+<roundcube:button command="plugin.managesieve-save" type="input" class="button mainaction" label="save" />
+</div>
+<div class="footerright">
+<label for="disabled"><roundcube:label name="managesieve.filterdisabled" /></label>
+<input type="checkbox" id="disabled" name="_disabled" value="1" />
+</div>
+</div>
+<roundcube:endif />
+
+</form>
+</div>
+
+</body>
+</html>
diff --git a/plugins/managesieve/skins/classic/templates/managesieve.html b/plugins/managesieve/skins/classic/templates/managesieve.html
new file mode 100644 (file)
index 0000000..71eebe1
--- /dev/null
@@ -0,0 +1,87 @@
+<!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><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<link rel="stylesheet" type="text/css" href="/this/managesieve.css" />
+<script type="text/javascript" src="/functions.js"></script>
+<script type="text/javascript" src="/splitter.js"></script>
+
+<style type="text/css">
+#filterslistbox { width: <roundcube:exp expression="!empty(cookie:sieveviewsplitter) ? cookie:sieveviewsplitter-5 : 210" />px; }
+#filter-box { left: <roundcube:exp expression="!empty(cookie:sieveviewsplitter) ? cookie:sieveviewsplitter+5 : 220" />px;
+<roundcube:exp expression="browser:ie ? ('width:expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:sieveviewsplitter) ? cookie:sieveviewsplitter+5 : 220).')+\\'px\\');') : ''" />
+}
+#filtersetslistbox { width: <roundcube:exp expression="!empty(cookie:sieveviewsplitter2) ? cookie:sieveviewsplitter2-5 : 175" />px; }
+#filtersscreen { left: <roundcube:exp expression="!empty(cookie:sieveviewsplitter2) ? cookie:sieveviewsplitter2+5 : 185" />px;
+<roundcube:exp expression="browser:ie ? ('width:expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:sieveviewsplitter2) ? cookie:sieveviewsplitter2+5 : 185).')+\\'px\\');') : ''" />
+}
+</style>
+
+</head>
+<body onload="rcube_init_mail_ui()">
+
+<roundcube:include file="/includes/taskbar.html" />
+<roundcube:include file="/includes/header.html" />
+<roundcube:include file="/includes/settingstabs.html" />
+
+<div id="mainscreen">
+
+<div id="filtersetslistbox">
+<div id="filtersetslist-title" class="boxtitle"><roundcube:label name="managesieve.filtersets" /></div>
+<div class="boxlistcontent">
+  <roundcube:object name="filtersetslist" id="filtersetslist" class="records-table" cellspacing="0" summary="Filters list" type="list" noheader="true" />
+</div>
+<div class="boxfooter">
+  <roundcube:button command="plugin.managesieve-setadd" type="link" title="managesieve.filtersetadd" class="buttonPas addfilterset" classAct="button addfilterset" content=" " />
+  <roundcube:button name="filtersetmenulink" id="filtersetmenulink" type="link" title="moreactions" class="button groupactions" onclick="rcmail_ui.show_popup('filtersetmenu', undefined, {above:1});return false" content=" " />
+</div>
+</div>
+
+<div id="filtersscreen">
+<div id="filterslistbox">
+<div class="boxtitle"><roundcube:label name="managesieve.filters" /></div>
+<div class="boxlistcontent">
+  <roundcube:object name="filterslist" id="filterslist" class="records-table" cellspacing="0" summary="Filters list" noheader="true" />
+</div>
+<div class="boxfooter">
+  <roundcube:button command="plugin.managesieve-add" type="link" title="managesieve.filteradd" class="buttonPas addfilter" classAct="button addfilter" content=" " />
+  <roundcube:button name="filtermenulink" id="filtermenulink" type="link" title="moreactions" class="button groupactions" onclick="rcmail_ui.show_popup('filtermenu', undefined, {above:1});return false" content=" " />
+</div>
+</div>
+
+<script type="text/javascript">
+  var sieveviewsplit2 = new rcube_splitter({id:'sieveviewsplitter2', p1: 'filtersetslistbox', p2: 'filtersscreen', orientation: 'v', relative: true, start: 200});
+  rcmail.add_onload('sieveviewsplit2.init()');
+
+  var sieveviewsplit = new rcube_splitter({id:'sieveviewsplitter', p1: 'filterslistbox', p2: 'filter-box', orientation: 'v', relative: true, start: 215});
+  rcmail.add_onload('sieveviewsplit.init()');
+</script>
+
+<div id="filter-box">
+  <roundcube:object name="filterframe" id="filter-frame" width="100%" height="100%" frameborder="0" src="/watermark.html" />
+</div>
+
+</div>
+</div>
+</div>
+
+<div id="filtersetmenu" class="popupmenu">
+  <ul>
+    <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>
+    <roundcube:container name="filtersetoptions" id="filtersetmenu" />
+  </ul>
+</div>
+
+<div id="filtermenu" class="popupmenu">
+  <ul>
+    <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>
+    <roundcube:container name="filteroptions" id="filtermenu" />
+  </ul>
+</div>
+
+</body>
+</html>
diff --git a/plugins/managesieve/skins/classic/templates/setedit.html b/plugins/managesieve/skins/classic/templates/setedit.html
new file mode 100644 (file)
index 0000000..26f7fec
--- /dev/null
@@ -0,0 +1,24 @@
+<!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><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<link rel="stylesheet" type="text/css" href="/this/managesieve.css" />
+</head>
+<body class="iframe">
+
+<div id="filter-title" class="boxtitle"><roundcube:label name="managesieve.newfilterset" /></div>
+
+<div id="filter-form" class="boxcontent">
+<roundcube:object name="filtersetform" />
+
+<p>
+<roundcube:button command="plugin.managesieve-save" type="input" class="button mainaction" label="save" />
+</p>
+
+</form>
+</div>
+
+
+</body>
+</html>
diff --git a/plugins/managesieve/skins/default/images/add.png b/plugins/managesieve/skins/default/images/add.png
deleted file mode 100644 (file)
index 97a6422..0000000
Binary files a/plugins/managesieve/skins/default/images/add.png and /dev/null differ
diff --git a/plugins/managesieve/skins/default/images/del.png b/plugins/managesieve/skins/default/images/del.png
deleted file mode 100644 (file)
index 518905b..0000000
Binary files a/plugins/managesieve/skins/default/images/del.png and /dev/null differ
diff --git a/plugins/managesieve/skins/default/images/down_small.gif b/plugins/managesieve/skins/default/images/down_small.gif
deleted file mode 100644 (file)
index f865893..0000000
Binary files a/plugins/managesieve/skins/default/images/down_small.gif and /dev/null differ
diff --git a/plugins/managesieve/skins/default/images/filter.png b/plugins/managesieve/skins/default/images/filter.png
deleted file mode 100644 (file)
index a79ba10..0000000
Binary files a/plugins/managesieve/skins/default/images/filter.png and /dev/null differ
diff --git a/plugins/managesieve/skins/default/images/up_small.gif b/plugins/managesieve/skins/default/images/up_small.gif
deleted file mode 100644 (file)
index 40deb89..0000000
Binary files a/plugins/managesieve/skins/default/images/up_small.gif and /dev/null differ
diff --git a/plugins/managesieve/skins/default/managesieve.css b/plugins/managesieve/skins/default/managesieve.css
deleted file mode 100644 (file)
index 60f6325..0000000
+++ /dev/null
@@ -1,322 +0,0 @@
-#filtersetslistbox
-{
-  position: absolute;
-  top: 0;
-  bottom: 0;
-  left: 0;
-  width: 195px;
-  border: 1px solid #999999;
-  background-color: #F9F9F9;
-  overflow: hidden;
-  /* css hack for IE */
-  height: expression(parseInt(this.parentNode.offsetHeight)+'px');
-}
-
-#filtersscreen
-{
-  position: absolute;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 205px;
-  /* css hack for IE */
-  height: expression(parseInt(this.parentNode.offsetHeight)+'px');
-}
-
-#filterslistbox
-{
-  position: absolute;
-  left: 0;
-  top: 0;
-  bottom: 0;
-  border: 1px solid #999999;
-  overflow: auto;
-  /* css hack for IE */
-  height: expression(parseInt(this.parentNode.offsetHeight)+'px');
-}
-
-#filterslist,
-#filtersetslist
-{
-  width: 100%;
-  table-layout: fixed;
-}
-
-#filterslist tbody td,
-#filtersetslist tbody td
-{
-  cursor: default;
-  text-overflow: ellipsis;
-  -o-text-overflow: ellipsis;
-}
-
-#filterslist tbody tr.disabled td,
-#filtersetslist tbody tr.disabled td
-{
-  color: #999999;
-}
-
-#filtersetslist tbody td
-{
-  font-weight: bold;
-}
-/*
-#filtersetslist tr.selected
-{
-  background-color: #929292;
-  border-bottom: 1px solid #898989;
-  color: #FFF;
-  font-weight: bold;
-}
-*/
-
-#filterslist tbody tr.filtermoveup td
-{
-  border-top: 2px dotted #555;
-  padding-top: 0px;
-}
-
-#filterslist tbody tr.filtermovedown td
-{
-  border-bottom: 2px dotted #555;
-  padding-bottom: 1px;
-}
-
-#filter-box
-{
-  position: absolute;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  border: 1px solid #999999;
-  overflow: hidden;
-  /* css hack for IE */
-  width: expression((parseInt(this.parentNode.offsetWidth)-20-parseInt(document.getElementById('filterslistbox').offsetWidth))+'px');
-  height: expression(parseInt(this.parentNode.offsetHeight)+'px');
-}
-
-#filter-frame
-{
-  border: none;
-}
-
-body.iframe
-{
-  min-width: 620px;
-  width: expression(Math.max(620, document.documentElement.clientWidth)+'px');
-  background-color: #F2F2F2;
-}
-
-#filter-form
-{
-  min-width: 550px;
-  width: expression(Math.max(550, document.documentElement.clientWidth)+'px');
-  white-space: nowrap;
-  padding: 20px 10px 10px 10px;
-}
-
-legend, label
-{
-  color: #666666;
-}
-
-#rules, #actions
-{
-  margin-top: 5px;
-  padding: 0;
-  border-collapse: collapse;
-}
-
-div.rulerow, div.actionrow
-{
-  width: auto;
-  padding: 2px;
-  white-space: nowrap;
-  border: 1px solid #F2F2F2;
-}
-
-div.rulerow:hover, div.actionrow:hover
-{
-  padding: 2px;
-  white-space: nowrap;
-  background: #F9F9F9;
-  border: 1px solid silver;
-}
-
-div.rulerow table, div.actionrow table
-{
-  padding: 0px;
-  min-width: 600px;
-  width: expression(Math.max(600, document.documentElement.clientWidth)+'px');
-}
-
-td
-{
-  vertical-align: top;
-}
-
-td.advbutton
-{
-  width: 1%;
-}
-
-td.advbutton a
-{
-  display: block;
-  padding-top: 14px;
-  height: 6px;
-  width: 12px;
-  text-decoration: none;
-}
-
-td.advbutton a.show
-{
-  background: url(images/down_small.gif) center no-repeat;
-}
-
-td.advbutton a.hide
-{
-  background: url(images/up_small.gif) center no-repeat;
-}
-
-td.rowbuttons
-{
-  text-align: right;
-  white-space: nowrap;
-  width: 1%;
-}
-
-td.rowactions
-{
-  white-space: nowrap;
-  width: 1%;
-  padding-top: 2px;
-}
-
-td.rowtargets
-{
-  white-space: nowrap;
-  width: 98%;
-  padding-left: 3px;
-  padding-top: 2px;
-}
-
-td.rowtargets div.adv
-{
-  padding-top: 3px;
-}
-
-input.disabled, input.disabled:hover
-{
-  color: #999999;
-}
-
-input.error, textarea.error
-{
-  background-color: #FFFF88;
-}
-
-input.box,
-input.radio
-{
-  border: 0;
-  margin-top: 0;
-}
-
-select.operator_selector
-{
-  width: 200px;
-}
-
-td.rowtargets span,
-span.label
-{
-  color: #666666;
-  font-size: 10px;
-  white-space: nowrap;
-}
-
-#footer
-{
-  padding-top: 5px;
-  width: 100%;
-}
-
-#footer .footerleft
-{
-  padding-left: 2px;
-  white-space: nowrap;
-  float: left;
-}
-
-#footer .footerright
-{
-  padding-right: 2px;
-  white-space: nowrap;
-  text-align: right;
-  float: right;
-}
-
-.itemlist
-{
-  line-height: 25px;
-}
-
-.itemlist input
-{
-  vertical-align: middle;
-}
-
-span.sieve.error
-{
-  color: red;
-}
-
-#managesieve-tip
-{
-  width: 200px;
-}
-
-a.button.add
-{
-  background: url(images/add.png) no-repeat;
-  width: 30px;
-  height: 20px;
-  margin-right: 4px;
-  display: inline-block;
-}
-
-a.button.del
-{
-  background: url(images/del.png) no-repeat;
-  width: 30px;
-  height: 20px;
-  display: inline-block;
-}
-
-a.button.disabled
-{
-  opacity: 0.35;
-  filter: alpha(opacity=35);
-  cursor: default;
-}
-
-#filter-form select,
-#filter-form input,
-#filter-form textarea
-{
-  font-size: 11px;
-}
-
-/* fixes for popup window */
-
-body.iframe.mail
-{
-  margin: 0;
-  padding: 0;
-}
-
-body.iframe.mail #filter-form
-{
-  padding: 10px 5px 5px 5px;
-}
diff --git a/plugins/managesieve/skins/default/managesieve_mail.css b/plugins/managesieve/skins/default/managesieve_mail.css
deleted file mode 100644 (file)
index 7fefaed..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-#messagemenu li a.filterlink {
-  background-image: url(images/filter.png);
-  background-position: 7px 0;
-}
-
-#sievefilterform {
-  top: 0;
-  bottom: 0;
-  left: 0;
-  right: 0;
-  background-color: #F2F2F2;
-  border: 1px solid #999999;
-  padding: 0;
-  margin: 5px;
-}
-
-#sievefilterform iframe {
-  top: 0;
-  bottom: 0;
-  left: 0;
-  right: 0;
-  width: 100%;
-  min-height: 100%; /* Chrome 14 bug */
-  background-color: #F2F2F2;
-  border: 0;
-  padding: 0;
-  margin: 0;
-}
-
-#sievefilterform ul {
-  list-style: none;
-  padding: 0;
-  margin: 0;
-  margin-top: 5px;
-}
-
-#sievefilterform fieldset {
-  margin: 5px;
-}
-
-#sievefilterform ul li {
-  margin-bottom: 5px;
-  white-space: nowrap;
-}
-
-#sievefilterform ul li input {
-  margin-right: 5px;
-}
-
-#sievefilterform label {
-  font-weight: bold;
-}
-
-#managesieve-tip
-{
-  width: 200px;
-  z-index: 100000;
-}
-
-span.sieve.error
-{
-  color: red;
-}
diff --git a/plugins/managesieve/skins/default/templates/filteredit.html b/plugins/managesieve/skins/default/templates/filteredit.html
deleted file mode 100644 (file)
index 6ecb03c..0000000
+++ /dev/null
@@ -1,33 +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><roundcube:object name="pagetitle" /></title>
-<roundcube:include file="/includes/links.html" />
-<link rel="stylesheet" type="text/css" href="/this/managesieve.css" />
-</head>
-<body class="iframe<roundcube:exp expression="env:task != 'mail' ? '' : ' mail'" />">
-
-<roundcube:if condition="env:task != 'mail'" />
-<div id="filter-title" class="boxtitle"><roundcube:label name="managesieve.filterdef" /></div>
-<roundcube:endif />
-
-<div id="filter-form" class="boxcontent">
-<roundcube:object name="filterform" />
-
-<roundcube:if condition="env:task != 'mail'" />
-<div id="footer">
-<div class="footerleft">
-<roundcube:button command="plugin.managesieve-save" type="input" class="button mainaction" label="save" />
-</div>
-<div class="footerright">
-<label for="disabled"><roundcube:label name="managesieve.filterdisabled" /></label>
-<input type="checkbox" id="disabled" name="_disabled" value="1" />
-</div>
-</div>
-<roundcube:endif />
-
-</form>
-</div>
-
-</body>
-</html>
diff --git a/plugins/managesieve/skins/default/templates/managesieve.html b/plugins/managesieve/skins/default/templates/managesieve.html
deleted file mode 100644 (file)
index 71eebe1..0000000
+++ /dev/null
@@ -1,87 +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><roundcube:object name="pagetitle" /></title>
-<roundcube:include file="/includes/links.html" />
-<link rel="stylesheet" type="text/css" href="/this/managesieve.css" />
-<script type="text/javascript" src="/functions.js"></script>
-<script type="text/javascript" src="/splitter.js"></script>
-
-<style type="text/css">
-#filterslistbox { width: <roundcube:exp expression="!empty(cookie:sieveviewsplitter) ? cookie:sieveviewsplitter-5 : 210" />px; }
-#filter-box { left: <roundcube:exp expression="!empty(cookie:sieveviewsplitter) ? cookie:sieveviewsplitter+5 : 220" />px;
-<roundcube:exp expression="browser:ie ? ('width:expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:sieveviewsplitter) ? cookie:sieveviewsplitter+5 : 220).')+\\'px\\');') : ''" />
-}
-#filtersetslistbox { width: <roundcube:exp expression="!empty(cookie:sieveviewsplitter2) ? cookie:sieveviewsplitter2-5 : 175" />px; }
-#filtersscreen { left: <roundcube:exp expression="!empty(cookie:sieveviewsplitter2) ? cookie:sieveviewsplitter2+5 : 185" />px;
-<roundcube:exp expression="browser:ie ? ('width:expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:sieveviewsplitter2) ? cookie:sieveviewsplitter2+5 : 185).')+\\'px\\');') : ''" />
-}
-</style>
-
-</head>
-<body onload="rcube_init_mail_ui()">
-
-<roundcube:include file="/includes/taskbar.html" />
-<roundcube:include file="/includes/header.html" />
-<roundcube:include file="/includes/settingstabs.html" />
-
-<div id="mainscreen">
-
-<div id="filtersetslistbox">
-<div id="filtersetslist-title" class="boxtitle"><roundcube:label name="managesieve.filtersets" /></div>
-<div class="boxlistcontent">
-  <roundcube:object name="filtersetslist" id="filtersetslist" class="records-table" cellspacing="0" summary="Filters list" type="list" noheader="true" />
-</div>
-<div class="boxfooter">
-  <roundcube:button command="plugin.managesieve-setadd" type="link" title="managesieve.filtersetadd" class="buttonPas addfilterset" classAct="button addfilterset" content=" " />
-  <roundcube:button name="filtersetmenulink" id="filtersetmenulink" type="link" title="moreactions" class="button groupactions" onclick="rcmail_ui.show_popup('filtersetmenu', undefined, {above:1});return false" content=" " />
-</div>
-</div>
-
-<div id="filtersscreen">
-<div id="filterslistbox">
-<div class="boxtitle"><roundcube:label name="managesieve.filters" /></div>
-<div class="boxlistcontent">
-  <roundcube:object name="filterslist" id="filterslist" class="records-table" cellspacing="0" summary="Filters list" noheader="true" />
-</div>
-<div class="boxfooter">
-  <roundcube:button command="plugin.managesieve-add" type="link" title="managesieve.filteradd" class="buttonPas addfilter" classAct="button addfilter" content=" " />
-  <roundcube:button name="filtermenulink" id="filtermenulink" type="link" title="moreactions" class="button groupactions" onclick="rcmail_ui.show_popup('filtermenu', undefined, {above:1});return false" content=" " />
-</div>
-</div>
-
-<script type="text/javascript">
-  var sieveviewsplit2 = new rcube_splitter({id:'sieveviewsplitter2', p1: 'filtersetslistbox', p2: 'filtersscreen', orientation: 'v', relative: true, start: 200});
-  rcmail.add_onload('sieveviewsplit2.init()');
-
-  var sieveviewsplit = new rcube_splitter({id:'sieveviewsplitter', p1: 'filterslistbox', p2: 'filter-box', orientation: 'v', relative: true, start: 215});
-  rcmail.add_onload('sieveviewsplit.init()');
-</script>
-
-<div id="filter-box">
-  <roundcube:object name="filterframe" id="filter-frame" width="100%" height="100%" frameborder="0" src="/watermark.html" />
-</div>
-
-</div>
-</div>
-</div>
-
-<div id="filtersetmenu" class="popupmenu">
-  <ul>
-    <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>
-    <roundcube:container name="filtersetoptions" id="filtersetmenu" />
-  </ul>
-</div>
-
-<div id="filtermenu" class="popupmenu">
-  <ul>
-    <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>
-    <roundcube:container name="filteroptions" id="filtermenu" />
-  </ul>
-</div>
-
-</body>
-</html>
diff --git a/plugins/managesieve/skins/default/templates/setedit.html b/plugins/managesieve/skins/default/templates/setedit.html
deleted file mode 100644 (file)
index 26f7fec..0000000
+++ /dev/null
@@ -1,24 +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><roundcube:object name="pagetitle" /></title>
-<roundcube:include file="/includes/links.html" />
-<link rel="stylesheet" type="text/css" href="/this/managesieve.css" />
-</head>
-<body class="iframe">
-
-<div id="filter-title" class="boxtitle"><roundcube:label name="managesieve.newfilterset" /></div>
-
-<div id="filter-form" class="boxcontent">
-<roundcube:object name="filtersetform" />
-
-<p>
-<roundcube:button command="plugin.managesieve-save" type="input" class="button mainaction" label="save" />
-</p>
-
-</form>
-</div>
-
-
-</body>
-</html>
diff --git a/plugins/managesieve/skins/larry/images/add.png b/plugins/managesieve/skins/larry/images/add.png
new file mode 100644 (file)
index 0000000..97a6422
Binary files /dev/null and b/plugins/managesieve/skins/larry/images/add.png differ
diff --git a/plugins/managesieve/skins/larry/images/del.png b/plugins/managesieve/skins/larry/images/del.png
new file mode 100644 (file)
index 0000000..518905b
Binary files /dev/null and b/plugins/managesieve/skins/larry/images/del.png differ
diff --git a/plugins/managesieve/skins/larry/images/down_small.gif b/plugins/managesieve/skins/larry/images/down_small.gif
new file mode 100644 (file)
index 0000000..f865893
Binary files /dev/null and b/plugins/managesieve/skins/larry/images/down_small.gif differ
diff --git a/plugins/managesieve/skins/larry/images/up_small.gif b/plugins/managesieve/skins/larry/images/up_small.gif
new file mode 100644 (file)
index 0000000..40deb89
Binary files /dev/null and b/plugins/managesieve/skins/larry/images/up_small.gif differ
diff --git a/plugins/managesieve/skins/larry/managesieve.css b/plugins/managesieve/skins/larry/managesieve.css
new file mode 100644 (file)
index 0000000..f252bd7
--- /dev/null
@@ -0,0 +1,319 @@
+#filtersetslistbox
+{
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  left: 0;
+  width: 150px;
+}
+
+#filtersscreen
+{
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 162px;
+}
+
+#filterslistbox
+{
+  position: absolute;
+  left: 0;
+  top: 0;
+  bottom: 0;
+  width: 180px;
+}
+
+#filter-box
+{
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 192px;
+}
+
+#filter-frame
+{
+  border-radius: 4px;
+}
+
+#filterslist,
+#filtersetslist
+{
+  width: 100%;
+  table-layout: fixed; 
+}
+
+#filterslist tbody td,
+#filtersetslist tbody td
+{
+  width: 100%;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+#filterslist tbody tr.disabled td,
+#filtersetslist tbody tr.disabled td
+{
+  color: #87A3AA;
+}
+
+#filtersetslist tbody td
+{
+  font-weight: bold;
+}
+
+#filterslist tbody tr.filtermoveup td
+{
+  border-top: 2px dotted #555;
+  padding-top: 5px;
+}
+
+#filterslist tbody tr.filtermovedown td
+{
+  border-bottom: 2px dotted #555;
+  padding-bottom: 4px;
+}
+
+body.iframe
+{
+  min-width: 620px;
+}
+
+#filter-form
+{
+  min-width: 550px;
+  white-space: nowrap;
+  padding: 20px 10px 10px 10px;
+}
+
+legend, label
+{
+  color: #666666;
+}
+
+#rules, #actions
+{
+  margin-top: 5px;
+  padding: 0;
+  border-collapse: collapse;
+}
+
+div.rulerow, div.actionrow
+{
+  width: auto;
+  padding: 2px;
+  white-space: nowrap;
+  border: 1px solid white;
+}
+
+div.rulerow:hover, div.actionrow:hover
+{
+  padding: 2px;
+  white-space: nowrap;
+  background-color: #D9ECF4;
+  border: 1px solid #BBD3DA;
+  border-radius: 4px;
+}
+
+div.rulerow table, div.actionrow table
+{
+  padding: 0px;
+  min-width: 600px;
+}
+
+td
+{
+  vertical-align: top;
+}
+
+td.advbutton
+{
+  width: 1%;
+}
+
+td.advbutton a
+{
+  display: block;
+  padding-top: 14px;
+  height: 6px;
+  width: 12px;
+  text-decoration: none;
+}
+
+td.advbutton a.show
+{
+  background: url(images/down_small.gif) center no-repeat;
+}
+
+td.advbutton a.hide
+{
+  background: url(images/up_small.gif) center no-repeat;
+}
+
+td.rowbuttons
+{
+  text-align: right;
+  white-space: nowrap;
+  width: 1%;
+}
+
+td.rowactions
+{
+  white-space: nowrap;
+  width: 1%;
+  padding-top: 2px;
+}
+
+td.rowtargets
+{
+  white-space: nowrap;
+  width: 98%;
+  padding-left: 3px;
+  padding-top: 2px;
+}
+
+td.rowtargets div.adv
+{
+  padding-top: 3px;
+}
+
+input.disabled, input.disabled:hover
+{
+  color: #999999;
+}
+
+input.error, textarea.error
+{
+  background-color: #FFFFC4;
+}
+
+input.box,
+input.radio
+{
+  border: 0;
+  margin-top: 0;
+}
+
+select.operator_selector
+{
+  width: 200px;
+}
+
+td.rowtargets span,
+span.label
+{
+  color: #666666;
+  font-size: 10px;
+  white-space: nowrap;
+}
+
+#footer
+{
+  padding-top: 5px;
+  width: 100%;
+}
+
+#footer .footerleft
+{
+  padding-left: 2px;
+  white-space: nowrap;
+  float: left;
+}
+
+#footer .footerright
+{
+  padding-right: 2px;
+  white-space: nowrap;
+  text-align: right;
+  float: right;
+}
+
+.itemlist
+{
+  line-height: 25px;
+}
+
+.itemlist input
+{
+  vertical-align: middle;
+}
+
+span.sieve.error
+{
+  color: red;
+  white-space: nowrap;
+}
+
+#managesieve-tip
+{
+  padding: 3px;
+  background-color: #eee;
+}
+
+a.button
+{
+  margin: 0;
+  padding: 0;
+}
+
+a.button.add
+{
+  background: url(images/add.png) no-repeat;
+  width: 30px;
+  height: 20px;
+  margin-right: 4px;
+  display: inline-block;
+}
+
+a.button.del
+{
+  background: url(images/del.png) no-repeat;
+  width: 30px;
+  height: 20px;
+  display: inline-block;
+}
+
+a.button.disabled
+{
+  opacity: 0.35;
+  filter: alpha(opacity=35);
+  cursor: default;
+}
+
+#filter-form select,
+#filter-form input,
+#filter-form textarea
+{
+  font-size: 11px;
+  padding: 1px;
+}
+
+/* revert larry style button */
+#filter-form input.button
+{
+  padding-bottom: 2px;
+  padding-left: 5px;
+  padding-right: 5px;
+  padding-top: 2px;
+}
+
+fieldset
+{
+  border-radius: 4px;
+}
+
+/* fixes for popup window */
+
+body.iframe.mail
+{
+  margin: 0;
+  padding: 0;
+}
+
+body.iframe.mail #filter-form
+{
+  padding: 10px 5px 5px 5px;
+}
diff --git a/plugins/managesieve/skins/larry/managesieve_mail.css b/plugins/managesieve/skins/larry/managesieve_mail.css
new file mode 100644 (file)
index 0000000..ea417bd
--- /dev/null
@@ -0,0 +1,62 @@
+ul.toolbarmenu li span.filterlink {
+  background-position: 0 -1924px;
+}
+
+#sievefilterform {
+  top: 0;
+  bottom: 0;
+  left: 0;
+  right: 0;
+  padding: 0;
+  overflow: hidden;
+}
+
+#sievefilterform iframe {
+  top: 0;
+  bottom: 0;
+  left: 0;
+  right: 0;
+  width: 100%;
+  min-height: 100%; /* Chrome 14 bug */
+  border: 0;
+  padding: 0;
+  margin: 0;
+}
+
+#sievefilterform ul {
+  list-style: none;
+  padding: 0;
+  margin: 0;
+  margin-top: 5px;
+}
+
+#sievefilterform fieldset {
+  margin: 5px;
+  border-radius: 4px;
+}
+
+#sievefilterform ul li {
+  margin-bottom: 5px;
+  white-space: nowrap;
+}
+
+#sievefilterform ul li input {
+  margin-right: 5px;
+}
+
+#sievefilterform label {
+  font-weight: bold;
+}
+
+#managesieve-tip
+{
+  z-index: 100000;
+  padding: 3px;
+  background-color: #eee;
+}
+
+span.sieve.error
+{
+  color: red;
+  white-space: nowrap;
+}
diff --git a/plugins/managesieve/skins/larry/templates/filteredit.html b/plugins/managesieve/skins/larry/templates/filteredit.html
new file mode 100644 (file)
index 0000000..424bdbc
--- /dev/null
@@ -0,0 +1,33 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<link rel="stylesheet" type="text/css" href="/this/managesieve.css" />
+</head>
+<body class="iframe<roundcube:exp expression="env:task != 'mail' ? '' : ' mail'" />">
+
+<roundcube:if condition="env:task != 'mail'" />
+<div id="filter-title" class="boxtitle"><roundcube:label name="managesieve.filterdef" /></div>
+<roundcube:endif />
+
+<div id="filter-form" class="boxcontent">
+<roundcube:object name="filterform" />
+
+<roundcube:if condition="env:task != 'mail'" />
+<div id="footer">
+<div class="footerleft">
+<roundcube:button command="plugin.managesieve-save" type="input" class="button mainaction" label="save" />
+</div>
+<div class="footerright">
+<label for="disabled"><roundcube:label name="managesieve.filterdisabled" /></label>
+<input type="checkbox" id="disabled" name="_disabled" value="1" />
+</div>
+</div>
+<roundcube:endif />
+
+</form>
+</div>
+
+</body>
+</html>
diff --git a/plugins/managesieve/skins/larry/templates/managesieve.html b/plugins/managesieve/skins/larry/templates/managesieve.html
new file mode 100644 (file)
index 0000000..740b416
--- /dev/null
@@ -0,0 +1,73 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<link rel="stylesheet" type="text/css" href="/this/managesieve.css" />
+</head>
+<body class="noscroll">
+
+<roundcube:include file="/includes/header.html" />
+
+<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 class="scroller withfooter">
+  <roundcube:object name="filtersetslist" id="filtersetslist" class="listing" cellspacing="0" summary="Filters list" type="list" noheader="true" />
+</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" />
+</div>
+</div>
+
+<div id="filtersscreen">
+<div id="filterslistbox" class="uibox listbox">
+<h2 class="boxtitle"><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" />
+</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" />
+</div>
+</div>
+
+<div id="filter-box" class="uibox">
+  <roundcube:object name="filterframe" id="filter-frame" style="width:100%; height:96%" frameborder="0" src="/watermark.html" />
+  <roundcube:object name="message" id="message" class="statusbar" />
+</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>
+    <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>
+    <roundcube:container name="filteroptions" id="filtermenu" />
+  </ul>
+</div>
+
+<roundcube:include file="/includes/footer.html" />
+
+<script type="text/javascript">
+  new rcube_splitter({ id:'managesievesplitter1', p1:'#filtersetslistbox', p2:'#filtersscreen',
+          orientation:'v', relative:true, start:156, min:120, size:12 }).init();
+  new rcube_splitter({ id:'managesievesplitter2', p1:'#filterslistbox', p2:'#filter-box',
+          orientation:'v', relative:true, start:186, min:120, size:12 }).init();
+</script>
+
+</body>
+</html>
diff --git a/plugins/managesieve/skins/larry/templates/setedit.html b/plugins/managesieve/skins/larry/templates/setedit.html
new file mode 100644 (file)
index 0000000..71de8dd
--- /dev/null
@@ -0,0 +1,23 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<link rel="stylesheet" type="text/css" href="/this/managesieve.css" />
+</head>
+<body class="iframe">
+
+<div id="filter-title" class="boxtitle"><roundcube:label name="managesieve.newfilterset" /></div>
+
+<div id="filter-form" class="boxcontent">
+<roundcube:object name="filtersetform" />
+
+<p>
+<roundcube:button command="plugin.managesieve-save" type="input" class="button mainaction" label="save" />
+</p>
+
+</form>
+</div>
+
+</body>
+</html>
diff --git a/plugins/markasjunk/localization/be_BE.inc b/plugins/markasjunk/localization/be_BE.inc
new file mode 100644 (file)
index 0000000..e415040
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/be_BE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Alex Nehaichik <nab@mail.by>                                  |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['buttontitle'] = 'Пазначыць як спам';
+$labels['reportedasjunk'] = 'Паспяхова пазначаны як спам';
+
diff --git a/plugins/markasjunk/localization/bs_BA.inc b/plugins/markasjunk/localization/bs_BA.inc
new file mode 100644 (file)
index 0000000..81c9b1b
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/bs_BA/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kenan Dervišević <kenan3008@gmail.com>                      |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Spam';
+$labels['buttontitle'] = 'Označi kao spam';
+$labels['reportedasjunk'] = 'Uspješno označeno kao spam';
+
diff --git a/plugins/markasjunk/localization/ca_ES.inc b/plugins/markasjunk/localization/ca_ES.inc
new file mode 100644 (file)
index 0000000..16a5e3e
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ca_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jordi Sanfeliu <jordi@fibranet.cat>                           |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Correu brossa';
+$labels['buttontitle'] = 'Marca com a Spam';
+$labels['reportedasjunk'] = 'S\'ha reportat correctament com a Spam';
+
index 18509cf510bad2c563589cfd5eb97bcfb021c425..c353b2e1ce39138d4df26bce84b1973b2dd503e8 100644 (file)
@@ -1,24 +1,20 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/cs_CZ/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube markasjunk plugin                      |
-| Copyright (C) 2005-2009, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Milan Kozak <hodza@hodza.net>                                 |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 2993 2009-09-26 18:32:07Z alec $
-
+ +-----------------------------------------------------------------------+
+ | localization/cs_CZ/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Tomáš Kyzlink                                               |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
+$labels['buttontext'] = 'Spam';
 $labels['buttontitle'] = 'Označit jako Spam';
 $labels['reportedasjunk'] = 'Úspěšně nahlášeno jako Spam';
 
-?>
\ No newline at end of file
diff --git a/plugins/markasjunk/localization/cy_GB.inc b/plugins/markasjunk/localization/cy_GB.inc
new file mode 100644 (file)
index 0000000..cc9a070
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/cy_GB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Dafydd Tomos                                                  |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Sothach';
+$labels['buttontitle'] = 'Nodi fel Sbwriel';
+$labels['reportedasjunk'] = 'Adroddwyd yn llwyddiannus fel Sbwriel';
+
index e351b0f61e27a570ec5d39113921c49b870482aa..e50016e5f39bce8e445276a874875baf5e46f46e 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/da_DK/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Johannes Hessellund <osos@openeyes.dk>                        |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
-$labels['buttontitle'] = 'Marker som junk mail';
-$labels['reportedasjunk'] = 'Successfuldt rapporteret som junk mail';
+$labels['buttontext'] = 'Spam';
+$labels['buttontitle'] = 'Marker som spam mail';
+$labels['reportedasjunk'] = 'Successfuldt rapporteret som spam mail';
 
-?>
index 9cfa38dad539f04402ce1f8946a90b763e4fa09f..89285709ef08af6876d42217850fd49ed057e54c 100644 (file)
@@ -1,6 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/de_CH/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
+$labels['buttontext'] = 'Spam';
 $labels['buttontitle'] = 'Als SPAM markieren';
 $labels['reportedasjunk'] = 'Erfolgreich als SPAM gemeldet';
 
index f21edf7cd947d1f5cc35efd9ef3a45f464c52d29..2455911fad556bce77d984b40c61cbcba570df8a 100644 (file)
@@ -1,6 +1,20 @@
 <?php
-// translation done by Ulli Heist - http://heist.hobby-site.org/
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/de_DE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
+$labels['buttontext'] = 'Spam';
 $labels['buttontitle'] = 'als SPAM markieren';
 $labels['reportedasjunk'] = 'Erfolgreich als SPAM gemeldet';
-?>
\ No newline at end of file
+
diff --git a/plugins/markasjunk/localization/el_GR.inc b/plugins/markasjunk/localization/el_GR.inc
new file mode 100644 (file)
index 0000000..e86d2ec
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/el_GR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Nikos Keramidis <info@torus.gr>                               |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['buttontitle'] = 'Σήμανση ως Ανεπιθύμητου';
+$labels['reportedasjunk'] = 'Αναφέρθηκε ως Ανεπιθήμητο';
+
diff --git a/plugins/markasjunk/localization/en_GB.inc b/plugins/markasjunk/localization/en_GB.inc
new file mode 100644 (file)
index 0000000..0ecbf7a
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/en_GB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Christian Foellmann <foellmann@foe-services.de>               |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Junk';
+$labels['buttontitle'] = 'Mark as Junk';
+$labels['reportedasjunk'] = 'Successfully reported as Junk';
+
index 6f63e161ad2abf4708aef3e82a630218ebc4e1f3..c1f56ad1dc221b8d9227be3bfa3c1362359b1ad3 100644 (file)
@@ -1,6 +1,7 @@
 <?php
 
 $labels = array();
+$labels['buttontext'] = 'Junk';
 $labels['buttontitle'] = 'Mark as Junk';
 $labels['reportedasjunk'] = 'Successfully reported as Junk';
 
diff --git a/plugins/markasjunk/localization/eo.inc b/plugins/markasjunk/localization/eo.inc
new file mode 100644 (file)
index 0000000..0d90ee8
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/eo/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Michael Moroni <michael.moroni@mailoo.org>                    |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Rubaĵo';
+$labels['buttontitle'] = 'Marki kiel rubaĵo';
+$labels['reportedasjunk'] = 'Sukcese raportita kiel rubaĵo';
+
index decdde2a84a20e3b129c20ffc8fd305340e223a8..fd24564e998794cb6a1ca9de205c23b5f5fa60a2 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/es_AR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['buttontitle'] = 'Marcar como SPAM';
 $labels['reportedasjunk'] = 'Mensaje reportado como SPAM';
 
-?>
index 8e5ca492d01a9e8f4155f5861bd58bddfc0f073b..d018513ce4420c4f4126e76466d9539e72e64ee0 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/es_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: pompilos <ciordia@gmail.com>                                  |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
+$labels['buttontext'] = 'SPAM';
 $labels['buttontitle'] = 'Marcar como SPAM';
 $labels['reportedasjunk'] = 'Mensaje informado como SPAM';
 
-?>
index daf140512c7e578a7badf5721e5c0559b0ea0d27..d9b28918d5ec71df32fbcf3e7556dae7fcf2e25d 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/et_EE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: yllar                                                         |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
+$labels['buttontext'] = 'Rämps';
 $labels['buttontitle'] = 'Märgista Rämpsuks';
 $labels['reportedasjunk'] = 'Edukalt Rämpsuks märgitud';
 
-?>
diff --git a/plugins/markasjunk/localization/fa_IR.inc b/plugins/markasjunk/localization/fa_IR.inc
new file mode 100644 (file)
index 0000000..72511e0
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fa_IR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Hamid <abbaszadeh.h@gmail.com>                                |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'بنجل';
+$labels['buttontitle'] = 'علامت گذاری به عنوان بنجل';
+$labels['reportedasjunk'] = 'با موفقیت به عنوان بنجل گزارش شد';
+
diff --git a/plugins/markasjunk/localization/fi_FI.inc b/plugins/markasjunk/localization/fi_FI.inc
new file mode 100644 (file)
index 0000000..622b339
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fi_FI/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jiri Grönroos                                                |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Roskaposti';
+$labels['buttontitle'] = 'Merkitse roskapostiksi';
+$labels['reportedasjunk'] = 'Ilmoitettu onnistuneesti roskapostista';
+
diff --git a/plugins/markasjunk/localization/fr_FR.inc b/plugins/markasjunk/localization/fr_FR.inc
new file mode 100644 (file)
index 0000000..e310c54
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fr_FR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Nicolas Delvaux                                               |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Indésirables';
+$labels['buttontitle'] = 'Marquer comme indésirable';
+$labels['reportedasjunk'] = 'Notification de message indésirable envoyée';
+
index b1f49a23eea77a0dcb91f5302c020c42cfc72a8f..ce70e78e8e163e815b24342a2b76074ece4c5d79 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/gl_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['buttontitle'] = 'Marcar como correo lixo';
 $labels['reportedasjunk'] = 'Mensaxe marcada como correo lixo';
 
-?>
diff --git a/plugins/markasjunk/localization/he_IL.inc b/plugins/markasjunk/localization/he_IL.inc
new file mode 100644 (file)
index 0000000..0dbc315
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/he_IL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Moshe Leibovitch <moish@mln.co.il>                            |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'זבל';
+$labels['buttontitle'] = 'סמן כדואר זבל';
+$labels['reportedasjunk'] = 'דואר הזבל דווח בהצלחה';
+
diff --git a/plugins/markasjunk/localization/hr_HR.inc b/plugins/markasjunk/localization/hr_HR.inc
new file mode 100644 (file)
index 0000000..8e0a6b2
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/hr_HR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Svebor Prstačić <svebor.prstacic@gmail.com>                 |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['buttontitle'] = 'Označi kao smeće (spam)';
+$labels['reportedasjunk'] = 'Uspješno prijavljeno kao smeće (spam)';
+
diff --git a/plugins/markasjunk/localization/hu_HU.inc b/plugins/markasjunk/localization/hu_HU.inc
new file mode 100644 (file)
index 0000000..a96f88f
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/hu_HU/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Németh András <narzym@hotmail.com>                          |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Levélszemét';
+$labels['buttontitle'] = 'Szemétnek jelölés';
+$labels['reportedasjunk'] = 'Sikeresen szemétnek jelentve';
+
diff --git a/plugins/markasjunk/localization/hy_AM.inc b/plugins/markasjunk/localization/hy_AM.inc
new file mode 100644 (file)
index 0000000..b30707e
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/hy_AM/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Vahan Yerkanian <vahan@yerkanian.com>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Թափոն';
+$labels['buttontitle'] = 'Նշել որպես Թափոն';
+$labels['reportedasjunk'] = 'Բարեհաջող հաղորդվեց որպես Թափոն';
+
diff --git a/plugins/markasjunk/localization/id_ID.inc b/plugins/markasjunk/localization/id_ID.inc
new file mode 100644 (file)
index 0000000..4389c33
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/id_ID/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Putu Arya Sabda Wijaya <Unknown>                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['buttontitle'] = 'Tandai sebagai sampah';
+$labels['reportedasjunk'] = 'Berhasil dilaporkan sebagai sampah';
+
index cc44fae21cd091556c384e34a3c8f6e1b5a8d635..3c26a10d0520f771cefd542bd412873d6af65a47 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/it_IT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Andrea Bernini <andrea.bernini@gmail.com>                     |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
+$labels['buttontext'] = 'Spam';
 $labels['buttontitle'] = 'Marca come Spam';
 $labels['reportedasjunk'] = 'Messaggio marcato come Spam';
 
-?>
\ No newline at end of file
index bd5b8b20304c01ecbf87d7d8ca6113c36a553c5a..fa17bd09548fceb248caa52d08c05fc51412b6ce 100644 (file)
@@ -1,9 +1,20 @@
 <?php
 
-//  EN-Revision: 3891
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ja_JP/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Takahiro Kambe                                                |
+ +-----------------------------------------------------------------------+
+*/
 
 $labels = array();
+$labels['buttontext'] = '迷惑メール';
 $labels['buttontitle'] = '迷惑メールとして設定';
-$labels['reportedasjunk'] = 'è¿·æ\83\91ã\83¡ã\83¼ã\83«ã\81¨ã\81\97ã\81¦å ±å\91\8aã\81\99ã\82\8bã\81\93ã\81¨ã\81«æ\88\90å\8a\9fã\81\97ã\81¾ã\81\97ã\81\9fã\80\82';
+$labels['reportedasjunk'] = '迷惑メールとして報告しました。';
 
-?>
\ No newline at end of file
diff --git a/plugins/markasjunk/localization/ko_KR.inc b/plugins/markasjunk/localization/ko_KR.inc
new file mode 100644 (file)
index 0000000..bfc38d1
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ko_KR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kim, Woohyun <woohyun.kim@gmail.com>                          |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = '정크메일';
+$labels['buttontitle'] = '정크메일로 표시';
+$labels['reportedasjunk'] = '성공적으로, 정크메일이라 보고 됨';
+
diff --git a/plugins/markasjunk/localization/ku.inc b/plugins/markasjunk/localization/ku.inc
new file mode 100644 (file)
index 0000000..beb7623
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ku/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: david absalan <absalan@live.com>                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['buttontitle'] = 'nawnişani bka ba şkaw';
+$labels['reportedasjunk'] = 'ba gşti raport kra';
+
diff --git a/plugins/markasjunk/localization/lt_LT.inc b/plugins/markasjunk/localization/lt_LT.inc
new file mode 100644 (file)
index 0000000..bd2e0e7
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/lt_LT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Rimas Kudelis <rq@akl.lt>                                     |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Brukalas';
+$labels['buttontitle'] = 'Žymėti kaip brukalą';
+$labels['reportedasjunk'] = 'Sėkmingai pranešta, jog laiškas yra brukalas';
+
diff --git a/plugins/markasjunk/localization/lv_LV.inc b/plugins/markasjunk/localization/lv_LV.inc
new file mode 100644 (file)
index 0000000..121b485
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/lv_LV/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Ivars Strazdiņš <Unknown>                                   |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['buttontitle'] = 'Iezīmēt kā mēstuli';
+$labels['reportedasjunk'] = 'Sekmīgi iezīmēta kā mēstule';
+
diff --git a/plugins/markasjunk/localization/ml_IN.inc b/plugins/markasjunk/localization/ml_IN.inc
new file mode 100644 (file)
index 0000000..780a53d
--- /dev/null
@@ -0,0 +1,19 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ml_IN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Anish A <aneesh.nl@gmail.com>                                 |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontitle'] = 'സ്പാം ആയി അടയാളപ്പെടുത്തുക';
+$labels['reportedasjunk'] = 'സ്പാം ആയി അടയാളപ്പെടുത്തി';
+
diff --git a/plugins/markasjunk/localization/ml_ML.inc b/plugins/markasjunk/localization/ml_ML.inc
new file mode 100644 (file)
index 0000000..7c30ec6
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ml_ML/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Anish A <aneesh.nl@gmail.com>                                 |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['buttontitle'] = 'സ്പാം ആയി അടയാളപ്പെടുത്തുക';
+$labels['reportedasjunk'] = 'സ്പാം ആയി അടയാളപ്പെടുത്തി';
+
diff --git a/plugins/markasjunk/localization/mr_IN.inc b/plugins/markasjunk/localization/mr_IN.inc
new file mode 100644 (file)
index 0000000..07e62f9
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/mr_IN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Devendra Buddhikot <devendradb@rediffmail.com>                |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['buttontitle'] = 'नको असलेला अशी खूण करा';
+$labels['reportedasjunk'] = 'नको आहे असे यशस्वीरीत्या नक्की केले';
+
diff --git a/plugins/markasjunk/localization/nb_NB.inc b/plugins/markasjunk/localization/nb_NB.inc
new file mode 100644 (file)
index 0000000..7dce36c
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/nb_NB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Patrick Kvaksrud <patrick@idrettsforbundet.no>                |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Useriøs e-post';
+$labels['buttontitle'] = 'Marker som useriøs e-post';
+$labels['reportedasjunk'] = 'Rapportering av useriøs e-post var vellykket';
+
diff --git a/plugins/markasjunk/localization/nl_NL.inc b/plugins/markasjunk/localization/nl_NL.inc
new file mode 100644 (file)
index 0000000..1f82298
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/nl_NL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Geert Wirken                                                  |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Spam';
+$labels['buttontitle'] = 'Markeer als spam';
+$labels['reportedasjunk'] = 'Succesvol gemarkeerd als spam';
+
index a98f0aab35d9f24cab700c8384e9c2744cc9c187..cd3520ec72334938f1f9506865e1241584aebe09 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/pl_PL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Aleksander Machniak <alec@alec.pl>                            |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
+$labels['buttontext'] = 'Spam';
 $labels['buttontitle'] = 'Oznacz jako SPAM';
 $labels['reportedasjunk'] = 'Pomyślnie oznaczono jako SPAM';
 
-?>
diff --git a/plugins/markasjunk/localization/pt_BR.inc b/plugins/markasjunk/localization/pt_BR.inc
new file mode 100644 (file)
index 0000000..b93bfc2
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/pt_BR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Victor Benincasa <vbenincasa@gmail.com>                       |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Spam';
+$labels['buttontitle'] = 'Marcar como Spam';
+$labels['reportedasjunk'] = 'Marcado como Spam com sucesso';
+
diff --git a/plugins/markasjunk/localization/pt_PT.inc b/plugins/markasjunk/localization/pt_PT.inc
new file mode 100644 (file)
index 0000000..45c9202
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/pt_PT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: David                                                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Lixo';
+$labels['buttontitle'] = 'Marcar como Lixo';
+$labels['reportedasjunk'] = 'Reportado como Lixo com sucesso';
+
diff --git a/plugins/markasjunk/localization/ro_RO.inc b/plugins/markasjunk/localization/ro_RO.inc
new file mode 100644 (file)
index 0000000..0a3536b
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ro_RO/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: tudor <tudor@starnet-alba.ro>                                 |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['buttontitle'] = 'Marchează ca SPAM';
+$labels['reportedasjunk'] = 'Raportat cu succes ca SPAM';
+
index 32d00c2dfada85bc12ff459cb04454bf728fac9e..acac7e1801f07fc4829c6f0fefc3b979d9a55305 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ru_RU/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
-$labels['buttontitle'] = 'Переместить в "СПАМ"';
-$labels['reportedasjunk'] = 'Перемещено в "СПАМ"';
+$labels['buttontext'] = 'СПАМ';
+$labels['buttontitle'] = 'Переместить в "СПАМ';
+$labels['reportedasjunk'] = 'Перемещено в "СПАМ';
 
-?>
diff --git a/plugins/markasjunk/localization/si_LK.inc b/plugins/markasjunk/localization/si_LK.inc
new file mode 100644 (file)
index 0000000..81c33cf
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/si_LK/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Mohamed Rizmi <Unknown>                                       |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['buttontitle'] = 'සුන්බුන් ලෙස සලකුණු කරන්න';
+$labels['reportedasjunk'] = 'සුන්බුන් ලෙස වාර්තා කිරීම සාර්ථකයි';
+
index b56ac46af03267a0f9cb4b3dbde0f2b853cd3fa5..ee208347d36eca86cdb2c754df41f1fc4d290439 100644 (file)
@@ -1,15 +1,20 @@
 <?php
 
-/**
- * Slovak translation for Roundcube markasjunk plugin
- *
- * @version 1.0 (2010-10-18)
- * @author panda <admin@whistler.sk>
- *
- */
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sk_SK/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: panda                                                         |
+ +-----------------------------------------------------------------------+
+*/
 
 $labels = array();
+$labels['buttontext'] = 'Spam';
 $labels['buttontitle'] = 'Označiť ako Spam';
 $labels['reportedasjunk'] = 'Úspešne nahlásené ako Spam';
 
-?>
diff --git a/plugins/markasjunk/localization/sl_SI.inc b/plugins/markasjunk/localization/sl_SI.inc
new file mode 100644 (file)
index 0000000..ab78324
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sl_SI/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Barbara Krasovec <barbarak@arnes.si>                          |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Nezaželena sporočila';
+$labels['buttontitle'] = 'Označi kot spam';
+$labels['reportedasjunk'] = 'Uspešno označeno kot spam';
+
diff --git a/plugins/markasjunk/localization/sr_CS.inc b/plugins/markasjunk/localization/sr_CS.inc
new file mode 100644 (file)
index 0000000..aa26ddd
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sr_CS/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Saša Zejnilović <zejnils@gmail.com>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Смеће';
+$labels['buttontitle'] = 'Означи као cмеће';
+$labels['reportedasjunk'] = 'Успешно пријављени као cмеће';
+
index f4c5959b9a17980615f3ca31989ffb5a4bd61570..4ff14bec9bf6723fe5c033e773ca116f20309ec9 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sv_SE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jonas Nasholm                                                 |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
+$labels['buttontext'] = 'Skräp';
 $labels['buttontitle'] = 'Märk som skräp';
 $labels['reportedasjunk'] = 'Framgångsrikt rapporterat som skräp';
 
-?>
\ No newline at end of file
diff --git a/plugins/markasjunk/localization/tr_TR.inc b/plugins/markasjunk/localization/tr_TR.inc
new file mode 100644 (file)
index 0000000..42a0de2
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/tr_TR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: ismail yenigul                                                |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'İstenmeyen';
+$labels['buttontitle'] = 'Çöp olarak işaretle';
+$labels['reportedasjunk'] = 'Spam olarak rapor edildi';
+
diff --git a/plugins/markasjunk/localization/uk_UA.inc b/plugins/markasjunk/localization/uk_UA.inc
new file mode 100644 (file)
index 0000000..1e77f2a
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/uk_UA/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Anton Gladky <Unknown>                                        |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['buttontitle'] = 'Перемістити в "Спам';
+$labels['reportedasjunk'] = 'Переміщено до "Спаму';
+
diff --git a/plugins/markasjunk/localization/vi_VN.inc b/plugins/markasjunk/localization/vi_VN.inc
new file mode 100644 (file)
index 0000000..3d00d92
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/vi_VN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kenny Tran <kennethanh@gmail.com>                             |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = 'Thư rác';
+$labels['buttontitle'] = 'Đánh dấu để được xem là thư rác';
+$labels['reportedasjunk'] = 'Đánh dấu để được xem là thư rác thành công';
+
diff --git a/plugins/markasjunk/localization/zh_CN.inc b/plugins/markasjunk/localization/zh_CN.inc
new file mode 100644 (file)
index 0000000..c5d5036
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/zh_CN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Christopher Meng <cickumqt@gmail.com>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['buttontext'] = '垃圾邮件';
+$labels['buttontitle'] = '标记为垃圾邮件';
+$labels['reportedasjunk'] = '成功报告该邮件为垃圾邮件';
+
index 7b0b221623882b6a90953946912b6076f9919ffd..372d8d6c5a0992d7662097528b6a2c3d9908c6bc 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/zh_TW/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Nansen                                                        |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
+$labels['buttontext'] = '垃圾郵件';
 $labels['buttontitle'] = '標示為垃圾信';
 $labels['reportedasjunk'] = '成功回報垃圾信';
 
-?>
index 697d880ca2738e8e75214f60ee00e3a045e8286f..4db90c1bc895cf4634c78406939b162a0477f56d 100644 (file)
@@ -7,6 +7,7 @@
  * to mark the selected messages as Junk and move them to the Junk folder
  *
  * @version @package_version@
+ * @license GNU GPLv3+
  * @author Thomas Bruederli
  */
 class markasjunk extends rcube_plugin
@@ -18,18 +19,22 @@ class markasjunk extends rcube_plugin
     $rcmail = rcmail::get_instance();
 
     $this->register_action('plugin.markasjunk', array($this, 'request_action'));
-      
+
     if ($rcmail->action == '' || $rcmail->action == 'show') {
       $skin_path = $this->local_skin_path();
       $this->include_script('markasjunk.js');
+      if (is_file($this->home . "/$skin_path/markasjunk.css"))
+        $this->include_stylesheet("$skin_path/markasjunk.css");
       $this->add_texts('localization', true);
+
       $this->add_button(array(
+        'type' => 'link',
+        'label' => 'buttontext',
         'command' => 'plugin.markasjunk',
-        'imagepas' => $skin_path.'/junk_pas.png',
-        'imageact' => $skin_path.'/junk_act.png',
-        'width' => 32,
-        'height' => 32,
-        'title' => 'markasjunk.buttontitle'), 'toolbar');
+        'class' => 'button buttonPas junk disabled',
+        'classact' => 'button junk',
+        'title' => 'buttontitle',
+        'domain' => 'markasjunk'), 'toolbar');
     }
   }
 
@@ -44,8 +49,8 @@ class markasjunk extends rcube_plugin
     $mbox = get_input_value('_mbox', RCUBE_INPUT_POST);
     
     $rcmail = rcmail::get_instance();
-    $rcmail->imap->unset_flag($uids, 'NONJUNK');
-    $rcmail->imap->set_flag($uids, 'JUNK');
+    $rcmail->storage->unset_flag($uids, 'NONJUNK');
+    $rcmail->storage->set_flag($uids, 'JUNK');
     
     if (($junk_mbox = $rcmail->config->get('junk_mbox')) && $mbox != $junk_mbox) {
       $rcmail->output->command('move_messages', $junk_mbox);
index d76bd0c28121e6627bccabfd8239909987a5b30a..a5b4bf92c8e0c0655df7a927bc87ceb0da523839 100644 (file)
        <date>2010-03-29</date>
        <time>13:20:00</time>
        <version>
-               <release>1.0</release>
-               <api>1.0</api>
+               <release>1.1</release>
+               <api>1.1</api>
        </version>
        <stability>
                <release>stable</release>
                <api>stable</api>
        </stability>
-       <license uri="http://www.gnu.org/licenses/gpl-2.0.html">GNU GPLv2</license>
+       <license uri="http://www.gnu.org/licenses/gpl.html">GNU GPLv3+</license>
        <notes>-</notes>
        <contents>
                <dir baseinstalldir="/" name="/">
                        <file name="localization/es_ES.inc" role="data"></file>
                        <file name="localization/et_EE.inc" role="data"></file>
                        <file name="localization/gl_ES.inc" role="data"></file>
+                       <file name="localization/it_IT.inc" role="data"></file>
                        <file name="localization/ja_JP.inc" role="data"></file>
                        <file name="localization/pl_PL.inc" role="data"></file>
                        <file name="localization/ru_RU.inc" role="data"></file>
+                       <file name="localization/sk_SK.inc" role="data"></file>
                        <file name="localization/sv_SE.inc" role="data"></file>
                        <file name="localization/zh_TW.inc" role="data"></file>
-                       <file name="skins/default/junk_act.png" role="data"></file>
-                       <file name="skins/default/junk_pas.png" role="data"></file>
+                       <file name="skins/classic/junk_act.png" role="data"></file>
+                       <file name="skins/classic/junk_pas.png" role="data"></file>
                </dir>
                <!-- / -->
        </contents>
diff --git a/plugins/markasjunk/skins/classic/junk_act.png b/plugins/markasjunk/skins/classic/junk_act.png
new file mode 100644 (file)
index 0000000..b5a84f6
Binary files /dev/null and b/plugins/markasjunk/skins/classic/junk_act.png differ
diff --git a/plugins/markasjunk/skins/classic/junk_pas.png b/plugins/markasjunk/skins/classic/junk_pas.png
new file mode 100644 (file)
index 0000000..b88a561
Binary files /dev/null and b/plugins/markasjunk/skins/classic/junk_pas.png differ
diff --git a/plugins/markasjunk/skins/classic/markasjunk.css b/plugins/markasjunk/skins/classic/markasjunk.css
new file mode 100644 (file)
index 0000000..5b1d47b
--- /dev/null
@@ -0,0 +1,6 @@
+
+#messagetoolbar a.button.junk {
+       text-indent: -5000px;
+       background: url(junk_act.png) 0 0 no-repeat;
+}
+
diff --git a/plugins/markasjunk/skins/default/junk_act.png b/plugins/markasjunk/skins/default/junk_act.png
deleted file mode 100644 (file)
index b5a84f6..0000000
Binary files a/plugins/markasjunk/skins/default/junk_act.png and /dev/null differ
diff --git a/plugins/markasjunk/skins/default/junk_pas.png b/plugins/markasjunk/skins/default/junk_pas.png
deleted file mode 100644 (file)
index b88a561..0000000
Binary files a/plugins/markasjunk/skins/default/junk_pas.png and /dev/null differ
diff --git a/plugins/markasjunk/skins/larry/.gitignore b/plugins/markasjunk/skins/larry/.gitignore
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/plugins/new_user_dialog/localization/be_BE.inc b/plugins/new_user_dialog/localization/be_BE.inc
new file mode 100644 (file)
index 0000000..e12ebc8
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/be_BE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Alex Nehaichik <nab@mail.by>                                  |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['identitydialogtitle'] = 'Калі ласка, запоўніце асабістыя звесткі';
+$labels['identitydialoghint'] = 'Гэтае вакно з\'яўляецца толькі аднойчы, у час першага ўваходу.';
+
index b00df595369296eb6be21f0bbaf57308867645ad..9575daa4915ac6cd94a06065feb03724964dd91d 100644 (file)
@@ -11,7 +11,7 @@
  +-----------------------------------------------------------------------+
  | Author: Thomas <Unknown>                                              |
  +-----------------------------------------------------------------------+
- @version $Id: bg_BG.inc 5741 2012-01-08 16:20:12Z thomasb $
+ @version $Id$
 */
 
 $labels = array();
diff --git a/plugins/new_user_dialog/localization/bs_BA.inc b/plugins/new_user_dialog/localization/bs_BA.inc
new file mode 100644 (file)
index 0000000..3fd961a
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/bs_BA/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kenan Dervišević <kenan3008@gmail.com>                      |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['identitydialogtitle'] = 'Molimo vas da kompletirate vaš identitet pošiljaoca';
+$labels['identitydialoghint'] = 'Ovaj okvir se pojavljuje samo jednom prilikom prve prijave.';
+
diff --git a/plugins/new_user_dialog/localization/ca_ES.inc b/plugins/new_user_dialog/localization/ca_ES.inc
new file mode 100644 (file)
index 0000000..970d1c3
--- /dev/null
@@ -0,0 +1,19 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ca_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jordi Sanfeliu <jordi@fibranet.cat>                           |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['identitydialogtitle'] = 'Si us plau, completeu la identitat del vostre remitent';
+$labels['identitydialoghint'] = 'Aquest quadre només apareix un cop a la primera entrada.';
+
index fe05e6aaef6fe712687fd0063aed8deb5bcb26e0..d112d08c56541b5777afedff2146d3fd0d28b3e6 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/cs_CZ/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['identitydialogtitle'] = 'Prosím doplňte své jméno a e-mail';
 $labels['identitydialoghint'] = 'Tento dialog se objeví pouze při prvním přihlášení.';
 
-?>
diff --git a/plugins/new_user_dialog/localization/cy_GB.inc b/plugins/new_user_dialog/localization/cy_GB.inc
new file mode 100644 (file)
index 0000000..0c89e24
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/cy_GB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Dafydd Tomos <Unknown>                                        |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['identitydialogtitle'] = 'Cwblhewch eich enw danfonwr';
+$labels['identitydialoghint'] = 'Mae\'r bocs hwn yn ymddangos unwaith ar eich mewngofnodiad cyntaf.';
+
diff --git a/plugins/new_user_dialog/localization/da_DK.inc b/plugins/new_user_dialog/localization/da_DK.inc
new file mode 100644 (file)
index 0000000..e500dad
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/da_DK/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: John Loft Christiansen <Unknown>                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['identitydialogtitle'] = 'Udfyld din afsender identitet';
+$labels['identitydialoghint'] = 'Denne boks vises kun én gang ved første login';
+
index d2a1310d013c28b87445ced6cf2b383868ec4b2f..36500ce0c03379ce6a310b05bc7580cdf93ece7a 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/de_CH/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['identitydialogtitle'] = 'Bitte vervollständigen Sie Ihre Absender-Informationen';
 $labels['identitydialoghint'] = 'Dieser Dialog erscheint nur einmal beim ersten Login.';
 
-?>
\ No newline at end of file
index d2a1310d013c28b87445ced6cf2b383868ec4b2f..df7f2f3e3d49329910cd9d1854fc34914c0b1918 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/de_DE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['identitydialogtitle'] = 'Bitte vervollständigen Sie Ihre Absender-Informationen';
 $labels['identitydialoghint'] = 'Dieser Dialog erscheint nur einmal beim ersten Login.';
 
-?>
\ No newline at end of file
diff --git a/plugins/new_user_dialog/localization/el_GR.inc b/plugins/new_user_dialog/localization/el_GR.inc
new file mode 100644 (file)
index 0000000..5bd26e1
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/el_GR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Nikos Keramidis <info@torus.gr>                               |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['identitydialogtitle'] = 'Παρακαλώ συμπληρώστε την ταυτότητα του αποστολέα';
+$labels['identitydialoghint'] = 'Αυτό το πλαίσιο εμφανίζεται μια φορά κατά την πρώτη σύνδεση';
+
diff --git a/plugins/new_user_dialog/localization/en_GB.inc b/plugins/new_user_dialog/localization/en_GB.inc
new file mode 100644 (file)
index 0000000..946ccd8
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/en_GB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Tony Whitmore <Unknown>                                       |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['identitydialogtitle'] = 'Please complete your sender identity.';
+$labels['identitydialoghint'] = 'This box only appears once at the first login.';
+
diff --git a/plugins/new_user_dialog/localization/eo.inc b/plugins/new_user_dialog/localization/eo.inc
new file mode 100644 (file)
index 0000000..b66fec6
--- /dev/null
@@ -0,0 +1,19 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/eo/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Michael Moroni <michael.moroni@mailoo.org>                    |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['identitydialogtitle'] = 'Bonvole plenumu vian identon pri sendanto';
+$labels['identitydialoghint'] = 'Ĉi tiu kesto aperas nur unufoje je la unua ensaluto.';
+
index 2d2ccfe0af5312a911ca49c8013a879de31a4e13..f9f9b7260cd8cfafacbf9018468ef1e65e09ea7a 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/es_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['identitydialogtitle'] = 'Por favor, complete sus datos personales';
 $labels['identitydialoghint'] = 'Este diálogo sólo aparecerá la primera vez que se conecte al correo.';
 
-?>
index 7c6b3f20d27ed561f8cac0d428a604b05b99d0f1..6c836b1b748ea31f2253141fd2018e4d7698fbbd 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/et_EE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['identitydialogtitle'] = 'Palun täida oma saatja identiteet';
 $labels['identitydialoghint'] = 'See kast ilmub ainult esimesel sisselogimisel.';
 
-?>
diff --git a/plugins/new_user_dialog/localization/fa_IR.inc b/plugins/new_user_dialog/localization/fa_IR.inc
new file mode 100644 (file)
index 0000000..b4d6f91
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fa_IR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Hamid <abbaszadeh.h@gmail.com>                                |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['identitydialogtitle'] = 'لطفا شناسنه ارسالی‌تان را کامل کنید';
+$labels['identitydialoghint'] = 'این جعبه فقط یک بار در اولین ورود ظاهر می‌شود.';
+
diff --git a/plugins/new_user_dialog/localization/fi_FI.inc b/plugins/new_user_dialog/localization/fi_FI.inc
new file mode 100644 (file)
index 0000000..f36a50a
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fi_FI/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jiri Grönroos <Unknown>                                      |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['identitydialogtitle'] = 'Täydennä lähettäjätietosi';
+$labels['identitydialoghint'] = 'Tämä viesti näytetään vain ensimmäisellä kirjautumiskerralla.';
+
diff --git a/plugins/new_user_dialog/localization/fr_FR.inc b/plugins/new_user_dialog/localization/fr_FR.inc
new file mode 100644 (file)
index 0000000..1cad93c
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fr_FR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Edouard Moreau <Unknown>                                      |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['identitydialogtitle'] = 'Veuillez saisir votre identité d\'expéditeur';
+$labels['identitydialoghint'] = 'Cette fenêtre de dialogue ne s\'affiche qu\'une seule fois à la première connexion.';
+
index e29993539d1f834c12af1fa4b25e94715d7aec35..3257e90627e311e97302f71321d230bf7af8bf1f 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/gl_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['identitydialogtitle'] = 'Por favor, complete os seus datos persoais';
 $labels['identitydialoghint'] = 'Este diálogo só aparecerá a primera vez que se conecte ao correo.';
 
-?>
diff --git a/plugins/new_user_dialog/localization/he_IL.inc b/plugins/new_user_dialog/localization/he_IL.inc
new file mode 100644 (file)
index 0000000..ae1a172
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/he_IL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Moshe Leibovitch <moish@mln.co.il>                            |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['identitydialogtitle'] = 'נא להשלים את פרטי זהותך';
+$labels['identitydialoghint'] = 'תיבה זו מופיעה פעם אחת בזמן הכניסה הראשונה למערכת';
+
diff --git a/plugins/new_user_dialog/localization/hr_HR.inc b/plugins/new_user_dialog/localization/hr_HR.inc
new file mode 100644 (file)
index 0000000..35a3408
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/hr_HR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Svebor Prstačić <svebor.prstacic@gmail.com>                 |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['identitydialogtitle'] = 'Molim dovršite vaš identitet za slanje poruka';
+$labels['identitydialoghint'] = 'Ova poruka će se pojaviti samo kod prve prijave.';
+
diff --git a/plugins/new_user_dialog/localization/hu_HU.inc b/plugins/new_user_dialog/localization/hu_HU.inc
new file mode 100644 (file)
index 0000000..a405f15
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/hu_HU/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Droszler Gabor <droszler@datatrans.hu>                        |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['identitydialogtitle'] = 'Kérem töltse ki a küldő azonosítóját';
+$labels['identitydialoghint'] = 'Ez az ablak csak az első belépéskor jelenik meg.';
+
diff --git a/plugins/new_user_dialog/localization/hy_AM.inc b/plugins/new_user_dialog/localization/hy_AM.inc
new file mode 100644 (file)
index 0000000..46c7c08
--- /dev/null
@@ -0,0 +1,19 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/hy_AM/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Vahan Yerkanian <vahan@yerkanian.com>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['identitydialogtitle'] = 'Լրացրեք Ձեր ինքնությունը';
+$labels['identitydialoghint'] = 'Այս նշումը երևում է միայն առաջին մուտքի ժամանակ մեկ անգամ';
+
diff --git a/plugins/new_user_dialog/localization/id_ID.inc b/plugins/new_user_dialog/localization/id_ID.inc
new file mode 100644 (file)
index 0000000..31de6b7
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/id_ID/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Putu Arya Sabda Wijaya <Unknown>                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['identitydialogtitle'] = 'Tolong lengkapi identitas pengirim Anda';
+$labels['identitydialoghint'] = 'Kotak ini hanya muncul sekali saat masuk pertama kali.';
+
index 6c834a9c86d91feda404c8de20af1f40c7055b02..93de388cd897bfbca3c6da7db2c95cf7e1778542 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/it_IT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['identitydialogtitle'] = 'Per favore completa le informazioni riguardo la tua identità';
 $labels['identitydialoghint'] = 'Questa finestra comparirà una volta sola al primo accesso';
 
-?>
index 55f47914af4e4f656adf0ed51a5c4264c34d630d..79b07c059da1e3499478ce781dbbc278c4f0b8bf 100644 (file)
@@ -1,9 +1,20 @@
 <?php
 
-//  EN-Revision: 3891
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ja_JP/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Takahiro Kambe <Unknown>                                      |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
 
 $labels = array();
 $labels['identitydialogtitle'] = '送信者情報の入力を完了してください。';
-$labels['identitydialoghint'] = 'ã\81\93ã\81®ã\83\9cã\83\83ã\82¯ã\82¹ã\81«ã\81¯æ\9c\80å\88\9dã\81®ã\83­ã\82°ã\82¤ã\83³æ\99\82ã\81«ä¸\80度ã\81 ã\81\91表示ã\81\95ã\82\8cã\81¾ã\81\99ã\80\82';
+$labels['identitydialoghint'] = 'このボックスは最初のログイン時に一度だけ表示されます。';
 
-?>
\ No newline at end of file
diff --git a/plugins/new_user_dialog/localization/ko_KR.inc b/plugins/new_user_dialog/localization/ko_KR.inc
new file mode 100644 (file)
index 0000000..9948381
--- /dev/null
@@ -0,0 +1,19 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ko_KR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kim, Woohyun <woohyun.kim@gmail.com>                          |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['identitydialogtitle'] = '수신자의 신원을 채우기 바랍니다.';
+$labels['identitydialoghint'] = '이 박스는 최초로 로그인할 때만 나타납니다.';
+
diff --git a/plugins/new_user_dialog/localization/ku.inc b/plugins/new_user_dialog/localization/ku.inc
new file mode 100644 (file)
index 0000000..c0969f5
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ku/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: david absalan <absalan@live.com>                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['identitydialogtitle'] = 'tkaya nawnişani nenar ba tawawi bnwsa';
+$labels['identitydialoghint'] = 'am qtwia wadiara yak jar la sarata krawatawa';
+
diff --git a/plugins/new_user_dialog/localization/lt_LT.inc b/plugins/new_user_dialog/localization/lt_LT.inc
new file mode 100644 (file)
index 0000000..0f03c6d
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/lt_LT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Rimas Kudelis <rq@akl.lt>                                     |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['identitydialogtitle'] = 'Prašom užpildyti trūkstamą informaciją apie save';
+$labels['identitydialoghint'] = 'Šis langas rodomas tik prisijungus pirmąjį kartą.';
+
diff --git a/plugins/new_user_dialog/localization/lv_LV.inc b/plugins/new_user_dialog/localization/lv_LV.inc
new file mode 100644 (file)
index 0000000..3303270
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/lv_LV/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Ivars Strazdiņš <Unknown>                                   |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['identitydialogtitle'] = 'Lūdzu, aizpildiet nosūtītāja identifikācijas informāciju';
+$labels['identitydialoghint'] = 'Šis logs parādīsies tikai pirmajā pieteikšanās reizē';
+
diff --git a/plugins/new_user_dialog/localization/ml_IN.inc b/plugins/new_user_dialog/localization/ml_IN.inc
new file mode 100644 (file)
index 0000000..4009da4
--- /dev/null
@@ -0,0 +1,19 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ml_IN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Anish A <aneesh.nl@gmail.com>                                 |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['identitydialogtitle'] = 'സ്വീകര്‍ത്താവിന്റെ വ്യക്തിത്വം പൂര്‍ത്തീകരിക്കുക';
+$labels['identitydialoghint'] = 'ആദ്യത്തെ പ്രവേശനത്തില്‍ മാത്രമേ ഈ പെട്ടി വരികയുള്ളു';
+
diff --git a/plugins/new_user_dialog/localization/ml_ML.inc b/plugins/new_user_dialog/localization/ml_ML.inc
new file mode 100644 (file)
index 0000000..931ea43
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ml_ML/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Anish A <aneesh.nl@gmail.com>                                 |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['identitydialogtitle'] = 'സ്വീകര്‍ത്താവിന്റെ വ്യക്തിത്വം പൂര്‍ത്തീകരിക്കുക';
+$labels['identitydialoghint'] = 'ആദ്യത്തെ പ്രവേശനത്തില്‍ മാത്രമേ ഈ പെട്ടി വരികയുള്ളു';
+
diff --git a/plugins/new_user_dialog/localization/mr_IN.inc b/plugins/new_user_dialog/localization/mr_IN.inc
new file mode 100644 (file)
index 0000000..ebf0d91
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/mr_IN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Devendra Buddhikot <devendradb@rediffmail.com>                |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['identitydialogtitle'] = 'कृपया पाठवणा-याची ओळख पूर्ण करा';
+$labels['identitydialoghint'] = 'हा चौकोन पहिल्यांदा लॉगिन करताना एकदाच दिसेल.';
+
diff --git a/plugins/new_user_dialog/localization/nb_NB.inc b/plugins/new_user_dialog/localization/nb_NB.inc
new file mode 100644 (file)
index 0000000..f459437
--- /dev/null
@@ -0,0 +1,19 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/nb_NB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Peter Grindem <peter@grindem.no>                              |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['identitydialogtitle'] = 'Vennligst fullfør din avvsender identitet.';
+$labels['identitydialoghint'] = 'Denne boksen kommer kun ved første pålogging.';
+
index 3cc9cec688e57b88c9c35e587a65a6d273fa5f48..74713351424d63b6cebd509a4caa5d9156ec4286 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/nl_NL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['identitydialogtitle'] = 'Vul uw correcte identiteitgegevens in a.u.b.';
 $labels['identitydialoghint'] = 'Dit scherm verschijnt enkel bij uw eerste login.';
 
-?>
index a385836a44b1ab3e56f728dd5d81f9b544559c58..3bdcfd5f673d53a94f926fc6f2dcc1a19cb820e9 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/pl_PL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['identitydialogtitle'] = 'Uzupełnij tożsamość nadawcy';
 $labels['identitydialoghint'] = 'To okno pojawia się tylko przy pierwszym logowaniu.';
 
-?>
index 64e3e6a80025d2e74c04a08c32f302bb0af8fd75..f53fa44ac47a76f25cbb617fe0484568ea6e3dcc 100644 (file)
@@ -1,7 +1,19 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/pt_BR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Victor Benincasa <vbenincasa@gmail.com>                       |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
 $labels['identitydialogtitle'] = 'Por favor complete a sua identidade';
-$labels['identitydialoghint'] = 'Esta caixa aparece apenas uma vez no primeiro login.';
+$labels['identitydialoghint'] = 'Esta tela aparece somente no primeiro acesso.';
 
-?>
diff --git a/plugins/new_user_dialog/localization/ro_RO.inc b/plugins/new_user_dialog/localization/ro_RO.inc
new file mode 100644 (file)
index 0000000..148c56f
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ro_RO/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: tudor <tudor@starnet-alba.ro>                                 |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['identitydialogtitle'] = 'Te rog completează identitatea de expeditor.';
+$labels['identitydialoghint'] = 'Această căsuţă apare o data la prima autentificare.';
+
index b91c2ca2cf2583321bb1fb4adb06328ef1b3299c..723899602e0eb7df4cb1d5673bb184d7273aeba5 100644 (file)
@@ -11,7 +11,7 @@
  +-----------------------------------------------------------------------+
  | Author: Thomas <Unknown>                                              |
  +-----------------------------------------------------------------------+
- @version $Id: ru_RU.inc 5741 2012-01-08 16:20:12Z thomasb $
+ @version $Id$
 */
 
 $labels = array();
index b7b841c4d14c4bc7d5876859d93caa3b608f71bc..5e1fd994434b045e13f93a7d46a6efe7b06fbe90 100644 (file)
@@ -1,16 +1,20 @@
 <?php
+
 /*
- *
- * Slovak translation for Roundcube new_user_dialog plugin
- *
- * @version 1.0 (2010-09-13)
- * @author panda <admin@whistler.sk>
- *
+ +-----------------------------------------------------------------------+
+ | localization/sk_SK/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
-
 $labels = array();
 $labels['identitydialogtitle'] = 'Doplňte prosím Vašu identifikáciu odosielateľa';
 $labels['identitydialoghint'] = 'Toto okno sa objaví len pri prvom prihlásení.';
 
-?>
index 57f563806efbecbc7d6b4b171a0505f1f2e9d78e..431d9333159b0011e36ab52fb98e7a1e94cd983e 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sl_SI/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['identitydialogtitle'] = 'Izberite identiteto za pošiljanje';
 $labels['identitydialoghint'] = 'To okno se prikaže le ob prvi prijavi v spletno pošto.';
 
-?>
diff --git a/plugins/new_user_dialog/localization/sr_CS.inc b/plugins/new_user_dialog/localization/sr_CS.inc
new file mode 100644 (file)
index 0000000..9042b57
--- /dev/null
@@ -0,0 +1,19 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sr_CS/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Saša Zejnilović <zejnils@gmail.com>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['identitydialogtitle'] = 'Молимо вас да попуните свој идентитет пошиљаоца';
+$labels['identitydialoghint'] = 'Ово поље се појављује само једном у првом логовању';
+
index b3e665ef1e84056bf3440583f6177299b2ac5388..60040b1d61603732dd226db5c730272694bf7833 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sv_SE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['identitydialogtitle'] = 'Vänligen fyll i namn och avsändaradress under personliga inställningar';
 $labels['identitydialoghint'] = 'Informationen visas endast vid första inloggningen.';
 
-?>
\ No newline at end of file
diff --git a/plugins/new_user_dialog/localization/tr_TR.inc b/plugins/new_user_dialog/localization/tr_TR.inc
new file mode 100644 (file)
index 0000000..52a2894
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/tr_TR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: ismail yenigul <Unknown>                                      |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['identitydialogtitle'] = 'Lütfen gönderici kimliğinizi tamamlayın';
+$labels['identitydialoghint'] = 'Bu ekran ilk girişte bir kereliğine gözükür';
+
diff --git a/plugins/new_user_dialog/localization/uk_UA.inc b/plugins/new_user_dialog/localization/uk_UA.inc
new file mode 100644 (file)
index 0000000..0b77817
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/uk_UA/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Anton Gladky <Unknown>                                        |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['identitydialogtitle'] = 'Будь ласка, вкажіть Ваше ім’я';
+$labels['identitydialoghint'] = 'Це повідомлення відображається тільки під час першого заходу';
+
diff --git a/plugins/new_user_dialog/localization/vi_VN.inc b/plugins/new_user_dialog/localization/vi_VN.inc
new file mode 100644 (file)
index 0000000..fe617e5
--- /dev/null
@@ -0,0 +1,19 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/vi_VN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kenny Tran <kennethanh@gmail.com>                             |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['identitydialogtitle'] = 'Xin điền nhận diện người gửi của bạn';
+$labels['identitydialoghint'] = 'Hộp này chỉ xuất hiện 1 lần khi đăng nhập lần đầu tiên';
+
diff --git a/plugins/new_user_dialog/localization/zh_CN.inc b/plugins/new_user_dialog/localization/zh_CN.inc
new file mode 100644 (file)
index 0000000..1a757c6
--- /dev/null
@@ -0,0 +1,19 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/zh_CN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Christopher Meng <cickumqt@gmail.com>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['identitydialogtitle'] = '请填写发送者标识';
+$labels['identitydialoghint'] = '本提示仅在第一次登录时显示。';
+
index 87261f9cd291b1ae9d77181a71590e523b07f9de..6a36f1a4a283e4f5e47a58667106d691702d18c7 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/zh_TW/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['identitydialogtitle'] = '請完成您的身份資訊';
 $labels['identitydialoghint'] = '此視窗只會於第一次登入時出現。';
 
-?>
index 9d7cbcba57e09123746522557d3dc2e29d5c5a64..9c9dcce1cff64f58e1395239f620062749d9ff4f 100644 (file)
@@ -8,6 +8,7 @@
  * on the screen until the user has reviewed/completed his identity.
  *
  * @version @package_version@
+ * @license GNU GPLv3+
  * @author Thomas Bruederli
  */
 class new_user_dialog extends rcube_plugin
@@ -81,8 +82,8 @@ class new_user_dialog extends rcube_plugin
       ));
 
       // add overlay input box to html page
-      $rcmail->output->add_footer(html::div(array('id' => 'newuseroverlay'),
-        html::tag('form', array(
+      $rcmail->output->add_footer(html::tag('form', array(
+            'id' => 'newuserdialog',
             'action' => $rcmail->url('plugin.newusersave'),
             'method' => 'post'),
           html::tag('h3', null, Q($this->gettext('identitydialogtitle'))) .
@@ -91,13 +92,13 @@ class new_user_dialog extends rcube_plugin
           html::p(array('class' => 'formbuttons'),
             html::tag('input', array('type' => 'submit',
               'class' => 'button mainaction', 'value' => $this->gettext('save'))))
-        )
-      ));
+        ));
 
       // disable keyboard events for messages list (#1486726)
       $rcmail->output->add_script(
         "rcmail.message_list.key_press = function(){};
          rcmail.message_list.key_down = function(){};
+         $('#newuserdialog').show().dialog({ modal:true, resizable:false, closeOnEscape:false, width:420 });
          $('input[name=_name]').focus();
         ", 'docready');
 
index 1c3e652b622fe574a336b3f7bb55e6c166a6540c..207604dd1ed99d2f4dfe2b2f29f98aefc8a55024 100644 (file)
@@ -1,60 +1,39 @@
-/** Styles for the new-user-dialog overlay box */
+/** Styles for the new-user-dialog box */
 
-#newuseroverlay {
-  position: absolute;
-  top: 0;
-  left: 0;
-  right: 0;
-  bottom: 0;
-  z-index: 10000;
-  background: rgba(0,0,0,0.5) !important;
-  background: #333;
-  
-  /** IE hacks */
-  filter: alpha(opacity=90);
-  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=90)";
-  width: expression(document.documentElement.clientWidth+'px');
-  height: expression(document.documentElement.clientHeight+'px');
+#newuserdialog {
+       display: none;
 }
 
-#newuseroverlay h3 {
-  color: #333;
-  font-size: normal;
-  margin-top: 0.5em;
-  margin-bottom: 0;
+#newuserdialog h3 {
+       color: #333;
+       font-size: normal;
+       margin-top: 0;
+       margin-bottom: 0;
 }
 
-#newuseroverlay p.hint {
-  margin-top: 0.5em;
-  font-style: italic;
+#newuserdialog p.hint {
+       margin-top: 0.5em;
+       margin-bottom: 1em;
+       font-style: italic;
 }
 
-#newuseroverlay form {
-  width: 32em;
-  margin: 8em auto;
-  padding: 1em 2em;
-  background: #F6F6F6;
-  border: 2px solid #555;
-  border-radius: 6px;
-  -moz-border-radius: 6px;
-  -webkit-border-radius: 6px;
+#newuserdialog table td.title {
+       color: #666;
+       text-align: right;
+       padding-right: 1em;
+       white-space: nowrap;
 }
 
-#newuseroverlay table td.title
-{
-  color: #666;
-  text-align: right;
-  padding-right: 1em;
-  white-space: nowrap;
+#newuserdialog table td input,
+#newuserdialog table td textarea {
+       width: 20em;
 }
 
-#newuseroverlay table td input,
-#newuseroverlay table td textarea
-{
-  width: 20em;
+#newuserdialog .formbuttons {
+       margin-top: 1.5em;
+       text-align: center;
 }
 
-#newuseroverlay .formbuttons {
-  margin-top: 1.5em;
-  text-align: center;
+.ui-dialog-titlebar-close {
+       display: none;
 }
\ No newline at end of file
index 52874701fdcfec4f202522771189db492a7b72ce..0bca1d9d47bc304b210e25b52e8f54518602eada 100644 (file)
                <email>roundcube@gmail.com</email>
                <active>yes</active>
        </lead>
-       <date>2011-05-12</date>
-       <time>10:00</time>
+       <date>2012-01-16</date>
+       <time>17:00</time>
        <version>
-               <release>1.4</release>
+               <release>1.5</release>
                <api>1.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>
+       <license uri="http://www.gnu.org/licenses/gpl.html">GNU GPLv3+</license>
        <notes>
+- Use jquery UI to render the dialog
 - Fixed IDNA encoding/decoding of e-mail addresses (#1487909)
-    </notes>
+       </notes>
        <contents>
                <dir baseinstalldir="/" name="/">
                        <file name="new_user_dialog.php" role="php">
                </required>
        </dependencies>
        <phprelease/>
-    <changelog>
-        <release>
-               <date>2010-03-29</date>
-               <time>13:20:00</time>
-               <version>
-                       <release>1.0</release>
-                       <api>1.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></notes>
-        </release>
-        <release>
-               <date>2010-05-13</date>
-               <time>19:35:00</time>
-               <version>
-                       <release>1.1</release>
-                       <api>1.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>
+       <changelog>
+               <release>
+                       <date>2010-03-29</date>
+                       <time>13:20:00</time>
+                       <version>
+                               <release>1.0</release>
+                               <api>1.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></notes>
+               </release>
+               <release>
+                       <date>2010-05-13</date>
+                       <time>19:35:00</time>
+                       <version>
+                               <release>1.1</release>
+                               <api>1.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 space bar and backspace buttons not working (#1486726)
-            </notes>
-        </release>
-        <release>
-               <date>2010-05-27</date>
-               <time>12:00:00</time>
-               <version>
-                       <release>1.2</release>
-                       <api>1.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>
+                       </notes>
+               </release>
+               <release>
+                       <date>2010-05-27</date>
+                       <time>12:00:00</time>
+                       <version>
+                               <release>1.2</release>
+                               <api>1.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>
 - Add overlay box only to mail task main template
 - Fix possible error on form submission (#1486103)
-            </notes>
-        </release>
-        <release>
-               <date>2010-12-02</date>
-               <time>12:00:00</time>
-               <version>
-                       <release>1.3</release>
-                       <api>1.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>
+                       </notes>
+               </release>
+               <release>
+                       <date>2010-12-02</date>
+                       <time>12:00:00</time>
+                       <version>
+                               <release>1.3</release>
+                               <api>1.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 setting of focus on name input
 - Added gl_ES translation
-            </notes>
-        </release>
-    </changelog>
+                       </notes>
+               </release>
+               <release>
+                       <date>2012-01-16</date>
+                       <time>17:00:00</time>
+                       <version>
+                               <release>1.5</release>
+                               <api>1.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>- Use jquery UI to render the dialog</notes>
+               </release>
+       </changelog>
 </package>
index 32c2c9d03443573b3013b596f0865da86797993e..39d853d4c85a887fd2b62f01b1c2a0a5c579a88b 100644 (file)
@@ -6,7 +6,7 @@
  *
  * This plugin requires that a working public_ldap directory be configured.
  *
- * @version 1.05
+ * @version @package_version@
  * @author Kris Steinhoff
  *
  * Example configuration:
@@ -38,16 +38,19 @@ class new_user_identity extends rcube_plugin
     function lookup_user_name($args)
     {
         $rcmail = rcmail::get_instance();
-        
+
         if ($this->init_ldap($args['host'])) {
-            $results = $this->ldap->search('*', $args['user'], TRUE);
+            $results = $this->ldap->search('*', $args['user'], true);
             if (count($results->records) == 1) {
-                $args['user_name'] = $results->records[0]['name'];
-                if (!$args['user_email'] && strpos($results->records[0]['email'], '@')) {
-                    $args['user_email'] = rcube_idn_to_ascii($results->records[0]['email']);
+                $user_name  = is_array($results->records[0]['name']) ? $results->records[0]['name'][0] : $results->records[0]['name'];
+                $user_email = is_array($results->records[0]['email']) ? $results->records[0]['email'][0] : $results->records[0]['email'];
+
+                $args['user_name'] = $user_name;
+                if (!$args['user_email'] && strpos($user_email, '@')) {
+                    $args['user_email'] = rcube_idn_to_ascii($user_email);
                 }
                 if (($alias_col = $rcmail->config->get('new_user_identity_alias')) && $results->records[0][$alias_col]) {
-                  $args['alias'] = $results->records[0][$alias_col];
+                  $args['alias'] = is_array($results->records[0][$alias_col]) ? $results->records[0][$alias_col][0] : $results->records[0][$alias_col];
                 }
             }
         }
@@ -56,8 +59,9 @@ class new_user_identity extends rcube_plugin
 
     private function init_ldap($host)
     {
-        if ($this->ldap)
+        if ($this->ldap) {
             return $this->ldap->ready;
+        }
 
         $rcmail = rcmail::get_instance();
 
diff --git a/plugins/new_user_identity/package.xml b/plugins/new_user_identity/package.xml
new file mode 100644 (file)
index 0000000..95f1dc0
--- /dev/null
@@ -0,0 +1,49 @@
+<?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>new_user_identity</name>
+       <channel>pear.roundcube.net</channel>
+       <summary>Populates a new user's default identity from LDAP on their first visit.</summary>
+       <description>
+           Populates a new user's default identity from LDAP on their first visit.
+       </description>
+       <lead>
+               <name>Aleksander Machniak</name>
+               <user>alec</user>
+               <email>alec@alec.pl</email>
+               <active>yes</active>
+       </lead>
+       <date>2011-11-21</date>
+       <version>
+               <release>1.0.5</release>
+               <api>1.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>-</notes>
+       <contents>
+               <dir baseinstalldir="/" name="/">
+                       <file name="new_user_identity.php" role="php">
+                               <tasks:replace from="@name@" to="name" type="package-info"/>
+                               <tasks:replace from="@package_version@" to="version" type="package-info"/>
+                       </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/newmail_notifier/localization/be_BE.inc b/plugins/newmail_notifier/localization/be_BE.inc
new file mode 100644 (file)
index 0000000..ef5e4b6
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/be_BE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Alex Nehaichik <nab@mail.by>                                  |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['basic'] = 'Адлюстроўваць інфармаванні азіральніка ў час атрымання новых павдеамленняў';
+$labels['desktop'] = 'Адлюстроўваць інфармаванні працоўнага стала ў час атрымання новых павдеамленняў';
+$labels['sound'] = 'Агучваць атрыманне новых паведамленняў';
+$labels['test'] = 'Праверыць';
+$labels['title'] = 'Новы ліст!';
+$labels['body'] = 'Вы атрымалі новае паведамленне.';
+$labels['testbody'] = 'Гэта тэставае інфармаванне.';
+$labels['desktopdisabled'] = 'Інфармаванне працоўнага стала адлкючана ў вашым азіральніку';
+$labels['desktopunsupported'] = 'Ваш азіральнік не падтрымлівае інфармаванне працоўнага стала.';
+
diff --git a/plugins/newmail_notifier/localization/bs_BA.inc b/plugins/newmail_notifier/localization/bs_BA.inc
new file mode 100644 (file)
index 0000000..b9fe2ef
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/bs_BA/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kenan Dervišević <kenan3008@gmail.com>                      |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['basic'] = 'Prikaži obavijesti za nove poruke u pregledniku';
+$labels['desktop'] = 'Prikaži obavijesti za nove poruke na desktopu';
+$labels['sound'] = 'Zvučni signal za novu poruku';
+$labels['test'] = 'Testiraj';
+$labels['title'] = 'Novi email!';
+$labels['body'] = 'Dobili ste novu poruku.';
+$labels['testbody'] = 'Ovo je testna obavijest.';
+$labels['desktopdisabled'] = 'Desktop obavijesti su onemogućene u vašem pregledniku.';
+$labels['desktopunsupported'] = 'Vaš preglednik ne podržava desktop obavijesti.';
+
diff --git a/plugins/newmail_notifier/localization/ca_ES.inc b/plugins/newmail_notifier/localization/ca_ES.inc
new file mode 100644 (file)
index 0000000..da9078d
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ca_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jordi Sanfeliu <jordi@fibranet.cat>                           |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['basic'] = 'Mostra notificacions del navegador quan hi hagi un missatge nou';
+$labels['desktop'] = 'Mostra notificacions de l\'escriptori quan hi hagi un missatge nou';
+$labels['sound'] = 'Reprodueix el so quan hi hagi un missatge nou';
+$labels['test'] = 'Comprova';
+$labels['title'] = 'Missatge nou!';
+$labels['body'] = 'Heu rebut un missatge nou.';
+$labels['testbody'] = 'Això és una notificació de prova.';
+$labels['desktopdisabled'] = 'Les notificacions d\'escriptori estan deshabilitades al vostre navegador.';
+$labels['desktopunsupported'] = 'El vostre navegador no permet les notificacions d\'escriptori.';
+
diff --git a/plugins/newmail_notifier/localization/cs_CZ.inc b/plugins/newmail_notifier/localization/cs_CZ.inc
new file mode 100644 (file)
index 0000000..df5396f
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/cs_CZ/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Tomáš Kyzlink <Unknown>                                     |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['basic'] = 'Zobrazit upozornění v prohlížeči při příchozí zprávě';
+$labels['desktop'] = 'Zobrazit upozornění na ploše při příchozí zprávě';
+$labels['sound'] = 'Přehrát zvuk při příchozí zprávě';
+$labels['test'] = 'Vyzkoušet';
+$labels['title'] = 'Nová zpráva!';
+$labels['body'] = 'Dostali jste novou zprávu.';
+$labels['testbody'] = 'Toto je zkouška upozornění.';
+$labels['desktopdisabled'] = 'Upozornění na ploše jsou ve vašem prohlížeči vypnuté.';
+$labels['desktopunsupported'] = 'Váš prohlížeč nepodporuje upozornění na ploše.';
+
diff --git a/plugins/newmail_notifier/localization/cy_GB.inc b/plugins/newmail_notifier/localization/cy_GB.inc
new file mode 100644 (file)
index 0000000..35c552c
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/cy_GB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Dafydd Tomos <Unknown>                                        |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['basic'] = 'Dangos hysbysiadau porwr ar neges newydd';
+$labels['desktop'] = 'Dangos hysbysiadau penbwrdd ar neges newydd';
+$labels['sound'] = 'Chwarae sŵn ar neges newydd';
+$labels['test'] = 'Prawf';
+$labels['title'] = 'Ebost Newydd!';
+$labels['body'] = 'Rydych wedi derbyn neges newydd.';
+$labels['testbody'] = 'Hysbysiad prawf yw hwn.';
+$labels['desktopdisabled'] = 'Mae hysbysiadau penbwrdd wedi ei analluogi yn eich porwr';
+$labels['desktopunsupported'] = 'Nid yw eich porwr yn cefnogi hysbysiadau penbwrdd.';
+
diff --git a/plugins/newmail_notifier/localization/da_DK.inc b/plugins/newmail_notifier/localization/da_DK.inc
new file mode 100644 (file)
index 0000000..b3ace8d
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/da_DK/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Johannes Hessellund <osos@openeyes.dk>                        |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['basic'] = 'Vis browserbesked ved ny besked';
+$labels['desktop'] = 'Vis skrivebordsbesked ved ny besked';
+$labels['sound'] = 'Afspil en lyd ved ny besked';
+$labels['test'] = 'Test';
+$labels['title'] = 'Ny besked!';
+$labels['body'] = 'Du har modtaget en ny besked.';
+$labels['testbody'] = 'Dette er en test meddelelse.';
+$labels['desktopdisabled'] = 'Skrivebordsbeskeder er deaktiveret i din browser.';
+$labels['desktopunsupported'] = 'Din browser understøtter ikke skrivebordsbeskeder.';
+
index b172a7dfe523bd787d9478d40cfd6f98e6704764..4ce6134d1073f14e7bac97368b2a37f8e73cff07 100644 (file)
@@ -11,7 +11,7 @@
  +-----------------------------------------------------------------------+
  | Author: Thomas <Unknown>                                              |
  +-----------------------------------------------------------------------+
- @version $Id: de_CH.inc 5741 2012-01-08 16:20:12Z thomasb $
+ @version $Id$
 */
 
 $labels = array();
diff --git a/plugins/newmail_notifier/localization/en_GB.inc b/plugins/newmail_notifier/localization/en_GB.inc
new file mode 100644 (file)
index 0000000..10cfdec
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/en_GB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Tony Whitmore <Unknown>                                       |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['basic'] = 'Display browser notifications on new message';
+$labels['desktop'] = 'Display desktop notifications on new message';
+$labels['sound'] = 'Play sound on new message';
+$labels['test'] = 'Test';
+$labels['title'] = 'New Email!';
+$labels['body'] = 'You\'ve received a new message.';
+$labels['testbody'] = 'This is a test notification.';
+$labels['desktopdisabled'] = 'Desktop notifications are disabled in your browser.';
+$labels['desktopunsupported'] = 'Your browser does not support desktop notifications.';
+
diff --git a/plugins/newmail_notifier/localization/eo.inc b/plugins/newmail_notifier/localization/eo.inc
new file mode 100644 (file)
index 0000000..b8058e4
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/eo/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Michael Moroni <michael.moroni@mailoo.org>                    |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['basic'] = 'Montri atentigojn de retumilo pri nova mesaĝo';
+$labels['desktop'] = 'Montri atentigojn de komputilo pri nova mesaĝo';
+$labels['sound'] = 'Ludi sonon por nova mesaĝo';
+$labels['test'] = 'Testi';
+$labels['title'] = 'Nova retmesaĝo!';
+$labels['body'] = 'Vi ricevis novan mesaĝon.';
+$labels['testbody'] = 'Tio estas testo pri atentigo.';
+$labels['desktopdisabled'] = 'Atentigoj de komputilo estas malŝaltitaj en via retumilo.';
+$labels['desktopunsupported'] = 'Via retumilo ne subtenas atentigojn de komputilo.';
+
diff --git a/plugins/newmail_notifier/localization/es_ES.inc b/plugins/newmail_notifier/localization/es_ES.inc
new file mode 100644 (file)
index 0000000..ff15e02
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/es_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Emi Bcn <Unknown>                                             |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['basic'] = 'Mostrar notificaciones del navegador cuando llegue un nuevo mensaje';
+$labels['desktop'] = 'Mostrar notificaciones del escritorio cuando llegue un nuevo mensaje';
+$labels['sound'] = 'Reproducir sonido cuando llegue un nuevo mensaje';
+$labels['test'] = 'Prueba';
+$labels['title'] = 'Mensaje nuevo!';
+$labels['body'] = 'Has recibido un mensaje nuevo.';
+$labels['testbody'] = 'Esta es una notificación de pruebas.';
+$labels['desktopdisabled'] = 'Las notificaciones de escritorio están deshabilitadas en tu navegador.';
+$labels['desktopunsupported'] = 'Tu navegador no soporta notificaciones de escritorio.';
+
diff --git a/plugins/newmail_notifier/localization/et_EE.inc b/plugins/newmail_notifier/localization/et_EE.inc
new file mode 100644 (file)
index 0000000..9cc5b16
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/et_EE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: yllar <Unknown>                                               |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['basic'] = 'Uue kirja saabumisel näita lehitsejas teavitust';
+$labels['desktop'] = 'Uue kirja saabumisel näita töölaua teavitust';
+$labels['sound'] = 'Uue kirja saabumisel mängi heli';
+$labels['test'] = 'Proovi';
+$labels['title'] = 'Uus kiri!';
+$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.';
+
diff --git a/plugins/newmail_notifier/localization/fa_IR.inc b/plugins/newmail_notifier/localization/fa_IR.inc
new file mode 100644 (file)
index 0000000..d24fc5a
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fa_IR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Hamid <abbaszadeh.h@gmail.com>                                |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['basic'] = 'نمایش تذکرهای مرورگر برای پیغام جدید';
+$labels['desktop'] = 'نمایش تذکرهای رومیزی برای پیغام جدید';
+$labels['sound'] = 'پخش صدا برای پیغام جدید';
+$labels['test'] = 'آزمایش';
+$labels['title'] = 'پست الکترونیکی جدید!';
+$labels['body'] = 'شما یک پیغام جدید دریافت کرده‌اید.';
+$labels['testbody'] = 'این یک تذکر آزمایشی است.';
+$labels['desktopdisabled'] = 'تذکرهای رومیزی در مرورگر شما غیرفعال شده‌اند.';
+$labels['desktopunsupported'] = 'مرورگر شما تذکرهای رومیزی را پشتیبانی نمی‌کند.';
+
diff --git a/plugins/newmail_notifier/localization/fi_FI.inc b/plugins/newmail_notifier/localization/fi_FI.inc
new file mode 100644 (file)
index 0000000..e4f12d0
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fi_FI/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jiri Grönroos <Unknown>                                      |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['basic'] = 'Näytä selainilmoitus uuden viestin saapuessa';
+$labels['desktop'] = 'Näytä työpöytäilmoitus uuden viestin saapuessa';
+$labels['sound'] = 'Soita ääni uuden viestin saapuessa';
+$labels['test'] = 'Testaa';
+$labels['title'] = 'Uutta sähköpostia!';
+$labels['body'] = 'Sait uuden sähköpostiviestin.';
+$labels['testbody'] = 'Tämä on testi-ilmoitus.';
+$labels['desktopdisabled'] = 'Työpöytäilmoitukset on poistettu käytöstä selaimesi asetuksista.';
+$labels['desktopunsupported'] = 'Selaimesi ei tue työpöytäilmoituksia.';
+
diff --git a/plugins/newmail_notifier/localization/fr_FR.inc b/plugins/newmail_notifier/localization/fr_FR.inc
new file mode 100644 (file)
index 0000000..d1c71d3
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fr_FR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Edouard Moreau <Unknown>                                      |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['basic'] = 'Afficher une notification dans le navigateur à réception d\'un nouveau message';
+$labels['desktop'] = 'Afficher une notification sur le bureau à réception d\'un nouveau message';
+$labels['sound'] = 'Jouer un son à réception d\'un nouveau message';
+$labels['test'] = 'Tester';
+$labels['title'] = 'Nouveau message !';
+$labels['body'] = 'Vous avez reçu un nouveau message';
+$labels['testbody'] = 'Test de notification';
+$labels['desktopdisabled'] = 'Les notifications sur le bureau sont désactivées dans votre navigateur';
+$labels['desktopunsupported'] = 'Votre navigateur ne supporte pas les notifications sur le bureau';
+
diff --git a/plugins/newmail_notifier/localization/gl_ES.inc b/plugins/newmail_notifier/localization/gl_ES.inc
new file mode 100644 (file)
index 0000000..06ff08f
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/gl_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: ghas <Unknown>                                                |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['test'] = 'Proba';
+$labels['title'] = 'Novo Correo!';
+$labels['desktopunsupported'] = 'O teu navegador non soporta notificacións de escritorio.';
+
diff --git a/plugins/newmail_notifier/localization/he_IL.inc b/plugins/newmail_notifier/localization/he_IL.inc
new file mode 100644 (file)
index 0000000..207b70c
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/he_IL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Moshe Leibovitch <moish@mln.co.il>                            |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['basic'] = 'איתות מהדפדפן על הגעת הודעות חדשות';
+$labels['desktop'] = 'איתות משולחן העבודה על הגעת הודעות חדשות';
+$labels['sound'] = 'השמעת איתות קולי בעת הגעה של הודעה חדשה';
+$labels['test'] = 'בדיקה';
+$labels['title'] = 'הודעה חדשה !';
+$labels['body'] = 'התקבלה הודעה חדשה';
+$labels['testbody'] = 'זה איתות לנסיון';
+$labels['desktopdisabled'] = 'איתותים משולחן העבודה אינם פעילים בדפדפן שלך';
+$labels['desktopunsupported'] = 'הדפדפן שלך אינו תומך באיתותים משולחן העבודה';
+
diff --git a/plugins/newmail_notifier/localization/hr_HR.inc b/plugins/newmail_notifier/localization/hr_HR.inc
new file mode 100644 (file)
index 0000000..ef07a30
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/hr_HR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Svebor Prstačić <svebor.prstacic@gmail.com>                 |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['basic'] = 'Prikaži dojave preglednika kada dođe nova poruka';
+$labels['desktop'] = 'Prikaži dojave na desktopu kada dođe nova poruka';
+$labels['sound'] = 'Pusti zvuk kada dođe nova poruka';
+$labels['test'] = 'Test';
+$labels['title'] = 'Novi Email!';
+$labels['body'] = 'Primili ste novu poruku';
+$labels['testbody'] = 'Ovo je probna dojava.';
+$labels['desktopdisabled'] = 'Dojave na desktopu su onemogućene u vašem pregledniku.';
+$labels['desktopunsupported'] = 'Vaš preglednik ne podržava dojave na desktopu.';
+
diff --git a/plugins/newmail_notifier/localization/hu_HU.inc b/plugins/newmail_notifier/localization/hu_HU.inc
new file mode 100644 (file)
index 0000000..9dd8609
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/hu_HU/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: bela <Unknown>                                                |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$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['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.';
+
diff --git a/plugins/newmail_notifier/localization/hy_AM.inc b/plugins/newmail_notifier/localization/hy_AM.inc
new file mode 100644 (file)
index 0000000..0cbf412
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/hy_AM/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Vahan Yerkanian <vahan@yerkanian.com>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['basic'] = 'Ցուցադրել զննարկչի ծանուցում նոր հաղորդագրություն ստանալիս';
+$labels['desktop'] = 'Ցուցադրել սեղանադրի ծանուցում նոր հաղորդագրություն ստանալիս';
+$labels['sound'] = 'Ձայն հանել նոր հաղորդագրություն ստանալիս';
+$labels['test'] = 'փորձարկում';
+$labels['title'] = 'Նոր էլփոստ';
+$labels['body'] = 'Դուք ստացաք նոր հաղորդագրություն';
+$labels['testbody'] = 'Սա փորձնական ծանուցում է';
+$labels['desktopdisabled'] = 'Սեղանադրի ծանուցումները Ձեր զննարկչում անջատված են';
+$labels['desktopunsupported'] = 'Ձեր զննարկիչը չունի սեղանադրի ծանուցումների հնարավորություն։';
+
diff --git a/plugins/newmail_notifier/localization/ia.inc b/plugins/newmail_notifier/localization/ia.inc
new file mode 100644 (file)
index 0000000..df92b95
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ia/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Emilio Sepulveda <emilio@chilemoz.org>                        |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['basic'] = 'Monstrar notificationes de navigator in cata nove message';
+$labels['test'] = 'Prova';
+$labels['title'] = 'Nove message!';
+$labels['testbody'] = 'Iste es un notification de prova.';
+
diff --git a/plugins/newmail_notifier/localization/ia_IA.inc b/plugins/newmail_notifier/localization/ia_IA.inc
new file mode 100644 (file)
index 0000000..b4cd8c8
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ia_IA/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Emilio Sepulveda <emilio@chilemoz.org>                        |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['basic'] = 'Monstrar notificationes de navigator in cata nove message';
+$labels['test'] = 'Prova';
+$labels['title'] = 'Nove message!';
+$labels['testbody'] = 'Iste es un notification de prova.';
+
diff --git a/plugins/newmail_notifier/localization/id_ID.inc b/plugins/newmail_notifier/localization/id_ID.inc
new file mode 100644 (file)
index 0000000..cea5a6c
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/id_ID/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Putu Arya Sabda Wijaya <Unknown>                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['basic'] = 'Perlihatkan pemberitahuan pada peramban saat ada pesan baru';
+$labels['desktop'] = 'Perlihatkan pemberitahuan pada desktop saat ada pesan baru';
+$labels['sound'] = 'Mainkan suara saat ada pesan baru';
+$labels['test'] = 'Uji';
+$labels['title'] = 'Email Baru!';
+$labels['body'] = 'Anda telah menerima sebuah pesan baru.';
+$labels['testbody'] = 'Uji pemberitahuan.';
+$labels['desktopdisabled'] = 'Pemberitahuan di desktop dimatikan pada peramban Anda.';
+$labels['desktopunsupported'] = 'Peramban Anda tidak mendukung pemberitahuan pada desktop';
+
diff --git a/plugins/newmail_notifier/localization/it_IT.inc b/plugins/newmail_notifier/localization/it_IT.inc
new file mode 100644 (file)
index 0000000..14f8c59
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/it_IT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: emilio brambilla <Unknown>                                    |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['basic'] = 'visualizza notifica nel browser per nuovi messaggi';
+$labels['desktop'] = 'visualizza notifiche sul desktop per nuovi messaggi';
+$labels['sound'] = 'riproduci il suono per nuovi messaggi';
+$labels['test'] = 'Prova';
+$labels['title'] = 'nuovo messaggio';
+$labels['body'] = 'hai ricevuto un nuovo messaggio';
+$labels['testbody'] = 'notifica di prova';
+$labels['desktopdisabled'] = 'le notifiche sul desktop sono disabilitate nel tuo browser';
+$labels['desktopunsupported'] = 'il tuo browser non supporta le notifiche sul desktop';
+
diff --git a/plugins/newmail_notifier/localization/ja_JP.inc b/plugins/newmail_notifier/localization/ja_JP.inc
new file mode 100644 (file)
index 0000000..4937dc1
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ja_JP/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Takahiro Kambe <Unknown>                                      |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['basic'] = '新しいメッセージの通知をブラウザーに表示';
+$labels['desktop'] = '新しいメッセージの通知をデスクトップに表示';
+$labels['sound'] = '新しいメッセージが届くと音を再生';
+$labels['test'] = 'テスト';
+$labels['title'] = '新しい電子メールです!';
+$labels['body'] = '新しいメッセージを受信しました。';
+$labels['testbody'] = 'これはテストの通知です。';
+$labels['desktopdisabled'] = 'ブラウザーでデスクトップ通知が無効になっています。';
+$labels['desktopunsupported'] = 'ブラウザーがデスクトップ通知をサポートしていません。';
+
diff --git a/plugins/newmail_notifier/localization/ko_KR.inc b/plugins/newmail_notifier/localization/ko_KR.inc
new file mode 100644 (file)
index 0000000..c9641fb
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ko_KR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kim, Woohyun <woohyun.kim@gmail.com>                          |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['basic'] = '새로운 메시지가 도착 시에 브라우저의 알림에 표시';
+$labels['desktop'] = '새로운 메시지가 도착 시에 데스크탑의 알림에 표시';
+$labels['sound'] = '새로운 메시지가 도착 시에 소리 재생';
+$labels['test'] = '테스트';
+$labels['title'] = '새로운 메일 도착!';
+$labels['body'] = '새로운 메시지를 수신하였습니다.';
+$labels['testbody'] = '이 것은 시험용 알림입니다.';
+$labels['desktopdisabled'] = '당신의 브라우져에서는 데스크탑의 알림이 불가능하도록 되어있습니다.';
+$labels['desktopunsupported'] = '당신의 브라우져에서는 데스크탑의 알림을 지원하지 않습니다.';
+
diff --git a/plugins/newmail_notifier/localization/lt_LT.inc b/plugins/newmail_notifier/localization/lt_LT.inc
new file mode 100644 (file)
index 0000000..99a4444
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/lt_LT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Rimas Kudelis <rq@akl.lt>                                     |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['basic'] = 'Pranešti apie naujus laiškus naršyklėje';
+$labels['desktop'] = 'Pranešti apie naujus laiškus sistemos pranešimu';
+$labels['sound'] = 'Pranešti apie naujus laiškus garsu';
+$labels['test'] = 'Bandymas';
+$labels['title'] = 'Naujas laiškas!';
+$labels['body'] = 'Jūs gavote naują laišką.';
+$labels['testbody'] = 'Tai – bandomasis pranešimas.';
+$labels['desktopdisabled'] = 'Jūsų naršyklėje sistemos pranešimai išjungti.';
+$labels['desktopunsupported'] = 'Jūsų naršyklėje sistemos pranešimai nepalaikomi.';
+
diff --git a/plugins/newmail_notifier/localization/ml_IN.inc b/plugins/newmail_notifier/localization/ml_IN.inc
new file mode 100644 (file)
index 0000000..25dbb3e
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ml_IN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Anish A <aneesh.nl@gmail.com>                                 |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['basic'] = 'ബ്രൌസര്‍ അറിയിപ്പുകള്‍ പുതിയ സന്ദേശത്തില്‍ കാണിക്കുക';
+$labels['desktop'] = 'ഡെസ്ക്ക്ടോപ്പ് അറിയിപ്പുകള്‍ പുതിയ സന്ദേശത്തില്‍ കാണിക്കുക';
+$labels['sound'] = 'പുതിയ സന്ദേശത്തില്‍ സബ്ദം കേള്‍പ്പിക്കുക';
+$labels['test'] = 'പരീക്ഷിക്കുക';
+$labels['title'] = 'പുതിയ സന്ദേശം !';
+$labels['body'] = 'താങ്കള്‍ക്ക് ഒരു പുതിയ സന്ദേശം ലഭിച്ചു';
+$labels['testbody'] = 'ഇത് ഒരു പരീക്ഷണ അറിയിപ്പാണ്.';
+$labels['desktopdisabled'] = 'താങ്കളുടെ ബ്രൌസറില്‍ ഡെസ്ക്ക്ടോപ്പ് നോട്ടിഫിക്കേഷന്‍ പ്രവര്‍ത്തനരഹിതമാണ്.';
+$labels['desktopunsupported'] = 'താങ്കളുടെ ബ്രൌസ്സര്‍ ഡെസ്ക്ടോപ്പ് അറിയിപ്പുകള്‍ പിന്‍തുണയ്ക്കുന്നില്ല.';
+
diff --git a/plugins/newmail_notifier/localization/ml_ML.inc b/plugins/newmail_notifier/localization/ml_ML.inc
new file mode 100644 (file)
index 0000000..aa0bd44
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ml_ML/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Anish A <aneesh.nl@gmail.com>                                 |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['basic'] = 'ബ്രൌസര്‍ അറിയിപ്പുകള്‍ പുതിയ സന്ദേശത്തില്‍ കാണിക്കുക';
+$labels['desktop'] = 'ഡെസ്ക്ക്ടോപ്പ് അറിയിപ്പുകള്‍ പുതിയ സന്ദേശത്തില്‍ കാണിക്കുക';
+$labels['sound'] = 'പുതിയ സന്ദേശത്തില്‍ സബ്ദം കേള്‍പ്പിക്കുക';
+$labels['test'] = 'പരീക്ഷിക്കുക';
+$labels['title'] = 'പുതിയ സന്ദേശം !';
+$labels['body'] = 'താങ്കള്‍ക്ക് ഒരു പുതിയ സന്ദേശം ലഭിച്ചു';
+$labels['testbody'] = 'ഇത് ഒരു പരീക്ഷണ അറിയിപ്പാണ്.';
+$labels['desktopdisabled'] = 'താങ്കളുടെ ബ്രൌസറില്‍ ഡെസ്ക്ക്ടോപ്പ് നോട്ടിഫിക്കേഷന്‍ പ്രവര്‍ത്തനരഹിതമാണ്.';
+$labels['desktopunsupported'] = 'താങ്കളുടെ ബ്രൌസ്സര്‍ ഡെസ്ക്ടോപ്പ് അറിയിപ്പുകള്‍ പിന്‍തുണയ്ക്കുന്നില്ല.';
+
diff --git a/plugins/newmail_notifier/localization/mr_IN.inc b/plugins/newmail_notifier/localization/mr_IN.inc
new file mode 100644 (file)
index 0000000..ccba50d
--- /dev/null
@@ -0,0 +1,23 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/mr_IN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Devendra Buddhikot <devendradb@rediffmail.com>                |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['sound'] = 'नवीन संदेश आल्यास नाद करा';
+$labels['test'] = 'चाचणी';
+$labels['title'] = 'नवीन ईमेल';
+$labels['body'] = 'तुमच्यासाठी नवीन संदेश आला आहे';
+$labels['testbody'] = 'हा एक चाचणी निर्देश आहे';
+
diff --git a/plugins/newmail_notifier/localization/nb_NB.inc b/plugins/newmail_notifier/localization/nb_NB.inc
new file mode 100644 (file)
index 0000000..a1d0a03
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/nb_NB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Einar Svensen <Unknown>                                       |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['basic'] = 'Vis nettleser hendlese ved ny melding';
+$labels['desktop'] = 'Vis skirivebord hendlese ved ny melding';
+$labels['sound'] = 'Spill av lyd ved ny melding';
+$labels['test'] = 'Test';
+$labels['title'] = 'Ny e-post!';
+$labels['body'] = 'Du har mottatt en ny melding';
+$labels['testbody'] = 'Dette er en test hendlese';
+$labels['desktopdisabled'] = 'Skrivebord hendelse er deaktivert i din nettleser.';
+$labels['desktopunsupported'] = 'Din nettleser støtter ikke skrivebord\'s hendelser.';
+
diff --git a/plugins/newmail_notifier/localization/nl_NL.inc b/plugins/newmail_notifier/localization/nl_NL.inc
new file mode 100644 (file)
index 0000000..3d52ca7
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/nl_NL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Geert Wirken <Unknown>                                        |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['basic'] = 'Toon browsermelding bij nieuw bericht';
+$labels['desktop'] = 'Toon desktopmelding bij nieuw bericht';
+$labels['sound'] = 'Speel geluid bij nieuw bericht';
+$labels['test'] = 'Test';
+$labels['title'] = 'Nieuwe e-mail!';
+$labels['body'] = 'U heeft een nieuw bericht ontvangen.';
+$labels['testbody'] = 'Dit is een testmelding.';
+$labels['desktopdisabled'] = 'Desktopmeldingen zijn uitgeschakeld in uw browser.';
+$labels['desktopunsupported'] = 'Uw browser ondersteunt geen desktopmeldingen.';
+
diff --git a/plugins/newmail_notifier/localization/pt_PT.inc b/plugins/newmail_notifier/localization/pt_PT.inc
new file mode 100644 (file)
index 0000000..4a19d50
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/pt_PT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: David <Unknown>                                               |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['basic'] = 'Mostrar notificação quando uma nova mensagem chegar';
+$labels['desktop'] = 'Mostrar alerta no ambiente de trabalho de nova mensagem';
+$labels['sound'] = 'Alerta sonoro para nova mensagem';
+$labels['test'] = 'Testar';
+$labels['title'] = 'Novo Email!';
+$labels['body'] = 'Você recebeu uma nova mensagem.';
+$labels['testbody'] = 'Isto é uma notificação de teste.';
+$labels['desktopdisabled'] = 'As notificações no ambiente de trabalho estão desactivadas no seu navegador.';
+$labels['desktopunsupported'] = 'O seu navegador não suporta notificações no ambiente de trabalho';
+
diff --git a/plugins/newmail_notifier/localization/ro_RO.inc b/plugins/newmail_notifier/localization/ro_RO.inc
new file mode 100644 (file)
index 0000000..181fb99
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ro_RO/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: tudor <tudor@starnet-alba.ro>                                 |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['basic'] = 'Afişează notificări în browser la mesaj nou.';
+$labels['desktop'] = 'Afişează notificări desktop la mesaj nou.';
+$labels['sound'] = 'Redă un sunet la mesaj nou.';
+$labels['test'] = 'Test';
+$labels['title'] = 'E-mail nou!';
+$labels['body'] = 'Ai primit un mesaj nou.';
+$labels['testbody'] = 'Aceasta este o notificare de test.';
+$labels['desktopdisabled'] = 'Notificările desktop sunt dezactivate în browser.';
+$labels['desktopunsupported'] = 'Browser-ul nu suportă notificări desktop.';
+
diff --git a/plugins/newmail_notifier/localization/si_LK.inc b/plugins/newmail_notifier/localization/si_LK.inc
new file mode 100644 (file)
index 0000000..13884c7
--- /dev/null
@@ -0,0 +1,19 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/si_LK/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Mohamed Rizmi <Unknown>                                       |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['test'] = 'පිරික්සන්න';
+
diff --git a/plugins/newmail_notifier/localization/sk_SK.inc b/plugins/newmail_notifier/localization/sk_SK.inc
new file mode 100644 (file)
index 0000000..5d26d12
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sk_SK/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: panda <Unknown>                                               |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['basic'] = 'Zobraziť upozornenie v prehliadači pri novej správe';
+$labels['desktop'] = 'Zobraziť upozornenie na ploche pri novej správe';
+$labels['sound'] = 'Prehrať zvuk pri novej správe';
+$labels['test'] = 'Skúška';
+$labels['title'] = 'Nová správa';
+$labels['body'] = 'Máte novú správu.';
+$labels['testbody'] = 'Toto je skúšobné upozornenie.';
+$labels['desktopdisabled'] = 'Upozornenia na ploche sú vo vašom prehliadači vypnuté.';
+$labels['desktopunsupported'] = 'Váč prehliadač nepodporuje upozornenia na ploche.';
+
diff --git a/plugins/newmail_notifier/localization/sl_SI.inc b/plugins/newmail_notifier/localization/sl_SI.inc
new file mode 100644 (file)
index 0000000..a5d2e0b
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sl_SI/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Barbara Krasovec <barbarak@arnes.si>                          |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['basic'] = 'Prikaži obvestilo za nova sporočila';
+$labels['desktop'] = 'Prikaži obvestila na namizju za vsa nova sporočila';
+$labels['sound'] = 'Ob novem sporočilu predvajaj zvok';
+$labels['test'] = 'Test';
+$labels['title'] = 'Novo sporočilo';
+$labels['body'] = 'Prejeli ste novo sporočilo.';
+$labels['testbody'] = 'To je testno obvestilo.';
+$labels['desktopdisabled'] = 'Obvestila na namizju so v vašem brskalniku onemogočena.';
+$labels['desktopunsupported'] = 'Vaš brskalnik ne podpira izpis obvestil na namizju.';
+
diff --git a/plugins/newmail_notifier/localization/sr_CS.inc b/plugins/newmail_notifier/localization/sr_CS.inc
new file mode 100644 (file)
index 0000000..818f9b6
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sr_CS/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Saša Zejnilović <zejnils@gmail.com>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['test'] = 'Испробај';
+$labels['title'] = 'Нови маил!';
+$labels['body'] = 'Примили сте нову поруку.';
+$labels['testbody'] = 'Ово је тест обавештење.';
+
diff --git a/plugins/newmail_notifier/localization/sv_SE.inc b/plugins/newmail_notifier/localization/sv_SE.inc
new file mode 100644 (file)
index 0000000..b1c92ed
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sv_SE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jonas Nasholm <Unknown>                                       |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['basic'] = 'Avisera nytt meddelande i webbläsaren';
+$labels['desktop'] = 'Avisera nytt meddelande på skrivbordet';
+$labels['sound'] = 'Avisera nytt meddelande med ljudsignal';
+$labels['test'] = 'Prova';
+$labels['title'] = 'Nytt meddelande!';
+$labels['body'] = 'Du har mottagit ett nytt meddelande.';
+$labels['testbody'] = 'Denna avisering är ett prov.';
+$labels['desktopdisabled'] = 'Avisering på skrivbordet är avstängt i webbläsaren.';
+$labels['desktopunsupported'] = 'Avisering på skrivbordet stöds inte av webbläsaren.';
+
diff --git a/plugins/newmail_notifier/localization/tr_TR.inc b/plugins/newmail_notifier/localization/tr_TR.inc
new file mode 100644 (file)
index 0000000..89e6e36
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/tr_TR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: ismail yenigul <Unknown>                                      |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['basic'] = 'Yeni mesajlarda web tarayıcı bildirimlerini göster';
+$labels['desktop'] = 'Yeni mesajlarda masa üstü bildirimlerini göster';
+$labels['sound'] = 'Yeni mesajlarda muzik çal';
+$labels['test'] = 'Deneme';
+$labels['title'] = 'Yeni E-posta!';
+$labels['body'] = 'Yeni bir mesaj aldınız';
+$labels['testbody'] = 'Bu bir test bildirimidir.';
+$labels['desktopdisabled'] = 'Web tarayıcınızda masa üstü bildirimi iptal edildi';
+$labels['desktopunsupported'] = 'Web tarayıcınız masa üstü bildidrimleri desteklemiyor';
+
diff --git a/plugins/newmail_notifier/localization/uk_UA.inc b/plugins/newmail_notifier/localization/uk_UA.inc
new file mode 100644 (file)
index 0000000..1c65bb7
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/uk_UA/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Anton Gladky <Unknown>                                        |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['basic'] = 'Показувати у браузері сповіщення про нові повідомлення';
+$labels['desktop'] = 'Показувати на робочому столі сповіщення про нові повідомлення';
+$labels['sound'] = 'Програвати звук при появленні нового повідомлення';
+$labels['test'] = 'Тест';
+$labels['title'] = 'Нова пошта!';
+$labels['body'] = 'Ви отримали нове повідомлення.';
+$labels['testbody'] = 'Це тестове сповіщення';
+$labels['desktopdisabled'] = 'Повідомлення на робочому столі відключені у вашому браузері.';
+$labels['desktopunsupported'] = 'Ваш браузер не підтримує повідомлення на робочому столі.';
+
diff --git a/plugins/newmail_notifier/localization/vi_VN.inc b/plugins/newmail_notifier/localization/vi_VN.inc
new file mode 100644 (file)
index 0000000..b05726e
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/vi_VN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kenny Tran <kennethanh@gmail.com>                             |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['basic'] = 'Hiển thị thông báo trên trình duyệt là có thư mới';
+$labels['desktop'] = 'Hiển thị thông báo trên màn hình là có thư mới';
+$labels['sound'] = 'Mở tính năng âm thanh trên thư mới';
+$labels['test'] = 'Kiểm tra';
+$labels['title'] = 'Có thư mới!';
+$labels['body'] = 'Bạn vừa nhận một thư mới';
+$labels['testbody'] = 'Đây là thông báo kiểm tra';
+$labels['desktopdisabled'] = 'Thông báo máy tính bị tắt trên trình duyệt của bạn';
+$labels['desktopunsupported'] = 'Trình duyệt của bạn không hỗ trợ thông báo trên máy tính';
+
diff --git a/plugins/newmail_notifier/localization/zh_CN.inc b/plugins/newmail_notifier/localization/zh_CN.inc
new file mode 100644 (file)
index 0000000..b131a6c
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/zh_CN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Christopher Meng <cickumqt@gmail.com>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['basic'] = '在浏览器中显示新邮件提醒';
+$labels['desktop'] = '在桌面显示新邮件提醒';
+$labels['sound'] = '有新的邮件时播放声音';
+$labels['test'] = '测试';
+$labels['title'] = '新邮件!';
+$labels['body'] = '您收到一封新邮件。';
+$labels['testbody'] = '这是一个提醒测试。';
+$labels['desktopdisabled'] = '您的浏览器已禁止桌面提醒功能。';
+$labels['desktopunsupported'] = '您的浏览器不支持桌面提醒功能。';
+
diff --git a/plugins/newmail_notifier/localization/zh_TW.inc b/plugins/newmail_notifier/localization/zh_TW.inc
new file mode 100644 (file)
index 0000000..dcb0268
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/zh_TW/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Denny Lin <dennylin93@hs.ntnu.edu.tw>                         |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['basic'] = '當有新郵件顯示瀏覽器通知';
+$labels['desktop'] = '當有新郵件顯示桌面通知';
+$labels['sound'] = '當有新郵件播放音效';
+$labels['test'] = '測試';
+$labels['title'] = '新郵件!';
+$labels['body'] = '您有一封新郵件';
+$labels['testbody'] = '這是測試通知';
+$labels['desktopdisabled'] = '您的瀏覽器已停用桌面通知';
+$labels['desktopunsupported'] = '您的瀏覽器不支援桌面通知功能';
+
index 16e3edd42cba60680497082af2d65c5d0acfee28..7c9b55dedd6afdc4604279bfeb6e9fe34abd79eb 100644 (file)
@@ -1,7 +1,7 @@
 /**
  * New Mail Notifier plugin script
  *
- * @version 0.3
+ * @version @package_version@
  * @author Aleksander Machniak <alec@alec.pl>
  */
 
index f9af72d2f0fbc3d6949e603c20d1bf7b633f990b..20ffac8ce1f1ab69827743b15800ad4a34dd1203 100644 (file)
@@ -9,7 +9,7 @@
  * 3. Desktop - display desktop notification (using webkitNotifications feature,
  *              supported by Chrome and Firefox with 'HTML5 Notifications' plugin)
  *
- * @version 0.4
+ * @version @package_version@
  * @author Aleksander Machniak <alec@alec.pl>
  *
  *
@@ -139,8 +139,10 @@ class newmail_notifier extends rcube_plugin
 
         // Get folders to skip checking for
         if (empty($this->exceptions)) {
-            $this->delimiter = $this->rc->imap->get_hierarchy_delimiter();
-            foreach (array('drafts_mbox', 'sent_mbox') as $folder) {
+            $this->delimiter = $this->rc->storage->get_hierarchy_delimiter();
+
+            $exceptions = array('drafts_mbox', 'sent_mbox', 'trash_mbox');
+            foreach ($exceptions as $folder) {
                 $folder = $this->rc->config->get($folder);
                 if (strlen($folder) && $folder != 'INBOX') {
                     $this->exceptions[] = $folder;
diff --git a/plugins/newmail_notifier/package.xml b/plugins/newmail_notifier/package.xml
new file mode 100644 (file)
index 0000000..d3de25f
--- /dev/null
@@ -0,0 +1,70 @@
+<?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>newmail_notifier</name>
+       <channel>pear.roundcube.net</channel>
+       <summary>Displays notification about a new mail</summary>
+       <description>
+           Supports three methods of notification:
+            1. Basic - focus browser window and change favicon
+            2. Sound - play wav file
+            3. Desktop - display desktop notification (using webkitNotifications feature,
+               supported by Chrome and Firefox with 'HTML5 Notifications' plugin).
+       </description>
+       <lead>
+               <name>Aleksander Machniak</name>
+               <user>alec</user>
+               <email>alec@alec.pl</email>
+               <active>yes</active>
+       </lead>
+       <date>2012-02-07</date>
+       <version>
+               <release>0.4</release>
+               <api>0.3</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>-</notes>
+       <contents>
+               <dir baseinstalldir="/" name="/">
+                       <file name="newmail_notifier.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="newmail_notifier.js" role="data">
+                               <tasks:replace from="@name@" to="name" type="package-info"/>
+                               <tasks:replace from="@package_version@" to="version" type="package-info"/>
+                       </file>
+                       <file name="config.inc.php.dist" role="data"></file>
+                       <file name="favicon.ico" role="data"></file>
+                       <file name="mail.png" role="data"></file>
+                       <file name="sound.wav" role="data"></file>
+                       <file name="localization/de_CH.inc" role="data"></file>
+                       <file name="localization/de_DE.inc" role="data"></file>
+                       <file name="localization/en_US.inc" role="data"></file>
+                       <file name="localization/ja_JP.inc" role="data"></file>
+                       <file name="localization/lv_LV.inc" role="data"></file>
+                       <file name="localization/pl_PL.inc" role="data"></file>
+                       <file name="localization/pt_BR.inc" role="data"></file>
+                       <file name="localization/ru_RU.inc" role="data"></file>
+                       <file name="localization/sv_SE.inc" 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>
index d9280fb038d6e239adefcb38014e3cd742c41398..25af8cbcd1ae210d2be2717b5a5c60806741f7e3 100644 (file)
  2.11. Chpasswd (chpasswd)
  2.12. LDAP - no PEAR (ldap_simple)
  2.13. XMail (xmail)
+ 2.14. Pw (pw_usermod)
+ 2.15. domainFACTORY (domainfactory)
+ 2.16. DBMail (dbmail)
+ 2.17. Expect (expect)
+ 2.18. Samba (smb)
  3.    Driver API
 
 
 
  Installation:
 
- Change into the drivers directory. Edit the chgsaslpasswd.c file as is
+ Change into the helpers directory. Edit the chgsaslpasswd.c file as is
  documented within it.
 
  Compile the wrapper program:
  ----------------------------
 
  As in sasl driver this one allows to change password using shell
- utility called "virtualmin". See drivers/chgvirtualminpasswd.c for
+ utility called "virtualmin". See helpers/chgvirtualminpasswd.c for
  installation instructions. See also config.inc.php.dist file.
 
 
  Driver that adds functionality to change the systems user password via 
  the 'chpasswd' command. See config.inc.php.dist file.
 
- Attached wrapper script (chpass-wrapper.py) restricts password changes
+ Attached wrapper script (helpers/chpass-wrapper.py) restricts password changes
  to uids >= 1000 and can deny requests based on a blacklist.
 
 
  for configuration description.
 
 
+ 2.14.  Pw (pw_usermod)
+ -----------------------------------
+
+ Driver to change the systems user password via the 'pw usermod' command.
+ See config.inc.php.dist file for configuration description.
+
+
+ 2.15.  domainFACTORY (domainfactory)
+ -----------------------------------
+
+ Driver for the hosting provider domainFACTORY (www.df.eu).
+ No configuration options.
+
+
+ 2.16.  DBMail (dbmail)
+ -----------------------------------
+
+ Driver that adds functionality to change the users DBMail password.
+ It only works with dbmail-users on the same host where Roundcube runs
+ and requires shell access and gcc in order to compile the binary
+ (see instructions in chgdbmailusers.c file).
+ See config.inc.php.dist file for configuration description.
+
+ Note: DBMail users can also use sql driver.
+
+
+ 2.17.  Expect (expect)
+ -----------------------------------
+
+ Driver to change user password via the 'expect' command.
+ See config.inc.php.dist file for configuration description.
+
+
+ 2.18.  Samba (smb)
+ -----------------------------------
+
+ Driver to change Samba user password via the 'smbpasswd' command.
+ See config.inc.php.dist file for configuration description.
+
+
  3. Driver API
  -------------
 
index 313e47fdacbe8e76ca0e02a96cc0a3edddb4e9a1..37c79315d93b67b2349a3591c4181677b14887b8 100644 (file)
@@ -21,6 +21,10 @@ $rcmail_config['password_require_nonalpha'] = false;
 // Enables logging of password changes into logs/password
 $rcmail_config['password_log'] = false;
 
+// Comma-separated list of login exceptions for which password change
+// will be not available (no Password tab in Settings)
+$rcmail_config['password_login_exceptions'] = null;
+
 
 // SQL Driver options
 // ------------------
@@ -304,4 +308,41 @@ $rcmail_config['hmailserver_server'] = array(
 // 5: domain-username
 // 6: username_domain
 // 7: domain_username
-$rcmail_config['password_virtualmin_format'] = 0;
+// 8: username@domain; mbox.username
+$rcmail_config['password_virtualmin_format'] = 8;
+
+
+// pw_usermod Driver options
+// --------------------------
+// Use comma delimited exlist to disable password change for users
+// Add the following line to visudo to tighten security:
+// www  ALL=NOPASSWORD: /usr/sbin/pw
+$rcmail_config['password_pw_usermod_cmd'] = 'sudo /usr/sbin/pw usermod -h 0 -n';
+
+
+// DBMail Driver options
+// -------------------
+// Additional arguments for the dbmail-users call
+$rcmail_config['password_dbmail_args'] = '-p sha512';
+
+
+// Expect Driver options
+// ---------------------
+// Location of expect binary
+$rcmail_config['password_expect_bin'] = '/usr/bin/expect';
+
+// Location of expect script (see helpers/passwd-expect)
+$rcmail_config['password_expect_script'] = '';
+
+// Arguments for the expect script. See the helpers/passwd-expect file for details.
+// This is probably a good starting default:
+//   -telent -host localhost -output /tmp/passwd.log -log /tmp/passwd.log
+$rcmail_config['password_expect_params'] = '';
+
+
+// smb Driver options
+// ---------------------
+// Samba host (default: localhost)
+$rcmail_config['password_smb_host'] = 'localhost';
+// Location of smbpasswd binary
+$rcmail_config['password_smb_cmd'] = '/usr/bin/smbpasswd';
diff --git a/plugins/password/drivers/chgsaslpasswd.c b/plugins/password/drivers/chgsaslpasswd.c
deleted file mode 100644 (file)
index bcdcb2e..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#include <stdio.h>
-#include <unistd.h>
-
-// set the UID this script will run as (cyrus user)
-#define UID 96
-// set the path to saslpasswd or saslpasswd2
-#define CMD "/usr/sbin/saslpasswd2"
-
-/* INSTALLING:
-  gcc -o chgsaslpasswd chgsaslpasswd.c
-  chown cyrus.apache chgsaslpasswd
-  strip chgsaslpasswd
-  chmod 4550 chgsaslpasswd
-*/
-
-main(int argc, char *argv[])
-{
-  int rc,cc;
-
-  cc = setuid(UID);
-  rc = execvp(CMD, argv);
-  if ((rc != 0) || (cc != 0))
-  {
-    fprintf(stderr, "__ %s:  failed %d  %d\n", argv[0], rc, cc);
-    return 1;
-  }
-
-  return 0;
-}
diff --git a/plugins/password/drivers/chgvirtualminpasswd.c b/plugins/password/drivers/chgvirtualminpasswd.c
deleted file mode 100644 (file)
index 4e2299c..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-#include <stdio.h>
-#include <unistd.h>
-
-// set the UID this script will run as (root user)
-#define UID 0
-#define CMD "/usr/sbin/virtualmin"
-
-/* INSTALLING:
-  gcc -o chgvirtualminpasswd chgvirtualminpasswd.c
-  chown root.apache chgvirtualminpasswd
-  strip chgvirtualminpasswd
-  chmod 4550 chgvirtualminpasswd
-*/
-
-main(int argc, char *argv[])
-{
-  int rc,cc;
-
-  cc = setuid(UID);
-  rc = execvp(CMD, argv);
-  if ((rc != 0) || (cc != 0))
-  {
-    fprintf(stderr, "__ %s:  failed %d  %d\n", argv[0], rc, cc);
-    return 1;
-  }
-
-  return 0;
-}
diff --git a/plugins/password/drivers/chpass-wrapper.py b/plugins/password/drivers/chpass-wrapper.py
deleted file mode 100644 (file)
index 61bba84..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/usr/bin/env python
-
-import sys
-import pwd
-import subprocess
-
-BLACKLIST = (
-    # add blacklisted users here
-    #'user1',
-)
-
-try:
-    username, password = sys.stdin.readline().split(':', 1)
-except ValueError, e:
-    sys.exit('Malformed input')
-
-try:
-    user = pwd.getpwnam(username)
-except KeyError, e:
-    sys.exit('No such user: %s' % username)
-
-if user.pw_uid < 1000:
-    sys.exit('Changing the password for user id < 1000 is forbidden')
-
-if username in BLACKLIST:
-    sys.exit('Changing password for user %s is forbidden (user blacklisted)' %
-             username)
-
-handle = subprocess.Popen('/usr/sbin/chpasswd', stdin = subprocess.PIPE)
-handle.communicate('%s:%s' % (username, password))
-
-sys.exit(handle.returncode)
index 28c3e5d7a042478fc2b977cff243809b43a87aca..3ea10159c92950b66f9794297374d14ccc43774d 100644 (file)
@@ -8,29 +8,32 @@
  *
  * For installation instructions please read the README file.
  *
- * @version 1.0
- * @author Alex Cartwright <acartwright@mutinydesign.co.uk)
+ * @version 2.0
+ * @author Alex Cartwright <acartwright@mutinydesign.co.uk>
  */
 
-function password_save($currpass, $newpass)
+class rcube_chpasswd_password
 {
-    $cmd = rcmail::get_instance()->config->get('password_chpasswd_cmd');
-    $username = $_SESSION['username'];
+    public function save($currpass, $newpass)
+    {
+        $cmd = rcmail::get_instance()->config->get('password_chpasswd_cmd');
+        $username = $_SESSION['username'];
 
-    $handle = popen($cmd, "w");
-    fwrite($handle, "$username:$newpass\n");
+        $handle = popen($cmd, "w");
+        fwrite($handle, "$username:$newpass\n");
 
-    if (pclose($handle) == 0) {
-        return PASSWORD_SUCCESS;
-    }
-    else {
-        raise_error(array(
-            'code' => 600,
-            'type' => 'php',
-            'file' => __FILE__, 'line' => __LINE__,
-            'message' => "Password plugin: Unable to execute $cmd"
-            ), true, false);
-    }
+        if (pclose($handle) == 0) {
+            return PASSWORD_SUCCESS;
+        }
+        else {
+            raise_error(array(
+                'code' => 600,
+                'type' => 'php',
+                'file' => __FILE__, 'line' => __LINE__,
+                'message' => "Password plugin: Unable to execute $cmd"
+                ), true, false);
+        }
 
-    return PASSWORD_ERROR;
+        return PASSWORD_ERROR;
+    }
 }
index 82bfe74d28c17685e18cad3b7a7a61c5a798a8d8..58351143b19e77b07df2b37e3b65bf28d1bfb576 100644 (file)
@@ -7,12 +7,36 @@
  * The cPanel PHP API code has been taken from: http://www.phpclasses.org/browse/package/3534.html
  *
  * This driver has been tested with Hostmonster hosting and seems to work fine.
-
  *
- * @version 1.0
+ * @version 2.0
  * @author Fulvio Venturelli <fulvio@venturelli.org>
  */
 
+class rcube_cpanel_password
+{
+    public function save($curpas, $newpass)
+    {
+        $rcmail = rcmail::get_instance();
+
+        // Create a cPanel email object
+        $cPanel = new emailAccount($rcmail->config->get('password_cpanel_host'),
+       $rcmail->config->get('password_cpanel_username'),
+           $rcmail->config->get('password_cpanel_password'),
+       $rcmail->config->get('password_cpanel_port'),
+           $rcmail->config->get('password_cpanel_ssl'),
+       $rcmail->config->get('password_cpanel_theme'),
+           $_SESSION['username'] );
+
+        if ($cPanel->setPassword($newpass)){
+            return PASSWORD_SUCCESS;
+        }
+        else {
+            return PASSWORD_ERROR;
+        }
+    }
+}
+
+
 class HTTP
 {
        function HTTP($host, $username, $password, $port, $ssl, $theme)
@@ -60,7 +84,7 @@ class HTTP
 
 
 class emailAccount
-{          
+{
        function emailAccount($host, $username, $password, $port, $ssl, $theme, $address)
        {
                $this->HTTP = new HTTP($host, $username, $password, $port, $ssl, $theme);
@@ -74,13 +98,13 @@ class emailAccount
                }
        }
 
/*
-  * Change email account password
-  *
-  * Returns true on success or false on failure.
-  * @param string $password email account password
-  * @return bool
-  */
   /**
+     * Change email account password
+     *
+     * Returns true on success or false on failure.
+     * @param string $password email account password
+     * @return bool
+     */
        function setPassword($password)
        {
                $data['email'] = $this->email;
@@ -94,28 +118,3 @@ class emailAccount
                return false;
        }
 }
-
-
-function password_save($curpas, $newpass)
-{
-    $rcmail = rcmail::get_instance();
-
-    // Create a cPanel email object
-    $cPanel = new emailAccount($rcmail->config->get('password_cpanel_host'),
-       $rcmail->config->get('password_cpanel_username'),
-       $rcmail->config->get('password_cpanel_password'),
-       $rcmail->config->get('password_cpanel_port'),
-       $rcmail->config->get('password_cpanel_ssl'),
-       $rcmail->config->get('password_cpanel_theme'),
-       $_SESSION['username'] );
-
-    if ($cPanel->setPassword($newpass)){
-        return PASSWORD_SUCCESS;
-    }
-    else
-    {
-       return PASSWORD_ERROR;
-    }
-}
-
-?>
diff --git a/plugins/password/drivers/dbmail.php b/plugins/password/drivers/dbmail.php
new file mode 100644 (file)
index 0000000..a7c2f46
--- /dev/null
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * DBMail Password Driver
+ *
+ * Driver that adds functionality to change the users DBMail password.
+ * The code is derrived from the Squirrelmail "Change SASL Password" Plugin
+ * by Galen Johnson.
+ *
+ * It only works with dbmail-users on the same host where Roundcube runs
+ * and requires shell access and gcc in order to compile the binary.
+ *
+ * For installation instructions please read the README file.
+ *
+ * @version 1.0
+ */
+
+class rcube_dbmail_password
+{
+    function password_save($currpass, $newpass)
+    {
+        $curdir   = INSTALL_PATH . 'plugins/password/helpers';
+        $username = escapeshellcmd($_SESSION['username']);
+        $args     = rcmail::get_instance()->config->get('password_dbmail_args', '');
+
+        exec("$curdir/chgdbmailusers -c $username -w $newpass $args", $output, $returnvalue);
+
+        if ($returnvalue == 0) {
+            return PASSWORD_SUCCESS;
+        }
+        else {
+            raise_error(array(
+                'code' => 600,
+                'type' => 'php',
+                'file' => __FILE__, 'line' => __LINE__,
+                'message' => "Password plugin: Unable to execute $curdir/chgdbmailusers"
+                ), true, false);
+        }
+
+        return PASSWORD_ERROR;
+    }
+}
index 3b6ae9f03d7e7012aa8afb888be8ad7f52b070c1..657c21eb41d68bca52b625add34a49ee7fee3c15 100644 (file)
@@ -5,50 +5,53 @@
  *
  * Driver to change passwords via DirectAdmin Control Panel
  *
- * @version 1.2
+ * @version 2.1
  * @author Victor Benincasa <vbenincasa@gmail.com>
  *
  */
 
+class rcube_directadmin_password
+{
+    public function save($curpass, $passwd)
+    {
+        $rcmail = rcmail::get_instance();
+        $Socket = new HTTPSocket;
 
-function password_save($curpass, $passwd){
-
-    $rcmail = rcmail::get_instance();
-    $Socket = new HTTPSocket;
-
-    $da_user    = $_SESSION['username'];
-    $da_curpass = $curpass;
-    $da_newpass = $passwd;
-    $da_host    = $rcmail->config->get('password_directadmin_host');
-    $da_port    = $rcmail->config->get('password_directadmin_port');
-
-    if(strpos($da_user, '@') === false) return array('code' => PASSWORD_ERROR, 'message' => 'Change the SYSTEM user password through control panel!');
-
-    $da_host = str_replace('%h', $_SESSION['imap_host'], $da_host);
-    $da_host = str_replace('%d', $rcmail->user->get_username('domain'), $da_host);
-
-    $Socket->connect($da_host,$da_port); 
-    $Socket->set_method('POST');
-    $Socket->query('/CMD_CHANGE_EMAIL_PASSWORD',
-        array(
-            'email'            => $da_user,
-            'oldpassword'      => $da_curpass,
-            'password1'        => $da_newpass,
-            'password2'        => $da_newpass,
-            'api'                      => '1'
-    ));
-    $response = $Socket->fetch_parsed_body();
-
-    //DEBUG
-    //console("Password Plugin: [USER: $da_user] [HOST: $da_host] - Response: [SOCKET: ".$Socket->result_status_code."] [DA ERROR: ".strip_tags($response['error'])."] [TEXT: ".$response[text]."]");
+        $da_user    = $_SESSION['username'];
+        $da_curpass = $curpass;
+        $da_newpass = $passwd;
+        $da_host    = $rcmail->config->get('password_directadmin_host');
+        $da_port    = $rcmail->config->get('password_directadmin_port');
 
-    if($Socket->result_status_code != 200)
-        return array('code' => PASSWORD_CONNECT_ERROR, 'message' => $Socket->error[0]);
-    elseif($response['error'] == 1)
-        return array('code' => PASSWORD_ERROR, 'message' => strip_tags($response['text']));
-    else 
-        return PASSWORD_SUCCESS;
+        if (strpos($da_user, '@') === false) {
+            return array('code' => PASSWORD_ERROR, 'message' => 'Change the SYSTEM user password through control panel!');
+        }
 
+        $da_host = str_replace('%h', $_SESSION['imap_host'], $da_host);
+        $da_host = str_replace('%d', $rcmail->user->get_username('domain'), $da_host);
+
+        $Socket->connect($da_host,$da_port); 
+        $Socket->set_method('POST');
+        $Socket->query('/CMD_CHANGE_EMAIL_PASSWORD',
+            array(
+                'email'                => $da_user,
+                'oldpassword'  => $da_curpass,
+                'password1'    => $da_newpass,
+                'password2'    => $da_newpass,
+                'api'                  => '1'
+            ));
+        $response = $Socket->fetch_parsed_body();
+
+        //DEBUG
+        //console("Password Plugin: [USER: $da_user] [HOST: $da_host] - Response: [SOCKET: ".$Socket->result_status_code."] [DA ERROR: ".strip_tags($response['error'])."] [TEXT: ".$response[text]."]");
+
+        if($Socket->result_status_code != 200)
+            return array('code' => PASSWORD_CONNECT_ERROR, 'message' => $Socket->error[0]);
+        elseif($response['error'] == 1)
+            return array('code' => PASSWORD_ERROR, 'message' => strip_tags($response['text']));
+        else
+            return PASSWORD_SUCCESS;
+    }
 }
 
 
@@ -59,15 +62,16 @@ function password_save($curpass, $passwd){
  *
  * Very, very basic usage:
  *   $Socket = new HTTPSocket;
- *   echo $Socket->get('http://user:pass@somesite.com/somedir/some.file?query=string&this=that');
+ *   echo $Socket->get('http://user:pass@somehost.com:2222/CMD_API_SOMEAPI?query=string&this=that');
  *
  * @author Phi1 'l0rdphi1' Stier <l0rdphi1@liquenox.net>
+ * @updates 2.7 and 2.8 by Victor Benincasa <vbenincasa @ gmail.com>
  * @package HTTPSocket
- * @version 2.7 (Updated by Victor Benincasa <vbenincasa@gmail.com>)
+ * @version 2.8
  */
 class HTTPSocket {
 
-    var $version = '2.7';
+    var $version = '2.8';
     
     /* all vars are private except $error, $query_cache, and $doFollowLocationHeader */
 
@@ -104,7 +108,7 @@ class HTTPSocket {
     {
         if (!is_numeric($port))
         {
-            $port = 80;
+            $port = 2222;
         }
 
         $this->remote_host = $host;
@@ -163,8 +167,8 @@ class HTTPSocket {
         $this->error = $this->warn = array();
         $this->result_status_code = NULL;
 
-        // is our request a http:// ... ?
-        if (preg_match('!^http://!i',$request))
+        // is our request a http(s):// ... ?
+        if (preg_match('/^(http|https):\/\//i',$request))
         {
             $location = parse_url($request);
             $this->connect($location['host'],$location['port']);
@@ -182,7 +186,7 @@ class HTTPSocket {
 
         $array_headers = array(
             'User-Agent' => "HTTPSocket/$this->version",
-            'Host' => ( $this->remote_port == 80 ? $this->remote_host : "$this->remote_host:$this->remote_port" ),
+            'Host' => ( $this->remote_port == 80 ? parse_url($this->remote_host,PHP_URL_HOST) : parse_url($this->remote_host,PHP_URL_HOST).":".$this->remote_port ),
             'Accept' => '*/*',
             'Connection' => 'Close' );
 
@@ -485,5 +489,3 @@ class HTTPSocket {
     }
 
 }
-
-?>
diff --git a/plugins/password/drivers/domainfactory.php b/plugins/password/drivers/domainfactory.php
new file mode 100644 (file)
index 0000000..7f6b886
--- /dev/null
@@ -0,0 +1,70 @@
+<?php
+
+/**
+ * domainFACTORY Password Driver
+ *
+ * Driver to change passwords with the hosting provider domainFACTORY.
+ * See: http://www.df.eu/
+ *
+ * @version 2.0
+ * @author Till Krüss <me@tillkruess.com>
+ * @link http://tillkruess.com/projects/roundcube/
+ *
+ */
+
+class rcube_domainfactory_password
+{
+    function save($curpass, $passwd)
+    {
+           $rcmail = rcmail::get_instance();
+
+           if (is_null($curpass)) {
+                   $curpass = $rcmail->decrypt($_SESSION['password']);
+           }
+
+       if ($ch = curl_init()) {
+               // initial login
+               curl_setopt_array($ch, array(
+                       CURLOPT_RETURNTRANSFER => true,
+                       CURLOPT_URL => 'https://ssl.df.eu/chmail.php',
+                       CURLOPT_POST => true,
+                       CURLOPT_POSTFIELDS => array(
+                               'login' => $rcmail->user->get_username(),
+                                   'pwd' => $curpass,
+                               'action' => 'change'
+                       )
+                   ));
+
+               if ($result = curl_exec($ch)) {
+                       // login successful, get token!
+                       $postfields = array(
+                               'pwd1' => $passwd,
+                               'pwd2' => $passwd,
+                                   'action[update]' => 'Speichern'
+                       );
+
+                       preg_match_all('~<input name="(.+?)" type="hidden" value="(.+?)">~i', $result, $fields);
+                       foreach ($fields[1] as $field_key => $field_name) {
+                               $postfields[$field_name] = $fields[2][$field_key];
+                           }
+
+                       // change password
+                       $ch = curl_copy_handle($ch);
+                       curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
+                           if ($result = curl_exec($ch)) {
+                               if (strpos($result, 'Einstellungen erfolgreich') !== false) {
+                                       return PASSWORD_SUCCESS;
+                               }
+                       } else {
+                               return PASSWORD_CONNECT_ERROR;
+                       }
+               } else {
+                       return PASSWORD_CONNECT_ERROR;
+                   }
+       } else {
+               return PASSWORD_CONNECT_ERROR;
+           }
+
+       return PASSWORD_ERROR;
+    }
+}
diff --git a/plugins/password/drivers/expect.php b/plugins/password/drivers/expect.php
new file mode 100644 (file)
index 0000000..7a191e2
--- /dev/null
@@ -0,0 +1,58 @@
+<?php
+
+/**
+ * expect Driver
+ *
+ * Driver that adds functionality to change the systems user password via
+ * the 'expect' command.
+ *
+ * For installation instructions please read the README file.
+ *
+ * @version 2.0
+ * @author Andy Theuninck <gohanman@gmail.com)
+ * 
+ * Based on chpasswd roundcubemail password driver by
+ * @author Alex Cartwright <acartwright@mutinydesign.co.uk)
+ * and expect horde passwd driver by
+ * @author  Gaudenz Steinlin <gaudenz@soziologie.ch>
+ *
+ * Configuration settings:
+ * password_expect_bin => location of expect (e.g. /usr/bin/expect)
+ * password_expect_script => path to "password-expect" file
+ * password_expect_params => arguments for the expect script
+ *   see the password-expect file for details. This is probably
+ *   a good starting default: 
+ *   -telent -host localhost -output /tmp/passwd.log -log /tmp/passwd.log
+ */
+
+class rcube_expect_password
+{
+    public function save($currpass, $newpass)
+    {
+        $rcmail   = rcmail::get_instance();
+        $bin      = $rcmail->config->get('password_expect_bin');
+        $script   = $rcmail->config->get('password_expect_script');
+        $params   = $rcmail->config->get('password_expect_params');
+        $username = $_SESSION['username'];
+
+        $cmd = $bin . ' -f ' . $script . ' -- ' . $params;
+        $handle = popen($cmd, "w");
+        fwrite($handle, "$username\n");
+        fwrite($handle, "$currpass\n");
+        fwrite($handle, "$newpass\n");
+
+        if (pclose($handle) == 0) {
+            return PASSWORD_SUCCESS;
+        }
+        else {
+            raise_error(array(
+                'code' => 600,
+                'type' => 'php',
+                'file' => __FILE__, 'line' => __LINE__,
+                'message' => "Password plugin: Unable to execute $cmd"
+                ), true, false);
+        }
+
+        return PASSWORD_ERROR;
+    }
+}
index 39a87ab347b8696ff15fdea416b2445a135311cd..104c851ae08c8819a4d0c87a11368699de341078 100644 (file)
@@ -3,59 +3,61 @@
 /**
  * hMailserver password driver
  *
- * @version 1.3 - 05.11.2010
+ * @version 2.0
  * @author Roland 'rosali' Liebl <myroundcube@mail4us.net>
  *
  */
 
-function password_save($curpass, $passwd)
+class rcube_hmail_password
 {
-    $rcmail = rcmail::get_instance();
+    public function save($curpass, $passwd)
+    {
+        $rcmail = rcmail::get_instance();
 
-    if ($curpass == '' || $passwd == '')
-      return PASSWORD_ERROR;
+        if ($curpass == '' || $passwd == '') {
+            return PASSWORD_ERROR;
+        }
 
-    try {
-      $remote = $rcmail->config->get('hmailserver_remote_dcom', false);
-      if ($remote)
-        $obApp = new COM("hMailServer.Application", $rcmail->config->get('hmailserver_server'));
-      else
-        $obApp = new COM("hMailServer.Application");
-    }
-    catch (Exception $e) {
-        write_log('errors', "Plugin password (hmail driver): " . trim(strip_tags($e->getMessage())));
-        write_log('errors', "Plugin password (hmail driver): This problem is often caused by DCOM permissions not being set.");
-        return PASSWORD_ERROR;
-    }
+        try {
+            $remote = $rcmail->config->get('hmailserver_remote_dcom', false);
+            if ($remote)
+                $obApp = new COM("hMailServer.Application", $rcmail->config->get('hmailserver_server'));
+            else
+                $obApp = new COM("hMailServer.Application");
+        }
+        catch (Exception $e) {
+            write_log('errors', "Plugin password (hmail driver): " . trim(strip_tags($e->getMessage())));
+            write_log('errors', "Plugin password (hmail driver): This problem is often caused by DCOM permissions not being set.");
+            return PASSWORD_ERROR;
+        }
 
-    $username = $rcmail->user->data['username'];
-    if (strstr($username,'@')){
-      $temparr = explode('@', $username);
-      $domain = $temparr[1];
-    }
-    else {
-      $domain = $rcmail->config->get('username_domain',false);
-      if (!$domain) {
-        write_log('errors','Plugin password (hmail driver): $rcmail_config[\'username_domain\'] is not defined.');
-        write_log('errors','Plugin password (hmail driver): Hint: Use hmail_login plugin (http://myroundcube.googlecode.com');
-        return PASSWORD_ERROR;
-      }
-      $username = $username . "@" . $domain;
-    }
+        $username = $rcmail->user->data['username'];
+        if (strstr($username,'@')){
+            $temparr = explode('@', $username);
+            $domain = $temparr[1];
+        }
+        else {
+            $domain = $rcmail->config->get('username_domain',false);
+            if (!$domain) {
+                write_log('errors','Plugin password (hmail driver): $rcmail_config[\'username_domain\'] is not defined.');
+                write_log('errors','Plugin password (hmail driver): Hint: Use hmail_login plugin (http://myroundcube.googlecode.com');
+                return PASSWORD_ERROR;
+            }
+            $username = $username . "@" . $domain;
+        }
 
-    $obApp->Authenticate($username, $curpass);
-    try {
-      $obDomain = $obApp->Domains->ItemByName($domain);
-      $obAccount = $obDomain->Accounts->ItemByAddress($username);
-      $obAccount->Password = $passwd;
-      $obAccount->Save();
-      return PASSWORD_SUCCESS;
-    }
-    catch (Exception $e) {
-      write_log('errors', "Plugin password (hmail driver): " . trim(strip_tags($e->getMessage())));
-      write_log('errors', "Plugin password (hmail driver): This problem is often caused by DCOM permissions not being set.");
-      return PASSWORD_ERROR;
+        $obApp->Authenticate($username, $curpass);
+        try {
+            $obDomain = $obApp->Domains->ItemByName($domain);
+            $obAccount = $obDomain->Accounts->ItemByAddress($username);
+            $obAccount->Password = $passwd;
+            $obAccount->Save();
+            return PASSWORD_SUCCESS;
+        }
+        catch (Exception $e) {
+            write_log('errors', "Plugin password (hmail driver): " . trim(strip_tags($e->getMessage())));
+            write_log('errors', "Plugin password (hmail driver): This problem is often caused by DCOM permissions not being set.");
+            return PASSWORD_ERROR;
+        }
     }
 }
-
-?>
index e6450e5e12fc6378eb3a461a83ae14404d819f26..def07a17513079125a07520d4229887de6b99e7b 100644 (file)
  * Driver for passwords stored in LDAP
  * This driver use the PEAR Net_LDAP2 class (http://pear.php.net/package/Net_LDAP2).
  *
- * @version 1.1 (2010-04-07)
+ * @version 2.0
  * @author Edouard MOREAU <edouard.moreau@ensma.fr>
  *
- * function hashPassword based on code from the phpLDAPadmin development team (http://phpldapadmin.sourceforge.net/).
- * function randomSalt based on code from the phpLDAPadmin development team (http://phpldapadmin.sourceforge.net/).
+ * method hashPassword based on code from the phpLDAPadmin development team (http://phpldapadmin.sourceforge.net/).
+ * method randomSalt based on code from the phpLDAPadmin development team (http://phpldapadmin.sourceforge.net/).
  *
  */
 
-function password_save($curpass, $passwd)
+class rcube_ldap_password
 {
-    $rcmail = rcmail::get_instance();
-    require_once ('Net/LDAP2.php');
-
-    // Building user DN
-    if ($userDN = $rcmail->config->get('password_ldap_userDN_mask')) {
-        $userDN = substitute_vars($userDN);
-    } else {
-        $userDN = search_userdn($rcmail);
-    }
-
-    if (empty($userDN)) {
-        return PASSWORD_CONNECT_ERROR;
-    }
-
-    // Connection Method
-    switch($rcmail->config->get('password_ldap_method')) {
-        case 'admin':
-            $binddn = $rcmail->config->get('password_ldap_adminDN');
-            $bindpw = $rcmail->config->get('password_ldap_adminPW');
-            break;
-        case 'user':
-        default:
-            $binddn = $userDN;
-            $bindpw = $curpass;
-            break;
-    }
-
-    // Configuration array
-    $ldapConfig = array (
-        'binddn'    => $binddn,
-        'bindpw'    => $bindpw,
-        'basedn'    => $rcmail->config->get('password_ldap_basedn'),
-        'host'      => $rcmail->config->get('password_ldap_host'),
-        'port'      => $rcmail->config->get('password_ldap_port'),
-        'starttls'  => $rcmail->config->get('password_ldap_starttls'),
-        'version'   => $rcmail->config->get('password_ldap_version'),
-    );
-
-    // Connecting using the configuration array
-    $ldap = Net_LDAP2::connect($ldapConfig);
-
-    // Checking for connection error
-    if (PEAR::isError($ldap)) {
-        return PASSWORD_CONNECT_ERROR;
-    }
-
-    $crypted_pass = hashPassword($passwd, $rcmail->config->get('password_ldap_encodage'));
-    $force        = $rcmail->config->get('password_ldap_force_replace');
-    $pwattr       = $rcmail->config->get('password_ldap_pwattr');
-    $lchattr      = $rcmail->config->get('password_ldap_lchattr');
-    $smbpwattr    = $rcmail->config->get('password_ldap_samba_pwattr');
-    $smblchattr   = $rcmail->config->get('password_ldap_samba_lchattr');
-    $samba        = $rcmail->config->get('password_ldap_samba');
-
-    // Support password_ldap_samba option for backward compat.
-    if ($samba && !$smbpwattr) {
-        $smbpwattr  = 'sambaNTPassword';
-        $smblchattr = 'sambaPwdLastSet';
-    }
-
-    // Crypt new password
-    if (!$crypted_pass) {
-        return PASSWORD_CRYPT_ERROR;
-    }
-
-    // Crypt new samba password
-    if ($smbpwattr && !($samba_pass = hashPassword($passwd, 'samba'))) {
-           return PASSWORD_CRYPT_ERROR;
-    }
-
-    // Writing new crypted password to LDAP
-    $userEntry = $ldap->getEntry($userDN);
-    if (Net_LDAP2::isError($userEntry)) {
-        return PASSWORD_CONNECT_ERROR;
-    }
-
-    if (!$userEntry->replace(array($pwattr => $crypted_pass), $force)) {
-        return PASSWORD_CONNECT_ERROR;
-    }
-
-    // Updating PasswordLastChange Attribute if desired
-    if ($lchattr) {
-       $current_day = (int)(time() / 86400);
-       if (!$userEntry->replace(array($lchattr => $current_day), $force)) {
-           return PASSWORD_CONNECT_ERROR;
-       }
-    }
-
-    // Update Samba password and last change fields
-    if ($smbpwattr) {
-        $userEntry->replace(array($smbpwattr => $samba_pass), $force);
-    }
-    // Update Samba password last change field
-    if ($smblchattr) {
-        $userEntry->replace(array($smblchattr => time()), $force);
-    }
-
-    if (Net_LDAP2::isError($userEntry->update())) {
-        return PASSWORD_CONNECT_ERROR;
-    }
-
-    // All done, no error
-    return PASSWORD_SUCCESS;
-}
-
-/**
- * Bind with searchDN and searchPW and search for the user's DN.
- * Use search_base and search_filter defined in config file.
- * Return the found DN.
- */
-function search_userdn($rcmail)
-{
-    $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'),
-        'starttls'  => $rcmail->config->get('password_ldap_starttls'),
-        'version'   => $rcmail->config->get('password_ldap_version'),
-    );
-
-    $ldap = Net_LDAP2::connect($ldapConfig);
-
-    if (PEAR::isError($ldap)) {
-        return '';
+    public function save($curpass, $passwd)
+    {
+        $rcmail = rcmail::get_instance();
+        require_once 'Net/LDAP2.php';
+
+        // Building user DN
+        if ($userDN = $rcmail->config->get('password_ldap_userDN_mask')) {
+            $userDN = $this->substitute_vars($userDN);
+        } else {
+            $userDN = $this->search_userdn($rcmail);
+        }
+
+        if (empty($userDN)) {
+            return PASSWORD_CONNECT_ERROR;
+        }
+
+        // Connection Method
+        switch($rcmail->config->get('password_ldap_method')) {
+            case 'admin':
+                $binddn = $rcmail->config->get('password_ldap_adminDN');
+                $bindpw = $rcmail->config->get('password_ldap_adminPW');
+                break;
+            case 'user':
+            default:
+                $binddn = $userDN;
+                $bindpw = $curpass;
+                break;
+        }
+
+        // Configuration array
+        $ldapConfig = array (
+            'binddn'    => $binddn,
+            'bindpw'    => $bindpw,
+            'basedn'    => $rcmail->config->get('password_ldap_basedn'),
+            'host'      => $rcmail->config->get('password_ldap_host'),
+            'port'      => $rcmail->config->get('password_ldap_port'),
+            'starttls'  => $rcmail->config->get('password_ldap_starttls'),
+            'version'   => $rcmail->config->get('password_ldap_version'),
+        );
+
+        // Connecting using the configuration array
+        $ldap = Net_LDAP2::connect($ldapConfig);
+
+        // Checking for connection error
+        if (PEAR::isError($ldap)) {
+            return PASSWORD_CONNECT_ERROR;
+        }
+
+        $crypted_pass = $this->hashPassword($passwd, $rcmail->config->get('password_ldap_encodage'));
+        $force        = $rcmail->config->get('password_ldap_force_replace');
+        $pwattr       = $rcmail->config->get('password_ldap_pwattr');
+        $lchattr      = $rcmail->config->get('password_ldap_lchattr');
+        $smbpwattr    = $rcmail->config->get('password_ldap_samba_pwattr');
+        $smblchattr   = $rcmail->config->get('password_ldap_samba_lchattr');
+        $samba        = $rcmail->config->get('password_ldap_samba');
+
+        // Support password_ldap_samba option for backward compat.
+        if ($samba && !$smbpwattr) {
+            $smbpwattr  = 'sambaNTPassword';
+            $smblchattr = 'sambaPwdLastSet';
+        }
+
+        // Crypt new password
+        if (!$crypted_pass) {
+            return PASSWORD_CRYPT_ERROR;
+        }
+
+        // Crypt new samba password
+        if ($smbpwattr && !($samba_pass = $this->hashPassword($passwd, 'samba'))) {
+               return PASSWORD_CRYPT_ERROR;
+        }
+
+        // Writing new crypted password to LDAP
+        $userEntry = $ldap->getEntry($userDN);
+        if (Net_LDAP2::isError($userEntry)) {
+            return PASSWORD_CONNECT_ERROR;
+        }
+
+        if (!$userEntry->replace(array($pwattr => $crypted_pass), $force)) {
+            return PASSWORD_CONNECT_ERROR;
+        }
+
+        // Updating PasswordLastChange Attribute if desired
+        if ($lchattr) {
+            $current_day = (int)(time() / 86400);
+            if (!$userEntry->replace(array($lchattr => $current_day), $force)) {
+                return PASSWORD_CONNECT_ERROR;
+            }
+        }
+
+        // Update Samba password and last change fields
+        if ($smbpwattr) {
+            $userEntry->replace(array($smbpwattr => $samba_pass), $force);
+        }
+        // Update Samba password last change field
+        if ($smblchattr) {
+            $userEntry->replace(array($smblchattr => time()), $force);
+        }
+
+        if (Net_LDAP2::isError($userEntry->update())) {
+            return PASSWORD_CONNECT_ERROR;
+        }
+
+        // All done, no error
+        return PASSWORD_SUCCESS;
     }
 
-    $base = $rcmail->config->get('password_ldap_search_base');
-    $filter = substitute_vars($rcmail->config->get('password_ldap_search_filter'));
-    $options = array (
+    /**
+     * Bind with searchDN and searchPW and search for the user's DN.
+     * Use search_base and search_filter defined in config file.
+     * Return the found DN.
+     */
+    function search_userdn($rcmail)
+    {
+        $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'),
+            'starttls'  => $rcmail->config->get('password_ldap_starttls'),
+            'version'   => $rcmail->config->get('password_ldap_version'),
+        );
+
+        $ldap = Net_LDAP2::connect($ldapConfig);
+
+        if (PEAR::isError($ldap)) {
+            return '';
+        }
+
+        $base = $rcmail->config->get('password_ldap_search_base');
+        $filter = $this->substitute_vars($rcmail->config->get('password_ldap_search_filter'));
+        $options = array (
             'scope' => 'sub',
             'attributes' => array(),
-    );
-
-    $result = $ldap->search($base, $filter, $options);
-    $ldap->done();
-    if (PEAR::isError($result) || ($result->count() != 1)) {
-        return '';
-    }
-
-    return $result->current()->dn();
-}
+        );
 
-/**
- * Substitute %login, %name, %domain, %dc in $str.
- * See plugin config for details.
- */
-function substitute_vars($str)
-{
-    $rcmail = rcmail::get_instance();
-    $domain = $rcmail->user->get_username('domain');
-    $dc     = 'dc='.strtr($domain, array('.' => ',dc=')); // hierarchal domain string
-
-    $str = str_replace(array(
-            '%login',
-            '%name',
-            '%domain',
-            '%dc',
-        ), array(
-            $_SESSION['username'],
-            $rcmail->user->get_username('local'),
-            $domain,
-            $dc,
-        ), $str
-    );
-
-    return $str;
-}
+        $result = $ldap->search($base, $filter, $options);
+        $ldap->done();
+        if (PEAR::isError($result) || ($result->count() != 1)) {
+            return '';
+        }
 
+        return $result->current()->dn();
+    }
 
-/**
- * Code originaly from the phpLDAPadmin development team
- * http://phpldapadmin.sourceforge.net/
- *
- * Hashes a password and returns the hash based on the specified enc_type.
- *
- * @param string $passwordClear The password to hash in clear text.
- * @param string $encodageType Standard LDAP encryption type which must be one of
- *        crypt, ext_des, md5crypt, blowfish, md5, sha, smd5, ssha, or clear.
- * @return string The hashed password.
- *
- */
+    /**
+     * Substitute %login, %name, %domain, %dc in $str.
+     * See plugin config for details.
+     */
+    function substitute_vars($str)
+    {
+        $rcmail = rcmail::get_instance();
+        $domain = $rcmail->user->get_username('domain');
+        $dc     = 'dc='.strtr($domain, array('.' => ',dc=')); // hierarchal domain string
+
+        $str = str_replace(array(
+                '%login',
+                '%name',
+                '%domain',
+                '%dc',
+            ), array(
+                $_SESSION['username'],
+                $rcmail->user->get_username('local'),
+                $domain,
+                $dc,
+            ), $str
+        );
+
+        return $str;
+    }
 
-function hashPassword( $passwordClear, $encodageType )
-{
-    $encodageType = strtolower( $encodageType );
-    switch( $encodageType ) {
-        case 'crypt': 
-            $cryptedPassword = '{CRYPT}' . crypt($passwordClear,randomSalt(2)); 
+    /**
+     * Code originaly from the phpLDAPadmin development team
+     * http://phpldapadmin.sourceforge.net/
+     *
+     * Hashes a password and returns the hash based on the specified enc_type.
+     *
+     * @param string $passwordClear The password to hash in clear text.
+     * @param string $encodageType Standard LDAP encryption type which must be one of
+     *        crypt, ext_des, md5crypt, blowfish, md5, sha, smd5, ssha, or clear.
+     * @return string The hashed password.
+     *
+     */
+    function hashPassword( $passwordClear, $encodageType )
+    {
+        $encodageType = strtolower( $encodageType );
+        switch( $encodageType ) {
+        case 'crypt':
+            $cryptedPassword = '{CRYPT}' . crypt($passwordClear, $this->randomSalt(2));
             break;
 
         case 'ext_des':
@@ -214,7 +214,7 @@ function hashPassword( $passwordClear, $encodageType )
                 // Your system crypt library does not support extended DES encryption.
                 return FALSE;
             }
-            $cryptedPassword = '{CRYPT}' . crypt( $passwordClear, '_' . randomSalt(8) );
+            $cryptedPassword = '{CRYPT}' . crypt( $passwordClear, '_' . $this->randomSalt(8) );
             break;
 
         case 'md5crypt':
@@ -222,7 +222,7 @@ function hashPassword( $passwordClear, $encodageType )
                 // Your system crypt library does not support md5crypt encryption.
                 return FALSE;
             }
-            $cryptedPassword = '{CRYPT}' . crypt( $passwordClear , '$1$' . randomSalt(9) );
+            $cryptedPassword = '{CRYPT}' . crypt( $passwordClear , '$1$' . $this->randomSalt(9) );
             break;
 
         case 'blowfish':
@@ -231,7 +231,7 @@ function hashPassword( $passwordClear, $encodageType )
                 return FALSE;
             }
             // hardcoded to second blowfish version and set number of rounds
-            $cryptedPassword = '{CRYPT}' . crypt( $passwordClear , '$2a$12$' . randomSalt(13) );
+            $cryptedPassword = '{CRYPT}' . crypt( $passwordClear , '$2a$12$' . $this->randomSalt(13) );
             break;
 
         case 'md5':
@@ -282,37 +282,38 @@ function hashPassword( $passwordClear, $encodageType )
         case 'clear':
         default:
             $cryptedPassword = $passwordClear;
-    }
+        }
 
-    return $cryptedPassword;
-}
-
-/**
- * Code originaly from the phpLDAPadmin development team
- * http://phpldapadmin.sourceforge.net/
- *
- * Used to generate a random salt for crypt-style passwords. Salt strings are used
- * to make pre-built hash cracking dictionaries difficult to use as the hash algorithm uses
- * not only the user's password but also a randomly generated string. The string is
- * stored as the first N characters of the hash for reference of hashing algorithms later.
- *
- * --- added 20021125 by bayu irawan <bayuir@divnet.telkom.co.id> ---
- * --- ammended 20030625 by S C Rigler <srigler@houston.rr.com> ---
- *
- * @param int $length The length of the salt string to generate.
- * @return string The generated salt string.
- */
-function randomSalt( $length )
-{
-    $possible = '0123456789'.
-        'abcdefghijklmnopqrstuvwxyz'.
-        'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.
-        './';
-    $str = '';
-//    mt_srand((double)microtime() * 1000000);
-
-    while (strlen($str) < $length)
-        $str .= substr($possible, (rand() % strlen($possible)), 1);
+        return $cryptedPassword;
+    }
 
-    return $str;
+    /**
+     * Code originaly from the phpLDAPadmin development team
+     * http://phpldapadmin.sourceforge.net/
+     *
+     * Used to generate a random salt for crypt-style passwords. Salt strings are used
+     * to make pre-built hash cracking dictionaries difficult to use as the hash algorithm uses
+     * not only the user's password but also a randomly generated string. The string is
+     * stored as the first N characters of the hash for reference of hashing algorithms later.
+     *
+     * --- added 20021125 by bayu irawan <bayuir@divnet.telkom.co.id> ---
+     * --- ammended 20030625 by S C Rigler <srigler@houston.rr.com> ---
+     *
+     * @param int $length The length of the salt string to generate.
+     * @return string The generated salt string.
+     */
+    function randomSalt( $length )
+    {
+        $possible = '0123456789'.
+            'abcdefghijklmnopqrstuvwxyz'.
+            'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.
+            './';
+        $str = '';
+        // mt_srand((double)microtime() * 1000000);
+
+        while (strlen($str) < $length)
+            $str .= substr($possible, (rand() % strlen($possible)), 1);
+
+        return $str;
+    }
 }
index 2f51b754791da7f8224e7796fb9d454d149eeb5b..e1daed9f34178389fca8ee9dc3e3cc758a824f37 100644 (file)
@@ -6,48 +6,52 @@
  * Driver for passwords stored in LDAP
  * This driver is based on Edouard's LDAP Password Driver, but does not
  * require PEAR's Net_LDAP2 to be installed
- * 
- * @version 1.0 (2010-07-31)
+ *
+ * @version 2.0
  * @author Wout Decre <wout@canodus.be>
  */
-function password_save($curpass, $passwd)
+
+class rcube_ldap_simple_password
 {
-       $rcmail = rcmail::get_instance();
-
-       // Connect
-       if (!$ds = ldap_connect($rcmail->config->get('password_ldap_host'), $rcmail->config->get('password_ldap_port'))) {
-               ldap_unbind($ds);
-               return PASSWORD_CONNECT_ERROR;
-       }
-
-       // Set protocol version
-       if (!ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, $rcmail->config->get('password_ldap_version'))) {
-               ldap_unbind($ds);
-               return PASSWORD_CONNECT_ERROR;
-       }
-
-       // Start TLS
-       if ($rcmail->config->get('password_ldap_starttls')) {
-               if (!ldap_start_tls($ds)) {
-                       ldap_unbind($ds);
-                       return PASSWORD_CONNECT_ERROR;
-               }
-       }
-
-       // Build user DN
-       if ($user_dn = $rcmail->config->get('password_ldap_userDN_mask')) {
-               $user_dn = ldap_simple_substitute_vars($user_dn);
-       } else {
-               $user_dn = ldap_simple_search_userdn($rcmail, $ds);
-       }
-
-       if (empty($user_dn)) {
-               ldap_unbind($ds);
-               return PASSWORD_CONNECT_ERROR;
-       }
-
-       // Connection method
-       switch ($rcmail->config->get('password_ldap_method')) {
+    function save($curpass, $passwd)
+    {
+           $rcmail = rcmail::get_instance();
+
+       // Connect
+           if (!$ds = ldap_connect($rcmail->config->get('password_ldap_host'), $rcmail->config->get('password_ldap_port'))) {
+                   ldap_unbind($ds);
+               return PASSWORD_CONNECT_ERROR;
+           }
+
+       // Set protocol version
+           if (!ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, $rcmail->config->get('password_ldap_version'))) {
+                   ldap_unbind($ds);
+               return PASSWORD_CONNECT_ERROR;
+           }
+
+       // Start TLS
+           if ($rcmail->config->get('password_ldap_starttls')) {
+                   if (!ldap_start_tls($ds)) {
+                       ldap_unbind($ds);
+                       return PASSWORD_CONNECT_ERROR;
+                   }
+           }
+
+       // Build user DN
+           if ($user_dn = $rcmail->config->get('password_ldap_userDN_mask')) {
+                   $user_dn = $this->substitute_vars($user_dn);
+       }
+       else {
+               $user_dn = $this->search_userdn($rcmail, $ds);
+           }
+
+           if (empty($user_dn)) {
+                   ldap_unbind($ds);
+               return PASSWORD_CONNECT_ERROR;
+           }
+
+       // Connection method
+           switch ($rcmail->config->get('password_ldap_method')) {
                case 'admin':
                        $binddn = $rcmail->config->get('password_ldap_adminDN');
                        $bindpw = $rcmail->config->get('password_ldap_adminPW');
@@ -57,126 +61,125 @@ function password_save($curpass, $passwd)
                        $binddn = $user_dn;
                        $bindpw = $curpass;
                        break;
-       }
-
-
-       $crypted_pass = ldap_simple_hash_password($passwd, $rcmail->config->get('password_ldap_encodage'));
-       $lchattr      = $rcmail->config->get('password_ldap_lchattr');
-       $pwattr       = $rcmail->config->get('password_ldap_pwattr');
-    $smbpwattr    = $rcmail->config->get('password_ldap_samba_pwattr');
-    $smblchattr   = $rcmail->config->get('password_ldap_samba_lchattr');
-    $samba        = $rcmail->config->get('password_ldap_samba');
-
-    // Support password_ldap_samba option for backward compat.
-    if ($samba && !$smbpwattr) {
-        $smbpwattr  = 'sambaNTPassword';
-        $smblchattr = 'sambaPwdLastSet';
+           }
+
+       $crypted_pass = $this->hash_password($passwd, $rcmail->config->get('password_ldap_encodage'));
+           $lchattr      = $rcmail->config->get('password_ldap_lchattr');
+       $pwattr       = $rcmail->config->get('password_ldap_pwattr');
+        $smbpwattr    = $rcmail->config->get('password_ldap_samba_pwattr');
+        $smblchattr   = $rcmail->config->get('password_ldap_samba_lchattr');
+        $samba        = $rcmail->config->get('password_ldap_samba');
+
+        // Support password_ldap_samba option for backward compat.
+        if ($samba && !$smbpwattr) {
+            $smbpwattr  = 'sambaNTPassword';
+            $smblchattr = 'sambaPwdLastSet';
+        }
+
+       // Crypt new password
+           if (!$crypted_pass) {
+                   return PASSWORD_CRYPT_ERROR;
+           }
+
+        // Crypt new Samba password
+        if ($smbpwattr && !($samba_pass = $this->hash_password($passwd, 'samba'))) {
+               return PASSWORD_CRYPT_ERROR;
+        }
+
+       // Bind
+           if (!ldap_bind($ds, $binddn, $bindpw)) {
+                   ldap_unbind($ds);
+               return PASSWORD_CONNECT_ERROR;
+           }
+
+       $entree[$pwattr] = $crypted_pass;
+
+           // Update PasswordLastChange Attribute if desired
+       if ($lchattr) {
+               $entree[$lchattr] = (int)(time() / 86400);
+           }
+
+        // Update Samba password
+        if ($smbpwattr) {
+            $entree[$smbpwattr] = $samba_pass;
+        }
+
+        // Update Samba password last change
+        if ($smblchattr) {
+            $entree[$smblchattr] = time();
+        }
+
+       if (!ldap_modify($ds, $user_dn, $entree)) {
+               ldap_unbind($ds);
+                   return PASSWORD_CONNECT_ERROR;
+       }
+
+       // All done, no error
+           ldap_unbind($ds);
+           return PASSWORD_SUCCESS;
     }
 
-       // Crypt new password
-       if (!$crypted_pass) {
-               return PASSWORD_CRYPT_ERROR;
-       }
-
-    // Crypt new Samba password
-    if ($smbpwattr && !($samba_pass = ldap_simple_hash_password($passwd, 'samba'))) {
-           return PASSWORD_CRYPT_ERROR;
+    /**
+     * Bind with searchDN and searchPW and search for the user's DN
+     * Use search_base and search_filter defined in config file
+     * Return the found DN
+     */
+    function search_userdn($rcmail, $ds)
+    {
+           /* Bind */
+       if (!ldap_bind($ds, $rcmail->config->get('password_ldap_searchDN'), $rcmail->config->get('password_ldap_searchPW'))) {
+               return false;
+           }
+
+       /* Search for the DN */
+           if (!$sr = ldap_search($ds, $rcmail->config->get('password_ldap_search_base'), $this->substitute_vars($rcmail->config->get('password_ldap_search_filter')))) {
+                   return false;
+           }
+
+       /* If no or more entries were found, return false */
+           if (ldap_count_entries($ds, $sr) != 1) {
+                   return false;
+           }
+
+           return ldap_get_dn($ds, ldap_first_entry($ds, $sr));
     }
 
-       // Bind
-       if (!ldap_bind($ds, $binddn, $bindpw)) {
-               ldap_unbind($ds);
-               return PASSWORD_CONNECT_ERROR;
-       }
+    /**
+     * Substitute %login, %name, %domain, %dc in $str
+     * See plugin config for details
+     */
+    function substitute_vars($str)
+    {
+           $str = str_replace('%login', $_SESSION['username'], $str);
+       $str = str_replace('%l', $_SESSION['username'], $str);
 
-       $entree[$pwattr] = $crypted_pass;
+           $parts = explode('@', $_SESSION['username']);
 
-       // Update PasswordLastChange Attribute if desired
-       if ($lchattr) {
-               $entree[$lchattr] = (int)(time() / 86400);
-       }
+       if (count($parts) == 2) {
+            $dc = 'dc='.strtr($parts[1], array('.' => ',dc=')); // hierarchal domain string
 
-    // Update Samba password
-    if ($smbpwattr) {
-        $entree[$smbpwattr] = $samba_pass;
-    }
+               $str = str_replace('%name', $parts[0], $str);
+            $str = str_replace('%n', $parts[0], $str);
+            $str = str_replace('%dc', $dc, $str);
+               $str = str_replace('%domain', $parts[1], $str);
+                   $str = str_replace('%d', $parts[1], $str);
+       }
 
-    // Update Samba password last change
-    if ($smblchattr) {
-        $entree[$smblchattr] = time();
+           return $str;
     }
 
-       if (!ldap_modify($ds, $user_dn, $entree)) {
-               ldap_unbind($ds);
-               return PASSWORD_CONNECT_ERROR;
-       }
-
-       // All done, no error
-       ldap_unbind($ds);
-       return PASSWORD_SUCCESS;
-}
-
-/**
- * Bind with searchDN and searchPW and search for the user's DN
- * Use search_base and search_filter defined in config file
- * Return the found DN
- */
-function ldap_simple_search_userdn($rcmail, $ds)
-{
-       /* Bind */
-       if (!ldap_bind($ds, $rcmail->config->get('password_ldap_searchDN'), $rcmail->config->get('password_ldap_searchPW'))) {
-               return false;
-       }
-
-       /* Search for the DN */
-       if (!$sr = ldap_search($ds, $rcmail->config->get('password_ldap_search_base'), ldap_simple_substitute_vars($rcmail->config->get('password_ldap_search_filter')))) {
-               return false;
-       }
-
-       /* If no or more entries were found, return false */
-       if (ldap_count_entries($ds, $sr) != 1) {
-               return false;
-       }
-
-       return ldap_get_dn($ds, ldap_first_entry($ds, $sr));
-}
-
-/**
- * Substitute %login, %name, %domain, %dc in $str
- * See plugin config for details
- */
-function ldap_simple_substitute_vars($str)
-{
-       $str = str_replace('%login', $_SESSION['username'], $str);
-       $str = str_replace('%l', $_SESSION['username'], $str);
-
-       $parts = explode('@', $_SESSION['username']);
-
-       if (count($parts) == 2) {
-        $dc = 'dc='.strtr($parts[1], array('.' => ',dc=')); // hierarchal domain string
-
-               $str = str_replace('%name', $parts[0], $str);
-        $str = str_replace('%n', $parts[0], $str);
-        $str = str_replace('%dc', $dc, $str);
-               $str = str_replace('%domain', $parts[1], $str);
-               $str = str_replace('%d', $parts[1], $str);
-       }
-
-       return $str;
-}
-
-/**
- * Code originaly from the phpLDAPadmin development team
- * http://phpldapadmin.sourceforge.net/
- *
- * Hashes a password and returns the hash based on the specified enc_type
- */
-function ldap_simple_hash_password($password_clear, $encodage_type)
-{
-       $encodage_type = strtolower($encodage_type);
-       switch ($encodage_type) {
+    /**
+     * Code originaly from the phpLDAPadmin development team
+     * http://phpldapadmin.sourceforge.net/
+     *
+     * Hashes a password and returns the hash based on the specified enc_type
+     */
+    function hash_password($password_clear, $encodage_type)
+    {
+       $encodage_type = strtolower($encodage_type);
+           switch ($encodage_type) {
                case 'crypt':
-                       $crypted_password = '{CRYPT}' . crypt($password_clear, ldap_simple_random_salt(2));
+                       $crypted_password = '{CRYPT}' . crypt($password_clear, $this->random_salt(2));
                        break;
                case 'ext_des':
                        /* Extended DES crypt. see OpenBSD crypt man page */
@@ -184,14 +187,14 @@ function ldap_simple_hash_password($password_clear, $encodage_type)
                                /* Your system crypt library does not support extended DES encryption */
                                return false;
                        }
-                       $crypted_password = '{CRYPT}' . crypt($password_clear, '_' . ldap_simple_random_salt(8));
+                       $crypted_password = '{CRYPT}' . crypt($password_clear, '_' . $this->random_salt(8));
                        break;
                case 'md5crypt':
                        if (!defined('CRYPT_MD5') || CRYPT_MD5 == 0) {
                                /* Your system crypt library does not support md5crypt encryption */
                                return false;
                        }
-                       $crypted_password = '{CRYPT}' . crypt($password_clear, '$1$' . ldap_simple_random_salt(9));
+                       $crypted_password = '{CRYPT}' . crypt($password_clear, '$1$' . $this->random_salt(9));
                        break;
                case 'blowfish':
                        if (!defined('CRYPT_BLOWFISH') || CRYPT_BLOWFISH == 0) {
@@ -199,7 +202,7 @@ function ldap_simple_hash_password($password_clear, $encodage_type)
                                return false;
                        }
                        /* Hardcoded to second blowfish version and set number of rounds */
-                       $crypted_password = '{CRYPT}' . crypt($password_clear, '$2a$12$' . ldap_simple_random_salt(13));
+                       $crypted_password = '{CRYPT}' . crypt($password_clear, '$2a$12$' . $this->random_salt(13));
                        break;
                case 'md5':
                        $crypted_password = '{MD5}' . base64_encode(pack('H*', md5($password_clear)));
@@ -247,25 +250,27 @@ function ldap_simple_hash_password($password_clear, $encodage_type)
                case 'clear':
                default:
                        $crypted_password = $password_clear;
-       }
+           }
 
-       return $crypted_password;
-}
+       return $crypted_password;
+    }
 
-/**
- * Code originaly from the phpLDAPadmin development team
- * http://phpldapadmin.sourceforge.net/
- *
- * Used to generate a random salt for crypt-style passwords
- */
-function ldap_simple_random_salt($length)
-{
-       $possible = '0123456789' . 'abcdefghijklmnopqrstuvwxyz' . 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' . './';
-       $str = '';
-       // mt_srand((double)microtime() * 1000000);
-       while (strlen($str) < $length) {
-               $str .= substr($possible, (rand() % strlen($possible)), 1);
-       }
-
-       return $str;
+    /**
+     * Code originaly from the phpLDAPadmin development team
+     * http://phpldapadmin.sourceforge.net/
+     *
+     * Used to generate a random salt for crypt-style passwords
+     */
+    function random_salt($length)
+    {
+           $possible = '0123456789' . 'abcdefghijklmnopqrstuvwxyz' . 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' . './';
+       $str = '';
+           // mt_srand((double)microtime() * 1000000);
+
+       while (strlen($str) < $length) {
+               $str .= substr($possible, (rand() % strlen($possible)), 1);
+           }
+
+           return $str;
+    }
 }
index e9363cc5ad43f41fd54de1ebabf042b25beb736d..ed60bd8419c76d42fdae21a408f8a82f171c043f 100644 (file)
@@ -3,18 +3,29 @@
 /**
  * PAM Password Driver
  *
- * @version 1.0
+ * @version 2.0
  * @author Aleksander Machniak
  */
-function password_save($currpass, $newpass)
+
+class rcube_pam_password
 {
-    $user = $_SESSION['username'];
+    function save($currpass, $newpass)
+    {
+        $user = $_SESSION['username'];
 
-    if (extension_loaded('pam')) {
-        if (pam_auth($user, $currpass, $error, false)) {
-            if (pam_chpass($user, $currpass, $newpass)) {
-                return PASSWORD_SUCCESS;
+        if (extension_loaded('pam')) {
+            if (pam_auth($user, $currpass, $error, false)) {
+                if (pam_chpass($user, $currpass, $newpass)) {
+                    return PASSWORD_SUCCESS;
+                }
+            }
+            else {
+                raise_error(array(
+                    'code' => 600,
+                    'type' => 'php',
+                    'file' => __FILE__, 'line' => __LINE__,
+                    'message' => "Password plugin: PAM authentication failed for user $user: $error"
+                    ), true, false);
             }
         }
         else {
@@ -22,20 +33,10 @@ function password_save($currpass, $newpass)
                 'code' => 600,
                 'type' => 'php',
                 'file' => __FILE__, 'line' => __LINE__,
-                'message' => "Password plugin: PAM authentication failed for user $user: $error"
+                'message' => "Password plugin: PECL-PAM module not loaded"
                 ), true, false);
         }
-    }
-    else {
-        raise_error(array(
-            'code' => 600,
-            'type' => 'php',
-            'file' => __FILE__, 'line' => __LINE__,
-            'message' => "Password plugin: PECL-PAM module not loaded"
-            ), true, false);
-    }
 
-    return PASSWORD_ERROR;
+        return PASSWORD_ERROR;
+    }
 }
-
-?>
index fc105de47da3bfc60b488dbc0916060086412796..e18ec26607677ab0138541865c89c6b08e1ff0a9 100644 (file)
@@ -5,58 +5,61 @@
  *
  * Driver to change passwords via Poppassd/Courierpassd
  *
- * @version 1.1
+ * @version 2.0
  * @author Philip Weir
  *
  */
 
-function format_error_result($code, $line)
+class rcube_poppassd_password
 {
-    if (preg_match('/^\d\d\d\s+(\S.*)\s*$/', $line, $matches)) {
-        return array('code' => $code, 'message' => $matches[1]);
-    } else {
-        return $code;
+    function format_error_result($code, $line)
+    {
+        if (preg_match('/^\d\d\d\s+(\S.*)\s*$/', $line, $matches)) {
+            return array('code' => $code, 'message' => $matches[1]);
+        } else {
+            return $code;
+        }
     }
-}
 
-function password_save($curpass, $passwd)
-{
-    $rcmail = rcmail::get_instance();
+    function save($curpass, $passwd)
+    {
+        $rcmail = rcmail::get_instance();
 //    include('Net/Socket.php');
-    $poppassd = new Net_Socket();
+        $poppassd = new Net_Socket();
 
-    $result = $poppassd->connect($rcmail->config->get('password_pop_host'), $rcmail->config->get('password_pop_port'), null);
-    if (PEAR::isError($result)) {
-        return format_error_result(PASSWORD_CONNECT_ERROR, $result->getMessage());
-    }
-    else {
-        $result = $poppassd->readLine();
-        if(!preg_match('/^2\d\d/', $result)) {
-            $poppassd->disconnect();
-            return format_error_result(PASSWORD_ERROR, $result);
+        $result = $poppassd->connect($rcmail->config->get('password_pop_host'), $rcmail->config->get('password_pop_port'), null);
+        if (PEAR::isError($result)) {
+            return $this->format_error_result(PASSWORD_CONNECT_ERROR, $result->getMessage());
         }
         else {
-            $poppassd->writeLine("user ". $_SESSION['username']);
             $result = $poppassd->readLine();
-            if(!preg_match('/^[23]\d\d/', $result) ) {
+            if(!preg_match('/^2\d\d/', $result)) {
                 $poppassd->disconnect();
-                return format_error_result(PASSWORD_CONNECT_ERROR, $result);
+                return $this->format_error_result(PASSWORD_ERROR, $result);
             }
             else {
-                $poppassd->writeLine("pass ". $curpass);
+                $poppassd->writeLine("user ". $_SESSION['username']);
                 $result = $poppassd->readLine();
                 if(!preg_match('/^[23]\d\d/', $result) ) {
                     $poppassd->disconnect();
-                    return format_error_result(PASSWORD_ERROR, $result);
+                    return $this->format_error_result(PASSWORD_CONNECT_ERROR, $result);
                 }
                 else {
-                    $poppassd->writeLine("newpass ". $passwd);
+                    $poppassd->writeLine("pass ". $curpass);
                     $result = $poppassd->readLine();
-                    $poppassd->disconnect();
-                    if (!preg_match('/^2\d\d/', $result))
-                        return format_error_result(PASSWORD_ERROR, $result);
-                    else
-                        return PASSWORD_SUCCESS;
+                    if(!preg_match('/^[23]\d\d/', $result) ) {
+                        $poppassd->disconnect();
+                        return $this->format_error_result(PASSWORD_ERROR, $result);
+                    }
+                    else {
+                        $poppassd->writeLine("newpass ". $passwd);
+                        $result = $poppassd->readLine();
+                        $poppassd->disconnect();
+                        if (!preg_match('/^2\d\d/', $result))
+                            return $this->format_error_result(PASSWORD_ERROR, $result);
+                        else
+                            return PASSWORD_SUCCESS;
+                    }
                 }
             }
         }
diff --git a/plugins/password/drivers/pw_usermod.php b/plugins/password/drivers/pw_usermod.php
new file mode 100644 (file)
index 0000000..5b92fcb
--- /dev/null
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * pw_usermod Driver
+ *
+ * Driver that adds functionality to change the systems user password via
+ * the 'pw usermod' command.
+ *
+ * For installation instructions please read the README file.
+ *
+ * @version 2.0
+ * @author Alex Cartwright <acartwright@mutinydesign.co.uk>
+ * @author Adamson Huang <adomputer@gmail.com>
+ */
+
+class rcube_pw_usermod_password
+{
+    public function save($currpass, $newpass)
+    {
+        $username = $_SESSION['username'];
+        $cmd = rcmail::get_instance()->config->get('password_pw_usermod_cmd');
+        $cmd .= " $username > /dev/null";
+
+        $handle = popen($cmd, "w");
+        fwrite($handle, "$newpass\n");
+
+        if (pclose($handle) == 0) {
+            return PASSWORD_SUCCESS;
+        }
+        else {
+            raise_error(array(
+                'code' => 600,
+                'type' => 'php',
+                'file' => __FILE__, 'line' => __LINE__,
+                'message' => "Password plugin: Unable to execute $cmd"
+                ), true, false);
+        }
+
+        return PASSWORD_ERROR;
+    }
+}
index f8ac5c60687046802cf53125ef0d709fabe39d53..957c1196c3c6d138d9a11a5da9a4c769d2bddbb7 100644 (file)
  *
  * For installation instructions please read the README file.
  *
- * @version 1.0
+ * @version 2.0
  * @author Thomas Bruederli
  */
-function password_save($currpass, $newpass)
+
+class rcube_sasl_password
 {
-    $curdir = realpath(dirname(__FILE__));
-    $username = escapeshellcmd($_SESSION['username']);
-    $args = rcmail::get_instance()->config->get('password_saslpasswd_args', '');
+    function save($currpass, $newpass)
+    {
+        $curdir   = INSTALL_PATH . 'plugins/password/helpers';
+        $username = escapeshellcmd($_SESSION['username']);
+        $args     = rcmail::get_instance()->config->get('password_saslpasswd_args', '');
 
-    if ($fh = popen("$curdir/chgsaslpasswd -p $args $username", 'w')) {
-        fwrite($fh, $newpass."\n");
-        $code = pclose($fh);
+        if ($fh = popen("$curdir/chgsaslpasswd -p $args $username", 'w')) {
+            fwrite($fh, $newpass."\n");
+            $code = pclose($fh);
 
-        if ($code == 0)
-            return PASSWORD_SUCCESS;
-    }
-    else {
-        raise_error(array(
-            'code' => 600,
-            'type' => 'php',
-            'file' => __FILE__, 'line' => __LINE__,
-            'message' => "Password plugin: Unable to execute $curdir/chgsaslpasswd"
-            ), true, false);
-    }
+            if ($code == 0)
+                return PASSWORD_SUCCESS;
+        }
+        else {
+            raise_error(array(
+                'code' => 600,
+                'type' => 'php',
+                'file' => __FILE__, 'line' => __LINE__,
+                'message' => "Password plugin: Unable to execute $curdir/chgsaslpasswd"
+                ), true, false);
+        }
 
-    return PASSWORD_ERROR;
+        return PASSWORD_ERROR;
+    }
 }
-
-?>
diff --git a/plugins/password/drivers/smb.php b/plugins/password/drivers/smb.php
new file mode 100644 (file)
index 0000000..138313b
--- /dev/null
@@ -0,0 +1,59 @@
+<?php
+
+/**
+ * smb Driver
+ *
+ * Driver that adds functionality to change the systems user password via
+ * the 'smbpasswd' command.
+ *
+ * For installation instructions please read the README file.
+ *
+ * @version 2.0
+ * @author Andy Theuninck <gohanman@gmail.com)
+ *
+ * Based on chpasswd roundcubemail password driver by
+ * @author Alex Cartwright <acartwright@mutinydesign.co.uk)
+ * and smbpasswd horde passwd driver by
+ * @author  Rene Lund Jensen <Rene@lundjensen.net>
+ *
+ * Configuration settings:
+ * password_smb_host    => samba host (default: localhost)
+ * password_smb_cmd => smbpasswd binary (default: /usr/bin/smbpasswd)
+ */
+
+class rcube_smb_password
+{
+
+    public function save($currpass, $newpass)
+    {
+        $host = rcmail::get_instance()->config->get('password_smb_host','localhost');
+        $bin = rcmail::get_instance()->config->get('password_smb_cmd','/usr/bin/smbpasswd');
+        $username = $_SESSION['username'];
+
+        $tmpfile = tempnam(sys_get_temp_dir(),'smb');
+        $cmd = $bin . ' -r ' . $host . ' -s -U "' . $username . '" > ' . $tmpfile . ' 2>&1';
+        $handle = @popen($cmd, 'w');
+        fputs($handle, $currpass."\n");
+        fputs($handle, $newpass."\n");
+        fputs($handle, $newpass."\n");
+        @pclose($handle);
+        $res = file($tmpfile);
+        unlink($tmpfile);
+
+        if (strstr($res[count($res) - 1], 'Password changed for user') !== false) {
+            return PASSWORD_SUCCESS;
+        }
+        else {
+            raise_error(array(
+                'code' => 600,
+                'type' => 'php',
+                'file' => __FILE__, 'line' => __LINE__,
+                'message' => "Password plugin: Unable to execute $cmd"
+                ), true, false);
+        }
+
+        return PASSWORD_ERROR;
+    }
+
+}
+?>
index 06a6b75ffac4f0ad10ade9cb9da36c7d7f3a5485..e9207300e13fcd2b86ca0affbbcfb56ec69eba34 100644 (file)
  *
  * Driver for passwords stored in SQL database
  *
- * @version 1.4
+ * @version 2.0
  * @author Aleksander 'A.L.E.C' Machniak <alec@alec.pl>
  *
  */
 
-function password_save($curpass, $passwd)
+class rcube_sql_password
 {
-    $rcmail = rcmail::get_instance();
-
-    if (!($sql = $rcmail->config->get('password_query')))
-        $sql = 'SELECT update_passwd(%c, %u)';
-
-    if ($dsn = $rcmail->config->get('password_db_dsn')) {
-           // #1486067: enable new_link option
-           if (is_array($dsn) && empty($dsn['new_link']))
-               $dsn['new_link'] = true;
-           else if (!is_array($dsn) && !preg_match('/\?new_link=true/', $dsn))
-               $dsn .= '?new_link=true';
-
-        $db = new rcube_mdb2($dsn, '', FALSE);
-        $db->set_debug((bool)$rcmail->config->get('sql_debug'));
-        $db->db_connect('w');
-    } else {
-        $db = $rcmail->get_dbh();
-    }
+    function save($curpass, $passwd)
+    {
+        $rcmail = rcmail::get_instance();
+
+        if (!($sql = $rcmail->config->get('password_query')))
+            $sql = 'SELECT update_passwd(%c, %u)';
+
+        if ($dsn = $rcmail->config->get('password_db_dsn')) {
+               // #1486067: enable new_link option
+               if (is_array($dsn) && empty($dsn['new_link']))
+                   $dsn['new_link'] = true;
+           else if (!is_array($dsn) && !preg_match('/\?new_link=true/', $dsn))
+                   $dsn .= '?new_link=true';
+
+            $db = new rcube_mdb2($dsn, '', FALSE);
+            $db->set_debug((bool)$rcmail->config->get('sql_debug'));
+            $db->db_connect('w');
+        }
+        else {
+            $db = $rcmail->get_dbh();
+        }
 
-    if ($err = $db->is_error())
-        return PASSWORD_ERROR;
+        if ($err = $db->is_error())
+            return PASSWORD_ERROR;
+
+        // crypted password
+        if (strpos($sql, '%c') !== FALSE) {
+            $salt = '';
+            if (CRYPT_MD5) {
+                // Always use eight salt characters for MD5 (#1488136)
+               $len = 8;
+            } else if (CRYPT_STD_DES) {
+                   $len = 2;
+            } else {
+                   return PASSWORD_CRYPT_ERROR;
+            }
 
-    // crypted password
-    if (strpos($sql, '%c') !== FALSE) {
-        $salt = '';
-        if (CRYPT_MD5) {
-            // Always use eight salt characters for MD5 (#1488136)
-           $len = 8;
-        } else if (CRYPT_STD_DES) {
-           $len = 2;
-        } else {
-           return PASSWORD_CRYPT_ERROR;
-        }
+            //Restrict the character set used as salt (#1488136)
+            $seedchars = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
+            for ($i = 0; $i < $len ; $i++) {
+               $salt .= $seedchars[rand(0, 63)];
+            }
 
-        //Restrict the character set used as salt (#1488136)
-        $seedchars = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
-        for ($i = 0; $i < $len ; $i++) {
-           $salt .= $seedchars[rand(0, 63)];
+            $sql = str_replace('%c',  $db->quote(crypt($passwd, CRYPT_MD5 ? '$1$'.$salt.'$' : $salt)), $sql);
         }
 
-        $sql = str_replace('%c',  $db->quote(crypt($passwd, CRYPT_MD5 ? '$1$'.$salt.'$' : $salt)), $sql);
-    }
+        // dovecotpw
+        if (strpos($sql, '%D') !== FALSE) {
+            if (!($dovecotpw = $rcmail->config->get('password_dovecotpw')))
+                $dovecotpw = 'dovecotpw';
+            if (!($method = $rcmail->config->get('password_dovecotpw_method')))
+                $method = 'CRAM-MD5';
 
-    // dovecotpw
-    if (strpos($sql, '%D') !== FALSE) {
-        if (!($dovecotpw = $rcmail->config->get('password_dovecotpw')))
-            $dovecotpw = 'dovecotpw';
-        if (!($method = $rcmail->config->get('password_dovecotpw_method')))
-            $method = 'CRAM-MD5';
-
-        // use common temp dir
-        $tmp_dir = $rcmail->config->get('temp_dir');
-        $tmpfile = tempnam($tmp_dir, 'roundcube-');
-
-        $pipe = popen("$dovecotpw -s '$method' > '$tmpfile'", "w");
-        if (!$pipe) {
-            unlink($tmpfile);
-            return PASSWORD_CRYPT_ERROR;
-        }
-        else {
-            fwrite($pipe, $passwd . "\n", 1+strlen($passwd)); usleep(1000);
-            fwrite($pipe, $passwd . "\n", 1+strlen($passwd));
-            pclose($pipe);
-            $newpass = trim(file_get_contents($tmpfile), "\n");
-            if (!preg_match('/^\{' . $method . '\}/', $newpass)) {
+            // use common temp dir
+            $tmp_dir = $rcmail->config->get('temp_dir');
+            $tmpfile = tempnam($tmp_dir, 'roundcube-');
+
+            $pipe = popen("$dovecotpw -s '$method' > '$tmpfile'", "w");
+            if (!$pipe) {
+                unlink($tmpfile);
                 return PASSWORD_CRYPT_ERROR;
             }
-            if (!$rcmail->config->get('password_dovecotpw_with_method'))
-                $newpass = trim(str_replace('{' . $method . '}', '', $newpass));
-            unlink($tmpfile);
+            else {
+                fwrite($pipe, $passwd . "\n", 1+strlen($passwd)); usleep(1000);
+                fwrite($pipe, $passwd . "\n", 1+strlen($passwd));
+                pclose($pipe);
+                $newpass = trim(file_get_contents($tmpfile), "\n");
+                if (!preg_match('/^\{' . $method . '\}/', $newpass)) {
+                    return PASSWORD_CRYPT_ERROR;
+                }
+                if (!$rcmail->config->get('password_dovecotpw_with_method'))
+                    $newpass = trim(str_replace('{' . $method . '}', '', $newpass));
+                unlink($tmpfile);
+            }
+            $sql = str_replace('%D', $db->quote($newpass), $sql);
         }
-        $sql = str_replace('%D', $db->quote($newpass), $sql);
-    }
 
-    // hashed passwords
-    if (preg_match('/%[n|q]/', $sql)) {
+        // hashed passwords
+        if (preg_match('/%[n|q]/', $sql)) {
+           if (!extension_loaded('hash')) {
+                   raise_error(array(
+                       'code' => 600,
+                           'type' => 'php',
+                           'file' => __FILE__, 'line' => __LINE__,
+                       'message' => "Password plugin: 'hash' extension not loaded!"
+                   ), true, false);
 
-           if (!extension_loaded('hash')) {
-               raise_error(array(
-                   'code' => 600,
-                       'type' => 'php',
-                       'file' => __FILE__, 'line' => __LINE__,
-                       'message' => "Password plugin: 'hash' extension not loaded!"
-                   ), true, false);
+                   return PASSWORD_ERROR;
+           }
 
-               return PASSWORD_ERROR;
-           }
+               if (!($hash_algo = strtolower($rcmail->config->get('password_hash_algorithm'))))
+                $hash_algo = 'sha1';
 
-           if (!($hash_algo = strtolower($rcmail->config->get('password_hash_algorithm'))))
-            $hash_algo = 'sha1';
+           $hash_passwd = hash($hash_algo, $passwd);
+            $hash_curpass = hash($hash_algo, $curpass);
 
-           $hash_passwd = hash($hash_algo, $passwd);
-        $hash_curpass = hash($hash_algo, $curpass);
+               if ($rcmail->config->get('password_hash_base64')) {
+                $hash_passwd = base64_encode(pack('H*', $hash_passwd));
+                $hash_curpass = base64_encode(pack('H*', $hash_curpass));
+            }
 
-           if ($rcmail->config->get('password_hash_base64')) {
-            $hash_passwd = base64_encode(pack('H*', $hash_passwd));
-            $hash_curpass = base64_encode(pack('H*', $hash_curpass));
+           $sql = str_replace('%n', $db->quote($hash_passwd, 'text'), $sql);
+               $sql = str_replace('%q', $db->quote($hash_curpass, 'text'), $sql);
         }
 
-           $sql = str_replace('%n', $db->quote($hash_passwd, 'text'), $sql);
-           $sql = str_replace('%q', $db->quote($hash_curpass, 'text'), $sql);
-    }
-
-    // Handle clear text passwords securely (#1487034)
-    $sql_vars = array();
-    if (preg_match_all('/%[p|o]/', $sql, $m)) {
-        foreach ($m[0] as $var) {
-            if ($var == '%p') {
-                $sql = preg_replace('/%p/', '?', $sql, 1);
-                $sql_vars[] = (string) $passwd;
-            }
-            else { // %o
-                $sql = preg_replace('/%o/', '?', $sql, 1);
-                $sql_vars[] = (string) $curpass;
+        // Handle clear text passwords securely (#1487034)
+        $sql_vars = array();
+        if (preg_match_all('/%[p|o]/', $sql, $m)) {
+            foreach ($m[0] as $var) {
+                if ($var == '%p') {
+                    $sql = preg_replace('/%p/', '?', $sql, 1);
+                    $sql_vars[] = (string) $passwd;
+                }
+                else { // %o
+                    $sql = preg_replace('/%o/', '?', $sql, 1);
+                    $sql_vars[] = (string) $curpass;
+                }
             }
         }
-    }
 
-    $local_part  = $rcmail->user->get_username('local');
-    $domain_part = $rcmail->user->get_username('domain');
-    $username    = $_SESSION['username'];
-    $host        = $_SESSION['imap_host'];
+        $local_part  = $rcmail->user->get_username('local');
+        $domain_part = $rcmail->user->get_username('domain');
+        $username    = $_SESSION['username'];
+        $host        = $_SESSION['imap_host'];
 
-    // convert domains to/from punnycode
-    if ($rcmail->config->get('password_idn_ascii')) {
-        $domain_part = rcube_idn_to_ascii($domain_part);
-        $username    = rcube_idn_to_ascii($username);
-        $host        = rcube_idn_to_ascii($host);
-    }
-    else {
-        $domain_part = rcube_idn_to_utf8($domain_part);
-        $username    = rcube_idn_to_utf8($username);
-        $host        = rcube_idn_to_utf8($host);
-    }
+        // convert domains to/from punnycode
+        if ($rcmail->config->get('password_idn_ascii')) {
+            $domain_part = rcube_idn_to_ascii($domain_part);
+            $username    = rcube_idn_to_ascii($username);
+            $host        = rcube_idn_to_ascii($host);
+        }
+        else {
+            $domain_part = rcube_idn_to_utf8($domain_part);
+            $username    = rcube_idn_to_utf8($username);
+            $host        = rcube_idn_to_utf8($host);
+        }
 
-    // at least we should always have the local part
-    $sql = str_replace('%l', $db->quote($local_part, 'text'), $sql);
-    $sql = str_replace('%d', $db->quote($domain_part, 'text'), $sql);
-    $sql = str_replace('%u', $db->quote($username, 'text'), $sql);
-    $sql = str_replace('%h', $db->quote($host, 'text'), $sql);
-
-    $res = $db->query($sql, $sql_vars);
-
-    if (!$db->is_error()) {
-           if (strtolower(substr(trim($query),0,6))=='select') {
-           if ($result = $db->fetch_array($res))
-                       return PASSWORD_SUCCESS;
-           } else {
-            // This is the good case: 1 row updated
-           if ($db->affected_rows($res) == 1)
-                   return PASSWORD_SUCCESS;
-            // @TODO: Some queries don't affect any rows
-            // Should we assume a success if there was no error?
-           }
-    }
+        // at least we should always have the local part
+        $sql = str_replace('%l', $db->quote($local_part, 'text'), $sql);
+        $sql = str_replace('%d', $db->quote($domain_part, 'text'), $sql);
+        $sql = str_replace('%u', $db->quote($username, 'text'), $sql);
+        $sql = str_replace('%h', $db->quote($host, 'text'), $sql);
+
+        $res = $db->query($sql, $sql_vars);
+
+        if (!$db->is_error()) {
+               if (strtolower(substr(trim($query),0,6))=='select') {
+               if ($result = $db->fetch_array($res))
+                           return PASSWORD_SUCCESS;
+           } else {
+                // This is the good case: 1 row updated
+               if ($db->affected_rows($res) == 1)
+                       return PASSWORD_SUCCESS;
+                // @TODO: Some queries don't affect any rows
+                // Should we assume a success if there was no error?
+               }
+        }
 
-    return PASSWORD_ERROR;
+        return PASSWORD_ERROR;
+    }
 }
-
-?>
index 78ef4e7c3861bc496b907223ce59fd507fd67c96..f9eca963305eaa14b6a6270caab48ca3e675a6e0 100644 (file)
  * It only works with virtualmin on the same host where Roundcube runs
  * and requires shell access and gcc in order to compile the binary.
  *
- * @version 2.0
+ * @version 3.0
  * @author Martijn de Munnik
  */
 
-function password_save($currpass, $newpass)
+class rcube_virtualmin_password
 {
-    $rcmail = rcmail::get_instance();
+    function save($currpass, $newpass)
+    {
+        $rcmail = rcmail::get_instance();
 
-    $format   = $rcmail->config->get('password_virtualmin_format', 0);
-    $username = $_SESSION['username'];
+        $format   = $rcmail->config->get('password_virtualmin_format', 0);
+        $username = $_SESSION['username'];
 
-    switch ($format) {
+        switch ($format) {
         case 1: // username%domain
             $domain = substr(strrchr($username, "%"), 1);
             break;
@@ -46,30 +48,33 @@ function password_save($currpass, $newpass)
             $pieces = explode("_", $username);
             $domain = $pieces[0];
             break;
+               case 8: // domain taken from alias, username left as it was
+                       $email = $rcmail->user->data['alias'];
+                       $domain = substr(strrchr($email, "@"), 1);
+                       break;
         default: // username@domain
             $domain = substr(strrchr($username, "@"), 1);
-    }
-                                                                                                                                                                                                                                                                                                            
-    $username = escapeshellcmd($username);
-    $domain   = escapeshellcmd($domain);
-    $newpass  = escapeshellcmd($newpass);
-    $curdir   = realpath(dirname(__FILE__));
+        }
 
-    exec("$curdir/chgvirtualminpasswd modify-user --domain $domain --user $username --pass $newpass", $output, $returnvalue);
+        $username = escapeshellcmd($username);
+        $domain   = escapeshellcmd($domain);
+        $newpass  = escapeshellcmd($newpass);
+        $curdir   = INSTALL_PATH . 'plugins/password/helpers';
 
-    if ($returnvalue == 0) {
-        return PASSWORD_SUCCESS;
-    }
-    else {
-        raise_error(array(
-            'code' => 600,
-            'type' => 'php',
-            'file' => __FILE__, 'line' => __LINE__,
-            'message' => "Password plugin: Unable to execute $curdir/chgvirtualminpasswd"
-            ), true, false);
-    }
+        exec("$curdir/chgvirtualminpasswd modify-user --domain $domain --user $username --pass $newpass", $output, $returnvalue);
 
-    return PASSWORD_ERROR;
-}
+        if ($returnvalue == 0) {
+            return PASSWORD_SUCCESS;
+        }
+        else {
+            raise_error(array(
+                'code' => 600,
+                'type' => 'php',
+                'file' => __FILE__, 'line' => __LINE__,
+                'message' => "Password plugin: Unable to execute $curdir/chgvirtualminpasswd"
+                ), true, false);
+        }
 
-?>
+        return PASSWORD_ERROR;
+    }
+}
index b6fb3934371d3b0a07fe62b6043a6da9df3b82ff..510cf3338858e152b6b0785a5adfddebdad68573 100644 (file)
@@ -5,47 +5,49 @@
  *
  * Driver to change passwords via vpopmaild
  *
- * @version 1.1
+ * @version 2.0
  * @author Johannes Hessellund
  *
  */
 
-function password_save($curpass, $passwd)
+class rcube_vpopmaild_password
 {
-    $rcmail = rcmail::get_instance();
-//    include('Net/Socket.php');
-    $vpopmaild = new Net_Socket();
-
-    if (PEAR::isError($vpopmaild->connect($rcmail->config->get('password_vpopmaild_host'),
-           $rcmail->config->get('password_vpopmaild_port'), null))) {
-        return PASSWORD_CONNECT_ERROR;
-    }
-
-    $result = $vpopmaild->readLine();
-    if(!preg_match('/^\+OK/', $result)) {
-        $vpopmaild->disconnect();
-        return PASSWORD_CONNECT_ERROR;
-    }
-
-    $vpopmaild->writeLine("slogin ". $_SESSION['username'] . " " . $curpass);
-    $result = $vpopmaild->readLine();
-    if(!preg_match('/^\+OK/', $result) ) {
+    function save($curpass, $passwd)
+    {
+        $rcmail = rcmail::get_instance();
+    //    include('Net/Socket.php');
+        $vpopmaild = new Net_Socket();
+
+        if (PEAR::isError($vpopmaild->connect($rcmail->config->get('password_vpopmaild_host'),
+               $rcmail->config->get('password_vpopmaild_port'), null))) {
+            return PASSWORD_CONNECT_ERROR;
+        }
+
+        $result = $vpopmaild->readLine();
+        if(!preg_match('/^\+OK/', $result)) {
+            $vpopmaild->disconnect();
+            return PASSWORD_CONNECT_ERROR;
+        }
+
+        $vpopmaild->writeLine("slogin ". $_SESSION['username'] . " " . $curpass);
+        $result = $vpopmaild->readLine();
+
+        if(!preg_match('/^\+OK/', $result) ) {
+            $vpopmaild->writeLine("quit");
+            $vpopmaild->disconnect();
+            return PASSWORD_ERROR;
+        }
+
+        $vpopmaild->writeLine("mod_user ". $_SESSION['username']);
+        $vpopmaild->writeLine("clear_text_password ". $passwd);
+        $vpopmaild->writeLine(".");
+        $result = $vpopmaild->readLine();
         $vpopmaild->writeLine("quit");
         $vpopmaild->disconnect();
-        return PASSWORD_ERROR;
-    }
-
-    $vpopmaild->writeLine("mod_user ". $_SESSION['username']);
-    $vpopmaild->writeLine("clear_text_password ". $passwd);
-    $vpopmaild->writeLine(".");
-    $result = $vpopmaild->readLine();
-    $vpopmaild->writeLine("quit");
-    $vpopmaild->disconnect();
 
-    if (!preg_match('/^\+OK/', $result))
-        return PASSWORD_ERROR;
+        if (!preg_match('/^\+OK/', $result))
+            return PASSWORD_ERROR;
 
-    return PASSWORD_SUCCESS;
+        return PASSWORD_SUCCESS;
+    }
 }
-
-?>
index 94aba18741fd35bf25c14fb5d33b2d5f11b37e2e..3b5286a278889c317fa9f67597bf4a7421ab2621 100644 (file)
  * References:
  *   http://www.communigate.com/WebGuide/XMLAPI.html
  *
- * @version 1
+ * @version 2.0
  * @author Erik Meitner <erik wanderings.us>
  */
-function password_save($pass, $newpass)
+
+class rcube_ximss_password
 {
+    function save($pass, $newpass)
+    {
+        $rcmail = rcmail::get_instance();
+
+        $host = $rcmail->config->get('password_ximss_host');
+        $port = $rcmail->config->get('password_ximss_port');
+        $sock = stream_socket_client("tcp://$host:$port", $errno, $errstr, 30);
+
+        if ($sock === FALSE) {
+            return PASSWORD_CONNECT_ERROR;
+        }
 
-  $rcmail = rcmail::get_instance();
-  
-  $sock = stream_socket_client("tcp://".$rcmail->config->get('password_ximss_host').":".$rcmail->config->get('password_ximss_port'), $errno, $errstr, 30) ;
-  if( $sock === FALSE )
-  {
-    return PASSWORD_CONNECT_ERROR;
-  }
-  
-  // send all requests at once(pipelined)
-  fwrite( $sock, '<login id="A001" authData="'.$_SESSION['username'].'" password="'.$pass.'" />'."\0");
-  fwrite( $sock, '<passwordModify id="A002" oldPassword="'.$pass.'" newPassword="'.$newpass.'"  />'."\0");
-  fwrite( $sock, '<bye id="A003" />'."\0");
+        // send all requests at once(pipelined)
+        fwrite( $sock, '<login id="A001" authData="'.$_SESSION['username'].'" password="'.$pass.'" />'."\0");
+        fwrite( $sock, '<passwordModify id="A002" oldPassword="'.$pass.'" newPassword="'.$newpass.'"  />'."\0");
+        fwrite( $sock, '<bye id="A003" />'."\0");
 
   //example responses
   //  <session id="A001" urlID="4815-vN2Txjkggy7gjHRD10jw" userName="user@example.com"/>\0
@@ -40,42 +43,34 @@ function password_save($pass, $newpass)
   // or an error:
   //  <response id="A001" errorText="incorrect password or account name" errorNum="515"/>\0
 
-  $responseblob = '';
-  while (!feof($sock)) {
-    $responseblob .= fgets($sock, 1024);
-  }
+        $responseblob = '';
+        while (!feof($sock)) {
+            $responseblob .= fgets($sock, 1024);
+        }
 
-  fclose($sock);
-  
-  foreach( explode( "\0",$responseblob) as $response )
-  {
-    $resp = simplexml_load_string("<xml>".$response."</xml>");
+        fclose($sock);
 
-    if( $resp->response[0]['id'] == 'A001' )
-    {
-      if( isset( $resp->response[0]['errorNum'] ) )
-      {
-        return PASSWORD_CONNECT_ERROR;
-      }  
-    }
-    else if( $resp->response[0]['id'] == 'A002' )
-    {
-      if( isset( $resp->response[0]['errorNum'] ))
-      {
-        return PASSWORD_ERROR;
-      }  
-    }
-    else if( $resp->response[0]['id'] == 'A003' )
-    {
-      if( isset($resp->response[0]['errorNum'] ))
-      {
-        //There was a problem during logout(This is probably harmless)
-      }  
-    }
-  } //foreach
+        foreach( explode( "\0",$responseblob) as $response ) {
+            $resp = simplexml_load_string("<xml>".$response."</xml>");
 
-  return PASSWORD_SUCCESS;
-  
+            if( $resp->response[0]['id'] == 'A001' ) {
+                if( isset( $resp->response[0]['errorNum'] ) ) {
+                    return PASSWORD_CONNECT_ERROR;
+                }
+            }
+            else if( $resp->response[0]['id'] == 'A002' ) {
+                if( isset( $resp->response[0]['errorNum'] )) {
+                    return PASSWORD_ERROR;
+                }
+            }
+            else if( $resp->response[0]['id'] == 'A003' ) {
+                if( isset($resp->response[0]['errorNum'] )) {
+                    //There was a problem during logout(This is probably harmless)
+                }
+            }
+        } //foreach
+
+        return PASSWORD_SUCCESS;
+
+    }
 }
-  
-?>
\ No newline at end of file
index c7f4261587f8e381794c3c28cd7d101865453ba7..33a49ffe322ae0bae759d1fea4e40b6b534e9c6d 100644 (file)
@@ -4,7 +4,7 @@
  *
  * Driver for XMail password
  *
- * @version 1.0
+ * @version 2.0
  * @author Helio Cavichiolo Jr <helio@hcsistemas.com.br>
  *
  * Setup xmail_host, xmail_user, xmail_pass and xmail_port into
  *
  */
 
-function password_save($currpass, $newpass)
+class rcube_xmail_password
 {
-    $rcmail = rcmail::get_instance();
-    list($user,$domain) = explode('@', $_SESSION['username']);
+    function save($currpass, $newpass)
+    {
+        $rcmail = rcmail::get_instance();
+        list($user,$domain) = explode('@', $_SESSION['username']);
 
-    $xmail = new XMail;
+        $xmail = new XMail;
 
-    $xmail->hostname = $rcmail->config->get('xmail_host');
-    $xmail->username = $rcmail->config->get('xmail_user');
-    $xmail->password = $rcmail->config->get('xmail_pass');
-    $xmail->port = $rcmail->config->get('xmail_port');
+        $xmail->hostname = $rcmail->config->get('xmail_host');
+        $xmail->username = $rcmail->config->get('xmail_user');
+        $xmail->password = $rcmail->config->get('xmail_pass');
+        $xmail->port = $rcmail->config->get('xmail_port');
 
-    if (!$xmail->connect()) {
-        raise_error(array(
-            'code' => 600,
-            'type' => 'php',
-            'file' => __FILE__, 'line' => __LINE__,
-            'message' => "Password plugin: Unable to connect to mail server"
-        ), true, false);
-        return PASSWORD_CONNECT_ERROR;
-    } else if (!$xmail->send("userpasswd\t".$domain."\t".$user."\t".$newpass."\n")) {
-        $xmail->close();
-        raise_error(array(
-            'code' => 600,
-            'type' => 'php',
-            'file' => __FILE__, 'line' => __LINE__,
-            'message' => "Password plugin: Unable to change password"
-        ), true, false);
-        return PASSWORD_ERROR;
-    } else {
-        $xmail->close();
-        return PASSWORD_SUCCESS;
+        if (!$xmail->connect()) {
+            raise_error(array(
+                'code' => 600,
+                'type' => 'php',
+                'file' => __FILE__, 'line' => __LINE__,
+                'message' => "Password plugin: Unable to connect to mail server"
+            ), true, false);
+            return PASSWORD_CONNECT_ERROR;
+        }
+        else if (!$xmail->send("userpasswd\t".$domain."\t".$user."\t".$newpass."\n")) {
+            $xmail->close();
+            raise_error(array(
+                'code' => 600,
+                'type' => 'php',
+                'file' => __FILE__, 'line' => __LINE__,
+                'message' => "Password plugin: Unable to change password"
+            ), true, false);
+            return PASSWORD_ERROR;
+        }
+        else {
+            $xmail->close();
+            return PASSWORD_SUCCESS;
+        }
     }
 }
 
diff --git a/plugins/password/helpers/chgdbmailusers.c b/plugins/password/helpers/chgdbmailusers.c
new file mode 100644 (file)
index 0000000..28f79c1
--- /dev/null
@@ -0,0 +1,48 @@
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+// set the UID this script will run as (root user)
+#define UID 0
+#define CMD "/usr/sbin/dbmail-users"
+#define RCOK 0x100
+
+/* INSTALLING:
+  gcc -o chgdbmailusers chgdbmailusers.c
+  chown root.apache chgdbmailusers
+  strip chgdbmailusers
+  chmod 4550 chgdbmailusers
+*/
+
+main(int argc, char *argv[])
+{
+  int cnt,rc,cc;
+  char cmnd[255];
+
+  strcpy(cmnd, CMD);
+
+  if (argc > 1)
+  {
+    for (cnt = 1; cnt < argc; cnt++)
+    {
+      strcat(cmnd, " ");
+      strcat(cmnd, argv[cnt]);
+    }
+  }
+  else
+  {
+    fprintf(stderr, "__ %s:  failed %d  %d\n", argv[0], rc, cc);
+    return 255;
+  }
+
+  cc = setuid(UID);
+  rc = system(cmnd);
+
+  if ((rc != RCOK) || (cc != 0))
+  {
+    fprintf(stderr, "__ %s:  failed %d  %d\n", argv[0], rc, cc);
+    return 1;
+  }
+
+  return 0;
+}
diff --git a/plugins/password/helpers/chgsaslpasswd.c b/plugins/password/helpers/chgsaslpasswd.c
new file mode 100644 (file)
index 0000000..bcdcb2e
--- /dev/null
@@ -0,0 +1,29 @@
+#include <stdio.h>
+#include <unistd.h>
+
+// set the UID this script will run as (cyrus user)
+#define UID 96
+// set the path to saslpasswd or saslpasswd2
+#define CMD "/usr/sbin/saslpasswd2"
+
+/* INSTALLING:
+  gcc -o chgsaslpasswd chgsaslpasswd.c
+  chown cyrus.apache chgsaslpasswd
+  strip chgsaslpasswd
+  chmod 4550 chgsaslpasswd
+*/
+
+main(int argc, char *argv[])
+{
+  int rc,cc;
+
+  cc = setuid(UID);
+  rc = execvp(CMD, argv);
+  if ((rc != 0) || (cc != 0))
+  {
+    fprintf(stderr, "__ %s:  failed %d  %d\n", argv[0], rc, cc);
+    return 1;
+  }
+
+  return 0;
+}
diff --git a/plugins/password/helpers/chgvirtualminpasswd.c b/plugins/password/helpers/chgvirtualminpasswd.c
new file mode 100644 (file)
index 0000000..4e2299c
--- /dev/null
@@ -0,0 +1,28 @@
+#include <stdio.h>
+#include <unistd.h>
+
+// set the UID this script will run as (root user)
+#define UID 0
+#define CMD "/usr/sbin/virtualmin"
+
+/* INSTALLING:
+  gcc -o chgvirtualminpasswd chgvirtualminpasswd.c
+  chown root.apache chgvirtualminpasswd
+  strip chgvirtualminpasswd
+  chmod 4550 chgvirtualminpasswd
+*/
+
+main(int argc, char *argv[])
+{
+  int rc,cc;
+
+  cc = setuid(UID);
+  rc = execvp(CMD, argv);
+  if ((rc != 0) || (cc != 0))
+  {
+    fprintf(stderr, "__ %s:  failed %d  %d\n", argv[0], rc, cc);
+    return 1;
+  }
+
+  return 0;
+}
diff --git a/plugins/password/helpers/chpass-wrapper.py b/plugins/password/helpers/chpass-wrapper.py
new file mode 100644 (file)
index 0000000..61bba84
--- /dev/null
@@ -0,0 +1,32 @@
+#!/usr/bin/env python
+
+import sys
+import pwd
+import subprocess
+
+BLACKLIST = (
+    # add blacklisted users here
+    #'user1',
+)
+
+try:
+    username, password = sys.stdin.readline().split(':', 1)
+except ValueError, e:
+    sys.exit('Malformed input')
+
+try:
+    user = pwd.getpwnam(username)
+except KeyError, e:
+    sys.exit('No such user: %s' % username)
+
+if user.pw_uid < 1000:
+    sys.exit('Changing the password for user id < 1000 is forbidden')
+
+if username in BLACKLIST:
+    sys.exit('Changing password for user %s is forbidden (user blacklisted)' %
+             username)
+
+handle = subprocess.Popen('/usr/sbin/chpasswd', stdin = subprocess.PIPE)
+handle.communicate('%s:%s' % (username, password))
+
+sys.exit(handle.returncode)
diff --git a/plugins/password/helpers/passwd-expect b/plugins/password/helpers/passwd-expect
new file mode 100644 (file)
index 0000000..7db21ad
--- /dev/null
@@ -0,0 +1,267 @@
+#
+# This scripts changes a password on the local system or a remote host.
+# Connections to the remote (this can also be localhost) are made by ssh, rsh,
+# telnet or rlogin.
+
+# @author  Gaudenz Steinlin <gaudenz@soziologie.ch>
+
+# For sudo support alter sudoers (using visudo) so that it contains the
+# following information (replace 'apache' if your webserver runs under another
+# user):
+# -----
+# # Needed for Horde's passwd module
+# Runas_Alias     REGULARUSERS = ALL, !root
+# apache ALL=(REGULARUSERS) NOPASSWD:/usr/bin/passwd
+# -----
+
+# @stdin              The username, oldpassword, newpassword (in this order)
+#                     will be taken from stdin
+# @param -prompt      regexp for the shell prompt
+# @param -password    regexp password prompt
+# @param -oldpassword regexp for the old password
+# @param -newpassword regexp for the new password
+# @param -verify      regexp for verifying the password
+# @param -success     regexp for success changing the password
+# @param -login       regexp for the telnet prompt for the loginname
+# @param -host        hostname to be connected
+# @param -timeout     timeout for each step
+# @param -log         file for writing error messages
+# @param -output      file for loging the output
+# @param -telnet      use telnet
+# @param -ssh         use ssh (default)
+# @param -rlogin      use rlogin
+# @param -slogin      use slogin
+# @param -sudo        use sudo
+# @param -program     command for changing passwords
+#
+# @return             0 on success, 1 on failure
+#
+
+
+# default values
+set host               "localhost"
+set login              "ssh"
+set program            "passwd"
+set prompt_string      "(%|\\\$|>)"
+set fingerprint_string "The authenticity of host.* can't be established.*\nRSA key fingerprint is.*\nAre you sure you want to continue connecting.*"
+set password_string    "(P|p)assword.*"
+set oldpassword_string "((O|o)ld|login|\\\(current\\\) UNIX) (P|p)assword.*"
+set newpassword_string "(N|n)ew.* (P|p)assword.*"
+set badoldpassword_string "(Authentication token manipulation error).*"
+set badpassword_string "((passwd|BAD PASSWORD).*|(passwd|Bad:).*\r)"
+set verify_string      "((R|r)e-*enter.*(P|p)assword|Retype new( UNIX)? password|(V|v)erification|(V|v)erify|(A|a)gain).*"
+set success_string     "((P|p)assword.* changed|successfully)"
+set login_string       "(((L|l)ogin|(U|u)sername).*)"
+set timeout            20
+set log                "/tmp/passwd.out"
+set output             false
+set output_file        "/tmp/passwd.log"
+
+# read input from stdin
+fconfigure stdin -blocking 1
+
+gets stdin user
+gets stdin password(old)
+gets stdin password(new)
+
+# alternative: read input from command line
+#if {$argc < 3} {
+#    send_user "Too few arguments: Usage $argv0 username oldpass newpass"
+#    exit 1
+#}
+#set user [lindex $argv 0]
+#set password(old) [lindex $argv 1]
+#set password(new) [lindex $argv 2]
+
+# no output to the user
+log_user 0
+
+# read in other options
+for {set i 0} {$i<$argc} {incr i} {
+    set arg [lindex $argv $i]
+    switch -- $arg "-prompt" {
+        incr i
+        set prompt_string [lindex $argv $i]
+        continue
+    } "-password" {
+        incr i
+        set password_string [lindex $argv $i]
+        continue
+    } "-oldpassword" {
+        incr i
+        set oldpassword_string [lindex $argv $i]
+        continue
+    } "-newpassword" {
+        incr i
+        set newpassword_string [lindex $argv $i]
+        continue
+    } "-verify" {
+        incr i
+        set verify_string [lindex $argv $i]
+        continue
+    } "-success" {
+        incr i
+        set success_string [lindex $argv $i]
+        continue
+    } "-login" {
+        incr i
+        set login_string [lindex $argv $i]
+        continue
+    } "-host" {
+        incr i
+        set host [lindex $argv $i]
+        continue
+    } "-timeout" {
+        incr i
+        set timeout [lindex $argv $i]
+        continue
+    } "-log" {
+        incr i
+        set log [lindex $argv $i]
+        continue
+    } "-output" {
+        incr i
+        set output_file [lindex $argv $i]
+        set output true
+        continue
+    } "-telnet" {
+        set login "telnet"
+        continue
+    } "-ssh" {
+        set login "ssh"
+        continue
+    } "-ssh-exec" {
+        set login "ssh-exec"
+        continue
+    } "-rlogin" {
+        set login "rlogin"
+        continue
+    } "-slogin" {
+        set login "slogin"
+        continue
+    } "-sudo" {
+        set login "sudo"
+        continue
+    } "-program" {
+        incr i
+        set program [lindex $argv $i]
+        continue
+    }
+}
+
+# log session
+if {$output} {
+   log_file $output_file
+}
+
+set err [open $log "w" "0600"]
+
+# start remote session
+if {[string match $login "rlogin"]} {
+   set pid [spawn rlogin $host -l $user]
+} elseif {[string match $login "slogin"]} {
+   set pid [spawn slogin $host -l $user]
+} elseif {[string match $login "ssh"]} {
+   set pid [spawn ssh $host -l $user]
+} elseif {[string match $login "ssh-exec"]} {
+   set pid [spawn ssh $host -l $user $program]
+} elseif {[string match $login "sudo"]} {
+   set pid [spawn sudo -u $user $program]
+} elseif {[string match $login "telnet"]} {
+   set pid [spawn telnet $host]
+   expect -re $login_string {
+     sleep .5
+     send "$user\r"
+   }
+} else {
+   puts $err "Invalid login mode. Valid modes: rlogin, slogin, ssh, telnet, sudo\n"
+   close $err
+   exit 1
+}
+
+set old_password_notentered true
+
+if {![string match $login "sudo"]} {
+  # log in
+  expect {
+    -re $fingerprint_string {sleep .5
+                             send yes\r
+                             exp_continue}
+    -re $password_string    {sleep .5
+                             send $password(old)\r}
+    timeout                 {puts $err "Could not login to system (no password prompt)\n"
+                             close $err
+                             exit 1}
+  }
+
+  # start password changing program
+  expect {
+    -re $prompt_string      {sleep .5
+                             send $program\r}
+    # The following is for when passwd is the login shell or ssh-exec is used
+    -re $oldpassword_string {sleep .5
+                             send $password(old)\r
+                             set old_password_notentered false}
+    timeout                 {puts $err  "Could not login to system (bad old password?)\n"
+                             close $err
+                             exit 1}
+  }
+}
+
+# send old password
+if {$old_password_notentered} {
+  expect {
+    -re $oldpassword_string {sleep .5
+                             send $password(old)\r}
+    timeout                 {puts $err "Could not start passwd program (no old password prompt)\n"
+                             close $err
+                             exit 1}
+  }
+}
+
+# send new password
+expect {
+  -re $newpassword_string {sleep .5
+                           send $password(new)\r}
+  -re $badoldpassword_string {puts $err "Old password is incorrect\n"
+                           close $err
+                           exit 1}
+  timeout                 {puts "Could not change password (bad old password?)\n"
+                           close $err
+                           exit 1}
+}
+
+# send new password again
+expect {
+  -re $badpassword_string {puts $err "$expect_out(0,string)"
+                           close $err
+                           send \003
+                           sleep .5
+                           exit 1}
+  -re $verify_string      {sleep .5
+                           send $password(new)\r}
+  timeout                 {puts $err "New password not valid (too short, bad password, too similar, ...)\n"
+                           close $err
+                           send \003
+                           sleep .5
+                           exit 1}
+}
+
+# check response
+expect {
+  -re $success_string {sleep .5
+                       send exit\r}
+  -re $badpassword_string {puts $err "$expect_out(0,string)"
+                           close $err
+                           exit 1}
+  timeout             {puts $err "Could not change password.\n"
+                       close $err
+                       exit 1}
+}
+
+# exit succsessfully
+expect {
+  eof {close $err
+       exit 0}
+}
+close $err
index 62df01ba8bb52a6421d46bb412dfa532afd80010..4d0760da8698f86034101687a636d7e51355d1bf 100644 (file)
@@ -1,24 +1,31 @@
 <?php
 
-/* Azerbaijani translate for password plugin */
-/* Translated by Nadir Aliyev, nadir at ultel dot net */
+/*
+ +-----------------------------------------------------------------------+
+ | localization/az_AZ/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
 
 $labels = array();
-$labels['changepasswd']  = 'Şifrəni dəyiş';
-$labels['curpasswd']  = 'Hal-hazırki şifrə:';
-$labels['newpasswd']  = 'Yeni şifrə:';
-$labels['confpasswd']  = 'Yeni şifrə: (təkrar)';
+$labels['changepasswd'] = 'Şifrəni dəyiş';
+$labels['curpasswd'] = 'Hal-hazırki şifrə:';
+$labels['newpasswd'] = 'Yeni şifrə:';
+$labels['confpasswd'] = 'Yeni şifrə: (təkrar)';
+$labels['nopassword'] = 'Yeni şifrəni daxil edin.';
+$labels['nocurpassword'] = 'Hal-hazırda istifadə etdiyiniz şifrəni daxil edin.';
+$labels['passwordincorrect'] = 'Yalnış şifrə daxil etdiniz.';
+$labels['passwordinconsistency'] = 'Yeni daxil etdiyiniz şifrələr bir-birinə uyğun deyildir.';
+$labels['crypterror'] = 'Yeni şifrənin saxlanılması mümkün olmadı. Şifrələmə metodu tapılmadı.';
+$labels['connecterror'] = 'Yeni şifrənin saxlanılması mümkün olmadı. Qoşulma səhvi.';
+$labels['internalerror'] = 'Yeni şifrənin saxlanılması mümkün olmadı.';
+$labels['passwordshort'] = 'Yeni şifrə $length simvoldan uzun olmalıdır.';
+$labels['passwordweak'] = 'Şifrədə heç olmasa minimum bir rəqəm və simvol olmalıdır.';
+$labels['passwordforbidden'] = 'Şifrədə icazə verilməyən simvollar vardır.';
 
-$messages = array();
-$messages['nopassword'] = 'Yeni şifrəni daxil edin.';
-$messages['nocurpassword'] = 'Hal-hazırda istifadə etdiyiniz şifrəni daxil edin.';
-$messages['passwordincorrect'] = 'Yalnış şifrə daxil etdiniz.';
-$messages['passwordinconsistency'] = 'Yeni daxil etdiyiniz şifrələr bir-birinə uyğun deyildir.';
-$messages['crypterror'] = 'Yeni şifrənin saxlanılması mümkün olmadı. Şifrələmə metodu tapılmadı.';
-$messages['connecterror'] = 'Yeni şifrənin saxlanılması mümkün olmadı. Qoşulma səhvi.';
-$messages['internalerror'] = 'Yeni şifrənin saxlanılması mümkün olmadı.';
-$messages['passwordshort'] = 'Yeni şifrə $length simvoldan uzun olmalıdır.';
-$messages['passwordweak'] = 'Şifrədə heç olmasa minimum bir rəqəm və simvol olmalıdır.';
-$messages['passwordforbidden'] = 'Şifrədə icazə verilməyən simvollar vardır.';
-
-?>
index b4576a0dc31ff8740fbb2dc2f6de83ab7cf0cbec..884cb9ec6180cb3eb27d7a37fb16b677d7a89f68 100644 (file)
@@ -1,18 +1,28 @@
 <?php
 
-$labels = array();
-$labels['changepasswd']  = 'Смяна на парола';
-$labels['curpasswd']  = 'Текуща парола:';
-$labels['newpasswd']  = 'Нова парола:';
-$labels['confpasswd']  = 'Повторете:';
+/*
+ +-----------------------------------------------------------------------+
+ | localization/bg_BG/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
 
-$messages = array();
-$messages['nopassword'] = 'Моля въведете нова парола.';
-$messages['nocurpassword'] = 'Моля въведете текущата .';
-$messages['passwordincorrect'] = 'Невалидна текуща парола.';
-$messages['passwordinconsistency'] = 'Паролите не съвпадат, опитайте пак.';
-$messages['crypterror'] = 'Паролата не може да бъде сменена. Грешка в криптирането.';
-$messages['connecterror'] = 'Паролата не може да бъде сменена. Грешка в свързването.';
-$messages['internalerror'] = 'Паролата не може да бъде сменена.';
+$labels = array();
+$labels['changepasswd'] = 'Смяна на парола';
+$labels['curpasswd'] = 'Текуща парола:';
+$labels['newpasswd'] = 'Нова парола:';
+$labels['confpasswd'] = 'Повторете:';
+$labels['nopassword'] = 'Моля въведете нова парола.';
+$labels['nocurpassword'] = 'Моля въведете текущата .';
+$labels['passwordincorrect'] = 'Невалидна текуща парола.';
+$labels['passwordinconsistency'] = 'Паролите не съвпадат, опитайте пак.';
+$labels['crypterror'] = 'Паролата не може да бъде сменена. Грешка в криптирането.';
+$labels['connecterror'] = 'Паролата не може да бъде сменена. Грешка в свързването.';
+$labels['internalerror'] = 'Паролата не може да бъде сменена.';
 
-?>
diff --git a/plugins/password/localization/bs_BA.inc b/plugins/password/localization/bs_BA.inc
new file mode 100644 (file)
index 0000000..3ec0d55
--- /dev/null
@@ -0,0 +1,31 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/bs_BA/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kenan Dervišević <kenan3008@gmail.com>                      |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['changepasswd'] = 'Promijeni šifru';
+$labels['curpasswd'] = 'Trenutna šifra:';
+$labels['newpasswd'] = 'Nova šifra:';
+$labels['confpasswd'] = 'Potvrdite novu šifru:';
+$labels['nopassword'] = 'Molimo vas da upišete novu šifru.';
+$labels['nocurpassword'] = 'Molimo vas da upišete trenutnu šifru.';
+$labels['passwordincorrect'] = 'Trenutna šifra je netačna.';
+$labels['passwordinconsistency'] = 'Šifre se ne podudaraju, molimo vas da pokušate ponovo.';
+$labels['crypterror'] = 'Nije moguće sačuvati šifre. Nedostaje funkcija za enkripciju.';
+$labels['connecterror'] = 'Nije moguće sačuvati šifre. Greška u povezivanju.';
+$labels['internalerror'] = 'Nije moguće sačuvati novu šifru.';
+$labels['passwordshort'] = 'Šifra mora sadržavati barem $length znakova.';
+$labels['passwordweak'] = 'Šifra mora imati barem jedan broj i jedan interpunkcijski znak.';
+$labels['passwordforbidden'] = 'Šifra sadrži nedozvoljene znakove.';
+
index 18c10c80e9b7558bbd1780cd516afd6fd455e202..8832f3f6d498889268cf7564ead7f8084cbb59e5 100644 (file)
@@ -1,20 +1,31 @@
 <?php
 
-$labels = array();
-$labels['changepasswd']  = 'Canviar contrasenya';
-$labels['curpasswd']  = 'Contrasenya actual:';
-$labels['newpasswd']  = 'Nova contrasenya:';
-$labels['confpasswd']  = 'Confirmar nova contrasenya:';
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ca_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jordi Sanfeliu <jordi@fibranet.cat>                           |
+ +-----------------------------------------------------------------------+
+*/
 
-$messages = array();
-$messages['nopassword'] = 'Si us plau, introdueix la nova contrasenya.';
-$messages['nocurpassword'] = 'Si us plau, introdueix la contrasenya actual.';
-$messages['passwordincorrect'] = 'Contrasenya actual incorrecte.';
-$messages['passwordinconsistency'] = 'La contrasenya nova no coincideix!.';
-$messages['crypterror'] = 'No es pot desar la nova contrasenya. No existeix la funció d\'encriptació.';
-$messages['connecterror'] = 'No es pot desar la nova contrasenya. Error de connexió.';
-$messages['internalerror'] = 'No es pot desar la nova contrasenya.';
-$messages['passwordshort'] = 'La nova contrasenya ha de tenir com a mínim $length caràcters de llarg.';
-$messages['passwordweak'] = 'La nova contrasenya ha d\'incloure com a mínim un nombre i un caràcter de puntuació.';
+$labels = array();
+$labels['changepasswd'] = 'Canvia la contrasenya';
+$labels['curpasswd'] = 'Contrasenya actual:';
+$labels['newpasswd'] = 'Nova contrasenya:';
+$labels['confpasswd'] = 'Confirmeu la nova contrasenya:';
+$labels['nopassword'] = 'Si us plau, introduïu la nova contrasenya.';
+$labels['nocurpassword'] = 'Si us plau, introduïu la contrasenya actual.';
+$labels['passwordincorrect'] = 'Contrasenya actual incorrecta.';
+$labels['passwordinconsistency'] = 'La contrasenya nova no coincideix, torneu-ho a provar.';
+$labels['crypterror'] = 'No es pot desar la nova contrasenya. No existeix la funció d\'encriptació.';
+$labels['connecterror'] = 'No es pot desar la nova contrasenya. Error de connexió.';
+$labels['internalerror'] = 'No es pot desar la nova contrasenya.';
+$labels['passwordshort'] = 'La nova contrasenya ha de tenir com a mínim $length caràcters de llarg.';
+$labels['passwordweak'] = 'La nova contrasenya ha d\'incloure com a mínim un nombre i un caràcter de puntuació.';
+$labels['passwordforbidden'] = 'La contrasenya conté caràcters no permesos.';
 
-?>
index b4b7b29f9629dfe275150ecda857f165bb4f476a..2ed79237678d76299fe70339d0b6c2525cd527af 100644 (file)
@@ -1,30 +1,31 @@
 <?php
 
-/**
- * Czech translation for Roundcube password plugin
- *
- * @version 1.0 (2009-08-29)
- * @author Milan Kozak <hodza@hodza.net>
- * @author Tomáš Šafařík <safarik@server.cz>
- *
- */
+/*
+ +-----------------------------------------------------------------------+
+ | localization/cs_CZ/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
 
 $labels = array();
-$labels['changepasswd']  = 'Změna hesla';
-$labels['curpasswd']  = 'Aktuální heslo:';
-$labels['newpasswd']  = 'Nové heslo:';
-$labels['confpasswd']  = 'Nové heslo (pro kontrolu):';
+$labels['changepasswd'] = 'Změna hesla';
+$labels['curpasswd'] = 'Aktuální heslo:';
+$labels['newpasswd'] = 'Nové heslo:';
+$labels['confpasswd'] = 'Nové heslo (pro kontrolu):';
+$labels['nopassword'] = 'Prosím zadejte nové heslo.';
+$labels['nocurpassword'] = 'Prosím zadejte aktuální heslo.';
+$labels['passwordincorrect'] = 'Zadané aktuální heslo není správné.';
+$labels['passwordinconsistency'] = 'Zadaná hesla se neshodují. Prosím zkuste to znovu.';
+$labels['crypterror'] = 'Heslo se nepodařilo uložit. Chybí šifrovací funkce.';
+$labels['connecterror'] = 'Heslo se nepodařilo uložit. Problém s připojením.';
+$labels['internalerror'] = 'Heslo se nepodařilo uložit.';
+$labels['passwordshort'] = 'Heslo musí mít alespoň $length znaků.';
+$labels['passwordweak'] = 'Heslo musí obsahovat alespoň jedno číslo a jedno interpuknční znaménko.';
+$labels['passwordforbidden'] = 'Heslo obsahuje nepovolené znaky.';
 
-$messages = array();
-$messages['nopassword'] = 'Prosím zadejte nové heslo.';
-$messages['nocurpassword'] = 'Prosím zadejte aktuální heslo.';
-$messages['passwordincorrect'] = 'Zadané aktuální heslo není správné.';
-$messages['passwordinconsistency'] = 'Zadaná hesla se neshodují. Prosím zkuste to znovu.';
-$messages['crypterror'] = 'Heslo se nepodařilo uložit. Chybí šifrovací funkce.';
-$messages['connecterror'] = 'Heslo se nepodařilo uložit. Problém s připojením.';
-$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.';
-
-?>
diff --git a/plugins/password/localization/cy_GB.inc b/plugins/password/localization/cy_GB.inc
new file mode 100644 (file)
index 0000000..0cdad07
--- /dev/null
@@ -0,0 +1,31 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/cy_GB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Dafydd Tomos                                                  |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['changepasswd'] = 'Newid Cyfrinair';
+$labels['curpasswd'] = 'Cyfrinair Presennol:';
+$labels['newpasswd'] = 'Cyfrinair Newydd:';
+$labels['confpasswd'] = 'Cadarnhau Cyfrinair Newydd:';
+$labels['nopassword'] = 'Rhowch eich cyfrinair newydd.';
+$labels['nocurpassword'] = 'Rhowch eich cyfrinair presennol.';
+$labels['passwordincorrect'] = 'Roedd y cyfrinair presennol yn anghywir.';
+$labels['passwordinconsistency'] = 'Nid yw\'r cyfrineiriau yn cymharu, ceisiwch eto.';
+$labels['crypterror'] = 'Methwyd cadw\'r cyfrinair newydd. Ffwythiant amgodi ar goll.';
+$labels['connecterror'] = 'Methwyd cadw\'r cyfrinair newydd. Gwall cysylltiad.';
+$labels['internalerror'] = 'Methwyd cadw\'r cyfrinair newydd.';
+$labels['passwordshort'] = 'Rhaid i\'r cyfrinair fod o leia $length llythyren o hyd.';
+$labels['passwordweak'] = 'Rhaid i\'r cyfrinair gynnwys o leia un rhif a un cymeriad atalnodi.';
+$labels['passwordforbidden'] = 'Mae\'r cyfrinair yn cynnwys llythrennau wedi gwahardd.';
+
index 5d1d0c9cce5b880d8c9f243405f5fb8079f79de3..8c411265d43376276f1d5433dcd2cefb1638d2b2 100644 (file)
@@ -1,18 +1,31 @@
 <?php
 
-$labels = array();
-$labels['changepasswd']  = 'Skift adgangskode';
-$labels['curpasswd']  = 'Nuværende adgangskode:';
-$labels['newpasswd']  = 'Ny adgangskode:';
-$labels['confpasswd']  = 'Bekræft ny adgangskode:';
+/*
+ +-----------------------------------------------------------------------+
+ | localization/da_DK/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Johannes Hessellund <osos@openeyes.dk>                        |
+ +-----------------------------------------------------------------------+
+*/
 
-$messages = array();
-$messages['nopassword'] = 'Indtast venligst en ny adgangskode.';
-$messages['nocurpassword'] = 'Indtast venligst nyværende adgangskode.';
-$messages['passwordincorrect'] = 'Nyværende adgangskode er forkert.';
-$messages['passwordinconsistency'] = 'Adgangskoderne er ikke ens, prøv igen.';
-$messages['crypterror'] = 'Kunne ikke gemme den nye adgangskode. Krypteringsfunktion mangler.';
-$messages['connecterror'] = 'Kunne ikke gemme den nye adgangskode. Fejl ved forbindelsen.';
-$messages['internalerror'] = 'Kunne ikke gemme den nye adgangskode.';
+$labels = array();
+$labels['changepasswd'] = 'Skift adgangskode';
+$labels['curpasswd'] = 'Nuværende adgangskode:';
+$labels['newpasswd'] = 'Ny adgangskode:';
+$labels['confpasswd'] = 'Bekræft ny adgangskode:';
+$labels['nopassword'] = 'Indtast venligst en ny adgangskode.';
+$labels['nocurpassword'] = 'Indtast venligst nuværende adgangskode.';
+$labels['passwordincorrect'] = 'Nuværende adgangskode er forkert.';
+$labels['passwordinconsistency'] = 'Adgangskoderne er ikke ens, prøv igen.';
+$labels['crypterror'] = 'Kunne ikke gemme den nye adgangskode. Krypteringsfunktion mangler.';
+$labels['connecterror'] = 'Kunne ikke gemme den nye adgangskode. Fejl ved forbindelsen.';
+$labels['internalerror'] = 'Kunne ikke gemme den nye adgangskode.';
+$labels['passwordshort'] = 'Adgangskoden skal være mindst $length tegn lang.';
+$labels['passwordweak'] = 'Adgangskoden skal indeholde mindst et tal og et tegnsætningstegn (-.,)';
+$labels['passwordforbidden'] = 'Adgangskoden indeholder forbudte tegn.';
 
-?>
index a28990d670d3025c9b39caa249c8140f56c6107c..492a48df05b8e0a08c6fd5e6ae50a86098dd270f 100644 (file)
@@ -1,19 +1,31 @@
 <?php
 
-$labels = array();
-$labels['changepasswd']  = 'Passwort ändern';
-$labels['curpasswd']  = 'Aktuelles Passwort';
-$labels['newpasswd']  = 'Neues Passwort';
-$labels['confpasswd']  = 'Passwort Wiederholung';
-
-$messages = array();
-$messages['nopassword'] = "Bitte geben Sie ein neues Passwort ein";
-$messages['nocurpassword'] = "Bitte geben Sie Ihr aktuelles Passwort an";
-$messages['passwordincorrect'] = "Das aktuelle Passwort ist nicht korrekt";
-$messages['passwordinconsistency'] = "Das neue Passwort und dessen Wiederholung stimmen nicht überein";
-$messages['crypterror'] = "Neues Passwort nicht gespeichert: Verschlüsselungsfunktion fehlt";
-$messages['connecterror'] = "Neues Passwort nicht gespeichert: Verbindungsfehler";
-$messages['internalerror'] = "Neues Passwort nicht gespeichert";
+/*
+ +-----------------------------------------------------------------------+
+ | localization/de_CH/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
 
+$labels = array();
+$labels['changepasswd'] = 'Passwort ändern';
+$labels['curpasswd'] = 'Aktuelles Passwort';
+$labels['newpasswd'] = 'Neues Passwort';
+$labels['confpasswd'] = 'Passwort Wiederholung';
+$labels['nopassword'] = 'Bitte geben Sie ein neues Passwort ein';
+$labels['nocurpassword'] = 'Bitte geben Sie Ihr aktuelles Passwort an';
+$labels['passwordincorrect'] = 'Das aktuelle Passwort ist nicht korrekt';
+$labels['passwordinconsistency'] = 'Das neue Passwort und dessen Wiederholung stimmen nicht überein';
+$labels['crypterror'] = 'Neues Passwort nicht gespeichert: Verschlüsselungsfunktion fehlt';
+$labels['connecterror'] = 'Neues Passwort nicht gespeichert: Verbindungsfehler';
+$labels['internalerror'] = 'Neues Passwort nicht gespeichert';
+$labels['passwordshort'] = 'Passwort muss mindestens $length Zeichen lang sein.';
+$labels['passwordweak'] = 'Passwort muss mindestens eine Zahl und ein Sonderzeichen enthalten.';
+$labels['passwordforbidden'] = 'Passwort enthält unzulässige Zeichen.';
 
-?>
\ No newline at end of file
index a28990d670d3025c9b39caa249c8140f56c6107c..6a188e1750488f0abfd55d6fd5696956927288b2 100644 (file)
@@ -1,19 +1,31 @@
 <?php
 
-$labels = array();
-$labels['changepasswd']  = 'Passwort ändern';
-$labels['curpasswd']  = 'Aktuelles Passwort';
-$labels['newpasswd']  = 'Neues Passwort';
-$labels['confpasswd']  = 'Passwort Wiederholung';
-
-$messages = array();
-$messages['nopassword'] = "Bitte geben Sie ein neues Passwort ein";
-$messages['nocurpassword'] = "Bitte geben Sie Ihr aktuelles Passwort an";
-$messages['passwordincorrect'] = "Das aktuelle Passwort ist nicht korrekt";
-$messages['passwordinconsistency'] = "Das neue Passwort und dessen Wiederholung stimmen nicht überein";
-$messages['crypterror'] = "Neues Passwort nicht gespeichert: Verschlüsselungsfunktion fehlt";
-$messages['connecterror'] = "Neues Passwort nicht gespeichert: Verbindungsfehler";
-$messages['internalerror'] = "Neues Passwort nicht gespeichert";
+/*
+ +-----------------------------------------------------------------------+
+ | localization/de_DE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Moritz Höwer <moritzhoewermail@gmx.de>                       |
+ +-----------------------------------------------------------------------+
+*/
 
+$labels = array();
+$labels['changepasswd'] = 'Kennwort ändern';
+$labels['curpasswd'] = 'Aktuelles Kennwort:';
+$labels['newpasswd'] = 'Neues Kennwort:';
+$labels['confpasswd'] = 'Neues Kennwort bestätigen:';
+$labels['nopassword'] = 'Bitte geben Sie ein neues Kennwort ein.';
+$labels['nocurpassword'] = 'Bitte geben Sie ihr aktuelles Kennwort ein.';
+$labels['passwordincorrect'] = 'Das aktuelle Kennwort ist falsch.';
+$labels['passwordinconsistency'] = 'Das neue Passwort und dessen Wiederholung stimmen nicht überein';
+$labels['crypterror'] = 'Neues Passwort nicht gespeichert: Verschlüsselungsfunktion fehlt';
+$labels['connecterror'] = 'Neues Passwort nicht gespeichert: Verbindungsfehler';
+$labels['internalerror'] = 'Neues Passwort nicht gespeichert';
+$labels['passwordshort'] = 'Passwort muss mindestens $length Zeichen lang sein.';
+$labels['passwordweak'] = 'Passwort muss mindestens eine Zahl und ein Sonderzeichen enthalten.';
+$labels['passwordforbidden'] = 'Passwort enthält unzulässige Zeichen.';
 
-?>
\ No newline at end of file
diff --git a/plugins/password/localization/en_GB.inc b/plugins/password/localization/en_GB.inc
new file mode 100644 (file)
index 0000000..57f0d83
--- /dev/null
@@ -0,0 +1,31 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/en_GB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kevin Beynon                                                  |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['changepasswd'] = 'Change Password';
+$labels['curpasswd'] = 'Current Password:';
+$labels['newpasswd'] = 'New Password:';
+$labels['confpasswd'] = 'Confirm New Password:';
+$labels['nopassword'] = 'Please enter a new password.';
+$labels['nocurpassword'] = 'Please enter the current password.';
+$labels['passwordincorrect'] = 'Current password is incorrect.';
+$labels['passwordinconsistency'] = 'Passwords do not match.  Please try again.';
+$labels['crypterror'] = 'New password could not be saved.  The encryption function is missing.';
+$labels['connecterror'] = 'New password could not be saved.  There is a connection error.';
+$labels['internalerror'] = 'New password could not be saved.';
+$labels['passwordshort'] = 'Password must be at least $length characters long.';
+$labels['passwordweak'] = 'Password must include at least one number and one symbol.';
+$labels['passwordforbidden'] = 'Password contains forbidden characters.';
+
diff --git a/plugins/password/localization/eo.inc b/plugins/password/localization/eo.inc
new file mode 100644 (file)
index 0000000..4c218bb
--- /dev/null
@@ -0,0 +1,31 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/eo/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Michael Moroni <michael.moroni@mailoo.org>                    |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['changepasswd'] = 'Ŝanĝi pasvorton';
+$labels['curpasswd'] = 'Nuna pasvorto:';
+$labels['newpasswd'] = 'Nova pasvorto:';
+$labels['confpasswd'] = 'Konfirmi novan pasvorton:';
+$labels['nopassword'] = 'Bonvole tajpu novan pasvorton.';
+$labels['nocurpassword'] = 'Bonvole tajpu nunan pasvorton.';
+$labels['passwordincorrect'] = 'Nuna pasvorto nekorekta.';
+$labels['passwordinconsistency'] = 'Pasvortoj ne kongruas, bonvole provu denove.';
+$labels['crypterror'] = 'Pasvorto ne konserveblas: funkcio de ĉifrado mankas.';
+$labels['connecterror'] = 'Pasvorto ne konserveblas: eraro de konekto.';
+$labels['internalerror'] = 'Nova pasvorto ne konserveblas.';
+$labels['passwordshort'] = 'Pasvorto longu almenaŭ $length signojn.';
+$labels['passwordweak'] = 'La pasvorto enhavu almenaŭ unu ciferon kaj unu interpunktan signon.';
+$labels['passwordforbidden'] = 'La pasvorto enhavas malpermesitajn signojn.';
+
index 40c74e6732a2770406fd156454926d958cae0a64..d8c5ad33616516ad314f2eefea09962f4ff841d4 100644 (file)
@@ -1,21 +1,31 @@
 <?php
 
-$labels = array();
-$labels['changepasswd']  = 'Cambiar Contraseña';
-$labels['curpasswd']  = 'Contraseña Actual:';
-$labels['newpasswd']  = 'Contraseña Nueva:';
-$labels['confpasswd']  = 'Confirmar Contraseña:';
+/*
+ +-----------------------------------------------------------------------+
+ | localization/es_AR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
 
-$messages = array();
-$messages['nopassword'] = 'Por favor introduce una nueva contraseña.';
-$messages['nocurpassword'] = 'Por favor introduce la contraseña actual.';
-$messages['passwordincorrect'] = 'Contraseña actual incorrecta.';
-$messages['passwordinconsistency'] = 'Las contraseñas no coinciden, por favor inténtalo de nuevo.';
-$messages['crypterror'] = 'No se pudo guardar la contraseña nueva. Falta la función de cifrado.';
-$messages['connecterror'] = 'No se pudo guardar la contraseña nueva. Error de conexión';
-$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.';
+$labels = array();
+$labels['changepasswd'] = 'Cambiar Contraseña';
+$labels['curpasswd'] = 'Contraseña Actual:';
+$labels['newpasswd'] = 'Contraseña Nueva:';
+$labels['confpasswd'] = 'Confirmar Contraseña:';
+$labels['nopassword'] = 'Por favor introduce una nueva contraseña.';
+$labels['nocurpassword'] = 'Por favor introduce la contraseña actual.';
+$labels['passwordincorrect'] = 'Contraseña actual incorrecta.';
+$labels['passwordinconsistency'] = 'Las contraseñas no coinciden, por favor inténtalo de nuevo.';
+$labels['crypterror'] = 'No se pudo guardar la contraseña nueva. Falta la función de cifrado.';
+$labels['connecterror'] = 'No se pudo guardar la contraseña nueva. Error de conexión';
+$labels['internalerror'] = 'No se pudo guardar la contraseña nueva.';
+$labels['passwordshort'] = 'Tu contraseña debe tener una longitud mínima de $length.';
+$labels['passwordweak'] = 'Tu nueva contraseña debe incluir al menos un número y un signo de puntuación.';
+$labels['passwordforbidden'] = 'La contraseña contiene caracteres inválidos.';
 
-?>
index 32879b4aa254a138e2dcebd6a129cc711ee79fa5..f61e25e990b98ca670537065da51c5a945413081 100644 (file)
@@ -1,21 +1,31 @@
 <?php
 
-$labels = array();
-$labels['changepasswd']  = 'Cambiar contraseña';
-$labels['curpasswd']  = 'Contraseña actual:';
-$labels['newpasswd']  = 'Contraseña nueva:';
-$labels['confpasswd']  = 'Confirmar contraseña:';
+/*
+ +-----------------------------------------------------------------------+
+ | localization/es_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
 
-$messages = array();
-$messages['nopassword'] = 'Por favor introduzca una contraseña nueva.';
-$messages['nocurpassword'] = 'Por favor introduzca la contraseña actual.';
-$messages['passwordincorrect'] = 'La contraseña actual es incorrecta.';
-$messages['passwordinconsistency'] = 'Las contraseñas no coinciden. Por favor, inténtelo de nuevo.';
-$messages['crypterror'] = 'No se pudo guardar la contraseña nueva. Falta la función de cifrado.';
-$messages['connecterror'] = 'No se pudo guardar la contraseña nueva. Error de conexión';
-$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.';
+$labels = array();
+$labels['changepasswd'] = 'Cambiar contraseña';
+$labels['curpasswd'] = 'Contraseña actual:';
+$labels['newpasswd'] = 'Contraseña nueva:';
+$labels['confpasswd'] = 'Confirmar contraseña:';
+$labels['nopassword'] = 'Por favor introduzca una contraseña nueva.';
+$labels['nocurpassword'] = 'Por favor introduzca la contraseña actual.';
+$labels['passwordincorrect'] = 'La contraseña actual es incorrecta.';
+$labels['passwordinconsistency'] = 'Las contraseñas no coinciden. Por favor, inténtelo de nuevo.';
+$labels['crypterror'] = 'No se pudo guardar la contraseña nueva. Falta la función de cifrado.';
+$labels['connecterror'] = 'No se pudo guardar la contraseña nueva. Error de conexión';
+$labels['internalerror'] = 'No se pudo guardar la contraseña nueva.';
+$labels['passwordshort'] = 'La contraseña debe tener por lo menos $length caracteres.';
+$labels['passwordweak'] = 'La contraseña debe incluir al menos un número y un signo de puntuación.';
+$labels['passwordforbidden'] = 'La contraseña introducida contiene caracteres no permitidos.';
 
-?>
index 0f351d77bacdbb2746abbf634beaf04ad7cc93c1..2d71b94d65ce9ec1729edc5f3a7e58634a00c1e7 100644 (file)
@@ -1,17 +1,31 @@
 <?php
 
-$labels = array();
-$labels['changepasswd']  = 'Muuda parooli';
-$labels['curpasswd']  = 'Vana parool:';
-$labels['newpasswd']  = 'Uus parool:';
-$labels['confpasswd']  = 'Uus parool uuesti:';
+/*
+ +-----------------------------------------------------------------------+
+ | localization/et_EE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: yllar                                                         |
+ +-----------------------------------------------------------------------+
+*/
 
-$messages = array();
-$messages['nopassword'] = 'Palun sisesta uus parool.';
-$messages['nocurpassword'] = 'Palun sisesta vana parool.';
-$messages['passwordincorrect'] = 'Vana parool on vale.';
-$messages['passwordinconsistency'] = 'Paroolid ei kattu, palun proovi uuesti.';
-$messages['crypterror'] = 'Serveris ei ole parooli krüpteerimiseks vajalikku funktsiooni.';
-$messages['internalerror'] = 'Uue parooli andmebaasi salvestamine nurjus.';
+$labels = array();
+$labels['changepasswd'] = 'Muuda parooli';
+$labels['curpasswd'] = 'Vana parool:';
+$labels['newpasswd'] = 'Uus parool:';
+$labels['confpasswd'] = 'Uus parool uuesti:';
+$labels['nopassword'] = 'Palun sisesta uus parool.';
+$labels['nocurpassword'] = 'Palun sisesta vana parool.';
+$labels['passwordincorrect'] = 'Vana parool on vale.';
+$labels['passwordinconsistency'] = 'Paroolid ei kattu, palun proovi uuesti.';
+$labels['crypterror'] = 'Serveris ei ole parooli krüpteerimiseks vajalikku funktsiooni.';
+$labels['connecterror'] = 'Parooli salvestamine nurjus. Ühenduse tõrge.';
+$labels['internalerror'] = 'Uue parooli andmebaasi salvestamine nurjus.';
+$labels['passwordshort'] = 'Parool peab olema vähemalt $length märki pikk.';
+$labels['passwordweak'] = 'Parool peab sisaldama vähemalt üht numbrit ja märki.';
+$labels['passwordforbidden'] = 'Parool sisaldab keelatud märki.';
 
-?>
diff --git a/plugins/password/localization/fa_IR.inc b/plugins/password/localization/fa_IR.inc
new file mode 100644 (file)
index 0000000..185ac83
--- /dev/null
@@ -0,0 +1,31 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fa_IR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Hamid <abbaszadeh.h@gmail.com>                                |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['changepasswd'] = 'تغییر رمزعبور';
+$labels['curpasswd'] = 'رمزعبور فعلی';
+$labels['newpasswd'] = 'رمزعبور جدید';
+$labels['confpasswd'] = 'تایید رمزعبور جدید';
+$labels['nopassword'] = 'رمزعبور جدید را وارد نمایید';
+$labels['nocurpassword'] = 'رمزعبور فعلی را وارد نمایید';
+$labels['passwordincorrect'] = 'رمزعبور فعلی اشتباه است';
+$labels['passwordinconsistency'] = 'رمزعبورها با هم مطابقت ندارند، دوباره سعی نمایید.';
+$labels['crypterror'] = 'رمزعبور جدید نمی‌توانست ذخیره شود. نبودن تابع رمزگذاری.';
+$labels['connecterror'] = 'رمزعبور جدید نمی‌توانست ذخیره شود. خطای ارتباط.';
+$labels['internalerror'] = 'رمزعبور جدید ذخیره نشد';
+$labels['passwordshort'] = 'رمزعبور باید حداقل $length کاراکتر طول داشته باشد.';
+$labels['passwordweak'] = 'رمزعبور باید شامل حداقل یک عدد و یک کاراکتر نشانه‌ای باشد.';
+$labels['passwordforbidden'] = 'رمزعبور شما کاراکترهای غیرمجاز است.';
+
index a2108a524f98755385078c7754c44768f49c7ba8..5e46080176d8ce897f0c404c2c16c3ad37156073 100644 (file)
@@ -1,22 +1,31 @@
 <?php
 
-// Translation by Tapio Salonsaari <take@nerd.fi>
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fi_FI/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jiri Grönroos                                                |
+ +-----------------------------------------------------------------------+
+*/
 
 $labels = array();
-$labels['changepasswd']  = 'Vaihda salasana';
-$labels['curpasswd']  = 'Nykyinen salasana:';
-$labels['newpasswd']  = 'Uusi salasana:';
-$labels['confpasswd']  = 'Uusi salasana uudestaan:';
+$labels['changepasswd'] = 'Vaihda salasana';
+$labels['curpasswd'] = 'Nykyinen salasana:';
+$labels['newpasswd'] = 'Uusi salasana:';
+$labels['confpasswd'] = 'Uusi salasana uudestaan:';
+$labels['nopassword'] = 'Syötä uusi salasana.';
+$labels['nocurpassword'] = 'Syötä nykyinen salasana.';
+$labels['passwordincorrect'] = 'Syöttämäsi nykyinen salasana on väärin.';
+$labels['passwordinconsistency'] = 'Syöttämäsi salasanat eivät täsmää, yritä uudelleen.';
+$labels['crypterror'] = 'Salasanaa ei voitu vaihtaa. Kryptausfunktio puuttuu.';
+$labels['connecterror'] = 'Salasanaa ei voitu vaihtaa. Yhteysongelma.';
+$labels['internalerror'] = 'Salasanaa ei voitu vaihtaa.';
+$labels['passwordshort'] = 'Salasanan täytyy olla vähintään $length merkkiä pitkä.';
+$labels['passwordweak'] = 'Salasanan täytyy sisältää vähintään yksi numero ja yksi välimerkki.';
+$labels['passwordforbidden'] = 'Salasana sisältää kiellettyjä merkkejä.';
 
-$messages = array();
-$messages['nopassword'] = 'Syötä uusi salasana.';
-$messages['nocurpassword'] = 'Syötä nykyinen salasana.';
-$messages['passwordincorrect'] = 'Syöttämäsi nykyinen salasana on väärin.';
-$messages['passwordinconsistency'] = 'Syöttämäsi salasanat eivät täsmää, yritä uudelleen.';
-$messages['crypterror'] = 'Salasanaa ei voitu vaihtaa. Kryptausfunktio puuttuu.';
-$messages['connecterror'] = 'Salasanaa ei voitu vaihtaa. Yhteysongelma.';
-$messages['internalerror'] = 'Salasanaa ei voitu vaihtaa.';
-$messages['passwordshort'] = 'Salasanan täytyy olla vähintään $length merkkiä pitkä.';
-$messages['passwordweak'] = 'Salasanan täytyy sisältää vähintään yksi numero ja yksi välimerkki.';
-
-?>
index 8ba37b148332ee22506bbd45c01d6ea04497a174..f90c32b3c10216bc057d9dd670681487d64ba537 100644 (file)
@@ -1,18 +1,31 @@
 <?php
 
-$labels = array();
-$labels['changepasswd']  = 'Changer le mot de passe';
-$labels['curpasswd']  = 'Mot de passe actuel:';
-$labels['newpasswd']  = 'Nouveau mot de passe:';
-$labels['confpasswd']  = 'Confirmez le nouveau mot de passe:';
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fr_FR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Nicolas Delvaux                                               |
+ +-----------------------------------------------------------------------+
+*/
 
-$messages = array();
-$messages['nopassword'] = 'Veuillez saisir le nouveau mot de passe.';
-$messages['nocurpassword'] = 'Veuillez saisir le mot de passe actuel.';
-$messages['passwordincorrect'] = 'Mot de passe actuel incorrect.';
-$messages['passwordinconsistency'] = 'Les nouveaux mots de passe ne correspondent pas, veuillez réessayer.';
-$messages['crypterror'] = 'Impossible d\'enregistrer le nouveau mot de passe. Fonction de cryptage manquante.';
-$messages['connecterror'] = 'Impossible d\'enregistrer le nouveau mot de passe. Erreur de connexion au serveur.';
-$messages['internalerror'] = 'Impossible d\'enregistrer le nouveau mot de passe.';
+$labels = array();
+$labels['changepasswd'] = 'Changer le mot de passe';
+$labels['curpasswd'] = 'Mot de passe actuel:';
+$labels['newpasswd'] = 'Nouveau mot de passe:';
+$labels['confpasswd'] = 'Confirmez le nouveau mot de passe:';
+$labels['nopassword'] = 'Veuillez saisir le nouveau mot de passe.';
+$labels['nocurpassword'] = 'Veuillez saisir le mot de passe actuel.';
+$labels['passwordincorrect'] = 'Mot de passe actuel incorrect.';
+$labels['passwordinconsistency'] = 'Les nouveaux mots de passe ne correspondent pas, veuillez réessayer.';
+$labels['crypterror'] = 'Impossible d\'enregistrer le nouveau mot de passe. Fonction de cryptage manquante.';
+$labels['connecterror'] = 'Impossible d\'enregistrer le nouveau mot de passe. Erreur de connexion au serveur.';
+$labels['internalerror'] = 'Impossible d\'enregistrer le nouveau mot de passe.';
+$labels['passwordshort'] = 'Le mot de passe doit être composé d\'au moins $length caractères.';
+$labels['passwordweak'] = 'Le mot de passe doit contenir au moins un chiffre et un signe de ponctuation.';
+$labels['passwordforbidden'] = 'Le mot de passe contient des caractères interdits.';
 
-?>
index b7dc7bbeeb389ceaa2a4ff5f5cbefb207c52c828..90c940e5917bf39ba680e84858507a82b1a1f1c9 100644 (file)
@@ -1,21 +1,31 @@
 <?php
 
-$labels = array();
-$labels['changepasswd']  = 'Cambiar contrasinal';
-$labels['curpasswd']  = 'Contrasinal actual:';
-$labels['newpasswd']  = 'Contrasinal novo:';
-$labels['confpasswd']  = 'Confirmar contrasinal:';
+/*
+ +-----------------------------------------------------------------------+
+ | localization/gl_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
 
-$messages = array();
-$messages['nopassword'] = 'Por favor, introduza un contrasinal novo.';
-$messages['nocurpassword'] = 'Por favor, introduza o contrasinal actual.';
-$messages['passwordincorrect'] = 'O contrasinal actual é incorrecto.';
-$messages['passwordinconsistency'] = 'Os contrasinals non coinciden. Por favor, inténteo de novo.';
-$messages['crypterror'] = 'Non foi posible gardar o contrasinal novo. Falta a función de cifrado.';
-$messages['connecterror'] = 'Non foi posible gardar o contrasinal novo. Erro de conexión';
-$messages['internalerror'] = 'Non foi posible 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.';
+$labels = array();
+$labels['changepasswd'] = 'Cambiar contrasinal';
+$labels['curpasswd'] = 'Contrasinal actual:';
+$labels['newpasswd'] = 'Contrasinal novo:';
+$labels['confpasswd'] = 'Confirmar contrasinal:';
+$labels['nopassword'] = 'Por favor, introduza un contrasinal novo.';
+$labels['nocurpassword'] = 'Por favor, introduza o contrasinal actual.';
+$labels['passwordincorrect'] = 'O contrasinal actual é incorrecto.';
+$labels['passwordinconsistency'] = 'Os contrasinals non coinciden. Por favor, inténteo de novo.';
+$labels['crypterror'] = 'Non foi posible gardar o contrasinal novo. Falta a función de cifrado.';
+$labels['connecterror'] = 'Non foi posible gardar o contrasinal novo. Erro de conexión';
+$labels['internalerror'] = 'Non foi posible gardar o contrasinal novo.';
+$labels['passwordshort'] = 'O contrasinal debe ter polo menos $length caracteres.';
+$labels['passwordweak'] = 'O contrasinal debe incluir polo menos un número e un signo de puntuación.';
+$labels['passwordforbidden'] = 'O contrasinal contén caracteres non permitidos.';
 
-?>
diff --git a/plugins/password/localization/he_IL.inc b/plugins/password/localization/he_IL.inc
new file mode 100644 (file)
index 0000000..143e2c5
--- /dev/null
@@ -0,0 +1,31 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/he_IL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Moshe Leibovitch <moish@mln.co.il>                            |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['changepasswd'] = 'שינוי סיסמה';
+$labels['curpasswd'] = 'סיסמה נוכחית:';
+$labels['newpasswd'] = 'סיסמה חדשה:';
+$labels['confpasswd'] = 'אימות הסיסמה החדשה:';
+$labels['nopassword'] = 'נא להקליד סיסמה חדשה';
+$labels['nocurpassword'] = 'נא להקיש הסיסמה הנוכחית';
+$labels['passwordincorrect'] = 'הוקשה סיסמה נוכחית שגויה';
+$labels['passwordinconsistency'] = 'הסיסמאות שהוקשו אינן תואמות, נא לנסות שנית.';
+$labels['crypterror'] = 'לא נשמרה הסיסמה החדשה. חסר מנגנון הצפנה.';
+$labels['connecterror'] = 'לא נשמרה הסיסמה החדשה. שגיאת תקשורת.';
+$labels['internalerror'] = 'לא ניתן לשמור על הסיסמה החדשה.';
+$labels['passwordshort'] = 'הסיסמה צריכה להיות לפחות בעלת $length תווים';
+$labels['passwordweak'] = 'הסיסמה חייבת לכלול לפחות סיפרה אחת ולפחות סימן פיסוק אחד.';
+$labels['passwordforbidden'] = 'הסיסמה מכילה תווים אסורים.';
+
index 0e35129c0920407485bcfb2afdfe0cdb2fddc181..ece203d3c139238c0c48c4959c98ccc98f070b8c 100644 (file)
@@ -1,21 +1,31 @@
 <?php
 
-$labels = array();
-$labels['changepasswd']  = 'Promijeni zaporku';
-$labels['curpasswd']  = 'Važeća zaporka:';
-$labels['newpasswd']  = 'Nova zaporka:';
-$labels['confpasswd']  = 'Potvrda nove zaporke:';
+/*
+ +-----------------------------------------------------------------------+
+ | localization/hr_HR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
 
-$messages = array();
-$messages['nopassword'] = 'Molimo unesite novu zaporku.';
-$messages['nocurpassword'] = 'Molimo unesite trenutnu zaporku.';
-$messages['passwordincorrect'] = 'Trenutna zaporka je nevažeća.';
-$messages['passwordinconsistency'] = 'Zaporke su različite, pokušajte ponovo.';
-$messages['crypterror'] = 'Nemoguće promijeniti zaporku. Nedostaje enkripcijska funkcija.';
-$messages['connecterror'] = 'Nemoguće promijeniti zaporku. Greška prilikom spajanja.';
-$messages['internalerror'] = 'Nemoguće promijeniti zaporku.';
-$messages['passwordshort'] = 'Zaporka mora sadržavati barem $length znakova.';
-$messages['passwordweak'] = 'Zaporka mora sadržavati barem jedanu znamenku i jedan interpunkcijski znak.';
-$messages['passwordforbidden'] = 'Zaporka sadrži nedozvoljene znakove.';
+$labels = array();
+$labels['changepasswd'] = 'Promijeni zaporku';
+$labels['curpasswd'] = 'Važeća zaporka:';
+$labels['newpasswd'] = 'Nova zaporka:';
+$labels['confpasswd'] = 'Potvrda nove zaporke:';
+$labels['nopassword'] = 'Molimo unesite novu zaporku.';
+$labels['nocurpassword'] = 'Molimo unesite trenutnu zaporku.';
+$labels['passwordincorrect'] = 'Trenutna zaporka je nevažeća.';
+$labels['passwordinconsistency'] = 'Zaporke su različite, pokušajte ponovo.';
+$labels['crypterror'] = 'Nemoguće promijeniti zaporku. Nedostaje enkripcijska funkcija.';
+$labels['connecterror'] = 'Nemoguće promijeniti zaporku. Greška prilikom spajanja.';
+$labels['internalerror'] = 'Nemoguće promijeniti zaporku.';
+$labels['passwordshort'] = 'Zaporka mora sadržavati barem $length znakova.';
+$labels['passwordweak'] = 'Zaporka mora sadržavati barem jedanu znamenku i jedan interpunkcijski znak.';
+$labels['passwordforbidden'] = 'Zaporka sadrži nedozvoljene znakove.';
 
-?>
index c8c3015a15a8e2b3ecc8cfd2e1c35729f0f21ced..3fb9a93d666d443ffcd0d25306ba104c3b93694e 100644 (file)
@@ -1,17 +1,31 @@
 <?php
 
-$labels = array();
-$labels['changepasswd']  = 'Jelszóváltás';
-$labels['curpasswd']  = 'Jelenlegi jelszó:';
-$labels['newpasswd']  = 'Új jelszó:';
-$labels['confpasswd']  = 'Új jelszó mégegyszer:';
+/*
+ +-----------------------------------------------------------------------+
+ | localization/hu_HU/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: bela                                                          |
+ +-----------------------------------------------------------------------+
+*/
 
-$messages = array();
-$messages['nopassword'] = 'Kérjük adja meg az új jelszót.';
-$messages['nocurpassword'] = 'Kérjük adja meg a jelenlegi jelszót.';
-$messages['passwordincorrect'] = 'Érvénytelen a jelenlegi jelszó.';
-$messages['passwordinconsistency'] = 'A két új jelszó nem egyezik.';
-$messages['crypterror'] = 'Hiba történt a kérés feldolgozása során.';
-$messages['internalerror'] = 'Hiba történt a kérés feldolgozása során.';
+$labels = array();
+$labels['changepasswd'] = 'Jelszó módosítás';
+$labels['curpasswd'] = 'Jelenlegi jelszó:';
+$labels['newpasswd'] = 'Új jelszó:';
+$labels['confpasswd'] = 'Új jelszó mégegyszer:';
+$labels['nopassword'] = 'Kérjük adja meg az új jelszót.';
+$labels['nocurpassword'] = 'Kérjük adja meg a jelenlegi jelszót.';
+$labels['passwordincorrect'] = 'Érvénytelen a jelenlegi jelszó.';
+$labels['passwordinconsistency'] = 'A beírt jelszavak nem azonosak. Próbálja újra.';
+$labels['crypterror'] = 'Hiba történt a kérés feldolgozása során.';
+$labels['connecterror'] = 'Az új jelszó mentése nem sikerült. Hiba a kapcsolatban';
+$labels['internalerror'] = 'Hiba történt a kérés feldolgozása során.';
+$labels['passwordshort'] = 'A jelszónak legalább $length karakter hosszunak kell lennie.';
+$labels['passwordweak'] = 'A jelszónak mindenképpen kell tartalmaznia egy számot és egy írásjelet.';
+$labels['passwordforbidden'] = 'A jelszó tiltott karaktert is tartalmaz.';
 
-?>
diff --git a/plugins/password/localization/hy_AM.inc b/plugins/password/localization/hy_AM.inc
new file mode 100644 (file)
index 0000000..7d6ea3d
--- /dev/null
@@ -0,0 +1,31 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/hy_AM/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Vahan Yerkanian <vahan@yerkanian.com>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['changepasswd'] = 'Գաղտնաբառի փոփոխում';
+$labels['curpasswd'] = 'Առկա գաղտնաբառը`';
+$labels['newpasswd'] = 'Նոր գաղտնաբառը`';
+$labels['confpasswd'] = 'Կրկնեք նոր գաղտնաբառը`';
+$labels['nopassword'] = 'Ներմուցեք նոր գաղտնաբառը։';
+$labels['nocurpassword'] = 'Ներմուցեք առկա գաղտնաբառը։';
+$labels['passwordincorrect'] = 'Առկա գաղտնաբառը սխալ է։';
+$labels['passwordinconsistency'] = 'Նոր գաղտնաբառերը չեն համընկնում, կրկին փորձեք։';
+$labels['crypterror'] = 'Նոր գաղտնաբառի պահպանումը ձախողվեց։ Բացակայում է գաղտնագրման ֆունկցիան։';
+$labels['connecterror'] = 'Նոր գաղտնաբառի պահպանումը ձախողվեց։ Կապի սխալ։';
+$labels['internalerror'] = 'Նոր գաղտնաբառի պահպանումը ձախողվեց։';
+$labels['passwordshort'] = 'Գաղտնաբառերը պետք է լինեն առնվազն $length նիշ երկարությամբ։';
+$labels['passwordweak'] = 'Գաղտնաբառերը պետք է պարունակեն առնվազն մեկ թիվ և մեկ կետադրական նիշ։';
+$labels['passwordforbidden'] = 'Գաղտնաբառը պարունակում է արգելված նիշ։';
+
index 13b4885d7efd86247243af754695e13f4f041765..5b2f98ad3b44061eb6cb1a6d563c2f23febbd509 100644 (file)
@@ -1,21 +1,31 @@
 <?php
 
-$labels = array();
-$labels['changepasswd']  = 'Cambia la Password';
-$labels['curpasswd']  = 'Password corrente:';
-$labels['newpasswd']  = 'Nuova Password:';
-$labels['confpasswd']  = 'Conferma la Nuova Password:';
+/*
+ +-----------------------------------------------------------------------+
+ | localization/it_IT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Andrea Bernini <andrea.bernini@gmail.com>                     |
+ +-----------------------------------------------------------------------+
+*/
 
-$messages = array();
-$messages['nopassword'] = 'Per favore inserisci la nuova password.';
-$messages['nocurpassword'] = 'Per favore inserisci la password corrente.';
-$messages['passwordincorrect'] = 'Password corrente sbagliata.';
-$messages['passwordinconsistency'] = 'Le password non coincidono, inserirle di nuovo.';
-$messages['crypterror'] = 'Non posso salvare la password, funzione di cifratura assente.';
-$messages['connecterror'] = 'Non posso salvare la password, errore di connessione.';
-$messages['internalerror'] = 'Non posso salvare la password.';
-$messages['passwordshort'] = 'La nuova password deve essere lunga almeno $length caratteri.';
-$messages['passwordweak'] = 'La nuova password deve contenere almeno una cifra e un segno di punteggiatura.';
-$messages['passwordforbidden'] = 'La password scelta contiene dei caratteri non consentiti.';
+$labels = array();
+$labels['changepasswd'] = 'Modifica la Password';
+$labels['curpasswd'] = 'Password corrente:';
+$labels['newpasswd'] = 'Nuova password:';
+$labels['confpasswd'] = 'Conferma la nuova Password:';
+$labels['nopassword'] = 'Per favore inserire la nuova password.';
+$labels['nocurpassword'] = 'Per favore inserire la password corrente.';
+$labels['passwordincorrect'] = 'La password corrente non è corretta.';
+$labels['passwordinconsistency'] = 'Le password non coincidono, per favore reinserire.';
+$labels['crypterror'] = 'Impossibile salvare la nuova password. Funzione di crittografia mancante.';
+$labels['connecterror'] = 'Imposibile salvare la nuova password. Errore di connessione.';
+$labels['internalerror'] = 'Impossibile salvare la nuova password.';
+$labels['passwordshort'] = 'La password deve essere lunga almeno $length caratteri.';
+$labels['passwordweak'] = 'La password deve includere almeno una cifra decimale e un simbolo di punteggiatura.';
+$labels['passwordforbidden'] = 'La password contiene caratteri proibiti.';
 
-?>
index 47cac0430cbe05ad3868cc68439500f29a181e2c..32377f01fdc97c04526f3ac0eb674885a86b0c0c 100644 (file)
@@ -1,23 +1,31 @@
 <?php
 
-//  EN-Revision: 3891
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ja_JP/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Takahiro Kambe                                                |
+ +-----------------------------------------------------------------------+
+*/
 
 $labels = array();
-$labels['changepasswd']  = 'パスワードの変更';
-$labels['curpasswd']  = '現在のパスワード:';
-$labels['newpasswd']  = '新しいパスワード:';
-$labels['confpasswd']  = '新しいパスワード (確認):';
+$labels['changepasswd'] = 'パスワードの変更';
+$labels['curpasswd'] = '現在のパスワード:';
+$labels['newpasswd'] = '新しいパスワード:';
+$labels['confpasswd'] = '新しいパスワード (確認):';
+$labels['nopassword'] = '新しいパスワードを入力してください。';
+$labels['nocurpassword'] = '現在のパスワードを入力してください。';
+$labels['passwordincorrect'] = '現在のパスワードが間違っています。';
+$labels['passwordinconsistency'] = 'パスワードが一致しません。もう一度やり直してください。';
+$labels['crypterror'] = 'パスワードを保存できませんでした。暗号化関数がみあたりません。';
+$labels['connecterror'] = '新しいパスワードを保存できませんでした。接続エラーです。';
+$labels['internalerror'] = '新しいパスワードを保存できませんでした。';
+$labels['passwordshort'] = 'パスワードは少なくとも $length 文字の長さが必要です。';
+$labels['passwordweak'] = 'パスワードは少なくとも数字の 1 文字と記号の 1 文字を含んでいなければなりません。';
+$labels['passwordforbidden'] = 'パスワードに禁止された文字が含まれています。';
 
-$messages = array();
-$messages['nopassword'] = '新しいパスワードを入力してください。';
-$messages['nocurpassword'] = '現在のパスワードを入力してください。';
-$messages['passwordincorrect'] = '現在のパスワードが間違っています。';
-$messages['passwordinconsistency'] = 'パスワードが一致しません。もう一度やり直してください。';
-$messages['crypterror'] = 'パスワードを保存できませんでした。暗号化関数がみあたりません。';
-$messages['connecterror'] = '新しいパスワードを保存できませんでした。接続エラーです。';
-$messages['internalerror'] = '新しいパスワードを保存できませんでした。';
-$messages['passwordshort'] = 'パスワードは少なくとも $length 文字の長さが必要です。';
-$messages['passwordweak'] = 'パスワードは少なくとも数字を 1 文字と記号が 1 文字含んでなければなりません。';
-$messages['passwordforbidden'] = 'パスワードに禁止された文字が含まれています。';
-
-?>
diff --git a/plugins/password/localization/ko_KR.inc b/plugins/password/localization/ko_KR.inc
new file mode 100644 (file)
index 0000000..9bbe4cc
--- /dev/null
@@ -0,0 +1,31 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ko_KR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kim, Woohyun <woohyun.kim@gmail.com>                          |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['changepasswd'] = '암호 변경';
+$labels['curpasswd'] = '현재 암호:';
+$labels['newpasswd'] = '새 암호:';
+$labels['confpasswd'] = '새로운 비밀번호 확인 :';
+$labels['nopassword'] = '새 암호를 입력하시오.';
+$labels['nocurpassword'] = '현재 사용중인 암호를 입력하세요.';
+$labels['passwordincorrect'] = '현재 사용중인 암호가 올바르지 않습니다.';
+$labels['passwordinconsistency'] = '암호가 일치하지 않습니다. 다시 시도하기 바랍니다.';
+$labels['crypterror'] = '새로운 암호를 저장할 수 없습니다. 암호화 실패.';
+$labels['connecterror'] = '새로운 암호를 저장할 수 없습니다. 연결 오류.';
+$labels['internalerror'] = '새로운 암호를 저장할 수 없습니다.';
+$labels['passwordshort'] = '암호는 적어도 $length 글자 이상이어야 합니다.';
+$labels['passwordweak'] = '암호는 적어도 숫자 하나와 특수 문자 하나를 포함하여야 합니다.';
+$labels['passwordforbidden'] = '암호가 허락되지 않은 문자들을 포함하고 있습니다.';
+
index b4563cc42fc194a44d78795eaa5019ad37e889a9..86e7a3db0fcc180837078374e787c14ae2e89640 100644 (file)
@@ -1,21 +1,31 @@
 <?php
 
-$labels = array();
-$labels['changepasswd']  = 'Slaptažodžio keitimas';
-$labels['curpasswd']  = 'Dabartinis slaptažodis:';
-$labels['newpasswd']  = 'Naujasis slaptažodis:';
-$labels['confpasswd']  = 'Pakartokite naująjį slaptažodį:';
+/*
+ +-----------------------------------------------------------------------+
+ | localization/lt_LT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Rimas Kudelis <rq@akl.lt>                                     |
+ +-----------------------------------------------------------------------+
+*/
 
-$messages = array();
-$messages['nopassword'] = 'Prašom įvesti naująjį slaptažodį.';
-$messages['nocurpassword'] = 'Prašom įvesti dabartinį slaptažodį.';
-$messages['passwordincorrect'] = 'Dabartinis slaptažodis neteisingas.';
-$messages['passwordinconsistency'] = 'Slaptažodžiai nesutapo. Bandykite dar kartą.';
-$messages['crypterror'] = 'Nepavyko įrašyti naujojo slaptažodžio. Trūksta šifravimo funkcijos.';
-$messages['connecterror'] = 'Nepavyko įrašyti naujojo slaptažodžio. Prisijungimo klaida.';
-$messages['internalerror'] = 'Nepavyko įrašyti naujojo slaptažodžio.';
-$messages['passwordshort'] = 'Slaptažodis turi būti sudarytas iš bent $length simbolių.';
-$messages['passwordweak'] = 'Slaptažodyje turi būti bent vienas skaitmuo ir vienas skyrybos ženklas.';
-$messages['passwordforbidden'] = 'Slaptažodyje rasta neleistinų simbolių.';
+$labels = array();
+$labels['changepasswd'] = 'Slaptažodžio keitimas';
+$labels['curpasswd'] = 'Dabartinis slaptažodis:';
+$labels['newpasswd'] = 'Naujasis slaptažodis:';
+$labels['confpasswd'] = 'Pakartokite naująjį slaptažodį:';
+$labels['nopassword'] = 'Prašom įvesti naująjį slaptažodį.';
+$labels['nocurpassword'] = 'Prašom įvesti dabartinį slaptažodį.';
+$labels['passwordincorrect'] = 'Dabartinis slaptažodis neteisingas.';
+$labels['passwordinconsistency'] = 'Slaptažodžiai nesutapo. Bandykite dar kartą.';
+$labels['crypterror'] = 'Nepavyko įrašyti naujojo slaptažodžio. Trūksta šifravimo funkcijos.';
+$labels['connecterror'] = 'Nepavyko įrašyti naujojo slaptažodžio. Ryšio klaida.';
+$labels['internalerror'] = 'Nepavyko įrašyti naujojo slaptažodžio.';
+$labels['passwordshort'] = 'Slaptažodis turi būti sudarytas bent iš $length simbolių.';
+$labels['passwordweak'] = 'Slaptažodyje turi būti bent vienas skaitmuo ir vienas skyrybos ženklas.';
+$labels['passwordforbidden'] = 'Slaptažodyje rasta neleistinų simbolių.';
 
-?>
index 8f5f4c2c227d87e818f43cd7cd384307f7e28d38..0dbbdba281ba94a4f0fc6368c24136b9c3182231 100644 (file)
@@ -1,20 +1,30 @@
 <?php
 
-$labels = array();
-$labels['changepasswd']  = 'Nomainīt paroli';
-$labels['curpasswd']  = 'Pašreizējā parole:';
-$labels['newpasswd']  = 'Jaunā parole:';
-$labels['confpasswd']  = 'Vēlreiz jauno paroli:';
+/*
+ +-----------------------------------------------------------------------+
+ | localization/lv_LV/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
 
-$messages = array();
-$messages['nopassword'] = 'Lūdzu, ievadiet jauno paroli.';
-$messages['nocurpassword'] = 'Lūdzu, ievadiet pašreizējo paroli.';
-$messages['passwordincorrect'] = 'Pašreizējā parole nepareiza.';
-$messages['passwordinconsistency'] = 'Paroles nesakrīt. Lūdzu, ievadiet vēlreiz.';
-$messages['crypterror'] = 'Nevarēja saglabāt jauno paroli. Trūkst kriptēšanas funkcija.';
-$messages['connecterror'] = 'Nevarēja saglabāt jauno paroli. Savienojuma kļūda.';
-$messages['internalerror'] = 'Nevarēja saglabāt jauno paroli.';
-$messages['passwordshort'] = 'Jaunajai parolei jābūt vismaz $length simbola garai.';
-$messages['passwordweak'] = 'Jaunajai parolei jāsatur vismaz viens cipars un punktuācijas simbols.';
+$labels = array();
+$labels['changepasswd'] = 'Nomainīt paroli';
+$labels['curpasswd'] = 'Pašreizējā parole:';
+$labels['newpasswd'] = 'Jaunā parole:';
+$labels['confpasswd'] = 'Vēlreiz jauno paroli:';
+$labels['nopassword'] = 'Lūdzu, ievadiet jauno paroli.';
+$labels['nocurpassword'] = 'Lūdzu, ievadiet pašreizējo paroli.';
+$labels['passwordincorrect'] = 'Pašreizējā parole nepareiza.';
+$labels['passwordinconsistency'] = 'Paroles nesakrīt. Lūdzu, ievadiet vēlreiz.';
+$labels['crypterror'] = 'Nevarēja saglabāt jauno paroli. Trūkst kriptēšanas funkcija.';
+$labels['connecterror'] = 'Nevarēja saglabāt jauno paroli. Savienojuma kļūda.';
+$labels['internalerror'] = 'Nevarēja saglabāt jauno paroli.';
+$labels['passwordshort'] = 'Jaunajai parolei jābūt vismaz $length simbola garai.';
+$labels['passwordweak'] = 'Jaunajai parolei jāsatur vismaz viens cipars un punktuācijas simbols.';
 
-?>
diff --git a/plugins/password/localization/nb_NB.inc b/plugins/password/localization/nb_NB.inc
new file mode 100644 (file)
index 0000000..ce4679b
--- /dev/null
@@ -0,0 +1,31 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/nb_NB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Tobias V. Langhoff <spug@thespug.net>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['changepasswd'] = 'Bytt passord';
+$labels['curpasswd'] = 'Nåværende passord:';
+$labels['newpasswd'] = 'Nytt passord:';
+$labels['confpasswd'] = 'Bekreft nytt passord';
+$labels['nopassword'] = 'Vennligst skriv inn nytt passord';
+$labels['nocurpassword'] = 'Vennligst skriv inn nåværende passord';
+$labels['passwordincorrect'] = 'Nåværende passord er feil';
+$labels['passwordinconsistency'] = 'Passordene er ikke like, vennligst prøv igjen.';
+$labels['crypterror'] = 'Kunne ikke lagre nytt passord. Krypteringsfunksjonen mangler.';
+$labels['connecterror'] = 'Kunne ikke lagre nytt passord. Tilkoblings feil.';
+$labels['internalerror'] = 'Kunne ikke lagre nytt passord';
+$labels['passwordshort'] = 'Passordet må minumum være $length karakterer langt.';
+$labels['passwordweak'] = 'Passordet må inneholde minst ett tall og ett tegnsettingssymbol.';
+$labels['passwordforbidden'] = 'Passordet inneholder forbudte tegn.';
+
index 6d7c401ac735595e5609855bd37578eed99e0080..5429cb52ec78b0bcee63d79e83143cb5b16d2f41 100644 (file)
@@ -1,17 +1,31 @@
 <?php
 
-$labels = array();
-$labels['changepasswd']  = 'Wijzig Wachtwoord';
-$labels['curpasswd']  = 'Huidig Wachtwoord:';
-$labels['newpasswd']  = 'Nieuw Wachtwoord:';
-$labels['confpasswd']  = 'Bevestig Nieuw Wachtwoord:';
+/*
+ +-----------------------------------------------------------------------+
+ | localization/nl_NL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Geert Wirken                                                  |
+ +-----------------------------------------------------------------------+
+*/
 
-$messages = array();
-$messages['nopassword'] = 'Vul een wachtwoord in.';
-$messages['nocurpassword'] = 'vul het huidige wachtwoord in.';
-$messages['passwordincorrect'] = 'Huidig wachtwoord is onjuist.';
-$messages['passwordinconsistency'] = 'Wachtwoorden komen niet overeen, probeer het opnieuw.';
-$messages['crypterror'] = 'De server mist een functie om uw wachtwoord et beveiligen.';
-$messages['internalerror'] = 'Uw wachtwoord kan niet worden opgeslagen.';
+$labels = array();
+$labels['changepasswd'] = 'Wijzig Wachtwoord';
+$labels['curpasswd'] = 'Huidig Wachtwoord:';
+$labels['newpasswd'] = 'Nieuw Wachtwoord:';
+$labels['confpasswd'] = 'Bevestig Nieuw Wachtwoord:';
+$labels['nopassword'] = 'Vul een wachtwoord in.';
+$labels['nocurpassword'] = 'vul het huidige wachtwoord in.';
+$labels['passwordincorrect'] = 'Huidig wachtwoord is onjuist.';
+$labels['passwordinconsistency'] = 'Wachtwoorden komen niet overeen, probeer het opnieuw.';
+$labels['crypterror'] = 'De server mist een functie om uw wachtwoord et beveiligen.';
+$labels['connecterror'] = 'Kan het nieuwe wachtwoord niet opslaan. Verbindingsfout.';
+$labels['internalerror'] = 'Uw wachtwoord kan niet worden opgeslagen.';
+$labels['passwordshort'] = 'Het wachtwoord moet minimaal $length tekens lang zijn.';
+$labels['passwordweak'] = 'Het wachtwoord moet minimaal één nummer en één leesteken bevatten.';
+$labels['passwordforbidden'] = 'Het wachtwoord bevat tekens die niet toegestaan zijn.';
 
-?>
index 687ca938324fc15f3a6ed49fe5b700cba13a5fec..6edbf3fb147ca29ec50cc8d4b0a4448a9152e602 100644 (file)
@@ -1,21 +1,31 @@
 <?php
 
-$labels = array();
-$labels['changepasswd']  = 'Zmiana hasła';
-$labels['curpasswd']  = 'Aktualne hasło:';
-$labels['newpasswd']  = 'Nowe hasło:';
-$labels['confpasswd']  = 'Potwierdź hasło:';
+/*
+ +-----------------------------------------------------------------------+
+ | localization/pl_PL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
 
-$messages = array();
-$messages['nopassword'] = 'Wprowadź nowe hasło.';
-$messages['nocurpassword'] = 'Wprowadź aktualne hasło.';
-$messages['passwordincorrect'] = 'Błędne aktualne hasło, spróbuj ponownie.';
-$messages['passwordinconsistency'] = 'Hasła nie pasują, spróbuj ponownie.';
-$messages['crypterror'] = 'Nie udało się zapisać nowego hasła. Brak funkcji kodującej.';
-$messages['connecterror'] = 'Nie udało się zapisać nowego hasła. Błąd połączenia.';
-$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.';
+$labels = array();
+$labels['changepasswd'] = 'Zmiana hasła';
+$labels['curpasswd'] = 'Aktualne hasło:';
+$labels['newpasswd'] = 'Nowe hasło:';
+$labels['confpasswd'] = 'Potwierdź hasło:';
+$labels['nopassword'] = 'Wprowadź nowe hasło.';
+$labels['nocurpassword'] = 'Wprowadź aktualne hasło.';
+$labels['passwordincorrect'] = 'Błędne aktualne hasło, spróbuj ponownie.';
+$labels['passwordinconsistency'] = 'Hasła nie pasują, spróbuj ponownie.';
+$labels['crypterror'] = 'Nie udało się zapisać nowego hasła. Brak funkcji kodującej.';
+$labels['connecterror'] = 'Nie udało się zapisać nowego hasła. Błąd połączenia.';
+$labels['internalerror'] = 'Nie udało się zapisać nowego hasła.';
+$labels['passwordshort'] = 'Hasło musi posiadać co najmniej $length znaków.';
+$labels['passwordweak'] = 'Hasło musi zawierać co najmniej jedną cyfrę i znak interpunkcyjny.';
+$labels['passwordforbidden'] = 'Hasło zawiera niedozwolone znaki.';
 
-?>
index f3626e834b57ed54ac3f845855fc2dbea8c0baf0..cd6b1990292291d4ffa9a50b4fa599ae81667f36 100644 (file)
@@ -1,21 +1,31 @@
 <?php
 
-$labels = array();
-$labels['changepasswd']  = 'Alterar senha';
-$labels['curpasswd']  = 'Senha atual:';
-$labels['newpasswd']  = 'Nova senha:';
-$labels['confpasswd']  = 'Confirmar nova senha:';
+/*
+ +-----------------------------------------------------------------------+
+ | localization/pt_BR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
 
-$messages = array();
-$messages['nopassword'] = 'Por favor, informe a nova senha.';
-$messages['nocurpassword'] = 'Por favor, informe a senha atual.';
-$messages['passwordincorrect'] = 'Senha atual incorreta.';
-$messages['passwordinconsistency'] = 'Senhas não combinam, por favor tente novamente.';
-$messages['crypterror'] = 'Não foi possível gravar a nova senha. Função de criptografia ausente.';
-$messages['connecterror'] = 'Não foi possível gravar a nova senha. Erro de conexão.';
-$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.';
+$labels = array();
+$labels['changepasswd'] = 'Alterar senha';
+$labels['curpasswd'] = 'Senha atual:';
+$labels['newpasswd'] = 'Nova senha:';
+$labels['confpasswd'] = 'Confirmar nova senha:';
+$labels['nopassword'] = 'Por favor, informe a nova senha.';
+$labels['nocurpassword'] = 'Por favor, informe a senha atual.';
+$labels['passwordincorrect'] = 'Senha atual incorreta.';
+$labels['passwordinconsistency'] = 'Senhas não combinam, por favor tente novamente.';
+$labels['crypterror'] = 'Não foi possível gravar a nova senha. Função de criptografia ausente.';
+$labels['connecterror'] = 'Não foi possível gravar a nova senha. Erro de conexão.';
+$labels['internalerror'] = 'Não foi possível gravar a nova senha.';
+$labels['passwordshort'] = 'A senha precisa ter ao menos $length caracteres.';
+$labels['passwordweak'] = 'A senha precisa conter ao menos um número e um caractere de pontuação.';
+$labels['passwordforbidden'] = 'A senha contém caracteres proibidos.';
 
-?>
index 5307ad69fceec87d0bdf755f6235afa0a0e91700..004e9b2076babe29c0c63a6c482017932c293781 100644 (file)
@@ -1,18 +1,31 @@
 <?php
 
-$labels = array();
-$labels['changepasswd']  = 'Alterar password';
-$labels['curpasswd']  = 'Password atual:';
-$labels['newpasswd']  = 'Nova password:';
-$labels['confpasswd']  = 'Confirmar password:';
+/*
+ +-----------------------------------------------------------------------+
+ | localization/pt_PT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: David                                                         |
+ +-----------------------------------------------------------------------+
+*/
 
-$messages = array();
-$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 = array();
+$labels['changepasswd'] = 'Alterar password';
+$labels['curpasswd'] = 'Password atual:';
+$labels['newpasswd'] = 'Nova password:';
+$labels['confpasswd'] = 'Confirmar password:';
+$labels['nopassword'] = 'Introduza a nova password.';
+$labels['nocurpassword'] = 'Introduza a password actual.';
+$labels['passwordincorrect'] = 'Password actual errada.';
+$labels['passwordinconsistency'] = 'Password\'s não combinam, tente novamente..';
+$labels['crypterror'] = 'Não foi possível gravar a nova password. Função de criptografica inexistente.';
+$labels['connecterror'] = 'Não foi possível gravar a nova password. Erro de ligação.';
+$labels['internalerror'] = 'Não foi possível gravar a nova password.';
+$labels['passwordshort'] = 'A palavra-passe deve ter pelo menos $length caracteres';
+$labels['passwordweak'] = 'A palavra-passe deve incluir pelo menos um numero e um sinal de pontuação.';
+$labels['passwordforbidden'] = 'A palavra-passe contém caracteres não suportados.';
 
-?>
index 3776b45983e29a4a228f7e47d8aafd94b709a977..e21f82020caf47c38016398bc5ec1a415af63b84 100644 (file)
@@ -1,35 +1,31 @@
 <?php
-/*
-
-+-----------------------------------------------------------------------+
-| plugins/password/localization/ru_RU.inc                               |
-|                                                                       |
-| Language file of the Roundcube help plugin                            |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Sergey Dukachev <iam@dukess.ru>                               |
-+-----------------------------------------------------------------------+
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ru_RU/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
-$labels['changepasswd']  = 'Изменить пароль';
-$labels['curpasswd']  = 'Текущий пароль:';
-$labels['newpasswd']  = 'Новый пароль:';
-$labels['confpasswd']  = 'Подтвердите новый пароль:';
-
-$messages = array();
-$messages['nopassword'] = 'Пожалуйста, введите новый пароль.';
-$messages['nocurpassword'] = 'Пожалуйста, введите текущий пароль.';
-$messages['passwordincorrect'] = 'Текущий пароль неверен.';
-$messages['passwordinconsistency'] = 'Пароли не совпадают, попробуйте, пожалуйста, ещё.';
-$messages['crypterror'] = 'Не могу сохранить новый пароль. Отсутствует криптографическая функция.';
-$messages['connecterror'] = 'Не могу сохранить новый пароль. Ошибка соединения.';
-$messages['internalerror'] = 'Не могу сохранить новый пароль.';
-$messages['passwordshort'] = 'Пароль должен быть длиной как минимум $length символов.';
-$messages['passwordweak'] = 'Пароль должен включать в себя как минимум одну цифру и один знак пунктуации.';
-$messages['passwordforbidden'] = 'Пароль содержит недопустимые символы.';
+$labels['changepasswd'] = 'Изменить пароль';
+$labels['curpasswd'] = 'Текущий пароль:';
+$labels['newpasswd'] = 'Новый пароль:';
+$labels['confpasswd'] = 'Подтвердите новый пароль:';
+$labels['nopassword'] = 'Пожалуйста, введите новый пароль.';
+$labels['nocurpassword'] = 'Пожалуйста, введите текущий пароль.';
+$labels['passwordincorrect'] = 'Текущий пароль неверен.';
+$labels['passwordinconsistency'] = 'Пароли не совпадают, попробуйте, пожалуйста, ещё.';
+$labels['crypterror'] = 'Не могу сохранить новый пароль. Отсутствует криптографическая функция.';
+$labels['connecterror'] = 'Не могу сохранить новый пароль. Ошибка соединения.';
+$labels['internalerror'] = 'Не могу сохранить новый пароль.';
+$labels['passwordshort'] = 'Пароль должен быть длиной как минимум $length символов.';
+$labels['passwordweak'] = 'Пароль должен включать в себя как минимум одну цифру и один знак пунктуации.';
+$labels['passwordforbidden'] = 'Пароль содержит недопустимые символы.';
 
-?>
index 6def2f9148dfdf7b05337b91f91d1db9817b093d..9767cb443a699a8a172f187211208c877cd3d9a5 100644 (file)
@@ -1,29 +1,31 @@
 <?php
 
-/**
- * Slovak translation for Roundcube password plugin
- *
- * @version 1.0 (2010-10-18)
- * @author panda <admin@whistler.sk>
- *
- */
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sk_SK/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
 
 $labels = array();
-$labels['changepasswd']  = 'Zmeniť heslo';
-$labels['curpasswd']  = 'Súčasné heslo:';
-$labels['newpasswd']  = 'Nové heslo:';
-$labels['confpasswd']  = 'Potvrď nové heslo:';
+$labels['changepasswd'] = 'Zmeniť heslo';
+$labels['curpasswd'] = 'Súčasné heslo:';
+$labels['newpasswd'] = 'Nové heslo:';
+$labels['confpasswd'] = 'Potvrď nové heslo:';
+$labels['nopassword'] = 'Prosím zadaj nové heslo.';
+$labels['nocurpassword'] = 'Prosím zadaj súčasné heslo.';
+$labels['passwordincorrect'] = 'Súčasné heslo je nesprávne.';
+$labels['passwordinconsistency'] = 'Heslá nie sú rovnaké, skús znova.';
+$labels['crypterror'] = 'Nemôžem uložiť nové heslo. Chýba šifrovacia funkcia.';
+$labels['connecterror'] = 'Nemôžem uložiť nové heslo. Chyba spojenia.';
+$labels['internalerror'] = 'Nemôžem uložiť nové heslo.';
+$labels['passwordshort'] = 'Heslo musí mať najmenej $length znakov.';
+$labels['passwordweak'] = 'Heslo musí obsahovať aspoň jedno číslo a jedno interpunkčné znamienko.';
+$labels['passwordforbidden'] = 'Heslo obsahuje nepovolené znaky.';
 
-$messages = array();
-$messages['nopassword'] = 'Prosím zadaj nové heslo.';
-$messages['nocurpassword'] = 'Prosím zadaj súčasné heslo.';
-$messages['passwordincorrect'] = 'Súčasné heslo je nesprávne.';
-$messages['passwordinconsistency'] = 'Heslá nie sú rovnaké, skús znova.';
-$messages['crypterror'] = 'Nemôžem uložiť nové heslo. Chýba šifrovacia funkcia.';
-$messages['connecterror'] = 'Nemôžem uložiť nové heslo. Chyba spojenia.';
-$messages['internalerror'] = 'Nemôžem uložiť nové heslo.';
-$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.';
-
-?>
index df17583beff989136350c40d32d77a535c7b0ee5..30525415fd3f21b70a62a4a8f0e895e9ac16e9b7 100644 (file)
@@ -1,18 +1,31 @@
 <?php
-       
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sl_SI/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Barbara Krasovec <barbarak@arnes.si>                          |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
-$labels['changepasswd']  = 'Spremeni geslo';
-$labels['curpasswd']  = 'Obstoječe geslo:';
-$labels['newpasswd']  = 'Novo geslo:';
-$labels['confpasswd']  = 'Potrdi novo geslo:';
-       
-$messages = array();
-$messages['nopassword'] = 'Vnesite novo geslo.';
-$messages['nocurpassword'] = 'Vnesite obstoječe geslo.';
-$messages['passwordincorrect'] = 'Obstoječe geslo ni veljavno.';
-$messages['passwordinconsistency'] = 'Gesli se ne ujemata, poskusite znova.';
-$messages['crypterror'] = 'Novega gesla ni bilo mogoče shraniti. Prišlo je do napake pri šifriranju.';
-$messages['connecterror'] = 'Novega gesla ni bilo mogoče shraniti. Prišlo je do napake v povezavi.';
-$messages['internalerror'] = 'Novega gesla ni bilo mogoče shraniti.';
+$labels['changepasswd'] = 'Spremeni geslo';
+$labels['curpasswd'] = 'Obstoječe geslo:';
+$labels['newpasswd'] = 'Novo geslo:';
+$labels['confpasswd'] = 'Potrdi novo geslo:';
+$labels['nopassword'] = 'Vnesite novo geslo.';
+$labels['nocurpassword'] = 'Vnesite obstoječe geslo.';
+$labels['passwordincorrect'] = 'Obstoječe geslo ni veljavno.';
+$labels['passwordinconsistency'] = 'Gesli se ne ujemata, poskusite znova.';
+$labels['crypterror'] = 'Novega gesla ni bilo mogoče shraniti. Prišlo je do napake pri šifriranju.';
+$labels['connecterror'] = 'Novega gesla ni bilo mogoče shraniti. Prišlo je do napake v povezavi.';
+$labels['internalerror'] = 'Novega gesla ni bilo mogoče shraniti.';
+$labels['passwordshort'] = 'Geslo mora vsebovati vsaj $length znakov';
+$labels['passwordweak'] = 'Geslo mora vključevati vsaj eno številko in ločilo.';
+$labels['passwordforbidden'] = 'Geslo vsebuje neveljavne znake.';
 
-?>
diff --git a/plugins/password/localization/sr_CS.inc b/plugins/password/localization/sr_CS.inc
new file mode 100644 (file)
index 0000000..4224f49
--- /dev/null
@@ -0,0 +1,31 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sr_CS/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Saša Zejnilović <zejnils@gmail.com>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['changepasswd'] = 'Промијени лозинку';
+$labels['curpasswd'] = 'Тренутна лозинка:';
+$labels['newpasswd'] = 'Нова лозинка:';
+$labels['confpasswd'] = 'Поновите лозинку:';
+$labels['nopassword'] = 'Молимо унесите нову лозинку.';
+$labels['nocurpassword'] = 'Молимо унесите тренутну лозинку.';
+$labels['passwordincorrect'] = 'Тренутна лозинка је нетачна.';
+$labels['passwordinconsistency'] = 'Лозинке се не поклапају, молимо покушајте поново.';
+$labels['crypterror'] = 'Није могуће сачувати нову лозинку. Недостаје функција за кодирање.';
+$labels['connecterror'] = 'Није могуће сачувати нову лозинку. Грешка у Вези.';
+$labels['internalerror'] = 'Није могуће сачувати нову лозинку.';
+$labels['passwordshort'] = 'Лозинка мора имати најмање $lenght знакова.';
+$labels['passwordweak'] = 'Лозинка мора да садржи најмање један број и један интерпункцијски знак.';
+$labels['passwordforbidden'] = 'Лозинка садржи недозвољене знакове.';
+
index d649bbd9ac7fee2d8af3d24a12d05547940c407a..67e71a424f72a53e3d20c5ae0a6b02a02adf9abe 100644 (file)
@@ -1,21 +1,31 @@
 <?php
 
-$labels = array();
-$labels['changepasswd']  = 'Ändra lösenord';
-$labels['curpasswd']  = 'Nuvarande lösenord:';
-$labels['newpasswd']  = 'Nytt lösenord:';
-$labels['confpasswd']  = 'Bekräfta nytt lösenord:';
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sv_SE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
 
-$messages = array();
-$messages['nopassword'] = 'Vänligen ange nytt lösenord.';
-$messages['nocurpassword'] = 'Vänligen ange nuvarande lösenord.';
-$messages['passwordincorrect'] = 'Felaktigt nuvarande lösenord.';
-$messages['passwordinconsistency'] = 'Nya lösenordet och bekräftelsen överensstämmer inte, försök igen.';
-$messages['crypterror'] = 'Lösenordet kunde inte ändras. Krypteringsfunktionen saknas.';
-$messages['connecterror'] = 'Lösenordet kunde inte ändras. Anslutningen misslyckades.';
-$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.';
+$labels = array();
+$labels['changepasswd'] = 'Ändra lösenord';
+$labels['curpasswd'] = 'Nuvarande lösenord:';
+$labels['newpasswd'] = 'Nytt lösenord:';
+$labels['confpasswd'] = 'Bekräfta nytt lösenord:';
+$labels['nopassword'] = 'Vänligen ange nytt lösenord.';
+$labels['nocurpassword'] = 'Vänligen ange nuvarande lösenord.';
+$labels['passwordincorrect'] = 'Felaktigt nuvarande lösenord.';
+$labels['passwordinconsistency'] = 'Nya lösenordet och bekräftelsen överensstämmer inte, försök igen.';
+$labels['crypterror'] = 'Lösenordet kunde inte ändras. Krypteringsfunktionen saknas.';
+$labels['connecterror'] = 'Lösenordet kunde inte ändras. Anslutningen misslyckades.';
+$labels['internalerror'] = 'Lösenordet kunde inte ändras.';
+$labels['passwordshort'] = 'Lösenordet måste vara minst $length tecken långt.';
+$labels['passwordweak'] = 'Lösenordet måste innehålla minst en siffra och ett specialtecken.';
+$labels['passwordforbidden'] = 'Lösenordet innehåller otillåtna tecken.';
 
-?>
\ No newline at end of file
index 4f2322a2e544503128767189222a8148aa7371c3..a2c94c10263c9f6bf2d31a7476e80d6f3b7e4ec8 100644 (file)
@@ -1,21 +1,31 @@
 <?php
 
-$labels = array();
-$labels['changepasswd']  = 'Parolayı Değiştir';
-$labels['curpasswd']  = 'Şu anki Parola:';
-$labels['newpasswd']  = 'Yeni Parola:';
-$labels['confpasswd']  = 'Yeni Parolayı Onaylayın:';
+/*
+ +-----------------------------------------------------------------------+
+ | localization/tr_TR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Gökdeniz Karadağ                                            |
+ +-----------------------------------------------------------------------+
+*/
 
-$messages = array();
-$messages['nopassword'] = 'Lütfen yeni şifreyi girin.';
-$messages['nocurpassword'] = 'Lütfen şu anki şifrenizi girin.';
-$messages['passwordincorrect'] = 'Parolanızı yanlış girdiniz.';
-$messages['passwordinconsistency'] = 'Girdiğiniz parolalar uyuşmuyor. Lütfen tekrar deneyin..';
-$messages['crypterror'] = 'Yeni şifre kaydedilemedi. Gerekli fonksiyon eksik.';
-$messages['connecterror'] = 'Yeni şifre kaydedilemedi. Bağlantı hatası.';
-$messages['internalerror'] = 'Yeni şifre 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.';
+$labels = array();
+$labels['changepasswd'] = 'Parolayı Değiştir';
+$labels['curpasswd'] = 'Şimdiki Parola:';
+$labels['newpasswd'] = 'Yeni Parola:';
+$labels['confpasswd'] = 'Yeni Parolayı Onaylayın:';
+$labels['nopassword'] = 'Lütfen yeni parolayı girin.';
+$labels['nocurpassword'] = 'Lütfen şimdiki parolayı girin.';
+$labels['passwordincorrect'] = 'Şimdiki parolayı yanlış girdiniz.';
+$labels['passwordinconsistency'] = 'Girdiğiniz parolalar uyuşmuyor. Lütfen tekrar deneyin.';
+$labels['crypterror'] = 'Yeni parola kaydedilemedi. Şifreleme fonksiyonu mevcut değil.';
+$labels['connecterror'] = 'Yeni parola kaydedilemedi. Bağlantı hatası.';
+$labels['internalerror'] = 'Yeni parola kaydedilemedi.';
+$labels['passwordshort'] = 'Parola en az $length karakterden oluşmalı.';
+$labels['passwordweak'] = 'Parola en az bir sayı ve bir noktalama işareti içermeli.';
+$labels['passwordforbidden'] = 'Parola uygunsuz karakter(ler) içeriyor.';
 
-?>
diff --git a/plugins/password/localization/vi_VN.inc b/plugins/password/localization/vi_VN.inc
new file mode 100644 (file)
index 0000000..7297493
--- /dev/null
@@ -0,0 +1,31 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/vi_VN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kenny Tran <kennethanh@gmail.com>                             |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$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';
+$labels['nopassword'] = 'Mời nhập mật khẩu mới';
+$labels['nocurpassword'] = 'Mời nhập mật khẩu hiện tại';
+$labels['passwordincorrect'] = 'Mật khẩu hiện thời không đúng';
+$labels['passwordinconsistency'] = 'Mật khẩu không khớp, hãy thử lại';
+$labels['crypterror'] = 'Không thể lưu mật khẩu mới. Thiếu chức năng mã hóa';
+$labels['connecterror'] = 'Không thể lưu mật mã mới. Lổi kết nối';
+$labels['internalerror'] = 'Không thể lưu mật khẩu mới';
+$labels['passwordshort'] = 'Mật khẩu phải dài ít nhất $ ký tự';
+$labels['passwordweak'] = 'Mật khẩu phải bao gồm ít nhất 1 con số và 1 ký tự dấu câu';
+$labels['passwordforbidden'] = 'Mật khẩu bao gồm ký tự không hợp lệ';
+
diff --git a/plugins/password/localization/zh_CN.inc b/plugins/password/localization/zh_CN.inc
new file mode 100644 (file)
index 0000000..5e0af7c
--- /dev/null
@@ -0,0 +1,31 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/zh_CN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Christopher Meng <cickumqt@gmail.com>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['changepasswd'] = '修改密码';
+$labels['curpasswd'] = '当前密码:';
+$labels['newpasswd'] = '新密码:';
+$labels['confpasswd'] = '确认新密码:';
+$labels['nopassword'] = '请输入新密码。';
+$labels['nocurpassword'] = '请输入正确的密码。';
+$labels['passwordincorrect'] = '当前密码不正确。';
+$labels['passwordinconsistency'] = '两次输入的密码不一致,请重试。';
+$labels['crypterror'] = '无法保存新密码,因为加密功能不可用。';
+$labels['connecterror'] = '无法保存新密码,因为连接出错。';
+$labels['internalerror'] = '无法保存新密码。';
+$labels['passwordshort'] = '密码必须至少为 $length 位。';
+$labels['passwordweak'] = '密码必须至少包含一个数字和一个标点符号。';
+$labels['passwordforbidden'] = '密码包含禁止使用的字符。';
+
index 7d162274a0bd39a9574e02931c88629238833bbc..49fa48e7f902ccea0c9a43b00d584334e5fcfdec 100644 (file)
@@ -1,21 +1,31 @@
 <?php
 
-$labels = array();
-$labels['changepasswd']  = '更改密碼';
-$labels['curpasswd']  = '目前的密碼';
-$labels['newpasswd']  = '新密碼';
-$labels['confpasswd']  = '確認新密碼';
+/*
+ +-----------------------------------------------------------------------+
+ | localization/zh_TW/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
 
-$messages = array();
-$messages['nopassword'] = '請輸入新密碼';
-$messages['nocurpassword'] = '請輸入目前的密碼';
-$messages['passwordincorrect'] = '目前的密碼錯誤';
-$messages['passwordinconsistency'] = '密碼不相符,請重新輸入';
-$messages['crypterror'] = '無法更新密碼:無加密機制';
-$messages['connecterror'] = '無法更新密碼:連線失敗';
-$messages['internalerror'] = '無法更新密碼';
-$messages['passwordshort'] = '您的密碼至少需 $length 個字元長';
-$messages['passwordweak'] = '您的新密碼至少需含有一個數字與一個標點符號';
-$messages['passwordforbidden'] = '您的密碼含有禁用字元';
+$labels = array();
+$labels['changepasswd'] = '更改密碼';
+$labels['curpasswd'] = '目前的密碼';
+$labels['newpasswd'] = '新密碼';
+$labels['confpasswd'] = '確認新密碼';
+$labels['nopassword'] = '請輸入新密碼';
+$labels['nocurpassword'] = '請輸入目前的密碼';
+$labels['passwordincorrect'] = '目前的密碼錯誤';
+$labels['passwordinconsistency'] = '密碼不相符,請重新輸入';
+$labels['crypterror'] = '無法更新密碼:無加密機制';
+$labels['connecterror'] = '無法更新密碼:連線失敗';
+$labels['internalerror'] = '無法更新密碼';
+$labels['passwordshort'] = '您的密碼至少需 $length 個字元長';
+$labels['passwordweak'] = '您的新密碼至少需含有一個數字與一個標點符號';
+$labels['passwordforbidden'] = '您的密碼含有禁用字元';
 
-?>
index 45688e1188e97aa2b33ab5f8c1ac132d55c776ca..29d2224096516ca9b615b1d04153c1acbe5afd4c 100644 (file)
                <email>alec@alec.pl</email>
                <active>yes</active>
        </lead>
-       <date>2011-11-23</date>
+       <date>2012-03-07</date>
        <version>
-               <release>2.4</release>
-               <api>1.6</api>
+               <release>3.1</release>
+               <api>2.0</api>
        </version>
        <stability>
                <release>stable</release>
        </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)
+- 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>
        <contents>
                <dir baseinstalldir="/" name="/">
                        <file name="localization/tr_TR.inc" role="data"></file>
                        <file name="localization/zh_TW.inc" role="data"></file>
 
-                       <file name="drivers/chgsaslpasswd.c" role="data"></file>
-            <file name="drivers/chgvirtualminpasswd.c" role="data"></file>
             <file name="drivers/chpasswd.php" role="php"></file>
+            <file name="drivers/dbmail.php" role="php"></file>
             <file name="drivers/directadmin.php" role="php"></file>
+            <file name="drivers/domainfactory.php" role="php"></file>
+            <file name="drivers/expect.php" role="php"></file>
             <file name="drivers/ldap.php" role="php"></file>
             <file name="drivers/ldap_simple.php" role="php"></file>
             <file name="drivers/poppassd.php" role="php"></file>
             <file name="drivers/cpanel.php" role="php"></file>
             <file name="drivers/hmail.php" role="php"></file>
             <file name="drivers/pam.php" role="php"></file>
+            <file name="drivers/pw_usermod.php" role="php"></file>
             <file name="drivers/sasl.php" role="php"></file>
+            <file name="drivers/smb.php" role="php"></file>
             <file name="drivers/virtualmin.php" role="php"></file>
             <file name="drivers/ximss.php" role="php"></file>
             <file name="drivers/xmail.php" role="php"></file>
-            <file name="drivers/chpass-wrapper.py" role="data"></file>
+
+                       <file name="helpers/chgdbmailusers.c" role="data"></file>
+                       <file name="helpers/chgsaslpasswd.c" role="data"></file>
+            <file name="helpers/chgvirtualminpasswd.c" role="data"></file>
+            <file name="helpers/chpass-wrapper.py" role="data"></file>
+            <file name="helpers/passwd-expect" role="data"></file>
 
             <file name="config.inc.php.disc" role="data"></file>
                </dir>
 - 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>
     </changelog>
 </package>
index 26376b36d071b6e9862fa7acee66f56fa598d1a8..a060fc334bffb10fc33ff207965a2279224db2fe 100644 (file)
@@ -6,7 +6,7 @@
 if (window.rcmail) {
   rcmail.addEventListener('init', function(evt) {
     // <span id="settingstabdefault" class="tablink"><roundcube:button command="preferences" type="link" label="preferences" title="editpreferences" /></span>
-    var tab = $('<span>').attr('id', 'settingstabpluginpassword').addClass('tablink');
+    var tab = $('<span>').attr('id', 'settingstabpluginpassword').addClass('tablink password');
     var button = $('<a>').attr('href', rcmail.env.comm_path+'&_action=plugin.password')
       .html(rcmail.gettext('password')).appendTo(tab);
 
index 06e3448f0dfe529d8d1e29ad708f19a4d6f74c93..58b6f8cd9c1b01f102f7bf54e07ff916ff2a66e8 100644 (file)
@@ -53,6 +53,22 @@ class password extends rcube_plugin
     function init()
     {
         $rcmail = rcmail::get_instance();
+
+        $this->load_config();
+
+        // Exceptions list
+        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;
+                }
+            }
+        }
+
         // add Tab label
         $rcmail->output->add_label('password');
         $this->register_action('plugin.password', array($this, 'password_init'));
@@ -73,7 +89,6 @@ class password extends rcube_plugin
     function password_save()
     {
         $rcmail = rcmail::get_instance();
-        $this->load_config();
 
         $this->add_texts('localization/');
         $this->register_handler('plugin.body', array($this, 'password_form'));
@@ -87,7 +102,6 @@ class password extends rcube_plugin
             $rcmail->output->command('display_message', $this->gettext('nopassword'), 'error');
         }
         else {
-
             $charset    = strtoupper($rcmail->config->get('password_charset', 'ISO-8859-1'));
             $rc_charset = strtoupper($rcmail->output->get_charset());
 
@@ -134,9 +148,9 @@ class password extends rcube_plugin
             else if (!($res = $this->_save($curpwd, $newpwd))) {
                 $rcmail->output->command('display_message', $this->gettext('successfullysaved'), 'confirmation');
 
-               // allow additional actions after password change (e.g. reset some backends)
-               $plugin = $rcmail->plugins->exec_hook('password_change', array(
-                   'old_pass' => $curpwd, 'new_pass' => $newpwd));
+                // allow additional actions after password change (e.g. reset some backends)
+                $plugin = $rcmail->plugins->exec_hook('password_change', array(
+                    'old_pass' => $curpwd, 'new_pass' => $newpwd));
 
                 // Reset session password
                 $_SESSION['password'] = $rcmail->encrypt($plugin['new_pass']);
@@ -159,7 +173,6 @@ class password extends rcube_plugin
     function password_form()
     {
         $rcmail = rcmail::get_instance();
-        $this->load_config();
 
         // add some labels to client
         $rcmail->output->add_label(
@@ -177,7 +190,7 @@ class password extends rcube_plugin
             $field_id = 'curpasswd';
             $input_curpasswd = new html_passwordfield(array('name' => '_curpasswd', 'id' => $field_id,
                 'size' => 20, 'autocomplete' => 'off'));
-  
+
             $table->add('title', html::label($field_id, Q($this->gettext('curpasswd'))));
             $table->add(null, $input_curpasswd->show());
         }
@@ -222,31 +235,34 @@ class password extends rcube_plugin
     private function _save($curpass, $passwd)
     {
         $config = rcmail::get_instance()->config;
-        $driver = $this->home.'/drivers/'.$config->get('password_driver', 'sql').'.php';
+        $driver = $config->get('password_driver', 'sql');
+        $class  = "rcube_{$driver}_password";
+        $file   = $this->home . "/drivers/$driver.php";
 
-        if (!is_readable($driver)) {
+        if (!file_exists($file)) {
             raise_error(array(
                 'code' => 600,
                 'type' => 'php',
                 'file' => __FILE__, 'line' => __LINE__,
-                'message' => "Password plugin: Unable to open driver file $driver"
+                'message' => "Password plugin: Unable to open driver file ($file)"
             ), true, false);
             return $this->gettext('internalerror');
         }
 
-        include($driver);
+        include_once $file;
 
-        if (!function_exists('password_save')) {
+        if (!class_exists($class, false) || !method_exists($class, 'save')) {
             raise_error(array(
                 'code' => 600,
                 'type' => 'php',
                 'file' => __FILE__, 'line' => __LINE__,
-                'message' => "Password plugin: Broken driver: $driver"
+                'message' => "Password plugin: Broken driver $driver"
             ), true, false);
             return $this->gettext('internalerror');
         }
 
-        $result = password_save($curpass, $passwd);
+        $object = new $class;
+        $result = $object->save($curpass, $passwd);
 
         if (is_array($result)) {
             $message = $result['message'];
diff --git a/plugins/redundant_attachments/package.xml b/plugins/redundant_attachments/package.xml
new file mode 100644 (file)
index 0000000..939cf12
--- /dev/null
@@ -0,0 +1,63 @@
+<?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>redundant_attachments</name>
+       <channel>pear.roundcube.net</channel>
+       <summary>Redundant storage for uploaded attachments</summary>
+       <description>
+           This plugin provides a redundant storage for temporary uploaded
+        attachment files. They are stored in both the database backend
+        as well as on the local file system.
+        It provides also memcache store as a fallback.
+       </description>
+       <lead>
+               <name>Aleksander Machniak</name>
+               <user>alec</user>
+               <email>alec@alec.pl</email>
+               <active>yes</active>
+       </lead>
+       <lead>
+               <name>Thomas Bruederli</name>
+               <user>thomasb</user>
+               <email>roundcube@gmail.com</email>
+               <active>yes</active>
+       </lead>
+       <date>2011-11-21</date>
+       <version>
+               <release>1.0</release>
+               <api>1.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>-</notes>
+       <contents>
+               <dir baseinstalldir="/" name="/">
+                       <file name="redundant_attachments.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="config.inc.php.dist" role="data"/>
+               </dir>
+               <!-- / -->
+       </contents>
+       <dependencies>
+               <required>
+                       <php>
+                               <min>5.2.1</min>
+                       </php>
+                       <pearinstaller>
+                               <min>1.7.0</min>
+                       </pearinstaller>
+                       <package>
+                   <name>filesystem_attachments</name>
+                   <channel>pear.roundcube.net</channel>
+                       </package>
+               </required>
+       </dependencies>
+       <phprelease/>
+</package>
diff --git a/plugins/show_additional_headers/package.xml b/plugins/show_additional_headers/package.xml
new file mode 100644 (file)
index 0000000..7297916
--- /dev/null
@@ -0,0 +1,49 @@
+<?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>show_additional_headers</name>
+       <channel>pear.roundcube.net</channel>
+       <summary>Displays additional message headers</summary>
+       <description>
+           Proof-of-concept plugin which will fetch additional headers and display them in the message view.
+       </description>
+       <lead>
+               <name>Thomas Bruederli</name>
+               <user>thomasb</user>
+               <email>roundcube@gmail.com</email>
+               <active>yes</active>
+       </lead>
+       <date>2012-04-23</date>
+       <version>
+               <release>2.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>-</notes>
+       <contents>
+               <dir baseinstalldir="/" name="/">
+                       <file name="show_additional_headers.php" role="php">
+                               <tasks:replace from="@name@" to="name" type="package-info"/>
+                               <tasks:replace from="@package_version@" to="version" type="package-info"/>
+                       </file>
+               </dir>
+               <!-- / -->
+       </contents>
+       <dependencies>
+               <required>
+                       <php>
+                               <min>5.2.1</min>
+                       </php>
+                       <pearinstaller>
+                               <min>1.7.0</min>
+                       </pearinstaller>
+               </required>
+       </dependencies>
+       <phprelease/>
+</package>
index 0007ce3358dceaf37c16a6dfe0f2ff0a8f346ecc..69ac7f2a7ea726d4d8a99965c40e87ecd579f19b 100644 (file)
@@ -9,27 +9,27 @@
  * Enable the plugin in config/main.inc.php and add your desired headers:
  *   $rcmail_config['show_additional_headers'] = array('User-Agent');
  *
- * @version 1.0
+ * @version @package_version@
  * @author Thomas Bruederli
  * @website http://roundcube.net
  */
 class show_additional_headers extends rcube_plugin
 {
   public $task = 'mail';
-  
+
   function init()
   {
     $rcmail = rcmail::get_instance();
     if ($rcmail->action == 'show' || $rcmail->action == 'preview') {
-      $this->add_hook('imap_init', array($this, 'imap_init'));
+      $this->add_hook('storage_init', array($this, 'storage_init'));
       $this->add_hook('message_headers_output', array($this, 'message_headers'));
     } else if ($rcmail->action == '') {
       // with enabled_caching we're fetching additional headers before show/preview
-      $this->add_hook('imap_init', array($this, 'imap_init'));
+      $this->add_hook('storage_init', array($this, 'storage_init'));
     }
   }
-  
-  function imap_init($p)
+
+  function storage_init($p)
   {
     $rcmail = rcmail::get_instance();
     if ($add_headers = (array)$rcmail->config->get('show_additional_headers', array()))
@@ -42,9 +42,8 @@ class show_additional_headers extends rcube_plugin
   {
     $rcmail = rcmail::get_instance();
     foreach ((array)$rcmail->config->get('show_additional_headers', array()) as $header) {
-      $key = strtolower($header);
-      if ($value = $p['headers']->others[$key])
-        $p['output'][$key] = array('title' => $header, 'value' => Q($value));
+      if ($value = $p['headers']->get($header))
+        $p['output'][$header] = array('title' => $header, 'value' => Q($value));
     }
 
     return $p;
diff --git a/plugins/subscriptions_option/localization/bs_BA.inc b/plugins/subscriptions_option/localization/bs_BA.inc
new file mode 100644 (file)
index 0000000..3da2eaa
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/bs_BA/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kenan Dervišević <kenan3008@gmail.com>                      |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['useimapsubscriptions'] = 'Koristi IMAP pretplate';
+
diff --git a/plugins/subscriptions_option/localization/ca_ES.inc b/plugins/subscriptions_option/localization/ca_ES.inc
new file mode 100644 (file)
index 0000000..28e67e8
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ca_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jordi Sanfeliu <jordi@fibranet.cat>                           |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['useimapsubscriptions'] = 'Fes servir subscripcions IMAP';
+
index 0d9c1fc73533c44ee2544508745b5a0c8ed9ac5e..0c41425231fd647bc74aba8d7519fc3ecd081683 100644 (file)
@@ -1,23 +1,18 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/cs_CZ/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube subscriptions option plugin            |
-| Copyright (C) 2005-2009, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Milan Kozak <hodza@hodza.net>                                 |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 2993 2009-09-26 18:32:07Z alec $
-
+ +-----------------------------------------------------------------------+
+ | localization/cs_CZ/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
-$labels['useimapsubscriptions']  = 'Používat odebírání IMAP složek';
+$labels['useimapsubscriptions'] = 'Používat odebírání IMAP složek';
 
-?>
diff --git a/plugins/subscriptions_option/localization/cy_GB.inc b/plugins/subscriptions_option/localization/cy_GB.inc
new file mode 100644 (file)
index 0000000..54cc72b
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/cy_GB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Dafydd Tomos                                                  |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['useimapsubscriptions'] = 'Defnyddio tanysgrifiadau IMAP';
+
diff --git a/plugins/subscriptions_option/localization/da_DK.inc b/plugins/subscriptions_option/localization/da_DK.inc
new file mode 100644 (file)
index 0000000..bcefdcc
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/da_DK/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Johannes Hessellund <osos@openeyes.dk>                        |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['useimapsubscriptions'] = 'Brug IMAP abonnementer';
+
index b4affe0c883fe15343d373d96f15dd2ed120ea41..5a3e6908ef1104ba6281b16667e4a2d06f8ed9c8 100644 (file)
@@ -1,6 +1,18 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/de_CH/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
-$labels['useimapsubscriptions']  = 'Nur abonnierte Ordner anzeigen';
+$labels['useimapsubscriptions'] = 'Nur abonnierte Ordner anzeigen';
 
-?>
index b4affe0c883fe15343d373d96f15dd2ed120ea41..25a8d4bde188800543ef93461d3fa9cab6aa9d1b 100644 (file)
@@ -1,6 +1,18 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/de_DE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
-$labels['useimapsubscriptions']  = 'Nur abonnierte Ordner anzeigen';
+$labels['useimapsubscriptions'] = 'Nur abonnierte Ordner anzeigen';
 
-?>
diff --git a/plugins/subscriptions_option/localization/en_GB.inc b/plugins/subscriptions_option/localization/en_GB.inc
new file mode 100644 (file)
index 0000000..3c88be7
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/en_GB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Aleksander Machniak <alec@alec.pl>                            |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['useimapsubscriptions'] = 'Use IMAP Subscriptions';
+
index ca9a42126c25d9d31804baadd44d9b8faaf11396..dfc4c2f0a67c848f32c1d47efc501191f879e5d2 100644 (file)
@@ -1,6 +1,18 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/es_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
-$labels['useimapsubscriptions']  = 'Usar suscripciones IMAP';
+$labels['useimapsubscriptions'] = 'Usar suscripciones IMAP';
 
-?>
index 6c5f6f43587a30088154e652f81bef1dbfbbf305..11ebacc397c6ba1b023339b218c075b4dc1e5d46 100644 (file)
@@ -1,6 +1,18 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/et_EE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
-$labels['useimapsubscriptions']  = 'Kasuta IMAP tellimusi';
+$labels['useimapsubscriptions'] = 'Kasuta IMAP tellimusi';
 
-?>
diff --git a/plugins/subscriptions_option/localization/fa_IR.inc b/plugins/subscriptions_option/localization/fa_IR.inc
new file mode 100644 (file)
index 0000000..a2cdec7
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fa_IR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Hamid <abbaszadeh.h@gmail.com>                                |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['useimapsubscriptions'] = 'استفاده از عضویت IMAP';
+
diff --git a/plugins/subscriptions_option/localization/fi_FI.inc b/plugins/subscriptions_option/localization/fi_FI.inc
new file mode 100644 (file)
index 0000000..1968042
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fi_FI/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jiri Grönroos                                                |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['useimapsubscriptions'] = 'Käytä IMAP-tilauksia';
+
diff --git a/plugins/subscriptions_option/localization/fr_FR.inc b/plugins/subscriptions_option/localization/fr_FR.inc
new file mode 100644 (file)
index 0000000..fc928d8
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fr_FR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Nicolas Delvaux                                               |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['useimapsubscriptions'] = 'Utiliser les abonnements IMAP';
+
index d7db28d2e8f0903a4910bfd0ff1e02bec8dc4378..c085c263a1f8036680d509d7df803e42268a5206 100644 (file)
@@ -1,6 +1,18 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/gl_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
-$labels['useimapsubscriptions']  = 'Usar suscripcións IMAP';
+$labels['useimapsubscriptions'] = 'Usar suscripcións IMAP';
 
-?>
diff --git a/plugins/subscriptions_option/localization/he_IL.inc b/plugins/subscriptions_option/localization/he_IL.inc
new file mode 100644 (file)
index 0000000..e91960a
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/he_IL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Moshe Leibovitch <moish@mln.co.il>                            |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['useimapsubscriptions'] = 'שימוש ברישום לתיקיות IMAP';
+
diff --git a/plugins/subscriptions_option/localization/hu_HU.inc b/plugins/subscriptions_option/localization/hu_HU.inc
new file mode 100644 (file)
index 0000000..7673648
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/hu_HU/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: bela                                                          |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['useimapsubscriptions'] = 'IMAP előfizetések használata.';
+
diff --git a/plugins/subscriptions_option/localization/hy_AM.inc b/plugins/subscriptions_option/localization/hy_AM.inc
new file mode 100644 (file)
index 0000000..0769fe0
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/hy_AM/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Vahan Yerkanian <vahan@yerkanian.com>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['useimapsubscriptions'] = 'Օգտագործել IMAP-ի բաժանորդագրությունները';
+
index dacea29567ec4c6ab566d16c9f16ad53f3dba6ea..206bf92a3afe502f766f95c5614d2398300d4f10 100644 (file)
@@ -1,8 +1,18 @@
 <?php
 
-//  EN-Revision: 3891
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ja_JP/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
 
 $labels = array();
-$labels['useimapsubscriptions']  = 'IMAP 購読リストを使う';
+$labels['useimapsubscriptions'] = 'IMAP 購読リストを使う';
 
-?>
diff --git a/plugins/subscriptions_option/localization/ko_KR.inc b/plugins/subscriptions_option/localization/ko_KR.inc
new file mode 100644 (file)
index 0000000..c391b2f
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ko_KR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kim, Woohyun <woohyun.kim@gmail.com>                          |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['useimapsubscriptions'] = 'IMAP 구독 사용';
+
diff --git a/plugins/subscriptions_option/localization/lt_LT.inc b/plugins/subscriptions_option/localization/lt_LT.inc
new file mode 100644 (file)
index 0000000..30d73b8
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/lt_LT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Rimas Kudelis <rq@akl.lt>                                     |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['useimapsubscriptions'] = 'Naudoti IMAP prenumeratas';
+
diff --git a/plugins/subscriptions_option/localization/nl_NL.inc b/plugins/subscriptions_option/localization/nl_NL.inc
new file mode 100644 (file)
index 0000000..3664f5c
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/nl_NL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Geert Wirken                                                  |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['useimapsubscriptions'] = 'Gebruik IMAP-abonneringen';
+
index 8544c7d30e2c6b9e9358b47e8511ba3618eaf097..15513d5591f7bf5dd44f743ac1223377321b79b5 100644 (file)
@@ -1,6 +1,18 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/pl_PL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
-$labels['useimapsubscriptions']  = 'Używaj subskrypcji IMAP';
+$labels['useimapsubscriptions'] = 'Używaj subskrypcji IMAP';
 
-?>
diff --git a/plugins/subscriptions_option/localization/pt_BR.inc b/plugins/subscriptions_option/localization/pt_BR.inc
new file mode 100644 (file)
index 0000000..b7480db
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/pt_BR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Victor Benincasa <vbenincasa@gmail.com>                       |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['useimapsubscriptions'] = 'Usar função de inscrição em pastas IMAP';
+
diff --git a/plugins/subscriptions_option/localization/pt_PT.inc b/plugins/subscriptions_option/localization/pt_PT.inc
new file mode 100644 (file)
index 0000000..13ea3a4
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/pt_PT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: David                                                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['useimapsubscriptions'] = 'Use subscrições IMAP';
+
index 5deb84e0d34197a5753efb8ec0c951cb79b07c46..0d6b1d27484e0a74f356a6da7699ca5857409c1b 100644 (file)
@@ -1,6 +1,18 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ru_RU/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
-$labels['useimapsubscriptions']  = 'Использовать IMAP подписку';
+$labels['useimapsubscriptions'] = 'Использовать IMAP подписку';
 
-?>
diff --git a/plugins/subscriptions_option/localization/sk_SK.inc b/plugins/subscriptions_option/localization/sk_SK.inc
new file mode 100644 (file)
index 0000000..667264a
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sk_SK/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: panda                                                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['useimapsubscriptions'] = 'Použi IMAP nastavenia';
+
diff --git a/plugins/subscriptions_option/localization/sl_SI.inc b/plugins/subscriptions_option/localization/sl_SI.inc
new file mode 100644 (file)
index 0000000..3c39434
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sl_SI/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Barbara Krasovec <barbarak@arnes.si>                          |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['useimapsubscriptions'] = 'Uporabi IMAP-naročnino';
+
diff --git a/plugins/subscriptions_option/localization/sr_CS.inc b/plugins/subscriptions_option/localization/sr_CS.inc
new file mode 100644 (file)
index 0000000..c582ecc
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sr_CS/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Saša Zejnilović <zejnils@gmail.com>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['useimapsubscriptions'] = 'Користите ИМАП Уписивање';
+
index 05b7006f4919f341741a61a0c6a6065a9f5360ed..bf0ee581a77a2629ca13cb156842e7d16ba3d7fc 100644 (file)
@@ -1,6 +1,18 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sv_SE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
-$labels['useimapsubscriptions']  = 'Använd IMAP-prenumerationer';
+$labels['useimapsubscriptions'] = 'Använd IMAP-prenumerationer';
 
-?>
diff --git a/plugins/subscriptions_option/localization/tr_TR.inc b/plugins/subscriptions_option/localization/tr_TR.inc
new file mode 100644 (file)
index 0000000..0ebd48d
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/tr_TR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: ismail yenigul                                                |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['useimapsubscriptions'] = 'IMAP  Aboneliklerini kullan';
+
index f310b51b705cd648cb9928ffd4f2c75f0c3ce9b9..18b4bf2b1bd1945750a2a5ac748fe918b4d6c29a 100644 (file)
@@ -1,6 +1,18 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/zh_TW/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
+*/
+
 $labels = array();
-$labels['useimapsubscriptions']  = '使用IMAP訂閱';
+$labels['useimapsubscriptions'] = '使用IMAP訂閱';
 
-?>
diff --git a/plugins/subscriptions_option/package.xml b/plugins/subscriptions_option/package.xml
new file mode 100644 (file)
index 0000000..79d44f8
--- /dev/null
@@ -0,0 +1,69 @@
+<?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>subscriptions_option</name>
+       <channel>pear.roundcube.net</channel>
+       <summary>Option to disable IMAP subscriptions</summary>
+       <description>
+           A plugin which can enable or disable the use of imap subscriptions.
+        It includes a toggle on the settings page under "Server Settings".
+        The preference can also be locked.
+       </description>
+       <lead>
+               <name>Thomas Bruederli</name>
+               <user>thomasb</user>
+               <email>roundcube@gmail.com</email>
+               <active>yes</active>
+       </lead>
+       <developer>
+           <name>Ziba Scott</name>
+           <user>ziba</user>
+           <email>ziba@umich.edu</email>
+           <active>yes</active>
+       </developer>
+       <date>2012-05-21</date>
+       <version>
+               <release>1.3</release>
+               <api>1.1</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>-</notes>
+       <contents>
+               <dir baseinstalldir="/" name="/">
+                       <file name="subscriptions_option.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="localization/cs_CZ.inc" role="data"></file>
+                       <file name="localization/de_CH.inc" role="data"></file>
+                       <file name="localization/de_DE.inc" role="data"></file>
+                       <file name="localization/en_US.inc" role="data"></file>
+                       <file name="localization/es_ES.inc" role="data"></file>
+                       <file name="localization/et_EE.inc" role="data"></file>
+                       <file name="localization/gl_ES.inc" role="data"></file>
+                       <file name="localization/ja_JP.inc" role="data"></file>
+                       <file name="localization/pl_PL.inc" role="data"></file>
+                       <file name="localization/ru_RU.inc" role="data"></file>
+                       <file name="localization/sv_SE.inc" role="data"></file>
+                       <file name="localization/zh_TW.inc" 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>
index c0eb90c225d91ff9574198ec1521405563fa4a9f..8b27afbdc50436544f375f888a7c9ddeca71c364 100644 (file)
  * 'dont_override' list and the global option has changed, don't expect
  * to see the change until the folder list cache is refreshed.
  *
- * @version 1.1
+ * @version @package_version@
  * @author Ziba Scott
  */
 class subscriptions_option extends rcube_plugin
 {
     public $task = 'mail|settings';
-    
+
     function init()
     {
         $this->add_texts('localization/', false);
@@ -34,7 +34,7 @@ class subscriptions_option extends rcube_plugin
             $this->add_hook('preferences_list', array($this, 'settings_blocks'));
             $this->add_hook('preferences_save', array($this, 'save_prefs'));
         }
-        $this->add_hook('mailboxes_list', array($this, 'mailboxes_list'));
+        $this->add_hook('storage_folders', array($this, 'mailboxes_list'));
         $this->add_hook('folders_list', array($this, 'folders_list'));
     }
 
@@ -65,8 +65,8 @@ class subscriptions_option extends rcube_plugin
             // if the use_subscriptions preference changes, flush the folder cache
             if (($use_subscriptions && !isset($_POST['_use_subscriptions'])) ||
                 (!$use_subscriptions && isset($_POST['_use_subscriptions']))) {
-                    $rcmail->imap_connect();
-                    $rcmail->imap->clear_cache('mailboxes');
+                    $storage = $rcmail->get_storage();
+                    $storage->clear_cache('mailboxes');
             }
         }
         return $args;
@@ -76,7 +76,7 @@ class subscriptions_option extends rcube_plugin
     {
         $rcmail = rcmail::get_instance();
         if (!$rcmail->config->get('use_subscriptions', true)) {
-            $args['folders'] = $rcmail->imap->conn->listMailboxes($args['root'], $args['name']);
+            $args['folders'] = $rcmail->get_storage()->list_folders_direct();
         }
         return $args;
     }
diff --git a/plugins/userinfo/localization/ar_SA.inc b/plugins/userinfo/localization/ar_SA.inc
new file mode 100644 (file)
index 0000000..5c8cd3c
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ar_SA/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Ossama M. Khayat <okhayat@yahoo.com>                          |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['userinfo'] = 'معلومات المستخدم';
+$labels['created'] = 'أُنشئ في';
+$labels['lastlogin'] = 'آخر دخول';
+$labels['defaultidentity'] = 'الهوية الافتراضية';
+
diff --git a/plugins/userinfo/localization/be_BE.inc b/plugins/userinfo/localization/be_BE.inc
new file mode 100644 (file)
index 0000000..3127785
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/be_BE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Alex Nehaichik <nab@mail.by>                                  |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['userinfo'] = 'Асабістыя звесткі';
+$labels['created'] = 'Створаны';
+$labels['lastlogin'] = 'Апошні ўваход';
+$labels['defaultidentity'] = 'Стандартнае ўвасабленне';
+
diff --git a/plugins/userinfo/localization/bs_BA.inc b/plugins/userinfo/localization/bs_BA.inc
new file mode 100644 (file)
index 0000000..3232eee
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/bs_BA/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kenan Dervišević <kenan3008@gmail.com>                      |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['userinfo'] = 'Korisničke informacije';
+$labels['created'] = 'Kreirano';
+$labels['lastlogin'] = 'Zadnja prijava';
+$labels['defaultidentity'] = 'Glavni identitet';
+
diff --git a/plugins/userinfo/localization/ca_ES.inc b/plugins/userinfo/localization/ca_ES.inc
new file mode 100644 (file)
index 0000000..84f765a
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ca_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jordi Sanfeliu <jordi@fibranet.cat>                           |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['userinfo'] = 'Informació de l\'usuari/a';
+$labels['created'] = 'Creat';
+$labels['lastlogin'] = 'Última connexió';
+$labels['defaultidentity'] = 'Identitat per defecte';
+
index 20cd4ae9bfafc1a404194fbbb1c797705f87bf13..864a37a38ad989dbd3437962ad9a6817316c69bf 100644 (file)
@@ -1,27 +1,22 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/cs_CZ/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube userinfo plugin                        |
-| Copyright (C) 2005-2009, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Milan Kozak <hodza@hodza.net>                                 |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 2993 2009-09-26 18:32:07Z alec $
-
+ +-----------------------------------------------------------------------+
+ | localization/cs_CZ/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $labels = array();
-$labels['infosfor'] = 'Informace pro';
 $labels['userinfo'] = 'Uživatel';
 $labels['created'] = 'Vytvořen';
 $labels['lastlogin'] = 'Naspoledy přihlášen';
 $labels['defaultidentity'] = 'Výchozí identita';
 
-?>
\ No newline at end of file
diff --git a/plugins/userinfo/localization/cy_GB.inc b/plugins/userinfo/localization/cy_GB.inc
new file mode 100644 (file)
index 0000000..9521c70
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/cy_GB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Dafydd Tomos <Unknown>                                        |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['userinfo'] = 'Gwybodaeth defnyddiwr';
+$labels['created'] = 'Crëwyd';
+$labels['lastlogin'] = 'Mewngofnodiad diwethaf';
+$labels['defaultidentity'] = 'Personoliaeth arferol';
+
index 0fed30935e11dd50ce608648d362f823021b82fa..fd6f2ad6d4ea5574b3f95d2daacbb3dbe226ea15 100644 (file)
@@ -1,9 +1,22 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/da_DK/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Johannes Hessellund <osos@openeyes.dk>                        |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
-$labels['userinfo'] = 'Bruger info';
+$labels['userinfo'] = 'Brugerinfo';
 $labels['created'] = 'Oprettet';
 $labels['lastlogin'] = 'Sidste login';
-$labels['defaultidentity'] = 'Standard identitet';
+$labels['defaultidentity'] = 'Standardidentitet';
 
-?>
index 5f236b66c4d74a4d58e5cd0b53d4cca17845d6df..47c80f9c570241ca475f17944b67e4b55979a443 100644 (file)
@@ -1,9 +1,22 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/de_CH/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['userinfo'] = 'Benutzerinfo';
 $labels['created'] = 'Erstellt';
 $labels['lastlogin'] = 'Letztes Login';
 $labels['defaultidentity'] = 'Standard-Absender';
 
-?>
\ No newline at end of file
diff --git a/plugins/userinfo/localization/de_DE.inc b/plugins/userinfo/localization/de_DE.inc
new file mode 100644 (file)
index 0000000..e770f3d
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/de_DE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: akn <Unknown>                                                 |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['userinfo'] = 'Benutzer-Information';
+$labels['created'] = 'angelegt';
+$labels['lastlogin'] = 'letzte Anmeldung';
+$labels['defaultidentity'] = 'Standard-Identität';
+
diff --git a/plugins/userinfo/localization/en_GB.inc b/plugins/userinfo/localization/en_GB.inc
new file mode 100644 (file)
index 0000000..3a06ef9
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/en_GB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Tony Whitmore <Unknown>                                       |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['userinfo'] = 'User info';
+$labels['created'] = 'Created';
+$labels['lastlogin'] = 'Last Login';
+$labels['defaultidentity'] = 'Default Identity';
+
diff --git a/plugins/userinfo/localization/eo.inc b/plugins/userinfo/localization/eo.inc
new file mode 100644 (file)
index 0000000..8f95ce7
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/eo/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Michael Moroni <michael.moroni@mailoo.org>                    |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['userinfo'] = 'Informoj pri uzanto';
+$labels['created'] = 'Kreita';
+$labels['lastlogin'] = 'Lasta ensaluto';
+$labels['defaultidentity'] = 'Apriora idento';
+
index dd6662fc0072fb6f49e23e18c9f3b3e9b1d2c965..4fc3fd8678672316359e3dd3b86d28409238bf5e 100644 (file)
@@ -1,9 +1,22 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/es_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['userinfo'] = 'Información de usuario';
 $labels['created'] = 'Creado';
 $labels['lastlogin'] = 'Última conexión';
 $labels['defaultidentity'] = 'Identidad predeterminada';
 
-?>
\ No newline at end of file
index 97830b45c5049d8867abb72d8ab44d18ea4fa7bc..662c61831fb27eb1af108af5f00bda318a8d725f 100644 (file)
@@ -1,9 +1,22 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/et_EE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['userinfo'] = 'Kasutaja info';
 $labels['created'] = 'Loodud';
 $labels['lastlogin'] = 'Viimane logimine';
 $labels['defaultidentity'] = 'Vaikeidentiteet';
 
-?>
diff --git a/plugins/userinfo/localization/fa_IR.inc b/plugins/userinfo/localization/fa_IR.inc
new file mode 100644 (file)
index 0000000..b695ca4
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fa_IR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Hamid <abbaszadeh.h@gmail.com>                                |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['userinfo'] = 'اطلاعات کاربر';
+$labels['created'] = 'ایجاد شده';
+$labels['lastlogin'] = 'آخرین ورود';
+$labels['defaultidentity'] = 'شناسه پیش‌فرض';
+
diff --git a/plugins/userinfo/localization/fi_FI.inc b/plugins/userinfo/localization/fi_FI.inc
new file mode 100644 (file)
index 0000000..00a5004
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fi_FI/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jiri Grönroos <Unknown>                                      |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['userinfo'] = 'Käyttäjätiedot';
+$labels['created'] = 'Luotu';
+$labels['lastlogin'] = 'Viimeisin kirjautuminen';
+$labels['defaultidentity'] = 'Oletushenkilöllisyys';
+
old mode 100644 (file)
new mode 100755 (executable)
index ef7b8aa..ccb1813
@@ -1,9 +1,22 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fr_FR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['userinfo'] = 'Info utilisateur';
 $labels['created'] = 'Date de création';
 $labels['lastlogin'] = 'Dernière connexion';
 $labels['defaultidentity'] = 'Identité principale';
 
-?>
index bf285d37f2ac13a8a7515df5ea39c85aedbd041c..5e4307730c2207d3cd090275ceaead9f60472bd2 100644 (file)
@@ -1,9 +1,22 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/gl_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['userinfo'] = 'Información do usuario';
 $labels['created'] = 'Creado';
 $labels['lastlogin'] = 'Última conexión';
 $labels['defaultidentity'] = 'Identidade predeterminada';
 
-?>
\ No newline at end of file
diff --git a/plugins/userinfo/localization/he_IL.inc b/plugins/userinfo/localization/he_IL.inc
new file mode 100644 (file)
index 0000000..d027c14
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/he_IL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Moshe Leibovitch <moish@mln.co.il>                            |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['userinfo'] = 'פרטי המשתמש';
+$labels['created'] = 'נוצר';
+$labels['lastlogin'] = 'הכמיסה האחרונה למערכת';
+$labels['defaultidentity'] = 'זהות ברירת מחדל';
+
diff --git a/plugins/userinfo/localization/hr_HR.inc b/plugins/userinfo/localization/hr_HR.inc
new file mode 100644 (file)
index 0000000..4df604e
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/hr_HR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Svebor Prstačić <svebor.prstacic@gmail.com>                 |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['userinfo'] = 'Informacije o korisniku';
+$labels['created'] = 'Stvoreno';
+$labels['lastlogin'] = 'Zadnja prijava (login)';
+$labels['defaultidentity'] = 'Preddefinirani identitet';
+
diff --git a/plugins/userinfo/localization/hu_HU.inc b/plugins/userinfo/localization/hu_HU.inc
new file mode 100644 (file)
index 0000000..a3497c7
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/hu_HU/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Droszler Gabor <droszler@datatrans.hu>                        |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['userinfo'] = 'Felhasználói információ';
+$labels['created'] = 'Létrehozva';
+$labels['lastlogin'] = 'Utolsó bejelentkezés';
+$labels['defaultidentity'] = 'Alapértelmezett azonosító';
+
diff --git a/plugins/userinfo/localization/hy_AM.inc b/plugins/userinfo/localization/hy_AM.inc
new file mode 100644 (file)
index 0000000..76146be
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/hy_AM/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Vahan Yerkanian <vahan@yerkanian.com>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['userinfo'] = 'Օգտվողի տվյալներ';
+$labels['created'] = 'Ստեղծված';
+$labels['lastlogin'] = 'Վերջին մուտքը`';
+$labels['defaultidentity'] = 'Լռելյալ ինքնությունն';
+
diff --git a/plugins/userinfo/localization/ia.inc b/plugins/userinfo/localization/ia.inc
new file mode 100644 (file)
index 0000000..607ddba
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ia/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Emilio Sepulveda <emilio@chilemoz.org>                        |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['userinfo'] = 'Information de usator';
+$labels['created'] = 'Create';
+$labels['lastlogin'] = 'Ultime initio de session';
+$labels['defaultidentity'] = 'Identitate predeterminate';
+
diff --git a/plugins/userinfo/localization/ia_IA.inc b/plugins/userinfo/localization/ia_IA.inc
new file mode 100644 (file)
index 0000000..d186863
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ia_IA/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Emilio Sepulveda <emilio@chilemoz.org>                        |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['userinfo'] = 'Information de usator';
+$labels['created'] = 'Create';
+$labels['lastlogin'] = 'Ultime initio de session';
+$labels['defaultidentity'] = 'Identitate predeterminate';
+
diff --git a/plugins/userinfo/localization/id_ID.inc b/plugins/userinfo/localization/id_ID.inc
new file mode 100644 (file)
index 0000000..8eed1d8
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/id_ID/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Putu Arya Sabda Wijaya <Unknown>                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['userinfo'] = 'Informasi pengguna';
+$labels['created'] = 'Telah dibuat';
+$labels['lastlogin'] = 'Masuk Terakhir';
+$labels['defaultidentity'] = 'Identitas Standar';
+
diff --git a/plugins/userinfo/localization/it_IT.inc b/plugins/userinfo/localization/it_IT.inc
new file mode 100644 (file)
index 0000000..9c891b7
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/it_IT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: emilio brambilla <Unknown>                                    |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['userinfo'] = 'Informazioni utente';
+$labels['created'] = 'Creato';
+$labels['lastlogin'] = 'Ultimo Login';
+$labels['defaultidentity'] = 'Identità predefinita';
+
index 1fd4eaf512bf5c3d5553e638d658f83dff2fb69a..33e7f1667667a47d95c16499db6dc5bfcf04735f 100644 (file)
@@ -1,11 +1,22 @@
 <?php
 
-//  EN-Revision: 3891
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ja_JP/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Takahiro Kambe <Unknown>                                      |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
 
 $labels = array();
 $labels['userinfo'] = 'ユーザー情報';
-$labels['created'] = '作成日';
-$labels['lastlogin'] = '最ログイン';
-$labels['defaultidentity'] = 'æ¨\99æº\96の識別情報';
+$labels['created'] = '作成日';
+$labels['lastlogin'] = '最後のログイン';
+$labels['defaultidentity'] = 'æ\97¢å®\9aの識別情報';
 
-?>
\ No newline at end of file
diff --git a/plugins/userinfo/localization/ko_KR.inc b/plugins/userinfo/localization/ko_KR.inc
new file mode 100644 (file)
index 0000000..c409b68
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ko_KR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kim, Woohyun <woohyun.kim@gmail.com>                          |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['userinfo'] = '사용자 정보';
+$labels['created'] = '생성됨';
+$labels['lastlogin'] = '마지막 로그인';
+$labels['defaultidentity'] = '기본 신분증';
+
diff --git a/plugins/userinfo/localization/ku.inc b/plugins/userinfo/localization/ku.inc
new file mode 100644 (file)
index 0000000..fe211f0
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ku/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: david absalan <absalan@live.com>                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['userinfo'] = 'nawnişani bakar henar';
+$labels['created'] = 'Hat afirandin';
+$labels['lastlogin'] = 'axrin hatna jurawa';
+$labels['defaultidentity'] = 'Nasnameya Pêşsalixbûyî';
+
diff --git a/plugins/userinfo/localization/lt_LT.inc b/plugins/userinfo/localization/lt_LT.inc
new file mode 100644 (file)
index 0000000..af518fb
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/lt_LT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Rimas Kudelis <rq@akl.lt>                                     |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['userinfo'] = 'Informacija apie naudotoją';
+$labels['created'] = 'Sukurtas';
+$labels['lastlogin'] = 'Paskutinį kartą prisijungė';
+$labels['defaultidentity'] = 'Numatytoji tapatybė';
+
diff --git a/plugins/userinfo/localization/lv_LV.inc b/plugins/userinfo/localization/lv_LV.inc
new file mode 100644 (file)
index 0000000..bd7369b
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/lv_LV/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Ivars Strazdiņš <Unknown>                                   |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['userinfo'] = 'Informācija par lietotāju';
+$labels['created'] = 'Izveidots';
+$labels['lastlogin'] = 'Pēdējā pieteikšanās';
+$labels['defaultidentity'] = 'Noklusētā identitāte';
+
diff --git a/plugins/userinfo/localization/ml_IN.inc b/plugins/userinfo/localization/ml_IN.inc
new file mode 100644 (file)
index 0000000..7199647
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ml_IN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Anish A <aneesh.nl@gmail.com>                                 |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['userinfo'] = 'ഉപയോക്താവിന്റെ വിവരം';
+$labels['created'] = 'നിര്‍മ്മിച്ചു';
+$labels['lastlogin'] = 'അവസാന പ്രവേശനം';
+$labels['defaultidentity'] = 'സാധാരണ വ്യക്തിത്വം';
+
diff --git a/plugins/userinfo/localization/ml_ML.inc b/plugins/userinfo/localization/ml_ML.inc
new file mode 100644 (file)
index 0000000..7927f6d
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ml_ML/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Anish A <aneesh.nl@gmail.com>                                 |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['userinfo'] = 'ഉപയോക്താവിന്റെ വിവരം';
+$labels['created'] = 'നിര്‍മ്മിച്ചു';
+$labels['lastlogin'] = 'അവസാന പ്രവേശനം';
+$labels['defaultidentity'] = 'സാധാരണ വ്യക്തിത്വം';
+
diff --git a/plugins/userinfo/localization/mr_IN.inc b/plugins/userinfo/localization/mr_IN.inc
new file mode 100644 (file)
index 0000000..6372cd6
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/mr_IN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Devendra Buddhikot <devendradb@rediffmail.com>                |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['userinfo'] = 'वापरकर्त्याची माहिती';
+$labels['created'] = 'निर्माण केलेले';
+
diff --git a/plugins/userinfo/localization/nb_NB.inc b/plugins/userinfo/localization/nb_NB.inc
new file mode 100644 (file)
index 0000000..7ae2832
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/nb_NB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Patrick Kvaksrud <patrick@idrettsforbundet.no>                |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['userinfo'] = 'Brukerinformasjon';
+$labels['created'] = 'Opprettet';
+$labels['lastlogin'] = 'Sist logget inn';
+$labels['defaultidentity'] = 'Standard identitet';
+
diff --git a/plugins/userinfo/localization/nl_NL.inc b/plugins/userinfo/localization/nl_NL.inc
new file mode 100644 (file)
index 0000000..dd93ec6
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/nl_NL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Geert Wirken <Unknown>                                        |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['userinfo'] = 'Gebruikersinformatie';
+$labels['created'] = 'Aangemaakt';
+$labels['lastlogin'] = 'Laatste login';
+$labels['defaultidentity'] = 'Standaardidentiteit';
+
index 6b03c32e7ec30412c8aa00fe8488361680790b11..f59d9aa43daaffafcfec9500984da9f61a37cdfe 100644 (file)
@@ -1,9 +1,22 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/pl_PL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['userinfo'] = 'Informacje';
 $labels['created'] = 'Utworzony';
 $labels['lastlogin'] = 'Ostatnie logowanie';
 $labels['defaultidentity'] = 'Domyślna tożsamość';
 
-?>
index 4ca54eb94ae23dc5aa4dbfdcb1c6086ad64cd369..a4f771923223ca199993befca0de855430183ca9 100644 (file)
@@ -1,9 +1,22 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/pt_BR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Claudio F Filho <filhocf@gmail.com>                           |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
-$labels['userinfo'] = 'Info do usuário';
+$labels['userinfo'] = 'Informações do usuário';
 $labels['created'] = 'Criado';
 $labels['lastlogin'] = 'Último Login';
 $labels['defaultidentity'] = 'Identidade Padrão';
 
-?>
\ No newline at end of file
index 45009f9f4a42191c46949b75e11b9e17a81d553c..decd034843e2a72915ce72575f7ffba642b649f2 100644 (file)
@@ -1,9 +1,22 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/pt_PT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: David <Unknown>                                               |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['userinfo'] = 'Informação do utilizador';
 $labels['created'] = 'Criado';
-$labels['lastlogin'] = 'Último login';
+$labels['lastlogin'] = 'Último acesso';
 $labels['defaultidentity'] = 'Identidade pré-definida';
 
-?>
old mode 100644 (file)
new mode 100755 (executable)
index bf7a476..77c8a39
@@ -1,9 +1,22 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ro_RO/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['userinfo'] = 'Informatii utilisator';
 $labels['created'] = 'Data creatiei';
 $labels['lastlogin'] = 'Ultima conectare';
 $labels['defaultidentity'] = 'Identitate principala';
 
-?>
index 0e7ed4f8a498b25d2660da28add28c0be728c501..d4fd2ca5eb6ba714091537ed6a7b6f73aa183662 100644 (file)
@@ -1,9 +1,22 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ru_RU/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['userinfo'] = 'Информация';
 $labels['created'] = 'Создан';
 $labels['lastlogin'] = 'Последний вход';
 $labels['defaultidentity'] = 'Профиль по умолчанию';
 
-?>
diff --git a/plugins/userinfo/localization/sk_SK.inc b/plugins/userinfo/localization/sk_SK.inc
new file mode 100644 (file)
index 0000000..31f2fe7
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sk_SK/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: panda <Unknown>                                               |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['userinfo'] = 'Užívateľské informácie';
+$labels['created'] = 'Vytvorené';
+$labels['lastlogin'] = 'Posledné prihlásenie';
+$labels['defaultidentity'] = 'Štandardná identita';
+
diff --git a/plugins/userinfo/localization/sl_SI.inc b/plugins/userinfo/localization/sl_SI.inc
new file mode 100644 (file)
index 0000000..2c406ec
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sl_SI/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Barbara Krasovec <barbarak@arnes.si>                          |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['userinfo'] = 'Podatki o uporabniku';
+$labels['created'] = 'Ustvarjen';
+$labels['lastlogin'] = 'Zadnja prijava';
+$labels['defaultidentity'] = 'Privzeta identiteta';
+
diff --git a/plugins/userinfo/localization/sr_CS.inc b/plugins/userinfo/localization/sr_CS.inc
new file mode 100644 (file)
index 0000000..fb32af4
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sr_CS/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Saša Zejnilović <zejnils@gmail.com>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['userinfo'] = 'Подаци о кориснику';
+$labels['created'] = 'Направљено';
+$labels['lastlogin'] = 'Последњи Логин';
+$labels['defaultidentity'] = 'подразумевани идентитет';
+
index a34923a889c26020f1cdc1b0687ac34211cac450..3da833196ac7fb43affab1e277f9ecdc19bc4e93 100644 (file)
@@ -1,9 +1,22 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sv_SE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['userinfo'] = 'Användarinfo';
 $labels['created'] = 'Skapad';
 $labels['lastlogin'] = 'Senast inloggad';
 $labels['defaultidentity'] = 'Standardprofil';
 
-?>
\ No newline at end of file
diff --git a/plugins/userinfo/localization/tr_TR.inc b/plugins/userinfo/localization/tr_TR.inc
new file mode 100644 (file)
index 0000000..636fab8
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/tr_TR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: ismail yenigul <Unknown>                                      |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['userinfo'] = 'Kullanıcı bilgisi';
+$labels['created'] = 'Oluşturuldu';
+$labels['lastlogin'] = 'Son Giriş';
+$labels['defaultidentity'] = 'Öntanımlı kimlik';
+
diff --git a/plugins/userinfo/localization/uk_UA.inc b/plugins/userinfo/localization/uk_UA.inc
new file mode 100644 (file)
index 0000000..bef3d18
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/uk_UA/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Anton Gladky <Unknown>                                        |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['userinfo'] = 'Інформація';
+$labels['created'] = 'Створено';
+$labels['lastlogin'] = 'Останній захід';
+$labels['defaultidentity'] = 'Профіль за замовчуванням';
+
diff --git a/plugins/userinfo/localization/vi_VN.inc b/plugins/userinfo/localization/vi_VN.inc
new file mode 100644 (file)
index 0000000..813bd0a
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/vi_VN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kenny Tran <kennethanh@gmail.com>                             |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['userinfo'] = 'Thông tin người dùng';
+$labels['created'] = 'Được tạo';
+$labels['lastlogin'] = 'Lần đăng nhập cuối';
+$labels['defaultidentity'] = 'Nhận diện mặc định';
+
diff --git a/plugins/userinfo/localization/zh_CN.inc b/plugins/userinfo/localization/zh_CN.inc
new file mode 100644 (file)
index 0000000..c3d3303
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/zh_CN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: waring_id <Unknown>                                           |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['userinfo'] = '用户信息';
+$labels['created'] = '创建';
+$labels['lastlogin'] = '最后登陆';
+$labels['defaultidentity'] = '默认身份';
+
index d3124459e787acd45eef299de43efd2c6c7e0027..c5834ce4a48371da8daf2ad74f087f89afef81e6 100644 (file)
@@ -1,9 +1,22 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/zh_TW/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['userinfo'] = '使用者資訊';
 $labels['created'] = '建立時間';
 $labels['lastlogin'] = '上次登入';
 $labels['defaultidentity'] = '預設身份';
 
-?>
diff --git a/plugins/userinfo/package.xml b/plugins/userinfo/package.xml
new file mode 100644 (file)
index 0000000..dd25d44
--- /dev/null
@@ -0,0 +1,70 @@
+<?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>userinfo</name>
+       <channel>pear.roundcube.net</channel>
+       <summary>Information about logged in user</summary>
+       <description>
+           Sample plugin that adds a new tab to the settings section
+        to display some information about the current user.
+       </description>
+       <lead>
+               <name>Thomas Bruederli</name>
+               <user>thomasb</user>
+               <email>roundcube@gmail.com</email>
+               <active>yes</active>
+       </lead>
+       <date>2011-11-21</date>
+       <version>
+               <release>1.0</release>
+               <api>1.0</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="userinfo.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="userinfo.js" role="data">
+                               <tasks:replace from="@name@" to="name" type="package-info"/>
+                               <tasks:replace from="@package_version@" to="version" type="package-info"/>
+                       </file>
+                       <file name="localization/cs_CZ.inc" role="data"></file>
+                       <file name="localization/da_DK.inc" role="data"></file>
+                       <file name="localization/de_CH.inc" role="data"></file>
+                       <file name="localization/en_US.inc" role="data"></file>
+                       <file name="localization/es_ES.inc" role="data"></file>
+                       <file name="localization/et_EE.inc" role="data"></file>
+                       <file name="localization/fr_FR.inc" role="data"></file>
+                       <file name="localization/gl_ES.inc" role="data"></file>
+                       <file name="localization/ja_JP.inc" role="data"></file>
+                       <file name="localization/pl_PL.inc" role="data"></file>
+                       <file name="localization/pt_BR.inc" role="data"></file>
+                       <file name="localization/pt_PT.inc" role="data"></file>
+                       <file name="localization/ro_RO.inc" role="data"></file>
+                       <file name="localization/ru_RU.inc" role="data"></file>
+                       <file name="localization/sv_SE.inc" role="data"></file>
+                       <file name="localization/zh_TW.inc" 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/vcard_attachments/localization/be_BE.inc b/plugins/vcard_attachments/localization/be_BE.inc
new file mode 100644 (file)
index 0000000..d5b6c45
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/be_BE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Alex Nehaichik <nab@mail.by>                                  |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = 'Дадаць vCard у адрасную кнігу';
+$labels['vcardsavefailed'] = 'Немагчыма захаваць vCard';
+
diff --git a/plugins/vcard_attachments/localization/bs_BA.inc b/plugins/vcard_attachments/localization/bs_BA.inc
new file mode 100644 (file)
index 0000000..2c2a123
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/bs_BA/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kenan Dervišević <kenan3008@gmail.com>                      |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = 'Dodaj vCard u adresar';
+$labels['vcardsavefailed'] = 'Nije moguće sačuvati vCard';
+
diff --git a/plugins/vcard_attachments/localization/ca_ES.inc b/plugins/vcard_attachments/localization/ca_ES.inc
new file mode 100644 (file)
index 0000000..16caca6
--- /dev/null
@@ -0,0 +1,19 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ca_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jordi Sanfeliu <jordi@fibranet.cat>                           |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = 'Afegeix la vCard a la llibreta d\'adreces';
+$labels['vcardsavefailed'] = 'No s\'ha pogut desar la vCard';
+
index 11ae8c98ff47027977e7d6eb147f4cfee3262e87..d6371e6a2e72af96198219d71da197aab2d597ae 100644 (file)
@@ -1,21 +1,20 @@
 <?php
 
 /*
-+-----------------------------------------------------------------------+
-| language/cs_CZ/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2008-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Ales Pospichal <ales@pospichalales.info>                      |
-+-----------------------------------------------------------------------+
-
+ +-----------------------------------------------------------------------+
+ | localization/cs_CZ/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $labels = array();
 $labels['addvcardmsg'] = 'Přidat vCard do adresáře';
 $labels['vcardsavefailed'] = 'Nelze uložit vCard';
 
-?>
diff --git a/plugins/vcard_attachments/localization/cy_GB.inc b/plugins/vcard_attachments/localization/cy_GB.inc
new file mode 100644 (file)
index 0000000..730ca0c
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/cy_GB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Dafydd Tomos <Unknown>                                        |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = 'Ychwanegu vCard i\'r llyfr cyfeiriadau';
+$labels['vcardsavefailed'] = 'Methwyd cadw\'r vCard';
+
diff --git a/plugins/vcard_attachments/localization/da_DK.inc b/plugins/vcard_attachments/localization/da_DK.inc
new file mode 100644 (file)
index 0000000..9877674
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/da_DK/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: John Loft Christiansen <Unknown>                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = 'Tilføj vCard til adressebogen';
+$labels['vcardsavefailed'] = 'Kan ikke gemme dette vCard';
+
index 48bb9001396bc36be1466435426a7b6616b83540..46ed9cbf598bf9beb006333b9111edb462d0cdb0 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/de_CH/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['addvcardmsg'] = 'Kontakt im Adressbuch speichern';
 $labels['vcardsavefailed'] = 'Der Kontakt konnte nicht gespeichert werden';
 
-?>
\ No newline at end of file
index 48bb9001396bc36be1466435426a7b6616b83540..7c334c873640c2c1474280ee17e2538edc35c855 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/de_DE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['addvcardmsg'] = 'Kontakt im Adressbuch speichern';
 $labels['vcardsavefailed'] = 'Der Kontakt konnte nicht gespeichert werden';
 
-?>
\ No newline at end of file
diff --git a/plugins/vcard_attachments/localization/en_GB.inc b/plugins/vcard_attachments/localization/en_GB.inc
new file mode 100644 (file)
index 0000000..d768e54
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/en_GB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Tony Whitmore <Unknown>                                       |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = 'Add vCard to addressbook';
+$labels['vcardsavefailed'] = 'Unable to save vCard';
+
diff --git a/plugins/vcard_attachments/localization/eo.inc b/plugins/vcard_attachments/localization/eo.inc
new file mode 100644 (file)
index 0000000..1f962bb
--- /dev/null
@@ -0,0 +1,19 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/eo/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Michael Moroni <michael.moroni@mailoo.org>                    |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = 'Aldoni vCard al adresaro';
+$labels['vcardsavefailed'] = 'vCard ne konserveblas';
+
index 0aba6b391f00b762a060f0cb737a7fc82c49a355..8c81a86b1ba433dde6cf14d5efce2792318abeb5 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/es_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['addvcardmsg'] = 'Añadir la tarjeta a la libreta de direcciones';
 $labels['vcardsavefailed'] = 'No ha sido posible guardar la tarjeta';
 
-?>
\ No newline at end of file
index eb6ce230fcd777edb1c0bf75c3adeab4183efcf6..faaa076b6b2586770be4f4097820ec681a21f2e6 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/et_EE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['addvcardmsg'] = 'Lisa vCard aadressiraamatusse';
 $labels['vcardsavefailed'] = 'vCard salvestamine nurjus';
 
-?>
diff --git a/plugins/vcard_attachments/localization/fa_IR.inc b/plugins/vcard_attachments/localization/fa_IR.inc
new file mode 100644 (file)
index 0000000..8b7dae2
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fa_IR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Hamid <abbaszadeh.h@gmail.com>                                |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = 'افزودن vCard به دفترچه آدرس';
+$labels['vcardsavefailed'] = 'ناتوان در ذخیره vCard';
+
diff --git a/plugins/vcard_attachments/localization/fi_FI.inc b/plugins/vcard_attachments/localization/fi_FI.inc
new file mode 100644 (file)
index 0000000..bd9ae73
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fi_FI/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jiri Grönroos <Unknown>                                      |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = 'Lisää vCard osoitekirjaan';
+$labels['vcardsavefailed'] = 'vCardin tallennus epäonnistui';
+
diff --git a/plugins/vcard_attachments/localization/fr_FR.inc b/plugins/vcard_attachments/localization/fr_FR.inc
new file mode 100644 (file)
index 0000000..355c4f1
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fr_FR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Edouard Moreau <Unknown>                                      |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = 'Ajouter la vCard au carnet d\'adresses';
+$labels['vcardsavefailed'] = 'Impossible d\'enregistrer la vCard';
+
index 4c3574a8fa143ea0442e6e96753e1cd844fbd39b..c2743a0efac3426a2de33e6b78ad1a8365808b85 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/gl_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['addvcardmsg'] = 'Engadir a tarxeta ao caderno de enderezos';
 $labels['vcardsavefailed'] = 'Non foi posible gardar a tarxeta';
 
-?>
\ No newline at end of file
diff --git a/plugins/vcard_attachments/localization/he_IL.inc b/plugins/vcard_attachments/localization/he_IL.inc
new file mode 100644 (file)
index 0000000..433511d
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/he_IL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Moshe Leibovitch <moish@mln.co.il>                            |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = 'הוספת כרטיס ביקור בפורמט vCard לספר הכתובות';
+$labels['vcardsavefailed'] = 'לא ניתן לשמור את כרטיס הביקור  vCard';
+
diff --git a/plugins/vcard_attachments/localization/hr_HR.inc b/plugins/vcard_attachments/localization/hr_HR.inc
new file mode 100644 (file)
index 0000000..045ae8d
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/hr_HR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Svebor Prstačić <svebor.prstacic@gmail.com>                 |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = 'Dodaj vCard u imenik';
+$labels['vcardsavefailed'] = 'Ne mogu pohraniti vCard';
+
diff --git a/plugins/vcard_attachments/localization/hu_HU.inc b/plugins/vcard_attachments/localization/hu_HU.inc
new file mode 100644 (file)
index 0000000..475544d
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/hu_HU/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Droszler Gabor <droszler@datatrans.hu>                        |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = 'vCard hozzáadása a címjegyzékhez';
+$labels['vcardsavefailed'] = 'Sikertelen a vCard mentése';
+
diff --git a/plugins/vcard_attachments/localization/hy_AM.inc b/plugins/vcard_attachments/localization/hy_AM.inc
new file mode 100644 (file)
index 0000000..5799b1c
--- /dev/null
@@ -0,0 +1,19 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/hy_AM/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Vahan Yerkanian <vahan@yerkanian.com>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = 'Ավելացնել vCard-ը հասցեագրքում';
+$labels['vcardsavefailed'] = 'vCard-ի պահպանումը ձախողվեց';
+
diff --git a/plugins/vcard_attachments/localization/id_ID.inc b/plugins/vcard_attachments/localization/id_ID.inc
new file mode 100644 (file)
index 0000000..488b558
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/id_ID/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Putu Arya Sabda Wijaya <Unknown>                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = 'Tambahkan vCard ke buku alamat';
+$labels['vcardsavefailed'] = 'Tidak bisa menyimpan vCard';
+
index 55cde39618448cae9c550c65f22d35de5adc19be..f13b34a924f40393bd565a080ebdd4aeb30e2af7 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/it_IT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['addvcardmsg'] = 'Aggiungi vCard alla Agenda';
 $labels['vcardsavefailed'] = 'Abilita a salvare vCard';
 
-?>
index 0b4d0d91d826e019682897b0350518f48e0521e9..00467a8854f7b7100300eddcda7fc58b8504bd9c 100644 (file)
@@ -1,9 +1,20 @@
 <?php
 
-//  EN-Revision: 3891
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ja_JP/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Takahiro Kambe <Unknown>                                      |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
 
 $labels = array();
-$labels['addvardmsg'] = 'アドレス帳に vCard を追加する';
-$labels['vcardsavefailed'] = 'vCard を保存できませんでした。';
+$labels['addvcardmsg'] = 'vCardをアドレス帳に追加';
+$labels['vcardsavefailed'] = '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
new file mode 100644 (file)
index 0000000..d617efb
--- /dev/null
@@ -0,0 +1,19 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ko_KR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kim, Woohyun <woohyun.kim@gmail.com>                          |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = '주소록에 vCard를 추가';
+$labels['vcardsavefailed'] = 'vCard 저장이 불가능함';
+
diff --git a/plugins/vcard_attachments/localization/lt_LT.inc b/plugins/vcard_attachments/localization/lt_LT.inc
new file mode 100644 (file)
index 0000000..4feb827
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/lt_LT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Rimas Kudelis <rq@akl.lt>                                     |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = 'Įtraukti vizitinę kortelę į adresų knygą';
+$labels['vcardsavefailed'] = 'Įrašyti vizitinės kortelės nepavyko';
+
diff --git a/plugins/vcard_attachments/localization/lv_LV.inc b/plugins/vcard_attachments/localization/lv_LV.inc
new file mode 100644 (file)
index 0000000..1c173f2
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/lv_LV/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Ivars Strazdiņš <Unknown>                                   |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = 'Pievienot vizītkarti adrešu grāmatai';
+$labels['vcardsavefailed'] = 'Nevarēja saglabāt vizītkarti';
+
diff --git a/plugins/vcard_attachments/localization/ml_IN.inc b/plugins/vcard_attachments/localization/ml_IN.inc
new file mode 100644 (file)
index 0000000..1b4d98a
--- /dev/null
@@ -0,0 +1,19 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ml_IN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Anish A <aneesh.nl@gmail.com>                                 |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = 'വിലാസപുസ്തകത്തിലേക്ക് വികാര്‍ഡ് ചേര്‍ക്കുക';
+$labels['vcardsavefailed'] = 'വികാര്‍ഡ് ചേര്‍ക്കാന്‍ പറ്റിയില്ല';
+
diff --git a/plugins/vcard_attachments/localization/ml_ML.inc b/plugins/vcard_attachments/localization/ml_ML.inc
new file mode 100644 (file)
index 0000000..580dbe7
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ml_ML/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Anish A <aneesh.nl@gmail.com>                                 |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = 'വിലാസപുസ്തകത്തിലേക്ക് വികാര്‍ഡ് ചേര്‍ക്കുക';
+$labels['vcardsavefailed'] = 'വികാര്‍ഡ് ചേര്‍ക്കാന്‍ പറ്റിയില്ല';
+
diff --git a/plugins/vcard_attachments/localization/mr_IN.inc b/plugins/vcard_attachments/localization/mr_IN.inc
new file mode 100644 (file)
index 0000000..51ee6a4
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/mr_IN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Devendra Buddhikot <devendradb@rediffmail.com>                |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = 'व्हीकार्ड पत्ते नोंदवहीत समाविष्ट करा';
+$labels['vcardsavefailed'] = 'व्हीकार्ड जतन करण्यास असमर्थ';
+
diff --git a/plugins/vcard_attachments/localization/nb_NB.inc b/plugins/vcard_attachments/localization/nb_NB.inc
new file mode 100644 (file)
index 0000000..6568b7a
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/nb_NB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Runar Furenes <Unknown>                                       |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = 'Legg til vCard i adresseboken';
+$labels['vcardsavefailed'] = 'Ikke i stand til å lagre vCard';
+
diff --git a/plugins/vcard_attachments/localization/nl_NL.inc b/plugins/vcard_attachments/localization/nl_NL.inc
new file mode 100644 (file)
index 0000000..da3a440
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/nl_NL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Geert Wirken <Unknown>                                        |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = 'Voeg vCard toe aan adresboek';
+$labels['vcardsavefailed'] = 'Kan vCard niet opslaan';
+
index 800e35b3808a24200d36e136e3a5ec59870dc4d6..a128895880335f4740289ebc2852c842124bcb87 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/pl_PL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['addvcardmsg'] = 'Dodaj wizytówkę (vCard) do kontaktów';
 $labels['vcardsavefailed'] = 'Nie można zapisać wizytówki (vCard)';
 
-?>
index 263f88442ff3d34e4882e6bf14c524cc58a5b10e..a1bce781ab2b6bbf3a26d8401899997b66124fda 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/pt_BR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['addvcardmsg'] = 'Adicionar o vCard ao Catálogo de Endereços';
 $labels['vcardsavefailed'] = 'Impossível salvar o vCard';
 
-?>
\ No newline at end of file
diff --git a/plugins/vcard_attachments/localization/pt_PT.inc b/plugins/vcard_attachments/localization/pt_PT.inc
new file mode 100644 (file)
index 0000000..2f8fb15
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/pt_PT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: David <Unknown>                                               |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = 'Adicionar o vCard ao Livro de Endereços';
+$labels['vcardsavefailed'] = 'Não foi possível guardar o vCard';
+
diff --git a/plugins/vcard_attachments/localization/ro_RO.inc b/plugins/vcard_attachments/localization/ro_RO.inc
new file mode 100644 (file)
index 0000000..64a9c17
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ro_RO/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: tudor <tudor@starnet-alba.ro>                                 |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = 'Adaugă vCard la agendă';
+$labels['vcardsavefailed'] = 'Nu pot salva vCard';
+
index 1688c5dc8abb974d5f4c57a80c67ea06e93592bd..5225142bf4220e52d00270d5ff3e321780ae7e37 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ru_RU/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['addvcardmsg'] = 'Добавить в контакты';
 $labels['vcardsavefailed'] = 'Не удалось сохранить vCard';
 
-?>
\ No newline at end of file
diff --git a/plugins/vcard_attachments/localization/si_LK.inc b/plugins/vcard_attachments/localization/si_LK.inc
new file mode 100644 (file)
index 0000000..3f1aed5
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/si_LK/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Mohamed Rizmi <Unknown>                                       |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = 'vCard පත ලිපින පොතට එක් කරන්න';
+$labels['vcardsavefailed'] = 'vCard පත සුරැකීම අසාර්ථකයි';
+
diff --git a/plugins/vcard_attachments/localization/sk_SK.inc b/plugins/vcard_attachments/localization/sk_SK.inc
new file mode 100644 (file)
index 0000000..eecbf4f
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sk_SK/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: panda <Unknown>                                               |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = 'Pridať vCard do adresára';
+$labels['vcardsavefailed'] = 'Nemôžem uložiť vCard';
+
diff --git a/plugins/vcard_attachments/localization/sl_SI.inc b/plugins/vcard_attachments/localization/sl_SI.inc
new file mode 100644 (file)
index 0000000..490dc72
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sl_SI/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Barbara Krasovec <barbarak@arnes.si>                          |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = 'Dodaj vCard med Stike.';
+$labels['vcardsavefailed'] = 'Stika vCard ni bilo mogoče shraniti.';
+
diff --git a/plugins/vcard_attachments/localization/sr_CS.inc b/plugins/vcard_attachments/localization/sr_CS.inc
new file mode 100644 (file)
index 0000000..e5b66ed
--- /dev/null
@@ -0,0 +1,19 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sr_CS/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Saša Zejnilović <zejnils@gmail.com>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = 'Додај вЦард у Адресар';
+$labels['vcardsavefailed'] = 'немоћан сачувати вчард';
+
index 4c9faddf95ad73cba1795d590c95d4a12e7f99db..da40bf62864c3a312e773d14f136e632c7b05e97 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/sv_SE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['addvcardmsg'] = 'Lägg till vCard i adressbok';
 $labels['vcardsavefailed'] = 'Kunde inte spara vCard';
 
-?>
\ No newline at end of file
diff --git a/plugins/vcard_attachments/localization/tr_TR.inc b/plugins/vcard_attachments/localization/tr_TR.inc
new file mode 100644 (file)
index 0000000..832ef5d
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/tr_TR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: ismail yenigul <Unknown>                                      |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = 'Vcard\'ı adres deferine ekle';
+$labels['vcardsavefailed'] = 'vCard kaydedilemedi';
+
diff --git a/plugins/vcard_attachments/localization/uk_UA.inc b/plugins/vcard_attachments/localization/uk_UA.inc
new file mode 100644 (file)
index 0000000..9ccfbf6
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/uk_UA/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Anton Gladky <Unknown>                                        |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = 'Додати vCard до контактів';
+$labels['vcardsavefailed'] = 'Не вдалось зберегти vCard';
+
diff --git a/plugins/vcard_attachments/localization/vi_VN.inc b/plugins/vcard_attachments/localization/vi_VN.inc
new file mode 100644 (file)
index 0000000..895694b
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/vi_VN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Hung Pham <phamhung77@gmail.com>                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = 'Thêm vCard vào sổ địa chỉ';
+$labels['vcardsavefailed'] = 'Không thể lưu vCard';
+
diff --git a/plugins/vcard_attachments/localization/zh_CN.inc b/plugins/vcard_attachments/localization/zh_CN.inc
new file mode 100644 (file)
index 0000000..7fe3c8f
--- /dev/null
@@ -0,0 +1,19 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/zh_CN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Christopher Meng <cickumqt@gmail.com>                         |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['addvcardmsg'] = '添加 vCard 到地址簿中';
+$labels['vcardsavefailed'] = '无法保存 vCard';
+
index 361837bfc38b32bc3a265b94589b48b53f89aea3..c20f4416ad5c06ee45bce50797d3d8be7e570a7a 100644 (file)
@@ -1,7 +1,20 @@
 <?php
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/zh_TW/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
 $labels = array();
 $labels['addvcardmsg'] = '加入 vCard 到通訊錄';
 $labels['vcardsavefailed'] = '無法儲存 vCard';
 
-?>
\ No newline at end of file
index e5eaf71879353878c388d9af05f26c111457d772..82b750ad52394e0df01275a44485b358c93e860e 100644 (file)
                <email>alec@alec.pl</email>
                <active>yes</active>
        </lead>
-       <date>2010-10-14</date>
-       <time>19:00</time>
+       <date>2012-04-13</date>
+       <time>12:00</time>
        <version>
-               <release>3.0</release>
-               <api>3.0</api>
+               <release>3.1</release>
+               <api>3.1</api>
        </version>
        <stability>
                <release>stable</release>
                <api>stable</api>
        </stability>
-       <license uri="http://www.gnu.org/licenses/gpl-2.0.html">GNU GPLv2</license>
+       <license uri="http://www.gnu.org/licenses/gpl.html">GNU GPLv3+</license>
        <notes>
-- Exec contact_create hook when adding contact (#1486964)
-- Make icons skinable
-- Display vcard icon on messages list when message is of type vcard
-    </notes>
+- Fixed doble urlencoding of vcard identifier
+- Fixed encoding when default charset is different than vcard charset
+- Improved vcards import to work as addressbook::import procedure (with validation and autofix)
+- Support IDNA
+- Import contacts to default addressbook
+       </notes>
        <contents>
                <dir baseinstalldir="/" name="/">
                        <file name="vcard_attachments.php" role="php">
                                <tasks:replace from="@package_version@" to="version" type="package-info"/>
                        </file>
                        <file name="localization/cs_CZ.inc" role="data"></file>
-                       <file name="localization/en_US.inc" role="data"></file>
                        <file name="localization/de_CH.inc" role="data"></file>
                        <file name="localization/de_DE.inc" role="data"></file>
+                       <file name="localization/en_US.inc" role="data"></file>
                        <file name="localization/es_ES.inc" role="data"></file>
                        <file name="localization/et_EE.inc" role="data"></file>
                        <file name="localization/gl_ES.inc" role="data"></file>
                        <file name="localization/it_IT.inc" role="data"></file>
                        <file name="localization/ja_JP.inc" role="data"></file>
-                       <file name="localization/es_ES.inc" role="data"></file>
                        <file name="localization/pl_PL.inc" role="data"></file>
+                       <file name="localization/pt_BR.inc" role="data"></file>
                        <file name="localization/ru_RU.inc" role="data"></file>
                        <file name="localization/sv_SE.inc" role="data"></file>
                        <file name="localization/zh_TW.inc" role="data"></file>
-                       <file name="skins/default/vcard_add_contact.png" role="data"></file>
-                       <file name="skins/default/vcard.png" role="data"></file>
+                       <file name="skins/classic/style.css" role="data"></file>
+                       <file name="skins/classic/vcard_add_contact.png" role="data"></file>
+                       <file name="skins/classic/vcard.png" role="data"></file>
+                       <file name="skins/larry/style.css" role="data"></file>
+                       <file name="skins/larry/vcard_add_contact.png" role="data"></file>
+                       <file name="skins/larry/vcard.png" role="data"></file>
                </dir>
                <!-- / -->
        </contents>
        </dependencies>
        <phprelease/>
        <changelog>
-           <release>
-               <date>2010-04-28</date>
-               <time>12:00:00</time>
-            <version>
-                       <release>2.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>
+               <release>
+                       <date>2010-04-28</date>
+                       <time>12:00:00</time>
+                       <version>
+                               <release>2.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>
 - Added support for Content-Type: text/directory; profile=vCard
 - Added handler for message bodies of type vCard (#1486683)
 - Added support for more than one vCard attachment/body
 - Added support for more than one contact in one vCard file
 - Created package.xml
-            </notes>
-        </release>
+                       </notes>
+               </release>
+               <release>
+                       <date>2012-03-11</date>
+                       <time>19:00:00</time>
+                       <version>
+                               <release>3.1</release>
+                               <api>3.1</api>
+                       </version>
+                       <stability>
+                               <release>stable</release>
+                               <api>stable</api>
+                       </stability>
+                       <license uri="http://www.gnu.org/licenses/gpl.html">GNU GPLv3+</license>
+                       <notes>
+                               - Add styles for new skin "Larry"
+                       </notes>
+               </release>
+        <release>
+               <date>2012-03-11</date>
+               <time>19:00</time>
+               <version>
+                       <release>3.1-beta</release>
+                       <api>3.1-beta</api>
+               </version>
+               <stability>
+                       <release>stable</release>
+                       <api>stable</api>
+               </stability>
+               <license uri="http://www.gnu.org/licenses/gpl.html">GNU GPLv3+</license>
+               <notes>
+- Add styles for new skin "Larry"
+- Exec contact_create hook when adding contact (#1486964)
+- Make icons skinable
+- Display vcard icon on messages list when message is of type vcard
+               </notes>
+           </release>
        </changelog>
 </package>
diff --git a/plugins/vcard_attachments/skins/classic/style.css b/plugins/vcard_attachments/skins/classic/style.css
new file mode 100644 (file)
index 0000000..044d398
--- /dev/null
@@ -0,0 +1,17 @@
+
+p.vcardattachment {
+       margin: 0.5em 1em;
+       border: 1px solid #999;
+       border-radius:4px;
+       -moz-border-radius: 4px;
+       -webkit-border-radius: 4px;
+       border-radius: 4px;
+       width: auto;
+}
+
+p.vcardattachment a {
+       display: block;
+       background: url(vcard_add_contact.png) 4px 0px no-repeat;
+       padding: 0.7em 0.5em 0.3em 42px;
+       height: 22px;
+}
diff --git a/plugins/vcard_attachments/skins/classic/vcard.png b/plugins/vcard_attachments/skins/classic/vcard.png
new file mode 100644 (file)
index 0000000..8bf6b1b
Binary files /dev/null and b/plugins/vcard_attachments/skins/classic/vcard.png differ
diff --git a/plugins/vcard_attachments/skins/classic/vcard_add_contact.png b/plugins/vcard_attachments/skins/classic/vcard_add_contact.png
new file mode 100644 (file)
index 0000000..478c1f3
Binary files /dev/null and b/plugins/vcard_attachments/skins/classic/vcard_add_contact.png differ
diff --git a/plugins/vcard_attachments/skins/default/vcard.png b/plugins/vcard_attachments/skins/default/vcard.png
deleted file mode 100644 (file)
index 8bf6b1b..0000000
Binary files a/plugins/vcard_attachments/skins/default/vcard.png and /dev/null differ
diff --git a/plugins/vcard_attachments/skins/default/vcard_add_contact.png b/plugins/vcard_attachments/skins/default/vcard_add_contact.png
deleted file mode 100644 (file)
index 478c1f3..0000000
Binary files a/plugins/vcard_attachments/skins/default/vcard_add_contact.png and /dev/null differ
diff --git a/plugins/vcard_attachments/skins/larry/style.css b/plugins/vcard_attachments/skins/larry/style.css
new file mode 100644 (file)
index 0000000..eb70082
--- /dev/null
@@ -0,0 +1,21 @@
+
+p.vcardattachment {
+       margin: 0.5em 1em;
+       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 {
+       display: block;
+       background: url(vcard_add_contact.png) 6px 2px no-repeat;
+       padding: 1.2em 0.5em 0.7em 46px;
+}
diff --git a/plugins/vcard_attachments/skins/larry/vcard.png b/plugins/vcard_attachments/skins/larry/vcard.png
new file mode 100644 (file)
index 0000000..8bf6b1b
Binary files /dev/null and b/plugins/vcard_attachments/skins/larry/vcard.png differ
diff --git a/plugins/vcard_attachments/skins/larry/vcard_add_contact.png b/plugins/vcard_attachments/skins/larry/vcard_add_contact.png
new file mode 100644 (file)
index 0000000..a8ce459
Binary files /dev/null and b/plugins/vcard_attachments/skins/larry/vcard_add_contact.png differ
index 3fb3bf9adc2d7912e95d10a88c000b6b90b033e9..1400cd581b6afac78570fdacbaf4e7bb35099ae1 100644 (file)
@@ -4,6 +4,7 @@
  * Detect VCard attachments and show a button to add them to address book
  *
  * @version @package_version@
+ * @license GNU GPLv3+
  * @author Thomas Bruederli, Aleksander Machniak
  */
 class vcard_attachments extends rcube_plugin
@@ -65,7 +66,7 @@ class vcard_attachments extends rcube_plugin
         $icon = 'plugins/vcard_attachments/' .$this->local_skin_path(). '/vcard_add_contact.png';
 
         foreach ($this->vcard_parts as $part) {
-            $vcards = rcube_vcard::import($this->message->get_part_content($part));
+            $vcards = rcube_vcard::import($this->message->get_part_content($part, null, true));
 
             // successfully parsed vcards?
             if (empty($vcards))
@@ -75,29 +76,29 @@ class vcard_attachments extends rcube_plugin
             if (in_array($part, $this->vcard_bodies))
                 $p['content'] = '';
 
-            $style = 'margin:0.5em 1em; padding:0.2em 0.5em; border:1px solid #999; '
-                .'border-radius:4px; -moz-border-radius:4px; -webkit-border-radius:4px; width: auto';
-
             foreach ($vcards as $idx => $vcard) {
                 $display = $vcard->displayname;
                 if ($vcard->email[0])
                     $display .= ' <'.$vcard->email[0].'>';
 
                 // add box below messsage body
-                $p['content'] .= html::p(array('style' => $style),
+                $p['content'] .= html::p(array('class' => 'vcardattachment'),
                     html::a(array(
                         'href' => "#",
-                        'onclick' => "return plugin_vcard_save_contact('".JQ($part.':'.$idx)."')",
-                        'title' => $this->gettext('addvcardmsg')),
-                        html::img(array('src' => $icon, 'style' => "vertical-align:middle")))
-                    . ' ' . html::span(null, Q($display)));
+                        'onclick' => "return plugin_vcard_save_contact('" . JQ($part.':'.$idx) . "')",
+                        'title' => $this->gettext('addvcardmsg'),
+                        ),
+                        html::span(null, Q($display)))
+                    );
             }
 
             $attach_script = true;
         }
 
-        if ($attach_script)
+        if ($attach_script) {
             $this->include_script('vcardattach.js');
+            $this->include_stylesheet($this->local_skin_path() . '/style.css');
+        }
 
         return $p;
     }
@@ -113,46 +114,59 @@ class vcard_attachments extends rcube_plugin
         $mbox = get_input_value('_mbox', RCUBE_INPUT_POST);
         $mime_id = get_input_value('_part', RCUBE_INPUT_POST);
 
-        $rcmail = rcmail::get_instance();
+        $rcmail  = rcmail::get_instance();
+        $storage = $rcmail->get_storage();
+        $storage->set_folder($mbox);
 
         if ($uid && $mime_id) {
             list($mime_id, $index) = explode(':', $mime_id);
-            $part = $rcmail->imap->get_message_part($uid, $mime_id);
+            $part = $storage->get_message_part($uid, $mime_id, null, null, null, true);
         }
 
         $error_msg = $this->gettext('vcardsavefailed');
 
         if ($part && ($vcards = rcube_vcard::import($part))
-            && ($vcard = $vcards[$index]) && $vcard->displayname && $vcard->email) {
-
-            $contacts = $rcmail->get_address_book(null, true);
-
-            // check for existing contacts
-            $existing = $contacts->search('email', $vcard->email[0], true, false);
-            if ($existing->count) {
-                $rcmail->output->command('display_message', $this->gettext('contactexists'), 'warning');
+            && ($vcard = $vcards[$index]) && $vcard->displayname && $vcard->email
+        ) {
+            $CONTACTS = $this->get_address_book();
+            $email    = $vcard->email[0];
+            $contact  = $vcard->get_assoc();
+            $valid    = true;
+
+            // skip entries without an e-mail address or invalid
+            if (empty($email) || !$CONTACTS->validate($contact, true)) {
+                $valid = false;
             }
             else {
-                // add contact
-                $contact = array(
-                    'name'      => $vcard->displayname,
-                    'firstname' => $vcard->firstname,
-                    'surname'   => $vcard->surname,
-                    'email'     => $vcard->email[0],
-                    'vcard'     => $vcard->export(),
-                );
+                // We're using UTF8 internally
+                $email = rcube_idn_to_utf8($email);
+
+                // compare e-mail address
+                $existing = $CONTACTS->search('email', $email, 1, false);
+                // compare display name
+                if (!$existing->count && $vcard->displayname) {
+                    $existing = $CONTACTS->search('name', $vcard->displayname, 1, false);
+                }
+
+                if ($existing->count) {
+                    $rcmail->output->command('display_message', $this->gettext('contactexists'), 'warning');
+                    $valid = false;
+                }
+            }
 
+            if ($valid) {
                 $plugin = $rcmail->plugins->exec_hook('contact_create', array('record' => $contact, 'source' => null));
                 $contact = $plugin['record'];
 
-                if (!$plugin['abort'] && ($done = $contacts->insert($contact)))
+                if (!$plugin['abort'] && $CONTACTS->insert($contact))
                     $rcmail->output->command('display_message', $this->gettext('addedsuccessfully'), 'confirmation');
                 else
                     $rcmail->output->command('display_message', $error_msg, 'error');
             }
         }
-        else
+        else {
             $rcmail->output->command('display_message', $error_msg, 'error');
+        }
 
         $rcmail->output->send();
     }
@@ -181,4 +195,29 @@ class vcard_attachments extends rcube_plugin
             )
         );
     }
+
+    /**
+     * Getter for default (writable) addressbook
+     */
+    private function get_address_book()
+    {
+        if ($this->abook) {
+            return $this->abook;
+        }
+
+        $rcmail = rcmail::get_instance();
+        $abook  = $rcmail->config->get('default_addressbook');
+
+        // Get configured addressbook
+        $CONTACTS = $rcmail->get_address_book($abook, true);
+
+        // Get first writeable addressbook if the configured doesn't exist
+        // This can happen when user deleted the addressbook (e.g. Kolab folder)
+        if ($abook === null || $abook === '' || !is_object($CONTACTS)) {
+            $source   = reset($rcmail->get_address_sources(true));
+            $CONTACTS = $rcmail->get_address_book($source['id'], true);
+        }
+
+        return $this->abook = $CONTACTS;
+    }
 }
index ef19190e70e205f6e5785c2e171620884432f3a8..29bc1a60f386af27e8acd4bdeea1546acfc5a14f 100644 (file)
@@ -5,8 +5,8 @@
 function plugin_vcard_save_contact(mime_id)
 {
   var lock = rcmail.set_busy(true, 'loading');
-  rcmail.http_post('plugin.savevcard', '_uid='+rcmail.env.uid+'&_mbox='+urlencode(rcmail.env.mailbox)+'&_part='+urlencode(mime_id), lock);
-  
+  rcmail.http_post('plugin.savevcard', { _uid: rcmail.env.uid, _mbox: rcmail.env.mailbox, _part: mime_id }, lock);
+
   return false;
 }
 
@@ -14,7 +14,7 @@ function plugin_vcard_insertrow(data)
 {
   var ctype = data.row.ctype;
   if (ctype == 'text/vcard' || ctype == 'text/x-vcard' || ctype == 'text/directory') {
-    $('#rcmrow'+data.uid+' > td.attachment').html('<img src="'+rcmail.env.vcard_icon+'" alt="">');
+    $('#rcmrow'+data.uid+' > td.attachment').html('<img src="'+rcmail.env.vcard_icon+'" alt="" />');
   }
 }
 
diff --git a/plugins/virtuser_file/package.xml b/plugins/virtuser_file/package.xml
new file mode 100644 (file)
index 0000000..9b55ce4
--- /dev/null
@@ -0,0 +1,47 @@
+<?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>virtuser_file</name>
+       <channel>pear.roundcube.net</channel>
+       <summary>File based User-to-Email and Email-to-User lookup</summary>
+       <description>Plugin adds possibility to resolve user email/login according to lookup tables in files.</description>
+       <lead>
+               <name>Aleksander Machniak</name>
+               <user>alec</user>
+               <email>alec@alec.pl</email>
+               <active>yes</active>
+       </lead>
+       <date>2011-11-21</date>
+       <version>
+               <release>1.0</release>
+               <api>1.0</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="virtuser_file.php" role="php">
+                               <tasks:replace from="@name@" to="name" type="package-info"/>
+                               <tasks:replace from="@package_version@" to="version" type="package-info"/>
+                       </file>
+               </dir>
+               <!-- / -->
+       </contents>
+       <dependencies>
+               <required>
+                       <php>
+                               <min>5.2.1</min>
+                       </php>
+                       <pearinstaller>
+                               <min>1.7.0</min>
+                       </pearinstaller>
+               </required>
+       </dependencies>
+       <phprelease/>
+</package>
index 9d4efd12b747e493a4380ffde9a31d6d38ef0d1f..01032616c06d68c1c76c5ac474490469fb25f2a9 100644 (file)
@@ -2,13 +2,14 @@
 
 /**
  * File based User-to-Email and Email-to-User lookup
- * 
+ *
  * Add it to the plugins list in config/main.inc.php and set
  * path to a virtuser table file to resolve user names and e-mail
  * addresses
  * $rcmail_config['virtuser_file'] = '';
  *
- * @version 1.0
+ * @version @package_version@
+ * @license GNU GPLv3+
  * @author Aleksander Machniak
  */
 class virtuser_file extends rcube_plugin
@@ -63,7 +64,7 @@ class virtuser_file extends rcube_plugin
 
            for ($i=0; $i<count($r); $i++) {
                $arr = preg_split('/\s+/', trim($r[$i]));
-           
+
                if (count($arr) > 0) {
                        $p['user'] = trim($arr[count($arr)-1]);
                        break;
@@ -83,23 +84,23 @@ class virtuser_file extends rcube_plugin
     {
            $result = array();
            $virtual = null;
-       
+
            if ($this->file)
                $virtual = file($this->file);
-       
+
            if (empty($virtual))
                return $result;
-       
+
            // check each line for matches
            foreach ($virtual as $line) {
                $line = trim($line);
                if (empty($line) || $line[0]=='#')
                    continue;
-       
+
                if (preg_match($pattern, $line))
                    $result[] = $line;
            }
-       
+
            return $result;
     }
 
diff --git a/plugins/virtuser_query/package.xml b/plugins/virtuser_query/package.xml
new file mode 100644 (file)
index 0000000..58f6970
--- /dev/null
@@ -0,0 +1,47 @@
+<?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>virtuser_query</name>
+       <channel>pear.roundcube.net</channel>
+       <summary>SQL based User-to-Email and Email-to-User lookup</summary>
+       <description>Plugin adds possibility to resolve user email/login according to lookup tables in SQL database.</description>
+       <lead>
+               <name>Aleksander Machniak</name>
+               <user>alec</user>
+               <email>alec@alec.pl</email>
+               <active>yes</active>
+       </lead>
+       <date>2011-11-21</date>
+       <version>
+               <release>1.1</release>
+               <api>1.1</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>-</notes>
+       <contents>
+               <dir baseinstalldir="/" name="/">
+                       <file name="virtuser_query.php" role="php">
+                               <tasks:replace from="@name@" to="name" type="package-info"/>
+                               <tasks:replace from="@package_version@" to="version" type="package-info"/>
+                       </file>
+               </dir>
+               <!-- / -->
+       </contents>
+       <dependencies>
+               <required>
+                       <php>
+                               <min>5.2.1</min>
+                       </php>
+                       <pearinstaller>
+                               <min>1.7.0</min>
+                       </pearinstaller>
+               </required>
+       </dependencies>
+       <phprelease/>
+</package>
index e59095f293d99db5d4cf59eeb02dcfa73e29e7c8..21a869c57962e3f04b0fa9536f3ac69789660b46 100644 (file)
@@ -14,7 +14,7 @@
  *
  * $rcmail_config['virtuser_query'] = array('email' => '', 'user' => '', 'host' => '');
  *
- * @version 1.1
+ * @version @package_version@
  * @author Aleksander Machniak
  * @author Steffen Vogel
  */
index ae90562f08301fb63ff3cf588464bab30bc28520..c5f8dd1ccb0e8814ae61710aa6515f5fcb43ae73 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2010, The Roundcube Dev Team                            |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Setup the command line environment and provide some utitlity        |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: clisetup.php 5299 2011-10-03 09:25:33Z alec $
+ $Id$
 
 */
 
@@ -89,4 +92,4 @@ function prompt_silent($prompt = "Password:")
   }
 }
 
-?>
\ No newline at end of file
+?>
index 0e32786200dd86bbdbfe6010f7495d0c49f73959..8d0996e1f365300f03de8c348e732f1c6aa75ad8 100644 (file)
@@ -5,8 +5,11 @@
  | program/include/html.php                                              |
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
- | Copyright (C) 2005-2010, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2005-2011, 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:                                                              |
  |   Helper class to create valid XHTML code                             |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: html.php 4867 2011-06-18 11:28:43Z alec $
+ $Id$
 
  */
 
@@ -32,6 +35,7 @@ class html
     protected $allowed = array();
     protected $content;
 
+    public static $doctype = 'xhtml';
     public static $lc_tags = true;
     public static $common_attrib = array('id','class','style','title','align');
     public static $containers = array('iframe','div','span','p','h1','h2','h3','form','textarea','table','thead','tbody','tr','th','td','style','script');
@@ -79,15 +83,35 @@ class html
 
         $tagname = self::$lc_tags ? strtolower($tagname) : $tagname;
         if (isset($content) || in_array($tagname, self::$containers)) {
-            $templ = $attrib['noclose'] ? "<%s%s>%s" : "<%s%s>%s</%s>%s";
-            unset($attrib['noclose']);
-            return sprintf($templ, $tagname, self::attrib_string($attrib, $allowed_attrib), $content, $tagname, $suffix);
+            $suffix = $attrib['noclose'] ? $suffix : '</' . $tagname . '>' . $suffix;
+            unset($attrib['noclose'], $attrib['nl']);
+            return '<' . $tagname  . self::attrib_string($attrib, $allowed_attrib) . '>' . $content . $suffix;
         }
         else {
-            return sprintf("<%s%s />%s", $tagname, self::attrib_string($attrib, $allowed_attrib), $suffix);
+            return '<' . $tagname  . self::attrib_string($attrib, $allowed_attrib) . '>' . $suffix;
         }
     }
 
+    /**
+     *
+     */
+    public static function doctype($type)
+    {
+        $doctypes = array(
+            'html5'        => '<!DOCTYPE html>',
+            'xhtml'        => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">',
+            'xhtml-trans'  => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">',
+            'xhtml-strict' => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">',
+        );
+
+        if ($doctypes[$type]) {
+            self::$doctype = preg_replace('/-\w+$/', '', $type);
+            return $doctypes[$type];
+        }
+
+        return '';
+    }
+
     /**
      * Derrived method for <div> containers
      *
@@ -133,7 +157,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')));
+               array('src','alt','width','height','border','usemap','onclick')));
     }
 
     /**
@@ -198,7 +222,31 @@ class html
             $attr = array('src' => $attr);
         }
         return self::tag('iframe', $attr, $cont, array_merge(self::$common_attrib,
-           array('src','name','width','height','border','frameborder')));
+            array('src','name','width','height','border','frameborder')));
+    }
+
+    /**
+     * Derrived method to create <script> tags
+     *
+     * @param mixed $attr Hash array with tag attributes or string with script source (src)
+     * @param string $cont Javascript code to be placed as tag content
+     * @return string HTML code
+     * @see html::tag()
+     */
+    public static function script($attr, $cont = null)
+    {
+        if (is_string($attr)) {
+            $attr = array('src' => $attr);
+        }
+        if ($cont) {
+            if (self::$doctype == 'xhtml')
+                $cont = "\n/* <![CDATA[ */\n" . $cont . "\n/* ]]> */\n";
+            else
+                $cont = "\n" . $cont . "\n";
+        }
+
+        return self::tag('script', $attr + array('type' => 'text/javascript', 'nl' => true),
+            $cont, array_merge(self::$common_attrib, array('src','type','charset')));
     }
 
     /**
@@ -246,14 +294,14 @@ class html
             // attributes with no value
             if (in_array($key, array('checked', 'multiple', 'disabled', 'selected'))) {
                 if ($value) {
-                    $attrib_arr[] = sprintf('%s="%s"', $key, $key);
+                    $attrib_arr[] = $key . '="' . $key . '"';
                 }
             }
             else if ($key=='value') {
-                $attrib_arr[] = sprintf('%s="%s"', $key, Q($value, 'strict', false));
+                $attrib_arr[] = $key . '="' . Q($value, 'strict', false) . '"';
             }
             else {
-                $attrib_arr[] = sprintf('%s="%s"', $key, Q($value));
+                $attrib_arr[] = $key . '="' . htmlspecialchars($value, ENT_COMPAT, RCMAIL_CHARSET) . '"';
             }
         }
         return count($attrib_arr) ? ' '.implode(' ', $attrib_arr) : '';
@@ -269,9 +317,10 @@ class html_inputfield extends html
 {
     protected $tagname = 'input';
     protected $type = 'text';
-    protected $allowed = array('type','name','value','size','tabindex',
-       'autocomplete','checked','onchange','onclick','disabled','readonly',
-       'spellcheck','results','maxlength','src','multiple');
+    protected $allowed = array(
+        'type','name','value','size','tabindex','autocapitalize',
+        'autocomplete','checked','onchange','onclick','disabled','readonly',
+        'spellcheck','results','maxlength','src','multiple','placeholder');
 
     /**
      * Object constructor
@@ -287,10 +336,6 @@ class html_inputfield extends html
         if ($attrib['type']) {
             $this->type = $attrib['type'];
         }
-
-        if ($attrib['newline']) {
-            $this->newline = true;
-        }
     }
 
     /**
@@ -333,11 +378,12 @@ class html_passwordfield extends html_inputfield
  * @package HTML
  */
 
-class html_hiddenfield extends html_inputfield
+class html_hiddenfield extends html
 {
+    protected $tagname = 'input';
     protected $type = 'hidden';
     protected $fields_arr = array();
-    protected $newline = true;
+    protected $allowed = array('type','name','value','onchange','disabled','readonly');
 
     /**
      * Constructor
@@ -576,7 +622,8 @@ class html_table extends html
      */
     public function __construct($attrib = array())
     {
-        $this->attrib = array_merge($attrib, array('summary' => '', 'border' => 0));
+        $default_attrib = self::$doctype == 'xhtml' ? array('summary' => '', 'border' => 0) : array();
+        $this->attrib = array_merge($attrib, $default_attrib);
     }
 
     /**
@@ -596,9 +643,9 @@ class html_table extends html
         $cell->content = $cont;
 
         $this->rows[$this->rowindex]->cells[$this->colindex] = $cell;
-        $this->colindex++;
+        $this->colindex += max(1, intval($attr['colspan']));
 
-        if ($this->attrib['cols'] && $this->colindex == $this->attrib['cols']) {
+        if ($this->attrib['cols'] && $this->colindex >= $this->attrib['cols']) {
             $this->add_row();
         }
     }
old mode 100755 (executable)
new mode 100644 (file)
index b864261..0e3b5a1
@@ -6,38 +6,43 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2008-2012, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
- |   Setup the application environment required to process               |
+ |   Setup the application envoronment required to process               |
  |   any request.                                                        |
  +-----------------------------------------------------------------------+
  | Author: Till Klampaeckel <till@php.net>                               |
  |         Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: iniset.php 5995 2012-03-11 16:22:50Z thomasb $
+ $Id$
 
 */
 
-// Some users are not using Installer, so we'll check some
-// critical PHP settings here. Only these, which doesn't provide
-// an error/warning in the logs later. See (#1486307).
-$crit_opts = array(
-    'mbstring.func_overload' => 0,
+$config = array(
+    'error_reporting'         => E_ALL &~ (E_NOTICE | E_STRICT),
+    // Some users are not using Installer, so we'll check some
+    // critical PHP settings here. Only these, which doesn't provide
+    // an error/warning in the logs later. See (#1486307).
+    'mbstring.func_overload'  => 0,
     'suhosin.session.encrypt' => 0,
-    'session.auto_start' => 0,
-    'file_uploads' => 1,
-    'magic_quotes_runtime' => 0,
+    'session.auto_start'      => 0,
+    'file_uploads'            => 1,
+    'magic_quotes_runtime'    => 0,
+    'magic_quotes_sybase'     => 0, // #1488506
 );
-foreach ($crit_opts as $optname => $optval) {
-    if ($optval != ini_get($optname)) {
+foreach ($config as $optname => $optval) {
+    if ($optval != ini_get($optname) && @ini_set($optname, $optval) === false) {
         die("ERROR: Wrong '$optname' option value. Read REQUIREMENTS section in INSTALL file or use Roundcube Installer, please!");
     }
 }
 
 // application constants
-define('RCMAIL_VERSION', '0.7.2');
+define('RCMAIL_VERSION', '0.8.4');
 define('RCMAIL_CHARSET', 'UTF-8');
 define('JS_OBJECT_NAME', 'rcmail');
 define('RCMAIL_START', microtime(true));
@@ -65,8 +70,6 @@ if (set_include_path($include_path) === false) {
     die("Fatal error: ini_set/set_include_path does not work.");
 }
 
-ini_set('error_reporting', E_ALL &~ (E_NOTICE | E_STRICT));
-
 // increase maximum execution time for php scripts
 // (does not work in safe mode)
 @set_time_limit(120);
index e2d6514d62c46cf10b50da9ee7cc0d62b834b804..bf56cb222ca4fbf315a2d674cdd4a831a1f5f0c0 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2011, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Provide basic functions for the webmail package                     |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: main.inc 5943 2012-03-02 11:56:25Z alec $
+ $Id$
 
 */
 
@@ -26,7 +29,6 @@
  * @author Thomas Bruederli <roundcube@gmail.com>
  */
 
-require_once 'utf7.inc';
 require_once INSTALL_PATH . 'program/include/rcube_shared.inc';
 
 // define constannts for input reading
@@ -156,365 +158,40 @@ function rcmail_temp_gc()
 }
 
 
-/**
- * Garbage collector for cache entries.
- * Remove all expired message cache records
- * @return void
- */
-function rcmail_cache_gc()
+// Deprecated
+function rcube_charset_convert($str, $from, $to=NULL)
 {
-  $rcmail = rcmail::get_instance();
-  $db = $rcmail->get_dbh();
-
-  // get target timestamp
-  $ts = get_offset_time($rcmail->config->get('message_cache_lifetime', '30d'), -1);
-
-  if ($rcmail->config->get('messages_cache') || $rcmail->config->get('enable_caching')) {
-    $db->query("DELETE FROM ".get_table_name('cache_messages')
-        ." WHERE changed < " . $db->fromunixtime($ts));
-
-    $db->query("DELETE FROM ".get_table_name('cache_index')
-        ." WHERE changed < " . $db->fromunixtime($ts));
-
-    $db->query("DELETE FROM ".get_table_name('cache_thread')
-        ." WHERE changed < " . $db->fromunixtime($ts));
-  }
-
-  $db->query("DELETE FROM ".get_table_name('cache')
-        ." WHERE created < " . $db->fromunixtime($ts));
+    return rcube_charset::convert($str, $from, $to);
 }
 
 
-/**
- * Catch an error and throw an exception.
- *
- * @param  int    Level of the error
- * @param  string Error message
- */ 
-function rcube_error_handler($errno, $errstr)
+// Deprecated
+function rc_detect_encoding($string, $failover='')
 {
-  throw new ErrorException($errstr, 0, $errno);
+    return rcube_charset::detect($string, $failover);
 }
 
 
-/**
- * Convert a string from one charset to another.
- * Uses mbstring and iconv functions if possible
- *
- * @param  string Input string
- * @param  string Suspected charset of the input string
- * @param  string Target charset to convert to; defaults to RCMAIL_CHARSET
- * @return string Converted string
- */
-function rcube_charset_convert($str, $from, $to=NULL)
+// Deprecated
+function rc_utf8_clean($input)
 {
-  static $iconv_options = null;
-  static $mbstring_loaded = null;
-  static $mbstring_list = null;
-  static $conv = null;
-
-  $error = false;
-
-  $to = empty($to) ? strtoupper(RCMAIL_CHARSET) : rcube_parse_charset($to);
-  $from = rcube_parse_charset($from);
-
-  if ($from == $to || empty($str) || empty($from))
-    return $str;
-
-  // convert charset using iconv module
-  if (function_exists('iconv') && $from != 'UTF7-IMAP' && $to != 'UTF7-IMAP') {
-    if ($iconv_options === null) {
-      // ignore characters not available in output charset
-      $iconv_options = '//IGNORE';
-      if (iconv('', $iconv_options, '') === false) {
-        // iconv implementation does not support options
-        $iconv_options = '';
-      }
-    }
-
-    // throw an exception if iconv reports an illegal character in input
-    // it means that input string has been truncated
-    set_error_handler('rcube_error_handler', E_NOTICE);
-    try {
-      $_iconv = iconv($from, $to . $iconv_options, $str);
-    } catch (ErrorException $e) {
-      $_iconv = false;
-    }
-    restore_error_handler();
-    if ($_iconv !== false) {
-      return $_iconv;
-    }
-  }
-
-  if ($mbstring_loaded === null)
-    $mbstring_loaded = extension_loaded('mbstring');
-
-  // convert charset using mbstring module
-  if ($mbstring_loaded) {
-    $aliases['WINDOWS-1257'] = 'ISO-8859-13';
-
-    if ($mbstring_list === null) {
-      $mbstring_list = mb_list_encodings();
-      $mbstring_list = array_map('strtoupper', $mbstring_list);
-    }
-
-    $mb_from = $aliases[$from] ? $aliases[$from] : $from;
-    $mb_to = $aliases[$to] ? $aliases[$to] : $to;
-
-    // return if encoding found, string matches encoding and convert succeeded
-    if (in_array($mb_from, $mbstring_list) && in_array($mb_to, $mbstring_list)) {
-      if (mb_check_encoding($str, $mb_from) && ($out = mb_convert_encoding($str, $mb_to, $mb_from)))
-        return $out;
-    }
-  }
-
-  // convert charset using bundled classes/functions
-  if ($to == 'UTF-8') {
-    if ($from == 'UTF7-IMAP') {
-      if ($_str = utf7_to_utf8($str))
-        return $_str;
-    }
-    else if ($from == 'UTF-7') {
-      if ($_str = rcube_utf7_to_utf8($str))
-        return $_str;
-    }
-    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;
-    }
-    $error = true;
-  }
-
-  // encode string for output
-  if ($from == 'UTF-8') {
-    // @TODO: we need a function for UTF-7 (RFC2152) conversion
-    if ($to == 'UTF7-IMAP' || $to == 'UTF-7') {
-      if ($_str = utf8_to_utf7($str))
-        return $_str;
-    }
-    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;
-    }
-    $error = true;
-  }
-
-  // return UTF-8 or original string
-  return $str;
+    return rcube_charset::clean($input);
 }
 
 
 /**
- * Parse and validate charset name string (see #1485758).
- * Sometimes charset string is malformed, there are also charset aliases 
- * but we need strict names for charset conversion (specially utf8 class)
+ * Convert a variable into a javascript object notation
  *
- * @param  string Input charset name
- * @return string The validated charset name
+ * @param mixed Input value
+ * @return string Serialized JSON string
  */
-function rcube_parse_charset($input)
+function json_serialize($input)
 {
-  static $charsets = array();
-  $charset = strtoupper($input);
-
-  if (isset($charsets[$input]))
-    return $charsets[$input];
-
-  $charset = preg_replace(array(
-    '/^[^0-9A-Z]+/',    // e.g. _ISO-8859-JP$SIO
-    '/\$.*$/',          // e.g. _ISO-8859-JP$SIO
-    '/UNICODE-1-1-*/',  // RFC1641/1642
-    '/^X-/',            // X- prefix (e.g. X-ROMAN8 => ROMAN8)
-    ), '', $charset);
-
-  if ($charset == 'BINARY')
-    return $charsets[$input] = null;
-
-  # Aliases: some of them from HTML5 spec.
-  $aliases = array(
-    'USASCII'       => 'WINDOWS-1252',
-    'ANSIX31101983' => 'WINDOWS-1252',
-    'ANSIX341968'   => 'WINDOWS-1252',
-    'UNKNOWN8BIT'   => 'ISO-8859-15',
-    'UNKNOWN'       => 'ISO-8859-15',
-    'USERDEFINED'   => 'ISO-8859-15',
-    'KSC56011987'   => 'EUC-KR',
-    'GB2312'       => 'GBK',
-    'GB231280'     => 'GBK',
-    'UNICODE'      => 'UTF-8',
-    'UTF7IMAP'     => 'UTF7-IMAP',
-    'TIS620'       => 'WINDOWS-874',
-    'ISO88599'     => 'WINDOWS-1254',
-    'ISO885911'            => 'WINDOWS-874',
-    'MACROMAN'     => 'MACINTOSH',
-    '77'            => 'MAC',
-    '128'           => 'SHIFT-JIS',
-    '129'           => 'CP949',
-    '130'           => 'CP1361',
-    '134'           => 'GBK',
-    '136'           => 'BIG5',
-    '161'           => 'WINDOWS-1253',
-    '162'           => 'WINDOWS-1254',
-    '163'           => 'WINDOWS-1258',
-    '177'           => 'WINDOWS-1255',
-    '178'           => 'WINDOWS-1256',
-    '186'           => 'WINDOWS-1257',
-    '204'           => 'WINDOWS-1251',
-    '222'           => 'WINDOWS-874',
-    '238'           => 'WINDOWS-1250',
-    'MS950'         => 'CP950',
-    'WINDOWS949'    => 'UHC',
-  );
-
-  // allow A-Z and 0-9 only
-  $str = preg_replace('/[^A-Z0-9]/', '', $charset);
-
-  if (isset($aliases[$str]))
-    $result = $aliases[$str];
-  // UTF
-  else if (preg_match('/U[A-Z][A-Z](7|8|16|32)(BE|LE)*/', $str, $m))
-    $result = 'UTF-' . $m[1] . $m[2];
-  // ISO-8859
-  else if (preg_match('/ISO8859([0-9]{0,2})/', $str, $m)) {
-    $iso = 'ISO-8859-' . ($m[1] ? $m[1] : 1);
-    // some clients sends windows-1252 text as latin1,
-    // it is safe to use windows-1252 for all latin1
-    $result = $iso == 'ISO-8859-1' ? 'WINDOWS-1252' : $iso;
-  }
-  // handle broken charset names e.g. WINDOWS-1250HTTP-EQUIVCONTENT-TYPE
-  else if (preg_match('/(WIN|WINDOWS)([0-9]+)/', $str, $m)) {
-    $result = 'WINDOWS-' . $m[2];
-  }
-  // LATIN
-  else if (preg_match('/LATIN(.*)/', $str, $m)) {
-    $aliases = array('2' => 2, '3' => 3, '4' => 4, '5' => 9, '6' => 10,
-        '7' => 13, '8' => 14, '9' => 15, '10' => 16,
-        'ARABIC' => 6, 'CYRILLIC' => 5, 'GREEK' => 7, 'GREEK1' => 7, 'HEBREW' => 8);
-
-    // some clients sends windows-1252 text as latin1,
-    // it is safe to use windows-1252 for all latin1
-    if ($m[1] == 1) {
-      $result = 'WINDOWS-1252';
-    }
-    // if iconv is not supported we need ISO labels, it's also safe for iconv
-    else if (!empty($aliases[$m[1]])) {
-      $result = 'ISO-8859-'.$aliases[$m[1]];
-    }
-    // iconv requires convertion of e.g. LATIN-1 to LATIN1
-    else {
-      $result = $str;
-    }
-  }
-  else {
-    $result = $charset;
-  }
-
-  $charsets[$input] = $result;
-
-  return $result;
-}
-
-
-/**
- * Converts string from standard UTF-7 (RFC 2152) to UTF-8.
- *
- * @param  string  Input string
- * @return string  The converted string
- */
-function rcube_utf7_to_utf8($str)
-{
-  $Index_64 = array(
-    0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
-    0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
-    0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0,
-    1,1,1,1, 1,1,1,1, 1,1,0,0, 0,0,0,0,
-    0,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1,
-    1,1,1,1, 1,1,1,1, 1,1,1,0, 0,0,0,0,
-    0,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1,
-    1,1,1,1, 1,1,1,1, 1,1,1,0, 0,0,0,0,
-  );
-
-  $u7len = strlen($str);
-  $str = strval($str);
-  $res = '';
-
-  for ($i=0; $u7len > 0; $i++, $u7len--)
-  {
-    $u7 = $str[$i];
-    if ($u7 == '+')
-    {
-      $i++;
-      $u7len--;
-      $ch = '';
-
-      for (; $u7len > 0; $i++, $u7len--)
-      {
-        $u7 = $str[$i];
-
-        if (!$Index_64[ord($u7)])
-          break;
+    $input = rcube_charset::clean($input);
 
-       $ch .= $u7;
-      }
-
-      if ($ch == '') {
-        if ($u7 == '-')
-          $res .= '+';
-        continue;
-      }
-
-      $res .= rcube_utf16_to_utf8(base64_decode($ch));
-    }
-    else
-    {
-      $res .= $u7;
-    }
-  }
-
-  return $res;
-}
-
-/**
- * Converts string from UTF-16 to UTF-8 (helper for utf-7 to utf-8 conversion)
- *
- * @param  string  Input string
- * @return string  The converted string
- */
-function rcube_utf16_to_utf8($str)
-{
-  $len = strlen($str);
-  $dec = '';
-
-  for ($i = 0; $i < $len; $i += 2) {
-    $c = ord($str[$i]) << 8 | ord($str[$i + 1]);
-    if ($c >= 0x0001 && $c <= 0x007F) {
-      $dec .= chr($c);
-    } else if ($c > 0x07FF) {
-      $dec .= chr(0xE0 | (($c >> 12) & 0x0F));
-      $dec .= chr(0x80 | (($c >>  6) & 0x3F));
-      $dec .= chr(0x80 | (($c >>  0) & 0x3F));
-    } else {
-      $dec .= chr(0xC0 | (($c >>  6) & 0x1F));
-      $dec .= chr(0x80 | (($c >>  0) & 0x3F));
-    }
-  }
-  return $dec;
+    // sometimes even using rcube_charset::clean() the input contains invalid UTF-8 sequences
+    // that's why we have @ here
+    return @json_encode($input);
 }
 
 
@@ -841,11 +518,11 @@ function rcube_table_output($attrib, $table_data, $a_show_cols, $id_col)
 function rcmail_get_edit_field($col, $value, $attrib, $type='text')
 {
   static $colcounts = array();
-  
+
   $fname = '_'.$col;
   $attrib['name'] = $fname . ($attrib['array'] ? '[]' : '');
   $attrib['class'] = trim($attrib['class'] . ' ff_' . $col);
-  
+
   if ($type == 'checkbox') {
     $attrib['value'] = '1';
     $input = new html_checkbox($attrib);
@@ -859,6 +536,9 @@ function rcmail_get_edit_field($col, $value, $attrib, $type='text')
     $input->add('---', '');
     $input->add(array_values($attrib['options']), array_keys($attrib['options']));
   }
+  else if ($attrib['type'] == 'password') {
+    $input = new html_passwordfield($attrib);
+  }
   else {
     if ($attrib['type'] != 'text' && $attrib['type'] != 'hidden')
         $attrib['type'] = 'text';
@@ -1045,7 +725,7 @@ function rcube_strtotime($date)
  * Convert the given date to a human readable form
  * This uses the date formatting properties from config
  *
- * @param mixed  Date representation (string or timestamp)
+ * @param mixed  Date representation (string, timestamp or DateTime object)
  * @param string Date format to use
  * @param bool   Enables date convertion according to user timezone
  *
@@ -1055,31 +735,41 @@ function format_date($date, $format=NULL, $convert=true)
 {
   global $RCMAIL, $CONFIG;
 
-  if (!empty($date))
-    $ts = rcube_strtotime($date);
+  if (is_object($date) && is_a($date, 'DateTime')) {
+    $timestamp = $date->format('U');
+  }
+  else {
+    if (!empty($date))
+      $timestamp = rcube_strtotime($date);
 
-  if (empty($ts))
-    return '';
+    if (empty($timestamp))
+      return '';
 
-  if ($convert) {
-    // get user's timezone offset
-    $tz = $RCMAIL->config->get_timezone();
+    try {
+      $date = new DateTime("@".$timestamp);
+    }
+    catch (Exception $e) {
+      return '';
+    }
+  }
 
-    // convert time to user's timezone
-    $timestamp = $ts - date('Z', $ts) + ($tz * 3600);
+  if ($convert) {
+    try {
+      // convert to the right timezone
+      $stz = date_default_timezone_get();
+      $tz = new DateTimeZone($RCMAIL->config->get('timezone'));
+      $date->setTimezone($tz);
+      date_default_timezone_set($tz->getName());
 
-    // get current timestamp in user's timezone
-    $now = time();  // local time
-    $now -= (int)date('Z'); // make GMT time
-    $now += ($tz * 3600); // user's time
-  }
-  else {
-    $now       = time();
-    $timestamp = $ts;
+      $timestamp = $date->format('U');
+    }
+    catch (Exception $e) {
+    }
   }
 
   // define date format depending on current time
   if (!$format) {
+    $now         = time();
     $now_date    = getdate($now);
     $today_limit = mktime(0, 0, 0, $now_date['mon'], $now_date['mday'], $now_date['year']);
     $week_limit  = mktime(0, 0, 0, $now_date['mon'], $now_date['mday']-6, $now_date['year']);
@@ -1097,13 +787,18 @@ function format_date($date, $format=NULL, $convert=true)
   // strftime() format
   if (preg_match('/%[a-z]+/i', $format)) {
     $format = strftime($format, $timestamp);
+
+    if ($convert && $stz) {
+      date_default_timezone_set($stz);
+    }
+
     return $today ? (rcube_label('today') . ' ' . $format) : $format;
   }
 
   // parse format string manually in order to provide localized weekday and month names
   // an alternative would be to convert the date() format string to fit with strftime()
   $out = '';
-  for($i=0; $i<strlen($format); $i++) {
+  for ($i=0; $i<strlen($format); $i++) {
     if ($format[$i]=='\\')  // skip escape chars
       continue;
 
@@ -1139,6 +834,10 @@ function format_date($date, $format=NULL, $convert=true)
     }
   }
 
+  if ($convert && $stz) {
+    date_default_timezone_set($stz);
+  }
+
   return $out;
 }
 
@@ -1172,7 +871,7 @@ function rcmail_mailbox_list($attrib)
   global $RCMAIL;
   static $a_mailboxes;
 
-  $attrib += array('maxlength' => 100, 'realnames' => false);
+  $attrib += array('maxlength' => 100, 'realnames' => false, 'unreadwrap' => ' (%s)');
 
   // add some labels to client
   $RCMAIL->output->add_label('purgefolderconfirm', 'deletemessagesconfirm');
@@ -1187,13 +886,14 @@ function rcmail_mailbox_list($attrib)
     $attrib['folder_name'] = '*';
 
   // get mailbox list
-  $mbox_name = $RCMAIL->imap->get_mailbox_name();
+  $storage = $RCMAIL->get_storage();
+  $mbox_name = $storage->get_folder();
 
   // build the folders tree
   if (empty($a_mailboxes)) {
     // get mailbox list
-    $a_folders = $RCMAIL->imap->list_mailboxes('', $attrib['folder_name'], $attrib['folder_filter']);
-    $delimiter = $RCMAIL->imap->get_hierarchy_delimiter();
+    $a_folders = $storage->list_folders_subscribed('', $attrib['folder_name'], $attrib['folder_filter']);
+    $delimiter = $storage->get_hierarchy_delimiter();
     $a_mailboxes = array();
 
     foreach ($a_folders as $folder)
@@ -1201,7 +901,15 @@ function rcmail_mailbox_list($attrib)
   }
 
   // allow plugins to alter the folder tree or to localize folder names
-  $hook = $RCMAIL->plugins->exec_hook('render_mailboxlist', array('list' => $a_mailboxes, 'delimiter' => $delimiter));
+  $hook = $RCMAIL->plugins->exec_hook('render_mailboxlist', array(
+    'list'      => $a_mailboxes,
+    'delimiter' => $delimiter,
+    'type'      => $type,
+    'attribs'   => $attrib,
+  ));
+
+  $a_mailboxes = $hook['list'];
+  $attrib      = $hook['attribs'];
 
   if ($type == 'select') {
     $select = new html_select($attrib);
@@ -1210,15 +918,16 @@ function rcmail_mailbox_list($attrib)
     if ($attrib['noselection'])
       $select->add(rcube_label($attrib['noselection']), '');
 
-    rcmail_render_folder_tree_select($hook['list'], $mbox_name, $attrib['maxlength'], $select, $attrib['realnames']);
-    $out = $select->show();
+    rcmail_render_folder_tree_select($a_mailboxes, $mbox_name, $attrib['maxlength'], $select, $attrib['realnames']);
+    $out = $select->show($attrib['default']);
   }
   else {
     $js_mailboxlist = array();
-    $out = html::tag('ul', $attrib, rcmail_render_folder_tree_html($hook['list'], $mbox_name, $js_mailboxlist, $attrib), html::$common_attrib);
+    $out = html::tag('ul', $attrib, rcmail_render_folder_tree_html($a_mailboxes, $mbox_name, $js_mailboxlist, $attrib), html::$common_attrib);
 
     $RCMAIL->output->add_gui_object('mailboxlist', $attrib['id']);
     $RCMAIL->output->set_env('mailboxes', $js_mailboxlist);
+    $RCMAIL->output->set_env('unreadwrap', $attrib['unreadwrap']);
     $RCMAIL->output->set_env('collapsed_folders', (string)$RCMAIL->config->get('collapsed_folders'));
   }
 
@@ -1238,16 +947,18 @@ function rcmail_mailbox_select($p = array())
 
   $p += array('maxlength' => 100, 'realnames' => false);
   $a_mailboxes = array();
+  $storage = $RCMAIL->get_storage();
 
-  if (empty($p['folder_name']))
+  if (empty($p['folder_name'])) {
     $p['folder_name'] = '*';
+  }
 
   if ($p['unsubscribed'])
-    $list = $RCMAIL->imap->list_unsubscribed('', $p['folder_name'], $p['folder_filter'], $p['folder_rights']);
+    $list = $storage->list_folders('', $p['folder_name'], $p['folder_filter'], $p['folder_rights']);
   else
-    $list = $RCMAIL->imap->list_mailboxes('', $p['folder_name'], $p['folder_filter'], $p['folder_rights']);
+    $list = $storage->list_folders_subscribed('', $p['folder_name'], $p['folder_filter'], $p['folder_rights']);
 
-  $delimiter = $RCMAIL->imap->get_hierarchy_delimiter();
+  $delimiter = $storage->get_hierarchy_delimiter();
 
   foreach ($list as $folder) {
     if (empty($p['exceptions']) || !in_array($folder, $p['exceptions']))
@@ -1278,7 +989,7 @@ function rcmail_build_folder_tree(&$arrFolders, $folder, $delm='/', $path='')
   $prefix = '';
   if (!$path) {
     $n_folder = $folder;
-    $folder = $RCMAIL->imap->mod_mailbox($folder);
+    $folder = $RCMAIL->storage->mod_folder($folder);
 
     if ($n_folder != $folder) {
       $prefix = substr($n_folder, 0, -strlen($folder));
@@ -1333,7 +1044,7 @@ function rcmail_render_folder_tree_html(&$arrFolders, &$mbox_name, &$jslist, $at
 
   $maxlength = intval($attrib['maxlength']);
   $realnames = (bool)$attrib['realnames'];
-  $msgcounts = $RCMAIL->imap->get_cache('messagecount');
+  $msgcounts = $RCMAIL->storage->get_cache('messagecount');
 
   $out = '';
   foreach ($arrFolders as $key => $folder) {
@@ -1374,7 +1085,7 @@ function rcmail_render_folder_tree_html(&$arrFolders, &$mbox_name, &$jslist, $at
       $classes[] = 'unread';
 
     $js_name = JQ($folder['id']);
-    $html_name = Q($foldername) . ($unread ? html::span('unreadcount', " ($unread)") : '');
+    $html_name = Q($foldername) . ($unread ? html::span('unreadcount', sprintf($attrib['unreadwrap'], $unread)) : '');
     $link_attrib = $folder['virtual'] ? array() : array(
       'href' => rcmail_url('', array('_mbox' => $folder['id'])),
       'onclick' => sprintf("return %s.command('list','%s',this)", JS_OBJECT_NAME, $js_name),
@@ -1425,7 +1136,7 @@ function rcmail_render_folder_tree_select(&$arrFolders, &$mbox_name, $maxlength,
     }
 
     // skip folders in which it isn't possible to create subfolders
-    if (!empty($opts['skip_noinferiors']) && ($attrs = $RCMAIL->imap->mailbox_attributes($folder['id']))
+    if (!empty($opts['skip_noinferiors']) && ($attrs = $RCMAIL->storage->folder_attributes($folder['id']))
         && in_array('\\Noinferiors', $attrs)
     ) {
       continue;
@@ -1494,8 +1205,8 @@ function rcmail_localize_folderpath($path)
     global $RCMAIL;
 
     $protect_folders = $RCMAIL->config->get('protect_default_folders');
-    $default_folders = (array) $RCMAIL->config->get('default_imap_folders');
-    $delimiter       = $RCMAIL->imap->get_hierarchy_delimiter();
+    $default_folders = (array) $RCMAIL->config->get('default_folders');
+    $delimiter       = $RCMAIL->storage->get_hierarchy_delimiter();
     $path            = explode($delimiter, $path);
     $result          = array();
 
@@ -1521,8 +1232,7 @@ function rcmail_quota_display($attrib)
   if (!$attrib['id'])
     $attrib['id'] = 'rcmquotadisplay';
 
-  if(isset($attrib['display']))
-    $_SESSION['quota_display'] = $attrib['display'];
+  $_SESSION['quota_display'] = !empty($attrib['display']) ? $attrib['display'] : 'text';
 
   $OUTPUT->add_gui_object('quotadisplay', $attrib['id']);
 
@@ -1538,7 +1248,7 @@ function rcmail_quota_content($attrib=NULL)
 {
   global $RCMAIL;
 
-  $quota = $RCMAIL->imap->get_quota();
+  $quota = $RCMAIL->storage->get_quota();
   $quota = $RCMAIL->plugins->exec_hook('quota', $quota);
 
   $quota_result = (array) $quota;
@@ -1584,16 +1294,19 @@ function rcmail_display_server_error($fallback=null, $fallback_args=null)
 {
     global $RCMAIL;
 
-    $err_code = $RCMAIL->imap->get_error_code();
-    $res_code = $RCMAIL->imap->get_response_code();
+    $err_code = $RCMAIL->storage->get_error_code();
+    $res_code = $RCMAIL->storage->get_response_code();
 
-    if ($res_code == rcube_imap::NOPERM) {
+    if ($err_code < 0) {
+        $RCMAIL->output->show_message('storageerror', 'error');
+    }
+    else if ($res_code == rcube_storage::NOPERM) {
         $RCMAIL->output->show_message('errornoperm', 'error');
     }
-    else if ($res_code == rcube_imap::READONLY) {
+    else if ($res_code == rcube_storage::READONLY) {
         $RCMAIL->output->show_message('errorreadonly', 'error');
     }
-    else if ($err_code && ($err_str = $RCMAIL->imap->get_error_str())) {
+    else if ($err_code && ($err_str = $RCMAIL->storage->get_error_str())) {
         // try to detect access rights problem and display appropriate message
         if (stripos($err_str, 'Permission denied') !== false)
             $RCMAIL->output->show_message('errornoperm', 'error');
@@ -1608,6 +1321,28 @@ function rcmail_display_server_error($fallback=null, $fallback_args=null)
 }
 
 
+/**
+ * Generate CSS classes from mimetype and filename extension
+ *
+ * @param string Mimetype
+ * @param string The filename
+ * @return string CSS classes separated by space
+ */
+function rcmail_filetype2classname($mimetype, $filename)
+{
+  list($primary, $secondary) = explode('/', $mimetype);
+
+  $classes = array($primary ? $primary : 'unknown');
+  if ($secondary) {
+    $classes[] = $secondary;
+  }
+  if (preg_match('/\.([a-z0-9]+)$/i', $filename, $m)) {
+    $classes[] = $m[1];
+  }
+
+  return strtolower(join(" ", $classes));
+}
+
 /**
  * Output HTML editor scripts
  *
@@ -1616,7 +1351,7 @@ function rcmail_display_server_error($fallback=null, $fallback_args=null)
  */
 function rcube_html_editor($mode='')
 {
-  global $RCMAIL, $CONFIG;
+  global $RCMAIL;
 
   $hook = $RCMAIL->plugins->exec_hook('html_editor', array('mode' => $mode));
 
@@ -1625,8 +1360,11 @@ function rcube_html_editor($mode='')
 
   $lang = strtolower($_SESSION['language']);
 
-  // TinyMCE uses 'tw' for zh_TW (which is wrong, because tw is a code of Twi language)
-  $lang = ($lang == 'zh_tw') ? 'tw' : substr($lang, 0, 2);
+  // TinyMCE uses two-letter lang codes, with exception of Chinese
+  if (strpos($lang, 'zh_') === 0)
+    $lang = str_replace('_', '-', $lang);
+  else
+    $lang = substr($lang, 0, 2);
 
   if (!file_exists(INSTALL_PATH . 'program/js/tiny_mce/langs/'.$lang.'.js'))
     $lang = 'en';
@@ -1636,11 +1374,11 @@ function rcube_html_editor($mode='')
   $RCMAIL->output->add_script(sprintf("rcmail_editor_init(%s)",
     json_encode(array(
         'mode'       => $mode,
-        'skin_path'  => '$__skin_path',
         'lang'       => $lang,
-        'spellcheck' => intval($CONFIG['enable_spellcheck']),
-        'spelldict'  => intval($CONFIG['spellcheck_dictionary']),
-    ))), 'foot');
+        'skin_path'  => $RCMAIL->output->get_skin_path(),
+        'spellcheck' => intval($RCMAIL->config->get('enable_spellcheck')),
+        'spelldict'  => intval($RCMAIL->config->get('spellcheck_dictionary')),
+    ))), 'docready');
 }
 
 
@@ -1853,17 +1591,33 @@ function rcmail_gen_message_id()
 // Returns RFC2822 formatted current date in user's timezone
 function rcmail_user_date()
 {
-  global $RCMAIL, $CONFIG;
+  global $RCMAIL;
 
   // get user's timezone
-  $tz = $RCMAIL->config->get_timezone();
+  try {
+    $tz   = new DateTimeZone($RCMAIL->config->get('timezone'));
+    $date = new DateTime('now', $tz);
+  }
+  catch (Exception $e) {
+    $date = new DateTime();
+  }
+
+  return $date->format('r');
+}
 
-  $date = time() + $tz * 60 * 60;
-  $date = gmdate('r', $date);
-  $tz   = sprintf('%+05d', intval($tz) * 100 + ($tz - intval($tz)) * 60);
-  $date = preg_replace('/[+-][0-9]{4}$/', $tz, $date);
 
-  return $date;
+/**
+ * Check if we can process not exceeding memory_limit
+ *
+ * @param integer Required amount of memory
+ * @return boolean
+ */
+function rcmail_mem_check($need)
+{
+  $mem_limit = parse_bytes(ini_get('memory_limit'));
+  $memory    = function_exists('memory_get_usage') ? memory_get_usage() : 16*1024*1024; // safe value: 16MB
+
+  return $mem_limit > 0 && $memory + $need > $mem_limit ? false : true;
 }
 
 
@@ -1920,7 +1674,7 @@ function rcube_parse_host($name, $host='')
   // %d - domain name without first part, e.g. %n=mail.domain.tld, %d=domain.tld
   $d = preg_replace('/^[^\.]+\./', '', $n);
   // %h - IMAP host
-  $h = $_SESSION['imap_host'] ? $_SESSION['imap_host'] : $host;
+  $h = $_SESSION['storage_host'] ? $_SESSION['storage_host'] : $host;
   // %z - IMAP domain without first part, e.g. %h=imap.domain.tld, %z=domain.tld
   $z = preg_replace('/^[^\.]+\./', '', $h);
   // %s - domain name after the '@' from e-mail address provided at login screen. Returns FALSE if an invalid email is provided
@@ -2467,3 +2221,27 @@ function rcube_autocomplete_init()
     $RCMAIL->output->set_env('autocomplete_min_length', $RCMAIL->config->get('autocomplete_min_length'));
     $RCMAIL->output->add_label('autocompletechars', 'autocompletemore');
 }
+
+function rcube_fontdefs($font = null)
+{
+  $fonts = array(
+    'Andale Mono'   => '"Andale Mono",Times,monospace',
+    'Arial'         => 'Arial,Helvetica,sans-serif',
+    'Arial Black'   => '"Arial Black","Avant Garde",sans-serif',
+    'Book Antiqua'  => '"Book Antiqua",Palatino,serif',
+    'Courier New'   => '"Courier New",Courier,monospace',
+    'Georgia'       => 'Georgia,Palatino,serif',
+    'Helvetica'     => 'Helvetica,Arial,sans-serif',
+    'Impact'        => 'Impact,Chicago,sans-serif',
+    'Tahoma'        => 'Tahoma,Arial,Helvetica,sans-serif',
+    'Terminal'      => 'Terminal,Monaco,monospace',
+    'Times New Roman' => '"Times New Roman",Times,serif',
+    'Trebuchet MS'  => '"Trebuchet MS",Geneva,sans-serif',
+    'Verdana'       => 'Verdana,Geneva,sans-serif',
+  );
+
+  if ($font)
+    return $fonts[$font];
+
+  return $fonts;
+}
index 2a4cd7866b6bfe8dbe59fcaa582b590a288a423b..35e19343dba4add2ad2f545b18f94aa00630a154 100644 (file)
@@ -7,7 +7,10 @@
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2008-2011, The Roundcube Dev Team                       |
  | Copyright (C) 2011, Kolab Systems AG                                  |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Application class providing core functions and holding              |
@@ -16,7 +19,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: rcmail.php 5897 2012-02-21 20:46:15Z thomasb $
+ $Id$
 
 */
 
@@ -86,11 +89,11 @@ class rcmail
   public $smtp;
 
   /**
-   * Instance of rcube_imap class.
+   * Instance of rcube_storage class.
    *
-   * @var rcube_imap
+   * @var rcube_storage
    */
-  public $imap;
+  public $storage;
 
   /**
    * Instance of rcube_template class.
@@ -126,6 +129,12 @@ class rcmail
   private $caches = array();
   private $action_map = array();
   private $shutdown_functions = array();
+  private $expunge_cache = false;
+
+  const ERROR_STORAGE          = -2;
+  const ERROR_INVALID_REQUEST  = 1;
+  const ERROR_INVALID_HOST     = 2;
+  const ERROR_COOKIES_DISABLED = 3;
 
 
   /**
@@ -159,8 +168,6 @@ class rcmail
   /**
    * Initial startup function
    * to register session, create database and imap connections
-   *
-   * @todo Remove global vars $DB, $USER
    */
   private function startup()
   {
@@ -172,7 +179,7 @@ class rcmail
     }
 
     // connect to database
-    $GLOBALS['DB'] = $this->get_dbh();
+    $this->get_dbh();
 
     // start session
     $this->session_init();
@@ -240,20 +247,21 @@ class rcmail
   {
     if (is_object($user)) {
       $this->user = $user;
-      $GLOBALS['USER'] = $this->user;
 
       // overwrite config with user preferences
       $this->config->set_user_prefs((array)$this->user->get_prefs());
     }
 
-    $_SESSION['language'] = $this->user->language = $this->language_prop($this->config->get('language', $_SESSION['language']));
+    $lang = $this->language_prop($this->config->get('language', $_SESSION['language']));
+    $_SESSION['language'] = $this->user->language = $lang;
 
     // set localization
-    setlocale(LC_ALL, $_SESSION['language'] . '.utf8', 'en_US.utf8');
+    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 (in_array($_SESSION['language'], array('tr_TR', 'ku', 'az_AZ')))
-      setlocale(LC_CTYPE, 'en_US' . '.utf8');
+    if (in_array($lang, array('tr_TR', 'ku', 'az_AZ'))) {
+      setlocale(LC_CTYPE, 'en_US.utf8', 'en_US.UTF-8');
+    }
   }
 
 
@@ -320,8 +328,8 @@ class rcmail
 
     return $this->db;
   }
-  
-  
+
+
   /**
    * Get global handle for memcache access
    *
@@ -338,15 +346,20 @@ class rcmail
 
       $this->memcache = new Memcache;
       $this->mc_available = 0;
-      
-      // add alll configured hosts to pool
+
+      // add all configured hosts to pool
       $pconnect = $this->config->get('memcache_pconnect', true);
       foreach ($this->config->get('memcache_hosts', array()) as $host) {
-        list($host, $port) = explode(':', $host);
-        if (!$port) $port = 11211;
+        if (substr($host, 0, 7) != 'unix://') {
+          list($host, $port) = explode(':', $host);
+          if (!$port) $port = 11211;
+        }
+        else {
+          $port = 0;
+        }
         $this->mc_available += intval($this->memcache->addServer($host, $port, $pconnect, 1, 1, 15, false, array($this, 'memcache_failure')));
       }
-      
+
       // test connection and failover (will result in $this->mc_available == 0 on complete failure)
       $this->memcache->increment('__CONNECTIONTEST__', 1);  // NOP if key doesn't exist
 
@@ -356,14 +369,14 @@ class rcmail
 
     return $this->memcache;
   }
-  
+
   /**
    * Callback for memcache failure
    */
   public function memcache_failure($host, $port)
   {
     static $seen = array();
-    
+
     // only report once
     if (!$seen["$host:$port"]++) {
       $this->mc_available--;
@@ -421,7 +434,7 @@ class rcmail
       $contacts = $this->address_books[$id];
     }
     else if ($id && $ldap_config[$id]) {
-      $contacts = new rcube_ldap($ldap_config[$id], $this->config->get('ldap_debug'), $this->config->mail_domain($_SESSION['imap_host']));
+      $contacts = new rcube_ldap($ldap_config[$id], $this->config->get('ldap_debug'), $this->config->mail_domain($_SESSION['storage_host']));
     }
     else if ($id === '0') {
       $contacts = new rcube_contacts($this->db, $this->user->ID);
@@ -493,7 +506,11 @@ class rcmail
 
     if ($ldap_config) {
       $ldap_config = (array) $ldap_config;
-      foreach ($ldap_config as $id => $prop)
+      foreach ($ldap_config as $id => $prop) {
+        // handle misconfiguration
+        if (empty($prop) || !is_array($prop)) {
+          continue;
+        }
         $list[$id] = array(
           'id'       => $id,
           'name'     => $prop['name'],
@@ -502,6 +519,7 @@ class rcmail
           'hidden'   => $prop['hidden'],
           'autocomplete' => in_array($id, $autocomplete)
         );
+      }
     }
 
     $plugin = $this->plugins->exec_hook('addressbooks_list', array('sources' => $list));
@@ -550,7 +568,7 @@ class rcmail
     $this->output->set_charset(RCMAIL_CHARSET);
 
     // add some basic labels to client
-    $this->output->add_label('loading', 'servererror');
+    $this->output->add_label('loading', 'servererror', 'requesttimedout');
 
     return $this->output;
   }
@@ -585,90 +603,147 @@ class rcmail
 
 
   /**
-   * Create global IMAP object and connect to server
+   * Initialize and get storage object
    *
-   * @param boolean True if connection should be established
-   * @todo Remove global $IMAP
+   * @return rcube_storage Storage object
    */
-  public function imap_init($connect = false)
+  public function get_storage()
   {
     // already initialized
-    if (is_object($this->imap))
+    if (!is_object($this->storage)) {
+      $this->storage_init();
+    }
+
+    return $this->storage;
+  }
+
+
+  /**
+   * Connect to the IMAP server with stored session data.
+   *
+   * @return bool True on success, False on error
+   * @deprecated
+   */
+  public function imap_connect()
+  {
+    return $this->storage_connect();
+  }
+
+
+  /**
+   * Initialize IMAP object.
+   *
+   * @deprecated
+   */
+  public function imap_init()
+  {
+    $this->storage_init();
+  }
+
+
+  /**
+   * Initialize storage object
+   */
+  public function storage_init()
+  {
+    // already initialized
+    if (is_object($this->storage)) {
       return;
+    }
+
+    $driver = $this->config->get('storage_driver', 'imap');
+    $driver_class = "rcube_{$driver}";
 
-    $this->imap = new rcube_imap();
-    $this->imap->skip_deleted = $this->config->get('skip_deleted');
+    if (!class_exists($driver_class)) {
+      raise_error(array(
+        'code' => 700, 'type' => 'php',
+        'file' => __FILE__, 'line' => __LINE__,
+        'message' => "Storage driver class ($driver) not found!"),
+        true, true);
+    }
+
+    // Initialize storage object
+    $this->storage = new $driver_class;
 
-    // enable caching of imap data
-    $imap_cache = $this->config->get('imap_cache');
+    // for backward compat. (deprecated, will be removed)
+    $this->imap = $this->storage;
+
+    // enable caching of mail data
+    $storage_cache  = $this->config->get("{$driver}_cache");
     $messages_cache = $this->config->get('messages_cache');
     // for backward compatybility
-    if ($imap_cache === null && $messages_cache === null && $this->config->get('enable_caching')) {
-        $imap_cache     = 'db';
+    if ($storage_cache === null && $messages_cache === null && $this->config->get('enable_caching')) {
+        $storage_cache  = 'db';
         $messages_cache = true;
     }
-    if ($imap_cache)
-        $this->imap->set_caching($imap_cache);
+
+    if ($storage_cache)
+        $this->storage->set_caching($storage_cache);
     if ($messages_cache)
-        $this->imap->set_messages_caching(true);
+        $this->storage->set_messages_caching(true);
 
     // set pagesize from config
-    $this->imap->set_pagesize($this->config->get('pagesize', 50));
+    $pagesize = $this->config->get('mail_pagesize');
+    if (!$pagesize) {
+        $pagesize = $this->config->get('pagesize', 50);
+    }
+    $this->storage->set_pagesize($pagesize);
 
-    // Setting root and delimiter before establishing the connection
-    // can save time detecting them using NAMESPACE and LIST
+    // set class options
     $options = array(
-      'auth_type'   => $this->config->get('imap_auth_type', 'check'),
-      'auth_cid'    => $this->config->get('imap_auth_cid'),
-      'auth_pw'     => $this->config->get('imap_auth_pw'),
-      'debug'       => (bool) $this->config->get('imap_debug', 0),
-      'force_caps'  => (bool) $this->config->get('imap_force_caps'),
-      'timeout'     => (int) $this->config->get('imap_timeout', 0),
+      '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"),
+      'timeout'     => (int) $this->config->get("{$driver}_timeout"),
+      'skip_deleted' => (bool) $this->config->get('skip_deleted'),
+      'driver'      => $driver,
     );
 
-    $this->imap->set_options($options);
-
-    // set global object for backward compatibility
-    $GLOBALS['IMAP'] = $this->imap;
+    if (!empty($_SESSION['storage_host'])) {
+      $options['host']     = $_SESSION['storage_host'];
+      $options['user']     = $_SESSION['username'];
+      $options['port']     = $_SESSION['storage_port'];
+      $options['ssl']      = $_SESSION['storage_ssl'];
+      $options['password'] = $this->decrypt($_SESSION['password']);
+      // set 'imap_host' for backwards compatibility
+      $_SESSION[$driver.'_host'] = &$_SESSION['storage_host'];
+    }
 
-    $hook = $this->plugins->exec_hook('imap_init', array('fetch_headers' => $this->imap->fetch_add_headers));
-    if ($hook['fetch_headers'])
-      $this->imap->fetch_add_headers = $hook['fetch_headers'];
+    $options = $this->plugins->exec_hook("storage_init", $options);
 
-    // support this parameter for backward compatibility but log warning
-    if ($connect) {
-      $this->imap_connect();
-      raise_error(array(
-        'code' => 800, 'type' => 'imap',
-        'file' => __FILE__, 'line' => __LINE__,
-        'message' => "rcube::imap_init(true) is deprecated, use rcube::imap_connect() instead"),
-        true, false);
-    }
+    $this->storage->set_options($options);
+    $this->set_storage_prop();
   }
 
 
   /**
-   * Connect to IMAP server with stored session data
+   * Connect to the mail storage server with stored session data
    *
-   * @return bool True on success, false on error
+   * @return bool True on success, False on error
    */
-  public function imap_connect()
+  public function storage_connect()
   {
-    if (!$this->imap)
-      $this->imap_init();
+    $storage = $this->get_storage();
 
-    if ($_SESSION['imap_host'] && !$this->imap->conn->connected()) {
-      if (!$this->imap->connect($_SESSION['imap_host'], $_SESSION['username'], $this->decrypt($_SESSION['password']), $_SESSION['imap_port'], $_SESSION['imap_ssl'])) {
+    if ($_SESSION['storage_host'] && !$storage->is_connected()) {
+      $host = $_SESSION['storage_host'];
+      $user = $_SESSION['username'];
+      $port = $_SESSION['storage_port'];
+      $ssl  = $_SESSION['storage_ssl'];
+      $pass = $this->decrypt($_SESSION['password']);
+
+      if (!$storage->connect($host, $user, $pass, $port, $ssl)) {
         if ($this->output)
-          $this->output->show_message($this->imap->get_error_code() == -1 ? 'imaperror' : 'sessionerror', 'error');
+          $this->output->show_message($storage->get_error_code() == -1 ? 'storageerror' : 'sessionerror', 'error');
       }
       else {
-        $this->set_imap_prop();
-        return $this->imap->conn;
+        $this->set_storage_prop();
       }
     }
 
-    return false;
+    return $storage->is_connected();
   }
 
 
@@ -704,7 +779,7 @@ class rcmail
     $this->session = new rcube_session($this->get_dbh(), $this->config);
 
     $this->session->register_gc_handler('rcmail_temp_gc');
-    $this->session->register_gc_handler('rcmail_cache_gc');
+    $this->session->register_gc_handler(array($this, 'cache_gc'));
 
     // start PHP session (if not in CLI mode)
     if ($_SERVER['REMOTE_ADDR'])
@@ -713,6 +788,10 @@ class rcmail
     // set initial session vars
     if (!$_SESSION['user_id'])
       $_SESSION['temp'] = true;
+
+    // restore skin selection after logout
+    if ($_SESSION['temp'] && !empty($_SESSION['skin']))
+      $this->config->set('skin', $_SESSION['skin']);
   }
 
 
@@ -735,23 +814,35 @@ class rcmail
       $this->session->set_keep_alive($keep_alive);
     }
 
-    $this->session->set_secret($this->config->get('des_key') . $_SERVER['HTTP_USER_AGENT']);
+    $this->session->set_secret($this->config->get('des_key') . dirname($_SERVER['SCRIPT_NAME']));
     $this->session->set_ip_check($this->config->get('ip_check'));
   }
 
 
   /**
-   * Perfom login to the IMAP server and to the webmail service.
+   * Perfom login to the mail server and to the webmail service.
    * This will also create a new user entry if auto_create_user is configured.
    *
-   * @param string IMAP user name
-   * @param string IMAP password
-   * @param string IMAP host
+   * @param string Mail storage (IMAP) user name
+   * @param string Mail storage (IMAP) password
+   * @param string Mail storage (IMAP) host
+   * @param bool   Enables cookie check
+   *
    * @return boolean True on success, False on failure
    */
-  function login($username, $pass, $host=NULL)
+  function login($username, $pass, $host = null, $cookiecheck = false)
   {
-    $user = NULL;
+    $this->login_error = null;
+
+    if (empty($username)) {
+      return false;
+    }
+
+    if ($cookiecheck && empty($_COOKIE)) {
+      $this->login_error = self::ERROR_COOKIES_DISABLED;
+      return false;
+    }
+
     $config = $this->config->all();
 
     if (!$host)
@@ -768,24 +859,33 @@ class rcmail
           break;
         }
       }
-      if (!$allowed)
-        return false;
+      if (!$allowed) {
+        $host = null;
       }
-    else if (!empty($config['default_host']) && $host != rcube_parse_host($config['default_host']))
+    }
+    else if (!empty($config['default_host']) && $host != rcube_parse_host($config['default_host'])) {
+      $host = null;
+    }
+
+    if (!$host) {
+      $this->login_error = self::ERROR_INVALID_HOST;
       return false;
+    }
 
     // parse $host URL
     $a_host = parse_url($host);
     if ($a_host['host']) {
       $host = $a_host['host'];
-      $imap_ssl = (isset($a_host['scheme']) && in_array($a_host['scheme'], array('ssl','imaps','tls'))) ? $a_host['scheme'] : null;
+      $ssl = (isset($a_host['scheme']) && in_array($a_host['scheme'], array('ssl','imaps','tls'))) ? $a_host['scheme'] : null;
       if (!empty($a_host['port']))
-        $imap_port = $a_host['port'];
-      else if ($imap_ssl && $imap_ssl != 'tls' && (!$config['default_port'] || $config['default_port'] == 143))
-        $imap_port = 993;
+        $port = $a_host['port'];
+      else if ($ssl && $ssl != 'tls' && (!$config['default_port'] || $config['default_port'] == 143))
+        $port = 993;
     }
 
-    $imap_port = $imap_port ? $imap_port : $config['default_port'];
+    if (!$port) {
+        $port = $config['default_port'];
+    }
 
     /* Modify username with domain if required
        Inspired by Marco <P0L0_notspam_binware.org>
@@ -798,10 +898,17 @@ class rcmail
         $username .= '@'.rcube_parse_host($config['username_domain'], $host);
     }
 
-    // Convert username to lowercase. If IMAP backend
+    // Convert username to lowercase. If storage backend
     // is case-insensitive we need to store always the same username (#1487113)
     if ($config['login_lc']) {
-      $username = mb_strtolower($username);
+      if ($config['login_lc'] == 2 || $config['login_lc'] === true) {
+        $username = mb_strtolower($username);
+      }
+      else if (strpos($username, '@')) {
+        // lowercase domain name
+        list($local, $domain) = explode('@', $username);
+        $username = $local . '@' . mb_strtolower($domain);
+      }
     }
 
     // try to resolve email address from virtuser table
@@ -811,23 +918,19 @@ class rcmail
 
     // Here we need IDNA ASCII
     // Only rcube_contacts class is using domain names in Unicode
-    $host = rcube_idn_to_ascii($host);
-    if (strpos($username, '@')) {
-      // lowercase domain name
-      list($local, $domain) = explode('@', $username);
-      $username = $local . '@' . mb_strtolower($domain);
-      $username = rcube_idn_to_ascii($username);
-    }
+    $host     = rcube_idn_to_ascii($host);
+    $username = rcube_idn_to_ascii($username);
 
     // user already registered -> overwrite username
-    if ($user = rcube_user::query($username, $host))
+    if ($user = rcube_user::query($username, $host)) {
       $username = $user->data['username'];
+    }
 
-    if (!$this->imap)
-      $this->imap_init();
+    if (!$this->storage)
+      $this->storage_init();
 
-    // try IMAP login
-    if (!($imap_login = $this->imap->connect($host, $username, $pass, $imap_port, $imap_ssl))) {
+    // try to log in
+    if (!($login = $this->storage->connect($host, $username, $pass, $port, $ssl))) {
       // try with lowercase
       $username_lc = mb_strtolower($username);
       if ($username_lc != $username) {
@@ -835,14 +938,15 @@ class rcmail
         if (!$user && ($user = rcube_user::query($username_lc, $host)))
           $username_lc = $user->data['username'];
 
-        if ($imap_login = $this->imap->connect($host, $username_lc, $pass, $imap_port, $imap_ssl))
+        if ($login = $this->storage->connect($host, $username_lc, $pass, $port, $ssl))
           $username = $username_lc;
       }
     }
 
-    // exit if IMAP login failed
-    if (!$imap_login)
+    // exit if login failed
+    if (!$login) {
       return false;
+    }
 
     // user already registered -> update user's record
     if (is_object($user)) {
@@ -874,7 +978,7 @@ class rcmail
     if (is_object($user) && $user->ID) {
       // Configure environment
       $this->set_user($user);
-      $this->set_imap_prop();
+      $this->set_storage_prop();
       $this->session_configure();
 
       // fix some old settings according to namespace prefix
@@ -882,17 +986,17 @@ class rcmail
 
       // create default folders on first login
       if ($config['create_default_folders'] && (!empty($created) || empty($user->data['last_login']))) {
-        $this->imap->create_default_folders();
+        $this->storage->create_default_folders();
       }
 
       // set session vars
-      $_SESSION['user_id']   = $user->ID;
-      $_SESSION['username']  = $user->data['username'];
-      $_SESSION['imap_host'] = $host;
-      $_SESSION['imap_port'] = $imap_port;
-      $_SESSION['imap_ssl']  = $imap_ssl;
-      $_SESSION['password']  = $this->encrypt($pass);
-      $_SESSION['login_time'] = mktime();
+      $_SESSION['user_id']      = $user->ID;
+      $_SESSION['username']     = $user->data['username'];
+      $_SESSION['storage_host'] = $host;
+      $_SESSION['storage_port'] = $port;
+      $_SESSION['storage_ssl']  = $ssl;
+      $_SESSION['password']     = $this->encrypt($pass);
+      $_SESSION['login_time']   = time();
 
       if (isset($_REQUEST['_timezone']) && $_REQUEST['_timezone'] != '_default_')
         $_SESSION['timezone'] = floatval($_REQUEST['_timezone']);
@@ -900,7 +1004,7 @@ class rcmail
         $_SESSION['dst_active'] = intval($_REQUEST['_dstactive']);
 
       // force reloading complete list of subscribed mailboxes
-      $this->imap->clear_cache('mailboxes', true);
+      $this->storage->clear_cache('mailboxes', true);
 
       return true;
     }
@@ -909,22 +1013,41 @@ class rcmail
   }
 
 
+    /**
+     * Returns error code of last login operation
+     *
+     * @return int Error code
+     */
+    public function login_error()
+    {
+        if ($this->login_error) {
+            return $this->login_error;
+        }
+
+        if ($this->storage && $this->storage->get_error_code() < -1) {
+            return self::ERROR_STORAGE;
+        }
+    }
+
+
   /**
-   * Set root dir and last stored mailbox
+   * Set storage parameters.
    * This must be done AFTER connecting to the server!
    */
-  public function set_imap_prop()
+  private function set_storage_prop()
   {
-    $this->imap->set_charset($this->config->get('default_charset', RCMAIL_CHARSET));
+    $storage = $this->get_storage();
 
-    if ($default_folders = $this->config->get('default_imap_folders')) {
-      $this->imap->set_default_mailboxes($default_folders);
+    $storage->set_charset($this->config->get('default_charset', RCMAIL_CHARSET));
+
+    if ($default_folders = $this->config->get('default_folders')) {
+      $storage->set_default_folders($default_folders);
     }
     if (isset($_SESSION['mbox'])) {
-      $this->imap->set_mailbox($_SESSION['mbox']);
+      $storage->set_folder($_SESSION['mbox']);
     }
     if (isset($_SESSION['page'])) {
-      $this->imap->set_page($_SESSION['page']);
+      $storage->set_page($_SESSION['page']);
     }
   }
 
@@ -941,26 +1064,32 @@ class rcmail
 
     if (is_array($default_host)) {
       $post_host = get_input_value('_host', RCUBE_INPUT_POST);
+      $post_user = get_input_value('_user', RCUBE_INPUT_POST);
+
+      list($user, $domain) = explode('@', $post_user);
 
       // direct match in default_host array
-      if ($default_host[$post_host] || in_array($post_host, array_values($default_host))) {
+      if ($default_host[$post_host] || in_array($post_host, $default_host)) {
         $host = $post_host;
       }
-
       // try to select host by mail domain
-      list($user, $domain) = explode('@', get_input_value('_user', RCUBE_INPUT_POST));
-      if (!empty($domain)) {
-        foreach ($default_host as $imap_host => $mail_domains) {
-          if (is_array($mail_domains) && in_array($domain, $mail_domains)) {
-            $host = $imap_host;
+      else if (!empty($domain)) {
+        foreach ($default_host as $storage_host => $mail_domains) {
+          if (is_array($mail_domains) && in_array_nocase($domain, $mail_domains)) {
+            $host = $storage_host;
+            break;
+          }
+          else if (stripos($storage_host, $domain) !== false || stripos(strval($mail_domains), $domain) !== false) {
+            $host = is_numeric($storage_host) ? $mail_domains : $storage_host;
             break;
           }
         }
       }
 
-      // take the first entry if $host is still an array
+      // take the first entry if $host is still not set
       if (empty($host)) {
-        $host = array_shift($default_host);
+        list($key, $val) = each($default_host);
+        $host = is_numeric($key) ? $val : $key;
       }
     }
     else if (empty($default_host)) {
@@ -991,7 +1120,6 @@ class rcmail
     if (is_string($attrib))
       $attrib = array('name' => $attrib);
 
-    $nr = is_numeric($attrib['nr']) ? $attrib['nr'] : 1;
     $name = $attrib['name'] ? $attrib['name'] : '';
 
     // attrib contain text values: use them from now
@@ -999,37 +1127,13 @@ class rcmail
         $this->texts[$name] = $setval;
 
     // check for text with domain
-    if ($domain && ($text_item = $this->texts[$domain.'.'.$name]))
+    if ($domain && ($text = $this->texts[$domain.'.'.$name]))
       ;
     // text does not exist
-    else if (!($text_item = $this->texts[$name])) {
+    else if (!($text = $this->texts[$name])) {
       return "[$name]";
     }
 
-    // make text item array
-    $a_text_item = is_array($text_item) ? $text_item : array('single' => $text_item);
-
-    // decide which text to use
-    if ($nr == 1) {
-      $text = $a_text_item['single'];
-    }
-    else if ($nr > 0) {
-      $text = $a_text_item['multiple'];
-    }
-    else if ($nr == 0) {
-      if ($a_text_item['none'])
-        $text = $a_text_item['none'];
-      else if ($a_text_item['single'])
-        $text = $a_text_item['single'];
-      else if ($a_text_item['multiple'])
-        $text = $a_text_item['multiple'];
-    }
-
-    // default text is single
-    if ($text == '') {
-      $text = $a_text_item['single'];
-    }
-
     // replace vars in text
     if (is_array($attrib['vars'])) {
       foreach ($attrib['vars'] as $var_key => $var_value)
@@ -1044,7 +1148,7 @@ class rcmail
     else if ($attrib['lowercase'])
       return mb_strtolower($text);
 
-    return $text;
+    return strtr($text, array('\n' => "\n"));
   }
 
 
@@ -1111,7 +1215,7 @@ class rcmail
         $this->texts = array_merge($this->texts, $messages);
 
       // include user language files
-      if ($lang != 'en' && is_dir(INSTALL_PATH . 'program/localization/' . $lang)) {
+      if ($lang != 'en' && $lang != 'en_US' && is_dir(INSTALL_PATH . 'program/localization/' . $lang)) {
         include_once(INSTALL_PATH . 'program/localization/' . $lang . '/labels.inc');
         include_once(INSTALL_PATH . 'program/localization/' . $lang . '/messages.inc');
 
@@ -1168,7 +1272,7 @@ class rcmail
     $this->plugins->exec_hook('session_destroy');
 
     $this->session->kill();
-    $_SESSION = array('language' => $this->user->language, 'temp' => true);
+    $_SESSION = array('language' => $this->user->language, 'temp' => true, 'skin' => $this->config->get('skin'));
     $this->user->reset();
   }
 
@@ -1185,15 +1289,15 @@ class rcmail
       if (!$this->session->check_auth())
         return;
 
-      $this->imap_connect();
+      $this->storage_connect();
     }
 
     if ($config['logout_purge'] && !empty($config['trash_mbox'])) {
-      $this->imap->clear_mailbox($config['trash_mbox']);
+      $this->storage->clear_folder($config['trash_mbox']);
     }
 
     if ($config['logout_expunge']) {
-      $this->imap->expunge('INBOX');
+      $this->storage->expunge_folder('INBOX');
     }
 
     // Try to save unsaved user preferences
@@ -1225,8 +1329,11 @@ class rcmail
             $cache->close();
     }
 
-    if (is_object($this->imap))
-      $this->imap->close();
+    if (is_object($this->storage)) {
+        if ($this->expunge_cache)
+            $this->storage->expunge_cache();
+      $this->storage->close();
+  }
 
     // before closing the database connection, write session data
     if ($_SERVER['REMOTE_ADDR'] && is_object($this->session)) {
@@ -1262,6 +1369,18 @@ class rcmail
   }
 
 
+  /**
+   * Garbage collector for cache entries.
+   * Set flag to expunge caches on shutdown
+   */
+  function cache_gc()
+  {
+    // because this gc function is called before storage is initialized,
+    // we just set a flag to expunge storage cache on shutdown.
+    $this->expunge_cache = true;
+  }
+
+
   /**
    * Generate a unique token to be used in a form request
    *
@@ -1342,7 +1461,7 @@ class rcmail
       mcrypt_module_close($td);
     }
     else {
-      // @include_once 'des.inc'; (not shipped with this distribution)
+      @include_once 'des.inc';
 
       if (function_exists('des')) {
         $des_iv_size = 8;
@@ -1394,7 +1513,7 @@ class rcmail
       mcrypt_module_close($td);
     }
     else {
-      // @include_once 'des.inc'; (not shipped with this distribution)
+      @include_once 'des.inc';
 
       if (function_exists('des')) {
         $des_iv_size = 8;
@@ -1454,7 +1573,7 @@ class rcmail
     $url = './';
     $delm = '?';
     foreach (array_reverse($p) as $key => $val) {
-      if ($val !== '') {
+      if ($val !== '' && $val !== null) {
         $par = $key[0] == '_' ? $key : '_'.$key;
         $url .= $delm.urlencode($par).'='.urlencode($val);
         $delm = '&';
@@ -1464,66 +1583,6 @@ class rcmail
   }
 
 
-  /**
-   * Use imagemagick or GD lib to read image properties
-   *
-   * @param string Absolute file path
-   * @return mixed Hash array with image props like type, width, height or False on error
-   */
-  public static function imageprops($filepath)
-  {
-    $rcmail = rcmail::get_instance();
-    if ($cmd = $rcmail->config->get('im_identify_path', false)) {
-      list(, $type, $size) = explode(' ', strtolower(rcmail::exec($cmd. ' 2>/dev/null {in}', array('in' => $filepath))));
-      if ($size)
-        list($width, $height) = explode('x', $size);
-    }
-    else if (function_exists('getimagesize')) {
-      $imsize = @getimagesize($filepath);
-      $width = $imsize[0];
-      $height = $imsize[1];
-      $type = preg_replace('!image/!', '', $imsize['mime']);
-    }
-
-    return $type ? array('type' => $type, 'width' => $width, 'height' => $height) : false;
-  }
-
-
-  /**
-   * Convert an image to a given size and type using imagemagick (ensures input is an image)
-   *
-   * @param $p['in']  Input filename (mandatory)
-   * @param $p['out'] Output filename (mandatory)
-   * @param $p['size']  Width x height of resulting image, e.g. "160x60"
-   * @param $p['type']  Output file type, e.g. "jpg"
-   * @param $p['-opts'] Custom command line options to ImageMagick convert
-   * @return Success of convert as true/false
-   */
-  public static function imageconvert($p)
-  {
-    $result = false;
-    $rcmail = rcmail::get_instance();
-    $convert  = $rcmail->config->get('im_convert_path', false);
-    $identify = $rcmail->config->get('im_identify_path', false);
-
-    // imagemagick is required for this
-    if (!$convert)
-        return false;
-
-    if (!(($imagetype = @exif_imagetype($p['in'])) && ($type = image_type_to_extension($imagetype, false))))
-      list(, $type) = explode(' ', strtolower(rcmail::exec($identify . ' 2>/dev/null {in}', $p))); # for things like eps
-
-    $type = strtr($type, array("jpeg" => "jpg", "tiff" => "tif", "ps" => "eps", "ept" => "eps"));
-    $p += array('type' => $type, 'types' => "bmp,eps,gif,jp2,jpg,png,svg,tif", 'quality' => 75);
-    $p['-opts'] = array('-resize' => $p['size'].'>') + (array)$p['-opts'];
-
-    if (in_array($type, explode(',', $p['types']))) # Valid type?
-      $result = rcmail::exec($convert . ' 2>&1 -flatten -auto-orient -colorspace RGB -quality {quality} {-opts} {in} {type}:{out}', $p) === "";
-
-    return $result;
-  }
-
-
   /**
    * Construct shell command, execute it and return output as string.
    * Keywords {keyword} are replaced with arguments
@@ -1625,7 +1684,7 @@ class rcmail
    */
   private function fix_namespace_settings($user)
   {
-    $prefix     = $this->imap->get_namespace('prefix');
+    $prefix     = $this->storage->get_namespace('prefix');
     $prefix_len = strlen($prefix);
 
     if (!$prefix_len)
@@ -1636,7 +1695,7 @@ class rcmail
       return;
 
     // Build namespace prefix regexp
-    $ns     = $this->imap->get_namespace();
+    $ns     = $this->storage->get_namespace();
     $regexp = array();
 
     foreach ($ns as $entry) {
@@ -1660,10 +1719,10 @@ class rcmail
       }
     }
 
-    if (!empty($prefs['default_imap_folders'])) {
-      foreach ($prefs['default_imap_folders'] as $idx => $name) {
+    if (!empty($prefs['default_folders'])) {
+      foreach ($prefs['default_folders'] as $idx => $name) {
         if ($name != 'INBOX' && !preg_match($regexp, $name)) {
-          $prefs['default_imap_folders'][$idx] = $prefix.$name;
+          $prefs['default_folders'][$idx] = $prefix.$name;
         }
       }
     }
@@ -1713,7 +1772,7 @@ class rcmail
 
     // save updated preferences and reset imap settings (default folders)
     $user->save_prefs($prefs);
-    $this->set_imap_prop();
+    $this->set_storage_prop();
   }
 
 }
diff --git a/program/include/rcmail.php.orig b/program/include/rcmail.php.orig
deleted file mode 100644 (file)
index 2dc9eae..0000000
+++ /dev/null
@@ -1,1719 +0,0 @@
-<?php
-
-/*
- +-----------------------------------------------------------------------+
- | program/include/rcmail.php                                            |
- |                                                                       |
- | This file is part of the Roundcube Webmail client                     |
- | Copyright (C) 2008-2011, The Roundcube Dev Team                       |
- | Copyright (C) 2011, Kolab Systems AG                                  |
- | Licensed under the GNU GPL                                            |
- |                                                                       |
- | PURPOSE:                                                              |
- |   Application class providing core functions and holding              |
- |   instances of all 'global' objects like db- and imap-connections     |
- +-----------------------------------------------------------------------+
- | Author: Thomas Bruederli <roundcube@gmail.com>                        |
- +-----------------------------------------------------------------------+
-
- $Id: rcmail.php 5897 2012-02-21 20:46:15Z thomasb $
-
-*/
-
-
-/**
- * Application class of Roundcube Webmail
- * implemented as singleton
- *
- * @package Core
- */
-class rcmail
-{
-  /**
-   * Main tasks.
-   *
-   * @var array
-   */
-  static public $main_tasks = array('mail','settings','addressbook','login','logout','utils','dummy');
-
-  /**
-   * Singleton instace of rcmail
-   *
-   * @var rcmail
-   */
-  static private $instance;
-
-  /**
-   * Stores instance of rcube_config.
-   *
-   * @var rcube_config
-   */
-  public $config;
-
-  /**
-   * Stores rcube_user instance.
-   *
-   * @var rcube_user
-   */
-  public $user;
-
-  /**
-   * Instace of database class.
-   *
-   * @var rcube_mdb2
-   */
-  public $db;
-
-  /**
-   * Instace of Memcache class.
-   *
-   * @var rcube_mdb2
-   */
-  public $memcache;
-
-  /**
-   * Instace of rcube_session class.
-   *
-   * @var rcube_session
-   */
-  public $session;
-
-  /**
-   * Instance of rcube_smtp class.
-   *
-   * @var rcube_smtp
-   */
-  public $smtp;
-
-  /**
-   * Instance of rcube_imap class.
-   *
-   * @var rcube_imap
-   */
-  public $imap;
-
-  /**
-   * Instance of rcube_template class.
-   *
-   * @var rcube_template
-   */
-  public $output;
-
-  /**
-   * Instance of rcube_plugin_api.
-   *
-   * @var rcube_plugin_api
-   */
-  public $plugins;
-
-  /**
-   * Current task.
-   *
-   * @var string
-   */
-  public $task;
-
-  /**
-   * Current action.
-   *
-   * @var string
-   */
-  public $action = '';
-  public $comm_path = './';
-
-  private $texts;
-  private $address_books = array();
-  private $caches = array();
-  private $action_map = array();
-  private $shutdown_functions = array();
-
-
-  /**
-   * This implements the 'singleton' design pattern
-   *
-   * @return rcmail The one and only instance
-   */
-  static function get_instance()
-  {
-    if (!self::$instance) {
-      self::$instance = new rcmail();
-      self::$instance->startup();  // init AFTER object was linked with self::$instance
-    }
-
-    return self::$instance;
-  }
-
-
-  /**
-   * Private constructor
-   */
-  private function __construct()
-  {
-    // load configuration
-    $this->config = new rcube_config();
-
-    register_shutdown_function(array($this, 'shutdown'));
-  }
-
-
-  /**
-   * Initial startup function
-   * to register session, create database and imap connections
-   *
-   * @todo Remove global vars $DB, $USER
-   */
-  private function startup()
-  {
-    // initialize syslog
-    if ($this->config->get('log_driver') == 'syslog') {
-      $syslog_id = $this->config->get('syslog_id', 'roundcube');
-      $syslog_facility = $this->config->get('syslog_facility', LOG_USER);
-      openlog($syslog_id, LOG_ODELAY, $syslog_facility);
-    }
-
-    // connect to database
-    $GLOBALS['DB'] = $this->get_dbh();
-
-    // start session
-    $this->session_init();
-
-    // create user object
-    $this->set_user(new rcube_user($_SESSION['user_id']));
-
-    // configure session (after user config merge!)
-    $this->session_configure();
-
-    // set task and action properties
-    $this->set_task(get_input_value('_task', RCUBE_INPUT_GPC));
-    $this->action = asciiwords(get_input_value('_action', RCUBE_INPUT_GPC));
-
-    // reset some session parameters when changing task
-    if ($this->task != 'utils') {
-      if ($this->session && $_SESSION['task'] != $this->task)
-        $this->session->remove('page');
-      // set current task to session
-      $_SESSION['task'] = $this->task;
-    }
-
-    // init output class
-    if (!empty($_REQUEST['_remote']))
-      $GLOBALS['OUTPUT'] = $this->json_init();
-    else
-      $GLOBALS['OUTPUT'] = $this->load_gui(!empty($_REQUEST['_framed']));
-
-    // create plugin API and load plugins
-    $this->plugins = rcube_plugin_api::get_instance();
-
-    // init plugins
-    $this->plugins->init();
-  }
-
-
-  /**
-   * Setter for application task
-   *
-   * @param string Task to set
-   */
-  public function set_task($task)
-  {
-    $task = asciiwords($task);
-
-    if ($this->user && $this->user->ID)
-      $task = !$task ? 'mail' : $task;
-    else
-      $task = 'login';
-
-    $this->task = $task;
-    $this->comm_path = $this->url(array('task' => $this->task));
-
-    if ($this->output)
-      $this->output->set_env('task', $this->task);
-  }
-
-
-  /**
-   * Setter for system user object
-   *
-   * @param rcube_user Current user instance
-   */
-  public function set_user($user)
-  {
-    if (is_object($user)) {
-      $this->user = $user;
-      $GLOBALS['USER'] = $this->user;
-
-      // overwrite config with user preferences
-      $this->config->set_user_prefs((array)$this->user->get_prefs());
-    }
-
-    $_SESSION['language'] = $this->user->language = $this->language_prop($this->config->get('language', $_SESSION['language']));
-
-    // set localization
-    setlocale(LC_ALL, $_SESSION['language'] . '.utf8', 'en_US.utf8');
-
-    // workaround for http://bugs.php.net/bug.php?id=18556
-    if (in_array($_SESSION['language'], array('tr_TR', 'ku', 'az_AZ')))
-      setlocale(LC_CTYPE, 'en_US' . '.utf8');
-  }
-
-
-  /**
-   * Check the given string and return a valid language code
-   *
-   * @param string Language code
-   * @return string Valid language code
-   */
-  private function language_prop($lang)
-  {
-    static $rcube_languages, $rcube_language_aliases;
-
-    // user HTTP_ACCEPT_LANGUAGE if no language is specified
-    if (empty($lang) || $lang == 'auto') {
-       $accept_langs = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
-       $lang = str_replace('-', '_', $accept_langs[0]);
-     }
-
-    if (empty($rcube_languages)) {
-      @include(INSTALL_PATH . 'program/localization/index.inc');
-    }
-
-    // check if we have an alias for that language
-    if (!isset($rcube_languages[$lang]) && isset($rcube_language_aliases[$lang])) {
-      $lang = $rcube_language_aliases[$lang];
-    }
-    // try the first two chars
-    else if (!isset($rcube_languages[$lang])) {
-      $short = substr($lang, 0, 2);
-
-      // check if we have an alias for the short language code
-      if (!isset($rcube_languages[$short]) && isset($rcube_language_aliases[$short])) {
-        $lang = $rcube_language_aliases[$short];
-      }
-      // expand 'nn' to 'nn_NN'
-      else if (!isset($rcube_languages[$short])) {
-        $lang = $short.'_'.strtoupper($short);
-      }
-    }
-
-    if (!isset($rcube_languages[$lang]) || !is_dir(INSTALL_PATH . 'program/localization/' . $lang)) {
-      $lang = 'en_US';
-    }
-
-    return $lang;
-  }
-
-
-  /**
-   * Get the current database connection
-   *
-   * @return rcube_mdb2  Database connection object
-   */
-  public function get_dbh()
-  {
-    if (!$this->db) {
-      $config_all = $this->config->all();
-
-      $this->db = new rcube_mdb2($config_all['db_dsnw'], $config_all['db_dsnr'], $config_all['db_persistent']);
-      $this->db->sqlite_initials = INSTALL_PATH . 'SQL/sqlite.initial.sql';
-      $this->db->set_debug((bool)$config_all['sql_debug']);
-    }
-
-    return $this->db;
-  }
-  
-  
-  /**
-   * Get global handle for memcache access
-   *
-   * @return object Memcache
-   */
-  public function get_memcache()
-  {
-    if (!isset($this->memcache)) {
-      // no memcache support in PHP
-      if (!class_exists('Memcache')) {
-        $this->memcache = false;
-        return false;
-      }
-
-      $this->memcache = new Memcache;
-      $this->mc_available = 0;
-      
-      // add alll configured hosts to pool
-      $pconnect = $this->config->get('memcache_pconnect', true);
-      foreach ($this->config->get('memcache_hosts', array()) as $host) {
-        list($host, $port) = explode(':', $host);
-        if (!$port) $port = 11211;
-        $this->mc_available += intval($this->memcache->addServer($host, $port, $pconnect, 1, 1, 15, false, array($this, 'memcache_failure')));
-      }
-      
-      // test connection and failover (will result in $this->mc_available == 0 on complete failure)
-      $this->memcache->increment('__CONNECTIONTEST__', 1);  // NOP if key doesn't exist
-
-      if (!$this->mc_available)
-        $this->memcache = false;
-    }
-
-    return $this->memcache;
-  }
-  
-  /**
-   * Callback for memcache failure
-   */
-  public function memcache_failure($host, $port)
-  {
-    static $seen = array();
-    
-    // only report once
-    if (!$seen["$host:$port"]++) {
-      $this->mc_available--;
-      raise_error(array('code' => 604, 'type' => 'db',
-        'line' => __LINE__, 'file' => __FILE__,
-        'message' => "Memcache failure on host $host:$port"),
-        true, false);
-    }
-  }
-
-
-  /**
-   * Initialize and get cache object
-   *
-   * @param string $name   Cache identifier
-   * @param string $type   Cache type ('db', 'apc' or 'memcache')
-   * @param int    $ttl    Expiration time for cache items in seconds
-   * @param bool   $packed Enables/disables data serialization
-   *
-   * @return rcube_cache Cache object
-   */
-  public function get_cache($name, $type='db', $ttl=0, $packed=true)
-  {
-    if (!isset($this->caches[$name])) {
-      $this->caches[$name] = new rcube_cache($type, $_SESSION['user_id'], $name, $ttl, $packed);
-    }
-
-    return $this->caches[$name];
-  }
-
-
-  /**
-   * Return instance of the internal address book class
-   *
-   * @param string  Address book identifier
-   * @param boolean True if the address book needs to be writeable
-   *
-   * @return rcube_contacts Address book object
-   */
-  public function get_address_book($id, $writeable = false)
-  {
-    $contacts    = null;
-    $ldap_config = (array)$this->config->get('ldap_public');
-    $abook_type  = strtolower($this->config->get('address_book_type'));
-
-    // 'sql' is the alias for '0' used by autocomplete
-    if ($id == 'sql')
-        $id = '0';
-
-    // use existing instance
-    if (isset($this->address_books[$id]) && is_object($this->address_books[$id])
-      && is_a($this->address_books[$id], 'rcube_addressbook')
-      && (!$writeable || !$this->address_books[$id]->readonly)
-    ) {
-      $contacts = $this->address_books[$id];
-    }
-    else if ($id && $ldap_config[$id]) {
-      $contacts = new rcube_ldap($ldap_config[$id], $this->config->get('ldap_debug'), $this->config->mail_domain($_SESSION['imap_host']));
-    }
-    else if ($id === '0') {
-      $contacts = new rcube_contacts($this->db, $this->user->ID);
-    }
-    else {
-      $plugin = $this->plugins->exec_hook('addressbook_get', array('id' => $id, 'writeable' => $writeable));
-
-      // plugin returned instance of a rcube_addressbook
-      if ($plugin['instance'] instanceof rcube_addressbook) {
-        $contacts = $plugin['instance'];
-      }
-      // get first source from the list
-      else if (!$id) {
-        $source = reset($this->get_address_sources($writeable));
-        if (!empty($source)) {
-          $contacts = $this->get_address_book($source['id']);
-          if ($contacts)
-            $id = $source['id'];
-        }
-      }
-    }
-
-    if (!$contacts) {
-      raise_error(array(
-        'code' => 700, 'type' => 'php',
-        'file' => __FILE__, 'line' => __LINE__,
-        'message' => "Addressbook source ($id) not found!"),
-        true, true);
-    }
-
-    // set configured sort order
-    if ($sort_col = $this->config->get('addressbook_sort_col'))
-        $contacts->set_sort_order($sort_col);
-
-    // add to the 'books' array for shutdown function
-    $this->address_books[$id] = $contacts;
-
-    return $contacts;
-  }
-
-
-  /**
-   * Return address books list
-   *
-   * @param boolean True if the address book needs to be writeable
-   *
-   * @return array  Address books array
-   */
-  public function get_address_sources($writeable = false)
-  {
-    $abook_type = strtolower($this->config->get('address_book_type'));
-    $ldap_config = $this->config->get('ldap_public');
-    $autocomplete = (array) $this->config->get('autocomplete_addressbooks');
-    $list = array();
-
-    // We are using the DB address book
-    if ($abook_type != 'ldap') {
-      if (!isset($this->address_books['0']))
-        $this->address_books['0'] = new rcube_contacts($this->db, $this->user->ID);
-      $list['0'] = array(
-        'id'       => '0',
-        'name'     => rcube_label('personaladrbook'),
-        'groups'   => $this->address_books['0']->groups,
-        'readonly' => $this->address_books['0']->readonly,
-        'autocomplete' => in_array('sql', $autocomplete),
-        'undelete' => $this->address_books['0']->undelete && $this->config->get('undo_timeout'),
-      );
-    }
-
-    if ($ldap_config) {
-      $ldap_config = (array) $ldap_config;
-      foreach ($ldap_config as $id => $prop)
-        $list[$id] = array(
-          'id'       => $id,
-          'name'     => $prop['name'],
-          'groups'   => is_array($prop['groups']),
-          'readonly' => !$prop['writable'],
-          'hidden'   => $prop['hidden'],
-          'autocomplete' => in_array($id, $autocomplete)
-        );
-    }
-
-    $plugin = $this->plugins->exec_hook('addressbooks_list', array('sources' => $list));
-    $list = $plugin['sources'];
-
-    foreach ($list as $idx => $item) {
-      // register source for shutdown function
-      if (!is_object($this->address_books[$item['id']]))
-        $this->address_books[$item['id']] = $item;
-      // remove from list if not writeable as requested
-      if ($writeable && $item['readonly'])
-          unset($list[$idx]);
-    }
-
-    return $list;
-  }
-
-
-  /**
-   * Init output object for GUI and add common scripts.
-   * This will instantiate a rcmail_template object and set
-   * environment vars according to the current session and configuration
-   *
-   * @param boolean True if this request is loaded in a (i)frame
-   * @return rcube_template Reference to HTML output object
-   */
-  public function load_gui($framed = false)
-  {
-    // init output page
-    if (!($this->output instanceof rcube_template))
-      $this->output = new rcube_template($this->task, $framed);
-
-    // set keep-alive/check-recent interval
-    if ($this->session && ($keep_alive = $this->session->get_keep_alive())) {
-      $this->output->set_env('keep_alive', $keep_alive);
-    }
-
-    if ($framed) {
-      $this->comm_path .= '&_framed=1';
-      $this->output->set_env('framed', true);
-    }
-
-    $this->output->set_env('task', $this->task);
-    $this->output->set_env('action', $this->action);
-    $this->output->set_env('comm_path', $this->comm_path);
-    $this->output->set_charset(RCMAIL_CHARSET);
-
-    // add some basic labels to client
-    $this->output->add_label('loading', 'servererror');
-
-    return $this->output;
-  }
-
-
-  /**
-   * Create an output object for JSON responses
-   *
-   * @return rcube_json_output Reference to JSON output object
-   */
-  public function json_init()
-  {
-    if (!($this->output instanceof rcube_json_output))
-      $this->output = new rcube_json_output($this->task);
-
-    return $this->output;
-  }
-
-
-  /**
-   * Create SMTP object and connect to server
-   *
-   * @param boolean True if connection should be established
-   */
-  public function smtp_init($connect = false)
-  {
-    $this->smtp = new rcube_smtp();
-
-    if ($connect)
-      $this->smtp->connect();
-  }
-
-
-  /**
-   * Create global IMAP object and connect to server
-   *
-   * @param boolean True if connection should be established
-   * @todo Remove global $IMAP
-   */
-  public function imap_init($connect = false)
-  {
-    // already initialized
-    if (is_object($this->imap))
-      return;
-
-    $this->imap = new rcube_imap();
-    $this->imap->skip_deleted = $this->config->get('skip_deleted');
-
-    // enable caching of imap data
-    $imap_cache = $this->config->get('imap_cache');
-    $messages_cache = $this->config->get('messages_cache');
-    // for backward compatybility
-    if ($imap_cache === null && $messages_cache === null && $this->config->get('enable_caching')) {
-        $imap_cache     = 'db';
-        $messages_cache = true;
-    }
-    if ($imap_cache)
-        $this->imap->set_caching($imap_cache);
-    if ($messages_cache)
-        $this->imap->set_messages_caching(true);
-
-    // set pagesize from config
-    $this->imap->set_pagesize($this->config->get('pagesize', 50));
-
-    // Setting root and delimiter before establishing the connection
-    // can save time detecting them using NAMESPACE and LIST
-    $options = array(
-      'auth_type'   => $this->config->get('imap_auth_type', 'check'),
-      'auth_cid'    => $this->config->get('imap_auth_cid'),
-      'auth_pw'     => $this->config->get('imap_auth_pw'),
-      'debug'       => (bool) $this->config->get('imap_debug', 0),
-      'force_caps'  => (bool) $this->config->get('imap_force_caps'),
-      'timeout'     => (int) $this->config->get('imap_timeout', 0),
-    );
-
-    $this->imap->set_options($options);
-
-    // set global object for backward compatibility
-    $GLOBALS['IMAP'] = $this->imap;
-
-    $hook = $this->plugins->exec_hook('imap_init', array('fetch_headers' => $this->imap->fetch_add_headers));
-    if ($hook['fetch_headers'])
-      $this->imap->fetch_add_headers = $hook['fetch_headers'];
-
-    // support this parameter for backward compatibility but log warning
-    if ($connect) {
-      $this->imap_connect();
-      raise_error(array(
-        'code' => 800, 'type' => 'imap',
-        'file' => __FILE__, 'line' => __LINE__,
-        'message' => "rcube::imap_init(true) is deprecated, use rcube::imap_connect() instead"),
-        true, false);
-    }
-  }
-
-
-  /**
-   * Connect to IMAP server with stored session data
-   *
-   * @return bool True on success, false on error
-   */
-  public function imap_connect()
-  {
-    if (!$this->imap)
-      $this->imap_init();
-
-    if ($_SESSION['imap_host'] && !$this->imap->conn->connected()) {
-      if (!$this->imap->connect($_SESSION['imap_host'], $_SESSION['username'], $this->decrypt($_SESSION['password']), $_SESSION['imap_port'], $_SESSION['imap_ssl'])) {
-        if ($this->output)
-          $this->output->show_message($this->imap->get_error_code() == -1 ? 'imaperror' : 'sessionerror', 'error');
-      }
-      else {
-        $this->set_imap_prop();
-        return $this->imap->conn;
-      }
-    }
-
-    return false;
-  }
-
-
-  /**
-   * Create session object and start the session.
-   */
-  public function session_init()
-  {
-    // session started (Installer?)
-    if (session_id())
-      return;
-
-    $sess_name   = $this->config->get('session_name');
-    $sess_domain = $this->config->get('session_domain');
-    $lifetime    = $this->config->get('session_lifetime', 0) * 60;
-
-    // set session domain
-    if ($sess_domain) {
-      ini_set('session.cookie_domain', $sess_domain);
-    }
-    // set session garbage collecting time according to session_lifetime
-    if ($lifetime) {
-      ini_set('session.gc_maxlifetime', $lifetime * 2);
-    }
-
-    ini_set('session.cookie_secure', rcube_https_check());
-    ini_set('session.name', $sess_name ? $sess_name : 'roundcube_sessid');
-    ini_set('session.use_cookies', 1);
-    ini_set('session.use_only_cookies', 1);
-    ini_set('session.serialize_handler', 'php');
-
-    // use database for storing session data
-    $this->session = new rcube_session($this->get_dbh(), $this->config);
-
-    $this->session->register_gc_handler('rcmail_temp_gc');
-    $this->session->register_gc_handler('rcmail_cache_gc');
-
-    // start PHP session (if not in CLI mode)
-    if ($_SERVER['REMOTE_ADDR'])
-      session_start();
-
-    // set initial session vars
-    if (!$_SESSION['user_id'])
-      $_SESSION['temp'] = true;
-  }
-
-
-  /**
-   * Configure session object internals
-   */
-  public function session_configure()
-  {
-    if (!$this->session)
-      return;
-
-    $lifetime = $this->config->get('session_lifetime', 0) * 60;
-
-    // set keep-alive/check-recent interval
-    if ($keep_alive = $this->config->get('keep_alive')) {
-      // be sure that it's less than session lifetime
-      if ($lifetime)
-        $keep_alive = min($keep_alive, $lifetime - 30);
-      $keep_alive = max(60, $keep_alive);
-      $this->session->set_keep_alive($keep_alive);
-    }
-
-    $this->session->set_secret($this->config->get('des_key') . $_SERVER['HTTP_USER_AGENT']);
-    $this->session->set_ip_check($this->config->get('ip_check'));
-  }
-
-
-  /**
-   * Perfom login to the IMAP server and to the webmail service.
-   * This will also create a new user entry if auto_create_user is configured.
-   *
-   * @param string IMAP user name
-   * @param string IMAP password
-   * @param string IMAP host
-   * @return boolean True on success, False on failure
-   */
-  function login($username, $pass, $host=NULL)
-  {
-    $user = NULL;
-    $config = $this->config->all();
-
-    if (!$host)
-      $host = $config['default_host'];
-
-    // Validate that selected host is in the list of configured hosts
-    if (is_array($config['default_host'])) {
-      $allowed = false;
-      foreach ($config['default_host'] as $key => $host_allowed) {
-        if (!is_numeric($key))
-          $host_allowed = $key;
-        if ($host == $host_allowed) {
-          $allowed = true;
-          break;
-        }
-      }
-      if (!$allowed)
-        return false;
-      }
-    else if (!empty($config['default_host']) && $host != rcube_parse_host($config['default_host']))
-      return false;
-
-    // parse $host URL
-    $a_host = parse_url($host);
-    if ($a_host['host']) {
-      $host = $a_host['host'];
-      $imap_ssl = (isset($a_host['scheme']) && in_array($a_host['scheme'], array('ssl','imaps','tls'))) ? $a_host['scheme'] : null;
-      if (!empty($a_host['port']))
-        $imap_port = $a_host['port'];
-      else if ($imap_ssl && $imap_ssl != 'tls' && (!$config['default_port'] || $config['default_port'] == 143))
-        $imap_port = 993;
-    }
-
-    $imap_port = $imap_port ? $imap_port : $config['default_port'];
-
-    /* Modify username with domain if required
-       Inspired by Marco <P0L0_notspam_binware.org>
-    */
-    // Check if we need to add domain
-    if (!empty($config['username_domain']) && strpos($username, '@') === false) {
-      if (is_array($config['username_domain']) && isset($config['username_domain'][$host]))
-        $username .= '@'.rcube_parse_host($config['username_domain'][$host], $host);
-      else if (is_string($config['username_domain']))
-        $username .= '@'.rcube_parse_host($config['username_domain'], $host);
-    }
-
-    // Convert username to lowercase. If IMAP backend
-    // is case-insensitive we need to store always the same username (#1487113)
-    if ($config['login_lc']) {
-      $username = mb_strtolower($username);
-    }
-
-    // try to resolve email address from virtuser table
-    if (strpos($username, '@') && ($virtuser = rcube_user::email2user($username))) {
-      $username = $virtuser;
-    }
-
-    // Here we need IDNA ASCII
-    // Only rcube_contacts class is using domain names in Unicode
-    $host = rcube_idn_to_ascii($host);
-    if (strpos($username, '@')) {
-      // lowercase domain name
-      list($local, $domain) = explode('@', $username);
-      $username = $local . '@' . mb_strtolower($domain);
-      $username = rcube_idn_to_ascii($username);
-    }
-
-    // user already registered -> overwrite username
-    if ($user = rcube_user::query($username, $host))
-      $username = $user->data['username'];
-
-    if (!$this->imap)
-      $this->imap_init();
-
-    // try IMAP login
-    if (!($imap_login = $this->imap->connect($host, $username, $pass, $imap_port, $imap_ssl))) {
-      // try with lowercase
-      $username_lc = mb_strtolower($username);
-      if ($username_lc != $username) {
-        // try to find user record again -> overwrite username
-        if (!$user && ($user = rcube_user::query($username_lc, $host)))
-          $username_lc = $user->data['username'];
-
-        if ($imap_login = $this->imap->connect($host, $username_lc, $pass, $imap_port, $imap_ssl))
-          $username = $username_lc;
-      }
-    }
-
-    // exit if IMAP login failed
-    if (!$imap_login)
-      return false;
-
-    // user already registered -> update user's record
-    if (is_object($user)) {
-      // update last login timestamp
-      $user->touch();
-    }
-    // create new system user
-    else if ($config['auto_create_user']) {
-      if ($created = rcube_user::create($username, $host)) {
-        $user = $created;
-      }
-      else {
-        raise_error(array(
-          'code' => 620, 'type' => 'php',
-          'file' => __FILE__, 'line' => __LINE__,
-          'message' => "Failed to create a user record. Maybe aborted by a plugin?"
-          ), true, false);
-      }
-    }
-    else {
-      raise_error(array(
-        'code' => 621, 'type' => 'php',
-        'file' => __FILE__, 'line' => __LINE__,
-        'message' => "Access denied for new user $username. 'auto_create_user' is disabled"
-        ), true, false);
-    }
-
-    // login succeeded
-    if (is_object($user) && $user->ID) {
-      // Configure environment
-      $this->set_user($user);
-      $this->set_imap_prop();
-      $this->session_configure();
-
-      // fix some old settings according to namespace prefix
-      $this->fix_namespace_settings($user);
-
-      // create default folders on first login
-      if ($config['create_default_folders'] && (!empty($created) || empty($user->data['last_login']))) {
-        $this->imap->create_default_folders();
-      }
-
-      // set session vars
-      $_SESSION['user_id']   = $user->ID;
-      $_SESSION['username']  = $user->data['username'];
-      $_SESSION['imap_host'] = $host;
-      $_SESSION['imap_port'] = $imap_port;
-      $_SESSION['imap_ssl']  = $imap_ssl;
-      $_SESSION['password']  = $this->encrypt($pass);
-      $_SESSION['login_time'] = mktime();
-
-      if (isset($_REQUEST['_timezone']) && $_REQUEST['_timezone'] != '_default_')
-        $_SESSION['timezone'] = floatval($_REQUEST['_timezone']);
-      if (isset($_REQUEST['_dstactive']) && $_REQUEST['_dstactive'] != '_default_')
-        $_SESSION['dst_active'] = intval($_REQUEST['_dstactive']);
-
-      // force reloading complete list of subscribed mailboxes
-      $this->imap->clear_cache('mailboxes', true);
-
-      return true;
-    }
-
-    return false;
-  }
-
-
-  /**
-   * Set root dir and last stored mailbox
-   * This must be done AFTER connecting to the server!
-   */
-  public function set_imap_prop()
-  {
-    $this->imap->set_charset($this->config->get('default_charset', RCMAIL_CHARSET));
-
-    if ($default_folders = $this->config->get('default_imap_folders')) {
-      $this->imap->set_default_mailboxes($default_folders);
-    }
-    if (isset($_SESSION['mbox'])) {
-      $this->imap->set_mailbox($_SESSION['mbox']);
-    }
-    if (isset($_SESSION['page'])) {
-      $this->imap->set_page($_SESSION['page']);
-    }
-  }
-
-
-  /**
-   * Auto-select IMAP host based on the posted login information
-   *
-   * @return string Selected IMAP host
-   */
-  public function autoselect_host()
-  {
-    $default_host = $this->config->get('default_host');
-    $host = null;
-
-    if (is_array($default_host)) {
-      $post_host = get_input_value('_host', RCUBE_INPUT_POST);
-
-      // direct match in default_host array
-      if ($default_host[$post_host] || in_array($post_host, array_values($default_host))) {
-        $host = $post_host;
-      }
-
-      // try to select host by mail domain
-      list($user, $domain) = explode('@', get_input_value('_user', RCUBE_INPUT_POST));
-      if (!empty($domain)) {
-        foreach ($default_host as $imap_host => $mail_domains) {
-          if (is_array($mail_domains) && in_array($domain, $mail_domains)) {
-            $host = $imap_host;
-            break;
-          }
-        }
-      }
-
-      // take the first entry if $host is still an array
-      if (empty($host)) {
-        $host = array_shift($default_host);
-      }
-    }
-    else if (empty($default_host)) {
-      $host = get_input_value('_host', RCUBE_INPUT_POST);
-    }
-    else
-      $host = rcube_parse_host($default_host);
-
-    return $host;
-  }
-
-
-  /**
-   * Get localized text in the desired language
-   *
-   * @param mixed   $attrib  Named parameters array or label name
-   * @param string  $domain  Label domain (plugin) name
-   *
-   * @return string Localized text
-   */
-  public function gettext($attrib, $domain=null)
-  {
-    // load localization files if not done yet
-    if (empty($this->texts))
-      $this->load_language();
-
-    // extract attributes
-    if (is_string($attrib))
-      $attrib = array('name' => $attrib);
-
-    $nr = is_numeric($attrib['nr']) ? $attrib['nr'] : 1;
-    $name = $attrib['name'] ? $attrib['name'] : '';
-
-    // attrib contain text values: use them from now
-    if (($setval = $attrib[strtolower($_SESSION['language'])]) || ($setval = $attrib['en_us']))
-        $this->texts[$name] = $setval;
-
-    // check for text with domain
-    if ($domain && ($text_item = $this->texts[$domain.'.'.$name]))
-      ;
-    // text does not exist
-    else if (!($text_item = $this->texts[$name])) {
-      return "[$name]";
-    }
-
-    // make text item array
-    $a_text_item = is_array($text_item) ? $text_item : array('single' => $text_item);
-
-    // decide which text to use
-    if ($nr == 1) {
-      $text = $a_text_item['single'];
-    }
-    else if ($nr > 0) {
-      $text = $a_text_item['multiple'];
-    }
-    else if ($nr == 0) {
-      if ($a_text_item['none'])
-        $text = $a_text_item['none'];
-      else if ($a_text_item['single'])
-        $text = $a_text_item['single'];
-      else if ($a_text_item['multiple'])
-        $text = $a_text_item['multiple'];
-    }
-
-    // default text is single
-    if ($text == '') {
-      $text = $a_text_item['single'];
-    }
-
-    // replace vars in text
-    if (is_array($attrib['vars'])) {
-      foreach ($attrib['vars'] as $var_key => $var_value)
-        $text = str_replace($var_key[0]!='$' ? '$'.$var_key : $var_key, $var_value, $text);
-    }
-
-    // format output
-    if (($attrib['uppercase'] && strtolower($attrib['uppercase']=='first')) || $attrib['ucfirst'])
-      return ucfirst($text);
-    else if ($attrib['uppercase'])
-      return mb_strtoupper($text);
-    else if ($attrib['lowercase'])
-      return mb_strtolower($text);
-
-    return $text;
-  }
-
-
-  /**
-   * Check if the given text label exists
-   *
-   * @param string  $name       Label name
-   * @param string  $domain     Label domain (plugin) name or '*' for all domains
-   * @param string  $ref_domain Sets domain name if label is found
-   *
-   * @return boolean True if text exists (either in the current language or in en_US)
-   */
-  public function text_exists($name, $domain = null, &$ref_domain = null)
-  {
-    // load localization files if not done yet
-    if (empty($this->texts))
-      $this->load_language();
-
-    if (isset($this->texts[$name])) {
-        $ref_domain = '';
-        return true;
-    }
-
-    // any of loaded domains (plugins)
-    if ($domain == '*') {
-      foreach ($this->plugins->loaded_plugins() as $domain)
-        if (isset($this->texts[$domain.'.'.$name])) {
-          $ref_domain = $domain;
-          return true;
-        }
-    }
-    // specified domain
-    else if ($domain) {
-      $ref_domain = $domain;
-      return isset($this->texts[$domain.'.'.$name]);
-    }
-
-    return false;
-  }
-
-  /**
-   * Load a localization package
-   *
-   * @param string Language ID
-   */
-  public function load_language($lang = null, $add = array())
-  {
-    $lang = $this->language_prop(($lang ? $lang : $_SESSION['language']));
-
-    // load localized texts
-    if (empty($this->texts) || $lang != $_SESSION['language']) {
-      $this->texts = array();
-
-      // handle empty lines after closing PHP tag in localization files
-      ob_start();
-
-      // get english labels (these should be complete)
-      @include(INSTALL_PATH . 'program/localization/en_US/labels.inc');
-      @include(INSTALL_PATH . 'program/localization/en_US/messages.inc');
-
-      if (is_array($labels))
-        $this->texts = $labels;
-      if (is_array($messages))
-        $this->texts = array_merge($this->texts, $messages);
-
-      // include user language files
-      if ($lang != 'en' && is_dir(INSTALL_PATH . 'program/localization/' . $lang)) {
-        include_once(INSTALL_PATH . 'program/localization/' . $lang . '/labels.inc');
-        include_once(INSTALL_PATH . 'program/localization/' . $lang . '/messages.inc');
-
-        if (is_array($labels))
-          $this->texts = array_merge($this->texts, $labels);
-        if (is_array($messages))
-          $this->texts = array_merge($this->texts, $messages);
-      }
-
-      ob_end_clean();
-
-      $_SESSION['language'] = $lang;
-    }
-
-    // append additional texts (from plugin)
-    if (is_array($add) && !empty($add))
-      $this->texts += $add;
-  }
-
-
-  /**
-   * Read directory program/localization and return a list of available languages
-   *
-   * @return array List of available localizations
-   */
-  public function list_languages()
-  {
-    static $sa_languages = array();
-
-    if (!sizeof($sa_languages)) {
-      @include(INSTALL_PATH . 'program/localization/index.inc');
-
-      if ($dh = @opendir(INSTALL_PATH . 'program/localization')) {
-        while (($name = readdir($dh)) !== false) {
-          if ($name[0] == '.' || !is_dir(INSTALL_PATH . 'program/localization/' . $name))
-            continue;
-
-          if ($label = $rcube_languages[$name])
-            $sa_languages[$name] = $label;
-        }
-        closedir($dh);
-      }
-    }
-
-    return $sa_languages;
-  }
-
-
-  /**
-   * Destroy session data and remove cookie
-   */
-  public function kill_session()
-  {
-    $this->plugins->exec_hook('session_destroy');
-
-    $this->session->kill();
-    $_SESSION = array('language' => $this->user->language, 'temp' => true);
-    $this->user->reset();
-  }
-
-
-  /**
-   * Do server side actions on logout
-   */
-  public function logout_actions()
-  {
-    $config = $this->config->all();
-
-    // on logout action we're not connected to imap server
-    if (($config['logout_purge'] && !empty($config['trash_mbox'])) || $config['logout_expunge']) {
-      if (!$this->session->check_auth())
-        return;
-
-      $this->imap_connect();
-    }
-
-    if ($config['logout_purge'] && !empty($config['trash_mbox'])) {
-      $this->imap->clear_mailbox($config['trash_mbox']);
-    }
-
-    if ($config['logout_expunge']) {
-      $this->imap->expunge('INBOX');
-    }
-
-    // Try to save unsaved user preferences
-    if (!empty($_SESSION['preferences'])) {
-      $this->user->save_prefs(unserialize($_SESSION['preferences']));
-    }
-  }
-
-
-  /**
-   * Function to be executed in script shutdown
-   * Registered with register_shutdown_function()
-   */
-  public function shutdown()
-  {
-    foreach ($this->shutdown_functions as $function)
-      call_user_func($function);
-
-    if (is_object($this->smtp))
-      $this->smtp->disconnect();
-
-    foreach ($this->address_books as $book) {
-      if (is_object($book) && is_a($book, 'rcube_addressbook'))
-        $book->close();
-    }
-
-    foreach ($this->caches as $cache) {
-        if (is_object($cache))
-            $cache->close();
-    }
-
-    if (is_object($this->imap))
-      $this->imap->close();
-
-    // before closing the database connection, write session data
-    if ($_SERVER['REMOTE_ADDR'] && is_object($this->session)) {
-      session_write_close();
-    }
-
-    // write performance stats to logs/console
-    if ($this->config->get('devel_mode')) {
-      if (function_exists('memory_get_usage'))
-        $mem = show_bytes(memory_get_usage());
-      if (function_exists('memory_get_peak_usage'))
-        $mem .= '/'.show_bytes(memory_get_peak_usage());
-
-      $log = $this->task . ($this->action ? '/'.$this->action : '') . ($mem ? " [$mem]" : '');
-      if (defined('RCMAIL_START'))
-        rcube_print_time(RCMAIL_START, $log);
-      else
-        console($log);
-    }
-  }
-
-
-  /**
-   * Registers shutdown function to be executed on shutdown.
-   * The functions will be executed before destroying any
-   * objects like smtp, imap, session, etc.
-   *
-   * @param callback Function callback
-   */
-  public function add_shutdown_function($function)
-  {
-    $this->shutdown_functions[] = $function;
-  }
-
-
-  /**
-   * Generate a unique token to be used in a form request
-   *
-   * @return string The request token
-   */
-  public function get_request_token()
-  {
-    $sess_id = $_COOKIE[ini_get('session.name')];
-    if (!$sess_id) $sess_id = session_id();
-    $plugin = $this->plugins->exec_hook('request_token', array('value' => md5('RT' . $this->user->ID . $this->config->get('des_key') . $sess_id)));
-    return $plugin['value'];
-  }
-
-
-  /**
-   * Check if the current request contains a valid token
-   *
-   * @param int Request method
-   * @return boolean True if request token is valid false if not
-   */
-  public function check_request($mode = RCUBE_INPUT_POST)
-  {
-    $token = get_input_value('_token', $mode);
-    $sess_id = $_COOKIE[ini_get('session.name')];
-    return !empty($sess_id) && $token == $this->get_request_token();
-  }
-
-
-  /**
-   * Create unique authorization hash
-   *
-   * @param string Session ID
-   * @param int Timestamp
-   * @return string The generated auth hash
-   */
-  private function get_auth_hash($sess_id, $ts)
-  {
-    $auth_string = sprintf('rcmail*sess%sR%s*Chk:%s;%s',
-      $sess_id,
-      $ts,
-      $this->config->get('ip_check') ? $_SERVER['REMOTE_ADDR'] : '***.***.***.***',
-      $_SERVER['HTTP_USER_AGENT']);
-
-    if (function_exists('sha1'))
-      return sha1($auth_string);
-    else
-      return md5($auth_string);
-  }
-
-
-  /**
-   * Encrypt using 3DES
-   *
-   * @param string $clear clear text input
-   * @param string $key encryption key to retrieve from the configuration, defaults to 'des_key'
-   * @param boolean $base64 whether or not to base64_encode() the result before returning
-   *
-   * @return string encrypted text
-   */
-  public function encrypt($clear, $key = 'des_key', $base64 = true)
-  {
-    if (!$clear)
-      return '';
-    /*-
-     * Add a single canary byte to the end of the clear text, which
-     * will help find out how much of padding will need to be removed
-     * upon decryption; see http://php.net/mcrypt_generic#68082
-     */
-    $clear = pack("a*H2", $clear, "80");
-
-    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));
-      mcrypt_generic_init($td, $this->config->get_crypto_key($key), $iv);
-      $cipher = $iv . mcrypt_generic($td, $clear);
-      mcrypt_generic_deinit($td);
-      mcrypt_module_close($td);
-    }
-    else {
-      @include_once 'des.inc';
-
-      if (function_exists('des')) {
-        $des_iv_size = 8;
-        $iv = $this->create_iv($des_iv_size);
-        $cipher = $iv . des($this->config->get_crypto_key($key), $clear, 1, 1, $iv);
-      }
-      else {
-        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"
-        ), true, true);
-      }
-    }
-
-    return $base64 ? base64_encode($cipher) : $cipher;
-  }
-
-  /**
-   * Decrypt 3DES-encrypted string
-   *
-   * @param string $cipher encrypted text
-   * @param string $key encryption key to retrieve from the configuration, defaults to 'des_key'
-   * @param boolean $base64 whether or not input is base64-encoded
-   *
-   * @return string decrypted text
-   */
-  public function decrypt($cipher, $key = 'des_key', $base64 = true)
-  {
-    if (!$cipher)
-      return '';
-
-    $cipher = $base64 ? base64_decode($cipher) : $cipher;
-
-    if (function_exists('mcrypt_module_open') &&
-        ($td = mcrypt_module_open(MCRYPT_TripleDES, "", MCRYPT_MODE_CBC, "")))
-    {
-      $iv_size = mcrypt_enc_get_iv_size($td);
-      $iv = substr($cipher, 0, $iv_size);
-
-      // session corruption? (#1485970)
-      if (strlen($iv) < $iv_size)
-        return '';
-
-      $cipher = substr($cipher, $iv_size);
-      mcrypt_generic_init($td, $this->config->get_crypto_key($key), $iv);
-      $clear = mdecrypt_generic($td, $cipher);
-      mcrypt_generic_deinit($td);
-      mcrypt_module_close($td);
-    }
-    else {
-      @include_once 'des.inc';
-
-      if (function_exists('des')) {
-        $des_iv_size = 8;
-        $iv = substr($cipher, 0, $des_iv_size);
-        $cipher = substr($cipher, $des_iv_size);
-        $clear = des($this->config->get_crypto_key($key), $cipher, 0, 1, $iv);
-      }
-      else {
-        raise_error(array(
-          'code' => 500, 'type' => 'php',
-          'file' => __FILE__, 'line' => __LINE__,
-          'message' => "Could not perform decryption; make sure Mcrypt is installed or lib/des.inc is available"
-        ), true, true);
-      }
-    }
-
-    /*-
-     * Trim PHP's padding and the canary byte; see note in
-     * rcmail::encrypt() and http://php.net/mcrypt_generic#68082
-     */
-    $clear = substr(rtrim($clear, "\0"), 0, -1);
-
-    return $clear;
-  }
-
-  /**
-   * Generates encryption initialization vector (IV)
-   *
-   * @param int Vector size
-   * @return string Vector string
-   */
-  private function create_iv($size)
-  {
-    // mcrypt_create_iv() can be slow when system lacks entrophy
-    // we'll generate IV vector manually
-    $iv = '';
-    for ($i = 0; $i < $size; $i++)
-        $iv .= chr(mt_rand(0, 255));
-    return $iv;
-  }
-
-  /**
-   * Build a valid URL to this instance of Roundcube
-   *
-   * @param mixed Either a string with the action or url parameters as key-value pairs
-   * @return string Valid application URL
-   */
-  public function url($p)
-  {
-    if (!is_array($p))
-      $p = array('_action' => @func_get_arg(0));
-
-    $task = $p['_task'] ? $p['_task'] : ($p['task'] ? $p['task'] : $this->task);
-    $p['_task'] = $task;
-    unset($p['task']);
-
-    $url = './';
-    $delm = '?';
-    foreach (array_reverse($p) as $key => $val) {
-      if ($val !== '') {
-        $par = $key[0] == '_' ? $key : '_'.$key;
-        $url .= $delm.urlencode($par).'='.urlencode($val);
-        $delm = '&';
-      }
-    }
-    return $url;
-  }
-
-
-  /**
-   * Use imagemagick or GD lib to read image properties
-   *
-   * @param string Absolute file path
-   * @return mixed Hash array with image props like type, width, height or False on error
-   */
-  public static function imageprops($filepath)
-  {
-    $rcmail = rcmail::get_instance();
-    if ($cmd = $rcmail->config->get('im_identify_path', false)) {
-      list(, $type, $size) = explode(' ', strtolower(rcmail::exec($cmd. ' 2>/dev/null {in}', array('in' => $filepath))));
-      if ($size)
-        list($width, $height) = explode('x', $size);
-    }
-    else if (function_exists('getimagesize')) {
-      $imsize = @getimagesize($filepath);
-      $width = $imsize[0];
-      $height = $imsize[1];
-      $type = preg_replace('!image/!', '', $imsize['mime']);
-    }
-
-    return $type ? array('type' => $type, 'width' => $width, 'height' => $height) : false;
-  }
-
-
-  /**
-   * Convert an image to a given size and type using imagemagick (ensures input is an image)
-   *
-   * @param $p['in']  Input filename (mandatory)
-   * @param $p['out'] Output filename (mandatory)
-   * @param $p['size']  Width x height of resulting image, e.g. "160x60"
-   * @param $p['type']  Output file type, e.g. "jpg"
-   * @param $p['-opts'] Custom command line options to ImageMagick convert
-   * @return Success of convert as true/false
-   */
-  public static function imageconvert($p)
-  {
-    $result = false;
-    $rcmail = rcmail::get_instance();
-    $convert  = $rcmail->config->get('im_convert_path', false);
-    $identify = $rcmail->config->get('im_identify_path', false);
-
-    // imagemagick is required for this
-    if (!$convert)
-        return false;
-
-    if (!(($imagetype = @exif_imagetype($p['in'])) && ($type = image_type_to_extension($imagetype, false))))
-      list(, $type) = explode(' ', strtolower(rcmail::exec($identify . ' 2>/dev/null {in}', $p))); # for things like eps
-
-    $type = strtr($type, array("jpeg" => "jpg", "tiff" => "tif", "ps" => "eps", "ept" => "eps"));
-    $p += array('type' => $type, 'types' => "bmp,eps,gif,jp2,jpg,png,svg,tif", 'quality' => 75);
-    $p['-opts'] = array('-resize' => $p['size'].'>') + (array)$p['-opts'];
-
-    if (in_array($type, explode(',', $p['types']))) # Valid type?
-      $result = rcmail::exec($convert . ' 2>&1 -flatten -auto-orient -colorspace RGB -quality {quality} {-opts} {in} {type}:{out}', $p) === "";
-
-    return $result;
-  }
-
-
-  /**
-   * Construct shell command, execute it and return output as string.
-   * Keywords {keyword} are replaced with arguments
-   *
-   * @param $cmd Format string with {keywords} to be replaced
-   * @param $values (zero, one or more arrays can be passed)
-   * @return output of command. shell errors not detectable
-   */
-  public static function exec(/* $cmd, $values1 = array(), ... */)
-  {
-    $args = func_get_args();
-    $cmd = array_shift($args);
-    $values = $replacements = array();
-
-    // merge values into one array
-    foreach ($args as $arg)
-      $values += (array)$arg;
-
-    preg_match_all('/({(-?)([a-z]\w*)})/', $cmd, $matches, PREG_SET_ORDER);
-    foreach ($matches as $tags) {
-      list(, $tag, $option, $key) = $tags;
-      $parts = array();
-
-      if ($option) {
-        foreach ((array)$values["-$key"] as $key => $value) {
-          if ($value === true || $value === false || $value === null)
-            $parts[] = $value ? $key : "";
-          else foreach ((array)$value as $val)
-            $parts[] = "$key " . escapeshellarg($val);
-        }
-      }
-      else {
-        foreach ((array)$values[$key] as $value)
-          $parts[] = escapeshellarg($value);
-      }
-
-      $replacements[$tag] = join(" ", $parts);
-    }
-
-    // use strtr behaviour of going through source string once
-    $cmd = strtr($cmd, $replacements);
-
-    return (string)shell_exec($cmd);
-  }
-
-
-  /**
-   * Helper method to set a cookie with the current path and host settings
-   *
-   * @param string Cookie name
-   * @param string Cookie value
-   * @param string Expiration time
-   */
-  public static function setcookie($name, $value, $exp = 0)
-  {
-    if (headers_sent())
-      return;
-
-    $cookie = session_get_cookie_params();
-
-    setcookie($name, $value, $exp, $cookie['path'], $cookie['domain'],
-      rcube_https_check(), true);
-  }
-
-  /**
-   * Registers action aliases for current task
-   *
-   * @param array $map Alias-to-filename hash array
-   */
-  public function register_action_map($map)
-  {
-    if (is_array($map)) {
-      foreach ($map as $idx => $val) {
-        $this->action_map[$idx] = $val;
-      }
-    }
-  }
-
-  /**
-   * Returns current action filename
-   *
-   * @param array $map Alias-to-filename hash array
-   */
-  public function get_action_file()
-  {
-    if (!empty($this->action_map[$this->action])) {
-      return $this->action_map[$this->action];
-    }
-
-    return strtr($this->action, '-', '_') . '.inc';
-  }
-
-  /**
-   * Fixes some user preferences according to namespace handling change.
-   * Old Roundcube versions were using folder names with removed namespace prefix.
-   * Now we need to add the prefix on servers where personal namespace has prefix.
-   *
-   * @param rcube_user $user User object
-   */
-  private function fix_namespace_settings($user)
-  {
-    $prefix     = $this->imap->get_namespace('prefix');
-    $prefix_len = strlen($prefix);
-
-    if (!$prefix_len)
-      return;
-
-    $prefs = $this->config->all();
-    if (!empty($prefs['namespace_fixed']))
-      return;
-
-    // Build namespace prefix regexp
-    $ns     = $this->imap->get_namespace();
-    $regexp = array();
-
-    foreach ($ns as $entry) {
-      if (!empty($entry)) {
-        foreach ($entry as $item) {
-          if (strlen($item[0])) {
-            $regexp[] = preg_quote($item[0], '/');
-          }
-        }
-      }
-    }
-    $regexp = '/^('. implode('|', $regexp).')/';
-
-    // Fix preferences
-    $opts = array('drafts_mbox', 'junk_mbox', 'sent_mbox', 'trash_mbox', 'archive_mbox');
-    foreach ($opts as $opt) {
-      if ($value = $prefs[$opt]) {
-        if ($value != 'INBOX' && !preg_match($regexp, $value)) {
-          $prefs[$opt] = $prefix.$value;
-        }
-      }
-    }
-
-    if (!empty($prefs['default_imap_folders'])) {
-      foreach ($prefs['default_imap_folders'] as $idx => $name) {
-        if ($name != 'INBOX' && !preg_match($regexp, $name)) {
-          $prefs['default_imap_folders'][$idx] = $prefix.$name;
-        }
-      }
-    }
-
-    if (!empty($prefs['search_mods'])) {
-      $folders = array();
-      foreach ($prefs['search_mods'] as $idx => $value) {
-        if ($idx != 'INBOX' && $idx != '*' && !preg_match($regexp, $idx)) {
-          $idx = $prefix.$idx;
-        }
-        $folders[$idx] = $value;
-      }
-      $prefs['search_mods'] = $folders;
-    }
-
-    if (!empty($prefs['message_threading'])) {
-      $folders = array();
-      foreach ($prefs['message_threading'] as $idx => $value) {
-        if ($idx != 'INBOX' && !preg_match($regexp, $idx)) {
-          $idx = $prefix.$idx;
-        }
-        $folders[$prefix.$idx] = $value;
-      }
-      $prefs['message_threading'] = $folders;
-    }
-
-    if (!empty($prefs['collapsed_folders'])) {
-      $folders     = explode('&&', $prefs['collapsed_folders']);
-      $count       = count($folders);
-      $folders_str = '';
-
-      if ($count) {
-          $folders[0]        = substr($folders[0], 1);
-          $folders[$count-1] = substr($folders[$count-1], 0, -1);
-      }
-
-      foreach ($folders as $value) {
-        if ($value != 'INBOX' && !preg_match($regexp, $value)) {
-          $value = $prefix.$value;
-        }
-        $folders_str .= '&'.$value.'&';
-      }
-      $prefs['collapsed_folders'] = $folders_str;
-    }
-
-    $prefs['namespace_fixed'] = true;
-
-    // save updated preferences and reset imap settings (default folders)
-    $user->save_prefs($prefs);
-    $this->set_imap_prop();
-  }
-
-}
index 4a5998515db7ade537da1711776901481672e0ea..a74f521491b06b4d6b7d73f733836e70656f7d85 100644 (file)
@@ -5,8 +5,11 @@
  | program/include/rcube_addressbook.php                                 |
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
- | Copyright (C) 2006-2011, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2006-2012, 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:                                                              |
  |   Interface to the local address book database                        |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: rcube_addressbook.php 5873 2012-02-11 13:50:04Z thomasb $
+ $Id$
 
 */
 
@@ -479,7 +482,7 @@ abstract class rcube_addressbook
         $fn = $contact['name'];
 
         if (!$fn)  // default display name composition according to vcard standard
-            $fn = join(' ', array_filter(array($contact['prefix'], $contact['firstname'], $contact['middlename'], $contact['surname'], $contact['suffix'])));
+            $fn = trim(join(' ', array_filter(array($contact['prefix'], $contact['firstname'], $contact['middlename'], $contact['surname'], $contact['suffix']))));
 
         // use email address part for name
         $email = is_array($contact['email']) ? $contact['email'][0] : $contact['email'];
index 1727586e41d743c2a8d7c200bac7cb9af4d786fa..1a4e2356ff6b26bec9acbcee21a64c52abbd91ca 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2007-2009, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Class representing the client browser's properties                  |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: rcube_browser.php 5499 2011-11-28 09:03:27Z alec $
+ $Id$
 
 */
 
@@ -42,9 +45,9 @@ class rcube_browser
         $this->ns4 = strpos($HTTP_USER_AGENT, 'mozilla/4') !== false && strpos($HTTP_USER_AGENT, 'msie') === false;
         $this->ns  = ($this->ns4 || strpos($HTTP_USER_AGENT, 'netscape') !== false);
         $this->ie  = !$this->opera && strpos($HTTP_USER_AGENT, 'compatible; msie') !== false;
-        $this->mz  = !$this->ie && strpos($HTTP_USER_AGENT, 'mozilla/5') !== false;
-        $this->chrome = strpos($HTTP_USER_AGENT, 'chrome') !== false;
         $this->khtml = strpos($HTTP_USER_AGENT, 'khtml') !== false;
+        $this->mz  = !$this->ie && !$this->khtml && strpos($HTTP_USER_AGENT, 'mozilla/5') !== false;
+        $this->chrome = strpos($HTTP_USER_AGENT, 'chrome') !== false;
         $this->safari = !$this->chrome && ($this->khtml || strpos($HTTP_USER_AGENT, 'safari') !== false);
 
         if ($this->ns || $this->chrome) {
index cc472ae1cc864745dfbb44f7e073f9aadc5d96b1..299e655dde04310ba6c5b577ae26484e21709d9c 100644 (file)
@@ -7,7 +7,10 @@
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2011, The Roundcube Dev Team                            |
  | Copyright (C) 2011, Kolab Systems AG                                  |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Caching engine                                                      |
@@ -17,7 +20,7 @@
  | Author: Aleksander Machniak <alec@alec.pl>                            |
  +-----------------------------------------------------------------------+
 
- $Id: rcube_cache.php 5305 2011-10-03 18:04:14Z alec $
+ $Id$
 
 */
 
@@ -461,10 +464,13 @@ class rcube_cache
      */
     private function delete_record($key, $index=true)
     {
-        if ($this->type == 'memcache')
-            $this->db->delete($this->ckey($key));
-        else
+        if ($this->type == 'memcache') {
+            // #1488592: use 2nd argument
+            $this->db->delete($this->ckey($key), 0);
+        }
+        else {
             apc_delete($this->ckey($key));
+        }
 
         if ($index) {
             if (($idx = array_search($key, $this->index)) !== false) {
diff --git a/program/include/rcube_charset.php b/program/include/rcube_charset.php
new file mode 100644 (file)
index 0000000..2c8d3a0
--- /dev/null
@@ -0,0 +1,754 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | program/include/rcube_charset.php                                     |
+ |                                                                       |
+ | This file is part of the Roundcube Webmail client                     |
+ | Copyright (C) 2005-2012, The Roundcube Dev Team                       |
+ | Copyright (C) 2011-2012, Kolab Systems AG                             |
+ | Copyright (C) 2000 Edmund Grimley Evans <edmundo@rano.org>            |
+ |                                                                       |
+ | 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:                                                              |
+ |   Provide charset conversion functionality                            |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas Bruederli <roundcube@gmail.com>                        |
+ | Author: Aleksander Machniak <alec@alec.pl>                            |
+ +-----------------------------------------------------------------------+
+
+ $Id$
+
+*/
+
+/**
+ * Character sets conversion functionality
+ *
+ * @package Core
+ * @author Thomas Bruederli <roundcube@gmail.com>
+ * @author Aleksander Machniak <alec@alec.pl>
+ * @author Edmund Grimley Evans <edmundo@rano.org>
+ */
+class rcube_charset
+{
+    // Aliases: some of them from HTML5 spec.
+    static public $aliases = array(
+        'USASCII'       => 'WINDOWS-1252',
+        'ANSIX31101983' => 'WINDOWS-1252',
+        'ANSIX341968'   => 'WINDOWS-1252',
+        'UNKNOWN8BIT'   => 'ISO-8859-15',
+        'UNKNOWN'       => 'ISO-8859-15',
+        'USERDEFINED'   => 'ISO-8859-15',
+        'KSC56011987'   => 'EUC-KR',
+        'GB2312'           => 'GBK',
+        'GB231280'         => 'GBK',
+        'UNICODE'          => 'UTF-8',
+        'UTF7IMAP'         => 'UTF7-IMAP',
+        'TIS620'           => 'WINDOWS-874',
+        'ISO88599'         => 'WINDOWS-1254',
+        'ISO885911'        => 'WINDOWS-874',
+        'MACROMAN'         => 'MACINTOSH',
+        '77'            => 'MAC',
+        '128'           => 'SHIFT-JIS',
+        '129'           => 'CP949',
+        '130'           => 'CP1361',
+        '134'           => 'GBK',
+        '136'           => 'BIG5',
+        '161'           => 'WINDOWS-1253',
+        '162'           => 'WINDOWS-1254',
+        '163'           => 'WINDOWS-1258',
+        '177'           => 'WINDOWS-1255',
+        '178'           => 'WINDOWS-1256',
+        '186'           => 'WINDOWS-1257',
+        '204'           => 'WINDOWS-1251',
+        '222'           => 'WINDOWS-874',
+        '238'           => 'WINDOWS-1250',
+        'MS950'         => 'CP950',
+        'WINDOWS949'    => 'UHC',
+    );
+
+
+    /**
+     * Catch an error and throw an exception.
+     *
+     * @param  int    Level of the error
+     * @param  string Error message
+     */
+    public static function error_handler($errno, $errstr)
+    {
+        throw new ErrorException($errstr, 0, $errno);
+    }
+
+
+    /**
+     * Parse and validate charset name string (see #1485758).
+     * Sometimes charset string is malformed, there are also charset aliases 
+     * but we need strict names for charset conversion (specially utf8 class)
+     *
+     * @param string $input Input charset name
+     *
+     * @return string The validated charset name
+     */
+    public static function parse($input)
+    {
+        static $charsets = array();
+        $charset = strtoupper($input);
+
+        if (isset($charsets[$input])) {
+            return $charsets[$input];
+        }
+
+        $charset = preg_replace(array(
+            '/^[^0-9A-Z]+/',    // e.g. _ISO-8859-JP$SIO
+            '/\$.*$/',          // e.g. _ISO-8859-JP$SIO
+            '/UNICODE-1-1-*/',  // RFC1641/1642
+            '/^X-/',            // X- prefix (e.g. X-ROMAN8 => ROMAN8)
+        ), '', $charset);
+
+        if ($charset == 'BINARY') {
+            return $charsets[$input] = null;
+        }
+
+        // allow A-Z and 0-9 only
+        $str = preg_replace('/[^A-Z0-9]/', '', $charset);
+
+        if (isset(self::$aliases[$str])) {
+            $result = self::$aliases[$str];
+        }
+        // UTF
+        else if (preg_match('/U[A-Z][A-Z](7|8|16|32)(BE|LE)*/', $str, $m)) {
+            $result = 'UTF-' . $m[1] . $m[2];
+        }
+        // ISO-8859
+        else if (preg_match('/ISO8859([0-9]{0,2})/', $str, $m)) {
+            $iso = 'ISO-8859-' . ($m[1] ? $m[1] : 1);
+            // some clients sends windows-1252 text as latin1,
+            // it is safe to use windows-1252 for all latin1
+            $result = $iso == 'ISO-8859-1' ? 'WINDOWS-1252' : $iso;
+        }
+        // handle broken charset names e.g. WINDOWS-1250HTTP-EQUIVCONTENT-TYPE
+        else if (preg_match('/(WIN|WINDOWS)([0-9]+)/', $str, $m)) {
+            $result = 'WINDOWS-' . $m[2];
+        }
+        // LATIN
+        else if (preg_match('/LATIN(.*)/', $str, $m)) {
+            $aliases = array('2' => 2, '3' => 3, '4' => 4, '5' => 9, '6' => 10,
+                '7' => 13, '8' => 14, '9' => 15, '10' => 16,
+                'ARABIC' => 6, 'CYRILLIC' => 5, 'GREEK' => 7, 'GREEK1' => 7, 'HEBREW' => 8
+            );
+
+            // some clients sends windows-1252 text as latin1,
+            // it is safe to use windows-1252 for all latin1
+            if ($m[1] == 1) {
+                $result = 'WINDOWS-1252';
+            }
+            // if iconv is not supported we need ISO labels, it's also safe for iconv
+            else if (!empty($aliases[$m[1]])) {
+                $result = 'ISO-8859-'.$aliases[$m[1]];
+            }
+            // iconv requires convertion of e.g. LATIN-1 to LATIN1
+            else {
+                $result = $str;
+            }
+        }
+        else {
+            $result = $charset;
+        }
+
+        $charsets[$input] = $result;
+
+        return $result;
+    }
+
+
+    /**
+     * Convert a string from one charset to another.
+     * Uses mbstring and iconv functions if possible
+     *
+     * @param  string Input string
+     * @param  string Suspected charset of the input string
+     * @param  string Target charset to convert to; defaults to RCMAIL_CHARSET
+     *
+     * @return string Converted string
+     */
+    public static function convert($str, $from, $to = null)
+    {
+        static $iconv_options   = null;
+        static $mbstring_loaded = null;
+        static $mbstring_list   = null;
+        static $conv            = null;
+
+        $to   = empty($to) ? strtoupper(RCMAIL_CHARSET) : $to;
+        $from = self::parse($from);
+
+        // It is a common case when UTF-16 charset is used with US-ASCII content (#1488654)
+        // In that case we can just skip the conversion (use UTF-8)
+        if ($from == 'UTF-16' && !preg_match('/[^\x00-\x7F]/', $str)) {
+            $from = 'UTF-8';
+        }
+
+        if ($from == $to || empty($str) || empty($from)) {
+            return $str;
+        }
+
+        // convert charset using iconv module
+        if (function_exists('iconv') && $from != 'UTF7-IMAP' && $to != 'UTF7-IMAP') {
+            if ($iconv_options === null) {
+                // ignore characters not available in output charset
+                $iconv_options = '//IGNORE';
+                if (iconv('', $iconv_options, '') === false) {
+                    // iconv implementation does not support options
+                    $iconv_options = '';
+                }
+            }
+
+            // throw an exception if iconv reports an illegal character in input
+            // it means that input string has been truncated
+            set_error_handler(array('rcube_charset', 'error_handler'), E_NOTICE);
+            try {
+                $_iconv = iconv($from, $to . $iconv_options, $str);
+            } catch (ErrorException $e) {
+                $_iconv = false;
+            }
+            restore_error_handler();
+
+            if ($_iconv !== false) {
+                return $_iconv;
+            }
+        }
+
+        if ($mbstring_loaded === null) {
+            $mbstring_loaded = extension_loaded('mbstring');
+        }
+
+        // convert charset using mbstring module
+        if ($mbstring_loaded) {
+            $aliases['WINDOWS-1257'] = 'ISO-8859-13';
+
+            if ($mbstring_list === null) {
+                $mbstring_list = mb_list_encodings();
+                $mbstring_list = array_map('strtoupper', $mbstring_list);
+            }
+
+            $mb_from = $aliases[$from] ? $aliases[$from] : $from;
+            $mb_to   = $aliases[$to] ? $aliases[$to] : $to;
+
+            // return if encoding found, string matches encoding and convert succeeded
+            if (in_array($mb_from, $mbstring_list) && in_array($mb_to, $mbstring_list)) {
+                if (mb_check_encoding($str, $mb_from) && ($out = mb_convert_encoding($str, $mb_to, $mb_from))) {
+                    return $out;
+                }
+            }
+        }
+
+        // convert charset using bundled classes/functions
+        if ($to == 'UTF-8') {
+            if ($from == 'UTF7-IMAP') {
+                if ($_str = self::utf7imap_to_utf8($str)) {
+                    return $_str;
+                }
+            }
+            else if ($from == 'UTF-7') {
+                if ($_str = self::utf7_to_utf8($str)) {
+                    return $_str;
+                }
+            }
+            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;
+                }
+            }
+        }
+
+        // encode string for output
+        if ($from == 'UTF-8') {
+            // @TODO: we need a function for UTF-7 (RFC2152) conversion
+            if ($to == 'UTF7-IMAP' || $to == 'UTF-7') {
+                if ($_str = self::utf8_to_utf7imap($str)) {
+                    return $_str;
+                }
+            }
+            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;
+                }
+            }
+        }
+
+        // return original string
+        return $str;
+    }
+
+
+    /**
+     * Converts string from standard UTF-7 (RFC 2152) to UTF-8.
+     *
+     * @param  string  Input string (UTF-7)
+     *
+     * @return string  Converted string (UTF-8)
+     */
+    public static function utf7_to_utf8($str)
+    {
+        $Index_64 = array(
+            0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
+            0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
+            0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0,
+            1,1,1,1, 1,1,1,1, 1,1,0,0, 0,0,0,0,
+            0,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1,
+            1,1,1,1, 1,1,1,1, 1,1,1,0, 0,0,0,0,
+            0,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1,
+            1,1,1,1, 1,1,1,1, 1,1,1,0, 0,0,0,0,
+        );
+
+        $u7len = strlen($str);
+        $str   = strval($str);
+        $res   = '';
+
+        for ($i=0; $u7len > 0; $i++, $u7len--) {
+            $u7 = $str[$i];
+            if ($u7 == '+') {
+                $i++;
+                $u7len--;
+                $ch = '';
+
+                for (; $u7len > 0; $i++, $u7len--) {
+                    $u7 = $str[$i];
+
+                    if (!$Index_64[ord($u7)]) {
+                        break;
+                    }
+
+                       $ch .= $u7;
+                }
+
+                if ($ch == '') {
+                    if ($u7 == '-') {
+                        $res .= '+';
+                    }
+
+                    continue;
+                }
+
+                $res .= self::utf16_to_utf8(base64_decode($ch));
+            }
+            else {
+                $res .= $u7;
+            }
+        }
+
+        return $res;
+    }
+
+
+    /**
+     * Converts string from UTF-16 to UTF-8 (helper for utf-7 to utf-8 conversion)
+     *
+     * @param  string  Input string
+     *
+     * @return string  The converted string
+     */
+    public static function utf16_to_utf8($str)
+    {
+        $len = strlen($str);
+        $dec = '';
+
+        for ($i = 0; $i < $len; $i += 2) {
+            $c = ord($str[$i]) << 8 | ord($str[$i + 1]);
+            if ($c >= 0x0001 && $c <= 0x007F) {
+                $dec .= chr($c);
+            }
+            else if ($c > 0x07FF) {
+                $dec .= chr(0xE0 | (($c >> 12) & 0x0F));
+                $dec .= chr(0x80 | (($c >>  6) & 0x3F));
+                $dec .= chr(0x80 | (($c >>  0) & 0x3F));
+            }
+            else {
+                $dec .= chr(0xC0 | (($c >>  6) & 0x1F));
+                $dec .= chr(0x80 | (($c >>  0) & 0x3F));
+            }
+        }
+
+        return $dec;
+    }
+
+
+    /**
+     * Convert the data ($str) from RFC 2060's UTF-7 to UTF-8.
+     * If input data is invalid, return the original input string.
+     * RFC 2060 obviously intends the encoding to be unique (see
+     * point 5 in section 5.1.3), so we reject any non-canonical
+     * form, such as &ACY- (instead of &-) or &AMA-&AMA- (instead
+     * of &AMAAwA-).
+     *
+     * Translated from C to PHP by Thomas Bruederli <roundcube@gmail.com>
+     *
+     * @param string $str Input string (UTF7-IMAP)
+     *
+     * @return string Output string (UTF-8)
+     */
+    public static function utf7imap_to_utf8($str)
+    {
+        $Index_64 = array(
+            -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
+            -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
+            -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,62, 63,-1,-1,-1,
+            52,53,54,55, 56,57,58,59, 60,61,-1,-1, -1,-1,-1,-1,
+            -1, 0, 1, 2,  3, 4, 5, 6,  7, 8, 9,10, 11,12,13,14,
+            15,16,17,18, 19,20,21,22, 23,24,25,-1, -1,-1,-1,-1,
+            -1,26,27,28, 29,30,31,32, 33,34,35,36, 37,38,39,40,
+            41,42,43,44, 45,46,47,48, 49,50,51,-1, -1,-1,-1,-1
+        );
+
+        $u7len = strlen($str);
+        $str   = strval($str);
+        $p     = '';
+        $err   = '';
+
+        for ($i=0; $u7len > 0; $i++, $u7len--) {
+            $u7 = $str[$i];
+            if ($u7 == '&') {
+                $i++;
+                $u7len--;
+                $u7 = $str[$i];
+
+                if ($u7len && $u7 == '-') {
+                    $p .= '&';
+                    continue;
+                }
+
+                $ch = 0;
+                $k = 10;
+                for (; $u7len > 0; $i++, $u7len--) {
+                    $u7 = $str[$i];
+
+                    if ((ord($u7) & 0x80) || ($b = $Index_64[ord($u7)]) == -1) {
+                        break;
+                    }
+
+                    if ($k > 0) {
+                        $ch |= $b << $k;
+                        $k -= 6;
+                    }
+                    else {
+                        $ch |= $b >> (-$k);
+                        if ($ch < 0x80) {
+                            // Printable US-ASCII
+                            if (0x20 <= $ch && $ch < 0x7f) {
+                                return $err;
+                            }
+                            $p .= chr($ch);
+                        }
+                        else if ($ch < 0x800) {
+                            $p .= chr(0xc0 | ($ch >> 6));
+                            $p .= chr(0x80 | ($ch & 0x3f));
+                        }
+                        else {
+                            $p .= chr(0xe0 | ($ch >> 12));
+                            $p .= chr(0x80 | (($ch >> 6) & 0x3f));
+                            $p .= chr(0x80 | ($ch & 0x3f));
+                        }
+
+                        $ch = ($b << (16 + $k)) & 0xffff;
+                        $k += 10;
+                    }
+                }
+
+                // Non-zero or too many extra bits
+                if ($ch || $k < 6) {
+                    return $err;
+                }
+
+                // BASE64 not properly terminated
+                if (!$u7len || $u7 != '-') {
+                    return $err;
+                }
+
+                // Adjacent BASE64 sections
+                if ($u7len > 2 && $str[$i+1] == '&' && $str[$i+2] != '-') {
+                    return $err;
+                }
+            }
+            // Not printable US-ASCII
+            else if (ord($u7) < 0x20 || ord($u7) >= 0x7f) {
+                return $err;
+            }
+            else {
+                $p .= $u7;
+            }
+        }
+
+        return $p;
+    }
+
+
+    /**
+     * Convert the data ($str) from UTF-8 to RFC 2060's UTF-7.
+     * Unicode characters above U+FFFF are replaced by U+FFFE.
+     * If input data is invalid, return an empty string.
+     *
+     * Translated from C to PHP by Thomas Bruederli <roundcube@gmail.com>
+     *
+     * @param string $str Input string (UTF-8)
+     *
+     * @return string Output string (UTF7-IMAP)
+     */
+    public static function utf8_to_utf7imap($str)
+    {
+        $B64Chars = array(
+            'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
+            'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd',
+            'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
+            't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7',
+            '8', '9', '+', ','
+        );
+
+        $u8len  = strlen($str);
+        $base64 = 0;
+        $i      = 0;
+        $p      = '';
+        $err    = '';
+
+        while ($u8len) {
+            $u8 = $str[$i];
+            $c  = ord($u8);
+
+            if ($c < 0x80) {
+                $ch = $c;
+                $n  = 0;
+            }
+            else if ($c < 0xc2) {
+                return $err;
+            }
+            else if ($c < 0xe0) {
+                $ch = $c & 0x1f;
+                $n  = 1;
+            }
+            else if ($c < 0xf0) {
+                $ch = $c & 0x0f;
+                $n  = 2;
+            }
+            else if ($c < 0xf8) {
+                $ch = $c & 0x07;
+                $n  = 3;
+            }
+            else if ($c < 0xfc) {
+                $ch = $c & 0x03;
+                $n  = 4;
+            }
+            else if ($c < 0xfe) {
+                $ch = $c & 0x01;
+                $n  = 5;
+            }
+            else {
+                return $err;
+            }
+
+            $i++;
+            $u8len--;
+
+            if ($n > $u8len) {
+                return $err;
+            }
+
+            for ($j=0; $j < $n; $j++) {
+                $o = ord($str[$i+$j]);
+                if (($o & 0xc0) != 0x80) {
+                    return $err;
+                }
+                $ch = ($ch << 6) | ($o & 0x3f);
+            }
+
+            if ($n > 1 && !($ch >> ($n * 5 + 1))) {
+                return $err;
+            }
+
+            $i += $n;
+            $u8len -= $n;
+
+            if ($ch < 0x20 || $ch >= 0x7f) {
+                if (!$base64) {
+                    $p .= '&';
+                    $base64 = 1;
+                    $b = 0;
+                    $k = 10;
+                }
+                if ($ch & ~0xffff) {
+                    $ch = 0xfffe;
+                }
+
+                $p .= $B64Chars[($b | $ch >> $k)];
+                $k -= 6;
+                for (; $k >= 0; $k -= 6) {
+                    $p .= $B64Chars[(($ch >> $k) & 0x3f)];
+                }
+
+                $b = ($ch << (-$k)) & 0x3f;
+                $k += 16;
+            }
+            else {
+                if ($base64) {
+                    if ($k > 10) {
+                        $p .= $B64Chars[$b];
+                    }
+                    $p .= '-';
+                    $base64 = 0;
+                }
+
+                $p .= chr($ch);
+                if (chr($ch) == '&') {
+                    $p .= '-';
+                }
+            }
+        }
+
+        if ($base64) {
+            if ($k > 10) {
+                $p .= $B64Chars[$b];
+            }
+            $p .= '-';
+        }
+
+        return $p;
+    }
+
+
+    /**
+     * A method to guess character set of a string.
+     *
+     * @param string $string    String.
+     * @param string $failover         Default result for failover.
+     *
+     * @return string Charset name
+     */
+    public static function detect($string, $failover='')
+    {
+        if (!function_exists('mb_detect_encoding')) {
+            return $failover;
+        }
+
+        // FIXME: the order is important, because sometimes 
+        // iso string is detected as euc-jp and etc.
+        $enc = array(
+            'UTF-8', 'SJIS', 'BIG5', 'GB2312',
+            'ISO-8859-1', 'ISO-8859-2', 'ISO-8859-3', 'ISO-8859-4',
+            'ISO-8859-5', 'ISO-8859-6', 'ISO-8859-7', 'ISO-8859-8', 'ISO-8859-9',
+            'ISO-8859-10', 'ISO-8859-13', 'ISO-8859-14', 'ISO-8859-15', 'ISO-8859-16',
+            'WINDOWS-1252', 'WINDOWS-1251', 'EUC-JP', 'EUC-TW', 'KOI8-R', 
+            'ISO-2022-KR', 'ISO-2022-JP'
+        );
+
+        $result = mb_detect_encoding($string, join(',', $enc));
+
+        return $result ? $result : $failover;
+    }
+
+
+    /**
+     * Removes non-unicode characters from input.
+     *
+     * @param mixed $input String or array.
+     *
+     * @return mixed String or array
+     */
+    public static function clean($input)
+    {
+        // handle input of type array
+        if (is_array($input)) {
+            foreach ($input as $idx => $val) {
+                $input[$idx] = self::clean($val);
+            }
+            return $input;
+        }
+
+        if (!is_string($input) || $input == '') {
+            return $input;
+        }
+
+        // iconv/mbstring are much faster (especially with long strings)
+        if (function_exists('mb_convert_encoding')) {
+            if (($res = mb_convert_encoding($input, 'UTF-8', 'UTF-8')) !== false) {
+                return $res;
+            }
+        }
+
+        if (function_exists('iconv')) {
+            if (($res = @iconv('UTF-8', 'UTF-8//IGNORE', $input)) !== false) {
+                return $res;
+            }
+        }
+
+        $seq    = '';
+        $out    = '';
+        $regexp = '/^('.
+//          '[\x00-\x7F]'.                                  // UTF8-1
+            '|[\xC2-\xDF][\x80-\xBF]'.                      // UTF8-2
+            '|\xE0[\xA0-\xBF][\x80-\xBF]'.                  // UTF8-3
+            '|[\xE1-\xEC][\x80-\xBF][\x80-\xBF]'.           // UTF8-3
+            '|\xED[\x80-\x9F][\x80-\xBF]'.                  // UTF8-3
+            '|[\xEE-\xEF][\x80-\xBF][\x80-\xBF]'.           // UTF8-3
+            '|\xF0[\x90-\xBF][\x80-\xBF][\x80-\xBF]'.       // UTF8-4
+            '|[\xF1-\xF3][\x80-\xBF][\x80-\xBF][\x80-\xBF]'.// UTF8-4
+            '|\xF4[\x80-\x8F][\x80-\xBF][\x80-\xBF]'.       // UTF8-4
+            ')$/';
+
+        for ($i = 0, $len = strlen($input); $i < $len; $i++) {
+            $chr = $input[$i];
+            $ord = ord($chr);
+
+            // 1-byte character
+            if ($ord <= 0x7F) {
+                if ($seq) {
+                    $out .= preg_match($regexp, $seq) ? $seq : '';
+                }
+                $seq = '';
+                $out .= $chr;
+            // first (or second) byte of multibyte sequence
+            }
+            else if ($ord >= 0xC0) {
+                if (strlen($seq) > 1) {
+                       $out .= preg_match($regexp, $seq) ? $seq : '';
+                    $seq = '';
+                }
+                else if ($seq && ord($seq) < 0xC0) {
+                    $seq = '';
+                }
+                $seq .= $chr;
+            // next byte of multibyte sequence
+            }
+            else if ($seq) {
+                $seq .= $chr;
+            }
+        }
+
+        if ($seq) {
+            $out .= preg_match($regexp, $seq) ? $seq : '';
+        }
+
+        return $out;
+    }
+
+}
index ceada11fa84d96eda82d3df47d9c2225f58e8092..826c70016dc4969df0a1829063ed0c6b80473a65 100644 (file)
@@ -5,8 +5,11 @@
  | program/include/rcube_config.php                                      |
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
- | Copyright (C) 2008-2010, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2008-2012, 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:                                                              |
  |   Class to read configuration settings                                |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: rcube_config.php 5499 2011-11-28 09:03:27Z alec $
+ $Id$
 
 */
 
  */
 class rcube_config
 {
+    const DEFAULT_SKIN = 'larry';
+
     private $prop = array();
     private $errors = array();
     private $userprefs = array();
 
+    /**
+     * Renamed options
+     *
+     * @var array
+     */
+    private $legacy_props = array(
+        // new name => old name
+        'default_folders'      => 'default_imap_folders',
+        'mail_pagesize'        => 'pagesize',
+        'addressbook_pagesize' => 'pagesize',
+    );
+
 
     /**
      * Object constructor
@@ -59,10 +76,15 @@ class rcube_config
         $this->load_host_config();
 
         // set skin (with fallback to old 'skin_path' property)
+
         if (empty($this->prop['skin']) && !empty($this->prop['skin_path']))
             $this->prop['skin'] = str_replace('skins/', '', unslashify($this->prop['skin_path']));
         else if (empty($this->prop['skin']))
-            $this->prop['skin'] = 'default';
+            $this->prop['skin'] = self::DEFAULT_SKIN;
+
+        // larry is the new default skin :-)
+        if ($this->prop['skin'] == 'default')
+            $this->prop['skin'] = self::DEFAULT_SKIN;
 
         // fix paths
         $this->prop['log_dir'] = $this->prop['log_dir'] ? realpath(unslashify($this->prop['log_dir'])) : INSTALL_PATH . 'logs';
@@ -72,9 +94,9 @@ class rcube_config
         foreach (array('drafts_mbox', 'junk_mbox', 'sent_mbox', 'trash_mbox') as $folder)
             $this->prop[$folder] = rcube_charset_convert($this->prop[$folder], RCMAIL_CHARSET, 'UTF7-IMAP');
 
-        if (!empty($this->prop['default_imap_folders']))
-            foreach ($this->prop['default_imap_folders'] as $n => $folder)
-                $this->prop['default_imap_folders'][$n] = rcube_charset_convert($folder, RCMAIL_CHARSET, 'UTF7-IMAP');
+        if (!empty($this->prop['default_folders']))
+            foreach ($this->prop['default_folders'] as $n => $folder)
+                $this->prop['default_folders'][$n] = rcube_charset_convert($folder, RCMAIL_CHARSET, 'UTF7-IMAP');
 
         // set PHP error logging according to config
         if ($this->prop['debug_level'] & 1) {
@@ -93,13 +115,15 @@ class rcube_config
 
         // set timezone auto settings values
         if ($this->prop['timezone'] == 'auto') {
-          $this->prop['dst_active'] = intval(date('I'));
-          $this->prop['_timezone_value'] = date('Z') / 3600 - $this->prop['dst_active'];
+          $this->prop['_timezone_value'] = $this->client_timezone();
         }
-        else if ($this->prop['dst_active'] === null) {
-          $this->prop['dst_active'] = intval(date('I'));
+        else if (is_numeric($this->prop['timezone'])) {
+          $this->prop['timezone'] = timezone_name_from_abbr("", $this->prop['timezone'] * 3600, 0);
         }
 
+        // remove deprecated properties
+        unset($this->prop['dst_active']);
+
         // export config data
         $GLOBALS['CONFIG'] = &$this->prop;
     }
@@ -159,9 +183,18 @@ class rcube_config
      */
     public function get($name, $def = null)
     {
-        $result = isset($this->prop[$name]) ? $this->prop[$name] : $def;
+        if (isset($this->prop[$name])) {
+            $result = $this->prop[$name];
+        }
+        else if (isset($this->legacy_props[$name])) {
+            return $this->get($this->legacy_props[$name], $def);
+        }
+        else {
+            $result = $def;
+        }
+
         $rcmail = rcmail::get_instance();
-        
+
         if ($name == 'timezone' && isset($this->prop['_timezone_value']))
             $result = $this->prop['_timezone_value'];
 
@@ -210,20 +243,27 @@ class rcube_config
         // Honor the dont_override setting for any existing user preferences
         $dont_override = $this->get('dont_override');
         if (is_array($dont_override) && !empty($dont_override)) {
-            foreach ($prefs as $key => $pref) {
-                if (in_array($key, $dont_override)) {
-                    unset($prefs[$key]);
-                }
+            foreach ($dont_override as $key) {
+                unset($prefs[$key]);
             }
         }
 
+        // convert user's timezone into the new format
+        if (is_numeric($prefs['timezone'])) {
+            $prefs['timezone'] = timezone_name_from_abbr('', $prefs['timezone'] * 3600, 0);
+        }
+
+        // larry is the new default skin :-)
+
+        if ($prefs['skin'] == 'default')
+            $prefs['skin'] = self::DEFAULT_SKIN;
+
         $this->userprefs = $prefs;
         $this->prop      = array_merge($this->prop, $prefs);
 
         // override timezone settings with client values
         if ($this->prop['timezone'] == 'auto') {
-            $this->prop['_timezone_value'] = isset($_SESSION['timezone']) ? $_SESSION['timezone'] : $this->prop['_timezone_value'];
-            $this->prop['dst_active'] = $this->userprefs['dst_active'] = isset($_SESSION['dst_active']) ? $_SESSION['dst_active'] : $this->prop['dst_active'];
+            $this->prop['_timezone_value'] = isset($_SESSION['timezone']) ? $this->client_timezone() : $this->prop['_timezone_value'];
         }
         else if (isset($this->prop['_timezone_value']))
            unset($this->prop['_timezone_value']);
@@ -244,10 +284,20 @@ class rcube_config
      * Special getter for user's timezone offset including DST
      *
      * @return float  Timezone offset (in hours)
+     * @deprecated
      */
     public function get_timezone()
     {
-      return floatval($this->get('timezone')) + intval($this->get('dst_active'));
+      if ($tz = $this->get('timezone')) {
+        try {
+          $tz = new DateTimeZone($tz);
+          return $tz->getOffset(new DateTime('now')) / 3600;
+        }
+        catch (Exception $e) {
+        }
+      }
+
+      return 0;
     }
 
     /**
@@ -349,4 +399,13 @@ class rcube_config
         return empty($this->errors) ? false : join("\n", $this->errors);
     }
 
+
+    /**
+     * Internal getter for client's (browser) timezone identifier
+     */
+    private function client_timezone()
+    {
+        return isset($_SESSION['timezone']) ? timezone_name_from_abbr("", $_SESSION['timezone'] * 3600, 0) : date_default_timezone_get();
+    }
+
 }
index fecbfd152e2a400e93075b74b43003b4c066b4eb..3e30043ae355f2226de9b7dd6519fe476797c6c5 100644 (file)
@@ -5,8 +5,11 @@
  | program/include/rcube_contacts.php                                    |
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
- | Copyright (C) 2006-2011, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2006-2012, 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:                                                              |
  |   Interface to the local address book database                        |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: rcube_contacts.php 5873 2012-02-11 13:50:04Z thomasb $
+ $Id$
 
 */
 
@@ -31,6 +34,7 @@ class rcube_contacts extends rcube_addressbook
     protected $db_name = 'contacts';
     protected $db_groups = 'contactgroups';
     protected $db_groupmembers = 'contactgroupmembers';
+    protected $vcard_fieldmap = array();
 
     /**
      * Store database connection.
@@ -696,7 +700,7 @@ class rcube_contacts extends rcube_addressbook
 
         if ($sql_arr['vcard']) {
             unset($sql_arr['email']);
-            $vcard = new rcube_vcard($sql_arr['vcard']);
+            $vcard = new rcube_vcard($sql_arr['vcard'], RCMAIL_CHARSET, false, $this->vcard_fieldmap);
             $record += $vcard->get_assoc() + $sql_arr;
         }
         else {
@@ -715,7 +719,7 @@ class rcube_contacts extends rcube_addressbook
         $words = '';
 
         // copy values into vcard object
-        $vcard = new rcube_vcard($record['vcard'] ? $record['vcard'] : $save_data['vcard']);
+        $vcard = new rcube_vcard($record['vcard'] ? $record['vcard'] : $save_data['vcard'], RCMAIL_CHARSET, false, $this->vcard_fieldmap);
         $vcard->reset();
         foreach ($save_data as $key => $values) {
             list($field, $section) = explode(':', $key);
@@ -879,7 +883,7 @@ class rcube_contacts extends rcube_addressbook
      * @param string New name to set for this group
      * @return boolean New name on success, false if no data was changed
      */
-    function rename_group($gid, $newname)
+    function rename_group($gid, $newname, &$new_gid)
     {
         // make sure we have a unique name
         $name = $this->unique_groupname($newname);
@@ -933,7 +937,9 @@ class rcube_contacts extends rcube_addressbook
                 $contact_id
             );
 
-            if (!$this->db->db_error)
+            if ($this->db->db_error)
+                $this->set_error(self::ERROR_SAVING, $this->db->db_error_msg);
+            else
                 $added++;
         }
 
index 9f3065ae623b4064da38a0a96dcec85583c7d566..61d6e22c4df45d3b45b8121f54614b5165884bc6 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2011, The Roundcube Dev Team                            |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   PHP stream filter to detect evil content in mail attachments        |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: rcube_content_filter.php 5635 2011-12-21 10:07:42Z alec $
+ $Id$
 */
 
 /**
  */
 class rcube_content_filter extends php_user_filter
 {
-  private $buffer = '';
-  private $cutoff = 2048;
-
-  function onCreate()
-  {
-    $this->cutoff = rand(2048, 3027);
-    return true;
-  }
-
-  function filter($in, $out, &$consumed, $closing)
-  {
-    while ($bucket = stream_bucket_make_writeable($in)) {
-      $this->buffer .= $bucket->data;
-
-      // check for evil content and abort
-      if (preg_match('/<(script|iframe|object)/i', $this->buffer))
-        return PSFS_ERR_FATAL;
-
-      // keep buffer small enough
-      if (strlen($this->buffer) > 4096)
-        $this->buffer = substr($this->buffer, $this->cutoff);
-
-      $consumed += $bucket->datalen;
-      stream_bucket_append($out, $bucket);
+    private $buffer = '';
+    private $cutoff = 2048;
+
+    function onCreate()
+    {
+        $this->cutoff = rand(2048, 3027);
+        return true;
     }
 
-    return PSFS_PASS_ON;
-  }
-}
+    function filter($in, $out, &$consumed, $closing)
+    {
+        while ($bucket = stream_bucket_make_writeable($in)) {
+            $this->buffer .= $bucket->data;
+
+            // check for evil content and abort
+            if (preg_match('/<(script|iframe|object)/i', $this->buffer)) {
+                return PSFS_ERR_FATAL;
+            }
 
+            // keep buffer small enough
+            if (strlen($this->buffer) > 4096) {
+                $this->buffer = substr($this->buffer, $this->cutoff);
+            }
+
+            $consumed += $bucket->datalen;
+            stream_bucket_append($out, $bucket);
+        }
+
+        return PSFS_PASS_ON;
+    }
+}
index 77b7ff2d86db642ceab0a37b901419ce6e311c54..fffe490945f810e7dd7d65c759d4a9c3aa22d9a1 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube PHP suite                          |
  | Copyright (C) 2005-2011 The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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.                     |
  |                                                                       |
  | CONTENTS:                                                             |
  |   Class to build XHTML page output                                    |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: rcube_html_page.php 5135 2011-08-26 09:22:53Z alec $
+ $Id$
 
 */
 
@@ -31,10 +34,6 @@ class rcube_html_page
     protected $css_files = array();
     protected $scripts = array();
     protected $charset = RCMAIL_CHARSET;
-
-    protected $script_tag_file = "<script type=\"text/javascript\" src=\"%s\"></script>\n";
-    protected $script_tag  =  "<script type=\"text/javascript\">\n/* <![CDATA[ */\n%s\n/* ]]> */\n</script>\n";
-    protected $link_css_file = "<link rel=\"stylesheet\" type=\"text/css\" href=\"%s\" />\n";
     protected $default_template = "<html>\n<head><title></title></head>\n<body></body>\n</html>";
 
     protected $title = '';
@@ -56,9 +55,13 @@ class rcube_html_page
     public function include_script($file, $position='head')
     {
         static $sa_files = array();
-        
-        if (!preg_match('|^https?://|i', $file) && $file[0] != '/')
-            $file = $this->scripts_path . $file . (($fs = @filemtime($this->scripts_path . $file)) ? '?s='.$fs : '');
+
+        if (!preg_match('|^https?://|i', $file) && $file[0] != '/') {
+            $file = $this->scripts_path . $file;
+            if ($fs = @filemtime($file)) {
+                $file .= '?s=' . $fs;
+            }
+        }
 
         if (in_array($file, $sa_files)) {
             return;
@@ -69,6 +72,7 @@ class rcube_html_page
         if (!is_array($this->script_files[$position])) {
             $this->script_files[$position] = array();
         }
+
         $this->script_files[$position][] = $file;
     }
 
@@ -81,9 +85,10 @@ class rcube_html_page
     public function add_script($script, $position='head')
     {
         if (!isset($this->scripts[$position])) {
-            $this->scripts[$position] = "\n".rtrim($script);
-        } else {
-            $this->scripts[$position] .= "\n".rtrim($script);
+            $this->scripts[$position] = "\n" . rtrim($script);
+        }
+        else {
+            $this->scripts[$position] .= "\n" . rtrim($script);
         }
     }
 
@@ -104,7 +109,7 @@ class rcube_html_page
      */
     public function add_header($str)
     {
-        $this->header .= "\n".$str;
+        $this->header .= "\n" . $str;
     }
 
     /**
@@ -115,7 +120,7 @@ class rcube_html_page
      */
     public function add_footer($str)
     {
-        $this->footer .= "\n".$str;
+        $this->footer .= "\n" . $str;
     }
 
     /**
@@ -195,13 +200,13 @@ class rcube_html_page
         // definition of the code to be placed in the document header and footer
         if (is_array($this->script_files['head'])) {
             foreach ($this->script_files['head'] as $file) {
-                $page_header .= sprintf($this->script_tag_file, $file);
+                $page_header .= html::script($file);
             }
         }
 
         $head_script = $this->scripts['head_top'] . $this->scripts['head'];
         if (!empty($head_script)) {
-            $page_header .= sprintf($this->script_tag, $head_script);
+            $page_header .= html::script(array(), $head_script);
         }
 
         if (!empty($this->header)) {
@@ -215,7 +220,7 @@ class rcube_html_page
 
         if (is_array($this->script_files['foot'])) {
             foreach ($this->script_files['foot'] as $file) {
-                $page_footer .= sprintf($this->script_tag_file, $file);
+                $page_footer .= html::script($file);
             }
         }
 
@@ -224,7 +229,7 @@ class rcube_html_page
         }
 
         if (!empty($this->scripts['foot'])) {
-            $page_footer .= sprintf($this->script_tag, $this->scripts['foot']);
+            $page_footer .= html::script(array(), $this->scripts['foot']);
         }
 
         // find page header
@@ -266,7 +271,8 @@ class rcube_html_page
         ) {
             $css = '';
             foreach ($this->css_files as $file) {
-                $css .= sprintf($this->link_css_file, $file);
+                $css .= html::tag('link', array('rel' => 'stylesheet',
+                    'type' => 'text/css', 'href' => $file, 'nl' => true));
             }
             $output = substr_replace($output, $css, $pos, 0);
         }
@@ -278,15 +284,16 @@ class rcube_html_page
         $output = preg_replace_callback(
             '!(src|href|background)=(["\']?)([a-z0-9/_.-]+)(["\'\s>])!i',
             array($this, 'file_callback'), $output);
-        $output = str_replace('$__skin_path', $base_path, $output);
 
         // trigger hook with final HTML content to be sent
         $hook = rcmail::get_instance()->plugins->exec_hook("send_page", array('content' => $output));
         if (!$hook['abort']) {
-            if ($this->charset != RCMAIL_CHARSET)
+            if ($this->charset != RCMAIL_CHARSET) {
                 echo rcube_charset_convert($hook['content'], RCMAIL_CHARSET, $this->charset);
-            else
+            }
+            else {
                 echo $hook['content'];
+            }
         }
     }
 
@@ -300,14 +307,17 @@ class rcube_html_page
            $file = $matches[3];
 
         // correct absolute paths
-           if ($file[0] == '/')
+           if ($file[0] == '/') {
                $file = $this->base_path . $file;
+        }
 
         // add file modification timestamp
-           if (preg_match('/\.(js|css)$/', $file))
-           $file .= '?s=' . @filemtime($file);
+           if (preg_match('/\.(js|css)$/', $file)) {
+            if ($fs = @filemtime($file)) {
+                $file .= '?s=' . $fs;
+            }
+        }
 
-           return sprintf("%s=%s%s%s", $matches[1], $matches[2], $file, $matches[4]);
+           return $matches[1] . '=' . $matches[2] . $file . $matches[4];
     }
 }
-
diff --git a/program/include/rcube_image.php b/program/include/rcube_image.php
new file mode 100644 (file)
index 0000000..79dcad6
--- /dev/null
@@ -0,0 +1,175 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | program/include/rcube_image.php                                       |
+ |                                                                       |
+ | This file is part of the Roundcube Webmail client                     |
+ | Copyright (C) 2005-2012, The Roundcube Dev Team                       |
+ | Copyright (C) 2011-2012, 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:                                                              |
+ |   Image resizer                                                       |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas Bruederli <roundcube@gmail.com>                        |
+ | Author: Aleksander Machniak <alec@alec.pl>                            |
+ +-----------------------------------------------------------------------+
+
+ $Id$
+
+*/
+
+class rcube_image
+{
+    private $image_file;
+
+    function __construct($filename)
+    {
+        $this->image_file = $filename;
+    }
+
+    /**
+     * Get image properties.
+     *
+     * @return mixed Hash array with image props like type, width, height
+     */
+    public function props()
+    {
+        // use GD extension
+        if (function_exists('getimagesize') && ($imsize = @getimagesize($this->image_file))) {
+            $width   = $imsize[0];
+            $height  = $imsize[1];
+            $gd_type = $imsize['2'];
+            $type    = image_type_to_extension($imsize['2'], false);
+        }
+
+        // use ImageMagick
+        if (!$type && ($data = $this->identify())) {
+            list($type, $width, $height) = $data;
+        }
+
+        if ($type) {
+            return array(
+                'type'    => $type,
+                'gd_type' => $gd_type,
+                'width'   => $width,
+                'height'  => $height,
+            );
+        }
+    }
+
+    /**
+     * Resize image to a given size
+     *
+     * @param int    $size      Max width/height size
+     * @param string $filename  Output filename
+     *
+     * @return Success of convert as true/false
+     */
+    public function resize($size, $filename = null)
+    {
+        $result   = false;
+        $rcmail   = rcmail::get_instance();
+        $convert  = $rcmail->config->get('im_convert_path', false);
+        $props    = $this->props();
+
+        if (!$filename) {
+            $filename = $this->image_file;
+        }
+
+        // use Imagemagick
+        if ($convert) {
+            $p['out']  = $filename;
+            $p['in']   = $this->image_file;
+            $p['size'] = $size.'x'.$size;
+            $type      = $props['type'];
+
+            if (!$type && ($data = $this->identify())) {
+                $type = $data[0];
+            }
+
+            $type = strtr($type, array("jpeg" => "jpg", "tiff" => "tif", "ps" => "eps", "ept" => "eps"));
+            $p += array('type' => $type, 'types' => "bmp,eps,gif,jp2,jpg,png,svg,tif", 'quality' => 75);
+            $p['-opts'] = array('-resize' => $size.'>');
+
+            if (in_array($type, explode(',', $p['types']))) { // Valid type?
+                $result = rcmail::exec($convert . ' 2>&1 -flatten -auto-orient -colorspace RGB -quality {quality} {-opts} {in} {type}:{out}', $p) === '';
+            }
+
+            if ($result) {
+                return true;
+            }
+        }
+
+        // use GD extension
+        $gd_types = array(IMAGETYPE_JPEG, IMAGETYPE_GIF, IMAGETYPE_PNG);
+        if ($props['gd_type'] && in_array($props['gd_type'], $gd_types)) {
+            if ($props['gd_type'] == IMAGETYPE_JPEG) {
+                $image = imagecreatefromjpeg($this->image_file);
+            }
+            elseif($props['gd_type'] == IMAGETYPE_GIF) {
+                $image = imagecreatefromgif($this->image_file);
+            }
+            elseif($props['gd_type'] == IMAGETYPE_PNG) {
+                $image = imagecreatefrompng($this->image_file);
+            }
+
+            $scale  = $size / max($props['width'], $props['height']);
+            $width  = $props['width']  * $scale;
+            $height = $props['height'] * $scale;
+
+            $new_image = imagecreatetruecolor($width, $height);
+
+            // Fix transparency of gif/png image
+            if ($props['gd_type'] != IMAGETYPE_JPEG) {
+                imagealphablending($new_image, false);
+                imagesavealpha($new_image, true);
+                $transparent = imagecolorallocatealpha($new_image, 255, 255, 255, 127);
+                imagefilledrectangle($new_image, 0, 0, $width, $height, $transparent);
+            }
+
+            imagecopyresampled($new_image, $image, 0, 0, 0, 0, $width, $height, $props['width'], $props['height']);
+            $image = $new_image;
+
+            if ($props['gd_type'] == IMAGETYPE_JPEG) {
+                $result = imagejpeg($image, $filename, 75);
+            }
+            elseif($props['gd_type'] == IMAGETYPE_GIF) {
+                $result = imagegif($image, $filename);
+            }
+            elseif($props['gd_type'] == IMAGETYPE_PNG) {
+                $result = imagepng($image, $filename, 6, PNG_ALL_FILTERS);
+            }
+
+            if ($result) {
+                return true;
+            }
+        }
+
+
+        // @TODO: print error to the log?
+        return false;
+    }
+
+    /**
+     * Identify command handler.
+     */
+    private function identify()
+    {
+        $rcmail = rcmail::get_instance();
+
+        if ($cmd = $rcmail->config->get('im_identify_path')) {
+            $args = array('in' => $this->image_file, 'format' => "%m %[fx:w] %[fx:h]");
+            $id   = rcmail::exec($cmd. ' 2>/dev/null -format {format} {in}', $args);
+
+            if ($id) {
+                return explode(' ', strtolower($id));
+            }
+        }
+    }
+}
index 8020f013d3bcee93d23f653253e93117e385982e..a9c00b5e5ab7a47229ca6ece092545b9378c8517 100644 (file)
@@ -5,19 +5,22 @@
  | program/include/rcube_imap.php                                        |
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
- | Copyright (C) 2005-2011, The Roundcube Dev Team                       |
- | Copyright (C) 2011, Kolab Systems AG                                  |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2005-2012, The Roundcube Dev Team                       |
+ | Copyright (C) 2011-2012, 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:                                                              |
- |   IMAP Engine                                                         |
+ |   IMAP Storage Engine                                                 |
  |                                                                       |
  +-----------------------------------------------------------------------+
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  | Author: Aleksander Machniak <alec@alec.pl>                            |
  +-----------------------------------------------------------------------+
 
- $Id: rcube_imap.php 5952 2012-03-03 13:20:14Z alec $
+ $Id$
 
 */
 
  * @author     Aleksander Machniak <alec@alec.pl>
  * @version    2.0
  */
-class rcube_imap
+class rcube_imap extends rcube_storage
 {
-    public $skip_deleted = false;
-    public $page_size = 10;
-    public $list_page = 1;
-    public $threading = false;
-    public $fetch_add_headers = '';
-    public $get_all_headers = false;
-
     /**
      * Instance of rcube_imap_generic
      *
@@ -51,87 +47,70 @@ class rcube_imap
      *
      * @var rcube_imap_cache
      */
-    private $mcache;
+    protected $mcache;
 
     /**
      * Instance of rcube_cache
      *
      * @var rcube_cache
      */
-    private $cache;
+    protected $cache;
 
     /**
      * Internal (in-memory) cache
      *
      * @var array
      */
-    private $icache = array();
-
-    private $mailbox = 'INBOX';
-    private $delimiter = NULL;
-    private $namespace = NULL;
-    private $sort_field = '';
-    private $sort_order = 'DESC';
-    private $default_charset = 'ISO-8859-1';
-    private $struct_charset = NULL;
-    private $default_folders = array('INBOX');
-    private $uid_id_map = array();
-    private $msg_headers = array();
-    public  $search_set = NULL;
-    public  $search_string = '';
-    private $search_charset = '';
-    private $search_sort_field = '';
-    private $search_threads = false;
-    private $search_sorted = false;
-    private $options = array('auth_method' => 'check');
-    private $host, $user, $pass, $port, $ssl;
-    private $caching = false;
-    private $messages_caching = false;
-
-    /**
-     * All (additional) headers used (in any way) by Roundcube
-     * Not listed here: DATE, FROM, TO, CC, REPLY-TO, SUBJECT, CONTENT-TYPE, LIST-POST
-     * (used for messages listing) are hardcoded in rcube_imap_generic::fetchHeaders()
-     *
-     * @var array
-     * @see rcube_imap::fetch_add_headers
-     */
-    private $all_headers = array(
-        'IN-REPLY-TO',
-        'BCC',
-        'MESSAGE-ID',
-        'CONTENT-TRANSFER-ENCODING',
-        'REFERENCES',
-        'X-DRAFT-INFO',
-        'MAIL-FOLLOWUP-TO',
-        'MAIL-REPLY-TO',
-        'RETURN-PATH',
-    );
-
-    const UNKNOWN       = 0;
-    const NOPERM        = 1;
-    const READONLY      = 2;
-    const TRYCREATE     = 3;
-    const INUSE         = 4;
-    const OVERQUOTA     = 5;
-    const ALREADYEXISTS = 6;
-    const NONEXISTENT   = 7;
-    const CONTACTADMIN  = 8;
+    protected $icache = array();
+
+    protected $list_page = 1;
+    protected $delimiter;
+    protected $namespace;
+    protected $sort_field = '';
+    protected $sort_order = 'DESC';
+    protected $struct_charset;
+    protected $uid_id_map = array();
+    protected $msg_headers = array();
+    protected $search_set;
+    protected $search_string = '';
+    protected $search_charset = '';
+    protected $search_sort_field = '';
+    protected $search_threads = false;
+    protected $search_sorted = false;
+    protected $options = array('auth_method' => 'check');
+    protected $caching = false;
+    protected $messages_caching = false;
+    protected $threading = false;
 
 
     /**
      * Object constructor.
      */
-    function __construct()
+    public function __construct()
     {
         $this->conn = new rcube_imap_generic();
 
         // Set namespace and delimiter from session,
         // so some methods would work before connection
-        if (isset($_SESSION['imap_namespace']))
+        if (isset($_SESSION['imap_namespace'])) {
             $this->namespace = $_SESSION['imap_namespace'];
-        if (isset($_SESSION['imap_delimiter']))
+        }
+        if (isset($_SESSION['imap_delimiter'])) {
             $this->delimiter = $_SESSION['imap_delimiter'];
+        }
+    }
+
+
+    /**
+     * Magic getter for backward compat.
+     *
+     * @deprecated.
+     */
+    public function __get($name)
+    {
+        if (isset($this->{$name})) {
+            return $this->{$name};
+        }
     }
 
 
@@ -143,14 +122,15 @@ class rcube_imap
      * @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
-     * @access public
      */
-    function connect($host, $user, $pass, $port=143, $use_ssl=null)
+    public function connect($host, $user, $pass, $port=143, $use_ssl=null)
     {
         // check for OpenSSL support in PHP build
-        if ($use_ssl && extension_loaded('openssl'))
+        if ($use_ssl && extension_loaded('openssl')) {
             $this->options['ssl_mode'] = $use_ssl == 'imaps' ? 'ssl' : $use_ssl;
+        }
         else if ($use_ssl) {
             raise_error(array('code' => 403, 'type' => 'imap',
                 'file' => __FILE__, 'line' => __LINE__,
@@ -161,7 +141,7 @@ class rcube_imap
         $this->options['port'] = $port;
 
         if ($this->options['debug']) {
-            $this->conn->setDebug(true, array($this, 'debug_handler'));
+            $this->set_debug(true);
 
             $this->options['ident'] = array(
                 'name' => 'Roundcube Webmail',
@@ -178,17 +158,23 @@ class rcube_imap
                 array_merge($this->options, array('host' => $host, 'user' => $user,
                     'attempt' => ++$attempt)));
 
-            if (!empty($data['pass']))
+            if (!empty($data['pass'])) {
                 $pass = $data['pass'];
+            }
 
             $this->conn->connect($data['host'], $data['user'], $pass, $data);
         } while(!$this->conn->connected() && $data['retry']);
 
-        $this->host = $data['host'];
-        $this->user = $data['user'];
-        $this->pass = $pass;
-        $this->port = $port;
-        $this->ssl  = $use_ssl;
+        $config = array(
+            'host'     => $data['host'],
+            'user'     => $data['user'],
+            'password' => $pass,
+            'port'     => $port,
+            'ssl'      => $use_ssl,
+        );
+
+        $this->options      = array_merge($this->options, $config);
+        $this->connect_done = true;
 
         if ($this->conn->connected()) {
             // get namespace and delimiter
@@ -212,33 +198,48 @@ class rcube_imap
 
 
     /**
-     * Close IMAP connection
+     * Close IMAP connection.
      * Usually done on script shutdown
-     *
-     * @access public
      */
-    function close()
+    public function close()
     {
         $this->conn->closeConnection();
-        if ($this->mcache)
+        if ($this->mcache) {
             $this->mcache->close();
+        }
     }
 
 
     /**
-     * Close IMAP connection and re-connect
-     * This is used to avoid some strange socket errors when talking to Courier IMAP
+     * Check connection state, connect if not connected.
      *
-     * @access public
+     * @return bool Connection state.
      */
-    function reconnect()
+    public function check_connection()
     {
-        $this->conn->closeConnection();
-        $connected = $this->connect($this->host, $this->user, $this->pass, $this->port, $this->ssl);
+        // Establish connection if it wasn't done yet
+        if (!$this->connect_done && !empty($this->options['user'])) {
+            return $this->connect(
+                $this->options['host'],
+                $this->options['user'],
+                $this->options['password'],
+                $this->options['port'],
+                $this->options['ssl']
+            );
+        }
+
+        return $this->is_connected();
+    }
 
-        // issue SELECT command to restore connection status
-        if ($connected && strlen($this->mailbox))
-            $this->conn->select($this->mailbox);
+
+    /**
+     * Checks IMAP connection.
+     *
+     * @return boolean  TRUE on success, FALSE on failure
+     */
+    public function is_connected()
+    {
+        return $this->conn->connected();
     }
 
 
@@ -247,18 +248,18 @@ class rcube_imap
      *
      * @return int Error code
      */
-    function get_error_code()
+    public function get_error_code()
     {
         return $this->conn->errornum;
     }
 
 
     /**
-     * Returns message of last error
+     * Returns text of last error
      *
-     * @return string Error message
+     * @return string Error string
      */
-    function get_error_str()
+    public function get_error_str()
     {
         return $this->conn->error;
     }
@@ -269,7 +270,7 @@ class rcube_imap
      *
      * @return int Response code
      */
-    function get_response_code()
+    public function get_response_code()
     {
         switch ($this->conn->resultcode) {
             case 'NOPERM':
@@ -294,35 +295,12 @@ class rcube_imap
     }
 
 
-    /**
-     * Returns last command response
-     *
-     * @return string Response
-     */
-    function get_response_str()
-    {
-        return $this->conn->result;
-    }
-
-
-    /**
-     * Set options to be used in rcube_imap_generic::connect()
-     *
-     * @param array $opt Options array
-     */
-    function set_options($opt)
-    {
-        $this->options = array_merge($this->options, (array)$opt);
-    }
-
-
     /**
      * Activate/deactivate debug mode
      *
      * @param boolean $dbg True if IMAP conversation should be logged
-     * @access public
      */
-    function set_debug($dbg = true)
+    public function set_debug($dbg = true)
     {
         $this->options['debug'] = $dbg;
         $this->conn->setDebug($dbg, array($this, 'debug_handler'));
@@ -330,208 +308,152 @@ class rcube_imap
 
 
     /**
-     * Set default message charset
-     *
-     * This will be used for message decoding if a charset specification is not available
-     *
-     * @param  string $cs Charset string
-     * @access public
-     */
-    function set_charset($cs)
-    {
-        $this->default_charset = $cs;
-    }
-
-
-    /**
-     * This list of folders will be listed above all other folders
-     *
-     * @param  array $arr Indexed list of folder names
-     * @access public
-     */
-    function set_default_mailboxes($arr)
-    {
-        if (is_array($arr)) {
-            $this->default_folders = $arr;
-
-            // add inbox if not included
-            if (!in_array('INBOX', $this->default_folders))
-                array_unshift($this->default_folders, 'INBOX');
-        }
-    }
-
-
-    /**
-     * Set internal mailbox reference.
+     * Set internal folder reference.
+     * All operations will be perfomed on this folder.
      *
-     * All operations will be perfomed on this mailbox/folder
-     *
-     * @param  string $mailbox Mailbox/Folder name
-     * @access public
+     * @param  string $folder Folder name
      */
-    function set_mailbox($mailbox)
+    public function set_folder($folder)
     {
-        if ($this->mailbox == $mailbox)
+        if ($this->folder == $folder) {
             return;
-
-        $this->mailbox = $mailbox;
-
-        // clear messagecount cache for this mailbox
-        $this->_clear_messagecount($mailbox);
-    }
-
-
-    /**
-     * Forces selection of a mailbox
-     *
-     * @param  string $mailbox Mailbox/Folder name
-     * @access public
-     */
-    function select_mailbox($mailbox=null)
-    {
-        if (!strlen($mailbox)) {
-            $mailbox = $this->mailbox;
         }
 
-        $selected = $this->conn->select($mailbox);
-
-        if ($selected && $this->mailbox != $mailbox) {
-            // clear messagecount cache for this mailbox
-            $this->_clear_messagecount($mailbox);
-            $this->mailbox = $mailbox;
-        }
-    }
-
-
-    /**
-     * Set internal list page
-     *
-     * @param  number $page Page number to list
-     * @access public
-     */
-    function set_page($page)
-    {
-        $this->list_page = (int)$page;
-    }
-
+        $this->folder = $folder;
 
-    /**
-     * Set internal page size
-     *
-     * @param  number $size Number of messages to display on one page
-     * @access public
-     */
-    function set_pagesize($size)
-    {
-        $this->page_size = (int)$size;
+        // clear messagecount cache for this folder
+        $this->clear_messagecount($folder);
     }
 
 
     /**
-     * Save a set of message ids for future message listing methods
+     * Save a search result for future message listing methods
      *
-     * @param  string  IMAP Search query
-     * @param  array   List of message ids or NULL if empty
-     * @param  string  Charset of search string
-     * @param  string  Sorting field
-     * @param  string  True if set is sorted (SORT was used for searching)
+     * @param  array  $set  Search set, result from rcube_imap::get_search_set():
+     *                      0 - searching criteria, string
+     *                      1 - search result, rcube_result_index|rcube_result_thread
+     *                      2 - searching character set, string
+     *                      3 - sorting field, string
+     *                      4 - true if sorted, bool
      */
-    function set_search_set($str=null, $msgs=null, $charset=null, $sort_field=null, $threads=false, $sorted=false)
+    public function set_search_set($set)
     {
-        if (is_array($str) && $msgs == null)
-            list($str, $msgs, $charset, $sort_field, $threads, $sorted) = $str;
-        if ($msgs === false)
-            $msgs = array();
-        else if ($msgs != null && !is_array($msgs))
-            $msgs = explode(',', $msgs);
+        $set = (array)$set;
 
-        $this->search_string     = $str;
-        $this->search_set        = $msgs;
-        $this->search_charset    = $charset;
-        $this->search_sort_field = $sort_field;
-        $this->search_threads    = $threads;
-        $this->search_sorted     = $sorted;
+        $this->search_string     = $set[0];
+        $this->search_set        = $set[1];
+        $this->search_charset    = $set[2];
+        $this->search_sort_field = $set[3];
+        $this->search_sorted     = $set[4];
+        $this->search_threads    = is_a($this->search_set, 'rcube_result_thread');
     }
 
 
     /**
      * Return the saved search set as hash array
+     *
      * @return array Search set
      */
-    function get_search_set()
+    public function get_search_set()
     {
-        return array($this->search_string,
+        if (empty($this->search_set)) {
+            return null;
+        }
+
+        return array(
+            $this->search_string,
                $this->search_set,
                $this->search_charset,
                $this->search_sort_field,
-               $this->search_threads,
                $this->search_sorted,
            );
     }
 
 
     /**
-     * Returns the currently used mailbox name
+     * Returns the IMAP server's capability.
      *
-     * @return  string Name of the mailbox/folder
-     * @access  public
+     * @param   string  $cap Capability name
+     *
+     * @return  mixed   Capability value or TRUE if supported, FALSE if not
      */
-    function get_mailbox_name()
+    public function get_capability($cap)
     {
-        return $this->mailbox;
+        $cap      = strtoupper($cap);
+        $sess_key = "STORAGE_$cap";
+
+        if (!isset($_SESSION[$sess_key])) {
+            if (!$this->check_connection()) {
+                return false;
+            }
+
+            $_SESSION[$sess_key] = $this->conn->getCapability($cap);
+        }
+
+        return $_SESSION[$sess_key];
     }
 
 
     /**
-     * Returns the IMAP server's capability
+     * Checks the PERMANENTFLAGS capability of the current folder
+     * and returns true if the given flag is supported by the IMAP server
      *
-     * @param   string  $cap Capability name
-     * @return  mixed   Capability value or TRUE if supported, FALSE if not
-     * @access  public
+     * @param   string  $flag Permanentflag name
+     *
+     * @return  boolean True if this flag is supported
      */
-    function get_capability($cap)
+    public function check_permflag($flag)
     {
-        return $this->conn->getCapability(strtoupper($cap));
+        $flag       = strtoupper($flag);
+        $imap_flag  = $this->conn->flags[$flag];
+        $perm_flags = $this->get_permflags($this->folder);
+
+        return in_array_nocase($imap_flag, $perm_flags);
     }
 
 
     /**
-     * Sets threading flag to the best supported THREAD algorithm
+     * Returns PERMANENTFLAGS of the specified folder
      *
-     * @param  boolean  $enable TRUE to enable and FALSE
-     * @return string   Algorithm or false if THREAD is not supported
-     * @access public
+     * @param  string $folder Folder name
+     *
+     * @return array Flags
      */
-    function set_threading($enable=false)
+    public function get_permflags($folder)
     {
-        $this->threading = false;
-
-        if ($enable && ($caps = $this->get_capability('THREAD'))) {
-            if (in_array('REFS', $caps))
-                $this->threading = 'REFS';
-            else if (in_array('REFERENCES', $caps))
-                $this->threading = 'REFERENCES';
-            else if (in_array('ORDEREDSUBJECT', $caps))
-                $this->threading = 'ORDEREDSUBJECT';
+        if (!strlen($folder)) {
+            return array();
         }
+/*
+        Checking PERMANENTFLAGS is rather rare, so we disable caching of it
+        Re-think when we'll use it for more than only MDNSENT flag
 
-        return $this->threading;
-    }
+        $cache_key = 'mailboxes.permanentflags.' . $folder;
+        $permflags = $this->get_cache($cache_key);
 
+        if ($permflags !== null) {
+            return explode(' ', $permflags);
+        }
+*/
+        if (!$this->check_connection()) {
+            return array();
+        }
 
-    /**
-     * Checks the PERMANENTFLAGS capability of the current mailbox
-     * and returns true if the given flag is supported by the IMAP server
-     *
-     * @param   string  $flag Permanentflag name
-     * @return  boolean True if this flag is supported
-     * @access  public
-     */
-    function check_permflag($flag)
-    {
-        $flag = strtoupper($flag);
-        $imap_flag = $this->conn->flags[$flag];
-        return (in_array_nocase($imap_flag, $this->conn->data['PERMANENTFLAGS']));
+        if ($this->conn->select($folder)) {
+            $permflags = $this->conn->data['PERMANENTFLAGS'];
+        }
+        else {
+            return array();
+        }
+
+        if (!is_array($permflags)) {
+            $permflags = array();
+        }
+/*
+        // Store permflags as string to limit cached object size
+        $this->update_cache($cache_key, implode(' ', $permflags));
+*/
+        return $permflags;
     }
 
 
@@ -541,7 +463,7 @@ class rcube_imap
      * @return  string  Delimiter string
      * @access  public
      */
-    function get_hierarchy_delimiter()
+    public function get_hierarchy_delimiter()
     {
         return $this->delimiter;
     }
@@ -553,9 +475,8 @@ class rcube_imap
      * @param string $name Namespace array index: personal, other, shared, prefix
      *
      * @return  array  Namespace data
-     * @access  public
      */
-    function get_namespace($name=null)
+    public function get_namespace($name = null)
     {
         $ns = $this->namespace;
 
@@ -570,10 +491,8 @@ class rcube_imap
 
     /**
      * Sets delimiter and namespaces
-     *
-     * @access private
      */
-    private function set_env()
+    protected function set_env()
     {
         if ($this->delimiter !== null && $this->namespace !== null) {
             return;
@@ -585,8 +504,9 @@ class rcube_imap
         $imap_shared    = $config->get('imap_ns_shared');
         $imap_delimiter = $config->get('imap_delimiter');
 
-        if (!$this->conn->connected())
+        if (!$this->check_connection()) {
             return;
+        }
 
         $ns = $this->conn->getNamespace();
 
@@ -639,7 +559,7 @@ class rcube_imap
             }
         }
 
-        // Find personal namespace prefix for mod_mailbox()
+        // Find personal namespace prefix for mod_folder()
         // Prefix can be removed when there is only one personal namespace
         if (is_array($this->namespace['personal']) && count($this->namespace['personal']) == 1) {
             $this->namespace['prefix'] = $this->namespace['personal'][0][0];
@@ -651,77 +571,85 @@ class rcube_imap
 
 
     /**
-     * Get message count for a specific mailbox
+     * Get message count for a specific folder
      *
-     * @param  string  $mailbox Mailbox/folder name
+     * @param  string  $folder  Folder name
      * @param  string  $mode    Mode for count [ALL|THREADS|UNSEEN|RECENT]
      * @param  boolean $force   Force reading from server and update cache
      * @param  boolean $status  Enables storing folder status info (max UID/count),
-     *                          required for mailbox_status()
+     *                          required for folder_status()
+     *
      * @return int     Number of messages
-     * @access public
      */
-    function messagecount($mailbox='', $mode='ALL', $force=false, $status=true)
+    public function count($folder='', $mode='ALL', $force=false, $status=true)
     {
-        if (!strlen($mailbox)) {
-            $mailbox = $this->mailbox;
+        if (!strlen($folder)) {
+            $folder = $this->folder;
         }
 
-        return $this->_messagecount($mailbox, $mode, $force, $status);
+        return $this->messagecount($folder, $mode, $force, $status);
     }
 
 
     /**
-     * Private method for getting nr of messages
+     * protected method for getting nr of messages
      *
-     * @param string  $mailbox Mailbox name
+     * @param string  $folder  Folder name
      * @param string  $mode    Mode for count [ALL|THREADS|UNSEEN|RECENT]
      * @param boolean $force   Force reading from server and update cache
      * @param boolean $status  Enables storing folder status info (max UID/count),
-     *                         required for mailbox_status()
+     *                         required for folder_status()
+     *
      * @return int Number of messages
-     * @access  private
-     * @see     rcube_imap::messagecount()
+     * @see rcube_imap::count()
      */
-    private function _messagecount($mailbox, $mode='ALL', $force=false, $status=true)
+    protected function messagecount($folder, $mode='ALL', $force=false, $status=true)
     {
         $mode = strtoupper($mode);
 
-        // count search set
-        if ($this->search_string && $mailbox == $this->mailbox && ($mode == 'ALL' || $mode == 'THREADS') && !$force) {
-            if ($this->search_threads)
-                return $mode == 'ALL' ? count((array)$this->search_set['depth']) : count((array)$this->search_set['tree']);
-            else
-                return count((array)$this->search_set);
+        // count search set, assume search set is always up-to-date (don't check $force flag)
+        if ($this->search_string && $folder == $this->folder && ($mode == 'ALL' || $mode == 'THREADS')) {
+            if ($mode == 'ALL') {
+                return $this->search_set->count_messages();
+            }
+            else {
+                return $this->search_set->count();
+            }
         }
 
-        $a_mailbox_cache = $this->get_cache('messagecount');
+        $a_folder_cache = $this->get_cache('messagecount');
 
         // return cached value
-        if (!$force && is_array($a_mailbox_cache[$mailbox]) && isset($a_mailbox_cache[$mailbox][$mode]))
-            return $a_mailbox_cache[$mailbox][$mode];
+        if (!$force && is_array($a_folder_cache[$folder]) && isset($a_folder_cache[$folder][$mode])) {
+            return $a_folder_cache[$folder][$mode];
+        }
 
-        if (!is_array($a_mailbox_cache[$mailbox]))
-            $a_mailbox_cache[$mailbox] = array();
+        if (!is_array($a_folder_cache[$folder])) {
+            $a_folder_cache[$folder] = array();
+        }
 
         if ($mode == 'THREADS') {
-            $res   = $this->_threadcount($mailbox, $msg_count);
-            $count = $res['count'];
+            $res   = $this->fetch_threads($folder, $force);
+            $count = $res->count();
 
             if ($status) {
-                $this->set_folder_stats($mailbox, 'cnt', $res['msgcount']);
-                $this->set_folder_stats($mailbox, 'maxuid', $res['maxuid'] ? $this->id2uid($res['maxuid'], $mailbox) : 0);
+                $msg_count = $res->count_messages();
+                $this->set_folder_stats($folder, 'cnt', $msg_count);
+                $this->set_folder_stats($folder, 'maxuid', $msg_count ? $this->id2uid($msg_count, $folder) : 0);
             }
         }
+        // Need connection here
+        else if (!$this->check_connection()) {
+            return 0;
+        }
         // RECENT count is fetched a bit different
         else if ($mode == 'RECENT') {
-            $count = $this->conn->countRecent($mailbox);
+            $count = $this->conn->countRecent($folder);
         }
         // use SEARCH for message counting
-        else if ($this->skip_deleted) {
+        else if (!empty($this->options['skip_deleted'])) {
             $search_str = "ALL UNDELETED";
             $keys       = array('COUNT');
-            $need_uid   = false;
 
             if ($mode == 'UNSEEN') {
                 $search_str .= " UNSEEN";
@@ -732,621 +660,438 @@ class rcube_imap
                 }
                 if ($status) {
                     $keys[]   = 'MAX';
-                    $need_uid = true;
                 }
             }
 
+            // @TODO: if $force==false && $mode == 'ALL' we could try to use cache index here
+
             // get message count using (E)SEARCH
             // not very performant but more precise (using UNDELETED)
-            $index = $this->conn->search($mailbox, $search_str, $need_uid, $keys);
-
-            $count = is_array($index) ? $index['COUNT'] : 0;
+            $index = $this->conn->search($folder, $search_str, true, $keys);
+            $count = $index->count();
 
             if ($mode == 'ALL') {
-                if ($this->messages_caching) {
-                    // Save additional info required by cache status check
-                    $this->icache['undeleted_idx'] = array($mailbox, $index['ALL'], $index['COUNT']);
-                }
+                // Cache index data, will be used in index_direct()
+                $this->icache['undeleted_idx'] = $index;
+
                 if ($status) {
-                    $this->set_folder_stats($mailbox, 'cnt', $count);
-                    $this->set_folder_stats($mailbox, 'maxuid', is_array($index) ? $index['MAX'] : 0);
+                    $this->set_folder_stats($folder, 'cnt', $count);
+                    $this->set_folder_stats($folder, 'maxuid', $index->max());
                 }
             }
         }
         else {
-            if ($mode == 'UNSEEN')
-                $count = $this->conn->countUnseen($mailbox);
+            if ($mode == 'UNSEEN') {
+                $count = $this->conn->countUnseen($folder);
+            }
             else {
-                $count = $this->conn->countMessages($mailbox);
+                $count = $this->conn->countMessages($folder);
                 if ($status) {
-                    $this->set_folder_stats($mailbox,'cnt', $count);
-                    $this->set_folder_stats($mailbox, 'maxuid', $count ? $this->id2uid($count, $mailbox) : 0);
+                    $this->set_folder_stats($folder,'cnt', $count);
+                    $this->set_folder_stats($folder, 'maxuid', $count ? $this->id2uid($count, $folder) : 0);
                 }
             }
         }
 
-        $a_mailbox_cache[$mailbox][$mode] = (int)$count;
+        $a_folder_cache[$folder][$mode] = (int)$count;
 
         // write back to cache
-        $this->update_cache('messagecount', $a_mailbox_cache);
+        $this->update_cache('messagecount', $a_folder_cache);
 
         return (int)$count;
     }
 
 
-    /**
-     * Private method for getting nr of threads
-     *
-     * @param string $mailbox   Folder name
-     *
-     * @returns array Array containing items: 'count' - threads count,
-     *                'msgcount' = messages count, 'maxuid' = max. UID in the set
-     * @access  private
-     */
-    private function _threadcount($mailbox)
-    {
-        $result = array();
-
-        if (!empty($this->icache['threads'])) {
-            $dcount = count($this->icache['threads']['depth']);
-            $result = array(
-                'count'    => count($this->icache['threads']['tree']),
-                'msgcount' => $dcount,
-                'maxuid'   => $dcount ? max(array_keys($this->icache['threads']['depth'])) : 0,
-            );
-        }
-        else if (is_array($result = $this->fetch_threads($mailbox))) {
-            $dcount = count($result[1]);
-            $result = array(
-                'count'    => count($result[0]),
-                'msgcount' => $dcount,
-                'maxuid'   => $dcount ? max(array_keys($result[1])) : 0,
-            );
-        }
-
-        return $result;
-    }
-
-
     /**
      * Public method for listing headers
-     * convert mailbox name with root dir first
      *
-     * @param   string   $mailbox    Mailbox/folder name
+     * @param   string   $folder     Folder name
      * @param   int      $page       Current page to list
      * @param   string   $sort_field Header field to sort by
      * @param   string   $sort_order Sort order [ASC|DESC]
      * @param   int      $slice      Number of slice items to extract from result array
+     *
      * @return  array    Indexed array with message header objects
-     * @access  public
      */
-    function list_headers($mailbox='', $page=NULL, $sort_field=NULL, $sort_order=NULL, $slice=0)
+    public function list_messages($folder='', $page=NULL, $sort_field=NULL, $sort_order=NULL, $slice=0)
     {
-        if (!strlen($mailbox)) {
-            $mailbox = $this->mailbox;
+        if (!strlen($folder)) {
+            $folder = $this->folder;
         }
 
-        return $this->_list_headers($mailbox, $page, $sort_field, $sort_order, $slice);
+        return $this->_list_messages($folder, $page, $sort_field, $sort_order, $slice);
     }
 
 
     /**
-     * Private method for listing message headers
+     * protected method for listing message headers
      *
-     * @param   string   $mailbox    Mailbox name
+     * @param   string   $folder     Folder name
      * @param   int      $page       Current page to list
      * @param   string   $sort_field Header field to sort by
      * @param   string   $sort_order Sort order [ASC|DESC]
      * @param   int      $slice      Number of slice items to extract from result array
      *
      * @return  array    Indexed array with message header objects
-     * @see     rcube_imap::list_headers
+     * @see     rcube_imap::list_messages
      */
-    private function _list_headers($mailbox='', $page=NULL, $sort_field=NULL, $sort_order=NULL, $slice=0)
+    protected function _list_messages($folder='', $page=NULL, $sort_field=NULL, $sort_order=NULL, $slice=0)
     {
-        if (!strlen($mailbox))
+        if (!strlen($folder)) {
             return array();
+        }
 
-        // use saved message set
-        if ($this->search_string && $mailbox == $this->mailbox)
-            return $this->_list_header_set($mailbox, $page, $sort_field, $sort_order, $slice);
-
-        if ($this->threading)
-            return $this->_list_thread_headers($mailbox, $page, $sort_field, $sort_order, $slice);
-
-        $this->_set_sort_order($sort_field, $sort_order);
-
+        $this->set_sort_order($sort_field, $sort_order);
         $page = $page ? $page : $this->list_page;
 
-        // Use messages cache
-        if ($mcache = $this->get_mcache_engine()) {
-            $msg_index = $mcache->get_index($mailbox, $this->sort_field, $this->sort_order);
-
-            if (empty($msg_index))
-                return array();
-
-            $from      = ($page-1) * $this->page_size;
-            $to        = $from + $this->page_size;
-            $msg_index = array_values($msg_index); // UIDs
-            $is_uid    = true;
-            $sorted    = true;
-
-            if ($from || $to)
-                $msg_index = array_slice($msg_index, $from, $to - $from);
-
-            if ($slice)
-                $msg_index = array_slice($msg_index, -$slice, $slice);
-
-            $a_msg_headers = $mcache->get_messages($mailbox, $msg_index);
+        // use saved message set
+        if ($this->search_string && $folder == $this->folder) {
+            return $this->list_search_messages($folder, $page, $slice);
         }
-        // retrieve headers from IMAP
-        // use message index sort as default sorting (for better performance)
-        else if (!$this->sort_field) {
-            if ($this->skip_deleted) {
-                // @TODO: this could be cached
-                if ($msg_index = $this->_search_index($mailbox, 'ALL UNDELETED')) {
-                    list($begin, $end) = $this->_get_message_range(count($msg_index), $page);
-                    $msg_index = array_slice($msg_index, $begin, $end-$begin);
-                }
-            }
-            else if ($max = $this->conn->countMessages($mailbox)) {
-                list($begin, $end) = $this->_get_message_range($max, $page);
-                $msg_index = range($begin+1, $end);
-            }
-            else
-                $msg_index = array();
-
-            if ($slice && $msg_index)
-                $msg_index = array_slice($msg_index, ($this->sort_order == 'DESC' ? 0 : -$slice), $slice);
-
-            // fetch reqested headers from server
-            if ($msg_index)
-                $a_msg_headers = $this->fetch_headers($mailbox, $msg_index);
-        }
-        // use SORT command
-        else if ($this->get_capability('SORT') &&
-            // Courier-IMAP provides SORT capability but allows to disable it by admin (#1486959)
-            ($msg_index = $this->conn->sort($mailbox, $this->sort_field,
-                $this->skip_deleted ? 'UNDELETED' : '', true)) !== false
-        ) {
-            if (!empty($msg_index)) {
-                list($begin, $end) = $this->_get_message_range(count($msg_index), $page);
-                $msg_index = array_slice($msg_index, $begin, $end-$begin);
-                $is_uid    = true;
-
-                if ($slice)
-                    $msg_index = array_slice($msg_index, ($this->sort_order == 'DESC' ? 0 : -$slice), $slice);
 
-                // fetch reqested headers from server
-                $a_msg_headers = $this->fetch_headers($mailbox, $msg_index, true);
-            }
+        if ($this->threading) {
+            return $this->list_thread_messages($folder, $page, $slice);
         }
-        // fetch specified header for all messages and sort
-        else if ($msg_index = $this->conn->fetchHeaderIndex($mailbox, "1:*",
-            $this->sort_field, $this->skip_deleted)
-        ) {
-            asort($msg_index); // ASC
-            $msg_index = array_keys($msg_index);
-            list($begin, $end) = $this->_get_message_range(count($msg_index), $page);
-            $msg_index = array_slice($msg_index, $begin, $end-$begin);
 
-            if ($slice)
-                $msg_index = array_slice($msg_index, ($this->sort_order == 'DESC' ? 0 : -$slice), $slice);
+        // get UIDs of all messages in the folder, sorted
+        $index = $this->index($folder, $this->sort_field, $this->sort_order);
 
-            // fetch reqested headers from server
-            $a_msg_headers = $this->fetch_headers($mailbox, $msg_index);
+        if ($index->is_empty()) {
+            return array();
         }
 
-        // return empty array if no messages found
-        if (!is_array($a_msg_headers) || empty($a_msg_headers))
-            return array();
+        $from = ($page-1) * $this->page_size;
+        $to   = $from + $this->page_size;
+
+        $index->slice($from, $to - $from);
 
-        // use this class for message sorting
-        $sorter = new rcube_header_sorter();
-        $sorter->set_index($msg_index, $is_uid);
-        $sorter->sort_headers($a_msg_headers);
+        if ($slice) {
+            $index->slice(-$slice, $slice);
+        }
 
-        if ($this->sort_order == 'DESC' && !$sorted)
-            $a_msg_headers = array_reverse($a_msg_headers);
+        // fetch reqested messages headers
+        $a_index = $index->get();
+        $a_msg_headers = $this->fetch_headers($folder, $a_index);
 
         return array_values($a_msg_headers);
     }
 
 
     /**
-     * Private method for listing message headers using threads
+     * protected method for listing message headers using threads
      *
-     * @param   string   $mailbox    Mailbox/folder name
+     * @param   string   $folder     Folder name
      * @param   int      $page       Current page to list
-     * @param   string   $sort_field Header field to sort by
-     * @param   string   $sort_order Sort order [ASC|DESC]
      * @param   int      $slice      Number of slice items to extract from result array
      *
      * @return  array    Indexed array with message header objects
-     * @see     rcube_imap::list_headers
+     * @see     rcube_imap::list_messages
      */
-    private function _list_thread_headers($mailbox, $page=NULL, $sort_field=NULL, $sort_order=NULL, $slice=0)
+    protected function list_thread_messages($folder, $page, $slice=0)
     {
-        $this->_set_sort_order($sort_field, $sort_order);
-
-        $page   = $page ? $page : $this->list_page;
-        $mcache = $this->get_mcache_engine();
-
         // get all threads (not sorted)
-        if ($mcache)
-            list ($thread_tree, $msg_depth, $has_children) = $mcache->get_thread($mailbox);
-        else
-            list ($thread_tree, $msg_depth, $has_children) = $this->fetch_threads($mailbox);
-
-        if (empty($thread_tree))
-            return array();
-
-        $msg_index = $this->sort_threads($mailbox, $thread_tree);
+        if ($mcache = $this->get_mcache_engine()) {
+            $threads = $mcache->get_thread($folder);
+        }
+        else {
+            $threads = $this->fetch_threads($folder);
+        }
 
-        return $this->_fetch_thread_headers($mailbox,
-            $thread_tree, $msg_depth, $has_children, $msg_index, $page, $slice);
+        return $this->fetch_thread_headers($folder, $threads, $page, $slice);
     }
 
-
     /**
      * Method for fetching threads data
      *
-     * @param  string $mailbox  Folder name
-     * @param  bool   $force    Use IMAP server, no cache
+     * @param  string $folder  Folder name
+     * @param  bool   $force   Use IMAP server, no cache
      *
-     * @return  array    Array with thread data
+     * @return rcube_imap_thread Thread data object
      */
-    function fetch_threads($mailbox, $force = false)
+    function fetch_threads($folder, $force = false)
     {
         if (!$force && ($mcache = $this->get_mcache_engine())) {
             // don't store in self's internal cache, cache has it's own internal cache
-            return $mcache->get_thread($mailbox);
+            return $mcache->get_thread($folder);
         }
 
         if (empty($this->icache['threads'])) {
+            if (!$this->check_connection()) {
+                return new rcube_result_thread();
+            }
+
             // get all threads
-            $result = $this->conn->thread($mailbox, $this->threading,
-                $this->skip_deleted ? 'UNDELETED' : '');
+            $result = $this->conn->thread($folder, $this->threading,
+                $this->options['skip_deleted'] ? 'UNDELETED' : '', true);
 
             // add to internal (fast) cache
-            $this->icache['threads'] = array();
-            $this->icache['threads']['tree'] = is_array($result) ? $result[0] : array();
-            $this->icache['threads']['depth'] = is_array($result) ? $result[1] : array();
-            $this->icache['threads']['has_children'] = is_array($result) ? $result[2] : array();
+            $this->icache['threads'] = $result;
         }
 
-        return array(
-            $this->icache['threads']['tree'],
-            $this->icache['threads']['depth'],
-            $this->icache['threads']['has_children'],
-        );
+        return $this->icache['threads'];
     }
 
 
     /**
-     * Private method for fetching threaded messages headers
+     * protected method for fetching threaded messages headers
      *
-     * @param string  $mailbox      Mailbox name
-     * @param array   $thread_tree  Thread tree data
-     * @param array   $msg_depth    Thread depth data
-     * @param array   $has_children Thread children data
-     * @param array   $msg_index    Messages index
-     * @param int     $page         List page number
-     * @param int     $slice        Number of threads to slice
+     * @param string              $folder     Folder name
+     * @param rcube_result_thread $threads    Threads data object
+     * @param int                 $page       List page number
+     * @param int                 $slice      Number of threads to slice
      *
      * @return array  Messages headers
-     * @access  private
      */
-    private function _fetch_thread_headers($mailbox, $thread_tree, $msg_depth, $has_children, $msg_index, $page, $slice=0)
+    protected function fetch_thread_headers($folder, $threads, $page, $slice=0)
     {
-        // now get IDs for current page
-        list($begin, $end) = $this->_get_message_range(count($msg_index), $page);
-        $msg_index = array_slice($msg_index, $begin, $end-$begin);
+        // Sort thread structure
+        $this->sort_threads($threads);
 
-        if ($slice)
-            $msg_index = array_slice($msg_index, ($this->sort_order == 'DESC' ? 0 : -$slice), $slice);
+        $from = ($page-1) * $this->page_size;
+        $to   = $from + $this->page_size;
 
-        if ($this->sort_order == 'DESC')
-            $msg_index = array_reverse($msg_index);
+        $threads->slice($from, $to - $from);
 
-        // flatten threads array
-        // @TODO: fetch children only in expanded mode (?)
-        $all_ids = array();
-        foreach ($msg_index as $root) {
-            $all_ids[] = $root;
-            if (!empty($thread_tree[$root]))
-                $all_ids = array_merge($all_ids, array_keys_recursive($thread_tree[$root]));
+        if ($slice) {
+            $threads->slice(-$slice, $slice);
         }
 
-        // fetch reqested headers from server
-        $a_msg_headers = $this->fetch_headers($mailbox, $all_ids);
+        // Get UIDs of all messages in all threads
+        $a_index = $threads->get();
 
-        // return empty array if no messages found
-        if (!is_array($a_msg_headers) || empty($a_msg_headers))
-            return array();
+        // fetch reqested headers from server
+        $a_msg_headers = $this->fetch_headers($folder, $a_index);
 
-        // use this class for message sorting
-        $sorter = new rcube_header_sorter();
-        $sorter->set_index($all_ids);
-        $sorter->sort_headers($a_msg_headers);
+        unset($a_index);
 
         // Set depth, has_children and unread_children fields in headers
-        $this->_set_thread_flags($a_msg_headers, $msg_depth, $has_children);
+        $this->set_thread_flags($a_msg_headers, $threads);
 
         return array_values($a_msg_headers);
     }
 
 
     /**
-     * Private method for setting threaded messages flags:
+     * protected method for setting threaded messages flags:
      * depth, has_children and unread_children
      *
-     * @param  array  $headers      Reference to headers array indexed by message ID
-     * @param  array  $msg_depth    Array of messages depth indexed by message ID
-     * @param  array  $msg_children Array of messages children flags indexed by message ID
-     * @return array   Message headers array indexed by message ID
-     * @access private
+     * @param  array             $headers Reference to headers array indexed by message UID
+     * @param  rcube_imap_result $threads Threads data object
+     *
+     * @return array Message headers array indexed by message UID
      */
-    private function _set_thread_flags(&$headers, $msg_depth, $msg_children)
+    protected function set_thread_flags(&$headers, $threads)
     {
         $parents = array();
 
-        foreach ($headers as $idx => $header) {
-            $id = $header->id;
-            $depth = $msg_depth[$id];
+        list ($msg_depth, $msg_children) = $threads->get_thread_data();
+
+        foreach ($headers as $uid => $header) {
+            $depth = $msg_depth[$uid];
             $parents = array_slice($parents, 0, $depth);
 
             if (!empty($parents)) {
-                $headers[$idx]->parent_uid = end($parents);
+                $headers[$uid]->parent_uid = end($parents);
                 if (empty($header->flags['SEEN']))
                     $headers[$parents[0]]->unread_children++;
             }
-            array_push($parents, $header->uid);
+            array_push($parents, $uid);
 
-            $headers[$idx]->depth = $depth;
-            $headers[$idx]->has_children = $msg_children[$id];
+            $headers[$uid]->depth = $depth;
+            $headers[$uid]->has_children = $msg_children[$uid];
         }
     }
 
 
     /**
-     * Private method for listing a set of message headers (search results)
+     * protected method for listing a set of message headers (search results)
+     *
+     * @param   string   $folder   Folder name
+     * @param   int      $page     Current page to list
+     * @param   int      $slice    Number of slice items to extract from result array
      *
-     * @param   string   $mailbox    Mailbox/folder name
-     * @param   int      $page       Current page to list
-     * @param   string   $sort_field Header field to sort by
-     * @param   string   $sort_order Sort order [ASC|DESC]
-     * @param   int  $slice      Number of slice items to extract from result array
      * @return  array    Indexed array with message header objects
-     * @access  private
-     * @see     rcube_imap::list_header_set()
      */
-    private function _list_header_set($mailbox, $page=NULL, $sort_field=NULL, $sort_order=NULL, $slice=0)
+    protected function list_search_messages($folder, $page, $slice=0)
     {
-        if (!strlen($mailbox) || empty($this->search_set))
+        if (!strlen($folder) || empty($this->search_set) || $this->search_set->is_empty()) {
             return array();
+        }
 
         // use saved messages from searching
-        if ($this->threading)
-            return $this->_list_thread_header_set($mailbox, $page, $sort_field, $sort_order, $slice);
+        if ($this->threading) {
+            return $this->list_search_thread_messages($folder, $page, $slice);
+        }
 
         // search set is threaded, we need a new one
         if ($this->search_threads) {
-            if (empty($this->search_set['tree']))
-                return array();
-            $this->search('', $this->search_string, $this->search_charset, $sort_field);
+            $this->search('', $this->search_string, $this->search_charset, $this->sort_field);
         }
 
-        $msgs = $this->search_set;
-        $a_msg_headers = array();
-        $page = $page ? $page : $this->list_page;
-        $start_msg = ($page-1) * $this->page_size;
+        $index = clone $this->search_set;
+        $from  = ($page-1) * $this->page_size;
+        $to    = $from + $this->page_size;
 
-        $this->_set_sort_order($sort_field, $sort_order);
+        // return empty array if no messages found
+        if ($index->is_empty()) {
+            return array();
+        }
 
         // quickest method (default sorting)
         if (!$this->search_sort_field && !$this->sort_field) {
-            if ($sort_order == 'DESC')
-                $msgs = array_reverse($msgs);
-
-            // get messages uids for one page
-            $msgs = array_slice(array_values($msgs), $start_msg, min(count($msgs)-$start_msg, $this->page_size));
+            $got_index = true;
+        }
+        // sorted messages, so we can first slice array and then fetch only wanted headers
+        else if ($this->search_sorted) { // SORT searching result
+            $got_index = true;
+            // reset search set if sorting field has been changed
+            if ($this->sort_field && $this->search_sort_field != $this->sort_field) {
+                $this->search('', $this->search_string, $this->search_charset, $this->sort_field);
 
-            if ($slice)
-                $msgs = array_slice($msgs, -$slice, $slice);
+                $index = clone $this->search_set;
 
-            // fetch headers
-            $a_msg_headers = $this->fetch_headers($mailbox, $msgs);
-
-            // I didn't found in RFC that FETCH always returns messages sorted by index
-            $sorter = new rcube_header_sorter();
-            $sorter->set_index($msgs);
-            $sorter->sort_headers($a_msg_headers);
-
-            return array_values($a_msg_headers);
+                // return empty array if no messages found
+                if ($index->is_empty()) {
+                    return array();
+                }
+            }
         }
 
-        // sorted messages, so we can first slice array and then fetch only wanted headers
-        if ($this->search_sorted) { // SORT searching result
-            // reset search set if sorting field has been changed
-            if ($this->sort_field && $this->search_sort_field != $this->sort_field)
-                $msgs = $this->search('', $this->search_string, $this->search_charset, $this->sort_field);
-
-            // return empty array if no messages found
-            if (empty($msgs))
-                return array();
-
-            if ($sort_order == 'DESC')
-                $msgs = array_reverse($msgs);
+        if ($got_index) {
+            if ($this->sort_order != $index->get_parameters('ORDER')) {
+                $index->revert();
+            }
 
             // get messages uids for one page
-            $msgs = array_slice(array_values($msgs), $start_msg, min(count($msgs)-$start_msg, $this->page_size));
+            $index->slice($from, $to-$from);
 
-            if ($slice)
-                $msgs = array_slice($msgs, -$slice, $slice);
+            if ($slice) {
+                $index->slice(-$slice, $slice);
+            }
 
             // fetch headers
-            $a_msg_headers = $this->fetch_headers($mailbox, $msgs);
-
-            $sorter = new rcube_header_sorter();
-            $sorter->set_index($msgs);
-            $sorter->sort_headers($a_msg_headers);
+            $a_index       = $index->get();
+            $a_msg_headers = $this->fetch_headers($folder, $a_index);
 
             return array_values($a_msg_headers);
         }
-        else { // SEARCH result, need sorting
-            $cnt = count($msgs);
-            // 300: experimantal value for best result
-            if (($cnt > 300 && $cnt > $this->page_size) || !$this->sort_field) {
-                // use memory less expensive (and quick) method for big result set
-                $a_index = $this->message_index('', $this->sort_field, $this->sort_order);
-                // get messages uids for one page...
-                $msgs = array_slice($a_index, $start_msg, min($cnt-$start_msg, $this->page_size));
-                if ($slice)
-                    $msgs = array_slice($msgs, -$slice, $slice);
-                // ...and fetch headers
-                $a_msg_headers = $this->fetch_headers($mailbox, $msgs);
-
 
-                // return empty array if no messages found
-                if (!is_array($a_msg_headers) || empty($a_msg_headers))
-                    return array();
+        // SEARCH result, need sorting
+        $cnt = $index->count();
 
-                $sorter = new rcube_header_sorter();
-                $sorter->set_index($msgs);
-                $sorter->sort_headers($a_msg_headers);
+        // 300: experimantal value for best result
+        if (($cnt > 300 && $cnt > $this->page_size) || !$this->sort_field) {
+            // use memory less expensive (and quick) method for big result set
+            $index = clone $this->index('', $this->sort_field, $this->sort_order);
+            // get messages uids for one page...
+            $index->slice($start_msg, min($cnt-$from, $this->page_size));
 
-                return array_values($a_msg_headers);
+            if ($slice) {
+                $index->slice(-$slice, $slice);
             }
-            else {
-                // for small result set we can fetch all messages headers
-                $a_msg_headers = $this->fetch_headers($mailbox, $msgs);
 
-                // return empty array if no messages found
-                if (!is_array($a_msg_headers) || empty($a_msg_headers))
-                    return array();
+            // ...and fetch headers
+            $a_index       = $index->get();
+            $a_msg_headers = $this->fetch_headers($folder, $a_index);
+
+            return array_values($a_msg_headers);
+        }
+        else {
+            // for small result set we can fetch all messages headers
+            $a_index       = $index->get();
+            $a_msg_headers = $this->fetch_headers($folder, $a_index, false);
+
+            // return empty array if no messages found
+            if (!is_array($a_msg_headers) || empty($a_msg_headers)) {
+                return array();
+            }
 
-                // if not already sorted
-                $a_msg_headers = $this->conn->sortHeaders(
-                    $a_msg_headers, $this->sort_field, $this->sort_order);
+            if (!$this->check_connection()) {
+                return array();
+            }
 
-                // only return the requested part of the set
-                $a_msg_headers = array_slice(array_values($a_msg_headers),
-                    $start_msg, min($cnt-$start_msg, $this->page_size));
+            // if not already sorted
+            $a_msg_headers = $this->conn->sortHeaders(
+                $a_msg_headers, $this->sort_field, $this->sort_order);
 
-                if ($slice)
-                    $a_msg_headers = array_slice($a_msg_headers, -$slice, $slice);
+            // only return the requested part of the set
+            $slice_length  = min($this->page_size, $cnt - ($to > $cnt ? $from : $to));
+            $a_msg_headers = array_slice(array_values($a_msg_headers), $from, $slice_length);
 
-                return $a_msg_headers;
+            if ($slice) {
+                $a_msg_headers = array_slice($a_msg_headers, -$slice, $slice);
             }
+
+            return $a_msg_headers;
         }
     }
 
 
     /**
-     * Private method for listing a set of threaded message headers (search results)
+     * protected method for listing a set of threaded message headers (search results)
      *
-     * @param   string   $mailbox    Mailbox/folder name
+     * @param   string   $folder     Folder name
      * @param   int      $page       Current page to list
-     * @param   string   $sort_field Header field to sort by
-     * @param   string   $sort_order Sort order [ASC|DESC]
      * @param   int      $slice      Number of slice items to extract from result array
+     *
      * @return  array    Indexed array with message header objects
-     * @access  private
-     * @see     rcube_imap::list_header_set()
+     * @see rcube_imap::list_search_messages()
      */
-    private function _list_thread_header_set($mailbox, $page=NULL, $sort_field=NULL, $sort_order=NULL, $slice=0)
+    protected function list_search_thread_messages($folder, $page, $slice=0)
     {
         // update search_set if previous data was fetched with disabled threading
         if (!$this->search_threads) {
-            if (empty($this->search_set))
+            if ($this->search_set->is_empty()) {
                 return array();
-            $this->search('', $this->search_string, $this->search_charset, $sort_field);
-        }
-
-        // empty result
-        if (empty($this->search_set['tree']))
-            return array();
-
-        $thread_tree = $this->search_set['tree'];
-        $msg_depth = $this->search_set['depth'];
-        $has_children = $this->search_set['children'];
-        $a_msg_headers = array();
-
-        $page = $page ? $page : $this->list_page;
-        $start_msg = ($page-1) * $this->page_size;
-
-        $this->_set_sort_order($sort_field, $sort_order);
-
-        $msg_index = $this->sort_threads($mailbox, $thread_tree, array_keys($msg_depth));
-
-        return $this->_fetch_thread_headers($mailbox,
-            $thread_tree, $msg_depth, $has_children, $msg_index, $page, $slice=0);
-    }
-
-
-    /**
-     * Helper function to get first and last index of the requested set
-     *
-     * @param  int     $max  Messages count
-     * @param  mixed   $page Page number to show, or string 'all'
-     * @return array   Array with two values: first index, last index
-     * @access private
-     */
-    private function _get_message_range($max, $page)
-    {
-        $start_msg = ($page-1) * $this->page_size;
-
-        if ($page=='all') {
-            $begin  = 0;
-            $end    = $max;
-        }
-        else if ($this->sort_order=='DESC') {
-            $begin  = $max - $this->page_size - $start_msg;
-            $end    = $max - $start_msg;
-        }
-        else {
-            $begin  = $start_msg;
-            $end    = $start_msg + $this->page_size;
+            }
+            $this->search('', $this->search_string, $this->search_charset, $this->sort_field);
         }
 
-        if ($begin < 0) $begin = 0;
-        if ($end < 0) $end = $max;
-        if ($end > $max) $end = $max;
-
-        return array($begin, $end);
+        return $this->fetch_thread_headers($folder, clone $this->search_set, $page, $slice);
     }
 
 
     /**
-     * Fetches messages headers
+     * Fetches messages headers (by UID)
      *
-     * @param  string  $mailbox  Mailbox name
-     * @param  array   $msgs     Messages sequence numbers
-     * @param  bool    $is_uid   Enable if $msgs numbers are UIDs
+     * @param  string  $folder   Folder name
+     * @param  array   $msgs     Message UIDs
+     * @param  bool    $sort     Enables result sorting by $msgs
      * @param  bool    $force    Disables cache use
      *
      * @return array Messages headers indexed by UID
-     * @access private
      */
-    function fetch_headers($mailbox, $msgs, $is_uid = false, $force = false)
+    function fetch_headers($folder, $msgs, $sort = true, $force = false)
     {
-        if (empty($msgs))
+        if (empty($msgs)) {
             return array();
+        }
 
         if (!$force && ($mcache = $this->get_mcache_engine())) {
-            return $mcache->get_messages($mailbox, $msgs, $is_uid);
+            $headers = $mcache->get_messages($folder, $msgs);
+        }
+        else if (!$this->check_connection()) {
+            return array();
+        }
+        else {
+            // fetch reqested headers from server
+            $headers = $this->conn->fetchHeaders(
+                $folder, $msgs, true, false, $this->get_fetch_headers());
         }
 
-        // fetch reqested headers from server
-        $index = $this->conn->fetchHeaders(
-            $mailbox, $msgs, $is_uid, false, $this->get_fetch_headers());
-
-        if (empty($index))
+        if (empty($headers)) {
             return array();
+        }
+
+        foreach ($headers as $h) {
+            $a_msg_headers[$h->uid] = $h;
+        }
 
-        foreach ($index as $headers) {
-            $a_msg_headers[$headers->uid] = $headers;
+        if ($sort) {
+            // use this class for message sorting
+            $sorter = new rcube_header_sorter();
+            $sorter->set_index($msgs);
+            $sorter->sort_headers($a_msg_headers);
         }
 
         return $a_msg_headers;
@@ -1354,23 +1099,24 @@ class rcube_imap
 
 
     /**
-     * Returns current status of mailbox
+     * Returns current status of folder
      *
      * We compare the maximum UID to determine the number of
      * new messages because the RECENT flag is not reliable.
      *
-     * @param string $mailbox Mailbox/folder name
+     * @param string $folder Folder name
+     *
      * @return int   Folder status
      */
-    function mailbox_status($mailbox = null)
+    public function folder_status($folder = null)
     {
-        if (!strlen($mailbox)) {
-            $mailbox = $this->mailbox;
+        if (!strlen($folder)) {
+            $folder = $this->folder;
         }
-        $old = $this->get_folder_stats($mailbox);
+        $old = $this->get_folder_stats($folder);
 
         // refresh message count -> will update
-        $this->_messagecount($mailbox, 'ALL', true);
+        $this->messagecount($folder, 'ALL', true);
 
         $result = 0;
 
@@ -1378,14 +1124,16 @@ class rcube_imap
             return $result;
         }
 
-        $new = $this->get_folder_stats($mailbox);
+        $new = $this->get_folder_stats($folder);
 
         // got new messages
-        if ($new['maxuid'] > $old['maxuid'])
+        if ($new['maxuid'] > $old['maxuid']) {
             $result += 1;
+        }
         // some messages has been deleted
-        if ($new['cnt'] < $old['cnt'])
+        if ($new['cnt'] < $old['cnt']) {
             $result += 2;
+        }
 
         // @TODO: optional checking for messages flags changes (?)
         // @TODO: UIDVALIDITY checking
@@ -1398,363 +1146,339 @@ class rcube_imap
      * Stores folder statistic data in session
      * @TODO: move to separate DB table (cache?)
      *
-     * @param string $mailbox Mailbox name
+     * @param string $folder  Folder name
      * @param string $name    Data name
      * @param mixed  $data    Data value
      */
-    private function set_folder_stats($mailbox, $name, $data)
+    protected function set_folder_stats($folder, $name, $data)
     {
-        $_SESSION['folders'][$mailbox][$name] = $data;
+        $_SESSION['folders'][$folder][$name] = $data;
     }
 
 
     /**
      * Gets folder statistic data
      *
-     * @param string $mailbox Mailbox name
+     * @param string $folder Folder name
      *
      * @return array Stats data
      */
-    private function get_folder_stats($mailbox)
+    protected function get_folder_stats($folder)
     {
-        if ($_SESSION['folders'][$mailbox])
-            return (array) $_SESSION['folders'][$mailbox];
-        else
-            return array();
+        if ($_SESSION['folders'][$folder]) {
+            return (array) $_SESSION['folders'][$folder];
+        }
+
+        return array();
     }
 
 
     /**
-     * Return sorted array of message IDs (not UIDs)
+     * Return sorted list of message UIDs
      *
-     * @param string $mailbox    Mailbox to get index from
+     * @param string $folder     Folder to get index from
      * @param string $sort_field Sort column
      * @param string $sort_order Sort order [ASC, DESC]
-     * @return array Indexed array with message IDs
+     *
+     * @return rcube_result_index|rcube_result_thread List of messages (UIDs)
      */
-    function message_index($mailbox='', $sort_field=NULL, $sort_order=NULL)
+    public function index($folder = '', $sort_field = NULL, $sort_order = NULL)
     {
-        if ($this->threading)
-            return $this->thread_index($mailbox, $sort_field, $sort_order);
+        if ($this->threading) {
+            return $this->thread_index($folder, $sort_field, $sort_order);
+        }
 
-        $this->_set_sort_order($sort_field, $sort_order);
+        $this->set_sort_order($sort_field, $sort_order);
 
-        if (!strlen($mailbox)) {
-            $mailbox = $this->mailbox;
+        if (!strlen($folder)) {
+            $folder = $this->folder;
         }
-        $key = "{$mailbox}:{$this->sort_field}:{$this->sort_order}:{$this->search_string}.msgi";
 
         // we have a saved search result, get index from there
-        if (!isset($this->icache[$key]) && $this->search_string
-            && !$this->search_threads && $mailbox == $this->mailbox) {
-            // use message index sort as default sorting
-            if (!$this->sort_field) {
-                $msgs = $this->search_set;
-
-                if ($this->search_sort_field != 'date')
-                    sort($msgs);
+        if ($this->search_string) {
+            if ($this->search_threads) {
+                $this->search($folder, $this->search_string, $this->search_charset, $this->sort_field);
+            }
 
-                if ($this->sort_order == 'DESC')
-                    $this->icache[$key] = array_reverse($msgs);
-                else
-                    $this->icache[$key] = $msgs;
+            // use message index sort as default sorting
+            if (!$this->sort_field || $this->search_sorted) {
+                if ($this->sort_field && $this->search_sort_field != $this->sort_field) {
+                    $this->search($folder, $this->search_string, $this->search_charset, $this->sort_field);
+                }
+                $index = $this->search_set;
             }
-            // sort with SORT command
-            else if ($this->search_sorted) {
-                if ($this->sort_field && $this->search_sort_field != $this->sort_field)
-                    $this->search('', $this->search_string, $this->search_charset, $this->sort_field);
-
-                if ($this->sort_order == 'DESC')
-                    $this->icache[$key] = array_reverse($this->search_set);
-                else
-                    $this->icache[$key] = $this->search_set;
+            else if (!$this->check_connection()) {
+                return new rcube_result_index();
             }
             else {
-                $a_index = $this->conn->fetchHeaderIndex($mailbox,
-                    join(',', $this->search_set), $this->sort_field, $this->skip_deleted);
-
-                if (is_array($a_index)) {
-                    if ($this->sort_order=="ASC")
-                        asort($a_index);
-                    else if ($this->sort_order=="DESC")
-                        arsort($a_index);
+                $index = $this->conn->index($folder, $this->search_set->get(),
+                    $this->sort_field, $this->options['skip_deleted'], true, true);
+            }
 
-                    $this->icache[$key] = array_keys($a_index);
-                }
-                else {
-                    $this->icache[$key] = array();
-                }
+            if ($this->sort_order != $index->get_parameters('ORDER')) {
+                $index->revert();
             }
-        }
 
-        // have stored it in RAM
-        if (isset($this->icache[$key]))
-            return $this->icache[$key];
+            return $index;
+        }
 
         // check local cache
         if ($mcache = $this->get_mcache_engine()) {
-            $a_index = $mcache->get_index($mailbox, $this->sort_field, $this->sort_order);
-            $this->icache[$key] = array_keys($a_index);
+            $index = $mcache->get_index($folder, $this->sort_field, $this->sort_order);
         }
         // fetch from IMAP server
         else {
-            $this->icache[$key] = $this->message_index_direct(
-                $mailbox, $this->sort_field, $this->sort_order);
+            $index = $this->index_direct(
+                $folder, $this->sort_field, $this->sort_order);
         }
 
-        return $this->icache[$key];
+        return $index;
     }
 
 
     /**
-     * Return sorted array of message IDs (not UIDs) directly from IMAP server.
-     * Doesn't use cache and ignores current search settings.
+     * Return sorted list of message UIDs ignoring current search settings.
+     * Doesn't uses cache by default.
      *
-     * @param string $mailbox    Mailbox to get index from
+     * @param string $folder     Folder to get index from
      * @param string $sort_field Sort column
      * @param string $sort_order Sort order [ASC, DESC]
+     * @param bool   $skip_cache Disables cache usage
      *
-     * @return array Indexed array with message IDs
+     * @return rcube_result_index Sorted list of message UIDs
      */
-    function message_index_direct($mailbox, $sort_field = null, $sort_order = null)
+    public function index_direct($folder, $sort_field = null, $sort_order = null, $skip_cache = true)
     {
+        if (!$skip_cache && ($mcache = $this->get_mcache_engine())) {
+            $index = $mcache->get_index($folder, $sort_field, $sort_order);
+        }
         // use message index sort as default sorting
-        if (!$sort_field) {
-            if ($this->skip_deleted) {
-                $a_index = $this->conn->search($mailbox, 'ALL UNDELETED');
-                // I didn't found that SEARCH should return sorted IDs
-                if (is_array($a_index))
-                    sort($a_index);
-            } else if ($max = $this->_messagecount($mailbox, 'ALL', true, false)) {
-                $a_index = range(1, $max);
+        else if (!$sort_field) {
+            // use search result from count() if possible
+            if ($this->options['skip_deleted'] && !empty($this->icache['undeleted_idx'])
+                && $this->icache['undeleted_idx']->get_parameters('ALL') !== null
+                && $this->icache['undeleted_idx']->get_parameters('MAILBOX') == $folder
+            ) {
+                $index = $this->icache['undeleted_idx'];
+            }
+            else if (!$this->check_connection()) {
+                return new rcube_result_index();
+            }
+            else {
+                $index = $this->conn->search($folder,
+                    'ALL' .($this->options['skip_deleted'] ? ' UNDELETED' : ''), true);
             }
-
-            if ($a_index !== false && $sort_order == 'DESC')
-                $a_index = array_reverse($a_index);
+        }
+        else if (!$this->check_connection()) {
+            return new rcube_result_index();
         }
         // fetch complete message index
-        else if ($this->get_capability('SORT') &&
-            ($a_index = $this->conn->sort($mailbox,
-                $sort_field, $this->skip_deleted ? 'UNDELETED' : '')) !== false
-        ) {
-            if ($sort_order == 'DESC')
-                $a_index = array_reverse($a_index);
+        else {
+            if ($this->get_capability('SORT')) {
+                $index = $this->conn->sort($folder, $sort_field,
+                    $this->options['skip_deleted'] ? 'UNDELETED' : '', true);
+            }
+
+            if (empty($index) || $index->is_error()) {
+                $index = $this->conn->index($folder, "1:*", $sort_field,
+                    $this->options['skip_deleted'], false, true);
+            }
         }
-        else if ($a_index = $this->conn->fetchHeaderIndex(
-            $mailbox, "1:*", $sort_field, $skip_deleted)) {
-            if ($sort_order=="ASC")
-                asort($a_index);
-            else if ($sort_order=="DESC")
-                arsort($a_index);
 
-            $a_index = array_keys($a_index);
+        if ($sort_order != $index->get_parameters('ORDER')) {
+            $index->revert();
         }
 
-        return $a_index !== false ? $a_index : array();
+        return $index;
     }
 
 
     /**
-     * Return sorted array of threaded message IDs (not UIDs)
+     * Return index of threaded message UIDs
      *
-     * @param string $mailbox    Mailbox to get index from
+     * @param string $folder     Folder to get index from
      * @param string $sort_field Sort column
      * @param string $sort_order Sort order [ASC, DESC]
-     * @return array Indexed array with message IDs
+     *
+     * @return rcube_result_thread Message UIDs
      */
-    function thread_index($mailbox='', $sort_field=NULL, $sort_order=NULL)
+    public function thread_index($folder='', $sort_field=NULL, $sort_order=NULL)
     {
-        $this->_set_sort_order($sort_field, $sort_order);
-
-        if (!strlen($mailbox)) {
-            $mailbox = $this->mailbox;
+        if (!strlen($folder)) {
+            $folder = $this->folder;
         }
-        $key = "{$mailbox}:{$this->sort_field}:{$this->sort_order}:{$this->search_string}.thi";
 
         // we have a saved search result, get index from there
-        if (!isset($this->icache[$key]) && $this->search_string
-            && $this->search_threads && $mailbox == $this->mailbox) {
-            // use message IDs for better performance
-            $ids = array_keys_recursive($this->search_set['tree']);
-            $this->icache[$key] = $this->_flatten_threads($mailbox, $this->search_set['tree'], $ids);
+        if ($this->search_string && $this->search_threads && $folder == $this->folder) {
+            $threads = $this->search_set;
+        }
+        else {
+            // get all threads (default sort order)
+            $threads = $this->fetch_threads($folder);
         }
 
-        // have stored it in RAM
-        if (isset($this->icache[$key]))
-            return $this->icache[$key];
-
-        // get all threads (default sort order)
-        list ($thread_tree) = $this->fetch_threads($mailbox);
-
-        $this->icache[$key] = $this->_flatten_threads($mailbox, $thread_tree);
+        $this->set_sort_order($sort_field, $sort_order);
+        $this->sort_threads($threads);
 
-        return $this->icache[$key];
+        return $threads;
     }
 
 
     /**
-     * Return array of threaded messages (all, not only roots)
+     * Sort threaded result, using THREAD=REFS method
      *
-     * @param string $mailbox     Mailbox to get index from
-     * @param array  $thread_tree Threaded messages array (see fetch_threads())
-     * @param array  $ids         Message IDs if we know what we need (e.g. search result)
-     *                            for better performance
-     * @return array Indexed array with message IDs
-     *
-     * @access private
+     * @param rcube_result_thread $threads  Threads result set
      */
-    private function _flatten_threads($mailbox, $thread_tree, $ids=null)
+    protected function sort_threads($threads)
     {
-        if (empty($thread_tree))
-            return array();
+        if ($threads->is_empty()) {
+            return;
+        }
 
-        $msg_index = $this->sort_threads($mailbox, $thread_tree, $ids);
+        // THREAD=ORDEREDSUBJECT: sorting by sent date of root message
+        // THREAD=REFERENCES:     sorting by sent date of root message
+        // THREAD=REFS:           sorting by the most recent date in each thread
 
-        if ($this->sort_order == 'DESC')
-            $msg_index = array_reverse($msg_index);
+        if ($this->sort_field && ($this->sort_field != 'date' || $this->get_capability('THREAD') != 'REFS')) {
+            $index = $this->index_direct($this->folder, $this->sort_field, $this->sort_order, false);
 
-        // flatten threads array
-        $all_ids = array();
-        foreach ($msg_index as $root) {
-            $all_ids[] = $root;
-            if (!empty($thread_tree[$root])) {
-                foreach (array_keys_recursive($thread_tree[$root]) as $val)
-                    $all_ids[] = $val;
+            if (!$index->is_empty()) {
+                $threads->sort($index);
+            }
+        }
+        else {
+            if ($this->sort_order != $threads->get_parameters('ORDER')) {
+                $threads->revert();
             }
         }
-
-        return $all_ids;
     }
 
 
     /**
      * Invoke search request to IMAP server
      *
-     * @param  string  $mailbox    Mailbox name to search in
+     * @param  string  $folder     Folder name to search in
      * @param  string  $str        Search criteria
      * @param  string  $charset    Search charset
      * @param  string  $sort_field Header field to sort by
-     * @return array   search results as list of message IDs
-     * @access public
+     *
      * @todo: Search criteria should be provided in non-IMAP format, eg. array
      */
-    function search($mailbox='', $str=NULL, $charset=NULL, $sort_field=NULL)
+    public function search($folder='', $str='ALL', $charset=NULL, $sort_field=NULL)
     {
-        if (!$str)
-            return false;
+        if (!$str) {
+            $str = 'ALL';
+        }
+
+        if (!strlen($folder)) {
+            $folder = $this->folder;
+        }
+
+        $results = $this->search_index($folder, $str, $charset, $sort_field);
+
+        $this->set_search_set(array($str, $results, $charset, $sort_field,
+            $this->threading || $this->search_sorted ? true : false));
+    }
+
+
+    /**
+     * Direct (real and simple) SEARCH request (without result sorting and caching).
+     *
+     * @param  string  $mailbox Mailbox name to search in
+     * @param  string  $str     Search string
+     *
+     * @return rcube_result_index  Search result (UIDs)
+     */
+    public function search_once($folder = null, $str = 'ALL')
+    {
+        if (!$str) {
+            return 'ALL';
+        }
 
-        if (!strlen($mailbox)) {
-            $mailbox = $this->mailbox;
+        if (!strlen($folder)) {
+            $folder = $this->folder;
         }
 
-        $results = $this->_search_index($mailbox, $str, $charset, $sort_field);
+        if (!$this->check_connection()) {
+            return new rcube_result_index();
+        }
 
-        $this->set_search_set($str, $results, $charset, $sort_field, (bool)$this->threading,
-            $this->threading || $this->search_sorted ? true : false);
+        $index = $this->conn->search($folder, $str, true);
 
-        return $results;
+        return $index;
     }
 
 
     /**
-     * Private search method
+     * protected search method
      *
-     * @param string $mailbox    Mailbox name
+     * @param string $folder     Folder name
      * @param string $criteria   Search criteria
      * @param string $charset    Charset
      * @param string $sort_field Sorting field
      *
-     * @return array   search results as list of message ids
+     * @return rcube_result_index|rcube_result_thread  Search results (UIDs)
      * @see rcube_imap::search()
      */
-    private function _search_index($mailbox, $criteria='ALL', $charset=NULL, $sort_field=NULL)
+    protected function search_index($folder, $criteria='ALL', $charset=NULL, $sort_field=NULL)
     {
         $orig_criteria = $criteria;
 
-        if ($this->skip_deleted && !preg_match('/UNDELETED/', $criteria))
+        if (!$this->check_connection()) {
+            if ($this->threading) {
+                return new rcube_result_thread();
+            }
+            else {
+                return new rcube_result_index();
+            }
+        }
+
+        if ($this->options['skip_deleted'] && !preg_match('/UNDELETED/', $criteria)) {
             $criteria = 'UNDELETED '.$criteria;
+        }
 
         if ($this->threading) {
-            $a_messages = $this->conn->thread($mailbox, $this->threading, $criteria, $charset);
+            $threads = $this->conn->thread($folder, $this->threading, $criteria, true, $charset);
 
             // Error, try with US-ASCII (RFC5256: SORT/THREAD must support US-ASCII and UTF-8,
             // but I've seen that Courier doesn't support UTF-8)
-            if ($a_messages === false && $charset && $charset != 'US-ASCII')
-                $a_messages = $this->conn->thread($mailbox, $this->threading,
-                    $this->convert_criteria($criteria, $charset), 'US-ASCII');
-
-            if ($a_messages !== false) {
-                list ($thread_tree, $msg_depth, $has_children) = $a_messages;
-                $a_messages = array(
-                    'tree' => $thread_tree,
-                    'depth'=> $msg_depth,
-                    'children' => $has_children
-                );
+            if ($threads->is_error() && $charset && $charset != 'US-ASCII') {
+                $threads = $this->conn->thread($folder, $this->threading,
+                    $this->convert_criteria($criteria, $charset), true, 'US-ASCII');
             }
 
-            return $a_messages;
+            return $threads;
         }
 
         if ($sort_field && $this->get_capability('SORT')) {
-            $charset = $charset ? $charset : $this->default_charset;
-            $a_messages = $this->conn->sort($mailbox, $sort_field, $criteria, false, $charset);
+            $charset  = $charset ? $charset : $this->default_charset;
+            $messages = $this->conn->sort($folder, $sort_field, $criteria, true, $charset);
 
             // Error, try with US-ASCII (RFC5256: SORT/THREAD must support US-ASCII and UTF-8,
             // but I've seen Courier with disabled UTF-8 support)
-            if ($a_messages === false && $charset && $charset != 'US-ASCII')
-                $a_messages = $this->conn->sort($mailbox, $sort_field,
-                    $this->convert_criteria($criteria, $charset), false, 'US-ASCII');
+            if ($messages->is_error() && $charset && $charset != 'US-ASCII') {
+                $messages = $this->conn->sort($folder, $sort_field,
+                    $this->convert_criteria($criteria, $charset), true, 'US-ASCII');
+            }
 
-            if ($a_messages !== false) {
+            if (!$messages->is_error()) {
                 $this->search_sorted = true;
-                return $a_messages;
+                return $messages;
             }
         }
 
-        if ($orig_criteria == 'ALL') {
-            $max = $this->_messagecount($mailbox, 'ALL', true, false);
-            $a_messages = $max ? range(1, $max) : array();
-        }
-        else {
-            $a_messages = $this->conn->search($mailbox,
-                ($charset ? "CHARSET $charset " : '') . $criteria);
+        $messages = $this->conn->search($folder,
+            ($charset ? "CHARSET $charset " : '') . $criteria, true);
 
-            // Error, try with US-ASCII (some servers may support only US-ASCII)
-            if ($a_messages === false && $charset && $charset != 'US-ASCII')
-                $a_messages = $this->conn->search($mailbox,
-                    $this->convert_criteria($criteria, $charset));
-
-            // I didn't found that SEARCH should return sorted IDs
-            if (is_array($a_messages) && !$this->sort_field)
-                sort($a_messages);
+        // Error, try with US-ASCII (some servers may support only US-ASCII)
+        if ($messages->is_error() && $charset && $charset != 'US-ASCII') {
+            $messages = $this->conn->search($folder,
+                $this->convert_criteria($criteria, $charset), true);
         }
 
         $this->search_sorted = false;
 
-        return $a_messages;
-    }
-
-
-    /**
-     * Direct (real and simple) SEARCH request to IMAP server,
-     * without result sorting and caching
-     *
-     * @param  string  $mailbox Mailbox name to search in
-     * @param  string  $str     Search string
-     * @param  boolean $ret_uid True if UIDs should be returned
-     *
-     * @return array   Search results as list of message IDs or UIDs
-     */
-    function search_once($mailbox='', $str=NULL, $ret_uid=false)
-    {
-        if (!$str)
-            return false;
-
-        if (!strlen($mailbox)) {
-            $mailbox = $this->mailbox;
-        }
-
-        return $this->conn->search($mailbox, $str, $ret_uid);
+        return $messages;
     }
 
 
@@ -1764,10 +1488,10 @@ class rcube_imap
      * @param  string  $str          Search string
      * @param  string  $charset      Original charset
      * @param  string  $dest_charset Destination charset (default US-ASCII)
+     *
      * @return string  Search string
-     * @access private
      */
-    private function convert_criteria($str, $charset, $dest_charset='US-ASCII')
+    protected function convert_criteria($str, $charset, $dest_charset='US-ASCII')
     {
         // convert strings to US_ASCII
         if (preg_match_all('/\{([0-9]+)\}\r\n/', $str, $matches, PREG_OFFSET_CAPTURE)) {
@@ -1776,121 +1500,22 @@ class rcube_imap
                 $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) {
                     continue;
+                }
                 $res .= substr($str, $last, $m[1] - $last - 1) . rcube_imap_generic::escape($string);
                 $last = $m[0] + $string_offset - 1;
             }
-            if ($last < strlen($str))
+            if ($last < strlen($str)) {
                 $res .= substr($str, $last, strlen($str)-$last);
-        }
-        else // strings for conversion not found
-            $res = $str;
-
-        return $res;
-    }
-
-
-    /**
-     * Sort thread
-     *
-     * @param string $mailbox     Mailbox name
-     * @param  array $thread_tree Unsorted thread tree (rcube_imap_generic::thread() result)
-     * @param  array $ids         Message IDs if we know what we need (e.g. search result)
-     *
-     * @return array Sorted roots IDs
-     */
-    function sort_threads($mailbox, $thread_tree, $ids = null)
-    {
-        // THREAD=ORDEREDSUBJECT: sorting by sent date of root message
-        // THREAD=REFERENCES:     sorting by sent date of root message
-        // THREAD=REFS:           sorting by the most recent date in each thread
-
-        // default sorting
-        if (!$this->sort_field || ($this->sort_field == 'date' && $this->threading == 'REFS')) {
-            return array_keys((array)$thread_tree);
-        }
-        // here we'll implement REFS sorting
-        else {
-            if ($mcache = $this->get_mcache_engine()) {
-                $a_index = $mcache->get_index($mailbox, $this->sort_field, 'ASC');
-                if (is_array($a_index)) {
-                    $a_index = array_keys($a_index);
-                    // now we must remove IDs that doesn't exist in $ids
-                    if (!empty($ids))
-                        $a_index = array_intersect($a_index, $ids);
-                }
-            }
-            // use SORT command
-            else if ($this->get_capability('SORT') &&
-                ($a_index = $this->conn->sort($mailbox, $this->sort_field,
-                    !empty($ids) ? $ids : ($this->skip_deleted ? 'UNDELETED' : ''))) !== false
-            ) {
-                // do nothing
-            }
-            else {
-                // fetch specified headers for all messages and sort them
-                $a_index = $this->conn->fetchHeaderIndex($mailbox, !empty($ids) ? $ids : "1:*",
-                    $this->sort_field, $this->skip_deleted);
-
-                // return unsorted tree if we've got no index data
-                if (!empty($a_index)) {
-                    asort($a_index); // ASC
-                    $a_index = array_values($a_index);
-                }
-            }
-
-            if (empty($a_index))
-                return array_keys((array)$thread_tree);
-
-            return $this->_sort_thread_refs($thread_tree, $a_index);
-        }
-    }
-
-
-    /**
-     * THREAD=REFS sorting implementation
-     *
-     * @param  array $tree   Thread tree array (message identifiers as keys)
-     * @param  array $index  Array of sorted message identifiers
-     *
-     * @return array   Array of sorted roots messages
-     */
-    private function _sort_thread_refs($tree, $index)
-    {
-        if (empty($tree))
-            return array();
-
-        $index = array_combine(array_values($index), $index);
-
-        // assign roots
-        foreach ($tree as $idx => $val) {
-            $index[$idx] = $idx;
-            if (!empty($val)) {
-                $idx_arr = array_keys_recursive($tree[$idx]);
-                foreach ($idx_arr as $subidx)
-                    $index[$subidx] = $idx;
             }
         }
-
-        $index = array_values($index);
-
-        // create sorted array of roots
-        $msg_index = array();
-        if ($this->sort_order != 'DESC') {
-            foreach ($index as $idx)
-                if (!isset($msg_index[$idx]))
-                    $msg_index[$idx] = $idx;
-            $msg_index = array_values($msg_index);
-        }
+        // strings for conversion not found
         else {
-            for ($x=count($index)-1; $x>=0; $x--)
-                if (!isset($msg_index[$index[$x]]))
-                    $msg_index[$index[$x]] = $index[$x];
-            $msg_index = array_reverse($msg_index);
+            $res = $str;
         }
 
-        return $msg_index;
+        return $res;
     }
 
 
@@ -1899,57 +1524,41 @@ class rcube_imap
      *
      * @return array Current search set
      */
-    function refresh_search()
-    {
-        if (!empty($this->search_string))
-            $this->search_set = $this->search('', $this->search_string, $this->search_charset,
-                $this->search_sort_field, $this->search_threads, $this->search_sorted);
-
-        return $this->get_search_set();
-    }
-
-
-    /**
-     * Check if the given message ID is part of the current search set
-     *
-     * @param string $msgid Message id
-     * @return boolean True on match or if no search request is stored
-     */
-    function in_searchset($msgid)
+    public function refresh_search()
     {
         if (!empty($this->search_string)) {
-            if ($this->search_threads)
-                return isset($this->search_set['depth']["$msgid"]);
-            else
-                return in_array("$msgid", (array)$this->search_set, true);
+            $this->search('', $this->search_string, $this->search_charset, $this->search_sort_field);
         }
-        else
-            return true;
+
+        return $this->get_search_set();
     }
 
 
     /**
      * Return message headers object of a specific message
      *
-     * @param int     $id       Message sequence ID or UID
-     * @param string  $mailbox  Mailbox to read from
+     * @param int     $id       Message UID
+     * @param string  $folder   Folder to read from
      * @param bool    $force    True to skip cache
      *
      * @return rcube_mail_header Message headers
      */
-    function get_headers($uid, $mailbox = null, $force = false)
+    public function get_message_headers($uid, $folder = null, $force = false)
     {
-        if (!strlen($mailbox)) {
-            $mailbox = $this->mailbox;
+        if (!strlen($folder)) {
+            $folder = $this->folder;
         }
 
         // get cached headers
         if (!$force && $uid && ($mcache = $this->get_mcache_engine())) {
-            $headers = $mcache->get_message($mailbox, $uid);
+            $headers = $mcache->get_message($folder, $uid);
+        }
+        else if (!$this->check_connection()) {
+            $headers = false;
         }
         else {
             $headers = $this->conn->fetchHeader(
-                $mailbox, $uid, true, true, $this->get_fetch_headers());
+                $folder, $uid, true, true, $this->get_fetch_headers());
         }
 
         return $headers;
@@ -1961,14 +1570,14 @@ class rcube_imap
      * an object structure similar to the one generated by PEAR::Mail_mimeDecode
      *
      * @param int     $uid      Message UID to fetch
-     * @param string  $mailbox  Mailbox to read from
+     * @param string  $folder   Folder to read from
      *
      * @return object rcube_mail_header Message data
      */
-    function get_message($uid, $mailbox = null)
+    public function get_message($uid, $folder = null)
     {
-        if (!strlen($mailbox)) {
-            $mailbox = $this->mailbox;
+        if (!strlen($folder)) {
+            $folder = $this->folder;
         }
 
         // Check internal cache
@@ -1978,32 +1587,41 @@ class rcube_imap
             }
         }
 
-        $headers = $this->get_headers($uid, $mailbox);
+        $headers = $this->get_message_headers($uid, $folder);
 
         // message doesn't exist?
-        if (empty($headers))
-            return null; 
+        if (empty($headers)) {
+            return null;
+        }
 
         // structure might be cached
-        if (!empty($headers->structure))
+        if (!empty($headers->structure)) {
             return $headers;
+        }
 
-        $this->_msg_uid = $uid;
+        $this->msg_uid = $uid;
+
+        if (!$this->check_connection()) {
+            return $headers;
+        }
 
         if (empty($headers->bodystructure)) {
-            $headers->bodystructure = $this->conn->getStructure($mailbox, $uid, true);
+            $headers->bodystructure = $this->conn->getStructure($folder, $uid, true);
         }
 
         $structure = $headers->bodystructure;
 
-        if (empty($structure))
+        if (empty($structure)) {
             return $headers;
+        }
 
         // set message charset from message headers
-        if ($headers->charset)
+        if ($headers->charset) {
             $this->struct_charset = $headers->charset;
-        else
-            $this->struct_charset = $this->_structure_charset($structure);
+        }
+        else {
+            $this->struct_charset = $this->structure_charset($structure);
+        }
 
         $headers->ctype = strtolower($headers->ctype);
 
@@ -2019,11 +1637,12 @@ class rcube_imap
                 $structure[0] = $m[1];
                 $structure[1] = $m[2];
             }
-            else
+            else {
                 return $headers;
+            }
         }
 
-        $struct = &$this->_structure_part($structure, 0, '', $headers);
+        $struct = $this->structure_part($structure, 0, '', $headers);
 
         // don't trust given content-type
         if (empty($struct->parts) && !empty($headers->ctype)) {
@@ -2044,9 +1663,8 @@ class rcube_imap
      * @param array  $part
      * @param int    $count
      * @param string $parent
-     * @access private
      */
-    function &_structure_part($part, $count=0, $parent='', $mime_headers=null)
+    protected function structure_part($part, $count=0, $parent='', $mime_headers=null)
     {
         $struct = new rcube_message_part;
         $struct->mime_id = empty($parent) ? (string)$count : "$parent.$count";
@@ -2079,8 +1697,9 @@ class rcube_imap
 
             // build parts list for headers pre-fetching
             for ($i=0; $i<count($part); $i++) {
-                if (!is_array($part[$i]))
+                if (!is_array($part[$i])) {
                     break;
+                }
                 // fetch message headers if message/rfc822
                 // or named part (could contain Content-Location header)
                 if (!is_array($part[$i][0])) {
@@ -2098,16 +1717,17 @@ class rcube_imap
             // @TODO: we could do this before _structure_part() call, to fetch
             // headers for parts on all levels
             if ($mime_part_headers) {
-                $mime_part_headers = $this->conn->fetchMIMEHeaders($this->mailbox,
-                    $this->_msg_uid, $mime_part_headers);
+                $mime_part_headers = $this->conn->fetchMIMEHeaders($this->folder,
+                    $this->msg_uid, $mime_part_headers);
             }
 
             $struct->parts = array();
             for ($i=0, $count=0; $i<count($part); $i++) {
-                if (!is_array($part[$i]))
+                if (!is_array($part[$i])) {
                     break;
+                }
                 $tmp_part_id = $struct->mime_id ? $struct->mime_id.'.'.($i+1) : $i+1;
-                $struct->parts[] = $this->_structure_part($part[$i], ++$count, $struct->mime_id,
+                $struct->parts[] = $this->structure_part($part[$i], ++$count, $struct->mime_id,
                     $mime_part_headers[$tmp_part_id]);
             }
 
@@ -2143,11 +1763,13 @@ class rcube_imap
         // read content type parameters
         if (is_array($part[2])) {
             $struct->ctype_parameters = array();
-            for ($i=0; $i<count($part[2]); $i+=2)
+            for ($i=0; $i<count($part[2]); $i+=2) {
                 $struct->ctype_parameters[strtolower($part[2][$i])] = $part[2][$i+1];
+            }
 
-            if (isset($struct->ctype_parameters['charset']))
+            if (isset($struct->ctype_parameters['charset'])) {
                 $struct->charset = $struct->ctype_parameters['charset'];
+            }
         }
 
         // #1487700: workaround for lack of charset in malformed structure
@@ -2162,29 +1784,37 @@ class rcube_imap
         }
 
         // get part size
-        if (!empty($part[6]))
+        if (!empty($part[6])) {
             $struct->size = intval($part[6]);
+        }
 
         // read part disposition
         $di = 8;
-        if ($struct->ctype_primary == 'text') $di += 1;
-        else if ($struct->mimetype == 'message/rfc822') $di += 3;
+        if ($struct->ctype_primary == 'text') {
+            $di += 1;
+        }
+        else if ($struct->mimetype == 'message/rfc822') {
+            $di += 3;
+        }
 
         if (is_array($part[$di]) && count($part[$di]) == 2) {
             $struct->disposition = strtolower($part[$di][0]);
 
-            if (is_array($part[$di][1]))
-                for ($n=0; $n<count($part[$di][1]); $n+=2)
+            if (is_array($part[$di][1])) {
+                for ($n=0; $n<count($part[$di][1]); $n+=2) {
                     $struct->d_parameters[strtolower($part[$di][1][$n])] = $part[$di][1][$n+1];
+                }
+            }
         }
 
         // get message/rfc822's child-parts
         if (is_array($part[8]) && $di != 8) {
             $struct->parts = array();
             for ($i=0, $count=0; $i<count($part[8]); $i++) {
-                if (!is_array($part[8][$i]))
+                if (!is_array($part[8][$i])) {
                     break;
-                $struct->parts[] = $this->_structure_part($part[8][$i], ++$count, $struct->mime_id);
+                }
+                $struct->parts[] = $this->structure_part($part[8][$i], ++$count, $struct->mime_id);
             }
         }
 
@@ -2193,44 +1823,51 @@ class rcube_imap
             $struct->content_id = $part[3];
             $struct->headers['content-id'] = $part[3];
 
-            if (empty($struct->disposition))
+            if (empty($struct->disposition)) {
                 $struct->disposition = 'inline';
+            }
         }
 
         // fetch message headers if message/rfc822 or named part (could contain Content-Location header)
         if ($struct->ctype_primary == 'message' || ($struct->ctype_parameters['name'] && !$struct->content_id)) {
             if (empty($mime_headers)) {
                 $mime_headers = $this->conn->fetchPartHeader(
-                    $this->mailbox, $this->_msg_uid, true, $struct->mime_id);
+                    $this->folder, $this->msg_uid, true, $struct->mime_id);
             }
 
-            if (is_string($mime_headers))
-                $struct->headers = $this->_parse_headers($mime_headers) + $struct->headers;
-            else if (is_object($mime_headers))
+            if (is_string($mime_headers)) {
+                $struct->headers = rcube_mime::parse_headers($mime_headers) + $struct->headers;
+            }
+            else if (is_object($mime_headers)) {
                 $struct->headers = get_object_vars($mime_headers) + $struct->headers;
+            }
 
             // get real content-type of message/rfc822
             if ($struct->mimetype == 'message/rfc822') {
                 // single-part
-                if (!is_array($part[8][0]))
+                if (!is_array($part[8][0])) {
                     $struct->real_mimetype = strtolower($part[8][0] . '/' . $part[8][1]);
+                }
                 // multi-part
                 else {
-                    for ($n=0; $n<count($part[8]); $n++)
-                        if (!is_array($part[8][$n]))
+                    for ($n=0; $n<count($part[8]); $n++) {
+                        if (!is_array($part[8][$n])) {
                             break;
+                        }
+                    }
                     $struct->real_mimetype = 'multipart/' . strtolower($part[8][$n]);
                 }
             }
 
             if ($struct->ctype_primary == 'message' && empty($struct->parts)) {
-                if (is_array($part[8]) && $di != 8)
-                    $struct->parts[] = $this->_structure_part($part[8], ++$count, $struct->mime_id);
+                if (is_array($part[8]) && $di != 8) {
+                    $struct->parts[] = $this->structure_part($part[8], ++$count, $struct->mime_id);
+                }
             }
         }
 
         // normalize filename property
-        $this->_set_part_filename($struct, $mime_headers);
+        $this->set_part_filename($struct, $mime_headers);
 
         return $struct;
     }
@@ -2241,16 +1878,18 @@ class rcube_imap
      *
      * @param  rcube_message_part $part    Part object
      * @param  string             $headers Part's raw headers
-     * @access private
      */
-    private function _set_part_filename(&$part, $headers=null)
+    protected function set_part_filename(&$part, $headers=null)
     {
-        if (!empty($part->d_parameters['filename']))
+        if (!empty($part->d_parameters['filename'])) {
             $filename_mime = $part->d_parameters['filename'];
-        else if (!empty($part->d_parameters['filename*']))
+        }
+        else if (!empty($part->d_parameters['filename*'])) {
             $filename_encoded = $part->d_parameters['filename*'];
-        else if (!empty($part->ctype_parameters['name*']))
+        }
+        else if (!empty($part->ctype_parameters['name*'])) {
             $filename_encoded = $part->ctype_parameters['name*'];
+        }
         // RFC2231 value continuations
         // TODO: this should be rewrited to support RFC2231 4.1 combinations
         else if (!empty($part->d_parameters['filename*0'])) {
@@ -2264,7 +1903,7 @@ class rcube_imap
             if ($i<2) {
                 if (!$headers) {
                     $headers = $this->conn->fetchPartHeader(
-                        $this->mailbox, $this->_msg_uid, true, $part->mime_id);
+                        $this->folder, $this->msg_uid, true, $part->mime_id);
                 }
                 $filename_mime = '';
                 $i = 0;
@@ -2283,7 +1922,7 @@ class rcube_imap
             if ($i<2) {
                 if (!$headers) {
                     $headers = $this->conn->fetchPartHeader(
-                            $this->mailbox, $this->_msg_uid, true, $part->mime_id);
+                            $this->folder, $this->msg_uid, true, $part->mime_id);
                 }
                 $filename_encoded = '';
                 $i = 0; $matches = array();
@@ -2302,7 +1941,7 @@ class rcube_imap
             if ($i<2) {
                 if (!$headers) {
                     $headers = $this->conn->fetchPartHeader(
-                        $this->mailbox, $this->_msg_uid, true, $part->mime_id);
+                        $this->folder, $this->msg_uid, true, $part->mime_id);
                 }
                 $filename_mime = '';
                 $i = 0; $matches = array();
@@ -2321,7 +1960,7 @@ class rcube_imap
             if ($i<2) {
                 if (!$headers) {
                     $headers = $this->conn->fetchPartHeader(
-                        $this->mailbox, $this->_msg_uid, true, $part->mime_id);
+                        $this->folder, $this->msg_uid, true, $part->mime_id);
                 }
                 $filename_encoded = '';
                 $i = 0; $matches = array();
@@ -2332,24 +1971,30 @@ class rcube_imap
             }
         }
         // read 'name' after rfc2231 parameters as it may contains truncated filename (from Thunderbird)
-        else if (!empty($part->ctype_parameters['name']))
+        else if (!empty($part->ctype_parameters['name'])) {
             $filename_mime = $part->ctype_parameters['name'];
+        }
         // Content-Disposition
-        else if (!empty($part->headers['content-description']))
+        else if (!empty($part->headers['content-description'])) {
             $filename_mime = $part->headers['content-description'];
-        else
+        }
+        else {
             return;
+        }
 
         // decode filename
         if (!empty($filename_mime)) {
-            if (!empty($part->charset))
+            if (!empty($part->charset)) {
                 $charset = $part->charset;
-            else if (!empty($this->struct_charset))
+            }
+            else if (!empty($this->struct_charset)) {
                 $charset = $this->struct_charset;
-            else
+            }
+            else {
                 $charset = rc_detect_encoding($filename_mime, $this->default_charset);
+            }
 
-            $part->filename = rcube_imap::decode_mime_string($filename_mime, $charset);
+            $part->filename = rcube_mime::decode_mime_string($filename_mime, $charset);
         }
         else if (!empty($filename_encoded)) {
             // decode filename according to RFC 2231, Section 4
@@ -2367,14 +2012,15 @@ class rcube_imap
      * Get charset name from message structure (first part)
      *
      * @param  array $structure Message structure
+     *
      * @return string Charset name
-     * @access private
      */
-    private function _structure_charset($structure)
+    protected function structure_charset($structure)
     {
         while (is_array($structure)) {
-            if (is_array($structure[2]) && $structure[2][0] == 'charset')
+            if (is_array($structure[2]) && $structure[2][0] == 'charset') {
                 return $structure[2][1];
+            }
             $structure = $structure[0];
         }
     }
@@ -2392,11 +2038,15 @@ class rcube_imap
      *
      * @return string Message/part body if not printed
      */
-    function &get_message_part($uid, $part=1, $o_part=NULL, $print=NULL, $fp=NULL, $skip_charset_conv=false)
+    public function get_message_part($uid, $part=1, $o_part=NULL, $print=NULL, $fp=NULL, $skip_charset_conv=false)
     {
+        if (!$this->check_connection()) {
+            return null;
+        }
+
         // get part data if not provided
         if (!is_object($o_part)) {
-            $structure = $this->conn->getStructure($this->mailbox, $uid, true);
+            $structure = $this->conn->getStructure($this->folder, $uid, true);
             $part_data = rcube_imap_generic::getStructurePartData($structure, $part);
 
             $o_part = new rcube_message_part;
@@ -2407,7 +2057,7 @@ class rcube_imap
         }
 
         if ($o_part && $o_part->size) {
-            $body = $this->conn->handlePartBody($this->mailbox, $uid, true,
+            $body = $this->conn->handlePartBody($this->folder, $uid, true,
                 $part ? $part : 'TEXT', $o_part->encoding, $print, $fp);
         }
 
@@ -2417,16 +2067,20 @@ class rcube_imap
 
         // convert charset (if text or message part)
         if ($body && preg_match('/^(text|message)$/', $o_part->ctype_primary)) {
-            // Remove NULL characters (#1486189)
-            $body = str_replace("\x00", '', $body);
+            // Remove NULL characters if any (#1486189)
+            if (strpos($body, "\x00") !== false) {
+                $body = str_replace("\x00", '', $body);
+            }
 
-           if (!$skip_charset_conv) {
+            if (!$skip_charset_conv) {
                 if (!$o_part->charset || strtoupper($o_part->charset) == 'US-ASCII') {
                     // try to extract charset information from HTML meta tag (#1488125)
-                    if ($o_part->ctype_secondary == 'html' && preg_match('/<meta[^>]+charset=([a-z0-9-_]+)/i', $body, $m))
+                    if ($o_part->ctype_secondary == 'html' && preg_match('/<meta[^>]+charset=([a-z0-9-_]+)/i', $body, $m)) {
                         $o_part->charset = strtoupper($m[1]);
-                    else
+                    }
+                    else {
                         $o_part->charset = $this->default_charset;
+                    }
                 }
                 $body = rcube_charset_convert($body, $o_part->charset);
             }
@@ -2436,21 +2090,6 @@ class rcube_imap
     }
 
 
-    /**
-     * Fetch message body of a specific message from the server
-     *
-     * @param  int    $uid  Message UID
-     * @return string $part Message/part body
-     * @see    rcube_imap::get_message_part()
-     */
-    function &get_body($uid, $part=1)
-    {
-        $headers = $this->get_headers($uid);
-        return rcube_charset_convert($this->get_message_part($uid, $part, NULL),
-            $headers->charset ? $headers->charset : $this->default_charset);
-    }
-
-
     /**
      * Returns the whole message source as string (or saves to a file)
      *
@@ -2459,9 +2098,13 @@ class rcube_imap
      *
      * @return string Message source string
      */
-    function &get_raw_body($uid, $fp=null)
+    public function get_raw_body($uid, $fp=null)
     {
-        return $this->conn->handlePartBody($this->mailbox, $uid,
+        if (!$this->check_connection()) {
+            return null;
+        }
+
+        return $this->conn->handlePartBody($this->folder, $uid,
             true, null, null, false, $fp);
     }
 
@@ -2470,22 +2113,32 @@ class rcube_imap
      * Returns the message headers as string
      *
      * @param int $uid  Message UID
+     *
      * @return string Message headers string
      */
-    function &get_raw_headers($uid)
+    public function get_raw_headers($uid)
     {
-        return $this->conn->fetchPartHeader($this->mailbox, $uid, true);
+        if (!$this->check_connection()) {
+            return null;
+        }
+
+        return $this->conn->fetchPartHeader($this->folder, $uid, true);
     }
 
 
     /**
      * Sends the whole message source to stdout
      *
-     * @param int $uid Message UID
+     * @param int  $uid       Message UID
+     * @param bool $formatted Enables line-ending formatting
      */
-    function print_raw_body($uid)
+    public function print_raw_body($uid, $formatted = true)
     {
-        $this->conn->handlePartBody($this->mailbox, $uid, true, NULL, NULL, true);
+        if (!$this->check_connection()) {
+            return;
+        }
+
+        $this->conn->handlePartBody($this->folder, $uid, true, null, null, true, null, $formatted);
     }
 
 
@@ -2494,24 +2147,30 @@ class rcube_imap
      *
      * @param mixed   $uids       Message UIDs as array or comma-separated string, or '*'
      * @param string  $flag       Flag to set: SEEN, UNDELETED, DELETED, RECENT, ANSWERED, DRAFT, MDNSENT
-     * @param string  $mailbox    Folder name
+     * @param string  $folder    Folder name
      * @param boolean $skip_cache True to skip message cache clean up
      *
      * @return boolean  Operation status
      */
-    function set_flag($uids, $flag, $mailbox=null, $skip_cache=false)
+    public function set_flag($uids, $flag, $folder=null, $skip_cache=false)
     {
-        if (!strlen($mailbox)) {
-            $mailbox = $this->mailbox;
+        if (!strlen($folder)) {
+            $folder = $this->folder;
+        }
+
+        if (!$this->check_connection()) {
+            return false;
         }
 
         $flag = strtoupper($flag);
-        list($uids, $all_mode) = $this->_parse_uids($uids, $mailbox);
+        list($uids, $all_mode) = $this->parse_uids($uids);
 
-        if (strpos($flag, 'UN') === 0)
-            $result = $this->conn->unflag($mailbox, $uids, substr($flag, 2));
-        else
-            $result = $this->conn->flag($mailbox, $uids, $flag);
+        if (strpos($flag, 'UN') === 0) {
+            $result = $this->conn->unflag($folder, $uids, substr($flag, 2));
+        }
+        else {
+            $result = $this->conn->flag($folder, $uids, $flag);
+        }
 
         if ($result) {
             // reload message headers if cached
@@ -2519,17 +2178,17 @@ class rcube_imap
             if (!$skip_cache && ($mcache = $this->get_mcache_engine())) {
                 $status = strpos($flag, 'UN') !== 0;
                 $mflag  = preg_replace('/^UN/', '', $flag);
-                $mcache->change_flag($mailbox, $all_mode ? null : explode(',', $uids),
+                $mcache->change_flag($folder, $all_mode ? null : explode(',', $uids),
                     $mflag, $status);
             }
 
             // clear cached counters
             if ($flag == 'SEEN' || $flag == 'UNSEEN') {
-                $this->_clear_messagecount($mailbox, 'SEEN');
-                $this->_clear_messagecount($mailbox, 'UNSEEN');
+                $this->clear_messagecount($folder, 'SEEN');
+                $this->clear_messagecount($folder, 'UNSEEN');
             }
             else if ($flag == 'DELETED') {
-                $this->_clear_messagecount($mailbox, 'DELETED');
+                $this->clear_messagecount($folder, 'DELETED');
             }
         }
 
@@ -2538,48 +2197,38 @@ class rcube_imap
 
 
     /**
-     * Remove message flag for one or several messages
-     *
-     * @param mixed  $uids    Message UIDs as array or comma-separated string, or '*'
-     * @param string $flag    Flag to unset: SEEN, DELETED, RECENT, ANSWERED, DRAFT, MDNSENT
-     * @param string $mailbox Folder name
-     *
-     * @return int   Number of flagged messages, -1 on failure
-     * @see set_flag
-     */
-    function unset_flag($uids, $flag, $mailbox=null)
-    {
-        return $this->set_flag($uids, 'UN'.$flag, $mailbox);
-    }
-
-
-    /**
-     * Append a mail message (source) to a specific mailbox
+     * Append a mail message (source) to a specific folder
      *
-     * @param string  $mailbox Target mailbox
+     * @param string  $folder  Target folder
      * @param string  $message The message source string or filename
      * @param string  $headers Headers string if $message contains only the body
      * @param boolean $is_file True if $message is a filename
      *
      * @return int|bool Appended message UID or True on success, False on error
      */
-    function save_message($mailbox, &$message, $headers='', $is_file=false)
+    public function save_message($folder, &$message, $headers='', $is_file=false)
     {
-        if (!strlen($mailbox)) {
-            $mailbox = $this->mailbox;
+        if (!strlen($folder)) {
+            $folder = $this->folder;
+        }
+
+        if (!$this->check_connection()) {
+            return false;
         }
 
-        // make sure mailbox exists
-        if ($this->mailbox_exists($mailbox)) {
-            if ($is_file)
-                $saved = $this->conn->appendFromFile($mailbox, $message, $headers);
-            else
-                $saved = $this->conn->append($mailbox, $message);
+        // make sure folder exists
+        if ($this->folder_exists($folder)) {
+            if ($is_file) {
+                $saved = $this->conn->appendFromFile($folder, $message, $headers);
+            }
+            else {
+                $saved = $this->conn->append($folder, $message);
+            }
         }
 
         if ($saved) {
-            // increase messagecount of the target mailbox
-            $this->_set_messagecount($mailbox, 'ALL', 1);
+            // increase messagecount of the target folder
+            $this->set_messagecount($folder, 'ALL', 1);
         }
 
         return $saved;
@@ -2587,33 +2236,39 @@ class rcube_imap
 
 
     /**
-     * Move a message from one mailbox to another
+     * Move a message from one folder to another
      *
      * @param mixed  $uids      Message UIDs as array or comma-separated string, or '*'
-     * @param string $to_mbox   Target mailbox
-     * @param string $from_mbox Source mailbox
+     * @param string $to_mbox   Target folder
+     * @param string $from_mbox Source folder
+     *
      * @return boolean True on success, False on error
      */
-    function move_message($uids, $to_mbox, $from_mbox='')
+    public function move_message($uids, $to_mbox, $from_mbox='')
     {
         if (!strlen($from_mbox)) {
-            $from_mbox = $this->mailbox;
+            $from_mbox = $this->folder;
         }
 
         if ($to_mbox === $from_mbox) {
             return false;
         }
 
-        list($uids, $all_mode) = $this->_parse_uids($uids, $from_mbox);
+        list($uids, $all_mode) = $this->parse_uids($uids);
 
         // exit if no message uids are specified
-        if (empty($uids))
+        if (empty($uids)) {
+            return false;
+        }
+
+        if (!$this->check_connection()) {
             return false;
+        }
 
-        // make sure mailbox exists
-        if ($to_mbox != 'INBOX' && !$this->mailbox_exists($to_mbox)) {
+        // make sure folder exists
+        if ($to_mbox != 'INBOX' && !$this->folder_exists($to_mbox)) {
             if (in_array($to_mbox, $this->default_folders)) {
-                if (!$this->create_mailbox($to_mbox, true)) {
+                if (!$this->create_folder($to_mbox, true)) {
                     return false;
                 }
             }
@@ -2635,11 +2290,11 @@ class rcube_imap
         $moved = $this->conn->move($uids, $from_mbox, $to_mbox);
 
         // send expunge command in order to have the moved message
-        // really deleted from the source mailbox
+        // really deleted from the source folder
         if ($moved) {
-            $this->_expunge($from_mbox, false, $uids);
-            $this->_clear_messagecount($from_mbox);
-            $this->_clear_messagecount($to_mbox);
+            $this->expunge_message($uids, $from_mbox, false);
+            $this->clear_messagecount($from_mbox);
+            $this->clear_messagecount($to_mbox);
         }
         // moving failed
         else if ($to_trash && $config->get('delete_always', false)) {
@@ -2651,18 +2306,14 @@ class rcube_imap
             unset($this->icache['threads']);
 
             // remove message ids from search set
-            if ($this->search_set && $from_mbox == $this->mailbox) {
+            if ($this->search_set && $from_mbox == $this->folder) {
                 // threads are too complicated to just remove messages from set
-                if ($this->search_threads || $all_mode)
+                if ($this->search_threads || $all_mode) {
                     $this->refresh_search();
+                }
                 else {
-                    $a_uids = explode(',', $uids);
-                    foreach ($a_uids as $uid)
-                        $a_mids[] = $this->uid2id($uid, $from_mbox);
-                    $this->search_set = array_diff($this->search_set, $a_mids);
+                    $this->search_set->filter(explode(',', $uids));
                 }
-                unset($a_mids);
-                unset($a_uids);
             }
 
             // remove cached messages
@@ -2675,30 +2326,35 @@ class rcube_imap
 
 
     /**
-     * Copy a message from one mailbox to another
+     * Copy a message from one folder to another
      *
      * @param mixed  $uids      Message UIDs as array or comma-separated string, or '*'
-     * @param string $to_mbox   Target mailbox
-     * @param string $from_mbox Source mailbox
+     * @param string $to_mbox   Target folder
+     * @param string $from_mbox Source folder
+     *
      * @return boolean True on success, False on error
      */
-    function copy_message($uids, $to_mbox, $from_mbox='')
+    public function copy_message($uids, $to_mbox, $from_mbox='')
     {
         if (!strlen($from_mbox)) {
-            $from_mbox = $this->mailbox;
+            $from_mbox = $this->folder;
         }
 
-        list($uids, $all_mode) = $this->_parse_uids($uids, $from_mbox);
+        list($uids, $all_mode) = $this->parse_uids($uids);
 
         // exit if no message uids are specified
         if (empty($uids)) {
             return false;
         }
 
-        // make sure mailbox exists
-        if ($to_mbox != 'INBOX' && !$this->mailbox_exists($to_mbox)) {
+        if (!$this->check_connection()) {
+            return false;
+        }
+
+        // make sure folder exists
+        if ($to_mbox != 'INBOX' && !$this->folder_exists($to_mbox)) {
             if (in_array($to_mbox, $this->default_folders)) {
-                if (!$this->create_mailbox($to_mbox, true)) {
+                if (!$this->create_folder($to_mbox, true)) {
                     return false;
                 }
             }
@@ -2711,7 +2367,7 @@ class rcube_imap
         $copied = $this->conn->copy($uids, $from_mbox, $to_mbox);
 
         if ($copied) {
-            $this->_clear_messagecount($to_mbox);
+            $this->clear_messagecount($to_mbox);
         }
 
         return $copied;
@@ -2719,54 +2375,55 @@ class rcube_imap
 
 
     /**
-     * Mark messages as deleted and expunge mailbox
+     * Mark messages as deleted and expunge them
      *
      * @param mixed  $uids    Message UIDs as array or comma-separated string, or '*'
-     * @param string $mailbox Source mailbox
+     * @param string $folder  Source folder
      *
      * @return boolean True on success, False on error
      */
-    function delete_message($uids, $mailbox='')
+    public function delete_message($uids, $folder='')
     {
-        if (!strlen($mailbox)) {
-            $mailbox = $this->mailbox;
+        if (!strlen($folder)) {
+            $folder = $this->folder;
         }
 
-        list($uids, $all_mode) = $this->_parse_uids($uids, $mailbox);
+        list($uids, $all_mode) = $this->parse_uids($uids);
 
         // exit if no message uids are specified
-        if (empty($uids))
+        if (empty($uids)) {
+            return false;
+        }
+
+        if (!$this->check_connection()) {
             return false;
+        }
 
-        $deleted = $this->conn->delete($mailbox, $uids);
+        $deleted = $this->conn->flag($folder, $uids, 'DELETED');
 
         if ($deleted) {
             // send expunge command in order to have the deleted message
-            // really deleted from the mailbox
-            $this->_expunge($mailbox, false, $uids);
-            $this->_clear_messagecount($mailbox);
-            unset($this->uid_id_map[$mailbox]);
+            // really deleted from the folder
+            $this->expunge_message($uids, $folder, false);
+            $this->clear_messagecount($folder);
+            unset($this->uid_id_map[$folder]);
 
             // unset threads internal cache
             unset($this->icache['threads']);
 
             // remove message ids from search set
-            if ($this->search_set && $mailbox == $this->mailbox) {
+            if ($this->search_set && $folder == $this->folder) {
                 // threads are too complicated to just remove messages from set
-                if ($this->search_threads || $all_mode)
+                if ($this->search_threads || $all_mode) {
                     $this->refresh_search();
+                }
                 else {
-                    $a_uids = explode(',', $uids);
-                    foreach ($a_uids as $uid)
-                        $a_mids[] = $this->uid2id($uid, $mailbox);
-                    $this->search_set = array_diff($this->search_set, $a_mids);
-                    unset($a_uids);
-                    unset($a_mids);
+                    $this->search_set->filter(explode(',', $uids));
                 }
             }
 
             // remove cached messages
-            $this->clear_message_cache($mailbox, $all_mode ? null : explode(',', $uids));
+            $this->clear_message_cache($folder, $all_mode ? null : explode(',', $uids));
         }
 
         return $deleted;
@@ -2774,183 +2431,67 @@ class rcube_imap
 
 
     /**
-     * Clear all messages in a specific mailbox
+     * Send IMAP expunge command and clear cache
      *
-     * @param string $mailbox Mailbox name
+     * @param mixed   $uids        Message UIDs as array or comma-separated string, or '*'
+     * @param string  $folder      Folder name
+     * @param boolean $clear_cache False if cache should not be cleared
      *
-     * @return int Above 0 on success
+     * @return boolean True on success, False on failure
      */
-    function clear_mailbox($mailbox=null)
+    public function expunge_message($uids, $folder = null, $clear_cache = true)
     {
-        if (!strlen($mailbox)) {
-            $mailbox = $this->mailbox;
+        if ($uids && $this->get_capability('UIDPLUS')) {
+            list($uids, $all_mode) = $this->parse_uids($uids);
         }
-
-        // SELECT will set messages count for clearFolder()
-        if ($this->conn->select($mailbox)) {
-            $cleared = $this->conn->clearFolder($mailbox);
+        else {
+            $uids = null;
         }
 
-        // make sure the cache is cleared as well
-        if ($cleared) {
-            $this->clear_message_cache($mailbox);
-            $a_mailbox_cache = $this->get_cache('messagecount');
-            unset($a_mailbox_cache[$mailbox]);
-            $this->update_cache('messagecount', $a_mailbox_cache);
+        if (!strlen($folder)) {
+            $folder = $this->folder;
         }
 
-        return $cleared;
-    }
-
-
-    /**
-     * Send IMAP expunge command and clear cache
-     *
-     * @param string  $mailbox     Mailbox name
-     * @param boolean $clear_cache False if cache should not be cleared
-     *
-     * @return boolean True on success
-     */
-    function expunge($mailbox='', $clear_cache=true)
-    {
-        if (!strlen($mailbox)) {
-            $mailbox = $this->mailbox;
+        if (!$this->check_connection()) {
+            return false;
         }
 
-        return $this->_expunge($mailbox, $clear_cache);
-    }
-
-
-    /**
-     * Send IMAP expunge command and clear cache
-     *
-     * @param string  $mailbox     Mailbox name
-     * @param boolean $clear_cache False if cache should not be cleared
-     * @param mixed   $uids        Message UIDs as array or comma-separated string, or '*'
-     * @return boolean True on success
-     * @access private
-     * @see rcube_imap::expunge()
-     */
-    private function _expunge($mailbox, $clear_cache=true, $uids=NULL)
-    {
-        if ($uids && $this->get_capability('UIDPLUS'))
-            list($uids, $all_mode) = $this->_parse_uids($uids, $mailbox);
-        else
-            $uids = null;
-
-        // force mailbox selection and check if mailbox is writeable
+        // force folder selection and check if folder is writeable
         // to prevent a situation when CLOSE is executed on closed
-        // or EXPUNGE on read-only mailbox
-        $result = $this->conn->select($mailbox);
+        // or EXPUNGE on read-only folder
+        $result = $this->conn->select($folder);
         if (!$result) {
             return false;
         }
+
         if (!$this->conn->data['READ-WRITE']) {
-            $this->conn->setError(rcube_imap_generic::ERROR_READONLY, "Mailbox is read-only");
+            $this->conn->setError(rcube_imap_generic::ERROR_READONLY, "Folder is read-only");
             return false;
         }
 
         // CLOSE(+SELECT) should be faster than EXPUNGE
-        if (empty($uids) || $all_mode)
+        if (empty($uids) || $all_mode) {
             $result = $this->conn->close();
-        else
-            $result = $this->conn->expunge($mailbox, $uids);
-
-        if ($result && $clear_cache) {
-            $this->clear_message_cache($mailbox, $all_mode ? null : explode(',', $uids));
-            $this->_clear_messagecount($mailbox);
-        }
-
-        return $result;
-    }
-
-
-    /**
-     * Parse message UIDs input
-     *
-     * @param mixed  $uids    UIDs array or comma-separated list or '*' or '1:*'
-     * @param string $mailbox Mailbox name
-     * @return array Two elements array with UIDs converted to list and ALL flag
-     * @access private
-     */
-    private function _parse_uids($uids, $mailbox)
-    {
-        if ($uids === '*' || $uids === '1:*') {
-            if (empty($this->search_set)) {
-                $uids = '1:*';
-                $all = true;
-            }
-            // get UIDs from current search set
-            // @TODO: skip fetchUIDs() and work with IDs instead of UIDs (?)
-            else {
-                if ($this->search_threads)
-                    $uids = $this->conn->fetchUIDs($mailbox, array_keys($this->search_set['depth']));
-                else
-                    $uids = $this->conn->fetchUIDs($mailbox, $this->search_set);
-
-                // save ID-to-UID mapping in local cache
-                if (is_array($uids))
-                    foreach ($uids as $id => $uid)
-                        $this->uid_id_map[$mailbox][$uid] = $id;
-
-                $uids = join(',', $uids);
-            }
         }
         else {
-            if (is_array($uids))
-                $uids = join(',', $uids);
-
-            if (preg_match('/[^0-9,]/', $uids))
-                $uids = '';
-        }
-
-        return array($uids, (bool) $all);
-    }
-
-
-    /**
-     * Translate UID to message ID
-     *
-     * @param int    $uid     Message UID
-     * @param string $mailbox Mailbox name
-     *
-     * @return int   Message ID
-     */
-    function get_id($uid, $mailbox=null)
-    {
-        if (!strlen($mailbox)) {
-            $mailbox = $this->mailbox;
+            $result = $this->conn->expunge($folder, $uids);
         }
 
-        return $this->uid2id($uid, $mailbox);
-    }
-
-
-    /**
-     * Translate message number to UID
-     *
-     * @param int    $id      Message ID
-     * @param string $mailbox Mailbox name
-     *
-     * @return int   Message UID
-     */
-    function get_uid($id, $mailbox=null)
-    {
-        if (!strlen($mailbox)) {
-            $mailbox = $this->mailbox;
+        if ($result && $clear_cache) {
+            $this->clear_message_cache($folder, $all_mode ? null : explode(',', $uids));
+            $this->clear_messagecount($folder);
         }
 
-        return $this->id2uid($id, $mailbox);
+        return $result;
     }
 
 
-
     /* --------------------------------
      *        folder managment
      * --------------------------------*/
 
     /**
-     * Public method for listing subscribed folders
+     * Public method for listing subscribed folders.
      *
      * @param   string  $root      Optional root folder
      * @param   string  $name      Optional name pattern
@@ -2959,9 +2500,8 @@ class rcube_imap
      * @param   bool    $skip_sort Enable to return unsorted list (for better performance)
      *
      * @return  array   List of folders
-     * @access  public
      */
-    function list_mailboxes($root='', $name='*', $filter=null, $rights=null, $skip_sort=false)
+    public function list_folders_subscribed($root='', $name='*', $filter=null, $rights=null, $skip_sort=false)
     {
         $cache_key = $root.':'.$name;
         if (!empty($filter)) {
@@ -2976,7 +2516,16 @@ class rcube_imap
             return $a_mboxes;
         }
 
-        $a_mboxes = $this->_list_mailboxes($root, $name, $filter, $rights);
+        // Give plugins a chance to provide a list of folders
+        $data = rcmail::get_instance()->plugins->exec_hook('storage_folders',
+            array('root' => $root, 'name' => $name, 'filter' => $filter, 'mode' => 'LSUB'));
+
+        if (isset($data['folders'])) {
+            $a_mboxes = $data['folders'];
+        }
+        else {
+            $a_mboxes = $this->list_folders_subscribed_direct($root, $name);
+        }
 
         if (!is_array($a_mboxes)) {
             return array();
@@ -2992,12 +2541,12 @@ class rcube_imap
             array_unshift($a_mboxes, 'INBOX');
         }
 
-        // sort mailboxes (always sort for cache)
+        // sort folders (always sort for cache)
         if (!$skip_sort || $this->cache) {
-            $a_mboxes = $this->_sort_mailbox_list($a_mboxes);
+            $a_mboxes = $this->sort_folder_list($a_mboxes);
         }
 
-        // write mailboxlist to cache
+        // write folders list to cache
         $this->update_cache($cache_key, $a_mboxes);
 
         return $a_mboxes;
@@ -3005,85 +2554,82 @@ class rcube_imap
 
 
     /**
-     * Private method for mailbox listing (LSUB)
+     * Method for direct folders listing (LSUB)
      *
      * @param   string  $root   Optional root folder
      * @param   string  $name   Optional name pattern
-     * @param   mixed   $filter Optional filter
-     * @param   string  $rights Optional ACL requirements
      *
      * @return  array   List of subscribed folders
-     * @see     rcube_imap::list_mailboxes()
-     * @access  private
+     * @see     rcube_imap::list_folders_subscribed()
      */
-    private function _list_mailboxes($root='', $name='*', $filter=null, $rights=null)
+    public function list_folders_subscribed_direct($root='', $name='*')
     {
-        $a_defaults = $a_out = array();
+        if (!$this->check_connection()) {
+           return null;
+        }
 
-        // Give plugins a chance to provide a list of mailboxes
-        $data = rcmail::get_instance()->plugins->exec_hook('mailboxes_list',
-            array('root' => $root, 'name' => $name, 'filter' => $filter, 'mode' => 'LSUB'));
+        $config = rcmail::get_instance()->config;
 
-        if (isset($data['folders'])) {
-            $a_folders = $data['folders'];
-        }
-        else if (!$this->conn->connected()) {
-           return null;
+        // Server supports LIST-EXTENDED, we can use selection options
+        // #1486225: Some dovecot versions returns wrong result using LIST-EXTENDED
+        $list_extended = !$config->get('imap_force_lsub') && $this->get_capability('LIST-EXTENDED');
+        if ($list_extended) {
+            // This will also set folder options, LSUB doesn't do that
+            $a_folders = $this->conn->listMailboxes($root, $name,
+                NULL, array('SUBSCRIBED'));
         }
         else {
-            // Server supports LIST-EXTENDED, we can use selection options
-            $config = rcmail::get_instance()->config;
-            // #1486225: Some dovecot versions returns wrong result using LIST-EXTENDED
-            if (!$config->get('imap_force_lsub') && $this->get_capability('LIST-EXTENDED')) {
-                // This will also set mailbox options, LSUB doesn't do that
-                $a_folders = $this->conn->listMailboxes($root, $name,
-                    NULL, array('SUBSCRIBED'));
-
-                // unsubscribe non-existent folders, remove from the list
-                // we can do this only when LIST response is available
-                if (is_array($a_folders) && $name == '*' && !empty($this->conn->data['LIST'])) {
-                    foreach ($a_folders as $idx => $folder) {
-                        if (($opts = $this->conn->data['LIST'][$folder])
-                            && in_array('\\NonExistent', $opts)
-                        ) {
-                            $this->conn->unsubscribe($folder);
-                            unset($a_folders[$idx]);
-                        }
+            // retrieve list of folders from IMAP server using LSUB
+            $a_folders = $this->conn->listSubscribed($root, $name);
+        }
+
+        if (!is_array($a_folders)) {
+            return array();
+        }
+
+        // #1486796: some server configurations doesn't return folders in all namespaces
+        if ($root == '' && $name == '*' && $config->get('imap_force_ns')) {
+            $this->list_folders_update($a_folders, ($list_extended ? 'ext-' : '') . 'subscribed');
+        }
+
+        if ($list_extended) {
+            // unsubscribe non-existent folders, remove from the list
+            // we can do this only when LIST response is available
+            if (is_array($a_folders) && $name == '*' && !empty($this->conn->data['LIST'])) {
+                foreach ($a_folders as $idx => $folder) {
+                    if (($opts = $this->conn->data['LIST'][$folder])
+                        && in_array('\\NonExistent', $opts)
+                    ) {
+                        $this->conn->unsubscribe($folder);
+                        unset($a_folders[$idx]);
                     }
                 }
             }
-            // retrieve list of folders from IMAP server using LSUB
-            else {
-                $a_folders = $this->conn->listSubscribed($root, $name);
-
-                // unsubscribe non-existent folders, remove them from the list,
-                // we can do this only when LIST response is available
-                if (is_array($a_folders) && $name == '*' && !empty($this->conn->data['LIST'])) {
-                    foreach ($a_folders as $idx => $folder) {
-                        if (!isset($this->conn->data['LIST'][$folder])
-                            || in_array('\\Noselect', $this->conn->data['LIST'][$folder])
-                        ) {
-                            // Some servers returns \Noselect for existing folders
-                            if (!$this->mailbox_exists($folder)) {
-                                $this->conn->unsubscribe($folder);
-                                unset($a_folders[$idx]);
-                            }
+        }
+        else {
+            // unsubscribe non-existent folders, remove them from the list,
+            // we can do this only when LIST response is available
+            if (is_array($a_folders) && $name == '*' && !empty($this->conn->data['LIST'])) {
+                foreach ($a_folders as $idx => $folder) {
+                    if (!isset($this->conn->data['LIST'][$folder])
+                        || in_array('\\Noselect', $this->conn->data['LIST'][$folder])
+                    ) {
+                        // Some servers returns \Noselect for existing folders
+                        if (!$this->folder_exists($folder)) {
+                            $this->conn->unsubscribe($folder);
+                            unset($a_folders[$idx]);
                         }
                     }
                 }
             }
         }
 
-        if (!is_array($a_folders) || !sizeof($a_folders)) {
-            $a_folders = array();
-        }
-
         return $a_folders;
     }
 
 
     /**
-     * Get a list of all folders available on the IMAP server
+     * Get a list of all folders available on the server
      *
      * @param string  $root      IMAP root dir
      * @param string  $name      Optional name pattern
@@ -3093,7 +2639,7 @@ class rcube_imap
      *
      * @return array Indexed array with folder names
      */
-    function list_unsubscribed($root='', $name='*', $filter=null, $rights=null, $skip_sort=false)
+    public function list_folders($root='', $name='*', $filter=null, $rights=null, $skip_sort=false)
     {
         $cache_key = $root.':'.$name;
         if (!empty($filter)) {
@@ -3108,8 +2654,8 @@ class rcube_imap
             return $a_mboxes;
         }
 
-        // Give plugins a chance to provide a list of mailboxes
-        $data = rcmail::get_instance()->plugins->exec_hook('mailboxes_list',
+        // Give plugins a chance to provide a list of folders
+        $data = rcmail::get_instance()->plugins->exec_hook('storage_folders',
             array('root' => $root, 'name' => $name, 'filter' => $filter, 'mode' => 'LIST'));
 
         if (isset($data['folders'])) {
@@ -3117,7 +2663,7 @@ class rcube_imap
         }
         else {
             // retrieve list of folders from IMAP server
-            $a_mboxes = $this->_list_unsubscribed($root, $name);
+            $a_mboxes = $this->list_folders_direct($root, $name);
         }
 
         if (!is_array($a_mboxes)) {
@@ -3130,7 +2676,7 @@ class rcube_imap
         }
 
         // cache folder attributes
-        if ($root == '' && $name == '*' && empty($filter)) {
+        if ($root == '' && $name == '*' && empty($filter) && !empty($this->conn->data)) {
             $this->update_cache('mailboxes.attributes', $this->conn->data['LIST']);
         }
 
@@ -3141,10 +2687,10 @@ class rcube_imap
 
         // filter folders and sort them
         if (!$skip_sort) {
-            $a_mboxes = $this->_sort_mailbox_list($a_mboxes);
+            $a_mboxes = $this->sort_folder_list($a_mboxes);
         }
 
-        // write mailboxlist to cache
+        // write folders list to cache
         $this->update_cache($cache_key, $a_mboxes);
 
         return $a_mboxes;
@@ -3152,79 +2698,105 @@ class rcube_imap
 
 
     /**
-     * Private method for mailbox listing (LIST)
+     * Method for direct folders listing (LIST)
      *
      * @param   string  $root   Optional root folder
      * @param   string  $name   Optional name pattern
      *
      * @return  array   List of folders
-     * @see     rcube_imap::list_unsubscribed()
+     * @see     rcube_imap::list_folders()
      */
-    private function _list_unsubscribed($root='', $name='*')
+    public function list_folders_direct($root='', $name='*')
     {
+        if (!$this->check_connection()) {
+            return null;
+        }
+
         $result = $this->conn->listMailboxes($root, $name);
 
         if (!is_array($result)) {
             return array();
         }
 
-        // #1486796: some server configurations doesn't
-        // return folders in all namespaces, we'll try to detect that situation
-        // and ask for these namespaces separately
-        if ($root == '' && $name == '*') {
-            $delim     = $this->get_hierarchy_delimiter();
-            $namespace = $this->get_namespace();
-            $search    = array();
-
-            // build list of namespace prefixes
-            foreach ((array)$namespace as $ns) {
-                if (is_array($ns)) {
-                    foreach ($ns as $ns_data) {
-                        if (strlen($ns_data[0])) {
-                            $search[] = $ns_data[0];
-                        }
+        $config = rcmail::get_instance()->config;
+
+        // #1486796: some server configurations doesn't return folders in all namespaces
+        if ($root == '' && $name == '*' && $config->get('imap_force_ns')) {
+            $this->list_folders_update($result);
+        }
+
+        return $result;
+    }
+
+
+    /**
+     * Fix folders list by adding folders from other namespaces.
+     * Needed on some servers eg. Courier IMAP
+     *
+     * @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)
+    {
+        $delim     = $this->get_hierarchy_delimiter();
+        $namespace = $this->get_namespace();
+        $search    = array();
+
+        // build list of namespace prefixes
+        foreach ((array)$namespace as $ns) {
+            if (is_array($ns)) {
+                foreach ($ns as $ns_data) {
+                    if (strlen($ns_data[0])) {
+                        $search[] = $ns_data[0];
                     }
                 }
             }
+        }
 
-            if (!empty($search)) {
-                // go through all folders detecting namespace usage
-                foreach ($result as $folder) {
-                    foreach ($search as $idx => $prefix) {
-                        if (strpos($folder, $prefix) === 0) {
-                            unset($search[$idx]);
-                        }
-                    }
-                    if (empty($search)) {
-                        break;
+        if (!empty($search)) {
+            // go through all folders detecting namespace usage
+            foreach ($result as $folder) {
+                foreach ($search as $idx => $prefix) {
+                    if (strpos($folder, $prefix) === 0) {
+                        unset($search[$idx]);
                     }
                 }
+                if (empty($search)) {
+                    break;
+                }
+            }
 
-                // get folders in hidden namespaces and add to the result
-                foreach ($search as $prefix) {
-                    $list = $this->conn->listMailboxes($prefix, $name);
+            // get folders in hidden namespaces and add to the result
+            foreach ($search as $prefix) {
+                if ($type == 'ext-subscribed') {
+                    $list = $this->conn->listMailboxes('', $prefix . '*', null, array('SUBSCRIBED'));
+                }
+                else if ($type == 'subscribed') {
+                    $list = $this->conn->listSubscribed('', $prefix . '*');
+                }
+                else {
+                    $list = $this->conn->listMailboxes('', $prefix . '*');
+                }
 
-                    if (!empty($list)) {
-                        $result = array_merge($result, $list);
-                    }
+                if (!empty($list)) {
+                    $result = array_merge($result, $list);
                 }
             }
         }
-
-        return $result;
     }
 
 
     /**
      * Filter the given list of folders according to access rights
      */
-    private function filter_rights($a_folders, $rights)
+    protected function filter_rights($a_folders, $rights)
     {
         $regex = '/('.$rights.')/';
         foreach ($a_folders as $idx => $folder) {
             $myrights = join('', (array)$this->my_rights($folder));
-            if ($myrights !== null && !preg_match($regex, $myrights))
+            if ($myrights !== null && !preg_match($regex, $myrights)) {
                 unset($a_folders[$idx]);
+            }
         }
 
         return $a_folders;
@@ -3237,85 +2809,92 @@ class rcube_imap
      *
      * @return mixed Quota info or False if not supported
      */
-    function get_quota()
+    public function get_quota()
     {
-        if ($this->get_capability('QUOTA'))
+        if ($this->get_capability('QUOTA') && $this->check_connection()) {
             return $this->conn->getQuota();
+        }
 
         return false;
     }
 
 
     /**
-     * Get mailbox size (size of all messages in a mailbox)
+     * Get folder size (size of all messages in a folder)
      *
-     * @param string $mailbox Mailbox name
+     * @param string $folder Folder name
      *
-     * @return int Mailbox size in bytes, False on error
+     * @return int Folder size in bytes, False on error
      */
-    function get_mailbox_size($mailbox)
+    public function folder_size($folder)
     {
+        if (!$this->check_connection()) {
+            return 0;
+        }
+
         // @TODO: could we try to use QUOTA here?
-        $result = $this->conn->fetchHeaderIndex($mailbox, '1:*', 'SIZE', false);
+        $result = $this->conn->fetchHeaderIndex($folder, '1:*', 'SIZE', false);
 
-        if (is_array($result))
+        if (is_array($result)) {
             $result = array_sum($result);
+        }
 
         return $result;
     }
 
 
     /**
-     * Subscribe to a specific mailbox(es)
+     * Subscribe to a specific folder(s)
+     *
+     * @param array $folders Folder name(s)
      *
-     * @param array $a_mboxes Mailbox name(s)
      * @return boolean True on success
      */
-    function subscribe($a_mboxes)
+    public function subscribe($folders)
     {
-        if (!is_array($a_mboxes))
-            $a_mboxes = array($a_mboxes);
-
         // let this common function do the main work
-        return $this->_change_subscription($a_mboxes, 'subscribe');
+        return $this->change_subscription($folders, 'subscribe');
     }
 
 
     /**
-     * Unsubscribe mailboxes
+     * Unsubscribe folder(s)
+     *
+     * @param array $a_mboxes Folder name(s)
      *
-     * @param array $a_mboxes Mailbox name(s)
      * @return boolean True on success
      */
-    function unsubscribe($a_mboxes)
+    public function unsubscribe($folders)
     {
-        if (!is_array($a_mboxes))
-            $a_mboxes = array($a_mboxes);
-
         // let this common function do the main work
-        return $this->_change_subscription($a_mboxes, 'unsubscribe');
+        return $this->change_subscription($folders, 'unsubscribe');
     }
 
 
     /**
-     * Create a new mailbox on the server and register it in local cache
+     * Create a new folder on the server and register it in local cache
      *
-     * @param string  $mailbox   New mailbox name
-     * @param boolean $subscribe True if the new mailbox should be subscribed
+     * @param string  $folder    New folder name
+     * @param boolean $subscribe True if the new folder should be subscribed
      *
      * @return boolean True on success
      */
-    function create_mailbox($mailbox, $subscribe=false)
+    public function create_folder($folder, $subscribe=false)
     {
-        $result = $this->conn->createFolder($mailbox);
+        if (!$this->check_connection()) {
+            return false;
+        }
+
+        $result = $this->conn->createFolder($folder);
 
         // try to subscribe it
         if ($result) {
             // clear cache
             $this->clear_cache('mailboxes', true);
 
-            if ($subscribe)
-                $this->subscribe($mailbox);
+            if ($subscribe) {
+                $this->subscribe($folder);
+            }
         }
 
         return $result;
@@ -3323,45 +2902,49 @@ class rcube_imap
 
 
     /**
-     * Set a new name to an existing mailbox
+     * Set a new name to an existing folder
      *
-     * @param string $mailbox  Mailbox to rename
-     * @param string $new_name New mailbox name
+     * @param string $folder   Folder to rename
+     * @param string $new_name New folder name
      *
      * @return boolean True on success
      */
-    function rename_mailbox($mailbox, $new_name)
+    public function rename_folder($folder, $new_name)
     {
         if (!strlen($new_name)) {
             return false;
         }
 
+        if (!$this->check_connection()) {
+            return false;
+        }
+
         $delm = $this->get_hierarchy_delimiter();
 
         // get list of subscribed folders
-        if ((strpos($mailbox, '%') === false) && (strpos($mailbox, '*') === false)) {
-            $a_subscribed = $this->_list_mailboxes('', $mailbox . $delm . '*');
-            $subscribed   = $this->mailbox_exists($mailbox, true);
+        if ((strpos($folder, '%') === false) && (strpos($folder, '*') === false)) {
+            $a_subscribed = $this->list_folders_subscribed('', $folder . $delm . '*');
+            $subscribed   = $this->folder_exists($folder, true);
         }
         else {
-            $a_subscribed = $this->_list_mailboxes();
-            $subscribed   = in_array($mailbox, $a_subscribed);
+            $a_subscribed = $this->list_folders_subscribed();
+            $subscribed   = in_array($folder, $a_subscribed);
         }
 
-        $result = $this->conn->renameFolder($mailbox, $new_name);
+        $result = $this->conn->renameFolder($folder, $new_name);
 
         if ($result) {
             // unsubscribe the old folder, subscribe the new one
             if ($subscribed) {
-                $this->conn->unsubscribe($mailbox);
+                $this->conn->unsubscribe($folder);
                 $this->conn->subscribe($new_name);
             }
 
-            // check if mailbox children are subscribed
+            // check if folder children are subscribed
             foreach ($a_subscribed as $c_subscribed) {
-                if (preg_match('/^'.preg_quote($mailbox.$delm, '/').'/', $c_subscribed)) {
+                if (strpos($c_subscribed, $folder.$delm) === 0) {
                     $this->conn->unsubscribe($c_subscribed);
-                    $this->conn->subscribe(preg_replace('/^'.preg_quote($mailbox, '/').'/',
+                    $this->conn->subscribe(preg_replace('/^'.preg_quote($folder, '/').'/',
                         $new_name, $c_subscribed));
 
                     // clear cache
@@ -3370,7 +2953,7 @@ class rcube_imap
             }
 
             // clear cache
-            $this->clear_message_cache($mailbox);
+            $this->clear_message_cache($folder);
             $this->clear_cache('mailboxes', true);
         }
 
@@ -3379,40 +2962,46 @@ class rcube_imap
 
 
     /**
-     * Remove mailbox from server
+     * Remove folder from server
      *
-     * @param string $mailbox Mailbox name
+     * @param string $folder Folder name
      *
      * @return boolean True on success
      */
-    function delete_mailbox($mailbox)
+    function delete_folder($folder)
     {
         $delm = $this->get_hierarchy_delimiter();
 
+        if (!$this->check_connection()) {
+            return false;
+        }
+
         // get list of folders
-        if ((strpos($mailbox, '%') === false) && (strpos($mailbox, '*') === false))
-            $sub_mboxes = $this->list_unsubscribed('', $mailbox . $delm . '*');
-        else
-            $sub_mboxes = $this->list_unsubscribed();
+        if ((strpos($folder, '%') === false) && (strpos($folder, '*') === false)) {
+            $sub_mboxes = $this->list_folders('', $folder . $delm . '*');
+        }
+        else {
+            $sub_mboxes = $this->list_folders();
+        }
 
         // send delete command to server
-        $result = $this->conn->deleteFolder($mailbox);
+        $result = $this->conn->deleteFolder($folder);
 
         if ($result) {
-            // unsubscribe mailbox
-            $this->conn->unsubscribe($mailbox);
+            // unsubscribe folder
+            $this->conn->unsubscribe($folder);
 
             foreach ($sub_mboxes as $c_mbox) {
-                if (preg_match('/^'.preg_quote($mailbox.$delm, '/').'/', $c_mbox)) {
+                if (strpos($c_mbox, $folder.$delm) === 0) {
                     $this->conn->unsubscribe($c_mbox);
                     if ($this->conn->deleteFolder($c_mbox)) {
-                           $this->clear_message_cache($c_mbox);
+                        $this->clear_message_cache($c_mbox);
                     }
                 }
             }
 
-            // clear mailbox-related cache
-            $this->clear_message_cache($mailbox);
+            // clear folder-related cache
+            $this->clear_message_cache($folder);
             $this->clear_cache('mailboxes', true);
         }
 
@@ -3423,14 +3012,16 @@ class rcube_imap
     /**
      * Create all folders specified as default
      */
-    function create_default_folders()
+    public function create_default_folders()
     {
         // create default folders if they do not exist
         foreach ($this->default_folders as $folder) {
-            if (!$this->mailbox_exists($folder))
-                $this->create_mailbox($folder, true);
-            else if (!$this->mailbox_exists($folder, true))
+            if (!$this->folder_exists($folder)) {
+                $this->create_folder($folder, true);
+            }
+            else if (!$this->folder_exists($folder, true)) {
                 $this->subscribe($folder);
+            }
         }
     }
 
@@ -3438,31 +3029,36 @@ class rcube_imap
     /**
      * Checks if folder exists and is subscribed
      *
-     * @param string   $mailbox      Folder name
+     * @param string   $folder       Folder name
      * @param boolean  $subscription Enable subscription checking
      *
      * @return boolean TRUE or FALSE
      */
-    function mailbox_exists($mailbox, $subscription=false)
+    public function folder_exists($folder, $subscription=false)
     {
-        if ($mailbox == 'INBOX') {
+        if ($folder == 'INBOX') {
             return true;
         }
 
         $key  = $subscription ? 'subscribed' : 'existing';
 
-        if (is_array($this->icache[$key]) && in_array($mailbox, $this->icache[$key]))
+        if (is_array($this->icache[$key]) && in_array($folder, $this->icache[$key])) {
             return true;
+        }
+
+        if (!$this->check_connection()) {
+            return false;
+        }
 
         if ($subscription) {
-            $a_folders = $this->conn->listSubscribed('', $mailbox);
+            $a_folders = $this->conn->listSubscribed('', $folder);
         }
         else {
-            $a_folders = $this->conn->listMailboxes('', $mailbox);
+            $a_folders = $this->conn->listMailboxes('', $folder);
         }
 
-        if (is_array($a_folders) && in_array($mailbox, $a_folders)) {
-            $this->icache[$key][] = $mailbox;
+        if (is_array($a_folders) && in_array($folder, $a_folders)) {
+            $this->icache[$key][] = $folder;
             return true;
         }
 
@@ -3473,14 +3069,13 @@ class rcube_imap
     /**
      * Returns the namespace where the folder is in
      *
-     * @param string $mailbox Folder name
+     * @param string $folder Folder name
      *
      * @return string One of 'personal', 'other' or 'shared'
-     * @access public
      */
-    function mailbox_namespace($mailbox)
+    public function folder_namespace($folder)
     {
-        if ($mailbox == 'INBOX') {
+        if ($folder == 'INBOX') {
             return 'personal';
         }
 
@@ -3488,8 +3083,8 @@ class rcube_imap
             if (is_array($namespace)) {
                 foreach ($namespace as $ns) {
                     if ($len = strlen($ns[0])) {
-                        if (($len > 1 && $mailbox == substr($ns[0], 0, -1))
-                            || strpos($mailbox, $ns[0]) === 0
+                        if (($len > 1 && $folder == substr($ns[0], 0, -1))
+                            || strpos($folder, $ns[0]) === 0
                         ) {
                             return $type;
                         }
@@ -3508,62 +3103,66 @@ class rcube_imap
      * For input it adds the prefix. Use it before creating a folder in root
      * of the folders tree.
      *
-     * @param string $mailbox Folder name
+     * @param string $folder Folder name
      * @param string $mode    Mode name (out/in)
      *
      * @return string Folder name
      */
-    function mod_mailbox($mailbox, $mode = 'out')
+    public function mod_folder($folder, $mode = 'out')
     {
-        if (!strlen($mailbox)) {
-            return $mailbox;
+        if (!strlen($folder)) {
+            return $folder;
         }
 
         $prefix     = $this->namespace['prefix']; // see set_env()
         $prefix_len = strlen($prefix);
 
         if (!$prefix_len) {
-            return $mailbox;
+            return $folder;
         }
 
         // remove prefix for output
         if ($mode == 'out') {
-            if (substr($mailbox, 0, $prefix_len) === $prefix) {
-                return substr($mailbox, $prefix_len);
+            if (substr($folder, 0, $prefix_len) === $prefix) {
+                return substr($folder, $prefix_len);
             }
         }
         // add prefix for input (e.g. folder creation)
         else {
-            return $prefix . $mailbox;
+            return $prefix . $folder;
         }
 
-        return $mailbox;
+        return $folder;
     }
 
 
     /**
      * Gets folder attributes from LIST response, e.g. \Noselect, \Noinferiors
      *
-     * @param string $mailbox Folder name
+     * @param string $folder Folder name
      * @param bool   $force   Set to True if attributes should be refreshed
      *
      * @return array Options list
      */
-    function mailbox_attributes($mailbox, $force=false)
+    public function folder_attributes($folder, $force=false)
     {
         // get attributes directly from LIST command
-        if (!empty($this->conn->data['LIST']) && is_array($this->conn->data['LIST'][$mailbox])) {
-            $opts = $this->conn->data['LIST'][$mailbox];
+        if (!empty($this->conn->data['LIST']) && is_array($this->conn->data['LIST'][$folder])) {
+            $opts = $this->conn->data['LIST'][$folder];
         }
         // get cached folder attributes
         else if (!$force) {
             $opts = $this->get_cache('mailboxes.attributes');
-            $opts = $opts[$mailbox];
+            $opts = $opts[$folder];
         }
 
         if (!is_array($opts)) {
-            $this->conn->listMailboxes('', $mailbox);
-            $opts = $this->conn->data['LIST'][$mailbox];
+            if (!$this->check_connection()) {
+                return array();
+            }
+
+            $this->conn->listMailboxes('', $folder);
+            $opts = $this->conn->data['LIST'][$folder];
         }
 
         return is_array($opts) ? $opts : array();
@@ -3571,31 +3170,39 @@ class rcube_imap
 
 
     /**
-     * Gets connection (and current mailbox) data: UIDVALIDITY, EXISTS, RECENT,
+     * Gets connection (and current folder) data: UIDVALIDITY, EXISTS, RECENT,
      * PERMANENTFLAGS, UIDNEXT, UNSEEN
      *
-     * @param string $mailbox Folder name
+     * @param string $folder Folder name
      *
      * @return array Data
      */
-    function mailbox_data($mailbox)
+    public function folder_data($folder)
     {
-        if (!strlen($mailbox))
-            $mailbox = $this->mailbox !== null ? $this->mailbox : 'INBOX';
-
-        if ($this->conn->selected != $mailbox) {
-            if ($this->conn->select($mailbox))
-                $this->mailbox = $mailbox;
-            else
-                return null;
+        if (!strlen($folder)) {
+            $folder = $this->folder !== null ? $this->folder : 'INBOX';
         }
 
-        $data = $this->conn->data;
+        if ($this->conn->selected != $folder) {
+            if (!$this->check_connection()) {
+                return array();
+            }
+
+            if ($this->conn->select($folder)) {
+                $this->folder = $folder;
+            }
+            else {
+                return null;
+            }
+        }
+
+        $data = $this->conn->data;
 
         // add (E)SEARCH result for ALL UNDELETED query
-        if (!empty($this->icache['undeleted_idx']) && $this->icache['undeleted_idx'][0] == $mailbox) {
-            $data['ALL_UNDELETED']   = $this->icache['undeleted_idx'][1];
-            $data['COUNT_UNDELETED'] = $this->icache['undeleted_idx'][2];
+        if (!empty($this->icache['undeleted_idx'])
+            && $this->icache['undeleted_idx']->get_parameters('MAILBOX') == $folder
+        ) {
+            $data['UNDELETED'] = $this->icache['undeleted_idx'];
         }
 
         return $data;
@@ -3605,13 +3212,13 @@ class rcube_imap
     /**
      * Returns extended information about the folder
      *
-     * @param string $mailbox Folder name
+     * @param string $folder Folder name
      *
      * @return array Data
      */
-    function mailbox_info($mailbox)
+    public function folder_info($folder)
     {
-        if ($this->icache['options'] && $this->icache['options']['name'] == $mailbox) {
+        if ($this->icache['options'] && $this->icache['options']['name'] == $folder) {
             return $this->icache['options'];
         }
 
@@ -3621,7 +3228,7 @@ class rcube_imap
 
         // check if the folder is a namespace prefix
         if (!empty($namespace)) {
-            $mbox = $mailbox . $this->delimiter;
+            $mbox = $folder . $this->delimiter;
             foreach ($namespace as $ns) {
                 if (!empty($ns)) {
                     foreach ($ns as $item) {
@@ -3635,7 +3242,7 @@ class rcube_imap
         }
         // check if the folder is other user virtual-root
         if (!$options['is_root'] && !empty($namespace) && !empty($namespace['other'])) {
-            $parts = explode($this->delimiter, $mailbox);
+            $parts = explode($this->delimiter, $folder);
             if (count($parts) == 2) {
                 $mbox = $parts[0] . $this->delimiter;
                 foreach ($namespace['other'] as $item) {
@@ -3647,13 +3254,12 @@ class rcube_imap
             }
         }
 
-        $options['name']       = $mailbox;
-        $options['attributes'] = $this->mailbox_attributes($mailbox, true);
-        $options['namespace']  = $this->mailbox_namespace($mailbox);
-        $options['rights']     = $acl && !$options['is_root'] ? (array)$this->my_rights($mailbox) : array();
-        $options['special']    = in_array($mailbox, $this->default_folders);
+        $options['name']       = $folder;
+        $options['attributes'] = $this->folder_attributes($folder, true);
+        $options['namespace']  = $this->folder_namespace($folder);
+        $options['special']    = in_array($folder, $this->default_folders);
 
-        // Set 'noselect' and 'norename' flags
+        // Set 'noselect' flag
         if (is_array($options['attributes'])) {
             foreach ($options['attributes'] as $attrib) {
                 $attrib = strtolower($attrib);
@@ -3666,6 +3272,15 @@ class rcube_imap
             $options['noselect'] = true;
         }
 
+        // Get folder rights (MYRIGHTS)
+        if ($acl && !$options['noselect']) {
+            // skip shared roots
+            if (!$options['is_root'] || $options['namespace'] == 'personal') {
+                $options['rights'] =  (array)$this->my_rights($folder);
+            }
+        }
+
+        // Set 'norename' flag
         if (!empty($options['rights'])) {
             $options['norename'] = !in_array('x', $options['rights']) && !in_array('d', $options['rights']);
 
@@ -3686,12 +3301,12 @@ class rcube_imap
     /**
      * Synchronizes messages cache.
      *
-     * @param string $mailbox Folder name
+     * @param string $folder Folder name
      */
-    public function mailbox_sync($mailbox)
+    public function folder_sync($folder)
     {
         if ($mcache = $this->get_mcache_engine()) {
-            $mcache->synchronize($mailbox);
+            $mcache->synchronize($folder);
         }
     }
 
@@ -3701,13 +3316,19 @@ class rcube_imap
      *
      * @return string Space-separated list of header names
      */
-    private function get_fetch_headers()
+    protected function get_fetch_headers()
     {
-        $headers = explode(' ', $this->fetch_add_headers);
-        $headers = array_map('strtoupper', $headers);
+        if (!empty($this->options['fetch_headers'])) {
+            $headers = explode(' ', $this->options['fetch_headers']);
+            $headers = array_map('strtoupper', $headers);
+        }
+        else {
+            $headers = array();
+        }
 
-        if ($this->messages_caching || $this->get_all_headers)
+        if ($this->messages_caching || $this->options['all_headers']) {
             $headers = array_merge($headers, $this->all_headers);
+        }
 
         return implode(' ', array_unique($headers));
     }
@@ -3718,128 +3339,149 @@ class rcube_imap
      * ----------------------------------------*/
 
     /**
-     * Changes the ACL on the specified mailbox (SETACL)
+     * Changes the ACL on the specified folder (SETACL)
      *
-     * @param string $mailbox Mailbox name
+     * @param string $folder  Folder name
      * @param string $user    User name
      * @param string $acl     ACL string
      *
      * @return boolean True on success, False on failure
-     *
-     * @access public
      * @since 0.5-beta
      */
-    function set_acl($mailbox, $user, $acl)
+    public function set_acl($folder, $user, $acl)
     {
-        if ($this->get_capability('ACL'))
-            return $this->conn->setACL($mailbox, $user, $acl);
+        if (!$this->get_capability('ACL')) {
+            return false;
+        }
 
-        return false;
+        if (!$this->check_connection()) {
+            return false;
+        }
+
+        return $this->conn->setACL($folder, $user, $acl);
     }
 
 
     /**
      * Removes any <identifier,rights> pair for the
      * specified user from the ACL for the specified
-     * mailbox (DELETEACL)
+     * folder (DELETEACL)
      *
-     * @param string $mailbox Mailbox name
+     * @param string $folder  Folder name
      * @param string $user    User name
      *
      * @return boolean True on success, False on failure
-     *
-     * @access public
      * @since 0.5-beta
      */
-    function delete_acl($mailbox, $user)
+    public function delete_acl($folder, $user)
     {
-        if ($this->get_capability('ACL'))
-            return $this->conn->deleteACL($mailbox, $user);
+        if (!$this->get_capability('ACL')) {
+            return false;
+        }
 
-        return false;
+        if (!$this->check_connection()) {
+            return false;
+        }
+
+        return $this->conn->deleteACL($folder, $user);
     }
 
 
     /**
-     * Returns the access control list for mailbox (GETACL)
+     * Returns the access control list for folder (GETACL)
      *
-     * @param string $mailbox Mailbox name
+     * @param string $folder Folder name
      *
      * @return array User-rights array on success, NULL on error
-     * @access public
      * @since 0.5-beta
      */
-    function get_acl($mailbox)
+    public function get_acl($folder)
     {
-        if ($this->get_capability('ACL'))
-            return $this->conn->getACL($mailbox);
+        if (!$this->get_capability('ACL')) {
+            return null;
+        }
+
+        if (!$this->check_connection()) {
+            return null;
+        }
 
-        return NULL;
+        return $this->conn->getACL($folder);
     }
 
 
     /**
      * Returns information about what rights can be granted to the
-     * user (identifier) in the ACL for the mailbox (LISTRIGHTS)
+     * user (identifier) in the ACL for the folder (LISTRIGHTS)
      *
-     * @param string $mailbox Mailbox name
+     * @param string $folder  Folder name
      * @param string $user    User name
      *
      * @return array List of user rights
-     * @access public
      * @since 0.5-beta
      */
-    function list_rights($mailbox, $user)
+    public function list_rights($folder, $user)
     {
-        if ($this->get_capability('ACL'))
-            return $this->conn->listRights($mailbox, $user);
+        if (!$this->get_capability('ACL')) {
+            return null;
+        }
 
-        return NULL;
+        if (!$this->check_connection()) {
+            return null;
+        }
+
+        return $this->conn->listRights($folder, $user);
     }
 
 
     /**
      * Returns the set of rights that the current user has to
-     * mailbox (MYRIGHTS)
+     * folder (MYRIGHTS)
      *
-     * @param string $mailbox Mailbox name
+     * @param string $folder Folder name
      *
      * @return array MYRIGHTS response on success, NULL on error
-     * @access public
      * @since 0.5-beta
      */
-    function my_rights($mailbox)
+    public function my_rights($folder)
     {
-        if ($this->get_capability('ACL'))
-            return $this->conn->myRights($mailbox);
+        if (!$this->get_capability('ACL')) {
+            return null;
+        }
+
+        if (!$this->check_connection()) {
+            return null;
+        }
 
-        return NULL;
+        return $this->conn->myRights($folder);
     }
 
 
     /**
      * Sets IMAP metadata/annotations (SETMETADATA/SETANNOTATION)
      *
-     * @param string $mailbox Mailbox name (empty for server metadata)
+     * @param string $folder  Folder name (empty for server metadata)
      * @param array  $entries Entry-value array (use NULL value as NIL)
      *
      * @return boolean True on success, False on failure
-     * @access public
      * @since 0.5-beta
      */
-    function set_metadata($mailbox, $entries)
+    public function set_metadata($folder, $entries)
     {
+        if (!$this->check_connection()) {
+            return false;
+        }
+
         if ($this->get_capability('METADATA') ||
-            (!strlen($mailbox) && $this->get_capability('METADATA-SERVER'))
+            (!strlen($folder) && $this->get_capability('METADATA-SERVER'))
         ) {
-            return $this->conn->setMetadata($mailbox, $entries);
+            return $this->conn->setMetadata($folder, $entries);
         }
         else if ($this->get_capability('ANNOTATEMORE') || $this->get_capability('ANNOTATEMORE2')) {
             foreach ((array)$entries as $entry => $value) {
                 list($ent, $attr) = $this->md2annotate($entry);
                 $entries[$entry] = array($ent, $attr, $value);
             }
-            return $this->conn->setAnnotation($mailbox, $entries);
+            return $this->conn->setAnnotation($folder, $entries);
         }
 
         return false;
@@ -3849,27 +3491,29 @@ class rcube_imap
     /**
      * Unsets IMAP metadata/annotations (SETMETADATA/SETANNOTATION)
      *
-     * @param string $mailbox Mailbox name (empty for server metadata)
+     * @param string $folder  Folder name (empty for server metadata)
      * @param array  $entries Entry names array
      *
      * @return boolean True on success, False on failure
-     *
-     * @access public
      * @since 0.5-beta
      */
-    function delete_metadata($mailbox, $entries)
+    public function delete_metadata($folder, $entries)
     {
+        if (!$this->check_connection()) {
+            return false;
+        }
+
         if ($this->get_capability('METADATA') || 
-            (!strlen($mailbox) && $this->get_capability('METADATA-SERVER'))
+            (!strlen($folder) && $this->get_capability('METADATA-SERVER'))
         ) {
-            return $this->conn->deleteMetadata($mailbox, $entries);
+            return $this->conn->deleteMetadata($folder, $entries);
         }
         else if ($this->get_capability('ANNOTATEMORE') || $this->get_capability('ANNOTATEMORE2')) {
             foreach ((array)$entries as $idx => $entry) {
                 list($ent, $attr) = $this->md2annotate($entry);
                 $entries[$idx] = array($ent, $attr, NULL);
             }
-            return $this->conn->setAnnotation($mailbox, $entries);
+            return $this->conn->setAnnotation($folder, $entries);
         }
 
         return false;
@@ -3879,21 +3523,23 @@ class rcube_imap
     /**
      * Returns IMAP metadata/annotations (GETMETADATA/GETANNOTATION)
      *
-     * @param string $mailbox Mailbox name (empty for server metadata)
+     * @param string $folder  Folder name (empty for server metadata)
      * @param array  $entries Entries
      * @param array  $options Command options (with MAXSIZE and DEPTH keys)
      *
      * @return array Metadata entry-value hash array on success, NULL on error
-     *
-     * @access public
      * @since 0.5-beta
      */
-    function get_metadata($mailbox, $entries, $options=array())
+    public function get_metadata($folder, $entries, $options=array())
     {
-        if ($this->get_capability('METADATA') || 
-            (!strlen($mailbox) && $this->get_capability('METADATA-SERVER'))
+        if (!$this->check_connection()) {
+            return null;
+        }
+
+        if ($this->get_capability('METADATA') ||
+            (!strlen($folder) && $this->get_capability('METADATA-SERVER'))
         ) {
-            return $this->conn->getMetadata($mailbox, $entries, $options);
+            return $this->conn->getMetadata($folder, $entries, $options);
         }
         else if ($this->get_capability('ANNOTATEMORE') || $this->get_capability('ANNOTATEMORE2')) {
             $queries = array();
@@ -3906,14 +3552,16 @@ class rcube_imap
             }
 
             // @TODO: Honor MAXSIZE and DEPTH options
-            foreach ($queries as $attrib => $entry)
-                if ($result = $this->conn->getAnnotation($mailbox, $entry, $attrib))
+            foreach ($queries as $attrib => $entry) {
+                if ($result = $this->conn->getAnnotation($folder, $entry, $attrib)) {
                     $res = array_merge_recursive($res, $result);
+                }
+            }
 
             return $res;
         }
 
-        return NULL;
+        return null;
     }
 
 
@@ -3925,7 +3573,7 @@ class rcube_imap
      *
      * @return array Entry-attribute list, NULL if not supported (?)
      */
-    private function md2annotate($entry)
+    protected function md2annotate($entry)
     {
         if (substr($entry, 0, 7) == '/shared') {
             return array(substr($entry, 7), 'value.shared');
@@ -3935,7 +3583,7 @@ class rcube_imap
         }
 
         // @TODO: log error
-        return NULL;
+        return null;
     }
 
 
@@ -3947,16 +3595,16 @@ class rcube_imap
      * Enable or disable indexes caching
      *
      * @param string $type Cache type (@see rcmail::get_cache)
-     * @access public
      */
-    function set_caching($type)
+    public function set_caching($type)
     {
         if ($type) {
             $this->caching = $type;
         }
         else {
-            if ($this->cache)
+            if ($this->cache) {
                 $this->cache->close();
+            }
             $this->cache   = null;
             $this->caching = false;
         }
@@ -3965,11 +3613,13 @@ class rcube_imap
     /**
      * Getter for IMAP cache object
      */
-    private function get_cache_engine()
+    protected function get_cache_engine()
     {
         if ($this->caching && !$this->cache) {
             $rcmail = rcmail::get_instance();
-            $this->cache = $rcmail->get_cache('IMAP', $this->caching);
+            $ttl = $rcmail->config->get('message_cache_lifetime', '10d');
+            $ttl = get_offset_time($ttl) - time();
+            $this->cache = $rcmail->get_cache('IMAP', $this->caching, $ttl);
         }
 
         return $this->cache;
@@ -3979,10 +3629,10 @@ class rcube_imap
      * Returns cached value
      *
      * @param string $key Cache key
+     *
      * @return mixed
-     * @access public
      */
-    function get_cache($key)
+    public function get_cache($key)
     {
         if ($cache = $this->get_cache_engine()) {
             return $cache->get($key);
@@ -3994,9 +3644,8 @@ class rcube_imap
      *
      * @param string $key  Cache key
      * @param mixed  $data Data
-     * @access public
      */
-    function update_cache($key, $data)
+    public function update_cache($key, $data)
     {
         if ($cache = $this->get_cache_engine()) {
             $cache->set($key, $data);
@@ -4009,15 +3658,28 @@ class rcube_imap
      * @param string  $key         Cache key name or pattern
      * @param boolean $prefix_mode Enable it to clear all keys starting
      *                             with prefix specified in $key
-     * @access public
      */
-    function clear_cache($key=null, $prefix_mode=false)
+    public function clear_cache($key = null, $prefix_mode = false)
     {
         if ($cache = $this->get_cache_engine()) {
             $cache->remove($key, $prefix_mode);
         }
     }
 
+    /**
+     * Delete outdated cache entries
+     */
+    public function expunge_cache()
+    {
+        if ($this->mcache) {
+            $ttl = rcmail::get_instance()->config->get('message_cache_lifetime', '10d');
+            $this->mcache->expunge($ttl);
+        }
+
+        if ($this->cache)
+            $this->cache->expunge();
+    }
+
 
     /* --------------------------------
      *   message caching methods
@@ -4028,266 +3690,54 @@ class rcube_imap
      *
      * @param boolean $set Flag
      */
-    function set_messages_caching($set)
+    public function set_messages_caching($set)
     {
         if ($set) {
             $this->messages_caching = true;
         }
         else {
-            if ($this->mcache)
+            if ($this->mcache) {
                 $this->mcache->close();
+            }
             $this->mcache = null;
             $this->messages_caching = false;
         }
     }
 
+
     /**
      * Getter for messages cache object
      */
-    private function get_mcache_engine()
+    protected function get_mcache_engine()
     {
         if ($this->messages_caching && !$this->mcache) {
             $rcmail = rcmail::get_instance();
             if ($dbh = $rcmail->get_dbh()) {
                 $this->mcache = new rcube_imap_cache(
-                    $dbh, $this, $rcmail->user->ID, $this->skip_deleted);
+                    $dbh, $this, $rcmail->user->ID, $this->options['skip_deleted']);
             }
         }
 
         return $this->mcache;
     }
 
+
     /**
      * Clears the messages cache.
      *
-     * @param string $mailbox Folder name
+     * @param string $folder Folder name
      * @param array  $uids    Optional message UIDs to remove from cache
      */
-    function clear_message_cache($mailbox = null, $uids = null)
+    protected function clear_message_cache($folder = null, $uids = null)
     {
         if ($mcache = $this->get_mcache_engine()) {
-            $mcache->clear($mailbox, $uids);
-        }
-    }
-
-
-
-    /* --------------------------------
-     *   encoding/decoding methods
-     * --------------------------------*/
-
-    /**
-     * Split an address list into a structured array list
-     *
-     * @param string  $input  Input string
-     * @param int     $max    List only this number of addresses
-     * @param boolean $decode Decode address strings
-     * @return array  Indexed list of addresses
-     */
-    function decode_address_list($input, $max=null, $decode=true)
-    {
-        $a = $this->_parse_address_list($input, $decode);
-        $out = array();
-        // Special chars as defined by RFC 822 need to in quoted string (or escaped).
-        $special_chars = '[\(\)\<\>\\\.\[\]@,;:"]';
-
-        if (!is_array($a))
-            return $out;
-
-        $c = count($a);
-        $j = 0;
-
-        foreach ($a as $val) {
-            $j++;
-            $address = trim($val['address']);
-            $name    = trim($val['name']);
-
-            if ($name && $address && $name != $address)
-                $string = sprintf('%s <%s>', preg_match("/$special_chars/", $name) ? '"'.addcslashes($name, '"').'"' : $name, $address);
-            else if ($address)
-                $string = $address;
-            else if ($name)
-                $string = $name;
-
-            $out[$j] = array(
-                'name'   => $name,
-                'mailto' => $address,
-                'string' => $string
-            );
-
-            if ($max && $j==$max)
-                break;
-        }
-
-        return $out;
-    }
-
-
-    /**
-     * Decode a message header value
-     *
-     * @param string  $input         Header value
-     * @param boolean $remove_quotas Remove quotes if necessary
-     * @return string Decoded string
-     */
-    function decode_header($input, $remove_quotes=false)
-    {
-        $str = rcube_imap::decode_mime_string((string)$input, $this->default_charset);
-        if ($str[0] == '"' && $remove_quotes)
-            $str = str_replace('"', '', $str);
-
-        return $str;
-    }
-
-
-    /**
-     * Decode a mime-encoded string to internal charset
-     *
-     * @param string $input    Header value
-     * @param string $fallback Fallback charset if none specified
-     *
-     * @return string Decoded string
-     * @static
-     */
-    public static function decode_mime_string($input, $fallback=null)
-    {
-        if (!empty($fallback)) {
-            $default_charset = $fallback;
+            $mcache->clear($folder, $uids);
         }
-        else {
-            $default_charset = rcmail::get_instance()->config->get('default_charset', 'ISO-8859-1');
-        }
-
-        // rfc: all line breaks or other characters not found
-        // in the Base64 Alphabet must be ignored by decoding software
-        // delete all blanks between MIME-lines, differently we can
-        // receive unnecessary blanks and broken utf-8 symbols
-        $input = preg_replace("/\?=\s+=\?/", '?==?', $input);
-
-        // encoded-word regexp
-        $re = '/=\?([^?]+)\?([BbQq])\?([^\n]*?)\?=/';
-
-        // Find all RFC2047's encoded words
-        if (preg_match_all($re, $input, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {
-            // Initialize variables
-            $tmp   = array();
-            $out   = '';
-            $start = 0;
-
-            foreach ($matches as $idx => $m) {
-                $pos      = $m[0][1];
-                $charset  = $m[1][0];
-                $encoding = $m[2][0];
-                $text     = $m[3][0];
-                $length   = strlen($m[0][0]);
-
-                // Append everything that is before the text to be decoded
-                if ($start != $pos) {
-                    $substr = substr($input, $start, $pos-$start);
-                    $out   .= rcube_charset_convert($substr, $default_charset);
-                    $start  = $pos;
-                }
-                $start += $length;
-
-                // Per RFC2047, each string part "MUST represent an integral number
-                // of characters . A multi-octet character may not be split across
-                // adjacent encoded-words." However, some mailers break this, so we
-                // try to handle characters spanned across parts anyway by iterating
-                // through and aggregating sequential encoded parts with the same
-                // character set and encoding, then perform the decoding on the
-                // aggregation as a whole.
-
-                $tmp[] = $text;
-                if ($next_match = $matches[$idx+1]) {
-                    if ($next_match[0][1] == $start
-                        && $next_match[1][0] == $charset
-                        && $next_match[2][0] == $encoding
-                    ) {
-                        continue;
-                    }
-                }
-
-                $count = count($tmp);
-                $text  = '';
-
-                // Decode and join encoded-word's chunks
-                if ($encoding == 'B' || $encoding == 'b') {
-                    // base64 must be decoded a segment at a time
-                    for ($i=0; $i<$count; $i++)
-                        $text .= base64_decode($tmp[$i]);
-                }
-                else { //if ($encoding == 'Q' || $encoding == 'q') {
-                    // quoted printable can be combined and processed at once
-                    for ($i=0; $i<$count; $i++)
-                        $text .= $tmp[$i];
-
-                    $text = str_replace('_', ' ', $text);
-                    $text = quoted_printable_decode($text);
-                }
-
-                $out .= rcube_charset_convert($text, $charset);
-                $tmp = array();
-            }
-
-            // add the last part of the input string
-            if ($start != strlen($input)) {
-                $out .= rcube_charset_convert(substr($input, $start), $default_charset);
-            }
-
-            // return the results
-            return $out;
-        }
-
-        // no encoding information, use fallback
-        return rcube_charset_convert($input, $default_charset);
-    }
-
-
-    /**
-     * Decode a mime part
-     *
-     * @param string $input    Input string
-     * @param string $encoding Part encoding
-     * @return string Decoded string
-     */
-    function mime_decode($input, $encoding='7bit')
-    {
-        switch (strtolower($encoding)) {
-        case 'quoted-printable':
-            return quoted_printable_decode($input);
-        case 'base64':
-            return base64_decode($input);
-        case 'x-uuencode':
-        case 'x-uue':
-        case 'uue':
-        case 'uuencode':
-            return convert_uudecode($input);
-        case '7bit':
-        default:
-            return $input;
-        }
-    }
-
-
-    /**
-     * Convert body charset to RCMAIL_CHARSET according to the ctype_parameters
-     *
-     * @param string $body        Part body to decode
-     * @param string $ctype_param Charset to convert from
-     * @return string Content converted to internal charset
-     */
-    function charset_decode($body, $ctype_param)
-    {
-        if (is_array($ctype_param) && !empty($ctype_param['charset']))
-            return rcube_charset_convert($body, $ctype_param['charset']);
-
-        // defaults to what is specified in the class header
-        return rcube_charset_convert($body,  $this->default_charset);
     }
 
 
     /* --------------------------------
-     *         private methods
+     *         protected methods
      * --------------------------------*/
 
     /**
@@ -4295,24 +3745,24 @@ class rcube_imap
      *
      * @param string $sort_field Sort column
      * @param string $sort_order Sort order
-     * @access private
      */
-    private function _set_sort_order($sort_field, $sort_order)
+    protected function set_sort_order($sort_field, $sort_order)
     {
-        if ($sort_field != null)
+        if ($sort_field != null) {
             $this->sort_field = asciiwords($sort_field);
-        if ($sort_order != null)
+        }
+        if ($sort_order != null) {
             $this->sort_order = strtoupper($sort_order) == 'DESC' ? 'DESC' : 'ASC';
+        }
     }
 
 
     /**
-     * Sort mailboxes first by default folders and then in alphabethical order
+     * Sort folders first by default folders and then in alphabethical order
      *
-     * @param array $a_folders Mailboxes list
-     * @access private
+     * @param array $a_folders Folders list
      */
-    private function _sort_mailbox_list($a_folders)
+    protected function sort_folder_list($a_folders)
     {
         $a_out = $a_defaults = $folders = array();
 
@@ -4320,13 +3770,16 @@ class rcube_imap
 
         // find default folders and skip folders starting with '.'
         foreach ($a_folders as $i => $folder) {
-            if ($folder[0] == '.')
+            if ($folder[0] == '.') {
                 continue;
+            }
 
-            if (($p = array_search($folder, $this->default_folders)) !== false && !$a_defaults[$p])
+            if (($p = array_search($folder, $this->default_folders)) !== false && !$a_defaults[$p]) {
                 $a_defaults[$p] = $folder;
-            else
+            }
+            else {
                 $folders[$folder] = rcube_charset_convert($folder, 'UTF7-IMAP');
+            }
         }
 
         // sort folders and place defaults on the top
@@ -4342,7 +3795,7 @@ class rcube_imap
             // set the type of folder name variable (#1485527)
             $a_out[] = (string) $folder;
             unset($folders[$key]);
-            $this->_rsort($folder, $delimiter, $folders, $a_out);
+            $this->rsort($folder, $delimiter, $folders, $a_out);
         }
 
         return $a_out;
@@ -4350,103 +3803,77 @@ class rcube_imap
 
 
     /**
-     * @access private
+     * Recursive method for sorting folders
      */
-    private function _rsort($folder, $delimiter, &$list, &$out)
+    protected function rsort($folder, $delimiter, &$list, &$out)
     {
         while (list($key, $name) = each($list)) {
                if (strpos($name, $folder.$delimiter) === 0) {
                    // set the type of folder name variable (#1485527)
                $out[] = (string) $name;
                    unset($list[$key]);
-                   $this->_rsort($name, $delimiter, $list, $out);
+                   $this->rsort($name, $delimiter, $list, $out);
                }
         }
         reset($list);
     }
 
 
-    /**
-     * Finds message sequence ID for specified UID
-     *
-     * @param int    $uid      Message UID
-     * @param string $mailbox  Mailbox name
-     * @param bool   $force    True to skip cache
-     *
-     * @return int Message (sequence) ID
-     */
-    function uid2id($uid, $mailbox = null, $force = false)
-    {
-        if (!strlen($mailbox)) {
-            $mailbox = $this->mailbox;
-        }
-
-        if (!empty($this->uid_id_map[$mailbox][$uid])) {
-            return $this->uid_id_map[$mailbox][$uid];
-        }
-
-        if (!$force && ($mcache = $this->get_mcache_engine()))
-            $id = $mcache->uid2id($mailbox, $uid);
-
-        if (empty($id))
-            $id = $this->conn->UID2ID($mailbox, $uid);
-
-        $this->uid_id_map[$mailbox][$uid] = $id;
-
-        return $id;
-    }
-
-
     /**
      * Find UID of the specified message sequence ID
      *
      * @param int    $id       Message (sequence) ID
-     * @param string $mailbox  Mailbox name
-     * @param bool   $force    True to skip cache
+     * @param string $folder   Folder name
      *
      * @return int Message UID
      */
-    function id2uid($id, $mailbox = null, $force = false)
+    public function id2uid($id, $folder = null)
     {
-        if (!strlen($mailbox)) {
-            $mailbox = $this->mailbox;
+        if (!strlen($folder)) {
+            $folder = $this->folder;
         }
 
-        if ($uid = array_search($id, (array)$this->uid_id_map[$mailbox])) {
+        if ($uid = array_search($id, (array)$this->uid_id_map[$folder])) {
             return $uid;
         }
 
-        if (!$force && ($mcache = $this->get_mcache_engine()))
-            $uid = $mcache->id2uid($mailbox, $id);
+        if (!$this->check_connection()) {
+            return null;
+        }
 
-        if (empty($uid))
-            $uid = $this->conn->ID2UID($mailbox, $id);
+        $uid = $this->conn->ID2UID($folder, $id);
 
-        $this->uid_id_map[$mailbox][$uid] = $id;
+        $this->uid_id_map[$folder][$uid] = $id;
 
         return $uid;
     }
 
 
     /**
-     * Subscribe/unsubscribe a list of mailboxes and update local cache
-     * @access private
+     * Subscribe/unsubscribe a list of folders and update local cache
      */
-    private function _change_subscription($a_mboxes, $mode)
+    protected function change_subscription($folders, $mode)
     {
         $updated = false;
 
-        if (is_array($a_mboxes))
-            foreach ($a_mboxes as $i => $mailbox) {
-                $a_mboxes[$i] = $mailbox;
+        if (!empty($folders)) {
+            if (!$this->check_connection()) {
+                return false;
+            }
 
-                if ($mode == 'subscribe')
-                    $updated = $this->conn->subscribe($mailbox);
-                else if ($mode == 'unsubscribe')
-                    $updated = $this->conn->unsubscribe($mailbox);
+            foreach ((array)$folders as $i => $folder) {
+                $folders[$i] = $folder;
+
+                if ($mode == 'subscribe') {
+                    $updated = $this->conn->subscribe($folder);
+                }
+                else if ($mode == 'unsubscribe') {
+                    $updated = $this->conn->unsubscribe($folder);
+                }
             }
+        }
 
-        // clear cached mailbox list(s)
+        // clear cached folders list(s)
         if ($updated) {
             $this->clear_cache('mailboxes', true);
         }
@@ -4456,322 +3883,202 @@ class rcube_imap
 
 
     /**
-     * Increde/decrese messagecount for a specific mailbox
-     * @access private
+     * Increde/decrese messagecount for a specific folder
      */
-    private function _set_messagecount($mailbox, $mode, $increment)
+    protected function set_messagecount($folder, $mode, $increment)
     {
+        if (!is_numeric($increment)) {
+            return false;
+        }
+
         $mode = strtoupper($mode);
-        $a_mailbox_cache = $this->get_cache('messagecount');
+        $a_folder_cache = $this->get_cache('messagecount');
 
-        if (!is_array($a_mailbox_cache[$mailbox]) || !isset($a_mailbox_cache[$mailbox][$mode]) || !is_numeric($increment))
+        if (!is_array($a_folder_cache[$folder]) || !isset($a_folder_cache[$folder][$mode])) {
             return false;
+        }
 
         // add incremental value to messagecount
-        $a_mailbox_cache[$mailbox][$mode] += $increment;
+        $a_folder_cache[$folder][$mode] += $increment;
 
         // there's something wrong, delete from cache
-        if ($a_mailbox_cache[$mailbox][$mode] < 0)
-            unset($a_mailbox_cache[$mailbox][$mode]);
+        if ($a_folder_cache[$folder][$mode] < 0) {
+            unset($a_folder_cache[$folder][$mode]);
+        }
 
         // write back to cache
-        $this->update_cache('messagecount', $a_mailbox_cache);
+        $this->update_cache('messagecount', $a_folder_cache);
 
         return true;
     }
 
 
     /**
-     * Remove messagecount of a specific mailbox from cache
-     * @access private
+     * Remove messagecount of a specific folder from cache
      */
-    private function _clear_messagecount($mailbox, $mode=null)
+    protected function clear_messagecount($folder, $mode=null)
     {
-        $a_mailbox_cache = $this->get_cache('messagecount');
+        $a_folder_cache = $this->get_cache('messagecount');
 
-        if (is_array($a_mailbox_cache[$mailbox])) {
+        if (is_array($a_folder_cache[$folder])) {
             if ($mode) {
-                unset($a_mailbox_cache[$mailbox][$mode]);
+                unset($a_folder_cache[$folder][$mode]);
             }
             else {
-                unset($a_mailbox_cache[$mailbox]);
+                unset($a_folder_cache[$folder]);
             }
-            $this->update_cache('messagecount', $a_mailbox_cache);
+            $this->update_cache('messagecount', $a_folder_cache);
         }
     }
 
 
     /**
-     * Split RFC822 header string into an associative array
-     * @access private
+     * This is our own debug handler for the IMAP connection
+     * @access public
      */
-    private function _parse_headers($headers)
-    {
-        $a_headers = array();
-        $headers = preg_replace('/\r?\n(\t| )+/', ' ', $headers);
-        $lines = explode("\n", $headers);
-        $c = count($lines);
-
-        for ($i=0; $i<$c; $i++) {
-            if ($p = strpos($lines[$i], ': ')) {
-                $field = strtolower(substr($lines[$i], 0, $p));
-                $value = trim(substr($lines[$i], $p+1));
-                if (!empty($value))
-                    $a_headers[$field] = $value;
-            }
-        }
-
-        return $a_headers;
+    public function debug_handler(&$imap, $message)
+    {
+        write_log('imap', $message);
     }
 
 
     /**
-     * @access private
+     * Deprecated methods (to be removed)
      */
-    private function _parse_address_list($str, $decode=true)
-    {
-        // remove any newlines and carriage returns before
-        $str = preg_replace('/\r?\n(\s|\t)?/', ' ', $str);
-
-        // extract list items, remove comments
-        $str = self::explode_header_string(',;', $str, true);
-        $result = array();
-
-        // simplified regexp, supporting quoted local part
-        $email_rx = '(\S+|("\s*(?:[^"\f\n\r\t\v\b\s]+\s*)+"))@\S+';
 
-        foreach ($str as $key => $val) {
-            $name    = '';
-            $address = '';
-            $val     = trim($val);
+    public function decode_address_list($input, $max = null, $decode = true, $fallback = null)
+    {
+        return rcube_mime::decode_address_list($input, $max, $decode, $fallback);
+    }
 
-            if (preg_match('/(.*)<('.$email_rx.')>$/', $val, $m)) {
-                $address = $m[2];
-                $name    = trim($m[1]);
-            }
-            else if (preg_match('/^('.$email_rx.')$/', $val, $m)) {
-                $address = $m[1];
-                $name    = '';
-            }
-            else {
-                $name = $val;
-            }
+    public function decode_header($input, $fallback = null)
+    {
+        return rcube_mime::decode_mime_string((string)$input, $fallback);
+    }
 
-            // dequote and/or decode name
-            if ($name) {
-                if ($name[0] == '"' && $name[strlen($name)-1] == '"') {
-                    $name = substr($name, 1, -1);
-                    $name = stripslashes($name);
-                }
-                if ($decode) {
-                    $name = $this->decode_header($name);
-                }
-            }
+    public static function decode_mime_string($input, $fallback = null)
+    {
+        return rcube_mime::decode_mime_string($input, $fallback);
+    }
 
-            if (!$address && $name) {
-                $address = $name;
-            }
+    public function mime_decode($input, $encoding = '7bit')
+    {
+        return rcube_mime::decode($input, $encoding);
+    }
 
-            if ($address) {
-                $result[$key] = array('name' => $name, 'address' => $address);
-            }
-        }
+    public static function explode_header_string($separator, $str, $remove_comments = false)
+    {
+        return rcube_mime::explode_header_string($separator, $str, $remove_comments);
+    }
 
-        return $result;
+    public function select_mailbox($mailbox)
+    {
+        // do nothing
     }
 
+    public function set_mailbox($folder)
+    {
+        $this->set_folder($folder);
+    }
 
-    /**
-     * Explodes header (e.g. address-list) string into array of strings
-     * using specified separator characters with proper handling
-     * of quoted-strings and comments (RFC2822)
-     *
-     * @param string $separator       String containing separator characters
-     * @param string $str             Header string
-     * @param bool   $remove_comments Enable to remove comments
-     *
-     * @return array Header items
-     */
-    static function explode_header_string($separator, $str, $remove_comments=false)
-    {
-        $length  = strlen($str);
-        $result  = array();
-        $quoted  = false;
-        $comment = 0;
-        $out     = '';
-
-        for ($i=0; $i<$length; $i++) {
-            // we're inside a quoted string
-            if ($quoted) {
-                if ($str[$i] == '"') {
-                    $quoted = false;
-                }
-                else if ($str[$i] == '\\') {
-                    if ($comment <= 0) {
-                        $out .= '\\';
-                    }
-                    $i++;
-                }
-            }
-            // we're inside a comment string
-            else if ($comment > 0) {
-                    if ($str[$i] == ')') {
-                        $comment--;
-                    }
-                    else if ($str[$i] == '(') {
-                        $comment++;
-                    }
-                    else if ($str[$i] == '\\') {
-                        $i++;
-                    }
-                    continue;
-            }
-            // separator, add to result array
-            else if (strpos($separator, $str[$i]) !== false) {
-                    if ($out) {
-                        $result[] = $out;
-                    }
-                    $out = '';
-                    continue;
-            }
-            // start of quoted string
-            else if ($str[$i] == '"') {
-                    $quoted = true;
-            }
-            // start of comment
-            else if ($remove_comments && $str[$i] == '(') {
-                    $comment++;
-            }
+    public function get_mailbox_name()
+    {
+        return $this->get_folder();
+    }
 
-            if ($comment <= 0) {
-                $out .= $str[$i];
-            }
-        }
+    public function list_headers($folder='', $page=NULL, $sort_field=NULL, $sort_order=NULL, $slice=0)
+    {
+        return $this->list_messages($folder, $page, $sort_field, $sort_order, $slice);
+    }
 
-        if ($out && $comment <= 0) {
-            $result[] = $out;
-        }
+    public function mailbox_status($folder = null)
+    {
+        return $this->folder_status($folder);
+    }
 
-        return $result;
+    public function message_index($folder = '', $sort_field = NULL, $sort_order = NULL)
+    {
+        return $this->index($folder, $sort_field, $sort_order);
     }
 
+    public function message_index_direct($folder, $sort_field = null, $sort_order = null, $skip_cache = true)
+    {
+        return $this->index_direct($folder, $sort_field, $sort_order, $skip_cache);
+    }
 
-    /**
-     * This is our own debug handler for the IMAP connection
-     * @access public
-     */
-    public function debug_handler(&$imap, $message)
+    public function list_mailboxes($root='', $name='*', $filter=null, $rights=null, $skip_sort=false)
     {
-        write_log('imap', $message);
+        return $this->list_folders_subscribed($root, $name, $filter, $rights, $skip_sort);
     }
 
-}  // end class rcube_imap
+    public function list_unsubscribed($root='', $name='*', $filter=null, $rights=null, $skip_sort=false)
+    {
+        return $this->list_folders($root, $name, $filter, $rights, $skip_sort);
+    }
 
+    public function get_mailbox_size($folder)
+    {
+        return $this->folder_size($folder);
+    }
 
-/**
- * Class representing a message part
- *
- * @package Mail
- */
-class rcube_message_part
-{
-    var $mime_id = '';
-    var $ctype_primary = 'text';
-    var $ctype_secondary = 'plain';
-    var $mimetype = 'text/plain';
-    var $disposition = '';
-    var $filename = '';
-    var $encoding = '8bit';
-    var $charset = '';
-    var $size = 0;
-    var $headers = array();
-    var $d_parameters = array();
-    var $ctype_parameters = array();
-
-    function __clone()
-    {
-        if (isset($this->parts))
-            foreach ($this->parts as $idx => $part)
-                if (is_object($part))
-                       $this->parts[$idx] = clone $part;
+    public function create_mailbox($folder, $subscribe=false)
+    {
+        return $this->create_folder($folder, $subscribe);
     }
-}
 
+    public function rename_mailbox($folder, $new_name)
+    {
+        return $this->rename_folder($folder, $new_name);
+    }
 
-/**
- * Class for sorting an array of rcube_mail_header objects in a predetermined order.
- *
- * @package Mail
- * @author Eric Stadtherr
- */
-class rcube_header_sorter
-{
-    private $seqs = array();
-    private $uids = array();
+    function delete_mailbox($folder)
+    {
+        return $this->delete_folder($folder);
+    }
 
+    function clear_mailbox($folder = null)
+    {
+        return $this->clear_folder($folder);
+    }
 
-    /**
-     * Set the predetermined sort order.
-     *
-     * @param array $index  Numerically indexed array of IMAP ID or UIDs
-     * @param bool  $is_uid Set to true if $index contains UIDs
-     */
-    function set_index($index, $is_uid = false)
+    public function mailbox_exists($folder, $subscription=false)
     {
-        $index = array_flip($index);
+        return $this->folder_exists($folder, $subscription);
+    }
 
-        if ($is_uid)
-            $this->uids = $index;
-        else
-            $this->seqs = $index;
+    public function mailbox_namespace($folder)
+    {
+        return $this->folder_namespace($folder);
     }
 
-    /**
-     * Sort the array of header objects
-     *
-     * @param array $headers Array of rcube_mail_header objects indexed by UID
-     */
-    function sort_headers(&$headers)
+    public function mod_mailbox($folder, $mode = 'out')
     {
-        if (!empty($this->uids))
-            uksort($headers, array($this, "compare_uids"));
-        else
-            uasort($headers, array($this, "compare_seqnums"));
+        return $this->mod_folder($folder, $mode);
     }
 
-    /**
-     * Sort method called by uasort()
-     *
-     * @param rcube_mail_header $a
-     * @param rcube_mail_header $b
-     */
-    function compare_seqnums($a, $b)
+    public function mailbox_attributes($folder, $force=false)
     {
-        // First get the sequence number from the header object (the 'id' field).
-        $seqa = $a->id;
-        $seqb = $b->id;
+        return $this->folder_attributes($folder, $force);
+    }
 
-        // then find each sequence number in my ordered list
-        $posa = isset($this->seqs[$seqa]) ? intval($this->seqs[$seqa]) : -1;
-        $posb = isset($this->seqs[$seqb]) ? intval($this->seqs[$seqb]) : -1;
+    public function mailbox_data($folder)
+    {
+        return $this->folder_data($folder);
+    }
 
-        // return the relative position as the comparison value
-        return $posa - $posb;
+    public function mailbox_info($folder)
+    {
+        return $this->folder_info($folder);
     }
 
-    /**
-     * Sort method called by uksort()
-     *
-     * @param int $a Array key (UID)
-     * @param int $b Array key (UID)
-     */
-    function compare_uids($a, $b)
+    public function mailbox_sync($folder)
     {
-        // then find each sequence number in my ordered list
-        $posa = isset($this->uids[$a]) ? intval($this->uids[$a]) : -1;
-        $posb = isset($this->uids[$b]) ? intval($this->uids[$b]) : -1;
+        return $this->folder_sync($folder);
+    }
 
-        // return the relative position as the comparison value
-        return $posa - $posb;
+    public function expunge($folder='', $clear_cache=true)
+    {
+        return $this->expunge_folder($folder, $clear_cache);
     }
+
 }
index 2f891dca82c9c5f63c1d9639f65cf8bff7471f75..b295bac64c57499be01283ce141e30f7f4b29428 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2011, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Caching of IMAP folder contents (messages and index)                |
@@ -16,7 +19,7 @@
  | Author: Aleksander Machniak <alec@alec.pl>                            |
  +-----------------------------------------------------------------------+
 
- $Id: rcube_imap_cache.php 5761 2012-01-12 14:54:21Z alec $
+ $Id$
 
 */
 
@@ -108,7 +111,7 @@ class rcube_imap_cache
 
 
     /**
-     * Return (sorted) messages index.
+     * Return (sorted) messages index (UIDs).
      * If index doesn't exist or is invalid, will be updated.
      *
      * @param string  $mailbox     Folder name
@@ -120,24 +123,25 @@ class rcube_imap_cache
      */
     function get_index($mailbox, $sort_field = null, $sort_order = null, $existing = false)
     {
-        if (empty($this->icache[$mailbox]))
+        if (empty($this->icache[$mailbox])) {
             $this->icache[$mailbox] = array();
+        }
 
         $sort_order = strtoupper($sort_order) == 'ASC' ? 'ASC' : 'DESC';
 
         // Seek in internal cache
         if (array_key_exists('index', $this->icache[$mailbox])) {
             // The index was fetched from database already, but not validated yet
-            if (!array_key_exists('result', $this->icache[$mailbox]['index'])) {
+            if (!array_key_exists('object', $this->icache[$mailbox]['index'])) {
                 $index = $this->icache[$mailbox]['index'];
             }
             // We've got a valid index
-            else if ($sort_field == 'ANY' || $this->icache[$mailbox]['index']['sort_field'] == $sort_field
-            ) {
-                if ($this->icache[$mailbox]['index']['sort_order'] == $sort_order)
-                    return $this->icache[$mailbox]['index']['result'];
-                else
-                    return array_reverse($this->icache[$mailbox]['index']['result'], true);
+            else if ($sort_field == 'ANY' || $this->icache[$mailbox]['index']['sort_field'] == $sort_field) {
+                $result = $this->icache[$mailbox]['index']['object'];
+                if ($result->get_parameters('ORDER') != $sort_order) {
+                    $result->revert();
+                }
+                return $result;
             }
         }
 
@@ -175,11 +179,11 @@ class rcube_imap_cache
             }
 
             if ($is_valid) {
-                // build index, assign sequence IDs to unique IDs
-                $data = array_combine($index['seq'], $index['uid']);
+                $data = $index['object'];
                 // revert the order if needed
-                if ($index['sort_order'] != $sort_order)
-                    $data = array_reverse($data, true);
+                if ($data->get_parameters('ORDER') != $sort_order) {
+                    $data->revert();
+                }
             }
         }
         else {
@@ -197,18 +201,16 @@ class rcube_imap_cache
         // Index not found, not valid or sort field changed, get index from IMAP server
         if ($data === null) {
             // Get mailbox data (UIDVALIDITY, counters, etc.) for status check
-            $mbox_data = $this->imap->mailbox_data($mailbox);
+            $mbox_data = $this->imap->folder_data($mailbox);
             $data      = $this->get_index_data($mailbox, $sort_field, $sort_order, $mbox_data);
 
             // insert/update
-            $this->add_index_row($mailbox, $sort_field, $sort_order, $data, $mbox_data,
-                $exists, $index['modseq']);
+            $this->add_index_row($mailbox, $sort_field, $data, $mbox_data, $exists, $index['modseq']);
         }
 
         $this->icache[$mailbox]['index'] = array(
-            'result'     => $data,
+            'object'     => $data,
             'sort_field' => $sort_field,
-            'sort_order' => $sort_order,
             'modseq'     => !empty($index['modseq']) ? $index['modseq'] : $mbox_data['HIGHESTMODSEQ']
         );
 
@@ -228,16 +230,13 @@ class rcube_imap_cache
      */
     function get_thread($mailbox)
     {
-        if (empty($this->icache[$mailbox]))
+        if (empty($this->icache[$mailbox])) {
             $this->icache[$mailbox] = array();
+        }
 
         // Seek in internal cache
         if (array_key_exists('thread', $this->icache[$mailbox])) {
-            return array(
-                $this->icache[$mailbox]['thread']['tree'],
-                $this->icache[$mailbox]['thread']['depth'],
-                $this->icache[$mailbox]['thread']['children'],
-            );
+            return $this->icache[$mailbox]['thread']['object'];
         }
 
         // Get thread from DB (if DB wasn't already queried)
@@ -250,8 +249,6 @@ class rcube_imap_cache
             $this->icache[$mailbox]['thread_queried'] = true;
         }
 
-        $data = null;
-
         // Entry exist, check cache status
         if (!empty($index)) {
             $exists   = true;
@@ -265,26 +262,25 @@ class rcube_imap_cache
         // Index not found or not valid, get index from IMAP server
         if ($index === null) {
             // Get mailbox data (UIDVALIDITY, counters, etc.) for status check
-            $mbox_data = $this->imap->mailbox_data($mailbox);
+            $mbox_data = $this->imap->folder_data($mailbox);
 
             if ($mbox_data['EXISTS']) {
                 // get all threads (default sort order)
-                list ($thread_tree, $msg_depth, $has_children) = $this->imap->fetch_threads($mailbox, true);
+                $threads = $this->imap->fetch_threads($mailbox, true);
+            }
+            else {
+                $threads = new rcube_result_thread($mailbox, '* THREAD');
             }
 
-            $index = array(
-                'tree'     => !empty($thread_tree) ? $thread_tree : array(),
-                'depth'    => !empty($msg_depth) ? $msg_depth : array(),
-                'children' => !empty($has_children) ? $has_children : array(),
-            );
+            $index['object'] = $threads;
 
             // insert/update
-            $this->add_thread_row($mailbox, $index, $mbox_data, $exists);
+            $this->add_thread_row($mailbox, $threads, $mbox_data, $exists);
         }
 
         $this->icache[$mailbox]['thread'] = $index;
 
-        return array($index['tree'], $index['depth'], $index['children']);
+        return $index['object'];
     }
 
 
@@ -292,29 +288,16 @@ class rcube_imap_cache
      * Returns list of messages (headers). See rcube_imap::fetch_headers().
      *
      * @param string $mailbox  Folder name
-     * @param array  $msgs     Message sequence numbers
-     * @param bool   $is_uid   True if $msgs contains message UIDs
+     * @param array  $msgs     Message UIDs
      *
      * @return array The list of messages (rcube_mail_header) indexed by UID
      */
-    function get_messages($mailbox, $msgs = array(), $is_uid = true)
+    function get_messages($mailbox, $msgs = array())
     {
         if (empty($msgs)) {
             return array();
         }
 
-        // @TODO: it would be nice if we could work with UIDs only
-        // then index would be not needed. For now we need it to
-        // map id to uid here and to update message id for cached message
-
-        // Convert IDs to UIDs
-        $index = $this->get_index($mailbox, 'ANY');
-        if (!$is_uid) {
-            foreach ($msgs as $idx => $msgid)
-                if ($uid = $index[$msgid])
-                    $msgs[$idx] = $uid;
-        }
-
         // Fetch messages from cache
         $sql_result = $this->db->query(
             "SELECT uid, data, flags"
@@ -331,21 +314,17 @@ class rcube_imap_cache
             $uid          = intval($sql_arr['uid']);
             $result[$uid] = $this->build_message($sql_arr);
 
-            // save memory, we don't need message body here (?)
-            $result[$uid]->body = null;
-
-            // update message ID according to index data
-            if (!empty($index) && ($id = array_search($uid, $index)))
-                $result[$uid]->id = $id;
-
             if (!empty($result[$uid])) {
+                // save memory, we don't need message body here (?)
+                $result[$uid]->body = null;
+
                 unset($msgs[$uid]);
             }
         }
 
         // Fetch not found messages from IMAP server
         if (!empty($msgs)) {
-            $messages = $this->imap->fetch_headers($mailbox, array_keys($msgs), true, true);
+            $messages = $this->imap->fetch_headers($mailbox, array_keys($msgs), false, true);
 
             // Insert to DB and add to result list
             if (!empty($messages)) {
@@ -374,8 +353,9 @@ class rcube_imap_cache
     function get_message($mailbox, $uid, $update = true, $cache = true)
     {
         // Check internal cache
-        if (($message = $this->icache['message'])
-            && $message['mailbox'] == $mailbox && $message['object']->uid == $uid
+        if ($this->icache['message']
+            && $this->icache['message']['mailbox'] == $mailbox
+            && $this->icache['message']['object']->uid == $uid
         ) {
             return $this->icache['message']['object'];
         }
@@ -391,16 +371,11 @@ class rcube_imap_cache
         if ($sql_arr = $this->db->fetch_assoc($sql_result)) {
             $message = $this->build_message($sql_arr);
             $found   = true;
-
-            // update message ID according to index data
-            $index = $this->get_index($mailbox, 'ANY');
-            if (!empty($index) && ($id = array_search($uid, $index)))
-                $message->id = $id;
         }
 
         // Get the message from IMAP server
         if (empty($message) && $update) {
-            $message = $this->imap->get_headers($uid, $mailbox, true);
+            $message = $this->imap->get_message_headers($uid, $mailbox, true);
             // cache will be updated in close(), see below
         }
 
@@ -435,16 +410,19 @@ class rcube_imap_cache
      */
     function add_message($mailbox, $message, $force = false)
     {
-        if (!is_object($message) || empty($message->uid))
+        if (!is_object($message) || empty($message->uid)) {
             return;
+        }
 
         $msg   = serialize($this->db->encode(clone $message));
         $flags = 0;
 
         if (!empty($message->flags)) {
-            foreach ($this->flags as $idx => $flag)
-                if (!empty($message->flags[$flag]))
+            foreach ($this->flags as $idx => $flag) {
+                if (!empty($message->flags[$flag])) {
                     $flags += $idx;
+                }
+            }
         }
         unset($msg->flags);
 
@@ -459,8 +437,9 @@ class rcube_imap_cache
                     ." AND uid = ?",
                 $flags, $msg, $this->userid, $mailbox, (int) $message->uid);
 
-            if ($this->db->affected_rows())
+            if ($this->db->affected_rows()) {
                 return;
+            }
         }
 
         // insert new record
@@ -555,27 +534,30 @@ class rcube_imap_cache
         // The index should be only removed from database when
         // UIDVALIDITY was detected or the mailbox is empty
         // otherwise use 'valid' flag to not loose HIGHESTMODSEQ value
-        if ($remove)
+        if ($remove) {
             $this->db->query(
                 "DELETE FROM ".get_table_name('cache_index')
                 ." WHERE user_id = ".intval($this->userid)
                     .(strlen($mailbox) ? " AND mailbox = ".$this->db->quote($mailbox) : "")
             );
-        else
+        }
+        else {
             $this->db->query(
                 "UPDATE ".get_table_name('cache_index')
                 ." SET valid = 0"
                 ." WHERE user_id = ".intval($this->userid)
                     .(strlen($mailbox) ? " AND mailbox = ".$this->db->quote($mailbox) : "")
             );
+        }
 
         if (strlen($mailbox)) {
             unset($this->icache[$mailbox]['index']);
             // Index removed, set flag to skip SELECT query in get_index()
             $this->icache[$mailbox]['index_queried'] = true;
         }
-        else
+        else {
             $this->icache = array();
+        }
     }
 
 
@@ -597,8 +579,9 @@ class rcube_imap_cache
             // Thread data removed, set flag to skip SELECT query in get_thread()
             $this->icache[$mailbox]['thread_queried'] = true;
         }
-        else
+        else {
             $this->icache = array();
+        }
     }
 
 
@@ -617,40 +600,26 @@ class rcube_imap_cache
 
 
     /**
-     * @param string $mailbox Folder name
-     * @param int    $id      Message (sequence) ID
+     * Delete cache entries older than TTL
      *
-     * @return int Message UID
+     * @param string $ttl  Lifetime of message cache entries
      */
-    function id2uid($mailbox, $id)
+    function expunge($ttl)
     {
-        if (!empty($this->icache['pending_index_update']))
-            return null;
+        // get expiration timestamp
+        $ts = get_offset_time($ttl, -1);
 
-        // get index if it exists
-        $index = $this->get_index($mailbox, 'ANY', null, true);
-
-        return $index[$id];
-    }
+        $this->db->query("DELETE FROM ".get_table_name('cache_messages')
+              ." WHERE changed < " . $this->db->fromunixtime($ts));
 
+        $this->db->query("DELETE FROM ".get_table_name('cache_index')
+              ." WHERE changed < " . $this->db->fromunixtime($ts));
 
-    /**
-     * @param string $mailbox Folder name
-     * @param int    $uid     Message UID
-     *
-     * @return int Message (sequence) ID
-     */
-    function uid2id($mailbox, $uid)
-    {
-        if (!empty($this->icache['pending_index_update']))
-            return null;
-
-        // get index if it exists
-        $index = $this->get_index($mailbox, 'ANY', null, true);
-
-        return array_search($uid, (array)$index);
+        $this->db->query("DELETE FROM ".get_table_name('cache_thread')
+              ." WHERE changed < " . $this->db->fromunixtime($ts));
     }
 
+
     /**
      * Fetches index data from database
      */
@@ -665,18 +634,22 @@ class rcube_imap_cache
             $this->userid, $mailbox);
 
         if ($sql_arr = $this->db->fetch_assoc($sql_result)) {
-            $data = explode('@', $sql_arr['data']);
+            $data  = explode('@', $sql_arr['data']);
+            $index = @unserialize($data[0]);
+            unset($data[0]);
+
+            if (empty($index)) {
+                $index = new rcube_result_index($mailbox);
+            }
 
             return array(
                 'valid'      => $sql_arr['valid'],
-                'seq'        => explode(',', $data[0]),
-                'uid'        => explode(',', $data[1]),
-                'sort_field' => $data[2],
-                'sort_order' => $data[3],
-                'deleted'    => $data[4],
-                'validity'   => $data[5],
-                'uidnext'    => $data[6],
-                'modseq'     => $data[7],
+                'object'     => $index,
+                'sort_field' => $data[1],
+                'deleted'    => $data[2],
+                'validity'   => $data[3],
+                'uidnext'    => $data[4],
+                'modseq'     => $data[5],
             );
         }
 
@@ -698,20 +671,16 @@ class rcube_imap_cache
             $this->userid, $mailbox);
 
         if ($sql_arr = $this->db->fetch_assoc($sql_result)) {
-            $data = explode('@', $sql_arr['data']);
-
-            // Uncompress data, see add_thread_row()
-  //          $data[0] = str_replace(array('*', '^', '#'), array(';a:0:{}', 'i:', ';a:1:'), $data[0]);
-            $data[0] = unserialize($data[0]);
+            $data   = explode('@', $sql_arr['data']);
+            $thread = @unserialize($data[0]);
+            unset($data[0]);
 
-            // build 'depth' and 'children' arrays
-            $depth = $children = array();
-            $this->build_thread_data($data[0], $depth, $children);
+            if (empty($thread)) {
+                $thread = new rcube_result_thread($mailbox);
+            }
 
             return array(
-                'tree'     => $data[0],
-                'depth'    => $depth,
-                'children' => $children,
+                'object'   => $thread,
                 'deleted'  => $data[1],
                 'validity' => $data[2],
                 'uidnext'  => $data[3],
@@ -725,14 +694,12 @@ class rcube_imap_cache
     /**
      * Saves index data into database
      */
-    private function add_index_row($mailbox, $sort_field, $sort_order,
-        $data = array(), $mbox_data = array(), $exists = false, $modseq = null)
+    private function add_index_row($mailbox, $sort_field,
+        $data, $mbox_data = array(), $exists = false, $modseq = null)
     {
         $data = array(
-            implode(',', array_keys($data)),
-            implode(',', array_values($data)),
+            serialize($data),
             $sort_field,
-            $sort_order,
             (int) $this->skip_deleted,
             (int) $mbox_data['UIDVALIDITY'],
             (int) $mbox_data['UIDNEXT'],
@@ -740,52 +707,52 @@ class rcube_imap_cache
         );
         $data = implode('@', $data);
 
-        if ($exists)
+        if ($exists) {
             $sql_result = $this->db->query(
                 "UPDATE ".get_table_name('cache_index')
                 ." SET data = ?, valid = 1, changed = ".$this->db->now()
                 ." WHERE user_id = ?"
                     ." AND mailbox = ?",
                 $data, $this->userid, $mailbox);
-        else
+        }
+        else {
             $sql_result = $this->db->query(
                 "INSERT INTO ".get_table_name('cache_index')
                 ." (user_id, mailbox, data, valid, changed)"
                 ." VALUES (?, ?, ?, 1, ".$this->db->now().")",
                 $this->userid, $mailbox, $data);
+        }
     }
 
 
     /**
      * Saves thread data into database
      */
-    private function add_thread_row($mailbox, $data = array(), $mbox_data = array(), $exists = false)
+    private function add_thread_row($mailbox, $data, $mbox_data = array(), $exists = false)
     {
-        $tree = serialize($data['tree']);
-        // This significantly reduces data length
-//        $tree = str_replace(array(';a:0:{}', 'i:', ';a:1:'), array('*', '^', '#'), $tree);
-
         $data = array(
-            $tree,
+            serialize($data),
             (int) $this->skip_deleted,
             (int) $mbox_data['UIDVALIDITY'],
             (int) $mbox_data['UIDNEXT'],
         );
         $data = implode('@', $data);
 
-        if ($exists)
+        if ($exists) {
             $sql_result = $this->db->query(
                 "UPDATE ".get_table_name('cache_thread')
                 ." SET data = ?, changed = ".$this->db->now()
                 ." WHERE user_id = ?"
                     ." AND mailbox = ?",
                 $data, $this->userid, $mailbox);
-        else
+        }
+        else {
             $sql_result = $this->db->query(
                 "INSERT INTO ".get_table_name('cache_thread')
                 ." (user_id, mailbox, data, changed)"
                 ." VALUES (?, ?, ?, ".$this->db->now().")",
                 $this->userid, $mailbox, $data);
+        }
     }
 
 
@@ -794,10 +761,11 @@ class rcube_imap_cache
      */
     private function validate($mailbox, $index, &$exists = true)
     {
-        $is_thread = isset($index['tree']);
+        $object    = $index['object'];
+        $is_thread = is_a($object, 'rcube_result_thread');
 
         // Get mailbox data (UIDVALIDITY, counters, etc.) for status check
-        $mbox_data = $this->imap->mailbox_data($mailbox);
+        $mbox_data = $this->imap->folder_data($mailbox);
 
         // @TODO: Think about skipping validation checks.
         // If we could check only every 10 minutes, we would be able to skip
@@ -814,21 +782,21 @@ class rcube_imap_cache
 
         // Folder is empty but cache isn't
         if (empty($mbox_data['EXISTS'])) {
-            if (!empty($index['seq']) || !empty($index['tree'])) {
+            if (!$object->is_empty()) {
                 $this->clear($mailbox);
                 $exists = false;
                 return false;
             }
         }
         // Folder is not empty but cache is
-        else if (empty($index['seq']) && empty($index['tree'])) {
+        else if ($object->is_empty()) {
             unset($this->icache[$mailbox][$is_thread ? 'thread' : 'index']);
             return false;
         }
 
         // Validation flag
         if (!$is_thread && empty($index['valid'])) {
-            unset($this->icache[$mailbox][$is_thread ? 'thread' : 'index']);
+            unset($this->icache[$mailbox]['index']);
             return false;
         }
 
@@ -853,7 +821,7 @@ class rcube_imap_cache
         // @TODO: find better validity check for threaded index
         if ($is_thread) {
             // check messages number...
-            if (!$this->skip_deleted && $mbox_data['EXISTS'] != @max(array_keys($index['depth']))) {
+            if (!$this->skip_deleted && $mbox_data['EXISTS'] != $object->count_messages()) {
                 return false;
             }
             return true;
@@ -862,14 +830,15 @@ class rcube_imap_cache
         // The rest of checks, more expensive
         if (!empty($this->skip_deleted)) {
             // compare counts if available
-            if ($mbox_data['COUNT_UNDELETED'] != null
-                && $mbox_data['COUNT_UNDELETED'] != count($index['uid'])) {
+            if (!empty($mbox_data['UNDELETED'])
+                && $mbox_data['UNDELETED']->count() != $object->count()
+            ) {
                 return false;
             }
             // compare UID sets
-            if ($mbox_data['ALL_UNDELETED'] != null) {
-                $uids_new = rcube_imap_generic::uncompressMessageSet($mbox_data['ALL_UNDELETED']);
-                $uids_old = $index['uid'];
+            if (!empty($mbox_data['UNDELETED'])) {
+                $uids_new = $mbox_data['UNDELETED']->get();
+                $uids_old = $object->get();
 
                 if (count($uids_new) != count($uids_old)) {
                     return false;
@@ -884,20 +853,20 @@ class rcube_imap_cache
             else {
                 // get all undeleted messages excluding cached UIDs
                 $ids = $this->imap->search_once($mailbox, 'ALL UNDELETED NOT UID '.
-                    rcube_imap_generic::compressMessageSet($index['uid']));
+                    rcube_imap_generic::compressMessageSet($object->get()));
 
-                if (!empty($ids)) {
+                if (!$ids->is_empty()) {
                     return false;
                 }
             }
         }
         else {
             // check messages number...
-            if ($mbox_data['EXISTS'] != max($index['seq'])) {
+            if ($mbox_data['EXISTS'] != $object->count()) {
                 return false;
             }
             // ... and max UID
-            if (max($index['uid']) != $this->imap->id2uid($mbox_data['EXISTS'], $mailbox, true)) {
+            if ($object->max() != $this->imap->id2uid($mbox_data['EXISTS'], $mailbox, true)) {
                 return false;
             }
         }
@@ -944,6 +913,10 @@ class rcube_imap_cache
             return;
         }
 
+        if (!$this->imap->check_connection()) {
+            return;
+        }
+
         // NOTE: make sure the mailbox isn't selected, before
         // enabling QRESYNC and invoking SELECT
         if ($this->imap->conn->selected !== null) {
@@ -957,7 +930,7 @@ class rcube_imap_cache
         }
 
         // Get mailbox data (UIDVALIDITY, HIGHESTMODSEQ, counters, etc.)
-        $mbox_data = $this->imap->mailbox_data($mailbox);
+        $mbox_data = $this->imap->folder_data($mailbox);
 
         if (empty($mbox_data)) {
              return;
@@ -1042,7 +1015,7 @@ class rcube_imap_cache
 
         // Get VANISHED
         if ($qresync) {
-            $mbox_data = $this->imap->mailbox_data($mailbox);
+            $mbox_data = $this->imap->folder_data($mailbox);
 
             // Removed messages
             if (!empty($mbox_data['VANISHED'])) {
@@ -1060,7 +1033,7 @@ class rcube_imap_cache
         }
 
         $sort_field = $index['sort_field'];
-        $sort_order = $index['sort_order'];
+        $sort_order = $index['object']->get_parameters('ORDER');
         $exists     = true;
 
         // Validate index
@@ -1069,14 +1042,14 @@ class rcube_imap_cache
             $data = $this->get_index_data($mailbox, $sort_field, $sort_order, $mbox_data);
         }
         else {
-            $data = array_combine($index['seq'], $index['uid']);
+            $data = $index['object'];
         }
 
         // update index and/or HIGHESTMODSEQ value
-        $this->add_index_row($mailbox, $sort_field, $sort_order, $data, $mbox_data, $exists);
+        $this->add_index_row($mailbox, $sort_field, $data, $mbox_data, $exists);
 
         // update internal cache for get_index()
-        $this->icache[$mailbox]['index']['result'] = $data;
+        $this->icache[$mailbox]['index']['object'] = $data;
     }
 
 
@@ -1093,31 +1066,17 @@ class rcube_imap_cache
 
         if ($message) {
             $message->flags = array();
-            foreach ($this->flags as $idx => $flag)
-                if (($sql_arr['flags'] & $idx) == $idx)
+            foreach ($this->flags as $idx => $flag) {
+                if (($sql_arr['flags'] & $idx) == $idx) {
                     $message->flags[$flag] = true;
+                }
+           }
         }
 
         return $message;
     }
 
 
-    /**
-     * Creates 'depth' and 'children' arrays from stored thread 'tree' data.
-     */
-    private function build_thread_data($data, &$depth, &$children, $level = 0)
-    {
-        foreach ((array)$data as $key => $val) {
-            $empty          = empty($val) || !is_array($val);
-            $children[$key] = !$empty;
-            $depth[$key]    = $level;
-            if (!$empty) {
-                $this->build_thread_data($val, $depth, $children, $level + 1);
-            }
-        }
-    }
-
-
     /**
      * Saves message stored in internal cache
      */
@@ -1172,43 +1131,18 @@ class rcube_imap_cache
      */
     private function get_index_data($mailbox, $sort_field, $sort_order, $mbox_data = array())
     {
-        $data = array();
-
         if (empty($mbox_data)) {
-            $mbox_data = $this->imap->mailbox_data($mailbox);
+            $mbox_data = $this->imap->folder_data($mailbox);
         }
 
-        // Prevent infinite loop.
-        // It happens when rcube_imap::message_index_direct() is called.
-        // There id2uid() is called which will again call get_index() and so on.
-        if (!$sort_field && !$this->skip_deleted)
-            $this->icache['pending_index_update'] = true;
-
         if ($mbox_data['EXISTS']) {
             // fetch sorted sequence numbers
-            $data_seq = $this->imap->message_index_direct($mailbox, $sort_field, $sort_order);
-            // fetch UIDs
-            if (!empty($data_seq)) {
-                // Seek in internal cache
-                if (array_key_exists('index', (array)$this->icache[$mailbox])
-                    && array_key_exists('result', (array)$this->icache[$mailbox]['index'])
-                )
-                    $data_uid = $this->icache[$mailbox]['index']['result'];
-                else
-                    $data_uid = $this->imap->conn->fetchUIDs($mailbox, $data_seq);
-
-                // build index
-                if (!empty($data_uid)) {
-                    foreach ($data_seq as $seq)
-                        if ($uid = $data_uid[$seq])
-                            $data[$seq] = $uid;
-                }
-            }
+            $index = $this->imap->index_direct($mailbox, $sort_field, $sort_order);
+        }
+        else {
+            $index = new rcube_result_index($mailbox, '* SORT');
         }
 
-        // Reset internal flags
-        $this->icache['pending_index_update'] = false;
-
-        return $data;
+        return $index;
     }
 }
index 7bb5bebf95a8c71639dbe2532c79b063b60ded51..d462dd14132221289fbbd2e6252dc5d954a48f03 100644 (file)
@@ -7,7 +7,10 @@
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2010, The Roundcube Dev Team                       |
  | Copyright (C) 2011, Kolab Systems AG                                  |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Provide alternative IMAP library that doesn't rely on the standard  |
  | Author: Ryo Chijiiwa <Ryo@IlohaMail.org>                              |
  +-----------------------------------------------------------------------+
 
- $Id: rcube_imap_generic.php 5970 2012-03-06 19:43:49Z alec $
+ $Id$
 
 */
 
-
 /**
  * Struct representing an e-mail message header
  *
@@ -57,6 +59,58 @@ class rcube_mail_header
     public $mdn_to;
     public $others = array();
     public $flags = array();
+
+    // map header to rcube_mail_header object property
+    private $obj_headers = array(
+        'date'      => 'date',
+        'from'      => 'from',
+        'to'        => 'to',
+        'subject'   => 'subject',
+        'reply-to'  => 'replyto',
+        'cc'        => 'cc',
+        'bcc'       => 'bcc',
+        'content-transfer-encoding' => 'encoding',
+        'in-reply-to'               => 'in_reply_to',
+        'content-type'              => 'ctype',
+        'references'                => 'references',
+        'return-receipt-to'         => 'mdn_to',
+        'disposition-notification-to' => 'mdn_to',
+        'x-confirm-reading-to'      => 'mdn_to',
+        'message-id'                => 'messageID',
+        'x-priority'                => 'priority',
+    );
+
+    /**
+     * Returns header value
+     */
+    public function get($name, $decode = true)
+    {
+        $name = strtolower($name);
+
+        if (isset($this->obj_headers[$name])) {
+            $value = $this->{$this->obj_headers[$name]};
+        }
+        else {
+            $value = $this->others[$name];
+        }
+
+        return $decode ? rcube_mime::decode_header($value, $this->charset) : $value;
+    }
+
+    /**
+     * Sets header value
+     */
+    public function set($name, $value)
+    {
+        $name = strtolower($name);
+
+        if (isset($this->obj_headers[$name])) {
+            $this->{$this->obj_headers[$name]} = $value;
+        }
+        else {
+            $this->others[$name] = $value;
+        }
+    }
 }
 
 // For backward compatibility with cached messages (#1486602)
@@ -64,6 +118,11 @@ class iilBasicHeader extends rcube_mail_header
 {
 }
 
+// Support objects created in git-master (0.9)
+class rcube_message_header extends rcube_mail_header
+{
+}
+
 /**
  * PHP based wrapper class to connect to an IMAP server
  *
@@ -154,16 +213,17 @@ class rcube_imap_generic
      * @param string $string Command string
      * @param bool   $endln  True if CRLF need to be added at the end of command
      *
-     * @param int Number of bytes sent, False on error
+     * @return int|bool Number of bytes sent, False on error
      */
     function putLineC($string, $endln=true)
     {
-        if (!$this->fp)
+        if (!$this->fp) {
             return false;
+        }
 
-        if ($endln)
+        if ($endln) {
             $string .= "\r\n";
-
+        }
 
         $res = 0;
         if ($parts = preg_split('/(\{[0-9]+\}\r\n)/m', $string, -1, PREG_SPLIT_DELIM_CAPTURE)) {
@@ -199,6 +259,13 @@ class rcube_imap_generic
         return $res;
     }
 
+    /**
+     * Reads line from the connection stream
+     *
+     * @param int  $size  Buffer size
+     *
+     * @return string Line of text response
+     */
     function readLine($size=1024)
     {
         $line = '';
@@ -227,6 +294,15 @@ class rcube_imap_generic
         return $line;
     }
 
+    /**
+     * Reads more data from the connection stream when provided
+     * data contain string literal
+     *
+     * @param string  $line    Response text
+     * @param bool    $escape  Enables escaping
+     *
+     * @return string Line of text response
+     */
     function multLine($line, $escape = false)
     {
         $line = rtrim($line);
@@ -248,6 +324,13 @@ class rcube_imap_generic
         return $line;
     }
 
+    /**
+     * Reads specified number of bytes from the connection stream
+     *
+     * @param int  $bytes  Number of bytes to get
+     *
+     * @return string Response text
+     */
     function readBytes($bytes)
     {
         $data = '';
@@ -269,6 +352,13 @@ class rcube_imap_generic
         return $data;
     }
 
+    /**
+     * Reads complete response to the IMAP command
+     *
+     * @param array  $untagged  Will be filled with untagged response lines
+     *
+     * @return string Response text
+     */
     function readReply(&$untagged=null)
     {
         do {
@@ -284,6 +374,14 @@ class rcube_imap_generic
         return $line;
     }
 
+    /**
+     * Response parser.
+     *
+     * @param  string  $string      Response text
+     * @param  string  $err_prefix  Error message prefix
+     *
+     * @return int Response status
+     */
     function parseResult($string, $err_prefix='')
     {
         if (preg_match('/^[a-z0-9*]+ (OK|NO|BAD|BYE)(.*)$/i', trim($string), $matches)) {
@@ -327,6 +425,11 @@ class rcube_imap_generic
         return self::ERROR_UNKNOWN;
     }
 
+    /**
+     * Checks connection stream state.
+     *
+     * @return bool True if connection is closed
+     */
     private function eof()
     {
         if (!is_resource($this->fp)) {
@@ -337,7 +440,7 @@ class rcube_imap_generic
         // by the server, feof() will hang.
         $start = microtime(true);
 
-        if (feof($this->fp) || 
+        if (feof($this->fp) ||
             ($this->prefs['timeout'] && (microtime(true) - $start > $this->prefs['timeout']))
         ) {
             $this->closeSocket();
@@ -347,29 +450,41 @@ class rcube_imap_generic
         return false;
     }
 
+    /**
+     * Closes connection stream.
+     */
     private function closeSocket()
     {
         @fclose($this->fp);
         $this->fp = null;
     }
 
+    /**
+     * Error code/message setter.
+     */
     function setError($code, $msg='')
     {
         $this->errornum = $code;
         $this->error    = $msg;
     }
 
-    // check if $string starts with $match (or * BYE/BAD)
+    /**
+     * Checks response status.
+     * Checks if command response line starts with specified prefix (or * BYE/BAD)
+     *
+     * @param string $string   Response text
+     * @param string $match    Prefix to match with (case-sensitive)
+     * @param bool   $error    Enables BYE/BAD checking
+     * @param bool   $nonempty Enables empty response checking
+     *
+     * @return bool True any check is true or connection is closed.
+     */
     function startsWith($string, $match, $error=false, $nonempty=false)
     {
-        $len = strlen($match);
-        if ($len == 0) {
-            return false;
-        }
         if (!$this->fp) {
             return true;
         }
-        if (strncmp($string, $match, $len) == 0) {
+        if (strncmp($string, $match, strlen($match)) == 0) {
             return true;
         }
         if ($error && preg_match('/^\* (BYE|BAD) /i', $string, $m)) {
@@ -507,6 +622,7 @@ class rcube_imap_generic
                 }
                 else {
                     $authc = $user;
+                    $user  = '';
                 }
                 $auth_sasl = Auth_SASL::factory('digestmd5');
                 $reply = base64_encode($auth_sasl->getResponse($authc, $pass,
@@ -545,6 +661,7 @@ class rcube_imap_generic
             }
             else {
                 $authc = $user;
+                $user  = '';
             }
 
             $reply = base64_encode($user . chr(0) . $authc . chr(0) . $pass);
@@ -609,7 +726,7 @@ class rcube_imap_generic
     }
 
     /**
-     * Gets the delimiter
+     * Detects hierarchy delimiter
      *
      * @return string The delimiter
      */
@@ -669,6 +786,16 @@ class rcube_imap_generic
         return $this->prefs['namespace'];
     }
 
+    /**
+     * Connects to IMAP server and authenticates.
+     *
+     * @param string $host      Server hostname or IP
+     * @param string $user      User name
+     * @param string $password  Password
+     * @param array  $options   Connection and class options
+     *
+     * @return bool True on success, False on failure
+     */
     function connect($host, $user, $password, $options=null)
     {
         // set options
@@ -856,11 +983,19 @@ class rcube_imap_generic
         return false;
     }
 
+    /**
+     * Checks connection status
+     *
+     * @return bool True if connection is active and user is logged in, False otherwise.
+     */
     function connected()
     {
         return ($this->fp && $this->logged) ? true : false;
     }
 
+    /**
+     * Closes connection with logout.
+     */
     function closeConnection()
     {
         if ($this->putLine($this->nextTag() . ' LOGOUT')) {
@@ -1073,7 +1208,7 @@ class rcube_imap_generic
     }
 
     /**
-     * Executes SUBSCRIBE command
+     * Folder subscription (SUBSCRIBE)
      *
      * @param string $mailbox Mailbox name
      *
@@ -1088,7 +1223,7 @@ class rcube_imap_generic
     }
 
     /**
-     * Executes UNSUBSCRIBE command
+     * Folder unsubscription (UNSUBSCRIBE)
      *
      * @param string $mailbox Mailbox name
      *
@@ -1102,6 +1237,36 @@ class rcube_imap_generic
         return ($result == self::ERROR_OK);
     }
 
+    /**
+     * Folder creation (CREATE)
+     *
+     * @param string $mailbox Mailbox name
+     *
+     * @return bool True on success, False on error
+     */
+    function createFolder($mailbox)
+    {
+        $result = $this->execute('CREATE', array($this->escape($mailbox)),
+            self::COMMAND_NORESPONSE);
+
+        return ($result == self::ERROR_OK);
+    }
+
+    /**
+     * Folder renaming (RENAME)
+     *
+     * @param string $mailbox Mailbox name
+     *
+     * @return bool True on success, False on error
+     */
+    function renameFolder($from, $to)
+    {
+        $result = $this->execute('RENAME', array($this->escape($from), $this->escape($to)),
+            self::COMMAND_NORESPONSE);
+
+        return ($result == self::ERROR_OK);
+    }
+
     /**
      * Executes DELETE command
      *
@@ -1128,7 +1293,7 @@ class rcube_imap_generic
     {
         $num_in_trash = $this->countMessages($mailbox);
         if ($num_in_trash > 0) {
-            $res = $this->delete($mailbox, '1:*');
+            $res = $this->flag($mailbox, '1:*', 'DELETED');
         }
 
         if ($res) {
@@ -1141,6 +1306,139 @@ class rcube_imap_generic
         return $res;
     }
 
+    /**
+     * Returns list of mailboxes
+     *
+     * @param string $ref         Reference name
+     * @param string $mailbox     Mailbox name
+     * @param array  $status_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.
+     */
+    function listMailboxes($ref, $mailbox, $status_opts=array(), $select_opts=array())
+    {
+        return $this->_listMailboxes($ref, $mailbox, false, $status_opts, $select_opts);
+    }
+
+    /**
+     * Returns list of subscribed mailboxes
+     *
+     * @param string $ref         Reference name
+     * @param string $mailbox     Mailbox name
+     * @param array  $status_opts (see self::_listMailboxes)
+     *
+     * @return array List of mailboxes or hash of options if $status_opts argument
+     *               is non-empty.
+     */
+    function listSubscribed($ref, $mailbox, $status_opts=array())
+    {
+        return $this->_listMailboxes($ref, $mailbox, true, $status_opts, NULL);
+    }
+
+    /**
+     * IMAP LIST/LSUB command
+     *
+     * @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)
+     *                            Possible: MESSAGES, RECENT, UIDNEXT, UIDVALIDITY, UNSEEN
+     * @param array  $select_opts List of selection options (RFC5258: LIST-EXTENDED)
+     *                            Possible: SUBSCRIBED, RECURSIVEMATCH, REMOTE
+     *
+     * @return array List of mailboxes or hash of options if $status_ops argument
+     *               is non-empty.
+     */
+    private function _listMailboxes($ref, $mailbox, $subscribed=false,
+        $status_opts=array(), $select_opts=array())
+    {
+        if (!strlen($mailbox)) {
+            $mailbox = '*';
+        }
+
+        $args = array();
+
+        if (!empty($select_opts) && $this->getCapability('LIST-EXTENDED')) {
+            $select_opts = (array) $select_opts;
+
+            $args[] = '(' . implode(' ', $select_opts) . ')';
+        }
+
+        $args[] = $this->escape($ref);
+        $args[] = $this->escape($mailbox);
+
+        if (!empty($status_opts) && $this->getCapability('LIST-STATUS')) {
+            $status_opts = (array) $status_opts;
+            $lstatus = true;
+
+            $args[] = 'RETURN (STATUS (' . implode(' ', $status_opts) . '))';
+        }
+
+        list($code, $response) = $this->execute($subscribed ? 'LSUB' : 'LIST', $args);
+
+        if ($code == self::ERROR_OK) {
+            $folders  = array();
+            $last     = 0;
+            $pos      = 0;
+            $response .= "\r\n";
+
+            while ($pos = strpos($response, "\r\n", $pos+1)) {
+                // literal string, not real end-of-command-line
+                if ($response[$pos-1] == '}') {
+                    continue;
+                }
+
+                $line = substr($response, $last, $pos - $last);
+                $last = $pos + 2;
+
+                if (!preg_match('/^\* (LIST|LSUB|STATUS) /i', $line, $m)) {
+                    continue;
+                }
+                $cmd  = strtoupper($m[1]);
+                $line = substr($line, strlen($m[0]));
+
+                // * LIST (<options>) <delimiter> <mailbox>
+                if ($cmd == 'LIST' || $cmd == 'LSUB') {
+                    list($opts, $delim, $mailbox) = $this->tokenizeResponse($line, 3);
+
+                    // Add to result array
+                    if (!$lstatus) {
+                        $folders[] = $mailbox;
+                    }
+                    else {
+                        $folders[$mailbox] = array();
+                    }
+
+                    // store LSUB options only if not empty, this way
+                    // we can detect a situation when LIST doesn't return specified folder
+                    if (!empty($opts) || $cmd == 'LIST') {
+                        // Add to options array
+                        if (empty($this->data['LIST'][$mailbox]))
+                            $this->data['LIST'][$mailbox] = $opts;
+                        else if (!empty($opts))
+                            $this->data['LIST'][$mailbox] = array_unique(array_merge(
+                                $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;
+                    }
+                }
+            }
+
+            return $folders;
+        }
+
+        return false;
+    }
+
     /**
      * Returns count of all messages in a folder
      *
@@ -1218,8 +1516,8 @@ class rcube_imap_generic
 
         // Invoke SEARCH as a fallback
         $index = $this->search($mailbox, 'ALL UNSEEN', false, array('COUNT'));
-        if (is_array($index)) {
-            return (int) $index['COUNT'];
+        if (!$index->is_error()) {
+            return $index->count();
         }
 
         return false;
@@ -1293,8 +1591,21 @@ class rcube_imap_generic
         return false;
     }
 
-    function sort($mailbox, $field, $add='', $is_uid=FALSE, $encoding = 'US-ASCII')
+    /**
+     * Executes SORT command
+     *
+     * @param string $mailbox    Mailbox name
+     * @param string $field      Field to sort by (ARRIVAL, CC, DATE, FROM, SIZE, SUBJECT, TO)
+     * @param string $add        Searching criteria
+     * @param bool   $return_uid Enables UID SORT usage
+     * @param string $encoding   Character set
+     *
+     * @return rcube_result_index Response data
+     */
+    function sort($mailbox, $field, $add='', $return_uid=false, $encoding = 'US-ASCII')
     {
+        require_once dirname(__FILE__) . '/rcube_result_index.php';
+
         $field = strtoupper($field);
         if ($field == 'INTERNALDATE') {
             $field = 'ARRIVAL';
@@ -1304,35 +1615,167 @@ class rcube_imap_generic
             'FROM' => 1, 'SIZE' => 1, 'SUBJECT' => 1, 'TO' => 1);
 
         if (!$fields[$field]) {
-            return false;
+            return new rcube_result_index($mailbox);
         }
 
         if (!$this->select($mailbox)) {
-            return false;
+            return new rcube_result_index($mailbox);
+        }
+
+        // RFC 5957: SORT=DISPLAY
+        if (($field == 'FROM' || $field == 'TO') && $this->getCapability('SORT=DISPLAY')) {
+            $field = 'DISPLAY' . $field;
         }
 
         // message IDs
         if (!empty($add))
             $add = $this->compressMessageSet($add);
 
-        list($code, $response) = $this->execute($is_uid ? 'UID SORT' : 'SORT',
+        list($code, $response) = $this->execute($return_uid ? 'UID SORT' : 'SORT',
             array("($field)", $encoding, 'ALL' . (!empty($add) ? ' '.$add : '')));
 
-        if ($code == self::ERROR_OK) {
-            // remove prefix and unilateral untagged server responses
-            $response = substr($response, stripos($response, '* SORT') + 7);
-            if ($pos = strpos($response, '*')) {
-                $response = substr($response, 0, $pos);
-            }
-            return preg_split('/[\s\r\n]+/', $response, -1, PREG_SPLIT_NO_EMPTY);
+        if ($code != self::ERROR_OK) {
+            $response = null;
         }
 
-        return false;
+        return new rcube_result_index($mailbox, $response);
     }
 
-    function fetchHeaderIndex($mailbox, $message_set, $index_field='', $skip_deleted=true, $uidfetch=false)
+    /**
+     * Executes THREAD command
+     *
+     * @param string $mailbox    Mailbox name
+     * @param string $algorithm  Threading algorithm (ORDEREDSUBJECT, REFERENCES, REFS)
+     * @param string $criteria   Searching criteria
+     * @param bool   $return_uid Enables UIDs in result instead of sequence numbers
+     * @param string $encoding   Character set
+     *
+     * @return rcube_result_thread Thread data
+     */
+    function thread($mailbox, $algorithm='REFERENCES', $criteria='', $return_uid=false, $encoding='US-ASCII')
     {
-        if (is_array($message_set)) {
+        require_once dirname(__FILE__) . '/rcube_result_thread.php';
+
+        $old_sel = $this->selected;
+
+        if (!$this->select($mailbox)) {
+            return new rcube_result_thread($mailbox);
+        }
+
+        // return empty result when folder is empty and we're just after SELECT
+        if ($old_sel != $mailbox && !$this->data['EXISTS']) {
+            return new rcube_result_thread($mailbox);
+        }
+
+        $encoding  = $encoding ? trim($encoding) : 'US-ASCII';
+        $algorithm = $algorithm ? trim($algorithm) : 'REFERENCES';
+        $criteria  = $criteria ? 'ALL '.trim($criteria) : 'ALL';
+        $data      = '';
+
+        list($code, $response) = $this->execute($return_uid ? 'UID THREAD' : 'THREAD',
+            array($algorithm, $encoding, $criteria));
+
+        if ($code != self::ERROR_OK) {
+            $response = null;
+        }
+
+        return new rcube_result_thread($mailbox, $response);
+    }
+
+    /**
+     * Executes SEARCH command
+     *
+     * @param string $mailbox    Mailbox name
+     * @param string $criteria   Searching criteria
+     * @param bool   $return_uid Enable UID in result instead of sequence ID
+     * @param array  $items      Return items (MIN, MAX, COUNT, ALL)
+     *
+     * @return rcube_result_index Result data
+     */
+    function search($mailbox, $criteria, $return_uid=false, $items=array())
+    {
+        require_once dirname(__FILE__) . '/rcube_result_index.php';
+
+        $old_sel = $this->selected;
+
+        if (!$this->select($mailbox)) {
+            return new rcube_result_index($mailbox);
+        }
+
+        // return empty result when folder is empty and we're just after SELECT
+        if ($old_sel != $mailbox && !$this->data['EXISTS']) {
+            return new rcube_result_index($mailbox, '* SEARCH');
+        }
+
+        // If ESEARCH is supported always use ALL
+        // but not when items are specified or using simple id2uid search
+        if (empty($items) && preg_match('/[^0-9]/', $criteria)) {
+            $items = array('ALL');
+        }
+
+        $esearch  = empty($items) ? false : $this->getCapability('ESEARCH');
+        $criteria = trim($criteria);
+        $params   = '';
+
+        // RFC4731: ESEARCH
+        if (!empty($items) && $esearch) {
+            $params .= 'RETURN (' . implode(' ', $items) . ')';
+        }
+
+        if (!empty($criteria)) {
+            $modseq = stripos($criteria, 'MODSEQ') !== false;
+            $params .= ($params ? ' ' : '') . $criteria;
+        }
+        else {
+            $params .= 'ALL';
+        }
+
+        list($code, $response) = $this->execute($return_uid ? 'UID SEARCH' : 'SEARCH',
+            array($params));
+
+        if ($code != self::ERROR_OK) {
+            $response = null;
+        }
+
+        return new rcube_result_index($mailbox, $response);
+    }
+
+    /**
+     * Simulates SORT command by using FETCH and sorting.
+     *
+     * @param string       $mailbox      Mailbox name
+     * @param string|array $message_set  Searching criteria (list of messages to return)
+     * @param string       $index_field  Field to sort by (ARRIVAL, CC, DATE, FROM, SIZE, SUBJECT, TO)
+     * @param bool         $skip_deleted Makes that DELETED messages will be skipped
+     * @param bool         $uidfetch     Enables UID FETCH usage
+     * @param bool         $return_uid   Enables returning UIDs instead of IDs
+     *
+     * @return rcube_result_index Response data
+     */
+    function index($mailbox, $message_set, $index_field='', $skip_deleted=true,
+        $uidfetch=false, $return_uid=false)
+    {
+        require_once dirname(__FILE__) . '/rcube_result_index.php';
+
+        $msg_index = $this->fetchHeaderIndex($mailbox, $message_set,
+            $index_field, $skip_deleted, $uidfetch, $return_uid);
+
+        if (!empty($msg_index)) {
+            asort($msg_index); // ASC
+            $msg_index = array_keys($msg_index);
+            $msg_index = '* SEARCH ' . implode(' ', $msg_index);
+        }
+        else {
+            $msg_index = is_array($msg_index) ? '* SEARCH' : null;
+        }
+
+        return new rcube_result_index($mailbox, $msg_index);
+    }
+
+    function fetchHeaderIndex($mailbox, $message_set, $index_field='', $skip_deleted=true,
+        $uidfetch=false, $return_uid=false)
+    {
+        if (is_array($message_set)) {
             if (!($message_set = $this->compressMessageSet($message_set)))
                 return false;
         } else {
@@ -1370,25 +1813,32 @@ class rcube_imap_generic
         }
 
         // build FETCH command string
-        $key     = $this->nextTag();
-        $cmd     = $uidfetch ? 'UID FETCH' : 'FETCH';
-        $deleted = $skip_deleted ? ' FLAGS' : '';
-
-        if ($mode == 1 && $index_field == 'DATE')
-            $request = " $cmd $message_set (INTERNALDATE BODY.PEEK[HEADER.FIELDS (DATE)]$deleted)";
-        else if ($mode == 1)
-            $request = " $cmd $message_set (BODY.PEEK[HEADER.FIELDS ($index_field)]$deleted)";
+        $key    = $this->nextTag();
+        $cmd    = $uidfetch ? 'UID FETCH' : 'FETCH';
+        $fields = array();
+
+        if ($return_uid)
+            $fields[] = 'UID';
+        if ($skip_deleted)
+            $fields[] = 'FLAGS';
+
+        if ($mode == 1) {
+            if ($index_field == 'DATE')
+                $fields[] = 'INTERNALDATE';
+            $fields[] = "BODY.PEEK[HEADER.FIELDS ($index_field)]";
+        }
         else if ($mode == 2) {
             if ($index_field == 'SIZE')
-                $request = " $cmd $message_set (RFC822.SIZE$deleted)";
-            else
-                $request = " $cmd $message_set ($index_field$deleted)";
-        } else if ($mode == 3)
-            $request = " $cmd $message_set (FLAGS)";
-        else // 4
-            $request = " $cmd $message_set (INTERNALDATE$deleted)";
+                $fields[] = 'RFC822.SIZE';
+            else if (!$return_uid || $index_field != 'UID')
+                $fields[] = $index_field;
+        }
+        else if ($mode == 3 && !$skip_deleted)
+            $fields[] = 'FLAGS';
+        else if ($mode == 4)
+            $fields[] = 'INTERNALDATE';
 
-        $request = $key . $request;
+        $request = "$key $cmd $message_set (" . implode(' ', $fields) . ")";
 
         if (!$this->putLine($request)) {
             $this->setError(self::ERROR_COMMAND, "Unable to send command: $request");
@@ -1405,6 +1855,12 @@ class rcube_imap_generic
                 $id     = $m[1];
                 $flags  = NULL;
 
+                if ($return_uid) {
+                    if (preg_match('/UID ([0-9]+)/', $line, $matches))
+                        $id = (int) $matches[1];
+                    else
+                        continue;
+                }
                 if ($skip_deleted && preg_match('/FLAGS \(([^)]+)\)/', $line, $matches)) {
                     $flags = explode(' ', strtoupper($matches[1]));
                     if (in_array('\\DELETED', $flags)) {
@@ -1457,72 +1913,6 @@ class rcube_imap_generic
         return $result;
     }
 
-    static function compressMessageSet($messages, $force=false)
-    {
-        // given a comma delimited list of independent mid's,
-        // compresses by grouping sequences together
-
-        if (!is_array($messages)) {
-            // if less than 255 bytes long, let's not bother
-            if (!$force && strlen($messages)<255) {
-                return $messages;
-           }
-
-            // see if it's already been compressed
-            if (strpos($messages, ':') !== false) {
-                return $messages;
-            }
-
-            // separate, then sort
-            $messages = explode(',', $messages);
-        }
-
-        sort($messages);
-
-        $result = array();
-        $start  = $prev = $messages[0];
-
-        foreach ($messages as $id) {
-            $incr = $id - $prev;
-            if ($incr > 1) { // found a gap
-                if ($start == $prev) {
-                    $result[] = $prev; // push single id
-                } else {
-                    $result[] = $start . ':' . $prev; // push sequence as start_id:end_id
-                }
-                $start = $id; // start of new sequence
-            }
-            $prev = $id;
-        }
-
-        // handle the last sequence/id
-        if ($start == $prev) {
-            $result[] = $prev;
-        } else {
-            $result[] = $start.':'.$prev;
-        }
-
-        // return as comma separated string
-        return implode(',', $result);
-    }
-
-    static function uncompressMessageSet($messages)
-    {
-        $result   = array();
-        $messages = explode(',', $messages);
-
-        foreach ($messages as $part) {
-            $items = explode(':', $part);
-            $max   = max($items[0], $items[1]);
-
-            for ($x=$items[0]; $x<=$max; $x++) {
-                $result[] = $x;
-            }
-        }
-
-        return $result;
-    }
-
     /**
      * Returns message sequence identifier
      *
@@ -1534,9 +1924,11 @@ class rcube_imap_generic
     function UID2ID($mailbox, $uid)
     {
         if ($uid > 0) {
-            $id_a = $this->search($mailbox, "UID $uid");
-            if (is_array($id_a) && count($id_a) == 1) {
-                return (int) $id_a[0];
+            $index = $this->search($mailbox, "UID $uid");
+
+            if ($index->count() == 1) {
+                $arr = $index->get();
+                return (int) $arr[0];
             }
         }
         return null;
@@ -1557,29 +1949,138 @@ class rcube_imap_generic
         }
 
         if (!$this->select($mailbox)) {
-        }
-
-        // RFC 5957: SORT=DISPLAY
-        if (($field == 'FROM' || $field == 'TO') && $this->getCapability('SORT=DISPLAY')) {
-            $field = 'DISPLAY' . $field;
             return null;
         }
 
-        list($code, $response) = $this->execute('FETCH', array($id, '(UID)'));
+        $index = $this->search($mailbox, $id, true);
 
-        if ($code == self::ERROR_OK && preg_match("/^\* $id FETCH \(UID (.*)\)/i", $response, $m)) {
-            return (int) $m[1];
+        if ($index->count() == 1) {
+            $arr = $index->get();
+            return (int) $arr[0];
         }
 
         return null;
     }
 
-    function fetchUIDs($mailbox, $message_set=null)
+    /**
+     * Sets flag of the message(s)
+     *
+     * @param string        $mailbox   Mailbox name
+     * @param string|array  $messages  Message UID(s)
+     * @param string        $flag      Flag name
+     *
+     * @return bool True on success, False on failure
+     */
+    function flag($mailbox, $messages, $flag) {
+        return $this->modFlag($mailbox, $messages, $flag, '+');
+    }
+
+    /**
+     * Unsets flag of the message(s)
+     *
+     * @param string        $mailbox   Mailbox name
+     * @param string|array  $messages  Message UID(s)
+     * @param string        $flag      Flag name
+     *
+     * @return bool True on success, False on failure
+     */
+    function unflag($mailbox, $messages, $flag) {
+        return $this->modFlag($mailbox, $messages, $flag, '-');
+    }
+
+    /**
+     * Changes flag of the message(s)
+     *
+     * @param string        $mailbox   Mailbox name
+     * @param string|array  $messages  Message UID(s)
+     * @param string        $flag      Flag name
+     * @param string        $mod       Modifier [+|-]. Default: "+".
+     *
+     * @return bool True on success, False on failure
+     */
+    private function modFlag($mailbox, $messages, $flag, $mod = '+')
+    {
+        if ($mod != '+' && $mod != '-') {
+            $mod = '+';
+        }
+
+        if (!$this->select($mailbox)) {
+            return false;
+        }
+
+        if (!$this->data['READ-WRITE']) {
+            $this->setError(self::ERROR_READONLY, "Mailbox is read-only", 'STORE');
+            return false;
+        }
+
+        // Clear internal status cache
+        if ($flag == 'SEEN') {
+            unset($this->data['STATUS:'.$mailbox]['UNSEEN']);
+        }
+
+        $flag   = $this->flags[strtoupper($flag)];
+        $result = $this->execute('UID STORE', array(
+            $this->compressMessageSet($messages), $mod . 'FLAGS.SILENT', "($flag)"),
+            self::COMMAND_NORESPONSE);
+
+        return ($result == self::ERROR_OK);
+    }
+
+    /**
+     * Copies message(s) from one folder to another
+     *
+     * @param string|array  $messages  Message UID(s)
+     * @param string        $from      Mailbox name
+     * @param string        $to        Destination mailbox name
+     *
+     * @return bool True on success, False on failure
+     */
+    function copy($messages, $from, $to)
+    {
+        if (!$this->select($from)) {
+            return false;
+        }
+
+        // Clear internal status cache
+        unset($this->data['STATUS:'.$to]);
+
+        $result = $this->execute('UID COPY', array(
+            $this->compressMessageSet($messages), $this->escape($to)),
+            self::COMMAND_NORESPONSE);
+
+        return ($result == self::ERROR_OK);
+    }
+
+    /**
+     * Moves message(s) from one folder to another.
+     * Original message(s) will be marked as deleted.
+     *
+     * @param string|array  $messages  Message UID(s)
+     * @param string        $from      Mailbox name
+     * @param string        $to        Destination mailbox name
+     *
+     * @return bool True on success, False on failure
+     */
+    function move($messages, $from, $to)
     {
-        if (empty($message_set))
-            $message_set = '1:*';
+        if (!$this->select($from)) {
+            return false;
+        }
+
+        if (!$this->data['READ-WRITE']) {
+            $this->setError(self::ERROR_READONLY, "Mailbox is read-only", 'STORE');
+            return false;
+        }
+
+        $r = $this->copy($messages, $from, $to);
+
+        if ($r) {
+            // Clear internal status cache
+            unset($this->data['STATUS:'.$from]);
 
-        return $this->fetchHeaderIndex($mailbox, $message_set, 'UID', false);
+            return $this->flag($from, $messages, 'DELETED');
+        }
+        return $r;
     }
 
     /**
@@ -1637,9 +2138,10 @@ class rcube_imap_generic
                 $result[$id]->subject   = '';
                 $result[$id]->messageID = 'mid:' . $id;
 
-                $lines = array();
-                $line  = substr($line, strlen($m[0]) + 2);
-                $ln    = 0;
+                $headers = null;
+                $lines   = array();
+                $line    = substr($line, strlen($m[0]) + 2);
+                $ln      = 0;
 
                 // get complete entry
                 while (preg_match('/\{([0-9]+)\}\r\n$/', $line, $m)) {
@@ -1777,534 +2279,123 @@ class rcube_imap_generic
                             $result[$id]->messageID = $string;
                             break;
                         case 'x-priority':
-                            if (preg_match('/^(\d+)/', $string, $matches)) {
-                                $result[$id]->priority = intval($matches[1]);
-                            }
-                            break;
-                        default:
-                            if (strlen($field) > 2) {
-                                $result[$id]->others[$field] = $string;
-                            }
-                            break;
-                        }
-                    }
-                }
-            }
-
-            // VANISHED response (QRESYNC RFC5162)
-            // Sample: * VANISHED (EARLIER) 300:310,405,411
-
-            else if (preg_match('/^\* VANISHED [()EARLIER]*/i', $line, $match)) {
-                $line   = substr($line, strlen($match[0]));
-                $v_data = $this->tokenizeResponse($line, 1);
-
-                $this->data['VANISHED'] = $v_data;
-            }
-
-        } while (!$this->startsWith($line, $key, true));
-
-        return $result;
-    }
-
-    function fetchHeaders($mailbox, $message_set, $is_uid = false, $bodystr = false, $add = '')
-    {
-        $query_items = array('UID', 'RFC822.SIZE', 'FLAGS', 'INTERNALDATE');
-        if ($bodystr)
-            $query_items[] = 'BODYSTRUCTURE';
-        $query_items[] = 'BODY.PEEK[HEADER.FIELDS ('
-            . 'DATE FROM TO SUBJECT CONTENT-TYPE CC REPLY-TO LIST-POST DISPOSITION-NOTIFICATION-TO X-PRIORITY'
-            . ($add ? ' ' . trim($add) : '')
-            . ')]';
-
-        $result = $this->fetch($mailbox, $message_set, $is_uid, $query_items);
-
-        return $result;
-    }
-
-    function fetchHeader($mailbox, $id, $uidfetch=false, $bodystr=false, $add='')
-    {
-        $a = $this->fetchHeaders($mailbox, $id, $uidfetch, $bodystr, $add);
-        if (is_array($a)) {
-            return array_shift($a);
-        }
-        return false;
-    }
-
-    function sortHeaders($a, $field, $flag)
-    {
-        if (empty($field)) {
-            $field = 'uid';
-        }
-        else {
-            $field = strtolower($field);
-        }
-
-        if ($field == 'date' || $field == 'internaldate') {
-            $field = 'timestamp';
-        }
-
-        if (empty($flag)) {
-            $flag = 'ASC';
-        } else {
-            $flag = strtoupper($flag);
-        }
-
-        $c = count($a);
-        if ($c > 0) {
-            // Strategy:
-            // First, we'll create an "index" array.
-            // Then, we'll use sort() on that array,
-            // and use that to sort the main array.
-
-            // create "index" array
-            $index = array();
-            reset($a);
-            while (list($key, $val) = each($a)) {
-                if ($field == 'timestamp') {
-                    $data = $this->strToTime($val->date);
-                    if (!$data) {
-                        $data = $val->timestamp;
-                    }
-                } else {
-                    $data = $val->$field;
-                    if (is_string($data)) {
-                        $data = str_replace('"', '', $data);
-                        if ($field == 'subject') {
-                            $data = preg_replace('/^(Re: \s*|Fwd:\s*|Fw:\s*)+/i', '', $data);
-                        }
-                        $data = strtoupper($data);
-                    }
-                }
-                $index[$key] = $data;
-            }
-
-            // sort index
-            if ($flag == 'ASC') {
-                asort($index);
-            } else {
-                arsort($index);
-            }
-
-            // form new array based on index
-            $result = array();
-            reset($index);
-            while (list($key, $val) = each($index)) {
-                $result[$key] = $a[$key];
-            }
-        }
-
-        return $result;
-    }
-
-
-    function modFlag($mailbox, $messages, $flag, $mod)
-    {
-        if ($mod != '+' && $mod != '-') {
-            $mod = '+';
-        }
-
-        if (!$this->select($mailbox)) {
-            return false;
-        }
-
-        if (!$this->data['READ-WRITE']) {
-            $this->setError(self::ERROR_READONLY, "Mailbox is read-only", 'STORE');
-            return false;
-        }
-
-        // Clear internal status cache
-        if ($flag == 'SEEN') {
-            unset($this->data['STATUS:'.$mailbox]['UNSEEN']);
-        }
-
-        $flag   = $this->flags[strtoupper($flag)];
-        $result = $this->execute('UID STORE', array(
-            $this->compressMessageSet($messages), $mod . 'FLAGS.SILENT', "($flag)"),
-            self::COMMAND_NORESPONSE);
-
-        return ($result == self::ERROR_OK);
-    }
-
-    function flag($mailbox, $messages, $flag) {
-        return $this->modFlag($mailbox, $messages, $flag, '+');
-    }
-
-    function unflag($mailbox, $messages, $flag) {
-        return $this->modFlag($mailbox, $messages, $flag, '-');
-    }
-
-    function delete($mailbox, $messages) {
-        return $this->modFlag($mailbox, $messages, 'DELETED', '+');
-    }
-
-    function copy($messages, $from, $to)
-    {
-        if (!$this->select($from)) {
-            return false;
-        }
-
-        // Clear internal status cache
-        unset($this->data['STATUS:'.$to]);
-
-        $result = $this->execute('UID COPY', array(
-            $this->compressMessageSet($messages), $this->escape($to)),
-            self::COMMAND_NORESPONSE);
-
-        return ($result == self::ERROR_OK);
-    }
-
-    function move($messages, $from, $to)
-    {
-        if (!$this->select($from)) {
-            return false;
-        }
-
-        if (!$this->data['READ-WRITE']) {
-            $this->setError(self::ERROR_READONLY, "Mailbox is read-only", 'STORE');
-            return false;
-        }
-
-        $r = $this->copy($messages, $from, $to);
-
-        if ($r) {
-            // Clear internal status cache
-            unset($this->data['STATUS:'.$from]);
-
-            return $this->delete($from, $messages);
-        }
-        return $r;
-    }
-
-    // Don't be tempted to change $str to pass by reference to speed this up - it will slow it down by about
-    // 7 times instead :-) See comments on http://uk2.php.net/references and this article:
-    // http://derickrethans.nl/files/phparch-php-variables-article.pdf
-    private function parseThread($str, $begin, $end, $root, $parent, $depth, &$depthmap, &$haschildren)
-    {
-        $node = array();
-        if ($str[$begin] != '(') {
-            $stop = $begin + strspn($str, '1234567890', $begin, $end - $begin);
-            $msg = substr($str, $begin, $stop - $begin);
-            if ($msg == 0)
-                return $node;
-            if (is_null($root))
-                $root = $msg;
-            $depthmap[$msg] = $depth;
-            $haschildren[$msg] = false;
-            if (!is_null($parent))
-                $haschildren[$parent] = true;
-            if ($stop + 1 < $end)
-                $node[$msg] = $this->parseThread($str, $stop + 1, $end, $root, $msg, $depth + 1, $depthmap, $haschildren);
-            else
-                $node[$msg] = array();
-        } else {
-            $off = $begin;
-            while ($off < $end) {
-                $start = $off;
-                $off++;
-                $n = 1;
-                while ($n > 0) {
-                    $p = strpos($str, ')', $off);
-                    if ($p === false) {
-                        error_log("Mismatched brackets parsing IMAP THREAD response:");
-                        error_log(substr($str, ($begin < 10) ? 0 : ($begin - 10), $end - $begin + 20));
-                        error_log(str_repeat(' ', $off - (($begin < 10) ? 0 : ($begin - 10))));
-                        return $node;
-                    }
-                    $p1 = strpos($str, '(', $off);
-                    if ($p1 !== false && $p1 < $p) {
-                        $off = $p1 + 1;
-                        $n++;
-                    } else {
-                        $off = $p + 1;
-                        $n--;
-                    }
-                }
-                $node += $this->parseThread($str, $start + 1, $off - 1, $root, $parent, $depth, $depthmap, $haschildren);
-            }
-        }
-
-        return $node;
-    }
-
-    function thread($mailbox, $algorithm='REFERENCES', $criteria='', $encoding='US-ASCII')
-    {
-        $old_sel = $this->selected;
-
-        if (!$this->select($mailbox)) {
-            return false;
-        }
-
-        // return empty result when folder is empty and we're just after SELECT
-        if ($old_sel != $mailbox && !$this->data['EXISTS']) {
-            return array(array(), array(), array());
-        }
-
-        $encoding  = $encoding ? trim($encoding) : 'US-ASCII';
-        $algorithm = $algorithm ? trim($algorithm) : 'REFERENCES';
-        $criteria  = $criteria ? 'ALL '.trim($criteria) : 'ALL';
-        $data      = '';
-
-        list($code, $response) = $this->execute('THREAD', array(
-            $algorithm, $encoding, $criteria));
-
-        if ($code == self::ERROR_OK) {
-            // remove prefix...
-            $response = substr($response, stripos($response, '* THREAD') + 9);
-            // ...unilateral untagged server responses
-            if ($pos = strpos($response, '*')) {
-                $response = substr($response, 0, $pos);
-            }
-
-            $response    = str_replace("\r\n", '', $response);
-            $depthmap    = array();
-            $haschildren = array();
-
-            $tree = $this->parseThread($response, 0, strlen($response),
-                null, null, 0, $depthmap, $haschildren);
-
-            return array($tree, $depthmap, $haschildren);
-        }
-
-        return false;
-    }
-
-    /**
-     * Executes SEARCH command
-     *
-     * @param string $mailbox    Mailbox name
-     * @param string $criteria   Searching criteria
-     * @param bool   $return_uid Enable UID in result instead of sequence ID
-     * @param array  $items      Return items (MIN, MAX, COUNT, ALL)
-     *
-     * @return array Message identifiers or item-value hash 
-     */
-    function search($mailbox, $criteria, $return_uid=false, $items=array())
-    {
-        $old_sel = $this->selected;
-
-        if (!$this->select($mailbox)) {
-            return false;
-        }
-
-        // return empty result when folder is empty and we're just after SELECT
-        if ($old_sel != $mailbox && !$this->data['EXISTS']) {
-            if (!empty($items))
-                return array_combine($items, array_fill(0, count($items), 0));
-            else
-                return array();
-        }
-
-        $esearch  = empty($items) ? false : $this->getCapability('ESEARCH');
-        $criteria = trim($criteria);
-        $params   = '';
-
-        // RFC4731: ESEARCH
-        if (!empty($items) && $esearch) {
-            $params .= 'RETURN (' . implode(' ', $items) . ')';
-        }
-        if (!empty($criteria)) {
-            $modseq = stripos($criteria, 'MODSEQ') !== false;
-            $params .= ($params ? ' ' : '') . $criteria;
-        }
-        else {
-            $params .= 'ALL';
-        }
-
-        list($code, $response) = $this->execute($return_uid ? 'UID SEARCH' : 'SEARCH',
-            array($params));
-
-        if ($code == self::ERROR_OK) {
-            // remove prefix...
-            $response = substr($response, stripos($response,
-                $esearch ? '* ESEARCH' : '* SEARCH') + ($esearch ? 10 : 9));
-            // ...and unilateral untagged server responses
-            if ($pos = strpos($response, '*')) {
-                $response = rtrim(substr($response, 0, $pos));
-            }
-
-            // remove MODSEQ response
-            if ($modseq) {
-                if (preg_match('/\(MODSEQ ([0-9]+)\)$/', $response, $m)) {
-                    $response = substr($response, 0, -strlen($m[0]));
-                }
-            }
-
-            if ($esearch) {
-                // Skip prefix: ... (TAG "A285") UID ...
-                $this->tokenizeResponse($response, $return_uid ? 2 : 1);
-
-                $result = array();
-                for ($i=0; $i<count($items); $i++) {
-                    // If the SEARCH returns no matches, the server MUST NOT
-                    // include the item result option in the ESEARCH response
-                    if ($ret = $this->tokenizeResponse($response, 2)) {
-                        list ($name, $value) = $ret;
-                        $result[$name] = $value;
-                    }
-                }
-
-                return $result;
-            }
-            else {
-                $response = preg_split('/[\s\r\n]+/', $response, -1, PREG_SPLIT_NO_EMPTY);
-
-                if (!empty($items)) {
-                    $result = array();
-                    if (in_array('COUNT', $items)) {
-                        $result['COUNT'] = count($response);
-                    }
-                    if (in_array('MIN', $items)) {
-                        $result['MIN'] = !empty($response) ? min($response) : 0;
-                    }
-                    if (in_array('MAX', $items)) {
-                        $result['MAX'] = !empty($response) ? max($response) : 0;
-                    }
-                    if (in_array('ALL', $items)) {
-                        $result['ALL'] = $this->compressMessageSet($response, true);
-                    }
-
-                    return $result;
-                }
-                else {
-                    return $response;
-                }
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * Returns list of mailboxes
-     *
-     * @param string $ref         Reference name
-     * @param string $mailbox     Mailbox name
-     * @param array  $status_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.
-     */
-    function listMailboxes($ref, $mailbox, $status_opts=array(), $select_opts=array())
-    {
-        return $this->_listMailboxes($ref, $mailbox, false, $status_opts, $select_opts);
-    }
-
-    /**
-     * Returns list of subscribed mailboxes
-     *
-     * @param string $ref         Reference name
-     * @param string $mailbox     Mailbox name
-     * @param array  $status_opts (see self::_listMailboxes)
-     *
-     * @return array List of mailboxes or hash of options if $status_opts argument
-     *               is non-empty.
-     */
-    function listSubscribed($ref, $mailbox, $status_opts=array())
-    {
-        return $this->_listMailboxes($ref, $mailbox, true, $status_opts, NULL);
-    }
-
-    /**
-     * IMAP LIST/LSUB command
-     *
-     * @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)
-     *                            Possible: MESSAGES, RECENT, UIDNEXT, UIDVALIDITY, UNSEEN
-     * @param array  $select_opts List of selection options (RFC5258: LIST-EXTENDED)
-     *                            Possible: SUBSCRIBED, RECURSIVEMATCH, REMOTE
-     *
-     * @return array List of mailboxes or hash of options if $status_ops argument
-     *               is non-empty.
-     */
-    private function _listMailboxes($ref, $mailbox, $subscribed=false,
-        $status_opts=array(), $select_opts=array())
-    {
-        if (!strlen($mailbox)) {
-            $mailbox = '*';
-        }
+                            if (preg_match('/^(\d+)/', $string, $matches)) {
+                                $result[$id]->priority = intval($matches[1]);
+                            }
+                            break;
+                        default:
+                            if (strlen($field) > 2) {
+                                $result[$id]->others[$field] = $string;
+                            }
+                            break;
+                        }
+                    }
+                }
+            }
 
-        $args = array();
+            // VANISHED response (QRESYNC RFC5162)
+            // Sample: * VANISHED (EARLIER) 300:310,405,411
 
-        if (!empty($select_opts) && $this->getCapability('LIST-EXTENDED')) {
-            $select_opts = (array) $select_opts;
+            else if (preg_match('/^\* VANISHED [()EARLIER]*/i', $line, $match)) {
+                $line   = substr($line, strlen($match[0]));
+                $v_data = $this->tokenizeResponse($line, 1);
 
-            $args[] = '(' . implode(' ', $select_opts) . ')';
-        }
+                $this->data['VANISHED'] = $v_data;
+            }
 
-        $args[] = $this->escape($ref);
-        $args[] = $this->escape($mailbox);
+        } while (!$this->startsWith($line, $key, true));
 
-        if (!empty($status_opts) && $this->getCapability('LIST-STATUS')) {
-            $status_opts = (array) $status_opts;
-            $lstatus = true;
+        return $result;
+    }
 
-            $args[] = 'RETURN (STATUS (' . implode(' ', $status_opts) . '))';
-        }
+    function fetchHeaders($mailbox, $message_set, $is_uid = false, $bodystr = false, $add = '')
+    {
+        $query_items = array('UID', 'RFC822.SIZE', 'FLAGS', 'INTERNALDATE');
+        if ($bodystr)
+            $query_items[] = 'BODYSTRUCTURE';
+        $query_items[] = 'BODY.PEEK[HEADER.FIELDS ('
+            . 'DATE FROM TO SUBJECT CONTENT-TYPE CC REPLY-TO LIST-POST DISPOSITION-NOTIFICATION-TO X-PRIORITY'
+            . ($add ? ' ' . trim($add) : '')
+            . ')]';
 
-        list($code, $response) = $this->execute($subscribed ? 'LSUB' : 'LIST', $args);
+        $result = $this->fetch($mailbox, $message_set, $is_uid, $query_items);
 
-        if ($code == self::ERROR_OK) {
-            $folders  = array();
-            $last     = 0;
-            $pos      = 0;
-            $response .= "\r\n";
+        return $result;
+    }
 
-            while ($pos = strpos($response, "\r\n", $pos+1)) {
-                // literal string, not real end-of-command-line
-                if ($response[$pos-1] == '}') {
-                    continue;
-                }
+    function fetchHeader($mailbox, $id, $uidfetch=false, $bodystr=false, $add='')
+    {
+        $a = $this->fetchHeaders($mailbox, $id, $uidfetch, $bodystr, $add);
+        if (is_array($a)) {
+            return array_shift($a);
+        }
+        return false;
+    }
 
-                $line = substr($response, $last, $pos - $last);
-                $last = $pos + 2;
+    function sortHeaders($a, $field, $flag)
+    {
+        if (empty($field)) {
+            $field = 'uid';
+        }
+        else {
+            $field = strtolower($field);
+        }
 
-                if (!preg_match('/^\* (LIST|LSUB|STATUS) /i', $line, $m)) {
-                    continue;
-                }
-                $cmd  = strtoupper($m[1]);
-                $line = substr($line, strlen($m[0]));
+        if ($field == 'date' || $field == 'internaldate') {
+            $field = 'timestamp';
+        }
 
-                // * LIST (<options>) <delimiter> <mailbox>
-                if ($cmd == 'LIST' || $cmd == 'LSUB') {
-                    list($opts, $delim, $mailbox) = $this->tokenizeResponse($line, 3);
+        if (empty($flag)) {
+            $flag = 'ASC';
+        } else {
+            $flag = strtoupper($flag);
+        }
 
-                    // Add to result array
-                    if (!$lstatus) {
-                        $folders[] = $mailbox;
-                    }
-                    else {
-                        $folders[$mailbox] = array();
-                    }
+        $c = count($a);
+        if ($c > 0) {
+            // Strategy:
+            // First, we'll create an "index" array.
+            // Then, we'll use sort() on that array,
+            // and use that to sort the main array.
 
-                    // store LSUB options only if not empty, this way
-                    // we can detect a situation when LIST doesn't return specified folder
-                    if (!empty($opts) || $cmd == 'LIST') {
-                        // Add to options array
-                        if (empty($this->data['LIST'][$mailbox]))
-                            $this->data['LIST'][$mailbox] = $opts;
-                        else if (!empty($opts))
-                            $this->data['LIST'][$mailbox] = array_unique(array_merge(
-                                $this->data['LIST'][$mailbox], $opts));
+            // create "index" array
+            $index = array();
+            reset($a);
+            while (list($key, $val) = each($a)) {
+                if ($field == 'timestamp') {
+                    $data = $this->strToTime($val->date);
+                    if (!$data) {
+                        $data = $val->timestamp;
                     }
-                }
-                // * 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 {
+                    $data = $val->$field;
+                    if (is_string($data)) {
+                        $data = str_replace('"', '', $data);
+                        if ($field == 'subject') {
+                            $data = preg_replace('/^(Re: \s*|Fwd:\s*|Fw:\s*)+/i', '', $data);
+                        }
+                        $data = strtoupper($data);
                     }
                 }
+                $index[$key] = $data;
             }
 
-            return $folders;
+            // sort index
+            if ($flag == 'ASC') {
+                asort($index);
+            } else {
+                arsort($index);
+            }
+
+            // form new array based on index
+            $result = array();
+            reset($index);
+            while (list($key, $val) = each($index)) {
+                $result[$key] = $a[$key];
+            }
         }
 
-        return false;
+        return $result;
     }
 
     function fetchMIMEHeaders($mailbox, $uid, $parts, $mime=true)
@@ -2366,7 +2457,7 @@ class rcube_imap_generic
         return $this->handlePartBody($mailbox, $id, $is_uid, $part);
     }
 
-    function handlePartBody($mailbox, $id, $is_uid=false, $part='', $encoding=NULL, $print=NULL, $file=NULL)
+    function handlePartBody($mailbox, $id, $is_uid=false, $part='', $encoding=NULL, $print=NULL, $file=NULL, $formatted=true)
     {
         if (!$this->select($mailbox)) {
             return false;
@@ -2483,7 +2574,7 @@ class rcube_imap_generic
                         continue;
                     $line = convert_uudecode($line);
                 // default
-                } else {
+                } else if ($formatted) {
                     $line = rtrim($line, "\t\r\n\0\x0B") . "\n";
                 }
 
@@ -2515,22 +2606,6 @@ class rcube_imap_generic
         return false;
     }
 
-    function createFolder($mailbox)
-    {
-        $result = $this->execute('CREATE', array($this->escape($mailbox)),
-            self::COMMAND_NORESPONSE);
-
-        return ($result == self::ERROR_OK);
-    }
-
-    function renameFolder($from, $to)
-    {
-        $result = $this->execute('RENAME', array($this->escape($from), $this->escape($to)),
-            self::COMMAND_NORESPONSE);
-
-        return ($result == self::ERROR_OK);
-    }
-
     /**
      * Handler for IMAP APPEND command
      *
@@ -2688,6 +2763,11 @@ class rcube_imap_generic
         return false;
     }
 
+    /**
+     * Returns QUOTA information
+     *
+     * @return array Quota information
+     */
     function getQuota()
     {
         /*
@@ -3444,6 +3524,92 @@ class rcube_imap_generic
         return '(' . trim($string) . ')';
     }
 
+    /**
+     * Converts message identifiers array into sequence-set syntax
+     *
+     * @param array $messages Message identifiers
+     * @param bool  $force    Forces compression of any size
+     *
+     * @return string Compressed sequence-set
+     */
+    static function compressMessageSet($messages, $force=false)
+    {
+        // given a comma delimited list of independent mid's,
+        // compresses by grouping sequences together
+
+        if (!is_array($messages)) {
+            // if less than 255 bytes long, let's not bother
+            if (!$force && strlen($messages)<255) {
+                return $messages;
+           }
+
+            // see if it's already been compressed
+            if (strpos($messages, ':') !== false) {
+                return $messages;
+            }
+
+            // separate, then sort
+            $messages = explode(',', $messages);
+        }
+
+        sort($messages);
+
+        $result = array();
+        $start  = $prev = $messages[0];
+
+        foreach ($messages as $id) {
+            $incr = $id - $prev;
+            if ($incr > 1) { // found a gap
+                if ($start == $prev) {
+                    $result[] = $prev; // push single id
+                } else {
+                    $result[] = $start . ':' . $prev; // push sequence as start_id:end_id
+                }
+                $start = $id; // start of new sequence
+            }
+            $prev = $id;
+        }
+
+        // handle the last sequence/id
+        if ($start == $prev) {
+            $result[] = $prev;
+        } else {
+            $result[] = $start.':'.$prev;
+        }
+
+        // return as comma separated string
+        return implode(',', $result);
+    }
+
+    /**
+     * Converts message sequence-set into array
+     *
+     * @param string $messages Message identifiers
+     *
+     * @return array List of message identifiers
+     */
+    static function uncompressMessageSet($messages)
+    {
+        if (empty($messages)) {
+            return array();
+        }
+
+        $result   = array();
+        $messages = explode(',', $messages);
+
+        foreach ($messages as $idx => $part) {
+            $items = explode(':', $part);
+            $max   = max($items[0], $items[1]);
+
+            for ($x=$items[0]; $x<=$max; $x++) {
+                $result[] = (int)$x;
+            }
+            unset($messages[$idx]);
+        }
+
+        return $result;
+    }
+
     private function _xor($string, $string2)
     {
         $result = '';
@@ -3482,6 +3648,9 @@ class rcube_imap_generic
         return $ts < 0 ? 0 : $ts;
     }
 
+    /**
+     * CAPABILITY response parser
+     */
     private function parseCapability($str, $trusted=false)
     {
         $str = preg_replace('/^\* CAPABILITY /i', '', $str);
@@ -3530,6 +3699,13 @@ class rcube_imap_generic
         return sprintf("{%d}\r\n%s", strlen($string), $string);
     }
 
+    /**
+     * Unescapes quoted-string
+     *
+     * @param string  $string       IMAP string
+     *
+     * @return string String
+     */
     static function unEscape($string)
     {
         return stripslashes($string);
index 6801a40962ce4ec01df35beb63b481dd08ee33b4..f062d4b71b420ffdd0c30a461fffa67c78f54c02 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2008-2010, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Class to handle HTML page output using a skin template.             |
@@ -16,7 +19,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: rcube_json_output.php 5227 2011-09-16 17:54:07Z thomasb $
+ $Id$
 
 */
 
@@ -209,7 +212,7 @@ class rcube_json_output
     public function redirect($p = array(), $delay = 1)
     {
         $location = rcmail::get_instance()->url($p);
-        $this->remote_response("window.setTimeout(\"location.href='{$location}'\", $delay);");
+        $this->remote_response(sprintf("window.setTimeout(function(){ %s.redirect('%s',true); }, %d);", JS_OBJECT_NAME, $location, $delay));
         exit;
     }
 
index c592fae89fc0aff10956762c3ce850260487efa3..17ef20aabe3ff8085d77ef7ab0011ec6ba97358f 100644 (file)
@@ -4,9 +4,12 @@
  | program/include/rcube_ldap.php                                        |
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
- | Copyright (C) 2006-2011, The Roundcube Dev Team                       |
+ | Copyright (C) 2006-2012, The Roundcube Dev Team                       |
  | Copyright (C) 2011, Kolab Systems AG                                  |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Interface to an LDAP address directory                              |
@@ -17,7 +20,7 @@
  |         Aleksander Machniak <machniak@kolabsys.com>                   |
  +-----------------------------------------------------------------------+
 
- $Id: rcube_ldap.php 5879 2012-02-15 08:29:33Z thomasb $
+ $Id$
 
 */
 
@@ -41,7 +44,7 @@ class rcube_ldap extends rcube_addressbook
     protected $conn;
     protected $prop = array();
     protected $fieldmap = array();
-
+    protected $sub_filter;
     protected $filter = '';
     protected $result = null;
     protected $ldap_result = null;
@@ -60,7 +63,7 @@ class rcube_ldap extends rcube_addressbook
     /**
     * Object constructor
     *
-    * @param array     LDAP connection properties
+    * @param array         LDAP connection properties
     * @param boolean   Enables debug mode
     * @param string    Current user mail domain name
     * @param integer User-ID
@@ -92,7 +95,7 @@ class rcube_ldap extends rcube_addressbook
             foreach ($p['fieldmap'] as $rf => $lf)
                 $this->fieldmap[$rf] = $this->_attr_name(strtolower($lf));
         }
-        else {
+        else if (!empty($p)) {
             // read deprecated *_field properties to remain backwards compatible
             foreach ($p as $prop => $value)
                 if (preg_match('/^(.+)_field$/', $prop, $matches))
@@ -100,38 +103,89 @@ class rcube_ldap extends rcube_addressbook
         }
 
         // use fieldmap to advertise supported coltypes to the application
-        foreach ($this->fieldmap as $col => $lf) {
-            list($col, $type) = explode(':', $col);
+        foreach ($this->fieldmap as $colv => $lfv) {
+            list($col, $type) = explode(':', $colv);
+            list($lf, $limit, $delim) = explode(':', $lfv);
+
+            if ($limit == '*') $limit = null;
+            else               $limit = max(1, intval($limit));
+
             if (!is_array($this->coltypes[$col])) {
                 $subtypes = $type ? array($type) : null;
-                $this->coltypes[$col] = array('limit' => 1, 'subtypes' => $subtypes);
+                $this->coltypes[$col] = array('limit' => $limit, 'subtypes' => $subtypes);
             }
             elseif ($type) {
                 $this->coltypes[$col]['subtypes'][] = $type;
-                $this->coltypes[$col]['limit']++;
+                $this->coltypes[$col]['limit'] += $limit;
             }
+
+            if ($delim)
+               $this->coltypes[$col]['serialized'][$type] = $delim;
+
             if ($type && !$this->fieldmap[$col])
-                $this->fieldmap[$col] = $lf;
+               $this->fieldmap[$col] = $lf;
+
+            $this->fieldmap[$colv] = $lf;
         }
 
+        // support for composite address
         if ($this->fieldmap['street'] && $this->fieldmap['locality']) {
-            $this->coltypes['address'] = array('limit' => max(1, $this->coltypes['locality']['limit']), 'subtypes' => $this->coltypes['locality']['subtypes'], 'childs' => array());
+            $this->coltypes['address'] = array(
+               'limit'    => max(1, $this->coltypes['locality']['limit'] + $this->coltypes['address']['limit']),
+               'subtypes' => array_merge((array)$this->coltypes['address']['subtypes'], (array)$this->coltypes['locality']['subtypes']),
+               'childs' => array(),
+               ) + (array)$this->coltypes['address'];
+
             foreach (array('street','locality','zipcode','region','country') as $childcol) {
                 if ($this->fieldmap[$childcol]) {
                     $this->coltypes['address']['childs'][$childcol] = array('type' => 'text');
                     unset($this->coltypes[$childcol]);  // remove address child col from global coltypes list
                 }
             }
+
+            // at least one address type must be specified
+            if (empty($this->coltypes['address']['subtypes'])) {
+                $this->coltypes['address']['subtypes'] = array('home');
+            }
+        }
+        else if ($this->coltypes['address']) {
+            $this->coltypes['address'] += array('type' => 'textarea', 'childs' => null, 'size' => 40);
+
+            // 'serialized' means the UI has to present a composite address field
+            if ($this->coltypes['address']['serialized']) {
+                $childprop = array('type' => 'text');
+                $this->coltypes['address']['type'] = 'composite';
+                $this->coltypes['address']['childs'] = array('street' => $childprop, 'locality' => $childprop, 'zipcode' => $childprop, 'country' => $childprop);
+            }
         }
-        else if ($this->coltypes['address'])
-            $this->coltypes['address'] = array('type' => 'textarea', 'childs' => null, 'limit' => 1, 'size' => 40);
 
         // make sure 'required_fields' is an array
-        if (!is_array($this->prop['required_fields']))
+        if (!is_array($this->prop['required_fields'])) {
             $this->prop['required_fields'] = (array) $this->prop['required_fields'];
+        }
 
-        foreach ($this->prop['required_fields'] as $key => $val)
+        // make sure LDAP_rdn field is required
+        if (!empty($this->prop['LDAP_rdn']) && !in_array($this->prop['LDAP_rdn'], $this->prop['required_fields'])) {
+            $this->prop['required_fields'][] = $this->prop['LDAP_rdn'];
+        }
+
+        foreach ($this->prop['required_fields'] as $key => $val) {
             $this->prop['required_fields'][$key] = $this->_attr_name(strtolower($val));
+        }
+
+        // Build sub_fields filter
+        if (!empty($this->prop['sub_fields']) && is_array($this->prop['sub_fields'])) {
+            $this->sub_filter = '';
+            foreach ($this->prop['sub_fields'] as $attr => $class) {
+                if (!empty($class)) {
+                    $class = is_array($class) ? array_pop($class) : $class;
+                    $this->sub_filter .= '(objectClass=' . $class . ')';
+                }
+            }
+            if (count($this->prop['sub_fields']) > 1) {
+                $this->sub_filter = '(|' . $this->sub_filter . ')';
+            }
+        }
 
         $this->sort_col    = is_array($p['sort']) ? $p['sort'][0] : $p['sort'];
         $this->debug       = $debug;
@@ -172,7 +226,7 @@ class rcube_ldap extends rcube_addressbook
             $host     = idn_to_ascii(rcube_parse_host($host));
             $hostname = $host.($this->prop['port'] ? ':'.$this->prop['port'] : '');
 
-            $this->_debug("C: Connect [$hostname]");
+            $this->_debug("C: Connect [$hostname] [{$this->prop['name']}]");
 
             if ($lc = @ldap_connect($host, $this->prop['port']))
             {
@@ -550,7 +604,7 @@ class rcube_ldap extends rcube_addressbook
             $entries = @ldap_get_entries($this->conn, $result);
         }
 
-        for ($i=0; $i < $entries["count"]; $i++)
+        for ($i=0; $i < $entries['count']; $i++)
         {
             $entry = $entries[$i];
 
@@ -560,6 +614,7 @@ class rcube_ldap extends rcube_addressbook
             foreach ((array)$entry['objectclass'] as $objectclass)
             {
                 switch (strtolower($objectclass)) {
+                    case "group":
                     case "groupofnames":
                     case "kolabgroupofnames":
                         $group_members = array_merge($group_members, $this->_list_group_members($dn, $entry, 'member', $count));
@@ -573,7 +628,7 @@ class rcube_ldap extends rcube_addressbook
                         break;
                 }
             }
-            
+
             if ($this->prop['sizelimit'] && count($group_members) > $this->prop['sizelimit'])
               break;
         }
@@ -748,24 +803,26 @@ class rcube_ldap extends rcube_addressbook
 
             for ($i = 0; $i < $entries['count']; $i++) {
                 $rec = $this->_ldap2result($entries[$i]);
-                foreach (array('email', 'name') as $f) {
-                    $val = mb_strtolower($rec[$f]);
-                    switch ($mode) {
-                    case 1:
-                        $got = ($val == $search);
-                        break;
-                    case 2:
-                        $got = ($search == substr($val, 0, strlen($search)));
-                        break;
-                    default:
-                        $got = (strpos($val, $search) !== false);
-                        break;
-                    }
+                foreach ($fields as $f) {
+                    foreach ((array)$rec[$f] as $val) {
+                        $val = mb_strtolower($val);
+                        switch ($mode) {
+                        case 1:
+                            $got = ($val == $search);
+                            break;
+                        case 2:
+                            $got = ($search == substr($val, 0, strlen($search)));
+                            break;
+                        default:
+                            $got = (strpos($val, $search) !== false);
+                            break;
+                        }
 
-                    if ($got) {
-                        $this->result->add($rec);
-                        $this->result->count++;
-                        break;
+                        if ($got) {
+                            $this->result->add($rec);
+                            $this->result->count++;
+                            break 2;
+                        }
                     }
                 }
             }
@@ -860,10 +917,8 @@ class rcube_ldap extends rcube_addressbook
                 // The filter is not set, set it.
                 $this->filter = $this->prop['filter'];
             }
-            $this->_exec_search(true);
-            if ($this->ldap_result) {
-                $count = ldap_count_entries($this->conn, $this->ldap_result);
-            }
+
+            $count = (int) $this->_exec_search(true);
         }
 
         return new rcube_result_set($count, ($this->list_page-1) * $this->page_size);
@@ -891,28 +946,42 @@ class rcube_ldap extends rcube_addressbook
      */
     function get_record($dn, $assoc=false)
     {
-        $res = null;
+        $res = $this->result = null;
+
         if ($this->conn && $dn)
         {
             $dn = self::dn_decode($dn);
 
             $this->_debug("C: Read [dn: $dn] [(objectclass=*)]");
 
-            if ($this->ldap_result = @ldap_read($this->conn, $dn, '(objectclass=*)', array_values($this->fieldmap)))
-                $entry = ldap_first_entry($this->conn, $this->ldap_result);
-            else
-                $this->_debug("S: ".ldap_error($this->conn));
+            if ($ldap_result = @ldap_read($this->conn, $dn, '(objectclass=*)', array_values($this->fieldmap))) {
+                $this->_debug("S: OK");
 
-            if ($entry && ($rec = ldap_get_attributes($this->conn, $entry)))
-            {
-                $this->_debug("S: OK"/* . print_r($rec, true)*/);
+                $entry = ldap_first_entry($this->conn, $ldap_result);
 
-                $rec = array_change_key_case($rec, CASE_LOWER);
+                if ($entry && ($rec = ldap_get_attributes($this->conn, $entry))) {
+                    $rec = array_change_key_case($rec, CASE_LOWER);
+                }
+            }
+            else {
+                $this->_debug("S: ".ldap_error($this->conn));
+            }
+
+            // Use ldap_list to get subentries like country (c) attribute (#1488123)
+            if (!empty($rec) && $this->sub_filter) {
+                if ($entries = $this->ldap_list($dn, $this->sub_filter, array_keys($this->prop['sub_fields']))) {
+                    foreach ($entries as $entry) {
+                        $lrec = array_change_key_case($entry, CASE_LOWER);
+                        $rec  = array_merge($lrec, $rec);
+                    }
+                }
+            }
 
+            if (!empty($rec)) {
                 // Add in the dn for the entry.
                 $rec['dn'] = $dn;
                 $res = $this->_ldap2result($rec);
-                $this->result = new rcube_result_set(1);
+                $this->result = new rcube_result_set();
                 $this->result->add($res);
             }
         }
@@ -931,6 +1000,11 @@ class rcube_ldap extends rcube_addressbook
      */
     public function validate(&$save_data, $autofix = false)
     {
+        // validate e-mail addresses
+        if (!parent::validate($save_data, $autofix)) {
+            return false;
+        }
+
         // check for name input
         if (empty($save_data['name'])) {
             $this->set_error(self::ERROR_VALIDATE, 'nonamewarning');
@@ -941,7 +1015,7 @@ class rcube_ldap extends rcube_addressbook
         $missing = null;
         $ldap_data = $this->_map_data($save_data);
         foreach ($this->prop['required_fields'] as $fld) {
-            if (!isset($ldap_data[$fld])) {
+            if (!isset($ldap_data[$fld]) || $ldap_data[$fld] === '') {
                 $missing[$fld] = 1;
             }
         }
@@ -949,26 +1023,43 @@ class rcube_ldap extends rcube_addressbook
         if ($missing) {
             // try to complete record automatically
             if ($autofix) {
+                $sn_field    = $this->fieldmap['surname'];
+                $fn_field    = $this->fieldmap['firstname'];
+                $mail_field  = $this->fieldmap['email'];
+
+                // try to extract surname and firstname from displayname
                 $reverse_map = array_flip($this->fieldmap);
-                $name_parts = preg_split('/[\s,.]+/', $save_data['name']);
-                if ($missing['sn']) {
-                    $sn_field = $reverse_map['sn'];
-                    $save_data[$sn_field] = array_pop ($name_parts);
+                $name_parts  = preg_split('/[\s,.]+/', $save_data['name']);
+
+                if ($sn_field && $missing[$sn_field]) {
+                    $save_data['surname'] = array_pop($name_parts);
+                    unset($missing[$sn_field]);
                 }
-                if ($missing[($fn_field = $this->fieldmap['firstname'])]) {
+
+                if ($fn_field && $missing[$fn_field]) {
                     $save_data['firstname'] = array_shift($name_parts);
+                    unset($missing[$fn_field]);
                 }
 
-                return $this->validate($save_data, false);
+                // try to fix missing e-mail, very often on import
+                // from vCard we have email:other only defined
+                if ($mail_field && $missing[$mail_field]) {
+                    $emails = $this->get_col_values('email', $save_data, true);
+                    if (!empty($emails) && ($email = array_shift($emails))) {
+                        $save_data['email'] = $email;
+                        unset($missing[$mail_field]);
+                    }
+                }
             }
 
             // TODO: generate message saying which fields are missing
-            $this->set_error(self::ERROR_VALIDATE, 'formincomplete');
-            return false;
+            if (!empty($missing)) {
+                $this->set_error(self::ERROR_VALIDATE, 'formincomplete');
+                return false;
+            }
         }
 
-        // validate e-mail addresses
-        return parent::validate($save_data, $autofix);
+        return true;
     }
 
 
@@ -1003,16 +1094,31 @@ class rcube_ldap extends rcube_addressbook
         // Build the new entries DN.
         $dn = $this->prop['LDAP_rdn'].'='.$this->_quote_string($newentry[$this->prop['LDAP_rdn']], true).','.$this->base_dn;
 
-        $this->_debug("C: Add [dn: $dn]: ".print_r($newentry, true));
+        // Remove attributes that need to be added separately (child objects)
+        $xfields = array();
+        if (!empty($this->prop['sub_fields']) && is_array($this->prop['sub_fields'])) {
+            foreach ($this->prop['sub_fields'] as $xf => $xclass) {
+                if (!empty($newentry[$xf])) {
+                    $xfields[$xf] = $newentry[$xf];
+                    unset($newentry[$xf]);
+                }
+            }
+        }
 
-        $res = ldap_add($this->conn, $dn, $newentry);
-        if ($res === FALSE) {
-            $this->_debug("S: ".ldap_error($this->conn));
+        if (!$this->ldap_add($dn, $newentry)) {
             $this->set_error(self::ERROR_SAVING, 'errorsaving');
             return false;
-        } // end if
+        }
 
-        $this->_debug("S: OK");
+        foreach ($xfields as $xidx => $xf) {
+            $xdn = $xidx.'='.$this->_quote_string($xf).','.$dn;
+            $xf = array(
+                $xidx => $xf,
+                'objectClass' => (array) $this->prop['sub_fields'][$xidx],
+            );
+
+            $this->ldap_add($xdn, $xf);
+        }
 
         $dn = self::dn_encode($dn);
 
@@ -1035,36 +1141,73 @@ class rcube_ldap extends rcube_addressbook
     function update($id, $save_cols)
     {
         $record = $this->get_record($id, true);
-        $result = $this->get_result();
-        $record = $result->first();
 
-        $newdata = array();
+        $newdata     = array();
         $replacedata = array();
-        $deletedata = array();
+        $deletedata  = array();
+        $subdata     = array();
+        $subdeldata  = array();
+        $subnewdata  = array();
 
         $ldap_data = $this->_map_data($save_cols);
-        $old_data = $record['_raw_attrib'];
+        $old_data  = $record['_raw_attrib'];
+
+        // special handling of photo col
+        if ($photo_fld = $this->fieldmap['photo']) {
+            // undefined means keep old photo
+            if (!array_key_exists('photo', $save_cols)) {
+                $ldap_data[$photo_fld] = $record['photo'];
+            }
+        }
 
         foreach ($this->fieldmap as $col => $fld) {
-            $val = $ldap_data[$fld];
             if ($fld) {
+                $val = $ldap_data[$fld];
+                $old = $old_data[$fld];
                 // remove empty array values
                 if (is_array($val))
                     $val = array_filter($val);
+                // $this->_map_data() result and _raw_attrib use different format
+                // make sure comparing array with one element with a string works as expected
+                if (is_array($old) && count($old) == 1 && !is_array($val)) {
+                    $old = array_pop($old);
+                }
+                if (is_array($val) && count($val) == 1 && !is_array($old)) {
+                    $val = array_pop($val);
+                }
+                // Subentries must be handled separately
+                if (!empty($this->prop['sub_fields']) && isset($this->prop['sub_fields'][$fld])) {
+                    if ($old != $val) {
+                        if ($old !== null) {
+                            $subdeldata[$fld] = $old;
+                        }
+                        if ($val) {
+                            $subnewdata[$fld] = $val;
+                        }
+                    }
+                    else if ($old !== null) {
+                        $subdata[$fld] = $old;
+                    }
+                    continue;
+                }
+
                 // The field does exist compare it to the ldap record.
-                if ($old_data[$fld] != $val) {
+                if ($old != $val) {
                     // Changed, but find out how.
-                    if (!isset($old_data[$fld])) {
+                    if ($old === null) {
                         // Field was not set prior, need to add it.
                         $newdata[$fld] = $val;
                     }
                     else if ($val == '') {
                         // Field supplied is empty, verify that it is not required.
                         if (!in_array($fld, $this->prop['required_fields'])) {
-                            // It is not, safe to clear.
-                            $deletedata[$fld] = $old_data[$fld];
+                            // ...It is not, safe to clear.
+                            // #1488420: Workaround "ldap_mod_del(): Modify: Inappropriate matching in..."
+                            // jpegPhoto attribute require an array() here. It looks to me that it works for other attribs too
+                            $deletedata[$fld] = array();
+                            //$deletedata[$fld] = $old_data[$fld];
                         }
-                    } // end elseif
+                    }
                     else {
                         // The data was modified, save it out.
                         $replacedata[$fld] = $val;
@@ -1073,18 +1216,17 @@ class rcube_ldap extends rcube_addressbook
             } // end if
         } // end foreach
 
+        // console($old_data, $ldap_data, '----', $newdata, $replacedata, $deletedata, '----', $subdata, $subnewdata, $subdeldata);
+
         $dn = self::dn_decode($id);
 
         // Update the entry as required.
         if (!empty($deletedata)) {
             // Delete the fields.
-            $this->_debug("C: Delete [dn: $dn]: ".print_r($deletedata, true));
-            if (!ldap_mod_del($this->conn, $dn, $deletedata)) {
-                $this->_debug("S: ".ldap_error($this->conn));
+            if (!$this->ldap_mod_del($dn, $deletedata)) {
                 $this->set_error(self::ERROR_SAVING, 'errorsaving');
                 return false;
             }
-            $this->_debug("S: OK");
         } // end if
 
         if (!empty($replacedata)) {
@@ -1101,41 +1243,49 @@ class rcube_ldap extends rcube_addressbook
             }
             // Replace the fields.
             if (!empty($replacedata)) {
-                $this->_debug("C: Replace [dn: $dn]: ".print_r($replacedata, true));
-                if (!ldap_mod_replace($this->conn, $dn, $replacedata)) {
-                    $this->_debug("S: ".ldap_error($this->conn));
+                if (!$this->ldap_mod_replace($dn, $replacedata)) {
+                    $this->set_error(self::ERROR_SAVING, 'errorsaving');
                     return false;
                 }
-                $this->_debug("S: OK");
-            } // end if
+            }
         } // end if
 
+        // RDN change, we need to remove all sub-entries
+        if (!empty($newrdn)) {
+            $subdeldata = array_merge($subdeldata, $subdata);
+            $subnewdata = array_merge($subnewdata, $subdata);
+        }
+
+        // remove sub-entries
+        if (!empty($subdeldata)) {
+            foreach ($subdeldata as $fld => $val) {
+                $subdn = $fld.'='.$this->_quote_string($val).','.$dn;
+                if (!$this->ldap_delete($subdn)) {
+                    return false;
+                }
+            }
+        }
+
         if (!empty($newdata)) {
             // Add the fields.
-            $this->_debug("C: Add [dn: $dn]: ".print_r($newdata, true));
-            if (!ldap_mod_add($this->conn, $dn, $newdata)) {
-                $this->_debug("S: ".ldap_error($this->conn));
+            if (!$this->ldap_mod_add($dn, $newdata)) {
                 $this->set_error(self::ERROR_SAVING, 'errorsaving');
                 return false;
             }
-            $this->_debug("S: OK");
         } // end if
 
         // Handle RDN change
         if (!empty($newrdn)) {
-            $this->_debug("C: Rename [dn: $dn] [dn: $newrdn]");
-            if (!ldap_rename($this->conn, $dn, $newrdn, NULL, TRUE)) {
-                $this->_debug("S: ".ldap_error($this->conn));
+            if (!$this->ldap_rename($dn, $newrdn, null, true)) {
+                $this->set_error(self::ERROR_SAVING, 'errorsaving');
                 return false;
             }
-            $this->_debug("S: OK");
 
             $dn    = self::dn_encode($dn);
             $newdn = self::dn_encode($newdn);
 
             // change the group membership of the contact
-            if ($this->groups)
-            {
+            if ($this->groups) {
                 $group_ids = $this->get_record_groups($dn);
                 foreach ($group_ids as $group_id)
                 {
@@ -1144,10 +1294,22 @@ class rcube_ldap extends rcube_addressbook
                 }
             }
 
-            return $newdn;
+            $dn = self::dn_decode($newdn);
         }
 
-        return true;
+        // add sub-entries
+        if (!empty($subnewdata)) {
+            foreach ($subnewdata as $fld => $val) {
+                $subdn = $fld.'='.$this->_quote_string($val).','.$dn;
+                $xf = array(
+                    $fld => $val,
+                    'objectClass' => (array) $this->prop['sub_fields'][$fld],
+                );
+                $this->ldap_add($subdn, $xf);
+            }
+        }
+
+        return $newdn ? $newdn : true;
     }
 
 
@@ -1168,15 +1330,24 @@ class rcube_ldap extends rcube_addressbook
 
         foreach ($ids as $id) {
             $dn = self::dn_decode($id);
-            $this->_debug("C: Delete [dn: $dn]");
+
+            // Need to delete all sub-entries first
+            if ($this->sub_filter) {
+                if ($entries = $this->ldap_list($dn, $this->sub_filter)) {
+                    foreach ($entries as $entry) {
+                        if (!$this->ldap_delete($entry['dn'])) {
+                            $this->set_error(self::ERROR_SAVING, 'errorsaving');
+                            return false;
+                        }
+                    }
+                }
+            }
+
             // Delete the record.
-            $res = ldap_delete($this->conn, $dn);
-            if ($res === FALSE) {
-                $this->_debug("S: ".ldap_error($this->conn));
+            if (!$this->ldap_delete($dn)) {
                 $this->set_error(self::ERROR_SAVING, 'errorsaving');
                 return false;
-            } // end if
-            $this->_debug("S: OK");
+            }
 
             // remove contact from all groups where he was member
             if ($this->groups) {
@@ -1192,6 +1363,23 @@ class rcube_ldap extends rcube_addressbook
     }
 
 
+    /**
+     * Remove all contact records
+     */
+    function delete_all()
+    {
+        //searching for contact entries
+        $dn_list = $this->ldap_list($this->base_dn, $this->prop['filter'] ? $this->prop['filter'] : '(objectclass=*)');
+
+        if (!empty($dn_list)) {
+            foreach ($dn_list as $idx => $entry) {
+                $dn_list[$idx] = self::dn_encode($entry['dn']);
+            }
+            $this->delete($dn_list);
+        }
+    }
+
+
     /**
      * Execute the LDAP search based on the stored credentials
      */
@@ -1213,7 +1401,7 @@ class rcube_ldap extends rcube_addressbook
                         $this->vlv_count += $counts[$j]['numsubordinates'][0];
                     $this->_debug("D: total numsubordinates = " . $this->vlv_count);
                 }
-                else  // ...or by fetching all records dn and count them
+                else if (!function_exists('ldap_parse_virtuallist_control'))  // ...or by fetching all records dn and count them
                     $this->vlv_count = $this->_exec_search(true);
 
                 $this->vlv_active = $this->_vlv_set_controls($this->prop, $this->list_page, $this->page_size);
@@ -1224,6 +1412,20 @@ class rcube_ldap extends rcube_addressbook
             if ($this->ldap_result = @$function($this->conn, $this->base_dn, $filter,
                 $attrs, 0, (int)$this->prop['sizelimit'], (int)$this->prop['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, $this->ldap_result,
+                        $errcode, $matcheddn, $errmsg, $referrals, $serverctrls)
+                    ) {
+                        ldap_parse_virtuallist_control($this->conn, $serverctrls,
+                            $last_offset, $this->vlv_count, $vresult);
+                        $this->_debug("S: VLV result: last_offset=$last_offset; content_count=$this->vlv_count");
+                    }
+                    else {
+                        $this->_debug("S: ".($errmsg ? $errmsg : ldap_error($this->conn)));
+                    }
+                }
+
                 $entries_count = ldap_count_entries($this->conn, $this->ldap_result);
                 $this->_debug("S: $entries_count record(s)");
 
@@ -1254,7 +1456,7 @@ class rcube_ldap extends rcube_addressbook
             $ns_function = 'ldap_read';
             break;
         }
-        
+
         return $function;
     }
 
@@ -1303,6 +1505,8 @@ class rcube_ldap extends rcube_addressbook
                     $out[$rf][] = sprintf('%s@%s', $value, $this->mail_domain);
                 else if (in_array($col, array('street','zipcode','locality','country','region')))
                     $out['address'.($subtype?':':'').$subtype][$i][$col] = $value;
+                else if ($col == 'address' && strpos($value, '$') !== false)  // address data is represented as string separated with $
+                    list($out[$rf][$i]['street'], $out[$rf][$i]['locality'], $out[$rf][$i]['zipcode'], $out[$rf][$i]['country']) = explode('$', $value);
                 else if ($rec[$lf]['count'] > 1)
                     $out[$rf][] = $value;
                 else
@@ -1345,6 +1549,15 @@ class rcube_ldap extends rcube_addressbook
                     }
                 }
             }
+
+            // if addresses are to be saved as serialized string, do so
+            if (is_array($colprop['serialized'])) {
+               foreach ($colprop['serialized'] as $subtype => $delim) {
+                  $key = $col.':'.$subtype;
+                  foreach ((array)$save_cols[$key] as $i => $val)
+                     $save_cols[$key][$i] = join($delim, array($val['street'], $val['locality'], $val['zipcode'], $val['country']));
+               }
+            }
         }
 
         $ldap_data = array();
@@ -1357,7 +1570,7 @@ class rcube_ldap extends rcube_addressbook
                 $ldap_data[$fld] = $val;
             }
         }
-        
+
         return $ldap_data;
     }
 
@@ -1365,17 +1578,21 @@ class rcube_ldap extends rcube_addressbook
     /**
      * Returns unified attribute name (resolving aliases)
      */
-    private static function _attr_name($name)
+    private static function _attr_name($namev)
     {
         // list of known attribute aliases
-        $aliases = array(
+        static $aliases = array(
             'gn' => 'givenname',
             'rfc822mailbox' => 'email',
             'userid' => 'uid',
             'emailaddress' => 'email',
             'pkcs9email' => 'email',
         );
-        return isset($aliases[$name]) ? $aliases[$name] : $name;
+
+        list($name, $limit) = explode(':', $namev, 2);
+        $suffix = $limit ? ':'.$limit : '';
+
+        return (isset($aliases[$name]) ? $aliases[$name] : $name) . $suffix;
     }
 
 
@@ -1520,22 +1737,7 @@ class rcube_ldap extends rcube_addressbook
             $groups[$group_id]['ID'] = $group_id;
             $groups[$group_id]['dn'] = $ldap_data[$i]['dn'];
             $groups[$group_id]['name'] = $group_name;
-            $groups[$group_id]['member_attr'] = $this->prop['member_attr'];
-
-            // check objectClass attributes of group and act accordingly
-            for ($j=0; $j < $ldap_data[$i]['objectclass']['count']; $j++) {
-                switch (strtolower($ldap_data[$i]['objectclass'][$j])) {
-                    case 'groupofnames':
-                    case 'kolabgroupofnames':
-                        $groups[$group_id]['member_attr'] = 'member';
-                        break;
-
-                    case 'groupofuniquenames':
-                    case 'kolabgroupofuniquenames':
-                        $groups[$group_id]['member_attr'] = 'uniqueMember';
-                        break;
-                }
-            }
+            $groups[$group_id]['member_attr'] = $this->get_group_member_attr($ldap_data[$i]['objectclass']);
 
             // list email attributes of a group
             for ($j=0; $ldap_data[$i][$email_attr] && $j < $ldap_data[$i][$email_attr]['count']; $j++) {
@@ -1596,8 +1798,8 @@ class rcube_ldap extends rcube_addressbook
         $base_dn = $this->groups_base_dn;
         $new_dn = "cn=$group_name,$base_dn";
         $new_gid = self::dn_encode($group_name);
-        $member_attr = $this->prop['groups']['member_attr'];
-        $name_attr = $this->prop['groups']['name_attr'];
+        $member_attr = $this->get_group_member_attr();
+        $name_attr = $this->prop['groups']['name_attr'] ? $this->prop['groups']['name_attr'] : 'cn';
 
         $new_entry = array(
             'objectClass' => $this->prop['groups']['object_classes'],
@@ -1605,17 +1807,11 @@ class rcube_ldap extends rcube_addressbook
             $member_attr => '',
         );
 
-        $this->_debug("C: Add [dn: $new_dn]: ".print_r($new_entry, true));
-
-        $res = ldap_add($this->conn, $new_dn, $new_entry);
-        if ($res === false)
-        {
-            $this->_debug("S: ".ldap_error($this->conn));
+        if (!$this->ldap_add($new_dn, $new_entry)) {
             $this->set_error(self::ERROR_SAVING, 'errorsaving');
             return false;
         }
 
-        $this->_debug("S: OK");
         $this->cache->remove('groups');
 
         return array('id' => $new_gid, 'name' => $group_name);
@@ -1636,17 +1832,11 @@ class rcube_ldap extends rcube_addressbook
         $group_name = $group_cache[$group_id]['name'];
         $del_dn = "cn=$group_name,$base_dn";
 
-        $this->_debug("C: Delete [dn: $del_dn]");
-
-        $res = ldap_delete($this->conn, $del_dn);
-        if ($res === false)
-        {
-            $this->_debug("S: ".ldap_error($this->conn));
+        if (!$this->ldap_delete($del_dn)) {
             $this->set_error(self::ERROR_SAVING, 'errorsaving');
             return false;
         }
 
-        $this->_debug("S: OK");
         $this->cache->remove('groups');
 
         return true;
@@ -1671,17 +1861,11 @@ class rcube_ldap extends rcube_addressbook
         $new_rdn = "cn=$new_name";
         $new_gid = self::dn_encode($new_name);
 
-        $this->_debug("C: Rename [dn: $old_dn] [dn: $new_rdn]");
-
-        $res = ldap_rename($this->conn, $old_dn, $new_rdn, NULL, TRUE);
-        if ($res === false)
-        {
-            $this->_debug("S: ".ldap_error($this->conn));
+        if (!$this->ldap_rename($old_dn, $new_rdn, null, true)) {
             $this->set_error(self::ERROR_SAVING, 'errorsaving');
             return false;
         }
 
-        $this->_debug("S: OK");
         $this->cache->remove('groups');
 
         return $new_name;
@@ -1711,17 +1895,11 @@ class rcube_ldap extends rcube_addressbook
         foreach ($contact_ids as $id)
             $new_attrs[$member_attr][] = self::dn_decode($id);
 
-        $this->_debug("C: Add [dn: $group_dn]: ".print_r($new_attrs, true));
-
-        $res = ldap_mod_add($this->conn, $group_dn, $new_attrs);
-        if ($res === false)
-        {
-            $this->_debug("S: ".ldap_error($this->conn));
+        if (!$this->ldap_mod_add($group_dn, $new_attrs)) {
             $this->set_error(self::ERROR_SAVING, 'errorsaving');
             return 0;
         }
 
-        $this->_debug("S: OK");
         $this->cache->remove('groups');
 
         return count($new_attrs['member']);
@@ -1748,17 +1926,11 @@ class rcube_ldap extends rcube_addressbook
         foreach (explode(",", $contact_ids) as $id)
             $del_attrs[$member_attr][] = self::dn_decode($id);
 
-        $this->_debug("C: Delete [dn: $group_dn]: ".print_r($del_attrs, true));
-
-        $res = ldap_mod_del($this->conn, $group_dn, $del_attrs);
-        if ($res === false)
-        {
-            $this->_debug("S: ".ldap_error($this->conn));
+        if (!$this->ldap_mod_del($group_dn, $del_attrs)) {
             $this->set_error(self::ERROR_SAVING, 'errorsaving');
             return 0;
         }
 
-        $this->_debug("S: OK");
         $this->cache->remove('groups');
 
         return count($del_attrs['member']);
@@ -1779,8 +1951,8 @@ class rcube_ldap extends rcube_addressbook
 
         $base_dn     = $this->groups_base_dn;
         $contact_dn  = self::dn_decode($contact_id);
-        $name_attr   = $this->prop['groups']['name_attr'];
-        $member_attr = $this->prop['member_attr'];
+        $name_attr   = $this->prop['groups']['name_attr'] ? $this->prop['groups']['name_attr'] : 'cn';
+        $member_attr = $this->get_group_member_attr();
         $add_filter  = '';
         if ($member_attr != 'member' && $member_attr != 'uniqueMember')
             $add_filter = "($member_attr=$contact_dn)";
@@ -1807,6 +1979,42 @@ class rcube_ldap extends rcube_addressbook
         return $groups;
     }
 
+    /**
+     * Detects group member attribute name
+     */
+    private function get_group_member_attr($object_classes = array())
+    {
+        if (empty($object_classes)) {
+            $object_classes = $this->prop['groups']['object_classes'];
+        }
+        if (!empty($object_classes)) {
+            foreach ((array)$object_classes as $oc) {
+                switch (strtolower($oc)) {
+                    case 'group':
+                    case 'groupofnames':
+                    case 'kolabgroupofnames':
+                        $member_attr = 'member';
+                        break;
+
+                    case 'groupofuniquenames':
+                    case 'kolabgroupofuniquenames':
+                        $member_attr = 'uniqueMember';
+                        break;
+                }
+            }
+        }
+
+        if (!empty($member_attr)) {
+            return $member_attr;
+        }
+
+        if (!empty($this->prop['groups']['member_attr'])) {
+            return $this->prop['groups']['member_attr'];
+        }
+
+        return 'member';
+    }
+
 
     /**
      * Generate BER encoded string for Virtual List View option
@@ -1963,4 +2171,131 @@ class rcube_ldap extends rcube_addressbook
         $str = str_pad(strtr($str, '-_', '+/'), strlen($str) % 4, '=', STR_PAD_RIGHT);
         return base64_decode($str);
     }
+
+    /**
+     * Wrapper for ldap_add()
+     */
+    protected function ldap_add($dn, $entry)
+    {
+        $this->_debug("C: Add [dn: $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;
+    }
+
+    /**
+     * Wrapper for ldap_delete()
+     */
+    protected function ldap_delete($dn)
+    {
+        $this->_debug("C: Delete [dn: $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;
+    }
+
+    /**
+     * Wrapper for ldap_mod_replace()
+     */
+    protected function ldap_mod_replace($dn, $entry)
+    {
+        $this->_debug("C: Replace [dn: $dn]: ".print_r($entry, true));
+
+        if (!ldap_mod_replace($this->conn, $dn, $entry)) {
+            $this->_debug("S: ".ldap_error($this->conn));
+            return false;
+        }
+
+        $this->_debug("S: OK");
+        return true;
+    }
+
+    /**
+     * Wrapper for ldap_mod_add()
+     */
+    protected function ldap_mod_add($dn, $entry)
+    {
+        $this->_debug("C: Add [dn: $dn]: ".print_r($entry, true));
+
+        if (!ldap_mod_add($this->conn, $dn, $entry)) {
+            $this->_debug("S: ".ldap_error($this->conn));
+            return false;
+        }
+
+        $this->_debug("S: OK");
+        return true;
+    }
+
+    /**
+     * Wrapper for ldap_mod_del()
+     */
+    protected function ldap_mod_del($dn, $entry)
+    {
+        $this->_debug("C: Delete [dn: $dn]: ".print_r($entry, true));
+
+        if (!ldap_mod_del($this->conn, $dn, $entry)) {
+            $this->_debug("S: ".ldap_error($this->conn));
+            return false;
+        }
+
+        $this->_debug("S: OK");
+        return true;
+    }
+
+    /**
+     * Wrapper for ldap_rename()
+     */
+    protected function ldap_rename($dn, $newrdn, $newparent = null, $deleteoldrdn = true)
+    {
+        $this->_debug("C: Rename [dn: $dn] [dn: $newrdn]");
+
+        if (!ldap_rename($this->conn, $dn, $newrdn, $newparent, $deleteoldrdn)) {
+            $this->_debug("S: ".ldap_error($this->conn));
+            return false;
+        }
+
+        $this->_debug("S: OK");
+        return true;
+    }
+
+    /**
+     * Wrapper for ldap_list()
+     */
+    protected function ldap_list($dn, $filter, $attrs = array(''))
+    {
+        $list = array();
+        $this->_debug("C: List [dn: $dn] [{$filter}]");
+
+        if ($result = ldap_list($this->conn, $dn, $filter, $attrs)) {
+            $list = ldap_get_entries($this->conn, $result);
+
+            if ($list === false) {
+                $this->_debug("S: ".ldap_error($this->conn));
+                return array();
+            }
+
+            $count = $list['count'];
+            unset($list['count']);
+
+            $this->_debug("S: $count record(s)");
+        }
+        else {
+            $this->_debug("S: ".ldap_error($this->conn));
+        }
+
+        return $list;
+    }
+
 }
index bb22960bc99eb566ae9e2d3c104d4f3ebb82e4f0..876ee028a72a0c99a7fa7d2d6238816597bde4dd 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2009, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   PEAR:DB wrapper class that implements PEAR MDB2 functions           |
@@ -16,7 +19,7 @@
  | Author: Lukas Kahwe Smith <smith@pooteeweet.org>                      |
  +-----------------------------------------------------------------------+
 
- $Id: rcube_mdb2.php 5872 2012-02-11 11:38:46Z thomasb $
+ $Id$
 
 */
 
@@ -285,7 +288,7 @@ class rcube_mdb2
         else {
             $params = (array)$params;
             $q = $this->db_handle->prepare($query, null, $mode=='w' ? MDB2_PREPARE_MANIP : null);
-            if ($this->db_handle->isError($q)) {
+            if (MDB2::isError($q)) {
                 $this->db_error = true;
                 $this->db_error_msg = $q->userinfo;
 
@@ -366,7 +369,7 @@ class rcube_mdb2
 
         $id = $this->db_handle->lastInsertID($table);
 
-        return $this->db_handle->isError($id) ? null : $id;
+        return MDB2::isError($id) ? null : $id;
     }
 
 
@@ -645,6 +648,11 @@ class rcube_mdb2
             case 'mssql':
             case 'sqlsrv':
                 $delim = ' + ';
+                // Modify arguments, because + operator requires them to be of type varchar (#1488505)
+                // with SQL Server 2012 we can use just CONCAT(), but we need to support older versions
+                foreach ($args as $idx => $arg) {
+                    $args[$idx] = "CAST($arg AS varchar)";
+                }
                 break;
             default:
                 $delim = ' || ';
index 05ae2b1396a0cb2d01132a26a2e3309b2e2ea606..683a395d9ae4f5b47172cafa52d80b26437ed218 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2008-2010, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Logical representation of a mail message with all its data          |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: rcube_message.php 5514 2011-11-30 11:35:43Z alec $
+ $Id$
 
 */
 
@@ -37,11 +40,18 @@ class rcube_message
     private $app;
 
     /**
-     * Instance of imap class
+     * Instance of storage class
+     *
+     * @var rcube_storage
+     */
+    private $storage;
+
+    /**
+     * Instance of mime class
      *
-     * @var rcube_imap
+     * @var rcube_mime
      */
-    private $imap;
+    private $mime;
     private $opt = array();
     private $inline_parts = array();
     private $parse_alternative = false;
@@ -63,34 +73,31 @@ class rcube_message
      *
      * @param string $uid The message UID.
      *
-     * @uses rcmail::get_instance()
-     * @uses rcube_imap::decode_mime_string()
-     * @uses self::set_safe()
-     *
-     * @see self::$app, self::$imap, self::$opt, self::$structure
+     * @see self::$app, self::$storage, self::$opt, self::$parts
      */
     function __construct($uid)
     {
-        $this->app = rcmail::get_instance();
-        $this->imap = $this->app->imap;
-        $this->imap->get_all_headers = true;
+        $this->uid  = $uid;
+        $this->app  = rcmail::get_instance();
+        $this->storage = $this->app->get_storage();
+        $this->storage->set_options(array('all_headers' => true));
 
-        $this->uid = $uid;
-        $this->headers = $this->imap->get_message($uid);
+        $this->headers = $this->storage->get_message($uid);
 
         if (!$this->headers)
             return;
 
-        $this->subject = rcube_imap::decode_mime_string(
-            $this->headers->subject, $this->headers->charset);
-        list(, $this->sender) = each($this->imap->decode_address_list($this->headers->from));
+        $this->mime = new rcube_mime($this->headers->charset);
+
+        $this->subject = $this->mime->decode_mime_string($this->headers->subject);
+        list(, $this->sender) = each($this->mime->decode_address_list($this->headers->from, 1));
 
         $this->set_safe((intval($_GET['_safe']) || $_SESSION['safe_messages'][$uid]));
         $this->opt = array(
             'safe' => $this->is_safe,
             'prefer_html' => $this->app->config->get('prefer_html'),
             'get_url' => rcmail_url('get', array(
-                '_mbox' => $this->imap->get_mailbox_name(), '_uid' => $uid))
+                '_mbox' => $this->storage->get_folder(), '_uid' => $uid))
         );
 
         if (!empty($this->headers->structure)) {
@@ -98,7 +105,7 @@ class rcube_message
             $this->parse_structure($this->headers->structure);
         }
         else {
-            $this->body = $this->imap->get_body($uid);
+            $this->body = $this->storage->get_body($uid);
         }
 
         // notify plugins and let them analyze this structured message object
@@ -115,12 +122,15 @@ class rcube_message
      */
     public function get_header($name, $raw = false)
     {
+        if (empty($this->headers))
+            return null;
+
         if ($this->headers->$name)
             $value = $this->headers->$name;
         else if ($this->headers->others[$name])
             $value = $this->headers->others[$name];
 
-        return $raw ? $value : $this->imap->decode_header($value);
+        return $raw ? $value : $this->mime->decode_header($value);
     }
 
 
@@ -154,22 +164,24 @@ class rcube_message
     /**
      * Get content of a specific part of this message
      *
-     * @param string $mime_id Part MIME-ID
-     * @param resource $fp File pointer to save the message part
+     * @param string   $mime_id           Part MIME-ID
+     * @param resource $fp File           pointer to save the message part
+     * @param boolean  $skip_charset_conv Disables charset conversion
+     *
      * @return string Part content
      */
-    public function get_part_content($mime_id, $fp=NULL)
+    public function get_part_content($mime_id, $fp = null, $skip_charset_conv = false)
     {
         if ($part = $this->mime_parts[$mime_id]) {
             // stored in message structure (winmail/inline-uuencode)
-            if ($part->encoding == 'stream') {
+            if (!empty($part->body) || $part->encoding == 'stream') {
                 if ($fp) {
                     fwrite($fp, $part->body);
                 }
                 return $fp ? true : $part->body;
             }
             // get from IMAP
-            return $this->imap->get_message_part($this->uid, $mime_id, $part, NULL, $fp);
+            return $this->storage->get_message_part($this->uid, $mime_id, $part, NULL, $fp, $skip_charset_conv);
         } else
             return null;
     }
@@ -178,15 +190,47 @@ class rcube_message
     /**
      * Determine if the message contains a HTML part
      *
+     * @param bool $recursive Enables checking in all levels of the structure
+     *
      * @return bool True if a HTML is available, False if not
      */
-    function has_html_part()
+    function has_html_part($recursive = true)
     {
         // check all message parts
-        foreach ($this->parts as $pid => $part) {
-            $mimetype = strtolower($part->ctype_primary . '/' . $part->ctype_secondary);
-            if ($mimetype == 'text/html')
+        foreach ($this->parts as $part) {
+            if ($part->mimetype == 'text/html') {
+                // Level check, we'll skip e.g. HTML attachments
+                if (!$recursive) {
+                    $level = explode('.', $part->mime_id);
+
+                    // Level too high
+                    if (count($level) > 2) {
+                        continue;
+                    }
+
+                    // HTML part can be on the lower level, if not...
+                    if (count($level) > 1) {
+                        // It can be an alternative or related message part
+                        // find parent part
+                        $parent = null;
+                        foreach ($this->mime_parts as $part) {
+                            if ($part->mime_id == $level[0]) {
+                                $parent = $part;
+                            }
+                        }
+
+                        if (!$parent) {
+                            continue;
+                        }
+
+                        if ($parent->mimetype != 'multipart/alternative' && $parent->mimetype != 'multipart/related') {
+                            continue;
+                        }
+                    }
+                }
+
                 return true;
+            }
         }
 
         return false;
@@ -201,10 +245,9 @@ class rcube_message
     function first_html_part()
     {
         // check all message parts
-        foreach ($this->mime_parts as $mime_id => $part) {
-            $mimetype = strtolower($part->ctype_primary . '/' . $part->ctype_secondary);
-            if ($mimetype == 'text/html') {
-                return $this->imap->get_message_part($this->uid, $mime_id, $part);
+        foreach ($this->mime_parts as $pid => $part) {
+            if ($part->mimetype == 'text/html') {
+                return $this->get_part_content($pid);
             }
         }
     }
@@ -224,13 +267,11 @@ class rcube_message
 
         // check all message parts
         foreach ($this->mime_parts as $mime_id => $part) {
-            $mimetype = $part->ctype_primary . '/' . $part->ctype_secondary;
-
-            if ($mimetype == 'text/plain') {
-                return $this->imap->get_message_part($this->uid, $mime_id, $part);
+            if ($part->mimetype == 'text/plain') {
+                return $this->get_part_content($mime_id);
             }
-            else if ($mimetype == 'text/html') {
-                $out = $this->imap->get_message_part($this->uid, $mime_id, $part);
+            else if ($part->mimetype == 'text/html') {
+                $out = $this->get_part_content($mime_id);
 
                 // remove special chars encoding
                 $trans = array_flip(get_html_translation_table(HTML_ENTITIES));
@@ -248,7 +289,33 @@ class rcube_message
 
 
     /**
-     * Raad the message structure returend by the IMAP server
+     * Checks if part of the message is an attachment (or part of it)
+     *
+     * @param rcube_message_part $part Message part
+     *
+     * @return bool True if the part is an attachment part
+     */
+    public function is_attachment($part)
+    {
+        foreach ($this->attachments as $att_part) {
+            if ($att_part->mime_id == $part->mime_id) {
+                return true;
+            }
+
+            // check if the part is a subpart of another attachment part (message/rfc822)
+            if ($att_part->mimetype == 'message/rfc822') {
+                if (in_array($part, (array)$att_part->parts)) {
+                    return true;
+                }
+            }
+        }
+
+        return false;
+    }
+
+
+    /**
+     * Read the message structure returend by the IMAP server
      * and build flat lists of content parts and attachments
      *
      * @param rcube_message_part $structure Message structure node
@@ -308,6 +375,11 @@ class rcube_message
             foreach ($structure->parts as $p => $sub_part) {
                 $sub_mimetype = $sub_part->mimetype;
 
+                // skip empty text parts
+                if (!$sub_part->size && preg_match('#^text/(plain|html|enriched)$#', $sub_mimetype)) {
+                    continue;
+                }
+
                 // check if sub part is
                 if ($sub_mimetype == 'text/plain')
                     $plain_part = $p;
@@ -583,7 +655,7 @@ class rcube_message
     {
         // @TODO: attachment may be huge, hadle it via file
         if (!isset($part->body))
-            $part->body = $this->imap->get_message_part($this->uid, $part->mime_id, $part);
+            $part->body = $this->storage->get_message_part($this->uid, $part->mime_id, $part);
 
         $parts = array();
         $tnef = new tnef_decoder;
@@ -619,27 +691,33 @@ class rcube_message
     {
         // @TODO: messages may be huge, hadle body via file
         if (!isset($part->body))
-            $part->body = $this->imap->get_message_part($this->uid, $part->mime_id, $part);
+            $part->body = $this->storage->get_message_part($this->uid, $part->mime_id, $part);
 
         $parts = array();
         // FIXME: line length is max.65?
-        $uu_regexp = '/begin [0-7]{3,4} ([^\n]+)\n(([\x21-\x7E]{0,65}\n)+)`\nend/s';
+        $uu_regexp = '/begin [0-7]{3,4} ([^\n]+)\n/s';
 
         if (preg_match_all($uu_regexp, $part->body, $matches, PREG_SET_ORDER)) {
-            // remove attachments bodies from the message body
-            $part->body = preg_replace($uu_regexp, '', $part->body);
             // update message content-type
             $part->ctype_primary   = 'multipart';
             $part->ctype_secondary = 'mixed';
             $part->mimetype        = $part->ctype_primary . '/' . $part->ctype_secondary;
+            $uu_endstring = "`\nend\n";
 
             // add attachments to the structure
             foreach ($matches as $pid => $att) {
+                $startpos = strpos($part->body, $att[1]) + strlen($att[1]) + 1; // "\n"
+                $endpos = strpos($part->body, $uu_endstring);
+                $filebody = substr($part->body, $startpos, $endpos-$startpos);
+
+                // remove attachments bodies from the message body
+                $part->body = substr_replace($part->body, "", $startpos, $endpos+strlen($uu_endstring)-$startpos);
+
                 $uupart = new rcube_message_part;
 
                 $uupart->filename = trim($att[1]);
                 $uupart->encoding = 'stream';
-                $uupart->body     = convert_uudecode($att[2]);
+                $uupart->body     = convert_uudecode($filebody);
                 $uupart->size     = strlen($uupart->body);
                 $uupart->mime_id  = 'uu.' . $part->mime_id . '.' . $pid;
 
@@ -650,6 +728,9 @@ class rcube_message
                 $parts[] = $uupart;
                 unset($matches[$pid]);
             }
+
+            // remove attachments bodies from the message body
+            $part->body = preg_replace($uu_regexp, '', $part->body);
         }
 
         return $parts;
@@ -657,92 +738,17 @@ class rcube_message
 
 
     /**
-     * Interpret a format=flowed message body according to RFC 2646
-     *
-     * @param string  $text Raw body formatted as flowed text
-     * @return string Interpreted text with unwrapped lines and stuffed space removed
+     * Deprecated methods (to be removed)
      */
+
     public static function unfold_flowed($text)
     {
-        $text = preg_split('/\r?\n/', $text);
-        $last = -1;
-        $q_level = 0;
-
-        foreach ($text as $idx => $line) {
-            if ($line[0] == '>' && preg_match('/^(>+\s*)/', $line, $regs)) {
-                $q = strlen(str_replace(' ', '', $regs[0]));
-                $line = substr($line, strlen($regs[0]));
-
-                if ($q == $q_level && $line
-                    && isset($text[$last])
-                    && $text[$last][strlen($text[$last])-1] == ' '
-                ) {
-                    $text[$last] .= $line;
-                    unset($text[$idx]);
-                }
-                else {
-                    $last = $idx;
-                }
-            }
-            else {
-                $q = 0;
-                if ($line == '-- ') {
-                    $last = $idx;
-                }
-                else {
-                    // remove space-stuffing
-                    $line = preg_replace('/^\s/', '', $line);
-
-                    if (isset($text[$last]) && $line
-                        && $text[$last] != '-- '
-                        && $text[$last][strlen($text[$last])-1] == ' '
-                    ) {
-                        $text[$last] .= $line;
-                        unset($text[$idx]);
-                    }
-                    else {
-                        $text[$idx] = $line;
-                        $last = $idx;
-                    }
-                }
-            }
-            $q_level = $q;
-        }
-
-        return implode("\r\n", $text);
+        return rcube_mime::unfold_flowed($text);
     }
 
-
-    /**
-     * Wrap the given text to comply with RFC 2646
-     *
-     * @param string $text Text to wrap
-     * @param int $length Length
-     * @return string Wrapped text
-     */
     public static function format_flowed($text, $length = 72)
     {
-        $text = preg_split('/\r?\n/', $text);
-
-        foreach ($text as $idx => $line) {
-            if ($line != '-- ') {
-                if ($line[0] == '>' && preg_match('/^(>+)/', $line, $regs)) {
-                    $prefix = $regs[0];
-                    $level = strlen($prefix);
-                    $line  = rtrim(substr($line, $level));
-                    $line  = $prefix . rc_wordwrap($line, $length - $level - 2, " \r\n$prefix ");
-                }
-                else if ($line) {
-                    $line = rc_wordwrap(rtrim($line), $length - 2, " \r\n");
-                    // space-stuffing
-                    $line = preg_replace('/(^|\r\n)(From| |>)/', '\\1 \\2', $line);
-                }
-
-                $text[$idx] = $line;
-            }
-        }
-
-        return implode("\r\n", $text);
+        return rcube_mime::format_flowed($text, $length);
     }
 
 }
diff --git a/program/include/rcube_mime.php b/program/include/rcube_mime.php
new file mode 100644 (file)
index 0000000..287bde8
--- /dev/null
@@ -0,0 +1,562 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | program/include/rcube_mime.php                                        |
+ |                                                                       |
+ | This file is part of the Roundcube Webmail client                     |
+ | Copyright (C) 2005-2012, The Roundcube Dev Team                       |
+ | Copyright (C) 2011-2012, 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:                                                              |
+ |   MIME message parsing utilities                                      |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas Bruederli <roundcube@gmail.com>                        |
+ | Author: Aleksander Machniak <alec@alec.pl>                            |
+ +-----------------------------------------------------------------------+
+
+ $Id$
+
+*/
+
+
+/**
+ * Class for parsing MIME messages
+ *
+ * @package Mail
+ * @author  Thomas Bruederli <roundcube@gmail.com>
+ * @author  Aleksander Machniak <alec@alec.pl>
+ */
+class rcube_mime
+{
+    private static $default_charset;
+
+
+    /**
+     * Object constructor.
+     */
+    function __construct($default_charset = null)
+    {
+        self::$default_charset = $default_charset;
+    }
+
+
+    /**
+     * Returns message/object character set name
+     *
+     * @return string Characted set name
+     */
+    public static function get_charset()
+    {
+        if (self::$default_charset) {
+            return self::$default_charset;
+        }
+
+        if ($charset = rcmail::get_instance()->config->get('default_charset')) {
+            return $charset;
+        }
+
+        return RCMAIL_CHARSET;
+    }
+
+
+    /**
+     * Parse the given raw message source and return a structure
+     * of rcube_message_part objects.
+     *
+     * It makes use of the PEAR:Mail_mimeDecode library
+     *
+     * @param string  The message source
+     * @return object rcube_message_part The message structure
+     */
+    public static function parse_message($raw_body)
+    {
+        $mime = new Mail_mimeDecode($raw_body);
+        $struct = $mime->decode(array('include_bodies' => true, 'decode_bodies' => true));
+        return self::structure_part($struct);
+    }
+
+
+    /**
+     * Recursive method to convert a Mail_mimeDecode part into a rcube_message_part object
+     *
+     * @param object  A message part struct
+     * @param int     Part count
+     * @param string  Parent MIME ID
+     *
+     * @return object rcube_message_part
+     */
+    private static function structure_part($part, $count=0, $parent='')
+    {
+        $struct = new rcube_message_part;
+        $struct->mime_id = $part->mime_id ? $part->mime_id : (empty($parent) ? (string)$count : "$parent.$count");
+        $struct->headers = $part->headers;
+        $struct->ctype_primary = $part->ctype_primary;
+        $struct->ctype_secondary = $part->ctype_secondary;
+        $struct->mimetype = $part->ctype_primary . '/' . $part->ctype_secondary;
+        $struct->ctype_parameters = $part->ctype_parameters;
+
+        if ($part->headers['content-transfer-encoding'])
+            $struct->encoding = $part->headers['content-transfer-encoding'];
+        if ($part->ctype_parameters['charset'])
+            $struct->charset = $part->ctype_parameters['charset'];
+
+        $part_charset = $struct->charset ? $struct->charset : self::get_charset();
+
+        // determine filename
+        if (($filename = $part->d_parameters['filename']) || ($filename = $part->ctype_parameters['name'])) {
+            $struct->filename = rcube_mime::decode_mime_string($filename, $part_charset);
+        }
+
+        // copy part body and convert it to UTF-8 if necessary
+        $struct->body = $part->ctype_primary == 'text' || !$part->ctype_parameters['charset'] ? rcube_charset::convert($part->body, $part_charset) : $part->body;
+        $struct->size = strlen($part->body);
+        $struct->disposition = $part->disposition;
+
+        foreach ((array)$part->parts as $child_part) {
+            $struct->parts[] = self::structure_part($child_part, ++$count, $struct->mime_id);
+        }
+
+        return $struct;
+    }
+
+
+    /**
+     * Split an address list into a structured array list
+     *
+     * @param string  $input    Input string
+     * @param int     $max      List only this number of addresses
+     * @param boolean $decode   Decode address strings
+     * @param string  $fallback Fallback charset if none specified
+     *
+     * @return array  Indexed list of addresses
+     */
+    static function decode_address_list($input, $max = null, $decode = true, $fallback = null)
+    {
+        $a   = self::parse_address_list($input, $decode, $fallback);
+        $out = array();
+        $j   = 0;
+
+        // Special chars as defined by RFC 822 need to in quoted string (or escaped).
+        $special_chars = '[\(\)\<\>\\\.\[\]@,;:"]';
+
+        if (!is_array($a))
+            return $out;
+
+        foreach ($a as $val) {
+            $j++;
+            $address = trim($val['address']);
+            $name    = trim($val['name']);
+
+            if ($name && $address && $name != $address)
+                $string = sprintf('%s <%s>', preg_match("/$special_chars/", $name) ? '"'.addcslashes($name, '"').'"' : $name, $address);
+            else if ($address)
+                $string = $address;
+            else if ($name)
+                $string = $name;
+
+            $out[$j] = array(
+                'name'   => $name,
+                'mailto' => $address,
+                'string' => $string
+            );
+
+            if ($max && $j==$max)
+                break;
+        }
+
+        return $out;
+    }
+
+
+    /**
+     * Decode a message header value
+     *
+     * @param string  $input         Header value
+     * @param string  $fallback      Fallback charset if none specified
+     *
+     * @return string Decoded string
+     */
+    public static function decode_header($input, $fallback = null)
+    {
+        $str = self::decode_mime_string((string)$input, $fallback);
+
+        return $str;
+    }
+
+
+    /**
+     * Decode a mime-encoded string to internal charset
+     *
+     * @param string $input    Header value
+     * @param string $fallback Fallback charset if none specified
+     *
+     * @return string Decoded string
+     */
+    public static function decode_mime_string($input, $fallback = null)
+    {
+        $default_charset = !empty($fallback) ? $fallback : self::get_charset();
+
+        // rfc: all line breaks or other characters not found
+        // in the Base64 Alphabet must be ignored by decoding software
+        // delete all blanks between MIME-lines, differently we can
+        // receive unnecessary blanks and broken utf-8 symbols
+        $input = preg_replace("/\?=\s+=\?/", '?==?', $input);
+
+        // encoded-word regexp
+        $re = '/=\?([^?]+)\?([BbQq])\?([^\n]*?)\?=/';
+
+        // Find all RFC2047's encoded words
+        if (preg_match_all($re, $input, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {
+            // Initialize variables
+            $tmp   = array();
+            $out   = '';
+            $start = 0;
+
+            foreach ($matches as $idx => $m) {
+                $pos      = $m[0][1];
+                $charset  = $m[1][0];
+                $encoding = $m[2][0];
+                $text     = $m[3][0];
+                $length   = strlen($m[0][0]);
+
+                // Append everything that is before the text to be decoded
+                if ($start != $pos) {
+                    $substr = substr($input, $start, $pos-$start);
+                    $out   .= rcube_charset_convert($substr, $default_charset);
+                    $start  = $pos;
+                }
+                $start += $length;
+
+                // Per RFC2047, each string part "MUST represent an integral number
+                // of characters . A multi-octet character may not be split across
+                // adjacent encoded-words." However, some mailers break this, so we
+                // try to handle characters spanned across parts anyway by iterating
+                // through and aggregating sequential encoded parts with the same
+                // character set and encoding, then perform the decoding on the
+                // aggregation as a whole.
+
+                $tmp[] = $text;
+                if ($next_match = $matches[$idx+1]) {
+                    if ($next_match[0][1] == $start
+                        && $next_match[1][0] == $charset
+                        && $next_match[2][0] == $encoding
+                    ) {
+                        continue;
+                    }
+                }
+
+                $count = count($tmp);
+                $text  = '';
+
+                // Decode and join encoded-word's chunks
+                if ($encoding == 'B' || $encoding == 'b') {
+                    // base64 must be decoded a segment at a time
+                    for ($i=0; $i<$count; $i++)
+                        $text .= base64_decode($tmp[$i]);
+                }
+                else { //if ($encoding == 'Q' || $encoding == 'q') {
+                    // quoted printable can be combined and processed at once
+                    for ($i=0; $i<$count; $i++)
+                        $text .= $tmp[$i];
+
+                    $text = str_replace('_', ' ', $text);
+                    $text = quoted_printable_decode($text);
+                }
+
+                $out .= rcube_charset_convert($text, $charset);
+                $tmp = array();
+            }
+
+            // add the last part of the input string
+            if ($start != strlen($input)) {
+                $out .= rcube_charset_convert(substr($input, $start), $default_charset);
+            }
+
+            // return the results
+            return $out;
+        }
+
+        // no encoding information, use fallback
+        return rcube_charset_convert($input, $default_charset);
+    }
+
+
+    /**
+     * Decode a mime part
+     *
+     * @param string $input    Input string
+     * @param string $encoding Part encoding
+     * @return string Decoded string
+     */
+    public static function decode($input, $encoding = '7bit')
+    {
+        switch (strtolower($encoding)) {
+        case 'quoted-printable':
+            return quoted_printable_decode($input);
+        case 'base64':
+            return base64_decode($input);
+        case 'x-uuencode':
+        case 'x-uue':
+        case 'uue':
+        case 'uuencode':
+            return convert_uudecode($input);
+        case '7bit':
+        default:
+            return $input;
+        }
+    }
+
+
+    /**
+     * Split RFC822 header string into an associative array
+     * @access private
+     */
+    public static function parse_headers($headers)
+    {
+        $a_headers = array();
+        $headers = preg_replace('/\r?\n(\t| )+/', ' ', $headers);
+        $lines = explode("\n", $headers);
+        $c = count($lines);
+
+        for ($i=0; $i<$c; $i++) {
+            if ($p = strpos($lines[$i], ': ')) {
+                $field = strtolower(substr($lines[$i], 0, $p));
+                $value = trim(substr($lines[$i], $p+1));
+                if (!empty($value))
+                    $a_headers[$field] = $value;
+            }
+        }
+
+        return $a_headers;
+    }
+
+
+    /**
+     * @access private
+     */
+    private static function parse_address_list($str, $decode = true, $fallback = null)
+    {
+        // remove any newlines and carriage returns before
+        $str = preg_replace('/\r?\n(\s|\t)?/', ' ', $str);
+
+        // extract list items, remove comments
+        $str = self::explode_header_string(',;', $str, true);
+        $result = array();
+
+        // simplified regexp, supporting quoted local part
+        $email_rx = '(\S+|("\s*(?:[^"\f\n\r\t\v\b\s]+\s*)+"))@\S+';
+
+        foreach ($str as $key => $val) {
+            $name    = '';
+            $address = '';
+            $val     = trim($val);
+
+            if (preg_match('/(.*)<('.$email_rx.')>$/', $val, $m)) {
+                $address = $m[2];
+                $name    = trim($m[1]);
+            }
+            else if (preg_match('/^('.$email_rx.')$/', $val, $m)) {
+                $address = $m[1];
+                $name    = '';
+            }
+            else {
+                $name = $val;
+            }
+
+            // dequote and/or decode name
+            if ($name) {
+                if ($name[0] == '"' && $name[strlen($name)-1] == '"') {
+                    $name = substr($name, 1, -1);
+                    $name = stripslashes($name);
+                }
+                if ($decode) {
+                    $name = self::decode_header($name, $fallback);
+                }
+            }
+
+            if (!$address && $name) {
+                $address = $name;
+            }
+
+            if ($address) {
+                $result[$key] = array('name' => $name, 'address' => $address);
+            }
+        }
+
+        return $result;
+    }
+
+
+    /**
+     * Explodes header (e.g. address-list) string into array of strings
+     * using specified separator characters with proper handling
+     * of quoted-strings and comments (RFC2822)
+     *
+     * @param string $separator       String containing separator characters
+     * @param string $str             Header string
+     * @param bool   $remove_comments Enable to remove comments
+     *
+     * @return array Header items
+     */
+    public static function explode_header_string($separator, $str, $remove_comments = false)
+    {
+        $length  = strlen($str);
+        $result  = array();
+        $quoted  = false;
+        $comment = 0;
+        $out     = '';
+
+        for ($i=0; $i<$length; $i++) {
+            // we're inside a quoted string
+            if ($quoted) {
+                if ($str[$i] == '"') {
+                    $quoted = false;
+                }
+                else if ($str[$i] == "\\") {
+                    if ($comment <= 0) {
+                        $out .= "\\";
+                    }
+                    $i++;
+                }
+            }
+            // we are inside a comment string
+            else if ($comment > 0) {
+                if ($str[$i] == ')') {
+                    $comment--;
+                }
+                else if ($str[$i] == '(') {
+                    $comment++;
+                }
+                else if ($str[$i] == "\\") {
+                    $i++;
+                }
+                continue;
+            }
+            // separator, add to result array
+            else if (strpos($separator, $str[$i]) !== false) {
+                if ($out) {
+                    $result[] = $out;
+                }
+                $out = '';
+                continue;
+            }
+            // start of quoted string
+            else if ($str[$i] == '"') {
+                $quoted = true;
+            }
+            // start of comment
+            else if ($remove_comments && $str[$i] == '(') {
+                $comment++;
+            }
+
+            if ($comment <= 0) {
+                $out .= $str[$i];
+            }
+        }
+
+        if ($out && $comment <= 0) {
+            $result[] = $out;
+        }
+
+        return $result;
+    }
+
+
+    /**
+     * Interpret a format=flowed message body according to RFC 2646
+     *
+     * @param string  $text Raw body formatted as flowed text
+     *
+     * @return string Interpreted text with unwrapped lines and stuffed space removed
+     */
+    public static function unfold_flowed($text)
+    {
+        $text = preg_split('/\r?\n/', $text);
+        $last = -1;
+        $q_level = 0;
+
+        foreach ($text as $idx => $line) {
+            if ($line[0] == '>' && preg_match('/^(>+\s*)/', $line, $regs)) {
+                $q = strlen(str_replace(' ', '', $regs[0]));
+                $line = substr($line, strlen($regs[0]));
+
+                if ($q == $q_level && $line
+                    && isset($text[$last])
+                    && $text[$last][strlen($text[$last])-1] == ' '
+                ) {
+                    $text[$last] .= $line;
+                    unset($text[$idx]);
+                }
+                else {
+                    $last = $idx;
+                }
+            }
+            else {
+                $q = 0;
+                if ($line == '-- ') {
+                    $last = $idx;
+                }
+                else {
+                    // remove space-stuffing
+                    $line = preg_replace('/^\s/', '', $line);
+
+                    if (isset($text[$last]) && $line
+                        && $text[$last] != '-- '
+                        && $text[$last][strlen($text[$last])-1] == ' '
+                    ) {
+                        $text[$last] .= $line;
+                        unset($text[$idx]);
+                    }
+                    else {
+                        $text[$idx] = $line;
+                        $last = $idx;
+                    }
+                }
+            }
+            $q_level = $q;
+        }
+
+        return implode("\r\n", $text);
+    }
+
+
+    /**
+     * Wrap the given text to comply with RFC 2646
+     *
+     * @param string $text Text to wrap
+     * @param int $length Length
+     *
+     * @return string Wrapped text
+     */
+    public static function format_flowed($text, $length = 72)
+    {
+        $text = preg_split('/\r?\n/', $text);
+
+        foreach ($text as $idx => $line) {
+            if ($line != '-- ') {
+                if ($line[0] == '>' && preg_match('/^(>+)/', $line, $regs)) {
+                    $prefix = $regs[0];
+                    $level = strlen($prefix);
+                    $line  = rtrim(substr($line, $level));
+                    $line  = $prefix . rc_wordwrap($line, $length - $level - 2, " \r\n$prefix ");
+                }
+                else if ($line) {
+                    $line = rc_wordwrap(rtrim($line), $length - 2, " \r\n");
+                    // space-stuffing
+                    $line = preg_replace('/(^|\r\n)(From| |>)/', '\\1 \\2', $line);
+                }
+
+                $text[$idx] = $line;
+            }
+        }
+
+        return implode("\r\n", $text);
+    }
+
+}
index 748d958e8ed1cb98eac1b73d778ef82f3178f2be..e7115cbeced5b76e5675a8995acf4cc67f20b895 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2008-2009, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |  Abstract plugins interface/class                                     |
@@ -14,9 +17,6 @@
  +-----------------------------------------------------------------------+
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
-
- $Id: rcube_plugin.php 5168 2011-09-05 11:08:48Z alec $
-
 */
 
 /**
@@ -78,7 +78,7 @@ abstract class rcube_plugin
     $this->home = $api->dir . $this->ID;
     $this->urlbase = $api->url . $this->ID . '/';
   }
-  
+
   /**
    * Initialization method, needs to be implemented by the plugin itself
    */
@@ -114,7 +114,7 @@ abstract class rcube_plugin
         'message' => "Failed to load config from $fpath"), true, false);
       return false;
     }
-    
+
     return true;
   }
 
@@ -128,7 +128,18 @@ abstract class rcube_plugin
   {
     $this->api->register_hook($hook, $callback);
   }
-  
+
+  /**
+   * Unregister a callback function for a specific (server-side) hook.
+   *
+   * @param string $hook Hook name
+   * @param mixed  $callback Callback function as string or array with object reference and method name
+   */
+  public function remove_hook($hook, $callback)
+  {
+    $this->api->unregister_hook($hook, $callback);
+  }
+
   /**
    * Load localized texts from the plugins dir
    *
@@ -138,20 +149,48 @@ abstract class rcube_plugin
   public function add_texts($dir, $add2client = false)
   {
     $domain = $this->ID;
-    
-    $lang = $_SESSION['language'];
+    $lang   = $_SESSION['language'];
+    $langs  = array_unique(array('en_US', $lang));
     $locdir = slashify(realpath(slashify($this->home) . $dir));
-    $texts = array();
+    $texts  = array();
+
+    // Language aliases used to find localization in similar lang, see below
+    $aliases = array(
+        'de_CH' => 'de_DE',
+        'es_AR' => 'es_ES',
+        'fa_AF' => 'fa_IR',
+        'nl_BE' => 'nl_NL',
+        'pt_BR' => 'pt_PT',
+        'zh_CN' => 'zh_TW',
+    );
 
     // use buffering to handle empty lines/spaces after closing PHP tag
     ob_start();
 
-    foreach (array('en_US', $lang) as $lng) {
+    foreach ($langs as $lng) {
       $fpath = $locdir . $lng . '.inc';
       if (is_file($fpath) && is_readable($fpath)) {
-        include($fpath);
+        include $fpath;
         $texts = (array)$labels + (array)$messages + (array)$texts;
       }
+      else if ($lng != 'en_US') {
+        // Find localization in similar language (#1488401)
+        $alias = null;
+        if (!empty($aliases[$lng])) {
+          $alias = $aliases[$lng];
+        }
+        else if ($key = array_search($lng, $aliases)) {
+          $alias = $key;
+        }
+
+        if (!empty($alias)) {
+          $fpath = $locdir . $alias . '.inc';
+          if (is_file($fpath) && is_readable($fpath)) {
+            include $fpath;
+            $texts = (array)$labels + (array)$messages + (array)$texts;
+          }
+        }
+      }
     }
 
     ob_end_clean();
@@ -164,7 +203,7 @@ abstract class rcube_plugin
 
       $rcmail = rcmail::get_instance();
       $rcmail->load_language($lang, $add);
-      
+
       // add labels to client
       if ($add2client) {
         $js_labels = is_array($add2client) ? array_map(array($this, 'label_map_callback'), $add2client) : array_keys($add);
@@ -172,7 +211,7 @@ abstract class rcube_plugin
       }
     }
   }
-  
+
   /**
    * Wrapper for rcmail::gettext() adding the plugin ID as domain
    *
@@ -242,7 +281,7 @@ abstract class rcube_plugin
   {
     $this->api->include_stylesheet($this->resource_url($fn));
   }
-  
+
   /**
    * Append a button to a certain container
    *
@@ -257,11 +296,11 @@ abstract class rcube_plugin
       foreach (array('imagepas', 'imageact', 'imagesel') as $key)
         if ($p[$key])
           $p[$key] = $this->api->url . $this->resource_url($p[$key]);
-      
+
       $this->api->add_content($this->api->output->button($p), $container);
     }
   }
-  
+
   /**
    * Generate an absolute URL to the given resource within the current
    * plugin directory
@@ -295,9 +334,13 @@ abstract class rcube_plugin
    */
   public function local_skin_path()
   {
-      $skin_path = 'skins/'.$this->api->config->get('skin');
-      if (!is_dir(realpath(slashify($this->home) . $skin_path)))
-        $skin_path = 'skins/default';
+    $rcmail = rcmail::get_instance();
+    foreach (array($rcmail->config->get('skin'), 'larry') as $skin) {
+      $skin_path = 'skins/' . $skin;
+      if (is_dir(realpath(slashify($this->home) . $skin_path)))
+        break;
+    }
+
     return $skin_path;
   }
 
@@ -312,6 +355,4 @@ abstract class rcube_plugin
     return $this->ID.'.'.$key;
   }
 
-
 }
-
index e762fff0816ee16dcd9b3680f06205d62a4876c0..be12f11b52664e9c1e57f77bd34fcc289e1ce221 100644 (file)
@@ -5,8 +5,11 @@
  | program/include/rcube_plugin_api.php                                  |
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
- | Copyright (C) 2008-2009, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2008-2011, 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:                                                              |
  |   Plugins repository                                                  |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: rcube_plugin_api.php 5207 2011-09-12 12:52:01Z alec $
+ $Id$
 
 */
 
@@ -40,7 +43,7 @@ class rcube_plugin_api
   private $actionmap = array();
   private $objectsmap = array();
   private $template_contents = array();
-  private $required_plugins = array('filesystem_attachments');
+  private $required_plugins = array('filesystem_attachments', 'jqueryui');
   private $active_hook = false;
 
   // Deprecated names of hooks, will be removed after 0.5-stable release
@@ -71,6 +74,9 @@ class rcube_plugin_api
     'delete_identity'   => 'identity_delete',
     'save_identity'     => 'identity_update',
     'identity_save'     => 'identity_update',
+    // to be removed after 0.8
+    'imap_init'         => 'storage_init',
+    'mailboxes_list'    => 'storage_folders', 
   );
 
   /**
@@ -224,6 +230,20 @@ class rcube_plugin_api
         'message' => "Invalid callback function for $hook"), true, false);
   }
 
+  /**
+   * Allow a plugin object to unregister a callback.
+   *
+   * @param string $hook Hook name
+   * @param mixed  $callback String with global function name or array($obj, 'methodname')
+   */
+  public function unregister_hook($hook, $callback)
+  {
+    $callback_id = array_search($callback, $this->handlers[$hook]);
+    if ($callback_id !== false) {
+      unset($this->handlers[$hook][$callback_id]);
+    }
+  }
+
 
   /**
    * Triggers a plugin hook.
diff --git a/program/include/rcube_result_index.php b/program/include/rcube_result_index.php
new file mode 100644 (file)
index 0000000..6a30450
--- /dev/null
@@ -0,0 +1,453 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | program/include/rcube_result_index.php                                |
+ |                                                                       |
+ | This file is part of the Roundcube Webmail client                     |
+ | Copyright (C) 2005-2011, The Roundcube Dev Team                       |
+ | Copyright (C) 2011, 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:                                                              |
+ |   SORT/SEARCH/ESEARCH response handler                                |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas Bruederli <roundcube@gmail.com>                        |
+ | Author: Aleksander Machniak <alec@alec.pl>                            |
+ +-----------------------------------------------------------------------+
+
+ $Id$
+
+*/
+
+
+/**
+ * Class for accessing IMAP's SORT/SEARCH/ESEARCH result
+ */
+class rcube_result_index
+{
+    protected $raw_data;
+    protected $mailbox;
+    protected $meta = array();
+    protected $params = array();
+    protected $order = 'ASC';
+
+    const SEPARATOR_ELEMENT = ' ';
+
+
+    /**
+     * Object constructor.
+     */
+    public function __construct($mailbox = null, $data = null)
+    {
+        $this->mailbox = $mailbox;
+        $this->init($data);
+    }
+
+
+    /**
+     * Initializes object with SORT command response
+     *
+     * @param string $data IMAP response string
+     */
+    public function init($data = null)
+    {
+        $this->meta = array();
+
+        $data = explode('*', (string)$data);
+
+        // ...skip unilateral untagged server responses
+        for ($i=0, $len=count($data); $i<$len; $i++) {
+            $data_item = &$data[$i];
+            if (preg_match('/^ SORT/i', $data_item)) {
+                // valid response, initialize raw_data for is_error()
+                $this->raw_data = '';
+                $data_item = substr($data_item, 5);
+                break;
+            }
+            else if (preg_match('/^ (E?SEARCH)/i', $data_item, $m)) {
+                // valid response, initialize raw_data for is_error()
+                $this->raw_data = '';
+                $data_item = substr($data_item, strlen($m[0]));
+
+                if (strtoupper($m[1]) == 'ESEARCH') {
+                    $data_item = trim($data_item);
+                    // remove MODSEQ response
+                    if (preg_match('/\(MODSEQ ([0-9]+)\)$/i', $data_item, $m)) {
+                        $data_item = substr($data_item, 0, -strlen($m[0]));
+                        $this->params['MODSEQ'] = $m[1];
+                    }
+                    // remove TAG response part
+                    if (preg_match('/^\(TAG ["a-z0-9]+\)\s*/i', $data_item, $m)) {
+                        $data_item = substr($data_item, strlen($m[0]));
+                    }
+                    // remove UID
+                    $data_item = preg_replace('/^UID\s*/i', '', $data_item);
+
+                    // ESEARCH parameters
+                    while (preg_match('/^([a-z]+) ([0-9:,]+)\s*/i', $data_item, $m)) {
+                        $param = strtoupper($m[1]);
+                        $value = $m[2];
+
+                        $this->params[$param] = $value;
+                        $data_item = substr($data_item, strlen($m[0]));
+
+                        if (in_array($param, array('COUNT', 'MIN', 'MAX'))) {
+                            $this->meta[strtolower($param)] = (int) $value;
+                        }
+                    }
+
+// @TODO: Implement compression using compressMessageSet() in __sleep() and __wakeup() ?
+// @TODO: work with compressed result?!
+                    if (isset($this->params['ALL'])) {
+                        $data_item = implode(self::SEPARATOR_ELEMENT,
+                            rcube_imap_generic::uncompressMessageSet($this->params['ALL']));
+                    }
+                }
+
+                break;
+            }
+
+            unset($data[$i]);
+        }
+
+        $data = array_filter($data);
+
+        if (empty($data)) {
+            return;
+        }
+
+        $data = array_shift($data);
+        $data = trim($data);
+        $data = preg_replace('/[\r\n]/', '', $data);
+        $data = preg_replace('/\s+/', ' ', $data);
+
+        $this->raw_data = $data;
+    }
+
+
+    /**
+     * Checks the result from IMAP command
+     *
+     * @return bool True if the result is an error, False otherwise
+     */
+    public function is_error()
+    {
+        return $this->raw_data === null ? true : false;
+    }
+
+
+    /**
+     * Checks if the result is empty
+     *
+     * @return bool True if the result is empty, False otherwise
+     */
+    public function is_empty()
+    {
+        return empty($this->raw_data) ? true : false;
+    }
+
+
+    /**
+     * Returns number of elements in the result
+     *
+     * @return int Number of elements
+     */
+    public function count()
+    {
+        if ($this->meta['count'] !== null)
+            return $this->meta['count'];
+
+        if (empty($this->raw_data)) {
+            $this->meta['count']  = 0;
+            $this->meta['length'] = 0;
+        }
+        else {
+            $this->meta['count'] = 1 + substr_count($this->raw_data, self::SEPARATOR_ELEMENT);
+        }
+
+        return $this->meta['count'];
+    }
+
+
+    /**
+     * Returns number of elements in the result.
+     * Alias for count() for compatibility with rcube_result_thread
+     *
+     * @return int Number of elements
+     */
+    public function count_messages()
+    {
+        return $this->count();
+    }
+
+
+    /**
+     * Returns maximal message identifier in the result
+     *
+     * @return int Maximal message identifier
+     */
+    public function max()
+    {
+        if (!isset($this->meta['max'])) {
+            $this->meta['max'] = (int) @max($this->get());
+        }
+
+        return $this->meta['max'];
+    }
+
+
+    /**
+     * Returns minimal message identifier in the result
+     *
+     * @return int Minimal message identifier
+     */
+    public function min()
+    {
+        if (!isset($this->meta['min'])) {
+            $this->meta['min'] = (int) @min($this->get());
+        }
+
+        return $this->meta['min'];
+    }
+
+
+    /**
+     * Slices data set.
+     *
+     * @param $offset Offset (as for PHP's array_slice())
+     * @param $length Number of elements (as for PHP's array_slice())
+     *
+     */
+    public function slice($offset, $length)
+    {
+        $data = $this->get();
+        $data = array_slice($data, $offset, $length);
+
+        $this->meta          = array();
+        $this->meta['count'] = count($data);
+        $this->raw_data      = implode(self::SEPARATOR_ELEMENT, $data);
+    }
+
+
+    /**
+     * Filters data set. Removes elements listed in $ids list.
+     *
+     * @param array $ids List of IDs to remove.
+     */
+    public function filter($ids = array())
+    {
+        $data = $this->get();
+        $data = array_diff($data, $ids);
+
+        $this->meta          = array();
+        $this->meta['count'] = count($data);
+        $this->raw_data      = implode(self::SEPARATOR_ELEMENT, $data);
+    }
+
+
+    /**
+     * Filters data set. Removes elements not listed in $ids list.
+     *
+     * @param array $ids List of IDs to keep.
+     */
+    public function intersect($ids = array())
+    {
+        $data = $this->get();
+        $data = array_intersect($data, $ids);
+
+        $this->meta          = array();
+        $this->meta['count'] = count($data);
+        $this->raw_data      = implode(self::SEPARATOR_ELEMENT, $data);
+    }
+
+
+    /**
+     * Reverts order of elements in the result
+     */
+    public function revert()
+    {
+        $this->order = $this->order == 'ASC' ? 'DESC' : 'ASC';
+
+        if (empty($this->raw_data)) {
+            return;
+        }
+
+        // @TODO: maybe do this in chunks
+        $data = $this->get();
+        $data = array_reverse($data);
+        $this->raw_data = implode(self::SEPARATOR_ELEMENT, $data);
+
+        $this->meta['pos'] = array();
+    }
+
+
+    /**
+     * Check if the given message ID exists in the object
+     *
+     * @param int  $msgid     Message ID
+     * @param bool $get_index When enabled element's index will be returned.
+     *                        Elements are indexed starting with 0
+     *
+     * @return mixed False if message ID doesn't exist, True if exists or
+     *               index of the element if $get_index=true
+     */
+    public function exists($msgid, $get_index = false)
+    {
+        if (empty($this->raw_data)) {
+            return false;
+        }
+
+        $msgid = (int) $msgid;
+        $begin = implode('|', array('^', preg_quote(self::SEPARATOR_ELEMENT, '/')));
+        $end   = implode('|', array('$', preg_quote(self::SEPARATOR_ELEMENT, '/')));
+
+        if (preg_match("/($begin)$msgid($end)/", $this->raw_data, $m,
+            $get_index ? PREG_OFFSET_CAPTURE : null)
+        ) {
+            if ($get_index) {
+                $idx = 0;
+                if ($m[0][1]) {
+                    $idx = 1 + substr_count($this->raw_data, self::SEPARATOR_ELEMENT, 0, $m[0][1]);
+                }
+                // cache position of this element, so we can use it in get_element()
+                $this->meta['pos'][$idx] = (int)$m[0][1];
+
+                return $idx;
+            }
+            return true;
+        }
+
+        return false;
+    }
+
+
+    /**
+     * Return all messages in the result.
+     *
+     * @return array List of message IDs
+     */
+    public function get()
+    {
+        if (empty($this->raw_data)) {
+            return array();
+        }
+        return explode(self::SEPARATOR_ELEMENT, $this->raw_data);
+    }
+
+
+    /**
+     * Return all messages in the result.
+     *
+     * @return array List of message IDs
+     */
+    public function get_compressed()
+    {
+        if (empty($this->raw_data)) {
+            return '';
+        }
+
+        return rcube_imap_generic::compressMessageSet($this->get());
+    }
+
+
+    /**
+     * Return result element at specified index
+     *
+     * @param int|string  $index  Element's index or "FIRST" or "LAST"
+     *
+     * @return int Element value
+     */
+    public function get_element($index)
+    {
+        $count = $this->count();
+
+        if (!$count) {
+            return null;
+        }
+
+        // first element
+        if ($index === 0 || $index === '0' || $index === 'FIRST') {
+            $pos = strpos($this->raw_data, self::SEPARATOR_ELEMENT);
+            if ($pos === false)
+                $result = (int) $this->raw_data;
+            else
+                $result = (int) substr($this->raw_data, 0, $pos);
+
+            return $result;
+        }
+
+        // last element
+        if ($index === 'LAST' || $index == $count-1) {
+            $pos = strrpos($this->raw_data, self::SEPARATOR_ELEMENT);
+            if ($pos === false)
+                $result = (int) $this->raw_data;
+            else
+                $result = (int) substr($this->raw_data, $pos);
+
+            return $result;
+        }
+
+        // do we know the position of the element or the neighbour of it?
+        if (!empty($this->meta['pos'])) {
+            if (isset($this->meta['pos'][$index]))
+                $pos = $this->meta['pos'][$index];
+            else if (isset($this->meta['pos'][$index-1]))
+                $pos = strpos($this->raw_data, self::SEPARATOR_ELEMENT,
+                    $this->meta['pos'][$index-1] + 1);
+            else if (isset($this->meta['pos'][$index+1]))
+                $pos = strrpos($this->raw_data, self::SEPARATOR_ELEMENT,
+                    $this->meta['pos'][$index+1] - $this->length() - 1);
+
+            if (isset($pos) && preg_match('/([0-9]+)/', $this->raw_data, $m, null, $pos)) {
+                return (int) $m[1];
+            }
+        }
+
+        // Finally use less effective method
+        $data = explode(self::SEPARATOR_ELEMENT, $this->raw_data);
+
+        return $data[$index];
+    }
+
+
+    /**
+     * Returns response parameters, e.g. ESEARCH's MIN/MAX/COUNT/ALL/MODSEQ
+     * or internal data e.g. MAILBOX, ORDER
+     *
+     * @param string $param  Parameter name
+     *
+     * @return array|string Response parameters or parameter value
+     */
+    public function get_parameters($param=null)
+    {
+        $params = $this->params;
+        $params['MAILBOX'] = $this->mailbox;
+        $params['ORDER']   = $this->order;
+
+        if ($param !== null) {
+            return $params[$param];
+        }
+
+        return $params;
+    }
+
+
+    /**
+     * Returns length of internal data representation
+     *
+     * @return int Data length
+     */
+    protected function length()
+    {
+        if (!isset($this->meta['length'])) {
+            $this->meta['length'] = strlen($this->raw_data);
+        }
+
+        return $this->meta['length'];
+    }
+}
index e4a4ad4f3fd077950809de94d8bb4e34eee82a5c..5328fd7fe0a908546845bb321d29091d29c82851 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2006-2011, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Class representing an address directory result set                  |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: rcube_result_set.php 5258 2011-09-21 11:17:46Z thomasb $
+ $Id$
 
 */
 
diff --git a/program/include/rcube_result_thread.php b/program/include/rcube_result_thread.php
new file mode 100644 (file)
index 0000000..b939f67
--- /dev/null
@@ -0,0 +1,676 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | program/include/rcube_result_thread.php                               |
+ |                                                                       |
+ | This file is part of the Roundcube Webmail client                     |
+ | Copyright (C) 2005-2011, The Roundcube Dev Team                       |
+ | Copyright (C) 2011, 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:                                                              |
+ |   THREAD response handler                                             |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas Bruederli <roundcube@gmail.com>                        |
+ | Author: Aleksander Machniak <alec@alec.pl>                            |
+ +-----------------------------------------------------------------------+
+
+ $Id$
+
+*/
+
+
+/**
+ * Class for accessing IMAP's THREAD result
+ */
+class rcube_result_thread
+{
+    protected $raw_data;
+    protected $mailbox;
+    protected $meta = array();
+    protected $order = 'ASC';
+
+    const SEPARATOR_ELEMENT = ' ';
+    const SEPARATOR_ITEM    = '~';
+    const SEPARATOR_LEVEL   = ':';
+
+
+    /**
+     * Object constructor.
+     */
+    public function __construct($mailbox = null, $data = null)
+    {
+        $this->mailbox = $mailbox;
+        $this->init($data);
+    }
+
+
+    /**
+     * Initializes object with IMAP command response
+     *
+     * @param string $data IMAP response string
+     */
+    public function init($data = null)
+    {
+        $this->meta = array();
+
+        $data = explode('*', (string)$data);
+
+        // ...skip unilateral untagged server responses
+        for ($i=0, $len=count($data); $i<$len; $i++) {
+            if (preg_match('/^ THREAD/i', $data[$i])) {
+                // valid response, initialize raw_data for is_error()
+                $this->raw_data = '';
+                $data[$i] = substr($data[$i], 7);
+                break;
+            }
+
+            unset($data[$i]);
+        }
+
+        if (empty($data)) {
+            return;
+        }
+
+        $data = array_shift($data);
+        $data = trim($data);
+        $data = preg_replace('/[\r\n]/', '', $data);
+        $data = preg_replace('/\s+/', ' ', $data);
+
+        $this->raw_data = $this->parse_thread($data);
+    }
+
+
+    /**
+     * Checks the result from IMAP command
+     *
+     * @return bool True if the result is an error, False otherwise
+     */
+    public function is_error()
+    {
+        return $this->raw_data === null ? true : false;
+    }
+
+
+    /**
+     * Checks if the result is empty
+     *
+     * @return bool True if the result is empty, False otherwise
+     */
+    public function is_empty()
+    {
+        return empty($this->raw_data) ? true : false;
+    }
+
+
+    /**
+     * Returns number of elements (threads) in the result
+     *
+     * @return int Number of elements
+     */
+    public function count()
+    {
+        if ($this->meta['count'] !== null)
+            return $this->meta['count'];
+
+        if (empty($this->raw_data)) {
+            $this->meta['count'] = 0;
+        }
+        else {
+            $this->meta['count'] = 1 + substr_count($this->raw_data, self::SEPARATOR_ELEMENT);
+        }
+
+        if (!$this->meta['count'])
+            $this->meta['messages'] = 0;
+
+        return $this->meta['count'];
+    }
+
+
+    /**
+     * Returns number of all messages in the result
+     *
+     * @return int Number of elements
+     */
+    public function count_messages()
+    {
+        if ($this->meta['messages'] !== null)
+            return $this->meta['messages'];
+
+        if (empty($this->raw_data)) {
+            $this->meta['messages'] = 0;
+        }
+        else {
+            $this->meta['messages'] = 1
+                + substr_count($this->raw_data, self::SEPARATOR_ELEMENT)
+                + substr_count($this->raw_data, self::SEPARATOR_ITEM);
+        }
+
+        if ($this->meta['messages'] == 0 || $this->meta['messages'] == 1)
+            $this->meta['count'] = $this->meta['messages'];
+
+        return $this->meta['messages'];
+    }
+
+
+    /**
+     * Returns maximum message identifier in the result
+     *
+     * @return int Maximum message identifier
+     */
+    public function max()
+    {
+        if (!isset($this->meta['max'])) {
+            $this->meta['max'] = (int) @max($this->get());
+        }
+        return $this->meta['max'];
+    }
+
+
+    /**
+     * Returns minimum message identifier in the result
+     *
+     * @return int Minimum message identifier
+     */
+    public function min()
+    {
+        if (!isset($this->meta['min'])) {
+            $this->meta['min'] = (int) @min($this->get());
+        }
+        return $this->meta['min'];
+    }
+
+
+    /**
+     * Slices data set.
+     *
+     * @param $offset Offset (as for PHP's array_slice())
+     * @param $length Number of elements (as for PHP's array_slice())
+     */
+    public function slice($offset, $length)
+    {
+        $data = explode(self::SEPARATOR_ELEMENT, $this->raw_data);
+        $data = array_slice($data, $offset, $length);
+
+        $this->meta          = array();
+        $this->meta['count'] = count($data);
+        $this->raw_data      = implode(self::SEPARATOR_ELEMENT, $data);
+    }
+
+
+    /**
+     * Filters data set. Removes threads not listed in $roots list.
+     *
+     * @param array $roots List of IDs of thread roots.
+     */
+    public function filter($roots)
+    {
+        $datalen = strlen($this->raw_data);
+        $roots   = array_flip($roots);
+        $result  = '';
+        $start   = 0;
+
+        $this->meta          = array();
+        $this->meta['count'] = 0;
+
+        while (($pos = @strpos($this->raw_data, self::SEPARATOR_ELEMENT, $start))
+            || ($start < $datalen && ($pos = $datalen))
+        ) {
+            $len   = $pos - $start;
+            $elem  = substr($this->raw_data, $start, $len);
+            $start = $pos + 1;
+
+            // extract root message ID
+            if ($npos = strpos($elem, self::SEPARATOR_ITEM)) {
+                $root = (int) substr($elem, 0, $npos);
+            }
+            else {
+                $root = $elem;
+            }
+
+            if (isset($roots[$root])) {
+                $this->meta['count']++;
+                $result .= self::SEPARATOR_ELEMENT . $elem;
+            }
+        }
+
+        $this->raw_data = ltrim($result, self::SEPARATOR_ELEMENT);
+    }
+
+
+    /**
+     * Reverts order of elements in the result
+     */
+    public function revert()
+    {
+        $this->order = $this->order == 'ASC' ? 'DESC' : 'ASC';
+
+        if (empty($this->raw_data)) {
+            return;
+        }
+
+        $this->meta['pos'] = array();
+        $datalen = strlen($this->raw_data);
+        $result  = '';
+        $start   = 0;
+
+        while (($pos = @strpos($this->raw_data, self::SEPARATOR_ELEMENT, $start))
+            || ($start < $datalen && ($pos = $datalen))
+        ) {
+            $len   = $pos - $start;
+            $elem  = substr($this->raw_data, $start, $len);
+            $start = $pos + 1;
+
+            $result = $elem . self::SEPARATOR_ELEMENT . $result;
+        }
+
+        $this->raw_data = rtrim($result, self::SEPARATOR_ELEMENT);
+    }
+
+
+    /**
+     * Check if the given message ID exists in the object
+     *
+     * @param int $msgid Message ID
+     * @param bool $get_index When enabled element's index will be returned.
+     *                        Elements are indexed starting with 0
+     *
+     * @return boolean True on success, False if message ID doesn't exist
+     */
+    public function exists($msgid, $get_index = false)
+    {
+        $msgid = (int) $msgid;
+        $begin = implode('|', array(
+            '^',
+            preg_quote(self::SEPARATOR_ELEMENT, '/'),
+            preg_quote(self::SEPARATOR_LEVEL, '/'),
+        ));
+        $end = implode('|', array(
+            '$',
+            preg_quote(self::SEPARATOR_ELEMENT, '/'),
+            preg_quote(self::SEPARATOR_ITEM, '/'),
+        ));
+
+        if (preg_match("/($begin)$msgid($end)/", $this->raw_data, $m,
+            $get_index ? PREG_OFFSET_CAPTURE : null)
+        ) {
+            if ($get_index) {
+                $idx = 0;
+                if ($m[0][1]) {
+                    $idx = substr_count($this->raw_data, self::SEPARATOR_ELEMENT, 0, $m[0][1]+1)
+                        + substr_count($this->raw_data, self::SEPARATOR_ITEM, 0, $m[0][1]+1);
+                }
+                // cache position of this element, so we can use it in get_element()
+                $this->meta['pos'][$idx] = (int)$m[0][1];
+
+                return $idx;
+            }
+            return true;
+        }
+
+        return false;
+    }
+
+
+    /**
+     * Return IDs of all messages in the result. Threaded data will be flattened.
+     *
+     * @return array List of message identifiers
+     */
+    public function get()
+    {
+        if (empty($this->raw_data)) {
+            return array();
+        }
+
+        $regexp = '/(' . preg_quote(self::SEPARATOR_ELEMENT, '/')
+            . '|' . preg_quote(self::SEPARATOR_ITEM, '/') . '[0-9]+' . preg_quote(self::SEPARATOR_LEVEL, '/')
+            .')/';
+
+        return preg_split($regexp, $this->raw_data);
+    }
+
+
+    /**
+     * Return all messages in the result.
+     *
+     * @return array List of message identifiers
+     */
+    public function get_compressed()
+    {
+        if (empty($this->raw_data)) {
+            return '';
+        }
+
+        return rcube_imap_generic::compressMessageSet($this->get());
+    }
+
+
+    /**
+     * Return result element at specified index (all messages, not roots)
+     *
+     * @param int|string  $index  Element's index or "FIRST" or "LAST"
+     *
+     * @return int Element value
+     */
+    public function get_element($index)
+    {
+        $count = $this->count();
+
+        if (!$count) {
+            return null;
+        }
+
+        // first element
+        if ($index === 0 || $index === '0' || $index === 'FIRST') {
+            preg_match('/^([0-9]+)/', $this->raw_data, $m);
+            $result = (int) $m[1];
+            return $result;
+        }
+
+        // last element
+        if ($index === 'LAST' || $index == $count-1) {
+            preg_match('/([0-9]+)$/', $this->raw_data, $m);
+            $result = (int) $m[1];
+            return $result;
+        }
+
+        // do we know the position of the element or the neighbour of it?
+        if (!empty($this->meta['pos'])) {
+            $element = preg_quote(self::SEPARATOR_ELEMENT, '/');
+            $item    = preg_quote(self::SEPARATOR_ITEM, '/') . '[0-9]+' . preg_quote(self::SEPARATOR_LEVEL, '/') .'?';
+            $regexp  = '(' . $element . '|' . $item . ')';
+
+            if (isset($this->meta['pos'][$index])) {
+                if (preg_match('/([0-9]+)/', $this->raw_data, $m, null, $this->meta['pos'][$index]))
+                    $result = $m[1];
+            }
+            else if (isset($this->meta['pos'][$index-1])) {
+                // get chunk of data after previous element
+                $data = substr($this->raw_data, $this->meta['pos'][$index-1]+1, 50);
+                $data = preg_replace('/^[0-9]+/', '', $data); // remove UID at $index position
+                $data = preg_replace("/^$regexp/", '', $data); // remove separator
+                if (preg_match('/^([0-9]+)/', $data, $m))
+                    $result = $m[1];
+            }
+            else if (isset($this->meta['pos'][$index+1])) {
+                // get chunk of data before next element
+                $pos  = max(0, $this->meta['pos'][$index+1] - 50);
+                $len  = min(50, $this->meta['pos'][$index+1]);
+                $data = substr($this->raw_data, $pos, $len);
+                $data = preg_replace("/$regexp\$/", '', $data); // remove separator
+
+                if (preg_match('/([0-9]+)$/', $data, $m))
+                    $result = $m[1];
+            }
+
+            if (isset($result)) {
+                return (int) $result;
+            }
+        }
+
+        // Finally use less effective method
+        $data = $this->get();
+
+        return $data[$index];
+    }
+
+
+    /**
+     * Returns response parameters e.g. MAILBOX, ORDER
+     *
+     * @param string $param  Parameter name
+     *
+     * @return array|string Response parameters or parameter value
+     */
+    public function get_parameters($param=null)
+    {
+        $params = $this->params;
+        $params['MAILBOX'] = $this->mailbox;
+        $params['ORDER']   = $this->order;
+
+        if ($param !== null) {
+            return $params[$param];
+        }
+
+        return $params;
+    }
+
+
+    /**
+     * THREAD=REFS sorting implementation (based on provided index)
+     *
+     * @param rcube_result_index $index  Sorted message identifiers
+     */
+    public function sort($index)
+    {
+        $this->sort_order = $index->get_parameters('ORDER');
+
+        if (empty($this->raw_data)) {
+            return;
+        }
+
+        // when sorting search result it's good to make the index smaller
+        if ($index->count() != $this->count_messages()) {
+            $index->intersect($this->get());
+        }
+
+        $result  = array_fill_keys($index->get(), null);
+        $datalen = strlen($this->raw_data);
+        $start   = 0;
+
+        // Here we're parsing raw_data twice, we want only one big array
+        // in memory at a time
+
+        // Assign roots
+        while (($pos = @strpos($this->raw_data, self::SEPARATOR_ELEMENT, $start))
+            || ($start < $datalen && ($pos = $datalen))
+        ) {
+            $len   = $pos - $start;
+            $elem  = substr($this->raw_data, $start, $len);
+            $start = $pos + 1;
+
+            $items = explode(self::SEPARATOR_ITEM, $elem);
+            $root  = (int) array_shift($items);
+
+            if ($root) {
+                $result[$root] = $root;
+                foreach ($items as $item) {
+                    list($lv, $id) = explode(self::SEPARATOR_LEVEL, $item);
+                    $result[$id] = $root;
+                }
+            }
+        }
+
+        // get only unique roots
+        $result = array_filter($result); // make sure there are no nulls
+        $result = array_unique($result);
+
+        // Re-sort raw data
+        $result = array_fill_keys($result, null);
+        $start = 0;
+
+        while (($pos = @strpos($this->raw_data, self::SEPARATOR_ELEMENT, $start))
+            || ($start < $datalen && ($pos = $datalen))
+        ) {
+            $len   = $pos - $start;
+            $elem  = substr($this->raw_data, $start, $len);
+            $start = $pos + 1;
+
+            $npos = strpos($elem, self::SEPARATOR_ITEM);
+            $root = (int) ($npos ? substr($elem, 0, $npos) : $elem);
+
+            $result[$root] = $elem;
+        }
+
+        $this->raw_data = implode(self::SEPARATOR_ELEMENT, $result);
+    }
+
+
+    /**
+     * Returns data as tree
+     *
+     * @return array Data tree
+     */
+    public function get_tree()
+    {
+        $datalen = strlen($this->raw_data);
+        $result  = array();
+        $start   = 0;
+
+        while (($pos = @strpos($this->raw_data, self::SEPARATOR_ELEMENT, $start))
+            || ($start < $datalen && ($pos = $datalen))
+        ) {
+            $len   = $pos - $start;
+            $elem  = substr($this->raw_data, $start, $len);
+            $items = explode(self::SEPARATOR_ITEM, $elem);
+            $result[array_shift($items)] = $this->build_thread($items);
+            $start = $pos + 1;
+        }
+
+        return $result;
+    }
+
+
+    /**
+     * Returns thread depth and children data
+     *
+     * @return array Thread data
+     */
+    public function get_thread_data()
+    {
+        $data     = $this->get_tree();
+        $depth    = array();
+        $children = array();
+
+        $this->build_thread_data($data, $depth, $children);
+
+        return array($depth, $children);
+    }
+
+
+    /**
+     * Creates 'depth' and 'children' arrays from stored thread 'tree' data.
+     */
+    protected function build_thread_data($data, &$depth, &$children, $level = 0)
+    {
+        foreach ((array)$data as $key => $val) {
+            $empty          = empty($val) || !is_array($val);
+            $children[$key] = !$empty;
+            $depth[$key]    = $level;
+            if (!$empty) {
+                $this->build_thread_data($val, $depth, $children, $level + 1);
+            }
+        }
+    }
+
+
+    /**
+     * Converts part of the raw thread into an array
+     */
+    protected function build_thread($items, $level = 1, &$pos = 0)
+    {
+        $result = array();
+
+        for ($len=count($items); $pos < $len; $pos++) {
+            list($lv, $id) = explode(self::SEPARATOR_LEVEL, $items[$pos]);
+            if ($level == $lv) {
+                $pos++;
+                $result[$id] = $this->build_thread($items, $level+1, $pos);
+            }
+            else {
+                $pos--;
+                break;
+            }
+        }
+
+        return $result;
+    }
+
+
+    /**
+     * IMAP THREAD response parser
+     */
+    protected function parse_thread($str, $begin = 0, $end = 0, $depth = 0)
+    {
+        // Don't be tempted to change $str to pass by reference to speed this up - it will slow it down by about
+        // 7 times instead :-) See comments on http://uk2.php.net/references and this article:
+        // http://derickrethans.nl/files/phparch-php-variables-article.pdf
+        $node = '';
+        if (!$end) {
+            $end = strlen($str);
+        }
+
+        // Let's try to store data in max. compacted stracture as a string,
+        // arrays handling is much more expensive
+        // For the following structure: THREAD (2)(3 6 (4 23)(44 7 96))
+        // -- 2
+        //
+        // -- 3
+        //     \-- 6
+        //         |-- 4
+        //         |    \-- 23
+        //         |
+        //         \-- 44
+        //              \-- 7
+        //                   \-- 96
+        //
+        // The output will be: 2,3^1:6^2:4^3:23^2:44^3:7^4:96
+
+        if ($str[$begin] != '(') {
+            $stop = $begin + strspn($str, '1234567890', $begin, $end - $begin);
+            $msg  = substr($str, $begin, $stop - $begin);
+            if (!$msg) {
+                return $node;
+            }
+
+            $this->meta['messages']++;
+
+            $node .= ($depth ? self::SEPARATOR_ITEM.$depth.self::SEPARATOR_LEVEL : '').$msg;
+
+            if ($stop + 1 < $end) {
+                $node .= $this->parse_thread($str, $stop + 1, $end, $depth + 1);
+            }
+        } else {
+            $off = $begin;
+            while ($off < $end) {
+                $start = $off;
+                $off++;
+                $n = 1;
+                while ($n > 0) {
+                    $p = strpos($str, ')', $off);
+                    if ($p === false) {
+                        // error, wrong structure, mismatched brackets in IMAP THREAD response
+                        // @TODO: write error to the log or maybe set $this->raw_data = null;
+                        return $node;
+                    }
+                    $p1 = strpos($str, '(', $off);
+                    if ($p1 !== false && $p1 < $p) {
+                        $off = $p1 + 1;
+                        $n++;
+                    } else {
+                        $off = $p + 1;
+                        $n--;
+                    }
+                }
+
+                $thread = $this->parse_thread($str, $start + 1, $off - 1, $depth);
+                if ($thread) {
+                    if (!$depth) {
+                        if ($node) {
+                            $node .= self::SEPARATOR_ELEMENT;
+                        }
+                    }
+                    $node .= $thread;
+                }
+            }
+        }
+
+        return $node;
+    }
+}
index bd0ce60e46f2eb2d948a0a0d3af1ce06b157f04b..e00401f2c3045c267c06572ed0ee0f11cdf63530 100644 (file)
@@ -5,9 +5,12 @@
  | program/include/rcube_session.php                                     |
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
- | Copyright (C) 2005-2011, The Roundcube Dev Team                       |
+ | Copyright (C) 2005-2012, The Roundcube Dev Team                       |
  | Copyright (C) 2011, Kolab Systems AG                                  |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Provide database supported session management                       |
@@ -37,10 +40,9 @@ class rcube_session
   private $unsets = array();
   private $gc_handlers = array();
   private $cookiename = 'roundcube_sessauth';
-  private $vars = false;
+  private $vars;
   private $key;
   private $now;
-  private $prev;
   private $secret = '';
   private $ip_check = false;
   private $logging = false;
@@ -56,7 +58,6 @@ class rcube_session
     $this->start   = microtime(true);
     $this->ip      = $_SERVER['REMOTE_ADDR'];
     $this->logging = $config->get('log_session', false);
-    $this->mc_debug = $config->get('memcache_debug', false);
 
     $lifetime = $config->get('session_lifetime', 1) * 60;
     $this->set_lifetime($lifetime);
@@ -136,11 +137,10 @@ class rcube_session
       $this->vars    = base64_decode($sql_arr['vars']);
       $this->key     = $key;
 
-      if (!empty($this->vars))
-        return $this->vars;
+      return !empty($this->vars) ? (string) $this->vars : '';
     }
 
-    return false;
+    return null;
   }
 
 
@@ -159,7 +159,7 @@ class rcube_session
 
     // no session row in DB (db_read() returns false)
     if (!$this->key) {
-      $oldvars = false;
+      $oldvars = null;
     }
     // use internal data from read() for fast requests (up to 0.5 sec.)
     else if ($key == $this->key && (!$this->vars || $ts - $this->start < 0.5)) {
@@ -169,7 +169,7 @@ class rcube_session
       $oldvars = $this->db_read($key);
     }
 
-    if ($oldvars !== false) {
+    if ($oldvars !== null) {
       $newvars = $this->_fixvars($vars, $oldvars);
 
       if ($newvars !== $oldvars) {
@@ -199,7 +199,7 @@ class rcube_session
    */
   private function _fixvars($vars, $oldvars)
   {
-    if ($oldvars !== false) {
+    if ($oldvars !== null) {
       $a_oldvars = $this->unserialize($oldvars);
       if (is_array($a_oldvars)) {
         foreach ((array)$this->unsets as $k)
@@ -221,13 +221,14 @@ class rcube_session
    * Handler for session_destroy()
    *
    * @param string Session ID
+   *
    * @return boolean True on success
    */
   public function db_destroy($key)
   {
-    $this->db->query(
-      sprintf("DELETE FROM %s WHERE sess_id = ?", get_table_name('session')),
-      $key);
+    if ($key) {
+      $this->db->query(sprintf("DELETE FROM %s WHERE sess_id = ?", get_table_name('session')), $key);
+    }
 
     return true;
   }
@@ -260,21 +261,20 @@ class rcube_session
    */
   public function mc_read($key)
   {
-    $value = $this->memcache->get($key);
-    if ($this->mc_debug) write_log('memcache', "get($key): " . strlen($value));
-    if ($value && ($arr = unserialize($value))) {
+    if ($value = $this->memcache->get($key)) {
+      $arr = unserialize($value);
       $this->changed = $arr['changed'];
       $this->ip      = $arr['ip'];
       $this->vars    = $arr['vars'];
       $this->key     = $key;
 
-      if (!empty($this->vars))
-        return $this->vars;
+      return !empty($this->vars) ? (string) $this->vars : '';
     }
 
-    return false;
+    return null;
   }
 
+
   /**
    * Save session data.
    * handler for session_read()
@@ -289,39 +289,37 @@ class rcube_session
 
     // no session data in cache (mc_read() returns false)
     if (!$this->key)
-      $oldvars = false;
+      $oldvars = null;
     // use internal data for fast requests (up to 0.5 sec.)
     else if ($key == $this->key && (!$this->vars || $ts - $this->start < 0.5))
       $oldvars = $this->vars;
     else // else read data again
       $oldvars = $this->mc_read($key);
 
-    $newvars = $oldvars !== false ? $this->_fixvars($vars, $oldvars) : $vars;
-    
-    if ($newvars !== $oldvars || $ts - $this->changed > $this->lifetime / 2) {
-      $value = serialize(array('changed' => time(), 'ip' => $this->ip, 'vars' => $newvars));
-      $ret = $this->memcache->set($key, $value, MEMCACHE_COMPRESSED, $this->lifetime);
-      if ($this->mc_debug) {
-        write_log('memcache', "set($key): " . strlen($value) . ": " . ($ret ? 'OK' : 'ERR'));
-        write_log('memcache', "... get($key): " . strlen($this->memcache->get($key)));
-      }
-      return $ret;
-    }
-    
+    $newvars = $oldvars !== null ? $this->_fixvars($vars, $oldvars) : $vars;
+
+    if ($newvars !== $oldvars || $ts - $this->changed > $this->lifetime / 2)
+      return $this->memcache->set($key, serialize(array('changed' => time(), 'ip' => $this->ip, 'vars' => $newvars)), MEMCACHE_COMPRESSED, $this->lifetime);
+
     return true;
   }
 
+
   /**
    * Handler for session_destroy() with memcache backend
    *
    * @param string Session ID
+   *
    * @return boolean True on success
    */
   public function mc_destroy($key)
   {
-    $ret = $this->memcache->delete($key);
-    if ($this->mc_debug) write_log('memcache', "delete($key): " . ($ret ? 'OK' : 'ERR'));
-    return $ret;
+    if ($key) {
+      // #1488592: use 2nd argument
+      $this->memcache->delete($key, 0);
+    }
+
+    return true;
   }
 
 
@@ -340,10 +338,15 @@ class rcube_session
    *
    * @param mixed Callback function
    */
-  public function register_gc_handler($func_name)
+  public function register_gc_handler($func)
   {
-    if ($func_name && !in_array($func_name, $this->gc_handlers))
-      $this->gc_handlers[] = $func_name;
+    foreach ($this->gc_handlers as $handler) {
+      if ($handler == $func) {
+        return;
+      }
+    }
+
+    $this->gc_handlers[] = $func;
   }
 
 
@@ -356,7 +359,7 @@ class rcube_session
   {
     session_regenerate_id($destroy);
 
-    $this->vars = false;
+    $this->vars = null;
     $this->key  = session_id();
 
     return true;
@@ -379,13 +382,15 @@ class rcube_session
 
     return true;
   }
-  
+
+
   /**
    * Kill this session
    */
   public function kill()
   {
-    $this->vars = false;
+    $this->vars = null;
+    $this->ip = $_SERVER['REMOTE_ADDR']; // update IP (might have changed)
     $this->destroy(session_id());
     rcmail::setcookie($this->cookiename, '-del-', time() - 60);
   }
@@ -520,7 +525,6 @@ class rcube_session
       // valid time range is now - 1/2 lifetime to now + 1/2 lifetime
       $now = time();
       $this->now = $now - ($now % ($this->lifetime / 2));
-      $this->prev = $this->now - ($this->lifetime / 2);
   }
 
   /**
@@ -591,15 +595,22 @@ class rcube_session
       $this->log("IP check failed for " . $this->key . "; expected " . $this->ip . "; got " . $_SERVER['REMOTE_ADDR']);
 
     if ($result && $this->_mkcookie($this->now) != $this->cookie) {
-      // Check if using id from previous time slot
-      if ($this->_mkcookie($this->prev) == $this->cookie) {
-        $this->set_auth_cookie();
-      }
-      else {
-        $result = false;
-        $this->log("Session authentication failed for " . $this->key . "; invalid auth cookie sent");
+      $this->log("Session auth check failed for " . $this->key . "; timeslot = " . date('Y-m-d H:i:s', $this->now));
+      $result = false;
+
+      // Check if using id from a previous time slot
+      for ($i = 1; $i <= 2; $i++) {
+        $prev = $this->now - ($this->lifetime / 2) * $i;
+        if ($this->_mkcookie($prev) == $this->cookie) {
+          $this->log("Send new auth cookie for " . $this->key . ": " . $this->cookie);
+          $this->set_auth_cookie();
+          $result = true;
+        }
       }
-    }
+       }
+
+    if (!$result)
+      $this->log("Session authentication failed for " . $this->key . "; invalid auth cookie sent; timeslot = " . date('Y-m-d H:i:s', $prev));
 
     return $result;
   }
index 089aab4003fc2703c5b5c429d74641be2fe5de30..3d32555551fb41e1d958cab7405233decc9ad4cf 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube PHP suite                          |
  | Copyright (C) 2005-2007, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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.                     |
  |                                                                       |
  | CONTENTS:                                                             |
  |   Shared functions and classes used in PHP projects                   |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: rcube_shared.inc 5770 2012-01-13 11:23:17Z alec $
+ $Id$
 
 */
 
@@ -63,7 +66,7 @@ function send_future_expire_header($offset=2600000)
   if (headers_sent())
     return;
 
-  header("Expires: ".gmdate("D, d M Y H:i:s", mktime()+$offset)." GMT");
+  header("Expires: ".gmdate("D, d M Y H:i:s", time()+$offset)." GMT");
   header("Cache-Control: max-age=$offset");
   header("Pragma: ");
 }
@@ -79,9 +82,11 @@ function send_future_expire_header($offset=2600000)
 function in_array_nocase($needle, $haystack)
 {
   $needle = mb_strtolower($needle);
-  foreach ($haystack as $value)
-    if ($needle===mb_strtolower($value))
-      return true;
+  foreach ((array)$haystack as $value) {
+    if ($needle === mb_strtolower($value)) {
+       return true;
+    }
+  }
 
   return false;
 }
@@ -296,7 +301,7 @@ function get_offset_time($offset_str, $factor=1)
     $unit = 's';
   }
 
-  $ts = mktime();
+  $ts = time();
   switch ($unit)
   {
     case 'w':
@@ -418,123 +423,6 @@ function rc_image_content_type($data)
 }
 
 
-/**
- * A method to guess encoding of a string.
- *
- * @param string $string       String.
- * @param string $failover     Default result for failover.
- *
- * @return string
- */
-function rc_detect_encoding($string, $failover='')
-{
-    if (!function_exists('mb_detect_encoding')) {
-        return $failover;
-    }
-
-    // FIXME: the order is important, because sometimes 
-    // iso string is detected as euc-jp and etc.
-    $enc = array(
-      'UTF-8', 'SJIS', 'BIG5', 'GB2312',
-      'ISO-8859-1', 'ISO-8859-2', 'ISO-8859-3', 'ISO-8859-4',
-      'ISO-8859-5', 'ISO-8859-6', 'ISO-8859-7', 'ISO-8859-8', 'ISO-8859-9',
-      'ISO-8859-10', 'ISO-8859-13', 'ISO-8859-14', 'ISO-8859-15', 'ISO-8859-16',
-      'WINDOWS-1252', 'WINDOWS-1251', 'EUC-JP', 'EUC-TW', 'KOI8-R', 
-      'ISO-2022-KR', 'ISO-2022-JP'
-    );
-
-    $result = mb_detect_encoding($string, join(',', $enc));
-
-    return $result ? $result : $failover;
-}
-
-/**
- * Removes non-unicode characters from input
- *
- * @param mixed $input String or array.
- * @return string
- */
-function rc_utf8_clean($input)
-{
-  // handle input of type array
-  if (is_array($input)) {
-    foreach ($input as $idx => $val)
-      $input[$idx] = rc_utf8_clean($val);
-    return $input;
-  }
-
-  if (!is_string($input) || $input == '')
-    return $input;
-
-  // iconv/mbstring are much faster (especially with long strings)
-  if (function_exists('mb_convert_encoding') && ($res = mb_convert_encoding($input, 'UTF-8', 'UTF-8')) !== false)
-    return $res;
-
-  if (function_exists('iconv') && ($res = @iconv('UTF-8', 'UTF-8//IGNORE', $input)) !== false)
-    return $res;
-
-  $regexp = '/^('.
-//    '[\x00-\x7F]'.                                  // UTF8-1
-    '|[\xC2-\xDF][\x80-\xBF]'.                      // UTF8-2
-    '|\xE0[\xA0-\xBF][\x80-\xBF]'.                  // UTF8-3
-    '|[\xE1-\xEC][\x80-\xBF][\x80-\xBF]'.           // UTF8-3
-    '|\xED[\x80-\x9F][\x80-\xBF]'.                  // UTF8-3
-    '|[\xEE-\xEF][\x80-\xBF][\x80-\xBF]'.           // UTF8-3
-    '|\xF0[\x90-\xBF][\x80-\xBF][\x80-\xBF]'.       // UTF8-4
-    '|[\xF1-\xF3][\x80-\xBF][\x80-\xBF][\x80-\xBF]'.// UTF8-4
-    '|\xF4[\x80-\x8F][\x80-\xBF][\x80-\xBF]'.       // UTF8-4
-    ')$/';
-
-  $seq = '';
-  $out = '';
-
-  for ($i = 0, $len = strlen($input); $i < $len; $i++) {
-    $chr = $input[$i];
-    $ord = ord($chr);
-    // 1-byte character
-    if ($ord <= 0x7F) {
-      if ($seq)
-        $out .= preg_match($regexp, $seq) ? $seq : '';
-      $seq = '';
-      $out .= $chr;
-    // first (or second) byte of multibyte sequence
-    } else if ($ord >= 0xC0) {
-      if (strlen($seq)>1) {
-       $out .= preg_match($regexp, $seq) ? $seq : '';
-        $seq = '';
-      } else if ($seq && ord($seq) < 0xC0) {
-        $seq = '';
-      }
-      $seq .= $chr;
-    // next byte of multibyte sequence
-    } else if ($seq) {
-      $seq .= $chr;
-    }
-  }
-
-  if ($seq)
-    $out .= preg_match($regexp, $seq) ? $seq : '';
-
-  return $out;
-}
-
-
-/**
- * Convert a variable into a javascript object notation
- *
- * @param mixed Input value
- * @return string Serialized JSON string
- */
-function json_serialize($input)
-{
-  $input = rc_utf8_clean($input);
-
-  // sometimes even using rc_utf8_clean() the input contains invalid UTF-8 sequences
-  // that's why we have @ here
-  return @json_encode($input);
-}
-
-
 /**
  * Explode quoted string
  * 
@@ -581,6 +469,29 @@ function array_keys_recursive($array)
 }
 
 
+/**
+ * Format e-mail address
+ *
+ * @param string $email E-mail address
+ *
+ * @return string Formatted e-mail address
+ */
+function format_email($email)
+{
+    $email = trim($email);
+    $parts = explode('@', $email);
+    $count = count($parts);
+
+    if ($count > 1) {
+        $parts[$count-1] = mb_strtolower($parts[$count-1]);
+
+        $email = implode('@', $parts);
+    }
+
+    return $email;
+}
+
+
 /**
  * mbstring replacement functions
  */
index 8c668c0a4b03fb46f1a08d57051ba7783f262f96..854505d79be7c190af2c8d1432e5f911e36ce0b2 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2010, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Provide SMTP functionality using socket connections                 |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: rcube_smtp.php 5499 2011-11-28 09:03:27Z alec $
+ $Id$
 
 */
 
@@ -50,13 +53,13 @@ class rcube_smtp
   public function connect($host=null, $port=null, $user=null, $pass=null)
   {
     $RCMAIL = rcmail::get_instance();
-  
+
     // disconnect/destroy $this->conn
     $this->disconnect();
-    
+
     // reset error/response var
     $this->error = $this->response = null;
-  
+
     // let plugins alter smtp connection config
     $CONFIG = $RCMAIL->plugins->exec_hook('smtp_connect', array(
       'smtp_server'    => $host ? $host : $RCMAIL->config->get('smtp_server'),
@@ -68,6 +71,7 @@ class rcube_smtp
       'smtp_auth_type' => $RCMAIL->config->get('smtp_auth_type'),
       'smtp_helo_host' => $RCMAIL->config->get('smtp_helo_host'),
       'smtp_timeout'   => $RCMAIL->config->get('smtp_timeout'),
+      'smtp_auth_callbacks' => array(),
     ));
 
     $smtp_host = rcube_parse_host($CONFIG['smtp_server']);
@@ -108,6 +112,14 @@ class rcube_smtp
     if ($RCMAIL->config->get('smtp_debug'))
       $this->conn->setDebug(true, array($this, 'debug_handler'));
 
+    // register authentication methods
+    if (!empty($CONFIG['smtp_auth_callbacks']) && method_exists($this->conn, 'setAuthMethod')) {
+      foreach ($CONFIG['smtp_auth_callbacks'] as $callback) {
+        $this->conn->setAuthMethod($callback['name'], $callback['function'],
+          isset($callback['prepend']) ? $callback['prepend'] : true);
+      }
+    }
+
     // try to connect to server and exit on failure
     $result = $this->conn->connect($smtp_timeout);
 
index 3b565c3632ab6252a44ff19ed3100a3027623a01..7b3a04ebd7055f0555ca0a065abe84ebac812422 100644 (file)
@@ -7,7 +7,10 @@
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2011, Kolab Systems AG                                  |
  | Copyright (C) 2008-2011, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Spellchecking using different backends                              |
@@ -17,7 +20,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: rcube_spellchecker.php 5181 2011-09-06 13:39:45Z alec $
+ $Id$
 
 */
 
@@ -57,13 +60,6 @@ class rcube_spellchecker
         $this->engine = $this->rc->config->get('spellcheck_engine', 'googie');
         $this->lang   = $lang ? $lang : 'en';
 
-        if ($this->engine == 'pspell' && !extension_loaded('pspell')) {
-            raise_error(array(
-                'code' => 500, 'type' => 'php',
-                'file' => __FILE__, 'line' => __LINE__,
-                'message' => "Pspell extension not available"), true, true);
-        }
-
         $this->options = array(
             'ignore_syms' => $this->rc->config->get('spellcheck_ignore_syms'),
             'ignore_nums' => $this->rc->config->get('spellcheck_ignore_nums'),
@@ -235,8 +231,8 @@ class rcube_spellchecker
             else if (!pspell_check($this->plink, $word)) {
                 $suggestions = pspell_suggest($this->plink, $word);
 
-                   if (sizeof($suggestions) > self::MAX_SUGGESTIONS)
-                       $suggestions = array_slice($suggestions, 0, self::MAX_SUGGESTIONS);
+                if (sizeof($suggestions) > self::MAX_SUGGESTIONS)
+                    $suggestions = array_slice($suggestions, 0, self::MAX_SUGGESTIONS);
 
                 $matches[] = array($word, $pos, $len, null, $suggestions);
             }
@@ -321,6 +317,16 @@ class rcube_spellchecker
     private function _pspell_init()
     {
         if (!$this->plink) {
+            if (!extension_loaded('pspell')) {
+                $this->error = "Pspell extension not available";
+                raise_error(array(
+                    'code' => 500, 'type' => 'php',
+                    'file' => __FILE__, 'line' => __LINE__,
+                    'message' => $this->error), true, false);
+
+                return;
+            }
+
             $this->plink = pspell_new($this->lang, null, null, RCMAIL_CHARSET, PSPELL_FAST);
         }
 
index 0af3eb85d107a4fcb63971ee77ed003c1d0b0d5e..3b74b26654775adc29bd97965d192c3738e2cb34 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2010, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Provide callback functions for sqlite that will emulate             |
@@ -16,7 +19,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: rcube_sqlite.inc 4410 2011-01-12 18:25:02Z thomasb $
+ $Id$
 
 */
 
diff --git a/program/include/rcube_storage.php b/program/include/rcube_storage.php
new file mode 100644 (file)
index 0000000..8daedf1
--- /dev/null
@@ -0,0 +1,1074 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | program/include/rcube_storage.php                                     |
+ |                                                                       |
+ | This file is part of the Roundcube Webmail client                     |
+ | Copyright (C) 2005-2012, The Roundcube Dev Team                       |
+ | Copyright (C) 2012, 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:                                                              |
+ |   Mail Storage Engine                                                 |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas Bruederli <roundcube@gmail.com>                        |
+ | Author: Aleksander Machniak <alec@alec.pl>                            |
+ +-----------------------------------------------------------------------+
+
+ $Id$
+
+*/
+
+
+/**
+ * Abstract class for accessing mail messages storage server
+ *
+ * @package Mail
+ * @author  Thomas Bruederli <roundcube@gmail.com>
+ * @author  Aleksander Machniak <alec@alec.pl>
+ * @version 2.0
+ */
+abstract class rcube_storage
+{
+    /**
+     * Instance of connection object e.g. rcube_imap_generic
+     *
+     * @var mixed
+     */
+    public $conn;
+
+    protected $folder = 'INBOX';
+    protected $default_charset = 'ISO-8859-1';
+    protected $default_folders = array('INBOX');
+    protected $search_set;
+    protected $options = array('auth_method' => 'check');
+    protected $page_size = 10;
+    protected $threading = false;
+
+    /**
+     * All (additional) headers used (in any way) by Roundcube
+     * Not listed here: DATE, FROM, TO, CC, REPLY-TO, SUBJECT, CONTENT-TYPE, LIST-POST
+     * (used for messages listing) are hardcoded in rcube_imap_generic::fetchHeaders()
+     *
+     * @var array
+     */
+    protected $all_headers = array(
+        'IN-REPLY-TO',
+        'BCC',
+        'MESSAGE-ID',
+        'CONTENT-TRANSFER-ENCODING',
+        'REFERENCES',
+        'X-DRAFT-INFO',
+        'MAIL-FOLLOWUP-TO',
+        'MAIL-REPLY-TO',
+        'RETURN-PATH',
+    );
+
+    const UNKNOWN       = 0;
+    const NOPERM        = 1;
+    const READONLY      = 2;
+    const TRYCREATE     = 3;
+    const INUSE         = 4;
+    const OVERQUOTA     = 5;
+    const ALREADYEXISTS = 6;
+    const NONEXISTENT   = 7;
+    const CONTACTADMIN  = 8;
+
+
+    /**
+     * Connect to the 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
+     *
+     * @return boolean  TRUE on success, FALSE on failure
+     */
+    abstract function connect($host, $user, $pass, $port = 143, $use_ssl = null);
+
+
+    /**
+     * Close connection. Usually done on script shutdown
+     */
+    abstract function close();
+
+
+    /**
+     * Checks connection state.
+     *
+     * @return boolean  TRUE on success, FALSE on failure
+     */
+    abstract function is_connected();
+
+
+    /**
+     * Check connection state, connect if not connected.
+     *
+     * @return bool Connection state.
+     */
+    abstract function check_connection();
+
+
+    /**
+     * Returns code of last error
+     *
+     * @return int Error code
+     */
+    abstract function get_error_code();
+
+
+    /**
+     * Returns message of last error
+     *
+     * @return string Error message
+     */
+    abstract function get_error_str();
+
+
+    /**
+     * Returns code of last command response
+     *
+     * @return int Response code (class constant)
+     */
+    abstract function get_response_code();
+
+
+    /**
+     * Set connection and class options
+     *
+     * @param array $opt Options array
+     */
+    public function set_options($opt)
+    {
+        $this->options = array_merge($this->options, (array)$opt);
+    }
+
+
+    /**
+     * Activate/deactivate debug mode.
+     *
+     * @param boolean $dbg True if conversation with the server should be logged
+     */
+    abstract function set_debug($dbg = true);
+
+
+    /**
+     * Set default message charset.
+     *
+     * This will be used for message decoding if a charset specification is not available
+     *
+     * @param  string $cs Charset string
+     */
+    public function set_charset($cs)
+    {
+        $this->default_charset = $cs;
+    }
+
+
+    /**
+     * This list of folders will be listed above all other folders
+     *
+     * @param  array $arr Indexed list of folder names
+     */
+    public function set_default_folders($arr)
+    {
+        if (is_array($arr)) {
+            $this->default_folders = $arr;
+
+            // add inbox if not included
+            if (!in_array('INBOX', $this->default_folders)) {
+                array_unshift($this->default_folders, 'INBOX');
+            }
+        }
+    }
+
+
+    /**
+     * Set internal folder reference.
+     * All operations will be perfomed on this folder.
+     *
+     * @param  string $folder  Folder name
+     */
+    public function set_folder($folder)
+    {
+        if ($this->folder == $folder) {
+            return;
+        }
+
+        $this->folder = $folder;
+    }
+
+
+    /**
+     * Returns the currently used folder name
+     *
+     * @return string Name of the folder
+     */
+    public function get_folder()
+    {
+        return $this->folder;
+    }
+
+
+    /**
+     * Set internal list page number.
+     *
+     * @param int $page Page number to list
+     */
+    public function set_page($page)
+    {
+        $this->list_page = (int) $page;
+    }
+
+
+    /**
+     * Gets internal list page number.
+     *
+     * @return int Page number
+     */
+    public function get_page()
+    {
+        return $this->list_page;
+    }
+
+
+    /**
+     * Set internal page size
+     *
+     * @param int $size Number of messages to display on one page
+     */
+    public function set_pagesize($size)
+    {
+        $this->page_size = (int) $size;
+    }
+
+
+    /**
+     * Get internal page size
+     *
+     * @return int Number of messages to display on one page
+     */
+    public function get_pagesize()
+    {
+        return $this->page_size;
+    }
+
+
+    /**
+     * Save a search result for future message listing methods.
+     *
+     * @param  mixed  $set  Search set in driver specific format
+     */
+    abstract function set_search_set($set);
+
+
+    /**
+     * Return the saved search set.
+     *
+     * @return array Search set in driver specific format, NULL if search wasn't initialized
+     */
+    abstract function get_search_set();
+
+
+    /**
+     * Returns the storage server's (IMAP) capability
+     *
+     * @param   string  $cap Capability name
+     *
+     * @return  mixed   Capability value or TRUE if supported, FALSE if not
+     */
+    abstract function get_capability($cap);
+
+
+    /**
+     * Sets threading flag to the best supported THREAD algorithm.
+     * Enable/Disable threaded mode.
+     *
+     * @param  boolean  $enable TRUE to enable and FALSE
+     *
+     * @return mixed   Threading algorithm or False if THREAD is not supported
+     */
+    public function set_threading($enable = false)
+    {
+        $this->threading = false;
+
+        if ($enable && ($caps = $this->get_capability('THREAD'))) {
+            $methods = array('REFS', 'REFERENCES', 'ORDEREDSUBJECT');
+            $methods = array_intersect($methods, $caps);
+
+            $this->threading = array_shift($methods);
+        }
+
+        return $this->threading;
+    }
+
+
+    /**
+     * Get current threading flag.
+     *
+     * @return mixed  Threading algorithm or False if THREAD is not supported or disabled
+     */
+    public function get_threading()
+    {
+        return $this->threading;
+    }
+
+
+    /**
+     * Checks the PERMANENTFLAGS capability of the current folder
+     * and returns true if the given flag is supported by the server.
+     *
+     * @param   string  $flag Permanentflag name
+     *
+     * @return  boolean True if this flag is supported
+     */
+    abstract function check_permflag($flag);
+
+
+    /**
+     * Returns the delimiter that is used by the server
+     * for folder hierarchy separation.
+     *
+     * @return  string  Delimiter string
+     */
+    abstract function get_hierarchy_delimiter();
+
+
+    /**
+     * Get namespace
+     *
+     * @param string $name Namespace array index: personal, other, shared, prefix
+     *
+     * @return  array  Namespace data
+     */
+    abstract function get_namespace($name = null);
+
+
+    /**
+     * Get messages count for a specific folder.
+     *
+     * @param  string  $folder  Folder name
+     * @param  string  $mode    Mode for count [ALL|THREADS|UNSEEN|RECENT]
+     * @param  boolean $force   Force reading from server and update cache
+     * @param  boolean $status  Enables storing folder status info (max UID/count),
+     *                          required for folder_status()
+     *
+     * @return int     Number of messages
+     */
+    abstract function count($folder = null, $mode = 'ALL', $force = false, $status = true);
+
+
+    /**
+     * Public method for listing headers.
+     *
+     * @param   string   $folder     Folder name
+     * @param   int      $page       Current page to list
+     * @param   string   $sort_field Header field to sort by
+     * @param   string   $sort_order Sort order [ASC|DESC]
+     * @param   int      $slice      Number of slice items to extract from result array
+     *
+     * @return  array    Indexed array with message header objects
+     */
+    abstract function list_messages($folder = null, $page = null, $sort_field = null, $sort_order = null, $slice = 0);
+
+
+    /**
+     * Return sorted list of message UIDs
+     *
+     * @param string $folder     Folder to get index from
+     * @param string $sort_field Sort column
+     * @param string $sort_order Sort order [ASC, DESC]
+     *
+     * @return rcube_result_index|rcube_result_thread List of messages (UIDs)
+     */
+    abstract function index($folder = null, $sort_field = null, $sort_order = null);
+
+
+    /**
+     * Invoke search request to the server.
+     *
+     * @param  string  $folder     Folder name to search in
+     * @param  string  $str        Search criteria
+     * @param  string  $charset    Search charset
+     * @param  string  $sort_field Header field to sort by
+     *
+     * @todo: Search criteria should be provided in non-IMAP format, eg. array
+     */
+    abstract function search($folder = null, $str = 'ALL', $charset = null, $sort_field = null);
+
+
+    /**
+     * Direct (real and simple) search request (without result sorting and caching).
+     *
+     * @param  string  $folder  Folder name to search in
+     * @param  string  $str     Search string
+     *
+     * @return rcube_result_index  Search result (UIDs)
+     */
+    abstract function search_once($folder = null, $str = 'ALL');
+
+
+    /**
+     * Refresh saved search set
+     *
+     * @return array Current search set
+     */
+    abstract function refresh_search();
+
+
+    /* --------------------------------
+     *        messages management
+     * --------------------------------*/
+
+    /**
+     * Fetch message headers and body structure from the server and build
+     * an object structure similar to the one generated by PEAR::Mail_mimeDecode
+     *
+     * @param int     $uid     Message UID to fetch
+     * @param string  $folder  Folder to read from
+     *
+     * @return object rcube_mail_header Message data
+     */
+    abstract function get_message($uid, $folder = null);
+
+
+    /**
+     * Return message headers object of a specific message
+     *
+     * @param int     $id       Message sequence ID or UID
+     * @param string  $folder   Folder to read from
+     * @param bool    $force    True to skip cache
+     *
+     * @return rcube_mail_header Message headers
+     */
+    abstract function get_message_headers($uid, $folder = null, $force = false);
+
+
+    /**
+     * Fetch message body of a specific message from the server
+     *
+     * @param  int                $uid    Message UID
+     * @param  string             $part   Part number
+     * @param  rcube_message_part $o_part Part object created by get_structure()
+     * @param  mixed              $print  True to print part, ressource to write part contents in
+     * @param  resource           $fp     File pointer to save the message part
+     * @param  boolean            $skip_charset_conv Disables charset conversion
+     *
+     * @return string Message/part body if not printed
+     */
+    abstract function get_message_part($uid, $part = 1, $o_part = null, $print = null, $fp = null, $skip_charset_conv = false);
+
+
+    /**
+     * Fetch message body of a specific message from the server
+     *
+     * @param  int    $uid  Message UID
+     *
+     * @return string $part Message/part body
+     * @see    rcube_imap::get_message_part()
+     */
+    public function get_body($uid, $part = 1)
+    {
+        $headers = $this->get_message_headers($uid);
+        return rcube_charset_convert($this->get_message_part($uid, $part, null),
+            $headers->charset ? $headers->charset : $this->default_charset);
+    }
+
+
+    /**
+     * Returns the whole message source as string (or saves to a file)
+     *
+     * @param int      $uid Message UID
+     * @param resource $fp  File pointer to save the message
+     *
+     * @return string Message source string
+     */
+    abstract function get_raw_body($uid, $fp = null);
+
+
+    /**
+     * Returns the message headers as string
+     *
+     * @param int $uid  Message UID
+     *
+     * @return string Message headers string
+     */
+    abstract function get_raw_headers($uid);
+
+
+    /**
+     * Sends the whole message source to stdout
+     *
+     * @param int  $uid       Message UID
+     * @param bool $formatted Enables line-ending formatting
+     */
+    abstract function print_raw_body($uid, $formatted = true);
+
+
+    /**
+     * Set message flag to one or several messages
+     *
+     * @param mixed   $uids       Message UIDs as array or comma-separated string, or '*'
+     * @param string  $flag       Flag to set: SEEN, UNDELETED, DELETED, RECENT, ANSWERED, DRAFT, MDNSENT
+     * @param string  $folder     Folder name
+     * @param boolean $skip_cache True to skip message cache clean up
+     *
+     * @return bool  Operation status
+     */
+    abstract function set_flag($uids, $flag, $folder = null, $skip_cache = false);
+
+
+    /**
+     * Remove message flag for one or several messages
+     *
+     * @param mixed  $uids    Message UIDs as array or comma-separated string, or '*'
+     * @param string $flag    Flag to unset: SEEN, DELETED, RECENT, ANSWERED, DRAFT, MDNSENT
+     * @param string $folder  Folder name
+     *
+     * @return bool   Operation status
+     * @see set_flag
+     */
+    public function unset_flag($uids, $flag, $folder = null)
+    {
+        return $this->set_flag($uids, 'UN'.$flag, $folder);
+    }
+
+
+    /**
+     * Append a mail message (source) to a specific folder.
+     *
+     * @param string  $folder  Target folder
+     * @param string  $message The message source string or filename
+     * @param string  $headers Headers string if $message contains only the body
+     * @param boolean $is_file True if $message is a filename
+     *
+     * @return int|bool Appended message UID or True on success, False on error
+     */
+    abstract function save_message($folder, &$message, $headers = '', $is_file = false);
+
+
+    /**
+     * Move message(s) from one folder to another.
+     *
+     * @param mixed  $uids  Message UIDs as array or comma-separated string, or '*'
+     * @param string $to    Target folder
+     * @param string $from  Source folder
+     *
+     * @return boolean True on success, False on error
+     */
+    abstract function move_message($uids, $to, $from = null);
+
+
+    /**
+     * Copy message(s) from one mailbox to another.
+     *
+     * @param mixed  $uids  Message UIDs as array or comma-separated string, or '*'
+     * @param string $to    Target folder
+     * @param string $from  Source folder
+     *
+     * @return boolean True on success, False on error
+     */
+    abstract function copy_message($uids, $to, $from = null);
+
+
+    /**
+     * Mark message(s) as deleted and expunge.
+     *
+     * @param mixed  $uids    Message UIDs as array or comma-separated string, or '*'
+     * @param string $folder  Source folder
+     *
+     * @return boolean True on success, False on error
+     */
+    abstract function delete_message($uids, $folder = null);
+
+
+    /**
+     * Expunge message(s) and clear the cache.
+     *
+     * @param mixed   $uids        Message UIDs as array or comma-separated string, or '*'
+     * @param string  $folder      Folder name
+     * @param boolean $clear_cache False if cache should not be cleared
+     *
+     * @return boolean True on success, False on error
+     */
+    abstract function expunge_message($uids, $folder = null, $clear_cache = true);
+
+
+    /**
+     * Parse message UIDs input
+     *
+     * @param mixed  $uids  UIDs array or comma-separated list or '*' or '1:*'
+     *
+     * @return array Two elements array with UIDs converted to list and ALL flag
+     */
+    protected function parse_uids($uids)
+    {
+        if ($uids === '*' || $uids === '1:*') {
+            if (empty($this->search_set)) {
+                $uids = '1:*';
+                $all = true;
+            }
+            // get UIDs from current search set
+            else {
+                $uids = join(',', $this->search_set->get());
+            }
+        }
+        else {
+            if (is_array($uids)) {
+                $uids = join(',', $uids);
+            }
+
+            if (preg_match('/[^0-9,]/', $uids)) {
+                $uids = '';
+            }
+        }
+
+        return array($uids, (bool) $all);
+    }
+
+
+    /* --------------------------------
+     *        folder managment
+     * --------------------------------*/
+
+    /**
+     * Get a list of subscribed folders.
+     *
+     * @param   string  $root      Optional root folder
+     * @param   string  $name      Optional name pattern
+     * @param   string  $filter    Optional filter
+     * @param   string  $rights    Optional ACL requirements
+     * @param   bool    $skip_sort Enable to return unsorted list (for better performance)
+     *
+     * @return  array   List of folders
+     */
+    abstract function list_folders_subscribed($root = '', $name = '*', $filter = null, $rights = null, $skip_sort = false);
+
+
+    /**
+     * Get a list of all folders available on the server.
+     *
+     * @param string  $root      IMAP root dir
+     * @param string  $name      Optional name pattern
+     * @param mixed   $filter    Optional filter
+     * @param string  $rights    Optional ACL requirements
+     * @param bool    $skip_sort Enable to return unsorted list (for better performance)
+     *
+     * @return array Indexed array with folder names
+     */
+    abstract function list_folders($root = '', $name = '*', $filter = null, $rights = null, $skip_sort = false);
+
+
+    /**
+     * Subscribe to a specific folder(s)
+     *
+     * @param array $folders Folder name(s)
+     *
+     * @return boolean True on success
+     */
+    abstract function subscribe($folders);
+
+
+    /**
+     * Unsubscribe folder(s)
+     *
+     * @param array $folders Folder name(s)
+     *
+     * @return boolean True on success
+     */
+    abstract function unsubscribe($folders);
+
+
+    /**
+     * Create a new folder on the server.
+     *
+     * @param string  $folder    New folder name
+     * @param boolean $subscribe True if the newvfolder should be subscribed
+     *
+     * @return boolean True on success, False on error
+     */
+    abstract function create_folder($folder, $subscribe = false);
+
+
+    /**
+     * Set a new name to an existing folder
+     *
+     * @param string $folder   Folder to rename
+     * @param string $new_name New folder name
+     *
+     * @return boolean True on success, False on error
+     */
+    abstract function rename_folder($folder, $new_name);
+
+
+    /**
+     * Remove a folder from the server.
+     *
+     * @param string $folder Folder name
+     *
+     * @return boolean True on success, False on error
+     */
+    abstract function delete_folder($folder);
+
+
+    /**
+     * Send expunge command and clear the cache.
+     *
+     * @param string  $folder      Folder name
+     * @param boolean $clear_cache False if cache should not be cleared
+     *
+     * @return boolean True on success, False on error
+     */
+    public function expunge_folder($folder = null, $clear_cache = true)
+    {
+        return $this->expunge_message('*', $folder, $clear_cache);
+    }
+
+
+    /**
+     * Remove all messages in a folder..
+     *
+     * @param string  $folder  Folder name
+     *
+     * @return boolean True on success, False on error
+     */
+    public function clear_folder($folder = null)
+    {
+        return $this->delete_message('*', $folder);
+    }
+
+
+    /**
+     * Checks if folder exists and is subscribed
+     *
+     * @param string   $folder       Folder name
+     * @param boolean  $subscription Enable subscription checking
+     *
+     * @return boolean True if folder exists, False otherwise
+     */
+    abstract function folder_exists($folder, $subscription = false);
+
+
+    /**
+     * Get folder size (size of all messages in a folder)
+     *
+     * @param string $folder Folder name
+     *
+     * @return int Folder size in bytes, False on error
+     */
+    abstract function folder_size($folder);
+
+
+    /**
+     * Returns the namespace where the folder is in
+     *
+     * @param string $folder Folder name
+     *
+     * @return string One of 'personal', 'other' or 'shared'
+     */
+    abstract function folder_namespace($folder);
+
+
+    /**
+     * Gets folder attributes (from LIST response, e.g. \Noselect, \Noinferiors).
+     *
+     * @param string $folder  Folder name
+     * @param bool   $force   Set to True if attributes should be refreshed
+     *
+     * @return array Options list
+     */
+    abstract function folder_attributes($folder, $force = false);
+
+
+    /**
+     * Gets connection (and current folder) data: UIDVALIDITY, EXISTS, RECENT,
+     * PERMANENTFLAGS, UIDNEXT, UNSEEN
+     *
+     * @param string $folder Folder name
+     *
+     * @return array Data
+     */
+    abstract function folder_data($folder);
+
+
+    /**
+     * Returns extended information about the folder.
+     *
+     * @param string $folder Folder name
+     *
+     * @return array Data
+     */
+    abstract function folder_info($folder);
+
+
+    /**
+     * Returns current status of a folder
+     *
+     * @param string $folder Folder name
+     *
+     * @return int Folder status
+     */
+    abstract function folder_status($folder = null);
+
+
+    /**
+     * Synchronizes messages cache.
+     *
+     * @param string $folder Folder name
+     */
+    abstract function folder_sync($folder);
+
+
+    /**
+     * Modify folder name according to namespace.
+     * For output it removes prefix of the personal namespace if it's possible.
+     * For input it adds the prefix. Use it before creating a folder in root
+     * of the folders tree.
+     *
+     * @param string $folder  Folder name
+     * @param string $mode    Mode name (out/in)
+     *
+     * @return string Folder name
+     */
+    abstract function mod_folder($folder, $mode = 'out');
+
+
+    /**
+     * Create all folders specified as default
+     */
+    public function create_default_folders()
+    {
+        // create default folders if they do not exist
+        foreach ($this->default_folders as $folder) {
+            if (!$this->folder_exists($folder)) {
+                $this->create_folder($folder, true);
+            }
+            else if (!$this->folder_exists($folder, true)) {
+                $this->subscribe($folder);
+            }
+        }
+    }
+
+
+    /**
+     * Get mailbox quota information.
+     *
+     * @return mixed Quota info or False if not supported
+     */
+    abstract function get_quota();
+
+
+    /* -----------------------------------------
+     *   ACL and METADATA methods
+     * ----------------------------------------*/
+
+    /**
+     * Changes the ACL on the specified folder (SETACL)
+     *
+     * @param string $folder  Folder name
+     * @param string $user    User name
+     * @param string $acl     ACL string
+     *
+     * @return boolean True on success, False on failure
+     */
+    abstract function set_acl($folder, $user, $acl);
+
+
+    /**
+     * Removes any <identifier,rights> pair for the
+     * specified user from the ACL for the specified
+     * folder (DELETEACL).
+     *
+     * @param string $folder  Folder name
+     * @param string $user    User name
+     *
+     * @return boolean True on success, False on failure
+     */
+    abstract function delete_acl($folder, $user);
+
+
+    /**
+     * Returns the access control list for a folder (GETACL).
+     *
+     * @param string $folder Folder name
+     *
+     * @return array User-rights array on success, NULL on error
+     */
+    abstract function get_acl($folder);
+
+
+    /**
+     * Returns information about what rights can be granted to the
+     * user (identifier) in the ACL for the folder (LISTRIGHTS).
+     *
+     * @param string $folder  Folder name
+     * @param string $user    User name
+     *
+     * @return array List of user rights
+     */
+    abstract function list_rights($folder, $user);
+
+
+    /**
+     * Returns the set of rights that the current user has to a folder (MYRIGHTS).
+     *
+     * @param string $folder Folder name
+     *
+     * @return array MYRIGHTS response on success, NULL on error
+     */
+    abstract function my_rights($folder);
+
+
+    /**
+     * Sets metadata/annotations (SETMETADATA/SETANNOTATION)
+     *
+     * @param string $folder  Folder name (empty for server metadata)
+     * @param array  $entries Entry-value array (use NULL value as NIL)
+     *
+     * @return boolean True on success, False on failure
+     */
+    abstract function set_metadata($folder, $entries);
+
+
+    /**
+     * Unsets metadata/annotations (SETMETADATA/SETANNOTATION)
+     *
+     * @param string $folder  Folder name (empty for server metadata)
+     * @param array  $entries Entry names array
+     *
+     * @return boolean True on success, False on failure
+     */
+    abstract function delete_metadata($folder, $entries);
+
+
+    /**
+     * Returns folder metadata/annotations (GETMETADATA/GETANNOTATION).
+     *
+     * @param string $folder   Folder name (empty for server metadata)
+     * @param array  $entries  Entries
+     * @param array  $options  Command options (with MAXSIZE and DEPTH keys)
+     *
+     * @return array Metadata entry-value hash array on success, NULL on error
+     */
+    abstract function get_metadata($folder, $entries, $options = array());
+
+
+    /* -----------------------------------------
+     *   Cache related functions
+     * ----------------------------------------*/
+
+    /**
+     * Clears the cache.
+     *
+     * @param string  $key         Cache key name or pattern
+     * @param boolean $prefix_mode Enable it to clear all keys starting
+     *                             with prefix specified in $key
+     */
+    abstract function clear_cache($key = null, $prefix_mode = false);
+
+    /**
+     * Returns cached value
+     *
+     * @param string $key Cache key
+     *
+     * @return mixed Cached value
+     */
+    abstract function get_cache($key);
+
+    /**
+     * Delete outdated cache entries
+     */
+    abstract function expunge_cache();
+
+}  // end class rcube_storage
+
+
+/**
+ * Class representing a message part
+ *
+ * @package Mail
+ */
+class rcube_message_part
+{
+    var $mime_id = '';
+    var $ctype_primary = 'text';
+    var $ctype_secondary = 'plain';
+    var $mimetype = 'text/plain';
+    var $disposition = '';
+    var $filename = '';
+    var $encoding = '8bit';
+    var $charset = '';
+    var $size = 0;
+    var $headers = array();
+    var $d_parameters = array();
+    var $ctype_parameters = array();
+
+    function __clone()
+    {
+        if (isset($this->parts)) {
+            foreach ($this->parts as $idx => $part) {
+                if (is_object($part)) {
+                    $this->parts[$idx] = clone $part;
+                }
+            }
+        }
+    }
+}
+
+
+/**
+ * Class for sorting an array of rcube_mail_header objects in a predetermined order.
+ *
+ * @package Mail
+ * @author Eric Stadtherr
+ */
+class rcube_header_sorter
+{
+    private $uids = array();
+
+
+    /**
+     * Set the predetermined sort order.
+     *
+     * @param array $index  Numerically indexed array of IMAP UIDs
+     */
+    function set_index($index)
+    {
+        $index = array_flip($index);
+
+        $this->uids = $index;
+    }
+
+    /**
+     * Sort the array of header objects
+     *
+     * @param array $headers Array of rcube_mail_header objects indexed by UID
+     */
+    function sort_headers(&$headers)
+    {
+        uksort($headers, array($this, "compare_uids"));
+    }
+
+    /**
+     * Sort method called by uksort()
+     *
+     * @param int $a Array key (UID)
+     * @param int $b Array key (UID)
+     */
+    function compare_uids($a, $b)
+    {
+        // then find each sequence number in my ordered list
+        $posa = isset($this->uids[$a]) ? intval($this->uids[$a]) : -1;
+        $posb = isset($this->uids[$b]) ? intval($this->uids[$b]) : -1;
+
+        // return the relative position as the comparison value
+        return $posa - $posb;
+    }
+}
index b69e9cf50b8814afd6ebe3a5ec06777666957eaf..b3d29eb9767a744301bdca1c239fc9be98002fce 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2009, The Roundcube Dev Team                            |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Handle string replacements based on preg_replace_callback           |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: rcube_string_replacer.php 5481 2011-11-24 07:53:00Z alec $
+ $Id$
 
 */
 
old mode 100755 (executable)
new mode 100644 (file)
index 5a09fca..79b3124
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2006-2011, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Class to handle HTML page output using a skin template.             |
@@ -16,7 +19,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: rcube_template.php 5481 2011-11-24 07:53:00Z alec $
+ $Id$
 
  */
 
@@ -74,7 +77,9 @@ class rcube_template extends rcube_html_page
         $this->set_env('x_frame_options', $this->app->config->get('x_frame_options', 'sameorigin'));
 
         // load the correct skin (in case user-defined)
-        $this->set_skin($this->config['skin']);
+        $skin = $this->app->config->get('skin');
+        $this->set_skin($skin);
+        $this->set_env('skin', $skin);
 
         // add common javascripts
         $this->add_script('var '.JS_OBJECT_NAME.' = new rcube_webmail();', 'head_top');
@@ -94,6 +99,7 @@ class rcube_template extends rcube_html_page
             'username'        => array($this, 'current_username'),
             'message'         => array($this, 'message_container'),
             'charsetselector' => array($this, 'charset_selector'),
+            'aboutcontent'    => array($this, 'about_content'),
         ));
     }
 
@@ -152,7 +158,7 @@ class rcube_template extends rcube_html_page
             $valid = true;
         }
         else {
-            $skin_path = $this->config['skin_path'] ? $this->config['skin_path'] : 'skins/default';
+            $skin_path = $this->config['skin_path'] ? $this->config['skin_path'] : 'skins/'.rcube_config::DEFAULT_SKIN;
             $valid = !$skin;
         }
 
@@ -162,6 +168,14 @@ class rcube_template extends rcube_html_page
         return $valid;
     }
 
+    /**
+     * Getter for the current skin path property
+     */
+    public function get_skin_path()
+    {
+        return $this->config['skin_path'];
+    }
+
     /**
      * Check if a specific template exists
      *
@@ -434,7 +448,11 @@ class rcube_template extends rcube_html_page
         // trigger generic hook where plugins can put additional content to the page
         $hook = $this->app->plugins->exec_hook("render_page", array('template' => $realname, 'content' => $output));
 
-        $output = $this->parse_with_globals($hook['content']);
+        // save some memory
+        $output = $hook['content'];
+        unset($hook['content']);
+
+        $output = $this->parse_with_globals($output);
 
         // make sure all <form> tags have a valid request token
         $output = preg_replace_callback('/<form\s+([^>]+)>/Ui', array($this, 'alter_form_tag'), $output);
@@ -445,7 +463,7 @@ class rcube_template extends rcube_html_page
             if ($realname != 'error' && ($this->config['debug_level'] & 8)) {
                 $this->add_footer('<div id="console" style="position:absolute;top:5px;left:5px;width:405px;padding:2px;background:white;z-index:9000;display:none">
                     <a href="#toggle" onclick="con=$(\'#dbgconsole\');con[con.is(\':visible\')?\'hide\':\'show\']();return false">console</a>
-                    <textarea name="console" id="dbgconsole" rows="20" cols="40" wrap="off" style="display:none;width:400px;border:none;font-size:10px" spellcheck="false"></textarea></div>'
+                    <textarea name="console" id="dbgconsole" rows="20" cols="40" style="display:none;width:400px;border:none;font-size:10px" spellcheck="false"></textarea></div>'
                 );
                 $this->add_script(
                     "if (!window.console || !window.console.log) {\n".
@@ -520,6 +538,7 @@ class rcube_template extends rcube_html_page
     {
         $GLOBALS['__version'] = Q(RCMAIL_VERSION);
         $GLOBALS['__comm_path'] = Q($this->app->comm_path);
+        $GLOBALS['__skin_path'] = Q($this->config['skin_path']);
         return preg_replace_callback('/\$(__[a-z0-9_\-]+)/',
            array($this, 'globals_callback'), $input);
     }
@@ -656,7 +675,7 @@ class rcube_template extends rcube_html_page
      */
     private function parse_xml($input)
     {
-        return preg_replace_callback('/<roundcube:([-_a-z]+)\s+([^>]+)>/Ui', array($this, 'xml_command'), $input);
+        return preg_replace_callback('/<roundcube:([-_a-z]+)\s+((?:[^>]|\\\\>)+)(?<!\\\\)>/Ui', array($this, 'xml_command'), $input);
     }
 
 
@@ -692,7 +711,15 @@ class rcube_template extends rcube_html_page
                     $vars = $attrib + array('product' => $this->config['product_name']);
                     unset($vars['name'], $vars['command']);
                     $label = rcube_label($attrib + array('vars' => $vars));
-                    return !$attrib['noshow'] ? (get_boolean((string)$attrib['html']) ? $label : Q($label)) : '';
+                    $quoting = !empty($attrib['quoting']) ? strtolower($attrib['quoting']) : (get_boolean((string)$attrib['html']) ? 'no' : '');
+                    switch ($quoting) {
+                        case 'no':
+                        case 'raw': break;
+                        case 'javascript':
+                        case 'js': $label = JQ($label); break;
+                        default:   $label = Q($label); break;
+                    }
+                    return !$attrib['noshow'] ? $label : '';
                 }
                 break;
 
@@ -743,6 +770,9 @@ class rcube_template extends rcube_html_page
                 else if (function_exists($handler)) {
                     $content = call_user_func($handler, $attrib);
                 }
+                else if ($object == 'doctype') {
+                    $content = html::doctype($attrib['value']);
+                }
                 else if ($object == 'logo') {
                     $attrib += array('alt' => $this->xml_command(array('', 'object', 'name="productname"')));
                     if ($this->config['skin_logo'])
@@ -759,6 +789,13 @@ class rcube_template extends rcube_html_page
                         if (preg_match('/Revision:\s(\d+)/', @shell_exec('svn info'), $regs))
                           $ver .= ' [SVN r'.$regs[1].']';
                     }
+                    else if (is_file(INSTALL_PATH . '.git/index')) {
+                        if (preg_match('/Date:\s+([^\n]+)/', @shell_exec('git log -1'), $regs)) {
+                            if ($date = date('Ymd.Hi', strtotime($regs[1]))) {
+                                $ver .= ' [GIT '.$date.']';
+                            }
+                        }
+                    }
                     $content = Q($ver);
                 }
                 else if ($object == 'steptitle') {
@@ -796,8 +833,8 @@ class rcube_template extends rcube_html_page
                         break;
                     case 'config':
                         $value = $this->config[$name];
-                        if (is_array($value) && $value[$_SESSION['imap_host']]) {
-                            $value = $value[$_SESSION['imap_host']];
+                        if (is_array($value) && $value[$_SESSION['storage_host']]) {
+                            $value = $value[$_SESSION['storage_host']];
                         }
                         break;
                     case 'request':
@@ -916,7 +953,7 @@ class rcube_template extends rcube_html_page
             // make valid href to specific buttons
             if (in_array($attrib['command'], rcmail::$main_tasks)) {
                 $attrib['href'] = rcmail_url(null, null, $attrib['command']);
-                $attrib['onclick'] = sprintf("%s.switch_task('%s');return false", JS_OBJECT_NAME, $attrib['command']);
+                $attrib['onclick'] = sprintf("%s.command('switch-task','%s');return false", JS_OBJECT_NAME, $attrib['command']);
             }
             else if ($attrib['task'] && in_array($attrib['task'], rcmail::$main_tasks)) {
                 $attrib['href'] = rcmail_url($attrib['command'], null, $attrib['task']);
@@ -966,6 +1003,8 @@ class rcube_template extends rcube_html_page
         else if ($attrib['type']=='link') {
             $btn_content = isset($attrib['content']) ? $attrib['content'] : ($attrib['label'] ? $attrib['label'] : $attrib['command']);
             $link_attrib = array('href', 'onclick', 'title', 'id', 'class', 'style', 'tabindex', 'target');
+            if ($attrib['innerclass'])
+                $btn_content = html::span($attrib['innerclass'], $btn_content);
         }
         else if ($attrib['type']=='input') {
             $attrib['type'] = 'button';
@@ -973,14 +1012,11 @@ class rcube_template extends rcube_html_page
             if ($attrib['label']) {
                 $attrib['value'] = $attrib['label'];
             }
+            if ($attrib['command']) {
+              $attrib['disabled'] = 'disabled';
+            }
 
-            $attrib_str = html::attrib_string(
-                $attrib,
-                array(
-                    'type', 'value', 'onclick', 'id', 'class', 'style', 'tabindex'
-                )
-            );
-            $out = sprintf('<input%s disabled="disabled" />', $attrib_str);
+            $out = html::tag('input', $attrib, null, array('type', 'value', 'onclick', 'id', 'class', 'style', 'tabindex', 'disabled'));
         }
 
         // generate html code for button
@@ -1101,6 +1137,9 @@ class rcube_template extends rcube_html_page
         if (empty($url) && !preg_match('/_(task|action)=logout/', $_SERVER['QUERY_STRING']))
             $url = $_SERVER['QUERY_STRING'];
 
+        // Disable autocapitalization on iPad/iPhone (#1488609)
+        $attrib['autocapitalize'] = 'off';
+
         // set atocomplete attribute
         $user_attrib = $autocomplete > 0 ? array() : array('autocomplete' => 'off');
         $host_attrib = $autocomplete > 0 ? array() : array('autocomplete' => 'off');
@@ -1326,6 +1365,30 @@ class rcube_template extends rcube_html_page
         return $select->show($set);
     }
 
+    /**
+     * Include content from config/about.<LANG>.html if available
+     */
+    private function about_content($attrib)
+    {
+        $content = '';
+        $filenames = array(
+            'about.' . $_SESSION['language'] . '.html',
+            'about.' . substr($_SESSION['language'], 0, 2) . '.html',
+            'about.html',
+        );
+        foreach ($filenames as $file) {
+            $fn = RCMAIL_CONFIG_DIR . '/' . $file;
+            if (is_readable($fn)) {
+                $content = file_get_contents($fn);
+                $content = $this->parse_conditions($content);
+                $content = $this->parse_xml($content);
+                break;
+            }
+        }
+
+        return $content;
+    }
+
 }  // end class rcube_template
 
 
index cc006c0c13d1bea47e4053d488cd45835272328e..d1df643910dac60647ce60b7ac62947d0fee982e 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2010, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   This class represents a system user linked and provides access      |
@@ -16,7 +19,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: rcube_user.php 5183 2011-09-06 17:18:12Z alec $
+ $Id$
 
 */
 
index dba020af7d0727b1c35886d43cf0d34d953ab732..d9ef534db9a9e91553793f492c6bd715c06d7ff9 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2008-2011, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Logical representation of a vcard address record                    |
@@ -14,7 +17,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: rcube_vcard.php 5160 2011-09-05 07:40:18Z thomasb $
+ $Id$
 
 */
 
@@ -50,7 +53,7 @@ class rcube_vcard
     'spouse'      => 'X-SPOUSE',
     'edit'        => 'X-AB-EDIT',
   );
-  private $typemap = array('iPhone' => 'mobile', 'CELL' => 'mobile', 'WORK,FAX' => 'workfax');
+  private $typemap = array('IPHONE' => 'mobile', 'CELL' => 'mobile', 'WORK,FAX' => 'workfax');
   private $phonetypemap = array('HOME1' => 'HOME', 'BUSINESS1' => 'WORK', 'BUSINESS2' => 'WORK2', 'BUSINESSFAX' => 'WORK,FAX');
   private $addresstypemap = array('BUSINESS' => 'WORK');
   private $immap = array('X-JABBER' => 'jabber', 'X-ICQ' => 'icq', 'X-MSN' => 'msn', 'X-AIM' => 'aim', 'X-YAHOO' => 'yahoo', 'X-SKYPE' => 'skype', 'X-SKYPE-USERNAME' => 'skype');
@@ -159,7 +162,18 @@ class rcube_vcard
 
           if (!empty($raw['type'])) {
             $combined = join(',', self::array_filter((array)$raw['type'], 'internet,pref', true));
-            $subtype = $typemap[$combined] ? $typemap[$combined] : ($typemap[$raw['type'][++$k]] ? $typemap[$raw['type'][$k]] : strtolower($raw['type'][$k]));
+            $combined = strtoupper($combined);
+
+            if ($typemap[$combined]) {
+                $subtype = $typemap[$combined];
+            }
+            else if ($typemap[$raw['type'][++$k]]) {
+                $subtype = $typemap[$raw['type'][$k]];
+            }
+            else {
+                $subtype = strtolower($raw['type'][$k]);
+            }
+
             while ($k < count($raw['type']) && ($subtype == 'internet' || $subtype == 'pref'))
               $subtype = $typemap[$raw['type'][++$k]] ? $typemap[$raw['type'][$k]] : strtolower($raw['type'][$k]);
           }
@@ -167,8 +181,11 @@ class rcube_vcard
           // read vcard 2.1 subtype
           if (!$subtype) {
             foreach ($raw as $k => $v) {
-              if (!is_numeric($k) && $v === true && !in_array(strtolower($k), array('pref','internet','voice','base64'))) {
-                $subtype = $typemap[$k] ? $typemap[$k] : strtolower($k);
+              if (!is_numeric($k) && $v === true && ($k = strtolower($k))
+                && !in_array($k, array('pref','internet','voice','base64'))
+              ) {
+                $k_uc    = strtoupper($k);
+                $subtype = $typemap[$k_uc] ? $typemap[$k_uc] : $k;
                 break;
               }
             }
@@ -292,11 +309,10 @@ class rcube_vcard
       case 'photo':
         if (strpos($value, 'http:') === 0) {
             // TODO: fetch file from URL and save it locally?
-            $this->raw['PHOTO'][0] = array(0 => $value, 'URL' => true);
+            $this->raw['PHOTO'][0] = array(0 => $value, 'url' => true);
         }
         else {
-            $encoded = !preg_match('![^a-z0-9/=+-]!i', $value);
-            $this->raw['PHOTO'][0] = array(0 => $encoded ? $value : base64_encode($value), 'BASE64' => true);
+            $this->raw['PHOTO'][0] = array(0 => $value, 'base64' => (bool) preg_match('![^a-z0-9/=+-]!i', $value));
         }
         break;
 
@@ -313,8 +329,9 @@ class rcube_vcard
         break;
 
       case 'birthday':
-        if ($val = rcube_strtotime($value))
-          $this->raw['BDAY'][] = array(0 => date('Y-m-d', $val), 'value' => array('date'));
+      case 'anniversary':
+        if (($val = rcube_strtotime($value)) && ($fn = self::$fieldmap[$field]))
+          $this->raw[$fn][] = array(0 => date('Y-m-d', $val), 'value' => array('date'));
         break;
 
       case 'address':
@@ -335,7 +352,7 @@ class rcube_vcard
           $index = count($this->raw[$tag]);
           $this->raw[$tag][$index] = (array)$value;
           if ($type)
-            $this->raw[$tag][$index]['type'] = explode(',', ($typemap[$type] ? $typemap[$type] : $type));
+            $this->raw[$tag][$index]['type'] = explode(',', ($typemap[$type_uc] ? $typemap[$type_uc] : $type));
         }
         break;
     }
@@ -549,26 +566,46 @@ class rcube_vcard
       if (preg_match_all('/([^\\;]+);?/', $line[1], $regs2)) {
         $entry = array();
         $field = strtoupper($regs2[1][0]);
+        $enc   = null;
 
         foreach($regs2[1] as $attrid => $attr) {
           if ((list($key, $value) = explode('=', $attr)) && $value) {
             $value = trim($value);
             if ($key == 'ENCODING') {
+              $value = strtoupper($value);
               // add next line(s) to value string if QP line end detected
-              while ($value == 'QUOTED-PRINTABLE' && preg_match('/=$/', $lines[$i]))
+              if ($value == 'QUOTED-PRINTABLE') {
+                while (preg_match('/=$/', $lines[$i]))
                   $line[2] .= "\n" . $lines[++$i];
-
-              $line[2] = self::decode_value($line[2], $value);
+              }
+              $enc = $value;
+            }
+            else {
+              $lc_key = strtolower($key);
+              $entry[$lc_key] = array_merge((array)$entry[$lc_key], (array)self::vcard_unquote($value, ','));
             }
-            else
-              $entry[strtolower($key)] = array_merge((array)$entry[strtolower($key)], (array)self::vcard_unquote($value, ','));
           }
           else if ($attrid > 0) {
-            $entry[$key] = true;  // true means attr without =value
+            $entry[strtolower($key)] = true;  // true means attr without =value
           }
         }
 
-        $entry = array_merge($entry, (array)self::vcard_unquote($line[2]));
+        // decode value
+        if ($enc || !empty($entry['base64'])) {
+          // save encoding type (#1488432)
+          if ($enc == 'B') {
+            $entry['encoding'] = 'B';
+            // should we use vCard 3.0 instead?
+            // $entry['base64'] = true;
+          }
+          $line[2] = self::decode_value($line[2], $enc ? $enc : 'base64');
+        }
+
+        if ($enc != 'B' && empty($entry['base64'])) {
+          $line[2] = self::vcard_unquote($line[2]);
+        }
+
+        $entry = array_merge($entry, (array) $line[2]);
         $data[$field][] = $entry;
       }
     }
@@ -593,6 +630,7 @@ class rcube_vcard
         return quoted_printable_decode($value);
 
       case 'base64':
+      case 'b':
         self::$values_decoded = true;
         return base64_decode($value);
 
@@ -624,13 +662,20 @@ class rcube_vcard
         if (is_array($entry)) {
           $value = array();
           foreach($entry as $attrname => $attrvalues) {
-            if (is_int($attrname))
+            if (is_int($attrname)) {
+              if (!empty($entry['base64']) || $entry['encoding'] == 'B') {
+                $attrvalues = base64_encode($attrvalues);
+              }
               $value[] = $attrvalues;
-            elseif ($attrvalues === true)
-              $attr .= ";$attrname";    // true means just tag, not tag=value, as in PHOTO;BASE64:...
+            }
+            else if (is_bool($attrvalues)) {
+              if ($attrvalues) {
+                $attr .= strtoupper(";$attrname");    // true means just tag, not tag=value, as in PHOTO;BASE64:...
+              }
+            }
             else {
               foreach((array)$attrvalues as $attrvalue)
-                $attr .= ";$attrname=" . self::vcard_quote($attrvalue, ',');
+                $attr .= strtoupper(";$attrname=") . self::vcard_quote($attrvalue, ',');
             }
           }
         }
index 7e65afb281fb33ed2a1035e0f7963bfdf60102cb..d060afc31f38c3359bc17ed0e119814d6fd56dd1 100644 (file)
-function rcube_webmail(){this.env={recipients_separator:",",recipients_delimiter:", "};this.labels={};this.buttons={};this.buttons_sel={};this.gui_objects={};this.gui_containers={};this.commands={};this.command_handlers={};this.onloads=[];this.messages={};this.ref="rcmail";var i=this;this.dblclick_time=500;this.message_time=4E3;this.identifier_expr=RegExp("[^0-9a-z-_]","gi");this.env.keep_alive=60;this.env.request_timeout=180;this.env.draft_autosave=0;this.env.comm_path="./";this.env.blankpage="program/blank.gif";
-$.ajaxSetup({cache:!1,error:function(a,b,d){i.http_error(a,b,d)},beforeSend:function(a){a.setRequestHeader("X-Roundcube-Request",i.env.request_token)}});this.set_env=function(a,b){if(null!=a&&"object"===typeof a&&!b)for(var d in a)this.env[d]=a[d];else this.env[a]=b};this.add_label=function(a,b){"string"==typeof a?this.labels[a]=b:"object"==typeof a&&$.extend(this.labels,a)};this.register_button=function(a,b,d,e,f,h){this.buttons[a]||(this.buttons[a]=[]);b={id:b,type:d};e&&(b.act=e);f&&(b.sel=f);
-h&&(b.over=h);this.buttons[a].push(b);this.loaded&&s(a,b)};this.gui_object=function(a,b){this.gui_objects[a]=this.loaded?rcube_find_object(b):b};this.gui_container=function(a,b){this.gui_containers[a]=b};this.add_element=function(a,b){this.gui_containers[b]&&this.gui_containers[b].jquery&&this.gui_containers[b].append(a)};this.register_command=function(a,b,d){this.command_handlers[a]=b;d&&this.enable_command(a,!0)};this.add_onload=function(a){this.onloads.push(a)};this.init=function(){var a,b=this;
-this.task=this.env.task;if(!bw.dom||!bw.xmlhttp_test())this.goto_url("error","_code=0x199");else{for(a in this.gui_containers)this.gui_containers[a]=$("#"+this.gui_containers[a]);for(a in this.gui_objects)this.gui_objects[a]=rcube_find_object(this.gui_objects[a]);if(this.env.x_frame_options)try{if("deny"==this.env.x_frame_options&&top.location.href!=self.location.href)top.location.href=self.location.href;else if(top.location.hostname!=self.location.hostname)throw 1;}catch(d){$("form").each(function(){i.lock_form(this,
-!0)});this.display_message("Blocked: possible clickjacking attack!","error");return}this.init_buttons();this.is_framed()&&(parent.rcmail.set_busy(!1,null,parent.rcmail.env.frame_lock),parent.rcmail.env.frame_lock=null);this.enable_command("logout","mail","addressbook","settings","save-pref","compose","undo",!0);this.env.permaurl&&this.enable_command("permaurl",!0);switch(this.task){case "mail":this.enable_command("list","checkmail","add-contact","search","reset-search","collapse-folder",!0);this.gui_objects.messagelist&&
-(this.message_list=new rcube_list_widget(this.gui_objects.messagelist,{multiselect:!0,multiexpand:!0,draggable:!0,keyboard:!0,column_movable:this.env.col_movable,dblclick_time:this.dblclick_time}),this.message_list.row_init=function(a){b.init_message_row(a)},this.message_list.addEventListener("dblclick",function(a){b.msglist_dbl_click(a)}),this.message_list.addEventListener("click",function(a){b.msglist_click(a)}),this.message_list.addEventListener("keypress",function(a){b.msglist_keypress(a)}),this.message_list.addEventListener("select",
-function(a){b.msglist_select(a)}),this.message_list.addEventListener("dragstart",function(a){b.drag_start(a)}),this.message_list.addEventListener("dragmove",function(a){b.drag_move(a)}),this.message_list.addEventListener("dragend",function(a){b.drag_end(a)}),this.message_list.addEventListener("expandcollapse",function(a){b.msglist_expand(a)}),this.message_list.addEventListener("column_replace",function(a){b.msglist_set_coltypes(a)}),document.onmouseup=function(a){return b.doc_mouse_up(a)},this.gui_objects.messagelist.parentNode.onmousedown=
-function(a){return b.click_on_list(a)},this.message_list.init(),this.enable_command("toggle_status","toggle_flag","menu-open","menu-save",!0),this.command("list"));this.gui_objects.qsearchbox&&(null!=this.env.search_text&&(this.gui_objects.qsearchbox.value=this.env.search_text),$(this.gui_objects.qsearchbox).focusin(function(){rcmail.message_list.blur()}));!this.env.flag_for_deletion&&this.env.trash_mailbox&&this.env.mailbox!=this.env.trash_mailbox&&this.set_alttext("delete","movemessagetotrash");
-this.env.message_commands="show,reply,reply-all,reply-list,forward,moveto,copy,delete,open,mark,edit,viewsource,download,print,load-attachment,load-headers,forward-attachment".split(",");if("show"==this.env.action||"preview"==this.env.action){if(this.enable_command(this.env.message_commands,this.env.uid),this.enable_command("reply-list",this.env.list_post),"show"==this.env.action&&this.http_request("pagenav","_uid="+this.env.uid+"&_mbox="+urlencode(this.env.mailbox)+(this.env.search_request?"&_search="+
-this.env.search_request:""),this.display_message("","loading")),this.env.blockedobjects&&(this.gui_objects.remoteobjectsmsg&&(this.gui_objects.remoteobjectsmsg.style.display="block"),this.enable_command("load-images","always-load",!0)),"preview"==this.env.action&&this.is_framed())this.enable_command("compose","add-contact",!1),parent.rcmail.show_contentframe(!0)}else"compose"==this.env.action?(this.env.compose_commands=["send-attachment","remove-attachment","send","cancel","toggle-editor"],this.env.drafts_mailbox&&
-this.env.compose_commands.push("savedraft"),this.enable_command(this.env.compose_commands,"identities",!0),this.env.spellcheck&&(this.env.spellcheck.spelling_state_observer=function(a){i.set_spellcheck_state(a)},this.env.compose_commands.push("spellcheck"),this.set_spellcheck_state("ready"),"1"==$("input[name='_is_html']").val()&&this.display_spellcheck_controls(!1)),document.onmouseup=function(a){return b.doc_mouse_up(a)},this.init_messageform()):"print"==this.env.action&&this.env.uid&&(bw.safari?
-window.setTimeout("window.print()",10):window.print());this.gui_objects.mailboxlist&&(this.env.unread_counts={},this.gui_objects.folderlist=this.gui_objects.mailboxlist,this.http_request("getunread",""));this.env.mdn_request&&this.env.uid&&(a="_uid="+this.env.uid+"&_mbox="+urlencode(this.env.mailbox),confirm(this.get_label("mdnrequest"))?this.http_post("sendmdn",a):this.http_post("mark",a+"&_flag=mdnsent"));break;case "addressbook":this.gui_objects.folderlist&&(this.env.contactfolders=$.extend($.extend({},
-this.env.address_sources),this.env.contactgroups));this.enable_command("add","import",this.env.writable_source);this.enable_command("list","listgroup","listsearch","advanced-search",!0);this.gui_objects.contactslist&&(this.contact_list=new rcube_list_widget(this.gui_objects.contactslist,{multiselect:!0,draggable:this.gui_objects.folderlist?!0:!1,keyboard:!0}),this.contact_list.row_init=function(a){b.triggerEvent("insertrow",{cid:a.uid,row:a})},this.contact_list.addEventListener("keypress",function(a){b.contactlist_keypress(a)}),
-this.contact_list.addEventListener("select",function(a){b.contactlist_select(a)}),this.contact_list.addEventListener("dragstart",function(a){b.drag_start(a)}),this.contact_list.addEventListener("dragmove",function(a){b.drag_move(a)}),this.contact_list.addEventListener("dragend",function(a){b.drag_end(a)}),this.contact_list.init(),this.env.cid&&this.contact_list.highlight_row(this.env.cid),this.gui_objects.contactslist.parentNode.onmousedown=function(a){return b.click_on_list(a)},document.onmouseup=
-function(a){return b.doc_mouse_up(a)},this.gui_objects.qsearchbox&&$(this.gui_objects.qsearchbox).focusin(function(){rcmail.contact_list.blur()}),this.update_group_commands(),this.command("list"));this.set_page_buttons();this.env.cid&&(this.enable_command("show","edit",!0),this.gui_objects.editform&&$("input.groupmember").change(function(){i.group_member_change(this.checked?"add":"del",i.env.cid,i.env.source,this.value)}));this.gui_objects.editform&&(this.enable_command("save",!0),("add"==this.env.action||
-"edit"==this.env.action)&&this.init_contact_form());this.gui_objects.qsearchbox&&this.enable_command("search","reset-search","moveto",!0);break;case "settings":this.enable_command("preferences","identities","save","folders",!0);"identities"==this.env.action?this.enable_command("add",2>this.env.identities_level):"edit-identity"==this.env.action||"add-identity"==this.env.action?(this.enable_command("add",2>this.env.identities_level),this.enable_command("save","delete","edit","toggle-editor",!0)):"folders"==
-this.env.action?this.enable_command("subscribe","unsubscribe","create-folder","rename-folder",!0):"edit-folder"==this.env.action&&this.gui_objects.editform&&(this.enable_command("save","folder-size",!0),parent.rcmail.env.messagecount=this.env.messagecount,parent.rcmail.enable_command("purge",this.env.messagecount),$("input[type='text']").first().select());this.gui_objects.identitieslist?(this.identity_list=new rcube_list_widget(this.gui_objects.identitieslist,{multiselect:!1,draggable:!1,keyboard:!1}),
-this.identity_list.addEventListener("select",function(a){b.identity_select(a)}),this.identity_list.init(),this.identity_list.focus(),this.env.iid&&this.identity_list.highlight_row(this.env.iid)):this.gui_objects.sectionslist?(this.sections_list=new rcube_list_widget(this.gui_objects.sectionslist,{multiselect:!1,draggable:!1,keyboard:!1}),this.sections_list.addEventListener("select",function(a){b.section_select(a)}),this.sections_list.init(),this.sections_list.focus()):this.gui_objects.subscriptionlist&&
-this.init_subscription_list();break;case "login":a=$("#rcmloginuser");a.bind("keyup",function(a){return rcmail.login_user_keyup(a)});""==a.val()?a.focus():$("#rcmloginpwd").focus();var e=new Date;a=e.getTimezoneOffset()/-60;e=e.getStdTimezoneOffset()/-60;$("#rcmlogintz").val(e);$("#rcmlogindst").val(a>e?1:0);$("form").submit(function(){$("input[type=submit]",this).prop("disabled",true);rcmail.display_message("","loading")});this.enable_command("login",!0)}bw.ie&&$("input[type=file]").keydown(function(a){a.keyCode==
-"13"&&a.preventDefault()});this.loaded=!0;this.pending_message&&this.display_message(this.pending_message[0],this.pending_message[1],this.pending_message[2]);this.gui_objects.folderlist&&(this.gui_containers.foldertray=$(this.gui_objects.folderlist));this.triggerEvent("init",{task:this.task,action:this.env.action});for(var f in this.onloads)if("string"===typeof this.onloads[f])eval(this.onloads[f]);else if("function"===typeof this.onloads[f])this.onloads[f]();this.start_keepalive()}};this.log=function(a){window.console&&
-console.log&&console.log(a)};this.command=function(a,b,d){var e,f,h,g;d&&d.blur&&d.blur();if(this.busy)return!1;if(!this.commands[a])return this.is_framed()&&parent.rcmail.command(a,b),!1;if("mail"==this.task&&"compose"==this.env.action&&0>$.inArray(a,this.env.compose_commands)&&this.cmp_hash!=this.compose_field_hash()&&!confirm(this.get_label("notsentwarning")))return!1;if("function"===typeof this.command_handlers[a])return e=this.command_handlers[a](b,d),void 0!==e?e:d?!1:!0;if("string"===typeof this.command_handlers[a])return e=
-window[this.command_handlers[a]](b,d),void 0!==e?e:d?!1:!0;this.triggerEvent("actionbefore",{props:b,action:a});e=this.triggerEvent("before"+a,b);if(void 0!==e){if(!1===e)return!1;b=e}e=void 0;switch(a){case "login":this.gui_objects.loginform&&this.gui_objects.loginform.submit();break;case "mail":case "addressbook":case "settings":case "logout":this.switch_task(a);break;case "permaurl":if(d&&d.href&&d.target)return!0;this.env.permaurl&&(parent.location.href=this.env.permaurl);break;case "menu-open":case "menu-save":return this.triggerEvent(a,
-{props:b}),!1;case "open":if(f=this.get_single_uid())return d.href="?_task="+this.env.task+"&_action=show&_mbox="+urlencode(this.env.mailbox)+"&_uid="+f,!0;break;case "list":this.reset_qsearch();"mail"==this.task?(this.list_mailbox(b),this.env.trash_mailbox&&!this.env.flag_for_deletion&&this.set_alttext("delete",this.env.mailbox!=this.env.trash_mailbox?"movemessagetotrash":"deletemessage")):"addressbook"==this.task&&this.list_contacts(b);break;case "load-headers":this.load_headers(d);break;case "sort":f=
-b;g=this.env.sort_col==f?"ASC"==this.env.sort_order?"DESC":"ASC":"ASC";this.set_list_sorting(f,g);this.list_mailbox("","",f+"_"+g);break;case "nextpage":this.list_page("next");break;case "lastpage":this.list_page("last");break;case "previouspage":this.list_page("prev");break;case "firstpage":this.list_page("first");break;case "expunge":this.env.messagecount&&this.expunge_mailbox(this.env.mailbox);break;case "purge":case "empty-mailbox":this.env.messagecount&&this.purge_mailbox(this.env.mailbox);break;
-case "show":if("mail"==this.task){if((f=this.get_single_uid())&&(!this.env.uid||f!=this.env.uid))this.env.mailbox==this.env.drafts_mailbox?this.goto_url("compose","_draft_uid="+f+"&_mbox="+urlencode(this.env.mailbox),!0):this.show_message(f)}else"addressbook"==this.task&&(h=b?b:this.get_single_cid())&&!("show"==this.env.action&&h==this.env.cid)&&this.load_contact(h,"show");break;case "add":"addressbook"==this.task?this.load_contact(0,"add"):"settings"==this.task&&(this.identity_list.clear_selection(),
-this.load_identity(0,"add-identity"));break;case "edit":if("addressbook"==this.task&&(h=this.get_single_cid()))this.load_contact(h,"edit");else if("settings"==this.task&&b)this.load_identity(b,"edit-identity");else if("mail"==this.task&&(h=this.get_single_uid()))g=this.env.mailbox==this.env.drafts_mailbox?"_draft_uid=":"_uid=",this.goto_url("compose",g+h+"&_mbox="+urlencode(this.env.mailbox),!0);break;case "save":var k;if(g=this.gui_objects.editform){if("search"!=this.env.action)if((k=$("input[name='_pagesize']",
-g))&&k.length&&isNaN(parseInt(k.val()))){alert(this.get_label("nopagesizewarning"));k.focus();break}else{if("reload"==b)g.action+="?_reload=1";else if("settings"==this.task&&0==this.env.identities_level%2&&(k=$("input[name='_email']",g))&&k.length&&!rcube_check_email(k.val())){alert(this.get_label("noemailwarning"));k.focus();break}$("input.placeholder").each(function(){this.value==this._placeholder&&(this.value="")})}parent.rcmail&&parent.rcmail.env.source&&(g.action=this.add_url(g.action,"_orig_source",
-parent.rcmail.env.source));g.submit()}break;case "delete":"mail"==this.task?this.delete_messages():"addressbook"==this.task?this.delete_contacts():"settings"==this.task&&this.delete_identity();break;case "move":case "moveto":"mail"==this.task?this.move_messages(b):"addressbook"==this.task&&this.drag_active&&this.copy_contact(null,b);break;case "copy":"mail"==this.task&&this.copy_messages(b);break;case "mark":b&&this.mark_message(b);break;case "toggle_status":if(b&&!b._row)break;g="read";b._row.uid&&
-(f=b._row.uid,this.message_list.rows[f].deleted?g="undelete":this.message_list.rows[f].unread||(g="unread"));this.mark_message(g,f);break;case "toggle_flag":if(b&&!b._row)break;g="flagged";b._row.uid&&(f=b._row.uid,this.message_list.rows[f].flagged&&(g="unflagged"));this.mark_message(g,f);break;case "always-load":if(this.env.uid&&this.env.sender){this.add_contact(urlencode(this.env.sender));window.setTimeout(function(){i.command("load-images")},300);break}case "load-images":this.env.uid&&this.show_message(this.env.uid,
-!0,"preview"==this.env.action);break;case "load-attachment":g="_mbox="+urlencode(this.env.mailbox)+"&_uid="+this.env.uid+"&_part="+b.part;if(this.env.uid&&b.mimetype&&this.env.mimetypes&&0<=$.inArray(b.mimetype,this.env.mimetypes)&&("text/html"==b.mimetype&&(g+="&_safe=1"),this.attachment_win=window.open(this.env.comm_path+"&_action=get&"+g+"&_frame=1","rcubemailattachment"))){window.setTimeout(function(){i.attachment_win.focus()},10);break}this.goto_url("get",g+"&_download=1",!1);break;case "select-all":this.select_all_mode=
-b?!1:!0;this.dummy_select=!0;"invert"==b?this.message_list.invert_selection():this.message_list.select_all("page"==b?"":b);this.dummy_select=null;break;case "select-none":this.select_all_mode=!1;this.message_list.clear_selection();break;case "expand-all":this.env.autoexpand_threads=1;this.message_list.expand_all();break;case "expand-unread":this.env.autoexpand_threads=2;this.message_list.collapse_all();this.expand_unread();break;case "collapse-all":this.env.autoexpand_threads=0;this.message_list.collapse_all();
-break;case "nextmessage":this.env.next_uid&&this.show_message(this.env.next_uid,!1,"preview"==this.env.action);break;case "lastmessage":this.env.last_uid&&this.show_message(this.env.last_uid);break;case "previousmessage":this.env.prev_uid&&this.show_message(this.env.prev_uid,!1,"preview"==this.env.action);break;case "firstmessage":this.env.first_uid&&this.show_message(this.env.first_uid);break;case "checkmail":this.check_for_recent(!0);break;case "compose":g=this.url("mail/compose");if("mail"==this.task)g+=
-"&_mbox="+urlencode(this.env.mailbox),b&&(g+="&_to="+urlencode(b));else if("addressbook"==this.task){if(b&&0<b.indexOf("@")){g=this.get_task_url("mail",g);this.redirect(g+"&_to="+urlencode(b));break}h=[];if(b)h.push(b);else if(this.contact_list){k=this.contact_list.get_selection();g=0;for(f=k.length;g<f;g++)h.push(k[g])}h.length?this.http_post("mailto",{_cid:h.join(","),_source:this.env.source},!0):this.env.group&&this.http_post("mailto",{_gid:this.env.group,_source:this.env.source},!0);break}else b&&
-(g+="&_to="+urlencode(b));this.redirect(g);break;case "spellcheck":window.tinyMCE&&tinyMCE.get(this.env.composebody)?tinyMCE.execCommand("mceSpellCheck",!0):this.env.spellcheck&&this.env.spellcheck.spellCheck&&this.spellcheck_ready&&(this.env.spellcheck.spellCheck(),this.set_spellcheck_state("checking"));break;case "savedraft":self.clearTimeout(this.save_timer);if(!this.gui_objects.messageform)break;if(!this.env.drafts_mailbox||this.cmp_hash==this.compose_field_hash())break;g=this.gui_objects.messageform;
-f=this.set_busy(!0,"savingmessage");g.target="savetarget";g._draft.value="1";g.action=this.add_url(g.action,"_unlock",f);g.submit();break;case "send":if(!this.gui_objects.messageform)break;if(!b.nocheck&&!this.check_compose_input(a))break;self.clearTimeout(this.save_timer);h=this.spellcheck_lang();g=this.gui_objects.messageform;f=this.set_busy(!0,"sendingmessage");g.target="savetarget";g._draft.value="";g.action=this.add_url(g.action,"_unlock",f);g.action=this.add_url(g.action,"_lang",h);g.submit();
-clearTimeout(this.request_timer);break;case "send-attachment":self.clearTimeout(this.save_timer);this.upload_file(b);break;case "insert-sig":this.change_identity($("[name='_from']")[0],!0);break;case "reply-all":case "reply-list":case "reply":if(f=this.get_single_uid())g="_reply_uid="+f+"&_mbox="+urlencode(this.env.mailbox),"reply-all"==a?g+="&_all="+(!b&&this.commands["reply-list"]?"list":"all"):"reply-list"==a&&(g+="&_all=list"),this.goto_url("compose",g,!0);break;case "forward-attachment":case "forward":if(f=
-this.get_single_uid()){g="_forward_uid="+f+"&_mbox="+urlencode(this.env.mailbox);if("forward-attachment"==a||!b&&this.env.forward_attachment)g+="&_attachment=1";this.goto_url("compose",g,!0)}break;case "print":if(f=this.get_single_uid())i.printwin=window.open(this.env.comm_path+"&_action=print&_uid="+f+"&_mbox="+urlencode(this.env.mailbox)+(this.env.safemode?"&_safe=1":"")),this.printwin&&(window.setTimeout(function(){i.printwin.focus()},20),"show"!=this.env.action&&this.mark_message("read",f));break;
-case "viewsource":if(f=this.get_single_uid())i.sourcewin=window.open(this.env.comm_path+"&_action=viewsource&_uid="+f+"&_mbox="+urlencode(this.env.mailbox)),this.sourcewin&&window.setTimeout(function(){i.sourcewin.focus()},20);break;case "download":(f=this.get_single_uid())&&this.goto_url("viewsource","&_uid="+f+"&_mbox="+urlencode(this.env.mailbox)+"&_save=1");break;case "search":if(!b&&this.gui_objects.qsearchbox&&(b=this.gui_objects.qsearchbox.value),b){this.qsearch(b);break}case "reset-search":f=
-this.env.search_request||this.env.qsearch;this.reset_qsearch();this.select_all_mode=!1;if(f&&this.env.mailbox)this.list_mailbox(this.env.mailbox,1);else if(f&&"addressbook"==this.task){if(""==this.env.source){for(g in this.env.address_sources)break;this.env.source=g;this.env.group=""}this.list_contacts(this.env.source,this.env.group,1)}break;case "listgroup":this.reset_qsearch();this.list_contacts(b.source,b.id);break;case "import":if("import"==this.env.action&&this.gui_objects.importform){if((g=
-document.getElementById("rcmimportfile"))&&!g.value){alert(this.get_label("selectimportfile"));break}this.gui_objects.importform.submit();this.set_busy(!0,"importwait");this.lock_form(this.gui_objects.importform,!0)}else this.goto_url("import",this.env.source?"_target="+urlencode(this.env.source)+"&":"");break;case "export":0<this.contact_list.rowcount&&this.goto_url("export",{_source:this.env.source,_gid:this.env.group,_search:this.env.search_request});break;case "upload-photo":this.upload_contact_photo(b);
-break;case "delete-photo":this.replace_contact_photo("-del-");break;case "preferences":case "identities":case "folders":this.goto_url("settings/"+a);break;case "undo":this.http_request("undo","",this.display_message("","loading"));break;default:g=a.replace(/-/g,"_"),this[g]&&"function"===typeof this[g]&&(e=this[g](b))}!1===this.triggerEvent("after"+a,b)&&(e=!1);this.triggerEvent("actionafter",{props:b,action:a});return!1===e?!1:d?!1:!0};this.enable_command=function(){var a,b,d=Array.prototype.slice.call(arguments),
-e=d.pop(),f;for(b=0;b<d.length;b++)if(f=d[b],"string"===typeof f)this.commands[f]=e,this.set_button(f,e?"act":"pas");else for(a in f)d.push(f[a])};this.set_busy=function(a,b,d){a&&b?(d=this.get_label(b),d==b&&(d="Loading..."),d=this.display_message(d,"loading")):!a&&d&&this.hide_message(d);this.busy=a;this.gui_objects.editform&&this.lock_form(this.gui_objects.editform,a);this.request_timer&&clearTimeout(this.request_timer);a&&this.env.request_timeout&&(this.request_timer=window.setTimeout(function(){i.request_timed_out()},
-1E3*this.env.request_timeout));return d};this.gettext=this.get_label=function(a,b){return b&&this.labels[b+"."+a]?this.labels[b+"."+a]:this.labels[a]?this.labels[a]:a};this.switch_task=function(a){if(!(this.task===a&&"mail"!=a)){var b=this.get_task_url(a);"mail"==a&&(b+="&_mbox=INBOX");this.redirect(b)}};this.get_task_url=function(a,b){b||(b=this.env.comm_path);return b.replace(/_task=[a-z]+/,"_task="+a)};this.request_timed_out=function(){this.set_busy(!1);this.display_message("Request timed out!",
-"error")};this.reload=function(a){this.is_framed()?parent.rcmail.reload(a):a?window.setTimeout(function(){rcmail.reload()},a):window.location&&(location.href=this.env.comm_path+(this.env.action?"&_action="+this.env.action:""))};this.add_url=function(a,b,d){d=urlencode(d);if(/(\?.*)$/.test(a)){var e=RegExp.$1,f=RegExp("((\\?|&)"+RegExp.escape(b)+"=[^&]*)"),e=f.test(e)?e.replace(f,RegExp.$2+b+"="+d):e+("&"+b+"="+d);return a.replace(/(\?.*)$/,e)}return a+"?"+b+"="+d};this.is_framed=function(){return this.env.framed&&
-parent.rcmail&&parent.rcmail!=this&&parent.rcmail.command};this.save_pref=function(a){var b={_name:a.name,_value:a.value};a.session&&(b._session=a.session);a.env&&(this.env[a.env]=a.value);this.http_post("save-pref",b)};this.html_identifier=function(a,b){a=""+a;return b?Base64.encode(a).replace(/=+$/,"").replace(/\+/g,"-").replace(/\//g,"_"):a.replace(this.identifier_expr,"_")};this.html_identifier_decode=function(a){for(a=(""+a).replace(/-/g,"+").replace(/_/g,"/");a.length%4;)a+="=";return Base64.decode(a)};
-this.drag_menu=function(a,b){var d=rcube_event.get_modifier(a),e=this.gui_objects.message_dragmenu;return e&&d==SHIFT_KEY&&this.commands.copy?(d=rcube_event.get_mouse_pos(a),this.env.drag_target=b,$(e).css({top:d.y-10+"px",left:d.x-10+"px"}).show(),!0):!1};this.drag_menu_action=function(a){var b=this.gui_objects.message_dragmenu;b&&$(b).hide();this.command(a,this.env.drag_target);this.env.drag_target=null};this.drag_start=function(a){var b="mail"==this.task?this.env.mailboxes:this.env.contactfolders;
-this.drag_active=!0;this.preview_timer&&clearTimeout(this.preview_timer);this.preview_read_timer&&clearTimeout(this.preview_read_timer);if(this.gui_objects.folderlist&&b){this.initialBodyScrollTop=bw.ie?0:window.pageYOffset;this.initialListScrollTop=this.gui_objects.folderlist.parentNode.scrollTop;var d,e,a=$(this.gui_objects.folderlist);pos=a.offset();this.env.folderlist_coords={x1:pos.left,y1:pos.top,x2:pos.left+a.width(),y2:pos.top+a.height()};this.env.folder_coords=[];for(d in b)if(a=this.get_folder_li(d))if(e=
-a.firstChild.offsetHeight)pos=$(a.firstChild).offset(),this.env.folder_coords[d]={x1:pos.left,y1:pos.top,x2:pos.left+a.firstChild.offsetWidth,y2:pos.top+e,on:0}}};this.drag_end=function(){this.drag_active=!1;this.env.last_folder_target=null;this.folder_auto_timer&&(window.clearTimeout(this.folder_auto_timer),this.folder_auto_expand=this.folder_auto_timer=null);if(this.gui_objects.folderlist&&this.env.folder_coords)for(var a in this.env.folder_coords)this.env.folder_coords[a].on&&$(this.get_folder_li(a)).removeClass("droptarget")};
-this.drag_move=function(a){if(this.gui_objects.folderlist&&this.env.folder_coords){var b,d,e,f,h;d="draglayernormal";a=rcube_event.get_mouse_pos(a);f=this.env.folderlist_coords;e=bw.ie?-document.documentElement.scrollTop:this.initialBodyScrollTop;var g=this.initialListScrollTop-this.gui_objects.folderlist.parentNode.scrollTop;this.contact_list&&this.contact_list.draglayer&&(h=this.contact_list.draglayer.attr("class"));a.y+=-g-e;if(a.x<f.x1||a.x>=f.x2||a.y<f.y1||a.y>=f.y2)this.env.last_folder_target&&
-($(this.get_folder_li(this.env.last_folder_target)).removeClass("droptarget"),this.env.folder_coords[this.env.last_folder_target].on=0,this.env.last_folder_target=null);else for(b in this.env.folder_coords)f=this.env.folder_coords[b],a.x>=f.x1&&a.x<f.x2&&a.y>=f.y1&&a.y<f.y2?(f=this.check_droptarget(b))?(d=this.get_folder_li(b),e=$(d.getElementsByTagName("div")[0]),e.hasClass("collapsed")?(this.folder_auto_timer&&window.clearTimeout(this.folder_auto_timer),this.folder_auto_expand=this.env.mailboxes[b].id,
-this.folder_auto_timer=window.setTimeout(function(){rcmail.command("collapse-folder",rcmail.folder_auto_expand);rcmail.drag_start(null)},1E3)):this.folder_auto_timer&&(window.clearTimeout(this.folder_auto_timer),this.folder_auto_expand=this.folder_auto_timer=null),$(d).addClass("droptarget"),this.env.folder_coords[b].on=1,this.env.last_folder_target=b,d="draglayer"+(1<f?"copy":"normal")):this.env.last_folder_target=null:f.on&&($(this.get_folder_li(b)).removeClass("droptarget"),this.env.folder_coords[b].on=
-0);d!=h&&this.contact_list&&this.contact_list.draglayer&&this.contact_list.draglayer.attr("class",d)}};this.collapse_folder=function(a){var b=this.get_folder_li(a,"",!0),d=$("div:first",b),e=$("ul:first",b);if(d.hasClass("collapsed"))e.show(),d.removeClass("collapsed").addClass("expanded"),this.env.collapsed_folders=this.env.collapsed_folders.replace(RegExp("&"+urlencode(a)+"&"),"");else if(d.hasClass("expanded"))e.hide(),d.removeClass("expanded").addClass("collapsed"),this.env.collapsed_folders=
-this.env.collapsed_folders+"&"+urlencode(a)+"&",0==this.env.mailbox.indexOf(a+this.env.delimiter)&&!$(b).hasClass("virtual")&&this.command("list",a);else return;if(bw.ie6||bw.ie7)if((d=b.nextSibling?b.nextSibling.getElementsByTagName("ul"):null)&&d.length&&(b=d[0])&&b.style&&"none"!=b.style.display)b.style.display="none",b.style.display="";this.command("save-pref",{name:"collapsed_folders",value:this.env.collapsed_folders});this.set_unread_count_display(a,!1)};this.doc_mouse_up=function(a){var b,
-d,e;if(!$(rcube_event.get_target(a)).closest(".ui-dialog, .ui-widget-overlay").length&&((d=this.message_list)?(rcube_mouse_is_over(a,d.list.parentNode)?d.focus():d.blur(),b=this.env.mailboxes):(d=this.contact_list)?(rcube_mouse_is_over(a,d.list.parentNode)?d.focus():d.blur(),b=this.env.contactfolders):this.ksearch_value&&this.ksearch_blur(),this.drag_active&&b&&this.env.last_folder_target&&(b=b[this.env.last_folder_target],$(this.get_folder_li(this.env.last_folder_target)).removeClass("droptarget"),
-this.env.last_folder_target=null,d.draglayer.hide(),this.drag_menu(a,b)||this.command("moveto",b)),this.buttons_sel)){for(e in this.buttons_sel)"function"!==typeof e&&this.button_out(this.buttons_sel[e],e);this.buttons_sel={}}};this.click_on_list=function(){this.gui_objects.qsearchbox&&this.gui_objects.qsearchbox.blur();this.message_list?this.message_list.focus():this.contact_list&&this.contact_list.focus();return!0};this.msglist_select=function(a){this.preview_timer&&clearTimeout(this.preview_timer);
-this.preview_read_timer&&clearTimeout(this.preview_read_timer);var b=null!=a.get_single_selection();this.enable_command(this.env.message_commands,b);b&&(this.env.mailbox==this.env.drafts_mailbox?this.enable_command("reply","reply-all","reply-list","forward","forward-attachment",!1):this.env.messages[a.get_single_selection()].ml||this.enable_command("reply-list",!1));this.enable_command("delete","moveto","copy","mark",0<a.selection.length?!0:!1);if(b||a.selection.length&&a.selection.length!=a.rowcount)this.select_all_mode=
-!1;b&&this.env.contentframe&&!a.multi_selecting&&!this.dummy_select?this.preview_timer=window.setTimeout(function(){i.msglist_get_preview()},200):this.env.contentframe&&this.show_contentframe(!1)};this.msglist_click=function(a){!a.multi_selecting&&this.env.contentframe&&a.get_single_selection()&&window.frames&&window.frames[this.env.contentframe]&&0<=window.frames[this.env.contentframe].location.href.indexOf(this.env.blankpage)&&(this.preview_timer&&clearTimeout(this.preview_timer),this.preview_read_timer&&
-clearTimeout(this.preview_read_timer),this.preview_timer=window.setTimeout(function(){i.msglist_get_preview()},200))};this.msglist_dbl_click=function(a){this.preview_timer&&clearTimeout(this.preview_timer);this.preview_read_timer&&clearTimeout(this.preview_read_timer);(a=a.get_single_selection())&&this.env.mailbox==this.env.drafts_mailbox?this.goto_url("compose","_draft_uid="+a+"&_mbox="+urlencode(this.env.mailbox),!0):a&&this.show_message(a,!1,!1)};this.msglist_keypress=function(a){a.modkey!=CONTROL_KEY&&
-(a.key_pressed==a.ENTER_KEY?this.command("show"):a.key_pressed==a.DELETE_KEY||a.key_pressed==a.BACKSPACE_KEY?this.command("delete"):33==a.key_pressed?this.command("previouspage"):34==a.key_pressed&&this.command("nextpage"))};this.msglist_get_preview=function(){var a=this.get_single_uid();a&&this.env.contentframe&&!this.drag_active?this.show_message(a,!1,!0):this.env.contentframe&&this.show_contentframe(!1)};this.msglist_expand=function(a){this.env.messages[a.uid]&&(this.env.messages[a.uid].expanded=
-a.expanded)};this.msglist_set_coltypes=function(a){var b,d=a.list.tHead.rows[0].cells;this.env.coltypes=[];for(a=0;a<d.length;a++)d[a].id&&d[a].id.match(/^rcm/)&&(b=d[a].id.replace(/^rcm/,""),this.env.coltypes.push("to"==b?"from":b));if(0<=(a=$.inArray("flag",this.env.coltypes)))this.env.flagged_col=a;if(0<=(a=$.inArray("subject",this.env.coltypes)))this.env.subject_col=a;this.command("save-pref",{name:"list_cols",value:this.env.coltypes,session:"list_attrib/columns"})};this.check_droptarget=function(a){var b=
-!1,d=!1;"mail"==this.task?b=this.env.mailboxes[a]&&this.env.mailboxes[a].id!=this.env.mailbox&&!this.env.mailboxes[a].virtual:"settings"==this.task?b=a!=this.env.mailbox:"addressbook"==this.task&&a!=this.env.source&&this.env.contactfolders[a]&&("group"==this.env.contactfolders[a].type?(d=this.env.contactfolders[a].source,b=this.env.contactfolders[a].id!=this.env.group&&!this.env.contactfolders[d].readonly,d=d!=this.env.source):(b=!this.env.contactfolders[a].readonly,d=!0));return b?d?2:1:0};this.init_message_row=
-function(a){var b,d=this,e=a.uid,f=(null!=this.env.status_col?"status":"msg")+"icn"+a.uid;e&&this.env.messages[e]&&$.extend(a,this.env.messages[e]);if(a.icon=document.getElementById(f))a.icon._row=a.obj,a.icon.onmousedown=function(a){d.command("toggle_status",this);rcube_event.cancel(a)};a.msgicon=null!=this.env.status_col?document.getElementById("msgicn"+a.uid):a.icon;if(null!=this.env.flagged_col&&(a.flagicon=document.getElementById("flagicn"+a.uid)))a.flagicon._row=a.obj,a.flagicon.onmousedown=
-function(a){d.command("toggle_flag",this);rcube_event.cancel(a)};if(!a.depth&&a.has_children&&(b=document.getElementById("rcmexpando"+a.uid)))a.expando=b,b.onmousedown=function(a){return d.expand_message_row(a,e)};this.triggerEvent("insertrow",{uid:e,row:a})};this.add_message_row=function(a,b,d,e){if(!this.gui_objects.messagelist||!this.message_list||d.mbox!=this.env.mailbox&&!d.skip_mbox_check)return!1;this.env.messages[a]||(this.env.messages[a]={});$.extend(this.env.messages[a],{deleted:d.deleted?
-1:0,replied:d.answered?1:0,unread:!d.seen?1:0,forwarded:d.forwarded?1:0,flagged:d.flagged?1:0,has_children:d.has_children?1:0,depth:d.depth?d.depth:0,unread_children:d.unread_children?d.unread_children:0,parent_uid:d.parent_uid?d.parent_uid:0,selected:this.select_all_mode||this.message_list.in_selection(a),ml:d.ml?1:0,ctype:d.ctype,flags:d.extra_flags});var f,h,g,k="",j="",l=this.message_list;g=l.rows;var i=this.env.messages[a];f="message"+(!d.seen?" unread":"")+(d.deleted?" deleted":"")+(d.flagged?
-" flagged":"")+(d.unread_children&&d.seen&&!this.env.autoexpand_threads?" unroot":"")+(i.selected?" selected":"");var m=document.createElement("tr");m.id="rcmrow"+a;m.className=f;f="msgicon";null===this.env.status_col&&(f+=" status",d.deleted?f+=" deleted":d.seen?0<d.unread_children&&(f+=" unreadchildren"):f+=" unread");d.answered&&(f+=" replied");d.forwarded&&(f+=" forwarded");i.selected&&!l.in_selection(a)&&l.selection.push(a);if(this.env.threading)if(i.depth)k+='<span id="rcmtab'+a+'" class="branch" style="width:'+
-15*i.depth+'px;">&nbsp;&nbsp;</span>',g[i.parent_uid]&&!1===g[i.parent_uid].expanded||(0==this.env.autoexpand_threads||2==this.env.autoexpand_threads)&&(!g[i.parent_uid]||!g[i.parent_uid].expanded)?(m.style.display="none",i.expanded=!1):i.expanded=!0;else if(i.has_children){if(void 0===i.expanded&&(1==this.env.autoexpand_threads||2==this.env.autoexpand_threads&&i.unread_children))i.expanded=!0;j='<div id="rcmexpando'+a+'" class="'+(i.expanded?"expanded":"collapsed")+'">&nbsp;&nbsp;</div>'}k+='<span id="msgicn'+
-a+'" class="'+f+'">&nbsp;</span>';!bw.ie&&b.subject&&(g=d.mbox==this.env.drafts_mailbox?"_draft_uid":"_uid",b.subject='<a href="./?_task=mail&_action='+(d.mbox==this.env.drafts_mailbox?"compose":"show")+"&_mbox="+urlencode(d.mbox)+"&"+g+"="+a+'" onclick="return rcube_event.cancel(event)" onmouseover="rcube_webmail.long_subject_title(this,'+(i.depth+1)+')">'+b.subject+"</a>");for(h in this.env.coltypes)f=this.env.coltypes[h],g=document.createElement("td"),g.className=(""+f).toLowerCase(),"flag"==f?
-(f=d.flagged?"flagged":"unflagged",f='<span id="flagicn'+a+'" class="'+f+'">&nbsp;</span>'):"attachment"==f?f=/application\/|multipart\/m/.test(d.ctype)?'<span class="attachment">&nbsp;</span>':/multipart\/report/.test(d.ctype)?'<span class="report">&nbsp;</span>':"&nbsp;":"status"==f?(f=d.deleted?"deleted":d.seen?0<d.unread_children?"unreadchildren":"msgicon":"unread",f='<span id="statusicn'+a+'" class="'+f+'">&nbsp;</span>'):"threads"==f?f=j:"subject"==f?(bw.ie&&(g.onmouseover=function(){rcube_webmail.long_subject_title_ie(this,
-i.depth+1)}),f=k+b[f]):f="priority"==f?0<d.prio&&6>d.prio?'<span class="prio'+d.prio+'">&nbsp;</span>':"&nbsp;":b[f],g.innerHTML=f,m.appendChild(g);l.insert_row(m,e);e&&this.env.pagesize&&l.rowcount>this.env.pagesize&&(a=l.get_last_row(),l.remove_row(a),l.clear_selection(a))};this.set_list_sorting=function(a,b){$("#rcm"+this.env.sort_col).removeClass("sorted"+this.env.sort_order.toUpperCase());a&&$("#rcm"+a).addClass("sorted"+b);this.env.sort_col=a;this.env.sort_order=b};this.set_list_options=function(a,
-b,d,e){var f,h="";void 0===b&&(b=this.env.sort_col);d||(d=this.env.sort_order);if(this.env.sort_col!=b||this.env.sort_order!=d)f=1,this.set_list_sorting(b,d);this.env.threading!=e&&(f=1,h+="&_threads="+e);if(a&&a.length){for(var g,k,j=[],i=this.env.coltypes,e=0;e<i.length;e++)k="to"==i[e]?"from":i[e],g=$.inArray(k,a),-1!=g&&(j.push(k),delete a[g]);for(e=0;e<a.length;e++)a[e]&&j.push(a[e]);j.join()!=i.join()&&(f=1,h+="&_cols="+j.join(","))}f&&this.list_mailbox("","",b+"_"+d,h)};this.show_message=function(a,
-b,d){if(a){var e=window,f=d?"preview":"show",h="&_action="+f+"&_uid="+a+"&_mbox="+urlencode(this.env.mailbox);d&&this.env.contentframe&&window.frames&&window.frames[this.env.contentframe]&&(e=window.frames[this.env.contentframe],h+="&_framed=1");b&&(h+="&_safe=1");this.env.search_request&&(h+="&_search="+this.env.search_request);"preview"==f&&0<=(""+e.location.href).indexOf(h)?this.show_contentframe(!0):(this.location_href(this.env.comm_path+h,e,!0),"preview"==f&&this.message_list&&this.message_list.rows[a]&&
-this.message_list.rows[a].unread&&0<=this.env.preview_pane_mark_read&&(this.preview_read_timer=window.setTimeout(function(){i.set_message(a,"unread",false);i.update_thread_root(a,"read");if(i.env.unread_counts[i.env.mailbox]){i.env.unread_counts[i.env.mailbox]=i.env.unread_counts[i.env.mailbox]-1;i.set_unread_count(i.env.mailbox,i.env.unread_counts[i.env.mailbox],i.env.mailbox=="INBOX")}i.env.preview_pane_mark_read>0&&i.http_post("mark","_uid="+a+"&_flag=read&_quiet=1")},1E3*this.env.preview_pane_mark_read)))}};
-this.show_contentframe=function(a){var b,d;if(this.env.contentframe&&(b=$("#"+this.env.contentframe))&&b.length)if(!a&&(d=window.frames[this.env.contentframe]))d.location&&0>d.location.href.indexOf(this.env.blankpage)&&(d.location.href=this.env.blankpage);else if(!bw.safari&&!bw.konq)b[a?"show":"hide"]();!a&&this.busy&&this.set_busy(!1,null,this.env.frame_lock)};this.lock_frame=function(){this.env.frame_lock||((this.is_framed()?parent.rcmail:this).env.frame_lock=this.set_busy(!0,"loading"))};this.list_page=
-function(a){"next"==a?a=this.env.current_page+1:"last"==a?a=this.env.pagecount:"prev"==a&&1<this.env.current_page?a=this.env.current_page-1:"first"==a&&1<this.env.current_page&&(a=1);0<a&&a<=this.env.pagecount&&(this.env.current_page=a,"mail"==this.task?this.list_mailbox(this.env.mailbox,a):"addressbook"==this.task&&this.list_contacts(this.env.source,this.env.group,a))};this.filter_mailbox=function(a){var b=this.set_busy(!0,"searching");this.clear_message_list();this.env.current_page=1;this.http_request("search",
-this.search_params(!1,a),b)};this.list_mailbox=function(a,b,d,e){var f="",h=window;a||(a=this.env.mailbox?this.env.mailbox:"INBOX");e&&(f+=e);d&&(f+="&_sort="+d);this.env.search_request&&(f+="&_search="+this.env.search_request);this.env.mailbox!=a&&(b=1,this.env.current_page=b,this.select_all_mode=!1);this.clear_message_list();if(a!=this.env.mailbox||a==this.env.mailbox&&!b&&!d)f+="&_refresh=1";this.select_folder(a,"",!0);this.env.mailbox=a;if(this.gui_objects.messagelist)this.list_mailbox_remote(a,
-b,f);else if(this.env.contentframe&&window.frames&&window.frames[this.env.contentframe]&&(h=window.frames[this.env.contentframe],f+="&_framed=1"),a)this.set_busy(!0,"loading"),this.location_href(this.env.comm_path+"&_mbox="+urlencode(a)+(b?"&_page="+b:"")+f,h)};this.clear_message_list=function(){this.env.messages={};this.last_selected=0;this.show_contentframe(!1);this.message_list&&this.message_list.clear(!0)};this.list_mailbox_remote=function(a,b,d){this.message_list.clear();a="_mbox="+urlencode(a)+
+function rcube_webmail(){this.env={recipients_separator:",",recipients_delimiter:", "};this.labels={};this.buttons={};this.buttons_sel={};this.gui_objects={};this.gui_containers={};this.commands={};this.command_handlers={};this.onloads=[];this.messages={};this.group2expand={};this.ref="rcmail";var j=this;this.dblclick_time=500;this.message_time=4E3;this.identifier_expr=RegExp("[^0-9a-z-_]","gi");this.env.keep_alive=60;this.env.request_timeout=180;this.env.draft_autosave=0;this.env.comm_path="./";
+this.env.blankpage="program/blank.gif";$.ajaxSetup({cache:!1,timeout:1E3*this.env.request_timeout,error:function(a,b,d){j.http_error(a,b,d)},beforeSend:function(a){a.setRequestHeader("X-Roundcube-Request",j.env.request_token)}});$(window).bind("beforeunload",function(){rcmail.unload=!0});this.set_env=function(a,b){if(null!=a&&"object"===typeof a&&!b)for(var d in a)this.env[d]=a[d];else this.env[a]=b};this.add_label=function(a,b){"string"==typeof a?this.labels[a]=b:"object"==typeof a&&$.extend(this.labels,
+a)};this.register_button=function(a,b,d,e,f,g){this.buttons[a]||(this.buttons[a]=[]);b={id:b,type:d};e&&(b.act=e);f&&(b.sel=f);g&&(b.over=g);this.buttons[a].push(b);this.loaded&&t(a,b)};this.gui_object=function(a,b){this.gui_objects[a]=this.loaded?rcube_find_object(b):b};this.gui_container=function(a,b){this.gui_containers[a]=b};this.add_element=function(a,b){this.gui_containers[b]&&this.gui_containers[b].jquery&&this.gui_containers[b].append(a)};this.register_command=function(a,b,d){this.command_handlers[a]=
+b;d&&this.enable_command(a,!0)};this.add_onload=function(a){this.onloads.push(a)};this.init=function(){var a,b=this;this.task=this.env.task;if(!bw.dom||!bw.xmlhttp_test()||bw.mz&&1.9>bw.vendver)this.goto_url("error","_code=0x199");else{for(a in this.gui_containers)this.gui_containers[a]=$("#"+this.gui_containers[a]);for(a in this.gui_objects)this.gui_objects[a]=rcube_find_object(this.gui_objects[a]);if(this.env.x_frame_options)try{if("deny"==this.env.x_frame_options&&top.location.href!=self.location.href)top.location.href=
+self.location.href;else if(top.location.hostname!=self.location.hostname)throw 1;}catch(d){$("form").each(function(){j.lock_form(this,!0)});this.display_message("Blocked: possible clickjacking attack!","error");return}this.init_buttons();this.is_framed()&&(parent.rcmail.set_busy(!1,null,parent.rcmail.env.frame_lock),parent.rcmail.env.frame_lock=null);this.enable_command("logout","mail","addressbook","settings","save-pref","compose","undo","about","switch-task",!0);this.env.permaurl&&this.enable_command("permaurl",
+!0);switch(this.task){case "mail":this.enable_command("list","checkmail","add-contact","search","reset-search","collapse-folder",!0);this.gui_objects.messagelist&&(this.message_list=new rcube_list_widget(this.gui_objects.messagelist,{multiselect:!0,multiexpand:!0,draggable:!0,keyboard:!0,column_movable:this.env.col_movable,dblclick_time:this.dblclick_time}),this.message_list.row_init=function(a){b.init_message_row(a)},this.message_list.addEventListener("dblclick",function(a){b.msglist_dbl_click(a)}),
+this.message_list.addEventListener("click",function(a){b.msglist_click(a)}),this.message_list.addEventListener("keypress",function(a){b.msglist_keypress(a)}),this.message_list.addEventListener("select",function(a){b.msglist_select(a)}),this.message_list.addEventListener("dragstart",function(a){b.drag_start(a)}),this.message_list.addEventListener("dragmove",function(a){b.drag_move(a)}),this.message_list.addEventListener("dragend",function(a){b.drag_end(a)}),this.message_list.addEventListener("expandcollapse",
+function(a){b.msglist_expand(a)}),this.message_list.addEventListener("column_replace",function(a){b.msglist_set_coltypes(a)}),document.onmouseup=function(a){return b.doc_mouse_up(a)},this.gui_objects.messagelist.parentNode.onmousedown=function(a){return b.click_on_list(a)},this.message_list.init(),this.enable_command("toggle_status","toggle_flag","menu-open","menu-save",!0),this.command("list"));this.gui_objects.qsearchbox&&(null!=this.env.search_text&&(this.gui_objects.qsearchbox.value=this.env.search_text),
+$(this.gui_objects.qsearchbox).focusin(function(){rcmail.message_list.blur()}));this.set_button_titles();this.env.message_commands="show reply reply-all reply-list forward moveto copy delete open mark edit viewsource download print load-attachment show-headers hide-headers forward-attachment".split(" ");"show"==this.env.action||"preview"==this.env.action?(this.enable_command(this.env.message_commands,this.env.uid),this.enable_command("reply-list",this.env.list_post),"show"==this.env.action&&this.http_request("pagenav",
+"_uid="+this.env.uid+"&_mbox="+urlencode(this.env.mailbox)+(this.env.search_request?"&_search="+this.env.search_request:""),this.display_message("","loading")),this.env.blockedobjects&&(this.gui_objects.remoteobjectsmsg&&(this.gui_objects.remoteobjectsmsg.style.display="block"),this.enable_command("load-images","always-load",!0)),"preview"==this.env.action&&this.is_framed()&&(this.enable_command("compose","add-contact",!1),parent.rcmail.show_contentframe(!0))):"compose"==this.env.action?(this.env.compose_commands=
+"send-attachment remove-attachment send cancel toggle-editor list-adresses".split(" "),this.env.drafts_mailbox&&this.env.compose_commands.push("savedraft"),this.enable_command(this.env.compose_commands,"identities",!0),$.merge(this.env.compose_commands,["add-recipient","firstpage","previouspage","nextpage","lastpage"]),this.env.spellcheck&&(this.env.spellcheck.spelling_state_observer=function(){j.spellcheck_state()},this.env.compose_commands.push("spellcheck"),this.enable_command("spellcheck",!0)),
+document.onmouseup=function(a){return b.doc_mouse_up(a)},this.init_messageform()):"print"==this.env.action&&this.env.uid&&(bw.safari?setTimeout("window.print()",10):window.print());this.gui_objects.mailboxlist&&(this.env.unread_counts={},this.gui_objects.folderlist=this.gui_objects.mailboxlist,this.http_request("getunread",""));this.gui_objects.contactslist&&(this.contact_list=new rcube_list_widget(this.gui_objects.contactslist,{multiselect:!0,draggable:!1,keyboard:!1}),this.contact_list.addEventListener("select",
+function(a){j.compose_recipient_select(a)}),this.contact_list.addEventListener("dblclick",function(){j.compose_add_recipient("to")}),this.contact_list.init());this.gui_objects.addressbookslist&&(this.gui_objects.folderlist=this.gui_objects.addressbookslist,this.enable_command("list-adresses",!0));this.env.mdn_request&&this.env.uid&&(a="_uid="+this.env.uid+"&_mbox="+urlencode(this.env.mailbox),confirm(this.get_label("mdnrequest"))?this.http_post("sendmdn",a):this.http_post("mark",a+"&_flag=mdnsent"));
+break;case "addressbook":this.gui_objects.folderlist&&(this.env.contactfolders=$.extend($.extend({},this.env.address_sources),this.env.contactgroups));this.enable_command("add","import",this.env.writable_source);this.enable_command("list","listgroup","listsearch","advanced-search",!0);this.gui_objects.contactslist&&(this.contact_list=new rcube_list_widget(this.gui_objects.contactslist,{multiselect:!0,draggable:this.gui_objects.folderlist?!0:!1,keyboard:!0}),this.contact_list.row_init=function(a){b.triggerEvent("insertrow",
+{cid:a.uid,row:a})},this.contact_list.addEventListener("keypress",function(a){b.contactlist_keypress(a)}),this.contact_list.addEventListener("select",function(a){b.contactlist_select(a)}),this.contact_list.addEventListener("dragstart",function(a){b.drag_start(a)}),this.contact_list.addEventListener("dragmove",function(a){b.drag_move(a)}),this.contact_list.addEventListener("dragend",function(a){b.drag_end(a)}),this.contact_list.init(),this.env.cid&&this.contact_list.highlight_row(this.env.cid),this.gui_objects.contactslist.parentNode.onmousedown=
+function(a){return b.click_on_list(a)},document.onmouseup=function(a){return b.doc_mouse_up(a)},this.gui_objects.qsearchbox&&$(this.gui_objects.qsearchbox).focusin(function(){rcmail.contact_list.blur()}),this.update_group_commands(),this.command("list"));this.set_page_buttons();this.env.cid&&(this.enable_command("show","edit",!0),this.gui_objects.editform&&$("input.groupmember").change(function(){j.group_member_change(this.checked?"add":"del",j.env.cid,j.env.source,this.value)}));this.gui_objects.editform&&
+(this.enable_command("save",!0),("add"==this.env.action||"edit"==this.env.action)&&this.init_contact_form());this.gui_objects.qsearchbox&&this.enable_command("search","reset-search","moveto",!0);break;case "settings":this.enable_command("preferences","identities","save","folders",!0);"identities"==this.env.action?this.enable_command("add",2>this.env.identities_level):"edit-identity"==this.env.action||"add-identity"==this.env.action?(this.enable_command("save","edit","toggle-editor",!0),this.enable_command("delete",
+2>this.env.identities_level),"add-identity"==this.env.action&&$("input[type='text']").first().select()):"folders"==this.env.action?this.enable_command("subscribe","unsubscribe","create-folder","rename-folder",!0):"edit-folder"==this.env.action&&this.gui_objects.editform&&(this.enable_command("save","folder-size",!0),parent.rcmail.env.messagecount=this.env.messagecount,parent.rcmail.enable_command("purge",this.env.messagecount),$("input[type='text']").first().select());this.gui_objects.identitieslist?
+(this.identity_list=new rcube_list_widget(this.gui_objects.identitieslist,{multiselect:!1,draggable:!1,keyboard:!1}),this.identity_list.addEventListener("select",function(a){b.identity_select(a)}),this.identity_list.init(),this.identity_list.focus(),this.env.iid&&this.identity_list.highlight_row(this.env.iid)):this.gui_objects.sectionslist?(this.sections_list=new rcube_list_widget(this.gui_objects.sectionslist,{multiselect:!1,draggable:!1,keyboard:!1}),this.sections_list.addEventListener("select",
+function(a){b.section_select(a)}),this.sections_list.init(),this.sections_list.focus()):this.gui_objects.subscriptionlist&&this.init_subscription_list();break;case "login":a=$("#rcmloginuser");a.bind("keyup",function(a){return rcmail.login_user_keyup(a)});""==a.val()?a.focus():$("#rcmloginpwd").focus();var e=new Date;a=e.getTimezoneOffset()/-60;e=e.getStdTimezoneOffset()/-60;$("#rcmlogintz").val(e);$("#rcmlogindst").val(a>e?1:0);$("form").submit(function(){$("input[type=submit]",this).prop("disabled",
+!0);rcmail.clear_messages();rcmail.display_message("","loading")});this.enable_command("login",!0)}bw.ie&&$("input[type=file]").keydown(function(a){"13"==a.keyCode&&a.preventDefault()});this.loaded=!0;this.pending_message&&this.display_message(this.pending_message[0],this.pending_message[1],this.pending_message[2]);this.gui_objects.folderlist&&(this.gui_containers.foldertray=$(this.gui_objects.folderlist));this.triggerEvent("init",{task:this.task,action:this.env.action});for(var f in this.onloads)if("string"===
+typeof this.onloads[f])eval(this.onloads[f]);else if("function"===typeof this.onloads[f])this.onloads[f]();this.start_keepalive()}};this.log=function(a){window.console&&console.log&&console.log(a)};this.command=function(a,b,d){var e,f,g,h;d&&d.blur&&d.blur();if(this.busy)return!1;if(!this.commands[a])return this.is_framed()&&parent.rcmail.command(a,b),!1;if("mail"==this.task&&"compose"==this.env.action&&0>$.inArray(a,this.env.compose_commands)&&this.cmp_hash!=this.compose_field_hash()&&!confirm(this.get_label("notsentwarning")))return!1;
+if("function"===typeof this.command_handlers[a])return e=this.command_handlers[a](b,d),void 0!==e?e:d?!1:!0;if("string"===typeof this.command_handlers[a])return e=window[this.command_handlers[a]](b,d),void 0!==e?e:d?!1:!0;this.triggerEvent("actionbefore",{props:b,action:a});e=this.triggerEvent("before"+a,b);if(void 0!==e){if(!1===e)return!1;b=e}e=void 0;switch(a){case "login":this.gui_objects.loginform&&this.gui_objects.loginform.submit();break;case "mail":case "addressbook":case "settings":case "logout":this.switch_task(a);
+break;case "about":location.href="?_task=settings&_action=about";break;case "permaurl":if(d&&d.href&&d.target)return!0;this.env.permaurl&&(parent.location.href=this.env.permaurl);break;case "menu-open":case "menu-save":return this.triggerEvent(a,{props:b}),!1;case "open":if(f=this.get_single_uid())return d.href="?_task="+this.env.task+"&_action=show&_mbox="+urlencode(this.env.mailbox)+"&_uid="+f,!0;break;case "list":b&&""!=b&&this.reset_qsearch();"mail"==this.task?(this.list_mailbox(b),this.set_button_titles()):
+"addressbook"==this.task&&this.list_contacts(b);break;case "sort":f=b;h=this.env.sort_col==f?"ASC"==this.env.sort_order?"DESC":"ASC":"ASC";this.set_list_sorting(f,h);this.list_mailbox("","",f+"_"+h);break;case "nextpage":this.list_page("next");break;case "lastpage":this.list_page("last");break;case "previouspage":this.list_page("prev");break;case "firstpage":this.list_page("first");break;case "expunge":this.env.messagecount&&this.expunge_mailbox(this.env.mailbox);break;case "purge":case "empty-mailbox":this.env.messagecount&&
+this.purge_mailbox(this.env.mailbox);break;case "show":if("mail"==this.task){if((f=this.get_single_uid())&&(!this.env.uid||f!=this.env.uid))this.env.mailbox==this.env.drafts_mailbox?this.goto_url("compose","_draft_uid="+f+"&_mbox="+urlencode(this.env.mailbox),!0):this.show_message(f)}else"addressbook"==this.task&&(g=b?b:this.get_single_cid())&&!("show"==this.env.action&&g==this.env.cid)&&this.load_contact(g,"show");break;case "add":"addressbook"==this.task?this.load_contact(0,"add"):"settings"==this.task&&
+(this.identity_list.clear_selection(),this.load_identity(0,"add-identity"));break;case "edit":if("addressbook"==this.task&&(g=this.get_single_cid()))this.load_contact(g,"edit");else if("settings"==this.task&&b)this.load_identity(b,"edit-identity");else if("mail"==this.task&&(g=this.get_single_uid()))h=this.env.mailbox==this.env.drafts_mailbox?"_draft_uid=":"_uid=",this.goto_url("compose",h+g+"&_mbox="+urlencode(this.env.mailbox),!0);break;case "save":var i;if(h=this.gui_objects.editform){if("search"!=
+this.env.action)if((i=$("input[name='_pagesize']",h))&&i.length&&isNaN(parseInt(i.val()))){alert(this.get_label("nopagesizewarning"));i.focus();break}else{if("reload"==b)h.action+="?_reload=1";else if("settings"==this.task&&0==this.env.identities_level%2&&(i=$("input[name='_email']",h))&&i.length&&!rcube_check_email(i.val())){alert(this.get_label("noemailwarning"));i.focus();break}$("input.placeholder").each(function(){this.value==this._placeholder&&(this.value="")})}parent.rcmail&&parent.rcmail.env.source&&
+(h.action=this.add_url(h.action,"_orig_source",parent.rcmail.env.source));h.submit()}break;case "delete":"mail"==this.task?this.delete_messages():"addressbook"==this.task?this.delete_contacts():"settings"==this.task&&this.delete_identity();break;case "move":case "moveto":"mail"==this.task?this.move_messages(b):"addressbook"==this.task&&this.drag_active&&this.copy_contact(null,b);break;case "copy":"mail"==this.task&&this.copy_messages(b);break;case "mark":b&&this.mark_message(b);break;case "toggle_status":if(b&&
+!b._row)break;h="read";b._row.uid&&(f=b._row.uid,this.message_list.rows[f].deleted?h="undelete":this.message_list.rows[f].unread||(h="unread"));this.mark_message(h,f);break;case "toggle_flag":if(b&&!b._row)break;h="flagged";b._row.uid&&(f=b._row.uid,this.message_list.rows[f].flagged&&(h="unflagged"));this.mark_message(h,f);break;case "always-load":if(this.env.uid&&this.env.sender){this.add_contact(this.env.sender);setTimeout(function(){j.command("load-images")},300);break}case "load-images":this.env.uid&&
+this.show_message(this.env.uid,!0,"preview"==this.env.action);break;case "load-attachment":h="_mbox="+urlencode(this.env.mailbox)+"&_uid="+this.env.uid+"&_part="+b.part;if(this.env.uid&&(b.mimetype&&this.env.mimetypes&&0<=$.inArray(b.mimetype,this.env.mimetypes))&&("text/html"==b.mimetype&&(h+="&_safe=1"),this.attachment_win=window.open(this.env.comm_path+"&_action=get&"+h+"&_frame=1","rcubemailattachment"))){setTimeout(function(){j.attachment_win.focus()},10);break}this.goto_url("get",h+"&_download=1",
+!1);break;case "select-all":this.select_all_mode=b?!1:!0;this.dummy_select=!0;"invert"==b?this.message_list.invert_selection():this.message_list.select_all("page"==b?"":b);this.dummy_select=null;break;case "select-none":this.select_all_mode=!1;this.message_list.clear_selection();break;case "expand-all":this.env.autoexpand_threads=1;this.message_list.expand_all();break;case "expand-unread":this.env.autoexpand_threads=2;this.message_list.collapse_all();this.expand_unread();break;case "collapse-all":this.env.autoexpand_threads=
+0;this.message_list.collapse_all();break;case "nextmessage":this.env.next_uid&&this.show_message(this.env.next_uid,!1,"preview"==this.env.action);break;case "lastmessage":this.env.last_uid&&this.show_message(this.env.last_uid);break;case "previousmessage":this.env.prev_uid&&this.show_message(this.env.prev_uid,!1,"preview"==this.env.action);break;case "firstmessage":this.env.first_uid&&this.show_message(this.env.first_uid);break;case "checkmail":this.check_for_recent(!0);break;case "compose":h=this.url("mail/compose");
+if("mail"==this.task)h+="&_mbox="+urlencode(this.env.mailbox),b&&(h+="&_to="+urlencode(b)),this.env.search_request&&(h+="&_search="+this.env.search_request);else if("addressbook"==this.task){if(b&&0<b.indexOf("@")){h=this.get_task_url("mail",h);this.redirect(h+"&_to="+urlencode(b));break}g=[];if(b)g.push(b);else if(this.contact_list){i=this.contact_list.get_selection();h=0;for(f=i.length;h<f;h++)g.push(i[h])}g.length?this.http_post("mailto",{_cid:g.join(","),_source:this.env.source},!0):this.env.group&&
+this.http_post("mailto",{_gid:this.env.group,_source:this.env.source},!0);break}else b&&(h+="&_to="+urlencode(b));this.redirect(h);break;case "spellcheck":this.spellcheck_state()?this.stop_spellchecking():window.tinyMCE&&tinyMCE.get(this.env.composebody)?tinyMCE.execCommand("mceSpellCheck",!0):this.env.spellcheck&&this.env.spellcheck.spellCheck&&this.env.spellcheck.spellCheck();this.spellcheck_state();break;case "savedraft":h=this.gui_objects.messageform;clearTimeout(this.save_timer);if(!h)break;
+if(this.cmp_hash==this.compose_field_hash()){this.auto_save_start();break}this.start_keepalive();f=this.set_busy(!0,"savingmessage");h.target="savetarget";h._draft.value="1";h.action=this.add_url(h.action,"_unlock",f);h.submit();break;case "send":if(!this.gui_objects.messageform)break;if(!b.nocheck&&!this.check_compose_input(a))break;clearTimeout(this.save_timer);g=this.spellcheck_lang();h=this.gui_objects.messageform;f=this.set_busy(!0,"sendingmessage");h.target="savetarget";h._draft.value="";h.action=
+this.add_url(h.action,"_unlock",f);h.action=this.add_url(h.action,"_lang",g);h.submit();break;case "send-attachment":clearTimeout(this.save_timer);this.upload_file(b||this.gui_objects.uploadform);break;case "insert-sig":this.change_identity($("[name='_from']")[0],!0);break;case "list-adresses":this.list_contacts(b);this.enable_command("add-recipient",!1);break;case "add-recipient":this.compose_add_recipient(b);break;case "reply-all":case "reply-list":case "reply":if(f=this.get_single_uid())h="_reply_uid="+
+f+"&_mbox="+urlencode(this.env.mailbox),"reply-all"==a?h+="&_all="+(!b&&this.commands["reply-list"]?"list":"all"):"reply-list"==a&&(h+="&_all=list"),this.goto_url("compose",h,!0);break;case "forward-attachment":case "forward":if(f=this.get_single_uid()){h="_forward_uid="+f+"&_mbox="+urlencode(this.env.mailbox);if("forward-attachment"==a||!b&&this.env.forward_attachment)h+="&_attachment=1";this.goto_url("compose",h,!0)}break;case "print":if(f=this.get_single_uid())j.printwin=window.open(this.env.comm_path+
+"&_action=print&_uid="+f+"&_mbox="+urlencode(this.env.mailbox)+(this.env.safemode?"&_safe=1":"")),this.printwin&&(setTimeout(function(){j.printwin.focus()},20),"show"!=this.env.action&&this.mark_message("read",f));break;case "viewsource":if(f=this.get_single_uid())j.sourcewin=window.open(this.env.comm_path+"&_action=viewsource&_uid="+f+"&_mbox="+urlencode(this.env.mailbox)),this.sourcewin&&setTimeout(function(){j.sourcewin.focus()},20);break;case "download":(f=this.get_single_uid())&&this.goto_url("viewsource",
+"&_uid="+f+"&_mbox="+urlencode(this.env.mailbox)+"&_save=1");break;case "search":if(!b&&this.gui_objects.qsearchbox&&(b=this.gui_objects.qsearchbox.value),b){this.qsearch(b);break}case "reset-search":f=this.env.search_request||this.env.qsearch;this.reset_qsearch();this.select_all_mode=!1;if(f&&this.env.mailbox)this.list_mailbox(this.env.mailbox,1);else if(f&&"addressbook"==this.task){if(""==this.env.source){for(h in this.env.address_sources)break;this.env.source=h;this.env.group=""}this.list_contacts(this.env.source,
+this.env.group,1)}break;case "listgroup":this.reset_qsearch();this.list_contacts(b.source,b.id);break;case "import":if("import"==this.env.action&&this.gui_objects.importform){if((h=document.getElementById("rcmimportfile"))&&!h.value){alert(this.get_label("selectimportfile"));break}this.gui_objects.importform.submit();this.set_busy(!0,"importwait");this.lock_form(this.gui_objects.importform,!0)}else this.goto_url("import",this.env.source?"_target="+urlencode(this.env.source)+"&":"");break;case "export":0<
+this.contact_list.rowcount&&this.goto_url("export",{_source:this.env.source,_gid:this.env.group,_search:this.env.search_request});break;case "upload-photo":this.upload_contact_photo(b||this.gui_objects.uploadform);break;case "delete-photo":this.replace_contact_photo("-del-");break;case "preferences":case "identities":case "folders":this.goto_url("settings/"+a);break;case "undo":this.http_request("undo","",this.display_message("","loading"));break;default:h=a.replace(/-/g,"_"),this[h]&&"function"===
+typeof this[h]&&(e=this[h](b,d))}!1===this.triggerEvent("after"+a,b)&&(e=!1);this.triggerEvent("actionafter",{props:b,action:a});return!1===e?!1:d?!1:!0};this.enable_command=function(){var a,b,d=Array.prototype.slice.call(arguments),e=d.pop(),f;for(b=0;b<d.length;b++)if(f=d[b],"string"===typeof f)this.commands[f]=e,this.set_button(f,e?"act":"pas");else for(a in f)d.push(f[a])};this.set_busy=function(a,b,d){a&&b?(d=this.get_label(b),d==b&&(d="Loading..."),d=this.display_message(d,"loading")):!a&&d&&
+this.hide_message(d);this.busy=a;this.gui_objects.editform&&this.lock_form(this.gui_objects.editform,a);return d};this.gettext=this.get_label=function(a,b){return b&&this.labels[b+"."+a]?this.labels[b+"."+a]:this.labels[a]?this.labels[a]:a};this.switch_task=function(a){if(!(this.task===a&&"mail"!=a)){var b=this.get_task_url(a);"mail"==a&&(b+="&_mbox=INBOX");this.redirect(b)}};this.get_task_url=function(a,b){b||(b=this.env.comm_path);return b.replace(/_task=[a-z]+/,"_task="+a)};this.reload=function(a){this.is_framed()?
+parent.rcmail.reload(a):a?setTimeout(function(){rcmail.reload()},a):window.location&&(location.href=this.env.comm_path+(this.env.action?"&_action="+this.env.action:""))};this.add_url=function(a,b,d){d=urlencode(d);if(/(\?.*)$/.test(a)){var e=RegExp.$1,f=RegExp("((\\?|&)"+RegExp.escape(b)+"=[^&]*)"),e=f.test(e)?e.replace(f,RegExp.$2+b+"="+d):e+("&"+b+"="+d);return a.replace(/(\?.*)$/,e)}return a+"?"+b+"="+d};this.is_framed=function(){return this.env.framed&&parent.rcmail&&parent.rcmail!=this&&parent.rcmail.command};
+this.save_pref=function(a){var b={_name:a.name,_value:a.value};a.session&&(b._session=a.session);a.env&&(this.env[a.env]=a.value);this.http_post("save-pref",b)};this.html_identifier=function(a,b){a=String(a);return b?Base64.encode(a).replace(/=+$/,"").replace(/\+/g,"-").replace(/\//g,"_"):a.replace(this.identifier_expr,"_")};this.html_identifier_decode=function(a){for(a=String(a).replace(/-/g,"+").replace(/_/g,"/");a.length%4;)a+="=";return Base64.decode(a)};this.drag_menu=function(a,b){var d=rcube_event.get_modifier(a),
+e=this.gui_objects.message_dragmenu;return e&&d==SHIFT_KEY&&this.commands.copy?(d=rcube_event.get_mouse_pos(a),this.env.drag_target=b,$(e).css({top:d.y-10+"px",left:d.x-10+"px"}).show(),!0):!1};this.drag_menu_action=function(a){var b=this.gui_objects.message_dragmenu;b&&$(b).hide();this.command(a,this.env.drag_target);this.env.drag_target=null};this.drag_start=function(a){var b="mail"==this.task?this.env.mailboxes:this.env.contactfolders;this.drag_active=!0;this.preview_timer&&clearTimeout(this.preview_timer);
+this.preview_read_timer&&clearTimeout(this.preview_read_timer);if(this.gui_objects.folderlist&&b){this.initialBodyScrollTop=bw.ie?0:window.pageYOffset;this.initialListScrollTop=this.gui_objects.folderlist.parentNode.scrollTop;var d,a=$(this.gui_objects.folderlist);pos=a.offset();this.env.folderlist_coords={x1:pos.left,y1:pos.top,x2:pos.left+a.width(),y2:pos.top+a.height()};this.env.folder_coords=[];for(d in b)if(a=this.get_folder_li(d))if(b=a.firstChild.offsetHeight)pos=$(a.firstChild).offset(),this.env.folder_coords[d]=
+{x1:pos.left,y1:pos.top,x2:pos.left+a.firstChild.offsetWidth,y2:pos.top+b,on:0}}};this.drag_end=function(){this.drag_active=!1;this.env.last_folder_target=null;this.folder_auto_timer&&(clearTimeout(this.folder_auto_timer),this.folder_auto_expand=this.folder_auto_timer=null);if(this.gui_objects.folderlist&&this.env.folder_coords)for(var a in this.env.folder_coords)this.env.folder_coords[a].on&&$(this.get_folder_li(a)).removeClass("droptarget")};this.drag_move=function(a){if(this.gui_objects.folderlist&&
+this.env.folder_coords){var b,d,e,f,g;d="draglayernormal";a=rcube_event.get_mouse_pos(a);f=this.env.folderlist_coords;e=bw.ie?-document.documentElement.scrollTop:this.initialBodyScrollTop;var h=this.initialListScrollTop-this.gui_objects.folderlist.parentNode.scrollTop;this.contact_list&&this.contact_list.draglayer&&(g=this.contact_list.draglayer.attr("class"));a.y+=-h-e;if(a.x<f.x1||a.x>=f.x2||a.y<f.y1||a.y>=f.y2)this.env.last_folder_target&&($(this.get_folder_li(this.env.last_folder_target)).removeClass("droptarget"),
+this.env.folder_coords[this.env.last_folder_target].on=0,this.env.last_folder_target=null);else for(b in this.env.folder_coords)f=this.env.folder_coords[b],a.x>=f.x1&&a.x<f.x2&&a.y>=f.y1&&a.y<f.y2?(f=this.check_droptarget(b))?(d=this.get_folder_li(b),e=$(d.getElementsByTagName("div")[0]),e.hasClass("collapsed")?(this.folder_auto_timer&&clearTimeout(this.folder_auto_timer),this.folder_auto_expand=this.env.mailboxes[b].id,this.folder_auto_timer=setTimeout(function(){rcmail.command("collapse-folder",
+rcmail.folder_auto_expand);rcmail.drag_start(null)},1E3)):this.folder_auto_timer&&(clearTimeout(this.folder_auto_timer),this.folder_auto_expand=this.folder_auto_timer=null),$(d).addClass("droptarget"),this.env.folder_coords[b].on=1,this.env.last_folder_target=b,d="draglayer"+(1<f?"copy":"normal")):this.env.last_folder_target=null:f.on&&($(this.get_folder_li(b)).removeClass("droptarget"),this.env.folder_coords[b].on=0);d!=g&&(this.contact_list&&this.contact_list.draglayer)&&this.contact_list.draglayer.attr("class",
+d)}};this.collapse_folder=function(a){var b=this.get_folder_li(a,"",!0),d=$("div:first",b),e=$("ul:first",b);if(d.hasClass("collapsed"))e.show(),d.removeClass("collapsed").addClass("expanded"),d=RegExp("&"+urlencode(a)+"&"),this.env.collapsed_folders=this.env.collapsed_folders.replace(d,"");else if(d.hasClass("expanded"))e.hide(),d.removeClass("expanded").addClass("collapsed"),this.env.collapsed_folders=this.env.collapsed_folders+"&"+urlencode(a)+"&",0==this.env.mailbox.indexOf(a+this.env.delimiter)&&
+!$(b).hasClass("virtual")&&this.command("list",a);else return;if(bw.ie6||bw.ie7)if((d=b.nextSibling?b.nextSibling.getElementsByTagName("ul"):null)&&d.length&&(b=d[0])&&b.style&&"none"!=b.style.display)b.style.display="none",b.style.display="";this.command("save-pref",{name:"collapsed_folders",value:this.env.collapsed_folders});this.set_unread_count_display(a,!1)};this.doc_mouse_up=function(a){var b,d,e;if(!$(rcube_event.get_target(a)).closest(".ui-dialog, .ui-widget-overlay").length&&((d=this.message_list)?
+b=this.env.mailboxes:(d=this.contact_list)?b=this.env.contactfolders:this.ksearch_value&&this.ksearch_blur(),d&&!rcube_mouse_is_over(a,d.list.parentNode)&&d.blur(),this.drag_active&&(b&&this.env.last_folder_target)&&(b=b[this.env.last_folder_target],$(this.get_folder_li(this.env.last_folder_target)).removeClass("droptarget"),this.env.last_folder_target=null,d.draglayer.hide(),this.drag_menu(a,b)||this.command("moveto",b)),this.buttons_sel)){for(e in this.buttons_sel)"function"!==typeof e&&this.button_out(this.buttons_sel[e],
+e);this.buttons_sel={}}};this.click_on_list=function(){this.gui_objects.qsearchbox&&this.gui_objects.qsearchbox.blur();this.message_list?this.message_list.focus():this.contact_list&&this.contact_list.focus();return!0};this.msglist_select=function(a){this.preview_timer&&clearTimeout(this.preview_timer);this.preview_read_timer&&clearTimeout(this.preview_read_timer);var b=null!=a.get_single_selection();this.enable_command(this.env.message_commands,b);b&&(this.env.mailbox==this.env.drafts_mailbox?this.enable_command("reply",
+"reply-all","reply-list","forward","forward-attachment",!1):this.env.messages[a.get_single_selection()].ml||this.enable_command("reply-list",!1));this.enable_command("delete","moveto","copy","mark",0<a.selection.length?!0:!1);if(b||a.selection.length&&a.selection.length!=a.rowcount)this.select_all_mode=!1;b&&this.env.contentframe&&!a.multi_selecting&&!this.dummy_select?this.preview_timer=setTimeout(function(){j.msglist_get_preview()},200):this.env.contentframe&&this.show_contentframe(!1)};this.msglist_click=
+function(a){!a.multi_selecting&&this.env.contentframe&&(a.get_single_selection()&&(window.frames&&window.frames[this.env.contentframe])&&0<=window.frames[this.env.contentframe].location.href.indexOf(this.env.blankpage))&&(this.preview_timer&&clearTimeout(this.preview_timer),this.preview_read_timer&&clearTimeout(this.preview_read_timer),this.preview_timer=setTimeout(function(){j.msglist_get_preview()},200))};this.msglist_dbl_click=function(a){this.preview_timer&&clearTimeout(this.preview_timer);this.preview_read_timer&&
+clearTimeout(this.preview_read_timer);(a=a.get_single_selection())&&this.env.mailbox==this.env.drafts_mailbox?this.goto_url("compose","_draft_uid="+a+"&_mbox="+urlencode(this.env.mailbox),!0):a&&this.show_message(a,!1,!1)};this.msglist_keypress=function(a){a.modkey!=CONTROL_KEY&&(a.key_pressed==a.ENTER_KEY?this.command("show"):a.key_pressed==a.DELETE_KEY||a.key_pressed==a.BACKSPACE_KEY?this.command("delete"):33==a.key_pressed?this.command("previouspage"):34==a.key_pressed&&this.command("nextpage"))};
+this.msglist_get_preview=function(){var a=this.get_single_uid();a&&this.env.contentframe&&!this.drag_active?this.show_message(a,!1,!0):this.env.contentframe&&this.show_contentframe(!1)};this.msglist_expand=function(a){this.env.messages[a.uid]&&(this.env.messages[a.uid].expanded=a.expanded);$(a.obj)[a.expanded?"addClass":"removeClass"]("expanded")};this.msglist_set_coltypes=function(a){var b,d=a.list.tHead.rows[0].cells;this.env.coltypes=[];for(a=0;a<d.length;a++)d[a].id&&d[a].id.match(/^rcm/)&&(b=
+d[a].id.replace(/^rcm/,""),this.env.coltypes.push(b));if(0<=(a=$.inArray("flag",this.env.coltypes)))this.env.flagged_col=a;if(0<=(a=$.inArray("subject",this.env.coltypes)))this.env.subject_col=a;this.command("save-pref",{name:"list_cols",value:this.env.coltypes,session:"list_attrib/columns"})};this.check_droptarget=function(a){var b=!1,d=!1;"mail"==this.task?b=this.env.mailboxes[a]&&this.env.mailboxes[a].id!=this.env.mailbox&&!this.env.mailboxes[a].virtual:"settings"==this.task?b=a!=this.env.mailbox:
+"addressbook"==this.task&&(a!=this.env.source&&this.env.contactfolders[a])&&("group"==this.env.contactfolders[a].type?(d=this.env.contactfolders[a].source,b=this.env.contactfolders[a].id!=this.env.group&&!this.env.contactfolders[d].readonly,d=d!=this.env.source):(b=!this.env.contactfolders[a].readonly,d=!0));return b?d?2:1:0};this.init_message_row=function(a){var b,d=this,e=a.uid,f=(null!=this.env.status_col?"status":"msg")+"icn"+a.uid;e&&this.env.messages[e]&&$.extend(a,this.env.messages[e]);if(a.icon=
+document.getElementById(f))a.icon._row=a.obj,a.icon.onmousedown=function(a){d.command("toggle_status",this);rcube_event.cancel(a)};a.msgicon=null!=this.env.status_col?document.getElementById("msgicn"+a.uid):a.icon;if(null!=this.env.flagged_col&&(a.flagicon=document.getElementById("flagicn"+a.uid)))a.flagicon._row=a.obj,a.flagicon.onmousedown=function(a){d.command("toggle_flag",this);rcube_event.cancel(a)};if(!a.depth&&a.has_children&&(b=document.getElementById("rcmexpando"+a.uid)))a.expando=b,b.onmousedown=
+function(a){return d.expand_message_row(a,e)};this.triggerEvent("insertrow",{uid:e,row:a})};this.add_message_row=function(a,b,d,e){if(!this.gui_objects.messagelist||!this.message_list||d.mbox!=this.env.mailbox&&!d.skip_mbox_check)return!1;this.env.messages[a]||(this.env.messages[a]={});$.extend(this.env.messages[a],{deleted:d.deleted?1:0,replied:d.answered?1:0,unread:!d.seen?1:0,forwarded:d.forwarded?1:0,flagged:d.flagged?1:0,has_children:d.has_children?1:0,depth:d.depth?d.depth:0,unread_children:d.unread_children?
+d.unread_children:0,parent_uid:d.parent_uid?d.parent_uid:0,selected:this.select_all_mode||this.message_list.in_selection(a),ml:d.ml?1:0,ctype:d.ctype,flags:d.extra_flags});var f,g,h,i="",j="",k=this.message_list;h=k.rows;var l=this.env.messages[a],m="message"+(!d.seen?" unread":"")+(d.deleted?" deleted":"")+(d.flagged?" flagged":"")+(d.unread_children&&d.seen&&!this.env.autoexpand_threads?" unroot":"")+(l.selected?" selected":""),n=document.createElement("tr");n.id="rcmrow"+a;f="msgicon";null===this.env.status_col&&
+(f+=" status",d.deleted?f+=" deleted":d.seen?0<d.unread_children&&(f+=" unreadchildren"):f+=" unread");d.answered&&(f+=" replied");d.forwarded&&(f+=" forwarded");l.selected&&!k.in_selection(a)&&k.selection.push(a);if(this.env.threading)if(l.depth)i+='<span id="rcmtab'+a+'" class="branch" style="width:'+15*l.depth+'px;">&nbsp;&nbsp;</span>',h[l.parent_uid]&&!1===h[l.parent_uid].expanded||(0==this.env.autoexpand_threads||2==this.env.autoexpand_threads)&&(!h[l.parent_uid]||!h[l.parent_uid].expanded)?
+(n.style.display="none",l.expanded=!1):l.expanded=!0,m+=" thread expanded";else if(l.has_children){if(void 0===l.expanded&&(1==this.env.autoexpand_threads||2==this.env.autoexpand_threads&&l.unread_children))l.expanded=!0;j='<div id="rcmexpando'+a+'" class="'+(l.expanded?"expanded":"collapsed")+'">&nbsp;&nbsp;</div>';m+=" thread"+(l.expanded?" expanded":"")}i+='<span id="msgicn'+a+'" class="'+f+'">&nbsp;</span>';n.className=m;!bw.ie&&b.subject&&(h=d.mbox==this.env.drafts_mailbox?"_draft_uid":"_uid",
+b.subject='<a href="./?_task=mail&_action='+(d.mbox==this.env.drafts_mailbox?"compose":"show")+"&_mbox="+urlencode(d.mbox)+"&"+h+"="+a+'" onclick="return rcube_event.cancel(event)" onmouseover="rcube_webmail.long_subject_title(this,'+(l.depth+1)+')">'+b.subject+"</a>");for(g in this.env.coltypes)f=this.env.coltypes[g],h=document.createElement("td"),h.className=String(f).toLowerCase(),"flag"==f?(f=d.flagged?"flagged":"unflagged",f='<span id="flagicn'+a+'" class="'+f+'">&nbsp;</span>'):"attachment"==
+f?f=/application\/|multipart\/(m|signed)/.test(d.ctype)?'<span class="attachment">&nbsp;</span>':/multipart\/report/.test(d.ctype)?'<span class="report">&nbsp;</span>':"&nbsp;":"status"==f?(f=d.deleted?"deleted":d.seen?0<d.unread_children?"unreadchildren":"msgicon":"unread",f='<span id="statusicn'+a+'" class="'+f+'">&nbsp;</span>'):"threads"==f?f=j:"subject"==f?(bw.ie&&(h.onmouseover=function(){rcube_webmail.long_subject_title_ie(this,l.depth+1)},bw.ie8&&(i="<span></span>"+i)),f=i+b[f]):f="priority"==
+f?0<d.prio&&6>d.prio?'<span class="prio'+d.prio+'">&nbsp;</span>':"&nbsp;":b[f],h.innerHTML=f,n.appendChild(h);k.insert_row(n,e);e&&(this.env.pagesize&&k.rowcount>this.env.pagesize)&&(a=k.get_last_row(),k.remove_row(a),k.clear_selection(a))};this.set_list_sorting=function(a,b){$("#rcm"+this.env.sort_col).removeClass("sorted"+this.env.sort_order.toUpperCase());a&&$("#rcm"+a).addClass("sorted"+b);this.env.sort_col=a;this.env.sort_order=b};this.set_list_options=function(a,b,d,e){var f,g="";void 0===
+b&&(b=this.env.sort_col);d||(d=this.env.sort_order);if(this.env.sort_col!=b||this.env.sort_order!=d)f=1,this.set_list_sorting(b,d);this.env.threading!=e&&(f=1,g+="&_threads="+e);if(a&&a.length){for(var h,i,j=[],k=this.env.coltypes,e=0;e<k.length;e++)i=k[e],h=$.inArray(i,a),-1!=h&&(j.push(i),delete a[h]);for(e=0;e<a.length;e++)a[e]&&j.push(a[e]);j.join()!=k.join()&&(f=1,g+="&_cols="+j.join(","))}f&&this.list_mailbox("","",b+"_"+d,g)};this.show_message=function(a,b,d){if(a){var e=window,f=d?"preview":
+"show",g="&_action="+f+"&_uid="+a+"&_mbox="+urlencode(this.env.mailbox);d&&(this.env.contentframe&&window.frames&&window.frames[this.env.contentframe])&&(e=window.frames[this.env.contentframe],g+="&_framed=1");b&&(g+="&_safe=1");this.env.search_request&&(g+="&_search="+this.env.search_request);"preview"==f&&0<=String(e.location.href).indexOf(g)?this.show_contentframe(!0):(this.location_href(this.env.comm_path+g,e,!0),"preview"==f&&(this.message_list&&this.message_list.rows[a]&&this.message_list.rows[a].unread&&
+0<=this.env.preview_pane_mark_read)&&(this.preview_read_timer=setTimeout(function(){j.set_message(a,"unread",!1);j.update_thread_root(a,"read");j.env.unread_counts[j.env.mailbox]&&(j.env.unread_counts[j.env.mailbox]-=1,j.set_unread_count(j.env.mailbox,j.env.unread_counts[j.env.mailbox],"INBOX"==j.env.mailbox));0<j.env.preview_pane_mark_read&&j.http_post("mark","_uid="+a+"&_flag=read&_quiet=1")},1E3*this.env.preview_pane_mark_read)))}};this.show_contentframe=function(a){var b,d;if(this.env.contentframe&&
+(b=$("#"+this.env.contentframe))&&b.length)if(!a&&(d=window.frames[this.env.contentframe]))d.location&&0>d.location.href.indexOf(this.env.blankpage)&&(d.location.href=this.env.blankpage);else if(!bw.safari&&!bw.konq)b[a?"show":"hide"]();!a&&this.busy&&this.set_busy(!1,null,this.env.frame_lock)};this.lock_frame=function(){this.env.frame_lock||((this.is_framed()?parent.rcmail:this).env.frame_lock=this.set_busy(!0,"loading"))};this.list_page=function(a){"next"==a?a=this.env.current_page+1:"last"==a?
+a=this.env.pagecount:"prev"==a&&1<this.env.current_page?a=this.env.current_page-1:"first"==a&&1<this.env.current_page&&(a=1);0<a&&a<=this.env.pagecount&&(this.env.current_page=a,"addressbook"==this.task||this.contact_list?this.list_contacts(this.env.source,this.env.group,a):"mail"==this.task&&this.list_mailbox(this.env.mailbox,a))};this.filter_mailbox=function(a){var b=this.set_busy(!0,"searching");this.clear_message_list();this.env.current_page=1;this.http_request("search",this.search_params(!1,
+a),b)};this.list_mailbox=function(a,b,d,e){var f="",g=window;a||(a=this.env.mailbox?this.env.mailbox:"INBOX");e&&(f+=e);d&&(f+="&_sort="+d);this.env.search_request&&(f+="&_search="+this.env.search_request);this.env.mailbox!=a&&(b=1,this.env.current_page=b,this.select_all_mode=!1);this.clear_message_list();if(a!=this.env.mailbox||a==this.env.mailbox&&!b&&!d)f+="&_refresh=1";this.select_folder(a,"",!0);this.unmark_folder(a,"recent","",!0);this.env.mailbox=a;this.gui_objects.messagelist?this.list_mailbox_remote(a,
+b,f):(this.env.contentframe&&(window.frames&&window.frames[this.env.contentframe])&&(g=window.frames[this.env.contentframe],f+="&_framed=1"),a&&(this.set_busy(!0,"loading"),this.location_href(this.env.comm_path+"&_mbox="+urlencode(a)+(b?"&_page="+b:"")+f,g)))};this.clear_message_list=function(){this.env.messages={};this.last_selected=0;this.show_contentframe(!1);this.message_list&&this.message_list.clear(!0)};this.list_mailbox_remote=function(a,b,d){this.message_list.clear();a="_mbox="+urlencode(a)+
 (b?"&_page="+b:"");b=this.set_busy(!0,"loading");this.http_request("list",a+d,b)};this.update_selection=function(){var a=this.message_list.selection,b=this.message_list.rows,d,e=[];for(d in a)b[a[d]]&&e.push(a[d]);this.message_list.selection=e};this.expand_unread=function(){for(var a,b=this.gui_objects.messagelist.tBodies[0].firstChild;b;){if(1==b.nodeType&&(a=this.message_list.rows[b.uid])&&a.unread_children)this.message_list.expand_all(a),this.set_unread_children(a.uid);b=b.nextSibling}return!1};
 this.expand_message_row=function(a,b){var d=this.message_list.rows[b];d.expanded=!d.expanded;this.set_unread_children(b);d.expanded=!d.expanded;this.message_list.expand_row(a,b)};this.expand_threads=function(){if(this.env.threading&&this.env.autoexpand_threads&&this.message_list)switch(this.env.autoexpand_threads){case 2:this.expand_unread();break;case 1:this.message_list.expand_all()}};this.init_threads=function(a,b){if(b&&b!=this.env.mailbox)return!1;for(var d=0,e=a.length;d<e;d++)this.add_tree_icons(a[d]);
-this.expand_threads()};this.add_tree_icons=function(a){var b,d,e,f,h=[],g=[],k,j=this.message_list.rows;for(k=a?j[a]?j[a].obj:null:this.message_list.list.tBodies[0].firstChild;k;){if(1==k.nodeType&&(d=j[k.uid]))if(d.depth){for(b=h.length-1;0<=b&&!(e=h[b].length,e>d.depth?(f=e-d.depth,h[b][f]&2||(h[b][f]=h[b][f]?h[b][f]+2:2)):e==d.depth&&(h[b][0]&2||(h[b][0]+=2)),d.depth>e);b--);h.push(Array(d.depth));h[h.length-1][0]=1;g.push(d.uid)}else{if(h.length){for(b in h)this.set_tree_icons(g[b],h[b]);h=[];
-g=[]}if(a&&k!=j[a].obj)break}k=k.nextSibling}if(h.length)for(b in h)this.set_tree_icons(g[b],h[b])};this.set_tree_icons=function(a,b){var d,e=[],f="",h=b.length;for(d=0;d<h;d++)2<b[d]?e.push({"class":"l3",width:15}):1<b[d]?e.push({"class":"l2",width:15}):0<b[d]?e.push({"class":"l1",width:15}):e.length&&!e[e.length-1]["class"]?e[e.length-1].width+=15:e.push({"class":null,width:15});for(d=e.length-1;0<=d;d--)f=e[d]["class"]?f+('<div class="tree '+e[d]["class"]+'" />'):f+('<div style="width:'+e[d].width+
-'px" />');f&&$("#rcmtab"+a).html(f)};this.update_thread_root=function(a,b){if(this.env.threading){var d=this.message_list.find_root(a);if(a!=d){var e=this.message_list.rows[d];if("read"==b&&e.unread_children)e.unread_children--;else if("unread"==b&&e.has_children)e.unread_children=e.unread_children?e.unread_children+1:1;else return;this.set_message_icon(d);this.set_unread_children(d)}}};this.update_thread=function(a){if(!this.env.threading)return 0;var b,d=0,e=this.message_list.rows,f=e[a],h=e[a].depth,
-g=[];f.depth?f.unread&&(a=this.message_list.find_root(a),e[a].unread_children--,this.set_unread_children(a)):d--;a=f.parent_uid;for(f=f.obj.nextSibling;f;){if(1==f.nodeType&&(b=e[f.uid])){if(!b.depth||b.depth<=h)break;b.depth--;$("#rcmtab"+b.uid).width(15*b.depth).html("");b.depth?(b.depth==h&&(b.parent_uid=a),b.unread&&g.length&&g[g.length-1].unread_children++):(d++,b.parent_uid=0,b.has_children&&($("#rcmrow"+b.uid+" .leaf:first").attr("id","rcmexpando"+b.uid).attr("class","none"!=b.obj.style.display?
-"expanded":"collapsed").bind("mousedown",{uid:b.uid,p:this},function(a){return a.data.p.expand_message_row(a,a.data.uid)}),b.unread_children=0,g.push(b)),"none"==b.obj.style.display&&$(b.obj).show())}f=f.nextSibling}for(b=0;b<g.length;b++)this.set_unread_children(g[b].uid);return d};this.delete_excessive_thread_rows=function(){for(var a=this.message_list.rows,b=this.message_list.list.tBodies[0].firstChild,d=this.env.pagesize+1;b;){if(1==b.nodeType&&(r=a[b.uid]))!r.depth&&d&&d--,d||this.message_list.remove_row(b.uid);
+this.expand_threads()};this.add_tree_icons=function(a){var b,d,e,f,g=[],h=[],i,j=this.message_list.rows;for(i=a?j[a]?j[a].obj:null:this.message_list.list.tBodies[0].firstChild;i;){if(1==i.nodeType&&(d=j[i.uid]))if(d.depth){for(b=g.length-1;0<=b&&!(e=g[b].length,e>d.depth?(f=e-d.depth,g[b][f]&2||(g[b][f]=g[b][f]?g[b][f]+2:2)):e==d.depth&&(g[b][0]&2||(g[b][0]+=2)),d.depth>e);b--);g.push(Array(d.depth));g[g.length-1][0]=1;h.push(d.uid)}else{if(g.length){for(b in g)this.set_tree_icons(h[b],g[b]);g=[];
+h=[]}if(a&&i!=j[a].obj)break}i=i.nextSibling}if(g.length)for(b in g)this.set_tree_icons(h[b],g[b])};this.set_tree_icons=function(a,b){var d,e=[],f="",g=b.length;for(d=0;d<g;d++)2<b[d]?e.push({"class":"l3",width:15}):1<b[d]?e.push({"class":"l2",width:15}):0<b[d]?e.push({"class":"l1",width:15}):e.length&&!e[e.length-1]["class"]?e[e.length-1].width+=15:e.push({"class":null,width:15});for(d=e.length-1;0<=d;d--)f=e[d]["class"]?f+('<div class="tree '+e[d]["class"]+'" />'):f+('<div style="width:'+e[d].width+
+'px" />');f&&$("#rcmtab"+a).html(f)};this.update_thread_root=function(a,b){if(this.env.threading){var d=this.message_list.find_root(a);if(a!=d){var e=this.message_list.rows[d];if("read"==b&&e.unread_children)e.unread_children--;else if("unread"==b&&e.has_children)e.unread_children=e.unread_children?e.unread_children+1:1;else return;this.set_message_icon(d);this.set_unread_children(d)}}};this.update_thread=function(a){if(!this.env.threading)return 0;var b,d=0,e=this.message_list.rows,f=e[a],g=e[a].depth,
+h=[];f.depth?f.unread&&(a=this.message_list.find_root(a),e[a].unread_children--,this.set_unread_children(a)):d--;a=f.parent_uid;for(f=f.obj.nextSibling;f;){if(1==f.nodeType&&(b=e[f.uid])){if(!b.depth||b.depth<=g)break;b.depth--;$("#rcmtab"+b.uid).width(15*b.depth).html("");b.depth?(b.depth==g&&(b.parent_uid=a),b.unread&&h.length&&h[h.length-1].unread_children++):(d++,b.parent_uid=0,b.has_children&&($("#rcmrow"+b.uid+" .leaf:first").attr("id","rcmexpando"+b.uid).attr("class","none"!=b.obj.style.display?
+"expanded":"collapsed").bind("mousedown",{uid:b.uid,p:this},function(a){return a.data.p.expand_message_row(a,a.data.uid)}),b.unread_children=0,h.push(b)),"none"==b.obj.style.display&&$(b.obj).show())}f=f.nextSibling}for(b=0;b<h.length;b++)this.set_unread_children(h[b].uid);return d};this.delete_excessive_thread_rows=function(){for(var a=this.message_list.rows,b=this.message_list.list.tBodies[0].firstChild,d=this.env.pagesize+1;b;){if(1==b.nodeType&&(r=a[b.uid]))!r.depth&&d&&d--,d||this.message_list.remove_row(b.uid);
 b=b.nextSibling}};this.set_message_icon=function(a){var b=this.message_list.rows[a];if(!b)return!1;b.icon&&(a="msgicon",b.deleted?a+=" deleted":b.unread?a+=" unread":b.unread_children&&(a+=" unreadchildren"),b.msgicon==b.icon&&(b.replied&&(a+=" replied"),b.forwarded&&(a+=" forwarded"),a+=" status"),b.icon.className=a);b.msgicon&&b.msgicon!=b.icon&&(a="msgicon",!b.unread&&b.unread_children&&(a+=" unreadchildren"),b.replied&&(a+=" replied"),b.forwarded&&(a+=" forwarded"),b.msgicon.className=a);b.flagicon&&
 (a=b.flagged?"flagged":"unflagged",b.flagicon.className=a)};this.set_message_status=function(a,b,d){a=this.message_list.rows[a];if(!a)return!1;"unread"==b?a.unread=d:"deleted"==b?a.deleted=d:"replied"==b?a.replied=d:"forwarded"==b?a.forwarded=d:"flagged"==b&&(a.flagged=d)};this.set_message=function(a,b,d){var e=this.message_list.rows[a];if(!e)return!1;b&&this.set_message_status(a,b,d);b=$(e.obj);e.unread&&!b.hasClass("unread")?b.addClass("unread"):!e.unread&&b.hasClass("unread")&&b.removeClass("unread");
 e.deleted&&!b.hasClass("deleted")?b.addClass("deleted"):!e.deleted&&b.hasClass("deleted")&&b.removeClass("deleted");e.flagged&&!b.hasClass("flagged")?b.addClass("flagged"):!e.flagged&&b.hasClass("flagged")&&b.removeClass("flagged");this.set_unread_children(a);this.set_message_icon(a)};this.set_unread_children=function(a){a=this.message_list.rows[a];a.parent_uid||(!a.unread&&a.unread_children&&!a.expanded?$(a.obj).addClass("unroot"):$(a.obj).removeClass("unroot"))};this.copy_messages=function(a){a&&
 "object"===typeof a&&(a=a.id);if(a&&!(a==this.env.mailbox||!this.env.uid&&(!this.message_list||!this.message_list.get_selection().length))){var b=[],d=this.display_message(this.get_label("copyingmessage"),"loading"),a="&_target_mbox="+urlencode(a)+"&_from="+(this.env.action?this.env.action:"");if(this.env.uid)b[0]=this.env.uid;else{var e=this.message_list.get_selection(),f;for(f in e)b.push(e[f])}a+="&_uid="+this.uids_to_list(b);this.http_post("copy","_mbox="+urlencode(this.env.mailbox)+a,d)}};this.move_messages=
 function(a){a&&"object"===typeof a&&(a=a.id);if(a&&!(a==this.env.mailbox||!this.env.uid&&(!this.message_list||!this.message_list.get_selection().length))){var b=!1,a="&_target_mbox="+urlencode(a)+"&_from="+(this.env.action?this.env.action:"");"show"==this.env.action?b=this.set_busy(!0,"movingmessage"):this.show_contentframe(!1);this.enable_command(this.env.message_commands,!1);this._with_selected_messages("moveto",b,a)}};this.delete_messages=function(){var a,b,d,e=this.env.trash_mailbox,f=this.message_list,
-h=f?$.merge([],f.get_selection()):[];if(this.env.uid||h.length){b=0;for(d=h.length;b<d;b++)a=h[b],f.rows[a].has_children&&!f.rows[a].expanded&&f.select_childs(a);if(this.env.flag_for_deletion)return this.mark_message("delete"),!1;!e||this.env.mailbox==e?this.permanently_remove_messages():f&&f.modkey==SHIFT_KEY?confirm(this.get_label("deletemessagesconfirm"))&&this.permanently_remove_messages():this.move_messages(e);return!0}};this.permanently_remove_messages=function(){if(this.env.uid||this.message_list&&
-this.message_list.get_selection().length)this.show_contentframe(!1),this._with_selected_messages("delete",!1,"&_from="+(this.env.action?this.env.action:""))};this._with_selected_messages=function(a,b,d){var e=[],f=0;if(this.env.uid)e[0]=this.env.uid;else{var h,g,k,j=[],i=this.message_list.get_selection();h=0;for(len=i.length;h<len;h++)g=i[h],e.push(g),this.env.threading&&(f+=this.update_thread(g),k=this.message_list.find_root(g),k!=g&&0>$.inArray(k,j)&&j.push(k)),this.message_list.remove_row(g,this.env.display_next&&
-h==i.length-1);this.env.display_next||this.message_list.clear_selection();h=0;for(len=j.length;h<len;h++)this.add_tree_icons(j[h])}this.env.search_request&&(d+="&_search="+this.env.search_request);this.env.display_next&&this.env.next_uid&&(d+="&_next_uid="+this.env.next_uid);0>f?d+="&_count="+-1*f:0<f&&this.delete_excessive_thread_rows();d+="&_uid="+this.uids_to_list(e);b||(b=this.display_message(this.get_label("moveto"==a?"movingmessage":"deletingmessage"),"loading"));this.http_post(a,"_mbox="+urlencode(this.env.mailbox)+
-d,b)};this.mark_message=function(a,b){var d=[],e=[],f,h,g;g=this.message_list?this.message_list.get_selection():[];if(b)d[0]=b;else if(this.env.uid)d[0]=this.env.uid;else if(this.message_list){h=0;for(f=g.length;h<f;h++)d.push(g[h])}if(this.message_list){h=0;for(f=d.length;h<f;h++)g=d[h],("read"==a&&this.message_list.rows[g].unread||"unread"==a&&!this.message_list.rows[g].unread||"delete"==a&&!this.message_list.rows[g].deleted||"undelete"==a&&this.message_list.rows[g].deleted||"flagged"==a&&!this.message_list.rows[g].flagged||
-"unflagged"==a&&this.message_list.rows[g].flagged)&&e.push(g)}else e=d;if(e.length||this.select_all_mode)switch(a){case "read":case "unread":this.toggle_read_status(a,e);break;case "delete":case "undelete":this.toggle_delete_status(e);break;case "flagged":case "unflagged":this.toggle_flagged_status(a,d)}};this.toggle_read_status=function(a,b){var d,e=b.length,f="_uid="+this.uids_to_list(b)+"&_flag="+a,h=this.display_message(this.get_label("markingmessage"),"loading");for(d=0;d<e;d++)this.set_message(b[d],
-"unread","unread"==a?!0:!1);this.env.search_request&&(f+="&_search="+this.env.search_request);this.http_post("mark",f,h);for(d=0;d<e;d++)this.update_thread_root(b[d],a)};this.toggle_flagged_status=function(a,b){var d,e=b.length,f="_uid="+this.uids_to_list(b)+"&_flag="+a,h=this.display_message(this.get_label("markingmessage"),"loading");for(d=0;d<e;d++)this.set_message(b[d],"flagged","flagged"==a?!0:!1);this.env.search_request&&(f+="&_search="+this.env.search_request);this.http_post("mark",f,h)};this.toggle_delete_status=
-function(a){var b=a.length,d,e,f=!0,h=this.message_list?this.message_list.rows:[];if(1==b)return!h.length||h[a[0]]&&!h[a[0]].deleted?this.flag_as_deleted(a):this.flag_as_undeleted(a),!0;for(d=0;d<b;d++)if(e=a[d],h[e]&&!h[e].deleted){f=!1;break}f?this.flag_as_undeleted(a):this.flag_as_deleted(a);return!0};this.flag_as_undeleted=function(a){var b,d=a.length,e="_uid="+this.uids_to_list(a)+"&_flag=undelete",f=this.display_message(this.get_label("markingmessage"),"loading");for(b=0;b<d;b++)this.set_message(a[b],
-"deleted",!1);this.env.search_request&&(e+="&_search="+this.env.search_request);this.http_post("mark",e,f);return!0};this.flag_as_deleted=function(a){for(var b="",d=[],b=this.message_list?this.message_list.rows:[],e=0,f=0,h=a.length;f<h;f++)uid=a[f],b[uid]&&(b[uid].unread&&(d[d.length]=uid),this.env.skip_deleted?(e+=this.update_thread(uid),this.message_list.remove_row(uid,this.env.display_next&&f==this.message_list.selection.length-1)):this.set_message(uid,"deleted",!0));this.env.skip_deleted&&this.message_list&&
-(this.env.display_next||this.message_list.clear_selection(),0>e||0<e&&this.delete_excessive_thread_rows());b="&_from="+(this.env.action?this.env.action:"");lock=this.display_message(this.get_label("markingmessage"),"loading");d.length&&(b+="&_ruid="+this.uids_to_list(d));this.env.skip_deleted&&this.env.display_next&&this.env.next_uid&&(b+="&_next_uid="+this.env.next_uid);this.env.search_request&&(b+="&_search="+this.env.search_request);this.http_post("mark","_uid="+this.uids_to_list(a)+"&_flag=delete"+
-b,lock);return!0};this.flag_deleted_as_read=function(a){var b,d,e,f=this.message_list?this.message_list.rows:[],a=(""+a).split(",");d=0;for(e=a.length;d<e;d++)b=a[d],f[b]&&this.set_message(b,"unread",!1)};this.uids_to_list=function(a){return this.select_all_mode?"*":a.join(",")};this.expunge_mailbox=function(a){var b,d="_mbox="+urlencode(a);a==this.env.mailbox&&(b=this.set_busy(!0,"loading"),d+="&_reload=1",this.env.search_request&&(d+="&_search="+this.env.search_request));this.http_post("expunge",
-d,b)};this.purge_mailbox=function(a){var b=!1,d="_mbox="+urlencode(a);if(!confirm(this.get_label("purgefolderconfirm")))return!1;a==this.env.mailbox&&(b=this.set_busy(!0,"loading"),d+="&_reload=1");this.http_post("purge",d,b)};this.purge_mailbox_test=function(){return this.env.messagecount&&(this.env.mailbox==this.env.trash_mailbox||this.env.mailbox==this.env.junk_mailbox||this.env.mailbox.match("^"+RegExp.escape(this.env.trash_mailbox)+RegExp.escape(this.env.delimiter))||this.env.mailbox.match("^"+
-RegExp.escape(this.env.junk_mailbox)+RegExp.escape(this.env.delimiter)))};this.login_user_keyup=function(a){var b=rcube_event.get_keycode(a),d=$("#rcmloginpwd");return 13==b&&d.length&&!d.val()?(d.focus(),rcube_event.cancel(a)):!0};this.init_messageform=function(){if(!this.gui_objects.messageform)return!1;var a=$("[name='_from']"),b=$("[name='_to']"),d=$("input[name='_subject']"),e=$("[name='_message']").get(0),f="1"==$("input[name='_is_html']").val(),h=["cc","bcc","replyto","followupto"],g;0<this.env.autocomplete_threads&&
-(g={threads:this.env.autocomplete_threads,sources:this.env.autocomplete_sources});this.init_address_input_events(b,g);for(var k in h)this.init_address_input_events($("[name='_"+h[k]+"']"),g);f||(this.set_caret_pos(e,this.env.top_posting?0:$(e).val().length),"select-one"==a.prop("type")&&""==$("input[name='_draft_saveid']").val()&&this.change_identity(a[0]));""==b.val()?b.focus():""==d.val()?d.focus():e&&e.focus();this.env.compose_focus_elem=document.activeElement;this.compose_field_hash(!0);this.auto_save_start()};
-this.init_address_input_events=function(a,b){this.env.recipients_delimiter=this.env.recipients_separator+" ";a[bw.ie||bw.safari||bw.chrome?"keydown":"keypress"](function(a){return i.ksearch_keydown(a,this,b)}).attr("autocomplete","off")};this.check_compose_input=function(a){var b,d=$("[name='_to']"),e=$("[name='_cc']"),f=$("[name='_bcc']"),h=$("[name='_from']"),g=$("[name='_subject']"),k=$("[name='_message']");if("text"==h.prop("type")&&!rcube_check_email(h.val(),!0))return alert(this.get_label("nosenderwarning")),
-h.focus(),!1;e=d.val()?d.val():e.val()?e.val():f.val();if(!rcube_check_email(e.replace(/^\s+/,"").replace(/[\s,;]+$/,""),!0))return alert(this.get_label("norecipientwarning")),d.focus(),!1;for(var j in this.env.attachments)if("object"===typeof this.env.attachments[j]&&!this.env.attachments[j].complete)return alert(this.get_label("notuploadedwarning")),!1;if(""==g.val()){b=$('<div class="prompt">').html('<div class="message">'+this.get_label("nosubjectwarning")+"</div>").appendTo(document.body);var l=
-$("<input>").attr("type","text").attr("size",30).appendTo(b).val(this.get_label("nosubject")),d={};d[this.get_label("cancel")]=function(){g.focus();$(this).dialog("close")};d[this.get_label("sendmessage")]=function(){g.val(l.val());$(this).dialog("close");i.command(a,{nocheck:!0})};b.dialog({modal:!0,resizable:!1,buttons:d,close:function(){$(this).remove()}});l.select();return!1}this.stop_spellchecking();window.tinyMCE&&(b=tinyMCE.get(this.env.composebody));if(!b&&""==k.val()&&!confirm(this.get_label("nobodywarning")))return k.focus(),
-!1;if(b){if(!b.getContent()&&!confirm(this.get_label("nobodywarning")))return b.focus(),!1;tinyMCE.triggerSave()}return!0};this.toggle_editor=function(a){if("html"==a.mode)this.display_spellcheck_controls(!1),this.plain2html($("#"+a.id).val(),a.id),tinyMCE.execCommand("mceAddControl",!1,a.id);else{var b=tinyMCE.get(a.id);b.plugins.spellchecker&&b.plugins.spellchecker.active&&b.execCommand("mceSpellCheck",!1);if(b=b.getContent()){if(!confirm(this.get_label("editorwarning")))return!1;this.html2plain(b,
-a.id)}tinyMCE.execCommand("mceRemoveControl",!1,a.id);this.display_spellcheck_controls(!0)}return!0};this.stop_spellchecking=function(){var a;if(window.tinyMCE&&(a=tinyMCE.get(this.env.composebody)))a.plugins.spellchecker&&a.plugins.spellchecker.active&&a.execCommand("mceSpellCheck");else if((a=this.env.spellcheck)&&!this.spellcheck_ready)$(a.spell_span).trigger("click"),this.set_spellcheck_state("ready")};this.display_spellcheck_controls=function(a){this.env.spellcheck&&(a||this.stop_spellchecking(),
-$(this.env.spellcheck.spell_container)[a?"show":"hide"]())};this.set_spellcheck_state=function(a){this.spellcheck_ready="ready"==a||"no_error_found"==a;this.enable_command("spellcheck",this.spellcheck_ready)};this.spellcheck_lang=function(){var a;if(window.tinyMCE&&(a=tinyMCE.get(this.env.composebody))&&a.plugins.spellchecker)return a.plugins.spellchecker.selectedLang;if(this.env.spellcheck)return GOOGIE_CUR_LANG};this.spellcheck_resume=function(a,b){if(a){var d=tinyMCE.get(this.env.composebody),
-e=d.plugins.spellchecker;e.active=1;e._markWords(b);d.nodeChanged()}else{var e=this.env.spellcheck;e.prepare(!1,!0);e.processData(b)}};this.set_draft_id=function(a){$("input[name='_draft_saveid']").val(a)};this.auto_save_start=function(){this.env.draft_autosave&&(this.save_timer=self.setTimeout(function(){i.command("savedraft")},1E3*this.env.draft_autosave));this.busy=!1};this.compose_field_hash=function(a){var b,d="",e=$("[name='_to']").val(),f=$("[name='_cc']").val(),h=$("[name='_bcc']").val(),
-g=$("[name='_subject']").val();e&&(d+=e+":");f&&(d+=f+":");h&&(d+=h+":");g&&(d+=g+":");d=window.tinyMCE&&(b=tinyMCE.get(this.env.composebody))?d+b.getContent():d+$("[name='_message']").val();if(this.env.attachments)for(var k in this.env.attachments)d+=k;a&&(this.cmp_hash=d);return d};this.change_identity=function(a,b){if(!a||!a.options)return!1;b||(b=this.env.show_sig);var d,e=-1,f=a.options[a.selectedIndex].value,h=$("[name='_message']"),g=h.val(),k="1"==$("input[name='_is_html']").val(),j=this.env.identity;
-d=this.env.sig_above&&("reply"==this.env.compose_mode||"forward"==this.env.compose_mode)?"---":"-- ";this.env.signatures&&this.env.signatures[f]?(this.enable_command("insert-sig",!0),this.env.compose_commands.push("insert-sig")):this.enable_command("insert-sig",!1);if(k){if(b&&this.env.signatures&&(e=tinyMCE.get(this.env.composebody),h=e.dom.get("_rc_sig"),h||(j=e.getBody(),g=e.getDoc(),h=g.createElement("div"),h.setAttribute("id","_rc_sig"),this.env.sig_above?(e.getWin().focus(),e=e.selection.getNode(),
-"BODY"==e.nodeName?(j.insertBefore(h,j.firstChild),j.insertBefore(g.createElement("br"),j.firstChild)):(j.insertBefore(h,e.nextSibling),j.insertBefore(g.createElement("br"),e.nextSibling))):(bw.ie&&j.appendChild(g.createElement("br")),j.appendChild(h))),this.env.signatures[f]))this.env.signatures[f].is_html?(j=this.env.signatures[f].text,this.env.signatures[f].plain_text.match(/^--[ -]\r?\n/m)||(j=d+"<br />"+j)):(j=this.env.signatures[f].text,j.match(/^--[ -]\r?\n/m)||(j=d+"\n"+j),j="<pre>"+j+"</pre>"),
-h.innerHTML=j}else b&&j&&this.env.signatures&&this.env.signatures[j]&&(j=this.env.signatures[j].is_html?this.env.signatures[j].plain_text:this.env.signatures[j].text,j=j.replace(/\r\n/g,"\n"),j.match(/^--[ -]\n/m)||(j=d+"\n"+j),e=this.env.sig_above?g.indexOf(j):g.lastIndexOf(j),0<=e&&(g=g.substring(0,e)+g.substring(e+j.length,g.length))),b&&this.env.signatures&&this.env.signatures[f]?(j=this.env.signatures[f].is_html?this.env.signatures[f].plain_text:this.env.signatures[f].text,j=j.replace(/\r\n/g,
-"\n"),j.match(/^--[ -]\n/m)||(j=d+"\n"+j),this.env.sig_above?0<=e?(g=g.substring(0,e)+j+g.substring(e,g.length),d=e-1):(pos=this.get_caret_pos(h.get(0)))?(g=g.substring(0,pos)+"\n"+j+"\n\n"+g.substring(pos,g.length),d=pos):(d=0,g="\n\n"+j+"\n\n"+g.replace(/^[\r\n]+/,"")):(g=g.replace(/[\r\n]+$/,""),d=!this.env.top_posting&&g.length?g.length+1:0,g+="\n\n"+j)):d=this.env.top_posting?0:g.length,h.val(g),this.set_caret_pos(h.get(0),d);this.env.identity=f;return!0};this.upload_file=function(a){if(!a)return!1;
-var b,d=0,e=$("input[type=file]",a).get(0),f=e.files?e.files.length:e.value?1:0;if(f){if(e.files&&this.env.max_filesize&&this.env.filesizeerror){for(b=0;b<f;b++)d+=e.files[b].size;if(d&&d>this.env.max_filesize){this.display_message(this.env.filesizeerror,"error");return}}b=this.async_upload_form(a,"upload",function(a){var b,d="";try{this.contentDocument?b=this.contentDocument:this.contentWindow&&(b=this.contentWindow.document),d=b.childNodes[0].innerHTML}catch(e){}if(!d.match(/add2attachment/)&&(!bw.opera||
-rcmail.env.uploadframe&&rcmail.env.uploadframe==a.data.ts))d.match(/display_message/)||rcmail.display_message(rcmail.get_label("fileuploaderror"),"error"),rcmail.remove_from_attachment_list(a.data.ts);bw.opera&&(rcmail.env.uploadframe=a.data.ts)});f="<span>"+this.get_label("uploading"+(1<f?"many":""))+"</span>";d=b.replace(/^rcmupload/,"");this.env.loadingicon&&(f='<img src="'+this.env.loadingicon+'" alt="" />'+f);this.env.cancelicon&&(f='<a title="'+this.get_label("cancel")+'" onclick="return rcmail.cancel_attachment_upload(\''+
-d+"', '"+b+'\');" href="#cancelupload"><img src="'+this.env.cancelicon+'" alt="" /></a>'+f);this.add2attachment_list(d,{name:"",html:f,complete:!1});this.env.upload_progress_time&&this.upload_progress_start("upload",d)}this.gui_objects.attachmentform=a;return!0};this.add2attachment_list=function(a,b,d){if(!this.gui_objects.attachmentlist)return!1;var e,f=$("<li>").attr("id",a).html(b.html);d&&(e=document.getElementById(d))?f.replaceAll(e):f.appendTo(this.gui_objects.attachmentlist);d&&this.env.attachments[d]&&
-delete this.env.attachments[d];this.env.attachments[a]=b;return!0};this.remove_from_attachment_list=function(a){delete this.env.attachments[a];$("#"+a).remove()};this.remove_attachment=function(a){a&&this.env.attachments[a]&&this.http_post("remove-attachment",{_id:this.env.compose_id,_file:a});return!0};this.cancel_attachment_upload=function(a,b){if(!a||!b)return!1;this.remove_from_attachment_list(a);$("iframe[name='"+b+"']").remove();return!1};this.upload_progress_start=function(a,b){window.setTimeout(function(){rcmail.http_request(a,
-{_progress:b})},1E3*this.env.upload_progress_time)};this.upload_progress_update=function(a){var b=$("#"+a.name+"> span");b.length&&a.text&&(b.text(a.text),a.done||this.upload_progress_start(a.action,a.name))};this.add_contact=function(a){a&&this.http_post("addcontact","_address="+a);return!0};this.qsearch=function(a){if(""!=a){var b=this.set_busy(!0,"searching");this.message_list?this.clear_message_list():this.contact_list&&this.list_contacts_clear();this.env.current_page=1;r=this.http_request("search",
-this.search_params(a)+(this.env.source?"&_source="+urlencode(this.env.source):"")+(this.env.group?"&_gid="+urlencode(this.env.group):""),b);this.env.qsearch={lock:b,request:r}}};this.search_params=function(a,b){var d,e=[],f=[],h=this.env.search_mods,g=this.env.mailbox;!b&&this.gui_objects.search_filter&&(b=this.gui_objects.search_filter.value);!a&&this.gui_objects.qsearchbox&&(a=this.gui_objects.qsearchbox.value);b&&e.push("_filter="+urlencode(b));if(a&&(e.push("_q="+urlencode(a)),h&&this.message_list&&
-(h=h[g]?h[g]:h["*"]),h)){for(d in h)f.push(d);e.push("_headers="+f.join(","))}g&&e.push("_mbox="+urlencode(g));return e.join("&")};this.reset_qsearch=function(){this.gui_objects.qsearchbox&&(this.gui_objects.qsearchbox.value="");this.env.qsearch&&this.abort_request(this.env.qsearch);this.env.qsearch=null;this.env.search_request=null;this.env.search_id=null};this.sent_successfully=function(a,b){this.display_message(b,a);window.setTimeout(function(){i.list_mailbox()},500)};this.ksearch_keydown=function(a,
-b,d){this.ksearch_timer&&clearTimeout(this.ksearch_timer);var e=rcube_event.get_keycode(a),f=rcube_event.get_modifier(a);switch(e){case 38:case 40:if(!this.ksearch_pane)break;e=38==e?1:0;b=document.getElementById("rcmksearchSelected");b||(b=this.ksearch_pane.__ul.firstChild);b&&this.ksearch_select(e?b.previousSibling:b.nextSibling);return rcube_event.cancel(a);case 9:if(f==SHIFT_KEY||!this.ksearch_visible()){this.ksearch_hide();return}case 13:if(!this.ksearch_visible())return!1;this.insert_recipient(this.ksearch_selected);
-this.ksearch_hide();return rcube_event.cancel(a);case 27:this.ksearch_hide();return;case 37:case 39:if(f!=SHIFT_KEY)return}this.ksearch_timer=window.setTimeout(function(){i.ksearch_get_results(d)},200);this.ksearch_input=b;return!0};this.ksearch_visible=function(){return null!==this.ksearch_selected&&void 0!==this.ksearch_selected&&this.ksearch_value};this.ksearch_select=function(a){var b=$("#rcmksearchSelected");b[0]&&a&&b.removeAttr("id").removeClass("selected");a&&($(a).attr("id","rcmksearchSelected").addClass("selected"),
-this.ksearch_selected=a._rcm_id)};this.insert_recipient=function(a){if(!(null===a||!this.env.contacts[a]||!this.ksearch_input)){var b=this.ksearch_input.value,d=this.get_caret_pos(this.ksearch_input),d=b.lastIndexOf(this.ksearch_value,d),e=!1,f="",h=b.substring(0,d),b=b.substring(d+this.ksearch_value.length,b.length);this.ksearch_destroy();"object"===typeof this.env.contacts[a]&&this.env.contacts[a].id?(f+=this.env.contacts[a].name+this.env.recipients_delimiter,this.group2expand=$.extend({},this.env.contacts[a]),
-this.group2expand.input=this.ksearch_input,this.http_request("mail/group-expand","_source="+urlencode(this.env.contacts[a].source)+"&_gid="+urlencode(this.env.contacts[a].id),!1)):"string"===typeof this.env.contacts[a]&&(f=this.env.contacts[a]+this.env.recipients_delimiter,e=!0);this.ksearch_input.value=h+f+b;d+=f.length;this.ksearch_input.setSelectionRange&&this.ksearch_input.setSelectionRange(d,d);e&&this.triggerEvent("autocomplete_insert",{field:this.ksearch_input,insert:f})}};this.replace_group_recipients=
-function(a,b){this.group2expand&&this.group2expand.id==a&&(this.group2expand.input.value=this.group2expand.input.value.replace(this.group2expand.name,b),this.triggerEvent("autocomplete_insert",{field:this.group2expand.input,insert:b}),this.group2expand=null)};this.ksearch_get_results=function(a){var b=this.ksearch_input?this.ksearch_input.value:null;if(null!==b){this.ksearch_pane&&this.ksearch_pane.is(":visible")&&this.ksearch_pane.hide();var d=this.get_caret_pos(this.ksearch_input),e=b.lastIndexOf(this.env.recipients_separator,
-d-1),b=b.substring(e+1,d),e=this.env.autocomplete_min_length,d=this.ksearch_data,b=$.trim(b);if(b!=this.ksearch_value)if(this.ksearch_destroy(),b.length&&b.length<e)this.ksearch_info||(this.ksearch_info=this.display_message(this.get_label("autocompletechars").replace("$min",e)));else if(e=this.ksearch_value,this.ksearch_value=b,b.length&&(!e||!e.length||!(0==b.indexOf(e)&&(!d||!d.num)&&this.env.contacts&&!this.env.contacts.length))){var f,h,g,d=(new Date).getTime(),e=a&&a.threads?a.threads:1;f=a&&
-a.sources?a.sources:[];a=a&&a.action?a.action:"mail/autocomplete";this.ksearch_data={id:d,sources:f.slice(),action:a,locks:[],requests:[],num:f.length};for(f=0;f<e;f++){g=this.ksearch_data.sources.shift();if(1<e&&null===g)break;h=this.display_message(this.get_label("searching"),"loading");g=this.http_post(a,"_search="+urlencode(b)+"&_id="+d+(g?"&_source="+urlencode(g):""),h);this.ksearch_data.locks.push(h);this.ksearch_data.requests.push(g)}}}};this.ksearch_query_results=function(a,b,d){if(this.ksearch_value&&
-!(this.ksearch_input&&b!=this.ksearch_value)){var e,f,h,g,k,b=this.ksearch_value,j=this.ksearch_data,l=this.env.autocomplete_max?this.env.autocomplete_max:15;this.ksearch_pane||(h=$("<ul>"),this.ksearch_pane=$("<div>").attr("id","rcmKSearchpane").css({position:"absolute","z-index":3E4}).append(h).appendTo(document.body),this.ksearch_pane.__ul=h[0]);h=this.ksearch_pane.__ul;d&&this.ksearch_pane.data("reqid")==d?l-=h.childNodes.length:(this.ksearch_pane.data("reqid",d),h.innerHTML="",this.env.contacts=
-[],e=$(this.ksearch_input).offset(),this.ksearch_pane.css({left:e.left+"px",top:e.top+this.ksearch_input.offsetHeight+"px",display:"none"}));if(a&&(f=a.length))for(e=0;e<f&&0<l;e++)k="object"===typeof a[e]?a[e].name:a[e],g=document.createElement("LI"),g.innerHTML=k.replace(RegExp("("+RegExp.escape(b)+")","ig"),"##$1%%").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/##([^%]+)%%/g,"<b>$1</b>"),g.onmouseover=function(){i.ksearch_select(this)},g.onmouseup=function(){i.ksearch_click(this)},g._rcm_id=
-this.env.contacts.length+e,h.appendChild(g),l-=1;h.childNodes.length&&(this.ksearch_pane.show(),this.env.contacts.length||($("li:first",h).attr("id","rcmksearchSelected").addClass("selected"),this.ksearch_selected=0));f&&(this.env.contacts=this.env.contacts.concat(a));if(j.id==d)if(j.num--,0<l&&j.sources.length){if(f=j.sources.shift())a=this.display_message(this.get_label("searching"),"loading"),d=this.http_post(j.action,"_search="+urlencode(b)+"&_id="+d+"&_source="+urlencode(f),a),this.ksearch_data.locks.push(a),
-this.ksearch_data.requests.push(d)}else l||(this.ksearch_msg||(this.ksearch_msg=this.display_message(this.get_label("autocompletemore"))),this.ksearch_abort())}};this.ksearch_click=function(a){this.ksearch_input&&this.ksearch_input.focus();this.insert_recipient(a._rcm_id);this.ksearch_hide()};this.ksearch_blur=function(){this.ksearch_timer&&clearTimeout(this.ksearch_timer);this.ksearch_input=null;this.ksearch_hide()};this.ksearch_hide=function(){this.ksearch_selected=null;this.ksearch_value="";this.ksearch_pane&&
-this.ksearch_pane.hide();this.ksearch_destroy()};this.ksearch_destroy=function(){this.ksearch_abort();this.ksearch_info&&this.hide_message(this.ksearch_info);this.ksearch_msg&&this.hide_message(this.ksearch_msg);this.ksearch_msg=this.ksearch_info=this.ksearch_data=null};this.ksearch_abort=function(){var a,b,d=this.ksearch_data;if(d){a=0;for(b=d.locks.length;a<b;a++)this.abort_request({request:d.requests[a],lock:d.locks[a]})}};this.contactlist_keypress=function(a){a.key_pressed==a.DELETE_KEY&&this.command("delete")};
-this.contactlist_select=function(a){this.preview_timer&&clearTimeout(this.preview_timer);var b,d,e,f=this,h=!1;e=this.env.source?this.env.address_sources[this.env.source]:null;(d=a.get_single_selection())?this.preview_timer=window.setTimeout(function(){f.load_contact(d,"show")},200):this.env.contentframe&&this.show_contentframe(!1);if(a.selection.length)if(e)h=!e.readonly;else for(b in a.selection)if((e=(""+a.selection[b]).replace(/^[^-]+-/,""))&&this.env.address_sources[e]&&!this.env.address_sources[e].readonly){h=
-!0;break}this.enable_command("compose",this.env.group||0<a.selection.length);this.enable_command("edit",d&&h);this.enable_command("delete",a.selection.length&&h);return!1};this.list_contacts=function(a,b,d){var e="",f=window;a||(a=this.env.source);if(d&&this.current_page==d&&a==this.env.source&&b==this.env.group)return!1;a!=this.env.source?(d=this.env.current_page=1,this.reset_qsearch()):b!=this.env.group&&(d=this.env.current_page=1);this.select_folder(this.env.search_id?"S"+this.env.search_id:b?
-"G"+a+b:a);this.env.source=a;this.env.group=b;this.gui_objects.contactslist?this.list_contacts_remote(a,b,d):(this.env.contentframe&&window.frames&&window.frames[this.env.contentframe]&&(f=window.frames[this.env.contentframe],e="&_framed=1"),b&&(e+="&_gid="+b),d&&(e+="&_page="+d),this.env.search_request&&(e+="&_search="+this.env.search_request),this.set_busy(!0,"loading"),this.location_href(this.env.comm_path+(a?"&_source="+urlencode(a):"")+e,f))};this.list_contacts_remote=function(a,b,d){this.list_contacts_clear();
-var d=(a?"_source="+urlencode(a):"")+(d?(a?"&":"")+"_page="+d:""),e=this.set_busy(!0,"loading");this.env.source=a;(this.env.group=b)&&(d+="&_gid="+b);this.env.search_request&&(d+="&_search="+this.env.search_request);this.http_request("list",d,e)};this.list_contacts_clear=function(){this.contact_list.clear(!0);this.show_contentframe(!1);this.enable_command("delete",!1);this.enable_command("compose",this.env.group?!0:!1)};this.load_contact=function(a,b,d){var e="",f=window;if(this.env.contentframe&&
-window.frames&&window.frames[this.env.contentframe])e="&_framed=1",f=window.frames[this.env.contentframe],this.show_contentframe(!0),a||(this.contact_list.clear_selection(),this.enable_command("delete","compose",!1));else if(d)return!1;if(b&&(a||"add"==b)&&!this.drag_active)this.env.group&&(e+="&_gid="+urlencode(this.env.group)),this.location_href(this.env.comm_path+"&_action="+b+"&_source="+urlencode(this.env.source)+"&_cid="+urlencode(a)+e,f,!0);return!0};this.group_member_change=function(a,b,d,
-e){var a="add"==a?"add":"del",f=this.display_message(this.get_label("add"==a?"addingmember":"removingmember"),"loading");this.http_post("group-"+a+"members","_cid="+urlencode(b)+"&_source="+urlencode(d)+"&_gid="+urlencode(e),f)};this.copy_contact=function(a,b){a||(a=this.contact_list.get_selection().join(","));if("group"==b.type&&b.source==this.env.source)this.group_member_change("add",a,b.source,b.id);else if("group"==b.type&&!this.env.address_sources[b.source].readonly){var d=this.display_message(this.get_label("copyingcontact"),
-"loading");this.http_post("copy","_cid="+urlencode(a)+"&_source="+urlencode(this.env.source)+"&_to="+urlencode(b.source)+"&_togid="+urlencode(b.id)+(this.env.group?"&_gid="+urlencode(this.env.group):""),d)}else b.id!=this.env.source&&a&&this.env.address_sources[b.id]&&!this.env.address_sources[b.id].readonly&&(d=this.display_message(this.get_label("copyingcontact"),"loading"),this.http_post("copy","_cid="+urlencode(a)+"&_source="+urlencode(this.env.source)+"&_to="+urlencode(b.id)+(this.env.group?
-"&_gid="+urlencode(this.env.group):""),d))};this.delete_contacts=function(){var a=this.contact_list.get_selection(),b=this.env.source&&this.env.address_sources[this.env.source].undelete;if(!(!a.length&&!this.env.cid||!b&&!confirm(this.get_label("deletecontactconfirm")))){var d,e=[],f="";if(this.env.cid)e.push(this.env.cid);else{for(d=0;d<a.length;d++)b=a[d],e.push(b),this.contact_list.remove_row(b,d==a.length-1);1==a.length&&this.show_contentframe(!1)}this.env.group&&(f+="&_gid="+urlencode(this.env.group));
-this.env.search_request&&(f+="&_search="+this.env.search_request);this.http_post("delete","_cid="+urlencode(e.join(","))+"&_source="+urlencode(this.env.source)+"&_from="+(this.env.action?this.env.action:"")+f,this.display_message(this.get_label("contactdeleting"),"loading"));return!0}};this.update_contact_row=function(a,b,d,e){var f,h=this.contact_list,a=this.html_identifier(a);h.rows[a]||(a=a+"-"+e,d&&(d=d+"-"+e));if(h.rows[a]&&(f=h.rows[a].obj)){for(e=0;e<b.length;e++)f.cells[e]&&$(f.cells[e]).html(b[e]);
-d&&(d=this.html_identifier(d),f.id="rcmrow"+d,h.remove_row(a),h.init_row(f),h.selection[0]=d,f.style.display="")}};this.add_contact_row=function(a,b){if(!this.gui_objects.contactslist)return!1;var d,e=this.contact_list,f=document.createElement("tr");f.id="rcmrow"+this.html_identifier(a);f.className="contact";e.in_selection(a)&&(f.className+=" selected");for(d in b)col=document.createElement("td"),col.className=(""+d).toLowerCase(),col.innerHTML=b[d],f.appendChild(col);e.insert_row(f);this.enable_command("export",
-0<e.rowcount)};this.init_contact_form=function(){var a=this,b;this.set_photo_actions($("#ff_photo").val());for(b in this.env.coltypes)this.init_edit_field(b,null);$(".contactfieldgroup .row a.deletebutton").click(function(){a.delete_edit_field(this);return!1});$("select.addfieldmenu").change(function(){a.insert_edit_field($(this).val(),$(this).attr("rel"),this);this.selectedIndex=0});$.datepicker&&this.env.date_format&&($.datepicker.setDefaults({dateFormat:this.env.date_format,changeMonth:!0,changeYear:!0,
-yearRange:"-100:+10",showOtherMonths:!0,selectOtherMonths:!0,monthNamesShort:this.env.month_names,onSelect:function(a){$(this).focus().val(a)}}),$("input.datepicker").datepicker());$("input[type='text']:visible").first().focus()};this.group_create=function(){this.add_input_row("contactgroup")};this.group_rename=function(){if(this.env.group&&this.gui_objects.folderlist){if(!this.name_input){this.enable_command("list","listgroup",!1);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(a){return rcmail.add_input_keydown(a)});this.env.group_renaming=!0;var a,b=this.get_folder_li(this.env.source+this.env.group,"rcmliG");b&&(a=b.firstChild)&&$(a).hide().before(this.name_input)}this.name_input.select().focus()}};this.group_delete=function(){if(this.env.group&&confirm(this.get_label("deletegroupconfirm"))){var a=this.set_busy(!0,"groupdeleting");this.http_post("group-delete","_source="+urlencode(this.env.source)+
-"&_gid="+urlencode(this.env.group),a)}};this.remove_group_item=function(a){var b,d="G"+a.source+a.id;if(b=this.get_folder_li(d))this.triggerEvent("group_delete",{source:a.source,id:a.id,li:b}),b.parentNode.removeChild(b),delete this.env.contactfolders[d],delete this.env.contactgroups[d];this.list_contacts(a.source,0)};this.add_input_row=function(a){this.gui_objects.folderlist&&(this.name_input||(this.name_input=$("<input>").attr("type","text").data("tt",a),this.name_input.bind("keydown",function(a){return rcmail.add_input_keydown(a)}),
-this.name_input_li=$("<li>").addClass(a).append(this.name_input),this.name_input_li.insertAfter("contactsearch"==a?$("li:last",this.gui_objects.folderlist):this.get_folder_li(this.env.source))),this.name_input.select().focus())};this.add_input_keydown=function(a){var b=rcube_event.get_keycode(a),d=$(a.target),a=d.data("tt");if(13==b){if(b=d.val())d=this.set_busy(!0,"loading"),"contactsearch"==a?this.http_post("search-create","_search="+urlencode(this.env.search_request)+"&_name="+urlencode(b),d):
-this.env.group_renaming?this.http_post("group-rename","_source="+urlencode(this.env.source)+"&_gid="+urlencode(this.env.group)+"&_name="+urlencode(b),d):this.http_post("group-create","_source="+urlencode(this.env.source)+"&_name="+urlencode(b),d);return!1}27==b&&this.reset_add_input();return!0};this.reset_add_input=function(){this.name_input&&(this.env.group_renaming&&(this.name_input.parent().children().last().show(),this.env.group_renaming=!1),this.name_input.remove(),this.name_input_li&&this.name_input_li.remove(),
-this.name_input=this.name_input_li=null);this.enable_command("list","listgroup",!0)};this.insert_contact_group=function(a){this.reset_add_input();a.type="group";var b="G"+a.source+a.id,d=$("<a>").attr("href","#").attr("rel",a.source+":"+a.id).click(function(){return rcmail.command("listgroup",a,this)}).html(a.name),d=$("<li>").attr({id:"rcmli"+this.html_identifier(b),"class":"contactgroup"}).append(d);this.env.contactfolders[b]=this.env.contactgroups[b]=a;this.add_contact_group_row(a,d);this.triggerEvent("group_insert",
-{id:a.id,source:a.source,name:a.name,li:d[0]})};this.update_contact_group=function(a){this.reset_add_input();var b="G"+a.source+a.id,d=this.get_folder_li(b),e;if(d&&a.newid){e="G"+a.source+a.newid;var f=$.extend({},a);d.id="rcmli"+this.html_identifier(e);this.env.contactfolders[e]=this.env.contactfolders[b];this.env.contactfolders[e].id=a.newid;this.env.group=a.newid;delete this.env.contactfolders[b];delete this.env.contactgroups[b];f.id=a.newid;f.type="group";e=$("<a>").attr("href","#").attr("rel",
-a.source+":"+a.newid).click(function(){return rcmail.command("listgroup",f,this)}).html(a.name);$(d).children().replaceWith(e)}else if(d&&(e=d.firstChild)&&"a"==e.tagName.toLowerCase())e.innerHTML=a.name;this.env.contactfolders[b].name=this.env.contactgroups[b].name=a.name;this.add_contact_group_row(a,$(d),!0);this.triggerEvent("group_update",{id:a.id,source:a.source,name:a.name,li:d[0],newid:a.newid})};this.add_contact_group_row=function(a,b,d){var e=a.name.toUpperCase(),f=this.get_folder_li(a.source),
-a="rcmliG"+this.html_identifier(a.source);d?(d=b.clone(!0),b.remove()):d=b;$('li[id^="'+a+'"]',this.gui_objects.folderlist).each(function(a,b){if(e>=$(this).text().toUpperCase())f=b;else return false});d.insertAfter(f)};this.update_group_commands=function(){var a=""!=this.env.source?this.env.address_sources[this.env.source]:null;this.enable_command("group-create",a&&a.groups&&!a.readonly);this.enable_command("group-rename","group-delete",a&&a.groups&&this.env.group&&!a.readonly)};this.init_edit_field=
-function(a,b){b||(b=$(".ff_"+a));b.focus(function(){i.focus_textfield(this)}).blur(function(){i.blur_textfield(this)}).each(function(){this._placeholder=this.title=i.env.coltypes[a].label;i.blur_textfield(this)})};this.insert_edit_field=function(a,b,d){var e=$("#ff_"+a);if(e.length)e.show().focus(),$(d).children('option[value="'+a+'"]').prop("disabled",!0);else if($(".ff_"+a),e=$("#contactsection"+b+" .contactcontroller"+a),e.length||(e=$("<fieldset>").addClass("contactfieldgroup contactcontroller"+
-a).insertAfter($("#contactsection"+b+" .contactfieldgroup").last())),e.length&&"FIELDSET"==e.get(0).nodeName){var f,b=this.env.coltypes[a],h=$("<div>").addClass("row"),g=$("<div>").addClass("contactfieldcontent data"),k=$("<div>").addClass("contactfieldlabel label");b.subtypes_select?k.html(b.subtypes_select):k.html(b.label);var j=1!=b.limit?"[]":"";if("text"==b.type||"date"==b.type)f=$("<input>").addClass("ff_"+a).attr({type:"text",name:"_"+a+j,size:b.size}).appendTo(g),this.init_edit_field(a,f),
-"date"==b.type&&$.datepicker&&f.datepicker();else if("composite"==b.type){var l,n,m=[],o=[];if(f=this.env[a+"_template"])for(l=0;l<f.length;l++)m.push(f[l][1]),o.push(f[l][2]);else for(l in b.childs)m.push(l);for(var p=0;p<m.length;p++)l=m[p],f=b.childs[l],f=$("<input>").addClass("ff_"+l).attr({type:"text",name:"_"+l+j,size:f.size}).appendTo(g),g.append(o[p]||" "),this.init_edit_field(l,f),n||(n=f);f=n}else if("select"==b.type){f=$("<select>").addClass("ff_"+a).attr("name","_"+a+j).appendTo(g);var q=
-f.attr("options");q[q.length]=new Option("---","");b.options&&$.each(b.options,function(a,b){q[q.length]=new Option(b,a)})}f&&($('<a href="#del"></a>').addClass("contactfieldbutton deletebutton").attr({title:this.get_label("delete"),rel:a}).html(this.env.delbutton).click(function(){i.delete_edit_field(this);return!1}).appendTo(g),h.append(k).append(g).appendTo(e.show()),f.first().focus(),b.count||(b.count=0),++b.count==b.limit&&b.limit&&$(d).children('option[value="'+a+'"]').prop("disabled",!0))}};
-this.delete_edit_field=function(a){var b=$(a).attr("rel"),d=this.env.coltypes[b],e=$(a).parents("fieldset.contactfieldgroup"),f=e.parent().find("select.addfieldmenu");0>=--d.count&&d.visible?$(a).parent().children("input").val("").blur():($(a).parents("div.row").remove(),e.children("div.row").length||e.hide());f.length&&(a=f.children('option[value="'+b+'"]'),a.length?a.prop("disabled",!1):$("<option>").attr("value",b).html(d.label).appendTo(f),f.show())};this.upload_contact_photo=function(a){a&&a.elements._photo.value&&
-(this.async_upload_form(a,"upload-photo",function(){rcmail.set_busy(!1,null,rcmail.photo_upload_id)}),this.photo_upload_id=this.set_busy(!0,"uploading"))};this.replace_contact_photo=function(a){var b="-del-"==a?this.env.photo_placeholder:this.env.comm_path+"&_action=photo&_source="+this.env.source+"&_cid="+this.env.cid+"&_photo="+a;this.set_photo_actions(a);$(this.gui_objects.contactphoto).children("img").attr("src",b)};this.photo_upload_end=function(){this.set_busy(!1,null,this.photo_upload_id);
-delete this.photo_upload_id};this.set_photo_actions=function(a){var b,d=this.buttons["upload-photo"];for(b=0;d&&b<d.length;b++)$("#"+d[b].id).html(this.get_label("-del-"==a?"addphoto":"replacephoto"));$("#ff_photo").val(a);this.enable_command("upload-photo",this.env.coltypes.photo?!0:!1);this.enable_command("delete-photo",this.env.coltypes.photo&&"-del-"!=a)};this.advanced_search=function(){var a="&_form=1",b=window;this.env.contentframe&&window.frames&&window.frames[this.env.contentframe]&&(a+="&_framed=1",
-b=window.frames[this.env.contentframe],this.contact_list.clear_selection());this.location_href(this.env.comm_path+"&_action=search"+a,b,!0);return!0};this.unselect_directory=function(){this.select_folder("");this.enable_command("search-delete",!1)};this.insert_saved_search=function(a,b){this.reset_add_input();var d="S"+b,e=$("<a>").attr("href","#").attr("rel",b).click(function(){return rcmail.command("listsearch",b,this)}).html(a),d=$("<li>").attr({id:"rcmli"+this.html_identifier(d),"class":"contactsearch"}).append(e),
-e={name:a,id:b,li:d[0]};this.add_saved_search_row(e,d);this.select_folder("S"+b);this.enable_command("search-delete",!0);this.env.search_id=b;this.triggerEvent("abook_search_insert",e)};this.add_saved_search_row=function(a,b,d){var e,f=a.name.toUpperCase();d?(a=b.clone(!0),b.remove()):a=b;$('li[class~="contactsearch"]',this.gui_objects.folderlist).each(function(a,b){if(!e)e=this.previousSibling;if(f>=$(this).text().toUpperCase())e=b;else return false});e?a.insertAfter(e):a.appendTo(this.gui_objects.folderlist)};
-this.search_create=function(){this.add_input_row("contactsearch")};this.search_delete=function(){if(this.env.search_request){var a=this.set_busy(!0,"savedsearchdeleting");this.http_post("search-delete","_sid="+urlencode(this.env.search_id),a)}};this.remove_search_item=function(a){var b;if(b=this.get_folder_li("S"+a))this.triggerEvent("search_delete",{id:a,li:b}),b.parentNode.removeChild(b);this.env.search_id=null;this.env.search_request=null;this.list_contacts_clear();this.reset_qsearch();this.enable_command("search-delete",
-"search-create",!1)};this.listsearch=function(a){var b=this.set_busy(!0,"searching");this.contact_list&&this.list_contacts_clear();this.reset_qsearch();this.select_folder("S"+a);this.env.current_page=1;this.http_request("search","_sid="+urlencode(a),b)};this.section_select=function(a){var a=a.get_single_selection(),b="",d=window;a&&(this.env.contentframe&&window.frames&&window.frames[this.env.contentframe]&&(b="&_framed=1",d=window.frames[this.env.contentframe]),this.location_href(this.env.comm_path+
-"&_action=edit-prefs&_section="+a+b,d,!0));return!0};this.identity_select=function(a){var b;(b=a.get_single_selection())&&this.load_identity(b,"edit-identity")};this.load_identity=function(a,b){if("edit-identity"==b&&(!a||a==this.env.iid))return!1;var d="",e=window;this.env.contentframe&&window.frames&&window.frames[this.env.contentframe]&&(d="&_framed=1",e=window.frames[this.env.contentframe],document.getElementById(this.env.contentframe).style.visibility="inherit");if(b&&(a||"add-identity"==b))this.set_busy(!0),
-this.location_href(this.env.comm_path+"&_action="+b+"&_iid="+a+d,e);return!0};this.delete_identity=function(a){var b=this.identity_list.get_selection();if(b.length||this.env.iid)return a||(a=this.env.iid?this.env.iid:b[0]),this.goto_url("delete-identity","_iid="+a+"&_token="+this.env.request_token,!0),!0};this.init_subscription_list=function(){var a=this;this.subscription_list=new rcube_list_widget(this.gui_objects.subscriptionlist,{multiselect:!1,draggable:!0,keyboard:!1,toggleselect:!0});this.subscription_list.addEventListener("select",
-function(b){a.subscription_select(b)});this.subscription_list.addEventListener("dragstart",function(){a.drag_active=!0});this.subscription_list.addEventListener("dragend",function(b){a.subscription_move_folder(b)});this.subscription_list.row_init=function(b){b.obj.onmouseover=function(){a.focus_subscription(b.id)};b.obj.onmouseout=function(){a.unfocus_subscription(b.id)}};this.subscription_list.init();$("#mailboxroot").mouseover(function(){a.focus_subscription(this.id)}).mouseout(function(){a.unfocus_subscription(this.id)})};
+g=f?$.merge([],f.get_selection()):[];if(this.env.uid||g.length){b=0;for(d=g.length;b<d;b++)a=g[b],f.rows[a].has_children&&!f.rows[a].expanded&&f.select_childs(a);if(this.env.flag_for_deletion)return this.mark_message("delete"),!1;!e||this.env.mailbox==e?this.permanently_remove_messages():this.env.delete_junk&&this.env.junk_mailbox&&this.env.mailbox==this.env.junk_mailbox?this.permanently_remove_messages():f&&f.modkey==SHIFT_KEY?confirm(this.get_label("deletemessagesconfirm"))&&this.permanently_remove_messages():
+this.move_messages(e);return!0}};this.permanently_remove_messages=function(){if(this.env.uid||this.message_list&&this.message_list.get_selection().length)this.show_contentframe(!1),this._with_selected_messages("delete",!1,"&_from="+(this.env.action?this.env.action:""))};this._with_selected_messages=function(a,b,d){var e=[],f=0;if(this.env.uid)e[0]=this.env.uid;else{var g,h,i,j=[],k=this.message_list.get_selection();g=0;for(len=k.length;g<len;g++)h=k[g],e.push(h),this.env.threading&&(f+=this.update_thread(h),
+i=this.message_list.find_root(h),i!=h&&0>$.inArray(i,j)&&j.push(i)),this.message_list.remove_row(h,this.env.display_next&&g==k.length-1);this.env.display_next||this.message_list.clear_selection();g=0;for(len=j.length;g<len;g++)this.add_tree_icons(j[g])}this.env.search_request&&(d+="&_search="+this.env.search_request);this.env.display_next&&this.env.next_uid&&(d+="&_next_uid="+this.env.next_uid);0>f?d+="&_count="+-1*f:0<f&&this.delete_excessive_thread_rows();d+="&_uid="+this.uids_to_list(e);b||(b=
+this.display_message(this.get_label("moveto"==a?"movingmessage":"deletingmessage"),"loading"));this.http_post(a,"_mbox="+urlencode(this.env.mailbox)+d,b)};this.mark_message=function(a,b){var d=[],e=[],f,g,h,i=this.message_list;if(b)d[0]=b;else if(this.env.uid)d[0]=this.env.uid;else if(i){h=i.get_selection();g=0;for(f=h.length;g<f;g++)d.push(h[g])}if(i){i.focus();g=0;for(f=d.length;g<f;g++)h=d[g],("read"==a&&i.rows[h].unread||"unread"==a&&!i.rows[h].unread||"delete"==a&&!i.rows[h].deleted||"undelete"==
+a&&i.rows[h].deleted||"flagged"==a&&!i.rows[h].flagged||"unflagged"==a&&i.rows[h].flagged)&&e.push(h)}else e=d;if(e.length||this.select_all_mode)switch(a){case "read":case "unread":this.toggle_read_status(a,e);break;case "delete":case "undelete":this.toggle_delete_status(e);break;case "flagged":case "unflagged":this.toggle_flagged_status(a,d)}};this.toggle_read_status=function(a,b){var d,e=b.length,f="_uid="+this.uids_to_list(b)+"&_flag="+a,g=this.display_message(this.get_label("markingmessage"),
+"loading");for(d=0;d<e;d++)this.set_message(b[d],"unread","unread"==a?!0:!1);this.env.search_request&&(f+="&_search="+this.env.search_request);this.http_post("mark",f,g);for(d=0;d<e;d++)this.update_thread_root(b[d],a)};this.toggle_flagged_status=function(a,b){var d,e=b.length,f="_uid="+this.uids_to_list(b)+"&_flag="+a,g=this.display_message(this.get_label("markingmessage"),"loading");for(d=0;d<e;d++)this.set_message(b[d],"flagged","flagged"==a?!0:!1);this.env.search_request&&(f+="&_search="+this.env.search_request);
+this.http_post("mark",f,g)};this.toggle_delete_status=function(a){var b=a.length,d,e,f=!0,g=this.message_list?this.message_list.rows:[];if(1==b)return!g.length||g[a[0]]&&!g[a[0]].deleted?this.flag_as_deleted(a):this.flag_as_undeleted(a),!0;for(d=0;d<b;d++)if(e=a[d],g[e]&&!g[e].deleted){f=!1;break}f?this.flag_as_undeleted(a):this.flag_as_deleted(a);return!0};this.flag_as_undeleted=function(a){var b,d=a.length,e="_uid="+this.uids_to_list(a)+"&_flag=undelete",f=this.display_message(this.get_label("markingmessage"),
+"loading");for(b=0;b<d;b++)this.set_message(a[b],"deleted",!1);this.env.search_request&&(e+="&_search="+this.env.search_request);this.http_post("mark",e,f);return!0};this.flag_as_deleted=function(a){for(var b="",d=[],b=this.message_list?this.message_list.rows:[],e=0,f=0,g=a.length;f<g;f++)uid=a[f],b[uid]&&(b[uid].unread&&(d[d.length]=uid),this.env.skip_deleted?(e+=this.update_thread(uid),this.message_list.remove_row(uid,this.env.display_next&&f==this.message_list.selection.length-1)):this.set_message(uid,
+"deleted",!0));this.env.skip_deleted&&this.message_list&&(this.env.display_next||this.message_list.clear_selection(),0>e||0<e&&this.delete_excessive_thread_rows());b="&_from="+(this.env.action?this.env.action:"");lock=this.display_message(this.get_label("markingmessage"),"loading");d.length&&(b+="&_ruid="+this.uids_to_list(d));this.env.skip_deleted&&this.env.display_next&&this.env.next_uid&&(b+="&_next_uid="+this.env.next_uid);this.env.search_request&&(b+="&_search="+this.env.search_request);this.http_post("mark",
+"_uid="+this.uids_to_list(a)+"&_flag=delete"+b,lock);return!0};this.flag_deleted_as_read=function(a){var b,d,e,f=this.message_list?this.message_list.rows:[],a=String(a).split(",");d=0;for(e=a.length;d<e;d++)b=a[d],f[b]&&this.set_message(b,"unread",!1)};this.uids_to_list=function(a){return this.select_all_mode?"*":a.join(",")};this.set_button_titles=function(){var a="deletemessage";if(!this.env.flag_for_deletion&&this.env.trash_mailbox&&this.env.mailbox!=this.env.trash_mailbox&&(!this.env.delete_junk||
+!this.env.junk_mailbox||this.env.mailbox!=this.env.junk_mailbox))a="movemessagetotrash";this.set_alttext("delete",a)};this.expunge_mailbox=function(a){var b,d="_mbox="+urlencode(a);a==this.env.mailbox&&(b=this.set_busy(!0,"loading"),d+="&_reload=1",this.env.search_request&&(d+="&_search="+this.env.search_request));this.http_post("expunge",d,b)};this.purge_mailbox=function(a){var b=!1,d="_mbox="+urlencode(a);if(!confirm(this.get_label("purgefolderconfirm")))return!1;a==this.env.mailbox&&(b=this.set_busy(!0,
+"loading"),d+="&_reload=1");this.http_post("purge",d,b)};this.purge_mailbox_test=function(){return this.env.messagecount&&(this.env.mailbox==this.env.trash_mailbox||this.env.mailbox==this.env.junk_mailbox||this.env.mailbox.match("^"+RegExp.escape(this.env.trash_mailbox)+RegExp.escape(this.env.delimiter))||this.env.mailbox.match("^"+RegExp.escape(this.env.junk_mailbox)+RegExp.escape(this.env.delimiter)))};this.login_user_keyup=function(a){var b=rcube_event.get_keycode(a),d=$("#rcmloginpwd");return 13==
+b&&d.length&&!d.val()?(d.focus(),rcube_event.cancel(a)):!0};this.init_messageform=function(){if(!this.gui_objects.messageform)return!1;var a=$("[name='_from']"),b=$("[name='_to']"),d=$("input[name='_subject']"),e=$("[name='_message']").get(0),f="1"==$("input[name='_is_html']").val(),g=["cc","bcc","replyto","followupto"],h;0<this.env.autocomplete_threads&&(h={threads:this.env.autocomplete_threads,sources:this.env.autocomplete_sources});this.init_address_input_events(b,h);for(var i in g)this.init_address_input_events($("[name='_"+
+g[i]+"']"),h);f||(this.set_caret_pos(e,this.env.top_posting?0:$(e).val().length),"select-one"==a.prop("type")&&this.change_identity(a[0]));""==b.val()?b.focus():""==d.val()?d.focus():e&&e.focus();this.env.compose_focus_elem=document.activeElement;this.compose_field_hash(!0);this.auto_save_start()};this.init_address_input_events=function(a,b){this.env.recipients_delimiter=this.env.recipients_separator+" ";a[bw.ie||bw.safari||bw.chrome?"keydown":"keypress"](function(a){return j.ksearch_keydown(a,this,
+b)}).attr("autocomplete","off")};this.compose_recipient_select=function(a){this.enable_command("add-recipient",0<a.selection.length)};this.compose_add_recipient=function(a){var b=[],d=$("#_"+a);if(this.contact_list&&this.contact_list.selection.length)for(var e,f=0;f<this.contact_list.selection.length;f++)if((e=this.contact_list.selection[f])&&this.env.contactdata[e])if(b.push(this.env.contactdata[e]),"E"==e.charAt(0)&&0>this.env.contactdata[e].indexOf("@")&&d.length){var g=e.substr(1);this.group2expand[g]=
+{name:this.env.contactdata[e],input:d.get(0)};this.http_request("group-expand","_source="+urlencode(this.env.source)+"&_gid="+urlencode(g),!1)}b.length&&d.length&&(e=d.val(),d.val((e?e+this.env.recipients_delimiter:"")+b.join(this.env.recipients_delimiter)),this.triggerEvent("add-recipient",{field:a,recipients:b}))};this.check_compose_input=function(a){var b,d=$("[name='_to']"),e=$("[name='_cc']"),f=$("[name='_bcc']"),g=$("[name='_from']"),h=$("[name='_subject']"),i=$("[name='_message']");if("text"==
+g.prop("type")&&!rcube_check_email(g.val(),!0))return alert(this.get_label("nosenderwarning")),g.focus(),!1;e=d.val()?d.val():e.val()?e.val():f.val();if(!rcube_check_email(e.replace(/^\s+/,"").replace(/[\s,;]+$/,""),!0))return alert(this.get_label("norecipientwarning")),d.focus(),!1;for(var p in this.env.attachments)if("object"===typeof this.env.attachments[p]&&!this.env.attachments[p].complete)return alert(this.get_label("notuploadedwarning")),!1;if(""==h.val()){b=$('<div class="prompt">').html('<div class="message">'+
+this.get_label("nosubjectwarning")+"</div>").appendTo(document.body);var k=$("<input>").attr("type","text").attr("size",30).appendTo(b).val(this.get_label("nosubject")),d={};d[this.get_label("cancel")]=function(){h.focus();$(this).dialog("close")};d[this.get_label("sendmessage")]=function(){h.val(k.val());$(this).dialog("close");j.command(a,{nocheck:!0})};b.dialog({modal:!0,resizable:!1,buttons:d,close:function(){$(this).remove()}});k.select();return!1}this.stop_spellchecking();window.tinyMCE&&(b=
+tinyMCE.get(this.env.composebody));if(!b&&""==i.val()&&!confirm(this.get_label("nobodywarning")))return i.focus(),!1;if(b){if(!b.getContent()&&!confirm(this.get_label("nobodywarning")))return b.focus(),!1;tinyMCE.triggerSave()}return!0};this.toggle_editor=function(a){this.stop_spellchecking();if("html"==a.mode)this.plain2html($("#"+a.id).val(),a.id),tinyMCE.execCommand("mceAddControl",!1,a.id),this.env.default_font&&setTimeout(function(){$(tinyMCE.get(a.id).getBody()).css("font-family",rcmail.env.default_font)},
+500);else{var b;if(b=tinyMCE.get(a.id).getContent()){if(!confirm(this.get_label("editorwarning")))return!1;this.html2plain(b,a.id)}tinyMCE.execCommand("mceRemoveControl",!1,a.id)}return!0};this.stop_spellchecking=function(){var a;window.tinyMCE&&(a=tinyMCE.get(this.env.composebody))?a.plugins&&(a.plugins.spellchecker&&a.plugins.spellchecker.active)&&a.execCommand("mceSpellCheck"):(a=this.env.spellcheck)&&a.state&&("ready"!=a.state&&"no_error_found"!=a.state)&&$(a.spell_span).trigger("click");this.spellcheck_state()};
+this.spellcheck_state=function(){var a,b;if(window.tinyMCE&&(a=tinyMCE.get(this.env.composebody))&&a.plugins&&a.plugins.spellchecker)b=a.plugins.spellchecker.active;else if((a=this.env.spellcheck)&&a.state)b="ready"!=a.state&&"no_error_found"!=a.state;if(rcmail.buttons.spellcheck)$("#"+rcmail.buttons.spellcheck[0].id)[b?"addClass":"removeClass"]("selected");return b};this.spellcheck_lang=function(){var a;if(window.tinyMCE&&(a=tinyMCE.get(this.env.composebody))&&a.plugins&&a.plugins.spellchecker)return a.plugins.spellchecker.selectedLang;
+if(this.env.spellcheck)return GOOGIE_CUR_LANG};this.spellcheck_lang_set=function(a){var b;window.tinyMCE&&(b=tinyMCE.get(this.env.composebody))&&b.plugins?b.plugins.spellchecker.selectedLang=a:this.env.spellcheck&&this.env.spellcheck.setCurrentLanguage(a)};this.spellcheck_resume=function(a,b){if(a){var d=tinyMCE.get(this.env.composebody),e=d.plugins.spellchecker;e.active=1;e._markWords(b);d.nodeChanged()}else{var e=this.env.spellcheck;e.prepare(!1,!0);e.processData(b)}this.spellcheck_state()};this.set_draft_id=
+function(a){$("input[name='_draft_saveid']").val(a)};this.auto_save_start=function(){this.env.draft_autosave&&(this.save_timer=setTimeout(function(){j.command("savedraft")},1E3*this.env.draft_autosave));this.busy=!1};this.compose_field_hash=function(a){var b,d,e,f="",g=["to","cc","bcc","subject"];for(d=0;d<g.length;d++)if(e=$('[name="_'+g[d]+'"]').val())f+=e+":";f=window.tinyMCE&&(b=tinyMCE.get(this.env.composebody))?f+b.getContent():f+$("[name='_message']").val();if(this.env.attachments)for(var h in this.env.attachments)f+=
+h;a&&(this.cmp_hash=f);return f};this.change_identity=function(a,b){if(!a||!a.options)return!1;b||(b=this.env.show_sig);var d;d=-1;var e=a.options[a.selectedIndex].value,f=$("[name='_message']"),g=f.val(),h="1"==$("input[name='_is_html']").val(),i=this.env.identity;this.env.signatures&&this.env.signatures[e]?(this.enable_command("insert-sig",!0),this.env.compose_commands.push("insert-sig")):this.enable_command("insert-sig",!1);h?b&&this.env.signatures&&(d=tinyMCE.get(this.env.composebody),f=d.dom.get("_rc_sig"),
+f||(g=d.getBody(),i=d.getDoc(),f=i.createElement("div"),f.setAttribute("id","_rc_sig"),this.env.sig_above?(d.getWin().focus(),d=d.selection.getNode(),"BODY"==d.nodeName?(g.insertBefore(f,g.firstChild),g.insertBefore(i.createElement("br"),g.firstChild)):(g.insertBefore(f,d.nextSibling),g.insertBefore(i.createElement("br"),d.nextSibling))):(bw.ie&&g.appendChild(i.createElement("br")),g.appendChild(f))),this.env.signatures[e]&&(f.innerHTML=this.env.signatures[e].html)):(b&&(i&&this.env.signatures&&this.env.signatures[i])&&
+(i=this.env.signatures[i].text,i=i.replace(/\r\n/g,"\n"),d=this.env.sig_above?g.indexOf(i):g.lastIndexOf(i),0<=d&&(g=g.substring(0,d)+g.substring(d+i.length,g.length))),b&&this.env.signatures&&this.env.signatures[e]?(i=this.env.signatures[e].text,i=i.replace(/\r\n/g,"\n"),this.env.sig_above?0<=d?(g=g.substring(0,d)+i+g.substring(d,g.length),d-=1):g?(pos=this.get_caret_pos(f.get(0)))?(g=g.substring(0,pos)+"\n"+i+"\n\n"+g.substring(pos,g.length),d=pos):(d=0,g="\n\n"+i+"\n\n"+g.replace(/^[\r\n]+/,"")):
+(d=0,g="\n\n"+i):(g=g.replace(/[\r\n]+$/,""),d=!this.env.top_posting&&g.length?g.length+1:0,g+="\n\n"+i)):d=this.env.top_posting?0:g.length,f.val(g),this.set_caret_pos(f.get(0),d));this.env.identity=e;return!0};this.upload_file=function(a){if(!a)return!1;var b,d=0,e=$("input[type=file]",a).get(0),f=e.files?e.files.length:e.value?1:0;if(f){if(e.files&&this.env.max_filesize&&this.env.filesizeerror){for(b=0;b<f;b++)d+=e.files[b].size;if(d&&d>this.env.max_filesize){this.display_message(this.env.filesizeerror,
+"error");return}}b=this.async_upload_form(a,"upload",function(a){var b,d="";try{this.contentDocument?b=this.contentDocument:this.contentWindow&&(b=this.contentWindow.document),d=b.childNodes[0].innerHTML}catch(e){}if(!d.match(/add2attachment/)&&(!bw.opera||rcmail.env.uploadframe&&rcmail.env.uploadframe==a.data.ts))d.match(/display_message/)||rcmail.display_message(rcmail.get_label("fileuploaderror"),"error"),rcmail.remove_from_attachment_list(a.data.ts);bw.opera&&(rcmail.env.uploadframe=a.data.ts)});
+f="<span>"+this.get_label("uploading"+(1<f?"many":""))+"</span>";d=b.replace(/^rcmupload/,"");this.env.loadingicon&&(f='<img src="'+this.env.loadingicon+'" alt="" class="uploading" />'+f);f='<a title="'+this.get_label("cancel")+'" onclick="return rcmail.cancel_attachment_upload(\''+d+"', '"+b+'\');" href="#cancelupload" class="cancelupload">'+(this.env.cancelicon?'<img src="'+this.env.cancelicon+'" alt="" />':this.get_label("cancel"))+"</a>"+f;this.add2attachment_list(d,{name:"",html:f,classname:"uploading",
+complete:!1});this.env.upload_progress_time&&this.upload_progress_start("upload",d)}this.gui_objects.attachmentform=a;return!0};this.add2attachment_list=function(a,b,d){if(!this.gui_objects.attachmentlist)return!1;var e,f=$("<li>").attr("id",a).addClass(b.classname).html(b.html);d&&(e=document.getElementById(d))?f.replaceAll(e):f.appendTo(this.gui_objects.attachmentlist);d&&this.env.attachments[d]&&delete this.env.attachments[d];this.env.attachments[a]=b;return!0};this.remove_from_attachment_list=
+function(a){delete this.env.attachments[a];$("#"+a).remove()};this.remove_attachment=function(a){a&&this.env.attachments[a]&&this.http_post("remove-attachment",{_id:this.env.compose_id,_file:a});return!0};this.cancel_attachment_upload=function(a,b){if(!a||!b)return!1;this.remove_from_attachment_list(a);$("iframe[name='"+b+"']").remove();return!1};this.upload_progress_start=function(a,b){setTimeout(function(){rcmail.http_request(a,{_progress:b})},1E3*this.env.upload_progress_time)};this.upload_progress_update=
+function(a){var b=$("#"+a.name+"> span");b.length&&a.text&&(b.text(a.text),a.done||this.upload_progress_start(a.action,a.name))};this.add_contact=function(a){a&&this.http_post("addcontact",{_address:a});return!0};this.qsearch=function(a){if(""!=a){var b=this.set_busy(!0,"searching");this.message_list?this.clear_message_list():this.contact_list&&this.list_contacts_clear();this.env.current_page=1;r=this.http_request("search",this.search_params(a)+(this.env.source?"&_source="+urlencode(this.env.source):
+"")+(this.env.group?"&_gid="+urlencode(this.env.group):""),b);this.env.qsearch={lock:b,request:r}}};this.search_params=function(a,b){var d,e=[],f=[],g=this.env.search_mods,h=this.env.mailbox;!b&&this.gui_objects.search_filter&&(b=this.gui_objects.search_filter.value);!a&&this.gui_objects.qsearchbox&&(a=this.gui_objects.qsearchbox.value);b&&e.push("_filter="+urlencode(b));if(a&&(e.push("_q="+urlencode(a)),g&&this.message_list&&(g=g[h]?g[h]:g["*"]),g)){for(d in g)f.push(d);e.push("_headers="+f.join(","))}h&&
+e.push("_mbox="+urlencode(h));return e.join("&")};this.reset_qsearch=function(){this.gui_objects.qsearchbox&&(this.gui_objects.qsearchbox.value="");this.env.qsearch&&this.abort_request(this.env.qsearch);this.env.qsearch=null;this.env.search_request=null;this.env.search_id=null};this.sent_successfully=function(a,b){this.display_message(b,a);setTimeout(function(){j.list_mailbox()},500)};this.ksearch_keydown=function(a,b,d){this.ksearch_timer&&clearTimeout(this.ksearch_timer);var e=rcube_event.get_keycode(a),
+f=rcube_event.get_modifier(a);switch(e){case 38:case 40:if(!this.ksearch_visible())break;e=38==e?1:0;b=document.getElementById("rcmksearchSelected");b||(b=this.ksearch_pane.__ul.firstChild);b&&this.ksearch_select(e?b.previousSibling:b.nextSibling);return rcube_event.cancel(a);case 9:if(f==SHIFT_KEY||!this.ksearch_visible()){this.ksearch_hide();return}case 13:if(!this.ksearch_visible())return!1;this.insert_recipient(this.ksearch_selected);this.ksearch_hide();return rcube_event.cancel(a);case 27:this.ksearch_hide();
+return;case 37:case 39:if(f!=SHIFT_KEY)return}this.ksearch_timer=setTimeout(function(){j.ksearch_get_results(d)},200);this.ksearch_input=b;return!0};this.ksearch_visible=function(){return null!==this.ksearch_selected&&void 0!==this.ksearch_selected&&this.ksearch_value};this.ksearch_select=function(a){var b=$("#rcmksearchSelected");b[0]&&a&&b.removeAttr("id").removeClass("selected");a&&($(a).attr("id","rcmksearchSelected").addClass("selected"),this.ksearch_selected=a._rcm_id)};this.insert_recipient=
+function(a){if(!(null===a||!this.env.contacts[a]||!this.ksearch_input)){var b=this.ksearch_input.value,d=this.get_caret_pos(this.ksearch_input),d=b.lastIndexOf(this.ksearch_value,d),e=!1,f="",g=b.substring(0,d),b=b.substring(d+this.ksearch_value.length,b.length);this.ksearch_destroy();"object"===typeof this.env.contacts[a]&&this.env.contacts[a].id?(f+=this.env.contacts[a].name+this.env.recipients_delimiter,this.group2expand[this.env.contacts[a].id]=$.extend({input:this.ksearch_input},this.env.contacts[a]),
+this.http_request("mail/group-expand","_source="+urlencode(this.env.contacts[a].source)+"&_gid="+urlencode(this.env.contacts[a].id),!1)):"string"===typeof this.env.contacts[a]&&(f=this.env.contacts[a]+this.env.recipients_delimiter,e=!0);this.ksearch_input.value=g+f+b;d+=f.length;this.ksearch_input.setSelectionRange&&this.ksearch_input.setSelectionRange(d,d);e&&this.triggerEvent("autocomplete_insert",{field:this.ksearch_input,insert:f})}};this.replace_group_recipients=function(a,b){this.group2expand[a]&&
+(this.group2expand[a].input.value=this.group2expand[a].input.value.replace(this.group2expand[a].name,b),this.triggerEvent("autocomplete_insert",{field:this.group2expand[a].input,insert:b}),this.group2expand[a]=null)};this.ksearch_get_results=function(a){var b=this.ksearch_input?this.ksearch_input.value:null;if(null!==b){this.ksearch_pane&&this.ksearch_pane.is(":visible")&&this.ksearch_pane.hide();var d=this.get_caret_pos(this.ksearch_input),e=b.lastIndexOf(this.env.recipients_separator,d-1),b=b.substring(e+
+1,d),e=this.env.autocomplete_min_length,d=this.ksearch_data,b=$.trim(b);if(b!=this.ksearch_value)if(this.ksearch_destroy(),b.length&&b.length<e)this.ksearch_info||(this.ksearch_info=this.display_message(this.get_label("autocompletechars").replace("$min",e)));else if(e=this.ksearch_value,this.ksearch_value=b,b.length&&(!e||!e.length||!(0==b.indexOf(e)&&(!d||0>=d.num)&&this.env.contacts&&!this.env.contacts.length))){var f,g,h,d=(new Date).getTime(),e=a&&a.threads?a.threads:1;f=a&&a.sources?a.sources:
+[];a=a&&a.action?a.action:"mail/autocomplete";this.ksearch_data={id:d,sources:f.slice(),action:a,locks:[],requests:[],num:f.length};for(f=0;f<e;f++){h=this.ksearch_data.sources.shift();if(1<e&&void 0===h)break;g=this.display_message(this.get_label("searching"),"loading");h=this.http_post(a,"_search="+urlencode(b)+"&_id="+d+(h?"&_source="+urlencode(h):""),g);this.ksearch_data.locks.push(g);this.ksearch_data.requests.push(h)}}}};this.ksearch_query_results=function(a,b,d){if(this.ksearch_value&&!(this.ksearch_input&&
+b!=this.ksearch_value)){var e,f,g,h,i,b=this.ksearch_value,p=this.ksearch_data,k=this.env.autocomplete_max?this.env.autocomplete_max:15;this.ksearch_pane||(g=$("<ul>"),this.ksearch_pane=$("<div>").attr("id","rcmKSearchpane").css({position:"absolute","z-index":3E4}).append(g).appendTo(document.body),this.ksearch_pane.__ul=g[0]);g=this.ksearch_pane.__ul;d&&this.ksearch_pane.data("reqid")==d?k-=g.childNodes.length:(this.ksearch_pane.data("reqid",d),g.innerHTML="",this.env.contacts=[],e=$(this.ksearch_input).offset(),
+this.ksearch_pane.css({left:e.left+"px",top:e.top+this.ksearch_input.offsetHeight+"px",display:"none"}));if(a&&(f=a.length))for(e=0;e<f&&0<k;e++)i="object"===typeof a[e]?a[e].name:a[e],h=document.createElement("LI"),h.innerHTML=i.replace(RegExp("("+RegExp.escape(b)+")","ig"),"##$1%%").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/##([^%]+)%%/g,"<b>$1</b>"),h.onmouseover=function(){j.ksearch_select(this)},h.onmouseup=function(){j.ksearch_click(this)},h._rcm_id=this.env.contacts.length+e,g.appendChild(h),
+k-=1;g.childNodes.length&&(this.ksearch_pane.show(),this.env.contacts.length||($("li:first",g).attr("id","rcmksearchSelected").addClass("selected"),this.ksearch_selected=0));f&&(this.env.contacts=this.env.contacts.concat(a));if(p.id==d)if(p.num--,0<k&&p.sources.length){if(f=p.sources.shift())a=this.display_message(this.get_label("searching"),"loading"),d=this.http_post(p.action,"_search="+urlencode(b)+"&_id="+d+"&_source="+urlencode(f),a),this.ksearch_data.locks.push(a),this.ksearch_data.requests.push(d)}else k||
+(this.ksearch_msg||(this.ksearch_msg=this.display_message(this.get_label("autocompletemore"))),this.ksearch_abort())}};this.ksearch_click=function(a){this.ksearch_input&&this.ksearch_input.focus();this.insert_recipient(a._rcm_id);this.ksearch_hide()};this.ksearch_blur=function(){this.ksearch_timer&&clearTimeout(this.ksearch_timer);this.ksearch_input=null;this.ksearch_hide()};this.ksearch_hide=function(){this.ksearch_selected=null;this.ksearch_value="";this.ksearch_pane&&this.ksearch_pane.hide();this.ksearch_destroy()};
+this.ksearch_destroy=function(){this.ksearch_abort();this.ksearch_info&&this.hide_message(this.ksearch_info);this.ksearch_msg&&this.hide_message(this.ksearch_msg);this.ksearch_msg=this.ksearch_info=this.ksearch_data=null};this.ksearch_abort=function(){var a,b,d=this.ksearch_data;if(d){a=0;for(b=d.locks.length;a<b;a++)this.abort_request({request:d.requests[a],lock:d.locks[a]})}};this.contactlist_keypress=function(a){a.key_pressed==a.DELETE_KEY&&this.command("delete")};this.contactlist_select=function(a){this.preview_timer&&
+clearTimeout(this.preview_timer);var b,d,e,f=this,g=!1;e=this.env.source?this.env.address_sources[this.env.source]:null;(d=a.get_single_selection())?this.preview_timer=setTimeout(function(){f.load_contact(d,"show")},200):this.env.contentframe&&this.show_contentframe(!1);if(a.selection.length)if(e)g=!e.readonly;else for(b in a.selection)if((e=String(a.selection[b]).replace(/^[^-]+-/,""))&&this.env.address_sources[e]&&!this.env.address_sources[e].readonly){g=!0;break}this.enable_command("group-remove-selected",
+this.env.group&&0<a.selection.length);this.enable_command("compose",this.env.group||0<a.selection.length);this.enable_command("edit",d&&g);this.enable_command("delete",a.selection.length&&g);return!1};this.list_contacts=function(a,b,d){var e="",f=window;a||(a=this.env.source);if(d&&this.current_page==d&&a==this.env.source&&b==this.env.group)return!1;a!=this.env.source?(d=this.env.current_page=1,this.reset_qsearch()):b!=this.env.group&&(d=this.env.current_page=1);this.select_folder(this.env.search_id?
+"S"+this.env.search_id:b?"G"+a+b:a);this.env.source=a;this.env.group=b;this.gui_objects.contactslist?this.list_contacts_remote(a,b,d):(this.env.contentframe&&(window.frames&&window.frames[this.env.contentframe])&&(f=window.frames[this.env.contentframe],e="&_framed=1"),b&&(e+="&_gid="+b),d&&(e+="&_page="+d),this.env.search_request&&(e+="&_search="+this.env.search_request),this.set_busy(!0,"loading"),this.location_href(this.env.comm_path+(a?"&_source="+urlencode(a):"")+e,f))};this.list_contacts_remote=
+function(a,b,d){this.list_contacts_clear();var d=(a?"_source="+urlencode(a):"")+(d?(a?"&":"")+"_page="+d:""),e=this.set_busy(!0,"loading");this.env.source=a;(this.env.group=b)&&(d+="&_gid="+b);this.env.search_request&&(d+="&_search="+this.env.search_request);this.http_request("mail"==this.env.task?"list-contacts":"list",d,e)};this.list_contacts_clear=function(){this.contact_list.clear(!0);this.show_contentframe(!1);this.enable_command("delete",!1);this.enable_command("compose",this.env.group?!0:!1)};
+this.load_contact=function(a,b,d){var e="",f=window;if(this.env.contentframe&&window.frames&&window.frames[this.env.contentframe])e="&_framed=1",f=window.frames[this.env.contentframe],this.show_contentframe(!0),a||(this.contact_list.clear_selection(),this.enable_command("delete","compose",!1));else if(d)return!1;if(b&&(a||"add"==b)&&!this.drag_active)this.env.group&&(e+="&_gid="+urlencode(this.env.group)),this.location_href(this.env.comm_path+"&_action="+b+"&_source="+urlencode(this.env.source)+"&_cid="+
+urlencode(a)+e,f,!0);return!0};this.group_member_change=function(a,b,d,e){var a="add"==a?"add":"del",f=this.display_message(this.get_label("add"==a?"addingmember":"removingmember"),"loading");this.http_post("group-"+a+"members","_cid="+urlencode(b)+"&_source="+urlencode(d)+"&_gid="+urlencode(e),f)};this.copy_contact=function(a,b){a||(a=this.contact_list.get_selection().join(","));if("group"==b.type&&b.source==this.env.source)this.group_member_change("add",a,b.source,b.id);else if("group"==b.type&&
+!this.env.address_sources[b.source].readonly){var d=this.display_message(this.get_label("copyingcontact"),"loading");this.http_post("copy","_cid="+urlencode(a)+"&_source="+urlencode(this.env.source)+"&_to="+urlencode(b.source)+"&_togid="+urlencode(b.id)+(this.env.group?"&_gid="+urlencode(this.env.group):""),d)}else b.id!=this.env.source&&(a&&this.env.address_sources[b.id]&&!this.env.address_sources[b.id].readonly)&&(d=this.display_message(this.get_label("copyingcontact"),"loading"),this.http_post("copy",
+"_cid="+urlencode(a)+"&_source="+urlencode(this.env.source)+"&_to="+urlencode(b.id)+(this.env.group?"&_gid="+urlencode(this.env.group):""),d))};this.delete_contacts=function(){var a=this.contact_list.get_selection(),b=this.env.source&&this.env.address_sources[this.env.source].undelete;if(!(!a.length&&!this.env.cid||!b&&!confirm(this.get_label("deletecontactconfirm")))){var d,e=[],f="";if(this.env.cid)e.push(this.env.cid);else{for(d=0;d<a.length;d++)b=a[d],e.push(b),this.contact_list.remove_row(b,
+d==a.length-1);1==a.length&&this.show_contentframe(!1)}this.env.group&&(f+="&_gid="+urlencode(this.env.group));this.env.search_request&&(f+="&_search="+this.env.search_request);this.http_post("delete","_cid="+urlencode(e.join(","))+"&_source="+urlencode(this.env.source)+"&_from="+(this.env.action?this.env.action:"")+f,this.display_message(this.get_label("contactdeleting"),"loading"));return!0}};this.update_contact_row=function(a,b,d,e){var f,g=this.contact_list,a=this.html_identifier(a);g.rows[a]||
+(a=a+"-"+e,d&&(d=d+"-"+e));if(g.rows[a]&&(f=g.rows[a].obj)){for(e=0;e<b.length;e++)f.cells[e]&&$(f.cells[e]).html(b[e]);d&&(d=this.html_identifier(d),f.id="rcmrow"+d,g.remove_row(a),g.init_row(f),g.selection[0]=d,f.style.display="")}};this.add_contact_row=function(a,b,d){if(!this.gui_objects.contactslist)return!1;var e,f=this.contact_list,g=document.createElement("tr");g.id="rcmrow"+this.html_identifier(a);g.className="contact "+(d||"");f.in_selection(a)&&(g.className+=" selected");for(e in b)col=
+document.createElement("td"),col.className=String(e).toLowerCase(),col.innerHTML=b[e],g.appendChild(col);f.insert_row(g);this.enable_command("export",0<f.rowcount)};this.init_contact_form=function(){var a=this,b;this.set_photo_actions($("#ff_photo").val());for(b in this.env.coltypes)this.init_edit_field(b,null);$(".contactfieldgroup .row a.deletebutton").click(function(){a.delete_edit_field(this);return!1});$("select.addfieldmenu").change(function(){a.insert_edit_field($(this).val(),$(this).attr("rel"),
+this);this.selectedIndex=0});$.datepicker&&this.env.date_format&&($.datepicker.setDefaults({dateFormat:this.env.date_format,changeMonth:!0,changeYear:!0,yearRange:"-100:+10",showOtherMonths:!0,selectOtherMonths:!0,onSelect:function(a){$(this).focus().val(a)}}),$("input.datepicker").datepicker());$("input[type='text']:visible").first().focus()};this.group_create=function(){this.add_input_row("contactgroup")};this.group_rename=function(){if(this.env.group&&this.gui_objects.folderlist){if(!this.name_input){this.enable_command("list",
+"listgroup",!1);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(a){return rcmail.add_input_keydown(a)});this.env.group_renaming=!0;var a,b=this.get_folder_li(this.env.source+this.env.group,"rcmliG");b&&(a=b.firstChild)&&$(a).hide().before(this.name_input)}this.name_input.select().focus()}};this.group_delete=function(){if(this.env.group&&confirm(this.get_label("deletegroupconfirm"))){var a=
+this.set_busy(!0,"groupdeleting");this.http_post("group-delete","_source="+urlencode(this.env.source)+"&_gid="+urlencode(this.env.group),a)}};this.remove_group_item=function(a){var b,d="G"+a.source+a.id;if(b=this.get_folder_li(d))this.triggerEvent("group_delete",{source:a.source,id:a.id,li:b}),b.parentNode.removeChild(b),delete this.env.contactfolders[d],delete this.env.contactgroups[d];this.list_contacts(a.source,0)};this.add_input_row=function(a){this.gui_objects.folderlist&&(this.name_input||(this.name_input=
+$("<input>").attr("type","text").data("tt",a),this.name_input.bind("keydown",function(a){return rcmail.add_input_keydown(a)}),this.name_input_li=$("<li>").addClass(a).append(this.name_input),a="contactsearch"==a?$("li:last",this.gui_objects.folderlist):this.get_folder_li(this.env.source),this.name_input_li.insertAfter(a)),this.name_input.select().focus())};this.group_remove_selected=function(){j.http_post("group-delmembers","_cid="+urlencode(this.contact_list.selection)+"&_source="+urlencode(this.env.source)+
+"&_gid="+urlencode(this.env.group))};this.remove_group_contacts=function(a){if("undefined"!=typeof this.env.group&&this.env.group===a.gid)for(var a=this.contact_list.get_selection(),b=0;b<a.length;b++)id=a[b],this.contact_list.remove_row(id,b==a.length-1)};this.add_input_keydown=function(a){var b=rcube_event.get_keycode(a),d=$(a.target),a=d.data("tt");if(13==b){if(b=d.val())d=this.set_busy(!0,"loading"),"contactsearch"==a?this.http_post("search-create","_search="+urlencode(this.env.search_request)+
+"&_name="+urlencode(b),d):this.env.group_renaming?this.http_post("group-rename","_source="+urlencode(this.env.source)+"&_gid="+urlencode(this.env.group)+"&_name="+urlencode(b),d):this.http_post("group-create","_source="+urlencode(this.env.source)+"&_name="+urlencode(b),d);return!1}27==b&&this.reset_add_input();return!0};this.reset_add_input=function(){this.name_input&&(this.env.group_renaming&&(this.name_input.parent().children().last().show(),this.env.group_renaming=!1),this.name_input.remove(),
+this.name_input_li&&this.name_input_li.remove(),this.name_input=this.name_input_li=null);this.enable_command("list","listgroup",!0)};this.insert_contact_group=function(a){this.reset_add_input();a.type="group";var b="G"+a.source+a.id,d=$("<a>").attr("href","#").attr("rel",a.source+":"+a.id).click(function(){return rcmail.command("listgroup",a,this)}).html(a.name),d=$("<li>").attr({id:"rcmli"+this.html_identifier(b),"class":"contactgroup"}).append(d);this.env.contactfolders[b]=this.env.contactgroups[b]=
+a;this.add_contact_group_row(a,d);this.triggerEvent("group_insert",{id:a.id,source:a.source,name:a.name,li:d[0]})};this.update_contact_group=function(a){this.reset_add_input();var b="G"+a.source+a.id,d=this.get_folder_li(b),e;if(d&&a.newid){e="G"+a.source+a.newid;var f=$.extend({},a);d.id="rcmli"+this.html_identifier(e);this.env.contactfolders[e]=this.env.contactfolders[b];this.env.contactfolders[e].id=a.newid;this.env.group=a.newid;delete this.env.contactfolders[b];delete this.env.contactgroups[b];
+f.id=a.newid;f.type="group";e=$("<a>").attr("href","#").attr("rel",a.source+":"+a.newid).click(function(){return rcmail.command("listgroup",f,this)}).html(a.name);$(d).children().replaceWith(e)}else if(d&&(e=d.firstChild)&&"a"==e.tagName.toLowerCase())e.innerHTML=a.name;this.env.contactfolders[b].name=this.env.contactgroups[b].name=a.name;this.add_contact_group_row(a,$(d),!0);this.triggerEvent("group_update",{id:a.id,source:a.source,name:a.name,li:d[0],newid:a.newid})};this.add_contact_group_row=
+function(a,b,d){var e=a.name.toUpperCase(),f=this.get_folder_li(a.source),a="rcmliG"+this.html_identifier(a.source);d?(d=b.clone(!0),b.remove()):d=b;$('li[id^="'+a+'"]',this.gui_objects.folderlist).each(function(a,b){if(e>=$(this).text().toUpperCase())f=b;else return!1});d.insertAfter(f)};this.update_group_commands=function(){var a=""!=this.env.source?this.env.address_sources[this.env.source]:null;this.enable_command("group-create",a&&a.groups&&!a.readonly);this.enable_command("group-rename","group-delete",
+a&&a.groups&&this.env.group&&!a.readonly)};this.init_edit_field=function(a,b){var d=this.env.coltypes[a].label;b||(b=$(".ff_"+a));d&&b.placeholder(d)};this.insert_edit_field=function(a,b,d){var e=$("#ff_"+a);if(e.length)e.show().focus(),$(d).children('option[value="'+a+'"]').prop("disabled",!0);else{$(".ff_"+a);e=$("#contactsection"+b+" .contactcontroller"+a);if(!e.length){var b=$("#contactsection"+b),f=$(".contactfieldgroup",b).last(),e=$("<fieldset>").addClass("contactfieldgroup contactcontroller"+
+a);f.length?e.insertAfter(f):b.prepend(e)}if(e.length&&"FIELDSET"==e.get(0).nodeName){var g,b=this.env.coltypes[a],f=$("<div>").addClass("row"),h=$("<div>").addClass("contactfieldcontent data"),i=$("<div>").addClass("contactfieldlabel label");b.subtypes_select?i.html(b.subtypes_select):i.html(b.label);var p=1!=b.limit?"[]":"";if("text"==b.type||"date"==b.type)g=$("<input>").addClass("ff_"+a).attr({type:"text",name:"_"+a+p,size:b.size}).appendTo(h),this.init_edit_field(a,g),"date"==b.type&&$.datepicker&&
+g.datepicker();else if("textarea"==b.type)g=$("<textarea>").addClass("ff_"+a).attr({name:"_"+a+p,cols:b.size,rows:b.rows}).appendTo(h),this.init_edit_field(a,g);else if("composite"==b.type){var k,l,m=[],n=[];if(g=this.env[a+"_template"])for(k=0;k<g.length;k++)m.push(g[k][1]),n.push(g[k][2]);else for(k in b.childs)m.push(k);for(var q=0;q<m.length;q++)k=m[q],g=b.childs[k],g=$("<input>").addClass("ff_"+k).attr({type:"text",name:"_"+k+p,size:g.size}).appendTo(h),h.append(n[q]||" "),this.init_edit_field(k,
+g),l||(l=g);g=l}else if("select"==b.type){g=$("<select>").addClass("ff_"+a).attr("name","_"+a+p).appendTo(h);var s=g.attr("options");s[s.length]=new Option("---","");b.options&&$.each(b.options,function(a,b){s[s.length]=new Option(b,a)})}g&&($('<a href="#del"></a>').addClass("contactfieldbutton deletebutton").attr({title:this.get_label("delete"),rel:a}).html(this.env.delbutton).click(function(){j.delete_edit_field(this);return!1}).appendTo(h),f.append(i).append(h).appendTo(e.show()),g.first().focus(),
+b.count||(b.count=0),++b.count==b.limit&&b.limit&&$(d).children('option[value="'+a+'"]').prop("disabled",!0))}}};this.delete_edit_field=function(a){var b=$(a).attr("rel"),d=this.env.coltypes[b],e=$(a).parents("fieldset.contactfieldgroup"),f=e.parent().find("select.addfieldmenu");0>=--d.count&&d.visible?$(a).parent().children("input").val("").blur():($(a).parents("div.row").remove(),e.children("div.row").length||e.hide());f.length&&(a=f.children('option[value="'+b+'"]'),a.length?a.prop("disabled",
+!1):$("<option>").attr("value",b).html(d.label).appendTo(f),f.show())};this.upload_contact_photo=function(a){a&&a.elements._photo.value&&(this.async_upload_form(a,"upload-photo",function(){rcmail.set_busy(!1,null,rcmail.photo_upload_id)}),this.photo_upload_id=this.set_busy(!0,"uploading"))};this.replace_contact_photo=function(a){var b="-del-"==a?this.env.photo_placeholder:this.env.comm_path+"&_action=photo&_source="+this.env.source+"&_cid="+this.env.cid+"&_photo="+a;this.set_photo_actions(a);$(this.gui_objects.contactphoto).children("img").attr("src",
+b)};this.photo_upload_end=function(){this.set_busy(!1,null,this.photo_upload_id);delete this.photo_upload_id};this.set_photo_actions=function(a){var b,d=this.buttons["upload-photo"];for(b=0;d&&b<d.length;b++)$("a#"+d[b].id).html(this.get_label("-del-"==a?"addphoto":"replacephoto"));$("#ff_photo").val(a);this.enable_command("upload-photo",this.env.coltypes.photo?!0:!1);this.enable_command("delete-photo",this.env.coltypes.photo&&"-del-"!=a)};this.advanced_search=function(){var a="&_form=1",b=window;
+this.env.contentframe&&(window.frames&&window.frames[this.env.contentframe])&&(a+="&_framed=1",b=window.frames[this.env.contentframe],this.contact_list.clear_selection());this.location_href(this.env.comm_path+"&_action=search"+a,b,!0);return!0};this.unselect_directory=function(){this.select_folder("");this.enable_command("search-delete",!1)};this.insert_saved_search=function(a,b){this.reset_add_input();var d="S"+b,e=$("<a>").attr("href","#").attr("rel",b).click(function(){return rcmail.command("listsearch",
+b,this)}).html(a),d=$("<li>").attr({id:"rcmli"+this.html_identifier(d),"class":"contactsearch"}).append(e),e={name:a,id:b,li:d[0]};this.add_saved_search_row(e,d);this.select_folder("S"+b);this.enable_command("search-delete",!0);this.env.search_id=b;this.triggerEvent("abook_search_insert",e)};this.add_saved_search_row=function(a,b,d){var e,f=a.name.toUpperCase();d?(a=b.clone(!0),b.remove()):a=b;$('li[class~="contactsearch"]',this.gui_objects.folderlist).each(function(a,b){e||(e=this.previousSibling);
+if(f>=$(this).text().toUpperCase())e=b;else return!1});e?a.insertAfter(e):a.appendTo(this.gui_objects.folderlist)};this.search_create=function(){this.add_input_row("contactsearch")};this.search_delete=function(){if(this.env.search_request){var a=this.set_busy(!0,"savedsearchdeleting");this.http_post("search-delete","_sid="+urlencode(this.env.search_id),a)}};this.remove_search_item=function(a){var b;if(b=this.get_folder_li("S"+a))this.triggerEvent("search_delete",{id:a,li:b}),b.parentNode.removeChild(b);
+this.env.search_id=null;this.env.search_request=null;this.list_contacts_clear();this.reset_qsearch();this.enable_command("search-delete","search-create",!1)};this.listsearch=function(a){var b=this.set_busy(!0,"searching");this.contact_list&&this.list_contacts_clear();this.reset_qsearch();this.select_folder("S"+a);this.env.current_page=1;this.http_request("search","_sid="+urlencode(a),b)};this.section_select=function(a){var a=a.get_single_selection(),b="",d=window;a&&(this.env.contentframe&&(window.frames&&
+window.frames[this.env.contentframe])&&(b="&_framed=1",d=window.frames[this.env.contentframe]),this.location_href(this.env.comm_path+"&_action=edit-prefs&_section="+a+b,d,!0));return!0};this.identity_select=function(a){var b;if(b=a.get_single_selection())this.enable_command("delete",1<a.rowcount&&2>this.env.identities_level),this.load_identity(b,"edit-identity")};this.load_identity=function(a,b){if("edit-identity"==b&&(!a||a==this.env.iid))return!1;var d="",e=window;this.env.contentframe&&(window.frames&&
+window.frames[this.env.contentframe])&&(d="&_framed=1",e=window.frames[this.env.contentframe],document.getElementById(this.env.contentframe).style.visibility="inherit");if(b&&(a||"add-identity"==b))this.set_busy(!0),this.location_href(this.env.comm_path+"&_action="+b+"&_iid="+a+d,e);return!0};this.delete_identity=function(a){var b=this.identity_list.get_selection();if(b.length||this.env.iid)return a||(a=this.env.iid?this.env.iid:b[0]),confirm(this.get_label("deleteidentityconfirm"))&&this.goto_url("delete-identity",
+"_iid="+a+"&_token="+this.env.request_token,!0),!0};this.update_identity_row=function(a,b,d){var e,f=this.identity_list,a=this.html_identifier(a);f.rows[a]&&(e=f.rows[a].obj)?$(e.cells[0]).html(b):d&&(e=$("<tr>").attr("id","rcmrow"+a).get(0),$("<td>").addClass("mail").html(b).appendTo(e),f.insert_row(e),f.select(a))};this.init_subscription_list=function(){var a=this;this.subscription_list=new rcube_list_widget(this.gui_objects.subscriptionlist,{multiselect:!1,draggable:!0,keyboard:!1,toggleselect:!0});
+this.subscription_list.addEventListener("select",function(b){a.subscription_select(b)});this.subscription_list.addEventListener("dragstart",function(){a.drag_active=!0});this.subscription_list.addEventListener("dragend",function(b){a.subscription_move_folder(b)});this.subscription_list.row_init=function(b){b.obj.onmouseover=function(){a.focus_subscription(b.id)};b.obj.onmouseout=function(){a.unfocus_subscription(b.id)}};this.subscription_list.init();$("#mailboxroot").mouseover(function(){a.focus_subscription(this.id)}).mouseout(function(){a.unfocus_subscription(this.id)})};
 this.focus_subscription=function(a){var b,d,e=RegExp.escape(this.env.delimiter),e=RegExp("["+e+"]?[^"+e+"]+$");if(this.drag_active&&this.env.mailbox&&(b=document.getElementById(a)))if(this.env.subscriptionrows[a]&&null!==(d=this.env.subscriptionrows[a][0])&&this.check_droptarget(d)&&!this.env.subscriptionrows[this.get_folder_row_id(this.env.mailbox)][2]&&d!=this.env.mailbox.replace(e,"")&&!d.match(RegExp("^"+RegExp.escape(this.env.mailbox+this.env.delimiter))))this.env.dstfolder=d,$(b).addClass("droptarget")};
 this.unfocus_subscription=function(a){var b=$("#"+a);this.env.dstfolder=null;this.env.subscriptionrows[a]&&b[0]?b.removeClass("droptarget"):$(this.subscription_list.frame).removeClass("droptarget")};this.subscription_select=function(a){var b,d;a&&(b=a.get_single_selection())&&(d=this.env.subscriptionrows["rcmrow"+b])?(this.env.mailbox=d[0],this.show_folder(d[0]),this.enable_command("delete-folder",!d[2])):(this.env.mailbox=null,this.show_contentframe(!1),this.enable_command("delete-folder","purge",
-!1))};this.subscription_move_folder=function(){var a=RegExp.escape(this.env.delimiter);this.env.mailbox&&null!==this.env.dstfolder&&this.env.dstfolder!=this.env.mailbox&&this.env.dstfolder!=this.env.mailbox.replace(RegExp("["+a+"]?[^"+a+"]+$"),"")&&(a=this.env.mailbox.replace(RegExp("[^"+a+"]*["+a+"]","g"),""),a=""===this.env.dstfolder?a:this.env.dstfolder+this.env.delimiter+a,a!=this.env.mailbox&&(this.http_post("rename-folder","_folder_oldname="+urlencode(this.env.mailbox)+"&_folder_newname="+urlencode(a),
-this.set_busy(!0,"foldermoving")),this.subscription_list.draglayer.hide()));this.drag_active=!1;this.unfocus_subscription(this.get_folder_row_id(this.env.dstfolder))};this.create_folder=function(){this.show_folder("",this.env.mailbox)};this.delete_folder=function(a){if((a=this.env.subscriptionrows[this.get_folder_row_id(a?a:this.env.mailbox)][0])&&confirm(this.get_label("deletefolderconfirm"))){var b=this.set_busy(!0,"folderdeleting");this.http_post("delete-folder","_mbox="+urlencode(a),b)}};this.add_folder_row=
-function(a,b,d,e,f,h){if(!this.gui_objects.subscriptionlist)return!1;var g,k,j,i,n,m=[],o=[],p=this.gui_objects.subscriptionlist.tBodies[0];g=$("tr",p).get(1);var q="rcmrow"+(new Date).getTime();if(!g)return this.goto_url("folders"),!1;g=$(g).clone(!0);g.attr("id",q);g.attr("class",h);g.find("td:first").html(b);$('input[name="_subscribed[]"]',g).val(a).prop({checked:e?!0:!1,disabled:d?!0:!1});this.env.subscriptionrows[q]=[a,b,0];i=[];$.each(this.env.subscriptionrows,function(a,b){i.push(b)});i.sort(function(a,
-b){return a[0]<b[0]?-1:a[0]>b[0]?1:0});for(k in i)i[k][2]?(o.push(i[k][0]),j=i[k][0]+this.env.delimiter):j&&0==i[k][0].indexOf(j)?o.push(i[k][0]):(m.push(i[k][0]),j=null);for(k=0;k<o.length;k++)0==a.indexOf(o[k]+this.env.delimiter)&&(n=this.get_folder_row_id(o[k]));for(k=0;!n&&k<m.length;k++)k&&m[k]==a&&(n=this.get_folder_row_id(m[k-1]));n?$("#"+n).after(g):g.appendTo(p);this.subscription_list.clear_selection();f||this.init_subscription_list();g=g.get(0);g.scrollIntoView&&g.scrollIntoView();return g};
-this.replace_folder_row=function(a,b,d,e,f){if(!this.gui_objects.subscriptionlist)return!1;var h,g,i,j,l=this.get_folder_row_id(a),n=RegExp("^"+RegExp.escape(a));h=$('input[name="_subscribed[]"]',$("#"+l)).prop("checked");var m=this.get_subfolders(a);this._remove_folder_row(l);e=$(this.add_folder_row(b,d,e,h,!0,f));if(d=m.length)j=a.split(this.env.delimiter).length-b.split(this.env.delimiter).length;for(a=0;a<d;a++)if(l=m[a],h=this.env.subscriptionrows[l][0],f=this.env.subscriptionrows[l][1],g=$("#"+
-l),i=g.clone(!0),g.remove(),e.after(i),e=i,h=h.replace(n,b),$('input[name="_subscribed[]"]',e).val(h),this.env.subscriptionrows[l][0]=h,0!=j){if(0<j)for(h=j;0<h;h--)f=f.replace(/^&nbsp;&nbsp;&nbsp;&nbsp;/,"");else for(h=j;0>h;h++)f="&nbsp;&nbsp;&nbsp;&nbsp;"+f;e.find("td:first").html(f);this.env.subscriptionrows[l][1]=f}this.init_subscription_list()};this.remove_folder_row=function(a,b){var d,e,f=[];d=this.get_folder_row_id(a);b&&(f=this.get_subfolders(a));this._remove_folder_row(d);d=0;for(e=f.length;d<
-e;d++)this._remove_folder_row(f[d])};this._remove_folder_row=function(a){this.subscription_list.remove_row(a.replace(/^rcmrow/,""));$("#"+a).remove();delete this.env.subscriptionrows[a]};this.get_subfolders=function(a){for(var b=[],d=RegExp("^"+RegExp.escape(a)+RegExp.escape(this.env.delimiter)),e=$("#"+this.get_folder_row_id(a)).get(0);e=e.nextSibling;)if(e.id)if(a=this.env.subscriptionrows[e.id][0],d.test(a))b.push(e.id);else break;return b};this.subscribe=function(a){if(a){var b=this.display_message(this.get_label("foldersubscribing"),
-"loading");this.http_post("subscribe","_mbox="+urlencode(a),b)}};this.unsubscribe=function(a){if(a){var b=this.display_message(this.get_label("folderunsubscribing"),"loading");this.http_post("unsubscribe","_mbox="+urlencode(a),b)}};this.get_folder_row_id=function(a){var b,d=this.env.subscriptionrows;for(b in d)if(d[b]&&d[b][0]==a)break;return b};this.show_folder=function(a,b,d){var e=window,a="&_action=edit-folder&_mbox="+urlencode(a);b&&(a+="&_path="+urlencode(b));this.env.contentframe&&window.frames&&
-window.frames[this.env.contentframe]&&(e=window.frames[this.env.contentframe],a+="&_framed=1");0<=(""+e.location.href).indexOf(a)&&!d?this.show_contentframe(!0):this.location_href(this.env.comm_path+a,e,!0)};this.disable_subscription=function(a){(a=this.get_folder_row_id(a))&&$('input[name="_subscribed[]"]',$("#"+a)).prop("disabled",!0)};this.folder_size=function(a){var b=this.set_busy(!0,"loading");this.http_post("folder-size","_mbox="+urlencode(a),b)};this.folder_size_update=function(a){$("#folder-size").replaceWith(a)};
-var s=function(a,b){var d=document.getElementById(b.id);if(d){var e=!1;"image"==b.type&&(d=d.parentNode,e=!0);d._command=a;d._id=b.id;b.sel&&(d.onmousedown=function(){return rcmail.button_sel(this._command,this._id)},d.onmouseup=function(){return rcmail.button_out(this._command,this._id)},e&&((new Image).src=b.sel));b.over&&(d.onmouseover=function(){return rcmail.button_over(this._command,this._id)},d.onmouseout=function(){return rcmail.button_out(this._command,this._id)},e&&((new Image).src=b.over))}};
-this.set_page_buttons=function(){this.enable_command("nextpage","lastpage",this.env.pagecount>this.env.current_page);this.enable_command("previouspage","firstpage",1<this.env.current_page)};this.init_buttons=function(){for(var a in this.buttons)if("string"===typeof a)for(var b=0;b<this.buttons[a].length;b++)s(a,this.buttons[a][b]);this.set_button(this.task,"sel")};this.set_button=function(a,b){var d,e,f,h=this.buttons[a],g=h?h.length:0;for(d=0;d<g;d++)if(e=h[d],(f=document.getElementById(e.id))&&
-"image"==e.type&&!e.status?(e.pas=f._original_src?f._original_src:f.src,f.runtimeStyle&&f.runtimeStyle.filter&&f.runtimeStyle.filter.match(/src=['"]([^'"]+)['"]/)&&(e.pas=RegExp.$1)):f&&!e.status&&(e.pas=""+f.className),f&&"image"==e.type&&e[b]?(e.status=b,f.src=e[b]):f&&void 0!==e[b]&&(e.status=b,f.className=e[b]),f&&"input"==e.type)e.status=b,f.disabled=!b};this.set_alttext=function(a,b){var d,e,f,h,g=this.buttons[a],i=g?g.length:0;for(d=0;d<i;d++)e=g[d],f=document.getElementById(e.id),"image"==
-e.type&&f?(f.setAttribute("alt",this.get_label(b)),(h=f.parentNode)&&"a"==h.tagName.toLowerCase()&&h.setAttribute("title",this.get_label(b))):f&&f.setAttribute("title",this.get_label(b))};this.button_over=function(a,b){var d,e,f,h=this.buttons[a],g=h?h.length:0;for(d=0;d<g;d++)if(e=h[d],e.id==b&&"act"==e.status&&(f=document.getElementById(e.id))&&e.over)"image"==e.type?f.src=e.over:f.className=e.over};this.button_sel=function(a,b){var d,e,f,h=this.buttons[a],g=h?h.length:0;for(d=0;d<g;d++)if(e=h[d],
-e.id==b&&"act"==e.status){if((f=document.getElementById(e.id))&&e.sel)"image"==e.type?f.src=e.sel:f.className=e.sel;this.buttons_sel[b]=a}};this.button_out=function(a,b){var d,e,f,h=this.buttons[a],g=h?h.length:0;for(d=0;d<g;d++)if(e=h[d],e.id==b&&"act"==e.status&&(f=document.getElementById(e.id))&&e.act)"image"==e.type?f.src=e.act:f.className=e.act};this.focus_textfield=function(a){a._hasfocus=!0;var b=$(a);(b.hasClass("placeholder")||b.val()==a._placeholder)&&b.val("").removeClass("placeholder").attr("spellcheck",
-!0)};this.blur_textfield=function(a){a._hasfocus=!1;var b=$(a);a._placeholder&&(!b.val()||b.val()==a._placeholder)&&b.addClass("placeholder").attr("spellcheck",!1).val(a._placeholder)};this.set_pagetitle=function(a){a&&document.title&&(document.title=a)};this.display_message=function(a,b,d){if(this.is_framed())return parent.rcmail.display_message(a,b,d);if(!this.gui_objects.message)return"loading"!=b&&(this.pending_message=[a,b,d]),!1;var b=b?b:"notice",e=this,f=this.html_identifier(a),h=b+(new Date).getTime();
-d||(d=this.message_time*("error"==b||"warning"==b?2:1));"loading"==b&&(f="loading",d=1E3*this.env.request_timeout,a||(a=this.get_label("loading")));if(this.messages[f])return this.messages[f].obj&&this.messages[f].obj.html(a),"loading"==b&&this.messages[f].labels.push({id:h,msg:a}),this.messages[f].elements.push(h),window.setTimeout(function(){e.hide_message(h,b=="loading")},d),h;var g=$("<div>").addClass(b).html(a).data("key",f);$(this.gui_objects.message).append(g).show();this.messages[f]={obj:g,
-elements:[h]};"loading"==b?this.messages[f].labels=[{id:h,msg:a}]:g.click(function(){return e.hide_message(g)});0<d&&window.setTimeout(function(){e.hide_message(h,b=="loading")},d);return h};this.hide_message=function(a,b){if(this.is_framed())return parent.rcmail.hide_message(a,b);var d,e,f,h,g=this.messages;if("object"===typeof a)$(a)[b?"fadeOut":"hide"](),h=$(a).data("key"),this.messages[h]&&delete this.messages[h];else for(d in g)for(e in g[d].elements)if(g[d]&&g[d].elements[e]==a)if(g[d].elements.splice(e,
-1),g[d].elements.length){if("loading"==d)for(f in g[d].labels)g[d].labels[f].id==a?delete g[d].labels[f]:h=g[d].labels[f].msg,g[d].obj.html(h)}else g[d].obj[b?"fadeOut":"hide"](),delete g[d]};this.select_folder=function(a,b,d){if(this.gui_objects.folderlist){var e,f;(e=$("li.selected",this.gui_objects.folderlist))&&e.removeClass("selected").addClass("unfocused");(f=this.get_folder_li(a,b,d))&&$(f).removeClass("unfocused").addClass("selected");this.triggerEvent("selectfolder",{folder:a,prefix:b})}};
-this.get_folder_li=function(a,b,d){b||(b="rcmli");return this.gui_objects.folderlist?(a=this.html_identifier(a,d),document.getElementById(b+a)):null};this.set_message_coltypes=function(a,b){var d=this.message_list,e=d?d.list.tHead:null,f,h,g,i;this.env.coltypes=a;if(e){if(b){h=document.createElement("thead");g=document.createElement("tr");c=0;for(i=b.length;c<i;c++)f=document.createElement("td"),f.innerHTML=b[c].html,b[c].id&&(f.id=b[c].id),b[c].className&&(f.className=b[c].className),g.appendChild(f);
-h.appendChild(g);e.parentNode.replaceChild(h,e);e=h}g=0;for(i=this.env.coltypes.length;g<i;g++)if(h=this.env.coltypes[g],(f=e.rows[0].cells[g])&&("from"==h||"to"==h))f.id="rcm"+h,f.firstChild&&"a"==f.firstChild.tagName.toLowerCase()&&(f=f.firstChild,f.onclick=function(){return rcmail.command("sort",this.__col,this)},f.__col=h),f.innerHTML=this.get_label(h)}this.env.subject_col=null;this.env.flagged_col=null;this.env.status_col=null;if(0<=(g=$.inArray("subject",this.env.coltypes)))this.env.subject_col=
-g,d&&(d.subject_col=g);if(0<=(g=$.inArray("flag",this.env.coltypes)))this.env.flagged_col=g;if(0<=(g=$.inArray("status",this.env.coltypes)))this.env.status_col=g;d&&d.init_header()};this.set_rowcount=function(a,b){if(b&&b!=this.env.mailbox)return!1;$(this.gui_objects.countdisplay).html(a);this.set_page_buttons()};this.set_mailboxname=function(a){this.gui_objects.mailboxname&&a&&(this.gui_objects.mailboxname.innerHTML=a)};this.set_quota=function(a){a&&this.gui_objects.quotadisplay&&("object"===typeof a&&
-"image"==a.type?this.percent_indicator(this.gui_objects.quotadisplay,a):$(this.gui_objects.quotadisplay).html(a))};this.set_unread_count=function(a,b,d){if(!this.gui_objects.mailboxlist)return!1;this.env.unread_counts[a]=b;this.set_unread_count_display(a,d)};this.set_unread_count_display=function(a,b){var d,e,f,h,g;if(f=this.get_folder_li(a,"",!0)){h=this.env.unread_counts[a]?this.env.unread_counts[a]:0;e=$(f).children("a").eq(0);d=e.children("span.unreadcount");!d.length&&h&&(d=$("<span>").addClass("unreadcount").appendTo(e));
-e=0;if((g=f.getElementsByTagName("div")[0])&&g.className.match(/collapsed/))for(var i in this.env.unread_counts)0==i.indexOf(a+this.env.delimiter)&&(e+=this.env.unread_counts[i]);h&&d.length?d.html(" ("+h+")"):d.length&&d.remove();d=RegExp(RegExp.escape(this.env.delimiter)+"[^"+RegExp.escape(this.env.delimiter)+"]+$");a.match(d)&&this.set_unread_count_display(a.replace(d,""),!1);0<h+e?$(f).addClass("unread"):$(f).removeClass("unread")}d=/^\([0-9]+\)\s+/i;b&&document.title&&(f="",f=""+document.title,
-f=h&&f.match(d)?f.replace(d,"("+h+") "):h?"("+h+") "+f:f.replace(d,""),this.set_pagetitle(f))};this.toggle_prefer_html=function(a){$("#rcmfd_show_images").prop("disabled",!a.checked).val(0)};this.toggle_preview_pane=function(a){$("#rcmfd_preview_pane_mark_read").prop("disabled",!a.checked)};this.set_headers=function(a){this.gui_objects.all_headers_row&&this.gui_objects.all_headers_box&&a&&$(this.gui_objects.all_headers_box).html(a).show()};this.load_headers=function(a){this.gui_objects.all_headers_row&&
-this.gui_objects.all_headers_box&&this.env.uid&&($(a).removeClass("show-headers").addClass("hide-headers"),$(this.gui_objects.all_headers_row).show(),a.onclick=function(){rcmail.hide_headers(a)},this.gui_objects.all_headers_box.innerHTML||this.http_post("headers","_uid="+this.env.uid,this.display_message(this.get_label("loading"),"loading")))};this.hide_headers=function(a){this.gui_objects.all_headers_row&&this.gui_objects.all_headers_box&&($(a).removeClass("hide-headers").addClass("show-headers"),
-$(this.gui_objects.all_headers_row).hide(),a.onclick=function(){rcmail.load_headers(a)})};this.percent_indicator=function(a,b){if(!b||!a)return!1;var d=b.width?b.width:this.env.indicator_width?this.env.indicator_width:100,e=b.height?b.height:this.env.indicator_height?this.env.indicator_height:14,f=b.percent?Math.abs(parseInt(b.percent)):0,h=parseInt(f/100*d),g=$(a).position();g.top=Math.max(0,g.top);g.left=Math.max(0,g.left);this.env.indicator_width=d;this.env.indicator_height=e;h>d&&(h=d,f=100);
-b.title&&(b.title=this.get_label("quota")+": "+b.title);var i=$("<div>");i.css({position:"absolute",top:g.top,left:g.left,width:d+"px",height:e+"px",zIndex:100,lineHeight:e+"px"}).attr("title",b.title).addClass("quota_text").html(f+"%");var j=$("<div>");j.css({position:"absolute",top:g.top+1,left:g.left+1,width:h+"px",height:e+"px",zIndex:99});h=$("<div>");h.css({position:"absolute",top:g.top+1,left:g.left+1,width:d+"px",height:e+"px",zIndex:98}).addClass("quota_bg");80<=f?(i.addClass(" quota_text_high"),
-j.addClass("quota_high")):55<=f?(i.addClass(" quota_text_mid"),j.addClass("quota_mid")):(i.addClass(" quota_text_low"),j.addClass("quota_low"));$(a).html("").append(j).append(h).append(i);$("#quotaimg").attr("title",b.title)};this.html2plain=function(a,b){var d=this,e=this.set_busy(!0,"converting");this.log("HTTP POST: ?_task=utils&_action=html2text");$.ajax({type:"POST",url:"?_task=utils&_action=html2text",data:a,contentType:"application/octet-stream",error:function(a,b,g){d.http_error(a,b,g,e)},
-success:function(a){d.set_busy(!1,null,e);$("#"+b).val(a);d.log(a)}})};this.plain2html=function(a,b){var d=this.set_busy(!0,"converting"),a=a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");$("#"+b).val(a?"<pre>"+a+"</pre>":"");this.set_busy(!1,null,d)};this.url=function(a,b){var d="string"===typeof b?"&"+b:"";if("string"!==typeof a)b=a;else if(!b||"object"!==typeof b)b={};b._action=a?a:this.env.action;var e=this.env.comm_path;b._action.match(/([a-z]+)\/([a-z0-9-_.]+)/)&&(b._action=
-RegExp.$2,e=e.replace(/\_task=[a-z]+/,"_task="+RegExp.$1));var f={},h;for(h in b)void 0!==b[h]&&null!==b[h]&&(f[h]=b[h]);return e+"&"+$.param(f)+d};this.redirect=function(a,b){(b||null===b)&&this.set_busy(!0);this.is_framed()?parent.rcmail.redirect(a,b):this.location_href(a,window)};this.goto_url=function(a,b){this.redirect(this.url(a,b))};this.location_href=function(a,b,d){d&&this.lock_frame();bw.ie&&b==window?$("<a>").attr("href",a).appendTo(document.body).get(0).click():b.location.href=a};this.http_request=
-function(a,b,d){var e=this.url(a,b),a=this.triggerEvent("request"+a,b);if(void 0!==a){if(!1===a)return!1;b=a}e+="&_remote=1";this.log("HTTP GET: "+e);return $.ajax({type:"GET",url:e,data:{_unlock:d?d:0},dataType:"json",success:function(a){i.http_response(a)},error:function(a,b,e){rcmail.http_error(a,b,e,d)}})};this.http_post=function(a,b,d){var e=this.url(a);b&&"object"===typeof b?(b._remote=1,b._unlock=d?d:0):b+=(b?"&":"")+"_remote=1"+(d?"&_unlock="+d:"");a=this.triggerEvent("request"+a,b);if(void 0!==
-a){if(!1===a)return!1;b=a}this.log("HTTP POST: "+e);return $.ajax({type:"POST",url:e,data:b,dataType:"json",success:function(a){i.http_response(a)},error:function(a,b,e){rcmail.http_error(a,b,e,d)}})};this.abort_request=function(a){a.request&&a.request.abort();a.lock&&this.set_busy(!1,null,a.lock)};this.http_response=function(a){if(a){a.unlock&&this.set_busy(!1);this.triggerEvent("responsebefore",{response:a});this.triggerEvent("responsebefore"+a.action,{response:a});a.env&&this.set_env(a.env);if("object"===
-typeof a.texts)for(var b in a.texts)"string"===typeof a.texts[b]&&this.add_label(b,a.texts[b]);a.exec&&(this.log(a.exec),eval(a.exec));if(a.callbacks&&a.callbacks.length)for(b=0;b<a.callbacks.length;b++)this.triggerEvent(a.callbacks[b][0],a.callbacks[b][1]);switch(a.action){case "delete":if("addressbook"==this.task){var d;b=this.contact_list.get_selection();d=!1;b&&this.contact_list.rows[b]&&(d=""==this.env.source?(d=(""+b).replace(/^[^-]+-/,""))&&this.env.address_sources[d]&&!this.env.address_sources[d].readonly:
-!this.env.address_sources[this.env.source].readonly);this.enable_command("compose",b&&this.contact_list.rows[b]);this.enable_command("delete","edit",d);this.enable_command("export",this.contact_list&&0<this.contact_list.rowcount)}case "moveto":"show"==this.env.action?(this.enable_command(this.env.message_commands,!0),this.env.list_post||this.enable_command("reply-list",!1)):"addressbook"==this.task&&this.triggerEvent("listupdate",{folder:this.env.source,rowcount:this.contact_list.rowcount});case "purge":case "expunge":"mail"==
-this.task&&(this.env.messagecount||(this.env.contentframe&&this.show_contentframe(!1),this.enable_command(this.env.message_commands,"purge","expunge","select-all","select-none","sort","expand-all","expand-unread","collapse-all",!1)),this.message_list&&this.triggerEvent("listupdate",{folder:this.env.mailbox,rowcount:this.message_list.rowcount}));break;case "check-recent":case "getunread":case "search":this.env.qsearch=null;case "list":if("mail"==this.task){if(this.enable_command("show","expunge","select-all",
-"select-none","sort",0<this.env.messagecount),this.enable_command("purge",this.purge_mailbox_test()),this.enable_command("expand-all","expand-unread","collapse-all",this.env.threading&&this.env.messagecount),"list"==a.action||"search"==a.action)this.msglist_select(this.message_list),this.triggerEvent("listupdate",{folder:this.env.mailbox,rowcount:this.message_list.rowcount})}else if("addressbook"==this.task&&(this.enable_command("export",this.contact_list&&0<this.contact_list.rowcount),"list"==a.action||
-"search"==a.action))this.enable_command("search-create",""==this.env.source),this.enable_command("search-delete",this.env.search_id),this.update_group_commands(),this.triggerEvent("listupdate",{folder:this.env.source,rowcount:this.contact_list.rowcount})}a.unlock&&this.hide_message(a.unlock);this.triggerEvent("responseafter",{response:a});this.triggerEvent("responseafter"+a.action,{response:a})}};this.http_error=function(a,b,d,e){b=a.statusText;this.set_busy(!1,null,e);a.abort();a.status&&b&&this.display_message(this.get_label("servererror")+
-" ("+b+")","error")};this.async_upload_form=function(a,b,d){var e=(new Date).getTime(),f="rcmupload"+e;if(this.env.upload_progress_name){var h=this.env.upload_progress_name,g=$("input[name="+h+"]",a);g.length||(g=$("<input>").attr({type:"hidden",name:h}),g.prependTo(a));g.val(e)}document.all?document.body.insertAdjacentHTML("BeforeEnd",'<iframe name="'+f+'" src="program/blank.gif" style="width:0;height:0;visibility:hidden;"></iframe>'):(h=document.createElement("iframe"),h.name=f,h.style.border="none",
-h.style.width=0,h.style.height=0,h.style.visibility="hidden",document.body.appendChild(h));$(f).bind("load",{ts:e},d);$(a).attr({target:f,action:this.url(b,{_id:this.env.compose_id||"",_uploadid:e}),method:"POST"}).attr(a.encoding?"encoding":"enctype","multipart/form-data").submit();return f};this.start_keepalive=function(){this._int&&clearInterval(this._int);this.env.keep_alive&&!this.env.framed&&"mail"==this.task&&this.gui_objects.mailboxlist?this._int=setInterval(function(){i.check_for_recent(!1)},
-1E3*this.env.keep_alive):this.env.keep_alive&&!this.env.framed&&"login"!=this.task&&"print"!=this.env.action&&(this._int=setInterval(function(){i.keep_alive()},1E3*this.env.keep_alive))};this.keep_alive=function(){this.busy||this.http_request("keep-alive")};this.check_for_recent=function(a){if(!this.busy){var b,d="_mbox="+urlencode(this.env.mailbox);a&&(b=this.set_busy(!0,"checkingmail"),d+="&_refresh=1",this.start_keepalive());this.gui_objects.messagelist&&(d+="&_list=1");this.gui_objects.quotadisplay&&
-(d+="&_quota=1");this.env.search_request&&(d+="&_search="+this.env.search_request);this.http_request("check-recent",d,b)}};this.get_single_uid=function(){return this.env.uid?this.env.uid:this.message_list?this.message_list.get_single_selection():null};this.get_single_cid=function(){return this.env.cid?this.env.cid:this.contact_list?this.contact_list.get_single_selection():null};this.get_caret_pos=function(a){if(void 0!==a.selectionEnd)return a.selectionEnd;if(document.selection&&document.selection.createRange){var b=
-document.selection.createRange();if(b.parentElement()!=a)return 0;var d=b.duplicate();"TEXTAREA"==a.tagName?d.moveToElementText(a):d.expand("textedit");d.setEndPoint("EndToStart",b);b=d.text.length;return b<=a.value.length?b:-1}return a.value.length};this.set_caret_pos=function(a,b){if(a.setSelectionRange)a.setSelectionRange(b,b);else if(a.createTextRange){var d=a.createTextRange();d.collapse(!0);d.moveEnd("character",b);d.moveStart("character",b);d.select()}};this.lock_form=function(a,b){if(a&&a.elements){var d,
-e,f;b&&(this.disabled_form_elements=[]);d=0;for(e=a.elements.length;d<e;d++)if(f=a.elements[d],"hidden"!=f.type)if(b&&f.disabled)this.disabled_form_elements.push(f);else if(b||this.disabled_form_elements&&0>$.inArray(f,this.disabled_form_elements))f.disabled=b}}}rcube_webmail.long_subject_title=function(i,s){if(!i.title){var a=$(i);a.width()+15*s>a.parent().width()&&(i.title=a.html())}};
-rcube_webmail.long_subject_title_ie=function(i,s){if(!i.title){var a=$(i),b=$.trim(a.text()),d=$("<span>").text(b).css({position:"absolute","float":"left",visibility:"hidden","font-size":a.css("font-size"),"font-weight":a.css("font-weight")}).appendTo($("body")),e=d.width();d.remove();e+15*s>a.width()&&(i.title=b)}};rcube_webmail.prototype.addEventListener=rcube_event_engine.prototype.addEventListener;rcube_webmail.prototype.removeEventListener=rcube_event_engine.prototype.removeEventListener;
+!1))};this.subscription_move_folder=function(){var a=RegExp.escape(this.env.delimiter),b=RegExp("["+a+"]?[^"+a+"]+$");this.env.mailbox&&(null!==this.env.dstfolder&&this.env.dstfolder!=this.env.mailbox&&this.env.dstfolder!=this.env.mailbox.replace(b,""))&&(b=RegExp("[^"+a+"]*["+a+"]","g"),a=this.env.mailbox.replace(b,""),a=""===this.env.dstfolder?a:this.env.dstfolder+this.env.delimiter+a,a!=this.env.mailbox&&(this.http_post("rename-folder","_folder_oldname="+urlencode(this.env.mailbox)+"&_folder_newname="+
+urlencode(a),this.set_busy(!0,"foldermoving")),this.subscription_list.draglayer.hide()));this.drag_active=!1;this.unfocus_subscription(this.get_folder_row_id(this.env.dstfolder))};this.create_folder=function(){this.show_folder("",this.env.mailbox)};this.delete_folder=function(a){a=this.get_folder_row_id(a?a:this.env.mailbox);if((a=this.env.subscriptionrows[a][0])&&confirm(this.get_label("deletefolderconfirm"))){var b=this.set_busy(!0,"folderdeleting");this.http_post("delete-folder","_mbox="+urlencode(a),
+b)}};this.add_folder_row=function(a,b,d,e,f,g){if(!this.gui_objects.subscriptionlist)return!1;var h,i,j,k,l,m=[],n=[],q=this.gui_objects.subscriptionlist.tBodies[0];h=$("tr",q).get(1);var s="rcmrow"+(new Date).getTime();if(!h)return this.goto_url("folders"),!1;h=$(h).clone(!0);h.attr("id",s);h.attr("class",g);h.find("td:first").html(b);$('input[name="_subscribed[]"]',h).val(a).prop({checked:e?!0:!1,disabled:d?!0:!1});this.env.subscriptionrows[s]=[a,b,0];k=[];$.each(this.env.subscriptionrows,function(a,
+b){k.push(b)});k.sort(function(a,b){return a[0]<b[0]?-1:a[0]>b[0]?1:0});for(i in k)k[i][2]?(b=k[i][0]+this.env.delimiter,b!=this.env.prefix_ns&&(n.push(k[i][0]),j=b)):j&&0==k[i][0].indexOf(j)?n.push(k[i][0]):(m.push(k[i][0]),j=null);for(i=0;i<n.length;i++)0==a.indexOf(n[i]+this.env.delimiter)&&(l=this.get_folder_row_id(n[i]));for(i=0;!l&&i<m.length;i++)i&&m[i]==a&&(l=this.get_folder_row_id(m[i-1]));l?$("#"+l).after(h):h.appendTo(q);this.subscription_list.clear_selection();f||this.init_subscription_list();
+h=h.get(0);h.scrollIntoView&&h.scrollIntoView();return h};this.replace_folder_row=function(a,b,d,e,f){if(!this.gui_objects.subscriptionlist)return!1;var g,h,i,j,k=this.get_folder_row_id(a),l=RegExp("^"+RegExp.escape(a));g=$('input[name="_subscribed[]"]',$("#"+k)).prop("checked");var m=this.get_subfolders(a);this._remove_folder_row(k);e=$(this.add_folder_row(b,d,e,g,!0,f));if(d=m.length)j=a.split(this.env.delimiter).length-b.split(this.env.delimiter).length;for(a=0;a<d;a++)if(k=m[a],g=this.env.subscriptionrows[k][0],
+f=this.env.subscriptionrows[k][1],h=$("#"+k),i=h.clone(!0),h.remove(),e.after(i),e=i,g=g.replace(l,b),$('input[name="_subscribed[]"]',e).val(g),this.env.subscriptionrows[k][0]=g,0!=j){if(0<j)for(g=j;0<g;g--)f=f.replace(/^&nbsp;&nbsp;&nbsp;&nbsp;/,"");else for(g=j;0>g;g++)f="&nbsp;&nbsp;&nbsp;&nbsp;"+f;e.find("td:first").html(f);this.env.subscriptionrows[k][1]=f}this.init_subscription_list()};this.remove_folder_row=function(a,b){var d,e,f=[];d=this.get_folder_row_id(a);b&&(f=this.get_subfolders(a));
+this._remove_folder_row(d);d=0;for(e=f.length;d<e;d++)this._remove_folder_row(f[d])};this._remove_folder_row=function(a){this.subscription_list.remove_row(a.replace(/^rcmrow/,""));$("#"+a).remove();delete this.env.subscriptionrows[a]};this.get_subfolders=function(a){for(var b=[],d=RegExp("^"+RegExp.escape(a)+RegExp.escape(this.env.delimiter)),e=$("#"+this.get_folder_row_id(a)).get(0);e=e.nextSibling;)if(e.id)if(a=this.env.subscriptionrows[e.id][0],d.test(a))b.push(e.id);else break;return b};this.subscribe=
+function(a){if(a){var b=this.display_message(this.get_label("foldersubscribing"),"loading");this.http_post("subscribe","_mbox="+urlencode(a),b)}};this.unsubscribe=function(a){if(a){var b=this.display_message(this.get_label("folderunsubscribing"),"loading");this.http_post("unsubscribe","_mbox="+urlencode(a),b)}};this.get_folder_row_id=function(a){var b,d=this.env.subscriptionrows;for(b in d)if(d[b]&&d[b][0]==a)break;return b};this.show_folder=function(a,b,d){var e=window,a="&_action=edit-folder&_mbox="+
+urlencode(a);b&&(a+="&_path="+urlencode(b));this.env.contentframe&&(window.frames&&window.frames[this.env.contentframe])&&(e=window.frames[this.env.contentframe],a+="&_framed=1");0<=String(e.location.href).indexOf(a)&&!d?this.show_contentframe(!0):this.location_href(this.env.comm_path+a,e,!0)};this.disable_subscription=function(a){(a=this.get_folder_row_id(a))&&$('input[name="_subscribed[]"]',$("#"+a)).prop("disabled",!0)};this.folder_size=function(a){var b=this.set_busy(!0,"loading");this.http_post("folder-size",
+"_mbox="+urlencode(a),b)};this.folder_size_update=function(a){$("#folder-size").replaceWith(a)};var t=function(a,b){var d=document.getElementById(b.id);if(d){var e=!1;"image"==b.type&&(d=d.parentNode,e=!0);d._command=a;d._id=b.id;b.sel&&(d.onmousedown=function(){return rcmail.button_sel(this._command,this._id)},d.onmouseup=function(){return rcmail.button_out(this._command,this._id)},e&&((new Image).src=b.sel));b.over&&(d.onmouseover=function(){return rcmail.button_over(this._command,this._id)},d.onmouseout=
+function(){return rcmail.button_out(this._command,this._id)},e&&((new Image).src=b.over))}};this.set_page_buttons=function(){this.enable_command("nextpage","lastpage",this.env.pagecount>this.env.current_page);this.enable_command("previouspage","firstpage",1<this.env.current_page)};this.init_buttons=function(){for(var a in this.buttons)if("string"===typeof a)for(var b=0;b<this.buttons[a].length;b++)t(a,this.buttons[a][b]);this.set_button(this.task,"sel")};this.set_button=function(a,b){var d,e,f,g=
+this.buttons[a],h=g?g.length:0;for(d=0;d<h;d++)e=g[d],(f=document.getElementById(e.id))&&"image"==e.type&&!e.status?(e.pas=f._original_src?f._original_src:f.src,f.runtimeStyle&&(f.runtimeStyle.filter&&f.runtimeStyle.filter.match(/src=['"]([^'"]+)['"]/))&&(e.pas=RegExp.$1)):f&&!e.status&&(e.pas=String(f.className)),f&&"image"==e.type&&e[b]?(e.status=b,f.src=e[b]):f&&void 0!==e[b]&&(e.status=b,f.className=e[b]),f&&"input"==e.type&&(e.status=b,f.disabled=!b)};this.set_alttext=function(a,b){var d,e,f,
+g,h=this.buttons[a],i=h?h.length:0;for(d=0;d<i;d++)e=h[d],f=document.getElementById(e.id),"image"==e.type&&f?(f.setAttribute("alt",this.get_label(b)),(g=f.parentNode)&&"a"==g.tagName.toLowerCase()&&g.setAttribute("title",this.get_label(b))):f&&f.setAttribute("title",this.get_label(b))};this.button_over=function(a,b){var d,e,f,g=this.buttons[a],h=g?g.length:0;for(d=0;d<h;d++)if(e=g[d],e.id==b&&"act"==e.status&&(f=document.getElementById(e.id))&&e.over)"image"==e.type?f.src=e.over:f.className=e.over};
+this.button_sel=function(a,b){var d,e,f,g=this.buttons[a],h=g?g.length:0;for(d=0;d<h;d++)if(e=g[d],e.id==b&&"act"==e.status){if((f=document.getElementById(e.id))&&e.sel)"image"==e.type?f.src=e.sel:f.className=e.sel;this.buttons_sel[b]=a}};this.button_out=function(a,b){var d,e,f,g=this.buttons[a],h=g?g.length:0;for(d=0;d<h;d++)if(e=g[d],e.id==b&&"act"==e.status&&(f=document.getElementById(e.id))&&e.act)"image"==e.type?f.src=e.act:f.className=e.act};this.set_pagetitle=function(a){a&&document.title&&
+(document.title=a)};this.display_message=function(a,b,d){if(this.is_framed())return parent.rcmail.display_message(a,b,d);if(!this.gui_objects.message)return"loading"!=b&&(this.pending_message=[a,b,d]),!1;var b=b?b:"notice",e=this,f=this.html_identifier(a),g=b+(new Date).getTime();d||(d=this.message_time*("error"==b||"warning"==b?2:1));"loading"==b&&(f="loading",d=1E3*this.env.request_timeout,a||(a=this.get_label("loading")));if(this.messages[f])return this.messages[f].obj&&this.messages[f].obj.html(a),
+"loading"==b&&this.messages[f].labels.push({id:g,msg:a}),this.messages[f].elements.push(g),setTimeout(function(){e.hide_message(g,"loading"==b)},d),g;var h=$("<div>").addClass(b).html(a).data("key",f);$(this.gui_objects.message).append(h).show();this.messages[f]={obj:h,elements:[g]};"loading"==b?this.messages[f].labels=[{id:g,msg:a}]:h.click(function(){return e.hide_message(h)});this.triggerEvent("message",{message:a,type:b,timeout:d,object:h});0<d&&setTimeout(function(){e.hide_message(g,"loading"==
+b)},d);return g};this.hide_message=function(a,b){if(this.is_framed())return parent.rcmail.hide_message(a,b);var d,e,f,g,h=this.messages;if("object"===typeof a)$(a)[b?"fadeOut":"hide"](),g=$(a).data("key"),this.messages[g]&&delete this.messages[g];else for(d in h)for(e in h[d].elements)if(h[d]&&h[d].elements[e]==a)if(h[d].elements.splice(e,1),h[d].elements.length){if("loading"==d)for(f in h[d].labels)h[d].labels[f].id==a?delete h[d].labels[f]:g=h[d].labels[f].msg,h[d].obj.html(g)}else h[d].obj[b?"fadeOut":
+"hide"](),delete h[d]};this.clear_messages=function(){if(this.is_framed())return parent.rcmail.clear_messages();var a,b,d=this.messages;for(a in d)for(b in d[a].elements)d[a].obj&&d[a].obj.hide();this.messages={}};this.show_popup_dialog=function(a,b){if(this.is_framed())parent.rcmail.show_popup_dialog(a,b);else{var d=$('<div class="popup">').html(a).dialog({title:b,modal:!0,resizable:!0,width:580,close:function(){$(this).remove()}}),e=$(window),f=e.width(),e=e.height(),g=d.width(),h=d.height();d.dialog("option",
+{height:Math.min(e-40,h+50),width:Math.min(f-20,g+50)}).dialog("option","position",["center","center"])}};this.select_folder=function(a,b,d){if(this.gui_objects.folderlist){var e,f;(e=$("li.selected",this.gui_objects.folderlist))&&e.removeClass("selected").addClass("unfocused");(f=this.get_folder_li(a,b,d))&&$(f).removeClass("unfocused").addClass("selected");this.triggerEvent("selectfolder",{folder:a,prefix:b})}};this.mark_folder=function(a,b,d,e){$(this.get_folder_li(a,d,e)).addClass(b)};this.unmark_folder=
+function(a,b,d,e){$(this.get_folder_li(a,d,e)).removeClass(b)};this.get_folder_li=function(a,b,d){b||(b="rcmli");return this.gui_objects.folderlist?(a=this.html_identifier(a,d),document.getElementById(b+a)):null};this.set_message_coltypes=function(a,b,d){var e=this.message_list,f=e?e.list.tHead:null,g,h,i;this.env.coltypes=a;if(f){if(b){g=document.createElement("thead");i=document.createElement("tr");c=0;for(h=b.length;c<h;c++)a=document.createElement("td"),a.innerHTML=b[c].html,b[c].id&&(a.id=b[c].id),
+b[c].className&&(a.className=b[c].className),i.appendChild(a);g.appendChild(i);f.parentNode.replaceChild(g,f);f=g}g=0;for(h=this.env.coltypes.length;g<h;g++)if(b=this.env.coltypes[g],(a=f.rows[0].cells[g])&&("from"==b||"to"==b||"fromto"==b))a.id="rcm"+b,a.firstChild&&"a"==a.firstChild.tagName.toLowerCase()&&(a=a.firstChild,a.onclick=function(){return rcmail.command("sort",this.__col,this)},a.__col=b),a.innerHTML=this.get_label("fromto"==b?d:b)}this.env.subject_col=null;this.env.flagged_col=null;this.env.status_col=
+null;if(0<=(g=$.inArray("subject",this.env.coltypes)))this.env.subject_col=g,e&&(e.subject_col=g);if(0<=(g=$.inArray("flag",this.env.coltypes)))this.env.flagged_col=g;if(0<=(g=$.inArray("status",this.env.coltypes)))this.env.status_col=g;e&&e.init_header()};this.set_rowcount=function(a,b){if(b&&b!=this.env.mailbox)return!1;$(this.gui_objects.countdisplay).html(a);this.set_page_buttons()};this.set_mailboxname=function(a){this.gui_objects.mailboxname&&a&&(this.gui_objects.mailboxname.innerHTML=a)};this.set_quota=
+function(a){this.gui_objects.quotadisplay&&(a&&"text"==a.type)&&$(this.gui_objects.quotadisplay).html(a.percent+"%").attr("title",a.title);this.triggerEvent("setquota",a);this.env.quota_content=a};this.set_unread_count=function(a,b,d,e){if(!this.gui_objects.mailboxlist)return!1;this.env.unread_counts[a]=b;this.set_unread_count_display(a,d);e?this.mark_folder(a,e,"",!0):b||this.unmark_folder(a,"recent","",!0)};this.set_unread_count_display=function(a,b){var d,e,f,g,h;if(f=this.get_folder_li(a,"",!0)){g=
+this.env.unread_counts[a]?this.env.unread_counts[a]:0;e=$(f).children("a").eq(0);d=e.children("span.unreadcount");!d.length&&g&&(d=$("<span>").addClass("unreadcount").appendTo(e));e=0;if((h=f.getElementsByTagName("div")[0])&&h.className.match(/collapsed/))for(var i in this.env.unread_counts)0==i.indexOf(a+this.env.delimiter)&&(e+=this.env.unread_counts[i]);g&&d.length?d.html(this.env.unreadwrap.replace(/%[sd]/,g)):d.length&&d.remove();d=RegExp(RegExp.escape(this.env.delimiter)+"[^"+RegExp.escape(this.env.delimiter)+
+"]+$");a.match(d)&&this.set_unread_count_display(a.replace(d,""),!1);0<g+e?$(f).addClass("unread"):$(f).removeClass("unread")}d=/^\([0-9]+\)\s+/i;b&&document.title&&(f="",f=String(document.title),f=g&&f.match(d)?f.replace(d,"("+g+") "):g?"("+g+") "+f:f.replace(d,""),this.set_pagetitle(f))};this.set_headers=function(a){this.gui_objects.all_headers_row&&(this.gui_objects.all_headers_box&&a)&&$(this.gui_objects.all_headers_box).html(a).show()};this.show_headers=function(a,b){if(this.gui_objects.all_headers_row&&
+(this.gui_objects.all_headers_box&&this.env.uid)&&($(b).removeClass("show-headers").addClass("hide-headers"),$(this.gui_objects.all_headers_row).show(),b.onclick=function(){rcmail.command("hide-headers","",b)},!this.gui_objects.all_headers_box.innerHTML)){var d=this.display_message(this.get_label("loading"),"loading");this.http_post("headers","_uid="+this.env.uid,d)}};this.hide_headers=function(a,b){this.gui_objects.all_headers_row&&this.gui_objects.all_headers_box&&($(b).removeClass("hide-headers").addClass("show-headers"),
+$(this.gui_objects.all_headers_row).hide(),b.onclick=function(){rcmail.command("show-headers","",b)})};this.html2plain=function(a,b){var d=this,e=this.set_busy(!0,"converting");this.log("HTTP POST: ?_task=utils&_action=html2text");$.ajax({type:"POST",url:"?_task=utils&_action=html2text",data:a,contentType:"application/octet-stream",error:function(a,b,h){d.http_error(a,b,h,e)},success:function(a){d.set_busy(!1,null,e);$("#"+b).val(a);d.log(a)}})};this.plain2html=function(a,b){var d=this.set_busy(!0,
+"converting"),a=a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");$("#"+b).val(a?"<pre>"+a+"</pre>":"");this.set_busy(!1,null,d)};this.url=function(a,b){var d="string"===typeof b?"&"+b:"";if("string"!==typeof a)b=a;else if(!b||"object"!==typeof b)b={};b._action=a?a:this.env.action;var e=this.env.comm_path;b._action.match(/([a-z]+)\/([a-z0-9-_.]+)/)&&(b._action=RegExp.$2,e=e.replace(/\_task=[a-z]+/,"_task="+RegExp.$1));var f={},g;for(g in b)void 0!==b[g]&&null!==b[g]&&(f[g]=b[g]);return e+
+"&"+$.param(f)+d};this.redirect=function(a,b){(b||null===b)&&this.set_busy(!0);this.is_framed()?parent.rcmail.redirect(a,b):this.location_href(a,window)};this.goto_url=function(a,b){this.redirect(this.url(a,b))};this.location_href=function(a,b,d){d&&this.lock_frame();bw.ie&&b==window?$("<a>").attr("href",a).appendTo(document.body).get(0).click():b.location.href=a};this.http_request=function(a,b,d){var e=this.url(a,b),b=this.triggerEvent("request"+a,b);if(void 0!==b&&!1===b)return!1;e+="&_remote=1";
+this.log("HTTP GET: "+e);return $.ajax({type:"GET",url:e,data:{_unlock:d?d:0},dataType:"json",success:function(a){j.http_response(a)},error:function(b,e,h){j.http_error(b,e,h,d,a)}})};this.http_post=function(a,b,d){var e=this.url(a);b&&"object"===typeof b?(b._remote=1,b._unlock=d?d:0):b+=(b?"&":"")+"_remote=1"+(d?"&_unlock="+d:"");var f=this.triggerEvent("request"+a,b);if(void 0!==f){if(!1===f)return!1;b=f}this.log("HTTP POST: "+e);return $.ajax({type:"POST",url:e,data:b,dataType:"json",success:function(a){j.http_response(a)},
+error:function(b,e,f){j.http_error(b,e,f,d,a)}})};this.abort_request=function(a){a.request&&a.request.abort();a.lock&&this.set_busy(!1,null,a.lock)};this.http_response=function(a){if(a){a.unlock&&this.set_busy(!1);this.triggerEvent("responsebefore",{response:a});this.triggerEvent("responsebefore"+a.action,{response:a});a.env&&this.set_env(a.env);if("object"===typeof a.texts)for(var b in a.texts)"string"===typeof a.texts[b]&&this.add_label(b,a.texts[b]);a.exec&&(this.log(a.exec),eval(a.exec));if(a.callbacks&&
+a.callbacks.length)for(b=0;b<a.callbacks.length;b++)this.triggerEvent(a.callbacks[b][0],a.callbacks[b][1]);switch(a.action){case "delete":if("addressbook"==this.task){var d;b=this.contact_list.get_selection();d=!1;b&&this.contact_list.rows[b]&&(d=""==this.env.source?(d=String(b).replace(/^[^-]+-/,""))&&this.env.address_sources[d]&&!this.env.address_sources[d].readonly:!this.env.address_sources[this.env.source].readonly);this.enable_command("compose",b&&this.contact_list.rows[b]);this.enable_command("delete",
+"edit",d);this.enable_command("export",this.contact_list&&0<this.contact_list.rowcount)}case "moveto":"show"==this.env.action?(this.enable_command(this.env.message_commands,!0),this.env.list_post||this.enable_command("reply-list",!1)):"addressbook"==this.task&&this.triggerEvent("listupdate",{folder:this.env.source,rowcount:this.contact_list.rowcount});case "purge":case "expunge":"mail"==this.task&&(this.env.messagecount||(this.env.contentframe&&this.show_contentframe(!1),this.enable_command(this.env.message_commands,
+"purge","expunge","select-all","select-none","sort","expand-all","expand-unread","collapse-all",!1)),this.message_list&&this.triggerEvent("listupdate",{folder:this.env.mailbox,rowcount:this.message_list.rowcount}));break;case "check-recent":case "getunread":case "search":this.env.qsearch=null;case "list":if("mail"==this.task){if(this.enable_command("show","expunge","select-all","select-none","sort",0<this.env.messagecount),this.enable_command("purge",this.purge_mailbox_test()),this.enable_command("expand-all",
+"expand-unread","collapse-all",this.env.threading&&this.env.messagecount),("list"==a.action||"search"==a.action)&&this.message_list)this.msglist_select(this.message_list),this.triggerEvent("listupdate",{folder:this.env.mailbox,rowcount:this.message_list.rowcount})}else if("addressbook"==this.task&&(this.enable_command("export",this.contact_list&&0<this.contact_list.rowcount),"list"==a.action||"search"==a.action))this.enable_command("search-create",""==this.env.source),this.enable_command("search-delete",
+this.env.search_id),this.update_group_commands(),this.triggerEvent("listupdate",{folder:this.env.source,rowcount:this.contact_list.rowcount})}a.unlock&&this.hide_message(a.unlock);this.triggerEvent("responseafter",{response:a});this.triggerEvent("responseafter"+a.action,{response:a})}};this.http_error=function(a,b,d,e,f){d=a.statusText;this.set_busy(!1,null,e);a.abort();this.unload||(a.status&&d?this.display_message(this.get_label("servererror")+" ("+d+")","error"):"timeout"==b?this.display_message(this.get_label("requesttimedout"),
+"error"):0==a.status&&"abort"!=b&&this.display_message(this.get_label("servererror")+" (No connection)","error"),"keep-alive"==f?setTimeout(function(){j.keep_alive();j.start_keepalive()},3E4):"check-recent"==f&&setTimeout(function(){j.check_for_recent(!1);j.start_keepalive()},3E4))};this.async_upload_form=function(a,b,d){var e=(new Date).getTime(),f="rcmupload"+e;if(this.env.upload_progress_name){var g=this.env.upload_progress_name,h=$("input[name="+g+"]",a);h.length||(h=$("<input>").attr({type:"hidden",
+name:g}),h.prependTo(a));h.val(e)}document.all?document.body.insertAdjacentHTML("BeforeEnd",'<iframe name="'+f+'" src="program/blank.gif" style="width:0;height:0;visibility:hidden;"></iframe>'):(g=document.createElement("iframe"),g.name=f,g.style.border="none",g.style.width=0,g.style.height=0,g.style.visibility="hidden",document.body.appendChild(g));$(f).bind("load",{ts:e},d);$(a).attr({target:f,action:this.url(b,{_id:this.env.compose_id||"",_uploadid:e}),method:"POST"}).attr(a.encoding?"encoding":
+"enctype","multipart/form-data").submit();return f};this.start_keepalive=function(){this.env.keep_alive&&!this.env.framed&&(this._int&&clearInterval(this._int),"mail"==this.task&&this.gui_objects.mailboxlist?this._int=setInterval(function(){j.check_for_recent(!1)},1E3*this.env.keep_alive):"login"!=this.task&&"print"!=this.env.action&&(this._int=setInterval(function(){j.keep_alive()},1E3*this.env.keep_alive)))};this.keep_alive=function(){this.busy||this.http_request("keep-alive")};this.check_for_recent=
+function(a){if(!this.busy){var b,d="_mbox="+urlencode(this.env.mailbox);a&&(b=this.set_busy(!0,"checkingmail"),d+="&_refresh=1",this.start_keepalive());this.gui_objects.messagelist&&(d+="&_list=1");this.gui_objects.quotadisplay&&(d+="&_quota=1");this.env.search_request&&(d+="&_search="+this.env.search_request);this.http_request("check-recent",d,b)}};this.get_single_uid=function(){return this.env.uid?this.env.uid:this.message_list?this.message_list.get_single_selection():null};this.get_single_cid=
+function(){return this.env.cid?this.env.cid:this.contact_list?this.contact_list.get_single_selection():null};this.get_caret_pos=function(a){if(void 0!==a.selectionEnd)return a.selectionEnd;if(document.selection&&document.selection.createRange){var b=document.selection.createRange();if(b.parentElement()!=a)return 0;var d=b.duplicate();"TEXTAREA"==a.tagName?d.moveToElementText(a):d.expand("textedit");d.setEndPoint("EndToStart",b);b=d.text.length;return b<=a.value.length?b:-1}return a.value.length};
+this.set_caret_pos=function(a,b){if(a.setSelectionRange)a.setSelectionRange(b,b);else if(a.createTextRange){var d=a.createTextRange();d.collapse(!0);d.moveEnd("character",b);d.moveStart("character",b);d.select()}};this.lock_form=function(a,b){if(a&&a.elements){var d,e,f;b&&(this.disabled_form_elements=[]);d=0;for(e=a.elements.length;d<e;d++)if(f=a.elements[d],"hidden"!=f.type)if(b&&f.disabled)this.disabled_form_elements.push(f);else if(b||this.disabled_form_elements&&0>$.inArray(f,this.disabled_form_elements))f.disabled=
+b}};this.mailto_handler_uri=function(){return location.href.split("?")[0]+"?_task=mail&_action=compose&_to=%s"};this.register_protocol_handler=function(a){try{window.navigator.registerProtocolHandler("mailto",this.mailto_handler_uri(),a)}catch(b){}};this.check_protocol_handler=function(a,b){var d=window.navigator;!d||"function"!=typeof d.registerProtocolHandler||"function"==typeof d.isProtocolHandlerRegistered&&"registered"==d.isProtocolHandlerRegistered("mailto",this.mailto_handler_uri())?$(b).addClass("disabled"):
+$(b).click(function(){rcmail.register_protocol_handler(a);return!1})}}rcube_webmail.long_subject_title=function(j,t){if(!j.title){var a=$(j);a.width()+15*t>a.parent().width()&&(j.title=a.html())}};
+rcube_webmail.long_subject_title_ie=function(j,t){if(!j.title){var a=$(j),b=$.trim(a.text()),d=$("<span>").text(b).css({position:"absolute","float":"left",visibility:"hidden","font-size":a.css("font-size"),"font-weight":a.css("font-weight")}).appendTo($("body")),e=d.width();d.remove();e+15*t>a.width()&&(j.title=b)}};rcube_webmail.prototype.addEventListener=rcube_event_engine.prototype.addEventListener;rcube_webmail.prototype.removeEventListener=rcube_event_engine.prototype.removeEventListener;
 rcube_webmail.prototype.triggerEvent=rcube_event_engine.prototype.triggerEvent;
index f5039119c2b6a061648240edc7b63621c327a907..8fe68bf9e227913e20d99f48a728b89830f852b8 100644 (file)
@@ -3,9 +3,12 @@
  | Roundcube Webmail Client Script                                       |
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
- | Copyright (C) 2005-2011, The Roundcube Dev Team                       |
+ | Copyright (C) 2005-2012, The Roundcube Dev Team                       |
  | Copyright (C) 2011, Kolab Systems AG                                  |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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.                     |
  |                                                                       |
  +-----------------------------------------------------------------------+
  | Authors: Thomas Bruederli <roundcube@gmail.com>                       |
@@ -15,7 +18,7 @@
  | Requires: jquery.js, common.js, list.js                               |
  +-----------------------------------------------------------------------+
 
-  $Id: app.js 5952 2012-03-03 13:20:14Z alec $
+  $Id$
 */
 
 function rcube_webmail()
@@ -30,6 +33,7 @@ function rcube_webmail()
   this.command_handlers = {};
   this.onloads = [];
   this.messages = {};
+  this.group2expand = {};
 
   // create protected reference to myself
   this.ref = 'rcmail';
@@ -50,11 +54,14 @@ function rcube_webmail()
 
   // set jQuery ajax options
   $.ajaxSetup({
-    cache:false,
-    error:function(request, status, err){ ref.http_error(request, status, err); },
-    beforeSend:function(xmlhttp){ xmlhttp.setRequestHeader('X-Roundcube-Request', ref.env.request_token); }
+    cache: false,
+    timeout: this.env.request_timeout * 1000,
+    error: function(request, status, err){ ref.http_error(request, status, err); },
+    beforeSend: function(xmlhttp){ xmlhttp.setRequestHeader('X-Roundcube-Request', ref.env.request_token); }
   });
 
+  $(window).bind('beforeunload', function() { rcmail.unload = true; });
+
   // set environment variable(s)
   this.set_env = function(p, value)
   {
@@ -132,7 +139,7 @@ function rcube_webmail()
     this.task = this.env.task;
 
     // check browser
-    if (!bw.dom || !bw.xmlhttp_test()) {
+    if (!bw.dom || !bw.xmlhttp_test() || (bw.mz && bw.vendver < 1.9)) {
       this.goto_url('error', '_code=0x199');
       return;
     }
@@ -171,7 +178,7 @@ function rcube_webmail()
     }
 
     // enable general commands
-    this.enable_command('logout', 'mail', 'addressbook', 'settings', 'save-pref', 'compose', 'undo', true);
+    this.enable_command('logout', 'mail', 'addressbook', 'settings', 'save-pref', 'compose', 'undo', 'about', 'switch-task', true);
 
     if (this.env.permaurl)
       this.enable_command('permaurl', true);
@@ -216,12 +223,11 @@ function rcube_webmail()
           $(this.gui_objects.qsearchbox).focusin(function() { rcmail.message_list.blur(); });
         }
 
-        if (!this.env.flag_for_deletion && this.env.trash_mailbox && this.env.mailbox != this.env.trash_mailbox)
-          this.set_alttext('delete', 'movemessagetotrash');
+        this.set_button_titles();
 
         this.env.message_commands = ['show', 'reply', 'reply-all', 'reply-list', 'forward',
           'moveto', 'copy', 'delete', 'open', 'mark', 'edit', 'viewsource', 'download',
-          'print', 'load-attachment', 'load-headers', 'forward-attachment'];
+          'print', 'load-attachment', 'show-headers', 'hide-headers', 'forward-attachment'];
 
         if (this.env.action == 'show' || this.env.action == 'preview') {
           this.enable_command(this.env.message_commands, this.env.uid);
@@ -246,19 +252,20 @@ function rcube_webmail()
           }
         }
         else if (this.env.action == 'compose') {
-          this.env.compose_commands = ['send-attachment', 'remove-attachment', 'send', 'cancel', 'toggle-editor'];
+          this.env.compose_commands = ['send-attachment', 'remove-attachment', 'send', 'cancel', 'toggle-editor', 'list-adresses'];
 
           if (this.env.drafts_mailbox)
             this.env.compose_commands.push('savedraft')
 
           this.enable_command(this.env.compose_commands, 'identities', true);
 
+          // 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.set_spellcheck_state(s); };
+            this.env.spellcheck.spelling_state_observer = function(s) { ref.spellcheck_state(); };
             this.env.compose_commands.push('spellcheck')
-            this.set_spellcheck_state('ready');
-            if ($("input[name='_is_html']").val() == '1')
-              this.display_spellcheck_controls(false);
+            this.enable_command('spellcheck', true);
           }
 
           document.onmouseup = function(e){ return p.doc_mouse_up(e); };
@@ -269,7 +276,7 @@ function rcube_webmail()
         // show printing dialog
         else if (this.env.action == 'print' && this.env.uid)
           if (bw.safari)
-            window.setTimeout('window.print()', 10);
+            setTimeout('window.print()', 10);
           else
             window.print();
 
@@ -280,6 +287,20 @@ function rcube_webmail()
           this.http_request('getunread', '');
         }
 
+        // 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 });
+          this.contact_list.addEventListener('select', function(o){ ref.compose_recipient_select(o); });
+          this.contact_list.addEventListener('dblclick', function(o){ ref.compose_add_recipient('to'); });
+          this.contact_list.init();
+        }
+
+        if (this.gui_objects.addressbookslist) {
+          this.gui_objects.folderlist = this.gui_objects.addressbookslist;
+          this.enable_command('list-adresses', true);
+        }
+
         // ask user to send MDN
         if (this.env.mdn_request && this.env.uid) {
           var mdnurl = '_uid='+this.env.uid+'&_mbox='+urlencode(this.env.mailbox);
@@ -354,8 +375,11 @@ function rcube_webmail()
           this.enable_command('add', this.env.identities_level < 2);
         }
         else if (this.env.action == 'edit-identity' || this.env.action == 'add-identity') {
-          this.enable_command('add', this.env.identities_level < 2);
-          this.enable_command('save', 'delete', 'edit', 'toggle-editor', true);
+          this.enable_command('save', 'edit', 'toggle-editor', true);
+          this.enable_command('delete', this.env.identities_level < 2);
+
+          if (this.env.action == 'add-identity')
+            $("input[type='text']").first().select();
         }
         else if (this.env.action == 'folders') {
           this.enable_command('subscribe', 'unsubscribe', 'create-folder', 'rename-folder', true);
@@ -407,6 +431,7 @@ 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');
         });
 
@@ -523,6 +548,10 @@ function rcube_webmail()
         this.switch_task(command);
         break;
 
+      case 'about':
+        location.href = '?_task=settings&_action=about';
+        break;
+
       case 'permaurl':
         if (obj && obj.href && obj.target)
           return true;
@@ -543,20 +572,14 @@ function rcube_webmail()
         break;
 
       case 'list':
-        this.reset_qsearch();
+        if (props && props != '')
+          this.reset_qsearch();
         if (this.task == 'mail') {
           this.list_mailbox(props);
-
-          if (this.env.trash_mailbox && !this.env.flag_for_deletion)
-            this.set_alttext('delete', this.env.mailbox != this.env.trash_mailbox ? 'movemessagetotrash' : 'deletemessage');
+          this.set_button_titles();
         }
-        else if (this.task == 'addressbook') {
+        else if (this.task == 'addressbook')
           this.list_contacts(props);
-        }
-        break;
-
-      case 'load-headers':
-        this.load_headers(obj);
         break;
 
       case 'sort':
@@ -745,8 +768,8 @@ function rcube_webmail()
 
       case 'always-load':
         if (this.env.uid && this.env.sender) {
-          this.add_contact(urlencode(this.env.sender));
-          window.setTimeout(function(){ ref.command('load-images'); }, 300);
+          this.add_contact(this.env.sender);
+          setTimeout(function(){ ref.command('load-images'); }, 300);
           break;
         }
 
@@ -764,7 +787,7 @@ function rcube_webmail()
             qstring += '&_safe=1';
           this.attachment_win = window.open(this.env.comm_path+'&_action=get&'+qstring+'&_frame=1', 'rcubemailattachment');
           if (this.attachment_win) {
-            window.setTimeout(function(){ ref.attachment_win.focus(); }, 10);
+            setTimeout(function(){ ref.attachment_win.focus(); }, 10);
             break;
           }
         }
@@ -834,6 +857,9 @@ function rcube_webmail()
           url += '&_mbox='+urlencode(this.env.mailbox);
           if (props)
              url += '&_to='+urlencode(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;
         }
         // modify url if we're in addressbook
         else if (this.task == 'addressbook') {
@@ -869,29 +895,40 @@ function rcube_webmail()
         break;
 
       case 'spellcheck':
-        if (window.tinyMCE && tinyMCE.get(this.env.composebody)) {
-          tinyMCE.execCommand('mceSpellCheck', true);
+        if (this.spellcheck_state()) {
+          this.stop_spellchecking();
         }
-        else if (this.env.spellcheck && this.env.spellcheck.spellCheck && this.spellcheck_ready) {
-          this.env.spellcheck.spellCheck();
-          this.set_spellcheck_state('checking');
+        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.spellcheck_state();
         break;
 
       case 'savedraft':
+        var form = this.gui_objects.messageform, msgid;
+
         // Reset the auto-save timer
-        self.clearTimeout(this.save_timer);
+        clearTimeout(this.save_timer);
 
-        if (!this.gui_objects.messageform)
+        // saving Drafts is disabled
+        if (!form)
           break;
 
-        // if saving Drafts is disabled in main.inc.php
-        // or if compose form did not change
-        if (!this.env.drafts_mailbox || this.cmp_hash == this.compose_field_hash())
+        // compose form did not change
+        if (this.cmp_hash == this.compose_field_hash()) {
+          this.auto_save_start();
           break;
+        }
 
-        var form = this.gui_objects.messageform,
-          msgid = this.set_busy(true, 'savingmessage');
+        // re-set keep-alive timeout
+        this.start_keepalive();
+
+        msgid = this.set_busy(true, 'savingmessage');
 
         form.target = "savetarget";
         form._draft.value = '1';
@@ -907,7 +944,7 @@ function rcube_webmail()
           break;
 
         // Reset the auto-save timer
-        self.clearTimeout(this.save_timer);
+        clearTimeout(this.save_timer);
 
         // all checks passed, send message
         var lang = this.spellcheck_lang(),
@@ -920,21 +957,28 @@ function rcube_webmail()
         form.action = this.add_url(form.action, '_lang', lang);
         form.submit();
 
-        // clear timeout (sending could take longer)
-        clearTimeout(this.request_timer);
         break;
 
       case 'send-attachment':
         // Reset the auto-save timer
-        self.clearTimeout(this.save_timer);
+        clearTimeout(this.save_timer);
 
-        this.upload_file(props)
+        this.upload_file(props || this.gui_objects.uploadform);
         break;
 
       case 'insert-sig':
         this.change_identity($("[name='_from']")[0], true);
         break;
 
+      case 'list-adresses':
+        this.list_contacts(props);
+        this.enable_command('add-recipient', false);
+        break;
+
+      case 'add-recipient':
+        this.compose_add_recipient(props);
+        break;
+
       case 'reply-all':
       case 'reply-list':
       case 'reply':
@@ -964,7 +1008,7 @@ function rcube_webmail()
         if (uid = this.get_single_uid()) {
           ref.printwin = window.open(this.env.comm_path+'&_action=print&_uid='+uid+'&_mbox='+urlencode(this.env.mailbox)+(this.env.safemode ? '&_safe=1' : ''));
           if (this.printwin) {
-            window.setTimeout(function(){ ref.printwin.focus(); }, 20);
+            setTimeout(function(){ ref.printwin.focus(); }, 20);
             if (this.env.action != 'show')
               this.mark_message('read', uid);
           }
@@ -975,7 +1019,7 @@ function rcube_webmail()
         if (uid = this.get_single_uid()) {
           ref.sourcewin = window.open(this.env.comm_path+'&_action=viewsource&_uid='+uid+'&_mbox='+urlencode(this.env.mailbox));
           if (this.sourcewin)
-            window.setTimeout(function(){ ref.sourcewin.focus(); }, 20);
+            setTimeout(function(){ ref.sourcewin.focus(); }, 20);
           }
         break;
 
@@ -1039,7 +1083,7 @@ function rcube_webmail()
         break;
 
       case 'upload-photo':
-        this.upload_contact_photo(props);
+        this.upload_contact_photo(props || this.gui_objects.uploadform);
         break;
 
       case 'delete-photo':
@@ -1061,7 +1105,7 @@ function rcube_webmail()
       default:
         var func = command.replace(/-/g, '_');
         if (this[func] && typeof this[func] === 'function') {
-          ret = this[func](props);
+          ret = this[func](props, obj);
         }
         break;
     }
@@ -1114,14 +1158,6 @@ function rcube_webmail()
     if (this.gui_objects.editform)
       this.lock_form(this.gui_objects.editform, a);
 
-    // clear pending timer
-    if (this.request_timer)
-      clearTimeout(this.request_timer);
-
-    // set timer for requests
-    if (a && this.env.request_timeout)
-      this.request_timer = window.setTimeout(function(){ ref.request_timed_out(); }, this.env.request_timeout * 1000);
-
     return id;
   };
 
@@ -1160,19 +1196,12 @@ function rcube_webmail()
     return url.replace(/_task=[a-z]+/, '_task='+task);
   };
 
-  // called when a request timed out
-  this.request_timed_out = function()
-  {
-    this.set_busy(false);
-    this.display_message('Request timed out!', 'error');
-  };
-
   this.reload = function(delay)
   {
     if (this.is_framed())
       parent.rcmail.reload(delay);
     else if (delay)
-      window.setTimeout(function(){ rcmail.reload(); }, delay);
+      setTimeout(function(){ rcmail.reload(); }, delay);
     else if (window.location)
       location.href = this.env.comm_path + (this.env.action ? '&_action='+this.env.action : '');
   };
@@ -1305,7 +1334,7 @@ function rcube_webmail()
     this.env.last_folder_target = null;
 
     if (this.folder_auto_timer) {
-      window.clearTimeout(this.folder_auto_timer);
+      clearTimeout(this.folder_auto_timer);
       this.folder_auto_timer = null;
       this.folder_auto_expand = null;
     }
@@ -1358,15 +1387,15 @@ function rcube_webmail()
             // if the folder is collapsed, expand it after 1sec and restart the drag & drop process.
             if (div.hasClass('collapsed')) {
               if (this.folder_auto_timer)
-                window.clearTimeout(this.folder_auto_timer);
+                clearTimeout(this.folder_auto_timer);
 
               this.folder_auto_expand = this.env.mailboxes[k].id;
-              this.folder_auto_timer = window.setTimeout(function() {
+              this.folder_auto_timer = setTimeout(function() {
                 rcmail.command('collapse-folder', rcmail.folder_auto_expand);
                 rcmail.drag_start(null);
               }, 1000);
             } else if (this.folder_auto_timer) {
-              window.clearTimeout(this.folder_auto_timer);
+              clearTimeout(this.folder_auto_timer);
               this.folder_auto_timer = null;
               this.folder_auto_expand = null;
             }
@@ -1430,29 +1459,21 @@ function rcube_webmail()
 
   this.doc_mouse_up = function(e)
   {
-    var model, list, li, id;
+    var model, list, id;
 
     // ignore event if jquery UI dialog is open
     if ($(rcube_event.get_target(e)).closest('.ui-dialog, .ui-widget-overlay').length)
       return;
 
-    if (list = this.message_list) {
-      if (!rcube_mouse_is_over(e, list.list.parentNode))
-        list.blur();
-      else
-        list.focus();
+    if (list = this.message_list)
       model = this.env.mailboxes;
-    }
-    else if (list = this.contact_list) {
-      if (!rcube_mouse_is_over(e, list.list.parentNode))
-        list.blur();
-      else
-        list.focus();
+    else if (list = this.contact_list)
       model = this.env.contactfolders;
-    }
-    else if (this.ksearch_value) {
+    else if (this.ksearch_value)
       this.ksearch_blur();
-    }
+
+    if (list && !rcube_mouse_is_over(e, list.list.parentNode))
+      list.blur();
 
     // handle mouse release when dragging
     if (this.drag_active && model && this.env.last_folder_target) {
@@ -1518,7 +1539,7 @@ function rcube_webmail()
 
     // start timer for message preview (wait for double click)
     if (selected && this.env.contentframe && !list.multi_selecting && !this.dummy_select)
-      this.preview_timer = window.setTimeout(function(){ ref.msglist_get_preview(); }, 200);
+      this.preview_timer = setTimeout(function(){ ref.msglist_get_preview(); }, 200);
     else if (this.env.contentframe)
       this.show_contentframe(false);
   };
@@ -1535,7 +1556,7 @@ function rcube_webmail()
           clearTimeout(this.preview_timer);
         if (this.preview_read_timer)
           clearTimeout(this.preview_read_timer);
-        this.preview_timer = window.setTimeout(function(){ ref.msglist_get_preview(); }, 200);
+        this.preview_timer = setTimeout(function(){ ref.msglist_get_preview(); }, 200);
       }
     }
   };
@@ -1583,6 +1604,7 @@ function rcube_webmail()
   {
     if (this.env.messages[row.uid])
       this.env.messages[row.uid].expanded = row.expanded;
+    $(row.obj)[row.expanded?'addClass':'removeClass']('expanded');
   };
 
   this.msglist_set_coltypes = function(list)
@@ -1594,7 +1616,7 @@ function rcube_webmail()
     for (i=0; i<cols.length; i++)
       if (cols[i].id && cols[i].id.match(/^rcm/)) {
         name = cols[i].id.replace(/^rcm/, '');
-        this.env.coltypes.push(name == 'to' ? 'from' : name);
+        this.env.coltypes.push(name);
       }
 
     if ((found = $.inArray('flag', this.env.coltypes)) >= 0)
@@ -1701,11 +1723,12 @@ function rcube_webmail()
       flags: flags.extra_flags
     });
 
-    var c, n, col, html, tree = '', expando = '',
+    var c, n, col, html, css_class,
+      tree = '', expando = '',
       list = this.message_list,
       rows = list.rows,
       message = this.env.messages[uid],
-      css_class = 'message'
+      row_class = 'message'
         + (!flags.seen ? ' unread' : '')
         + (flags.deleted ? ' deleted' : '')
         + (flags.flagged ? ' flagged' : '')
@@ -1715,7 +1738,6 @@ function rcube_webmail()
       row = document.createElement('tr');
 
     row.id = 'rcmrow'+uid;
-    row.className = css_class;
 
     // message status icons
     css_class = 'msgicon';
@@ -1752,6 +1774,8 @@ function rcube_webmail()
         }
         else
           message.expanded = true;
+
+        row_class += ' thread expanded';
       }
       else if (message.has_children) {
         if (message.expanded === undefined && (this.env.autoexpand_threads == 1 || (this.env.autoexpand_threads == 2 && message.unread_children))) {
@@ -1759,10 +1783,12 @@ function rcube_webmail()
         }
 
         expando = '<div id="rcmexpando' + uid + '" class="' + (message.expanded ? 'expanded' : 'collapsed') + '">&nbsp;&nbsp;</div>';
+        row_class += ' thread' + (message.expanded? ' expanded' : '');
       }
     }
 
     tree += '<span id="msgicn'+uid+'" class="'+css_class+'">&nbsp;</span>';
+    row.className = row_class;
 
     // build subject link 
     if (!bw.ie && cols.subject) {
@@ -1783,7 +1809,7 @@ function rcube_webmail()
         html = '<span id="flagicn'+uid+'" class="'+css_class+'">&nbsp;</span>';
       }
       else if (c == 'attachment') {
-        if (/application\/|multipart\/m/.test(flags.ctype))
+        if (/application\/|multipart\/(m|signed)/.test(flags.ctype))
           html = '<span class="attachment">&nbsp;</span>';
         else if (/multipart\/report/.test(flags.ctype))
           html = '<span class="report">&nbsp;</span>';
@@ -1804,8 +1830,11 @@ function rcube_webmail()
       else if (c == 'threads')
         html = expando;
       else if (c == 'subject') {
-        if (bw.ie)
+        if (bw.ie) {
           col.onmouseover = function() { rcube_webmail.long_subject_title_ie(this, message.depth+1); };
+          if (bw.ie8)
+            tree = '<span></span>' + tree; // #1487821
+        }
         html = tree + cols[c];
       }
       else if (c == 'priority') {
@@ -1866,7 +1895,7 @@ function rcube_webmail()
       // make sure new columns are added at the end of the list
       var i, idx, name, newcols = [], oldcols = this.env.coltypes;
       for (i=0; i<oldcols.length; i++) {
-        name = oldcols[i] == 'to' ? 'from' : oldcols[i];
+        name = oldcols[i];
         idx = $.inArray(name, cols);
         if (idx != -1) {
           newcols.push(name);
@@ -1916,7 +1945,7 @@ function rcube_webmail()
 
       // mark as read and change mbox unread counter
       if (action == '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 = window.setTimeout(function() {
+        this.preview_read_timer = setTimeout(function() {
           ref.set_message(id, 'unread', false);
           ref.update_thread_root(id, 'read');
           if (ref.env.unread_counts[ref.env.mailbox]) {
@@ -1967,10 +1996,10 @@ function rcube_webmail()
     if (page > 0 && page <= this.env.pagecount) {
       this.env.current_page = page;
 
-      if (this.task == 'mail')
-        this.list_mailbox(this.env.mailbox, page);
-      else if (this.task == 'addressbook')
+      if (this.task == 'addressbook' || this.contact_list)
         this.list_contacts(this.env.source, this.env.group, page);
+      else if (this.task == 'mail')
+        this.list_mailbox(this.env.mailbox, page);
     }
   };
 
@@ -2019,6 +2048,7 @@ function rcube_webmail()
       url += '&_refresh=1';
 
     this.select_folder(mbox, '', true);
+    this.unmark_folder(mbox, 'recent', '', true);
     this.env.mailbox = mbox;
 
     // load message list remotely
@@ -2083,8 +2113,8 @@ function rcube_webmail()
 
     while (new_row) {
       if (new_row.nodeType == 1 && (r = this.message_list.rows[new_row.uid]) && r.unread_children) {
-           this.message_list.expand_all(r);
-           this.set_unread_children(r.uid);
+        this.message_list.expand_all(r);
+        this.set_unread_children(r.uid);
       }
       new_row = new_row.nextSibling;
     }
@@ -2269,38 +2299,38 @@ function rcube_webmail()
     row = row.obj.nextSibling;
     while (row) {
       if (row.nodeType == 1 && (r = rows[row.uid])) {
-           if (!r.depth || r.depth <= depth)
-             break;
+        if (!r.depth || r.depth <= depth)
+          break;
 
-           r.depth--; // move left
+        r.depth--; // move left
         // reset width and clear the content of a tab, icons will be added later
-           $('#rcmtab'+r.uid).width(r.depth * 15).html('');
+        $('#rcmtab'+r.uid).width(r.depth * 15).html('');
         if (!r.depth) { // a new root
-             count++; // increase roots count
-             r.parent_uid = 0;
-             if (r.has_children) {
-               // replace 'leaf' with 'collapsed'
-               $('#rcmrow'+r.uid+' '+'.leaf:first')
+          count++; // increase roots count
+          r.parent_uid = 0;
+          if (r.has_children) {
+            // replace 'leaf' with 'collapsed'
+            $('#rcmrow'+r.uid+' '+'.leaf:first')
               .attr('id', 'rcmexpando' + r.uid)
-                 .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); });
-
-               r.unread_children = 0;
-               roots.push(r);
-             }
-             // show if it was hidden
-             if (r.obj.style.display == 'none')
-               $(r.obj).show();
-           }
-           else {
-             if (r.depth == depth)
-               r.parent_uid = parent;
-             if (r.unread && roots.length)
-               roots[roots.length-1].unread_children++;
-           }
-         }
-         row = row.nextSibling;
+              .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); });
+
+            r.unread_children = 0;
+            roots.push(r);
+          }
+          // show if it was hidden
+          if (r.obj.style.display == 'none')
+            $(r.obj).show();
+        }
+        else {
+          if (r.depth == depth)
+            r.parent_uid = parent;
+          if (r.unread && roots.length)
+            roots[roots.length-1].unread_children++;
+        }
+      }
+      row = row.nextSibling;
     }
 
     // update unread_children for roots
@@ -2319,13 +2349,13 @@ function rcube_webmail()
 
     while (row) {
       if (row.nodeType == 1 && (r = rows[row.uid])) {
-           if (!r.depth && cnt)
-             cnt--;
+        if (!r.depth && cnt)
+          cnt--;
 
         if (!cnt)
-             this.message_list.remove_row(row.uid);
-         }
-         row = row.nextSibling;
+          this.message_list.remove_row(row.uid);
+      }
+      row = row.nextSibling;
     }
   };
 
@@ -2523,6 +2553,9 @@ function rcube_webmail()
     // @TODO: we should check if defined trash mailbox exists
     else if (!trash || this.env.mailbox == trash)
       this.permanently_remove_messages();
+    // we're in Junk folder and delete_junk is enabled
+    else if (this.env.delete_junk && this.env.junk_mailbox && this.env.mailbox == this.env.junk_mailbox)
+      this.permanently_remove_messages();
     // if there is a trash mailbox defined and we're not currently in it
     else {
       // if shift was pressed delete it immediately
@@ -2609,34 +2642,37 @@ function rcube_webmail()
   // set a specific flag to one or more messages
   this.mark_message = function(flag, uid)
   {
-    var a_uids = [], r_uids = [], len, n, id,
-      selection = this.message_list ? this.message_list.get_selection() : [];
+    var a_uids = [], r_uids = [], len, n, id, selection,
+      list = this.message_list;
 
     if (uid)
       a_uids[0] = uid;
     else if (this.env.uid)
       a_uids[0] = this.env.uid;
-    else if (this.message_list) {
+    else if (list) {
+      selection = list.get_selection();
       for (n=0, len=selection.length; n<len; n++) {
           a_uids.push(selection[n]);
       }
     }
 
-    if (!this.message_list)
+    if (!list)
       r_uids = a_uids;
-    else
+    else {
+      list.focus();
       for (n=0, len=a_uids.length; n<len; n++) {
         id = a_uids[n];
-        if ((flag=='read' && this.message_list.rows[id].unread) 
-            || (flag=='unread' && !this.message_list.rows[id].unread)
-            || (flag=='delete' && !this.message_list.rows[id].deleted)
-            || (flag=='undelete' && this.message_list.rows[id].deleted)
-            || (flag=='flagged' && !this.message_list.rows[id].flagged)
-            || (flag=='unflagged' && this.message_list.rows[id].flagged))
+        if ((flag=='read' && list.rows[id].unread) 
+            || (flag=='unread' && !list.rows[id].unread)
+            || (flag=='delete' && !list.rows[id].deleted)
+            || (flag=='undelete' && list.rows[id].deleted)
+            || (flag=='flagged' && !list.rows[id].flagged)
+            || (flag=='unflagged' && list.rows[id].flagged))
         {
           r_uids.push(id);
         }
       }
+    }
 
     // nothing to do
     if (!r_uids.length && !this.select_all_mode)
@@ -2759,12 +2795,12 @@ function rcube_webmail()
         if (rows[uid].unread)
           r_uids[r_uids.length] = uid;
 
-           if (this.env.skip_deleted) {
-             count += this.update_thread(uid);
+        if (this.env.skip_deleted) {
+          count += this.update_thread(uid);
           this.message_list.remove_row(uid, (this.env.display_next && i == this.message_list.selection.length-1));
-           }
-           else
-             this.set_message(uid, 'deleted', true);
+        }
+        else
+          this.set_message(uid, 'deleted', true);
       }
     }
 
@@ -2822,6 +2858,19 @@ function rcube_webmail()
     return this.select_all_mode ? '*' : uids.join(',');
   };
 
+  // Sets title of the delete button
+  this.set_button_titles = function()
+  {
+    var label = 'deletemessage';
+
+    if (!this.env.flag_for_deletion
+      && this.env.trash_mailbox && this.env.mailbox != this.env.trash_mailbox
+      && (!this.env.delete_junk || !this.env.junk_mailbox || this.env.mailbox != this.env.junk_mailbox)
+    )
+      label = 'movemessagetotrash';
+
+    this.set_alttext('delete', label);
+  };
 
   /*********************************************************/
   /*********       mailbox folders methods         *********/
@@ -2926,7 +2975,7 @@ function rcube_webmail()
       this.set_caret_pos(input_message, this.env.top_posting ? 0 : $(input_message).val().length);
       // add signature according to selected identity
       // if we have HTML editor, signature is added in callback
-      if (input_from.prop('type') == 'select-one' && $("input[name='_draft_saveid']").val() == '') {
+      if (input_from.prop('type') == 'select-one') {
         this.change_identity(input_from[0]);
       }
     }
@@ -2955,6 +3004,38 @@ function rcube_webmail()
       .attr('autocomplete', 'off');
   };
 
+  this.compose_recipient_select = function(list)
+  {
+    this.enable_command('add-recipient', list.selection.length > 0);
+  };
+
+  this.compose_add_recipient = function(field)
+  {
+    var recipients = [], input = $('#_'+field);
+
+    if (this.contact_list && this.contact_list.selection.length) {
+      for (var id, n=0; n < this.contact_list.selection.length; n++) {
+        id = this.contact_list.selection[n];
+        if (id && this.env.contactdata[id]) {
+          recipients.push(this.env.contactdata[id]);
+
+          // group is added, expand it
+          if (id.charAt(0) == 'E' && this.env.contactdata[id].indexOf('@') < 0 && input.length) {
+            var gid = id.substr(1);
+            this.group2expand[gid] = { name:this.env.contactdata[id], input:input.get(0) };
+            this.http_request('group-expand', '_source='+urlencode(this.env.source)+'&_gid='+urlencode(gid), false);
+          }
+        }
+      }
+    }
+
+    if (recipients.length && input.length) {
+      var oldval = input.val();
+      input.val((oldval ? oldval + this.env.recipients_delimiter : '') + recipients.join(this.env.recipients_delimiter));
+      this.triggerEvent('add-recipient', { field:field, recipients:recipients });
+    }
+  };
+
   // checks the input fields before sending a message
   this.check_compose_input = function(cmd)
   {
@@ -3040,15 +3121,19 @@ function rcube_webmail()
 
   this.toggle_editor = function(props)
   {
+    this.stop_spellchecking();
+
     if (props.mode == 'html') {
-      this.display_spellcheck_controls(false);
       this.plain2html($('#'+props.id).val(), props.id);
       tinyMCE.execCommand('mceAddControl', false, props.id);
+
+      if (this.env.default_font)
+        setTimeout(function() {
+          $(tinyMCE.get(props.id).getBody()).css('font-family', rcmail.env.default_font);
+        }, 500);
     }
     else {
       var thisMCE = tinyMCE.get(props.id), existingHtml;
-      if (thisMCE.plugins.spellchecker && thisMCE.plugins.spellchecker.active)
-        thisMCE.execCommand('mceSpellCheck', false);
 
       if (existingHtml = thisMCE.getContent()) {
         if (!confirm(this.get_label('editorwarning'))) {
@@ -3057,7 +3142,6 @@ function rcube_webmail()
         this.html2plain(existingHtml, props.id);
       }
       tinyMCE.execCommand('mceRemoveControl', false, props.id);
-      this.display_spellcheck_controls(true);
     }
 
     return true;
@@ -3066,43 +3150,53 @@ function rcube_webmail()
   this.stop_spellchecking = function()
   {
     var ed;
+
     if (window.tinyMCE && (ed = tinyMCE.get(this.env.composebody))) {
-      if (ed.plugins.spellchecker && ed.plugins.spellchecker.active)
+      if (ed.plugins && ed.plugins.spellchecker && ed.plugins.spellchecker.active)
         ed.execCommand('mceSpellCheck');
     }
-    else if ((ed = this.env.spellcheck) && !this.spellcheck_ready) {
-      $(ed.spell_span).trigger('click');
-      this.set_spellcheck_state('ready');
+    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();
   };
 
-  this.display_spellcheck_controls = function(vis)
+  this.spellcheck_state = function()
   {
-    if (this.env.spellcheck) {
-      // stop spellchecking process
-      if (!vis)
-        this.stop_spellchecking();
+    var ed, active;
 
-      $(this.env.spellcheck.spell_container)[vis ? 'show' : 'hide']();
-    }
-  };
+    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';
 
-  this.set_spellcheck_state = function(s)
-  {
-    this.spellcheck_ready = (s == 'ready' || s == 'no_error_found');
-    this.enable_command('spellcheck', this.spellcheck_ready);
+    if (rcmail.buttons.spellcheck)
+      $('#'+rcmail.buttons.spellcheck[0].id)[active ? 'addClass' : 'removeClass']('selected');
+
+    return active;
   };
 
   // get selected language
   this.spellcheck_lang = function()
   {
     var ed;
-    if (window.tinyMCE && (ed = tinyMCE.get(this.env.composebody)) && ed.plugins.spellchecker) {
+
+    if (window.tinyMCE && (ed = tinyMCE.get(this.env.composebody)) && ed.plugins && ed.plugins.spellchecker)
       return ed.plugins.spellchecker.selectedLang;
-    }
-    else if (this.env.spellcheck) {
+    else if (this.env.spellcheck)
       return GOOGIE_CUR_LANG;
-    }
+  };
+
+  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);
   };
 
   // resume spellchecking, highlight provided mispellings without new ajax request
@@ -3121,6 +3215,8 @@ function rcube_webmail()
       sp.prepare(false, true);
       sp.processData(data);
     }
+
+    this.spellcheck_state();
   }
 
   this.set_draft_id = function(id)
@@ -3131,7 +3227,7 @@ function rcube_webmail()
   this.auto_save_start = function()
   {
     if (this.env.draft_autosave)
-      this.save_timer = self.setTimeout(function(){ ref.command("savedraft"); }, this.env.draft_autosave * 1000);
+      this.save_timer = setTimeout(function(){ ref.command("savedraft"); }, this.env.draft_autosave * 1000);
 
     // Unlock interface now that saving is complete
     this.busy = false;
@@ -3140,20 +3236,11 @@ function rcube_webmail()
   this.compose_field_hash = function(save)
   {
     // check input fields
-    var ed, str = '',
-      value_to = $("[name='_to']").val(),
-      value_cc = $("[name='_cc']").val(),
-      value_bcc = $("[name='_bcc']").val(),
-      value_subject = $("[name='_subject']").val();
-
-    if (value_to)
-      str += value_to+':';
-    if (value_cc)
-      str += value_cc+':';
-    if (value_bcc)
-      str += value_bcc+':';
-    if (value_subject)
-      str += value_subject+':';
+    var ed, i, 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();
@@ -3183,8 +3270,7 @@ function rcube_webmail()
       input_message = $("[name='_message']"),
       message = input_message.val(),
       is_html = ($("input[name='_is_html']").val() == '1'),
-      sig = this.env.identity,
-      sig_separator = this.env.sig_above && (this.env.compose_mode == 'reply' || this.env.compose_mode == 'forward') ? '---' : '-- ';
+      sig = this.env.identity;
 
     // enable manual signature insert
     if (this.env.signatures && this.env.signatures[id]) {
@@ -3197,30 +3283,27 @@ function rcube_webmail()
     if (!is_html) {
       // remove the 'old' signature
       if (show_sig && sig && this.env.signatures && this.env.signatures[sig]) {
-
-        sig = this.env.signatures[sig].is_html ? this.env.signatures[sig].plain_text : this.env.signatures[sig].text;
+        sig = this.env.signatures[sig].text;
         sig = sig.replace(/\r\n/g, '\n');
 
-        if (!sig.match(/^--[ -]\n/m))
-          sig = sig_separator + '\n' + sig;
-
         p = this.env.sig_above ? 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]['is_html'] ? this.env.signatures[id]['plain_text'] : this.env.signatures[id]['text'];
+        sig = this.env.signatures[id].text;
         sig = sig.replace(/\r\n/g, '\n');
 
-        if (!sig.match(/^--[ -]\n/m))
-          sig = sig_separator + '\n' + sig;
-
         if (this.env.sig_above) {
           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;
@@ -3279,21 +3362,8 @@ function rcube_webmail()
         }
       }
 
-      if (this.env.signatures[id]) {
-        if (this.env.signatures[id].is_html) {
-          sig = this.env.signatures[id].text;
-          if (!this.env.signatures[id].plain_text.match(/^--[ -]\r?\n/m))
-            sig = sig_separator + '<br />' + sig;
-        }
-        else {
-          sig = this.env.signatures[id].text;
-          if (!sig.match(/^--[ -]\r?\n/m))
-            sig = sig_separator + '\n' + sig;
-          sig = '<pre>' + sig + '</pre>';
-        }
-
-        sigElem.innerHTML = sig;
-      }
+      if (this.env.signatures[id])
+        sigElem.innerHTML = this.env.signatures[id].html;
     }
 
     this.env.identity = id;
@@ -3348,10 +3418,11 @@ function rcube_webmail()
         ts = frame_name.replace(/^rcmupload/, '');
 
       if (this.env.loadingicon)
-        content = '<img src="'+this.env.loadingicon+'" alt="" />'+content;
-      if (this.env.cancelicon)
-        content = '<a title="'+this.get_label('cancel')+'" onclick="return rcmail.cancel_attachment_upload(\''+ts+'\', \''+frame_name+'\');" href="#cancelupload"><img src="'+this.env.cancelicon+'" alt="" /></a>'+content;
-      this.add2attachment_list(ts, { name:'', html:content, complete:false });
+        content = '<img src="'+this.env.loadingicon+'" alt="" class="uploading" />'+content;
+      content = '<a title="'+this.get_label('cancel')+'" onclick="return rcmail.cancel_attachment_upload(\''+ts+'\', \''+frame_name+'\');" href="#cancelupload" class="cancelupload">'
+        + (this.env.cancelicon ? '<img src="'+this.env.cancelicon+'" alt="" />' : this.get_label('cancel')) + '</a>' + content;
+
+      this.add2attachment_list(ts, { name:'', html:content, classname:'uploading', complete:false });
 
       // upload progress support
       if (this.env.upload_progress_time) {
@@ -3371,7 +3442,7 @@ function rcube_webmail()
     if (!this.gui_objects.attachmentlist)
       return false;
 
-    var indicator, li = $('<li>').attr('id', name).html(att.html);
+    var indicator, li = $('<li>').attr('id', name).addClass(att.classname).html(att.html);
 
     // replace indicator's li
     if (upload_id && (indicator = document.getElementById(upload_id))) {
@@ -3415,7 +3486,7 @@ function rcube_webmail()
 
   this.upload_progress_start = function(action, name)
   {
-    window.setTimeout(function() { rcmail.http_request(action, {_progress: name}); },
+    setTimeout(function() { rcmail.http_request(action, {_progress: name}); },
       this.env.upload_progress_time * 1000);
   };
 
@@ -3436,7 +3507,7 @@ function rcube_webmail()
   this.add_contact = function(value)
   {
     if (value)
-      this.http_post('addcontact', '_address='+value);
+      this.http_post('addcontact', {_address: value});
 
     return true;
   };
@@ -3515,7 +3586,7 @@ function rcube_webmail()
   {
     this.display_message(msg, type);
     // before redirect we need to wait some time for Chrome (#1486177)
-    window.setTimeout(function(){ ref.list_mailbox(); }, 500);
+    setTimeout(function(){ ref.list_mailbox(); }, 500);
   };
 
 
@@ -3534,9 +3605,9 @@ function rcube_webmail()
       mod = rcube_event.get_modifier(e);
 
     switch (key) {
-      case 38:  // key up
-      case 40:  // key down
-        if (!this.ksearch_pane)
+      case 38:  // arrow up
+      case 40:  // arrow down
+        if (!this.ksearch_visible())
           break;
 
         var dir = key==38 ? 1 : 0;
@@ -3573,11 +3644,11 @@ function rcube_webmail()
       case 37:  // left
       case 39:  // right
         if (mod != SHIFT_KEY)
-             return;
+          return;
     }
 
     // start timer
-    this.ksearch_timer = window.setTimeout(function(){ ref.ksearch_get_results(props); }, 200);
+    this.ksearch_timer = setTimeout(function(){ ref.ksearch_get_results(props); }, 200);
     this.ksearch_input = obj;
 
     return true;
@@ -3621,8 +3692,7 @@ function rcube_webmail()
     // insert all members of a group
     if (typeof this.env.contacts[id] === 'object' && this.env.contacts[id].id) {
       insert += this.env.contacts[id].name + this.env.recipients_delimiter;
-      this.group2expand = $.extend({}, this.env.contacts[id]);
-      this.group2expand.input = this.ksearch_input;
+      this.group2expand[this.env.contacts[id].id] = $.extend({ input: this.ksearch_input }, this.env.contacts[id]);
       this.http_request('mail/group-expand', '_source='+urlencode(this.env.contacts[id].source)+'&_gid='+urlencode(this.env.contacts[id].id), false);
     }
     else if (typeof this.env.contacts[id] === 'string') {
@@ -3643,10 +3713,10 @@ function rcube_webmail()
 
   this.replace_group_recipients = function(id, recipients)
   {
-    if (this.group2expand && this.group2expand.id == id) {
-      this.group2expand.input.value = this.group2expand.input.value.replace(this.group2expand.name, recipients);
-      this.triggerEvent('autocomplete_insert', { field:this.group2expand.input, insert:recipients });
-      this.group2expand = null;
+    if (this.group2expand[id]) {
+      this.group2expand[id].input.value = this.group2expand[id].input.value.replace(this.group2expand[id].name, recipients);
+      this.triggerEvent('autocomplete_insert', { field:this.group2expand[id].input, insert:recipients });
+      this.group2expand[id] = null;
     }
   };
 
@@ -3693,7 +3763,7 @@ function rcube_webmail()
       return;
 
     // ...new search value contains old one and previous search was not finished or its result was empty
-    if (old_value && old_value.length && q.indexOf(old_value) == 0 && (!ac || !ac.num) && this.env.contacts && !this.env.contacts.length)
+    if (old_value && old_value.length && q.indexOf(old_value) == 0 && (!ac || ac.num <= 0) && this.env.contacts && !this.env.contacts.length)
       return;
 
     var i, lock, source, xhr, reqid = new Date().getTime(),
@@ -3706,7 +3776,7 @@ function rcube_webmail()
 
     for (i=0; i<threads; i++) {
       source = this.ksearch_data.sources.shift();
-      if (threads > 1 && source === null)
+      if (threads > 1 && source === undefined)
         break;
 
       lock = this.display_message(this.get_label('searching'), 'loading');
@@ -3885,7 +3955,7 @@ function rcube_webmail()
       source = this.env.source ? this.env.address_sources[this.env.source] : null;
 
     if (id = list.get_single_selection())
-      this.preview_timer = window.setTimeout(function(){ ref.load_contact(id, 'show'); }, 200);
+      this.preview_timer = setTimeout(function(){ ref.load_contact(id, 'show'); }, 200);
     else if (this.env.contentframe)
       this.show_contentframe(false);
 
@@ -3906,6 +3976,9 @@ function rcube_webmail()
       }
     }
 
+    // if a group is currently selected, and there is at least one contact selected
+    // thend we can enable the group-remove-selected command
+    this.enable_command('group-remove-selected', this.env.group && list.selection.length > 0);
     this.enable_command('compose', this.env.group || list.selection.length > 0);
     this.enable_command('edit', id && writable);
     this.enable_command('delete', list.selection.length && writable);
@@ -3985,7 +4058,7 @@ function rcube_webmail()
     if (this.env.search_request)
       url += '&_search='+this.env.search_request;
 
-    this.http_request('list', url, lock);
+    this.http_request(this.env.task == 'mail' ? 'list-contacts' : 'list', url, lock);
   };
 
   this.list_contacts_clear = function()
@@ -4136,7 +4209,7 @@ function rcube_webmail()
   };
 
   // add row to contacts list
-  this.add_contact_row = function(cid, cols, select)
+  this.add_contact_row = function(cid, cols, classes)
   {
     if (!this.gui_objects.contactslist)
       return false;
@@ -4145,7 +4218,7 @@ function rcube_webmail()
       row = document.createElement('tr');
 
     row.id = 'rcmrow'+this.html_identifier(cid);
-    row.className = 'contact';
+    row.className = 'contact ' + (classes || '');
 
     if (list.in_selection(cid))
       row.className += ' selected';
@@ -4191,7 +4264,6 @@ function rcube_webmail()
         yearRange: '-100:+10',
         showOtherMonths: true,
         selectOtherMonths: true,
-        monthNamesShort: this.env.month_names,
         onSelect: function(dateText) { $(this).focus().val(dateText) }
       });
       $('input.datepicker').datepicker();
@@ -4266,6 +4338,28 @@ function rcube_webmail()
     this.name_input.select().focus();
   };
 
+  //remove selected contacts from current active group
+  this.group_remove_selected = function()
+  {
+    ref.http_post('group-delmembers','_cid='+urlencode(this.contact_list.selection)
+                 + '&_source='+urlencode(this.env.source)
+                 + '&_gid='+urlencode(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)){
+      var selection = this.contact_list.get_selection();
+      for (var 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)
   {
@@ -4410,12 +4504,13 @@ function rcube_webmail()
 
   this.init_edit_field = function(col, elem)
   {
+    var label = this.env.coltypes[col].label;
+
     if (!elem)
       elem = $('.ff_' + col);
 
-    elem.focus(function(){ ref.focus_textfield(this); })
-      .blur(function(){ ref.blur_textfield(this); })
-      .each(function(){ this._placeholder = this.title = ref.env.coltypes[col].label; ref.blur_textfield(this); });
+    if (label)
+      elem.placeholder(label);
   };
 
   this.insert_edit_field = function(col, section, menu)
@@ -4430,8 +4525,15 @@ function rcube_webmail()
       var lastelem = $('.ff_'+col),
         appendcontainer = $('#contactsection'+section+' .contactcontroller'+col);
 
-      if (!appendcontainer.length)
-        appendcontainer = $('<fieldset>').addClass('contactfieldgroup contactcontroller'+col).insertAfter($('#contactsection'+section+' .contactfieldgroup').last());
+      if (!appendcontainer.length) {
+        var sect = $('#contactsection'+section),
+          lastgroup = $('.contactfieldgroup', sect).last();
+        appendcontainer = $('<fieldset>').addClass('contactfieldgroup contactcontroller'+col);
+        if (lastgroup.length)
+          appendcontainer.insertAfter(lastgroup);
+        else
+          sect.prepend(appendcontainer);
+      }
 
       if (appendcontainer.length && appendcontainer.get(0).nodeName == 'FIELDSET') {
         var input, colprop = this.env.coltypes[col],
@@ -4456,6 +4558,14 @@ function rcube_webmail()
           if (colprop.type == 'date' && $.datepicker)
             input.datepicker();
         }
+        else if (colprop.type == 'textarea') {
+          input = $('<textarea>')
+            .addClass('ff_'+col)
+            .attr({ name: '_'+col+name_suffix, cols:colprop.size, rows:colprop.rows })
+            .appendTo(cell);
+
+          this.init_edit_field(col, input);
+        }
         else if (colprop.type == 'composite') {
           var childcol, cp, first, templ, cols = [], suffices = [];
           // read template for composite field order
@@ -4574,7 +4684,7 @@ function rcube_webmail()
   {
     var n, buttons = this.buttons['upload-photo'];
     for (n=0; buttons && n < buttons.length; n++)
-      $('#'+buttons[n].id).html(this.get_label(id == '-del-' ? 'addphoto' : 'replacephoto'));
+      $('a#'+buttons[n].id).html(this.get_label(id == '-del-' ? 'addphoto' : 'replacephoto'));
 
     $('#ff_photo').val(id);
     this.enable_command('upload-photo', this.env.coltypes.photo ? true : false);
@@ -4726,14 +4836,16 @@ function rcube_webmail()
   this.identity_select = function(list)
   {
     var id;
-    if (id = list.get_single_selection())
+    if (id = list.get_single_selection()) {
+      this.enable_command('delete', list.rowcount > 1 && this.env.identities_level < 2);
       this.load_identity(id, 'edit-identity');
+    }
   };
 
   // load identity record
   this.load_identity = function(id, action)
   {
-    if (action=='edit-identity' && (!id || id==this.env.iid))
+    if (action == 'edit-identity' && (!id || id == this.env.iid))
       return false;
 
     var add_url = '', target = window;
@@ -4744,7 +4856,7 @@ function rcube_webmail()
       document.getElementById(this.env.contentframe).style.visibility = 'inherit';
     }
 
-    if (action && (id || action=='add-identity')) {
+    if (action && (id || action == 'add-identity')) {
       this.set_busy(true);
       this.location_href(this.env.comm_path+'&_action='+action+'&_iid='+id+add_url, target);
     }
@@ -4754,7 +4866,7 @@ function rcube_webmail()
 
   this.delete_identity = function(id)
   {
-    // exit if no mailbox specified or if selection is empty
+    // exit if no identity is specified or if selection is empty
     var selection = this.identity_list.get_selection();
     if (!(selection.length || this.env.iid))
       return;
@@ -4762,12 +4874,29 @@ function rcube_webmail()
     if (!id)
       id = this.env.iid ? this.env.iid : selection[0];
 
-    // append token to request
-    this.goto_url('delete-identity', '_iid='+id+'&_token='+this.env.request_token, true);
+    // 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;
   };
 
+  this.update_identity_row = function(id, name, add)
+  {
+    var row, col, list = this.identity_list,
+      rid = this.html_identifier(id);
+
+    if (list.rows[rid] && (row = list.rows[rid].obj)) {
+      $(row.cells[0]).html(name);
+    }
+    else if (add) {
+      row = $('<tr>').attr('id', 'rcmrow'+rid).get(0);
+      col = $('<td>').addClass('mail').html(name).appendTo(row);
+      list.insert_row(row);
+      list.select(rid);
+    }
+  };
+
 
   /*********************************************************/
   /*********        folder manager methods         *********/
@@ -4886,7 +5015,7 @@ function rcube_webmail()
     if (!this.gui_objects.subscriptionlist)
       return false;
 
-    var row, n, i, tmp, folders, rowid, list = [], slist = [],
+    var row, n, i, tmp, tmp_name, folders, rowid, list = [], slist = [],
       tbody = this.gui_objects.subscriptionlist.tBodies[0],
       refrow = $('tr', tbody).get(1),
       id = 'rcmrow'+((new Date).getTime());
@@ -4922,8 +5051,12 @@ function rcube_webmail()
     for (n in folders) {
       // protected folder
       if (folders[n][2]) {
+        tmp_name = folders[n][0] + this.env.delimiter;
+        // prefix namespace cannot have subfolders (#1488349)
+        if (tmp_name == this.env.prefix_ns)
+          continue;
         slist.push(folders[n][0]);
-        tmp = folders[n][0]+this.env.delimiter;
+        tmp = tmp_name;
       }
       // protected folder's child
       else if (tmp && folders[n][0].indexOf(tmp) == 0)
@@ -5309,22 +5442,6 @@ function rcube_webmail()
     }
   };
 
-  this.focus_textfield = function(elem)
-  {
-    elem._hasfocus = true;
-    var $elem = $(elem);
-    if ($elem.hasClass('placeholder') || $elem.val() == elem._placeholder)
-      $elem.val('').removeClass('placeholder').attr('spellcheck', true);
-  };
-
-  this.blur_textfield = function(elem)
-  {
-    elem._hasfocus = false;
-    var $elem = $(elem);
-    if (elem._placeholder && (!$elem.val() || $elem.val() == elem._placeholder))
-      $elem.addClass('placeholder').attr('spellcheck', false).val(elem._placeholder);
-  };
-
   // write to the document/window title
   this.set_pagetitle = function(title)
   {
@@ -5374,7 +5491,7 @@ function rcube_webmail()
       }
       // add element and set timeout
       this.messages[key].elements.push(id);
-      window.setTimeout(function() { ref.hide_message(id, type == 'loading'); }, timeout);
+      setTimeout(function() { ref.hide_message(id, type == 'loading'); }, timeout);
       return id;
     }
 
@@ -5391,8 +5508,10 @@ function rcube_webmail()
       obj.click(function() { return ref.hide_message(obj); });
     }
 
+    this.triggerEvent('message', { message:msg, type:type, timeout:timeout, object:obj });
+
     if (timeout > 0)
-      window.setTimeout(function() { ref.hide_message(id, type == 'loading'); }, timeout);
+      setTimeout(function() { ref.hide_message(id, type == 'loading'); }, timeout);
     return id;
   };
 
@@ -5441,6 +5560,49 @@ function rcube_webmail()
     }
   };
 
+  // remove all messages immediately
+  this.clear_messages = function()
+  {
+    // pass command to parent window
+    if (this.is_framed())
+      return parent.rcmail.clear_messages();
+
+    var k, n, m = this.messages;
+
+    for (k in m)
+      for (n in m[k].elements)
+        if (m[k].obj)
+          m[k].obj.hide();
+
+    this.messages = {};
+  };
+
+  // open a jquery UI dialog with the given content
+  this.show_popup_dialog = function(html, title)
+  {
+    // forward call to parent window
+    if (this.is_framed()) {
+      parent.rcmail.show_popup_dialog(html, title);
+      return;
+    }
+
+    var popup = $('<div class="popup">')
+      .html(html)
+      .dialog({
+        title: title,
+        modal: true,
+        resizable: true,
+        width: 580,
+        close: function(event, ui) { $(this).remove() }
+      });
+
+      // resize and center popup
+      var win = $(window), w = win.width(), h = win.height(),
+        width = popup.width(), height = popup.height();
+      popup.dialog('option', { height: Math.min(h-40, height+50), width: Math.min(w-20, width+50) })
+        .dialog('option', 'position', ['center', 'center']);  // only works in a separate call (!?)
+  };
+
   // mark a mailbox as selected and set environment variable
   this.select_folder = function(name, prefix, encode)
   {
@@ -5459,6 +5621,18 @@ function rcube_webmail()
     }
   };
 
+  // adds a class to selected folder
+  this.mark_folder = function(name, class_name, prefix, encode)
+  {
+    $(this.get_folder_li(name, prefix, encode)).addClass(class_name);
+  };
+
+  // adds a class to selected folder
+  this.unmark_folder = function(name, class_name, prefix, encode)
+  {
+    $(this.get_folder_li(name, prefix, encode)).removeClass(class_name);
+  };
+
   // helper method to find a folder list item
   this.get_folder_li = function(name, prefix, encode)
   {
@@ -5475,7 +5649,7 @@ function rcube_webmail()
 
   // for reordering column array (Konqueror workaround)
   // and for setting some message list global variables
-  this.set_message_coltypes = function(coltypes, repl)
+  this.set_message_coltypes = function(coltypes, repl, smart_col)
   {
     var list = this.message_list,
       thead = list ? list.list.tHead : null,
@@ -5503,7 +5677,7 @@ function rcube_webmail()
 
       for (n=0, len=this.env.coltypes.length; n<len; n++) {
         col = this.env.coltypes[n];
-        if ((cell = thead.rows[0].cells[n]) && (col=='from' || col=='to')) {
+        if ((cell = thead.rows[0].cells[n]) && (col == 'from' || col == 'to' || col == 'fromto')) {
           cell.id = 'rcm'+col;
           // if we have links for sorting, it's a bit more complicated...
           if (cell.firstChild && cell.firstChild.tagName.toLowerCase()=='a') {
@@ -5511,7 +5685,7 @@ function rcube_webmail()
             cell.onclick = function(){ return rcmail.command('sort', this.__col, this); };
             cell.__col = col;
           }
-          cell.innerHTML = this.get_label(col);
+          cell.innerHTML = this.get_label(col == 'fromto' ? smart_col : col);
         }
       }
     }
@@ -5557,22 +5731,26 @@ function rcube_webmail()
   // replace content of quota display
   this.set_quota = function(content)
   {
-    if (content && this.gui_objects.quotadisplay) {
-      if (typeof content === 'object' && content.type == 'image')
-        this.percent_indicator(this.gui_objects.quotadisplay, content);
-      else
-        $(this.gui_objects.quotadisplay).html(content);
-    }
+    if (this.gui_objects.quotadisplay && content && content.type == 'text')
+      $(this.gui_objects.quotadisplay).html(content.percent+'%').attr('title', content.title);
+
+    this.triggerEvent('setquota', content);
+    this.env.quota_content = content;
   };
 
   // update the mailboxlist
-  this.set_unread_count = function(mbox, count, set_title)
+  this.set_unread_count = function(mbox, count, set_title, mark)
   {
     if (!this.gui_objects.mailboxlist)
       return false;
 
     this.env.unread_counts[mbox] = count;
     this.set_unread_count_display(mbox, set_title);
+
+    if (mark)
+      this.mark_folder(mbox, mark, '', true);
+    else if (!count)
+      this.unmark_folder(mbox, 'recent', '', true);
   };
 
   // update the mailbox count display
@@ -5598,7 +5776,7 @@ function rcube_webmail()
       }
 
       if (mycount && text_obj.length)
-        text_obj.html(' ('+mycount+')');
+        text_obj.html(this.env.unreadwrap.replace(/%[sd]/, mycount));
       else if (text_obj.length)
         text_obj.remove();
 
@@ -5631,16 +5809,6 @@ function rcube_webmail()
     }
   };
 
-  this.toggle_prefer_html = function(checkbox)
-  {
-    $('#rcmfd_show_images').prop('disabled', !checkbox.checked).val(0);
-  };
-
-  this.toggle_preview_pane = function(checkbox)
-  {
-    $('#rcmfd_preview_pane_mark_read').prop('disabled', !checkbox.checked);
-  };
-
   // display fetched raw headers
   this.set_headers = function(content)
   {
@@ -5649,14 +5817,14 @@ function rcube_webmail()
   };
 
   // display all-headers row and fetch raw message headers
-  this.load_headers = function(elem)
+  this.show_headers = function(props, elem)
   {
     if (!this.gui_objects.all_headers_row || !this.gui_objects.all_headers_box || !this.env.uid)
       return;
 
     $(elem).removeClass('show-headers').addClass('hide-headers');
     $(this.gui_objects.all_headers_row).show();
-    elem.onclick = function() { rcmail.hide_headers(elem); };
+    elem.onclick = function() { rcmail.command('hide-headers', '', elem); };
 
     // fetch headers only once
     if (!this.gui_objects.all_headers_box.innerHTML) {
@@ -5666,79 +5834,16 @@ function rcube_webmail()
   };
 
   // hide all-headers row
-  this.hide_headers = function(elem)
+  this.hide_headers = function(props, elem)
   {
     if (!this.gui_objects.all_headers_row || !this.gui_objects.all_headers_box)
       return;
 
     $(elem).removeClass('hide-headers').addClass('show-headers');
     $(this.gui_objects.all_headers_row).hide();
-    elem.onclick = function() { rcmail.load_headers(elem); };
+    elem.onclick = function() { rcmail.command('show-headers', '', elem); };
   };
 
-  // percent (quota) indicator
-  this.percent_indicator = function(obj, data)
-  {
-    if (!data || !obj)
-      return false;
-
-    var limit_high = 80,
-      limit_mid  = 55,
-      width = data.width ? data.width : this.env.indicator_width ? this.env.indicator_width : 100,
-      height = data.height ? data.height : this.env.indicator_height ? this.env.indicator_height : 14,
-      quota = data.percent ? Math.abs(parseInt(data.percent)) : 0,
-      quota_width = parseInt(quota / 100 * width),
-      pos = $(obj).position();
-
-    // workarounds for Opera and Webkit bugs
-    pos.top = Math.max(0, pos.top);
-    pos.left = Math.max(0, pos.left);
-
-    this.env.indicator_width = width;
-    this.env.indicator_height = height;
-
-    // overlimit
-    if (quota_width > width) {
-      quota_width = width;
-      quota = 100; 
-    }
-
-    if (data.title)
-      data.title = this.get_label('quota') + ': ' +  data.title;
-
-    // main div
-    var main = $('<div>');
-    main.css({position: 'absolute', top: pos.top, left: pos.left,
-           width: width + 'px', height: height + 'px', zIndex: 100, lineHeight: height + 'px'})
-         .attr('title', data.title).addClass('quota_text').html(quota + '%');
-    // used bar
-    var bar1 = $('<div>');
-    bar1.css({position: 'absolute', top: pos.top + 1, left: pos.left + 1,
-           width: quota_width + 'px', height: height + 'px', zIndex: 99});
-    // background
-    var bar2 = $('<div>');
-    bar2.css({position: 'absolute', top: pos.top + 1, left: pos.left + 1,
-           width: width + 'px', height: height + 'px', zIndex: 98})
-         .addClass('quota_bg');
-
-    if (quota >= limit_high) {
-      main.addClass(' quota_text_high');
-      bar1.addClass('quota_high');
-    }
-    else if(quota >= limit_mid) {
-      main.addClass(' quota_text_mid');
-      bar1.addClass('quota_mid');
-    }
-    else {
-      main.addClass(' quota_text_low');
-      bar1.addClass('quota_low');
-    }
-
-    // replace quota image
-    $(obj).html('').append(bar1).append(bar2).append(main);
-    // update #quotaimg title
-    $('#quotaimg').attr('title', data.title);
-  };
 
   /********************************************************/
   /*********  html to text conversion functions   *********/
@@ -5858,7 +5963,7 @@ function rcube_webmail()
     return $.ajax({
       type: 'GET', url: url, data: { _unlock:(lock?lock:0) }, dataType: 'json',
       success: function(data){ ref.http_response(data); },
-      error: function(o, status, err) { rcmail.http_error(o, status, err, lock); }
+      error: function(o, status, err) { ref.http_error(o, status, err, lock, action); }
     });
   };
 
@@ -5890,7 +5995,7 @@ function rcube_webmail()
     return $.ajax({
       type: 'POST', url: url, data: postdata, dataType: 'json',
       success: function(data){ ref.http_response(data); },
-      error: function(o, status, err) { rcmail.http_error(o, status, err, lock); }
+      error: function(o, status, err) { ref.http_error(o, status, err, lock, action); }
     });
   };
 
@@ -5996,7 +6101,7 @@ function rcube_webmail()
           this.enable_command('purge', this.purge_mailbox_test());
           this.enable_command('expand-all', 'expand-unread', 'collapse-all', this.env.threading && this.env.messagecount);
 
-          if (response.action == 'list' || response.action == 'search') {
+          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 });
           }
@@ -6022,15 +6127,29 @@ function rcube_webmail()
   };
 
   // handle HTTP request errors
-  this.http_error = function(request, status, err, lock)
+  this.http_error = function(request, status, err, lock, action)
   {
     var errmsg = request.statusText;
 
     this.set_busy(false, null, lock);
     request.abort();
 
+    // don't display error message on page unload (#1488547)
+    if (this.unload)
+      return;
+
     if (request.status && errmsg)
       this.display_message(this.get_label('servererror') + ' (' + errmsg + ')', 'error');
+    else if (status == 'timeout')
+      this.display_message(this.get_label('requesttimedout'), 'error');
+    else if (request.status == 0 && status != 'abort')
+      this.display_message(this.get_label('servererror') + ' (No connection)', 'error');
+
+    // re-send keep-alive requests after 30 seconds
+    if (action == 'keep-alive')
+      setTimeout(function(){ ref.keep_alive(); ref.start_keepalive(); }, 30000);
+    else if (action == 'check-recent')
+      setTimeout(function(){ ref.check_for_recent(false); ref.start_keepalive(); }, 30000);
   };
 
   // post the given form to a hidden iframe
@@ -6084,12 +6203,15 @@ function rcube_webmail()
   // starts interval for keep-alive/check-recent signal
   this.start_keepalive = function()
   {
+    if (!this.env.keep_alive || this.env.framed)
+      return;
+
     if (this._int)
       clearInterval(this._int);
 
-    if (this.env.keep_alive && !this.env.framed && this.task == 'mail' && this.gui_objects.mailboxlist)
+    if (this.task == 'mail' && this.gui_objects.mailboxlist)
       this._int = setInterval(function(){ ref.check_for_recent(false); }, this.env.keep_alive * 1000);
-    else if (this.env.keep_alive && !this.env.framed && this.task != 'login' && this.env.action != 'print')
+    else if (this.task != 'login' && this.env.action != 'print')
       this._int = setInterval(function(){ ref.keep_alive(); }, this.env.keep_alive * 1000);
   };
 
@@ -6150,7 +6272,7 @@ function rcube_webmail()
       return obj.selectionEnd;
     else if (document.selection && document.selection.createRange) {
       var range = document.selection.createRange();
-      if (range.parentElement()!=obj)
+      if (range.parentElement() != obj)
         return 0;
 
       var gm = range.duplicate();
@@ -6208,6 +6330,32 @@ function rcube_webmail()
     }
   };
 
+  this.mailto_handler_uri = function()
+  {
+    return location.href.split('?')[0] + '?_task=mail&_action=compose&_to=%s';
+  };
+
+  this.register_protocol_handler = function(name)
+  {
+    try {
+      window.navigator.registerProtocolHandler('mailto', this.mailto_handler_uri(), name);
+    }
+    catch(e) {};
+  };
+
+  this.check_protocol_handler = function(name, elem)
+  {
+    var nav = window.navigator;
+    if (!nav
+      || (typeof nav.registerProtocolHandler != 'function')
+      || ((typeof nav.isProtocolHandlerRegistered == 'function')
+        && nav.isProtocolHandlerRegistered('mailto', this.mailto_handler_uri()) == 'registered')
+    )
+      $(elem).addClass('disabled');
+    else
+      $(elem).click(function() { rcmail.register_protocol_handler(name); return false; });
+  };
+
 }  // end object rcube_webmail
 
 
@@ -6242,4 +6390,3 @@ rcube_webmail.long_subject_title_ie = function(elem, indent)
 rcube_webmail.prototype.addEventListener = rcube_event_engine.prototype.addEventListener;
 rcube_webmail.prototype.removeEventListener = rcube_event_engine.prototype.removeEventListener;
 rcube_webmail.prototype.triggerEvent = rcube_event_engine.prototype.triggerEvent;
-
index a920d836d103856aa555cb682329a57b594634d3..e24e675c457ab1c337795557570118d8c0a7a72e 100644 (file)
@@ -1,28 +1,29 @@
 var CONTROL_KEY=1,SHIFT_KEY=2,CONTROL_SHIFT_KEY=3;
-function roundcube_browser(){var a=navigator;this.ver=parseFloat(a.appVersion);this.appver=a.appVersion;this.agent=a.userAgent;this.agent_lc=a.userAgent.toLowerCase();this.name=a.appName;this.vendor=a.vendor?a.vendor:"";this.vendver=a.vendorSub?parseFloat(a.vendorSub):0;this.product=a.product?a.product:"";this.platform=(""+a.platform).toLowerCase();this.lang=a.language?a.language.substring(0,2):a.browserLanguage?a.browserLanguage.substring(0,2):a.systemLanguage?a.systemLanguage.substring(0,2):"en";
-this.win=0<=this.platform.indexOf("win");this.mac=0<=this.platform.indexOf("mac");this.linux=0<=this.platform.indexOf("linux");this.unix=0<=this.platform.indexOf("unix");this.dom=document.getElementById?!0:!1;this.dom2=document.addEventListener&&document.removeEventListener;this.ie4=(this.ie=document.all&&!window.opera)&&!this.dom;this.ie5=this.dom&&0<this.appver.indexOf("MSIE 5");this.ie8=this.dom&&0<this.appver.indexOf("MSIE 8");this.ie7=this.dom&&0<this.appver.indexOf("MSIE 7");this.ie6=this.dom&&
-!this.ie8&&!this.ie7&&0<this.appver.indexOf("MSIE 6");this.ns=5>this.ver&&"Netscape"==this.name||5<=this.ver&&0<=this.vendor.indexOf("Netscape");this.chrome=0<this.agent_lc.indexOf("chrome");this.safari=!this.chrome&&(0<this.agent_lc.indexOf("safari")||0<this.agent_lc.indexOf("applewebkit"));this.mz=this.dom&&!this.ie&&!this.ns&&!this.chrome&&!this.safari&&0<=this.agent.indexOf("Mozilla");this.konq=0<this.agent_lc.indexOf("konqueror");this.iphone=this.safari&&0<this.agent_lc.indexOf("iphone");this.ipad=
-this.safari&&0<this.agent_lc.indexOf("ipad");(this.opera=window.opera?!0:!1)&&window.RegExp?this.vendver=/opera(\s|\/)([0-9\.]+)/.test(this.agent_lc)?parseFloat(RegExp.$2):-1:this.chrome&&window.RegExp?this.vendver=/chrome\/([0-9\.]+)/.test(this.agent_lc)?parseFloat(RegExp.$1):0:!this.vendver&&this.safari?this.vendver=/(safari|applewebkit)\/([0-9]+)/.test(this.agent_lc)?parseInt(RegExp.$2):0:!this.vendver&&this.mz||0<this.agent.indexOf("Camino")?this.vendver=/rv:([0-9\.]+)/.test(this.agent)?parseFloat(RegExp.$1):
-0:this.ie&&window.RegExp?this.vendver=/msie\s+([0-9\.]+)/.test(this.agent_lc)?parseFloat(RegExp.$1):0:this.konq&&window.RegExp&&(this.vendver=/khtml\/([0-9\.]+)/.test(this.agent_lc)?parseFloat(RegExp.$1):0);this.safari&&/;\s+([a-z]{2})-[a-z]{2}\)/.test(this.agent_lc)&&(this.lang=RegExp.$1);this.dhtml=this.ie4&&this.win||this.ie5||this.ie6||this.ns4||this.mz;this.vml=this.win&&this.ie&&this.dom&&!this.opera;this.pngalpha=this.mz||this.opera&&6<=this.vendver||this.ie&&this.mac&&5<=this.vendver||this.ie&&
-this.win&&5.5<=this.vendver||this.safari;this.opacity=this.mz||this.ie&&5.5<=this.vendver&&!this.opera||this.safari&&100<=this.vendver;this.cookies=a.cookieEnabled;this.xmlhttp_test=function(){var a=new Function("try{var o=new ActiveXObject('Microsoft.XMLHTTP');return true;}catch(err){return false;}");return this.xmlhttp=window.XMLHttpRequest||window.ActiveXObject&&a()};this.set_html_class=function(){var a=" js";if(this.ie){a=a+" ie";this.ie5?a=a+" ie5":this.ie6?a=a+" ie6":this.ie7?a=a+" ie7":this.ie8&&
-(a=a+" ie8")}else this.opera?a=a+" opera":this.konq?a=a+" konqueror":this.safari&&(a=a+" safari");this.chrome?a=a+" chrome":this.iphone?a=a+" iphone":this.ipad&&(a=a+" ipad");if(document.documentElement)document.documentElement.className=document.documentElement.className+a}}
+function roundcube_browser(){var a=navigator;this.ver=parseFloat(a.appVersion);this.appver=a.appVersion;this.agent=a.userAgent;this.agent_lc=a.userAgent.toLowerCase();this.name=a.appName;this.vendor=a.vendor?a.vendor:"";this.vendver=a.vendorSub?parseFloat(a.vendorSub):0;this.product=a.product?a.product:"";this.platform=String(a.platform).toLowerCase();this.lang=a.language?a.language.substring(0,2):a.browserLanguage?a.browserLanguage.substring(0,2):a.systemLanguage?a.systemLanguage.substring(0,2):
+"en";this.win=0<=this.platform.indexOf("win");this.mac=0<=this.platform.indexOf("mac");this.linux=0<=this.platform.indexOf("linux");this.unix=0<=this.platform.indexOf("unix");this.dom=document.getElementById?!0:!1;this.dom2=document.addEventListener&&document.removeEventListener;this.ie4=(this.ie=document.all&&!window.opera)&&!this.dom;this.ie5=this.dom&&0<this.appver.indexOf("MSIE 5");this.ie8=this.dom&&0<this.appver.indexOf("MSIE 8");this.ie9=this.dom&&0<this.appver.indexOf("MSIE 9");this.ie7=this.dom&&
+0<this.appver.indexOf("MSIE 7");this.ie6=this.dom&&!this.ie8&&!this.ie7&&0<this.appver.indexOf("MSIE 6");this.ns=5>this.ver&&"Netscape"==this.name||5<=this.ver&&0<=this.vendor.indexOf("Netscape");this.chrome=0<this.agent_lc.indexOf("chrome");this.safari=!this.chrome&&(0<this.agent_lc.indexOf("safari")||0<this.agent_lc.indexOf("applewebkit"));this.konq=0<this.agent_lc.indexOf("konqueror");this.mz=this.dom&&!this.ie&&!this.ns&&!this.chrome&&!this.safari&&!this.konq&&0<=this.agent.indexOf("Mozilla");
+this.iphone=this.safari&&0<this.agent_lc.indexOf("iphone");this.ipad=this.safari&&0<this.agent_lc.indexOf("ipad");(this.opera=window.opera?!0:!1)&&window.RegExp?this.vendver=/opera(\s|\/)([0-9\.]+)/.test(this.agent_lc)?parseFloat(RegExp.$2):-1:this.chrome&&window.RegExp?this.vendver=/chrome\/([0-9\.]+)/.test(this.agent_lc)?parseFloat(RegExp.$1):0:!this.vendver&&this.safari?this.vendver=/(safari|applewebkit)\/([0-9]+)/.test(this.agent_lc)?parseInt(RegExp.$2):0:!this.vendver&&this.mz||0<this.agent.indexOf("Camino")?
+this.vendver=/rv:([0-9\.]+)/.test(this.agent)?parseFloat(RegExp.$1):0:this.ie&&window.RegExp?this.vendver=/msie\s+([0-9\.]+)/.test(this.agent_lc)?parseFloat(RegExp.$1):0:this.konq&&window.RegExp&&(this.vendver=/khtml\/([0-9\.]+)/.test(this.agent_lc)?parseFloat(RegExp.$1):0);this.safari&&/;\s+([a-z]{2})-[a-z]{2}\)/.test(this.agent_lc)&&(this.lang=RegExp.$1);this.dhtml=this.ie4&&this.win||this.ie5||this.ie6||this.ns4||this.mz;this.vml=this.win&&this.ie&&this.dom&&!this.opera;this.pngalpha=this.mz||
+this.opera&&6<=this.vendver||this.ie&&this.mac&&5<=this.vendver||this.ie&&this.win&&5.5<=this.vendver||this.safari;this.opacity=this.mz||this.ie&&5.5<=this.vendver&&!this.opera||this.safari&&100<=this.vendver;this.cookies=a.cookieEnabled;this.xmlhttp_test=function(){var a=new Function("try{var o=new ActiveXObject('Microsoft.XMLHTTP');return true;}catch(err){return false;}");return this.xmlhttp=window.XMLHttpRequest||window.ActiveXObject&&a()};this.set_html_class=function(){var a=" js";this.ie?a+=
+" ie ie"+parseInt(this.vendver):this.opera?a+=" opera":this.konq?a+=" konqueror":this.safari?a+=" chrome":this.chrome&&(a+=" chrome");if(this.iphone)a+=" iphone";else if(this.ipad)a+=" ipad";else if(this.safari||this.chrome)a+=" webkit";document.documentElement&&(document.documentElement.className+=a)}}
 var rcube_event={get_target:function(a){return(a=a||window.event)&&a.target?a.target:a.srcElement},get_keycode:function(a){return(a=a||window.event)&&a.keyCode?a.keyCode:a&&a.which?a.which:0},get_button:function(a){return(a=a||window.event)&&void 0!==a.button?a.button:a&&a.which?a.which:0},get_modifier:function(a){var b=0,a=a||window.event;bw.mac&&a?b+=(a.metaKey&&CONTROL_KEY)+(a.shiftKey&&SHIFT_KEY):a&&(b+=(a.ctrlKey&&CONTROL_KEY)+(a.shiftKey&&SHIFT_KEY));return b},get_mouse_pos:function(a){a||(a=
 window.event);var b=a.pageX?a.pageX:a.clientX,c=a.pageY?a.pageY:a.clientY;document.body&&document.all&&(b+=document.body.scrollLeft,c+=document.body.scrollTop);a._offset&&(b+=a._offset.left,c+=a._offset.top);return{x:b,y:c}},add_listener:function(a){if(a.object&&a.method){a.element||(a.element=document);a.object._rc_events||(a.object._rc_events=[]);var b=a.event+"*"+a.method;a.object._rc_events[b]||(a.object._rc_events[b]=function(b){return a.object[a.method](b)});a.element.addEventListener?a.element.addEventListener(a.event,
-a.object._rc_events[b],!1):a.element.attachEvent?(a.element.detachEvent("on"+a.event,a.object._rc_events[b]),a.element.attachEvent("on"+a.event,a.object._rc_events[b])):a.element["on"+a.event]=a.object._rc_events[b]}},remove_listener:function(a){a.element||(a.element=document);var b=a.event+"*"+a.method;a.object&&a.object._rc_events&&a.object._rc_events[b]&&(a.element.removeEventListener?a.element.removeEventListener(a.event,a.object._rc_events[b],!1):a.element.detachEvent?a.element.detachEvent("on"+
+a.object._rc_events[b],!1):a.element.attachEvent?(a.element.detachEvent("on"+a.event,a.object._rc_events[b]),a.element.attachEvent("on"+a.event,a.object._rc_events[b])):a.element["on"+a.event]=a.object._rc_events[b]}},remove_listener:function(a){a.element||(a.element=document);var b=a.event+"*"+a.method;a.object&&(a.object._rc_events&&a.object._rc_events[b])&&(a.element.removeEventListener?a.element.removeEventListener(a.event,a.object._rc_events[b],!1):a.element.detachEvent?a.element.detachEvent("on"+
 a.event,a.object._rc_events[b]):a.element["on"+a.event]=null)},cancel:function(a){a=a?a:window.event;a.preventDefault&&a.preventDefault();a.stopPropagation&&a.stopPropagation();a.cancelBubble=!0;return a.returnValue=!1},touchevent:function(a){return{pageX:a.pageX,pageY:a.pageY,offsetX:a.pageX-a.target.offsetLeft,offsetY:a.pageY-a.target.offsetTop,target:a.target,istouch:!0}}};function rcube_event_engine(){this._events={}}
 rcube_event_engine.prototype={addEventListener:function(a,b,c){this._events||(this._events={});this._events[a]||(this._events[a]=[]);this._events[a][this._events[a].length]={func:b,obj:c?c:window}},removeEventListener:function(a,b,c){void 0===c&&(c=window);for(var d,e=0;this._events&&this._events[a]&&e<this._events[a].length;e++)if((d=this._events[a][e])&&d.func==b&&d.obj==c)this._events[a][e]=null},triggerEvent:function(a,b){var c,d;void 0===b?b=this:"object"===typeof b&&(b.event=a);if(this._events&&
 this._events[a]&&!this._event_exec){this._event_exec=!0;for(var e=0;e<this._events[a].length;e++)if(d=this._events[a][e])if("function"===typeof d.func?c=d.func.call?d.func.call(d.obj,b):d.func(b):"function"===typeof d.obj[d.func]&&(c=d.obj[d.func](b)),void 0!==c&&!c)break;if(c&&c.event)try{delete c.event}catch(f){$(c).removeAttr("event")}}this._event_exec=!1;if(b.event)try{delete b.event}catch(h){$(b).removeAttr("event")}return c}};
 function rcube_layer(a,b){this.name=a;this.create=function(a){var b=a.x?a.x:0,e=a.y?a.y:0,f=a.width,h=a.height,i=a.zindex,g=a.vis,a=a.parent,j=document.createElement("DIV");j.id=this.name;j.style.position="absolute";j.style.visibility=g?2==g?"inherit":"visible":"hidden";j.style.left=b+"px";j.style.top=e+"px";f&&(j.style.width=f.toString().match(/\%$/)?f:f+"px");h&&(j.style.height=h.toString().match(/\%$/)?h:h+"px");i&&(j.style.zIndex=i);a?a.appendChild(j):document.body.appendChild(j);this.elm=j};
 null!=b?(this.create(b),this.name=this.elm.id):this.elm=document.getElementById(a);if(!this.elm)return!1;this.css=this.elm.style;this.event=this.elm;this.width=this.elm.offsetWidth;this.height=this.elm.offsetHeight;this.x=parseInt(this.elm.offsetLeft);this.y=parseInt(this.elm.offsetTop);this.visible="visible"==this.css.visibility||"show"==this.css.visibility||"inherit"==this.css.visibility?!0:!1;this.move=function(a,b){this.x=a;this.y=b;this.css.left=Math.round(this.x)+"px";this.css.top=Math.round(this.y)+
-"px"};this.resize=function(a,b){this.css.width=a+"px";this.css.height=b+"px";this.width=a;this.height=b};this.show=function(a){if(a==1){this.css.visibility="visible";this.visible=true}else if(a==2){this.css.visibility="inherit";this.visible=true}else{this.css.visibility="hidden";this.visible=false}};this.write=function(a){this.elm.innerHTML=a}}
-function rcube_check_email(a,b){return a&&window.RegExp?(b?RegExp("(^|<|[,;s\n])((([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x22([^\\x0d\\x22\\x5c\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x22)(\\x2e([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x22([^\\x0d\\x22\\x5c\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x22))*\\x40([^@\\x2e]+\\x2e)+([^\\x00-\\x40\\x5b-\\x60\\x7b-\\x7f]{2,}|xn--[a-z0-9]{2,}))|(mailtest\\x40(\\u0645\\u062b\\u0627\\u0644\\x2e\\u0625\\u062e\\u062a\\u0628\\u0627\\u0631|\\u4f8b\\u5b50\\x2e\\u6d4b\\u8bd5|\\u4f8b\\u5b50\\x2e\\u6e2c\\u8a66|\\u03c0\\u03b1\\u03c1\\u03ac\\u03b4\\u03b5\\u03b9\\u03b3\\u03bc\\u03b1\\x2e\\u03b4\\u03bf\\u03ba\\u03b9\\u03bc\\u03ae|\\u0909\\u0926\\u093e\\u0939\\u0930\\u0923\\x2e\\u092a\\u0930\\u0940\\u0915\\u094d\\u0937\\u093e|\\u4f8b\\u3048\\x2e\\u30c6\\u30b9\\u30c8|\\uc2e4\\ub840\\x2e\\ud14c\\uc2a4\\ud2b8|\\u0645\\u062b\\u0627\\u0644\\x2e\\u0622\\u0632\\u0645\\u0627\\u06cc\\u0634\u06cc|\\u043f\\u0440\\u0438\\u043c\\u0435\\u0440\\x2e\\u0438\\u0441\\u043f\\u044b\\u0442\\u0430\\u043d\\u0438\\u0435|\\u0b89\\u0ba4\\u0bbe\\u0bb0\\u0ba3\\u0bae\\u0bcd\\x2e\\u0baa\\u0bb0\\u0bbf\\u0b9f\\u0bcd\\u0b9a\\u0bc8|\\u05d1\\u05f2\\u05b7\\u05e9\\u05e4\\u05bc\\u05d9\\u05dc\\x2e\\u05d8\\u05e2\\u05e1\\u05d8)))($|>|[,;s\n])","i"):
-RegExp("^((([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x22([^\\x0d\\x22\\x5c\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x22)(\\x2e([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x22([^\\x0d\\x22\\x5c\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x22))*\\x40([^@\\x2e]+\\x2e)+([^\\x00-\\x40\\x5b-\\x60\\x7b-\\x7f]{2,}|xn--[a-z0-9]{2,}))|(mailtest\\x40(\\u0645\\u062b\\u0627\\u0644\\x2e\\u0625\\u062e\\u062a\\u0628\\u0627\\u0631|\\u4f8b\\u5b50\\x2e\\u6d4b\\u8bd5|\\u4f8b\\u5b50\\x2e\\u6e2c\\u8a66|\\u03c0\\u03b1\\u03c1\\u03ac\\u03b4\\u03b5\\u03b9\\u03b3\\u03bc\\u03b1\\x2e\\u03b4\\u03bf\\u03ba\\u03b9\\u03bc\\u03ae|\\u0909\\u0926\\u093e\\u0939\\u0930\\u0923\\x2e\\u092a\\u0930\\u0940\\u0915\\u094d\\u0937\\u093e|\\u4f8b\\u3048\\x2e\\u30c6\\u30b9\\u30c8|\\uc2e4\\ub840\\x2e\\ud14c\\uc2a4\\ud2b8|\\u0645\\u062b\\u0627\\u0644\\x2e\\u0622\\u0632\\u0645\\u0627\\u06cc\\u0634\u06cc|\\u043f\\u0440\\u0438\\u043c\\u0435\\u0440\\x2e\\u0438\\u0441\\u043f\\u044b\\u0442\\u0430\\u043d\\u0438\\u0435|\\u0b89\\u0ba4\\u0bbe\\u0bb0\\u0ba3\\u0bae\\u0bcd\\x2e\\u0baa\\u0bb0\\u0bbf\\u0b9f\\u0bcd\\u0b9a\\u0bc8|\\u05d1\\u05f2\\u05b7\\u05e9\\u05e4\\u05bc\\u05d9\\u05dc\\x2e\\u05d8\\u05e2\\u05e1\\u05d8)))$",
+"px"};this.resize=function(a,b){this.css.width=a+"px";this.css.height=b+"px";this.width=a;this.height=b};this.show=function(a){1==a?(this.css.visibility="visible",this.visible=!0):2==a?(this.css.visibility="inherit",this.visible=!0):(this.css.visibility="hidden",this.visible=!1)};this.write=function(a){this.elm.innerHTML=a}}
+function rcube_check_email(a,b){return a&&window.RegExp?(b?RegExp("(^|<|[,;s\n])((([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x22([^\\x0d\\x22\\x5c\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x22)(\\x2e([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x22([^\\x0d\\x22\\x5c\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x22))*\\x40(((\\[(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}\\])|(\\[IPv6:[0-9a-f:.]+\\]))|(([^@\\x2e]+\\x2e)+([^\\x00-\\x40\\x5b-\\x60\\x7b-\\x7f]{2,}|xn--[a-z0-9]{2,}))))|(mailtest\\x40(\\u0645\\u062b\\u0627\\u0644\\x2e\\u0625\\u062e\\u062a\\u0628\\u0627\\u0631|\\u4f8b\\u5b50\\x2e\\u6d4b\\u8bd5|\\u4f8b\\u5b50\\x2e\\u6e2c\\u8a66|\\u03c0\\u03b1\\u03c1\\u03ac\\u03b4\\u03b5\\u03b9\\u03b3\\u03bc\\u03b1\\x2e\\u03b4\\u03bf\\u03ba\\u03b9\\u03bc\\u03ae|\\u0909\\u0926\\u093e\\u0939\\u0930\\u0923\\x2e\\u092a\\u0930\\u0940\\u0915\\u094d\\u0937\\u093e|\\u4f8b\\u3048\\x2e\\u30c6\\u30b9\\u30c8|\\uc2e4\\ub840\\x2e\\ud14c\\uc2a4\\ud2b8|\\u0645\\u062b\\u0627\\u0644\\x2e\\u0622\\u0632\\u0645\\u0627\\u06cc\\u0634\u06cc|\\u043f\\u0440\\u0438\\u043c\\u0435\\u0440\\x2e\\u0438\\u0441\\u043f\\u044b\\u0442\\u0430\\u043d\\u0438\\u0435|\\u0b89\\u0ba4\\u0bbe\\u0bb0\\u0ba3\\u0bae\\u0bcd\\x2e\\u0baa\\u0bb0\\u0bbf\\u0b9f\\u0bcd\\u0b9a\\u0bc8|\\u05d1\\u05f2\\u05b7\\u05e9\\u05e4\\u05bc\\u05d9\\u05dc\\x2e\\u05d8\\u05e2\\u05e1\\u05d8)))($|>|[,;s\n])","i"):
+RegExp("^((([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x22([^\\x0d\\x22\\x5c\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x22)(\\x2e([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x22([^\\x0d\\x22\\x5c\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x22))*\\x40(((\\[(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}\\])|(\\[IPv6:[0-9a-f:.]+\\]))|(([^@\\x2e]+\\x2e)+([^\\x00-\\x40\\x5b-\\x60\\x7b-\\x7f]{2,}|xn--[a-z0-9]{2,}))))|(mailtest\\x40(\\u0645\\u062b\\u0627\\u0644\\x2e\\u0625\\u062e\\u062a\\u0628\\u0627\\u0631|\\u4f8b\\u5b50\\x2e\\u6d4b\\u8bd5|\\u4f8b\\u5b50\\x2e\\u6e2c\\u8a66|\\u03c0\\u03b1\\u03c1\\u03ac\\u03b4\\u03b5\\u03b9\\u03b3\\u03bc\\u03b1\\x2e\\u03b4\\u03bf\\u03ba\\u03b9\\u03bc\\u03ae|\\u0909\\u0926\\u093e\\u0939\\u0930\\u0923\\x2e\\u092a\\u0930\\u0940\\u0915\\u094d\\u0937\\u093e|\\u4f8b\\u3048\\x2e\\u30c6\\u30b9\\u30c8|\\uc2e4\\ub840\\x2e\\ud14c\\uc2a4\\ud2b8|\\u0645\\u062b\\u0627\\u0644\\x2e\\u0622\\u0632\\u0645\\u0627\\u06cc\\u0634\u06cc|\\u043f\\u0440\\u0438\\u043c\\u0435\\u0440\\x2e\\u0438\\u0441\\u043f\\u044b\\u0442\\u0430\\u043d\\u0438\\u0435|\\u0b89\\u0ba4\\u0bbe\\u0bb0\\u0ba3\\u0bae\\u0bcd\\x2e\\u0baa\\u0bb0\\u0bbf\\u0b9f\\u0bcd\\u0b9a\\u0bc8|\\u05d1\\u05f2\\u05b7\\u05e9\\u05e4\\u05bc\\u05d9\\u05dc\\x2e\\u05d8\\u05e2\\u05e1\\u05d8)))$",
 "i")).test(a)?!0:!1:!1}function rcube_clone_object(a){var b={},c;for(c in a)b[c]=a[c]&&"object"===typeof a[c]?clone_object(a[c]):a[c];return b}function urlencode(a){return window.encodeURIComponent?encodeURIComponent(a).replace("*","%2A"):escape(a).replace("+","%2B").replace("*","%2A").replace("/","%2F").replace("@","%40")}
 function rcube_find_object(a,b){var c,d;b||(b=document);if(b.getElementsByName&&(c=b.getElementsByName(a)))d=c[0];!d&&b.getElementById&&(d=b.getElementById(a));!d&&b.all&&(d=b.all[a]);!d&&b.images.length&&(d=b.images[a]);if(!d&&b.forms.length)for(c=0;c<b.forms.length;c++)b.forms[c].name==a?d=b.forms[c]:b.forms[c].elements[a]&&(d=b.forms[c].elements[a]);if(!d&&b.layers){b.layers[a]&&(d=b.layers[a]);for(c=0;!d&&c<b.layers.length;c++)d=rcube_find_object(a,b.layers[c].document)}return d}
 function rcube_mouse_is_over(a,b){var c=rcube_event.get_mouse_pos(a),d=$(b).offset();return c.x>=d.left&&c.x<d.left+b.offsetWidth&&c.y>=d.top&&c.y<d.top+b.offsetHeight}function setCookie(a,b,c,d,e,f){a=a+"="+escape(b)+(c?"; expires="+c.toGMTString():"")+(d?"; path="+d:"")+(e?"; domain="+e:"")+(f?"; secure":"");document.cookie=a}
 function getCookie(a){var b=document.cookie,a=a+"=",c=b.indexOf("; "+a);if(-1==c){if(c=b.indexOf(a),0!=c)return null}else c+=2;var d=b.indexOf(";",c);-1==d&&(d=b.length);return unescape(b.substring(c+a.length,d))}roundcube_browser.prototype.set_cookie=setCookie;roundcube_browser.prototype.get_cookie=getCookie;
-function rcube_console(){this.log=function(a){var b=rcube_find_object("dbgconsole");b&&(a="\n"==a.charAt(a.length-1)?a+"--------------------------------------\n":a+"\n--------------------------------------\n",bw.konq?(b.innerText+=a,b.value=b.innerText):b.value+=a)};this.reset=function(){var a=rcube_find_object("dbgconsole");a&&(a.innerText=a.value="")}}var bw=new roundcube_browser;bw.set_html_class();RegExp.escape=function(a){return(""+a).replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")};
+function rcube_console(){this.log=function(a){var b=rcube_find_object("dbgconsole");b&&(a="\n"==a.charAt(a.length-1)?a+"--------------------------------------\n":a+"\n--------------------------------------\n",bw.konq?(b.innerText+=a,b.value=b.innerText):b.value+=a)};this.reset=function(){var a=rcube_find_object("dbgconsole");a&&(a.innerText=a.value="")}}var bw=new roundcube_browser;bw.set_html_class();RegExp.escape=function(a){return String(a).replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")};
 Date.prototype.getStdTimezoneOffset=function(){for(var a=12,b=new Date(null,a,1),c=b.getTimezoneOffset();--a;)if(b.setUTCMonth(a),c!=b.getTimezoneOffset())return Math.max(c,b.getTimezoneOffset());return c};bw.ie&&(document._getElementById=document.getElementById,document.getElementById=function(a){var b=0,c=document._getElementById(a);if(c&&c.id!=a)for(;(c=document.all[b])&&c.id!=a;)b++;return c});
-var Base64=function(){return{encode:function(a){if(typeof window.btoa==="function")return btoa(a);var b,c,d,e,f,h,i=0,g="",j=a.length;do{b=a.charCodeAt(i++);c=a.charCodeAt(i++);d=a.charCodeAt(i++);e=b>>2;b=(b&3)<<4|c>>4;f=(c&15)<<2|d>>6;h=d&63;isNaN(c)?f=h=64:isNaN(d)&&(h=64);g=g+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(e)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(b)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(f)+
-"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(h)}while(i<j);return g},decode:function(a){if(typeof window.atob==="function")return atob(a);var b,c,d,e,f,h,i=0,g="",a=a.replace(/[^A-Za-z0-9\+\/\=]/g,"");h=a.length;do{b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(i++));c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(i++));e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(i++));
-f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(i++));b=b<<2|c>>4;c=(c&15)<<4|e>>2;d=(e&3)<<6|f;g=g+String.fromCharCode(b);e!=64&&(g=g+String.fromCharCode(c));f!=64&&(g=g+String.fromCharCode(d))}while(i<h);return g}}}();
+jQuery.fn.placeholder=function(a){return this.each(function(){var b=$(this);this.title=a;"placeholder"in this?b.attr("placeholder",a):(this._placeholder=a,b.blur(function(){""==$.trim(b.val())&&b.val(a);b.triggerHandler("change")}).focus(function(){$.trim(b.val())==a&&b.val("");b.triggerHandler("change")}).change(function(){var c=b.val()==a;b[c?"addClass":"removeClass"]("placeholder").attr("spellcheck",c)}),this!=document.activeElement&&b.blur())})};
+var Base64=function(){return{encode:function(a){if("function"===typeof window.btoa)return btoa(a);var b,c,d,e,f,h,i=0,g="",j=a.length;do b=a.charCodeAt(i++),c=a.charCodeAt(i++),d=a.charCodeAt(i++),e=b>>2,b=(b&3)<<4|c>>4,f=(c&15)<<2|d>>6,h=d&63,isNaN(c)?f=h=64:isNaN(d)&&(h=64),g=g+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(e)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(b)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(f)+
+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(h);while(i<j);return g},decode:function(a){if("function"===typeof window.atob)return atob(a);var b,c,d,e,f,h,i=0,g="",a=a.replace(/[^A-Za-z0-9\+\/\=]/g,"");h=a.length;do b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(i++)),c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(i++)),e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(i++)),
+f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(i++)),b=b<<2|c>>4,c=(c&15)<<4|e>>2,d=(e&3)<<6|f,g+=String.fromCharCode(b),64!=e&&(g+=String.fromCharCode(c)),64!=f&&(g+=String.fromCharCode(d));while(i<h);return g}}}();
index d2558ce88f0fa3e77ce4e4abaa130e4a217a3c19..a07cc8cabd20bb3e1b0a40b1dfc6b1aea71006c9 100644 (file)
@@ -3,14 +3,17 @@
  | Roundcube common js library                                           |
  |                                                                       |
  | This file is part of the Roundcube web development suite              |
- | Copyright (C) 2005-2007, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2005-2012, 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: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
  
- $Id: common.js 5481 2011-11-24 07:53:00Z alec $
+ $Id$
 */
 
 // Constants
@@ -52,14 +55,15 @@ function roundcube_browser()
   this.ie4 = (this.ie && !this.dom);
   this.ie5 = (this.dom && this.appver.indexOf('MSIE 5')>0);
   this.ie8 = (this.dom && this.appver.indexOf('MSIE 8')>0);
+  this.ie9 = (this.dom && this.appver.indexOf('MSIE 9')>0);
   this.ie7 = (this.dom && this.appver.indexOf('MSIE 7')>0);
   this.ie6 = (this.dom && !this.ie8 && !this.ie7 && this.appver.indexOf('MSIE 6')>0);
 
   this.ns = ((this.ver < 5 && this.name == 'Netscape') || (this.ver >= 5 && this.vendor.indexOf('Netscape') >= 0));
   this.chrome = (this.agent_lc.indexOf('chrome') > 0);
   this.safari = (!this.chrome && (this.agent_lc.indexOf('safari') > 0 || this.agent_lc.indexOf('applewebkit') > 0));
-  this.mz = (this.dom && !this.ie && !this.ns && !this.chrome && !this.safari && this.agent.indexOf('Mozilla') >= 0);
-  this.konq   = (this.agent_lc.indexOf('konqueror') > 0);
+  this.konq = (this.agent_lc.indexOf('konqueror') > 0);
+  this.mz = (this.dom && !this.ie && !this.ns && !this.chrome && !this.safari && !this.konq && this.agent.indexOf('Mozilla') >= 0);
   this.iphone = (this.safari && this.agent_lc.indexOf('iphone') > 0);
   this.ipad = (this.safari && this.agent_lc.indexOf('ipad') > 0);
   this.opera = window.opera ? true : false;
@@ -102,30 +106,23 @@ function roundcube_browser()
   {
     var classname = ' js';
 
-    if (this.ie) {
-      classname += ' ie';
-      if (this.ie5)
-        classname += ' ie5';
-      else if (this.ie6)
-        classname += ' ie6';
-      else if (this.ie7)
-        classname += ' ie7';
-      else if (this.ie8)
-        classname += ' ie8';
-    }
+    if (this.ie)
+      classname += ' ie ie'+parseInt(this.vendver);
     else if (this.opera)
       classname += ' opera';
     else if (this.konq)
       classname += ' konqueror';
     else if (this.safari)
-      classname += ' safari';
-
-    if (this.chrome)
       classname += ' chrome';
-    else if (this.iphone)
+    else if (this.chrome)
+      classname += ' chrome';
+
+    if (this.iphone)
       classname += ' iphone';
     else if (this.ipad)
       classname += ' ipad';
+    else if (this.safari || this.chrome)
+      classname += ' webkit';
 
     if (document.documentElement)
       document.documentElement.className += classname;
@@ -493,12 +490,15 @@ function rcube_check_email(input, inline)
       atom = '[^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+',
       quoted_pair = '\\x5c[\\x00-\\x7f]',
       quoted_string = '\\x22('+qtext+'|'+quoted_pair+')*\\x22',
+      ipv4 = '\\[(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}\\]',
+      ipv6 = '\\[IPv6:[0-9a-f:.]+\\]',
+      ip_addr = '(' + ipv4 + ')|(' + ipv6 + ')',
       // Use simplified domain matching, because we need to allow Unicode characters here
       // So, e-mail address should be validated also on server side after idn_to_ascii() use
       //domain_literal = '\\x5b('+dtext+'|'+quoted_pair+')*\\x5d',
       //sub_domain = '('+atom+'|'+domain_literal+')',
       // allow punycode/unicode top-level domain
-      domain = '([^@\\x2e]+\\x2e)+([^\\x00-\\x40\\x5b-\\x60\\x7b-\\x7f]{2,}|xn--[a-z0-9]{2,})',
+      domain = '(('+ip_addr+')|(([^@\\x2e]+\\x2e)+([^\\x00-\\x40\\x5b-\\x60\\x7b-\\x7f]{2,}|xn--[a-z0-9]{2,})))',
       // ICANN e-mail test (http://idn.icann.org/E-mail_test)
       icann_domains = [
         '\\u0645\\u062b\\u0627\\u0644\\x2e\\u0625\\u062e\\u062a\\u0628\\u0627\\u0631',
@@ -526,7 +526,6 @@ function rcube_check_email(input, inline)
   return false;
 };
 
-
 // recursively copy an object
 function rcube_clone_object(obj)
 {
@@ -697,11 +696,9 @@ Date.prototype.getStdTimezoneOffset = function()
 }
 
 // Make getElementById() case-sensitive on IE
-if (bw.ie)
-{
+if (bw.ie) {
   document._getElementById = document.getElementById;
-  document.getElementById = function(id)
-  {
+  document.getElementById = function(id) {
     var i = 0, obj = document._getElementById(id);
 
     if (obj && obj.id != id)
@@ -712,6 +709,39 @@ if (bw.ie)
   }
 }
 
+// jQuery plugin to emulate HTML5 placeholder attributes on input elements
+jQuery.fn.placeholder = function(text) {
+  return this.each(function() {
+    var elem = $(this);
+    this.title = text;
+
+    if ('placeholder' in this) {
+      elem.attr('placeholder', text);  // Try HTML5 placeholder attribute first
+    }
+    else {  // Fallback to Javascript emulation of placeholder
+      this._placeholder = text;
+      elem.blur(function(e) {
+        if ($.trim(elem.val()) == "")
+          elem.val(text);
+        elem.triggerHandler('change');
+      })
+      .focus(function(e) {
+        if ($.trim(elem.val()) == text)
+          elem.val("");
+        elem.triggerHandler('change');
+      })
+      .change(function(e) {
+        var active = elem.val() == text;
+        elem[(active ? 'addClass' : 'removeClass')]('placeholder').attr('spellcheck', active);
+      });
+
+      if (this != document.activeElement) // Do not blur currently focused element
+        elem.blur();
+    }
+  });
+};
+
+
 // This code was written by Tyler Akins and has been placed in the
 // public domain.  It would be nice if you left this header intact.
 // Base64 code from Tyler Akins -- http://rumkin.com
index 63186fb02e5de3c6e90cfefe82b2a8c9d3537f35..ff7f209bd477f947a5b8d40d80ecad0e8f065a37 100644 (file)
@@ -3,8 +3,11 @@
  | Roundcube editor js library                                           |
  |                                                                       |
  | This file is part of the Roundcube web development suite              |
- | Copyright (C) 2006, The Roundcube Dev Team                            |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2006-2012, 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: Eric Stadtherr <estadtherr@gmail.com>                         |
@@ -26,12 +29,13 @@ function rcmail_editor_init(config)
       theme_advanced_toolbar_location: 'top',
       theme_advanced_toolbar_align: 'left',
       theme_advanced_buttons3: '',
+      theme_advanced_statusbar_location: 'none',
       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_url: 'program/js/editor_images.js',
+      external_image_list: window.rcmail_editor_images,
       rc_client: rcmail
     };
 
@@ -41,11 +45,11 @@ function rcmail_editor_init(config)
       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'
     });
-  else // mail compose
+  else // mail compose
     $.extend(conf, {
-      plugins: 'paste,emotions,media,nonbreaking,table,searchreplace,visualchars,directionality,tabfocus' + (config.spellcheck ? ',spellchecker' : ''),
+      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' + (config.spellcheck ? ',spellchecker' : '') + ',undo,redo',
+      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',
       spellchecker_enable_learn_rpc: config.spelldict,
@@ -53,6 +57,15 @@ function rcmail_editor_init(config)
       oninit: 'rcmail_editor_callback'
     });
 
+    // add handler for spellcheck button state update
+    conf.setup = function(ed) {
+      ed.onSetProgressState.add(function(ed, active) {
+        if (!active)
+          rcmail.spellcheck_state();
+      });
+    }
+  }
+
   // support external configuration settings e.g. from skin
   if (window.rcmail_editor_settings)
     $.extend(conf, window.rcmail_editor_settings);
@@ -66,12 +79,18 @@ function rcmail_editor_callback()
   var elem = rcube_find_object('_from'),
     fe = rcmail.env.compose_focus_elem;
 
+  if (rcmail.env.default_font)
+    $(tinyMCE.get(rcmail.env.composebody).getBody()).css('font-family', rcmail.env.default_font);
+
   if (elem && elem.type == 'select-one') {
     rcmail.change_identity(elem);
     // Focus previously focused element
     if (fe && fe.id != rcmail.env.composebody) {
-      window.focus(); // for WebKit (#1486674)
-      fe.focus();
+      // use setTimeout() for IE9 (#1488541)
+      window.setTimeout(function() {
+        window.focus(); // for WebKit (#1486674)
+        fe.focus();
+      }, 10);
     }
   }
 
@@ -92,7 +111,7 @@ function rcmail_editor_tabindex(focus)
       if (textarea && node)
         node.tabIndex = textarea.tabIndex;
       if (focus)
-        editor.getWin().focus();
+        editor.getBody().focus();
     }
   }
 }
@@ -129,3 +148,18 @@ function rcmail_toggle_editor(select, textAreaId, flagElement)
       select.checked = true;
   }
 }
+
+// editor callbeck for images listing
+function rcmail_editor_images()
+{
+  var i, files = rcmail.env.attachments, list = [];
+
+  for (i in files) {
+    att = files[i];
+    if (att.complete && att.mimetype.indexOf('image/') == 0) {
+      list.push([att.name, rcmail.env.comm_path+'&_action=display-attachment&_file='+i+'&_id='+rcmail.env.compose_id]);
+    }
+  }
+
+  return list;
+};
diff --git a/program/js/editor_images.js b/program/js/editor_images.js
deleted file mode 100644 (file)
index 28e6bec..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-
-var rc_client = tinyMCEPopup.getParam("rc_client");
-if (rc_client.env.attachments)
-{
-   var tinyMCEImageList = new Array();
-   for (var id in rc_client.env.attachments)
-   {
-      var att = rc_client.env.attachments[id];
-      if (att.complete && att.mimetype.indexOf('image/') == 0)
-        tinyMCEImageList.push([att.name, rc_client.env.comm_path+'&_action=display-attachment&_file='+id+'&_id='+rc_client.env.compose_id]);
-   }
-};
index 113261a7e6f802f3e45efc433be46b613fefac47..a3b38fa483399ecbdf9a98dc9c7f784a1ca4cb92 100644 (file)
@@ -1,39 +1,39 @@
 var GOOGIE_CUR_LANG,GOOGIE_DEFAULT_LANG="en";
-function GoogieSpell(s,t,u){var l=this,r=getCookie("language");GOOGIE_CUR_LANG=null!=r?r:GOOGIE_DEFAULT_LANG;this.array_keys=function(a){var b=[],c;for(c in a)b.push([c]);return b};this.img_dir=s;this.server_url=t;this.lang_to_word=this.org_lang_to_word={da:"Dansk",de:"Deutsch",en:"English",es:"Espa&#241;ol",fr:"Fran&#231;ais",it:"Italiano",nl:"Nederlands",pl:"Polski",pt:"Portugu&#234;s",fi:"Suomi",sv:"Svenska"};this.langlist_codes=this.array_keys(this.lang_to_word);this.show_change_lang_pic=!0;this.change_lang_pic_placement=
-"right";this.report_state_change=!0;this.el_scroll_top=this.ta_scroll_top=0;this.lang_chck_spell="Check spelling";this.lang_revert="Revert to";this.lang_close="Close";this.lang_rsm_edt="Resume editing";this.lang_no_error_found="No spelling errors found";this.lang_no_suggestions="No suggestions";this.lang_learn_word="Add to dictionary";this.show_spell_img=!1;this.decoration=!0;this.use_close_btn=!1;this.report_ta_not_found=this.edit_layer_dbl_click=!0;this.custom_no_spelling_error=this.custom_ajax_error=
-null;this.custom_menu_builder=[];this.custom_item_evaulator=null;this.extra_menu_items=[];this.custom_spellcheck_starter=null;this.main_controller=!0;this.has_dictionary=u;this.all_errors_fixed_observer=this.show_menu_observer=this.spelling_state_observer=this.lang_state_observer=null;this.use_focus=!1;this.focus_link_b=this.focus_link_t=null;this.cnt_errors_fixed=this.cnt_errors=0;$(document).bind("click",function(a){a=$(a.target);"1"!=a.attr("googie_action_btn")&&l.isLangWindowShown()&&l.hideLangWindow();
-"1"!=a.attr("googie_action_btn")&&l.isErrorWindowShown()&&l.hideErrorWindow()});this.decorateTextarea=function(a){if(this.text_area="string"===typeof a?document.getElementById(a):a){if(!this.spell_container&&this.decoration){var a=document.createElement("table"),b=document.createElement("tbody"),c=document.createElement("tr"),d=document.createElement("td"),e=this.isDefined(this.force_width)?this.force_width:this.text_area.offsetWidth,f=this.isDefined(this.force_height)?this.force_height:16;c.appendChild(d);
-b.appendChild(c);$(a).append(b).insertBefore(this.text_area).width("100%").height(f);$(d).height(f).width(e).css("text-align","right");this.spell_container=d}this.checkSpellingState()}else this.report_ta_not_found&&alert("Text area not found")};this.setSpellContainer=function(a){this.spell_container="string"===typeof a?document.getElementById(a):a};this.setLanguages=function(a){this.lang_to_word=a;this.langlist_codes=this.array_keys(a)};this.setCurrentLanguage=function(a){GOOGIE_CUR_LANG=a;var b=
-new Date;b.setTime(b.getTime()+31536E6);setCookie("language",a,b)};this.setForceWidthHeight=function(a,b){this.force_width=a;this.force_height=b};this.setDecoration=function(a){this.decoration=a};this.dontUseCloseButtons=function(){this.use_close_btn=!1};this.appendNewMenuItem=function(a,b,c){this.extra_menu_items.push([a,b,c])};this.appendCustomMenuBuilder=function(a,b){this.custom_menu_builder.push([a,b])};this.setFocus=function(){try{return this.focus_link_b.focus(),this.focus_link_t.focus(),!0}catch(a){return!1}};
-this.setStateChanged=function(a){this.state=a;null!=this.spelling_state_observer&&this.report_state_change&&this.spelling_state_observer(a,this)};this.setReportStateChange=function(a){this.report_state_change=a};this.getUrl=function(){return this.server_url+GOOGIE_CUR_LANG};this.escapeSpecial=function(a){return a?a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"):""};this.createXMLReq=function(a){return'<?xml version="1.0" encoding="utf-8" ?><spellrequest textalreadyclipped="0" ignoredups="0" ignoredigits="1" ignoreallcaps="1"><text>'+
+function GoogieSpell(t,u,v){var l=this,s=getCookie("language");GOOGIE_CUR_LANG=null!=s?s:GOOGIE_DEFAULT_LANG;this.array_keys=function(a){var b=[],c;for(c in a)b.push([c]);return b};this.img_dir=t;this.server_url=u;this.lang_to_word=this.org_lang_to_word={da:"Dansk",de:"Deutsch",en:"English",es:"Espa\u00f1ol",fr:"Fran\u00e7ais",it:"Italiano",nl:"Nederlands",pl:"Polski",pt:"Portugu\u00eas",ru:"\u0420\u0443\u0441\u0441\u043a\u0438\u0439",fi:"Suomi",sv:"Svenska"};this.langlist_codes=this.array_keys(this.lang_to_word);
+this.show_change_lang_pic=!0;this.change_lang_pic_placement="right";this.report_state_change=!0;this.el_scroll_top=this.ta_scroll_top=0;this.lang_chck_spell="Check spelling";this.lang_revert="Revert to";this.lang_close="Close";this.lang_rsm_edt="Resume editing";this.lang_no_error_found="No spelling errors found";this.lang_no_suggestions="No suggestions";this.lang_learn_word="Add to dictionary";this.show_spell_img=!1;this.decoration=!0;this.use_close_btn=!1;this.report_ta_not_found=this.edit_layer_dbl_click=
+!0;this.custom_no_spelling_error=this.custom_ajax_error=null;this.custom_menu_builder=[];this.custom_item_evaulator=null;this.extra_menu_items=[];this.custom_spellcheck_starter=null;this.main_controller=!0;this.has_dictionary=v;this.all_errors_fixed_observer=this.show_menu_observer=this.spelling_state_observer=this.lang_state_observer=null;this.use_focus=!1;this.focus_link_b=this.focus_link_t=null;this.cnt_errors_fixed=this.cnt_errors=0;$(document).bind("click",function(a){a=$(a.target);"1"!=a.attr("googie_action_btn")&&
+l.isLangWindowShown()&&l.hideLangWindow();"1"!=a.attr("googie_action_btn")&&l.isErrorWindowShown()&&l.hideErrorWindow()});this.decorateTextarea=function(a){if(this.text_area="string"===typeof a?document.getElementById(a):a){if(!this.spell_container&&this.decoration){var a=document.createElement("table"),b=document.createElement("tbody"),c=document.createElement("tr"),d=document.createElement("td"),e=this.isDefined(this.force_width)?this.force_width:this.text_area.offsetWidth,g=this.isDefined(this.force_height)?
+this.force_height:16;c.appendChild(d);b.appendChild(c);$(a).append(b).insertBefore(this.text_area).width("100%").height(g);$(d).height(g).width(e).css("text-align","right");this.spell_container=d}this.checkSpellingState()}else this.report_ta_not_found&&alert("Text area not found")};this.setSpellContainer=function(a){this.spell_container="string"===typeof a?document.getElementById(a):a};this.setLanguages=function(a){this.lang_to_word=a;this.langlist_codes=this.array_keys(a)};this.setCurrentLanguage=
+function(a){GOOGIE_CUR_LANG=a;var b=new Date;b.setTime(b.getTime()+31536E6);setCookie("language",a,b)};this.setForceWidthHeight=function(a,b){this.force_width=a;this.force_height=b};this.setDecoration=function(a){this.decoration=a};this.dontUseCloseButtons=function(){this.use_close_btn=!1};this.appendNewMenuItem=function(a,b,c){this.extra_menu_items.push([a,b,c])};this.appendCustomMenuBuilder=function(a,b){this.custom_menu_builder.push([a,b])};this.setFocus=function(){try{return this.focus_link_b.focus(),
+this.focus_link_t.focus(),!0}catch(a){return!1}};this.setStateChanged=function(a){this.state=a;null!=this.spelling_state_observer&&this.report_state_change&&this.spelling_state_observer(a,this)};this.setReportStateChange=function(a){this.report_state_change=a};this.getUrl=function(){return this.server_url+GOOGIE_CUR_LANG};this.escapeSpecial=function(a){return a?a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"):""};this.createXMLReq=function(a){return'<?xml version="1.0" encoding="utf-8" ?><spellrequest textalreadyclipped="0" ignoredups="0" ignoredigits="1" ignoreallcaps="1"><text>'+
 a+"</text></spellrequest>"};this.spellCheck=function(a){this.prepare(a);var a=this.escapeSpecial(this.orginal_text),b=this;$.ajax({type:"POST",url:this.getUrl(),data:this.createXMLReq(a),dataType:"text",error:function(){b.custom_ajax_error?b.custom_ajax_error(b):alert("An error was encountered on the server. Please try again later.");b.main_controller&&($(b.spell_span).remove(),b.removeIndicator());b.checkSpellingState()},success:function(a){b.processData(a);b.results.length||(b.custom_no_spelling_error?
 b.custom_no_spelling_error(b):b.flashNoSpellingErrorState());b.removeIndicator()}})};this.learnWord=function(a){var a=this.escapeSpecial(a.innerHTML),b=this,a='<?xml version="1.0" encoding="utf-8" ?><learnword><text>'+a+"</text></learnword>";$.ajax({type:"POST",url:this.getUrl(),data:a,dataType:"text",error:function(){b.custom_ajax_error?b.custom_ajax_error(b):alert("An error was encountered on the server. Please try again later.")},success:function(){}})};this.prepare=function(a,b){this.cnt_errors=
 this.cnt_errors_fixed=0;this.setStateChanged("checking_spell");!b&&this.main_controller&&this.appendIndicator(this.spell_span);this.error_links=[];this.ta_scroll_top=this.text_area.scrollTop;this.ignore=a;this.hideLangWindow();if(""==$(this.text_area).val()||a)this.custom_no_spelling_error?this.custom_no_spelling_error(this):this.flashNoSpellingErrorState(),this.removeIndicator();else{this.createEditLayer(this.text_area.offsetWidth,this.text_area.offsetHeight);this.createErrorWindow();$("body").append(this.error_window);
-try{netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead")}catch(c){}this.main_controller&&$(this.spell_span).unbind("click");this.orginal_text=$(this.text_area).val()}};this.parseResult=function(a){var b=/\w+="(\d+|true)"/g,c=/\t/g,a=a.match(/<c[^>]*>[^<]*<\/c>/g),d=[];if(null==a)return d;for(var e=0,f=a.length;e<f;e++){var j=[];this.errorFound();j.attrs=[];for(var g,h,l=a[e].match(b),k=0;k<l.length;k++)g=l[k].split(/=/),h=g[1].replace(/"/g,""),j.attrs[g[0]]="true"!=h?parseInt(h):
-h;j.suggestions=[];g=a[e].replace(/<[^>]*>/g,"").split(c);for(h=0;h<g.length;h++)""!=g[h]&&j.suggestions.push(g[h]);d.push(j)}return d};this.processData=function(a){this.results=this.parseResult(a);this.results.length&&(this.showErrorsInIframe(),this.resumeEditingState())};this.createErrorWindow=function(){this.error_window=document.createElement("div");$(this.error_window).addClass("googie_window popupmenu").attr("googie_action_btn","1")};this.isErrorWindowShown=function(){return $(this.error_window).is(":visible")};
+try{netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead")}catch(c){}this.main_controller&&$(this.spell_span).unbind("click");this.orginal_text=$(this.text_area).val()}};this.parseResult=function(a){var b=/\w+="(\d+|true)"/g,c=/\t/g,a=a.match(/<c[^>]*>[^<]*<\/c>/g),d=[];if(null==a)return d;for(var e=0,g=a.length;e<g;e++){var j=[];this.errorFound();j.attrs=[];for(var f,h,l=a[e].match(b),k=0;k<l.length;k++)f=l[k].split(/=/),h=f[1].replace(/"/g,""),j.attrs[f[0]]="true"!=h?parseInt(h):
+h;j.suggestions=[];f=a[e].replace(/<[^>]*>/g,"").split(c);for(h=0;h<f.length;h++)""!=f[h]&&j.suggestions.push(f[h]);d.push(j)}return d};this.processData=function(a){this.results=this.parseResult(a);this.results.length&&(this.showErrorsInIframe(),this.resumeEditingState())};this.createErrorWindow=function(){this.error_window=document.createElement("div");$(this.error_window).addClass("googie_window popupmenu").attr("googie_action_btn","1")};this.isErrorWindowShown=function(){return $(this.error_window).is(":visible")};
 this.hideErrorWindow=function(){$(this.error_window).hide();$(this.error_window_iframe).hide()};this.updateOrginalText=function(a,b,c,d){var e=this.orginal_text.substring(0,a),a=this.orginal_text.substring(a+b.length),b=c.length-b.length;this.orginal_text=e+c+a;$(this.text_area).val(this.orginal_text);c=0;for(e=this.results.length;c<e;c++)c!=d&&c>d&&(this.results[c].attrs.o+=b)};this.saveOldValue=function(a,b){a.is_changed=!0;a.old_value=b};this.createListSeparator=function(){var a=document.createElement("td"),
-b=document.createElement("tr");$(a).html(" ").attr("googie_action_btn","1").css({cursor:"default","font-size":"3px","border-top":"1px solid #ccc","padding-top":"3px"});b.appendChild(a);return b};this.correctError=function(a,b,c,d){var e=b.innerHTML,c=3==c.nodeType?c.nodeValue:c.innerHTML,f=this.results[a].attrs.o;d&&(d=b.previousSibling.innerHTML,b.previousSibling.innerHTML=d.slice(0,d.length-1),e=" "+e,f--);this.hideErrorWindow();this.updateOrginalText(f,e,c,a);$(b).html(c).css("color","green").attr("is_corrected",
-!0);this.results[a].attrs.l=c.length;this.isDefined(b.old_value)||this.saveOldValue(b,e);this.errorFixed()};this.ignoreError=function(a){$(a).removeAttr("class").css("color","").unbind();this.hideErrorWindow()};this.showErrorWindow=function(a,b){this.show_menu_observer&&this.show_menu_observer(this);var c=this,d=$(a).offset(),e=document.createElement("table"),f=document.createElement("tbody");$(this.error_window).html("");$(e).addClass("googie_list").attr("googie_action_btn","1");for(var j=!1,g=0;g<
-this.custom_menu_builder.length;g++){var h=this.custom_menu_builder[g];if(h[0](this.results[b])){j=h[1](this,f,a);break}}if(!j){var j=this.results[b].suggestions,l=this.results[b].attrs.o,g=this.results[b].attrs.l,k,m;this.has_dictionary&&!$(a).attr("is_corrected")&&(h=document.createElement("tr"),k=document.createElement("td"),m=document.createElement("span"),$(m).text(this.lang_learn_word),$(k).attr("googie_action_btn","1").css("cursor","default").mouseover(c.item_onmouseover).mouseout(c.item_onmouseout).click(function(){c.learnWord(a,
-b);c.ignoreError(a,b)}),k.appendChild(m),h.appendChild(k),f.appendChild(h));for(var o=0,g=j.length;o<g;o++)h=document.createElement("tr"),k=document.createElement("td"),m=document.createElement("span"),$(m).html(j[o]),$(k).mouseover(this.item_onmouseover).mouseout(this.item_onmouseout).click(function(d){c.correctError(b,a,d.target.firstChild)}),k.appendChild(m),h.appendChild(k),f.appendChild(h);if(a.is_changed&&a.innerHTML!=a.old_value){var p=a.old_value,j=document.createElement("tr"),g=document.createElement("td"),
-h=document.createElement("span");$(h).addClass("googie_list_revert").html(this.lang_revert+" "+p);$(g).mouseover(this.item_onmouseover).mouseout(this.item_onmouseout).click(function(){c.updateOrginalText(l,a.innerHTML,p,b);$(a).removeAttr("is_corrected").css("color","#b91414").html(p);c.hideErrorWindow()});g.appendChild(h);j.appendChild(g);f.appendChild(j)}var j=document.createElement("tr"),g=document.createElement("td"),n=document.createElement("input"),h=document.createElement("img");k=document.createElement("form");
-m=function(){if(n.value!=""){c.isDefined(a.old_value)||c.saveOldValue(a,a.innerHTML);c.updateOrginalText(l,a.innerHTML,n.value,b);$(a).attr("is_corrected",true).css("color","green").html(n.value);c.hideErrorWindow()}return false};$(n).width(120).css({margin:0,padding:0});$(n).val(a.innerHTML).attr("googie_action_btn","1");$(g).css("cursor","default").attr("googie_action_btn","1");$(h).attr("src",this.img_dir+"ok.gif").width(32).height(16).css({cursor:"pointer","margin-left":"2px","margin-right":"2px"}).click(m);
-$(k).attr("googie_action_btn","1").css({margin:0,padding:0,cursor:"default","white-space":"nowrap"}).submit(m);k.appendChild(n);k.appendChild(h);g.appendChild(k);j.appendChild(g);f.appendChild(j);0<this.extra_menu_items.length&&f.appendChild(this.createListSeparator());var q=function(b){if(b<c.extra_menu_items.length){var d=c.extra_menu_items[b];if(!d[2]||d[2](a,c)){var e=document.createElement("tr"),g=document.createElement("td");$(g).html(d[0]).mouseover(c.item_onmouseover).mouseout(c.item_onmouseout).click(function(){return d[1](a,
-c)});e.appendChild(g);f.appendChild(e)}q(b+1)}};q(0);q=null;this.use_close_btn&&f.appendChild(this.createCloseButton(this.hideErrorWindow))}e.appendChild(f);this.error_window.appendChild(e);g=$(this.error_window).height();e=$(this.error_window).width();h=$(document).height();j=$(document).width();g=d.top+g+20<h?d.top+20:d.top-g;d=d.left+e<j?d.left:d.left-e;$(this.error_window).css({top:g+"px",left:d+"px"}).show();$.browser.msie&&(this.error_window_iframe||(d=$("<iframe>").css({position:"absolute",
+b=document.createElement("tr");$(a).html(" ").attr("googie_action_btn","1").css({cursor:"default","font-size":"3px","border-top":"1px solid #ccc","padding-top":"3px"});b.appendChild(a);return b};this.correctError=function(a,b,c,d){var e=b.innerHTML,c=3==c.nodeType?c.nodeValue:c.innerHTML,g=this.results[a].attrs.o;d&&(d=b.previousSibling.innerHTML,b.previousSibling.innerHTML=d.slice(0,d.length-1),e=" "+e,g--);this.hideErrorWindow();this.updateOrginalText(g,e,c,a);$(b).html(c).css("color","green").attr("is_corrected",
+!0);this.results[a].attrs.l=c.length;this.isDefined(b.old_value)||this.saveOldValue(b,e);this.errorFixed()};this.ignoreError=function(a){$(a).removeAttr("class").css("color","").unbind();this.hideErrorWindow()};this.showErrorWindow=function(a,b){this.show_menu_observer&&this.show_menu_observer(this);var c=this,d=$(a).offset(),e=document.createElement("table"),g=document.createElement("tbody");$(this.error_window).html("");$(e).addClass("googie_list").attr("googie_action_btn","1");for(var j=!1,f=0;f<
+this.custom_menu_builder.length;f++){var h=this.custom_menu_builder[f];if(h[0](this.results[b])){j=h[1](this,g,a);break}}if(!j){var j=this.results[b].suggestions,l=this.results[b].attrs.o,f=this.results[b].attrs.l,k,m;this.has_dictionary&&!$(a).attr("is_corrected")&&(h=document.createElement("tr"),k=document.createElement("td"),m=document.createElement("span"),$(m).text(this.lang_learn_word),$(k).attr("googie_action_btn","1").css("cursor","default").mouseover(c.item_onmouseover).mouseout(c.item_onmouseout).click(function(){c.learnWord(a,
+b);c.ignoreError(a,b)}),k.appendChild(m),h.appendChild(k),g.appendChild(h));for(var p=0,f=j.length;p<f;p++)h=document.createElement("tr"),k=document.createElement("td"),m=document.createElement("span"),$(m).html(j[p]),$(k).mouseover(this.item_onmouseover).mouseout(this.item_onmouseout).click(function(d){c.correctError(b,a,d.target.firstChild)}),k.appendChild(m),h.appendChild(k),g.appendChild(h);if(a.is_changed&&a.innerHTML!=a.old_value){var q=a.old_value,j=document.createElement("tr"),f=document.createElement("td"),
+h=document.createElement("span");$(h).addClass("googie_list_revert").html(this.lang_revert+" "+q);$(f).mouseover(this.item_onmouseover).mouseout(this.item_onmouseout).click(function(){c.updateOrginalText(l,a.innerHTML,q,b);$(a).removeAttr("is_corrected").css("color","#b91414").html(q);c.hideErrorWindow()});f.appendChild(h);j.appendChild(f);g.appendChild(j)}var j=document.createElement("tr"),f=document.createElement("td"),n=document.createElement("input"),h=document.createElement("img");k=document.createElement("form");
+m=function(){""!=n.value&&(c.isDefined(a.old_value)||c.saveOldValue(a,a.innerHTML),c.updateOrginalText(l,a.innerHTML,n.value,b),$(a).attr("is_corrected",!0).css("color","green").html(n.value),c.hideErrorWindow());return!1};$(n).width(120).css({margin:0,padding:0});$(n).val(a.innerHTML).attr("googie_action_btn","1");$(f).css("cursor","default").attr("googie_action_btn","1");$(h).attr("src",this.img_dir+"ok.gif").width(32).height(16).css({cursor:"pointer","margin-left":"2px","margin-right":"2px"}).click(m);
+$(k).attr("googie_action_btn","1").css({margin:0,padding:0,cursor:"default","white-space":"nowrap"}).submit(m);k.appendChild(n);k.appendChild(h);f.appendChild(k);j.appendChild(f);g.appendChild(j);0<this.extra_menu_items.length&&g.appendChild(this.createListSeparator());var r=function(b){if(b<c.extra_menu_items.length){var d=c.extra_menu_items[b];if(!d[2]||d[2](a,c)){var e=document.createElement("tr"),f=document.createElement("td");$(f).html(d[0]).mouseover(c.item_onmouseover).mouseout(c.item_onmouseout).click(function(){return d[1](a,
+c)});e.appendChild(f);g.appendChild(e)}r(b+1)}};r(0);r=null;this.use_close_btn&&g.appendChild(this.createCloseButton(this.hideErrorWindow))}e.appendChild(g);this.error_window.appendChild(e);f=$(this.error_window).height();e=$(this.error_window).width();h=$(document).height();j=$(document).width();f=d.top+f+20<h?d.top+20:d.top-f;d=d.left+e<j?d.left:d.left-e;$(this.error_window).css({top:f+"px",left:d+"px"}).show();$.browser.msie&&(this.error_window_iframe||(d=$("<iframe>").css({position:"absolute",
 "z-index":-1}),$("body").append(d),this.error_window_iframe=d),$(this.error_window_iframe).css({top:this.error_window.offsetTop,left:this.error_window.offsetLeft,width:this.error_window.offsetWidth,height:this.error_window.offsetHeight}).show())};this.createEditLayer=function(a,b){this.edit_layer=document.createElement("div");$(this.edit_layer).addClass("googie_edit_layer").attr("id","googie_edit_layer").width("auto").height(b);"input"!=this.text_area.nodeName.toLowerCase()||""==$(this.text_area).val()?
 $(this.edit_layer).css("overflow","auto").height(b-4):$(this.edit_layer).css("overflow","hidden");var c=this;this.edit_layer_dbl_click&&$(this.edit_layer).dblclick(function(a){if("googie_link"!=a.target.className&&!c.isErrorWindowShown()){c.resumeEditing();var b=function(){$(c.text_area).focus();b=null};window.setTimeout(b,10)}return!1})};this.resumeEditing=function(){this.setStateChanged("ready");this.edit_layer&&(this.el_scroll_top=this.edit_layer.scrollTop);this.hideErrorWindow();this.main_controller&&
-$(this.spell_span).removeClass().addClass("googie_no_style");if(!this.ignore&&(this.use_focus&&($(this.focus_link_t).remove(),$(this.focus_link_b).remove()),$(this.edit_layer).remove(),$(this.text_area).show(),void 0!=this.el_scroll_top))this.text_area.scrollTop=this.el_scroll_top;this.checkSpellingState(!1)};this.createErrorLink=function(a,b){var c=document.createElement("span"),d=this,e=function(){d.showErrorWindow(c,b);e=null;return!1};$(c).html(a).addClass("googie_link").click(e).removeAttr("is_corrected").attr({googie_action_btn:"1",
-g_id:b});return c};this.createPart=function(a){if(" "==a)return document.createTextNode(" ");var a=this.escapeSpecial(a),a=a.replace(/\n/g,"<br>"),a=a.replace(/    /g," &nbsp;"),a=a.replace(/^ /g,"&nbsp;"),a=a.replace(/ $/g,"&nbsp;"),b=document.createElement("span");$(b).html(a);return b};this.showErrorsInIframe=function(){var a=document.createElement("div"),b=0,c=this.results;if(0<c.length){for(var d=0,e=c.length;d<e;d++){var f=c[d].attrs.o,j=c[d].attrs.l,g=this.createPart(this.orginal_text.substring(b,
-f));a.appendChild(g);b+=f-b;f=this.createErrorLink(this.orginal_text.substr(f,j),d);this.error_links.push(f);a.appendChild(f);b+=j}b=this.createPart(this.orginal_text.substr(b,this.orginal_text.length));a.appendChild(b)}else a.innerHTML=this.orginal_text;$(a).css("text-align","left");var h=this;this.custom_item_evaulator&&$.map(this.error_links,function(a){h.custom_item_evaulator(h,a)});$(this.edit_layer).append(a);$(this.text_area).hide();$(this.edit_layer).insertBefore(this.text_area);this.use_focus&&
-(this.focus_link_t=this.createFocusLink("focus_t"),this.focus_link_b=this.createFocusLink("focus_b"),$(this.focus_link_t).insertBefore(this.edit_layer),$(this.focus_link_b).insertAfter(this.edit_layer))};this.createLangWindow=function(){this.language_window=document.createElement("div");$(this.language_window).addClass("googie_window popupmenu").width(100).attr("googie_action_btn","1");var a=document.createElement("table"),b=document.createElement("tbody"),c=this,d,e,f;$(a).addClass("googie_list").width("100%");
-this.lang_elms=[];for(i=0;i<this.langlist_codes.length;i++)d=document.createElement("tr"),e=document.createElement("td"),f=document.createElement("span"),$(f).text(this.lang_to_word[this.langlist_codes[i]]),this.lang_elms.push(e),$(e).attr("googieId",this.langlist_codes[i]).bind("click",function(){c.deHighlightCurSel();c.setCurrentLanguage($(this).attr("googieId"));null!=c.lang_state_observer&&c.lang_state_observer();c.highlightCurSel();c.hideLangWindow()}).bind("mouseover",function(){"googie_list_selected"!=
-this.className&&(this.className="googie_list_onhover")}).bind("mouseout",function(){"googie_list_selected"!=this.className&&(this.className="googie_list_onout")}),e.appendChild(f),d.appendChild(e),b.appendChild(d);this.use_close_btn&&b.appendChild(this.createCloseButton(function(){c.hideLangWindow.apply(c)}));this.highlightCurSel();a.appendChild(b);this.language_window.appendChild(a)};this.isLangWindowShown=function(){return $(this.language_window).is(":visible")};this.hideLangWindow=function(){$(this.language_window).hide();
+$(this.spell_span).removeClass().addClass("googie_no_style");this.ignore||(this.use_focus&&($(this.focus_link_t).remove(),$(this.focus_link_b).remove()),$(this.edit_layer).remove(),$(this.text_area).show(),void 0!=this.el_scroll_top&&(this.text_area.scrollTop=this.el_scroll_top));this.checkSpellingState(!1)};this.createErrorLink=function(a,b){var c=document.createElement("span"),d=this,e=function(){d.showErrorWindow(c,b);e=null;return!1};$(c).html(a).addClass("googie_link").click(e).removeAttr("is_corrected").attr({googie_action_btn:"1",
+g_id:b});return c};this.createPart=function(a){if(" "==a)return document.createTextNode(" ");var a=this.escapeSpecial(a),a=a.replace(/\n/g,"<br>"),a=a.replace(/    /g," &nbsp;"),a=a.replace(/^ /g,"&nbsp;"),a=a.replace(/ $/g,"&nbsp;"),b=document.createElement("span");$(b).html(a);return b};this.showErrorsInIframe=function(){var a=document.createElement("div"),b=0,c=this.results;if(0<c.length){for(var d=0,e=c.length;d<e;d++){var g=c[d].attrs.o,j=c[d].attrs.l,f=this.orginal_text.substring(b,g),f=this.createPart(f);
+a.appendChild(f);b+=g-b;g=this.createErrorLink(this.orginal_text.substr(g,j),d);this.error_links.push(g);a.appendChild(g);b+=j}b=this.orginal_text.substr(b,this.orginal_text.length);b=this.createPart(b);a.appendChild(b)}else a.innerHTML=this.orginal_text;$(a).css("text-align","left");var h=this;this.custom_item_evaulator&&$.map(this.error_links,function(a){h.custom_item_evaulator(h,a)});$(this.edit_layer).append(a);$(this.text_area).hide();$(this.edit_layer).insertBefore(this.text_area);this.use_focus&&
+(this.focus_link_t=this.createFocusLink("focus_t"),this.focus_link_b=this.createFocusLink("focus_b"),$(this.focus_link_t).insertBefore(this.edit_layer),$(this.focus_link_b).insertAfter(this.edit_layer))};this.createLangWindow=function(){this.language_window=document.createElement("div");$(this.language_window).addClass("googie_window popupmenu").width(100).attr("googie_action_btn","1");var a=document.createElement("table"),b=document.createElement("tbody"),c=this,d,e,g;$(a).addClass("googie_list").width("100%");
+this.lang_elms=[];for(i=0;i<this.langlist_codes.length;i++)d=document.createElement("tr"),e=document.createElement("td"),g=document.createElement("span"),$(g).text(this.lang_to_word[this.langlist_codes[i]]),this.lang_elms.push(e),$(e).attr("googieId",this.langlist_codes[i]).bind("click",function(){c.deHighlightCurSel();c.setCurrentLanguage($(this).attr("googieId"));null!=c.lang_state_observer&&c.lang_state_observer();c.highlightCurSel();c.hideLangWindow()}).bind("mouseover",function(){"googie_list_selected"!=
+this.className&&(this.className="googie_list_onhover")}).bind("mouseout",function(){"googie_list_selected"!=this.className&&(this.className="googie_list_onout")}),e.appendChild(g),d.appendChild(e),b.appendChild(d);this.use_close_btn&&b.appendChild(this.createCloseButton(function(){c.hideLangWindow.apply(c)}));this.highlightCurSel();a.appendChild(b);this.language_window.appendChild(a)};this.isLangWindowShown=function(){return $(this.language_window).is(":visible")};this.hideLangWindow=function(){$(this.language_window).hide();
 $(this.switch_lan_pic).removeClass().addClass("googie_lang_3d_on")};this.showLangWindow=function(a){this.show_menu_observer&&this.show_menu_observer(this);this.createLangWindow();$("body").append(this.language_window);var b=$(a).offset(),c=$(a).height(),d=$(a).width(),a=$(this.language_window).height(),e=$(document).height(),d="right"==this.change_lang_pic_placement?b.left-100+d:b.left+d,b=b.top+a<e?b.top+c:b.top-a-4;$(this.language_window).css({top:b+"px",left:d+"px"}).show();this.highlightCurSel()};
 this.deHighlightCurSel=function(){$(this.lang_cur_elm).removeClass().addClass("googie_list_onout")};this.highlightCurSel=function(){null==GOOGIE_CUR_LANG&&(GOOGIE_CUR_LANG=GOOGIE_DEFAULT_LANG);for(var a=0;a<this.lang_elms.length;a++)$(this.lang_elms[a]).attr("googieId")==GOOGIE_CUR_LANG?(this.lang_elms[a].className="googie_list_selected",this.lang_cur_elm=this.lang_elms[a]):this.lang_elms[a].className="googie_list_onout"};this.createChangeLangPic=function(){var a=$("<img>").attr({src:this.img_dir+
 "change_lang.gif",alt:"Change language",googie_action_btn:"1"}),b=document.createElement("span");l=this;$(b).addClass("googie_lang_3d_on").append(a).bind("click",function(){var a="img"==this.tagName.toLowerCase()?this.parentNode:this;$(a).hasClass("googie_lang_3d_click")?(a.className="googie_lang_3d_on",l.hideLangWindow()):(a.className="googie_lang_3d_click",l.showLangWindow(a))});return b};this.createSpellDiv=function(){var a=document.createElement("span");$(a).addClass("googie_check_spelling_link").text(this.lang_chck_spell);
 this.show_spell_img&&$(a).append(" ").append($("<img>").attr("src",this.img_dir+"spellc.gif"));return a};this.flashNoSpellingErrorState=function(a){this.setStateChanged("no_error_found");var b=this;if(this.main_controller){var c;c=a?function(){a();b.checkSpellingState()}:function(){b.checkSpellingState()};var d=$("<span>").text(this.lang_no_error_found);$(this.switch_lan_pic).hide();$(this.spell_span).empty().append(d).removeClass().addClass("googie_check_spelling_ok");window.setTimeout(c,1E3)}};
 this.resumeEditingState=function(){this.setStateChanged("resume_editing");if(this.main_controller){var a=$("<span>").text(this.lang_rsm_edt),b=this;$(this.switch_lan_pic).hide();$(this.spell_span).empty().unbind().append(a).bind("click",function(){b.resumeEditing()}).removeClass().addClass("googie_resume_editing")}try{this.edit_layer.scrollTop=this.ta_scroll_top}catch(c){}};this.checkSpellingState=function(a){a&&this.setStateChanged("ready");this.switch_lan_pic=this.show_change_lang_pic?this.createChangeLangPic():
 document.createElement("span");var a=this.createSpellDiv(),b=this;this.custom_spellcheck_starter?$(a).bind("click",function(){b.custom_spellcheck_starter()}):$(a).bind("click",function(){b.spellCheck()});this.main_controller&&("left"==this.change_lang_pic_placement?$(this.spell_container).empty().append(this.switch_lan_pic).append(" ").append(a):$(this.spell_container).empty().append(a).append(" ").append(this.switch_lan_pic));this.spell_span=a};this.isDefined=function(a){return void 0!==a&&null!==
-a};this.errorFixed=function(){this.cnt_errors_fixed++;this.all_errors_fixed_observer&&this.cnt_errors_fixed==this.cnt_errors&&(this.hideErrorWindow(),this.all_errors_fixed_observer())};this.errorFound=function(){this.cnt_errors++};this.createCloseButton=function(a){return this.createButton(this.lang_close,"googie_list_close",a)};this.createButton=function(a,b,c){var d=document.createElement("tr"),e=document.createElement("td"),f;b?(f=document.createElement("span"),$(f).addClass(b).html(a)):f=document.createTextNode(a);
-$(e).bind("click",c).bind("mouseover",this.item_onmouseover).bind("mouseout",this.item_onmouseout);e.appendChild(f);d.appendChild(e);return d};this.removeIndicator=function(){window.rcmail&&rcmail.set_busy(!1,null,this.rc_msg_id)};this.appendIndicator=function(){window.rcmail&&(this.rc_msg_id=rcmail.set_busy(!0,"checking"))};this.createFocusLink=function(a){var b=document.createElement("a");$(b).attr({href:"javascript:;",name:a});return b};this.item_onmouseover=function(){"googie_list_revert"!=this.className&&
+a};this.errorFixed=function(){this.cnt_errors_fixed++;this.all_errors_fixed_observer&&this.cnt_errors_fixed==this.cnt_errors&&(this.hideErrorWindow(),this.all_errors_fixed_observer())};this.errorFound=function(){this.cnt_errors++};this.createCloseButton=function(a){return this.createButton(this.lang_close,"googie_list_close",a)};this.createButton=function(a,b,c){var d=document.createElement("tr"),e=document.createElement("td"),g;b?(g=document.createElement("span"),$(g).addClass(b).html(a)):g=document.createTextNode(a);
+$(e).bind("click",c).bind("mouseover",this.item_onmouseover).bind("mouseout",this.item_onmouseout);e.appendChild(g);d.appendChild(e);return d};this.removeIndicator=function(){window.rcmail&&rcmail.set_busy(!1,null,this.rc_msg_id)};this.appendIndicator=function(){window.rcmail&&(this.rc_msg_id=rcmail.set_busy(!0,"checking"))};this.createFocusLink=function(a){var b=document.createElement("a");$(b).attr({href:"javascript:;",name:a});return b};this.item_onmouseover=function(){"googie_list_revert"!=this.className&&
 "googie_list_close"!=this.className?this.className="googie_list_onhover":this.parentNode.className="googie_list_onhover"};this.item_onmouseout=function(){"googie_list_revert"!=this.className&&"googie_list_close"!=this.className?this.className="googie_list_onout":this.parentNode.className="googie_list_onout"}};
index 96d612ca23e1a812be247b06654744b8e0228ed2..06aef855a2ae21c89f28c4b30671ef2db61c7a3e 100644 (file)
@@ -1,16 +1,24 @@
 /*
- SpellCheck
-    jQuery'fied spell checker based on GoogieSpell 4.0
-      (which was published under GPL "version 2 or any later version")
-
- Copyright (C) 2006 Amir Salihefendic
- Copyright (C) 2009 Aleksander Machniak
- Copyright (C) 2011 Kolab Systems AG
-     LICENSE
-         GPL
-     AUTHORS
-         4mir Salihefendic (http://amix.dk) - amix@amix.dk
-           Aleksander Machniak - alec [at] alec.pl
+ +-----------------------------------------------------------------------+
+ | Roundcube SpellCheck script                                           |
+ |   jQuery'fied spell checker based on GoogieSpell 4.0                  |
+ |    (which was published under GPL "version 2 or any later version")   |
+ |                                                                       |
+ | This file is part of the Roundcube Webmail client                     |
+ | Copyright (C) 2006 Amir Salihefendic                                  |
+ | Copyright (C) 2009 The Roundcube Dev Team                             |
+ | Copyright (C) 2011 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.                     |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Authors: 4mir Salihefendic <amix@amix.dk>                             |
+ |          Aleksander Machniak - <alec [at] alec.pl>                    |
+ +-----------------------------------------------------------------------+
+
+  $Id$
 */
 
 var GOOGIE_CUR_LANG,
@@ -34,9 +42,9 @@ function GoogieSpell(img_dir, server_url, has_dict)
 
     this.org_lang_to_word = {
            "da": "Dansk", "de": "Deutsch", "en": "English",
-        "es": "Espa&#241;ol", "fr": "Fran&#231;ais", "it": "Italiano", 
-        "nl": "Nederlands", "pl": "Polski", "pt": "Portugu&#234;s",
-        "fi": "Suomi", "sv": "Svenska"
+        "es": "Español", "fr": "Français", "it": "Italiano",
+        "nl": "Nederlands", "pl": "Polski", "pt": "Português",
+        "ru": "Русский", "fi": "Suomi", "sv": "Svenska"
     };
     this.lang_to_word = this.org_lang_to_word;
     this.langlist_codes = this.array_keys(this.lang_to_word);
index 628ed9b31604ed868f70c7a593441cfcdced1723..16ad06c5acaad09ee4d6e9d7c428506db028aeeb 100644 (file)
@@ -1,4 +1,4 @@
-/*! jQuery v1.6.4 http://jquery.com/ | http://jquery.org/license */
-(function(a,b){function cu(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cr(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cq(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cp(){cn=b}function co(){setTimeout(cp,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function bZ(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function bY(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bA.test(a)?d(a,e):bY(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)bY(a+"["+e+"]",b[e],c,d);else d(a,b)}function bX(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bW(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bP,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bW(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bW(a,c,d,e,"*",g));return l}function bV(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bL),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function by(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bt:bu;if(d>0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bv(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bl(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bd,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bk(a){f.nodeName(a,"input")?bj(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bj)}function bj(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bi(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bh(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bg(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)f.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function bf(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function V(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(Q.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function U(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function M(a,b){return(a&&a!=="*"?a+".":"")+b.replace(y,"`").replace(z,"&")}function L(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i<s.length;i++)g=s[i],g.origType.replace(w,"")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j<k;j++){m=e[j];for(i=0;i<s.length;i++){g=s[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,d=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d&&f.contains(h,d)&&(d=h);(!d||d!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){e=p[j];if(c&&e.level>c)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function J(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function D(){return!0}function C(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function K(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(K,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z]|[0-9])/ig,x=/^-ms-/,y=function(a,b){return(b+"").toUpperCase()},z=d.userAgent,A,B,C,D=Object.prototype.toString,E=Object.prototype.hasOwnProperty,F=Array.prototype.push,G=Array.prototype.slice,H=String.prototype.trim,I=Array.prototype.indexOf,J={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.4",length:0,size:function(){return this.length},toArray:function(){return G.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?F.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),B.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(G.apply(this,arguments),"slice",G.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:F,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;B.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!B){B=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",C,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",C),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&K()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):J[D.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!E.call(a,"constructor")&&!E.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||E.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(x,"ms-").replace(w,y)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:H?function(a){return a==null?"":H.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?F.call(c,a):e.merge(c,a)}return c},inArray:function(a,b){if(!b)return-1;if(I)return I.call(b,a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=G.call(arguments,2),g=function(){return a.apply(c,f.concat(G.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf("compatible")<0&&v.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){J["[object "+b+"]"]=b.toLowerCase()}),A=e.uaMatch(z),A.browser&&(e.browser[A.browser]=!0,e.browser.version=A.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?C=function(){c.removeEventListener("DOMContentLoaded",C,!1),e.ready()}:c.attachEvent&&(C=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",C),e.ready())});return e}(),g="done fail isResolved isRejected promise then always pipe".split(" "),h=[].slice;f.extend({_Deferred:function(){var a=[],b,c,d,e={done:function(){if(!d){var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=f.type(i),j==="array"?e.done.apply(e,i):j==="function"&&a.push(i);k&&e.resolveWith(k[0],k[1])}return this},resolveWith:function(e,f){if(!d&&!b&&!c){f=f||[],c=1;try{while(a[0])a.shift().apply(e,f)}finally{b=[e,f],c=0}}return this},resolve:function(){e.resolveWith(this,arguments);return this},isResolved:function(){return!!c||!!b},cancel:function(){d=1,a=[];return this}};return e},Deferred:function(a){var b=f._Deferred(),c=f._Deferred(),d;f.extend(b,{then:function(a,c){b.done(a).fail(c);return this},always:function(){return b.done.apply(b,arguments).fail.apply(this,arguments)},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,pipe:function(a,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[c,"reject"]},function(a,c){var e=c[0],g=c[1],h;f.isFunction(e)?b[a](function(){h=e.apply(this,arguments),h&&f.isFunction(h.promise)?h.promise().then(d.resolve,d.reject):d[g+"With"](this===b?d:this,[h])}):b[a](d[g])})}).promise()},promise:function(a){if(a==null){if(d)return d;d=a={}}var c=g.length;while(c--)a[g[c]]=b[g[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length>1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c<d;c++)b[c]&&f.isFunction(b[c].promise)?b[c].promise().then(i(c),g.reject):--e;e||g.resolveWith(g,b)}else g!==a&&g.resolveWith(g,d?[a]:[]);return g.promise()}}),f.support=function(){var a=c.createElement("div"),b=c.documentElement,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;a.setAttribute("className","t"),a.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},m&&f.extend(p,{position:"absolute",left:"-1000px",top:"-1000px"});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i=f.expando,j=typeof c=="string",k=a.nodeType,l=k?f.cache:a,m=k?a[f.expando]:a[f.expando]&&f.expando;if((!m||e&&m&&l[m]&&!l[m][i])&&j&&d===b)return;m||(k?a[f.expando]=m=++f.uuid:m=f.expando),l[m]||(l[m]={},k||(l[m].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?l[m][i]=f.extend(l[m][i],c):l[m]=f.extend(l[m],c);g=l[m],e&&(g[i]||(g[i]={}),g=g[i]),d!==b&&(g[f.camelCase(c)]=d);if(c==="events"&&!g[c])return g[i]&&g[i].events;j?(h=g[c],h==null&&(h=g[f.camelCase(c)])):h=g;return h}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e=f.expando,g=a.nodeType,h=g?f.cache:a,i=g?a[f.expando]:f.expando;if(!h[i])return;if(b){d=c?h[i][e]:h[i];if(d){d[b]||(b=f.camelCase(b)),delete d[b];if(!l(d))return}}if(c){delete h[i][e];if(!l(h[i]))return}var j=h[i][e];f.support.deleteExpando||!h.setInterval?delete h[i]:h[i]=null,j?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=j):g&&(f.support.deleteExpando?delete a[f.expando]:a.removeAttribute?a.removeAttribute(f.expando):a[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h<i;h++)g=e[h].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),k(this[0],g,d[g]))}}return d}if(typeof a=="object")return this.each(function(){f.data(this,a)});var j=a.split(".");j[1]=j[1]?"."+j[1]:"";if(c===b){d=this.triggerHandler("getData"+j[1]+"!",[j[0]]),d===b&&this.length&&(d=f.data(this[0],a),d=k(this[0],a,d));return d===b&&j[1]?this.data(j[0]):d}return this.each(function(){var b=f(this),d=[j[0],c];b.triggerHandler("setData"+j[1]+"!",d),f.data(this,a,c),b.triggerHandler("changeData"+j[1]+"!",d)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,c){a&&(c=(c||"fx")+"mark",f.data(a,c,(f.data(a,c,b,!0)||0)+1,!0))},_unmark:function(a,c,d){a!==!0&&(d=c,c=a,a=!1);if(c){d=d||"fx";var e=d+"mark",g=a?0:(f.data(c,e,b,!0)||1)-1;g?f.data(c,e,g,!0):(f.removeData(c,e,!0),m(c,d,"mark"))}},queue:function(a,c,d){if(a){c=(c||"fx")+"queue";var e=f.data(a,c,b,!0);d&&(!e||f.isArray(d)?e=f.data(a,c,f.makeArray(d),!0):e.push(d));return e||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e;d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),d.call(a,function(){f.dequeue(a,b)})),c.length||(f.removeData(a,b+"queue",!0),m(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(){var c=this;setTimeout(function(){f.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f._Deferred(),!0))h++,l.done(m);m();return d.promise()}});var n=/[\n\t\r]/g,o=/\s+/,p=/\r/g,q=/^(?:button|input)$/i,r=/^(?:button|input|object|select|textarea)$/i,s=/^a(?:rea)?$/i,t=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,u,v;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(o);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(o);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(n," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(o);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(n," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h<i;h++){var j=e[h];if(j.selected&&(f.support.optDisabled?!j.disabled:j.getAttribute("disabled")===null)&&(!j.parentNode.disabled||!f.nodeName(j.parentNode,"optgroup"))){b=f(j).val();if(g)return b;d.push(b)}}if(g&&!d.length&&e.length)return f(e[c]).val();return d},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=v:u&&(i=u)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.attr(a,b,""),a.removeAttribute(b),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(u&&f.nodeName(a,"button"))return u.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(u&&f.nodeName(a,"button"))return u.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==null?g:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabIndex=f.propHooks.tabIndex,v={get:function(a,c){var d;return f.prop(a,c)===!0||(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(u=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var w=/\.(.*)$/,x=/^(?:textarea|input|select)$/i,y=/\./g,z=/ /g,A=/[^\w\s.|`]/g,B=function(a){return a.replace(A,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=C;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=C);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),B).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))f.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=f.event.special[h]||{};for(j=e||0;j<p.length;j++){q=p[j];if(d.guid===q.guid){if(l||n.test(q.namespace))e==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(e!=null)break}}if(p.length===0||e!=null&&p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)&&f.removeEvent(a,h,s.handle),g=null,delete 
-t[h]}if(f.isEmptyObject(t)){var u=s.handle;u&&(u.elem=null),delete s.events,delete s.handle,f.isEmptyObject(s)&&f.removeData(a,b,!0)}}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){var h=c.type||c,i=[],j;h.indexOf("!")>=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h<i;h++){var j=d[h];if(e||c.namespace_re.test(j.namespace)){c.handler=j.handler,c.data=j.data,c.handleObj=j;var k=j.handler.apply(this,g);k!==b&&(c.result=k,k===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}return c.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[f.expando])return a;var d=a;a=f.Event(d);for(var e=this.props.length,g;e;)g=this.props[--e],a[g]=d[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){var h=a.target.ownerDocument||c,i=h.documentElement,j=h.body;a.pageX=a.clientX+(i&&i.scrollLeft||j&&j.scrollLeft||0)-(i&&i.clientLeft||j&&j.clientLeft||0),a.pageY=a.clientY+(i&&i.scrollTop||j&&j.scrollTop||0)-(i&&i.clientTop||j&&j.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);return a},guid:1e8,proxy:f.proxy,special:{ready:{setup:f.bindReady,teardown:f.noop},live:{add:function(a){f.event.add(this,M(a.origType,a.selector),f.extend({},a,{handler:L,guid:a.handler.guid}))},remove:function(a){f.event.remove(this,M(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!this.preventDefault)return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?D:C):this.type=a,b&&f.extend(this,b),this.timeStamp=f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=D;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=D;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=D,this.stopPropagation()},isDefaultPrevented:C,isPropagationStopped:C,isImmediatePropagationStopped:C};var E=function(a){var b=a.relatedTarget,c=!1,d=a.type;a.type=a.data,b!==this&&(b&&(c=f.contains(this,b)),c||(f.event.handle.apply(this,arguments),a.type=d))},F=function(a){a.type=a.data,f.event.handle.apply(this,arguments)};f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={setup:function(c){f.event.add(this,b,c&&c.selector?F:E,a)},teardown:function(a){f.event.remove(this,b,a&&a.selector?F:E)}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(a,b){if(!f.nodeName(this,"form"))f.event.add(this,"click.specialSubmit",function(a){var b=a.target,c=f.nodeName(b,"input")||f.nodeName(b,"button")?b.type:"";(c==="submit"||c==="image")&&f(b).closest("form").length&&J("submit",this,arguments)}),f.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,c=f.nodeName(b,"input")||f.nodeName(b,"button")?b.type:"";(c==="text"||c==="password")&&f(b).closest("form").length&&a.keyCode===13&&J("submit",this,arguments)});else return!1},teardown:function(a){f.event.remove(this,".specialSubmit")}});if(!f.support.changeBubbles){var G,H=function(a){var b=f.nodeName(a,"input")?a.type:"",c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},I=function(c){var d=c.target,e,g;if(!!x.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=H(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:I,beforedeactivate:I,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&I.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&I.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",H(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in G)f.event.add(this,c+".specialChange",G[c]);return x.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return x.test(this.nodeName)}},G=f.event.special.change.filters,G.focus=G.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i<j;i++)f.event.add(this[i],a,g,d);return this}}),f.fn.extend({unbind:function(a,b){if(typeof a=="object"&&!a.preventDefault)for(var c in a)this.unbind(c,a[c]);else for(var d=0,e=this.length;d<e;d++)f.event.remove(this[d],a,b);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind("live"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f.data(this,"lastToggle"+a.guid)||0)%d;f.data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var K={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};f.each(["live","die"],function(a,c){f.fn[c]=function(a,d,e,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:f(this.context);if(typeof a=="object"&&!a.preventDefault){for(var o in a)n[c](o,d,a[o],m);return this}if(c==="die"&&!a&&g&&g.charAt(0)==="."){n.unbind(g);return this}if(d===!1||f.isFunction(d))e=d||C,d=b;a=(a||"").split(" ");while((h=a[i++])!=null){j=w.exec(h),k="",j&&(k=j[0],h=h.replace(w,""));if(h==="hover"){a.push("mouseenter"+k,"mouseleave"+k);continue}l=h,K[h]?(a.push(K[h]+k),h=h+k):h=(K[h]||h)+k;if(c==="live")for(var p=0,q=n.length;p<q;p++)f.event.add(n[p],"live."+M(h,m),{data:d,selector:m,handler:e,origType:h,origHandler:e,preType:l});else n.unbind("live."+M(h,m),e)}return this}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!="string"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length>0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1&&!f&&(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length>0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e<f;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!=="\\"){g[1]=(g[1]||"").replace(i,""),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c&&c[0]&&k.isXML(c[0]);while(a&&c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null&&f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)==="\\")continue;j===i&&(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(!f)g=o=!0;else if(f===!0)continue}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d&&o!=null?t?g=!0:j[s]=!1:t&&(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],"");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw"Syntax error, unrecognized expression: "+a};var l=k.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(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!j.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&k.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&k.filter(b,a,!0)}},"":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("parentNode",b,f,a,e,c)},"~":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("previousSibling",b,f,a,e,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(i,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c==="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e===1&&f===0)return!0;var g=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0&&j/e>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c<f;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(r=function(a,b){if(a===b){g=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b="",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8&&(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g<h;g++)k(a,f[g],d);return k.filter(e,d)};f.find=k,f.expr=k.selectors,f.expr[":"]=f.expr.filters,f.unique=k.uniqueSort,f.text=k.getText,f.isXMLDoc=k.isXML,f.contains=k.contains}();var N=/Until$/,O=/^(?:parents|prevUntil|prevAll)/,P=/,/,Q=/^.[^:#\[\.,]*$/,R=Array.prototype.slice,S=f.expr.match.POS,T={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(V(this,a,!1),"not",a)},filter:function(a){return this.pushStack(V(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d<e;d++)i=a[d],j[i]||(j[i]=S.test(i)?f(i,b||this.context):i);while(g&&g.ownerDocument&&g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)>-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=S.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(l?l.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(U(c[0])||U(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=R.call(arguments);N.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!T[a]?f.unique(e):e,(this.length>1||P.test(d))&&O.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|object|embed|option|style)/i,bb=/checked\s*(?:[^=]|=\s*.checked.)/i,bc=/\/(java|ecma)script/i,bd=/^\s*<!(?:\[CDATA\[|\-\-)/,be={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};be.optgroup=be.option,be.tbody=be.tfoot=be.colgroup=be.caption=be.thead,be.th=be.td,f.support.htmlSerialize||(be._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!be[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bb.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bf(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bl)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i;b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof a[0]=="string"&&a[0].length<512&&i===c&&a[0].charAt(0)==="<"&&!ba.test(a[0])&&(f.support.checkClone||!bb.test(a[0]))&&(g=!0,h=f.fragments[a[0]],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean
-(a,i,e,d)),g&&(f.fragments[a[0]]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bh(a,d),e=bi(a),g=bi(d);for(h=0;e[h];++h)g[h]&&bh(e[h],g[h])}if(b){bg(a,d);if(c){e=bi(a),g=bi(d);for(h=0;e[h];++h)bg(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=be[l]||be._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bk(k[i]);else bk(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||bc.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.expando,g=f.event.special,h=f.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&f.noData[j.nodeName.toLowerCase()])continue;c=j[f.expando];if(c){b=d[c]&&d[c][e];if(b&&b.events){for(var k in b.events)g[k]?f.event.remove(j,k):f.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[f.expando]:j.removeAttribute&&j.removeAttribute(f.expando),delete d[c]}}}});var bm=/alpha\([^)]*\)/i,bn=/opacity=([^)]*)/,bo=/([A-Z]|^ms)/g,bp=/^-?\d+(?:px)?$/i,bq=/^-?\d/,br=/^([\-+])=([\-+.\de]+)/,bs={position:"absolute",visibility:"hidden",display:"block"},bt=["Left","Right"],bu=["Top","Bottom"],bv,bw,bx;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bv(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=br.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bv)return bv(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return by(a,b,d);f.swap(a,bs,function(){e=by(a,b,d)});return e}},set:function(a,b){if(!bp.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bn.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bm,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bm.test(g)?g.replace(bm,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bv(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bw=function(a,c){var d,e,g;c=c.replace(bo,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bx=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bp.test(d)&&bq.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bv=bw||bx,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bz=/%20/g,bA=/\[\]$/,bB=/\r?\n/g,bC=/#.*$/,bD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bE=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bF=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bG=/^(?:GET|HEAD)$/,bH=/^\/\//,bI=/\?/,bJ=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bK=/^(?:select|textarea)/i,bL=/\s+/,bM=/([?&])_=[^&]*/,bN=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bO=f.fn.load,bP={},bQ={},bR,bS,bT=["*/"]+["*"];try{bR=e.href}catch(bU){bR=c.createElement("a"),bR.href="",bR=bR.href}bS=bN.exec(bR.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bO)return bO.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bJ,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bK.test(this.nodeName)||bE.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bB,"\r\n")}}):{name:b.name,value:c.replace(bB,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?bX(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),bX(a,b);return a},ajaxSettings:{url:bR,isLocal:bF.test(bS[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bT},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bV(bP),ajaxTransport:bV(bQ),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?bZ(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=b$(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bD.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bC,"").replace(bH,bS[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bL),d.crossDomain==null&&(r=bN.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bS[1]&&r[2]==bS[2]&&(r[3]||(r[1]==="http:"?80:443))==(bS[3]||(bS[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bW(bP,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bG.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bI.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bM,"$1_="+x);d.url=y+(y===d.url?(bI.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bT+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bW(bQ,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){s<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bz,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cq("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cr(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cq("hide",3),a,b,c);for(var d=0,e=this.length;d<e;d++)if(this[d].style){var g=f.css(this[d],"display");g!=="none"&&!f._data(this[d],"olddisplay")&&f._data(this[d],"olddisplay",g)}for(d=0;d<e;d++)this[d].style&&(this[d].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cq("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return this[e.queue===!1?"each":"queue"](function(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(f.support.inlineBlockNeedsLayout?(j=cr(this.nodeName),j==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)):this.style.display="inline-block"))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)k=new f.fx(this,b,i),h=a[i],cj.test(h)?k[h==="toggle"?d?"show":"hide":h]():(l=ck.exec(h),m=k.cur(),l?(n=parseFloat(l[2]),o=l[3]||(f.cssNumber[i]?"":"px"),o!=="px"&&(f.style(this,i,(n||1)+o),m=(n||1)/k.cur()*m,f.style(this,i,m+o)),l[1]&&(n=(l[1]==="-="?-1:1)*n+m),k.custom(m,n,o)):k.custom(m,h,""));return!0})},stop:function(a,b){a&&this.queue([]),this.each(function(){var a=f.timers,c=a.length;b||f._unmark(!0,this);while(c--)a[c].elem===this&&(b&&a[c](!0),a.splice(c,1))}),b||this.dequeue();return this}}),f.each({slideDown:cq("show",1),slideUp:cq("hide",1),slideToggle:cq("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default,d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue!==!1?f.dequeue(this):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function g(a){return d.step(a)}var d=this,e=f.fx;this.startTime=cn||co(),this.start=a,this.end=b,this.unit=c||this.unit||(f.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,g.elem=this.elem,g()&&f.timers.push(g)&&!cl&&(cl=setInterval(e.tick,e.interval))},show:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=cn||co(),c=!0,d=this.elem,e=this.options,g,h;if(a||b>=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b<a.length;++b)a[b]()||a.splice(b--,1);a.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cl),cl=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cs=/^t(?:able|d|h)$/i,ct=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cu(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);f.offset.initialize();var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.offset.doesNotAddBorder&&(!f.offset.doesAddBorderForTableAndCells||!cs.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={initialize:function(){var a=c.body,b=c.createElement("div"),d,e,g,h,i=parseFloat(f.css(a,"marginTop"))||0,j="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=ct.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!ct.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cu(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cu(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNaN(j)?i:j}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window);
\ No newline at end of file
+/*! jQuery v1.7.2 jquery.com | jquery.org/license */
+(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"<!doctype html>":"")+"<html><body>"),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bD.test(a)?d(a,e):b_(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&f.type(b)==="object")for(var e in b)b_(a+"["+e+"]",b[e],c,d);else d(a,b)}function b$(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bZ(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bS,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bZ(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bZ(a,c,d,e,"*",g));return l}function bY(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bO),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bB(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?1:0,g=4;if(d>0){if(c!=="border")for(;e<g;e+=2)c||(d-=parseFloat(f.css(a,"padding"+bx[e]))||0),c==="margin"?d+=parseFloat(f.css(a,c+bx[e]))||0:d-=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0;return d+"px"}d=by(a,b);if(d<0||d==null)d=a.style[b];if(bt.test(d))return d;d=parseFloat(d)||0;if(c)for(;e<g;e+=2)d+=parseFloat(f.css(a,"padding"+bx[e]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+bx[e]))||0);return d+"px"}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;b.nodeType===1&&(b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?b.outerHTML=a.outerHTML:c!=="input"||a.type!=="checkbox"&&a.type!=="radio"?c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text):(a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value)),b.removeAttribute(f.expando),b.removeAttribute("_submit_attached"),b.removeAttribute("_change_attached"))}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c,i[c][d])}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h,i){var j,k=d==null,l=0,m=a.length;if(d&&typeof d=="object"){for(l in d)e.access(a,c,l,d[l],1,h,f);g=1}else if(f!==b){j=i===b&&e.isFunction(f),k&&(j?(j=c,c=function(a,b,c){return j.call(e(a),c)}):(c.call(a,f),c=null));if(c)for(;l<m;l++)c(a[l],d,j?f.call(a[l],l,c(a[l],d)):f,i);g=1}return g?a:k?c.call(a):m?c(a[0],d):h},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m,n=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?n(g):h==="function"&&(!a.unique||!p.has(g))&&c.push(g)},o=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,j=!0,m=k||0,k=0,l=c.length;for(;c&&m<l;m++)if(c[m].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}j=!1,c&&(a.once?e===!0?p.disable():c=[]:d&&d.length&&(e=d.shift(),p.fireWith(e[0],e[1])))},p={add:function(){if(c){var a=c.length;n(arguments),j?l=c.length:e&&e!==!0&&(k=a,o(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){j&&f<=l&&(l--,f<=m&&m--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&p.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(j?a.once||d.push([b,c]):(!a.once||!e)&&o(b,c));return this},fire:function(){p.fireWith(this,arguments);return this},fired:function(){return!!i}};return p};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p=c.createElement("div"),q=c.documentElement;p.setAttribute("className","t"),p.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="<div "+n+"display:block;'><div style='"+t+"0;display:block;overflow:hidden;'></div></div>"+"<table "+n+"' cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="<table><tr><td style='"+t+"0;display:none'></td><td>t</td></tr></table>",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="<div style='width:5px;'></div>",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h,i,j=this[0],k=0,m=null;if(a===b){if(this.length){m=f.data(j);if(j.nodeType===1&&!f._data(j,"parsedAttrs")){g=j.attributes;for(i=g.length;k<i;k++)h=g[k].name,h.indexOf("data-")===0&&(h=f.camelCase(h.substring(5)),l(j,h,m[h]));f._data(j,"parsedAttrs",!0)}}return m}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!";return f.access(this,function(c){if(c===b){m=this.triggerHandler("getData"+e,[d[0]]),m===b&&j&&(m=f.data(j,a),m=l(j,a,m));return m===b&&d[1]?this.data(d[0]):m}d[1]=c,this.each(function(){var b=f(this);b.triggerHandler("setData"+e,d),f.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length<d)return f.queue(this[0],a);return c===b?this:this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise(c)}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,f.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i<g;i++)e=d[i],e&&(c=f.propFix[e]||e,h=u.test(e),h||f.attr(a,e,""),a.removeAttribute(v?e:c),h&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0,coords:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(
+a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:g&&G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=f.event.special[c.type]||{},j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(!i.preDispatch||i.preDispatch.call(this,c)!==!1){if(e&&(!c.button||c.type!=="click")){n=f(this),n.context=this.ownerDocument||this;for(m=c.target;m!=this;m=m.parentNode||this)if(m.disabled!==!0){p={},r=[],n[0]=m;for(k=0;k<e;k++)s=d[k],t=s.selector,p[t]===b&&(p[t]=s.quick?H(m,s.quick):n.is(t)),p[t]&&r.push(s);r.length&&j.push({elem:m,matches:r})}}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k<j.length&&!c.isPropagationStopped();k++){q=j[k],c.currentTarget=q.elem;for(l=0;l<q.matches.length&&!c.isImmediatePropagationStopped();l++){s=q.matches[l];if(h||!c.namespace&&!s.namespace||c.namespace_re&&c.namespace_re.test(s.namespace))c.data=s.data,c.handleObj=s,o=((f.event.special[s.origType]||{}).handle||s.handler).apply(q.elem,g),o!==b&&(c.result=o,o===!1&&(c.preventDefault(),c.stopPropagation()))}}i.postDispatch&&i.postDispatch.call(this,c);return c.result}},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),d._submit_attached=!0)})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9||d===11){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.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(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.globalPOS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")[\\s/>]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f
+.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(f.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(g){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,function(a,b){b.src?f.ajax({type:"GET",global:!1,url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1></$2>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]==="<table>"&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i<u;i++)bn(l[i]);else bn(l);l.nodeType?j.push(l):j=f.merge(j,l)}if(d){g=function(a){return!a.type||be.test(a.type)};for(k=0;j[k];k++){h=j[k];if(e&&f.nodeName(h,"script")&&(!h.type||be.test(h.type)))e.push(h.parentNode?h.parentNode.removeChild(h):h);else{if(h.nodeType===1){var v=f.grep(h.getElementsByTagName("script"),g);j.splice.apply(j,[k+1,0].concat(v))}d.appendChild(h)}}}return j},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bp=/alpha\([^)]*\)/i,bq=/opacity=([^)]*)/,br=/([A-Z]|^ms)/g,bs=/^[\-+]?(?:\d*\.)?\d+$/i,bt=/^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,bu=/^([\-+])=([\-+.\de]+)/,bv=/^margin/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Top","Right","Bottom","Left"],by,bz,bA;f.fn.css=function(a,c){return f.access(this,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)},a,c,arguments.length>1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),(e===""&&f.css(d,"display")==="none"||!f.contains(d.ownerDocument.documentElement,d))&&f._data(d,"olddisplay",cu(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(ct("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(ct("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o,p,q;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]);if((k=f.cssHooks[g])&&"expand"in k){l=k.expand(a[g]),delete a[g];for(i in l)i in a||(a[i]=l[i])}}for(g in a){h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cu(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cm.test(h)?(q=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),q?(f._data(this,"toggle"+i,q==="show"?"hide":"show"),j[q]()):j[h]()):(m=cn.exec(h),n=j.cur(),m?(o=parseFloat(m[2]),p=m[3]||(f.cssNumber[i]?"":"px"),p!=="px"&&(f.style(this,i,(o||1)+p),n=(o||1)/j.cur()*n,f.style(this,i,n+p)),m[1]&&(o=(m[1]==="-="?-1:1)*o+n),j.custom(n,o,p)):j.custom(n,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:ct("show",1),slideUp:ct("hide",1),slideToggle:ct("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a){return a},swing:function(a){return-Math.cos(a*Math.PI)/2+.5}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cq||cr(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){f._data(e.elem,"fxshow"+e.prop)===b&&(e.options.hide?f._data(e.elem,"fxshow"+e.prop,e.start):e.options.show&&f._data(e.elem,"fxshow"+e.prop,e.end))},h()&&f.timers.push(h)&&!co&&(co=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cq||cr(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(co),co=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(cp.concat.apply([],cp),function(a,b){b.indexOf("margin")&&(f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)})}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cv,cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?cv=function(a,b,c,d){try{d=a.getBoundingClientRect()}catch(e){}if(!d||!f.contains(c,a))return d?{top:d.top,left:d.left}:{top:0,left:0};var g=b.body,h=cy(b),i=c.clientTop||g.clientTop||0,j=c.clientLeft||g.clientLeft||0,k=h.pageYOffset||f.support.boxModel&&c.scrollTop||g.scrollTop,l=h.pageXOffset||f.support.boxModel&&c.scrollLeft||g.scrollLeft,m=d.top+k-i,n=d.left+l-j;return{top:m,left:n}}:cv=function(a,b,c){var d,e=a.offsetParent,g=a,h=b.body,i=b.defaultView,j=i?i.getComputedStyle(a,null):a.currentStyle,k=a.offsetTop,l=a.offsetLeft;while((a=a.parentNode)&&a!==h&&a!==c){if(f.support.fixedPosition&&j.position==="fixed")break;d=i?i.getComputedStyle(a,null):a.currentStyle,k-=a.scrollTop,l-=a.scrollLeft,a===e&&(k+=a.offsetTop,l+=a.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(a.nodeName))&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),g=e,e=a.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&d.overflow!=="visible"&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),j=d}if(j.position==="relative"||j.position==="static")k+=h.offsetTop,l+=h.offsetLeft;f.support.fixedPosition&&j.position==="fixed"&&(k+=Math.max(c.scrollTop,h.scrollTop),l+=Math.max(c.scrollLeft,h.scrollLeft));return{top:k,left:l}},f.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){f.offset.setOffset(this,a,b)});var c=this[0],d=c&&c.ownerDocument;if(!d)return null;if(c===d.body)return f.offset.bodyOffset(c);return cv(c,d,d.documentElement)},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window);
\ No newline at end of file
index 4fd2324a0112f4f5a51f1fe0f58964c024409fde..582dcd1fda197772e5f4ac6e95eb7eeccd617ab0 100644 (file)
@@ -1,39 +1,40 @@
 function rcube_list_widget(a,b){this.ENTER_KEY=13;this.DELETE_KEY=46;this.BACKSPACE_KEY=8;this.list=a?a:null;this.frame=null;this.rows=[];this.selection=[];this.colcount=this.rowcount=0;this.subject_col=-1;this.modkey=0;this.col_drag_active=this.drag_active=this.dont_select=this.toggleselect=this.keyboard=this.column_movable=this.draggable=this.multi_selecting=this.multiexpand=this.multiselect=!1;this.column_fixed=null;this.shift_start=this.last_selected=0;this.focused=this.in_selection_before=!1;
 this.drag_mouse_start=null;this.dblclick_time=600;this.row_init=function(){};if(b&&"object"===typeof b)for(var c in b)this[c]=b[c]}
-rcube_list_widget.prototype={init:function(){if(this.list&&this.list.tBodies[0]){this.rows=[];this.rowcount=0;var a,b,c=this.list.tBodies[0].rows;a=0;for(b=c.length;a<b;a++)this.init_row(c[a]),this.rowcount++;this.init_header();this.frame=this.list.parentNode;this.keyboard&&(rcube_event.add_listener({event:bw.opera?"keypress":"keydown",object:this,method:"key_press"}),rcube_event.add_listener({event:"keydown",object:this,method:"key_down"}))}},init_row:function(a){if(a&&(""+a.id).match(/^rcmrow([a-z0-9\-_=\+\/]+)/i)){var b=
+rcube_list_widget.prototype={init:function(){if(this.list&&this.list.tBodies[0]){this.rows=[];this.rowcount=0;var a,b,c=this.list.tBodies[0].rows;a=0;for(b=c.length;a<b;a++)this.init_row(c[a]),this.rowcount++;this.init_header();this.frame=this.list.parentNode;this.keyboard&&(rcube_event.add_listener({event:bw.opera?"keypress":"keydown",object:this,method:"key_press"}),rcube_event.add_listener({event:"keydown",object:this,method:"key_down"}))}},init_row:function(a){if(a&&String(a.id).match(/^rcmrow([a-z0-9\-_=\+\/]+)/i)){var b=
 this,c=RegExp.$1;a.uid=c;this.rows[c]={uid:c,id:a.id,obj:a};a.onmousedown=function(a){return b.drag_row(a,this.uid)};a.onmouseup=function(a){return b.click_row(a,this.uid)};if(bw.iphone||bw.ipad)a.addEventListener("touchstart",function(a){1==a.touches.length&&(b.drag_row(rcube_event.touchevent(a.touches[0]),this.uid)||a.preventDefault())},!1),a.addEventListener("touchend",function(a){1==a.changedTouches.length&&(b.click_row(rcube_event.touchevent(a.changedTouches[0]),this.uid)||a.preventDefault())},
-!1);document.all&&(a.onselectstart=function(){return!1});this.row_init(this.rows[c])}},init_header:function(){if(this.list&&this.list.tHead){this.colcount=0;var a,b,c=this;if(this.column_movable&&this.list.tHead&&this.list.tHead.rows)for(b=0;b<this.list.tHead.rows[0].cells.length;b++)this.column_fixed!=b&&(a=this.list.tHead.rows[0].cells[b],a.onmousedown=function(a){return c.drag_column(a,this)},this.colcount++)}},clear:function(a){this.list.insertBefore(document.createElement("tbody"),this.list.tBodies[0]);
+!1);document.all&&(a.onselectstart=function(){return!1});this.row_init(this.rows[c])}},init_header:function(){if(this.list&&this.list.tHead){this.colcount=0;var a,b,c=this;if(this.column_movable&&this.list.tHead&&this.list.tHead.rows)for(b=0;b<this.list.tHead.rows[0].cells.length;b++)this.column_fixed!=b&&(a=this.list.tHead.rows[0].cells[b],a.onmousedown=function(a){return c.drag_column(a,this)},this.colcount++)}},clear:function(a){var b=document.createElement("tbody");this.list.insertBefore(b,this.list.tBodies[0]);
 this.list.removeChild(this.list.tBodies[1]);this.rows=[];this.rowcount=0;a&&this.clear_selection();this.frame&&(this.frame.scrollTop=0)},remove_row:function(a,b){var c=this.rows[a]?this.rows[a].obj:null;c&&(c.style.display="none",b&&this.select_next(),delete this.rows[a],this.rowcount--)},insert_row:function(a,b){var c=this.list.tBodies[0];b&&c.rows.length?c.insertBefore(a,c.firstChild):c.appendChild(a);this.init_row(a);this.rowcount++},focus:function(a){var b,c;this.focused=!0;for(b in this.selection)c=
-this.selection[b],this.rows[c]&&this.rows[c].obj&&$(this.rows[c].obj).addClass("selected").removeClass("unfocused");$("*:focus",window).blur();$("iframe").each(function(){this.blur()});(a||(a=window.event))&&rcube_event.cancel(a)},blur:function(){var a,b;this.focused=!1;for(a in this.selection)b=this.selection[a],this.rows[b]&&this.rows[b].obj&&$(this.rows[b].obj).removeClass("selected").addClass("unfocused")},drag_column:function(a,b){if(1<this.colcount){this.drag_start=!0;this.drag_mouse_start=
+this.selection[b],this.rows[c]&&this.rows[c].obj&&$(this.rows[c].obj).addClass("selected").removeClass("unfocused");$(":focus:not(body)").blur();$("iframe").each(function(){this.blur()});(a||(a=window.event))&&rcube_event.cancel(a)},blur:function(){var a,b;this.focused=!1;for(a in this.selection)b=this.selection[a],this.rows[b]&&this.rows[b].obj&&$(this.rows[b].obj).removeClass("selected focused").addClass("unfocused")},drag_column:function(a,b){if(1<this.colcount){this.drag_start=!0;this.drag_mouse_start=
 rcube_event.get_mouse_pos(a);rcube_event.add_listener({event:"mousemove",object:this,method:"column_drag_mouse_move"});rcube_event.add_listener({event:"mouseup",object:this,method:"column_drag_mouse_up"});this.add_dragfix();for(var c=0;c<this.list.tHead.rows[0].cells.length;c++)if(b==this.list.tHead.rows[0].cells[c]){this.selected_column=c;break}}return!1},drag_row:function(a,b){var c=rcube_event.get_target(a),d=c.tagName.toLowerCase();if(this.dont_select||c&&("input"==d||"img"==d)||2==rcube_event.get_button(a))return!0;
 this.in_selection_before=this.in_selection(b)?b:!1;this.in_selection_before||(c=rcube_event.get_modifier(a),this.select_row(b,c,!1));if(this.draggable&&this.selection.length){this.drag_start=!0;this.drag_mouse_start=rcube_event.get_mouse_pos(a);rcube_event.add_listener({event:"mousemove",object:this,method:"drag_mouse_move"});rcube_event.add_listener({event:"mouseup",object:this,method:"drag_mouse_up"});if(bw.iphone||bw.ipad)rcube_event.add_listener({event:"touchmove",object:this,method:"drag_mouse_move"}),
-rcube_event.add_listener({event:"touchend",object:this,method:"drag_mouse_up"});this.add_dragfix()}return!1},click_row:function(a,b){var c=(new Date).getTime(),d=rcube_event.get_modifier(a),e=rcube_event.get_target(a),f=e.tagName.toLowerCase();if(e&&("input"==f||"img"==f))return!0;if(this.dont_select)return this.dont_select=!1;e=c-this.rows[b].clicked<this.dblclick_time;!this.drag_active&&this.in_selection_before==b&&!e&&this.select_row(b,d,!1);this.in_selection_before=this.drag_start=!1;this.rows&&
-e&&this.in_selection(b)?this.triggerEvent("dblclick"):this.triggerEvent("click");this.drag_active||(this.del_dragfix(),rcube_event.cancel(a));this.rows[b].clicked=c;return!1},find_root:function(a){var b=this.rows[a];return b&&b.parent_uid?this.find_root(b.parent_uid):a},expand_row:function(a,b){var c=this.rows[b],d=rcube_event.get_target(a),e=rcube_event.get_modifier(a);this.dont_select=!0;c.clicked=0;c.expanded?(d.className="collapsed",e==CONTROL_KEY||this.multiexpand?this.collapse_all(c):this.collapse(c)):
-(d.className="expanded",e==CONTROL_KEY||this.multiexpand?this.expand_all(c):this.expand(c))},collapse:function(a){a.expanded=!1;this.triggerEvent("expandcollapse",{uid:a.uid,expanded:a.expanded});for(var b=a.depth,a=a?a.obj.nextSibling:null,c;a;){if(1==a.nodeType){if((c=this.rows[a.uid])&&c.depth<=b)break;$(a).css("display","none");c.expanded&&(c.expanded=!1,this.triggerEvent("expandcollapse",{uid:c.uid,expanded:c.expanded}))}a=a.nextSibling}return!1},expand:function(a){var b,c,d,e,f;a?(a.expanded=
-!0,d=a.depth,e=a.obj.nextSibling,this.update_expando(a.uid,!0),this.triggerEvent("expandcollapse",{uid:a.uid,expanded:a.expanded})):(e=this.list.tBodies[0].firstChild,f=d=0);for(;e;){if(1==e.nodeType&&(b=this.rows[e.uid])){if(a&&(!b.depth||b.depth<=d))break;if(b.parent_uid)if((c=this.rows[b.parent_uid])&&c.expanded){if(a&&c==a||f>=c.depth-1)f=c.depth,$(e).css("display",""),b.expanded=!0,this.triggerEvent("expandcollapse",{uid:b.uid,expanded:b.expanded})}else if(a&&(!c||c.depth<=d))break}e=e.nextSibling}return!1},
-collapse_all:function(a){var b,c,d;if(a){if(a.expanded=!1,b=a.depth,c=a.obj.nextSibling,this.update_expando(a.uid),this.triggerEvent("expandcollapse",{uid:a.uid,expanded:a.expanded}),b&&this.multiexpand)return!1}else c=this.list.tBodies[0].firstChild,b=0;for(;c;){if(1==c.nodeType&&(d=this.rows[c.uid])){if(a&&(!d.depth||d.depth<=b))break;(a||d.depth)&&$(c).css("display","none");d.has_children&&d.expanded&&(d.expanded=!1,this.update_expando(d.uid,!1),this.triggerEvent("expandcollapse",{uid:d.uid,expanded:d.expanded}))}c=
-c.nextSibling}return!1},expand_all:function(a){var b,c,d;a?(a.expanded=!0,b=a.depth,c=a.obj.nextSibling,this.update_expando(a.uid,!0),this.triggerEvent("expandcollapse",{uid:a.uid,expanded:a.expanded})):(c=this.list.tBodies[0].firstChild,b=0);for(;c;){if(1==c.nodeType&&(d=this.rows[c.uid])){if(a&&d.depth<=b)break;$(c).css("display","");d.has_children&&!d.expanded&&(d.expanded=!0,this.update_expando(d.uid,!0),this.triggerEvent("expandcollapse",{uid:d.uid,expanded:d.expanded}))}c=c.nextSibling}return!1},
-update_expando:function(a,b){var c=document.getElementById("rcmexpando"+a);c&&(c.className=b?"expanded":"collapsed")},get_next_row:function(){if(!this.rows)return!1;for(var a=this.rows[this.last_selected],a=a?a.obj.nextSibling:null;a&&(1!=a.nodeType||"none"==a.style.display);)a=a.nextSibling;return a},get_prev_row:function(){if(!this.rows)return!1;for(var a=this.rows[this.last_selected],a=a?a.obj.previousSibling:null;a&&(1!=a.nodeType||"none"==a.style.display);)a=a.previousSibling;return a},get_first_row:function(){if(this.rowcount){var a,
-b,c=this.list.tBodies[0].rows;a=0;for(b=c.length-1;a<b;a++)if(c[a].id&&(""+c[a].id).match(/^rcmrow([a-z0-9\-_=\+\/]+)/i)&&null!=this.rows[RegExp.$1])return RegExp.$1}return null},get_last_row:function(){if(this.rowcount){var a,b=this.list.tBodies[0].rows;for(a=b.length-1;0<=a;a--)if(b[a].id&&(""+b[a].id).match(/^rcmrow([a-z0-9\-_=\+\/]+)/i)&&null!=this.rows[RegExp.$1])return RegExp.$1}return null},select_row:function(a,b,c){var d=this.selection.join(",");this.multiselect||(b=0);this.shift_start||
-(this.shift_start=a);if(b){switch(b){case SHIFT_KEY:this.shift_select(a,!1);break;case CONTROL_KEY:c||this.highlight_row(a,!0);break;case CONTROL_SHIFT_KEY:this.shift_select(a,!0);break;default:this.highlight_row(a,!1)}this.multi_selecting=!0}else this.shift_start=a,this.highlight_row(a,!1),this.multi_selecting=!1;this.selection.join(",")!=d&&this.triggerEvent("select");0!=this.last_selected&&this.rows[this.last_selected]&&$(this.rows[this.last_selected].obj).removeClass("focused");this.toggleselect&&
-this.last_selected==a?(this.clear_selection(),a=null):$(this.rows[a].obj).addClass("focused");this.selection.length||(this.shift_start=null);this.last_selected=a},select:function(a){this.select_row(a,!1);this.scrollto(a)},select_next:function(){var a=this.get_next_row(),b=this.get_prev_row();(a=a?a:b)&&this.select_row(a.uid,!1,!1)},select_first:function(a){var b=this.get_first_row();b&&(a?(this.shift_select(b,a),this.triggerEvent("select"),this.scrollto(b)):this.select(b))},select_last:function(a){var b=
-this.get_last_row();b&&(a?(this.shift_select(b,a),this.triggerEvent("select"),this.scrollto(b)):this.select(b))},select_childs:function(a){if(this.rows[a]&&this.rows[a].has_children)for(var b=this.rows[a].depth,a=this.rows[a].obj.nextSibling;a;){if(1==a.nodeType&&(r=this.rows[a.uid])){if(!r.depth||r.depth<=b)break;this.in_selection(r.uid)||this.select_row(r.uid,CONTROL_KEY)}a=a.nextSibling}},shift_select:function(a,b){if(!this.rows[this.shift_start]||!this.selection.length)this.shift_start=a;var c,
-d=this.rows[this.shift_start].obj.rowIndex,e=this.rows[a].obj.rowIndex,f=d<e?d:e,d=d>e?d:e;for(c in this.rows)this.rows[c].obj.rowIndex>=f&&this.rows[c].obj.rowIndex<=d?this.in_selection(c)||this.highlight_row(c,!0):this.in_selection(c)&&!b&&this.highlight_row(c,!0)},in_selection:function(a){for(var b in this.selection)if(this.selection[b]==a)return!0;return!1},select_all:function(a){if(!this.rows||!this.rows.length)return!1;var b,c=this.selection.join(",");this.selection=[];for(b in this.rows)!a||
-!0==this.rows[b][a]?(this.last_selected=b,this.highlight_row(b,!0)):$(this.rows[b].obj).removeClass("selected").removeClass("unfocused");this.selection.join(",")!=c&&this.triggerEvent("select");this.focus();return!0},invert_selection:function(){if(!this.rows||!this.rows.length)return!1;var a,b=this.selection.join(",");for(a in this.rows)this.highlight_row(a,!0);this.selection.join(",")!=b&&this.triggerEvent("select");this.focus();return!0},clear_selection:function(a){var b,c=this.selection.length;
-if(a)for(b in this.selection){if(this.selection[b]==a){this.selection.splice(b,1);break}}else{for(b in this.selection)this.rows[this.selection[b]]&&$(this.rows[this.selection[b]].obj).removeClass("selected").removeClass("unfocused");this.selection=[]}c&&!this.selection.length&&this.triggerEvent("select")},get_selection:function(){return this.selection},get_single_selection:function(){return 1==this.selection.length?this.selection[0]:null},highlight_row:function(a,b){if(this.rows[a]&&!b){if(1<this.selection.length||
-!this.in_selection(a))this.clear_selection(),this.selection[0]=a,$(this.rows[a].obj).addClass("selected")}else if(this.rows[a])if(this.in_selection(a)){var c=$.inArray(a,this.selection),d=this.selection.slice(0,c),c=this.selection.slice(c+1,this.selection.length);this.selection=d.concat(c);$(this.rows[a].obj).removeClass("selected").removeClass("unfocused")}else this.selection[this.selection.length]=a,$(this.rows[a].obj).addClass("selected")},key_press:function(a){var b=a.target||{};if(!0!=this.focused||
-"INPUT"==b.nodeName||"TEXTAREA"==b.nodeName||"SELECT"==b.nodeName)return!0;var b=rcube_event.get_keycode(a),c=rcube_event.get_modifier(a);switch(b){case 40:case 38:case 63233:case 63232:return rcube_event.cancel(a),this.use_arrow_key(b,c);case 61:case 107:case 109:case 32:return rcube_event.cancel(a),a=this.use_plusminus_key(b,c),this.key_pressed=b,this.modkey=c,this.triggerEvent("keypress"),this.modkey=0,a;case 36:return this.select_first(c),rcube_event.cancel(a);case 35:return this.select_last(c),
-rcube_event.cancel(a);default:if(this.key_pressed=b,this.modkey=c,this.triggerEvent("keypress"),this.modkey=0,this.key_pressed==this.BACKSPACE_KEY)return rcube_event.cancel(a)}return!0},key_down:function(a){var b=a.target||{};if(!0!=this.focused||"INPUT"==b.nodeName||"TEXTAREA"==b.nodeName||"SELECT"==b.nodeName)return!0;switch(rcube_event.get_keycode(a)){case 27:if(this.drag_active)return this.drag_mouse_up(a);if(this.col_drag_active)return this.selected_column=null,this.column_drag_mouse_up(a);case 40:case 38:case 63233:case 63232:case 61:case 107:case 109:case 32:if(!rcube_event.get_modifier(a)&&
-this.focused)return rcube_event.cancel(a)}return!0},use_arrow_key:function(a,b){var c;if(40==a||63233==a)c=this.get_next_row();else if(38==a||63232==a)c=this.get_prev_row();c&&(this.select_row(c.uid,b,!1),this.scrollto(c.uid));return!1},use_plusminus_key:function(a,b){var c=this.rows[this.last_selected];if(c)return 32==a&&(a=c.expanded?109:61),61==a||107==a?b==CONTROL_KEY||this.multiexpand?this.expand_all(c):this.expand(c):b==CONTROL_KEY||this.multiexpand?this.collapse_all(c):this.collapse(c),this.update_expando(c.uid,
-c.expanded),!1},scrollto:function(a){var b=this.rows[a].obj;if(b&&this.frame){var c=Number(b.offsetTop);!c&&this.rows[a].parent_uid&&(this.expand_all(this.rows[this.find_root(this.rows[a].uid)]),c=Number(b.offsetTop));c<Number(this.frame.scrollTop)?this.frame.scrollTop=c:c+Number(b.offsetHeight)>Number(this.frame.scrollTop)+Number(this.frame.offsetHeight)&&(this.frame.scrollTop=c+Number(b.offsetHeight)-Number(this.frame.offsetHeight))}},drag_mouse_move:function(a){if("touchmove"==a.type)if(1==a.changedTouches.length)a=
-rcube_event.touchevent(a.changedTouches[0]);else return rcube_event.cancel(a);if(this.drag_start){var b=rcube_event.get_mouse_pos(a);if(!this.drag_mouse_start||3>Math.abs(b.x-this.drag_mouse_start.x)&&3>Math.abs(b.y-this.drag_mouse_start.y))return!1;this.draglayer||(this.draglayer=$("<div>").attr("id","rcmdraglayer").css({position:"absolute",display:"none","z-index":2E3}).appendTo(document.body));var c,d,e=$.merge([],this.selection);for(c in e)d=e[c],this.rows[d].has_children&&!this.rows[d].expanded&&
-this.select_childs(d);this.draglayer.html("");for(c=0;c<this.selection.length;c++){if(12<c){this.draglayer.append("...");break}if(e=this.rows[this.selection[c]].obj)for(d=b=0;d<e.childNodes.length;d++)if("TD"==e.childNodes[d].nodeName){0==c&&(this.drag_start_pos=$(e.childNodes[d]).offset());if(0>this.subject_col||0<=this.subject_col&&this.subject_col==b){for(var f,g,h=e.childNodes[d].childNodes,b=0;b<h.length;b++)if((g=e.childNodes[d].childNodes[b])&&(3==g.nodeType||"A"==g.nodeName))f=g;if(!f)break;
-d=$(f).text();d=$.trim(d);d=50<d.length?d.substring(0,50)+"...":d;this.draglayer.append($("<div>").text(d));break}b++}}this.draglayer.show();this.drag_active=!0;this.triggerEvent("dragstart")}this.drag_active&&this.draglayer&&(c=rcube_event.get_mouse_pos(a),this.draglayer.css({left:c.x+20+"px",top:c.y-5+(bw.ie?document.documentElement.scrollTop:0)+"px"}),this.triggerEvent("dragmove",a?a:window.event));return this.drag_start=!1},drag_mouse_up:function(a){document.onmousemove=null;if("touchend"==a.type&&
-1!=a.changedTouches.length)return rcube_event.cancel(a);this.draglayer&&this.draglayer.is(":visible")&&(this.drag_start_pos?this.draglayer.animate(this.drag_start_pos,300,"swing").hide(20):this.draglayer.hide());this.drag_active&&this.focus();this.drag_active=!1;rcube_event.remove_listener({event:"mousemove",object:this,method:"drag_mouse_move"});rcube_event.remove_listener({event:"mouseup",object:this,method:"drag_mouse_up"});if(bw.iphone||bw.ipad)rcube_event.remove_listener({event:"touchmove",object:this,
-method:"drag_mouse_move"}),rcube_event.remove_listener({event:"touchend",object:this,method:"drag_mouse_up"});this.del_dragfix();this.triggerEvent("dragend");return rcube_event.cancel(a)},column_drag_mouse_move:function(a){if(this.drag_start){var b;b=rcube_event.get_mouse_pos(a);if(!this.drag_mouse_start||3>Math.abs(b.x-this.drag_mouse_start.x)&&3>Math.abs(b.y-this.drag_mouse_start.y))return!1;if(!this.col_draglayer){b=$(this.list).offset();var c=this.list.tHead.rows[0].cells;this.col_draglayer=$("<div>").attr("id",
-"rcmcoldraglayer").css(b).css({position:"absolute","z-index":2001,"background-color":"white",opacity:0.75,height:this.frame.offsetHeight-2+"px",width:this.frame.offsetWidth-2+"px"}).appendTo(document.body).append($("<div>").attr("id","rcmcolumnindicator").css({position:"absolute","border-right":"2px dotted #555","z-index":2002,height:this.frame.offsetHeight-2+"px"}));this.cols=[];this.list_pos=this.list_min_pos=b.left;for(b=0;b<c.length;b++)this.cols[b]=c[b].offsetWidth,null!==this.column_fixed&&
-b<=this.column_fixed&&(this.list_min_pos+=this.cols[b])}this.col_draglayer.show();this.col_drag_active=!0;this.triggerEvent("column_dragstart")}if(this.col_drag_active&&this.col_draglayer){var c=0,d=rcube_event.get_mouse_pos(a);for(b=0;b<this.cols.length;b++)if(d.x>=this.cols[b]/2+this.list_pos+c)c+=this.cols[b];else break;0==b&&this.list_min_pos>d.x?c=this.list_min_pos-this.list_pos:!this.list.rowcount&&b==this.cols.length&&(c-=2);$("#rcmcolumnindicator").css({width:c+"px"});this.triggerEvent("column_dragmove",
-a?a:window.event)}return this.drag_start=!1},column_drag_mouse_up:function(a){document.onmousemove=null;this.col_draglayer&&(this.col_draglayer.remove(),this.col_draglayer=null);this.col_drag_active&&this.focus();this.col_drag_active=!1;rcube_event.remove_listener({event:"mousemove",object:this,method:"column_drag_mouse_move"});rcube_event.remove_listener({event:"mouseup",object:this,method:"column_drag_mouse_up"});this.del_dragfix();if(null!==this.selected_column&&this.cols&&this.cols.length){var b,
-c=0,d=rcube_event.get_mouse_pos(a);for(b=0;b<this.cols.length;b++)if(d.x>=this.cols[b]/2+this.list_pos+c)c+=this.cols[b];else break;b!=this.selected_column&&b!=this.selected_column+1&&this.column_replace(this.selected_column,b)}this.triggerEvent("column_dragend");return rcube_event.cancel(a)},add_dragfix:function(){$("iframe").each(function(){$('<div class="iframe-dragdrop-fix"></div>').css({background:"#fff",width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",
-zIndex:1E3}).css($(this).offset()).appendTo(document.body)})},del_dragfix:function(){$("div.iframe-dragdrop-fix").each(function(){this.parentNode.removeChild(this)})},column_replace:function(a,b){var c;c=this.list.tHead.rows[0].cells;var d=c[a],e=c[b],f=document.createElement("td");e?c[0].parentNode.insertBefore(f,e):c[0].parentNode.appendChild(f);c[0].parentNode.replaceChild(d,f);r=0;for(c=this.list.tBodies[0].rows.length;r<c;r++)row=this.list.tBodies[0].rows[r],d=row.cells[a],e=row.cells[b],f=document.createElement("td"),
-e?row.insertBefore(f,e):row.appendChild(f),row.replaceChild(d,f);this.subject_col==a?this.subject_col=b>a?b-1:b:this.subject_col<a&&b<=this.subject_col?this.subject_col++:this.subject_col>a&&b>=this.subject_col&&this.subject_col--;this.triggerEvent("column_replace")}};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;
+rcube_event.add_listener({event:"touchend",object:this,method:"drag_mouse_up"});this.add_dragfix()}return!1},click_row:function(a,b){var c=(new Date).getTime(),d=rcube_event.get_modifier(a),e=rcube_event.get_target(a),f=e.tagName.toLowerCase();if(e&&("input"==f||"img"==f))return!0;if(this.dont_select)return this.dont_select=!1;e=c-this.rows[b].clicked<this.dblclick_time;!this.drag_active&&(this.in_selection_before==b&&!e)&&this.select_row(b,d,!1);this.in_selection_before=this.drag_start=!1;this.rows&&
+e&&this.in_selection(b)?(this.triggerEvent("dblclick"),c=0):this.triggerEvent("click");this.drag_active||(this.del_dragfix(),rcube_event.cancel(a));this.rows[b].clicked=c;return!1},find_root:function(a){var b=this.rows[a];return b&&b.parent_uid?this.find_root(b.parent_uid):a},expand_row:function(a,b){var c=this.rows[b],d=rcube_event.get_target(a),e=rcube_event.get_modifier(a);this.dont_select=!0;c.clicked=0;c.expanded?(d.className="collapsed",e==CONTROL_KEY||this.multiexpand?this.collapse_all(c):
+this.collapse(c)):(d.className="expanded",e==CONTROL_KEY||this.multiexpand?this.expand_all(c):this.expand(c))},collapse:function(a){a.expanded=!1;this.triggerEvent("expandcollapse",{uid:a.uid,expanded:a.expanded,obj:a.obj});for(var b=a.depth,a=a?a.obj.nextSibling:null,c;a;){if(1==a.nodeType){if((c=this.rows[a.uid])&&c.depth<=b)break;$(a).css("display","none");c.expanded&&(c.expanded=!1,this.triggerEvent("expandcollapse",{uid:c.uid,expanded:c.expanded,obj:a}))}a=a.nextSibling}return!1},expand:function(a){var b,
+c,d,e,f;a?(a.expanded=!0,d=a.depth,e=a.obj.nextSibling,this.update_expando(a.uid,!0),this.triggerEvent("expandcollapse",{uid:a.uid,expanded:a.expanded,obj:a.obj})):(e=this.list.tBodies[0].firstChild,f=d=0);for(;e;){if(1==e.nodeType&&(b=this.rows[e.uid])){if(a&&(!b.depth||b.depth<=d))break;if(b.parent_uid)if((c=this.rows[b.parent_uid])&&c.expanded){if(a&&c==a||f>=c.depth-1)f=c.depth,$(e).css("display",""),b.expanded=!0,this.triggerEvent("expandcollapse",{uid:b.uid,expanded:b.expanded,obj:e})}else if(a&&
+(!c||c.depth<=d))break}e=e.nextSibling}return!1},collapse_all:function(a){var b,c,d;if(a){if(a.expanded=!1,b=a.depth,c=a.obj.nextSibling,this.update_expando(a.uid),this.triggerEvent("expandcollapse",{uid:a.uid,expanded:a.expanded,obj:a.obj}),b&&this.multiexpand)return!1}else c=this.list.tBodies[0].firstChild,b=0;for(;c;){if(1==c.nodeType&&(d=this.rows[c.uid])){if(a&&(!d.depth||d.depth<=b))break;(a||d.depth)&&$(c).css("display","none");d.has_children&&d.expanded&&(d.expanded=!1,this.update_expando(d.uid,
+!1),this.triggerEvent("expandcollapse",{uid:d.uid,expanded:d.expanded,obj:c}))}c=c.nextSibling}return!1},expand_all:function(a){var b,c,d;a?(a.expanded=!0,b=a.depth,c=a.obj.nextSibling,this.update_expando(a.uid,!0),this.triggerEvent("expandcollapse",{uid:a.uid,expanded:a.expanded,obj:a.obj})):(c=this.list.tBodies[0].firstChild,b=0);for(;c;){if(1==c.nodeType&&(d=this.rows[c.uid])){if(a&&d.depth<=b)break;$(c).css("display","");d.has_children&&!d.expanded&&(d.expanded=!0,this.update_expando(d.uid,!0),
+this.triggerEvent("expandcollapse",{uid:d.uid,expanded:d.expanded,obj:c}))}c=c.nextSibling}return!1},update_expando:function(a,b){var c=document.getElementById("rcmexpando"+a);c&&(c.className=b?"expanded":"collapsed")},get_next_row:function(){if(!this.rows)return!1;for(var a=this.rows[this.last_selected],a=a?a.obj.nextSibling:null;a&&(1!=a.nodeType||"none"==a.style.display);)a=a.nextSibling;return a},get_prev_row:function(){if(!this.rows)return!1;for(var a=this.rows[this.last_selected],a=a?a.obj.previousSibling:
+null;a&&(1!=a.nodeType||"none"==a.style.display);)a=a.previousSibling;return a},get_first_row:function(){if(this.rowcount){var a,b,c=this.list.tBodies[0].rows;a=0;for(b=c.length-1;a<b;a++)if(c[a].id&&String(c[a].id).match(/^rcmrow([a-z0-9\-_=\+\/]+)/i)&&null!=this.rows[RegExp.$1])return RegExp.$1}return null},get_last_row:function(){if(this.rowcount){var a,b=this.list.tBodies[0].rows;for(a=b.length-1;0<=a;a--)if(b[a].id&&String(b[a].id).match(/^rcmrow([a-z0-9\-_=\+\/]+)/i)&&null!=this.rows[RegExp.$1])return RegExp.$1}return null},
+select_row:function(a,b,c){var d=this.selection.join(",");this.multiselect||(b=0);this.shift_start||(this.shift_start=a);if(b){switch(b){case SHIFT_KEY:this.shift_select(a,!1);break;case CONTROL_KEY:c||this.highlight_row(a,!0);break;case CONTROL_SHIFT_KEY:this.shift_select(a,!0);break;default:this.highlight_row(a,!1)}this.multi_selecting=!0}else this.shift_start=a,this.highlight_row(a,!1),this.multi_selecting=!1;this.selection.join(",")!=d&&this.triggerEvent("select");0!=this.last_selected&&this.rows[this.last_selected]&&
+$(this.rows[this.last_selected].obj).removeClass("focused");this.toggleselect&&this.last_selected==a?(this.clear_selection(),a=null):$(this.rows[a].obj).addClass("focused");this.selection.length||(this.shift_start=null);this.last_selected=a},select:function(a){this.select_row(a,!1);this.scrollto(a)},select_next:function(){var a=this.get_next_row(),b=this.get_prev_row();(a=a?a:b)&&this.select_row(a.uid,!1,!1)},select_first:function(a){var b=this.get_first_row();b&&(a?(this.shift_select(b,a),this.triggerEvent("select"),
+this.scrollto(b)):this.select(b))},select_last:function(a){var b=this.get_last_row();b&&(a?(this.shift_select(b,a),this.triggerEvent("select"),this.scrollto(b)):this.select(b))},select_childs:function(a){if(this.rows[a]&&this.rows[a].has_children)for(var b=this.rows[a].depth,a=this.rows[a].obj.nextSibling;a;){if(1==a.nodeType&&(r=this.rows[a.uid])){if(!r.depth||r.depth<=b)break;this.in_selection(r.uid)||this.select_row(r.uid,CONTROL_KEY)}a=a.nextSibling}},shift_select:function(a,b){if(!this.rows[this.shift_start]||
+!this.selection.length)this.shift_start=a;var c,d=this.rows[this.shift_start].obj.rowIndex,e=this.rows[a].obj.rowIndex,f=d<e?d:e,d=d>e?d:e;for(c in this.rows)this.rows[c].obj.rowIndex>=f&&this.rows[c].obj.rowIndex<=d?this.in_selection(c)||this.highlight_row(c,!0):this.in_selection(c)&&!b&&this.highlight_row(c,!0)},in_selection:function(a){for(var b in this.selection)if(this.selection[b]==a)return!0;return!1},select_all:function(a){if(!this.rows||!this.rows.length)return!1;var b,c=this.selection.join(",");
+this.selection=[];for(b in this.rows)!a||!0==this.rows[b][a]?(this.last_selected=b,this.highlight_row(b,!0)):$(this.rows[b].obj).removeClass("selected").removeClass("unfocused");this.selection.join(",")!=c&&this.triggerEvent("select");this.focus();return!0},invert_selection:function(){if(!this.rows||!this.rows.length)return!1;var a,b=this.selection.join(",");for(a in this.rows)this.highlight_row(a,!0);this.selection.join(",")!=b&&this.triggerEvent("select");this.focus();return!0},clear_selection:function(a){var b,
+c=this.selection.length;if(a)for(b in this.selection){if(this.selection[b]==a){this.selection.splice(b,1);break}}else{for(b in this.selection)this.rows[this.selection[b]]&&$(this.rows[this.selection[b]].obj).removeClass("selected").removeClass("unfocused");this.selection=[]}c&&!this.selection.length&&this.triggerEvent("select")},get_selection:function(){return this.selection},get_single_selection:function(){return 1==this.selection.length?this.selection[0]:null},highlight_row:function(a,b){if(this.rows[a]&&
+!b){if(1<this.selection.length||!this.in_selection(a))this.clear_selection(),this.selection[0]=a,$(this.rows[a].obj).addClass("selected")}else if(this.rows[a])if(this.in_selection(a)){var c=$.inArray(a,this.selection),d=this.selection.slice(0,c),c=this.selection.slice(c+1,this.selection.length);this.selection=d.concat(c);$(this.rows[a].obj).removeClass("selected").removeClass("unfocused")}else this.selection[this.selection.length]=a,$(this.rows[a].obj).addClass("selected")},key_press:function(a){var b=
+a.target||{};if(!0!=this.focused||"INPUT"==b.nodeName||"TEXTAREA"==b.nodeName||"SELECT"==b.nodeName)return!0;var b=rcube_event.get_keycode(a),c=rcube_event.get_modifier(a);switch(b){case 40:case 38:case 63233:case 63232:return rcube_event.cancel(a),this.use_arrow_key(b,c);case 61:case 107:case 109:case 32:return rcube_event.cancel(a),a=this.use_plusminus_key(b,c),this.key_pressed=b,this.modkey=c,this.triggerEvent("keypress"),this.modkey=0,a;case 36:return this.select_first(c),rcube_event.cancel(a);
+case 35:return this.select_last(c),rcube_event.cancel(a);default:if(this.key_pressed=b,this.modkey=c,this.triggerEvent("keypress"),this.modkey=0,this.key_pressed==this.BACKSPACE_KEY)return rcube_event.cancel(a)}return!0},key_down:function(a){var b=a.target||{};if(!0!=this.focused||"INPUT"==b.nodeName||"TEXTAREA"==b.nodeName||"SELECT"==b.nodeName)return!0;switch(rcube_event.get_keycode(a)){case 27:if(this.drag_active)return this.drag_mouse_up(a);if(this.col_drag_active)return this.selected_column=
+null,this.column_drag_mouse_up(a);case 40:case 38:case 63233:case 63232:case 61:case 107:case 109:case 32:if(!rcube_event.get_modifier(a)&&this.focused)return rcube_event.cancel(a)}return!0},use_arrow_key:function(a,b){var c;if(40==a||63233==a)c=this.get_next_row();else if(38==a||63232==a)c=this.get_prev_row();c&&(this.select_row(c.uid,b,!1),this.scrollto(c.uid));return!1},use_plusminus_key:function(a,b){var c=this.rows[this.last_selected];if(c)return 32==a&&(a=c.expanded?109:61),61==a||107==a?b==
+CONTROL_KEY||this.multiexpand?this.expand_all(c):this.expand(c):b==CONTROL_KEY||this.multiexpand?this.collapse_all(c):this.collapse(c),this.update_expando(c.uid,c.expanded),!1},scrollto:function(a){var b=this.rows[a].obj;if(b&&this.frame){var c=Number(b.offsetTop);!c&&this.rows[a].parent_uid&&(a=this.find_root(this.rows[a].uid),this.expand_all(this.rows[a]),c=Number(b.offsetTop));c<Number(this.frame.scrollTop)?this.frame.scrollTop=c:c+Number(b.offsetHeight)>Number(this.frame.scrollTop)+Number(this.frame.offsetHeight)&&
+(this.frame.scrollTop=c+Number(b.offsetHeight)-Number(this.frame.offsetHeight))}},drag_mouse_move:function(a){if("touchmove"==a.type)if(1==a.changedTouches.length)a=rcube_event.touchevent(a.changedTouches[0]);else return rcube_event.cancel(a);if(this.drag_start){var b=rcube_event.get_mouse_pos(a);if(!this.drag_mouse_start||3>Math.abs(b.x-this.drag_mouse_start.x)&&3>Math.abs(b.y-this.drag_mouse_start.y))return!1;this.draglayer||(this.draglayer=$("<div>").attr("id","rcmdraglayer").css({position:"absolute",
+display:"none","z-index":2E3}).appendTo(document.body));var c,d,e=$.merge([],this.selection);for(c in e)d=e[c],this.rows[d].has_children&&!this.rows[d].expanded&&this.select_childs(d);this.draglayer.html("");for(c=0;c<this.selection.length;c++){if(12<c){this.draglayer.append("...");break}if(e=this.rows[this.selection[c]].obj)for(d=b=0;d<e.childNodes.length;d++)if("TD"==e.childNodes[d].nodeName){0==c&&(this.drag_start_pos=$(e.childNodes[d]).offset());if(0>this.subject_col||0<=this.subject_col&&this.subject_col==
+b){for(var f,g,h=e.childNodes[d].childNodes,b=0;b<h.length;b++)if((g=e.childNodes[d].childNodes[b])&&(3==g.nodeType||"A"==g.nodeName))f=g;if(!f)break;d=$(f).text();d=$.trim(d);d=50<d.length?d.substring(0,50)+"...":d;d=$("<div>").text(d);this.draglayer.append(d);break}b++}}this.draglayer.show();this.drag_active=!0;this.triggerEvent("dragstart")}this.drag_active&&this.draglayer&&(c=rcube_event.get_mouse_pos(a),this.draglayer.css({left:c.x+20+"px",top:c.y-5+(bw.ie?document.documentElement.scrollTop:
+0)+"px"}),this.triggerEvent("dragmove",a?a:window.event));return this.drag_start=!1},drag_mouse_up:function(a){document.onmousemove=null;if("touchend"==a.type&&1!=a.changedTouches.length)return rcube_event.cancel(a);this.draglayer&&this.draglayer.is(":visible")&&(this.drag_start_pos?this.draglayer.animate(this.drag_start_pos,300,"swing").hide(20):this.draglayer.hide());this.drag_active&&this.focus();this.drag_active=!1;rcube_event.remove_listener({event:"mousemove",object:this,method:"drag_mouse_move"});
+rcube_event.remove_listener({event:"mouseup",object:this,method:"drag_mouse_up"});if(bw.iphone||bw.ipad)rcube_event.remove_listener({event:"touchmove",object:this,method:"drag_mouse_move"}),rcube_event.remove_listener({event:"touchend",object:this,method:"drag_mouse_up"});this.del_dragfix();this.triggerEvent("dragend");return rcube_event.cancel(a)},column_drag_mouse_move:function(a){if(this.drag_start){var b;b=rcube_event.get_mouse_pos(a);if(!this.drag_mouse_start||3>Math.abs(b.x-this.drag_mouse_start.x)&&
+3>Math.abs(b.y-this.drag_mouse_start.y))return!1;if(!this.col_draglayer){b=$(this.list).offset();var c=this.list.tHead.rows[0].cells;this.col_draglayer=$("<div>").attr("id","rcmcoldraglayer").css(b).css({position:"absolute","z-index":2001,"background-color":"white",opacity:0.75,height:this.frame.offsetHeight-2+"px",width:this.frame.offsetWidth-2+"px"}).appendTo(document.body).append($("<div>").attr("id","rcmcolumnindicator").css({position:"absolute","border-right":"2px dotted #555","z-index":2002,
+height:this.frame.offsetHeight-2+"px"}));this.cols=[];this.list_pos=this.list_min_pos=b.left;for(b=0;b<c.length;b++)this.cols[b]=c[b].offsetWidth,null!==this.column_fixed&&b<=this.column_fixed&&(this.list_min_pos+=this.cols[b])}this.col_draglayer.show();this.col_drag_active=!0;this.triggerEvent("column_dragstart")}if(this.col_drag_active&&this.col_draglayer){var c=0,d=rcube_event.get_mouse_pos(a);for(b=0;b<this.cols.length;b++)if(d.x>=this.cols[b]/2+this.list_pos+c)c+=this.cols[b];else break;0==b&&
+this.list_min_pos>d.x?c=this.list_min_pos-this.list_pos:!this.list.rowcount&&b==this.cols.length&&(c-=2);$("#rcmcolumnindicator").css({width:c+"px"});this.triggerEvent("column_dragmove",a?a:window.event)}return this.drag_start=!1},column_drag_mouse_up:function(a){document.onmousemove=null;this.col_draglayer&&(this.col_draglayer.remove(),this.col_draglayer=null);this.col_drag_active&&this.focus();this.col_drag_active=!1;rcube_event.remove_listener({event:"mousemove",object:this,method:"column_drag_mouse_move"});
+rcube_event.remove_listener({event:"mouseup",object:this,method:"column_drag_mouse_up"});this.del_dragfix();if(null!==this.selected_column&&this.cols&&this.cols.length){var b,c=0,d=rcube_event.get_mouse_pos(a);for(b=0;b<this.cols.length;b++)if(d.x>=this.cols[b]/2+this.list_pos+c)c+=this.cols[b];else break;b!=this.selected_column&&b!=this.selected_column+1&&this.column_replace(this.selected_column,b)}this.triggerEvent("column_dragend");return rcube_event.cancel(a)},add_dragfix:function(){$("iframe").each(function(){$('<div class="iframe-dragdrop-fix"></div>').css({background:"#fff",
+width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css($(this).offset()).appendTo(document.body)})},del_dragfix:function(){$("div.iframe-dragdrop-fix").each(function(){this.parentNode.removeChild(this)})},column_replace:function(a,b){var c;c=this.list.tHead.rows[0].cells;var d=c[a],e=c[b],f=document.createElement("td");e?c[0].parentNode.insertBefore(f,e):c[0].parentNode.appendChild(f);c[0].parentNode.replaceChild(d,f);r=0;for(c=this.list.tBodies[0].rows.length;r<
+c;r++)row=this.list.tBodies[0].rows[r],d=row.cells[a],e=row.cells[b],f=document.createElement("td"),e?row.insertBefore(f,e):row.appendChild(f),row.replaceChild(d,f);this.subject_col==a?this.subject_col=b>a?b-1:b:this.subject_col<a&&b<=this.subject_col?this.subject_col++:this.subject_col>a&&b>=this.subject_col&&this.subject_col--;this.triggerEvent("column_replace")}};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;
index e15d03d22346be4a0378fd5d7c207b26d6d55f33..6ab6867e8975825cc72fab8d60e1f6abe2397db2 100644 (file)
@@ -4,7 +4,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2006-2009, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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.                     |
  |                                                                       |
  +-----------------------------------------------------------------------+
  | Authors: Thomas Bruederli <roundcube@gmail.com>                       |
@@ -13,7 +16,7 @@
  | Requires: common.js                                                   |
  +-----------------------------------------------------------------------+
 
-  $Id: list.js 5757 2012-01-12 07:29:48Z alec $
+  $Id$
 */
 
 
@@ -230,8 +233,8 @@ focus: function(e)
     }
   }
 
-  // Un-focus already focused elements
-  $('*:focus', window).blur();
+  // Un-focus already focused elements (#1487123, #1487316, #1488600, #1488620)
+  $(':focus:not(body)').blur();
   $('iframe').each(function() { this.blur(); });
 
   if (e || (e = window.event))
@@ -249,7 +252,7 @@ blur: function()
   for (n in this.selection) {
     id = this.selection[n];
     if (this.rows[id] && this.rows[id].obj) {
-      $(this.rows[id].obj).removeClass('selected').addClass('unfocused');
+      $(this.rows[id].obj).removeClass('selected focused').addClass('unfocused');
     }
   }
 },
@@ -354,8 +357,10 @@ click_row: function(e, id)
   this.in_selection_before = false;
 
   // row was double clicked
-  if (this.rows && dblclicked && this.in_selection(id))
+  if (this.rows && dblclicked && this.in_selection(id)) {
     this.triggerEvent('dblclick');
+    now = 0;
+  }
   else
     this.triggerEvent('click');
 
@@ -414,7 +419,7 @@ expand_row: function(e, id)
 collapse: function(row)
 {
   row.expanded = false;
-  this.triggerEvent('expandcollapse', { uid:row.uid, expanded:row.expanded });
+  this.triggerEvent('expandcollapse', { uid:row.uid, expanded:row.expanded, obj:row.obj });
   var depth = row.depth;
   var new_row = row ? row.obj.nextSibling : null;
   var r;
@@ -427,7 +432,7 @@ collapse: function(row)
       $(new_row).css('display', 'none');
       if (r.expanded) {
         r.expanded = false;
-        this.triggerEvent('expandcollapse', { uid:r.uid, expanded:r.expanded });
+        this.triggerEvent('expandcollapse', { uid:r.uid, expanded:r.expanded, obj:new_row });
       }
     }
     new_row = new_row.nextSibling;
@@ -445,7 +450,7 @@ expand: function(row)
     depth = row.depth;
     new_row = row.obj.nextSibling;
     this.update_expando(row.uid, true);
-    this.triggerEvent('expandcollapse', { uid:row.uid, expanded:row.expanded });
+    this.triggerEvent('expandcollapse', { uid:row.uid, expanded:row.expanded, obj:row.obj });
   }
   else {
     var tbody = this.list.tBodies[0];
@@ -468,7 +473,7 @@ expand: function(row)
               last_expanded_parent_depth = p.depth;
               $(new_row).css('display', '');
               r.expanded = true;
-              this.triggerEvent('expandcollapse', { uid:r.uid, expanded:r.expanded });
+              this.triggerEvent('expandcollapse', { uid:r.uid, expanded:r.expanded, obj:new_row });
             }
           }
           else
@@ -493,7 +498,7 @@ collapse_all: function(row)
     depth = row.depth;
     new_row = row.obj.nextSibling;
     this.update_expando(row.uid);
-    this.triggerEvent('expandcollapse', { uid:row.uid, expanded:row.expanded });
+    this.triggerEvent('expandcollapse', { uid:row.uid, expanded:row.expanded, obj:row.obj });
 
     // don't collapse sub-root tree in multiexpand mode 
     if (depth && this.multiexpand)
@@ -515,7 +520,7 @@ collapse_all: function(row)
         if (r.has_children && r.expanded) {
           r.expanded = false;
           this.update_expando(r.uid, false);
-          this.triggerEvent('expandcollapse', { uid:r.uid, expanded:r.expanded });
+          this.triggerEvent('expandcollapse', { uid:r.uid, expanded:r.expanded, obj:new_row });
         }
       }
     }
@@ -534,7 +539,7 @@ expand_all: function(row)
     depth = row.depth;
     new_row = row.obj.nextSibling;
     this.update_expando(row.uid, true);
-    this.triggerEvent('expandcollapse', { uid:row.uid, expanded:row.expanded });
+    this.triggerEvent('expandcollapse', { uid:row.uid, expanded:row.expanded, obj:row.obj });
   }
   else {
     new_row = this.list.tBodies[0].firstChild;
@@ -551,7 +556,7 @@ expand_all: function(row)
         if (r.has_children && !r.expanded) {
           r.expanded = true;
           this.update_expando(r.uid, true);
-          this.triggerEvent('expandcollapse', { uid:r.uid, expanded:r.expanded });
+          this.triggerEvent('expandcollapse', { uid:r.uid, expanded:r.expanded, obj:new_row });
         }
       }
     }
@@ -606,7 +611,7 @@ get_first_row: function()
 
     for (i=0, len=rows.length-1; i<len; i++)
       if (rows[i].id && String(rows[i].id).match(/^rcmrow([a-z0-9\-_=\+\/]+)/i) && this.rows[RegExp.$1] != null)
-           return RegExp.$1;
+        return RegExp.$1;
   }
 
   return null;
old mode 100755 (executable)
new mode 100644 (file)
index 6aec968..0efcb51
@@ -1 +1 @@
-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.:   \u062f\u062e\u0644 \u0635\u0627\u0644\u062d \u0627\u0644\u0642\u064a\u0645 \u060c \u0648\u0647\u0630\u0647 \u0647\u064a \u0645\u0639\u0644\u0645\u0629 \u0628\u0627\u0644\u0644\u0648\u0646 \u0627\u0644\u0627\u062d\u0645\u0631",popup_blocked:"\u0639\u0630\u0631\u0627 \u060c \u0644\u0643\u0646 \u0644\u0627\u062d\u0638\u0646\u0627 \u0628\u0623\u0646 \u0645\u0627 \u062a\u062a\u0645\u062a\u0639\u0648\u0646 \u0628\u0647 \u0627\u0644\u0645\u0646\u0628\u062b\u0642\u0629 \u0645\u062d\u0635\u0631 \u0648\u062a\u0639\u0637\u064a\u0644 \u0627\u0644\u0625\u0637\u0627\u0631 \u0627\u0644\u0630\u064a \u064a\u0648\u0641\u0631 \u0648\u0638\u0627\u0626\u0641 \u0627\u0644\u062a\u0637\u0628\u064a\u0642. \u0633\u0648\u0641 \u062a\u062d\u062a\u0627\u062c \u0625\u0644\u0649 \u062a\u0639\u0637\u064a\u0644 \u0627\u0644\u0645\u0646\u0628\u062b\u0642\u0629 \u062d\u0638\u0631 \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u0645\u0648\u0642\u0639 \u0645\u0646 \u0623\u062c\u0644 \u0627\u0644\u0627\u0633\u062a\u0641\u0627\u062f\u0629 \u0627\u0644\u0643\u0627\u0645\u0644\u0629 \u0645\u0646 \u0647\u0630\u0647 \u0627\u0644\u0623\u062f\u0627\u0629",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\u062a\u0637\u0628\u064a\u0642\u0637\u0628\u064a\u0642",edit_confirm:"Do you want to use the WYSIWYG mode for this textarea?"},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:"\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",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 \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",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",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:"Horizontal rule",delta_height:"",delta_width:""},emotions:{emotions_desc:"\u0627\u0644\u0631\u0633\u0648\u0645 \u0627\u0644\u062a\u0639\u0628\u064a\u0631\u064a\u0647",delta_height:"",delta_width:""},searchreplace:{replace_desc:"\u0628\u062d\u062b/\u0627\u0633\u062a\u0628\u062f\u0627\u0644",search_desc:"\u0628\u062d\u062b",delta_width:"",delta_height:""},advimage:{image_desc:"Insert/edit image",delta_width:"",delta_height:""},advlink:{link_desc:"\u0627\u062f\u062e\u0627\u0644 -\u062a\u0639\u062f\u064a\u0644 \u0631\u0627\u0628\u0637",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:"\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:{cell:"\u0627\u0644\u062e\u0644\u064a\u0629",col:"\u0627\u0644\u0639\u0645\u0648\u062f",row:"\u0627\u0644\u0635\u0641",del:"\u062d\u0630\u0641 \u062c\u062f\u0648\u0644",copy_row_desc:"\u0646\u0633\u062e\u0629 \u0627\u0644\u062c\u062f\u0648\u0644 \u0627\u0644\u0635\u0641",cut_row_desc:"\u0642\u0635 \u0627\u0644\u062c\u062f\u0648\u0644 \u0627\u0644\u0635\u0641",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 \u0627\u0644\u062c\u062f\u0648\u0644 \u0627\u0644\u062e\u0644\u064a\u0629",row_desc:"\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u062c\u062f\u0648\u0644 \u0627\u0644\u0635\u0641",merge_cells_desc:"\u062f\u0645\u062c \u0627\u0644\u062e\u0644\u0627\u064a\u0627 \u0627\u0644\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",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:"\u062a\u0628\u062f\u064a\u0644 \u0648\u0636\u0639 \u0645\u0644\u0621 \u0627\u0644\u0634\u0627\u0634\u0629"},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."},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"}}});
\ No newline at end of file
+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
index 001db5d55ce731d43f3563bc13bfdc50b0a1b04b..2de458701833b33fee21d5eb317fc03b9eb64043 100644 (file)
@@ -1 +1 @@
-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?"},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."},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"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index ae41c1f..d188269
@@ -1 +1 @@
-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?"},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 \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 \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 \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.",text_linebreaks:"\u0417\u0430\u043f\u0430\u0437\u0438 \u043d\u043e\u0432\u0438\u0442\u0435 \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:{edit:"\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u043a \u043c\u0435\u0434\u0438\u0430",desc:"\u0412\u043c\u044a\u043a\u043d\u0438/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u043c\u0435\u0434\u0438\u0430\u0442\u0430",delta_height:"",delta_width:""},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."},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"}}});
\ No newline at end of file
+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
index 338c654f803eabd7546673c6e9af5866d278ad05..32d703e718164e38eac302501ceb2caed68f477b 100644 (file)
@@ -1 +1 @@
-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?"},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."},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"}}});
\ No newline at end of file
+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
index 334379157e8e938ac8713f8fb7ae3c2532f6523f..0209224b2eca1fa08e1dcb2c4f3747a1e1b0ceaf 100644 (file)
@@ -1 +1 @@
-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?"},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."},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"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index debc0cc..794702d
@@ -1 +1 @@
-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?"},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."},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"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index b4948ea..f944c2c
@@ -1 +1 @@
-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?"},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."},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"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 20452a1..463dda8
@@ -1 +1 @@
-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?"},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."},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"}}});
\ No newline at end of file
+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
index 76ff2c87004a2c6d738fb41794b2a9e401f3264c..51a6c0ea95b74dd0a5ee6044353194562613a0b8 100644 (file)
@@ -1 +1 @@
-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?"},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:"Emosiwn",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:"Toglu modd sgrin llawn"},media:{edit:"Golygu cyfrwng planedig",desc:"Mewnosod / golygu cyfrwng planedig",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."},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"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 48510a3..36c7540
@@ -1 +1 @@
-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?"},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."},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"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 9126080..1494406
@@ -1 +1 @@
-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?"},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/ersetzen",delta_width:"",delta_height:""},advlink:{link_desc:"Link einf\u00fcgen/bearbeiten",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."},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"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 48d4c20..084193b
@@ -1 +1 @@
-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 ;"},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:{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",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:"\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."},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:{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"}}});
\ No newline at end of file
+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
index 8a80d46b1ae369c481c8c6fea4b4c1cc86f891b1..16d7a93e0f0e5739d1858457216e6fcb8070cbbc 100644 (file)
@@ -1,223 +1 @@
-tinyMCE.addI18n({en:{\r
-common:{\r
-edit_confirm:"Do you want to use the WYSIWYG mode for this textarea?",\r
-apply:"Apply",\r
-insert:"Insert",\r
-update:"Update",\r
-cancel:"Cancel",\r
-close:"Close",\r
-browse:"Browse",\r
-class_name:"Class",\r
-not_set:"-- Not set --",\r
-clipboard_msg:"Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?",\r
-clipboard_no_support:"Currently not supported by your browser, use keyboard shortcuts instead.",\r
-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.",\r
-invalid_data:"{#field} is invalid",\r
-invalid_data_number:"{#field} must be a number",\r
-invalid_data_min:"{#field} must be a number greater than {#min}",\r
-invalid_data_size:"{#field} must be a number or percentage",\r
-more_colors:"More colors"\r
-},\r
-colors:{\r
-'000000':'Black',\r
-'993300':'Burnt orange',\r
-'333300':'Dark olive',\r
-'003300':'Dark green',\r
-'003366':'Dark azure',\r
-'000080':'Navy Blue',\r
-'333399':'Indigo',\r
-'333333':'Very dark gray',\r
-'800000':'Maroon',\r
-'FF6600':'Orange',\r
-'808000':'Olive',\r
-'008000':'Green',\r
-'008080':'Teal',\r
-'0000FF':'Blue',\r
-'666699':'Grayish blue',\r
-'808080':'Gray',\r
-'FF0000':'Red',\r
-'FF9900':'Amber',\r
-'99CC00':'Yellow green',\r
-'339966':'Sea green',\r
-'33CCCC':'Turquoise',\r
-'3366FF':'Royal blue',\r
-'800080':'Purple',\r
-'999999':'Medium gray',\r
-'FF00FF':'Magenta',\r
-'FFCC00':'Gold',\r
-'FFFF00':'Yellow',\r
-'00FF00':'Lime',\r
-'00FFFF':'Aqua',\r
-'00CCFF':'Sky blue',\r
-'993366':'Brown',\r
-'C0C0C0':'Silver',\r
-'FF99CC':'Pink',\r
-'FFCC99':'Peach',\r
-'FFFF99':'Light yellow',\r
-'CCFFCC':'Pale green',\r
-'CCFFFF':'Pale cyan',\r
-'99CCFF':'Light sky blue',\r
-'CC99FF':'Plum',\r
-'FFFFFF':'White'\r
-},\r
-contextmenu:{\r
-align:"Alignment",\r
-left:"Left",\r
-center:"Center",\r
-right:"Right",\r
-full:"Full"\r
-},\r
-insertdatetime:{\r
-date_fmt:"%Y-%m-%d",\r
-time_fmt:"%H:%M:%S",\r
-insertdate_desc:"Insert date",\r
-inserttime_desc:"Insert time",\r
-months_long:"January,February,March,April,May,June,July,August,September,October,November,December",\r
-months_short:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec",\r
-day_long:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday",\r
-day_short:"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun"\r
-},\r
-print:{\r
-print_desc:"Print"\r
-},\r
-preview:{\r
-preview_desc:"Preview"\r
-},\r
-directionality:{\r
-ltr_desc:"Direction left to right",\r
-rtl_desc:"Direction right to left"\r
-},\r
-layer:{\r
-insertlayer_desc:"Insert new layer",\r
-forward_desc:"Move forward",\r
-backward_desc:"Move backward",\r
-absolute_desc:"Toggle absolute positioning",\r
-content:"New layer..."\r
-},\r
-save:{\r
-save_desc:"Save",\r
-cancel_desc:"Cancel all changes"\r
-},\r
-nonbreaking:{\r
-nonbreaking_desc:"Insert non-breaking space character"\r
-},\r
-iespell:{\r
-iespell_desc:"Run spell checking",\r
-download:"ieSpell not detected. Do you want to install it now?"\r
-},\r
-advhr:{\r
-advhr_desc:"Horizontal rule"\r
-},\r
-emotions:{\r
-emotions_desc:"Emotions"\r
-},\r
-searchreplace:{\r
-search_desc:"Find",\r
-replace_desc:"Find/Replace"\r
-},\r
-advimage:{\r
-image_desc:"Insert/edit image"\r
-},\r
-advlink:{\r
-link_desc:"Insert/edit link"\r
-},\r
-xhtmlxtras:{\r
-cite_desc:"Citation",\r
-abbr_desc:"Abbreviation",\r
-acronym_desc:"Acronym",\r
-del_desc:"Deletion",\r
-ins_desc:"Insertion",\r
-attribs_desc:"Insert/Edit Attributes"\r
-},\r
-style:{\r
-desc:"Edit CSS Style"\r
-},\r
-paste:{\r
-paste_text_desc:"Paste as Plain Text",\r
-paste_word_desc:"Paste from Word",\r
-selectall_desc:"Select All",\r
-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.",\r
-plaintext_mode:"Paste is now in plain text mode. Click again to toggle back to regular paste mode."\r
-},\r
-paste_dlg:{\r
-text_title:"Use CTRL+V on your keyboard to paste the text into the window.",\r
-text_linebreaks:"Keep linebreaks",\r
-word_title:"Use CTRL+V on your keyboard to paste the text into the window."\r
-},\r
-table:{\r
-desc:"Inserts a new table",\r
-row_before_desc:"Insert row before",\r
-row_after_desc:"Insert row after",\r
-delete_row_desc:"Delete row",\r
-col_before_desc:"Insert column before",\r
-col_after_desc:"Insert column after",\r
-delete_col_desc:"Remove column",\r
-split_cells_desc:"Split merged table cells",\r
-merge_cells_desc:"Merge table cells",\r
-row_desc:"Table row properties",\r
-cell_desc:"Table cell properties",\r
-props_desc:"Table properties",\r
-paste_row_before_desc:"Paste table row before",\r
-paste_row_after_desc:"Paste table row after",\r
-cut_row_desc:"Cut table row",\r
-copy_row_desc:"Copy table row",\r
-del:"Delete table",\r
-row:"Row",\r
-col:"Column",\r
-cell:"Cell"\r
-},\r
-autosave:{\r
-unload_msg:"The changes you made will be lost if you navigate away from this page.",\r
-restore_content:"Restore auto-saved content.",\r
-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?."\r
-},\r
-fullscreen:{\r
-desc:"Toggle fullscreen mode"\r
-},\r
-media:{\r
-desc:"Insert / edit embedded media",\r
-edit:"Edit embedded media"\r
-},\r
-fullpage:{\r
-desc:"Document properties"\r
-},\r
-template:{\r
-desc:"Insert predefined template content"\r
-},\r
-visualchars:{\r
-desc:"Visual control characters on/off."\r
-},\r
-spellchecker:{\r
-desc:"Toggle spellchecker",\r
-menu:"Spellchecker settings",\r
-ignore_word:"Ignore word",\r
-ignore_words:"Ignore all",\r
-langs:"Languages",\r
-wait:"Please wait...",\r
-sug:"Suggestions",\r
-no_sug:"No suggestions",\r
-no_mpell:"No misspellings found.",\r
-learn_word:"Learn word" \r
-},\r
-pagebreak:{\r
-desc:"Insert page break."\r
-},\r
-advlist:{\r
-types:"Types",\r
-def:"Default",\r
-lower_alpha:"Lower alpha",\r
-lower_greek:"Lower greek",\r
-lower_roman:"Lower roman",\r
-upper_alpha:"Upper alpha",\r
-upper_roman:"Upper roman",\r
-circle:"Circle",\r
-disc:"Disc",\r
-square:"Square"\r
-},\r
-aria:{\r
-rich_text_area:"Rich Text Area"\r
-},\r
-wordcount:{\r
-words: 'Words: '\r
-}\r
-}});
\ No newline at end of file
+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":"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:{"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:"}}});
\ No newline at end of file
diff --git a/program/js/tiny_mce/langs/eo.js b/program/js/tiny_mce/langs/eo.js
new file mode 100644 (file)
index 0000000..8a5b455
--- /dev/null
@@ -0,0 +1 @@
+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
old mode 100755 (executable)
new mode 100644 (file)
index ff1d885..9dc3063
@@ -1 +1 @@
-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?"},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:{"image_desc":"Insertar/editar imagen","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:{"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":"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":"Keep linebreaks","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."},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"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 6d1fbb0..637551b
@@ -1 +1 @@
-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?"},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:{selectall_desc:"Vali k\u00f5ik",paste_word_desc:"Kleebi Wordist",paste_text_desc:"Kleebi tavalise tekstina",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:"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:{unload_msg:"Tehtud muudatused kaovad, kui lahkute siit lehelt.",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:"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."},pagebreak:{desc:"Sisesta lehevahetus."},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"}}});
\ No newline at end of file
+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
index 7a0ceba067f3efaa8a2331a9e9b89ea436684f29..c386478c711670772ba06a97b92de380663ae8ba 100644 (file)
@@ -1,206 +1 @@
-tinyMCE.addI18n({eu:{\r
-common:{\r
-edit_confirm:"Testu-kutxa honek WYSIWYG editorea izatea nahi duzu?",\r
-apply:"Aplikatu",\r
-insert:"Txertatu",\r
-update:"Eguneratu",\r
-cancel:"Utzi",\r
-close:"Itxi",\r
-browse:"Arakatu",\r
-class_name:"Kalsea",\r
-not_set:"-- Ezarri gabe --",\r
-clipboard_msg:"Kopiatu/Ebaki/Itsatsi ez dago Mozilla eta Firefoxen.\nHonen inguruko informazioa nahi duzu??",\r
-clipboard_no_support:"Zure nabigatzailean ez dabil, erabili teklatuko laster-teklak honetarako..",\r
-popup_blocked:"Ups, zure popup blokeatzaileak funtzionalitate bat eskaintzen duen leihoa blokeatu du. Blokeatzailea desgaitu beharko duzu tresna hau erabiltzeko.",\r
-invalid_data:"Errorea: baliogabeak diren aukerak sartu dituzu, gorriz agertzen dira.",\r
-more_colors:"Kolore gehiago"\r
-},\r
-contextmenu:{\r
-align:"Alineazioa",\r
-left:"Ezkerrean",\r
-center:"Zentratuta",\r
-right:"Eskuinean",\r
-full:"Justifikatuta"\r
-},\r
-insertdatetime:{\r
-date_fmt:"%Y-%m-%d",\r
-time_fmt:"%H:%M:%S",\r
-insertdate_desc:"Data txertatu",\r
-inserttime_desc:"Ordua txertatu",\r
-months_long:"Urtarrila,Otsaila,Martxoa,Apirila,Maiatza,Ekaina,Uztaila,Abuztua,Iraila,Urria,Azaroa,Abendua",\r
-months_short:"Urt,Ots,Mar,Api,Mai,Eka,Uzt,Abu,Ira,Urr,Aza,Abe",\r
-day_long:"Igandea,Astelehena,Asteartea,Asteazkena,Osteguna,Ostirala,Larunbata,Igandea",\r
-day_short:"Ig,Al,As,Az,Og,Or,Lr,Ig"\r
-},\r
-print:{\r
-print_desc:"Inprimatu"\r
-},\r
-preview:{\r
-preview_desc:"Aurreikusi"\r
-},\r
-directionality:{\r
-ltr_desc:"Ezkerretik eskumara",\r
-rtl_desc:"Eskuinatik ezkerrera"\r
-},\r
-layer:{\r
-insertlayer_desc:"Kapa berria txertatu",\r
-forward_desc:"Aurrera joan",\r
-backward_desc:"Atzera joan",\r
-absolute_desc:"Posizionatze-absolutua aktibatu/desaktibatu",\r
-content:"Kapa berria..."\r
-},\r
-save:{\r
-save_desc:"Gorde",\r
-cancel_desc:"Aldaketak bertan behera utzi"\r
-},\r
-nonbreaking:{\r
-nonbreaking_desc:"Espazioa txertatu"\r
-},\r
-iespell:{\r
-iespell_desc:"Hizkuntza zuzendu",\r
-download:"ieSpell ez da aurkitu. Instalatu egin nahi duzu?"\r
-},\r
-advhr:{\r
-advhr_desc:"Marra horizontala",\r
-delta_width:"Zabalera",\r
-delta_height:"Altuera"\r
-},\r
-emotions:{\r
-emotions_desc:"Ikonotxoak",\r
-delta_width:"Zabalera",\r
-delta_height:"Altuera"\r
-},\r
-searchreplace:{\r
-search_desc:"Bilatu",\r
-replace_desc:"Bilatu/Ordeztu",\r
-delta_width:"Zabalera",\r
-delta_height:"Altuera"\r
-},\r
-advimage:{\r
-image_desc:"Irudia txertatu/editatu",\r
-delta_width:"Zabalera",\r
-delta_height:"Altuera"\r
-},\r
-advlink:{\r
-link_desc:"Lotura txertatu/editatu",\r
-delta_width:"Zabalera",\r
-delta_height:"Altuera"\r
-},\r
-xhtmlxtras:{\r
-cite_desc:"Zita",\r
-abbr_desc:"Laburdura",\r
-acronym_desc:"Akronimoa",\r
-del_desc:"Ezabaketa",\r
-ins_desc:"Txertaketa",\r
-attribs_desc:"Atributuak txertatu/editatu",\r
-cite_delta_width:"Ziten zabalera",\r
-cite_delta_height:"Ziten altuera",\r
-abbr_delta_width:"Laburduren zabalera",\r
-abbr_delta_height:"Laburduren altuera",\r
-acronym_delta_width:"Akronimoen zabalera",\r
-acronym_delta_height:"Akronimoen altuera",\r
-del_delta_width:"Ezabaketaren zabalera",\r
-del_delta_height:"Ezabaketaren altuera",\r
-ins_delta_width:"Txertaketaren zabalera",\r
-ins_delta_height:"Txertaketaren altuera",\r
-attribs_delta_width:"Atributuen zabalera",\r
-attribs_delta_height:"Atributuen altuera"\r
-},\r
-style:{\r
-desc:"Aldatu CSS estiloa",\r
-delta_width:"Zabalera",\r
-delta_height:"Altuera"\r
-},\r
-paste:{\r
-paste_text_desc:"Testu gisa itsatsi",\r
-paste_word_desc:"Word-etik itsatsi",\r
-selectall_desc:"Aukeratu guztia",\r
-plaintext_mode_sticky:"Itsasketa testu moduan dago orain. Egin klik itsasketa arruntera itzultzeko. Zerbait itsatsi ostean, modu arruntera pasatuko zara automatikoki.",\r
-plaintext_mode:"Itsasketa testu moduan dago orain. Egin klik itsasketa arruntera itzultzeko."\r
-},\r
-paste_dlg:{\r
-text_title:"Erabili CTRL+V testua lehioan itsasteko.",\r
-text_linebreaks:"Mantendu lerro-jauziak",\r
-word_title:"Erabili CTRL+V testua lehioan itsasteko.."\r
-},\r
-table:{\r
-desc:"Taula berri bat txertatu",\r
-row_before_desc:"Txertatu lerroa aurretik",\r
-row_after_desc:"Txertatu lerroa ondoren",\r
-delete_row_desc:"Ezabatu lerroa",\r
-col_before_desc:"Txertatu zutabea aurretik",\r
-col_after_desc:"Txertatu zutabea ondoren",\r
-delete_col_desc:"Ezabatu zutabea",\r
-split_cells_desc:"Banatu bateratutako gelaxkak",\r
-merge_cells_desc:"Bateratu gelaxkak",\r
-row_desc:"Lerro ezaugarriak",\r
-cell_desc:"Gelaxka ezaugarriak",\r
-props_desc:"Taula ezaugarriak",\r
-paste_row_before_desc:"Itsatsi lerroa aurretik",\r
-paste_row_after_desc:"Itsatsi lerroa ondoren",\r
-cut_row_desc:"Moztu lerroa",\r
-copy_row_desc:"Kopiatu lerroa",\r
-del:"Ezabatu taula",\r
-row:"Lerroa",\r
-col:"Zutabea",\r
-cell:"Gelaxka",\r
-rowprops_delta_width:"Lerroen propietateen zabalera",\r
-rowprops_delta_height:"Lerroen propietateen altuera",\r
-cellprops_delta_width:"Gelaxken propietateen zabalera",\r
-cellprops_delta_height:"Gelaxken propietateen altuera",\r
-table_delta_width:"Taularen zabalera",\r
-table_delta_height:"Taularen altuera",\r
-merge_cells_delta_width:"Gelaxkak batzearen zabalera",\r
-merge_cells_delta_height:"Gelaxkak batzearen altuera"\r
-},\r
-autosave:{\r
-unload_msg:"Egindako aldaketak galdu egingo dira orri honetatik kanpona nabigatzen baldin baduzu.",\r
-restore_content:"Automatikoki gordetako edukia errekuperatu.",\r
-warning_message:"Gordetako edukia errekuperatzen baduzu, orain editorean dagoena galdu egingo duzu.\n\nZiur zaude gordetakoa errekuperatzea nahi duzula?"\r
-},\r
-fullscreen:{\r
-desc:"Aldatu pantaila osoko modura"\r
-},\r
-media:{\r
-desc:"Insert / edit embedded media",\r
-edit:"Edit embedded media",\r
-delta_width:"Zabalera",\r
-delta_height:"Altuera"\r
-},\r
-fullpage:{\r
-desc:"Dokumentuaren ezaugarriak",\r
-delta_width:"Zabalera",\r
-delta_height:"Altuera"\r
-},\r
-template:{\r
-desc:"Txertatu aurredefinitutako txantiloiaren edukia"\r
-},\r
-visualchars:{\r
-desc:"Begi kontrol karaktereak gaitu/ezgaitu."\r
-},\r
-spellchecker:{\r
-desc:"Toggle spellchecker",\r
-menu:"Spellchecker settings",\r
-ignore_word:"Ezikusi hitza",\r
-ignore_words:"Ezikusi guztiak",\r
-langs:"Hizkuntzak",\r
-wait:"Itxaron mesedez...",\r
-sug:"Gomendioa",\r
-no_sug:"Gomendiorik ez",\r
-no_mpell:"Ez da akatsik aurkitu."\r
-},\r
-pagebreak:{\r
-desc:"Txertatu orri jauzia."\r
-},\r
-advlist:{\r
-types:"Motak",\r
-def:"Defektuzkoa",\r
-lower_alpha:"Hizki xeheak",\r
-lower_greek:"Hizki greko xeheak",\r
-lower_roman:"Zenbaki erromatar xeheak",\r
-upper_alpha:"Hizki larriak",\r
-upper_roman:"Zenbaki erromatar larriak",\r
-circle:"Borobila",\r
-disc:"Diskoa",\r
-square:"Karratua"\r
-}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 2dca7bc..cd0bffb
@@ -1 +1 @@
-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 \u0648\u06cc\u0632\u06cc\u200c\u0648\u06cc\u06af(\u0646\u0645\u0627\u06cc\u0634 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0631 \u062d\u0627\u0644\u062a \u0686\u0627\u067e \u0634\u062f\u0646\u06cc) \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"},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\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_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",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:{advhr_desc:"\u062e\u0637 \u0627\u0641\u0642\u06cc",delta_height:"",delta_width:""},emotions:{emotions_desc:"\u0634\u06a9\u0644\u06a9",delta_height:"",delta_width:""},searchreplace:{replace_desc:"\u062c\u0633\u062a\u062c\u0648/\u062a\u0639\u0648\u06cc\u0636",search_desc:"\u062c\u0633\u062a\u062c\u0648",delta_width:"",delta_height:""},advimage:{image_desc:"\u062f\u0631\u062c/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u062a\u0635\u0648\u06cc\u0631",delta_width:"",delta_height:""},advlink:{link_desc:"\u062f\u0631\u062c/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0644\u06cc\u0646\u06a9",delta_height:"",delta_width:""},xhtmlxtras:{attribs_desc:"\u062f\u0631\u062c/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0635\u0641\u0627\u062a",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",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:"\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0627\u0633\u062a\u06cc\u0644 CSS",delta_height:"",delta_width:""},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:{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:"\u06cc\u06a9 \u062c\u062f\u0648\u0644 \u062c\u062f\u06cc\u062f \u062f\u0631\u062c \u0645\u06cc \u06a9\u0646\u062f",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:"\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:{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)",delta_height:"",delta_width:""},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."},pagebreak:{desc:"\u062f\u0631\u062c \u0642\u0637\u0639 \u0635\u0641\u062d\u0647."},advlist:{types:"\u0627\u0646\u0648\u0627\u0639",def:"\u067e\u06cc\u0634\u200c\u0641\u0631\u0636",lower_alpha:"\u067e\u0627\u06cc\u06cc\u0646\u200c\u062a\u0631 (alpha)",lower_greek:"\u067e\u0627\u06cc\u06cc\u0646\u200c\u062a\u0631 (greek)",lower_roman:"\u067e\u0627\u06cc\u06cc\u0646\u200c\u062a\u0631 (roman)",upper_alpha:"\u0628\u0627\u0644\u0627\u062a\u0631 (alpha)",upper_roman:"\u0628\u0627\u0644\u0627\u062a\u0631 (roman)",circle:"\u062f\u0627\u06cc\u0631\u0647",disc:"\u0642\u0631\u0635 \u0645\u0627\u0646\u0646\u062f",square:"\u0645\u0631\u0628\u0639"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index d5282dc..08eea14
@@ -1 +1 @@
-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?"},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."},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"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index c968352..b9cfd8b
@@ -1 +1 @@
-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 ?"},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:{emotions_desc:"\u00c9motic\u00f4nes",delta_height:"",delta_width:""},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 perdus 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."},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"}}});
\ No newline at end of file
+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
index 18586e9255384977669aabfb8ccb3c196b05a75a..08aff0856f831c3463831466de070da801c374ab 100644 (file)
@@ -1 +1 @@
-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?"},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."},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"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index b3d6a0c..0f4e12d
@@ -1 +1 @@
-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?"},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"},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"}}});
\ No newline at end of file
+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
index 44f0d426d80f008700968ee774692f85e4705eff..50305a8132cef3ea05c65a1d8dceba899f9f97a0 100644 (file)
@@ -1 +1 @@
-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?"},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."},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"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 5532901..4bcc2cd
@@ -1 +1 @@
-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?"},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:{delta_width:"100",link_desc:"Insert/edit 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:"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:"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:"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:"Promjene u dokumentu \u0107e biti izgubljene ako iza\u0111ete s ove stranice."},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."},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"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 833a795..864af04
@@ -1 +1 @@
-tinyMCE.addI18n({hu:{common:{"more_colors":"T\u00f6bb sz\u00edn","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?"},contextmenu:{full:"Sorkiz\u00e1r\u00e1s",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":"\u00d6sszes v\u00e1ltoz\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\u00e9s","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."},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":"Lisbet\u0171s r\u00f3mai","upper_alpha":"Nagybet\u0171s ABC","upper_roman":"Nagybet\u0171s r\u00f3mai",circle:"K\u00f6r",disc:"Lemez",square:"N\u00e9gyzet"}}});
\ No newline at end of file
+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
index aae642c0d13c0b3e6f814869456949f058b953a4..04a24f6f4af8e332372d458d79c48eebf963739f 100644 (file)
@@ -1 +1 @@
-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?"},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"},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"}}});
\ No newline at end of file
+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/ia.js b/program/js/tiny_mce/langs/ia.js
deleted file mode 100644 (file)
index 7918f75..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({ia:{common:{more_colors:"\u66f4\u591a\u989c\u8272",invalid_data:"\u9519\u8bef\uff1a\u8f93\u5165\u4e86\u65e0\u6548\u7684\u503c\uff0c\u5df2\u6807\u8bb0\u4e3a\u7ea2\u8272\u3002",popup_blocked:"\u5bf9\u4e0d\u8d77\uff0c\u60a8\u7684\u5feb\u663e\u7a97\u53e3\u963b\u6b62\u7a0b\u5e8f\u5df2\u7ecf\u963b\u6b62\u4e86\u672c\u5feb\u663e\u7a97\u53e3\uff0c\u8bf7\u8c03\u6574\u4f60\u7684\u6d4f\u89c8\u5668\u8bbe\u7f6e\uff0c\u5141\u8bb8\u672c\u7f51\u7ad9\u5f39\u51fa\u65b0\u7a97\u53e3\uff0c\u4ee5\u4fbf\u4f7f\u7528\u6b64\u529f\u80fd",clipboard_no_support:"\u5c1a\u4e0d\u652f\u6301\u60a8\u6240\u4f7f\u7528\u7684\u6d4f\u89c8\u5668\uff0c\u8bf7\u4f7f\u7528\u952e\u76d8\u65b9\u5f0f\u64cd\u4f5c",clipboard_msg:"\u590d\u5236\u3001\u526a\u5207\u548c\u7c98\u8d34\u529f\u80fd\u5728Mozilla \u548c Firefox\u4e2d\u65e0\u6cd5\u4f7f\u7528",not_set:"-- \u672a\u8bbe\u7f6e --",class_name:"\u6837\u5f0f\u7c7b\u540d",browse:"\u6d4f\u89c8",close:"\u5173\u95ed",cancel:"\u53d6\u6d88",update:"\u66f4\u65b0",insert:"\u63d2\u5165",apply:"\u5e94\u7528",edit_confirm:"\u662f\u5426\u5728\u8be5text area\u5185\u542f\u7528\u6240\u89c1\u5373\u6240\u5f97\u6a21\u5f0f\uff1f"},contextmenu:{full:"\u4e24\u7aef\u5bf9\u9f50",right:"\u53f3\u5bf9\u9f50",center:"\u5c45\u4e2d",left:"\u5de6\u5bf9\u9f50",align:"\u5bf9\u9f50\u65b9\u5f0f"},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\u73b0\u5728\u65f6\u95f4",insertdate_desc:"\u63d2\u5165\u4eca\u5929\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\u4ece\u53f3\u5230\u5de6",ltr_desc:"\u6587\u5b57\u4ece\u5de6\u5230\u53f3"},layer:{content:"\u65b0\u589e\u5c42...",absolute_desc:"\u7edd\u5bf9\u4f4d\u7f6e",backward_desc:"\u540e\u7f6e",forward_desc:"\u524d\u7f6e",insertlayer_desc:"\u63d2\u5165\u5c42"},save:{save_desc:"\u4fdd\u5b58",cancel_desc:"\u653e\u5f03\u6240\u6709\u66f4\u6539"},nonbreaking:{nonbreaking_desc:"\u63d2\u5165\u7a7a\u683c\u7b26"},iespell:{download:"\u672a\u68c0\u6d4b\u5230ieSpell\u7ec4\u4ef6\uff0c\u662f\u5426\u73b0\u5728\u5b89\u88c5 ?",iespell_desc:"\u6267\u884c\u62fc\u5199\u68c0\u67e5"},advhr:{advhr_desc:"\u5206\u9694\u7ebf",delta_height:"",delta_width:""},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 \u8fde\u7ed3",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\u8f91 CSS \u6837\u5f0f\u8868",delta_height:"",delta_width:""},paste:{selectall_desc:"\u5168\u9009",paste_word_desc:"\u7c98\u8d34\u4e3aWord\u683c\u5f0f",paste_text_desc:"\u7c98\u8d34\u4e3a\u7eaf\u6587\u5b57",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:"\u5c06\u590d\u5236(CTRL + C)\u7684\u5185\u5bb9\u7c98\u8d34(CTRL + V)\u5230\u7a97\u53e3\u3002",text_linebreaks:"\u4fdd\u7559\u5206\u884c\u7b26\u53f7\u53f7",text_title:"\u5c06\u590d\u5236(CTRL + C)\u7684\u5185\u5bb9\u7c98\u8d34(CTRL + V)\u5230\u7a97\u53e3\u3002"},table:{cell:"\u50a8\u5b58\u683c",col:"\u5217",row:"\u884c",del:"\u5220\u9664\u8868\u683c",copy_row_desc:"\u590d\u5236\u5f53\u524d\u5217",cut_row_desc:"\u526a\u5207\u5f53\u524d\u5217",paste_row_after_desc:"\u7c98\u8d34\u884c\u5230\u4e0b\u65b9",paste_row_before_desc:"\u7c98\u8d34\u884c\u5230\u4e0a\u65b9",props_desc:"\u8868\u683c \u5c5e\u6027",cell_desc:"\u50a8\u5b58\u683c \u5c5e\u6027",row_desc:"\u5217 \u5c5e\u6027",merge_cells_desc:"\u5408\u5e76\u50a8\u5b58\u683c",split_cells_desc:"\u62c6\u5206\u50a8\u5b58\u683c",delete_col_desc:"\u5220\u9664\u5f53\u524d\u5217",col_after_desc:"\u5728\u53f3\u4fa7\u63d2\u5165\u5217",col_before_desc:"\u5728\u5de6\u4fa7\u63d2\u5165\u5217",delete_row_desc:"\u5220\u9664\u5f53\u524d\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:{unload_msg:"\u5982\u679c\u79bb\u5f00\u8be5\u9875\u5c06\u5bfc\u81f4\u6240\u6709\u4fee\u6539\u5168\u90e8\u4e22\u5931\u3002",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:"\u5168\u5c4f\u6a21\u5f0f"},media:{edit:"\u7f16\u8f91 \u5a92\u4f53",desc:"\u63d2\u5165/\u7f16\u8f91 \u5a92\u4f53",delta_height:"",delta_width:""},fullpage:{desc:"\u6587\u4ef6",delta_width:"",delta_height:""},template:{desc:"\u63d2\u5165\u9009\u5b9a\u7684\u8303\u672c"},visualchars:{desc:"\u663e\u793a\u63a7\u5236\u7b26\u53f7\u3002"},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\u6e05\u5355",wait:"\u8bf7\u7a0d\u5019...",sug:"\u5efa\u8bae\u8bcd",no_sug:"\u65e0\u62fc\u5199\u5efa\u8bae",no_mpell:"\u65e0\u62fc\u5199\u9519\u8bef"},pagebreak:{desc:"\u63d2\u5165\u5206\u9875\u7b26\u53f7"},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"}}});
\ No newline at end of file
index e3a97dfe0f8f10d9e5d129ebeeee0e24e7398edb..1577926adeda34285a83e399ca1b583192db86fd 100644 (file)
@@ -1 +1 @@
-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?"},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."},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"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 925d986..ae20e20
@@ -1 +1 @@
-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?"},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."},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"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 17c2117..af57d85
@@ -1 +1 @@
-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?"},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."},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"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 7ca03a1..cdd5399
@@ -1 +1 @@
-tinyMCE.addI18n({ja:{common:{"more_colors":"\u305d\u306e\u4ed6\u306e\u8272","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":"\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u304c\u30d6\u30ed\u30c3\u30af\u3055\u308c\u307e\u3057\u305f\u3002\u3059\u3079\u3066\u306e\u6a5f\u80fd\u3092\u3054\u5229\u7528\u306b\u306a\u308b\u306b\u306f\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u3092\u8a31\u53ef\u3057\u3066\u4e0b\u3055\u3044\u3002","clipboard_no_support":"\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u64cd\u4f5c\u306f\u304a\u4f7f\u3044\u306e\u30d6\u30e9\u30a6\u30b6\u306b\u306f\u5bfe\u5fdc\u3057\u3066\u304a\u308a\u307e\u305b\u3093\u3002\u4ee3\u308f\u308a\u306b\u30ad\u30fc\u30dc\u30fc\u30c9\u306e\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\u30ad\u30fc\u3092\u304a\u4f7f\u3044\u4e0b\u3055\u3044\u3002","clipboard_msg":"\u30b3\u30d4\u30fc/\u5207\u308a\u53d6\u308a/\u8cbc\u308a\u4ed8\u3051\u306fFirefox\u3067\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002\u3088\u308a\u8a73\u7d30\u306a\u60c5\u5831\u3092\u77e5\u308a\u305f\u3044\u3067\u3059\u304b\uff1f","not_set":"-- \u672a\u8a2d\u5b9a --","class_name":"class\u5c5e\u6027",browse:"\u53c2\u7167",close:"\u9589\u3058\u308b",cancel:"\u30ad\u30e3\u30f3\u30bb\u30eb",update:"\u66f4\u65b0",insert:"\u633f\u5165",apply:"\u9069\u7528","edit_confirm":"WYSIWYG\u30e2\u30fc\u30c9\u306b\u5207\u308a\u66ff\u3048\u307e\u3059\u304b\uff1f"},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\u6708,2\u6708,3\u6708,4\u6708,5\u6708,6\u6708,7\u6708,8\u6708,9\u6708,10\u6708,11\u6708,12\u6708","inserttime_desc":"\u6642\u523b\u306e\u633f\u5165","insertdate_desc":"\u65e5\u4ed8\u306e\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\u898f\u30ec\u30a4\u30e4\u30fc","absolute_desc":"\u7d76\u5bfe\u4f4d\u7f6e\u6307\u5b9a\u306e\u5207\u66ff","backward_desc":"\u80cc\u9762\u3078\u79fb\u52d5","forward_desc":"\u524d\u9762\u3078\u79fb\u52d5","insertlayer_desc":"\u65b0\u898f\u30ec\u30a4\u30e4\u30fc\u306e\u633f\u5165"},save:{"save_desc":"\u4fdd\u5b58","cancel_desc":"\u5168\u3066\u306e\u5909\u66f4\u3092\u7834\u68c4"},nonbreaking:{"nonbreaking_desc":"\uff06nbsp\uff1b\u306e\u633f\u5165"},iespell:{download:"ieSpell\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\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","delta_height":"","delta_width":""},emotions:{"emotions_desc":"\u8868\u60c5\u30a2\u30a4\u30b3\u30f3","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"\u691c\u7d22/\u7f6e\u63db","search_desc":"\u691c\u7d22","delta_width":"","delta_height":""},advimage:{"image_desc":"\u753b\u50cf\u306e\u633f\u5165/\u7de8\u96c6","delta_width":"","delta_height":""},advlink:{"link_desc":"\u30ea\u30f3\u30af\u306e\u633f\u5165/\u7de8\u96c6","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"\u5c5e\u6027\u306e\u633f\u5165/\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\u7de8\u96c6","delta_height":"","delta_width":""},paste:{"plaintext_mode":"\u30d7\u30ec\u30fc\u30f3\u30c6\u30ad\u30b9\u30c8\u30e2\u30fc\u30c9\u306b\u5909\u66f4\u3057\u307e\u3057\u305f\u3002\u901a\u5e38\u306e\u30e2\u30fc\u30c9\u306b\u623b\u3059\u5834\u5408\u306f\u3082\u3046\u4e00\u5ea6\u30a2\u30a4\u30b3\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002","plaintext_mode_sticky":"\u30d7\u30ec\u30fc\u30f3\u30c6\u30ad\u30b9\u30c8\u30e2\u30fc\u30c9\u306b\u5909\u66f4\u3057\u307e\u3057\u305f\u3002\u901a\u5e38\u306e\u30e2\u30fc\u30c9\u306b\u623b\u3059\u5834\u5408\u306f\u3082\u3046\u4e00\u5ea6\u30a2\u30a4\u30b3\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u8cbc\u308a\u4ed8\u3051\u5f8c\u306f\u901a\u5e38\u306e\u30e2\u30fc\u30c9\u306b\u623b\u308a\u307e\u3059\u3002","selectall_desc":"\u5168\u3066\u9078\u629e","paste_word_desc":"Word\u304b\u3089\u8cbc\u308a\u4ed8\u3051","paste_text_desc":"\u30c6\u30ad\u30b9\u30c8\u3068\u3057\u3066\u8cbc\u308a\u4ed8\u3051"},"paste_dlg":{"word_title":"\u30ad\u30fc\u30dc\u30fc\u30c9\u3067CTRL+V\u3092\u62bc\u3057\u3066\u30c6\u30ad\u30b9\u30c8\u3092\u8cbc\u308a\u4ed8\u3051\u3066\u304f\u3060\u3055\u3044\u3002","text_linebreaks":"\u6539\u884c\u3092\u4fdd\u6301\u3059\u308b","text_title":"\u30ad\u30fc\u30dc\u30fc\u30c9\u3067CTRL+V\u3092\u62bc\u3057\u3066\u30c6\u30ad\u30b9\u30c8\u3092\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\u306e\u30b3\u30d4\u30fc","cut_row_desc":"\u884c\u306e\u5207\u308a\u53d6\u308a","paste_row_after_desc":"\u884c\u3092\u4e0b\u306b\u8cbc\u308a\u4ed8\u3051","paste_row_before_desc":"\u884c\u3092\u4e0a\u306b\u8cbc\u308a\u4ed8\u3051","props_desc":"\u8868\u306e\u30d7\u30ed\u30d1\u30c6\u30a3","cell_desc":"\u30bb\u30eb\u306e\u30d7\u30ed\u30d1\u30c6\u30a3","row_desc":"\u884c\u306e\u30d7\u30ed\u30d1\u30c6\u30a3","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":"\u5217\u3092\u53f3\u306b\u633f\u5165","col_before_desc":"\u5217\u3092\u5de6\u306b\u633f\u5165","delete_row_desc":"\u884c\u3092\u524a\u9664","row_after_desc":"\u884c\u3092\u4e0b\u306b\u633f\u5165","row_before_desc":"\u884c\u3092\u4e0a\u306b\u633f\u5165",desc:"\u8868\u3092\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":"\u81ea\u52d5\u4fdd\u5b58\u3055\u308c\u305f\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u3080\u3068\u3001\u73fe\u5728\u306e\u7de8\u96c6\u5185\u5bb9\u306f\u3059\u3079\u3066\u5931\u308f\u308c\u307e\u3059\u3002\u81ea\u52d5\u4fdd\u5b58\u3055\u308c\u305f\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u307f\u307e\u3059\u304b\uff1f","restore_content":"\u81ea\u52d5\u4fdd\u5b58\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u3080","unload_msg":"\u4ed6\u306e\u30da\u30fc\u30b8\u3078\u79fb\u52d5\u3059\u308b\u3068\u7de8\u96c6\u30c7\u30fc\u30bf\u306f\u3059\u3079\u3066\u7834\u68c4\u3055\u308c\u307e\u3059\u3002"},fullscreen:{desc:"\u5168\u753b\u9762\u30e2\u30fc\u30c9"},media:{edit:"\u57cb\u3081\u8fbc\u307f\u30e1\u30c7\u30a3\u30a2\u306e\u7de8\u96c6",desc:"\u57cb\u3081\u8fbc\u307f\u30e1\u30c7\u30a3\u30a2\u306e\u633f\u5165/\u7de8\u96c6","delta_height":"","delta_width":""},fullpage:{desc:"\u30da\u30fc\u30b8\u8a2d\u5b9a","delta_width":"","delta_height":""},template:{desc:"\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u633f\u5165"},visualchars:{desc:"\u5236\u5fa1\u6587\u5b57\u306e\u8868\u793a"},spellchecker:{desc:"\u30b9\u30da\u30eb\u30c1\u30a7\u30c3\u30afOn/Off",menu:"\u30b9\u30da\u30eb\u30c1\u30a7\u30c3\u30af\u8a2d\u5b9a","ignore_word":"\u3053\u306e\u5358\u8a9e\u3092\u7121\u8996","ignore_words":"\u5168\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\u306f\u6709\u308a\u307e\u305b\u3093\u3002","no_mpell":"\u30b9\u30da\u30eb\u30df\u30b9\u306f\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002"},pagebreak:{desc:"\u6539\u30da\u30fc\u30b8\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"}}});
\ No newline at end of file
+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
index 3fd8dc9360b7f82da05c18f1fa6dbeb2bc6b1838..e7b73a3546f241927d8aeca5e53bf78ca4a5a6c8 100644 (file)
@@ -1 +1 @@
-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?"},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."},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"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index acb057b..e9b2cc9
@@ -1 +1 @@
-tinyMCE.addI18n({ko:{common:{more_colors:"\uadf8 \uc678\uc758 \uc0c9",invalid_data:"\uc5d0\ub7ec: \uc720\ud6a8\ud558\uc9c0 \uc54a\ub294 \uae00\uc790\uac00 \uc788\uc2b5\ub2c8\ub2e4. \ube68\uac04\uc0c9\uc73c\ub85c \ud45c\uc2dc\ub429\ub2c8\ub2e4.",popup_blocked:"\ud31d\uc5c5\uc774 \ucc28\ub2e8\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ubaa8\ub4e0 \uae30\ub2a5\uc744 \uc774\uc6a9\ud558\uc2dc\uae30 \uc704\ud574\uc11c\ub294 \ud31d\uc5c5\ucc28\ub2e8\uc744 \ud574\uc81c\ud574 \uc8fc\uc138\uc694.",clipboard_no_support:"\uc774 \uae30\ub2a5\uc740 \ube0c\ub77c\uc6b0\uc800\uc5d0 \uc758\ud574 \uc81c\ud55c\ub418\uace0 \uc788\uc2b5\ub2c8\ub2e4. \ub2e8\ucd95\ud0a4\uc744 \uc774\uc6a9\ud558\uc2ed\uc2dc\uc624.",clipboard_msg:"\ubcf5\uc0ac/\uc798\ub77c\ub0b4\uae30/\ubd99\uc774\uae30\ub294 Mozilla \ubc0fFirefox \uc5d0\uc11c \uc0ac\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\\n\uc0c1\uc138\uc815\ubcf4\ub97c \ud45c\uc2dc\ud569\ub2c8\uae4c?",not_set:"-- \uc5c6\uc74c --",class_name:"\ud074\ub798\uc2a4",browse:"\ube0c\ub77c\uc6b0\uc988",close:"\ub2eb\uae30",cancel:"\ucde8\uc18c",update:"\uac31\uc2e0",insert:"\uc0bd\uc785",apply:"\uc801\uc6a9",edit_confirm:"WYSIWYG\ubaa8\ub4dc\ub85c \uc804\ud658\ud569\ub2c8\uae4c?"},contextmenu:{full:"\ubc30\ubd84 \uc815\ub82c",right:"\uc624\ub978\ucabd \uc815\ub82c",center:"\uac00\uc6b4\ub370 \uc815\ub82c",left:"\uc67c\ucabd \uc815\ub82c",align:"\uc815\ub82c"},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\ub85c \uc804\ud658",backward_desc:"\ub4a4\ub85c \uc774\ub3d9",forward_desc:"\uc55e\uc73c\ub85c \uc774\ub3d9",insertlayer_desc:"\uc0c8 \ub808\uc774\uc5b4"},save:{save_desc:"\uc800\uc7a5",cancel_desc:"\ubaa8\ub450 \ucde8\uc18c"},nonbreaking:{nonbreaking_desc:"\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",delta_height:"",delta_width:""},emotions:{emotions_desc:"\uc774\ubaa8\ud2f0\ucf58",delta_height:"",delta_width:""},searchreplace:{replace_desc:"\uac80\uc0c9/\uce58\ud658",search_desc:"\uac80\uc0c9",delta_width:"",delta_height:""},advimage:{image_desc:"\uc774\ubbf8\uc9c0\uc758 \uc0bd\uc785/\ud3b8\uc9d1",delta_width:"",delta_height:""},advlink:{link_desc:"\ub9c1\ud06c\uc758 \uc0bd\uc785/\ud3b8\uc9d1",delta_height:"",delta_width:""},xhtmlxtras:{attribs_desc:"\uc18d\uc131 \uc0bd\uc785/\ud3b8\uc9d1",ins_desc:"\uc0bd\uc785",del_desc:"\uc0ad\uc81c",acronym_desc:"\uba38\ub9ac \uae00\uc790\uc5b4",abbr_desc:"\uc57d\uae30",cite_desc:"\uc778\uc6a9\ucc98",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\ud3b8\uc9d1",delta_height:"",delta_width:""},paste:{plaintext_mode:"\uc77c\ubc18 \ud14d\uc2a4\ud2b8 \ubaa8\ub4dc\uc5d0\uc11c \ubd99\uc5ec\ub123\uae30. \ud074\ub9ad\ud558\uba74 \uc77c\ubc18 \ubd99\uc5ec\ub123\uae30 \ubaa8\ub4dc\ub85c \ub2e4\uc2dc \ubcc0\uacbd\ub429\ub2c8\ub2e4.",plaintext_mode_sticky:"\uc77c\ubc18 \ud14d\uc2a4\ud2b8 \ubaa8\ub4dc\uc5d0\uc11c \ubd99\uc5ec\ub123\uae30. \ud074\ub9ad\ud558\uba74 \uc77c\ubc18 \ubd99\uc5ec\ub123\uae30 \ubaa8\ub4dc\ub85c \ub2e4\uc2dc \ubcc0\uacbd\ub429\ub2c8\ub2e4. After you paste something you will be returned to regular paste mode.",selectall_desc:"\ubaa8\ub450 \uc120\ud0dd",paste_word_desc:"Word\ub85c\ubd80\ud130 \ubd99\uc5ec\ub123\uae30",paste_text_desc:"\ud14d\uc2a4\ud2b8\ucc98\ub7fc \ubd99\uc5ec\ub123\uae30"},paste_dlg:{word_title:"\uc708\ub3c4\uc6b0\uc5d0 \ud14d\uc2a4\ud2b8\ub97c \ubd99\uc774\ub824\uba74 \ud0a4\ubcf4\ub4dc\ub85cCtrl+V\ub97c \uc785\ub825\ud574 \uc8fc\uc138\uc694.",text_linebreaks:"\uac1c\ud589\uc744 \ubcf4\uad00 \uc720\uc9c0",text_title:"\uc708\ub3c4\uc6b0\uc5d0 \ud14d\uc2a4\ud2b8\ub97c \ubd99\uc774\ub824\uba74 \ud0a4\ubcf4\ub4dc\ub85c Ctrl+V\ub97c \uc785\ub825\ud574 \uc8fc\uc138\uc694."},table:{cell:"\uc140",col:"\uc5f4",row:"\ud589",del:"\ud14c\uc774\ube14 \uc0ad\uc81c",copy_row_desc:"\ud589\uc744 \ubcf5\uc0ac",cut_row_desc:"\ud589\uc744 \uc798\ub77c\ub0b4\uae30",paste_row_after_desc:"\ub4a4\ub85c \ud589\uc744 \ubd99\uc5ec\ub123\uae30",paste_row_before_desc:"\uc55e\uc5d0 \ud589\uc744 \ubd99\uc5ec\ub123\uae30",props_desc:"\ud14c\uc774\ube14 \uc18d\uc131",cell_desc:"\uc140\uc758 \uc18d\uc131",row_desc:"\ud589\uc758 \uc18d\uc131",merge_cells_desc:"\uc140\uc744 \uacb0\ud569",split_cells_desc:"\uacb0\ud569\ub41c \uc140\uc744 \ubd84\ud560",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:"\ub4a4\uc5d0 \ud589 \uc0bd\uc785",row_before_desc:"\uc55e\uc5d0 \ud589 \uc0bd\uc785",desc:"\uc0c8 \ud14c\uc774\ube14 \uc0bd\uc785",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"},media:{edit:"\ubbf8\ub514\uc5b4\uc758 \ud3b8\uc9d1",desc:"\ubbf8\ub514\uc5b4\uc758 \uc0bd\uc785/\ud3b8\uc9d1",delta_height:"",delta_width:""},fullpage:{desc:"\ud398\uc774\uc9c0\uc758 \uc18d\uc131",delta_width:"",delta_height:""},template:{desc:"\uc815\uc758\uac00 \ub05d\ub09c \ud15c\ud50c\ub9bf\uc758 \uc0bd\uc785"},visualchars:{desc:"\uc81c\uc5b4 \ubb38\uc790\uc758 \ud45c\uc2dc \uc804\ud658"},spellchecker:{desc:"\uc2a4\ud3a0\ub9c1 \uc804\ud658",menu:"\uc2a4\ud3a0\ub9c1 \uc124\uc815",ignore_word:"\uc774 \uc5b4\uad6c\ub97c \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."},pagebreak:{desc:"\uc0c8\ud398\uc774\uc9c0 \uc0bd\uc785"},advlist:{types:"\ud0c0\uc785",def:"\uae30\ubcf8",lower_alpha:"\uc54c\ud30c\ubcb3 \uc18c\ubb38\uc790",lower_greek:"\uadf8\ub9ac\uc2a4\uc5b4 \uc18c\ubb38\uc790",lower_roman:"\ub85c\ub9c8 \uc18c\ubb38\uc790",upper_alpha:"\ub300\ubb38\uc790 \uc54c\ud30c\ubcb3",upper_roman:"\ub300\ubb38\uc790 \ub85c\ub9c8",circle:"\uc6d0",disc:"\uc6d0\ud615",square:"\uc0ac\uaca9\ud615"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 6a28fda..e118671
@@ -1 +1 @@
-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?"},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_width:"10",edit:"Redaguoti integruot\u0105 daugialyp\u0119 terp\u0119",desc:"\u012eterpti/redaguoti integruot\u0105 daugialyp\u0119 terp\u0119",delta_height:""},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."},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"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 2f6e3a9..953451a
@@ -1 +1 @@
-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?"},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:{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."},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"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 8f27aab..699b6f7
@@ -1 +1 @@
-tinyMCE.addI18n({mk:{common:{more_colors:"Vi\u0161e boja",invalid_data:"Gre\u0161ka: Une\u0161ene su nevaljane vrednosti, 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:"\u041a\u043e\u043f\u0438\u0440\u0430\u0458/\u0421\u043d\u0438\u043c\u0438/\u0417\u0430\u043b\u0435\u043f\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\u041f\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\u0432\u0437\u0435\u043c\u0438",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\u0435\u0442\u043d\u0438",apply:"Primjeni",edit_confirm:"\u017delite li koristiti WYSIWYG na\u010din rada za ovo tekstualno polje?"},contextmenu:{full:"Puno",right:"Desno",center:"Sredina",left:"Levo",align:"Poravnavanje"},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:"\u0412\u043c\u0435\u0442\u043d\u0438 vreme",insertdate_desc:"\u0412\u043c\u0435\u0442\u043d\u0438 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 levo",ltr_desc:"S leva na desno"},layer:{content:"Novi sloj...",absolute_desc:"Uklju\u010di/isklju\u010di apsolutno pozicioniranje",backward_desc:"Pomakni natrag",forward_desc:"Pomakni napred",insertlayer_desc:"\u0412\u043c\u0435\u0442\u043d\u0438 novi sloj"},save:{save_desc:"Spremi",cancel_desc:"Odustani od svih promjena"},nonbreaking:{nonbreaking_desc:"\u0412\u043c\u0435\u0442\u043d\u0438 razmak"},iespell:{download:"Provjera pravopisa nije postavljena. 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/Zameni",search_desc:"Prona\u0111i",delta_width:"",delta_height:""},advimage:{image_desc:"\u0412\u043c\u0435\u0442\u043d\u0438/uredi sliku",delta_width:"",delta_height:""},advlink:{link_desc:"Insert/edit link",delta_height:"",delta_width:""},xhtmlxtras:{attribs_desc:"\u0412\u043c\u0435\u0442\u043d\u0438/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:"Zalepi iz Worda",paste_text_desc:"Zalepi 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 zalepite tekst u prozor.",text_linebreaks:"Zadr\u017ei prelome",text_title:"Koristite CTRL+V na tipkovnici da zalepite 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:"Zalepi redak ispod",paste_row_before_desc:"Zalepi 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:"\u0412\u043c\u0435\u0442\u043d\u0438 stupac desno",col_before_desc:"\u0412\u043c\u0435\u0442\u043d\u0438 stupac levo",delete_row_desc:"Izbri\u0161i redak",row_after_desc:"\u0412\u043c\u0435\u0442\u043d\u0438 redak ispod",row_before_desc:"\u0412\u043c\u0435\u0442\u043d\u0438 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 celog 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:"\u0412\u043c\u0435\u0442\u043d\u0438 sadr\u017eaj iz predlo\u017eak"},visualchars:{desc:"Vizuelni kontrolni znakovi uklju\u010deni/isklju\u010deni."},spellchecker:{desc:"Uklju\u010di/isklju\u010di provjeru pravopisa",menu:"Postavke provere pravopisa",ignore_word:"Zanemari re\u010d",ignore_words:"Zanemari sve",langs:"Jezici",wait:"Pri\u010dekajte...",sug:"Predlozi",no_sug:"Nema predloga",no_mpell:"Nije prona\u0111ena nijedna pravopisna gre\u0161ka."},pagebreak:{desc:"\u0412\u043c\u0435\u0442\u043d\u0438 prelom."},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"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 90b4a1c..667c205
@@ -1 +1 @@
-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?"},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."},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"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 3eafa86..38e5a71
@@ -1 +1 @@
-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?"},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"},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"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index d0b7bed..a8cdad2
@@ -1 +1 @@
-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?"},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:"Open ruimte 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 plattetekstmoduse. 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:"Nieuwe tabel invoegen",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."},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"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 0c6822f..2924d25
@@ -1 +1 @@
-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?"},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:{unload_msg:"Endringane du gjorde g\u00e5r tapt om du forl\u00e8t denne sida!",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:"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."},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"}}});
\ No newline at end of file
+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/no.js b/program/js/tiny_mce/langs/no.js
deleted file mode 100644 (file)
index 43e63a7..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({no:{common:{"more_colors":"Flere farger","invalid_data":"Feil: Ugyldig verdi er skrevet inn, disse er merket med r\u00f8dt","popup_blocked":"Beklager, men vi har registrert at din popup-sperrer har blokkert et vindu i nettleseren. Du m\u00e5 oppheve popup-sperren for at nettstedet skal f\u00e5 tilgang til dette verkt\u00f8yet","clipboard_no_support":"For tiden ikke st\u00f8ttet av din nettleser, bruk 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:"Bruk","edit_confirm":"Vil du bruke WYSIWYG-editoren for dette tekstfeltet?"},contextmenu:{full:"Full",right:"H\u00f8yre",center:"Midtstilt",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,okt,nov,des","months_long":"januar,februar,mars,april,mai,juni,juli,august,september,oktober,november,desember","inserttime_desc":"Sett inn tid","insertdate_desc":"Sett inn dato","time_fmt":"%H:%M:%S","date_fmt":"%d-%m-%Y"},print:{"print_desc":"Skriv ut"},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 fremover","insertlayer_desc":"Sett inn nytt lag"},save:{"save_desc":"Lagre","cancel_desc":"Kanseller alle endringer"},nonbreaking:{"nonbreaking_desc":"Sett inn karakter for hardt mellomrom"},iespell:{download:"ieSpell ikke funnet. \u00d8nsker du \u00e5 installere ieSpell?","iespell_desc":"Stavekontroll"},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":"Sett inn/editer bilde","delta_width":"","delta_height":""},advlink:{"link_desc":"Sett inn/editer lenke","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Sett inn/Editer 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 vanlig tekst modus. Klikk igjen for \u00e5 bytte til vanlig innlimings modus.","plaintext_mode_sticky":"Lim inn er n\u00e5 i vanlig tekst modus. Klikk igjen for \u00e5 bytte til vanlig innlimings modus. Etter at du limer inn noe vil du g\u00e5 tilbake til ordin\u00e6r innliming.","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 teksten i dette vinduet.","text_linebreaks":"Behold tekstbryting","text_title":"Bruk CTRL+V p\u00e5 tastaturet for \u00e5 lime inn teksten i dette vinduet."},table:{cell:"Celle",col:"Kolonne",row:"Rad",del:"Slett tabell","copy_row_desc":"Kopier rad","cut_row_desc":"Slett rad","paste_row_after_desc":"Lime inn rad etter","paste_row_before_desc":"Lime inn rad foran","props_desc":"Tabell egenskaper","cell_desc":"Celle egenskaper","row_desc":"Rad egenskaper","merge_cells_desc":"Sl\u00e5 sammen celler","split_cells_desc":"Splitte sammensl\u00e5tte celler","delete_col_desc":"Slett kolonne","col_after_desc":"Sett inn kolonne etter","col_before_desc":"Sett inn kolonne forand","delete_row_desc":"Slett rad","row_after_desc":"Sett inn rad etter","row_before_desc":"Sett inn rad foran",desc:"Setter 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":"Hvis du gjenoppretter tidligere lagret innhold s\u00e5 vil du miste alt n\u00e5v\u00e6rende innhold i editoren.\\n\\nEr du sikker du vil gjenopprette tidligere lagret innhold?.","restore_content":"Gjenopprette autolagret innhold.","unload_msg":"Utf\u00f8rte endringer g\u00e5r tapt hvis du navigerer vekk fra denne siden!"},fullscreen:{desc:"Sl\u00e5 fullskjermmodus av/p\u00e5"},media:{edit:"Editer innebygget objekt",desc:"Sett inn/editer innebygget objekt","delta_height":"","delta_width":""},fullpage:{desc:"Dokument egenskaper","delta_width":"","delta_height":""},template:{desc:"Sett inn forh\u00e5ndsdefinert malinnhold"},visualchars:{desc:"Visuelle konktrolltegn p\u00e5/av"},spellchecker:{desc:"Stavekontroll p\u00e5/av",menu:"Oppsett stavekontroll","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."},pagebreak:{desc:"Sett inn sideskift"},advlist:{types:"Types",def:"Standard","lower_alpha":"Sm\u00e5 alfanumerisk","lower_greek":"Sm\u00e5 gresk","lower_roman":"Sm\u00e5 roman","upper_alpha":"Store alfanumerisk","upper_roman":"Store roman",circle:"Sirkel",disc:"Plate",square:"Firkant"}}});
\ No newline at end of file
old mode 100755 (executable)
new mode 100644 (file)
index 7b3672e..475b45d
@@ -1 +1 @@
-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?"},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."},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"}}});
\ No newline at end of file
+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
index 4e5c604c28f7ed873172919853b1efb391c625fc..fa24f83cadfe3d7cdae5c3d8d105337fdcae225a 100644 (file)
@@ -1 +1 @@
-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?"},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."},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"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index a260d0e..809f1c2
@@ -1 +1 @@
-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.\\nDeseja 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?"},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:{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:{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 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."},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"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 8f83a14..ffa1ebb
@@ -1 +1 @@
-tinyMCE.addI18n({ro:{common:{more_colors:"Mai multe culori",invalid_data:"Ave\u0163i erori. Datele gre\u015fite sunt \u00een ro\u015fu.",popup_blocked:"Ne pare r\u0103u, dar un popup-blocker a dezativat o fereastr\u0103 care d\u0103 func\u0163ionalitate aplica\u0163iei.Trebuie s\u0103 dezactiva\u0163i acel popup-blocker pentru acest site pentru a folosi aplica\u0163ia la capacitate maxim\u0103.",clipboard_no_support:"Deocamdat\u0103 nu este suportat\u0103 de browser. V\u0103 rug\u0103m s\u0103 folosi\u0163i combina\u0163ii 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:"-- Nestat\u0103 --",class_name:"Clas\u0103",browse:"R\u0103sfoie\u015fte",close:"\u00cenchide",cancel:"Anulare",update:"Actualizeaz\u0103",insert:"Insereaz\u0103",apply:"Aplic\u0103",edit_confirm:"Dori\u0163i s\u0103 folosi\u0163i un editor avansat pentru aceast\u0103 zon\u0103 de text?"},contextmenu:{full:"Justify",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\u0163i,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 or\u0103",insertdate_desc:"Insereaz\u0103 dat\u0103",time_fmt:"%H:%M:%S",date_fmt:"%Y-%m-%d"},print:{print_desc:"Imprimare"},preview:{preview_desc:"Previzualizare"},directionality:{rtl_desc:"Direc\u0163ia de la dreapta la st\u00e2nga",ltr_desc:"Direc\u0163ia de la st\u00e2nga la dreapta"},layer:{content:"Strat nou ...",absolute_desc:"Pozi\u0163ionare absolut\u0103",backward_desc:"Mut\u0103 \u00eenapoi",forward_desc:"Mut\u0103 \u00eenainte",insertlayer_desc:"Insereaz\u0103 stat nou"},save:{save_desc:"Salveaz\u0103",cancel_desc:"Anuleaz\u0103 toate schimb\u0103rile"},nonbreaking:{nonbreaking_desc:"Insereaz\u0103 caracterul spa\u0163iu"},iespell:{download:"ieSpell nu a fost detectat. Dori\u0163i s\u0103-l instala\u0163i?",iespell_desc:"Ruleaz\u0103 corectorul de limb\u0103"},advhr:{advhr_desc:"Linie orizontal\u0103",delta_height:"",delta_width:""},emotions:{emotions_desc:"Figurine",delta_height:"",delta_width:""},searchreplace:{replace_desc:"Caut\u0103/\u00cenlocuie\u015fte",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:"\u015etergere",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. Ap\u0103sa\u0163i din nou pentru comutarea la modul normal de lipire.",plaintext_mode_sticky:"Lipirea este acum \u00een modul text simplu. Ap\u0103sa\u0163i aici pentru comutarea la modul normal de lipire. Dup\u0103 ce ve\u0163i lipi ceva ve\u0163i 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:"Folosi\u0163i CTRL+V pentru a lipi \u00een aceast\u0103 zon\u0103.",text_linebreaks:"P\u0103streaz\u0103 separatoarele de linii.",text_title:"Folosi\u0163i CTRL+V pentru a lipi \u00een aceast\u0103 zon\u0103."},table:{cell:"Celul\u0103",col:"Coloan\u0103",row:"R\u00e2nd",del:"\u015eterge tabel",copy_row_desc:"Copiaz\u0103 r\u00e2nd",cut_row_desc:"Taie r\u00e2nd",paste_row_after_desc:"Lipe\u015fte r\u00e2nd dup\u0103",paste_row_before_desc:"Lipe\u015fte r\u00e2nd \u00eenainte",props_desc:"Propriet\u0103\u0163i tabel",cell_desc:"Propriet\u0103\u0163i celul\u0103",row_desc:"Propriet\u0103\u0163i r\u00e2nd",merge_cells_desc:"Uni\u0163i celule",split_cells_desc:"Separa\u0163i celule unite",delete_col_desc:"\u015eterge coloan\u0103",col_after_desc:"Inserare coloan\u0103 dup\u0103",col_before_desc:"Inserare coloan\u0103 \u00eenainte",delete_row_desc:"\u015eterge r\u00e2nd",row_after_desc:"Inserare r\u00e2nd dup\u0103",row_before_desc:"Inserare r\u00e2nd \u00eenainte",desc:"Insereaz\u0103 tabel nou",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 restaurati continutul salvat vei pierde tot continutul existent din editor.\\n\\nSigur doriti sa restaurati continutul salvat?.",restore_content:"Restaureaz\u0103 con\u0163inutul 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\u0163i document",delta_width:"",delta_height:""},template:{desc:"Insereaz\u0103 un \u015fablon predefinit"},visualchars:{desc:"Comut\u0103 caracterele vizuale de control"},spellchecker:{desc:"Activare/dezactivare dic\u0163ionar",menu:"Set\u0103ri dic\u0163ionar",ignore_word:"Ignor\u0103 cuv\u00e2nt",ignore_words:"Ignor\u0103 toate",langs:"Limbi",wait:"V\u0103 rog a\u015ftepta\u0163i...",sug:"Sugestii",no_sug:"Nu sunt sugestii.",no_mpell:"Nu sunt gre\u015feli."},pagebreak:{desc:"Insereaz\u0103 un separator de pagin\u0103"},advlist:{types:"Tipuri",def:"Implicit",lower_alpha:"Minuscule alfabetice",lower_greek:"Minuscule grece\u015fti",lower_roman:"Minuscule romane",upper_alpha:"Majuscule alfabetice",upper_roman:"Majuscule romane",circle:"Cerc",disc:"Disc",square:"P\u0103trat"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index ca333d7..290aee2
@@ -1 +1 @@
-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.\\r\\n\u0425\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\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:"\u041f\u0440\u043e\u0441\u043c\u043e\u0442\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?"},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:{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_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:"\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."},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:"\u041a\u0440\u0443\u0433\u0438",disc:"\u041e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438",square:"\u041a\u0432\u0430\u0434\u0440\u0430\u0442\u044b"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 085f79b..cbc9e89
@@ -1 +1 @@
-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?"},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."},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"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 62fb510..f25f268
@@ -1 +1 @@
-tinyMCE.addI18n({sk:{common:{more_colors:"\u010eal\u0161ie farby",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 podporovan\u00e9 v prehliada\u010doch Mozilla a Firefox.\\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?"},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 poziciovanie",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:"Slovn\u00edk ieSpell nebol detekovan\u00fd. Chcete ho 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 Wordu",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 m\u00e9di\u00e1",desc:"Vlo\u017ei\u0165/upravi\u0165 m\u00e9di\u00e1",delta_height:""},fullpage:{desc:"Vlastnosti dokumentu",delta_width:"115",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."},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"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 6124f39..26d858e
@@ -1 +1 @@
-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?"},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:{advhr_desc:"Vodoravna \u010drta",delta_height:"",delta_width:""},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:"",delta_height:""},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."},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"}}});
\ No newline at end of file
+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
index 4945172714452889b2d0f5054f9d7373cd3318e0..c3fa4687cee4c8caed87a4ee0ab1a9439f3b0826 100644 (file)
@@ -1 +1 @@
-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?"},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:{selectall_desc:"Zgjidhi t\u00eb gjitha",paste_word_desc:"Ngjit nga Word",paste_text_desc:"Ngjit si 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:"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:{unload_msg:"Ndryshimet q\u00eb keni b\u00ebr\u00eb do t\u00eb humbasin n\u00ebse largoheni nga kjo faqe.",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:"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."},pagebreak:{desc:"Fut thyerje faqeje."},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"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index b55e00c..1816654
@@ -1 +1 @@
-tinyMCE.addI18n({sr:{common:{more_colors:"Vi\u0161e boja",invalid_data:"Gre\u0161ka: Une\u0161ene su pogre\u0161ne vrednosti, ozna\u010dene su crvenom bojom.",popup_blocked:"Oprostite, izgleda da je va\u0161 popup-blocker onemogu\u0107io prozor u sklopu ovog programa. Morate isklju\u010diti blokiranje popup prozora da bi u potpunosti iskoristili ovaj alat.",clipboard_no_support:"Trenuta\u010dno va\u0161 pretra\u017eiva\u010d ne podr\u017eava ovu opciju, poku\u0161ajte preko pre\u010dice na tastaturi.",clipboard_msg:"Kopiraj/Iseci/Zalepi nije dostupno Mozilla i Firefox preglednicima.\\nVi\u0161e informacija?",not_set:"-- Nije postavljeno --",class_name:"Klasa",browse:"Potra\u017ei",close:"Zatvori",cancel:"Odustani",update:"A\u017euriraj",insert:"Ubaci",apply:"Primeni",edit_confirm:"Da li \u017eelite da koristite WYSIWYG na\u010din rada za ovo tekstualno polje?"},contextmenu:{full:"Poravnato",right:"Desno",center:"Centrirano",left:"Levo",align:"Poravnanje"},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:"Ubaci vreme",insertdate_desc:"Ubaci datum",time_fmt:"%H:%M:%S",date_fmt:"%d.%m.%Y."},print:{print_desc:"\u0160tampaj"},preview:{preview_desc:"Pregled"},directionality:{rtl_desc:"S desna na levo",ltr_desc:"S leva na desno"},layer:{content:"Novi sloj...",absolute_desc:"Uklju\u010di/isklju\u010di apsolutno pozicioniranje",backward_desc:"Pomeri nazad",forward_desc:"Pomeri napred",insertlayer_desc:"Ubaci novi sloj"},save:{save_desc:"Sa\u010duvaj",cancel_desc:"Odustani od svih promena"},nonbreaking:{nonbreaking_desc:"Ubaci razmak"},iespell:{download:"Provera pravopisa nije instalirana. Sada instalirati?",iespell_desc:"Proveri pravopis"},advhr:{advhr_desc:"Horizontalna crta",delta_height:"",delta_width:""},emotions:{emotions_desc:"Smajli",delta_height:"",delta_width:""},searchreplace:{replace_desc:"Prona\u0111i/Zameni",search_desc:"Prona\u0111i",delta_width:"",delta_height:""},advimage:{image_desc:"Ubaci/uredi sliku",delta_width:"",delta_height:""},advlink:{link_desc:"Ubaci/izmeni link",delta_height:"",delta_width:""},xhtmlxtras:{attribs_desc:"Ubaci/izmeni atribute",ins_desc:"Unos",del_desc:"Brisanje",acronym_desc:"Akronim",abbr_desc:"Skra\u0107enica",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:"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:"Odaberi sve",paste_word_desc:"Zalepi iz Worda",paste_text_desc:"Zalepi kao obi\u010dni tekst"},paste_dlg:{word_title:"Koristite CTRL+V na tastaturi da zalepite tekst u prozor.",text_linebreaks:"Zadr\u017ei prelome",text_title:"Koristite CTRL+V na tastaturi da zalepite tekst u prozor."},table:{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 ispod",paste_row_before_desc:"Zalepi red iznad",props_desc:"Svojstva tabelee",cell_desc:"Svojstva \u0107elije",row_desc:"Svojstva reda",merge_cells_desc:"Spoji \u0107elije",split_cells_desc:"Razdvoji spojene \u0107elije",delete_col_desc:"Obri\u0161i kolonu",col_after_desc:"Ubaci kolonu desno",col_before_desc:"Ubaci kolonu levo",delete_row_desc:"Obri\u0161i red",row_after_desc:"Ubaci red ispod",row_before_desc:"Ubaci red iznad",desc:"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:"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:"Izmene u dokumentu \u0107e biti izgubljene ako iza\u0111ete s ove stranice."},fullscreen:{desc:"Uklju\u010di/isklju\u010di prikaz preko celog ekrana"},media:{edit:"Uredi medije",desc:"Ubaci / uredi medije",delta_height:"",delta_width:""},fullpage:{desc:"Svojstva dokumenta",delta_width:"",delta_height:""},template:{desc:"Ubaci sadr\u017eaj iz \u0161ablona"},visualchars:{desc:"Vizuelni kontrolni znakovi uklju\u010deni/isklju\u010deni."},spellchecker:{desc:"Uklju\u010di/isklju\u010di proveru pravopisa",menu:"Postavke provere 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."},pagebreak:{desc:"Ubaci prelom."},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"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 6ffbbd6..a2a3d77
@@ -1 +1 @@
-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?"},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."},pagebreak:{desc:"Infoga sidbrytning"},advlist:{types:"Typer",def:"Default","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"}}});
\ No newline at end of file
+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
index 0b54a8788ad78c62dc0db21546857f546f254180..bd4f3e9d422ed97b9a77de0fce5e03259cb5cd9e 100644 (file)
@@ -1 +1 @@
-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?"},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."},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"}}});
\ No newline at end of file
+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/te.js b/program/js/tiny_mce/langs/te.js
deleted file mode 100644 (file)
index 4b89828..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({te:{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?"},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."},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"}}});
\ No newline at end of file
index 68c231fd6452836a13c0e4d0d32b43fc5eb773a7..73b113ac638e3f19695a58c5fb4fb71536036a5c 100644 (file)
@@ -1 +1 @@
-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 ?"},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"},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"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 9ae1489..40b3d5a
@@ -1 +1 @@
-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?"},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:{image_desc:"Resim ekle/d\u00fczenle",delta_width:"",delta_height:""},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."},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"}}});
\ No newline at end of file
+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/tw.js b/program/js/tiny_mce/langs/tw.js
deleted file mode 100644 (file)
index 1f89399..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({tw:{common:{more_colors:"\u66f4\u591a\u984f\u8272...",invalid_data:"\u60a8\u8f38\u5165\u7684\u8cc7\u6599\u6709\u932f\u8aa4\uff08\u7d05\u8272\u90e8\u5206\uff09",popup_blocked:"\u60a8\u7684\u700f\u89bd\u5668\u7981\u6b62\u5f48\u51fa\u8996\u7a97\u3002",clipboard_no_support:"\u60a8\u7684\u700f\u89bd\u5668\u4e0d\u652f\u63f4\u8a72\u529f\u80fd\uff0c\u8acb\u4f7f\u7528Ctrl + C\u9375\u4ee3\u66ff\u3002",clipboard_msg:"\u5f88\u62b1\u6b49\uff0c\u60a8\u7684\u700f\u89bd\u5668\u4e0d\u652f\u63f4\u8907\u88fd\u529f\u80fd\u3002",not_set:"--\u5c1a\u672a\u8a2d\u5b9a--",class_name:"\u985e\u5225",browse:"\u9810\u89bd",close:"\u95dc\u9589",cancel:"\u53d6\u6d88",update:"\u66f4\u65b0",insert:"\u63d2\u5165",apply:"\u5957\u7528",edit_confirm:"\u662f\u5426\u9700\u8981\u958b\u555f\u6587\u5b57\u7de8\u8f2f\u5668\uff1f"},contextmenu:{full:"\u5de6\u53f3\u5c0d\u9f4a",right:"\u9760\u53f3\u5c0d\u9f4a",center:"\u7f6e\u4e2d\u5c0d\u9f4a",left:"\u9760\u5de6\u5c0d\u9f4a",align:"\u5c0d\u9f4a"},insertdatetime:{day_short:"\u9031\u65e5,\u9031\u4e00,\u9031\u4e8c,\u9031\u4e09,\u9031\u56db,\u9031\u4e94,\u9031\u516d,\u9031\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\u76ee\u524d\u6642\u9593",insertdate_desc:"\u63d2\u5165\u76ee\u524d\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\u5230\u5de6",ltr_desc:"\u5f9e\u5de6\u5230\u53f3"},layer:{content:"\u65b0\u5efa\u5716\u5c64...",absolute_desc:"\u5207\u63db\u5230\u7d55\u5c0d\u4f4d\u7f6e",backward_desc:"\u7f6e\u5f8c",forward_desc:"\u7f6e\u524d",insertlayer_desc:"\u63d2\u5165\u5716\u5c64"},save:{save_desc:"\u5b58\u6a94",cancel_desc:"\u53d6\u6d88\u6240\u6709\u8b8a\u66f4"},nonbreaking:{nonbreaking_desc:"\u63d2\u5165\u7a7a\u683c"},iespell:{download:"\u6aa2\u67e5\u4e0d\u5230ieSpell\u5916\u639b\u7a0b\u5f0f\u7a0b\u5f0f\uff0c\u662f\u5426\u7acb\u5373\u5b89\u88dd\uff1f",iespell_desc:"\u62fc\u5b57\u6aa2\u67e5"},advhr:{advhr_desc:"\u6c34\u5e73\u7dda",delta_height:"",delta_width:""},emotions:{emotions_desc:"\u8868\u60c5",delta_height:"",delta_width:""},searchreplace:{replace_desc:"\u641c\u5c0b/\u53d6\u4ee3",search_desc:"\u641c\u5c0b",delta_width:"",delta_height:""},advimage:{image_desc:"\u63d2\u5165/\u7de8\u8f2f\u5716\u7247",delta_width:"",delta_height:""},advlink:{link_desc:"\u63d2\u5165/\u7de8\u8f2f\u8d85\u9023\u7d50",delta_height:"",delta_width:""},xhtmlxtras:{attribs_delta_height:"60",attribs_delta_width:"40",attribs_desc:"\u63d2\u5165/\u7de8\u8f2f\u5c6c\u6027",ins_desc:"\u63d2\u5165",del_desc:"\u522a\u9664",acronym_desc:"\u9996\u5b57\u6bcd\u7e2e\u5beb",abbr_desc:"\u7e2e\u5beb",cite_desc:"\u5f15\u7528",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\u8868",delta_height:"",delta_width:""},paste:{plaintext_mode:"\u76ee\u524d\u70ba\u4e00\u822c\u8cbc\u4e0a\u6a21\u5f0f\uff0c\u518d\u9ede\u9ede\u95b1\u4e00\u6b21\u5207\u63db\u56de\u7d14\u6587\u5b57\u8cbc\u4e0a\u6a21\u5f0f\u3002",plaintext_mode_sticky:"\u76ee\u524d\u70ba\u7d14\u6587\u5b57\u8cbc\u4e0a\u6a21\u5f0f\uff0c\u518d\u9ede\u95b1\u4e00\u6b21\u5207\u63db\u56de\u4e00\u822c\u6a21\u5f0f\u3002",selectall_desc:"\u5168\u9078",paste_word_desc:"\u4ee5Word\u683c\u5f0f\u8cbc\u4e0a",paste_text_desc:"\u4ee5\u7d14\u6587\u5b57\u8cbc\u4e0a"},paste_dlg:{word_title:"\u7528 Ctrl+V \u5c07\u5167\u5bb9\u8cbc\u4e0a\u3002",text_linebreaks:"\u4fdd\u7559\u63db\u884c\u7b26\u865f",text_title:"\u7528 Ctrl+V \u5c07\u5167\u5bb9\u8cbc\u4e0a\u3002"},table:{merge_cells_delta_height:"40",merge_cells_delta_width:"40",table_delta_height:"60",table_delta_width:"40",cellprops_delta_height:"10",cellprops_delta_width:"10",cell:"\u5132\u5b58\u683c",col:"\u6b04",row:"\u884c",del:"\u522a\u9664\u8868\u683c",copy_row_desc:"\u8907\u88fd\u9078\u64c7\u884c",cut_row_desc:"\u526a\u4e0b\u9078\u64c7\u884c",paste_row_after_desc:"\u5728\u4e0b\u65b9\u8cbc\u4e0a\u884c",paste_row_before_desc:"\u5728\u4e0a\u65b9\u8cbc\u4e0a\u884c",props_desc:"\u8868\u683c\u5c6c\u6027",cell_desc:"\u5132\u5b58\u683c\u5c6c\u6027",row_desc:"\u884c\u5c6c\u6027",merge_cells_desc:"\u5408\u4f75\u5132\u5b58\u683c",split_cells_desc:"\u5206\u5272\u5132\u5b58\u683c",delete_col_desc:"\u522a\u9664\u76ee\u524d\u6b04",col_after_desc:"\u5728\u53f3\u5074\u63d2\u5165\u6b04",col_before_desc:"\u5728\u5de6\u5074\u63d2\u5165\u6b04",delete_row_desc:"\u522a\u9664\u76ee\u524d\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",rowprops_delta_height:"",rowprops_delta_width:""},autosave:{warning_message:"\u5982\u679c\u6062\u5fa9\u5148\u524d\u5132\u5b58\u7684\u5167\u5bb9\uff0c\u60a8\u5c07\u5931\u53bb\u7de8\u8f2f\u5668\u4e2d\u73fe\u6709\u7684\u5167\u5bb9\u3002 \\n\\n\u60a8\u78ba\u5b9a\u8981\u6062\u5fa9\u5148\u524d\u5132\u5b58\u7684\u5167\u5bb9\u55ce\uff1f",restore_content:"\u6062\u5fa9\u81ea\u52d5\u5132\u5b58\u7684\u5167\u5bb9\u3002",unload_msg:"\u60a8\u5c1a\u672a\u5132\u5b58\u8cc7\u6599\uff0c\u60a8\u8f38\u5165\u7684\u8cc7\u6599\u53ef\u80fd\u6703\u907a\u5931..."},fullscreen:{desc:"\u5168\u87a2\u5e55\u7de8\u8f2f"},media:{edit:"\u7de8\u8f2f\u5f71\u7247",desc:"\u63d2\u5165/\u7de8\u8f2f\u5f71\u7247",delta_height:"",delta_width:""},fullpage:{desc:"\u6a94\u6848\u5c6c\u6027",delta_width:"",delta_height:""},template:{desc:"\u63d2\u5165\u9810\u8a2d\u6a21\u677f"},visualchars:{desc:"\u986f\u793a/\u96b1\u85cf\u4e0d\u53ef\u898b\u5b57\u5143"},spellchecker:{desc:"\u958b\u95dc\u62fc\u5b57\u6aa2\u67e5",menu:"\u62fc\u5b57\u6aa2\u67e5\u8a2d\u5b9a",ignore_word:"\u5ffd\u7565",ignore_words:"\u5168\u90e8\u5ffd\u7565",langs:"\u8a9e\u8a00",wait:"\u8acb\u7a0d\u5019...",sug:"\u5efa\u8b70",no_sug:"\u7121\u5efa\u8b70",no_mpell:"\u7121\u62fc\u5b57\u932f\u8aa4"},pagebreak:{desc:"\u63d2\u5165\u5206\u9801\u7b26\u865f"},advlist:{types:"\u6a23\u5f0f",def:"\u9810\u8a2d",lower_alpha:"\u5c0f\u5beb\u7684\u82f1\u6587\u5b57",lower_greek:"\u5c0f\u5beb\u7684\u5e0c\u81d8\u6587\u5b57",lower_roman:"\u5c0f\u5beb\u7684\u7f85\u99ac\u6578\u5b57",upper_alpha:"\u5927\u5beb\u7684\u82f1\u6587\u5b57",upper_roman:"\u5927\u5beb\u7684\u7f85\u99ac\u6578\u5b57",circle:"\u5713\u5708",disc:"\u5713\u9ede",square:"\u65b9\u584a"}}});
\ No newline at end of file
old mode 100755 (executable)
new mode 100644 (file)
index 5d2cf48..514b66b
@@ -1 +1 @@
-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?"},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."},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"}}});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 27a2346..966a38a
@@ -1 +1 @@
-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?"},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."},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"}}});
\ No newline at end of file
+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
new file mode 100644 (file)
index 0000000..42f7abb
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..9352b26
--- /dev/null
@@ -0,0 +1 @@
+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/langs/zh.js b/program/js/tiny_mce/langs/zh.js
deleted file mode 100755 (executable)
index 2832ad6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({zh:{common:{more_colors:"\u66f4\u591a\u989c\u8272...",invalid_data:"\u4f60\u8f93\u5165\u7684\u8d44\u6599\u6709\u8bef\uff08\u7ea2\u8272\u90e8\u5206\uff09",popup_blocked:"\u4f60\u7684\u6d4f\u89c8\u5668\u7981\u6b62\u4e86\u5f39\u51fa\u89c6\u7a97\u3002",clipboard_no_support:"\u60a8\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u63f4\u8be5\u529f\u80fd\uff0c\u8bf7\u4f7f\u7528Ctrl + C\u952e\u4ee3\u66ff\u3002",clipboard_msg:"\u5f88\u62b1\u6b49\uff0c\u60a8\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u63f4\u590d\u88fd\u529f\u80fd\u3002",not_set:"--\u5c1a\u672a\u8bbe\u5b9a--",class_name:"\u7c7b\u522b",browse:"\u9884\u89c8",close:"\u5173\u95ed",cancel:"\u53d6\u6d88",update:"\u66f4\u65b0",insert:"\u63d2\u5165",apply:"\u5957\u7528",edit_confirm:"\u662f\u5426\u9700\u8981\u5f00\u542f\u6587\u5b57\u7f16\u8f91\u5668\uff1f"},contextmenu:{full:"\u5de6\u53f3\u5bf9\u9f50",right:"\u9760\u53f3\u5bf9\u9f50",center:"\u7f6e\u4e2d\u5bf9\u9f50",left:"\u9760\u5de6\u5bf9\u9f50",align:"\u5bf9\u9f50"},insertdatetime:{day_short:"\u5468\u65e5,\u5468\u4e00,\u5468\u4e8c,\u5468\u53c1,\u5468\u56db,\u5468\u4e94,\u5468\u516d,\u5468\u65e5",day_long:"\u661f\u671f\u65e5,\u661f\u671f\u4e00,\u661f\u671f\u4e8c,\u661f\u671f\u53c1,\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,\u53c1\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\u76ee\u524d\u65f6\u95f4",insertdate_desc:"\u63d2\u5165\u76ee\u524d\u65e5\u671f",time_fmt:"%H:%M:%S",date_fmt:"%Y/%m/%d"},print:{print_desc:"\u5217\u5370"},preview:{preview_desc:"\u9884\u89c8"},directionality:{rtl_desc:"\u4ece\u53f3\u5230\u5de6",ltr_desc:"\u4ece\u5de6\u5230\u53f3"},layer:{content:"\u65b0\u5efa\u56fe\u5c42...",absolute_desc:"\u5207\u6362\u5230\u7edd\u5bf9\u4f4d\u7f6e",backward_desc:"\u7f6e\u540e",forward_desc:"\u7f6e\u524d",insertlayer_desc:"\u63d2\u5165\u56fe\u5c42"},save:{save_desc:"\u5b58\u6863",cancel_desc:"\u53d6\u6d88\u6240\u6709\u53d8\u66f4"},nonbreaking:{nonbreaking_desc:"\u63d2\u5165\u7a7a\u683c"},iespell:{download:"\u68c0\u67e5\u4e0d\u5230ieSpell\u63d2\u4ef6\u7a0b\u5e8f\uff0c\u662f\u5426\u7acb\u5373\u5b89\u88c5\uff1f",iespell_desc:"\u62fc\u5b57\u68c0\u67e5"},advhr:{advhr_desc:"\u6c34\u5e73\u7ebf",delta_height:"",delta_width:""},emotions:{emotions_desc:"\u8868\u60c5",delta_height:"",delta_width:""},searchreplace:{replace_desc:"\u641c\u5bfb/\u53d6\u4ee3",search_desc:"\u641c\u5bfb",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\u8fde\u7ed3",delta_height:"",delta_width:""},xhtmlxtras:{attribs_delta_height:"60",attribs_delta_width:"40",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",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\u8f91 CSS \u6837\u5f0f\u8868",delta_height:"",delta_width:""},paste:{plaintext_mode:"\u76ee\u524d\u4e3a\u4e00\u822c\u8d34\u4e0a\u6a21\u5f0f\uff0c\u518d\u70b9\u70b9\u51fb\u4e00\u6b21\u5207\u6362\u56de\u7eaf\u6587\u672c\u8d34\u4e0a\u6a21\u5f0f\u3002",plaintext_mode_sticky:"\u76ee\u524d\u4e3a\u7eaf\u6587\u672c\u8d34\u4e0a\u6a21\u5f0f\uff0c\u518d\u70b9\u51fb\u4e00\u6b21\u5207\u6362\u56de\u4e00\u822c\u6a21\u5f0f\u3002",selectall_desc:"\u5168\u9009",paste_word_desc:"\u4ee5Word\u683c\u5f0f\u8d34\u4e0a",paste_text_desc:"\u4ee5\u7eaf\u6587\u672c\u8d34\u4e0a"},paste_dlg:{word_title:"\u7528 Ctrl+V \u5c06\u5185\u5bb9\u8d34\u4e0a\u3002",text_linebreaks:"\u4fdd\u7559\u5206\u884c\u7b26\u53f7",text_title:"\u7528 Ctrl+V \u5c06\u5185\u5bb9\u8d34\u4e0a\u3002"},table:{merge_cells_delta_height:"40",merge_cells_delta_width:"40",table_delta_height:"60",table_delta_width:"40",cellprops_delta_height:"10",cellprops_delta_width:"10",cell:"\u50a8\u5b58\u683c",col:"\u680f",row:"\u884c",del:"\u5220\u9664\u8868\u683c",copy_row_desc:"\u590d\u88fd\u9009\u62e9\u884c",cut_row_desc:"\u526a\u4e0b\u9009\u62e9\u884c",paste_row_after_desc:"\u5728\u4e0b\u65b9\u8d34\u4e0a\u884c",paste_row_before_desc:"\u5728\u4e0a\u65b9\u8d34\u4e0a\u884c",props_desc:"\u8868\u683c\u5c5e\u6027",cell_desc:"\u50a8\u5b58\u683c\u5c5e\u6027",row_desc:"\u884c\u5c5e\u6027",merge_cells_desc:"\u5408\u4f75\u50a8\u5b58\u683c",split_cells_desc:"\u5206\u5272\u50a8\u5b58\u683c",delete_col_desc:"\u5220\u9664\u76ee\u524d\u680f",col_after_desc:"\u5728\u53f3\u4fa7\u63d2\u5165\u680f",col_before_desc:"\u5728\u5de6\u4fa7\u63d2\u5165\u680f",delete_row_desc:"\u5220\u9664\u76ee\u524d\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",rowprops_delta_height:"",rowprops_delta_width:""},autosave:{warning_message:"\u5982\u679c\u6062\u5fa9\u5148\u524d\u50a8\u5b58\u7684\u5185\u5bb9\uff0c\u60a8\u5c06\u5931\u53bb\u7f16\u8f91\u5668\u4e2d\u73b0\u6709\u7684\u5185\u5bb9\u3002 \\n\\n\u60a8\u786e\u5b9a\u8981\u6062\u5fa9\u5148\u524d\u50a8\u5b58\u7684\u5185\u5bb9\u5417\uff1f",restore_content:"\u6062\u5fa9\u81ea\u52a8\u50a8\u5b58\u7684\u5185\u5bb9\u3002",unload_msg:"\u60a8\u5c1a\u672a\u50a8\u5b58\u5185\u5bb9\uff0c\u60a8\u8f93\u5165\u7684\u5185\u5bb9\u53ef\u80fd\u4f1a\u4e22\u5931..."},fullscreen:{desc:"\u5168\u8424\u5e55\u7f16\u8f91"},media:{edit:"\u7f16\u8f91\u5f71\u7247",desc:"\u63d2\u5165/\u7f16\u8f91\u5f71\u7247",delta_height:"",delta_width:""},fullpage:{desc:"\u6863\u6848\u5c5e\u6027",delta_width:"",delta_height:""},template:{desc:"\u63d2\u5165\u9884\u8bbe\u6a21\u677f"},visualchars:{desc:"\u663e\u793a/\u9690\u85cf\u975e\u53ef\u89c1\u5b57\u7b26"},spellchecker:{desc:"\u5f00\u5173\u62fc\u5199\u68c0\u67e5",menu:"\u62fc\u5b57\u68c0\u67e5\u8bbe\u5b9a",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"},pagebreak:{desc:"\u63d2\u5165\u5206\u9875\u7b26\u53f7"},advlist:{types:"\u6837\u5f0f",def:"\u9884\u8bbe",lower_alpha:"\u5c0f\u5199\u7684\u82f1\u6587\u5b57",lower_greek:"\u5c0f\u5199\u7684\u5e0c\u814a\u6587\u5b57",lower_roman:"\u5c0f\u5199\u7684\u7f57\u9a6c\u6570\u5b57",upper_alpha:"\u5927\u5199\u7684\u82f1\u6587\u5b57",upper_roman:"\u5927\u5199\u7684\u7f57\u9a6c\u6570\u5b57",circle:"\u5706\u5708",disc:"\u5706\u70b9",square:"\u65b9\u5f62"}}});
\ 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
new file mode 100644 (file)
index 0000000..0e22834
--- /dev/null
@@ -0,0 +1,5 @@
+input.radio {border:1px none #000; background:transparent; vertical-align:middle;}\r
+.panel_wrapper div.current {height:80px;}\r
+#width {width:50px; vertical-align:middle;}\r
+#width2 {width:50px; vertical-align:middle;}\r
+#size {width:100px;}\r
diff --git a/program/js/tiny_mce/plugins/advhr/editor_plugin.js b/program/js/tiny_mce/plugins/advhr/editor_plugin.js
new file mode 100644 (file)
index 0000000..4d3b062
--- /dev/null
@@ -0,0 +1 @@
+(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
new file mode 100644 (file)
index 0000000..0c652d3
--- /dev/null
@@ -0,0 +1,57 @@
+/**\r
+ * editor_plugin_src.js\r
+ *\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ */\r
+\r
+(function() {\r
+       tinymce.create('tinymce.plugins.AdvancedHRPlugin', {\r
+               init : function(ed, url) {\r
+                       // Register commands\r
+                       ed.addCommand('mceAdvancedHr', function() {\r
+                               ed.windowManager.open({\r
+                                       file : url + '/rule.htm',\r
+                                       width : 250 + parseInt(ed.getLang('advhr.delta_width', 0)),\r
+                                       height : 160 + parseInt(ed.getLang('advhr.delta_height', 0)),\r
+                                       inline : 1\r
+                               }, {\r
+                                       plugin_url : url\r
+                               });\r
+                       });\r
+\r
+                       // Register buttons\r
+                       ed.addButton('advhr', {\r
+                               title : 'advhr.advhr_desc',\r
+                               cmd : 'mceAdvancedHr'\r
+                       });\r
+\r
+                       ed.onNodeChange.add(function(ed, cm, n) {\r
+                               cm.setActive('advhr', n.nodeName == 'HR');\r
+                       });\r
+\r
+                       ed.onClick.add(function(ed, e) {\r
+                               e = e.target;\r
+\r
+                               if (e.nodeName === 'HR')\r
+                                       ed.selection.select(e);\r
+                       });\r
+               },\r
+\r
+               getInfo : function() {\r
+                       return {\r
+                               longname : 'Advanced HR',\r
+                               author : 'Moxiecode Systems AB',\r
+                               authorurl : 'http://tinymce.moxiecode.com',\r
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr',\r
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+                       };\r
+               }\r
+       });\r
+\r
+       // Register plugin\r
+       tinymce.PluginManager.add('advhr', tinymce.plugins.AdvancedHRPlugin);\r
+})();
\ 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
new file mode 100644 (file)
index 0000000..b6cbd66
--- /dev/null
@@ -0,0 +1,43 @@
+var AdvHRDialog = {\r
+       init : function(ed) {\r
+               var dom = ed.dom, f = document.forms[0], n = ed.selection.getNode(), w;\r
+\r
+               w = dom.getAttrib(n, 'width');\r
+               f.width.value = w ? parseInt(w) : (dom.getStyle('width') || '');\r
+               f.size.value = dom.getAttrib(n, 'size') || parseInt(dom.getStyle('height')) || '';\r
+               f.noshade.checked = !!dom.getAttrib(n, 'noshade') || !!dom.getStyle('border-width');\r
+               selectByValue(f, 'width2', w.indexOf('%') != -1 ? '%' : 'px');\r
+       },\r
+\r
+       update : function() {\r
+               var ed = tinyMCEPopup.editor, h, f = document.forms[0], st = '';\r
+\r
+               h = '<hr';\r
+\r
+               if (f.size.value) {\r
+                       h += ' size="' + f.size.value + '"';\r
+                       st += ' height:' + f.size.value + 'px;';\r
+               }\r
+\r
+               if (f.width.value) {\r
+                       h += ' width="' + f.width.value + (f.width2.value == '%' ? '%' : '') + '"';\r
+                       st += ' width:' + f.width.value + (f.width2.value == '%' ? '%' : 'px') + ';';\r
+               }\r
+\r
+               if (f.noshade.checked) {\r
+                       h += ' noshade="noshade"';\r
+                       st += ' border-width: 1px; border-style: solid; border-color: #CCCCCC; color: #ffffff;';\r
+               }\r
+\r
+               if (ed.settings.inline_styles)\r
+                       h += ' style="' + tinymce.trim(st) + '"';\r
+\r
+               h += ' />';\r
+\r
+               ed.execCommand("mceInsertContent", false, h);\r
+               tinyMCEPopup.close();\r
+       }\r
+};\r
+\r
+tinyMCEPopup.requireLangPack();\r
+tinyMCEPopup.onInit.add(AdvHRDialog.init, AdvHRDialog);\r
diff --git a/program/js/tiny_mce/plugins/advhr/langs/ar_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/ar_dlg.js
new file mode 100644 (file)
index 0000000..9ee0c39
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..a1d0ecc
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..50d9d37
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..2077a11
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..e381320
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..4305974
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..4ef7222
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..a74dd20
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..d98b735
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..3f9657c
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..7c5143e
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..3ca3adf
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..0c3bf15
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..e5eddda
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..dacd638
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..5b0b2ba
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..aaed07d
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..9b17605
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..3318d1f
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..4b6995c
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..71adc8e
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..fd491ea
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..1ac67b0
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..626838d
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..f9ed728
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..6638262
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..88f4f06
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..72b210d
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..db51334
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..70adc8b
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..ddd77a6
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..bde22eb
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..07294cb
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..6f6a903
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..06ac878
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..f448e08
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..e41c2f4
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..d3ab5ac
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..535505a
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..f4e5138
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..a13f870
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..5310220
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..d501da3
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..553f03f
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..3e2c500
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..60ae5bc
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..23ca296
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..a6ee979
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..603e50c
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..f2601e3
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..c05c365
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..93e932c
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..fb999eb
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..296ccb6
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..b1d5525
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..c891216
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..33bfb60
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..843e1f8
--- /dev/null
@@ -0,0 +1,58 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+       <title>{#advhr.advhr_desc}</title>\r
+       <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+       <script type="text/javascript" src="js/rule.js"></script>\r
+       <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
+       <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
+       <link href="css/advhr.css" rel="stylesheet" type="text/css" />\r
+</head>\r
+<body role="application">\r
+<form onsubmit="AdvHRDialog.update();return false;" action="#">\r
+       <div class="tabs">\r
+               <ul>\r
+                       <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>\r
+               </ul>\r
+       </div>\r
+\r
+       <div class="panel_wrapper">\r
+               <div id="general_panel" class="panel current">\r
+                       <table role="presentation" border="0" cellpadding="4" cellspacing="0">\r
+                                       <tr role="group" aria-labelledby="width_label">\r
+                                               <td><label id="width_label" for="width">{#advhr_dlg.width}</label></td>\r
+                                               <td class="nowrap">\r
+                                                       <input id="width" name="width" type="text" value="" class="mceFocus" />\r
+                                                       <span style="display:none;" id="width_unit_label">{#advhr_dlg.widthunits}</span>\r
+                                                       <select name="width2" id="width2" aria-labelledby="width_unit_label">\r
+                                                               <option value="">px</option>\r
+                                                               <option value="%">%</option>\r
+                                                       </select>\r
+                                               </td>\r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td><label for="size">{#advhr_dlg.size}</label></td>\r
+                                               <td><select id="size" name="size">\r
+                                                       <option value="">{#advhr_dlg.normal}</option>\r
+                                                       <option value="1">1</option>\r
+                                                       <option value="2">2</option>\r
+                                                       <option value="3">3</option>\r
+                                                       <option value="4">4</option>\r
+                                                       <option value="5">5</option>\r
+                                               </select></td>\r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td><label for="noshade">{#advhr_dlg.noshade}</label></td>\r
+                                               <td><input type="checkbox" name="noshade" id="noshade" class="radio" /></td>\r
+                                       </tr>\r
+                       </table>\r
+               </div>\r
+       </div>\r
+\r
+       <div class="mceActionPanel">\r
+               <input type="submit" id="insert" name="insert" value="{#insert}" />\r
+               <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+       </div>\r
+</form>\r
+</body>\r
+</html>\r
diff --git a/program/js/tiny_mce/plugins/advimage/css/advimage.css b/program/js/tiny_mce/plugins/advimage/css/advimage.css
new file mode 100644 (file)
index 0000000..0a6251a
--- /dev/null
@@ -0,0 +1,13 @@
+#src_list, #over_list, #out_list {width:280px;}\r
+.mceActionPanel {margin-top:7px;}\r
+.alignPreview {border:1px solid #000; width:140px; height:140px; overflow:hidden; padding:5px;}\r
+.checkbox {border:0;}\r
+.panel_wrapper div.current {height:305px;}\r
+#prev {margin:0; border:1px solid #000; width:428px; height:150px; overflow:auto;}\r
+#align, #classlist {width:150px;}\r
+#width, #height {vertical-align:middle; width:50px; text-align:center;}\r
+#vspace, #hspace, #border {vertical-align:middle; width:30px; text-align:center;}\r
+#class_list {width:180px;}\r
+input {width: 280px;}\r
+#constrain, #onmousemovecheck {width:auto;}\r
+#id, #dir, #lang, #usemap, #longdesc {width:200px;}\r
diff --git a/program/js/tiny_mce/plugins/advimage/editor_plugin.js b/program/js/tiny_mce/plugins/advimage/editor_plugin.js
new file mode 100644 (file)
index 0000000..d613a61
--- /dev/null
@@ -0,0 +1 @@
+(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
new file mode 100644 (file)
index 0000000..d2678cb
--- /dev/null
@@ -0,0 +1,50 @@
+/**\r
+ * editor_plugin_src.js\r
+ *\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ */\r
+\r
+(function() {\r
+       tinymce.create('tinymce.plugins.AdvancedImagePlugin', {\r
+               init : function(ed, url) {\r
+                       // Register commands\r
+                       ed.addCommand('mceAdvImage', function() {\r
+                               // Internal image object like a flash placeholder\r
+                               if (ed.dom.getAttrib(ed.selection.getNode(), 'class', '').indexOf('mceItem') != -1)\r
+                                       return;\r
+\r
+                               ed.windowManager.open({\r
+                                       file : url + '/image.htm',\r
+                                       width : 480 + parseInt(ed.getLang('advimage.delta_width', 0)),\r
+                                       height : 385 + parseInt(ed.getLang('advimage.delta_height', 0)),\r
+                                       inline : 1\r
+                               }, {\r
+                                       plugin_url : url\r
+                               });\r
+                       });\r
+\r
+                       // Register buttons\r
+                       ed.addButton('image', {\r
+                               title : 'advimage.image_desc',\r
+                               cmd : 'mceAdvImage'\r
+                       });\r
+               },\r
+\r
+               getInfo : function() {\r
+                       return {\r
+                               longname : 'Advanced image',\r
+                               author : 'Moxiecode Systems AB',\r
+                               authorurl : 'http://tinymce.moxiecode.com',\r
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage',\r
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+                       };\r
+               }\r
+       });\r
+\r
+       // Register plugin\r
+       tinymce.PluginManager.add('advimage', tinymce.plugins.AdvancedImagePlugin);\r
+})();
\ 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
new file mode 100644 (file)
index 0000000..ed16b3d
--- /dev/null
@@ -0,0 +1,235 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+       <title>{#advimage_dlg.dialog_title}</title>\r
+       <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+       <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
+       <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
+       <script type="text/javascript" src="../../utils/validate.js"></script>\r
+       <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
+       <script type="text/javascript" src="js/image.js"></script>\r
+       <link href="css/advimage.css" rel="stylesheet" type="text/css" />\r
+</head>\r
+<body id="advimage" style="display: none" role="application" aria-labelledby="app_title">\r
+       <span id="app_title" style="display:none">{#advimage_dlg.dialog_title}</span>\r
+       <form onsubmit="ImageDialog.insert();return false;" action="#"> \r
+               <div class="tabs">\r
+                       <ul>\r
+                               <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>\r
+                               <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>\r
+                               <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>\r
+                       </ul>\r
+               </div>\r
+\r
+               <div class="panel_wrapper">\r
+                       <div id="general_panel" class="panel current">\r
+                               <fieldset>\r
+                                               <legend>{#advimage_dlg.general}</legend>\r
+\r
+                                               <table role="presentation" class="properties">\r
+                                                       <tr>\r
+                                                               <td class="column1"><label id="srclabel" for="src">{#advimage_dlg.src}</label></td>\r
+                                                               <td colspan="2"><table role="presentation" border="0" cellspacing="0" cellpadding="0">\r
+                                                                       <tr> \r
+                                                                               <td><input name="src" type="text" id="src" value="" class="mceFocus" onchange="ImageDialog.showPreviewImage(this.value);" aria-required="true" /></td> \r
+                                                                               <td id="srcbrowsercontainer">&nbsp;</td>\r
+                                                                       </tr>\r
+                                                               </table></td>\r
+                                                       </tr>\r
+                                                       <tr>\r
+                                                               <td><label for="src_list">{#advimage_dlg.image_list}</label></td>\r
+                                                               <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>\r
+                                                       </tr>\r
+                                                       <tr> \r
+                                                               <td class="column1"><label id="altlabel" for="alt">{#advimage_dlg.alt}</label></td> \r
+                                                               <td colspan="2"><input id="alt" name="alt" type="text" value="" /></td> \r
+                                                       </tr> \r
+                                                       <tr> \r
+                                                               <td class="column1"><label id="titlelabel" for="title">{#advimage_dlg.title}</label></td> \r
+                                                               <td colspan="2"><input id="title" name="title" type="text" value="" /></td> \r
+                                                       </tr>\r
+                                               </table>\r
+                               </fieldset>\r
+\r
+                               <fieldset>\r
+                                       <legend>{#advimage_dlg.preview}</legend>\r
+                                       <div id="prev"></div>\r
+                               </fieldset>\r
+                       </div>\r
+\r
+                       <div id="appearance_panel" class="panel">\r
+                               <fieldset>\r
+                                       <legend>{#advimage_dlg.tab_appearance}</legend>\r
+\r
+                                       <table role="presentation" border="0" cellpadding="4" cellspacing="0">\r
+                                               <tr> \r
+                                                       <td class="column1"><label id="alignlabel" for="align">{#advimage_dlg.align}</label></td> \r
+                                                       <td><select id="align" name="align" onchange="ImageDialog.updateStyle('align');ImageDialog.changeAppearance();"> \r
+                                                                       <option value="">{#not_set}</option> \r
+                                                                       <option value="baseline">{#advimage_dlg.align_baseline}</option>\r
+                                                                       <option value="top">{#advimage_dlg.align_top}</option>\r
+                                                                       <option value="middle">{#advimage_dlg.align_middle}</option>\r
+                                                                       <option value="bottom">{#advimage_dlg.align_bottom}</option>\r
+                                                                       <option value="text-top">{#advimage_dlg.align_texttop}</option>\r
+                                                                       <option value="text-bottom">{#advimage_dlg.align_textbottom}</option>\r
+                                                                       <option value="left">{#advimage_dlg.align_left}</option>\r
+                                                                       <option value="right">{#advimage_dlg.align_right}</option>\r
+                                                               </select> \r
+                                                       </td>\r
+                                                       <td rowspan="6" valign="top">\r
+                                                               <div class="alignPreview">\r
+                                                                       <img id="alignSampleImg" src="img/sample.gif" alt="{#advimage_dlg.example_img}" />\r
+                                                                       Lorem ipsum, Dolor sit amet, consectetuer adipiscing loreum ipsum edipiscing elit, sed diam\r
+                                                                       nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.Loreum ipsum\r
+                                                                       edipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam\r
+                                                                       erat volutpat.\r
+                                                               </div>\r
+                                                       </td>\r
+                                               </tr>\r
+\r
+                                               <tr role="group" aria-labelledby="widthlabel">\r
+                                                       <td class="column1"><label id="widthlabel" for="width">{#advimage_dlg.dimensions}</label></td>\r
+                                                       <td class="nowrap">\r
+                                                               <span style="display:none" id="width_voiceLabel">{#advimage_dlg.width}</span>\r
+                                                               <input name="width" type="text" id="width" value="" size="5" maxlength="5" class="size" onchange="ImageDialog.changeHeight();" aria-labelledby="width_voiceLabel" /> x \r
+                                                               <span style="display:none" id="height_voiceLabel">{#advimage_dlg.height}</span>\r
+                                                               <input name="height" type="text" id="height" value="" size="5" maxlength="5" class="size" onchange="ImageDialog.changeWidth();" aria-labelledby="height_voiceLabel" /> px\r
+                                                       </td>\r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td>&nbsp;</td>\r
+                                                       <td><table role="presentation" border="0" cellpadding="0" cellspacing="0">\r
+                                                                       <tr>\r
+                                                                               <td><input id="constrain" type="checkbox" name="constrain" class="checkbox" /></td>\r
+                                                                               <td><label id="constrainlabel" for="constrain">{#advimage_dlg.constrain_proportions}</label></td>\r
+                                                                       </tr>\r
+                                                               </table></td>\r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td class="column1"><label id="vspacelabel" for="vspace">{#advimage_dlg.vspace}</label></td> \r
+                                                       <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();" />\r
+                                                       </td>\r
+                                               </tr>\r
+\r
+                                               <tr> \r
+                                                       <td class="column1"><label id="hspacelabel" for="hspace">{#advimage_dlg.hspace}</label></td> \r
+                                                       <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> \r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td class="column1"><label id="borderlabel" for="border">{#advimage_dlg.border}</label></td> \r
+                                                       <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> \r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td><label for="class_list">{#class_name}</label></td>\r
+                                                       <td colspan="2"><select id="class_list" name="class_list" class="mceEditableSelect"><option value=""></option></select></td>\r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td class="column1"><label id="stylelabel" for="style">{#advimage_dlg.style}</label></td> \r
+                                                       <td colspan="2"><input id="style" name="style" type="text" value="" onchange="ImageDialog.changeAppearance();" /></td> \r
+                                               </tr>\r
+\r
+                                               <!-- <tr>\r
+                                                       <td class="column1"><label id="classeslabel" for="classes">{#advimage_dlg.classes}</label></td> \r
+                                                       <td colspan="2"><input id="classes" name="classes" type="text" value="" onchange="selectByValue(this.form,'classlist',this.value,true);" /></td> \r
+                                               </tr> -->\r
+                                       </table>\r
+                               </fieldset>\r
+                       </div>\r
+\r
+                       <div id="advanced_panel" class="panel">\r
+                               <fieldset>\r
+                                       <legend>{#advimage_dlg.swap_image}</legend>\r
+\r
+                                       <input type="checkbox" id="onmousemovecheck" name="onmousemovecheck" class="checkbox" onclick="ImageDialog.setSwapImage(this.checked);" aria-controls="onmouseoversrc onmouseoutsrc" />\r
+                                       <label id="onmousemovechecklabel" for="onmousemovecheck">{#advimage_dlg.alt_image}</label>\r
+\r
+                                       <table role="presentation" border="0" cellpadding="4" cellspacing="0" width="100%">\r
+                                                       <tr>\r
+                                                               <td class="column1"><label id="onmouseoversrclabel" for="onmouseoversrc">{#advimage_dlg.mouseover}</label></td> \r
+                                                               <td><table role="presentation" border="0" cellspacing="0" cellpadding="0"> \r
+                                                                       <tr> \r
+                                                                               <td><input id="onmouseoversrc" name="onmouseoversrc" type="text" value="" /></td> \r
+                                                                               <td id="onmouseoversrccontainer">&nbsp;</td>\r
+                                                                       </tr>\r
+                                                               </table></td>\r
+                                                       </tr>\r
+                                                       <tr>\r
+                                                               <td><label for="over_list">{#advimage_dlg.image_list}</label></td>\r
+                                                               <td><select id="over_list" name="over_list" onchange="document.getElementById('onmouseoversrc').value=this.options[this.selectedIndex].value;"><option value=""></option></select></td>\r
+                                                       </tr>\r
+                                                       <tr> \r
+                                                               <td class="column1"><label id="onmouseoutsrclabel" for="onmouseoutsrc">{#advimage_dlg.mouseout}</label></td> \r
+                                                               <td class="column2"><table role="presentation" border="0" cellspacing="0" cellpadding="0"> \r
+                                                                       <tr> \r
+                                                                               <td><input id="onmouseoutsrc" name="onmouseoutsrc" type="text" value="" /></td> \r
+                                                                               <td id="onmouseoutsrccontainer">&nbsp;</td>\r
+                                                                       </tr> \r
+                                                               </table></td> \r
+                                                       </tr>\r
+                                                       <tr>\r
+                                                               <td><label for="out_list">{#advimage_dlg.image_list}</label></td>\r
+                                                               <td><select id="out_list" name="out_list" onchange="document.getElementById('onmouseoutsrc').value=this.options[this.selectedIndex].value;"><option value=""></option></select></td>\r
+                                                       </tr>\r
+                                       </table>\r
+                               </fieldset>\r
+\r
+                               <fieldset>\r
+                                       <legend>{#advimage_dlg.misc}</legend>\r
+\r
+                                       <table role="presentation" border="0" cellpadding="4" cellspacing="0">\r
+                                               <tr>\r
+                                                       <td class="column1"><label id="idlabel" for="id">{#advimage_dlg.id}</label></td> \r
+                                                       <td><input id="id" name="id" type="text" value="" /></td> \r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td class="column1"><label id="dirlabel" for="dir">{#advimage_dlg.langdir}</label></td> \r
+                                                       <td>\r
+                                                               <select id="dir" name="dir" onchange="ImageDialog.changeAppearance();"> \r
+                                                                               <option value="">{#not_set}</option> \r
+                                                                               <option value="ltr">{#advimage_dlg.ltr}</option> \r
+                                                                               <option value="rtl">{#advimage_dlg.rtl}</option> \r
+                                                               </select>\r
+                                                       </td> \r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td class="column1"><label id="langlabel" for="lang">{#advimage_dlg.langcode}</label></td> \r
+                                                       <td>\r
+                                                               <input id="lang" name="lang" type="text" value="" />\r
+                                                       </td> \r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td class="column1"><label id="usemaplabel" for="usemap">{#advimage_dlg.map}</label></td> \r
+                                                       <td>\r
+                                                               <input id="usemap" name="usemap" type="text" value="" />\r
+                                                       </td> \r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td class="column1"><label id="longdesclabel" for="longdesc">{#advimage_dlg.long_desc}</label></td>\r
+                                                       <td><table role="presentation" border="0" cellspacing="0" cellpadding="0">\r
+                                                                       <tr>\r
+                                                                               <td><input id="longdesc" name="longdesc" type="text" value="" /></td>\r
+                                                                               <td id="longdesccontainer">&nbsp;</td>\r
+                                                                       </tr>\r
+                                                       </table></td> \r
+                                               </tr>\r
+                                       </table>\r
+                               </fieldset>\r
+                       </div>\r
+               </div>\r
+\r
+               <div class="mceActionPanel">\r
+                       <input type="submit" id="insert" name="insert" value="{#insert}" />\r
+                       <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+               </div>\r
+       </form>\r
+</body> \r
+</html> \r
diff --git a/program/js/tiny_mce/plugins/advimage/img/sample.gif b/program/js/tiny_mce/plugins/advimage/img/sample.gif
new file mode 100644 (file)
index 0000000..53bf689
Binary files /dev/null and b/program/js/tiny_mce/plugins/advimage/img/sample.gif differ
diff --git a/program/js/tiny_mce/plugins/advimage/js/image.js b/program/js/tiny_mce/plugins/advimage/js/image.js
new file mode 100644 (file)
index 0000000..f0b7c6e
--- /dev/null
@@ -0,0 +1,464 @@
+var ImageDialog = {\r
+       preInit : function() {\r
+               var url;\r
+\r
+               tinyMCEPopup.requireLangPack();\r
+\r
+               if (url = tinyMCEPopup.getParam("external_image_list_url"))\r
+                       document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');\r
+       },\r
+\r
+       init : function(ed) {\r
+               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');\r
+\r
+               tinyMCEPopup.resizeToInnerSize();\r
+               this.fillClassList('class_list');\r
+               this.fillFileList('src_list', fl);\r
+               this.fillFileList('over_list', fl);\r
+               this.fillFileList('out_list', fl);\r
+               TinyMCE_EditableSelects.init();\r
+\r
+               if (n.nodeName == 'IMG') {\r
+                       nl.src.value = dom.getAttrib(n, 'src');\r
+                       nl.width.value = dom.getAttrib(n, 'width');\r
+                       nl.height.value = dom.getAttrib(n, 'height');\r
+                       nl.alt.value = dom.getAttrib(n, 'alt');\r
+                       nl.title.value = dom.getAttrib(n, 'title');\r
+                       nl.vspace.value = this.getAttrib(n, 'vspace');\r
+                       nl.hspace.value = this.getAttrib(n, 'hspace');\r
+                       nl.border.value = this.getAttrib(n, 'border');\r
+                       selectByValue(f, 'align', this.getAttrib(n, 'align'));\r
+                       selectByValue(f, 'class_list', dom.getAttrib(n, 'class'), true, true);\r
+                       nl.style.value = dom.getAttrib(n, 'style');\r
+                       nl.id.value = dom.getAttrib(n, 'id');\r
+                       nl.dir.value = dom.getAttrib(n, 'dir');\r
+                       nl.lang.value = dom.getAttrib(n, 'lang');\r
+                       nl.usemap.value = dom.getAttrib(n, 'usemap');\r
+                       nl.longdesc.value = dom.getAttrib(n, 'longdesc');\r
+                       nl.insert.value = ed.getLang('update');\r
+\r
+                       if (/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/.test(dom.getAttrib(n, 'onmouseover')))\r
+                               nl.onmouseoversrc.value = dom.getAttrib(n, 'onmouseover').replace(/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/, '$1');\r
+\r
+                       if (/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/.test(dom.getAttrib(n, 'onmouseout')))\r
+                               nl.onmouseoutsrc.value = dom.getAttrib(n, 'onmouseout').replace(/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/, '$1');\r
+\r
+                       if (ed.settings.inline_styles) {\r
+                               // Move attribs to styles\r
+                               if (dom.getAttrib(n, 'align'))\r
+                                       this.updateStyle('align');\r
+\r
+                               if (dom.getAttrib(n, 'hspace'))\r
+                                       this.updateStyle('hspace');\r
+\r
+                               if (dom.getAttrib(n, 'border'))\r
+                                       this.updateStyle('border');\r
+\r
+                               if (dom.getAttrib(n, 'vspace'))\r
+                                       this.updateStyle('vspace');\r
+                       }\r
+               }\r
+\r
+               // Setup browse button\r
+               document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image');\r
+               if (isVisible('srcbrowser'))\r
+                       document.getElementById('src').style.width = '260px';\r
+\r
+               // Setup browse button\r
+               document.getElementById('onmouseoversrccontainer').innerHTML = getBrowserHTML('overbrowser','onmouseoversrc','image','theme_advanced_image');\r
+               if (isVisible('overbrowser'))\r
+                       document.getElementById('onmouseoversrc').style.width = '260px';\r
+\r
+               // Setup browse button\r
+               document.getElementById('onmouseoutsrccontainer').innerHTML = getBrowserHTML('outbrowser','onmouseoutsrc','image','theme_advanced_image');\r
+               if (isVisible('outbrowser'))\r
+                       document.getElementById('onmouseoutsrc').style.width = '260px';\r
+\r
+               // If option enabled default contrain proportions to checked\r
+               if (ed.getParam("advimage_constrain_proportions", true))\r
+                       f.constrain.checked = true;\r
+\r
+               // Check swap image if valid data\r
+               if (nl.onmouseoversrc.value || nl.onmouseoutsrc.value)\r
+                       this.setSwapImage(true);\r
+               else\r
+                       this.setSwapImage(false);\r
+\r
+               this.changeAppearance();\r
+               this.showPreviewImage(nl.src.value, 1);\r
+       },\r
+\r
+       insert : function(file, title) {\r
+               var ed = tinyMCEPopup.editor, t = this, f = document.forms[0];\r
+\r
+               if (f.src.value === '') {\r
+                       if (ed.selection.getNode().nodeName == 'IMG') {\r
+                               ed.dom.remove(ed.selection.getNode());\r
+                               ed.execCommand('mceRepaint');\r
+                       }\r
+\r
+                       tinyMCEPopup.close();\r
+                       return;\r
+               }\r
+\r
+               if (tinyMCEPopup.getParam("accessibility_warnings", 1)) {\r
+                       if (!f.alt.value) {\r
+                               tinyMCEPopup.confirm(tinyMCEPopup.getLang('advimage_dlg.missing_alt'), function(s) {\r
+                                       if (s)\r
+                                               t.insertAndClose();\r
+                               });\r
+\r
+                               return;\r
+                       }\r
+               }\r
+\r
+               t.insertAndClose();\r
+       },\r
+\r
+       insertAndClose : function() {\r
+               var ed = tinyMCEPopup.editor, f = document.forms[0], nl = f.elements, v, args = {}, el;\r
+\r
+               tinyMCEPopup.restoreSelection();\r
+\r
+               // Fixes crash in Safari\r
+               if (tinymce.isWebKit)\r
+                       ed.getWin().focus();\r
+\r
+               if (!ed.settings.inline_styles) {\r
+                       args = {\r
+                               vspace : nl.vspace.value,\r
+                               hspace : nl.hspace.value,\r
+                               border : nl.border.value,\r
+                               align : getSelectValue(f, 'align')\r
+                       };\r
+               } else {\r
+                       // Remove deprecated values\r
+                       args = {\r
+                               vspace : '',\r
+                               hspace : '',\r
+                               border : '',\r
+                               align : ''\r
+                       };\r
+               }\r
+\r
+               tinymce.extend(args, {\r
+                       src : nl.src.value.replace(/ /g, '%20'),\r
+                       width : nl.width.value,\r
+                       height : nl.height.value,\r
+                       alt : nl.alt.value,\r
+                       title : nl.title.value,\r
+                       'class' : getSelectValue(f, 'class_list'),\r
+                       style : nl.style.value,\r
+                       id : nl.id.value,\r
+                       dir : nl.dir.value,\r
+                       lang : nl.lang.value,\r
+                       usemap : nl.usemap.value,\r
+                       longdesc : nl.longdesc.value\r
+               });\r
+\r
+               args.onmouseover = args.onmouseout = '';\r
+\r
+               if (f.onmousemovecheck.checked) {\r
+                       if (nl.onmouseoversrc.value)\r
+                               args.onmouseover = "this.src='" + nl.onmouseoversrc.value + "';";\r
+\r
+                       if (nl.onmouseoutsrc.value)\r
+                               args.onmouseout = "this.src='" + nl.onmouseoutsrc.value + "';";\r
+               }\r
+\r
+               el = ed.selection.getNode();\r
+\r
+               if (el && el.nodeName == 'IMG') {\r
+                       ed.dom.setAttribs(el, args);\r
+               } else {\r
+                       tinymce.each(args, function(value, name) {\r
+                               if (value === "") {\r
+                                       delete args[name];\r
+                               }\r
+                       });\r
+\r
+                       ed.execCommand('mceInsertContent', false, tinyMCEPopup.editor.dom.createHTML('img', args), {skip_undo : 1});\r
+                       ed.undoManager.add();\r
+               }\r
+\r
+               tinyMCEPopup.editor.execCommand('mceRepaint');\r
+               tinyMCEPopup.editor.focus();\r
+               tinyMCEPopup.close();\r
+       },\r
+\r
+       getAttrib : function(e, at) {\r
+               var ed = tinyMCEPopup.editor, dom = ed.dom, v, v2;\r
+\r
+               if (ed.settings.inline_styles) {\r
+                       switch (at) {\r
+                               case 'align':\r
+                                       if (v = dom.getStyle(e, 'float'))\r
+                                               return v;\r
+\r
+                                       if (v = dom.getStyle(e, 'vertical-align'))\r
+                                               return v;\r
+\r
+                                       break;\r
+\r
+                               case 'hspace':\r
+                                       v = dom.getStyle(e, 'margin-left')\r
+                                       v2 = dom.getStyle(e, 'margin-right');\r
+\r
+                                       if (v && v == v2)\r
+                                               return parseInt(v.replace(/[^0-9]/g, ''));\r
+\r
+                                       break;\r
+\r
+                               case 'vspace':\r
+                                       v = dom.getStyle(e, 'margin-top')\r
+                                       v2 = dom.getStyle(e, 'margin-bottom');\r
+                                       if (v && v == v2)\r
+                                               return parseInt(v.replace(/[^0-9]/g, ''));\r
+\r
+                                       break;\r
+\r
+                               case 'border':\r
+                                       v = 0;\r
+\r
+                                       tinymce.each(['top', 'right', 'bottom', 'left'], function(sv) {\r
+                                               sv = dom.getStyle(e, 'border-' + sv + '-width');\r
+\r
+                                               // False or not the same as prev\r
+                                               if (!sv || (sv != v && v !== 0)) {\r
+                                                       v = 0;\r
+                                                       return false;\r
+                                               }\r
+\r
+                                               if (sv)\r
+                                                       v = sv;\r
+                                       });\r
+\r
+                                       if (v)\r
+                                               return parseInt(v.replace(/[^0-9]/g, ''));\r
+\r
+                                       break;\r
+                       }\r
+               }\r
+\r
+               if (v = dom.getAttrib(e, at))\r
+                       return v;\r
+\r
+               return '';\r
+       },\r
+\r
+       setSwapImage : function(st) {\r
+               var f = document.forms[0];\r
+\r
+               f.onmousemovecheck.checked = st;\r
+               setBrowserDisabled('overbrowser', !st);\r
+               setBrowserDisabled('outbrowser', !st);\r
+\r
+               if (f.over_list)\r
+                       f.over_list.disabled = !st;\r
+\r
+               if (f.out_list)\r
+                       f.out_list.disabled = !st;\r
+\r
+               f.onmouseoversrc.disabled = !st;\r
+               f.onmouseoutsrc.disabled  = !st;\r
+       },\r
+\r
+       fillClassList : function(id) {\r
+               var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;\r
+\r
+               if (v = tinyMCEPopup.getParam('theme_advanced_styles')) {\r
+                       cl = [];\r
+\r
+                       tinymce.each(v.split(';'), function(v) {\r
+                               var p = v.split('=');\r
+\r
+                               cl.push({'title' : p[0], 'class' : p[1]});\r
+                       });\r
+               } else\r
+                       cl = tinyMCEPopup.editor.dom.getClasses();\r
+\r
+               if (cl.length > 0) {\r
+                       lst.options.length = 0;\r
+                       lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), '');\r
+\r
+                       tinymce.each(cl, function(o) {\r
+                               lst.options[lst.options.length] = new Option(o.title || o['class'], o['class']);\r
+                       });\r
+               } else\r
+                       dom.remove(dom.getParent(id, 'tr'));\r
+       },\r
+\r
+       fillFileList : function(id, l) {\r
+               var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;\r
+\r
+               l = typeof(l) === 'function' ? l() : window[l];\r
+               lst.options.length = 0;\r
+\r
+               if (l && l.length > 0) {\r
+                       lst.options[lst.options.length] = new Option('', '');\r
+\r
+                       tinymce.each(l, function(o) {\r
+                               lst.options[lst.options.length] = new Option(o[0], o[1]);\r
+                       });\r
+               } else\r
+                       dom.remove(dom.getParent(id, 'tr'));\r
+       },\r
+\r
+       resetImageData : function() {\r
+               var f = document.forms[0];\r
+\r
+               f.elements.width.value = f.elements.height.value = '';\r
+       },\r
+\r
+       updateImageData : function(img, st) {\r
+               var f = document.forms[0];\r
+\r
+               if (!st) {\r
+                       f.elements.width.value = img.width;\r
+                       f.elements.height.value = img.height;\r
+               }\r
+\r
+               this.preloadImg = img;\r
+       },\r
+\r
+       changeAppearance : function() {\r
+               var ed = tinyMCEPopup.editor, f = document.forms[0], img = document.getElementById('alignSampleImg');\r
+\r
+               if (img) {\r
+                       if (ed.getParam('inline_styles')) {\r
+                               ed.dom.setAttrib(img, 'style', f.style.value);\r
+                       } else {\r
+                               img.align = f.align.value;\r
+                               img.border = f.border.value;\r
+                               img.hspace = f.hspace.value;\r
+                               img.vspace = f.vspace.value;\r
+                       }\r
+               }\r
+       },\r
+\r
+       changeHeight : function() {\r
+               var f = document.forms[0], tp, t = this;\r
+\r
+               if (!f.constrain.checked || !t.preloadImg) {\r
+                       return;\r
+               }\r
+\r
+               if (f.width.value == "" || f.height.value == "")\r
+                       return;\r
+\r
+               tp = (parseInt(f.width.value) / parseInt(t.preloadImg.width)) * t.preloadImg.height;\r
+               f.height.value = tp.toFixed(0);\r
+       },\r
+\r
+       changeWidth : function() {\r
+               var f = document.forms[0], tp, t = this;\r
+\r
+               if (!f.constrain.checked || !t.preloadImg) {\r
+                       return;\r
+               }\r
+\r
+               if (f.width.value == "" || f.height.value == "")\r
+                       return;\r
+\r
+               tp = (parseInt(f.height.value) / parseInt(t.preloadImg.height)) * t.preloadImg.width;\r
+               f.width.value = tp.toFixed(0);\r
+       },\r
+\r
+       updateStyle : function(ty) {\r
+               var dom = tinyMCEPopup.dom, b, bStyle, bColor, v, isIE = tinymce.isIE, f = document.forms[0], img = dom.create('img', {style : dom.get('style').value});\r
+\r
+               if (tinyMCEPopup.editor.settings.inline_styles) {\r
+                       // Handle align\r
+                       if (ty == 'align') {\r
+                               dom.setStyle(img, 'float', '');\r
+                               dom.setStyle(img, 'vertical-align', '');\r
+\r
+                               v = getSelectValue(f, 'align');\r
+                               if (v) {\r
+                                       if (v == 'left' || v == 'right')\r
+                                               dom.setStyle(img, 'float', v);\r
+                                       else\r
+                                               img.style.verticalAlign = v;\r
+                               }\r
+                       }\r
+\r
+                       // Handle border\r
+                       if (ty == 'border') {\r
+                               b = img.style.border ? img.style.border.split(' ') : [];\r
+                               bStyle = dom.getStyle(img, 'border-style');\r
+                               bColor = dom.getStyle(img, 'border-color');\r
+\r
+                               dom.setStyle(img, 'border', '');\r
+\r
+                               v = f.border.value;\r
+                               if (v || v == '0') {\r
+                                       if (v == '0')\r
+                                               img.style.border = isIE ? '0' : '0 none none';\r
+                                       else {\r
+                                               var isOldIE = tinymce.isIE && (!document.documentMode || document.documentMode < 9);\r
+\r
+                                               if (b.length == 3 && b[isOldIE ? 2 : 1])\r
+                                                       bStyle = b[isOldIE ? 2 : 1];\r
+                                               else if (!bStyle || bStyle == 'none')\r
+                                                       bStyle = 'solid';\r
+                                               if (b.length == 3 && b[isIE ? 0 : 2])\r
+                                                       bColor = b[isOldIE ? 0 : 2];\r
+                                               else if (!bColor || bColor == 'none')\r
+                                                       bColor = 'black';\r
+                                               img.style.border = v + 'px ' + bStyle + ' ' + bColor;\r
+                                       }\r
+                               }\r
+                       }\r
+\r
+                       // Handle hspace\r
+                       if (ty == 'hspace') {\r
+                               dom.setStyle(img, 'marginLeft', '');\r
+                               dom.setStyle(img, 'marginRight', '');\r
+\r
+                               v = f.hspace.value;\r
+                               if (v) {\r
+                                       img.style.marginLeft = v + 'px';\r
+                                       img.style.marginRight = v + 'px';\r
+                               }\r
+                       }\r
+\r
+                       // Handle vspace\r
+                       if (ty == 'vspace') {\r
+                               dom.setStyle(img, 'marginTop', '');\r
+                               dom.setStyle(img, 'marginBottom', '');\r
+\r
+                               v = f.vspace.value;\r
+                               if (v) {\r
+                                       img.style.marginTop = v + 'px';\r
+                                       img.style.marginBottom = v + 'px';\r
+                               }\r
+                       }\r
+\r
+                       // Merge\r
+                       dom.get('style').value = dom.serializeStyle(dom.parseStyle(img.style.cssText), 'img');\r
+               }\r
+       },\r
+\r
+       changeMouseMove : function() {\r
+       },\r
+\r
+       showPreviewImage : function(u, st) {\r
+               if (!u) {\r
+                       tinyMCEPopup.dom.setHTML('prev', '');\r
+                       return;\r
+               }\r
+\r
+               if (!st && tinyMCEPopup.getParam("advimage_update_dimensions_onchange", true))\r
+                       this.resetImageData();\r
+\r
+               u = tinyMCEPopup.editor.documentBaseURI.toAbsolute(u);\r
+\r
+               if (!st)\r
+                       tinyMCEPopup.dom.setHTML('prev', '<img id="previewImg" src="' + u + '" border="0" onload="ImageDialog.updateImageData(this);" onerror="ImageDialog.resetImageData();" />');\r
+               else\r
+                       tinyMCEPopup.dom.setHTML('prev', '<img id="previewImg" src="' + u + '" border="0" onload="ImageDialog.updateImageData(this, 1);" />');\r
+       }\r
+};\r
+\r
+ImageDialog.preInit();\r
+tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog);\r
diff --git a/program/js/tiny_mce/plugins/advimage/langs/ar_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/ar_dlg.js
new file mode 100644 (file)
index 0000000..e6a5eb8
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..beebea1
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..7621541
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..d105bc5
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..13a5a0a
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..0cde4ae
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..14250bd
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..cb9cb58
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..5a1ad95
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..66aa88b
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..fc0f6d1
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..4caf910
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..5f122e2
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..b3ea0b2
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..6b6a513
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..0b2e774
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..ea41320
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..a52e737
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..f85c1ec
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..1479bf1
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..aeac4bd
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..fb3ea2a
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..f7b2361
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..4413700
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..d692d27
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..581d4f6
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..e7bc7c6
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..f127dac
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..9195c96
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..f8449c4
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..6ab7d35
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..f2fcb3b
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..8f85e7a
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..836aec6
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..c866cb4
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..07e8538
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..c8f8437
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..ea72728
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..2c0b2ca
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..c32f718
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..58852bc
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..513319f
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..d8d4ef9
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..3e341d1
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..7eac6ba
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..2be48c3
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..b2e990d
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..7806052
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..49c197a
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..af1e61c
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..efb4f91
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..f8dff4f
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..0a1868d
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..d083a13
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..361b0b8
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..5cf6bf5
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..9f51ade
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..1436431
--- /dev/null
@@ -0,0 +1,8 @@
+.mceLinkList, .mceAnchorList, #targetlist {width:280px;}\r
+.mceActionPanel {margin-top:7px;}\r
+.panel_wrapper div.current {height:320px;}\r
+#classlist, #title, #href {width:280px;}\r
+#popupurl, #popupname {width:200px;}\r
+#popupwidth, #popupheight, #popupleft, #popuptop {width:30px;vertical-align:middle;text-align:center;}\r
+#id, #style, #classes, #target, #dir, #hreflang, #lang, #charset, #type, #rel, #rev, #tabindex, #accesskey {width:200px;}\r
+#events_panel input {width:200px;}\r
diff --git a/program/js/tiny_mce/plugins/advlink/editor_plugin.js b/program/js/tiny_mce/plugins/advlink/editor_plugin.js
new file mode 100644 (file)
index 0000000..983fe5a
--- /dev/null
@@ -0,0 +1 @@
+(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
new file mode 100644 (file)
index 0000000..14e46a7
--- /dev/null
@@ -0,0 +1,61 @@
+/**\r
+ * editor_plugin_src.js\r
+ *\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ */\r
+\r
+(function() {\r
+       tinymce.create('tinymce.plugins.AdvancedLinkPlugin', {\r
+               init : function(ed, url) {\r
+                       this.editor = ed;\r
+\r
+                       // Register commands\r
+                       ed.addCommand('mceAdvLink', function() {\r
+                               var se = ed.selection;\r
+\r
+                               // No selection and not in link\r
+                               if (se.isCollapsed() && !ed.dom.getParent(se.getNode(), 'A'))\r
+                                       return;\r
+\r
+                               ed.windowManager.open({\r
+                                       file : url + '/link.htm',\r
+                                       width : 480 + parseInt(ed.getLang('advlink.delta_width', 0)),\r
+                                       height : 400 + parseInt(ed.getLang('advlink.delta_height', 0)),\r
+                                       inline : 1\r
+                               }, {\r
+                                       plugin_url : url\r
+                               });\r
+                       });\r
+\r
+                       // Register buttons\r
+                       ed.addButton('link', {\r
+                               title : 'advlink.link_desc',\r
+                               cmd : 'mceAdvLink'\r
+                       });\r
+\r
+                       ed.addShortcut('ctrl+k', 'advlink.advlink_desc', 'mceAdvLink');\r
+\r
+                       ed.onNodeChange.add(function(ed, cm, n, co) {\r
+                               cm.setDisabled('link', co && n.nodeName != 'A');\r
+                               cm.setActive('link', n.nodeName == 'A' && !n.name);\r
+                       });\r
+               },\r
+\r
+               getInfo : function() {\r
+                       return {\r
+                               longname : 'Advanced link',\r
+                               author : 'Moxiecode Systems AB',\r
+                               authorurl : 'http://tinymce.moxiecode.com',\r
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink',\r
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+                       };\r
+               }\r
+       });\r
+\r
+       // Register plugin\r
+       tinymce.PluginManager.add('advlink', tinymce.plugins.AdvancedLinkPlugin);\r
+})();
\ 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
new file mode 100644 (file)
index 0000000..9ca955c
--- /dev/null
@@ -0,0 +1,539 @@
+/* Functions for the advlink plugin popup */\r
+\r
+tinyMCEPopup.requireLangPack();\r
+\r
+var templates = {\r
+       "window.open" : "window.open('${url}','${target}','${options}')"\r
+};\r
+\r
+function preinit() {\r
+       var url;\r
+\r
+       if (url = tinyMCEPopup.getParam("external_link_list_url"))\r
+               document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');\r
+}\r
+\r
+function changeClass() {\r
+       var f = document.forms[0];\r
+\r
+       f.classes.value = getSelectValue(f, 'classlist');\r
+}\r
+\r
+function init() {\r
+       tinyMCEPopup.resizeToInnerSize();\r
+\r
+       var formObj = document.forms[0];\r
+       var inst = tinyMCEPopup.editor;\r
+       var elm = inst.selection.getNode();\r
+       var action = "insert";\r
+       var html;\r
+\r
+       document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','advlink');\r
+       document.getElementById('popupurlbrowsercontainer').innerHTML = getBrowserHTML('popupurlbrowser','popupurl','file','advlink');\r
+       document.getElementById('targetlistcontainer').innerHTML = getTargetListHTML('targetlist','target');\r
+\r
+       // Link list\r
+       html = getLinkListHTML('linklisthref','href');\r
+       if (html == "")\r
+               document.getElementById("linklisthrefrow").style.display = 'none';\r
+       else\r
+               document.getElementById("linklisthrefcontainer").innerHTML = html;\r
+\r
+       // Anchor list\r
+       html = getAnchorListHTML('anchorlist','href');\r
+       if (html == "")\r
+               document.getElementById("anchorlistrow").style.display = 'none';\r
+       else\r
+               document.getElementById("anchorlistcontainer").innerHTML = html;\r
+\r
+       // Resize some elements\r
+       if (isVisible('hrefbrowser'))\r
+               document.getElementById('href').style.width = '260px';\r
+\r
+       if (isVisible('popupurlbrowser'))\r
+               document.getElementById('popupurl').style.width = '180px';\r
+\r
+       elm = inst.dom.getParent(elm, "A");\r
+       if (elm == null) {\r
+               var prospect = inst.dom.create("p", null, inst.selection.getContent());\r
+               if (prospect.childNodes.length === 1) {\r
+                       elm = prospect.firstChild;\r
+               }\r
+       }\r
+\r
+       if (elm != null && elm.nodeName == "A")\r
+               action = "update";\r
+\r
+       formObj.insert.value = tinyMCEPopup.getLang(action, 'Insert', true); \r
+\r
+       setPopupControlsDisabled(true);\r
+\r
+       if (action == "update") {\r
+               var href = inst.dom.getAttrib(elm, 'href');\r
+               var onclick = inst.dom.getAttrib(elm, 'onclick');\r
+\r
+               // Setup form data\r
+               setFormValue('href', href);\r
+               setFormValue('title', inst.dom.getAttrib(elm, 'title'));\r
+               setFormValue('id', inst.dom.getAttrib(elm, 'id'));\r
+               setFormValue('style', inst.dom.getAttrib(elm, "style"));\r
+               setFormValue('rel', inst.dom.getAttrib(elm, 'rel'));\r
+               setFormValue('rev', inst.dom.getAttrib(elm, 'rev'));\r
+               setFormValue('charset', inst.dom.getAttrib(elm, 'charset'));\r
+               setFormValue('hreflang', inst.dom.getAttrib(elm, 'hreflang'));\r
+               setFormValue('dir', inst.dom.getAttrib(elm, 'dir'));\r
+               setFormValue('lang', inst.dom.getAttrib(elm, 'lang'));\r
+               setFormValue('tabindex', inst.dom.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : ""));\r
+               setFormValue('accesskey', inst.dom.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : ""));\r
+               setFormValue('type', inst.dom.getAttrib(elm, 'type'));\r
+               setFormValue('onfocus', inst.dom.getAttrib(elm, 'onfocus'));\r
+               setFormValue('onblur', inst.dom.getAttrib(elm, 'onblur'));\r
+               setFormValue('onclick', onclick);\r
+               setFormValue('ondblclick', inst.dom.getAttrib(elm, 'ondblclick'));\r
+               setFormValue('onmousedown', inst.dom.getAttrib(elm, 'onmousedown'));\r
+               setFormValue('onmouseup', inst.dom.getAttrib(elm, 'onmouseup'));\r
+               setFormValue('onmouseover', inst.dom.getAttrib(elm, 'onmouseover'));\r
+               setFormValue('onmousemove', inst.dom.getAttrib(elm, 'onmousemove'));\r
+               setFormValue('onmouseout', inst.dom.getAttrib(elm, 'onmouseout'));\r
+               setFormValue('onkeypress', inst.dom.getAttrib(elm, 'onkeypress'));\r
+               setFormValue('onkeydown', inst.dom.getAttrib(elm, 'onkeydown'));\r
+               setFormValue('onkeyup', inst.dom.getAttrib(elm, 'onkeyup'));\r
+               setFormValue('target', inst.dom.getAttrib(elm, 'target'));\r
+               setFormValue('classes', inst.dom.getAttrib(elm, 'class'));\r
+\r
+               // Parse onclick data\r
+               if (onclick != null && onclick.indexOf('window.open') != -1)\r
+                       parseWindowOpen(onclick);\r
+               else\r
+                       parseFunction(onclick);\r
+\r
+               // Select by the values\r
+               selectByValue(formObj, 'dir', inst.dom.getAttrib(elm, 'dir'));\r
+               selectByValue(formObj, 'rel', inst.dom.getAttrib(elm, 'rel'));\r
+               selectByValue(formObj, 'rev', inst.dom.getAttrib(elm, 'rev'));\r
+               selectByValue(formObj, 'linklisthref', href);\r
+\r
+               if (href.charAt(0) == '#')\r
+                       selectByValue(formObj, 'anchorlist', href);\r
+\r
+               addClassesToList('classlist', 'advlink_styles');\r
+\r
+               selectByValue(formObj, 'classlist', inst.dom.getAttrib(elm, 'class'), true);\r
+               selectByValue(formObj, 'targetlist', inst.dom.getAttrib(elm, 'target'), true);\r
+       } else\r
+               addClassesToList('classlist', 'advlink_styles');\r
+}\r
+\r
+function checkPrefix(n) {\r
+       if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_email')))\r
+               n.value = 'mailto:' + n.value;\r
+\r
+       if (/^\s*www\./i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_external')))\r
+               n.value = 'http://' + n.value;\r
+}\r
+\r
+function setFormValue(name, value) {\r
+       document.forms[0].elements[name].value = value;\r
+}\r
+\r
+function parseWindowOpen(onclick) {\r
+       var formObj = document.forms[0];\r
+\r
+       // Preprocess center code\r
+       if (onclick.indexOf('return false;') != -1) {\r
+               formObj.popupreturn.checked = true;\r
+               onclick = onclick.replace('return false;', '');\r
+       } else\r
+               formObj.popupreturn.checked = false;\r
+\r
+       var onClickData = parseLink(onclick);\r
+\r
+       if (onClickData != null) {\r
+               formObj.ispopup.checked = true;\r
+               setPopupControlsDisabled(false);\r
+\r
+               var onClickWindowOptions = parseOptions(onClickData['options']);\r
+               var url = onClickData['url'];\r
+\r
+               formObj.popupname.value = onClickData['target'];\r
+               formObj.popupurl.value = url;\r
+               formObj.popupwidth.value = getOption(onClickWindowOptions, 'width');\r
+               formObj.popupheight.value = getOption(onClickWindowOptions, 'height');\r
+\r
+               formObj.popupleft.value = getOption(onClickWindowOptions, 'left');\r
+               formObj.popuptop.value = getOption(onClickWindowOptions, 'top');\r
+\r
+               if (formObj.popupleft.value.indexOf('screen') != -1)\r
+                       formObj.popupleft.value = "c";\r
+\r
+               if (formObj.popuptop.value.indexOf('screen') != -1)\r
+                       formObj.popuptop.value = "c";\r
+\r
+               formObj.popuplocation.checked = getOption(onClickWindowOptions, 'location') == "yes";\r
+               formObj.popupscrollbars.checked = getOption(onClickWindowOptions, 'scrollbars') == "yes";\r
+               formObj.popupmenubar.checked = getOption(onClickWindowOptions, 'menubar') == "yes";\r
+               formObj.popupresizable.checked = getOption(onClickWindowOptions, 'resizable') == "yes";\r
+               formObj.popuptoolbar.checked = getOption(onClickWindowOptions, 'toolbar') == "yes";\r
+               formObj.popupstatus.checked = getOption(onClickWindowOptions, 'status') == "yes";\r
+               formObj.popupdependent.checked = getOption(onClickWindowOptions, 'dependent') == "yes";\r
+\r
+               buildOnClick();\r
+       }\r
+}\r
+\r
+function parseFunction(onclick) {\r
+       var formObj = document.forms[0];\r
+       var onClickData = parseLink(onclick);\r
+\r
+       // TODO: Add stuff here\r
+}\r
+\r
+function getOption(opts, name) {\r
+       return typeof(opts[name]) == "undefined" ? "" : opts[name];\r
+}\r
+\r
+function setPopupControlsDisabled(state) {\r
+       var formObj = document.forms[0];\r
+\r
+       formObj.popupname.disabled = state;\r
+       formObj.popupurl.disabled = state;\r
+       formObj.popupwidth.disabled = state;\r
+       formObj.popupheight.disabled = state;\r
+       formObj.popupleft.disabled = state;\r
+       formObj.popuptop.disabled = state;\r
+       formObj.popuplocation.disabled = state;\r
+       formObj.popupscrollbars.disabled = state;\r
+       formObj.popupmenubar.disabled = state;\r
+       formObj.popupresizable.disabled = state;\r
+       formObj.popuptoolbar.disabled = state;\r
+       formObj.popupstatus.disabled = state;\r
+       formObj.popupreturn.disabled = state;\r
+       formObj.popupdependent.disabled = state;\r
+\r
+       setBrowserDisabled('popupurlbrowser', state);\r
+}\r
+\r
+function parseLink(link) {\r
+       link = link.replace(new RegExp('&#39;', 'g'), "'");\r
+\r
+       var fnName = link.replace(new RegExp("\\s*([A-Za-z0-9\.]*)\\s*\\(.*", "gi"), "$1");\r
+\r
+       // Is function name a template function\r
+       var template = templates[fnName];\r
+       if (template) {\r
+               // Build regexp\r
+               var variableNames = template.match(new RegExp("'?\\$\\{[A-Za-z0-9\.]*\\}'?", "gi"));\r
+               var regExp = "\\s*[A-Za-z0-9\.]*\\s*\\(";\r
+               var replaceStr = "";\r
+               for (var i=0; i<variableNames.length; i++) {\r
+                       // Is string value\r
+                       if (variableNames[i].indexOf("'${") != -1)\r
+                               regExp += "'(.*)'";\r
+                       else // Number value\r
+                               regExp += "([0-9]*)";\r
+\r
+                       replaceStr += "$" + (i+1);\r
+\r
+                       // Cleanup variable name\r
+                       variableNames[i] = variableNames[i].replace(new RegExp("[^A-Za-z0-9]", "gi"), "");\r
+\r
+                       if (i != variableNames.length-1) {\r
+                               regExp += "\\s*,\\s*";\r
+                               replaceStr += "<delim>";\r
+                       } else\r
+                               regExp += ".*";\r
+               }\r
+\r
+               regExp += "\\);?";\r
+\r
+               // Build variable array\r
+               var variables = [];\r
+               variables["_function"] = fnName;\r
+               var variableValues = link.replace(new RegExp(regExp, "gi"), replaceStr).split('<delim>');\r
+               for (var i=0; i<variableNames.length; i++)\r
+                       variables[variableNames[i]] = variableValues[i];\r
+\r
+               return variables;\r
+       }\r
+\r
+       return null;\r
+}\r
+\r
+function parseOptions(opts) {\r
+       if (opts == null || opts == "")\r
+               return [];\r
+\r
+       // Cleanup the options\r
+       opts = opts.toLowerCase();\r
+       opts = opts.replace(/;/g, ",");\r
+       opts = opts.replace(/[^0-9a-z=,]/g, "");\r
+\r
+       var optionChunks = opts.split(',');\r
+       var options = [];\r
+\r
+       for (var i=0; i<optionChunks.length; i++) {\r
+               var parts = optionChunks[i].split('=');\r
+\r
+               if (parts.length == 2)\r
+                       options[parts[0]] = parts[1];\r
+       }\r
+\r
+       return options;\r
+}\r
+\r
+function buildOnClick() {\r
+       var formObj = document.forms[0];\r
+\r
+       if (!formObj.ispopup.checked) {\r
+               formObj.onclick.value = "";\r
+               return;\r
+       }\r
+\r
+       var onclick = "window.open('";\r
+       var url = formObj.popupurl.value;\r
+\r
+       onclick += url + "','";\r
+       onclick += formObj.popupname.value + "','";\r
+\r
+       if (formObj.popuplocation.checked)\r
+               onclick += "location=yes,";\r
+\r
+       if (formObj.popupscrollbars.checked)\r
+               onclick += "scrollbars=yes,";\r
+\r
+       if (formObj.popupmenubar.checked)\r
+               onclick += "menubar=yes,";\r
+\r
+       if (formObj.popupresizable.checked)\r
+               onclick += "resizable=yes,";\r
+\r
+       if (formObj.popuptoolbar.checked)\r
+               onclick += "toolbar=yes,";\r
+\r
+       if (formObj.popupstatus.checked)\r
+               onclick += "status=yes,";\r
+\r
+       if (formObj.popupdependent.checked)\r
+               onclick += "dependent=yes,";\r
+\r
+       if (formObj.popupwidth.value != "")\r
+               onclick += "width=" + formObj.popupwidth.value + ",";\r
+\r
+       if (formObj.popupheight.value != "")\r
+               onclick += "height=" + formObj.popupheight.value + ",";\r
+\r
+       if (formObj.popupleft.value != "") {\r
+               if (formObj.popupleft.value != "c")\r
+                       onclick += "left=" + formObj.popupleft.value + ",";\r
+               else\r
+                       onclick += "left='+(screen.availWidth/2-" + (formObj.popupwidth.value/2) + ")+',";\r
+       }\r
+\r
+       if (formObj.popuptop.value != "") {\r
+               if (formObj.popuptop.value != "c")\r
+                       onclick += "top=" + formObj.popuptop.value + ",";\r
+               else\r
+                       onclick += "top='+(screen.availHeight/2-" + (formObj.popupheight.value/2) + ")+',";\r
+       }\r
+\r
+       if (onclick.charAt(onclick.length-1) == ',')\r
+               onclick = onclick.substring(0, onclick.length-1);\r
+\r
+       onclick += "');";\r
+\r
+       if (formObj.popupreturn.checked)\r
+               onclick += "return false;";\r
+\r
+       // tinyMCE.debug(onclick);\r
+\r
+       formObj.onclick.value = onclick;\r
+\r
+       if (formObj.href.value == "")\r
+               formObj.href.value = url;\r
+}\r
+\r
+function setAttrib(elm, attrib, value) {\r
+       var formObj = document.forms[0];\r
+       var valueElm = formObj.elements[attrib.toLowerCase()];\r
+       var dom = tinyMCEPopup.editor.dom;\r
+\r
+       if (typeof(value) == "undefined" || value == null) {\r
+               value = "";\r
+\r
+               if (valueElm)\r
+                       value = valueElm.value;\r
+       }\r
+\r
+       // Clean up the style\r
+       if (attrib == 'style')\r
+               value = dom.serializeStyle(dom.parseStyle(value), 'a');\r
+\r
+       dom.setAttrib(elm, attrib, value);\r
+}\r
+\r
+function getAnchorListHTML(id, target) {\r
+       var ed = tinyMCEPopup.editor, nodes = ed.dom.select('a'), name, i, len, html = "";\r
+\r
+       for (i=0, len=nodes.length; i<len; i++) {\r
+               if ((name = ed.dom.getAttrib(nodes[i], "name")) != "")\r
+                       html += '<option value="#' + name + '">' + name + '</option>';\r
+       }\r
+\r
+       if (html == "")\r
+               return "";\r
+\r
+       html = '<select id="' + id + '" name="' + id + '" class="mceAnchorList"'\r
+               + ' onchange="this.form.' + target + '.value=this.options[this.selectedIndex].value"'\r
+               + '>'\r
+               + '<option value="">---</option>'\r
+               + html\r
+               + '</select>';\r
+\r
+       return html;\r
+}\r
+\r
+function insertAction() {\r
+       var inst = tinyMCEPopup.editor;\r
+       var elm, elementArray, i;\r
+\r
+       elm = inst.selection.getNode();\r
+       checkPrefix(document.forms[0].href);\r
+\r
+       elm = inst.dom.getParent(elm, "A");\r
+\r
+       // Remove element if there is no href\r
+       if (!document.forms[0].href.value) {\r
+               i = inst.selection.getBookmark();\r
+               inst.dom.remove(elm, 1);\r
+               inst.selection.moveToBookmark(i);\r
+               tinyMCEPopup.execCommand("mceEndUndoLevel");\r
+               tinyMCEPopup.close();\r
+               return;\r
+       }\r
+\r
+       // Create new anchor elements\r
+       if (elm == null) {\r
+               inst.getDoc().execCommand("unlink", false, null);\r
+               tinyMCEPopup.execCommand("mceInsertLink", false, "#mce_temp_url#", {skip_undo : 1});\r
+\r
+               elementArray = tinymce.grep(inst.dom.select("a"), function(n) {return inst.dom.getAttrib(n, 'href') == '#mce_temp_url#';});\r
+               for (i=0; i<elementArray.length; i++)\r
+                       setAllAttribs(elm = elementArray[i]);\r
+       } else\r
+               setAllAttribs(elm);\r
+\r
+       // Don't move caret if selection was image\r
+       if (elm.childNodes.length != 1 || elm.firstChild.nodeName != 'IMG') {\r
+               inst.focus();\r
+               inst.selection.select(elm);\r
+               inst.selection.collapse(0);\r
+               tinyMCEPopup.storeSelection();\r
+       }\r
+\r
+       tinyMCEPopup.execCommand("mceEndUndoLevel");\r
+       tinyMCEPopup.close();\r
+}\r
+\r
+function setAllAttribs(elm) {\r
+       var formObj = document.forms[0];\r
+       var href = formObj.href.value.replace(/ /g, '%20');\r
+       var target = getSelectValue(formObj, 'targetlist');\r
+\r
+       setAttrib(elm, 'href', href);\r
+       setAttrib(elm, 'title');\r
+       setAttrib(elm, 'target', target == '_self' ? '' : target);\r
+       setAttrib(elm, 'id');\r
+       setAttrib(elm, 'style');\r
+       setAttrib(elm, 'class', getSelectValue(formObj, 'classlist'));\r
+       setAttrib(elm, 'rel');\r
+       setAttrib(elm, 'rev');\r
+       setAttrib(elm, 'charset');\r
+       setAttrib(elm, 'hreflang');\r
+       setAttrib(elm, 'dir');\r
+       setAttrib(elm, 'lang');\r
+       setAttrib(elm, 'tabindex');\r
+       setAttrib(elm, 'accesskey');\r
+       setAttrib(elm, 'type');\r
+       setAttrib(elm, 'onfocus');\r
+       setAttrib(elm, 'onblur');\r
+       setAttrib(elm, 'onclick');\r
+       setAttrib(elm, 'ondblclick');\r
+       setAttrib(elm, 'onmousedown');\r
+       setAttrib(elm, 'onmouseup');\r
+       setAttrib(elm, 'onmouseover');\r
+       setAttrib(elm, 'onmousemove');\r
+       setAttrib(elm, 'onmouseout');\r
+       setAttrib(elm, 'onkeypress');\r
+       setAttrib(elm, 'onkeydown');\r
+       setAttrib(elm, 'onkeyup');\r
+\r
+       // Refresh in old MSIE\r
+       if (tinyMCE.isMSIE5)\r
+               elm.outerHTML = elm.outerHTML;\r
+}\r
+\r
+function getSelectValue(form_obj, field_name) {\r
+       var elm = form_obj.elements[field_name];\r
+\r
+       if (!elm || elm.options == null || elm.selectedIndex == -1)\r
+               return "";\r
+\r
+       return elm.options[elm.selectedIndex].value;\r
+}\r
+\r
+function getLinkListHTML(elm_id, target_form_element, onchange_func) {\r
+       if (typeof(tinyMCELinkList) == "undefined" || tinyMCELinkList.length == 0)\r
+               return "";\r
+\r
+       var html = "";\r
+\r
+       html += '<select id="' + elm_id + '" name="' + elm_id + '"';\r
+       html += ' class="mceLinkList" onchange="this.form.' + target_form_element + '.value=';\r
+       html += 'this.options[this.selectedIndex].value;';\r
+\r
+       if (typeof(onchange_func) != "undefined")\r
+               html += onchange_func + '(\'' + target_form_element + '\',this.options[this.selectedIndex].text,this.options[this.selectedIndex].value);';\r
+\r
+       html += '"><option value="">---</option>';\r
+\r
+       for (var i=0; i<tinyMCELinkList.length; i++)\r
+               html += '<option value="' + tinyMCELinkList[i][1] + '">' + tinyMCELinkList[i][0] + '</option>';\r
+\r
+       html += '</select>';\r
+\r
+       return html;\r
+\r
+       // tinyMCE.debug('-- image list start --', html, '-- image list end --');\r
+}\r
+\r
+function getTargetListHTML(elm_id, target_form_element) {\r
+       var targets = tinyMCEPopup.getParam('theme_advanced_link_targets', '').split(';');\r
+       var html = '';\r
+\r
+       html += '<select id="' + elm_id + '" name="' + elm_id + '" onchange="this.form.' + target_form_element + '.value=';\r
+       html += 'this.options[this.selectedIndex].value;">';\r
+       html += '<option value="_self">' + tinyMCEPopup.getLang('advlink_dlg.target_same') + '</option>';\r
+       html += '<option value="_blank">' + tinyMCEPopup.getLang('advlink_dlg.target_blank') + ' (_blank)</option>';\r
+       html += '<option value="_parent">' + tinyMCEPopup.getLang('advlink_dlg.target_parent') + ' (_parent)</option>';\r
+       html += '<option value="_top">' + tinyMCEPopup.getLang('advlink_dlg.target_top') + ' (_top)</option>';\r
+\r
+       for (var i=0; i<targets.length; i++) {\r
+               var key, value;\r
+\r
+               if (targets[i] == "")\r
+                       continue;\r
+\r
+               key = targets[i].split('=')[0];\r
+               value = targets[i].split('=')[1];\r
+\r
+               html += '<option value="' + key + '">' + value + ' (' + key + ')</option>';\r
+       }\r
+\r
+       html += '</select>';\r
+\r
+       return html;\r
+}\r
+\r
+// While loading\r
+preinit();\r
+tinyMCEPopup.onInit.add(init);\r
diff --git a/program/js/tiny_mce/plugins/advlink/langs/ar_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/ar_dlg.js
new file mode 100644 (file)
index 0000000..8a2bc7d
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..fe0eee2
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..3b83fe4
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..34e3372
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..8c341be
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..ae841aa
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..c580f73
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..d631229
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..770aeea
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..06f7fe3
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..bb0d3e3
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..dc09399
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..3169a56
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..2d13c2c
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..2f48a37
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..f8431bd
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..5e6c7ef
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..d500971
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..e49488e
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..38e5a78
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..8b38a8e
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..7ea21bd
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..5c31c6d
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..37001bd
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..9cf1c8f
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..f713e31
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..deff7d7
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..a89252e
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..bf19659
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..68ebcd2
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..5ea6a4d
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..21aaa4e
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..7a48ca4
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..3df0d1d
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..6c8f0b6
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..80c0621
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..ea316c3
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..b292475
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..8644b0b
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..d529d7a
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..b0f91e2
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..8167855
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..dc12a98
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..faa6285
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..c3cc3ba
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..288ece5
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..34a398b
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..67e4286
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..6e4bef2
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..8a61944
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..4cf49c3
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..ab37a3c
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..447cc3a
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..91d935e
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..01400de
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..fb228f5
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..5681939
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..8ab7c2a
--- /dev/null
@@ -0,0 +1,338 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+       <title>{#advlink_dlg.title}</title>\r
+       <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+       <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
+       <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
+       <script type="text/javascript" src="../../utils/validate.js"></script>\r
+       <script type="text/javascript" src="js/advlink.js"></script>\r
+       <link href="css/advlink.css" rel="stylesheet" type="text/css" />\r
+</head>\r
+<body id="advlink" style="display: none" role="application" onload="javascript:mcTabs.displayTab('general_tab','general_panel', true);" aria-labelledby="app_label">\r
+       <span class="mceVoiceLabel" id="app_label" style="display:none;">{#advlink_dlg.title}</span>\r
+       <form onsubmit="insertAction();return false;" action="#">\r
+               <div class="tabs" role="presentation">\r
+                       <ul>\r
+                               <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>\r
+                               <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>\r
+                               <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>\r
+                               <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>\r
+                       </ul>\r
+               </div>\r
+\r
+               <div class="panel_wrapper" role="presentation">\r
+                       <div id="general_panel" class="panel current">\r
+                               <fieldset>\r
+                                       <legend>{#advlink_dlg.general_props}</legend>\r
+\r
+                                       <table border="0" cellpadding="4" cellspacing="0" role="presentation">\r
+                                               <tr>\r
+                                                       <td class="nowrap"><label id="hreflabel" for="href">{#advlink_dlg.url}</label></td>\r
+                                                               <td><table border="0" cellspacing="0" cellpadding="0">\r
+                                                       <tr>\r
+                                                               <td><input id="href" name="href" type="text" class="mceFocus" value="" onchange="selectByValue(this.form,'linklisthref',this.value);" aria-required="true" /></td>\r
+                                                               <td id="hrefbrowsercontainer">&nbsp;</td>\r
+                                                       </tr>\r
+                                                       </table></td>\r
+                                               </tr>\r
+                                               <tr id="linklisthrefrow">\r
+                                                       <td class="column1"><label for="linklisthref">{#advlink_dlg.list}</label></td>\r
+                                                       <td colspan="2" id="linklisthrefcontainer"><select id="linklisthref"><option value=""></option></select></td>\r
+                                               </tr>\r
+                                               <tr id="anchorlistrow">\r
+                                                       <td class="column1"><label for="anchorlist">{#advlink_dlg.anchor_names}</label></td>\r
+                                                       <td colspan="2" id="anchorlistcontainer"><select id="anchorlist"><option value=""></option></select></td>\r
+                                               </tr>\r
+                                               <tr>\r
+                                                       <td><label id="targetlistlabel" for="targetlist">{#advlink_dlg.target}</label></td>\r
+                                                       <td id="targetlistcontainer"><select id="targetlist"><option value=""></option></select></td>\r
+                                               </tr>\r
+                                               <tr>\r
+                                                       <td class="nowrap"><label id="titlelabel" for="title">{#advlink_dlg.titlefield}</label></td>\r
+                                                       <td><input id="title" name="title" type="text" value="" /></td>\r
+                                               </tr>\r
+                                               <tr>\r
+                                                       <td><label id="classlabel" for="classlist">{#class_name}</label></td>\r
+                                                       <td>\r
+                                                                <select id="classlist" name="classlist" onchange="changeClass();">\r
+                                                                       <option value="" selected="selected">{#not_set}</option>\r
+                                                                </select>\r
+                                                       </td>\r
+                                               </tr>\r
+                                       </table>\r
+                               </fieldset>\r
+                       </div>\r
+\r
+                       <div id="popup_panel" class="panel">\r
+                               <fieldset>\r
+                                       <legend>{#advlink_dlg.popup_props}</legend>\r
+\r
+                                       <input type="checkbox" id="ispopup" name="ispopup" class="radio" onclick="setPopupControlsDisabled(!this.checked);buildOnClick();" />\r
+                                       <label id="ispopuplabel" for="ispopup">{#advlink_dlg.popup}</label>\r
+\r
+                                       <table border="0" cellpadding="0" cellspacing="4" role="presentation" >\r
+                                               <tr>\r
+                                                       <td class="nowrap"><label for="popupurl">{#advlink_dlg.popup_url}</label>&nbsp;</td>\r
+                                                       <td>\r
+                                                               <table border="0" cellspacing="0" cellpadding="0">\r
+                                                                       <tr>\r
+                                                                               <td><input type="text" name="popupurl" id="popupurl" value="" onchange="buildOnClick();" /></td>\r
+                                                                               <td id="popupurlbrowsercontainer">&nbsp;</td>\r
+                                                                       </tr>\r
+                                                               </table>\r
+                                                       </td>\r
+                                               </tr>\r
+                                               <tr>\r
+                                                       <td class="nowrap"><label for="popupname">{#advlink_dlg.popup_name}</label>&nbsp;</td>\r
+                                                       <td><input type="text" name="popupname" id="popupname" value="" onchange="buildOnClick();" /></td>\r
+                                               </tr>\r
+                                               <tr role="group" aria-labelledby="popup_size_label">\r
+                                                       <td class="nowrap"><label id="popup_size_label">{#advlink_dlg.popup_size}</label>&nbsp;</td>\r
+                                                       <td class="nowrap">\r
+                                                               <span style="display:none" id="width_voiceLabel">{#advlink_dlg.width}</span>\r
+                                                               <input type="text" id="popupwidth" name="popupwidth" value="" onchange="buildOnClick();" aria-labelledby="width_voiceLabel" /> x\r
+                                                               <span style="display:none" id="height_voiceLabel">{#advlink_dlg.height}</span>\r
+                                                               <input type="text" id="popupheight" name="popupheight" value="" onchange="buildOnClick();" aria-labelledby="height_voiceLabel" /> px\r
+                                                       </td>\r
+                                               </tr>\r
+                                               <tr role="group" aria-labelledby="popup_position_label center_hint">\r
+                                                       <td class="nowrap" id="labelleft"><label id="popup_position_label">{#advlink_dlg.popup_position}</label>&nbsp;</td>\r
+                                                       <td class="nowrap">\r
+                                                               <span style="display:none" id="x_voiceLabel">X</span>\r
+                                                               <input type="text" id="popupleft" name="popupleft" value="" onchange="buildOnClick();" aria-labelledby="x_voiceLabel" /> /                                \r
+                                                               <span style="display:none" id="y_voiceLabel">Y</span>\r
+                                                               <input type="text" id="popuptop" name="popuptop" value="" onchange="buildOnClick();" aria-labelledby="y_voiceLabel" /> <span id="center_hint">(c /c = center)</span>\r
+                                                       </td>\r
+                                               </tr>\r
+                                       </table>\r
+\r
+                                       <fieldset>\r
+                                               <legend>{#advlink_dlg.popup_opts}</legend>\r
+\r
+                                               <table border="0" cellpadding="0" cellspacing="4" role="presentation" >\r
+                                                       <tr>\r
+                                                               <td><input type="checkbox" id="popuplocation" name="popuplocation" class="checkbox" onchange="buildOnClick();" /></td>\r
+                                                               <td class="nowrap"><label id="popuplocationlabel" for="popuplocation">{#advlink_dlg.popup_location}</label></td>\r
+                                                               <td><input type="checkbox" id="popupscrollbars" name="popupscrollbars" class="checkbox" onchange="buildOnClick();" /></td>\r
+                                                               <td class="nowrap"><label id="popupscrollbarslabel" for="popupscrollbars">{#advlink_dlg.popup_scrollbars}</label></td>\r
+                                                       </tr>\r
+                                                       <tr>\r
+                                                               <td><input type="checkbox" id="popupmenubar" name="popupmenubar" class="checkbox" onchange="buildOnClick();" /></td>\r
+                                                               <td class="nowrap"><label id="popupmenubarlabel" for="popupmenubar">{#advlink_dlg.popup_menubar}</label></td>\r
+                                                               <td><input type="checkbox" id="popupresizable" name="popupresizable" class="checkbox" onchange="buildOnClick();" /></td>\r
+                                                               <td class="nowrap"><label id="popupresizablelabel" for="popupresizable">{#advlink_dlg.popup_resizable}</label></td>\r
+                                                       </tr>\r
+                                                       <tr>\r
+                                                               <td><input type="checkbox" id="popuptoolbar" name="popuptoolbar" class="checkbox" onchange="buildOnClick();" /></td>\r
+                                                               <td class="nowrap"><label id="popuptoolbarlabel" for="popuptoolbar">{#advlink_dlg.popup_toolbar}</label></td>\r
+                                                               <td><input type="checkbox" id="popupdependent" name="popupdependent" class="checkbox" onchange="buildOnClick();" /></td>\r
+                                                               <td class="nowrap"><label id="popupdependentlabel" for="popupdependent">{#advlink_dlg.popup_dependent}</label></td>\r
+                                                       </tr>\r
+                                                       <tr>\r
+                                                               <td><input type="checkbox" id="popupstatus" name="popupstatus" class="checkbox" onchange="buildOnClick();" /></td>\r
+                                                               <td class="nowrap"><label id="popupstatuslabel" for="popupstatus">{#advlink_dlg.popup_statusbar}</label></td>\r
+                                                               <td><input type="checkbox" id="popupreturn" name="popupreturn" class="checkbox" onchange="buildOnClick();" checked="checked" /></td>\r
+                                                               <td class="nowrap"><label id="popupreturnlabel" for="popupreturn">{#advlink_dlg.popup_return}</label></td>\r
+                                                       </tr>\r
+                                               </table>\r
+                                       </fieldset>\r
+                               </fieldset>\r
+                       </div>\r
+\r
+                       <div id="advanced_panel" class="panel">\r
+                       <fieldset>\r
+                                       <legend>{#advlink_dlg.advanced_props}</legend>\r
+\r
+                                       <table border="0" cellpadding="0" cellspacing="4" role="presentation" >\r
+                                               <tr>\r
+                                                       <td class="column1"><label id="idlabel" for="id">{#advlink_dlg.id}</label></td> \r
+                                                       <td><input id="id" name="id" type="text" value="" /></td> \r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td><label id="stylelabel" for="style">{#advlink_dlg.style}</label></td>\r
+                                                       <td><input type="text" id="style" name="style" value="" /></td>\r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td><label id="classeslabel" for="classes">{#advlink_dlg.classes}</label></td>\r
+                                                       <td><input type="text" id="classes" name="classes" value="" onchange="selectByValue(this.form,'classlist',this.value,true);" /></td>\r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td><label id="targetlabel" for="target">{#advlink_dlg.target_name}</label></td>\r
+                                                       <td><input type="text" id="target" name="target" value="" onchange="selectByValue(this.form,'targetlist',this.value,true);" /></td>\r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td class="column1"><label id="dirlabel" for="dir">{#advlink_dlg.langdir}</label></td> \r
+                                                       <td>\r
+                                                               <select id="dir" name="dir"> \r
+                                                                               <option value="">{#not_set}</option> \r
+                                                                               <option value="ltr">{#advlink_dlg.ltr}</option> \r
+                                                                               <option value="rtl">{#advlink_dlg.rtl}</option> \r
+                                                               </select>\r
+                                                       </td> \r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td><label id="hreflanglabel" for="hreflang">{#advlink_dlg.target_langcode}</label></td>\r
+                                                       <td><input type="text" id="hreflang" name="hreflang" value="" /></td>\r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td class="column1"><label id="langlabel" for="lang">{#advlink_dlg.langcode}</label></td> \r
+                                                       <td>\r
+                                                               <input id="lang" name="lang" type="text" value="" />\r
+                                                       </td> \r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td><label id="charsetlabel" for="charset">{#advlink_dlg.encoding}</label></td>\r
+                                                       <td><input type="text" id="charset" name="charset" value="" /></td>\r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td><label id="typelabel" for="type">{#advlink_dlg.mime}</label></td>\r
+                                                       <td><input type="text" id="type" name="type" value="" /></td>\r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td><label id="rellabel" for="rel">{#advlink_dlg.rel}</label></td>\r
+                                                       <td><select id="rel" name="rel"> \r
+                                                                       <option value="">{#not_set}</option> \r
+                                                                       <option value="lightbox">Lightbox</option> \r
+                                                                       <option value="alternate">Alternate</option> \r
+                                                                       <option value="designates">Designates</option> \r
+                                                                       <option value="stylesheet">Stylesheet</option> \r
+                                                                       <option value="start">Start</option> \r
+                                                                       <option value="next">Next</option> \r
+                                                                       <option value="prev">Prev</option> \r
+                                                                       <option value="contents">Contents</option> \r
+                                                                       <option value="index">Index</option> \r
+                                                                       <option value="glossary">Glossary</option> \r
+                                                                       <option value="copyright">Copyright</option> \r
+                                                                       <option value="chapter">Chapter</option> \r
+                                                                       <option value="subsection">Subsection</option> \r
+                                                                       <option value="appendix">Appendix</option> \r
+                                                                       <option value="help">Help</option> \r
+                                                                       <option value="bookmark">Bookmark</option>\r
+                                                                       <option value="nofollow">No Follow</option>\r
+                                                                       <option value="tag">Tag</option>\r
+                                                               </select> \r
+                                                       </td>\r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td><label id="revlabel" for="rev">{#advlink_dlg.rev}</label></td>\r
+                                                       <td><select id="rev" name="rev"> \r
+                                                                       <option value="">{#not_set}</option> \r
+                                                                       <option value="alternate">Alternate</option> \r
+                                                                       <option value="designates">Designates</option> \r
+                                                                       <option value="stylesheet">Stylesheet</option> \r
+                                                                       <option value="start">Start</option> \r
+                                                                       <option value="next">Next</option> \r
+                                                                       <option value="prev">Prev</option> \r
+                                                                       <option value="contents">Contents</option> \r
+                                                                       <option value="index">Index</option> \r
+                                                                       <option value="glossary">Glossary</option> \r
+                                                                       <option value="copyright">Copyright</option> \r
+                                                                       <option value="chapter">Chapter</option> \r
+                                                                       <option value="subsection">Subsection</option> \r
+                                                                       <option value="appendix">Appendix</option> \r
+                                                                       <option value="help">Help</option> \r
+                                                                       <option value="bookmark">Bookmark</option> \r
+                                                               </select> \r
+                                                       </td>\r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td><label id="tabindexlabel" for="tabindex">{#advlink_dlg.tabindex}</label></td>\r
+                                                       <td><input type="text" id="tabindex" name="tabindex" value="" /></td>\r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td><label id="accesskeylabel" for="accesskey">{#advlink_dlg.accesskey}</label></td>\r
+                                                       <td><input type="text" id="accesskey" name="accesskey" value="" /></td>\r
+                                               </tr>\r
+                                       </table>\r
+                               </fieldset>\r
+                       </div>\r
+\r
+                       <div id="events_panel" class="panel">\r
+                       <fieldset>\r
+                                       <legend>{#advlink_dlg.event_props}</legend>\r
+\r
+                                       <table border="0" cellpadding="0" cellspacing="4" role="presentation" >\r
+                                               <tr>\r
+                                                       <td class="column1"><label for="onfocus">onfocus</label></td> \r
+                                                       <td><input id="onfocus" name="onfocus" type="text" value="" /></td> \r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td class="column1"><label for="onblur">onblur</label></td> \r
+                                                       <td><input id="onblur" name="onblur" type="text" value="" /></td> \r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td class="column1"><label for="onclick">onclick</label></td> \r
+                                                       <td><input id="onclick" name="onclick" type="text" value="" /></td> \r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td class="column1"><label for="ondblclick">ondblclick</label></td> \r
+                                                       <td><input id="ondblclick" name="ondblclick" type="text" value="" /></td> \r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td class="column1"><label for="onmousedown">onmousedown</label></td> \r
+                                                       <td><input id="onmousedown" name="onmousedown" type="text" value="" /></td> \r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td class="column1"><label for="onmouseup">onmouseup</label></td> \r
+                                                       <td><input id="onmouseup" name="onmouseup" type="text" value="" /></td> \r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td class="column1"><label for="onmouseover">onmouseover</label></td> \r
+                                                       <td><input id="onmouseover" name="onmouseover" type="text" value="" /></td> \r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td class="column1"><label for="onmousemove">onmousemove</label></td> \r
+                                                       <td><input id="onmousemove" name="onmousemove" type="text" value="" /></td> \r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td class="column1"><label for="onmouseout">onmouseout</label></td> \r
+                                                       <td><input id="onmouseout" name="onmouseout" type="text" value="" /></td> \r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td class="column1"><label for="onkeypress">onkeypress</label></td> \r
+                                                       <td><input id="onkeypress" name="onkeypress" type="text" value="" /></td> \r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td class="column1"><label for="onkeydown">onkeydown</label></td> \r
+                                                       <td><input id="onkeydown" name="onkeydown" type="text" value="" /></td> \r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td class="column1"><label for="onkeyup">onkeyup</label></td> \r
+                                                       <td><input id="onkeyup" name="onkeyup" type="text" value="" /></td> \r
+                                               </tr>\r
+                                       </table>\r
+                               </fieldset>\r
+                       </div>\r
+               </div>\r
+\r
+               <div class="mceActionPanel">\r
+                       <input type="submit" id="insert" name="insert" value="{#insert}" />\r
+                       <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+               </div>\r
+       </form>\r
+</body>\r
+</html>\r
diff --git a/program/js/tiny_mce/plugins/advlist/editor_plugin.js b/program/js/tiny_mce/plugins/advlist/editor_plugin.js
new file mode 100644 (file)
index 0000000..57ecce6
--- /dev/null
@@ -0,0 +1 @@
+(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
new file mode 100644 (file)
index 0000000..a8f046b
--- /dev/null
@@ -0,0 +1,176 @@
+/**\r
+ * editor_plugin_src.js\r
+ *\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ */\r
+\r
+(function() {\r
+       var each = tinymce.each;\r
+\r
+       tinymce.create('tinymce.plugins.AdvListPlugin', {\r
+               init : function(ed, url) {\r
+                       var t = this;\r
+\r
+                       t.editor = ed;\r
+\r
+                       function buildFormats(str) {\r
+                               var formats = [];\r
+\r
+                               each(str.split(/,/), function(type) {\r
+                                       formats.push({\r
+                                               title : 'advlist.' + (type == 'default' ? 'def' : type.replace(/-/g, '_')),\r
+                                               styles : {\r
+                                                       listStyleType : type == 'default' ? '' : type\r
+                                               }\r
+                                       });\r
+                               });\r
+\r
+                               return formats;\r
+                       };\r
+\r
+                       // Setup number formats from config or default\r
+                       t.numlist = ed.getParam("advlist_number_styles") || buildFormats("default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman");\r
+                       t.bullist = ed.getParam("advlist_bullet_styles") || buildFormats("default,circle,disc,square");\r
+\r
+                       if (tinymce.isIE && /MSIE [2-7]/.test(navigator.userAgent))\r
+                               t.isIE7 = true;\r
+               },\r
+\r
+               createControl: function(name, cm) {\r
+                       var t = this, btn, format, editor = t.editor;\r
+\r
+                       if (name == 'numlist' || name == 'bullist') {\r
+                               // Default to first item if it's a default item\r
+                               if (t[name][0].title == 'advlist.def')\r
+                                       format = t[name][0];\r
+\r
+                               function hasFormat(node, format) {\r
+                                       var state = true;\r
+\r
+                                       each(format.styles, function(value, name) {\r
+                                               // Format doesn't match\r
+                                               if (editor.dom.getStyle(node, name) != value) {\r
+                                                       state = false;\r
+                                                       return false;\r
+                                               }\r
+                                       });\r
+\r
+                                       return state;\r
+                               };\r
+\r
+                               function applyListFormat() {\r
+                                       var list, dom = editor.dom, sel = editor.selection;\r
+\r
+                                       // Check for existing list element\r
+                                       list = dom.getParent(sel.getNode(), 'ol,ul');\r
+\r
+                                       // Switch/add list type if needed\r
+                                       if (!list || list.nodeName == (name == 'bullist' ? 'OL' : 'UL') || hasFormat(list, format))\r
+                                               editor.execCommand(name == 'bullist' ? 'InsertUnorderedList' : 'InsertOrderedList');\r
+\r
+                                       // Append styles to new list element\r
+                                       if (format) {\r
+                                               list = dom.getParent(sel.getNode(), 'ol,ul');\r
+                                               if (list) {\r
+                                                       dom.setStyles(list, format.styles);\r
+                                                       list.removeAttribute('data-mce-style');\r
+                                               }\r
+                                       }\r
+\r
+                                       editor.focus();\r
+                               };\r
+\r
+                               btn = cm.createSplitButton(name, {\r
+                                       title : 'advanced.' + name + '_desc',\r
+                                       'class' : 'mce_' + name,\r
+                                       onclick : function() {\r
+                                               applyListFormat();\r
+                                       }\r
+                               });\r
+\r
+                               btn.onRenderMenu.add(function(btn, menu) {\r
+                                       menu.onHideMenu.add(function() {\r
+                                               if (t.bookmark) {\r
+                                                       editor.selection.moveToBookmark(t.bookmark);\r
+                                                       t.bookmark = 0;\r
+                                               }\r
+                                       });\r
+\r
+                                       menu.onShowMenu.add(function() {\r
+                                               var dom = editor.dom, list = dom.getParent(editor.selection.getNode(), 'ol,ul'), fmtList;\r
+\r
+                                               if (list || format) {\r
+                                                       fmtList = t[name];\r
+\r
+                                                       // Unselect existing items\r
+                                                       each(menu.items, function(item) {\r
+                                                               var state = true;\r
+\r
+                                                               item.setSelected(0);\r
+\r
+                                                               if (list && !item.isDisabled()) {\r
+                                                                       each(fmtList, function(fmt) {\r
+                                                                               if (fmt.id == item.id) {\r
+                                                                                       if (!hasFormat(list, fmt)) {\r
+                                                                                               state = false;\r
+                                                                                               return false;\r
+                                                                                       }\r
+                                                                               }\r
+                                                                       });\r
+\r
+                                                                       if (state)\r
+                                                                               item.setSelected(1);\r
+                                                               }\r
+                                                       });\r
+\r
+                                                       // Select the current format\r
+                                                       if (!list)\r
+                                                               menu.items[format.id].setSelected(1);\r
+                                               }\r
+       \r
+                                               editor.focus();\r
+\r
+                                               // IE looses it's selection so store it away and restore it later\r
+                                               if (tinymce.isIE) {\r
+                                                       t.bookmark = editor.selection.getBookmark(1);\r
+                                               }\r
+                                       });\r
+\r
+                                       menu.add({id : editor.dom.uniqueId(), title : 'advlist.types', 'class' : 'mceMenuItemTitle', titleItem: true}).setDisabled(1);\r
+\r
+                                       each(t[name], function(item) {\r
+                                               // IE<8 doesn't support lower-greek, skip it\r
+                                               if (t.isIE7 && item.styles.listStyleType == 'lower-greek')\r
+                                                       return;\r
+\r
+                                               item.id = editor.dom.uniqueId();\r
+\r
+                                               menu.add({id : item.id, title : item.title, onclick : function() {\r
+                                                       format = item;\r
+                                                       applyListFormat();\r
+                                               }});\r
+                                       });\r
+                               });\r
+\r
+                               return btn;\r
+                       }\r
+               },\r
+\r
+               getInfo : function() {\r
+                       return {\r
+                               longname : 'Advanced lists',\r
+                               author : 'Moxiecode Systems AB',\r
+                               authorurl : 'http://tinymce.moxiecode.com',\r
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlist',\r
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+                       };\r
+               }\r
+       });\r
+\r
+       // Register plugin\r
+       tinymce.PluginManager.add('advlist', tinymce.plugins.AdvListPlugin);\r
+})();
\ 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
new file mode 100644 (file)
index 0000000..d1c3502
--- /dev/null
@@ -0,0 +1 @@
+(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);a.setEnd(n,f-1);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
new file mode 100644 (file)
index 0000000..c05fbbc
--- /dev/null
@@ -0,0 +1,184 @@
+/**
+ * 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);
+                               r.setEnd(endContainer, end - 1);
+                               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
new file mode 100644 (file)
index 0000000..46d9dc3
--- /dev/null
@@ -0,0 +1 @@
+(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
new file mode 100644 (file)
index 0000000..7673bcf
--- /dev/null
@@ -0,0 +1,119 @@
+/**
+ * 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
new file mode 100644 (file)
index 0000000..6da98ff
--- /dev/null
@@ -0,0 +1 @@
+(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
new file mode 100644 (file)
index 0000000..8b308f5
--- /dev/null
@@ -0,0 +1,433 @@
+/**\r
+ * editor_plugin_src.js\r
+ *\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ *\r
+ * Adds auto-save capability to the TinyMCE text editor to rescue content\r
+ * inadvertently lost. This plugin was originally developed by Speednet\r
+ * and that project can be found here: http://code.google.com/p/tinyautosave/\r
+ *\r
+ * TECHNOLOGY DISCUSSION:\r
+ * \r
+ * The plugin attempts to use the most advanced features available in the current browser to save\r
+ * as much content as possible.  There are a total of four different methods used to autosave the\r
+ * content.  In order of preference, they are:\r
+ * \r
+ * 1. localStorage - A new feature of HTML 5, localStorage can store megabytes of data per domain\r
+ * on the client computer. Data stored in the localStorage area has no expiration date, so we must\r
+ * manage expiring the data ourselves.  localStorage is fully supported by IE8, and it is supposed\r
+ * to be working in Firefox 3 and Safari 3.2, but in reality is is flaky in those browsers.  As\r
+ * HTML 5 gets wider support, the AutoSave plugin will use it automatically. In Windows Vista/7,\r
+ * localStorage is stored in the following folder:\r
+ * C:\Users\[username]\AppData\Local\Microsoft\Internet Explorer\DOMStore\[tempFolder]\r
+ * \r
+ * 2. sessionStorage - A new feature of HTML 5, sessionStorage works similarly to localStorage,\r
+ * except it is designed to expire after a certain amount of time.  Because the specification\r
+ * around expiration date/time is very loosely-described, it is preferrable to use locaStorage and\r
+ * manage the expiration ourselves.  sessionStorage has similar storage characteristics to\r
+ * localStorage, although it seems to have better support by Firefox 3 at the moment.  (That will\r
+ * certainly change as Firefox continues getting better at HTML 5 adoption.)\r
+ * \r
+ * 3. UserData - A very under-exploited feature of Microsoft Internet Explorer, UserData is a\r
+ * way to store up to 128K of data per "document", or up to 1MB of data per domain, on the client\r
+ * computer.  The feature is available for IE 5+, which makes it available for every version of IE\r
+ * supported by TinyMCE.  The content is persistent across browser restarts and expires on the\r
+ * date/time specified, just like a cookie.  However, the data is not cleared when the user clears\r
+ * cookies on the browser, which makes it well-suited for rescuing autosaved content.  UserData,\r
+ * like other Microsoft IE browser technologies, is implemented as a behavior attached to a\r
+ * specific DOM object, so in this case we attach the behavior to the same DOM element that the\r
+ * TinyMCE editor instance is attached to.\r
+ */\r
+\r
+(function(tinymce) {\r
+       // Setup constants to help the compressor to reduce script size\r
+       var PLUGIN_NAME = 'autosave',\r
+               RESTORE_DRAFT = 'restoredraft',\r
+               TRUE = true,\r
+               undefined,\r
+               unloadHandlerAdded,\r
+               Dispatcher = tinymce.util.Dispatcher;\r
+\r
+       /**\r
+        * This plugin adds auto-save capability to the TinyMCE text editor to rescue content\r
+        * inadvertently lost. By using localStorage.\r
+        *\r
+        * @class tinymce.plugins.AutoSave\r
+        */\r
+       tinymce.create('tinymce.plugins.AutoSave', {\r
+               /**\r
+                * Initializes the plugin, this will be executed after the plugin has been created.\r
+                * This call is done before the editor instance has finished it's initialization so use the onInit event\r
+                * of the editor instance to intercept that event.\r
+                *\r
+                * @method init\r
+                * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.\r
+                * @param {string} url Absolute URL to where the plugin is located.\r
+                */\r
+               init : function(ed, url) {\r
+                       var self = this, settings = ed.settings;\r
+\r
+                       self.editor = ed;\r
+\r
+                       // Parses the specified time string into a milisecond number 10m, 10s etc.\r
+                       function parseTime(time) {\r
+                               var multipels = {\r
+                                       s : 1000,\r
+                                       m : 60000\r
+                               };\r
+\r
+                               time = /^(\d+)([ms]?)$/.exec('' + time);\r
+\r
+                               return (time[2] ? multipels[time[2]] : 1) * parseInt(time);\r
+                       };\r
+\r
+                       // Default config\r
+                       tinymce.each({\r
+                               ask_before_unload : TRUE,\r
+                               interval : '30s',\r
+                               retention : '20m',\r
+                               minlength : 50\r
+                       }, function(value, key) {\r
+                               key = PLUGIN_NAME + '_' + key;\r
+\r
+                               if (settings[key] === undefined)\r
+                                       settings[key] = value;\r
+                       });\r
+\r
+                       // Parse times\r
+                       settings.autosave_interval = parseTime(settings.autosave_interval);\r
+                       settings.autosave_retention = parseTime(settings.autosave_retention);\r
+\r
+                       // Register restore button\r
+                       ed.addButton(RESTORE_DRAFT, {\r
+                               title : PLUGIN_NAME + ".restore_content",\r
+                               onclick : function() {\r
+                                       if (ed.getContent({draft: true}).replace(/\s|&nbsp;|<\/?p[^>]*>|<br[^>]*>/gi, "").length > 0) {\r
+                                               // Show confirm dialog if the editor isn't empty\r
+                                               ed.windowManager.confirm(\r
+                                                       PLUGIN_NAME + ".warning_message",\r
+                                                       function(ok) {\r
+                                                               if (ok)\r
+                                                                       self.restoreDraft();\r
+                                                       }\r
+                                               );\r
+                                       } else\r
+                                               self.restoreDraft();\r
+                               }\r
+                       });\r
+\r
+                       // Enable/disable restoredraft button depending on if there is a draft stored or not\r
+                       ed.onNodeChange.add(function() {\r
+                               var controlManager = ed.controlManager;\r
+\r
+                               if (controlManager.get(RESTORE_DRAFT))\r
+                                       controlManager.setDisabled(RESTORE_DRAFT, !self.hasDraft());\r
+                       });\r
+\r
+                       ed.onInit.add(function() {\r
+                               // Check if the user added the restore button, then setup auto storage logic\r
+                               if (ed.controlManager.get(RESTORE_DRAFT)) {\r
+                                       // Setup storage engine\r
+                                       self.setupStorage(ed);\r
+\r
+                                       // Auto save contents each interval time\r
+                                       setInterval(function() {\r
+                                               if (!ed.removed) {\r
+                                                       self.storeDraft();\r
+                                                       ed.nodeChanged();\r
+                                               }\r
+                                       }, settings.autosave_interval);\r
+                               }\r
+                       });\r
+\r
+                       /**\r
+                        * This event gets fired when a draft is stored to local storage.\r
+                        *\r
+                        * @event onStoreDraft\r
+                        * @param {tinymce.plugins.AutoSave} sender Plugin instance sending the event.\r
+                        * @param {Object} draft Draft object containing the HTML contents of the editor.\r
+                        */\r
+                       self.onStoreDraft = new Dispatcher(self);\r
+\r
+                       /**\r
+                        * This event gets fired when a draft is restored from local storage.\r
+                        *\r
+                        * @event onStoreDraft\r
+                        * @param {tinymce.plugins.AutoSave} sender Plugin instance sending the event.\r
+                        * @param {Object} draft Draft object containing the HTML contents of the editor.\r
+                        */\r
+                       self.onRestoreDraft = new Dispatcher(self);\r
+\r
+                       /**\r
+                        * This event gets fired when a draft removed/expired.\r
+                        *\r
+                        * @event onRemoveDraft\r
+                        * @param {tinymce.plugins.AutoSave} sender Plugin instance sending the event.\r
+                        * @param {Object} draft Draft object containing the HTML contents of the editor.\r
+                        */\r
+                       self.onRemoveDraft = new Dispatcher(self);\r
+\r
+                       // Add ask before unload dialog only add one unload handler\r
+                       if (!unloadHandlerAdded) {\r
+                               window.onbeforeunload = tinymce.plugins.AutoSave._beforeUnloadHandler;\r
+                               unloadHandlerAdded = TRUE;\r
+                       }\r
+               },\r
+\r
+               /**\r
+                * Returns information about the plugin as a name/value array.\r
+                * The current keys are longname, author, authorurl, infourl and version.\r
+                *\r
+                * @method getInfo\r
+                * @return {Object} Name/value array containing information about the plugin.\r
+                */\r
+               getInfo : function() {\r
+                       return {\r
+                               longname : 'Auto save',\r
+                               author : 'Moxiecode Systems AB',\r
+                               authorurl : 'http://tinymce.moxiecode.com',\r
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave',\r
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+                       };\r
+               },\r
+\r
+               /**\r
+                * Returns an expiration date UTC string.\r
+                *\r
+                * @method getExpDate\r
+                * @return {String} Expiration date UTC string.\r
+                */\r
+               getExpDate : function() {\r
+                       return new Date(\r
+                               new Date().getTime() + this.editor.settings.autosave_retention\r
+                       ).toUTCString();\r
+               },\r
+\r
+               /**\r
+                * This method will setup the storage engine. If the browser has support for it.\r
+                *\r
+                * @method setupStorage\r
+                */\r
+               setupStorage : function(ed) {\r
+                       var self = this, testKey = PLUGIN_NAME + '_test', testVal = "OK";\r
+\r
+                       self.key = PLUGIN_NAME + ed.id;\r
+\r
+                       // Loop though each storage engine type until we find one that works\r
+                       tinymce.each([\r
+                               function() {\r
+                                       // Try HTML5 Local Storage\r
+                                       if (localStorage) {\r
+                                               localStorage.setItem(testKey, testVal);\r
+\r
+                                               if (localStorage.getItem(testKey) === testVal) {\r
+                                                       localStorage.removeItem(testKey);\r
+\r
+                                                       return localStorage;\r
+                                               }\r
+                                       }\r
+                               },\r
+\r
+                               function() {\r
+                                       // Try HTML5 Session Storage\r
+                                       if (sessionStorage) {\r
+                                               sessionStorage.setItem(testKey, testVal);\r
+\r
+                                               if (sessionStorage.getItem(testKey) === testVal) {\r
+                                                       sessionStorage.removeItem(testKey);\r
+\r
+                                                       return sessionStorage;\r
+                                               }\r
+                                       }\r
+                               },\r
+\r
+                               function() {\r
+                                       // Try IE userData\r
+                                       if (tinymce.isIE) {\r
+                                               ed.getElement().style.behavior = "url('#default#userData')";\r
+\r
+                                               // Fake localStorage on old IE\r
+                                               return {\r
+                                                       autoExpires : TRUE,\r
+\r
+                                                       setItem : function(key, value) {\r
+                                                               var userDataElement = ed.getElement();\r
+\r
+                                                               userDataElement.setAttribute(key, value);\r
+                                                               userDataElement.expires = self.getExpDate();\r
+\r
+                                                               try {\r
+                                                                       userDataElement.save("TinyMCE");\r
+                                                               } catch (e) {\r
+                                                                       // Ignore, saving might fail if "Userdata Persistence" is disabled in IE\r
+                                                               }\r
+                                                       },\r
+\r
+                                                       getItem : function(key) {\r
+                                                               var userDataElement = ed.getElement();\r
+\r
+                                                               try {\r
+                                                                       userDataElement.load("TinyMCE");\r
+                                                                       return userDataElement.getAttribute(key);\r
+                                                               } catch (e) {\r
+                                                                       // Ignore, loading might fail if "Userdata Persistence" is disabled in IE\r
+                                                                       return null;\r
+                                                               }\r
+                                                       },\r
+\r
+                                                       removeItem : function(key) {\r
+                                                               ed.getElement().removeAttribute(key);\r
+                                                       }\r
+                                               };\r
+                                       }\r
+                               },\r
+                       ], function(setup) {\r
+                               // Try executing each function to find a suitable storage engine\r
+                               try {\r
+                                       self.storage = setup();\r
+\r
+                                       if (self.storage)\r
+                                               return false;\r
+                               } catch (e) {\r
+                                       // Ignore\r
+                               }\r
+                       });\r
+               },\r
+\r
+               /**\r
+                * This method will store the current contents in the the storage engine.\r
+                *\r
+                * @method storeDraft\r
+                */\r
+               storeDraft : function() {\r
+                       var self = this, storage = self.storage, editor = self.editor, expires, content;\r
+\r
+                       // Is the contents dirty\r
+                       if (storage) {\r
+                               // If there is no existing key and the contents hasn't been changed since\r
+                               // it's original value then there is no point in saving a draft\r
+                               if (!storage.getItem(self.key) && !editor.isDirty())\r
+                                       return;\r
+\r
+                               // Store contents if the contents if longer than the minlength of characters\r
+                               content = editor.getContent({draft: true});\r
+                               if (content.length > editor.settings.autosave_minlength) {\r
+                                       expires = self.getExpDate();\r
+\r
+                                       // Store expiration date if needed IE userData has auto expire built in\r
+                                       if (!self.storage.autoExpires)\r
+                                               self.storage.setItem(self.key + "_expires", expires);\r
+\r
+                                       self.storage.setItem(self.key, content);\r
+                                       self.onStoreDraft.dispatch(self, {\r
+                                               expires : expires,\r
+                                               content : content\r
+                                       });\r
+                               }\r
+                       }\r
+               },\r
+\r
+               /**\r
+                * This method will restore the contents from the storage engine back to the editor.\r
+                *\r
+                * @method restoreDraft\r
+                */\r
+               restoreDraft : function() {\r
+                       var self = this, storage = self.storage, content;\r
+\r
+                       if (storage) {\r
+                               content = storage.getItem(self.key);\r
+\r
+                               if (content) {\r
+                                       self.editor.setContent(content);\r
+                                       self.onRestoreDraft.dispatch(self, {\r
+                                               content : content\r
+                                       });\r
+                               }\r
+                       }\r
+               },\r
+\r
+               /**\r
+                * This method will return true/false if there is a local storage draft available.\r
+                *\r
+                * @method hasDraft\r
+                * @return {boolean} true/false state if there is a local draft.\r
+                */\r
+               hasDraft : function() {\r
+                       var self = this, storage = self.storage, expDate, exists;\r
+\r
+                       if (storage) {\r
+                               // Does the item exist at all\r
+                               exists = !!storage.getItem(self.key);\r
+                               if (exists) {\r
+                                       // Storage needs autoexpire\r
+                                       if (!self.storage.autoExpires) {\r
+                                               expDate = new Date(storage.getItem(self.key + "_expires"));\r
+\r
+                                               // Contents hasn't expired\r
+                                               if (new Date().getTime() < expDate.getTime())\r
+                                                       return TRUE;\r
+\r
+                                               // Remove it if it has\r
+                                               self.removeDraft();\r
+                                       } else\r
+                                               return TRUE;\r
+                               }\r
+                       }\r
+\r
+                       return false;\r
+               },\r
+\r
+               /**\r
+                * Removes the currently stored draft.\r
+                *\r
+                * @method removeDraft\r
+                */\r
+               removeDraft : function() {\r
+                       var self = this, storage = self.storage, key = self.key, content;\r
+\r
+                       if (storage) {\r
+                               // Get current contents and remove the existing draft\r
+                               content = storage.getItem(key);\r
+                               storage.removeItem(key);\r
+                               storage.removeItem(key + "_expires");\r
+\r
+                               // Dispatch remove event if we had any contents\r
+                               if (content) {\r
+                                       self.onRemoveDraft.dispatch(self, {\r
+                                               content : content\r
+                                       });\r
+                               }\r
+                       }\r
+               },\r
+\r
+               "static" : {\r
+                       // Internal unload handler will be called before the page is unloaded\r
+                       _beforeUnloadHandler : function(e) {\r
+                               var msg;\r
+\r
+                               tinymce.each(tinyMCE.editors, function(ed) {\r
+                                       // Store a draft for each editor instance\r
+                                       if (ed.plugins.autosave)\r
+                                               ed.plugins.autosave.storeDraft();\r
+\r
+                                       // Never ask in fullscreen mode\r
+                                       if (ed.getParam("fullscreen_is_enabled"))\r
+                                               return;\r
+\r
+                                       // Setup a return message if the editor is dirty\r
+                                       if (!msg && ed.isDirty() && ed.getParam("autosave_ask_before_unload"))\r
+                                               msg = ed.getLang("autosave.unload_msg");\r
+                               });\r
+\r
+                               return msg;\r
+                       }\r
+               }\r
+       });\r
+\r
+       tinymce.PluginManager.add('autosave', tinymce.plugins.AutoSave);\r
+})(tinymce);\r
diff --git a/program/js/tiny_mce/plugins/autosave/langs/en.js b/program/js/tiny_mce/plugins/autosave/langs/en.js
new file mode 100644 (file)
index 0000000..fce6bd3
--- /dev/null
@@ -0,0 +1,4 @@
+tinyMCE.addI18n('en.autosave',{\r
+restore_content: "Restore auto-saved content",\r
+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?"\r
+});
\ 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
new file mode 100644 (file)
index 0000000..8f8821f
--- /dev/null
@@ -0,0 +1 @@
+(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
new file mode 100644 (file)
index 0000000..4e7eb33
--- /dev/null
@@ -0,0 +1,120 @@
+/**\r
+ * editor_plugin_src.js\r
+ *\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ */\r
+\r
+(function() {\r
+       tinymce.create('tinymce.plugins.BBCodePlugin', {\r
+               init : function(ed, url) {\r
+                       var t = this, dialect = ed.getParam('bbcode_dialect', 'punbb').toLowerCase();\r
+\r
+                       ed.onBeforeSetContent.add(function(ed, o) {\r
+                               o.content = t['_' + dialect + '_bbcode2html'](o.content);\r
+                       });\r
+\r
+                       ed.onPostProcess.add(function(ed, o) {\r
+                               if (o.set)\r
+                                       o.content = t['_' + dialect + '_bbcode2html'](o.content);\r
+\r
+                               if (o.get)\r
+                                       o.content = t['_' + dialect + '_html2bbcode'](o.content);\r
+                       });\r
+               },\r
+\r
+               getInfo : function() {\r
+                       return {\r
+                               longname : 'BBCode Plugin',\r
+                               author : 'Moxiecode Systems AB',\r
+                               authorurl : 'http://tinymce.moxiecode.com',\r
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode',\r
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+                       };\r
+               },\r
+\r
+               // Private methods\r
+\r
+               // HTML -> BBCode in PunBB dialect\r
+               _punbb_html2bbcode : function(s) {\r
+                       s = tinymce.trim(s);\r
+\r
+                       function rep(re, str) {\r
+                               s = s.replace(re, str);\r
+                       };\r
+\r
+                       // example: <strong> to [b]\r
+                       rep(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]");\r
+                       rep(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");\r
+                       rep(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");\r
+                       rep(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");\r
+                       rep(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");\r
+                       rep(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]");\r
+                       rep(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]");\r
+                       rep(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]");\r
+                       rep(/<font>(.*?)<\/font>/gi,"$1");\r
+                       rep(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]");\r
+                       rep(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]");\r
+                       rep(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]");\r
+                       rep(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]");\r
+                       rep(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]");\r
+                       rep(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]");\r
+                       rep(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]");\r
+                       rep(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]");\r
+                       rep(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]");\r
+                       rep(/<\/(strong|b)>/gi,"[/b]");\r
+                       rep(/<(strong|b)>/gi,"[b]");\r
+                       rep(/<\/(em|i)>/gi,"[/i]");\r
+                       rep(/<(em|i)>/gi,"[i]");\r
+                       rep(/<\/u>/gi,"[/u]");\r
+                       rep(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]");\r
+                       rep(/<u>/gi,"[u]");\r
+                       rep(/<blockquote[^>]*>/gi,"[quote]");\r
+                       rep(/<\/blockquote>/gi,"[/quote]");\r
+                       rep(/<br \/>/gi,"\n");\r
+                       rep(/<br\/>/gi,"\n");\r
+                       rep(/<br>/gi,"\n");\r
+                       rep(/<p>/gi,"");\r
+                       rep(/<\/p>/gi,"\n");\r
+                       rep(/&nbsp;|\u00a0/gi," ");\r
+                       rep(/&quot;/gi,"\"");\r
+                       rep(/&lt;/gi,"<");\r
+                       rep(/&gt;/gi,">");\r
+                       rep(/&amp;/gi,"&");\r
+\r
+                       return s; \r
+               },\r
+\r
+               // BBCode -> HTML from PunBB dialect\r
+               _punbb_bbcode2html : function(s) {\r
+                       s = tinymce.trim(s);\r
+\r
+                       function rep(re, str) {\r
+                               s = s.replace(re, str);\r
+                       };\r
+\r
+                       // example: [b] to <strong>\r
+                       rep(/\n/gi,"<br />");\r
+                       rep(/\[b\]/gi,"<strong>");\r
+                       rep(/\[\/b\]/gi,"</strong>");\r
+                       rep(/\[i\]/gi,"<em>");\r
+                       rep(/\[\/i\]/gi,"</em>");\r
+                       rep(/\[u\]/gi,"<u>");\r
+                       rep(/\[\/u\]/gi,"</u>");\r
+                       rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"<a href=\"$1\">$2</a>");\r
+                       rep(/\[url\](.*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>");\r
+                       rep(/\[img\](.*?)\[\/img\]/gi,"<img src=\"$1\" />");\r
+                       rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"<font color=\"$1\">$2</font>");\r
+                       rep(/\[code\](.*?)\[\/code\]/gi,"<span class=\"codeStyle\">$1</span>&nbsp;");\r
+                       rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"<span class=\"quoteStyle\">$1</span>&nbsp;");\r
+\r
+                       return s; \r
+               }\r
+       });\r
+\r
+       // Register plugin\r
+       tinymce.PluginManager.add('bbcode', tinymce.plugins.BBCodePlugin);\r
+})();
\ No newline at end of file
index 8e041ea597cf7139c5d9bc38c4d16c56500a1569..2ed042c3ae49dc1cddbe17fd985bdfb12cd16913 100644 (file)
@@ -1 +1 @@
-(function(){var a=tinymce.dom.Event,c=tinymce.each,b=tinymce.DOM;tinymce.create("tinymce.plugins.ContextMenu",{init:function(e){var h=this,f,d,i;h.editor=e;d=e.settings.contextmenu_never_use_native;h.onContextMenu=new tinymce.util.Dispatcher(this);f=e.onContextMenu.add(function(j,k){if((i!==0?i:k.ctrlKey)&&!d){return}a.cancel(k);if(k.target.nodeName=="IMG"){j.selection.select(k.target)}h._getMenu(j).showMenu(k.clientX||k.pageX,k.clientY||k.pageX);a.add(j.getDoc(),"click",function(l){g(j,l)});j.nodeChanged()});e.onRemove.add(function(){if(h._menu){h._menu.removeAll()}});function g(j,k){i=0;if(k&&k.button==2){i=k.ctrlKey;return}if(h._menu){h._menu.removeAll();h._menu.destroy();a.remove(j.getDoc(),"click",g)}}e.onMouseDown.add(g);e.onKeyDown.add(g);e.onKeyDown.add(function(j,k){if(k.shiftKey&&!k.ctrlKey&&!k.altKey&&k.keyCode===121){a.cancel(k);f(j,k)}})},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(h){var l=this,f=l._menu,i=h.selection,e=i.isCollapsed(),d=i.getNode()||h.getBody(),g,k,j;if(f){f.removeAll();f.destroy()}k=b.getPos(h.getContentAreaContainer());j=b.getPos(h.getContainer());f=h.controlManager.createDropMenu("contextmenu",{offset_x:k.x+h.getParam("contextmenu_offset_x",0),offset_y:k.y+h.getParam("contextmenu_offset_y",0),constrain:1,keyboard_focus:true});l._menu=f;f.add({title:"advanced.cut_desc",icon:"cut",cmd:"Cut"}).setDisabled(e);f.add({title:"advanced.copy_desc",icon:"copy",cmd:"Copy"}).setDisabled(e);f.add({title:"advanced.paste_desc",icon:"paste",cmd:"Paste"});if((d.nodeName=="A"&&!h.dom.getAttrib(d,"name"))||!e){f.addSeparator();f.add({title:"advanced.link_desc",icon:"link",cmd:h.plugins.advlink?"mceAdvLink":"mceLink",ui:true});f.add({title:"advanced.unlink_desc",icon:"unlink",cmd:"UnLink"})}f.addSeparator();f.add({title:"advanced.image_desc",icon:"image",cmd:h.plugins.advimage?"mceAdvImage":"mceImage",ui:true});f.addSeparator();g=f.addMenu({title:"contextmenu.align"});g.add({title:"contextmenu.left",icon:"justifyleft",cmd:"JustifyLeft"});g.add({title:"contextmenu.center",icon:"justifycenter",cmd:"JustifyCenter"});g.add({title:"contextmenu.right",icon:"justifyright",cmd:"JustifyRight"});g.add({title:"contextmenu.full",icon:"justifyfull",cmd:"JustifyFull"});l.onContextMenu.dispatch(l,f,d,e);return f}});tinymce.PluginManager.add("contextmenu",tinymce.plugins.ContextMenu)})();
\ No newline at end of file
+(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
index 4328f4b117614956c979f5694279973fcfc24eaf..48b0fff99f683fa78a6996bc421370726187269a 100644 (file)
@@ -27,7 +27,7 @@
                 * @param {string} url Absolute URL to where the plugin is located.\r
                 */\r
                init : function(ed) {\r
-                       var t = this, showMenu, contextmenuNeverUseNative, realCtrlKey;\r
+                       var t = this, showMenu, contextmenuNeverUseNative, realCtrlKey, hideMenu;\r
 \r
                        t.editor = ed;\r
 \r
                         */\r
                        t.onContextMenu = new tinymce.util.Dispatcher(this);\r
 \r
+                       hideMenu = function(e) {\r
+                               hide(ed, e);\r
+                       };\r
+\r
                        showMenu = ed.onContextMenu.add(function(ed, e) {\r
                                // Block TinyMCE menu on ctrlKey and work around Safari issue\r
                                if ((realCtrlKey !== 0 ? realCtrlKey : e.ctrlKey) && !contextmenuNeverUseNative)\r
                                if (e.target.nodeName == 'IMG')\r
                                        ed.selection.select(e.target);\r
 \r
-                               t._getMenu(ed).showMenu(e.clientX || e.pageX, e.clientY || e.pageX);\r
-                               Event.add(ed.getDoc(), 'click', function(e) {\r
-                                       hide(ed, e);\r
-                               });\r
+                               t._getMenu(ed).showMenu(e.clientX || e.pageX, e.clientY || e.pageY);\r
+                               Event.add(ed.getDoc(), 'click', hideMenu);\r
 \r
                                ed.nodeChanged();\r
                        });\r
-\r
+                       \r
                        ed.onRemove.add(function() {\r
                                if (t._menu)\r
                                        t._menu.removeAll();\r
@@ -78,8 +80,9 @@
 \r
                                if (t._menu) {\r
                                        t._menu.removeAll();\r
-                                       t._menu.destroy();\r
-                                       Event.remove(ed.getDoc(), 'click', hide);\r
+                                        t._menu.destroy();\r
+                                       Event.remove(ed.getDoc(), 'click', hideMenu);\r
+                                       t._menu = null;\r
                                }\r
                        };\r
 \r
                },\r
 \r
                _getMenu : function(ed) {\r
-                       var t = this, m = t._menu, se = ed.selection, col = se.isCollapsed(), el = se.getNode() || ed.getBody(), am, p1, p2;\r
+                       var t = this, m = t._menu, se = ed.selection, col = se.isCollapsed(), el = se.getNode() || ed.getBody(), am, p;\r
 \r
                        if (m) {\r
                                m.removeAll();\r
                                m.destroy();\r
                        }\r
 \r
-                       p1 = DOM.getPos(ed.getContentAreaContainer());\r
-                       p2 = DOM.getPos(ed.getContainer());\r
+                       p = DOM.getPos(ed.getContentAreaContainer());\r
 \r
                        m = ed.controlManager.createDropMenu('contextmenu', {\r
-                               offset_x : p1.x + ed.getParam('contextmenu_offset_x', 0),\r
-                               offset_y : p1.y + ed.getParam('contextmenu_offset_y', 0),\r
+                               offset_x : p.x + ed.getParam('contextmenu_offset_x', 0),\r
+                               offset_y : p.y + ed.getParam('contextmenu_offset_y', 0),\r
                                constrain : 1,\r
                                keyboard_focus: true\r
                        });\r
index bce8e73995d05c6bdd18f476a595be3e633b9782..90847e78e34baeaab8c15e6da290c3ff9f1e2cc4 100644 (file)
@@ -1 +1 @@
-(function(){tinymce.create("tinymce.plugins.Directionality",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceDirectionLTR",function(){var d=a.dom.getParent(a.selection.getNode(),a.dom.isBlock);if(d){if(a.dom.getAttrib(d,"dir")!="ltr"){a.dom.setAttrib(d,"dir","ltr")}else{a.dom.setAttrib(d,"dir","")}}a.nodeChanged()});a.addCommand("mceDirectionRTL",function(){var d=a.dom.getParent(a.selection.getNode(),a.dom.isBlock);if(d){if(a.dom.getAttrib(d,"dir")!="rtl"){a.dom.setAttrib(d,"dir","rtl")}else{a.dom.setAttrib(d,"dir","")}}a.nodeChanged()});a.addButton("ltr",{title:"directionality.ltr_desc",cmd:"mceDirectionLTR"});a.addButton("rtl",{title:"directionality.rtl_desc",cmd:"mceDirectionRTL"});a.onNodeChange.add(c._nodeChange,c)},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
+(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
index 4444959bf31bb3a7a22b947305fafdbd5d446939..b1340141276c4eac2d2bb74c33cc243b5ef2bf45 100644 (file)
 \r
                        t.editor = ed;\r
 \r
-                       ed.addCommand('mceDirectionLTR', function() {\r
-                               var e = ed.dom.getParent(ed.selection.getNode(), ed.dom.isBlock);\r
-\r
-                               if (e) {\r
-                                       if (ed.dom.getAttrib(e, "dir") != "ltr")\r
-                                               ed.dom.setAttrib(e, "dir", "ltr");\r
-                                       else\r
-                                               ed.dom.setAttrib(e, "dir", "");\r
+                       function setDir(dir) {\r
+                               var dom = ed.dom, curDir, blocks = ed.selection.getSelectedBlocks();\r
+\r
+                               if (blocks.length) {\r
+                                       curDir = dom.getAttrib(blocks[0], "dir");\r
+\r
+                                       tinymce.each(blocks, function(block) {\r
+                                               // Add dir to block if the parent block doesn't already have that dir\r
+                                               if (!dom.getParent(block.parentNode, "*[dir='" + dir + "']", dom.getRoot())) {\r
+                                                       if (curDir != dir) {\r
+                                                               dom.setAttrib(block, "dir", dir);\r
+                                                       } else {\r
+                                                               dom.setAttrib(block, "dir", null);\r
+                                                       }\r
+                                               }\r
+                                       });\r
+\r
+                                       ed.nodeChanged();\r
                                }\r
+                       }\r
 \r
-                               ed.nodeChanged();\r
+                       ed.addCommand('mceDirectionLTR', function() {\r
+                               setDir("ltr");\r
                        });\r
 \r
                        ed.addCommand('mceDirectionRTL', function() {\r
-                               var e = ed.dom.getParent(ed.selection.getNode(), ed.dom.isBlock);\r
-\r
-                               if (e) {\r
-                                       if (ed.dom.getAttrib(e, "dir") != "rtl")\r
-                                               ed.dom.setAttrib(e, "dir", "rtl");\r
-                                       else\r
-                                               ed.dom.setAttrib(e, "dir", "");\r
-                               }\r
-\r
-                               ed.nodeChanged();\r
+                               setDir("rtl");\r
                        });\r
 \r
                        ed.addButton('ltr', {title : 'directionality.ltr_desc', cmd : 'mceDirectionLTR'});\r
index 2c91002e4e0d3c40bd74e7e4e0e8625aecbff6a1..10135565498a8ae43e79276e5acc48610e1fb5b9 100644 (file)
 <div align="center">\r
        <div class="title">{#emotions_dlg.title}:<br /><br /></div>\r
 \r
-       <table role="presentation" border="0" cellspacing="0" cellpadding="4">\r
+       <table id="emoticon_table" role="presentation" border="0" cellspacing="0" cellpadding="4">\r
                <tr>\r
-                       <td><a 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}" title="{#emotions_dlg.cool}" /></a></td>\r
-                       <td><a 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}" title="{#emotions_dlg.cry}" /></a></td>\r
-                       <td><a 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}" title="{#emotions_dlg.embarassed}" /></a></td>\r
-                       <td><a 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}" title="{#emotions_dlg.foot_in_mouth}" /></a></td>\r
+                       <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>\r
+                       <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>\r
+                       <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>\r
+                       <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>\r
                </tr>\r
                <tr>\r
-                       <td><a 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}" title="{#emotions_dlg.frown}" /></a></td>\r
-                       <td><a 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}" title="{#emotions_dlg.innocent}" /></a></td>\r
-                       <td><a 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}" title="{#emotions_dlg.kiss}" /></a></td>\r
-                       <td><a 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}" title="{#emotions_dlg.laughing}" /></a></td>\r
+                       <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>\r
+                       <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>\r
+                       <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>\r
+                       <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>\r
                </tr>\r
                <tr>\r
-                       <td><a 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}" title="{#emotions_dlg.money_mouth}" /></a></td>\r
-                       <td><a 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}" title="{#emotions_dlg.sealed}" /></a></td>\r
-                       <td><a 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}" title="{#emotions_dlg.smile}" /></a></td>\r
-                       <td><a 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}" title="{#emotions_dlg.surprised}" /></a></td>\r
+                       <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>\r
+                       <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>\r
+                       <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>\r
+                       <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>\r
                </tr>\r
                <tr>\r
-                       <td><a 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}" title="{#emotions_dlg.tongue_out}" /></a></td>\r
-                       <td><a 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}" title="{#emotions_dlg.undecided}" /></a></td>\r
-                       <td><a 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}" title="{#emotions_dlg.wink}" /></a></td>\r
-                       <td><a 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}" title="{#emotions_dlg.yell}" /></a></td>\r
+                       <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>\r
+                       <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>\r
+                       <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>\r
+                       <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>\r
                </tr>\r
        </table>\r
+       <div>{#emotions_dlg.usage}</div>\r
 </div>\r
 </body>\r
 </html>\r
index 16f68cc1e91a9b8ec6cfa0ba4e0c86f94b177f1a..c7cf1011dad0e7500e29a278b0d395b253871109 100644 (file)
Binary files a/program/js/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif and b/program/js/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif differ
index 1606c119e75678c4031f384e0d50849906e8f533..82c5b182e61d32bd394acae551eff180f1eebd26 100644 (file)
Binary files a/program/js/tiny_mce/plugins/emotions/img/smiley-laughing.gif and b/program/js/tiny_mce/plugins/emotions/img/smiley-laughing.gif differ
index b33d3cca1e7b8e62dc689880074d5c61f619520d..fe66220c24b4da4526818a5d68f75a06d9985a29 100644 (file)
Binary files a/program/js/tiny_mce/plugins/emotions/img/smiley-sealed.gif and b/program/js/tiny_mce/plugins/emotions/img/smiley-sealed.gif differ
index e6a9e60d5ddd1243fbbf2197b4dc6cd9c1b58b93..fd27edfaaa29a70a8c4563c0eab9f18c74d374fd 100644 (file)
Binary files a/program/js/tiny_mce/plugins/emotions/img/smiley-smile.gif and b/program/js/tiny_mce/plugins/emotions/img/smiley-smile.gif differ
index cb99cdd9136fa30462a9f57aa6a0adeb7e4124e7..0cc9bb71cca4cdeafbb248ce7e07c3708c1cbd64 100644 (file)
Binary files a/program/js/tiny_mce/plugins/emotions/img/smiley-surprised.gif and b/program/js/tiny_mce/plugins/emotions/img/smiley-surprised.gif differ
index 9faf1aff8f4b28e02f4f414975fe1859c43b6b54..0631c7616ec8624ddeee02b633326f697ee72f80 100644 (file)
Binary files a/program/js/tiny_mce/plugins/emotions/img/smiley-wink.gif and b/program/js/tiny_mce/plugins/emotions/img/smiley-wink.gif differ
index c549367096fc801fa12cb6f61261a12f4fd9ed17..b360f20b68ba7f6c8b80a76c8c3eb2fb23ea29e3 100644 (file)
@@ -1,8 +1,29 @@
 tinyMCEPopup.requireLangPack();\r
 \r
 var EmotionsDialog = {\r
+       addKeyboardNavigation: function(){\r
+               var tableElm, cells, settings;\r
+                       \r
+               cells = tinyMCEPopup.dom.select("a.emoticon_link", "emoticon_table");\r
+                       \r
+               settings ={\r
+                       root: "emoticon_table",\r
+                       items: cells\r
+               };\r
+               cells[0].tabindex=0;\r
+               tinyMCEPopup.dom.addClass(cells[0], "mceFocus");\r
+               if (tinymce.isGecko) {\r
+                       cells[0].focus();               \r
+               } else {\r
+                       setTimeout(function(){\r
+                               cells[0].focus();\r
+                       }, 100);\r
+               }\r
+               tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', settings, tinyMCEPopup.dom);\r
+       }, \r
        init : function(ed) {\r
                tinyMCEPopup.resizeToInnerSize();\r
+               this.addKeyboardNavigation();\r
        },\r
 \r
        insert : function(file, title) {\r
old mode 100755 (executable)
new mode 100644 (file)
index 0778695..80f9402
@@ -1 +1 @@
-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\u0631\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\u0632\u0627\u0621 \u0641\u0649 \u0627\u0644\u0641\u0645 (\u0627\u062e\u0631\u0635)",embarassed:"\u0627\u062d\u0631\u0627\u062c"});
\ No newline at end of file
+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
index e69b653a8cfe718b5a033186f8965496c27e6ea9..919ef500ff39aff4ce7b3744d829de38823d8592 100644 (file)
@@ -1 +1 @@
-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
+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/be_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/be_dlg.js
deleted file mode 100644 (file)
index 575fbba..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('be.emotions_dlg',{cry:"\u041f\u043b\u0430\u0447\u0430",cool:"\u041a\u043b\u0451\u0432\u044b",desc:"\u0421\u043c\u0430\u0439\u043b\u0456\u043a\u0456",title:"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u0441\u043c\u0430\u0439\u043b\u0456\u043a",yell:"\u041b\u044f\u043c\u0430\u043d\u0442\u0443\u0435",wink:"\u041f\u0430\u0434\u043c\u043e\u0440\u0433\u0432\u0430\u0435",undecided:"\u0423 \u043d\u0435\u0440\u0430\u0448\u0443\u0447\u0430\u0441\u0446\u0456",tongue_out:"\u041f\u0430\u043a\u0430\u0437\u0432\u0430\u0435 \u044f\u0437\u044b\u043a",surprised:"\u0417\u0434\u0437\u0456\u045e\u043b\u0435\u043d\u044b",smile:"\u0423\u0441\u043c\u0456\u0445\u0430\u0435\u0446\u0446\u0430",sealed:"\u0417\u0430\u043f\u044f\u0447\u0430\u0442\u0430\u043d\u0430",money_mouth:"\u0428\u043c\u0430\u0442 \u0433\u0440\u043e\u0448\u0430\u0439",laughing:"\u0421\u043c\u044f\u0435\u0446\u0446\u0430",kiss:"\u041f\u0430\u0446\u0430\u043b\u0443\u043d\u0430\u043a",innocent:"\u041d\u044f\u0432\u0456\u043d\u043d\u0430\u0441\u0446\u044c",frown:"\u0425\u043c\u0443\u0440\u043d\u044b",foot_in_mouth:"\u0423_\u0440\u043e\u0442_\u043c\u043d\u0435_\u043d\u043e\u0433\u0456!",embarassed:"\u0410\u0447\u043c\u0443\u0440\u044d\u045e"});
\ No newline at end of file
old mode 100755 (executable)
new mode 100644 (file)
index 80ea4c1..b15ff1c
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
index e0837bf33a01331519f5d75108e2a150c03038bc..d482e034b575664436b5244f374a84951728b399 100644 (file)
@@ -1 +1 @@
-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
+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
old mode 100755 (executable)
new mode 100644 (file)
index f766b28..c34a765
@@ -1 +1 @@
-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
+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
old mode 100755 (executable)
new mode 100644 (file)
index e898e58..6aaba39
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 55ee497..625608b
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
index e90de2bd25d385f178512d030b7fbc0477129f1b..6e40f0cb261c861292aa0a96ee202e5c53bef6cf 100644 (file)
@@ -1 +1 @@
-tinyMCE.addI18n('cy.emotions_dlg',{cry:"Crio",cool:"Iawn",desc:"Emosiynau",title:"Mewnosod emosiwn",yell:"Gweiddi",wink:"Wincio",undecided:"Heb penderfynu",tongue_out:"Tafod allan",surprised:"Wedi synnu",smile:"Gw\u00ean",sealed:"Wedi\'i selio",money_mouth:"Ceg arian",laughing:"Chwerthin",kiss:"Sws",innocent:"Dieuog",frown:"Cuchio",foot_in_mouth:"Troed yn ceg",embarassed:"Rhwystrus"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 27035bb..165137e
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index cd42ed9..9ef427c
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 0aac97b..c847eb2
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
index 3b57ad9e3ca69893c19fd560174653b33725671e..f5aafc390f54323fe9c1bff937c33a0cfede5136 100644 (file)
@@ -1,20 +1 @@
-tinyMCE.addI18n('en.emotions_dlg',{\r
-title:"Insert emotion",\r
-desc:"Emotions",\r
-cool:"Cool",\r
-cry:"Cry",\r
-embarassed:"Embarassed",\r
-foot_in_mouth:"Foot in mouth",\r
-frown:"Frown",\r
-innocent:"Innocent",\r
-kiss:"Kiss",\r
-laughing:"Laughing",\r
-money_mouth:"Money mouth",\r
-sealed:"Sealed",\r
-smile:"Smile",\r
-surprised:"Surprised",\r
-tongue_out:"Tongue out",\r
-undecided:"Undecided",\r
-wink:"Wink",\r
-yell:"Yell"\r
-});
\ No newline at end of file
+tinyMCE.addI18n('en.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",usage:"Use left and right arrows to navigate."});
\ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/eo_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/eo_dlg.js
new file mode 100644 (file)
index 0000000..47a7bdf
--- /dev/null
@@ -0,0 +1 @@
+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
old mode 100755 (executable)
new mode 100644 (file)
index 3b4f24b..bdff36a
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 4512bef..1b1d632
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
index a96d6f52212a696bbbb4003460688c14aaab7f80..e8c51bcfbe68d63c7fbcc73d174bf99f1a6d8a58 100644 (file)
@@ -1,20 +1 @@
-tinyMCE.addI18n('eu.emotions_dlg',{\r
-title:"Ikonotxoa sartu",\r
-desc:"Ikonotsoak",\r
-cool:"Ondo",\r
-cry:"Negarrez",\r
-embarassed:"Lotsatuta",\r
-foot_in_mouth:"Hanka ahoan",\r
-frown:"Desadostasuna",\r
-innocent:"Ni ez naiz izan",\r
-kiss:"Muxua",\r
-laughing:"Barrez",\r
-money_mouth:"Ahoa diruz beteta",\r
-sealed:"Ixilik",\r
-smile:"Irriparra",\r
-surprised:"Harrituta",\r
-tongue_out:"Mihia atera",\r
-undecided:"Zalantzan",\r
-wink:"Keinua",\r
-yell:"Ohiua"\r
-});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 05fd869..1c1d57c
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index c7e8d1f..7e620dd
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 93d1f43..971cf09
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
index ac5a8157d99944608edb5b17aa06aa82758b55b7..790050a70eee2e1edf5cfc88263ae12e0ab55915 100644 (file)
@@ -1 +1 @@
-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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 222badd..2664cd2
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
index c0c39a6d351cb493f09efe465ba8f6f62005bfec..aee9ef39508ab03df450d15aeb0ad4da85542557 100644 (file)
@@ -1 +1 @@
-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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 5e505e7..d71e4a2
@@ -1 +1 @@
-tinyMCE.addI18n('hr.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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 14b6e57..b48285b
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
index 7cfda6b4db8cebfbfb9e2782c5e5cd83d1917e65..a43f53f8bef429b58a3db2e055c6ea0e64fbac73 100644 (file)
@@ -1 +1 @@
-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
+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/ia_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/ia_dlg.js
deleted file mode 100644 (file)
index 5558500..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ia.emotions_dlg',{cry:"\u54ed\u6ce3",cool:"\u51b7\u9177",desc:"\u8868\u60c5\u5217\u8868",title:"\u63d2\u5165\u8868\u60c5",yell:"\u53eb\u56b7",wink:"\u7728\u773c",undecided:"\u601d\u8003",tongue_out:"\u5410\u820c\u5934",surprised:"\u60ca\u5413",smile:"\u5fae\u7b11",sealed:"\u4fdd\u5bc6",money_mouth:"\u53d1\u8d22",laughing:"\u5927\u7b11",kiss:"\u543b",innocent:"\u5929\u771f",frown:"\u76b1\u7709",foot_in_mouth:"\u54a7\u5634",embarassed:"\u5c34\u5c2c"});
\ No newline at end of file
index 034eea223a4b26504099a32a31f60e3d1f475903..72270f404d2f3249a849b12edc3d1f43482008e3 100644 (file)
@@ -1 +1 @@
-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
+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
old mode 100755 (executable)
new mode 100644 (file)
index ae4ad87..e47753c
@@ -1 +1 @@
-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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 2db9c04..0699866
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index e6f46a6..7ff287f
@@ -1 +1 @@
-tinyMCE.addI18n('ja.emotions_dlg',{cry:"Cry",cool:"Cool",desc:"\u8868\u60c5\u30a2\u30a4\u30b3\u30f3",title:"\u8868\u60c5\u30a2\u30a4\u30b3\u30f3\u306e\u633f\u5165",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
+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
index 97dd7eae22ee4fed8443147e757f41d7f4e7b7cf..a2b76b37815c78f44ac5d9d91700293db4cf4f56 100644 (file)
@@ -1 +1 @@
-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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 9baedaa..ac481fc
@@ -1 +1 @@
-tinyMCE.addI18n('ko.emotions_dlg',{cry:"\uc6b8\uc74c",cool:"\ucfe8",desc:"\uc774\ubaa8\ud2f0\ucf58",title:"\uc774\ubaa8\ud2f0\ucf58 \uc0bd\uc785",yell:"\uc678\uce5c\ub2e4",wink:"\uc719\ud06c",undecided:"\uace0\ubbfc\ud55c\ub2e4",tongue_out:"\uba54\ub871",surprised:"\ub180\ub77c\uc6c0",smile:"\uc2a4\ub9c8\uc77c",sealed:"\ubd09\uc778",money_mouth:"\ub3c8",laughing:"\uc6c3\uc74c",kiss:"Kiss",innocent:"\ucc9c\uc9c4\ub09c\ub9cc",frown:"\ucc21\uadf8\ub9b0 \uc5bc\uad74",foot_in_mouth:"\uc2e4\uc5b8",embarassed:"\ubd80\ub044\ub7ec\uc6c0"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index a9f0c01..d1d4006
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 0c1ea29..dbd57d1
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 0c03d30..52fce73
@@ -1 +1 @@
-tinyMCE.addI18n('mk.emotions_dlg',{cry:"Pla\u010d",cool:"Cool",desc:"Emocije",title:"\u0412\u043c\u0435\u0442\u043d\u0438 emociju",yell:"Vi\u010de",wink:"Namigiva",undecided:"Neodlu\u010dan",tongue_out:"Belji se",surprised:"Iznena\u0111en",smile:"Osmeh",sealed:"\u0160utim",money_mouth:"Bogata\u0161",laughing:"Smeh",kiss:"Poljubac",innocent:"Nevina\u0161ce",frown:"Mr\u0161ti se",foot_in_mouth:"Izlanuo se",embarassed:"Sramim se"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 28d8e25..fd03f6a
@@ -1 +1 @@
-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
+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
old mode 100755 (executable)
new mode 100644 (file)
index dababdc..24757d2
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index ac4bb4c..0e7d7ba
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 5b52074..17ad594
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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/no_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/no_dlg.js
deleted file mode 100644 (file)
index ca0a58e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('no.emotions_dlg',{cry:"Griner",cool:"Cool",desc:"Hum\u00f8rfjes",title:"Sett inn hum\u00f8rfjes",yell:"Skrik",wink:"Blunke",undecided:"Skeptisk","tongue_out":"Rekke tunge",surprised:"Overrasket",smile:"Smil",sealed:"Lukket","money_mouth":"Penger i munnen",laughing:"Ler",kiss:"Kyss",innocent:"Uskyldig",frown:"Skummer","foot_in_mouth":"Fot i munnen",embarassed:"Flau"});
\ No newline at end of file
old mode 100755 (executable)
new mode 100644 (file)
index cf12350..4e67692
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
index 7696d4085c651a9be6d198f2d11d134ccb3c43ec..f8340f3d26ac89c280773d8c5f669ca1e534767d 100644 (file)
@@ -1 +1 @@
-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
+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
old mode 100755 (executable)
new mode 100644 (file)
index d427edc..2209594
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index fbb4d65..ca0aa34
@@ -1 +1 @@
-tinyMCE.addI18n('ro.emotions_dlg',{cry:"Trist",cool:"Cool",desc:"Figurine emotive",title:"Insereaz\u0103 o figurin\u0103",yell:"\u0162ip\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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 4f51fb3..be9f3bc
@@ -1 +1 @@
-tinyMCE.addI18n('ru.emotions_dlg',{cry:"Cry",cool:"Cool",desc:"\u0421\u043c\u0430\u0439\u043b\u044b",title:"\u0412\u044b\u0431\u043e\u0440 \u0441\u043c\u0430\u0439\u043b\u0430",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":"\u0412 \u0440\u043e\u0442 \u043c\u043d\u0435 \u043d\u043e\u0433\u0443",embarassed:"Embarassed"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 387b6e6..cc41b25
@@ -1 +1 @@
-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
+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
old mode 100755 (executable)
new mode 100644 (file)
index f227bd6..34187f3
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index da0db62..17879d2
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
index 252624371518b8723a22fa5bf04d23dc55f9c247..5156819cfccab2bbc8267c1f135d5a16fafb92f2 100644 (file)
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 35e2eda..4fa96ec
@@ -1 +1 @@
-tinyMCE.addI18n('sr.emotions_dlg',{cry:"Pla\u010dem",cool:"Cool",desc:"Smajli",title:"Ubaci smajlija",yell:"Vi\u010dem",wink:"Namigujem",undecided:"Neodlu\u010dan",tongue_out:"Plezim se",surprised:"Iznena\u0111en",smile:"Osmeh",sealed:"\u0106utim",money_mouth:"Bogata\u0161",laughing:"Smeh",kiss:"Poljubac",innocent:"Nevina\u0161ce",frown:"Tu\u017ean sam",foot_in_mouth:"Izletelo mi",embarassed:"Stidim se"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 29b13d7..c36ebee
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
index 8f84c6873374edc214c0b113268f3ee5cbd9323a..1842bb1e268375810fc33bbba5855705bddb8f2c 100644 (file)
@@ -1 +1 @@
-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
+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/te_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/te_dlg.js
deleted file mode 100644 (file)
index 3072b63..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('te.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
index ad98274fb01e0cbc37654258797961d9d56529da..6039d65d7e30083d2644bf79b89923a410eb34b7 100644 (file)
@@ -1 +1 @@
-tinyMCE.addI18n('th.emotions_dlg',{cry:"\u0e23\u0e49\u0e2d\u0e07\u0e44\u0e2b\u0e49",cool:"\u0e40\u0e08\u0e4b\u0e07",desc:"\u0e41\u0e2a\u0e14\u0e07\u0e2d\u0e32\u0e23\u0e21\u0e13\u0e4c",title:"\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e23\u0e39\u0e1b\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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 269a33e..2749173
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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/tw_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/tw_dlg.js
deleted file mode 100644 (file)
index 6aed085..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('tw.emotions_dlg',{cry:"\u54ed\u6ce3",cool:"\u9177",desc:"\u8868\u60c5\u5217\u8868",title:"\u63d2\u5165\u8868\u60c5",yell:"\u5927\u53eb",wink:"\u7728\u773c",undecided:"\u601d\u8003",tongue_out:"\u5410\u820c\u982d",surprised:"\u9a5a\u8a1d",smile:"\u5fae\u7b11",sealed:"\u4fdd\u5bc6",money_mouth:"\u767c\u8ca1",laughing:"\u5927\u7b11",kiss:"\u543b",innocent:"\u5929\u771f",frown:"\u76ba\u7709",foot_in_mouth:"\u54a7\u5634",embarassed:"\u5c37\u5c2c"});
\ No newline at end of file
old mode 100755 (executable)
new mode 100644 (file)
index 9cc3955..8798e9e
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index a0b3401..b77323c
@@ -1 +1 @@
-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
+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
new file mode 100644 (file)
index 0000000..1dece2c
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..4b670b0
--- /dev/null
@@ -0,0 +1 @@
+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/emotions/langs/zh_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/zh_dlg.js
deleted file mode 100755 (executable)
index 5a5c019..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh.emotions_dlg',{cry:"\u54ed\u6ce3",cool:"\u9177",desc:"\u8868\u60c5\u5217\u8868",title:"\u63d2\u5165\u8868\u60c5",yell:"\u5927\u53eb",wink:"\u7728\u773c",undecided:"\u601d\u8003",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:"\u54a7\u5634",embarassed:"\u5c34\u5c2c"});
\ 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
new file mode 100644 (file)
index 0000000..50b2b34
--- /dev/null
@@ -0,0 +1,22 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+       <title>{#example_dlg.title}</title>\r
+       <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+       <script type="text/javascript" src="js/dialog.js"></script>\r
+</head>\r
+<body>\r
+\r
+<form onsubmit="ExampleDialog.insert();return false;" action="#">\r
+       <p>Here is a example dialog.</p>\r
+       <p>Selected text: <input id="someval" name="someval" type="text" class="text" /></p>\r
+       <p>Custom arg: <input id="somearg" name="somearg" type="text" class="text" /></p>\r
+\r
+       <div class="mceActionPanel">\r
+               <input type="button" id="insert" name="insert" value="{#insert}" onclick="ExampleDialog.insert();" />\r
+               <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+       </div>\r
+</form>\r
+\r
+</body>\r
+</html>\r
diff --git a/program/js/tiny_mce/plugins/example/editor_plugin.js b/program/js/tiny_mce/plugins/example/editor_plugin.js
new file mode 100644 (file)
index 0000000..ec1f81e
--- /dev/null
@@ -0,0 +1 @@
+(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
new file mode 100644 (file)
index 0000000..9a0e7da
--- /dev/null
@@ -0,0 +1,84 @@
+/**\r
+ * editor_plugin_src.js\r
+ *\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ */\r
+\r
+(function() {\r
+       // Load plugin specific language pack\r
+       tinymce.PluginManager.requireLangPack('example');\r
+\r
+       tinymce.create('tinymce.plugins.ExamplePlugin', {\r
+               /**\r
+                * Initializes the plugin, this will be executed after the plugin has been created.\r
+                * This call is done before the editor instance has finished it's initialization so use the onInit event\r
+                * of the editor instance to intercept that event.\r
+                *\r
+                * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.\r
+                * @param {string} url Absolute URL to where the plugin is located.\r
+                */\r
+               init : function(ed, url) {\r
+                       // Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('mceExample');\r
+                       ed.addCommand('mceExample', function() {\r
+                               ed.windowManager.open({\r
+                                       file : url + '/dialog.htm',\r
+                                       width : 320 + parseInt(ed.getLang('example.delta_width', 0)),\r
+                                       height : 120 + parseInt(ed.getLang('example.delta_height', 0)),\r
+                                       inline : 1\r
+                               }, {\r
+                                       plugin_url : url, // Plugin absolute URL\r
+                                       some_custom_arg : 'custom arg' // Custom argument\r
+                               });\r
+                       });\r
+\r
+                       // Register example button\r
+                       ed.addButton('example', {\r
+                               title : 'example.desc',\r
+                               cmd : 'mceExample',\r
+                               image : url + '/img/example.gif'\r
+                       });\r
+\r
+                       // Add a node change handler, selects the button in the UI when a image is selected\r
+                       ed.onNodeChange.add(function(ed, cm, n) {\r
+                               cm.setActive('example', n.nodeName == 'IMG');\r
+                       });\r
+               },\r
+\r
+               /**\r
+                * Creates control instances based in the incomming name. This method is normally not\r
+                * needed since the addButton method of the tinymce.Editor class is a more easy way of adding buttons\r
+                * but you sometimes need to create more complex controls like listboxes, split buttons etc then this\r
+                * method can be used to create those.\r
+                *\r
+                * @param {String} n Name of the control to create.\r
+                * @param {tinymce.ControlManager} cm Control manager to use inorder to create new control.\r
+                * @return {tinymce.ui.Control} New control instance or null if no control was created.\r
+                */\r
+               createControl : function(n, cm) {\r
+                       return null;\r
+               },\r
+\r
+               /**\r
+                * Returns information about the plugin as a name/value array.\r
+                * The current keys are longname, author, authorurl, infourl and version.\r
+                *\r
+                * @return {Object} Name/value array containing information about the plugin.\r
+                */\r
+               getInfo : function() {\r
+                       return {\r
+                               longname : 'Example plugin',\r
+                               author : 'Some author',\r
+                               authorurl : 'http://tinymce.moxiecode.com',\r
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example',\r
+                               version : "1.0"\r
+                       };\r
+               }\r
+       });\r
+\r
+       // Register plugin\r
+       tinymce.PluginManager.add('example', tinymce.plugins.ExamplePlugin);\r
+})();
\ 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
new file mode 100644 (file)
index 0000000..1ab5da4
Binary files /dev/null and b/program/js/tiny_mce/plugins/example/img/example.gif differ
diff --git a/program/js/tiny_mce/plugins/example/js/dialog.js b/program/js/tiny_mce/plugins/example/js/dialog.js
new file mode 100644 (file)
index 0000000..fa83411
--- /dev/null
@@ -0,0 +1,19 @@
+tinyMCEPopup.requireLangPack();\r
+\r
+var ExampleDialog = {\r
+       init : function() {\r
+               var f = document.forms[0];\r
+\r
+               // Get the selected contents as text and place it in the input\r
+               f.someval.value = tinyMCEPopup.editor.selection.getContent({format : 'text'});\r
+               f.somearg.value = tinyMCEPopup.getWindowArg('some_custom_arg');\r
+       },\r
+\r
+       insert : function() {\r
+               // Insert the contents from the input into the document\r
+               tinyMCEPopup.editor.execCommand('mceInsertContent', false, document.forms[0].someval.value);\r
+               tinyMCEPopup.close();\r
+       }\r
+};\r
+\r
+tinyMCEPopup.onInit.add(ExampleDialog.init, ExampleDialog);\r
diff --git a/program/js/tiny_mce/plugins/example/langs/en.js b/program/js/tiny_mce/plugins/example/langs/en.js
new file mode 100644 (file)
index 0000000..e0784f8
--- /dev/null
@@ -0,0 +1,3 @@
+tinyMCE.addI18n('en.example',{\r
+       desc : 'This is just a template button'\r
+});\r
diff --git a/program/js/tiny_mce/plugins/example/langs/en_dlg.js b/program/js/tiny_mce/plugins/example/langs/en_dlg.js
new file mode 100644 (file)
index 0000000..ebcf948
--- /dev/null
@@ -0,0 +1,3 @@
+tinyMCE.addI18n('en.example_dlg',{\r
+       title : 'This is just a example title'\r
+});\r
diff --git a/program/js/tiny_mce/plugins/example_dependency/editor_plugin.js b/program/js/tiny_mce/plugins/example_dependency/editor_plugin.js
new file mode 100644 (file)
index 0000000..0a4551d
--- /dev/null
@@ -0,0 +1 @@
+(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
new file mode 100644 (file)
index 0000000..e1c55e4
--- /dev/null
@@ -0,0 +1,50 @@
+/**
+ * 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
new file mode 100644 (file)
index 0000000..2675cec
--- /dev/null
@@ -0,0 +1,143 @@
+/* Hide the advanced tab */\r
+#advanced_tab {\r
+       display: none;\r
+}\r
+\r
+#metatitle, #metakeywords, #metadescription, #metaauthor, #metacopyright {\r
+       width: 280px;\r
+}\r
+\r
+#doctype, #docencoding {\r
+       width: 200px;\r
+}\r
+\r
+#langcode {\r
+       width: 30px;\r
+}\r
+\r
+#bgimage {\r
+       width: 220px;   \r
+}\r
+\r
+#fontface {\r
+       width: 240px;\r
+}\r
+\r
+#leftmargin, #rightmargin, #topmargin, #bottommargin {\r
+       width: 50px;\r
+}\r
+\r
+.panel_wrapper div.current {\r
+       height: 400px;\r
+}\r
+\r
+#stylesheet, #style {\r
+       width: 240px;\r
+}\r
+\r
+#doctypes {\r
+       width: 200px;\r
+}\r
+\r
+/* Head list classes */\r
+\r
+.headlistwrapper {\r
+       width: 100%;\r
+}\r
+\r
+.selected {\r
+       border: 1px solid #0A246A;\r
+       background-color: #B6BDD2;\r
+}\r
+\r
+.toolbar {\r
+       width: 100%;\r
+}\r
+\r
+#headlist {\r
+       width: 100%;\r
+       margin-top: 3px;\r
+       font-size: 11px;\r
+}\r
+\r
+#info, #title_element, #meta_element, #script_element, #style_element, #base_element, #link_element, #comment_element, #unknown_element {\r
+       display: none;\r
+}\r
+\r
+#addmenu {\r
+       position: absolute;\r
+       border: 1px solid gray;\r
+       display: none;\r
+       z-index: 100;\r
+       background-color: white;\r
+}\r
+\r
+#addmenu a {\r
+       display: block;\r
+       width: 100%;\r
+       line-height: 20px;\r
+       text-decoration: none;\r
+       background-color: white;\r
+}\r
+\r
+#addmenu a:hover {\r
+       background-color: #B6BDD2;\r
+       color: black;\r
+}\r
+\r
+#addmenu span {\r
+       padding-left: 10px;\r
+       padding-right: 10px;\r
+}\r
+\r
+#updateElementPanel {\r
+       display: none;\r
+}\r
+\r
+#script_element .panel_wrapper div.current {\r
+       height: 108px;\r
+}\r
+\r
+#style_element .panel_wrapper div.current {\r
+       height: 108px;\r
+}\r
+\r
+#link_element  .panel_wrapper div.current {\r
+       height: 140px;\r
+}\r
+\r
+#element_script_value {\r
+       width: 100%;\r
+       height: 100px;\r
+}\r
+\r
+#element_comment_value {\r
+       width: 100%;\r
+       height: 120px;\r
+}\r
+\r
+#element_style_value {\r
+       width: 100%;\r
+       height: 100px;\r
+}\r
+\r
+#element_title, #element_script_src, #element_meta_name, #element_meta_content, #element_base_href, #element_link_href, #element_link_title {\r
+       width: 250px;\r
+}\r
+\r
+.updateElementButton {\r
+       margin-top: 3px;\r
+}\r
+\r
+/* MSIE specific styles */\r
+\r
+* html .addbutton, * html .removebutton, * html .moveupbutton, * html .movedownbutton {\r
+       width: 22px;\r
+       height: 22px;\r
+}\r
+\r
+textarea {\r
+       height: 55px;\r
+}\r
+\r
+.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
new file mode 100644 (file)
index 0000000..dcf7602
--- /dev/null
@@ -0,0 +1 @@
+(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
new file mode 100644 (file)
index 0000000..23de7c5
--- /dev/null
@@ -0,0 +1,405 @@
+/**\r
+ * editor_plugin_src.js\r
+ *\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ */\r
+\r
+(function() {\r
+       var each = tinymce.each, Node = tinymce.html.Node;\r
+\r
+       tinymce.create('tinymce.plugins.FullPagePlugin', {\r
+               init : function(ed, url) {\r
+                       var t = this;\r
+\r
+                       t.editor = ed;\r
+\r
+                       // Register commands\r
+                       ed.addCommand('mceFullPageProperties', function() {\r
+                               ed.windowManager.open({\r
+                                       file : url + '/fullpage.htm',\r
+                                       width : 430 + parseInt(ed.getLang('fullpage.delta_width', 0)),\r
+                                       height : 495 + parseInt(ed.getLang('fullpage.delta_height', 0)),\r
+                                       inline : 1\r
+                               }, {\r
+                                       plugin_url : url,\r
+                                       data : t._htmlToData()\r
+                               });\r
+                       });\r
+\r
+                       // Register buttons\r
+                       ed.addButton('fullpage', {title : 'fullpage.desc', cmd : 'mceFullPageProperties'});\r
+\r
+                       ed.onBeforeSetContent.add(t._setContent, t);\r
+                       ed.onGetContent.add(t._getContent, t);\r
+               },\r
+\r
+               getInfo : function() {\r
+                       return {\r
+                               longname : 'Fullpage',\r
+                               author : 'Moxiecode Systems AB',\r
+                               authorurl : 'http://tinymce.moxiecode.com',\r
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage',\r
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+                       };\r
+               },\r
+\r
+               // Private plugin internal methods\r
+\r
+               _htmlToData : function() {\r
+                       var headerFragment = this._parseHeader(), data = {}, nodes, elm, matches, editor = this.editor;\r
+\r
+                       function getAttr(elm, name) {\r
+                               var value = elm.attr(name);\r
+\r
+                               return value || '';\r
+                       };\r
+\r
+                       // Default some values\r
+                       data.fontface = editor.getParam("fullpage_default_fontface", "");\r
+                       data.fontsize = editor.getParam("fullpage_default_fontsize", "");\r
+\r
+                       // Parse XML PI\r
+                       elm = headerFragment.firstChild;\r
+                       if (elm.type == 7) {\r
+                               data.xml_pi = true;\r
+                               matches = /encoding="([^"]+)"/.exec(elm.value);\r
+                               if (matches)\r
+                                       data.docencoding = matches[1];\r
+                       }\r
+\r
+                       // Parse doctype\r
+                       elm = headerFragment.getAll('#doctype')[0];\r
+                       if (elm)\r
+                               data.doctype = '<!DOCTYPE' + elm.value + ">"; \r
+\r
+                       // Parse title element\r
+                       elm = headerFragment.getAll('title')[0];\r
+                       if (elm && elm.firstChild) {\r
+                               data.metatitle = elm.firstChild.value;\r
+                       }\r
+\r
+                       // Parse meta elements\r
+                       each(headerFragment.getAll('meta'), function(meta) {\r
+                               var name = meta.attr('name'), httpEquiv = meta.attr('http-equiv'), matches;\r
+\r
+                               if (name)\r
+                                       data['meta' + name.toLowerCase()] = meta.attr('content');\r
+                               else if (httpEquiv == "Content-Type") {\r
+                                       matches = /charset\s*=\s*(.*)\s*/gi.exec(meta.attr('content'));\r
+\r
+                                       if (matches)\r
+                                               data.docencoding = matches[1];\r
+                               }\r
+                       });\r
+\r
+                       // Parse html attribs\r
+                       elm = headerFragment.getAll('html')[0];\r
+                       if (elm)\r
+                               data.langcode = getAttr(elm, 'lang') || getAttr(elm, 'xml:lang');\r
+       \r
+                       // Parse stylesheet\r
+                       elm = headerFragment.getAll('link')[0];\r
+                       if (elm && elm.attr('rel') == 'stylesheet')\r
+                               data.stylesheet = elm.attr('href');\r
+\r
+                       // Parse body parts\r
+                       elm = headerFragment.getAll('body')[0];\r
+                       if (elm) {\r
+                               data.langdir = getAttr(elm, 'dir');\r
+                               data.style = getAttr(elm, 'style');\r
+                               data.visited_color = getAttr(elm, 'vlink');\r
+                               data.link_color = getAttr(elm, 'link');\r
+                               data.active_color = getAttr(elm, 'alink');\r
+                       }\r
+\r
+                       return data;\r
+               },\r
+\r
+               _dataToHtml : function(data) {\r
+                       var headerFragment, headElement, html, elm, value, dom = this.editor.dom;\r
+\r
+                       function setAttr(elm, name, value) {\r
+                               elm.attr(name, value ? value : undefined);\r
+                       };\r
+\r
+                       function addHeadNode(node) {\r
+                               if (headElement.firstChild)\r
+                                       headElement.insert(node, headElement.firstChild);\r
+                               else\r
+                                       headElement.append(node);\r
+                       };\r
+\r
+                       headerFragment = this._parseHeader();\r
+                       headElement = headerFragment.getAll('head')[0];\r
+                       if (!headElement) {\r
+                               elm = headerFragment.getAll('html')[0];\r
+                               headElement = new Node('head', 1);\r
+\r
+                               if (elm.firstChild)\r
+                                       elm.insert(headElement, elm.firstChild, true);\r
+                               else\r
+                                       elm.append(headElement);\r
+                       }\r
+\r
+                       // Add/update/remove XML-PI\r
+                       elm = headerFragment.firstChild;\r
+                       if (data.xml_pi) {\r
+                               value = 'version="1.0"';\r
+\r
+                               if (data.docencoding)\r
+                                       value += ' encoding="' + data.docencoding + '"';\r
+\r
+                               if (elm.type != 7) {\r
+                                       elm = new Node('xml', 7);\r
+                                       headerFragment.insert(elm, headerFragment.firstChild, true);\r
+                               }\r
+\r
+                               elm.value = value;\r
+                       } else if (elm && elm.type == 7)\r
+                               elm.remove();\r
+\r
+                       // Add/update/remove doctype\r
+                       elm = headerFragment.getAll('#doctype')[0];\r
+                       if (data.doctype) {\r
+                               if (!elm) {\r
+                                       elm = new Node('#doctype', 10);\r
+\r
+                                       if (data.xml_pi)\r
+                                               headerFragment.insert(elm, headerFragment.firstChild);\r
+                                       else\r
+                                               addHeadNode(elm);\r
+                               }\r
+\r
+                               elm.value = data.doctype.substring(9, data.doctype.length - 1);\r
+                       } else if (elm)\r
+                               elm.remove();\r
+\r
+                       // Add/update/remove title\r
+                       elm = headerFragment.getAll('title')[0];\r
+                       if (data.metatitle) {\r
+                               if (!elm) {\r
+                                       elm = new Node('title', 1);\r
+                                       elm.append(new Node('#text', 3)).value = data.metatitle;\r
+                                       addHeadNode(elm);\r
+                               }\r
+                       }\r
+\r
+                       // Add meta encoding\r
+                       if (data.docencoding) {\r
+                               elm = null;\r
+                               each(headerFragment.getAll('meta'), function(meta) {\r
+                                       if (meta.attr('http-equiv') == 'Content-Type')\r
+                                               elm = meta;\r
+                               });\r
+\r
+                               if (!elm) {\r
+                                       elm = new Node('meta', 1);\r
+                                       elm.attr('http-equiv', 'Content-Type');\r
+                                       elm.shortEnded = true;\r
+                                       addHeadNode(elm);\r
+                               }\r
+\r
+                               elm.attr('content', 'text/html; charset=' + data.docencoding);\r
+                       }\r
+\r
+                       // Add/update/remove meta\r
+                       each('keywords,description,author,copyright,robots'.split(','), function(name) {\r
+                               var nodes = headerFragment.getAll('meta'), i, meta, value = data['meta' + name];\r
+\r
+                               for (i = 0; i < nodes.length; i++) {\r
+                                       meta = nodes[i];\r
+\r
+                                       if (meta.attr('name') == name) {\r
+                                               if (value)\r
+                                                       meta.attr('content', value);\r
+                                               else\r
+                                                       meta.remove();\r
+\r
+                                               return;\r
+                                       }\r
+                               }\r
+\r
+                               if (value) {\r
+                                       elm = new Node('meta', 1);\r
+                                       elm.attr('name', name);\r
+                                       elm.attr('content', value);\r
+                                       elm.shortEnded = true;\r
+\r
+                                       addHeadNode(elm);\r
+                               }\r
+                       });\r
+\r
+                       // Add/update/delete link\r
+                       elm = headerFragment.getAll('link')[0];\r
+                       if (elm && elm.attr('rel') == 'stylesheet') {\r
+                               if (data.stylesheet)\r
+                                       elm.attr('href', data.stylesheet);\r
+                               else\r
+                                       elm.remove();\r
+                       } else if (data.stylesheet) {\r
+                               elm = new Node('link', 1);\r
+                               elm.attr({\r
+                                       rel : 'stylesheet',\r
+                                       text : 'text/css',\r
+                                       href : data.stylesheet\r
+                               });\r
+                               elm.shortEnded = true;\r
+\r
+                               addHeadNode(elm);\r
+                       }\r
+\r
+                       // Update body attributes\r
+                       elm = headerFragment.getAll('body')[0];\r
+                       if (elm) {\r
+                               setAttr(elm, 'dir', data.langdir);\r
+                               setAttr(elm, 'style', data.style);\r
+                               setAttr(elm, 'vlink', data.visited_color);\r
+                               setAttr(elm, 'link', data.link_color);\r
+                               setAttr(elm, 'alink', data.active_color);\r
+\r
+                               // Update iframe body as well\r
+                               dom.setAttribs(this.editor.getBody(), {\r
+                                       style : data.style,\r
+                                       dir : data.dir,\r
+                                       vLink : data.visited_color,\r
+                                       link : data.link_color,\r
+                                       aLink : data.active_color\r
+                               });\r
+                       }\r
+\r
+                       // Set html attributes\r
+                       elm = headerFragment.getAll('html')[0];\r
+                       if (elm) {\r
+                               setAttr(elm, 'lang', data.langcode);\r
+                               setAttr(elm, 'xml:lang', data.langcode);\r
+                       }\r
+\r
+                       // Serialize header fragment and crop away body part\r
+                       html = new tinymce.html.Serializer({\r
+                               validate: false,\r
+                               indent: true,\r
+                               apply_source_formatting : true,\r
+                               indent_before: 'head,html,body,meta,title,script,link,style',\r
+                               indent_after: 'head,html,body,meta,title,script,link,style'\r
+                       }).serialize(headerFragment);\r
+\r
+                       this.head = html.substring(0, html.indexOf('</body>'));\r
+               },\r
+\r
+               _parseHeader : function() {\r
+                       // Parse the contents with a DOM parser\r
+                       return new tinymce.html.DomParser({\r
+                               validate: false,\r
+                               root_name: '#document'\r
+                       }).parse(this.head);\r
+               },\r
+\r
+               _setContent : function(ed, o) {\r
+                       var self = this, startPos, endPos, content = o.content, headerFragment, styles = '', dom = self.editor.dom, elm;\r
+\r
+                       function low(s) {\r
+                               return s.replace(/<\/?[A-Z]+/g, function(a) {\r
+                                       return a.toLowerCase();\r
+                               })\r
+                       };\r
+\r
+                       // Ignore raw updated if we already have a head, this will fix issues with undo/redo keeping the head/foot separate\r
+                       if (o.format == 'raw' && self.head)\r
+                               return;\r
+\r
+                       if (o.source_view && ed.getParam('fullpage_hide_in_source_view'))\r
+                               return;\r
+\r
+                       // Parse out head, body and footer\r
+                       content = content.replace(/<(\/?)BODY/gi, '<$1body');\r
+                       startPos = content.indexOf('<body');\r
+\r
+                       if (startPos != -1) {\r
+                               startPos = content.indexOf('>', startPos);\r
+                               self.head = low(content.substring(0, startPos + 1));\r
+\r
+                               endPos = content.indexOf('</body', startPos);\r
+                               if (endPos == -1)\r
+                                       endPos = content.length;\r
+\r
+                               o.content = content.substring(startPos + 1, endPos);\r
+                               self.foot = low(content.substring(endPos));\r
+                       } else {\r
+                               self.head = this._getDefaultHeader();\r
+                               self.foot = '\n</body>\n</html>';\r
+                       }\r
+\r
+                       // Parse header and update iframe\r
+                       headerFragment = self._parseHeader();\r
+                       each(headerFragment.getAll('style'), function(node) {\r
+                               if (node.firstChild)\r
+                                       styles += node.firstChild.value;\r
+                       });\r
+\r
+                       elm = headerFragment.getAll('body')[0];\r
+                       if (elm) {\r
+                               dom.setAttribs(self.editor.getBody(), {\r
+                                       style : elm.attr('style') || '',\r
+                                       dir : elm.attr('dir') || '',\r
+                                       vLink : elm.attr('vlink') || '',\r
+                                       link : elm.attr('link') || '',\r
+                                       aLink : elm.attr('alink') || ''\r
+                               });\r
+                       }\r
+\r
+                       dom.remove('fullpage_styles');\r
+\r
+                       if (styles) {\r
+                               dom.add(self.editor.getDoc().getElementsByTagName('head')[0], 'style', {id : 'fullpage_styles'}, styles);\r
+\r
+                               // Needed for IE 6/7\r
+                               elm = dom.get('fullpage_styles');\r
+                               if (elm.styleSheet)\r
+                                       elm.styleSheet.cssText = styles;\r
+                       }\r
+               },\r
+\r
+               _getDefaultHeader : function() {\r
+                       var header = '', editor = this.editor, value, styles = '';\r
+\r
+                       if (editor.getParam('fullpage_default_xml_pi'))\r
+                               header += '<?xml version="1.0" encoding="' + editor.getParam('fullpage_default_encoding', 'ISO-8859-1') + '" ?>\n';\r
+\r
+                       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">');\r
+                       header += '\n<html>\n<head>\n';\r
+\r
+                       if (value = editor.getParam('fullpage_default_title'))\r
+                               header += '<title>' + value + '</title>\n';\r
+\r
+                       if (value = editor.getParam('fullpage_default_encoding'))\r
+                               header += '<meta http-equiv="Content-Type" content="text/html; charset=' + value + '" />\n';\r
+\r
+                       if (value = editor.getParam('fullpage_default_font_family'))\r
+                               styles += 'font-family: ' + value + ';';\r
+\r
+                       if (value = editor.getParam('fullpage_default_font_size'))\r
+                               styles += 'font-size: ' + value + ';';\r
+\r
+                       if (value = editor.getParam('fullpage_default_text_color'))\r
+                               styles += 'color: ' + value + ';';\r
+\r
+                       header += '</head>\n<body' + (styles ? ' style="' + styles + '"' : '') + '>\n';\r
+\r
+                       return header;\r
+               },\r
+\r
+               _getContent : function(ed, o) {\r
+                       var self = this;\r
+\r
+                       if (!o.source_view || !ed.getParam('fullpage_hide_in_source_view'))\r
+                               o.content = tinymce.trim(self.head) + '\n' + tinymce.trim(o.content) + '\n' + tinymce.trim(self.foot);\r
+               }\r
+       });\r
+\r
+       // Register plugin\r
+       tinymce.PluginManager.add('fullpage', tinymce.plugins.FullPagePlugin);\r
+})();\r
diff --git a/program/js/tiny_mce/plugins/fullpage/fullpage.htm b/program/js/tiny_mce/plugins/fullpage/fullpage.htm
new file mode 100644 (file)
index 0000000..14ab865
--- /dev/null
@@ -0,0 +1,259 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+       <title>{#fullpage_dlg.title}</title>\r
+       <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+       <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
+       <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
+       <script type="text/javascript" src="js/fullpage.js"></script>\r
+       <link href="css/fullpage.css" rel="stylesheet" type="text/css" />\r
+</head>\r
+<body id="fullpage" style="display: none">\r
+<form onsubmit="FullPageDialog.update();return false;" name="fullpage" action="#">\r
+               <div class="tabs">\r
+                       <ul>\r
+                               <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>\r
+                               <li id="appearance_tab"><span><a href="javascript:mcTabs.displayTab('appearance_tab','appearance_panel');" onmousedown="return false;">{#fullpage_dlg.appearance_tab}</a></span></li>\r
+                       </ul>\r
+               </div>\r
+\r
+               <div class="panel_wrapper">\r
+                       <div id="meta_panel" class="panel current">\r
+                               <fieldset>\r
+                                       <legend>{#fullpage_dlg.meta_props}</legend>\r
+\r
+                                       <table border="0" cellpadding="4" cellspacing="0">\r
+                                               <tr>\r
+                                                       <td class="nowrap"><label for="metatitle">{#fullpage_dlg.meta_title}</label>&nbsp;</td>\r
+                                                       <td><input type="text" id="metatitle" name="metatitle" value="" class="mceFocus" /></td>\r
+                                               </tr>\r
+                                               <tr>\r
+                                                       <td class="nowrap"><label for="metakeywords">{#fullpage_dlg.meta_keywords}</label>&nbsp;</td>\r
+                                                       <td><textarea id="metakeywords" name="metakeywords" rows="4"></textarea></td>\r
+                                               </tr>\r
+                                               <tr>\r
+                                                       <td class="nowrap"><label for="metadescription">{#fullpage_dlg.meta_description}</label>&nbsp;</td>\r
+                                                       <td><textarea id="metadescription" name="metadescription" rows="4"></textarea></td>\r
+                                               </tr>\r
+                                               <tr>\r
+                                                       <td class="nowrap"><label for="metaauthor">{#fullpage_dlg.author}</label>&nbsp;</td>\r
+                                                       <td><input type="text" id="metaauthor" name="metaauthor" value="" /></td>\r
+                                               </tr>\r
+                                               <tr>\r
+                                                       <td class="nowrap"><label for="metacopyright">{#fullpage_dlg.copyright}</label>&nbsp;</td>\r
+                                                       <td><input type="text" id="metacopyright" name="metacopyright" value="" /></td>\r
+                                               </tr>\r
+                                               <tr>\r
+                                                       <td class="nowrap"><label for="metarobots">{#fullpage_dlg.meta_robots}</label>&nbsp;</td>\r
+                                                       <td>\r
+                                                               <select id="metarobots" name="metarobots">\r
+                                                                                       <option value="">{#not_set}</option> \r
+                                                                                       <option value="index,follow">{#fullpage_dlg.meta_index_follow}</option>\r
+                                                                                       <option value="index,nofollow">{#fullpage_dlg.meta_index_nofollow}</option>\r
+                                                                                       <option value="noindex,follow">{#fullpage_dlg.meta_noindex_follow}</option>\r
+                                                                                       <option value="noindex,nofollow">{#fullpage_dlg.meta_noindex_nofollow}</option>\r
+                                                               </select>\r
+                                                       </td>\r
+                                               </tr>\r
+                                       </table>\r
+                               </fieldset>\r
+\r
+                               <fieldset>\r
+                                       <legend>{#fullpage_dlg.langprops}</legend>\r
+\r
+                                       <table border="0" cellpadding="4" cellspacing="0">\r
+                                               <tr>\r
+                                                       <td class="column1"><label for="docencoding">{#fullpage_dlg.encoding}</label></td> \r
+                                                       <td>\r
+                                                               <select id="docencoding" name="docencoding"> \r
+                                                                               <option value="">{#not_set}</option>\r
+                                                               </select>\r
+                                                       </td> \r
+                                               </tr>\r
+                                               <tr>\r
+                                                       <td class="nowrap"><label for="doctype">{#fullpage_dlg.doctypes}</label>&nbsp;</td>\r
+                                                       <td>\r
+                                                               <select id="doctype" name="doctype">\r
+                                                                               <option value="">{#not_set}</option>\r
+                                                               </select>\r
+                                                       </td>\r
+                                               </tr>\r
+                                               <tr>\r
+                                                       <td class="nowrap"><label for="langcode">{#fullpage_dlg.langcode}</label>&nbsp;</td>\r
+                                                       <td><input type="text" id="langcode" name="langcode" value="" /></td>\r
+                                               </tr>\r
+                                               <tr>\r
+                                                       <td class="column1"><label for="langdir">{#fullpage_dlg.langdir}</label></td> \r
+                                                       <td>\r
+                                                               <select id="langdir" name="langdir"> \r
+                                                                               <option value="">{#not_set}</option> \r
+                                                                               <option value="ltr">{#fullpage_dlg.ltr}</option> \r
+                                                                               <option value="rtl">{#fullpage_dlg.rtl}</option> \r
+                                                               </select>\r
+                                                       </td> \r
+                                               </tr>\r
+                                               <tr>\r
+                                                       <td class="nowrap"><label for="xml_pi">{#fullpage_dlg.xml_pi}</label>&nbsp;</td>\r
+                                                       <td><input type="checkbox" id="xml_pi" name="xml_pi" class="checkbox" /></td>\r
+                                               </tr>\r
+                                       </table>\r
+                               </fieldset>\r
+                       </div>\r
+\r
+                       <div id="appearance_panel" class="panel">\r
+                               <fieldset>\r
+                                       <legend>{#fullpage_dlg.appearance_textprops}</legend>\r
+\r
+                                       <table border="0" cellpadding="4" cellspacing="0">\r
+                                               <tr>\r
+                                                       <td class="column1"><label for="fontface">{#fullpage_dlg.fontface}</label></td> \r
+                                                       <td>\r
+                                                               <select id="fontface" name="fontface" onchange="FullPageDialog.changedStyleProp();">\r
+                                                                               <option value="">{#not_set}</option>\r
+                                                               </select>\r
+                                                       </td> \r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td class="column1"><label for="fontsize">{#fullpage_dlg.fontsize}</label></td> \r
+                                                       <td>\r
+                                                               <select id="fontsize" name="fontsize" onchange="FullPageDialog.changedStyleProp();">\r
+                                                                               <option value="">{#not_set}</option>\r
+                                                               </select>\r
+                                                       </td>\r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td class="column1"><label for="textcolor">{#fullpage_dlg.textcolor}</label></td> \r
+                                                       <td>\r
+                                                               <table border="0" cellpadding="0" cellspacing="0">\r
+                                                                       <tr>\r
+                                                                               <td><input id="textcolor" name="textcolor" type="text" value="" size="9" onchange="updateColor('textcolor_pick','textcolor');FullPageDialog.changedStyleProp();" /></td>\r
+                                                                               <td id="textcolor_pickcontainer">&nbsp;</td>\r
+                                                                       </tr>\r
+                                                               </table>\r
+                                                       </td>\r
+                                               </tr>\r
+                                       </table>\r
+                               </fieldset>\r
+\r
+                               <fieldset>\r
+                                       <legend>{#fullpage_dlg.appearance_bgprops}</legend>\r
+\r
+                                       <table border="0" cellpadding="4" cellspacing="0">\r
+                                               <tr>\r
+                                                       <td class="column1"><label for="bgimage">{#fullpage_dlg.bgimage}</label></td> \r
+                                                       <td>\r
+                                                               <table border="0" cellpadding="0" cellspacing="0">\r
+                                                                       <tr>\r
+                                                                               <td><input id="bgimage" name="bgimage" type="text" value="" onchange="FullPageDialog.changedStyleProp();" /></td>\r
+                                                                               <td id="bgimage_pickcontainer">&nbsp;</td>\r
+                                                                       </tr>\r
+                                                               </table>\r
+                                                       </td>\r
+                                               </tr>\r
+                                               <tr>\r
+                                                       <td class="column1"><label for="bgcolor">{#fullpage_dlg.bgcolor}</label></td> \r
+                                                       <td>\r
+                                                               <table border="0" cellpadding="0" cellspacing="0">\r
+                                                                       <tr>\r
+                                                                               <td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');FullPageDialog.changedStyleProp();" /></td>\r
+                                                                               <td id="bgcolor_pickcontainer">&nbsp;</td>\r
+                                                                       </tr>\r
+                                                               </table>\r
+                                                       </td> \r
+                                               </tr>\r
+                                       </table>\r
+                               </fieldset>\r
+\r
+                               <fieldset>\r
+                                       <legend>{#fullpage_dlg.appearance_marginprops}</legend>\r
+\r
+                                       <table border="0" cellpadding="4" cellspacing="0">\r
+                                               <tr>\r
+                                                       <td class="column1"><label for="leftmargin">{#fullpage_dlg.left_margin}</label></td> \r
+                                                       <td><input id="leftmargin" name="leftmargin" type="text" value="" onchange="FullPageDialog.changedStyleProp();" /></td>\r
+                                                       <td class="column1"><label for="rightmargin">{#fullpage_dlg.right_margin}</label></td> \r
+                                                       <td><input id="rightmargin" name="rightmargin" type="text" value="" onchange="FullPageDialog.changedStyleProp();" /></td>\r
+                                               </tr>\r
+                                               <tr>\r
+                                                       <td class="column1"><label for="topmargin">{#fullpage_dlg.top_margin}</label></td> \r
+                                                       <td><input id="topmargin" name="topmargin" type="text" value="" onchange="FullPageDialog.changedStyleProp();" /></td>\r
+                                                       <td class="column1"><label for="bottommargin">{#fullpage_dlg.bottom_margin}</label></td> \r
+                                                       <td><input id="bottommargin" name="bottommargin" type="text" value="" onchange="FullPageDialog.changedStyleProp();" /></td>\r
+                                               </tr>\r
+                                       </table>\r
+                               </fieldset>\r
+\r
+                               <fieldset>\r
+                                       <legend>{#fullpage_dlg.appearance_linkprops}</legend>\r
+\r
+                                       <table border="0" cellpadding="4" cellspacing="0">\r
+                                               <tr>\r
+                                                       <td class="column1"><label for="link_color">{#fullpage_dlg.link_color}</label></td> \r
+                                                       <td>\r
+                                                               <table border="0" cellpadding="0" cellspacing="0">\r
+                                                                       <tr>\r
+                                                                               <td><input id="link_color" name="link_color" type="text" value="" size="9" onchange="updateColor('link_color_pick','link_color');FullPageDialog.changedStyleProp();" /></td>\r
+                                                                               <td id="link_color_pickcontainer">&nbsp;</td>\r
+                                                                       </tr>\r
+                                                               </table>\r
+                                                       </td>\r
+\r
+                                                       <td class="column1"><label for="visited_color">{#fullpage_dlg.visited_color}</label></td> \r
+                                                       <td>\r
+                                                               <table border="0" cellpadding="0" cellspacing="0">\r
+                                                                       <tr>\r
+                                                                               <td><input id="visited_color" name="visited_color" type="text" value="" size="9" onchange="updateColor('visited_color_pick','visited_color');FullPageDialog.changedStyleProp();" /></td>\r
+                                                                               <td id="visited_color_pickcontainer">&nbsp;</td>\r
+                                                                       </tr>\r
+                                                               </table>\r
+                                                       </td>\r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td class="column1"><label for="active_color">{#fullpage_dlg.active_color}</label></td> \r
+                                                       <td>\r
+                                                               <table border="0" cellpadding="0" cellspacing="0">\r
+                                                                       <tr>\r
+                                                                               <td><input id="active_color" name="active_color" type="text" value="" size="9" onchange="updateColor('active_color_pick','active_color');FullPageDialog.changedStyleProp();" /></td>\r
+                                                                               <td id="active_color_pickcontainer">&nbsp;</td>\r
+                                                                       </tr>\r
+                                                               </table>\r
+                                                       </td>\r
+\r
+                                                       <td>&nbsp;</td>\r
+                                                       <td>&nbsp;</td>\r
+                                               </tr>\r
+                                       </table>\r
+                               </fieldset>\r
+\r
+                               <fieldset>\r
+                                       <legend>{#fullpage_dlg.appearance_style}</legend>\r
+\r
+                                       <table border="0" cellpadding="4" cellspacing="0">\r
+                                               <tr>\r
+                                                       <td class="column1"><label for="stylesheet">{#fullpage_dlg.stylesheet}</label></td> \r
+                                                       <td><table border="0" cellpadding="0" cellspacing="0">\r
+                                                                       <tr>\r
+                                                                               <td><input id="stylesheet" name="stylesheet" type="text" value="" /></td>\r
+                                                                               <td id="stylesheet_browsercontainer">&nbsp;</td>\r
+                                                                       </tr>\r
+                                                               </table></td>\r
+                                               </tr>\r
+                                               <tr>\r
+                                                       <td class="column1"><label for="style">{#fullpage_dlg.style}</label></td> \r
+                                                       <td><input id="style" name="style" type="text" value="" onchange="FullPageDialog.changedStyle();" /></td>\r
+                                               </tr>\r
+                                       </table>\r
+                               </fieldset>\r
+                       </div>\r
+               </div>\r
+\r
+               <div class="mceActionPanel">\r
+                       <input type="submit" id="insert" name="update" value="{#update}" />\r
+                       <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+               </div>\r
+</form>\r
+</body>\r
+</html>\r
diff --git a/program/js/tiny_mce/plugins/fullpage/js/fullpage.js b/program/js/tiny_mce/plugins/fullpage/js/fullpage.js
new file mode 100644 (file)
index 0000000..3f672ad
--- /dev/null
@@ -0,0 +1,232 @@
+/**\r
+ * fullpage.js\r
+ *\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ */\r
+\r
+(function() {\r
+       tinyMCEPopup.requireLangPack();\r
+\r
+       var defaultDocTypes = \r
+               'XHTML 1.0 Transitional=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">,' +\r
+               'XHTML 1.0 Frameset=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">,' +\r
+               'XHTML 1.0 Strict=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">,' +\r
+               'XHTML 1.1=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">,' +\r
+               'HTML 4.01 Transitional=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">,' +\r
+               'HTML 4.01 Strict=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">,' +\r
+               'HTML 4.01 Frameset=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">';\r
+\r
+       var defaultEncodings = \r
+               'Western european (iso-8859-1)=iso-8859-1,' +\r
+               'Central European (iso-8859-2)=iso-8859-2,' +\r
+               'Unicode (UTF-8)=utf-8,' +\r
+               'Chinese traditional (Big5)=big5,' +\r
+               'Cyrillic (iso-8859-5)=iso-8859-5,' +\r
+               'Japanese (iso-2022-jp)=iso-2022-jp,' +\r
+               'Greek (iso-8859-7)=iso-8859-7,' +\r
+               'Korean (iso-2022-kr)=iso-2022-kr,' +\r
+               'ASCII (us-ascii)=us-ascii';\r
+\r
+       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';\r
+       var defaultFontSizes = '10px,11px,12px,13px,14px,15px,16px';\r
+\r
+       function setVal(id, value) {\r
+               var elm = document.getElementById(id);\r
+\r
+               if (elm) {\r
+                       value = value || '';\r
+\r
+                       if (elm.nodeName == "SELECT")\r
+                               selectByValue(document.forms[0], id, value);\r
+                       else if (elm.type == "checkbox")\r
+                               elm.checked = !!value;\r
+                       else\r
+                               elm.value = value;\r
+               }\r
+       };\r
+\r
+       function getVal(id) {\r
+               var elm = document.getElementById(id);\r
+\r
+               if (elm.nodeName == "SELECT")\r
+                       return elm.options[elm.selectedIndex].value;\r
+\r
+               if (elm.type == "checkbox")\r
+                       return elm.checked;\r
+\r
+               return elm.value;\r
+       };\r
+\r
+       window.FullPageDialog = {\r
+               changedStyle : function() {\r
+                       var val, styles = tinyMCEPopup.editor.dom.parseStyle(getVal('style'));\r
+\r
+                       setVal('fontface', styles['font-face']);\r
+                       setVal('fontsize', styles['font-size']);\r
+                       setVal('textcolor', styles['color']);\r
+\r
+                       if (val = styles['background-image'])\r
+                               setVal('bgimage', val.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1"));\r
+                       else\r
+                               setVal('bgimage', '');\r
+\r
+                       setVal('bgcolor', styles['background-color']);\r
+\r
+                       // Reset margin form elements\r
+                       setVal('topmargin', '');\r
+                       setVal('rightmargin', '');\r
+                       setVal('bottommargin', '');\r
+                       setVal('leftmargin', '');\r
+\r
+                       // Expand margin\r
+                       if (val = styles['margin']) {\r
+                               val = val.split(' ');\r
+                               styles['margin-top'] = val[0] || '';\r
+                               styles['margin-right'] = val[1] || val[0] || '';\r
+                               styles['margin-bottom'] = val[2] || val[0] || '';\r
+                               styles['margin-left'] = val[3] || val[0] || '';\r
+                       }\r
+\r
+                       if (val = styles['margin-top'])\r
+                               setVal('topmargin', val.replace(/px/, ''));\r
+\r
+                       if (val = styles['margin-right'])\r
+                               setVal('rightmargin', val.replace(/px/, ''));\r
+\r
+                       if (val = styles['margin-bottom'])\r
+                               setVal('bottommargin', val.replace(/px/, ''));\r
+\r
+                       if (val = styles['margin-left'])\r
+                               setVal('leftmargin', val.replace(/px/, ''));\r
+\r
+                       updateColor('bgcolor_pick', 'bgcolor');\r
+                       updateColor('textcolor_pick', 'textcolor');\r
+               },\r
+\r
+               changedStyleProp : function() {\r
+                       var val, dom = tinyMCEPopup.editor.dom, styles = dom.parseStyle(getVal('style'));\r
+       \r
+                       styles['font-face'] = getVal('fontface');\r
+                       styles['font-size'] = getVal('fontsize');\r
+                       styles['color'] = getVal('textcolor');\r
+                       styles['background-color'] = getVal('bgcolor');\r
+\r
+                       if (val = getVal('bgimage'))\r
+                               styles['background-image'] = "url('" + val + "')";\r
+                       else\r
+                               styles['background-image'] = '';\r
+\r
+                       delete styles['margin'];\r
+\r
+                       if (val = getVal('topmargin'))\r
+                               styles['margin-top'] = val + "px";\r
+                       else\r
+                               styles['margin-top'] = '';\r
+\r
+                       if (val = getVal('rightmargin'))\r
+                               styles['margin-right'] = val + "px";\r
+                       else\r
+                               styles['margin-right'] = '';\r
+\r
+                       if (val = getVal('bottommargin'))\r
+                               styles['margin-bottom'] = val + "px";\r
+                       else\r
+                               styles['margin-bottom'] = '';\r
+\r
+                       if (val = getVal('leftmargin'))\r
+                               styles['margin-left'] = val + "px";\r
+                       else\r
+                               styles['margin-left'] = '';\r
+\r
+                       // Serialize, parse and reserialize this will compress redundant styles\r
+                       setVal('style', dom.serializeStyle(dom.parseStyle(dom.serializeStyle(styles))));\r
+                       this.changedStyle();\r
+               },\r
+               \r
+               update : function() {\r
+                       var data = {};\r
+\r
+                       tinymce.each(tinyMCEPopup.dom.select('select,input,textarea'), function(node) {\r
+                               data[node.id] = getVal(node.id);\r
+                       });\r
+\r
+                       tinyMCEPopup.editor.plugins.fullpage._dataToHtml(data);\r
+                       tinyMCEPopup.close();\r
+               }\r
+       };\r
+       \r
+       function init() {\r
+               var form = document.forms[0], i, item, list, editor = tinyMCEPopup.editor;\r
+\r
+               // Setup doctype select box\r
+               list = editor.getParam("fullpage_doctypes", defaultDocTypes).split(',');\r
+               for (i = 0; i < list.length; i++) {\r
+                       item = list[i].split('=');\r
+\r
+                       if (item.length > 1)\r
+                               addSelectValue(form, 'doctype', item[0], item[1]);\r
+               }\r
+\r
+               // Setup fonts select box\r
+               list = editor.getParam("fullpage_fonts", defaultFontNames).split(';');\r
+               for (i = 0; i < list.length; i++) {\r
+                       item = list[i].split('=');\r
+\r
+                       if (item.length > 1)\r
+                               addSelectValue(form, 'fontface', item[0], item[1]);\r
+               }\r
+\r
+               // Setup fontsize select box\r
+               list = editor.getParam("fullpage_fontsizes", defaultFontSizes).split(',');\r
+               for (i = 0; i < list.length; i++)\r
+                       addSelectValue(form, 'fontsize', list[i], list[i]);\r
+\r
+               // Setup encodings select box\r
+               list = editor.getParam("fullpage_encodings", defaultEncodings).split(',');\r
+               for (i = 0; i < list.length; i++) {\r
+                       item = list[i].split('=');\r
+\r
+                       if (item.length > 1)\r
+                               addSelectValue(form, 'docencoding', item[0], item[1]);\r
+               }\r
+\r
+               // Setup color pickers\r
+               document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');\r
+               document.getElementById('link_color_pickcontainer').innerHTML = getColorPickerHTML('link_color_pick','link_color');\r
+               document.getElementById('visited_color_pickcontainer').innerHTML = getColorPickerHTML('visited_color_pick','visited_color');\r
+               document.getElementById('active_color_pickcontainer').innerHTML = getColorPickerHTML('active_color_pick','active_color');\r
+               document.getElementById('textcolor_pickcontainer').innerHTML = getColorPickerHTML('textcolor_pick','textcolor');\r
+               document.getElementById('stylesheet_browsercontainer').innerHTML = getBrowserHTML('stylesheetbrowser','stylesheet','file','fullpage');\r
+               document.getElementById('bgimage_pickcontainer').innerHTML = getBrowserHTML('bgimage_browser','bgimage','image','fullpage');\r
+\r
+               // Resize some elements\r
+               if (isVisible('stylesheetbrowser'))\r
+                       document.getElementById('stylesheet').style.width = '220px';\r
+\r
+               if (isVisible('link_href_browser'))\r
+                       document.getElementById('element_link_href').style.width = '230px';\r
+\r
+               if (isVisible('bgimage_browser'))\r
+                       document.getElementById('bgimage').style.width = '210px';\r
+\r
+               // Update form\r
+               tinymce.each(tinyMCEPopup.getWindowArg('data'), function(value, key) {\r
+                       setVal(key, value);\r
+               });\r
+\r
+               FullPageDialog.changedStyle();\r
+\r
+               // Update colors\r
+               updateColor('textcolor_pick', 'textcolor');\r
+               updateColor('bgcolor_pick', 'bgcolor');\r
+               updateColor('visited_color_pick', 'visited_color');\r
+               updateColor('active_color_pick', 'active_color');\r
+               updateColor('link_color_pick', 'link_color');\r
+       };\r
+\r
+       tinyMCEPopup.onInit.add(init);\r
+})();\r
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/ar_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/ar_dlg.js
new file mode 100644 (file)
index 0000000..634642b
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..2d09ff3
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..2076714
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..833c995
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..e271584
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..85d8502
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..a8f72d0
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..7b9d580
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..d1cf795
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..79fd658
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..ecdff9e
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..457946d
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..516edc7
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..bd11ff3
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..94e52a7
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..f55f776
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..4ca2fd9
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..f826495
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..3f1fb39
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..c2ddc65
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..d497cfc
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..69faae3
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..aea6db5
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..8c8f40c
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..b206705
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..3e5bda3
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..051788f
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..73f4cf7
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..d5445e8
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..6564363
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..0bf6789
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..b3d6298
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..de70876
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..c3c5781
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..e70b7ca
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..8375148
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..3c4b269
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..9124146
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..433cfab
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..b940052
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..d62c509
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..749f868
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..db0a58b
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..1ae10de
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..3cfc4f1
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..4c7a853
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..bb71c20
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..dfa9b43
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..f1fbb0d
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..c141b23
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..6a38095
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..2200f9a
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..8f2a44b
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..f1e6a7f
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..3222b67
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..de0a74a
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..5a9b054
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..a2eb034
--- /dev/null
@@ -0,0 +1 @@
+(function(){var a=tinymce.DOM;tinymce.create("tinymce.plugins.FullScreenPlugin",{init:function(d,e){var f=this,g={},c,b;f.editor=d;d.addCommand("mceFullScreen",function(){var i,j=a.doc.documentElement;if(d.getParam("fullscreen_is_enabled")){if(d.getParam("fullscreen_new_window")){closeFullscreen()}else{a.win.setTimeout(function(){tinymce.dom.Event.remove(a.win,"resize",f.resizeFunc);tinyMCE.get(d.getParam("fullscreen_editor_id")).setContent(d.getContent());tinyMCE.remove(d);a.remove("mce_fullscreen_container");j.style.overflow=d.getParam("fullscreen_html_overflow");a.setStyle(a.doc.body,"overflow",d.getParam("fullscreen_overflow"));a.win.scrollTo(d.getParam("fullscreen_scrollx"),d.getParam("fullscreen_scrolly"));tinyMCE.settings=tinyMCE.oldSettings},10)}return}if(d.getParam("fullscreen_new_window")){i=a.win.open(e+"/fullscreen.htm","mceFullScreenPopup","fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width="+screen.availWidth+",height="+screen.availHeight);try{i.resizeTo(screen.availWidth,screen.availHeight)}catch(h){}}else{tinyMCE.oldSettings=tinyMCE.settings;g.fullscreen_overflow=a.getStyle(a.doc.body,"overflow",1)||"auto";g.fullscreen_html_overflow=a.getStyle(j,"overflow",1);c=a.getViewPort();g.fullscreen_scrollx=c.x;g.fullscreen_scrolly=c.y;if(tinymce.isOpera&&g.fullscreen_overflow=="visible"){g.fullscreen_overflow="auto"}if(tinymce.isIE&&g.fullscreen_overflow=="scroll"){g.fullscreen_overflow="auto"}if(tinymce.isIE&&(g.fullscreen_html_overflow=="visible"||g.fullscreen_html_overflow=="scroll")){g.fullscreen_html_overflow="auto"}if(g.fullscreen_overflow=="0px"){g.fullscreen_overflow=""}a.setStyle(a.doc.body,"overflow","hidden");j.style.overflow="hidden";c=a.getViewPort();a.win.scrollTo(0,0);if(tinymce.isIE){c.h-=1}if(tinymce.isIE6||document.compatMode=="BackCompat"){b="absolute;top:"+c.y}else{b="fixed;top:0"}n=a.add(a.doc.body,"div",{id:"mce_fullscreen_container",style:"position:"+b+";left:0;width:"+c.w+"px;height:"+c.h+"px;z-index:200000;"});a.add(n,"div",{id:"mce_fullscreen"});tinymce.each(d.settings,function(k,l){g[l]=k});g.id="mce_fullscreen";g.width=n.clientWidth;g.height=n.clientHeight-15;g.fullscreen_is_enabled=true;g.fullscreen_editor_id=d.id;g.theme_advanced_resizing=false;g.save_onsavecallback=function(){d.setContent(tinyMCE.get(g.id).getContent());d.execCommand("mceSave")};tinymce.each(d.getParam("fullscreen_settings"),function(m,l){g[l]=m});if(g.theme_advanced_toolbar_location==="external"){g.theme_advanced_toolbar_location="top"}f.fullscreenEditor=new tinymce.Editor("mce_fullscreen",g);f.fullscreenEditor.onInit.add(function(){f.fullscreenEditor.setContent(d.getContent());f.fullscreenEditor.focus()});f.fullscreenEditor.render();f.fullscreenElement=new tinymce.dom.Element("mce_fullscreen_container");f.fullscreenElement.update();f.resizeFunc=tinymce.dom.Event.add(a.win,"resize",function(){var o=tinymce.DOM.getViewPort(),l=f.fullscreenEditor,k,m;k=l.dom.getSize(l.getContainer().getElementsByTagName("table")[0]);m=l.dom.getSize(l.getContainer().getElementsByTagName("iframe")[0]);l.theme.resizeTo(o.w-k.w+m.w,o.h-k.h+m.h)})}});d.addButton("fullscreen",{title:"fullscreen.desc",cmd:"mceFullScreen"});d.onNodeChange.add(function(i,h){h.setActive("fullscreen",i.getParam("fullscreen_is_enabled"))})},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
new file mode 100644 (file)
index 0000000..524b487
--- /dev/null
@@ -0,0 +1,159 @@
+/**\r
+ * editor_plugin_src.js\r
+ *\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ */\r
+\r
+(function() {\r
+       var DOM = tinymce.DOM;\r
+\r
+       tinymce.create('tinymce.plugins.FullScreenPlugin', {\r
+               init : function(ed, url) {\r
+                       var t = this, s = {}, vp, posCss;\r
+\r
+                       t.editor = ed;\r
+\r
+                       // Register commands\r
+                       ed.addCommand('mceFullScreen', function() {\r
+                               var win, de = DOM.doc.documentElement;\r
+\r
+                               if (ed.getParam('fullscreen_is_enabled')) {\r
+                                       if (ed.getParam('fullscreen_new_window'))\r
+                                               closeFullscreen(); // Call to close in new window\r
+                                       else {\r
+                                               DOM.win.setTimeout(function() {\r
+                                                       tinymce.dom.Event.remove(DOM.win, 'resize', t.resizeFunc);\r
+                                                       tinyMCE.get(ed.getParam('fullscreen_editor_id')).setContent(ed.getContent());\r
+                                                       tinyMCE.remove(ed);\r
+                                                       DOM.remove('mce_fullscreen_container');\r
+                                                       de.style.overflow = ed.getParam('fullscreen_html_overflow');\r
+                                                       DOM.setStyle(DOM.doc.body, 'overflow', ed.getParam('fullscreen_overflow'));\r
+                                                       DOM.win.scrollTo(ed.getParam('fullscreen_scrollx'), ed.getParam('fullscreen_scrolly'));\r
+                                                       tinyMCE.settings = tinyMCE.oldSettings; // Restore old settings\r
+                                               }, 10);\r
+                                       }\r
+\r
+                                       return;\r
+                               }\r
+\r
+                               if (ed.getParam('fullscreen_new_window')) {\r
+                                       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);\r
+                                       try {\r
+                                               win.resizeTo(screen.availWidth, screen.availHeight);\r
+                                       } catch (e) {\r
+                                               // Ignore\r
+                                       }\r
+                               } else {\r
+                                       tinyMCE.oldSettings = tinyMCE.settings; // Store old settings\r
+                                       s.fullscreen_overflow = DOM.getStyle(DOM.doc.body, 'overflow', 1) || 'auto';\r
+                                       s.fullscreen_html_overflow = DOM.getStyle(de, 'overflow', 1);\r
+                                       vp = DOM.getViewPort();\r
+                                       s.fullscreen_scrollx = vp.x;\r
+                                       s.fullscreen_scrolly = vp.y;\r
+\r
+                                       // Fixes an Opera bug where the scrollbars doesn't reappear\r
+                                       if (tinymce.isOpera && s.fullscreen_overflow == 'visible')\r
+                                               s.fullscreen_overflow = 'auto';\r
+\r
+                                       // Fixes an IE bug where horizontal scrollbars would appear\r
+                                       if (tinymce.isIE && s.fullscreen_overflow == 'scroll')\r
+                                               s.fullscreen_overflow = 'auto';\r
+\r
+                                       // Fixes an IE bug where the scrollbars doesn't reappear\r
+                                       if (tinymce.isIE && (s.fullscreen_html_overflow == 'visible' || s.fullscreen_html_overflow == 'scroll'))\r
+                                               s.fullscreen_html_overflow = 'auto';\r
+\r
+                                       if (s.fullscreen_overflow == '0px')\r
+                                               s.fullscreen_overflow = '';\r
+\r
+                                       DOM.setStyle(DOM.doc.body, 'overflow', 'hidden');\r
+                                       de.style.overflow = 'hidden'; //Fix for IE6/7\r
+                                       vp = DOM.getViewPort();\r
+                                       DOM.win.scrollTo(0, 0);\r
+\r
+                                       if (tinymce.isIE)\r
+                                               vp.h -= 1;\r
+\r
+                                       // Use fixed position if it exists\r
+                                       if (tinymce.isIE6 || document.compatMode == 'BackCompat')\r
+                                               posCss = 'absolute;top:' + vp.y;\r
+                                       else\r
+                                               posCss = 'fixed;top:0';\r
+\r
+                                       n = DOM.add(DOM.doc.body, 'div', {\r
+                                               id : 'mce_fullscreen_container',\r
+                                               style : 'position:' + posCss + ';left:0;width:' + vp.w + 'px;height:' + vp.h + 'px;z-index:200000;'});\r
+                                       DOM.add(n, 'div', {id : 'mce_fullscreen'});\r
+\r
+                                       tinymce.each(ed.settings, function(v, n) {\r
+                                               s[n] = v;\r
+                                       });\r
+\r
+                                       s.id = 'mce_fullscreen';\r
+                                       s.width = n.clientWidth;\r
+                                       s.height = n.clientHeight - 15;\r
+                                       s.fullscreen_is_enabled = true;\r
+                                       s.fullscreen_editor_id = ed.id;\r
+                                       s.theme_advanced_resizing = false;\r
+                                       s.save_onsavecallback = function() {\r
+                                               ed.setContent(tinyMCE.get(s.id).getContent());\r
+                                               ed.execCommand('mceSave');\r
+                                       };\r
+\r
+                                       tinymce.each(ed.getParam('fullscreen_settings'), function(v, k) {\r
+                                               s[k] = v;\r
+                                       });\r
+\r
+                                       if (s.theme_advanced_toolbar_location === 'external')\r
+                                               s.theme_advanced_toolbar_location = 'top';\r
+\r
+                                       t.fullscreenEditor = new tinymce.Editor('mce_fullscreen', s);\r
+                                       t.fullscreenEditor.onInit.add(function() {\r
+                                               t.fullscreenEditor.setContent(ed.getContent());\r
+                                               t.fullscreenEditor.focus();\r
+                                       });\r
+\r
+                                       t.fullscreenEditor.render();\r
+\r
+                                       t.fullscreenElement = new tinymce.dom.Element('mce_fullscreen_container');\r
+                                       t.fullscreenElement.update();\r
+                                       //document.body.overflow = 'hidden';\r
+\r
+                                       t.resizeFunc = tinymce.dom.Event.add(DOM.win, 'resize', function() {\r
+                                               var vp = tinymce.DOM.getViewPort(), fed = t.fullscreenEditor, outerSize, innerSize;\r
+\r
+                                               // Get outer/inner size to get a delta size that can be used to calc the new iframe size\r
+                                               outerSize = fed.dom.getSize(fed.getContainer().getElementsByTagName('table')[0]);\r
+                                               innerSize = fed.dom.getSize(fed.getContainer().getElementsByTagName('iframe')[0]);\r
+\r
+                                               fed.theme.resizeTo(vp.w - outerSize.w + innerSize.w, vp.h - outerSize.h + innerSize.h);\r
+                                       });\r
+                               }\r
+                       });\r
+\r
+                       // Register buttons\r
+                       ed.addButton('fullscreen', {title : 'fullscreen.desc', cmd : 'mceFullScreen'});\r
+\r
+                       ed.onNodeChange.add(function(ed, cm) {\r
+                               cm.setActive('fullscreen', ed.getParam('fullscreen_is_enabled'));\r
+                       });\r
+               },\r
+\r
+               getInfo : function() {\r
+                       return {\r
+                               longname : 'Fullscreen',\r
+                               author : 'Moxiecode Systems AB',\r
+                               authorurl : 'http://tinymce.moxiecode.com',\r
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen',\r
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+                       };\r
+               }\r
+       });\r
+\r
+       // Register plugin\r
+       tinymce.PluginManager.add('fullscreen', tinymce.plugins.FullScreenPlugin);\r
+})();\r
diff --git a/program/js/tiny_mce/plugins/fullscreen/fullscreen.htm b/program/js/tiny_mce/plugins/fullscreen/fullscreen.htm
new file mode 100644 (file)
index 0000000..ffe528e
--- /dev/null
@@ -0,0 +1,110 @@
+<!DOCTYPE html>\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+       <title></title>\r
+       <meta http-equiv="X-UA-Compatible" content="IE=edge" />\r
+       <script type="text/javascript" src="../../tiny_mce.js"></script>\r
+       <script type="text/javascript">\r
+               function patchCallback(settings, key) {\r
+                       if (settings[key])\r
+                               settings[key] = "window.opener." + settings[key];\r
+               }\r
+\r
+               var settings = {}, paSe = window.opener.tinyMCE.activeEditor.settings, oeID = window.opener.tinyMCE.activeEditor.id;\r
+\r
+               // Clone array\r
+               for (var n in paSe)\r
+                       settings[n] = paSe[n];\r
+\r
+               // Override options for fullscreen\r
+               for (var n in paSe.fullscreen_settings)\r
+                       settings[n] = paSe.fullscreen_settings[n];\r
+\r
+               // Patch callbacks, make them point to window.opener\r
+               patchCallback(settings, 'urlconverter_callback');\r
+               patchCallback(settings, 'insertlink_callback');\r
+               patchCallback(settings, 'insertimage_callback');\r
+               patchCallback(settings, 'setupcontent_callback');\r
+               patchCallback(settings, 'save_callback');\r
+               patchCallback(settings, 'onchange_callback');\r
+               patchCallback(settings, 'init_instance_callback');\r
+               patchCallback(settings, 'file_browser_callback');\r
+               patchCallback(settings, 'cleanup_callback');\r
+               patchCallback(settings, 'execcommand_callback');\r
+               patchCallback(settings, 'oninit');\r
+\r
+               // Set options\r
+               delete settings.id;\r
+               settings['mode'] = 'exact';\r
+               settings['elements'] = 'fullscreenarea';\r
+               settings['add_unload_trigger'] = false;\r
+               settings['ask'] = false;\r
+               settings['document_base_url'] = window.opener.tinyMCE.activeEditor.documentBaseURI.getURI();\r
+               settings['fullscreen_is_enabled'] = true;\r
+               settings['fullscreen_editor_id'] = oeID;\r
+               settings['theme_advanced_resizing'] = false;\r
+               settings['strict_loading_mode'] = true;\r
+\r
+               settings.save_onsavecallback = function() {\r
+                       window.opener.tinyMCE.get(oeID).setContent(tinyMCE.get('fullscreenarea').getContent({format : 'raw'}), {format : 'raw'});\r
+                       window.opener.tinyMCE.get(oeID).execCommand('mceSave');\r
+                       window.close();\r
+               };\r
+\r
+               function unloadHandler(e) {\r
+                       moveContent();\r
+               }\r
+\r
+               function moveContent() {\r
+                       window.opener.tinyMCE.get(oeID).setContent(tinyMCE.activeEditor.getContent());\r
+               }\r
+\r
+               function closeFullscreen() {\r
+                       moveContent();\r
+                       window.close();\r
+               }\r
+\r
+               function doParentSubmit() {\r
+                       moveContent();\r
+\r
+                       if (window.opener.tinyMCE.selectedInstance.formElement.form)\r
+                               window.opener.tinyMCE.selectedInstance.formElement.form.submit();\r
+\r
+                       window.close();\r
+\r
+                       return false;\r
+               }\r
+\r
+               function render() {\r
+                       var e = document.getElementById('fullscreenarea'), vp, ed, ow, oh, dom = tinymce.DOM;\r
+\r
+                       e.value = window.opener.tinyMCE.get(oeID).getContent();\r
+\r
+                       vp = dom.getViewPort();\r
+                       settings.width = vp.w;\r
+                       settings.height = vp.h - 15;\r
+\r
+                       tinymce.dom.Event.add(window, 'resize', function() {\r
+                               var vp = dom.getViewPort();\r
+\r
+                               tinyMCE.activeEditor.theme.resizeTo(vp.w, vp.h);\r
+                       });\r
+\r
+                       tinyMCE.init(settings);\r
+               }\r
+\r
+               // Add onunload\r
+               tinymce.dom.Event.add(window, "beforeunload", unloadHandler);\r
+       </script>\r
+</head>\r
+<body style="margin:0;overflow:hidden;width:100%;height:100%" scrolling="no" scroll="no">\r
+<form onsubmit="doParentSubmit();">\r
+<textarea id="fullscreenarea" style="width:100%; height:100%"></textarea>\r
+</form>\r
+\r
+<script type="text/javascript">\r
+       render();\r
+</script>\r
+\r
+</body>\r
+</html>\r
diff --git a/program/js/tiny_mce/plugins/iespell/editor_plugin.js b/program/js/tiny_mce/plugins/iespell/editor_plugin.js
new file mode 100644 (file)
index 0000000..e9cba10
--- /dev/null
@@ -0,0 +1 @@
+(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
new file mode 100644 (file)
index 0000000..1b2bb98
--- /dev/null
@@ -0,0 +1,54 @@
+/**\r
+ * editor_plugin_src.js\r
+ *\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ */\r
+\r
+(function() {\r
+       tinymce.create('tinymce.plugins.IESpell', {\r
+               init : function(ed, url) {\r
+                       var t = this, sp;\r
+\r
+                       if (!tinymce.isIE)\r
+                               return;\r
+\r
+                       t.editor = ed;\r
+\r
+                       // Register commands\r
+                       ed.addCommand('mceIESpell', function() {\r
+                               try {\r
+                                       sp = new ActiveXObject("ieSpell.ieSpellExtension");\r
+                                       sp.CheckDocumentNode(ed.getDoc().documentElement);\r
+                               } catch (e) {\r
+                                       if (e.number == -2146827859) {\r
+                                               ed.windowManager.confirm(ed.getLang("iespell.download"), function(s) {\r
+                                                       if (s)\r
+                                                               window.open('http://www.iespell.com/download.php', 'ieSpellDownload', '');\r
+                                               });\r
+                                       } else\r
+                                               ed.windowManager.alert("Error Loading ieSpell: Exception " + e.number);\r
+                               }\r
+                       });\r
+\r
+                       // Register buttons\r
+                       ed.addButton('iespell', {title : 'iespell.iespell_desc', cmd : 'mceIESpell'});\r
+               },\r
+\r
+               getInfo : function() {\r
+                       return {\r
+                               longname : 'IESpell (IE Only)',\r
+                               author : 'Moxiecode Systems AB',\r
+                               authorurl : 'http://tinymce.moxiecode.com',\r
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell',\r
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+                       };\r
+               }\r
+       });\r
+\r
+       // Register plugin\r
+       tinymce.PluginManager.add('iespell', tinymce.plugins.IESpell);\r
+})();
\ 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
new file mode 100644 (file)
index 0000000..8bb96f9
--- /dev/null
@@ -0,0 +1 @@
+(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();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
new file mode 100644 (file)
index 0000000..67123ca
--- /dev/null
@@ -0,0 +1,699 @@
+/**\r
+ * editor_plugin_src.js\r
+ *\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ */\r
+\r
+(function() {\r
+       var DOM = tinymce.DOM, Element = tinymce.dom.Element, Event = tinymce.dom.Event, each = tinymce.each, is = tinymce.is;\r
+\r
+       tinymce.create('tinymce.plugins.InlinePopups', {\r
+               init : function(ed, url) {\r
+                       // Replace window manager\r
+                       ed.onBeforeRenderUI.add(function() {\r
+                               ed.windowManager = new tinymce.InlineWindowManager(ed);\r
+                               DOM.loadCSS(url + '/skins/' + (ed.settings.inlinepopups_skin || 'clearlooks2') + "/window.css");\r
+                       });\r
+               },\r
+\r
+               getInfo : function() {\r
+                       return {\r
+                               longname : 'InlinePopups',\r
+                               author : 'Moxiecode Systems AB',\r
+                               authorurl : 'http://tinymce.moxiecode.com',\r
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups',\r
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+                       };\r
+               }\r
+       });\r
+\r
+       tinymce.create('tinymce.InlineWindowManager:tinymce.WindowManager', {\r
+               InlineWindowManager : function(ed) {\r
+                       var t = this;\r
+\r
+                       t.parent(ed);\r
+                       t.zIndex = 300000;\r
+                       t.count = 0;\r
+                       t.windows = {};\r
+               },\r
+\r
+               open : function(f, p) {\r
+                       var t = this, id, opt = '', ed = t.editor, dw = 0, dh = 0, vp, po, mdf, clf, we, w, u, parentWindow;\r
+\r
+                       f = f || {};\r
+                       p = p || {};\r
+\r
+                       // Run native windows\r
+                       if (!f.inline)\r
+                               return t.parent(f, p);\r
+\r
+                       parentWindow = t._frontWindow();\r
+                       if (parentWindow && DOM.get(parentWindow.id + '_ifr')) {\r
+                               parentWindow.focussedElement = DOM.get(parentWindow.id + '_ifr').contentWindow.document.activeElement;\r
+                       }\r
+                       \r
+                       // Only store selection if the type is a normal window\r
+                       if (!f.type)\r
+                               t.bookmark = ed.selection.getBookmark(1);\r
+\r
+                       id = DOM.uniqueId();\r
+                       vp = DOM.getViewPort();\r
+                       f.width = parseInt(f.width || 320);\r
+                       f.height = parseInt(f.height || 240) + (tinymce.isIE ? 8 : 0);\r
+                       f.min_width = parseInt(f.min_width || 150);\r
+                       f.min_height = parseInt(f.min_height || 100);\r
+                       f.max_width = parseInt(f.max_width || 2000);\r
+                       f.max_height = parseInt(f.max_height || 2000);\r
+                       f.left = f.left || Math.round(Math.max(vp.x, vp.x + (vp.w / 2.0) - (f.width / 2.0)));\r
+                       f.top = f.top || Math.round(Math.max(vp.y, vp.y + (vp.h / 2.0) - (f.height / 2.0)));\r
+                       f.movable = f.resizable = true;\r
+                       p.mce_width = f.width;\r
+                       p.mce_height = f.height;\r
+                       p.mce_inline = true;\r
+                       p.mce_window_id = id;\r
+                       p.mce_auto_focus = f.auto_focus;\r
+\r
+                       // Transpose\r
+//                     po = DOM.getPos(ed.getContainer());\r
+//                     f.left -= po.x;\r
+//                     f.top -= po.y;\r
+\r
+                       t.features = f;\r
+                       t.params = p;\r
+                       t.onOpen.dispatch(t, f, p);\r
+\r
+                       if (f.type) {\r
+                               opt += ' mceModal';\r
+\r
+                               if (f.type)\r
+                                       opt += ' mce' + f.type.substring(0, 1).toUpperCase() + f.type.substring(1);\r
+\r
+                               f.resizable = false;\r
+                       }\r
+\r
+                       if (f.statusbar)\r
+                               opt += ' mceStatusbar';\r
+\r
+                       if (f.resizable)\r
+                               opt += ' mceResizable';\r
+\r
+                       if (f.minimizable)\r
+                               opt += ' mceMinimizable';\r
+\r
+                       if (f.maximizable)\r
+                               opt += ' mceMaximizable';\r
+\r
+                       if (f.movable)\r
+                               opt += ' mceMovable';\r
+\r
+                       // Create DOM objects\r
+                       t._addAll(DOM.doc.body, \r
+                               ['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'}, \r
+                                       ['div', {id : id + '_wrapper', 'class' : 'mceWrapper' + opt},\r
+                                               ['div', {id : id + '_top', 'class' : 'mceTop'}, \r
+                                                       ['div', {'class' : 'mceLeft'}],\r
+                                                       ['div', {'class' : 'mceCenter'}],\r
+                                                       ['div', {'class' : 'mceRight'}],\r
+                                                       ['span', {id : id + '_title'}, f.title || '']\r
+                                               ],\r
+\r
+                                               ['div', {id : id + '_middle', 'class' : 'mceMiddle'}, \r
+                                                       ['div', {id : id + '_left', 'class' : 'mceLeft', tabindex : '0'}],\r
+                                                       ['span', {id : id + '_content'}],\r
+                                                       ['div', {id : id + '_right', 'class' : 'mceRight', tabindex : '0'}]\r
+                                               ],\r
+\r
+                                               ['div', {id : id + '_bottom', 'class' : 'mceBottom'},\r
+                                                       ['div', {'class' : 'mceLeft'}],\r
+                                                       ['div', {'class' : 'mceCenter'}],\r
+                                                       ['div', {'class' : 'mceRight'}],\r
+                                                       ['span', {id : id + '_status'}, 'Content']\r
+                                               ],\r
+\r
+                                               ['a', {'class' : 'mceMove', tabindex : '-1', href : 'javascript:;'}],\r
+                                               ['a', {'class' : 'mceMin', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],\r
+                                               ['a', {'class' : 'mceMax', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],\r
+                                               ['a', {'class' : 'mceMed', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],\r
+                                               ['a', {'class' : 'mceClose', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],\r
+                                               ['a', {id : id + '_resize_n', 'class' : 'mceResize mceResizeN', tabindex : '-1', href : 'javascript:;'}],\r
+                                               ['a', {id : id + '_resize_s', 'class' : 'mceResize mceResizeS', tabindex : '-1', href : 'javascript:;'}],\r
+                                               ['a', {id : id + '_resize_w', 'class' : 'mceResize mceResizeW', tabindex : '-1', href : 'javascript:;'}],\r
+                                               ['a', {id : id + '_resize_e', 'class' : 'mceResize mceResizeE', tabindex : '-1', href : 'javascript:;'}],\r
+                                               ['a', {id : id + '_resize_nw', 'class' : 'mceResize mceResizeNW', tabindex : '-1', href : 'javascript:;'}],\r
+                                               ['a', {id : id + '_resize_ne', 'class' : 'mceResize mceResizeNE', tabindex : '-1', href : 'javascript:;'}],\r
+                                               ['a', {id : id + '_resize_sw', 'class' : 'mceResize mceResizeSW', tabindex : '-1', href : 'javascript:;'}],\r
+                                               ['a', {id : id + '_resize_se', 'class' : 'mceResize mceResizeSE', tabindex : '-1', href : 'javascript:;'}]\r
+                                       ]\r
+                               ]\r
+                       );\r
+\r
+                       DOM.setStyles(id, {top : -10000, left : -10000});\r
+\r
+                       // Fix gecko rendering bug, where the editors iframe messed with window contents\r
+                       if (tinymce.isGecko)\r
+                               DOM.setStyle(id, 'overflow', 'auto');\r
+\r
+                       // Measure borders\r
+                       if (!f.type) {\r
+                               dw += DOM.get(id + '_left').clientWidth;\r
+                               dw += DOM.get(id + '_right').clientWidth;\r
+                               dh += DOM.get(id + '_top').clientHeight;\r
+                               dh += DOM.get(id + '_bottom').clientHeight;\r
+                       }\r
+\r
+                       // Resize window\r
+                       DOM.setStyles(id, {top : f.top, left : f.left, width : f.width + dw, height : f.height + dh});\r
+\r
+                       u = f.url || f.file;\r
+                       if (u) {\r
+                               if (tinymce.relaxedDomain)\r
+                                       u += (u.indexOf('?') == -1 ? '?' : '&') + 'mce_rdomain=' + tinymce.relaxedDomain;\r
+\r
+                               u = tinymce._addVer(u);\r
+                       }\r
+\r
+                       if (!f.type) {\r
+                               DOM.add(id + '_content', 'iframe', {id : id + '_ifr', src : 'javascript:""', frameBorder : 0, style : 'border:0;width:10px;height:10px'});\r
+                               DOM.setStyles(id + '_ifr', {width : f.width, height : f.height});\r
+                               DOM.setAttrib(id + '_ifr', 'src', u);\r
+                       } else {\r
+                               DOM.add(id + '_wrapper', 'a', {id : id + '_ok', 'class' : 'mceButton mceOk', href : 'javascript:;', onmousedown : 'return false;'}, 'Ok');\r
+\r
+                               if (f.type == 'confirm')\r
+                                       DOM.add(id + '_wrapper', 'a', {'class' : 'mceButton mceCancel', href : 'javascript:;', onmousedown : 'return false;'}, 'Cancel');\r
+\r
+                               DOM.add(id + '_middle', 'div', {'class' : 'mceIcon'});\r
+                               DOM.setHTML(id + '_content', f.content.replace('\n', '<br />'));\r
+                               \r
+                               Event.add(id, 'keyup', function(evt) {\r
+                                       var VK_ESCAPE = 27;\r
+                                       if (evt.keyCode === VK_ESCAPE) {\r
+                                               f.button_func(false);\r
+                                               return Event.cancel(evt);\r
+                                       }\r
+                               });\r
+\r
+                               Event.add(id, 'keydown', function(evt) {\r
+                                       var cancelButton, VK_TAB = 9;\r
+                                       if (evt.keyCode === VK_TAB) {\r
+                                               cancelButton = DOM.select('a.mceCancel', id + '_wrapper')[0];\r
+                                               if (cancelButton && cancelButton !== evt.target) {\r
+                                                       cancelButton.focus();\r
+                                               } else {\r
+                                                       DOM.get(id + '_ok').focus();\r
+                                               }\r
+                                               return Event.cancel(evt);\r
+                                       }\r
+                               });\r
+                       }\r
+\r
+                       // Register events\r
+                       mdf = Event.add(id, 'mousedown', function(e) {\r
+                               var n = e.target, w, vp;\r
+\r
+                               w = t.windows[id];\r
+                               t.focus(id);\r
+\r
+                               if (n.nodeName == 'A' || n.nodeName == 'a') {\r
+                                       if (n.className == 'mceClose') {\r
+                                               t.close(null, id);\r
+                                               return Event.cancel(e);\r
+                                       } else if (n.className == 'mceMax') {\r
+                                               w.oldPos = w.element.getXY();\r
+                                               w.oldSize = w.element.getSize();\r
+\r
+                                               vp = DOM.getViewPort();\r
+\r
+                                               // Reduce viewport size to avoid scrollbars\r
+                                               vp.w -= 2;\r
+                                               vp.h -= 2;\r
+\r
+                                               w.element.moveTo(vp.x, vp.y);\r
+                                               w.element.resizeTo(vp.w, vp.h);\r
+                                               DOM.setStyles(id + '_ifr', {width : vp.w - w.deltaWidth, height : vp.h - w.deltaHeight});\r
+                                               DOM.addClass(id + '_wrapper', 'mceMaximized');\r
+                                       } else if (n.className == 'mceMed') {\r
+                                               // Reset to old size\r
+                                               w.element.moveTo(w.oldPos.x, w.oldPos.y);\r
+                                               w.element.resizeTo(w.oldSize.w, w.oldSize.h);\r
+                                               w.iframeElement.resizeTo(w.oldSize.w - w.deltaWidth, w.oldSize.h - w.deltaHeight);\r
+\r
+                                               DOM.removeClass(id + '_wrapper', 'mceMaximized');\r
+                                       } else if (n.className == 'mceMove')\r
+                                               return t._startDrag(id, e, n.className);\r
+                                       else if (DOM.hasClass(n, 'mceResize'))\r
+                                               return t._startDrag(id, e, n.className.substring(13));\r
+                               }\r
+                       });\r
+\r
+                       clf = Event.add(id, 'click', function(e) {\r
+                               var n = e.target;\r
+\r
+                               t.focus(id);\r
+\r
+                               if (n.nodeName == 'A' || n.nodeName == 'a') {\r
+                                       switch (n.className) {\r
+                                               case 'mceClose':\r
+                                                       t.close(null, id);\r
+                                                       return Event.cancel(e);\r
+\r
+                                               case 'mceButton mceOk':\r
+                                               case 'mceButton mceCancel':\r
+                                                       f.button_func(n.className == 'mceButton mceOk');\r
+                                                       return Event.cancel(e);\r
+                                       }\r
+                               }\r
+                       });\r
+                       \r
+                       // Make sure the tab order loops within the dialog.\r
+                       Event.add([id + '_left', id + '_right'], 'focus', function(evt) {\r
+                               var iframe = DOM.get(id + '_ifr');\r
+                               if (iframe) {\r
+                                       var body = iframe.contentWindow.document.body;\r
+                                       var focusable = DOM.select(':input:enabled,*[tabindex=0]', body);\r
+                                       if (evt.target.id === (id + '_left')) {\r
+                                               focusable[focusable.length - 1].focus();\r
+                                       } else {\r
+                                               focusable[0].focus();\r
+                                       }\r
+                               } else {\r
+                                       DOM.get(id + '_ok').focus();\r
+                               }\r
+                       });\r
+                       \r
+                       // Add window\r
+                       w = t.windows[id] = {\r
+                               id : id,\r
+                               mousedown_func : mdf,\r
+                               click_func : clf,\r
+                               element : new Element(id, {blocker : 1, container : ed.getContainer()}),\r
+                               iframeElement : new Element(id + '_ifr'),\r
+                               features : f,\r
+                               deltaWidth : dw,\r
+                               deltaHeight : dh\r
+                       };\r
+\r
+                       w.iframeElement.on('focus', function() {\r
+                               t.focus(id);\r
+                       });\r
+\r
+                       // Setup blocker\r
+                       if (t.count == 0 && t.editor.getParam('dialog_type', 'modal') == 'modal') {\r
+                               DOM.add(DOM.doc.body, 'div', {\r
+                                       id : 'mceModalBlocker',\r
+                                       'class' : (t.editor.settings.inlinepopups_skin || 'clearlooks2') + '_modalBlocker',\r
+                                       style : {zIndex : t.zIndex - 1}\r
+                               });\r
+\r
+                               DOM.show('mceModalBlocker'); // Reduces flicker in IE\r
+                               DOM.setAttrib(DOM.doc.body, 'aria-hidden', 'true');\r
+                       } else\r
+                               DOM.setStyle('mceModalBlocker', 'z-index', t.zIndex - 1);\r
+\r
+                       if (tinymce.isIE6 || /Firefox\/2\./.test(navigator.userAgent) || (tinymce.isIE && !DOM.boxModel))\r
+                               DOM.setStyles('mceModalBlocker', {position : 'absolute', left : vp.x, top : vp.y, width : vp.w - 2, height : vp.h - 2});\r
+\r
+                       DOM.setAttrib(id, 'aria-hidden', 'false');\r
+                       t.focus(id);\r
+                       t._fixIELayout(id, 1);\r
+\r
+                       // Focus ok button\r
+                       if (DOM.get(id + '_ok'))\r
+                               DOM.get(id + '_ok').focus();\r
+                       t.count++;\r
+\r
+                       return w;\r
+               },\r
+\r
+               focus : function(id) {\r
+                       var t = this, w;\r
+\r
+                       if (w = t.windows[id]) {\r
+                               w.zIndex = this.zIndex++;\r
+                               w.element.setStyle('zIndex', w.zIndex);\r
+                               w.element.update();\r
+\r
+                               id = id + '_wrapper';\r
+                               DOM.removeClass(t.lastId, 'mceFocus');\r
+                               DOM.addClass(id, 'mceFocus');\r
+                               t.lastId = id;\r
+                               \r
+                               if (w.focussedElement) {\r
+                                       w.focussedElement.focus();\r
+                               } else if (DOM.get(id + '_ok')) {\r
+                                       DOM.get(w.id + '_ok').focus();\r
+                               } else if (DOM.get(w.id + '_ifr')) {\r
+                                       DOM.get(w.id + '_ifr').focus();\r
+                               }\r
+                       }\r
+               },\r
+\r
+               _addAll : function(te, ne) {\r
+                       var i, n, t = this, dom = tinymce.DOM;\r
+\r
+                       if (is(ne, 'string'))\r
+                               te.appendChild(dom.doc.createTextNode(ne));\r
+                       else if (ne.length) {\r
+                               te = te.appendChild(dom.create(ne[0], ne[1]));\r
+\r
+                               for (i=2; i<ne.length; i++)\r
+                                       t._addAll(te, ne[i]);\r
+                       }\r
+               },\r
+\r
+               _startDrag : function(id, se, ac) {\r
+                       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;\r
+\r
+                       // Get positons and sizes\r
+//                     cp = DOM.getPos(t.editor.getContainer());\r
+                       cp = {x : 0, y : 0};\r
+                       vp = DOM.getViewPort();\r
+\r
+                       // Reduce viewport size to avoid scrollbars while dragging\r
+                       vp.w -= 2;\r
+                       vp.h -= 2;\r
+\r
+                       sex = se.screenX;\r
+                       sey = se.screenY;\r
+                       dx = dy = dw = dh = 0;\r
+\r
+                       // Handle mouse up\r
+                       mu = Event.add(d, 'mouseup', function(e) {\r
+                               Event.remove(d, 'mouseup', mu);\r
+                               Event.remove(d, 'mousemove', mm);\r
+\r
+                               if (eb)\r
+                                       eb.remove();\r
+\r
+                               we.moveBy(dx, dy);\r
+                               we.resizeBy(dw, dh);\r
+                               sz = we.getSize();\r
+                               DOM.setStyles(id + '_ifr', {width : sz.w - w.deltaWidth, height : sz.h - w.deltaHeight});\r
+                               t._fixIELayout(id, 1);\r
+\r
+                               return Event.cancel(e);\r
+                       });\r
+\r
+                       if (ac != 'Move')\r
+                               startMove();\r
+\r
+                       function startMove() {\r
+                               if (eb)\r
+                                       return;\r
+\r
+                               t._fixIELayout(id, 0);\r
+\r
+                               // Setup event blocker\r
+                               DOM.add(d.body, 'div', {\r
+                                       id : 'mceEventBlocker',\r
+                                       'class' : 'mceEventBlocker ' + (t.editor.settings.inlinepopups_skin || 'clearlooks2'),\r
+                                       style : {zIndex : t.zIndex + 1}\r
+                               });\r
+\r
+                               if (tinymce.isIE6 || (tinymce.isIE && !DOM.boxModel))\r
+                                       DOM.setStyles('mceEventBlocker', {position : 'absolute', left : vp.x, top : vp.y, width : vp.w - 2, height : vp.h - 2});\r
+\r
+                               eb = new Element('mceEventBlocker');\r
+                               eb.update();\r
+\r
+                               // Setup placeholder\r
+                               p = we.getXY();\r
+                               sz = we.getSize();\r
+                               sx = cp.x + p.x - vp.x;\r
+                               sy = cp.y + p.y - vp.y;\r
+                               DOM.add(eb.get(), 'div', {id : 'mcePlaceHolder', 'class' : 'mcePlaceHolder', style : {left : sx, top : sy, width : sz.w, height : sz.h}});\r
+                               ph = new Element('mcePlaceHolder');\r
+                       };\r
+\r
+                       // Handle mouse move/drag\r
+                       mm = Event.add(d, 'mousemove', function(e) {\r
+                               var x, y, v;\r
+\r
+                               startMove();\r
+\r
+                               x = e.screenX - sex;\r
+                               y = e.screenY - sey;\r
+\r
+                               switch (ac) {\r
+                                       case 'ResizeW':\r
+                                               dx = x;\r
+                                               dw = 0 - x;\r
+                                               break;\r
+\r
+                                       case 'ResizeE':\r
+                                               dw = x;\r
+                                               break;\r
+\r
+                                       case 'ResizeN':\r
+                                       case 'ResizeNW':\r
+                                       case 'ResizeNE':\r
+                                               if (ac == "ResizeNW") {\r
+                                                       dx = x;\r
+                                                       dw = 0 - x;\r
+                                               } else if (ac == "ResizeNE")\r
+                                                       dw = x;\r
+\r
+                                               dy = y;\r
+                                               dh = 0 - y;\r
+                                               break;\r
+\r
+                                       case 'ResizeS':\r
+                                       case 'ResizeSW':\r
+                                       case 'ResizeSE':\r
+                                               if (ac == "ResizeSW") {\r
+                                                       dx = x;\r
+                                                       dw = 0 - x;\r
+                                               } else if (ac == "ResizeSE")\r
+                                                       dw = x;\r
+\r
+                                               dh = y;\r
+                                               break;\r
+\r
+                                       case 'mceMove':\r
+                                               dx = x;\r
+                                               dy = y;\r
+                                               break;\r
+                               }\r
+\r
+                               // Boundary check\r
+                               if (dw < (v = w.features.min_width - sz.w)) {\r
+                                       if (dx !== 0)\r
+                                               dx += dw - v;\r
+\r
+                                       dw = v;\r
+                               }\r
+       \r
+                               if (dh < (v = w.features.min_height - sz.h)) {\r
+                                       if (dy !== 0)\r
+                                               dy += dh - v;\r
+\r
+                                       dh = v;\r
+                               }\r
+\r
+                               dw = Math.min(dw, w.features.max_width - sz.w);\r
+                               dh = Math.min(dh, w.features.max_height - sz.h);\r
+                               dx = Math.max(dx, vp.x - (sx + vp.x));\r
+                               dy = Math.max(dy, vp.y - (sy + vp.y));\r
+                               dx = Math.min(dx, (vp.w + vp.x) - (sx + sz.w + vp.x));\r
+                               dy = Math.min(dy, (vp.h + vp.y) - (sy + sz.h + vp.y));\r
+\r
+                               // Move if needed\r
+                               if (dx + dy !== 0) {\r
+                                       if (sx + dx < 0)\r
+                                               dx = 0;\r
+       \r
+                                       if (sy + dy < 0)\r
+                                               dy = 0;\r
+\r
+                                       ph.moveTo(sx + dx, sy + dy);\r
+                               }\r
+\r
+                               // Resize if needed\r
+                               if (dw + dh !== 0)\r
+                                       ph.resizeTo(sz.w + dw, sz.h + dh);\r
+\r
+                               return Event.cancel(e);\r
+                       });\r
+\r
+                       return Event.cancel(se);\r
+               },\r
+\r
+               resizeBy : function(dw, dh, id) {\r
+                       var w = this.windows[id];\r
+\r
+                       if (w) {\r
+                               w.element.resizeBy(dw, dh);\r
+                               w.iframeElement.resizeBy(dw, dh);\r
+                       }\r
+               },\r
+\r
+               close : function(win, id) {\r
+                       var t = this, w, d = DOM.doc, fw, id;\r
+\r
+                       id = t._findId(id || win);\r
+\r
+                       // Probably not inline\r
+                       if (!t.windows[id]) {\r
+                               t.parent(win);\r
+                               return;\r
+                       }\r
+\r
+                       t.count--;\r
+\r
+                       if (t.count == 0) {\r
+                               DOM.remove('mceModalBlocker');\r
+                               DOM.setAttrib(DOM.doc.body, 'aria-hidden', 'false');\r
+                               t.editor.focus();\r
+                       }\r
+\r
+                       if (w = t.windows[id]) {\r
+                               t.onClose.dispatch(t);\r
+                               Event.remove(d, 'mousedown', w.mousedownFunc);\r
+                               Event.remove(d, 'click', w.clickFunc);\r
+                               Event.clear(id);\r
+                               Event.clear(id + '_ifr');\r
+\r
+                               DOM.setAttrib(id + '_ifr', 'src', 'javascript:""'); // Prevent leak\r
+                               w.element.remove();\r
+                               delete t.windows[id];\r
+\r
+                               fw = t._frontWindow();\r
+\r
+                               if (fw)\r
+                                       t.focus(fw.id);\r
+                       }\r
+               },\r
+               \r
+               // Find front most window\r
+               _frontWindow : function() {\r
+                       var fw, ix = 0;\r
+                       // Find front most window and focus that\r
+                       each (this.windows, function(w) {\r
+                               if (w.zIndex > ix) {\r
+                                       fw = w;\r
+                                       ix = w.zIndex;\r
+                               }\r
+                       });\r
+                       return fw;\r
+               },\r
+\r
+               setTitle : function(w, ti) {\r
+                       var e;\r
+\r
+                       w = this._findId(w);\r
+\r
+                       if (e = DOM.get(w + '_title'))\r
+                               e.innerHTML = DOM.encode(ti);\r
+               },\r
+\r
+               alert : function(txt, cb, s) {\r
+                       var t = this, w;\r
+\r
+                       w = t.open({\r
+                               title : t,\r
+                               type : 'alert',\r
+                               button_func : function(s) {\r
+                                       if (cb)\r
+                                               cb.call(s || t, s);\r
+\r
+                                       t.close(null, w.id);\r
+                               },\r
+                               content : DOM.encode(t.editor.getLang(txt, txt)),\r
+                               inline : 1,\r
+                               width : 400,\r
+                               height : 130\r
+                       });\r
+               },\r
+\r
+               confirm : function(txt, cb, s) {\r
+                       var t = this, w;\r
+\r
+                       w = t.open({\r
+                               title : t,\r
+                               type : 'confirm',\r
+                               button_func : function(s) {\r
+                                       if (cb)\r
+                                               cb.call(s || t, s);\r
+\r
+                                       t.close(null, w.id);\r
+                               },\r
+                               content : DOM.encode(t.editor.getLang(txt, txt)),\r
+                               inline : 1,\r
+                               width : 400,\r
+                               height : 130\r
+                       });\r
+               },\r
+\r
+               // Internal functions\r
+\r
+               _findId : function(w) {\r
+                       var t = this;\r
+\r
+                       if (typeof(w) == 'string')\r
+                               return w;\r
+\r
+                       each(t.windows, function(wo) {\r
+                               var ifr = DOM.get(wo.id + '_ifr');\r
+\r
+                               if (ifr && w == ifr.contentWindow) {\r
+                                       w = wo.id;\r
+                                       return false;\r
+                               }\r
+                       });\r
+\r
+                       return w;\r
+               },\r
+\r
+               _fixIELayout : function(id, s) {\r
+                       var w, img;\r
+\r
+                       if (!tinymce.isIE6)\r
+                               return;\r
+\r
+                       // Fixes the bug where hover flickers and does odd things in IE6\r
+                       each(['n','s','w','e','nw','ne','sw','se'], function(v) {\r
+                               var e = DOM.get(id + '_resize_' + v);\r
+\r
+                               DOM.setStyles(e, {\r
+                                       width : s ? e.clientWidth : '',\r
+                                       height : s ? e.clientHeight : '',\r
+                                       cursor : DOM.getStyle(e, 'cursor', 1)\r
+                               });\r
+\r
+                               DOM.setStyle(id + "_bottom", 'bottom', '-1px');\r
+\r
+                               e = 0;\r
+                       });\r
+\r
+                       // Fixes graphics glitch\r
+                       if (w = this.windows[id]) {\r
+                               // Fixes rendering bug after resize\r
+                               w.element.hide();\r
+                               w.element.show();\r
+\r
+                               // Forced a repaint of the window\r
+                               //DOM.get(id).style.filter = '';\r
+\r
+                               // IE has a bug where images used in CSS won't get loaded\r
+                               // sometimes when the cache in the browser is disabled\r
+                               // This fix tries to solve it by loading the images using the image object\r
+                               each(DOM.select('div,a', id), function(e, i) {\r
+                                       if (e.currentStyle.backgroundImage != 'none') {\r
+                                               img = new Image();\r
+                                               img.src = e.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/, '$1');\r
+                                       }\r
+                               });\r
+\r
+                               DOM.get(id).style.filter = '';\r
+                       }\r
+               }\r
+       });\r
+\r
+       // Register plugin\r
+       tinymce.PluginManager.add('inlinepopups', tinymce.plugins.InlinePopups);\r
+})();\r
+\r
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
new file mode 100644 (file)
index 0000000..2191398
Binary files /dev/null and b/program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif 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
new file mode 100644 (file)
index 0000000..f957e49
Binary files /dev/null and b/program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif 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
new file mode 100644 (file)
index 0000000..6baf64a
Binary files /dev/null and b/program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif 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
new file mode 100644 (file)
index 0000000..20acbbf
Binary files /dev/null and b/program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif 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
new file mode 100644 (file)
index 0000000..d5de1cc
Binary files /dev/null and b/program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif 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
new file mode 100644 (file)
index 0000000..c2a2ad4
Binary files /dev/null and b/program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif 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
new file mode 100644 (file)
index 0000000..0b4cc36
Binary files /dev/null and b/program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif 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
new file mode 100644 (file)
index 0000000..a50d4fc
--- /dev/null
@@ -0,0 +1,90 @@
+/* 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
new file mode 100644 (file)
index 0000000..f9ec642
--- /dev/null
@@ -0,0 +1,387 @@
+<!-- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -->\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+<title>Template for dialogs</title>\r
+<link rel="stylesheet" type="text/css" href="skins/clearlooks2/window.css" />\r
+</head>\r
+<body>\r
+\r
+<div class="mceEditor">\r
+       <div class="clearlooks2" style="width:400px; height:100px; left:10px;">\r
+               <div class="mceWrapper">\r
+                       <div class="mceTop">\r
+                               <div class="mceLeft"></div>\r
+                               <div class="mceCenter"></div>\r
+                               <div class="mceRight"></div>\r
+                               <span>Blured</span>\r
+                       </div>\r
+\r
+                       <div class="mceMiddle">\r
+                               <div class="mceLeft"></div>\r
+                               <span>Content</span>\r
+                               <div class="mceRight"></div>\r
+                       </div>\r
+\r
+                       <div class="mceBottom">\r
+                               <div class="mceLeft"></div>\r
+                               <div class="mceCenter"></div>\r
+                               <div class="mceRight"></div>\r
+                               <span>Statusbar text.</span>\r
+                       </div>\r
+\r
+                       <a class="mceMove" href="#"></a>\r
+                       <a class="mceMin" href="#"></a>\r
+                       <a class="mceMax" href="#"></a>\r
+                       <a class="mceMed" href="#"></a>\r
+                       <a class="mceClose" href="#"></a>\r
+                       <a class="mceResize mceResizeN" href="#"></a>\r
+                       <a class="mceResize mceResizeS" href="#"></a>\r
+                       <a class="mceResize mceResizeW" href="#"></a>\r
+                       <a class="mceResize mceResizeE" href="#"></a>\r
+                       <a class="mceResize mceResizeNW" href="#"></a>\r
+                       <a class="mceResize mceResizeNE" href="#"></a>\r
+                       <a class="mceResize mceResizeSW" href="#"></a>\r
+                       <a class="mceResize mceResizeSE" href="#"></a>\r
+               </div>\r
+       </div>\r
+\r
+       <div class="clearlooks2" style="width:400px; height:100px; left:420px;">\r
+               <div class="mceWrapper mceMovable mceFocus">\r
+                       <div class="mceTop">\r
+                               <div class="mceLeft"></div>\r
+                               <div class="mceCenter"></div>\r
+                               <div class="mceRight"></div>\r
+                               <span>Focused</span>\r
+                       </div>\r
+\r
+                       <div class="mceMiddle">\r
+                               <div class="mceLeft"></div>\r
+                               <span>Content</span>\r
+                               <div class="mceRight"></div>\r
+                       </div>\r
+\r
+                       <div class="mceBottom">\r
+                               <div class="mceLeft"></div>\r
+                               <div class="mceCenter"></div>\r
+                               <div class="mceRight"></div>\r
+                               <span>Statusbar text.</span>\r
+                       </div>\r
+\r
+                       <a class="mceMove" href="#"></a>\r
+                       <a class="mceMin" href="#"></a>\r
+                       <a class="mceMax" href="#"></a>\r
+                       <a class="mceMed" href="#"></a>\r
+                       <a class="mceClose" href="#"></a>\r
+                       <a class="mceResize mceResizeN" href="#"></a>\r
+                       <a class="mceResize mceResizeS" href="#"></a>\r
+                       <a class="mceResize mceResizeW" href="#"></a>\r
+                       <a class="mceResize mceResizeE" href="#"></a>\r
+                       <a class="mceResize mceResizeNW" href="#"></a>\r
+                       <a class="mceResize mceResizeNE" href="#"></a>\r
+                       <a class="mceResize mceResizeSW" href="#"></a>\r
+                       <a class="mceResize mceResizeSE" href="#"></a>\r
+               </div>\r
+       </div>\r
+\r
+       <div class="clearlooks2" style="width:400px; height:100px; left:10px; top:120px;">\r
+               <div class="mceWrapper mceMovable mceFocus mceStatusbar">\r
+                       <div class="mceTop">\r
+                               <div class="mceLeft"></div>\r
+                               <div class="mceCenter"></div>\r
+                               <div class="mceRight"></div>\r
+                               <span>Statusbar</span>\r
+                       </div>\r
+\r
+                       <div class="mceMiddle">\r
+                               <div class="mceLeft"></div>\r
+                               <span>Content</span>\r
+                               <div class="mceRight"></div>\r
+                       </div>\r
+\r
+                       <div class="mceBottom">\r
+                               <div class="mceLeft"></div>\r
+                               <div class="mceCenter"></div>\r
+                               <div class="mceRight"></div>\r
+                               <span>Statusbar text.</span>\r
+                       </div>\r
+\r
+                       <a class="mceMove" href="#"></a>\r
+                       <a class="mceMin" href="#"></a>\r
+                       <a class="mceMax" href="#"></a>\r
+                       <a class="mceMed" href="#"></a>\r
+                       <a class="mceClose" href="#"></a>\r
+                       <a class="mceResize mceResizeN" href="#"></a>\r
+                       <a class="mceResize mceResizeS" href="#"></a>\r
+                       <a class="mceResize mceResizeW" href="#"></a>\r
+                       <a class="mceResize mceResizeE" href="#"></a>\r
+                       <a class="mceResize mceResizeNW" href="#"></a>\r
+                       <a class="mceResize mceResizeNE" href="#"></a>\r
+                       <a class="mceResize mceResizeSW" href="#"></a>\r
+                       <a class="mceResize mceResizeSE" href="#"></a>\r
+               </div>\r
+       </div>\r
+\r
+       <div class="clearlooks2" style="width:400px; height:100px; left:420px; top:120px;">\r
+               <div class="mceWrapper mceMovable mceFocus mceStatusbar mceResizable">\r
+                       <div class="mceTop">\r
+                               <div class="mceLeft"></div>\r
+                               <div class="mceCenter"></div>\r
+                               <div class="mceRight"></div>\r
+                               <span>Statusbar, Resizable</span>\r
+                       </div>\r
+\r
+                       <div class="mceMiddle">\r
+                               <div class="mceLeft"></div>\r
+                               <span>Content</span>\r
+                               <div class="mceRight"></div>\r
+                       </div>\r
+\r
+                       <div class="mceBottom">\r
+                               <div class="mceLeft"></div>\r
+                               <div class="mceCenter"></div>\r
+                               <div class="mceRight"></div>\r
+                               <span>Statusbar text.</span>\r
+                       </div>\r
+\r
+                       <a class="mceMove" href="#"></a>\r
+                       <a class="mceMin" href="#"></a>\r
+                       <a class="mceMax" href="#"></a>\r
+                       <a class="mceMed" href="#"></a>\r
+                       <a class="mceClose" href="#"></a>\r
+                       <a class="mceResize mceResizeN" href="#"></a>\r
+                       <a class="mceResize mceResizeS" href="#"></a>\r
+                       <a class="mceResize mceResizeW" href="#"></a>\r
+                       <a class="mceResize mceResizeE" href="#"></a>\r
+                       <a class="mceResize mceResizeNW" href="#"></a>\r
+                       <a class="mceResize mceResizeNE" href="#"></a>\r
+                       <a class="mceResize mceResizeSW" href="#"></a>\r
+                       <a class="mceResize mceResizeSE" href="#"></a>\r
+               </div>\r
+       </div>\r
+\r
+       <div class="clearlooks2" style="width:400px; height:100px; left:10px; top:230px;">\r
+               <div class="mceWrapper mceMovable mceFocus mceResizable mceMaximizable">\r
+                       <div class="mceTop">\r
+                               <div class="mceLeft"></div>\r
+                               <div class="mceCenter"></div>\r
+                               <div class="mceRight"></div>\r
+                               <span>Resizable, Maximizable</span>\r
+                       </div>\r
+\r
+                       <div class="mceMiddle">\r
+                               <div class="mceLeft"></div>\r
+                               <span>Content</span>\r
+                               <div class="mceRight"></div>\r
+                       </div>\r
+\r
+                       <div class="mceBottom">\r
+                               <div class="mceLeft"></div>\r
+                               <div class="mceCenter"></div>\r
+                               <div class="mceRight"></div>\r
+                               <span>Statusbar text.</span>\r
+                       </div>\r
+\r
+                       <a class="mceMove" href="#"></a>\r
+                       <a class="mceMin" href="#"></a>\r
+                       <a class="mceMax" href="#"></a>\r
+                       <a class="mceMed" href="#"></a>\r
+                       <a class="mceClose" href="#"></a>\r
+                       <a class="mceResize mceResizeN" href="#"></a>\r
+                       <a class="mceResize mceResizeS" href="#"></a>\r
+                       <a class="mceResize mceResizeW" href="#"></a>\r
+                       <a class="mceResize mceResizeE" href="#"></a>\r
+                       <a class="mceResize mceResizeNW" href="#"></a>\r
+                       <a class="mceResize mceResizeNE" href="#"></a>\r
+                       <a class="mceResize mceResizeSW" href="#"></a>\r
+                       <a class="mceResize mceResizeSE" href="#"></a>\r
+               </div>\r
+       </div>\r
+\r
+       <div class="clearlooks2" style="width:400px; height:100px; left:420px; top:230px;">\r
+               <div class="mceWrapper mceMovable mceStatusbar mceResizable mceMaximizable">\r
+                       <div class="mceTop">\r
+                               <div class="mceLeft"></div>\r
+                               <div class="mceCenter"></div>\r
+                               <div class="mceRight"></div>\r
+                               <span>Blurred, Maximizable, Statusbar, Resizable</span>\r
+                       </div>\r
+\r
+                       <div class="mceMiddle">\r
+                               <div class="mceLeft"></div>\r
+                               <span>Content</span>\r
+                               <div class="mceRight"></div>\r
+                       </div>\r
+\r
+                       <div class="mceBottom">\r
+                               <div class="mceLeft"></div>\r
+                               <div class="mceCenter"></div>\r
+                               <div class="mceRight"></div>\r
+                               <span>Statusbar text.</span>\r
+                       </div>\r
+\r
+                       <a class="mceMove" href="#"></a>\r
+                       <a class="mceMin" href="#"></a>\r
+                       <a class="mceMax" href="#"></a>\r
+                       <a class="mceMed" href="#"></a>\r
+                       <a class="mceClose" href="#"></a>\r
+                       <a class="mceResize mceResizeN" href="#"></a>\r
+                       <a class="mceResize mceResizeS" href="#"></a>\r
+                       <a class="mceResize mceResizeW" href="#"></a>\r
+                       <a class="mceResize mceResizeE" href="#"></a>\r
+                       <a class="mceResize mceResizeNW" href="#"></a>\r
+                       <a class="mceResize mceResizeNE" href="#"></a>\r
+                       <a class="mceResize mceResizeSW" href="#"></a>\r
+                       <a class="mceResize mceResizeSE" href="#"></a>\r
+               </div>\r
+       </div>\r
+\r
+       <div class="clearlooks2" style="width:400px; height:100px; left:10px; top:340px;">\r
+               <div class="mceWrapper mceMovable mceFocus mceResizable mceMaximized mceMinimizable mceMaximizable">\r
+                       <div class="mceTop">\r
+                               <div class="mceLeft"></div>\r
+                               <div class="mceCenter"></div>\r
+                               <div class="mceRight"></div>\r
+                               <span>Maximized, Maximizable, Minimizable</span>\r
+                       </div>\r
+\r
+                       <div class="mceMiddle">\r
+                               <div class="mceLeft"></div>\r
+                               <span>Content</span>\r
+                               <div class="mceRight"></div>\r
+                       </div>\r
+\r
+                       <div class="mceBottom">\r
+                               <div class="mceLeft"></div>\r
+                               <div class="mceCenter"></div>\r
+                               <div class="mceRight"></div>\r
+                               <span>Statusbar text.</span>\r
+                       </div>\r
+\r
+                       <a class="mceMove" href="#"></a>\r
+                       <a class="mceMin" href="#"></a>\r
+                       <a class="mceMax" href="#"></a>\r
+                       <a class="mceMed" href="#"></a>\r
+                       <a class="mceClose" href="#"></a>\r
+                       <a class="mceResize mceResizeN" href="#"></a>\r
+                       <a class="mceResize mceResizeS" href="#"></a>\r
+                       <a class="mceResize mceResizeW" href="#"></a>\r
+                       <a class="mceResize mceResizeE" href="#"></a>\r
+                       <a class="mceResize mceResizeNW" href="#"></a>\r
+                       <a class="mceResize mceResizeNE" href="#"></a>\r
+                       <a class="mceResize mceResizeSW" href="#"></a>\r
+                       <a class="mceResize mceResizeSE" href="#"></a>\r
+               </div>\r
+       </div>\r
+\r
+       <div class="clearlooks2" style="width:400px; height:100px; left:420px; top:340px;">\r
+               <div class="mceWrapper mceMovable mceStatusbar mceResizable mceMaximized mceMinimizable mceMaximizable">\r
+                       <div class="mceTop">\r
+                               <div class="mceLeft"></div>\r
+                               <div class="mceCenter"></div>\r
+                               <div class="mceRight"></div>\r
+                               <span>Blured</span>\r
+                       </div>\r
+\r
+                       <div class="mceMiddle">\r
+                               <div class="mceLeft"></div>\r
+                               <span>Content</span>\r
+                               <div class="mceRight"></div>\r
+                       </div>\r
+\r
+                       <div class="mceBottom">\r
+                               <div class="mceLeft"></div>\r
+                               <div class="mceCenter"></div>\r
+                               <div class="mceRight"></div>\r
+                               <span>Statusbar text.</span>\r
+                       </div>\r
+\r
+                       <a class="mceMove" href="#"></a>\r
+                       <a class="mceMin" href="#"></a>\r
+                       <a class="mceMax" href="#"></a>\r
+                       <a class="mceMed" href="#"></a>\r
+                       <a class="mceClose" href="#"></a>\r
+                       <a class="mceResize mceResizeN" href="#"></a>\r
+                       <a class="mceResize mceResizeS" href="#"></a>\r
+                       <a class="mceResize mceResizeW" href="#"></a>\r
+                       <a class="mceResize mceResizeE" href="#"></a>\r
+                       <a class="mceResize mceResizeNW" href="#"></a>\r
+                       <a class="mceResize mceResizeNE" href="#"></a>\r
+                       <a class="mceResize mceResizeSW" href="#"></a>\r
+                       <a class="mceResize mceResizeSE" href="#"></a>\r
+               </div>\r
+       </div>\r
+\r
+       <div class="clearlooks2" style="width:400px; height:130px; left:10px; top:450px;">\r
+               <div class="mceWrapper mceMovable mceFocus mceModal mceAlert">\r
+                       <div class="mceTop">\r
+                               <div class="mceLeft"></div>\r
+                               <div class="mceCenter"></div>\r
+                               <div class="mceRight"></div>\r
+                               <span>Alert</span>\r
+                       </div>\r
+\r
+                       <div class="mceMiddle">\r
+                               <div class="mceLeft"></div>\r
+                               <span>\r
+                                       This is a very long error message. This is a very long error message.\r
+                                       This is a very long error message. This is a very long error message.\r
+                                       This is a very long error message. This is a very long error message.\r
+                                       This is a very long error message. This is a very long error message.\r
+                                       This is a very long error message. This is a very long error message.\r
+                                       This is a very long error message. This is a very long error message.\r
+                               </span>\r
+                               <div class="mceRight"></div>\r
+                               <div class="mceIcon"></div>\r
+                       </div>\r
+\r
+                       <div class="mceBottom">\r
+                               <div class="mceLeft"></div>\r
+                               <div class="mceCenter"></div>\r
+                               <div class="mceRight"></div>\r
+                       </div>\r
+\r
+                       <a class="mceMove" href="#"></a>\r
+                       <a class="mceButton mceOk" href="#">Ok</a>\r
+                       <a class="mceClose" href="#"></a>\r
+               </div>\r
+       </div>\r
+\r
+       <div class="clearlooks2" style="width:400px; height:130px; left:420px; top:450px;">\r
+               <div class="mceWrapper mceMovable mceFocus mceModal mceConfirm">\r
+                       <div class="mceTop">\r
+                               <div class="mceLeft"></div>\r
+                               <div class="mceCenter"></div>\r
+                               <div class="mceRight"></div>\r
+                               <span>Confirm</span>\r
+                       </div>\r
+\r
+                       <div class="mceMiddle">\r
+                               <div class="mceLeft"></div>\r
+                               <span>\r
+                                       This is a very long error message. This is a very long error message.\r
+                                       This is a very long error message. This is a very long error message.\r
+                                       This is a very long error message. This is a very long error message.\r
+                                       This is a very long error message. This is a very long error message.\r
+                                       This is a very long error message. This is a very long error message.\r
+                                       This is a very long error message. This is a very long error message.\r
+                                       </span>\r
+                               <div class="mceRight"></div>\r
+                               <div class="mceIcon"></div>\r
+                       </div>\r
+\r
+                       <div class="mceBottom">\r
+                               <div class="mceLeft"></div>\r
+                               <div class="mceCenter"></div>\r
+                               <div class="mceRight"></div>\r
+                       </div>\r
+\r
+                       <a class="mceMove" href="#"></a>\r
+                       <a class="mceButton mceOk" href="#">Ok</a>\r
+                       <a class="mceButton mceCancel" href="#">Cancel</a>\r
+                       <a class="mceClose" href="#"></a>\r
+               </div>\r
+       </div>\r
+</div>\r
+\r
+</body>\r
+</html>\r
diff --git a/program/js/tiny_mce/plugins/insertdatetime/editor_plugin.js b/program/js/tiny_mce/plugins/insertdatetime/editor_plugin.js
new file mode 100644 (file)
index 0000000..938ce6b
--- /dev/null
@@ -0,0 +1 @@
+(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
new file mode 100644 (file)
index 0000000..181c791
--- /dev/null
@@ -0,0 +1,83 @@
+/**\r
+ * editor_plugin_src.js\r
+ *\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ */\r
+\r
+(function() {\r
+       tinymce.create('tinymce.plugins.InsertDateTime', {\r
+               init : function(ed, url) {\r
+                       var t = this;\r
+\r
+                       t.editor = ed;\r
+\r
+                       ed.addCommand('mceInsertDate', function() {\r
+                               var str = t._getDateTime(new Date(), ed.getParam("plugin_insertdate_dateFormat", ed.getLang('insertdatetime.date_fmt')));\r
+\r
+                               ed.execCommand('mceInsertContent', false, str);\r
+                       });\r
+\r
+                       ed.addCommand('mceInsertTime', function() {\r
+                               var str = t._getDateTime(new Date(), ed.getParam("plugin_insertdate_timeFormat", ed.getLang('insertdatetime.time_fmt')));\r
+\r
+                               ed.execCommand('mceInsertContent', false, str);\r
+                       });\r
+\r
+                       ed.addButton('insertdate', {title : 'insertdatetime.insertdate_desc', cmd : 'mceInsertDate'});\r
+                       ed.addButton('inserttime', {title : 'insertdatetime.inserttime_desc', cmd : 'mceInsertTime'});\r
+               },\r
+\r
+               getInfo : function() {\r
+                       return {\r
+                               longname : 'Insert date/time',\r
+                               author : 'Moxiecode Systems AB',\r
+                               authorurl : 'http://tinymce.moxiecode.com',\r
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime',\r
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+                       };\r
+               },\r
+\r
+               // Private methods\r
+\r
+               _getDateTime : function(d, fmt) {\r
+                       var ed = this.editor;\r
+\r
+                       function addZeros(value, len) {\r
+                               value = "" + value;\r
+\r
+                               if (value.length < len) {\r
+                                       for (var i=0; i<(len-value.length); i++)\r
+                                               value = "0" + value;\r
+                               }\r
+\r
+                               return value;\r
+                       };\r
+\r
+                       fmt = fmt.replace("%D", "%m/%d/%y");\r
+                       fmt = fmt.replace("%r", "%I:%M:%S %p");\r
+                       fmt = fmt.replace("%Y", "" + d.getFullYear());\r
+                       fmt = fmt.replace("%y", "" + d.getYear());\r
+                       fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));\r
+                       fmt = fmt.replace("%d", addZeros(d.getDate(), 2));\r
+                       fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));\r
+                       fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));\r
+                       fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));\r
+                       fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));\r
+                       fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));\r
+                       fmt = fmt.replace("%B", "" + ed.getLang("insertdatetime.months_long").split(',')[d.getMonth()]);\r
+                       fmt = fmt.replace("%b", "" + ed.getLang("insertdatetime.months_short").split(',')[d.getMonth()]);\r
+                       fmt = fmt.replace("%A", "" + ed.getLang("insertdatetime.day_long").split(',')[d.getDay()]);\r
+                       fmt = fmt.replace("%a", "" + ed.getLang("insertdatetime.day_short").split(',')[d.getDay()]);\r
+                       fmt = fmt.replace("%%", "%");\r
+\r
+                       return fmt;\r
+               }\r
+       });\r
+\r
+       // Register plugin\r
+       tinymce.PluginManager.add('insertdatetime', tinymce.plugins.InsertDateTime);\r
+})();
\ 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
new file mode 100644 (file)
index 0000000..ca3857a
--- /dev/null
@@ -0,0 +1 @@
+(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
new file mode 100644 (file)
index 0000000..daed280
--- /dev/null
@@ -0,0 +1,262 @@
+/**\r
+ * editor_plugin_src.js\r
+ *\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ */\r
+\r
+(function() {\r
+       function findParentLayer(node) {\r
+               do {\r
+                       if (node.className && node.className.indexOf('mceItemLayer') != -1) {\r
+                               return node;\r
+                       }\r
+               } while (node = node.parentNode);\r
+       };\r
+\r
+       tinymce.create('tinymce.plugins.Layer', {\r
+               init : function(ed, url) {\r
+                       var t = this;\r
+\r
+                       t.editor = ed;\r
+\r
+                       // Register commands\r
+                       ed.addCommand('mceInsertLayer', t._insertLayer, t);\r
+\r
+                       ed.addCommand('mceMoveForward', function() {\r
+                               t._move(1);\r
+                       });\r
+\r
+                       ed.addCommand('mceMoveBackward', function() {\r
+                               t._move(-1);\r
+                       });\r
+\r
+                       ed.addCommand('mceMakeAbsolute', function() {\r
+                               t._toggleAbsolute();\r
+                       });\r
+\r
+                       // Register buttons\r
+                       ed.addButton('moveforward', {title : 'layer.forward_desc', cmd : 'mceMoveForward'});\r
+                       ed.addButton('movebackward', {title : 'layer.backward_desc', cmd : 'mceMoveBackward'});\r
+                       ed.addButton('absolute', {title : 'layer.absolute_desc', cmd : 'mceMakeAbsolute'});\r
+                       ed.addButton('insertlayer', {title : 'layer.insertlayer_desc', cmd : 'mceInsertLayer'});\r
+\r
+                       ed.onInit.add(function() {\r
+                               var dom = ed.dom;\r
+\r
+                               if (tinymce.isIE)\r
+                                       ed.getDoc().execCommand('2D-Position', false, true);\r
+                       });\r
+\r
+                       // Remove serialized styles when selecting a layer since it might be changed by a drag operation\r
+                       ed.onMouseUp.add(function(ed, e) {\r
+                               var layer = findParentLayer(e.target);\r
+       \r
+                               if (layer) {\r
+                                       ed.dom.setAttrib(layer, 'data-mce-style', '');\r
+                               }\r
+                       });\r
+\r
+                       // Fixes edit focus issues with layers on Gecko\r
+                       // This will enable designMode while inside a layer and disable it when outside\r
+                       ed.onMouseDown.add(function(ed, e) {\r
+                               var node = e.target, doc = ed.getDoc(), parent;\r
+\r
+                               if (tinymce.isGecko) {\r
+                                       if (findParentLayer(node)) {\r
+                                               if (doc.designMode !== 'on') {\r
+                                                       doc.designMode = 'on';\r
+\r
+                                                       // Repaint caret\r
+                                                       node = doc.body;\r
+                                                       parent = node.parentNode;\r
+                                                       parent.removeChild(node);\r
+                                                       parent.appendChild(node);\r
+                                               }\r
+                                       } else if (doc.designMode == 'on') {\r
+                                               doc.designMode = 'off';\r
+                                       }\r
+                               }\r
+                       });\r
+\r
+                       ed.onNodeChange.add(t._nodeChange, t);\r
+                       ed.onVisualAid.add(t._visualAid, t);\r
+               },\r
+\r
+               getInfo : function() {\r
+                       return {\r
+                               longname : 'Layer',\r
+                               author : 'Moxiecode Systems AB',\r
+                               authorurl : 'http://tinymce.moxiecode.com',\r
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer',\r
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+                       };\r
+               },\r
+\r
+               // Private methods\r
+\r
+               _nodeChange : function(ed, cm, n) {\r
+                       var le, p;\r
+\r
+                       le = this._getParentLayer(n);\r
+                       p = ed.dom.getParent(n, 'DIV,P,IMG');\r
+\r
+                       if (!p) {\r
+                               cm.setDisabled('absolute', 1);\r
+                               cm.setDisabled('moveforward', 1);\r
+                               cm.setDisabled('movebackward', 1);\r
+                       } else {\r
+                               cm.setDisabled('absolute', 0);\r
+                               cm.setDisabled('moveforward', !le);\r
+                               cm.setDisabled('movebackward', !le);\r
+                               cm.setActive('absolute', le && le.style.position.toLowerCase() == "absolute");\r
+                       }\r
+               },\r
+\r
+               // Private methods\r
+\r
+               _visualAid : function(ed, e, s) {\r
+                       var dom = ed.dom;\r
+\r
+                       tinymce.each(dom.select('div,p', e), function(e) {\r
+                               if (/^(absolute|relative|fixed)$/i.test(e.style.position)) {\r
+                                       if (s)\r
+                                               dom.addClass(e, 'mceItemVisualAid');\r
+                                       else\r
+                                               dom.removeClass(e, 'mceItemVisualAid');\r
+\r
+                                       dom.addClass(e, 'mceItemLayer');\r
+                               }\r
+                       });\r
+               },\r
+\r
+               _move : function(d) {\r
+                       var ed = this.editor, i, z = [], le = this._getParentLayer(ed.selection.getNode()), ci = -1, fi = -1, nl;\r
+\r
+                       nl = [];\r
+                       tinymce.walk(ed.getBody(), function(n) {\r
+                               if (n.nodeType == 1 && /^(absolute|relative|static)$/i.test(n.style.position))\r
+                                       nl.push(n); \r
+                       }, 'childNodes');\r
+\r
+                       // Find z-indexes\r
+                       for (i=0; i<nl.length; i++) {\r
+                               z[i] = nl[i].style.zIndex ? parseInt(nl[i].style.zIndex) : 0;\r
+\r
+                               if (ci < 0 && nl[i] == le)\r
+                                       ci = i;\r
+                       }\r
+\r
+                       if (d < 0) {\r
+                               // Move back\r
+\r
+                               // Try find a lower one\r
+                               for (i=0; i<z.length; i++) {\r
+                                       if (z[i] < z[ci]) {\r
+                                               fi = i;\r
+                                               break;\r
+                                       }\r
+                               }\r
+\r
+                               if (fi > -1) {\r
+                                       nl[ci].style.zIndex = z[fi];\r
+                                       nl[fi].style.zIndex = z[ci];\r
+                               } else {\r
+                                       if (z[ci] > 0)\r
+                                               nl[ci].style.zIndex = z[ci] - 1;\r
+                               }\r
+                       } else {\r
+                               // Move forward\r
+\r
+                               // Try find a higher one\r
+                               for (i=0; i<z.length; i++) {\r
+                                       if (z[i] > z[ci]) {\r
+                                               fi = i;\r
+                                               break;\r
+                                       }\r
+                               }\r
+\r
+                               if (fi > -1) {\r
+                                       nl[ci].style.zIndex = z[fi];\r
+                                       nl[fi].style.zIndex = z[ci];\r
+                               } else\r
+                                       nl[ci].style.zIndex = z[ci] + 1;\r
+                       }\r
+\r
+                       ed.execCommand('mceRepaint');\r
+               },\r
+\r
+               _getParentLayer : function(n) {\r
+                       return this.editor.dom.getParent(n, function(n) {\r
+                               return n.nodeType == 1 && /^(absolute|relative|static)$/i.test(n.style.position);\r
+                       });\r
+               },\r
+\r
+               _insertLayer : function() {\r
+                       var ed = this.editor, dom = ed.dom, p = dom.getPos(dom.getParent(ed.selection.getNode(), '*')), body = ed.getBody();\r
+\r
+                       ed.dom.add(body, 'div', {\r
+                               style : {\r
+                                       position : 'absolute',\r
+                                       left : p.x,\r
+                                       top : (p.y > 20 ? p.y : 20),\r
+                                       width : 100,\r
+                                       height : 100\r
+                               },\r
+                               'class' : 'mceItemVisualAid mceItemLayer'\r
+                       }, ed.selection.getContent() || ed.getLang('layer.content'));\r
+\r
+                       // Workaround for IE where it messes up the JS engine if you insert a layer on IE 6,7\r
+                       if (tinymce.isIE)\r
+                               dom.setHTML(body, body.innerHTML);\r
+               },\r
+\r
+               _toggleAbsolute : function() {\r
+                       var ed = this.editor, le = this._getParentLayer(ed.selection.getNode());\r
+\r
+                       if (!le)\r
+                               le = ed.dom.getParent(ed.selection.getNode(), 'DIV,P,IMG');\r
+\r
+                       if (le) {\r
+                               if (le.style.position.toLowerCase() == "absolute") {\r
+                                       ed.dom.setStyles(le, {\r
+                                               position : '',\r
+                                               left : '',\r
+                                               top : '',\r
+                                               width : '',\r
+                                               height : ''\r
+                                       });\r
+\r
+                                       ed.dom.removeClass(le, 'mceItemVisualAid');\r
+                                       ed.dom.removeClass(le, 'mceItemLayer');\r
+                               } else {\r
+                                       if (le.style.left == "")\r
+                                               le.style.left = 20 + 'px';\r
+\r
+                                       if (le.style.top == "")\r
+                                               le.style.top = 20 + 'px';\r
+\r
+                                       if (le.style.width == "")\r
+                                               le.style.width = le.width ? (le.width + 'px') : '100px';\r
+\r
+                                       if (le.style.height == "")\r
+                                               le.style.height = le.height ? (le.height + 'px') : '100px';\r
+\r
+                                       le.style.position = "absolute";\r
+\r
+                                       ed.dom.setAttrib(le, 'data-mce-style', '');\r
+                                       ed.addVisual(ed.getBody());\r
+                               }\r
+\r
+                               ed.execCommand('mceRepaint');\r
+                               ed.nodeChanged();\r
+                       }\r
+               }\r
+       });\r
+\r
+       // Register plugin\r
+       tinymce.PluginManager.add('layer', tinymce.plugins.Layer);\r
+})();
\ 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
new file mode 100644 (file)
index 0000000..2ed5f41
--- /dev/null
@@ -0,0 +1 @@
+(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
new file mode 100644 (file)
index 0000000..3cdcde5
--- /dev/null
@@ -0,0 +1,139 @@
+/**\r
+ * editor_plugin_src.js\r
+ *\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ *\r
+ * This plugin will force TinyMCE to produce deprecated legacy output such as font elements, u elements, align\r
+ * attributes and so forth. There are a few cases where these old items might be needed for example in email applications or with Flash\r
+ *\r
+ * 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\r
+ * not apart of the newer specifications for HTML and XHTML.\r
+ */\r
+\r
+(function(tinymce) {\r
+       // Override inline_styles setting to force TinyMCE to produce deprecated contents\r
+       tinymce.onAddEditor.addToTop(function(tinymce, editor) {\r
+               editor.settings.inline_styles = false;\r
+       });\r
+\r
+       // Create the legacy ouput plugin\r
+       tinymce.create('tinymce.plugins.LegacyOutput', {\r
+               init : function(editor) {\r
+                       editor.onInit.add(function() {\r
+                               var alignElements = 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img',\r
+                                       fontSizes = tinymce.explode(editor.settings.font_size_style_values),\r
+                                       schema = editor.schema;\r
+\r
+                               // Override some internal formats to produce legacy elements and attributes\r
+                               editor.formatter.register({\r
+                                       // Change alignment formats to use the deprecated align attribute\r
+                                       alignleft : {selector : alignElements, attributes : {align : 'left'}},\r
+                                       aligncenter : {selector : alignElements, attributes : {align : 'center'}},\r
+                                       alignright : {selector : alignElements, attributes : {align : 'right'}},\r
+                                       alignfull : {selector : alignElements, attributes : {align : 'justify'}},\r
+\r
+                                       // Change the basic formatting elements to use deprecated element types
+                                       bold : [\r
+                                               {inline : 'b', remove : 'all'},\r
+                                               {inline : 'strong', remove : 'all'},\r
+                                               {inline : 'span', styles : {fontWeight : 'bold'}}\r
+                                       ],\r
+                                       italic : [\r
+                                               {inline : 'i', remove : 'all'},\r
+                                               {inline : 'em', remove : 'all'},\r
+                                               {inline : 'span', styles : {fontStyle : 'italic'}}\r
+                                       ],\r
+                                       underline : [\r
+                                               {inline : 'u', remove : 'all'},\r
+                                               {inline : 'span', styles : {textDecoration : 'underline'}, exact : true}\r
+                                       ],\r
+                                       strikethrough : [\r
+                                               {inline : 'strike', remove : 'all'},\r
+                                               {inline : 'span', styles : {textDecoration: 'line-through'}, exact : true}\r
+                                       ],
+\r
+                                       // Change font size and font family to use the deprecated font element\r
+                                       fontname : {inline : 'font', attributes : {face : '%value'}},\r
+                                       fontsize : {\r
+                                               inline : 'font',\r
+                                               attributes : {\r
+                                                       size : function(vars) {\r
+                                                               return tinymce.inArray(fontSizes, vars.value) + 1;\r
+                                                       }\r
+                                               }\r
+                                       },\r
+\r
+                                       // Setup font elements for colors as well\r
+                                       forecolor : {inline : 'font', attributes : {color : '%value'}},\r
+                                       hilitecolor : {inline : 'font', styles : {backgroundColor : '%value'}}\r
+                               });\r
+\r
+                               // Check that deprecated elements are allowed if not add them\r
+                               tinymce.each('b,i,u,strike'.split(','), function(name) {\r
+                                       schema.addValidElements(name + '[*]');\r
+                               });\r
+\r
+                               // Add font element if it's missing\r
+                               if (!schema.getElementRule("font"))\r
+                                       schema.addValidElements("font[face|size|color|style]");\r
+\r
+                               // Add the missing and depreacted align attribute for the serialization engine\r
+                               tinymce.each(alignElements.split(','), function(name) {\r
+                                       var rule = schema.getElementRule(name), found;\r
+\r
+                                       if (rule) {\r
+                                               if (!rule.attributes.align) {\r
+                                                       rule.attributes.align = {};\r
+                                                       rule.attributesOrder.push('align');\r
+                                               }\r
+                                       }\r
+                               });\r
+\r
+                               // Listen for the onNodeChange event so that we can do special logic for the font size and font name drop boxes\r
+                               editor.onNodeChange.add(function(editor, control_manager) {\r
+                                       var control, fontElm, fontName, fontSize;\r
+\r
+                                       // Find font element get it's name and size\r
+                                       fontElm = editor.dom.getParent(editor.selection.getNode(), 'font');\r
+                                       if (fontElm) {\r
+                                               fontName = fontElm.face;\r
+                                               fontSize = fontElm.size;\r
+                                       }\r
+\r
+                                       // Select/unselect the font name in droplist\r
+                                       if (control = control_manager.get('fontselect')) {\r
+                                               control.select(function(value) {\r
+                                                       return value == fontName;\r
+                                               });\r
+                                       }\r
+\r
+                                       // Select/unselect the font size in droplist\r
+                                       if (control = control_manager.get('fontsizeselect')) {\r
+                                               control.select(function(value) {\r
+                                                       var index = tinymce.inArray(fontSizes, value.fontSize);\r
+\r
+                                                       return index + 1 == fontSize;\r
+                                               });\r
+                                       }\r
+                               });\r
+                       });\r
+               },\r
+\r
+               getInfo : function() {\r
+                       return {\r
+                               longname : 'LegacyOutput',\r
+                               author : 'Moxiecode Systems AB',\r
+                               authorurl : 'http://tinymce.moxiecode.com',\r
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/legacyoutput',\r
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+                       };\r
+               }\r
+       });\r
+\r
+       // Register plugin\r
+       tinymce.PluginManager.add('legacyoutput', tinymce.plugins.LegacyOutput);\r
+})(tinymce);\r
diff --git a/program/js/tiny_mce/plugins/lists/editor_plugin.js b/program/js/tiny_mce/plugins/lists/editor_plugin.js
new file mode 100644 (file)
index 0000000..ec21b25
--- /dev/null
@@ -0,0 +1 @@
+(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
new file mode 100644 (file)
index 0000000..1000ef7
--- /dev/null
@@ -0,0 +1,955 @@
+/**
+ * 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);
+}());
index 66219078cbece453c204623a0679c12d9918e8f7..9ac42e0d21e4e9f6354f69d3ccbdf8bc9cbfddf9 100644 (file)
@@ -1 +1 @@
-(function(){var d=tinymce.explode("id,name,width,height,style,align,class,hspace,vspace,bgcolor,type"),h=tinymce.makeMap(d.join(",")),b=tinymce.html.Node,f,a,g=tinymce.util.JSON,e;f=[["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"]];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(i){return i&&i.nodeName==="IMG"&&n.dom.hasClass(i,"mceItemMedia")}r.editor=n;r.url=j;a="";for(m=0;m<f.length;m++){k=f[m][0];q={name:k,clsids:tinymce.explode(f[m][1]||""),mimes:tinymce.explode(f[m][2]||""),codebase:f[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;a+=(a?"|":"")+k}tinymce.each(n.getParam("media_types","video=mp4,m4v,ogv,webm;silverlight=xap;flash=swf,flv;shockwave=dcr;quicktime=mov,qt,mpg,mp3,mpeg;shockwave=dcr;windowsmedia=avi,wmv,wm,asf,asx,wmx,wvx;realmedia=rm,ra,ram;java=jar").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}}});a=new RegExp("write("+a+")\\(([^)]+)\\)");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(i,s){if(s.name==="img"&&n.dom.hasClass(s.node,"mceItemMedia")){s.name="media"}})}if(n&&n.plugins.contextmenu){n.plugins.contextmenu.onContextMenu.add(function(s,t,i){if(i.nodeName==="IMG"&&i.className.indexOf("mceItemMedia")!==-1){t.add({title:"media.edit",icon:"media",cmd:"mceMedia"})}})}});n.addCommand("mceMedia",function(){var s,i;i=n.selection.getNode();if(o(i)){s=g.parse(n.dom.getAttrib(i,"data-mce-json"));tinymce.each(d,function(t){var u=n.dom.getAttrib(i,t);if(u){s[t]=u}});s.type=r.getType(i.className).name.toLowerCase()}if(!s){s={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:s})});n.addButton("media",{title:"media.desc",cmd:"mceMedia"});n.onNodeChange.add(function(s,i,t){i.setActive("media",o(t))})},convertUrl:function(k,n){var j=this,m=j.editor,l=m.settings,o=l.url_converter,i=l.url_converter_scope||j;if(!k){return k}if(n){return m.documentBaseURI.toAbsolute(k)}return o.call(i,k,"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,src:r.editor.theme.url+"/img/trans.gif","class":"mceItemMedia mceItem"+r.getType(m.type).name,"data-mce-json":g.serialize(m,"'")});n.width=m.width||"320";n.height=m.height||"240";return n},dataToHtml:function(i,j){return this.editor.serializer.serialize(this.dataToImg(i,j),{force_absolute:j})},htmlToData:function(k){var j,i,l;l={type:"flash",video:{sources:[]},params:{}};j=this.editor.parser.parse(k);i=j.getAll("img")[0];if(i){l=g.parse(i.attr("data-mce-json"));l.type=this.getType(i.attr("class")).name.toLowerCase();tinymce.each(d,function(m){var n=i.attr(m);if(n){l[m]=n}})}return l},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(x,n){var t=this,o=t.editor,A,E,j,s,F,w,D,u,k,C,r,p,y,B,m,v,l,z;function q(i,G){var K,J,L,I,H;H=o.getParam("flash_video_player_url",t.convertUrl(t.url+"/moxieplayer.swf"));if(H){K=o.documentBaseURI;D.params.src=H;if(o.getParam("flash_video_player_absvideourl",true)){i=K.toAbsolute(i||"",true);G=K.toAbsolute(G||"",true)}L="";J=o.getParam("flash_video_player_flashvars",{url:"$url",poster:"$poster"});tinymce.each(J,function(N,M){N=N.replace(/\$url/,i||"");N=N.replace(/\$poster/,G||"");if(N.length>0){L+=(L?"&":"")+M+"="+escape(N)}});if(L.length){D.params.flashvars=L}I=o.getParam("flash_video_player_params",{allowfullscreen:true,allowscriptaccess:true});tinymce.each(I,function(N,M){D.params[M]=""+N})}}D=g.parse(x.attr("data-mce-json"));p=this.getType(x.attr("class"));z=x.attr("data-mce-style");if(!z){z=x.attr("style");if(z){z=o.dom.serializeStyle(o.dom.parseStyle(z,"img"))}}if(p.name==="Iframe"){v=new b("iframe",1);tinymce.each(d,function(i){var G=x.attr(i);if(i=="class"&&G){G=G.replace(/mceItem.+ ?/g,"")}if(G&&G.length>0){v.attr(i,G)}});for(F in D.params){v.attr(F,D.params[F])}v.attr({style:z,src:D.params.src});x.replace(v);return}if(this.editor.settings.media_use_script){v=new b("script",1).attr("type","text/javascript");w=new b("#text",3);w.value="write"+p.name+"("+g.serialize(tinymce.extend(D.params,{width:x.attr("width"),height:x.attr("height")}))+");";v.append(w);x.replace(v);return}if(p.name==="Video"&&D.video.sources[0]){A=new b("video",1).attr(tinymce.extend({id:x.attr("id"),width:x.attr("width"),height:x.attr("height"),style:z},D.video.attrs));if(D.video.attrs){l=D.video.attrs.poster}k=D.video.sources=c(D.video.sources);for(y=0;y<k.length;y++){if(/\.mp4$/.test(k[y].src)){m=k[y].src}}if(!k[0].type){A.attr("src",k[0].src);k.splice(0,1)}for(y=0;y<k.length;y++){u=new b("source",1).attr(k[y]);u.shortEnded=true;A.append(u)}if(m){q(m,l);p=t.getType("flash")}else{D.params.src=""}}if(D.params.src){if(/\.flv$/i.test(D.params.src)){q(D.params.src,"")}if(n&&n.force_absolute){D.params.src=o.documentBaseURI.toAbsolute(D.params.src)}E=new b("object",1).attr({id:x.attr("id"),width:x.attr("width"),height:x.attr("height"),style:z});tinymce.each(d,function(i){if(D[i]&&i!="type"){E.attr(i,D[i])}});for(F in D.params){r=new b("param",1);r.shortEnded=true;w=D.params[F];if(F==="src"&&p.name==="WindowsMedia"){F="url"}r.attr({name:F,value:w});E.append(r)}if(this.editor.getParam("media_strict",true)){E.attr({data:D.params.src,type:p.mimes[0]})}else{E.attr({classid:"clsid:"+p.clsids[0],codebase:p.codebase});j=new b("embed",1);j.shortEnded=true;j.attr({id:x.attr("id"),width:x.attr("width"),height:x.attr("height"),style:z,type:p.mimes[0]});for(F in D.params){j.attr(F,D.params[F])}tinymce.each(d,function(i){if(D[i]&&i!="type"){j.attr(i,D[i])}});E.append(j)}if(D.object_html){w=new b("#text",3);w.raw=true;w.value=D.object_html;E.append(w)}if(A){A.append(E)}}if(A){if(D.video_html){w=new b("#text",3);w.raw=true;w.value=D.video_html;A.append(w)}}if(A||E){x.replace(A||E)}else{x.remove()}},objectToImg:function(y){var F,j,A,p,G,H,u,w,t,B,z,q,o,D,x,k,E,n,C=this.lookup,l,v,s=this.editor.settings.url_converter,m=this.editor.settings.url_converter_scope;function r(i){return new tinymce.html.Serializer({inner:true,validate:false}).serialize(i)}if(!y.parent){return}if(y.name==="script"){if(y.firstChild){l=a.exec(y.firstChild.value)}if(!l){return}n=l[1];E={video:{},params:g.parse(l[2])};w=E.params.width;t=E.params.height}E=E||{video:{},params:{}};G=new b("img",1);G.attr({src:this.editor.theme.url+"/img/trans.gif"});H=y.name;if(H==="video"){A=y;F=y.getAll("object")[0];j=y.getAll("embed")[0];w=A.attr("width");t=A.attr("height");u=A.attr("id");E.video={attrs:{},sources:[]};v=E.video.attrs;for(H in A.attributes.map){v[H]=A.attributes.map[H]}x=y.attr("src");if(x){E.video.sources.push({src:s.call(m,x,"src","video")})}k=A.getAll("source");for(z=0;z<k.length;z++){x=k[z].remove();E.video.sources.push({src:s.call(m,x.attr("src"),"src","source"),type:x.attr("type"),media:x.attr("media")})}if(v.poster){v.poster=s.call(m,v.poster,"poster","video")}}if(y.name==="object"){F=y;j=y.getAll("embed")[0]}if(y.name==="embed"){j=y}if(y.name==="iframe"){p=y;n="Iframe"}if(F){w=w||F.attr("width");t=t||F.attr("height");B=B||F.attr("style");u=u||F.attr("id");D=F.getAll("param");for(z=0;z<D.length;z++){o=D[z];H=o.remove().attr("name");if(!h[H]){E.params[H]=o.attr("value")}}E.params.src=E.params.src||F.attr("data")}if(j){w=w||j.attr("width");t=t||j.attr("height");B=B||j.attr("style");u=u||j.attr("id");for(H in j.attributes.map){if(!h[H]&&!E.params[H]){E.params[H]=j.attributes.map[H]}}}if(p){w=p.attr("width");t=p.attr("height");B=B||p.attr("style");u=p.attr("id");tinymce.each(d,function(i){G.attr(i,p.attr(i))});for(H in p.attributes.map){if(!h[H]&&!E.params[H]){E.params[H]=p.attributes.map[H]}}}if(E.params.movie){E.params.src=E.params.src||E.params.movie;delete E.params.movie}if(E.params.src){E.params.src=s.call(m,E.params.src,"src","object")}if(A){n=C.video.name}if(F&&!n){n=(C[(F.attr("clsid")||"").toLowerCase()]||C[(F.attr("type")||"").toLowerCase()]||{}).name}if(j&&!n){n=(C[(j.attr("type")||"").toLowerCase()]||{}).name}y.replace(G);if(j){j.remove()}if(F){q=r(F.remove());if(q){E.object_html=q}}if(A){q=r(A.remove());if(q){E.video_html=q}}G.attr({id:u,"class":"mceItemMedia mceItem"+(n||"Flash"),style:B,width:w||"320",height:t||"240","data-mce-json":g.serialize(E,"'")})}});tinymce.PluginManager.add("media",tinymce.plugins.MediaPlugin)})();
\ No newline at end of file
+(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
index e640bd366321de79e05597ff3f7c1bc87e4a2270..33a58050eac93143222e27abdd72987423ac6ebd 100644 (file)
                ["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"],\r
                ["Silverlight", "dfeaf541-f3e1-4c24-acac-99c30715084a", "application/x-silverlight-2"],\r
                ["Iframe"],\r
-               ["Video"]\r
+               ["Video"],\r
+               ["EmbeddedAudio"],\r
+               ["Audio"]\r
        ];\r
 \r
+       function normalizeSize(size) {\r
+               return typeof(size) == "string" ? size.replace(/[^0-9%]/g, '') : size;\r
+       }\r
+\r
        function toArray(obj) {\r
                var undef, out, i;\r
 \r
                                "silverlight=xap;" +\r
                                "flash=swf,flv;" +\r
                                "shockwave=dcr;" +\r
-                               "quicktime=mov,qt,mpg,mp3,mpeg;" +\r
+                               "quicktime=mov,qt,mpg,mpeg;" +\r
                                "shockwave=dcr;" +\r
                                "windowsmedia=avi,wmv,wm,asf,asx,wmx,wvx;" +\r
                                "realmedia=rm,ra,ram;" +\r
-                               "java=jar"\r
+                               "java=jar;" +\r
+                               "audio=mp3,ogg"\r
                        ).split(';'), function(item) {\r
                                var i, extensions, type;\r
 \r
 \r
                                img = ed.selection.getNode();\r
                                if (isMediaImg(img)) {\r
-                                       data = JSON.parse(ed.dom.getAttrib(img, 'data-mce-json'));\r
+                                       data = ed.dom.getAttrib(img, 'data-mce-json');\r
+                                       if (data) {\r
+                                               data = JSON.parse(data);\r
 \r
-                                       // Add some extra properties to the data object\r
-                                       tinymce.each(rootAttributes, function(name) {\r
-                                               var value = ed.dom.getAttrib(img, name);\r
+                                               // Add some extra properties to the data object\r
+                                               tinymce.each(rootAttributes, function(name) {\r
+                                                       var value = ed.dom.getAttrib(img, name);\r
 \r
-                                               if (value)\r
-                                                       data[name] = value;\r
-                                       });\r
+                                                       if (value)\r
+                                                               data[name] = value;\r
+                                               });\r
 \r
-                                       data.type = self.getType(img.className).name.toLowerCase();\r
+                                               data.type = self.getType(img.className).name.toLowerCase();\r
+                                       }\r
                                }\r
 \r
                                if (!data) {\r
                                id : data.id,\r
                                style : data.style,\r
                                align : data.align,\r
+                               hspace : data.hspace,\r
+                               vspace : data.vspace,\r
                                src : self.editor.theme.url + '/img/trans.gif',\r
                                'class' : 'mceItemMedia mceItem' + self.getType(data.type).name,\r
                                'data-mce-json' : JSON.serialize(data, "'")\r
                        });\r
 \r
-                       img.width = data.width || "320";\r
-                       img.height = data.height || "240";\r
+                       img.width = data.width = normalizeSize(data.width || (data.type == 'audio' ? "300" : "320"));\r
+                       img.height = data.height = normalizeSize(data.height || (data.type == 'audio' ? "32" : "240"));\r
 \r
                        return img;\r
                },\r
                 * Converts the JSON data object to a HTML string.\r
                 */\r
                dataToHtml : function(data, force_absolute) {\r
-                       return this.editor.serializer.serialize(this.dataToImg(data, force_absolute), {force_absolute : force_absolute});\r
+                       return this.editor.serializer.serialize(this.dataToImg(data, force_absolute), {forced_root_block : '', force_absolute : force_absolute});\r
                },\r
 \r
                /**\r
                imgToObject : function(node, args) {\r
                        var self = this, editor = self.editor, video, object, embed, iframe, name, value, data,\r
                                source, sources, params, param, typeItem, i, item, mp4Source, replacement,\r
-                               posterSrc, style;\r
+                               posterSrc, style, audio;\r
 \r
                        // Adds the flash player\r
                        function addPlayer(video_src, poster_src) {\r
                                }\r
                        };\r
 \r
-                       data = JSON.parse(node.attr('data-mce-json'));\r
+                       data = node.attr('data-mce-json');\r
+                       if (!data)\r
+                               return;\r
+\r
+                       data = JSON.parse(data);\r
                        typeItem = this.getType(node.attr('class'));\r
 \r
-                       style = node.attr('data-mce-style')\r
+                       style = node.attr('data-mce-style');\r
                        if (!style) {\r
                                style = node.attr('style');\r
 \r
                                        style = editor.dom.serializeStyle(editor.dom.parseStyle(style, 'img'));\r
                        }\r
 \r
+                       // Use node width/height to override the data width/height when the placeholder is resized\r
+                       data.width = node.attr('width') || data.width;\r
+                       data.height = node.attr('height') || data.height;\r
+\r
                        // Handle iframe\r
                        if (typeItem.name === 'Iframe') {\r
                                replacement = new Node('iframe', 1);\r
                                // Create new object element\r
                                video = new Node('video', 1).attr(tinymce.extend({\r
                                        id : node.attr('id'),\r
-                                       width: node.attr('width'),\r
-                                       height: node.attr('height'),\r
+                                       width: normalizeSize(node.attr('width')),\r
+                                       height: normalizeSize(node.attr('height')),\r
                                        style : style\r
                                }, data.video.attrs));\r
 \r
                                        data.params.src = '';\r
                        }\r
 \r
+                       // Add HTML5 audio element\r
+                       if (typeItem.name === 'Audio' && data.video.sources[0]) {\r
+                               // Create new object element\r
+                               audio = new Node('audio', 1).attr(tinymce.extend({\r
+                                       id : node.attr('id'),\r
+                                       width: normalizeSize(node.attr('width')),\r
+                                       height: normalizeSize(node.attr('height')),\r
+                                       style : style\r
+                               }, data.video.attrs));\r
+\r
+                               // Get poster source and use that for flash fallback\r
+                               if (data.video.attrs)\r
+                                       posterSrc = data.video.attrs.poster;\r
+\r
+                               sources = data.video.sources = toArray(data.video.sources);\r
+                               if (!sources[0].type) {\r
+                                       audio.attr('src', sources[0].src);\r
+                                       sources.splice(0, 1);\r
+                               }\r
+\r
+                               for (i = 0; i < sources.length; i++) {\r
+                                       source = new Node('source', 1).attr(sources[i]);\r
+                                       source.shortEnded = true;\r
+                                       audio.append(source);\r
+                               }\r
+\r
+                               data.params.src = '';\r
+                       }\r
+\r
+                       if (typeItem.name === 'EmbeddedAudio') {\r
+                               embed = new Node('embed', 1);\r
+                               embed.shortEnded = true;\r
+                               embed.attr({\r
+                                       id: node.attr('id'),\r
+                                       width: normalizeSize(node.attr('width')),\r
+                                       height: normalizeSize(node.attr('height')),\r
+                                       style : style,\r
+                                       type: node.attr('type')\r
+                               });\r
+\r
+                               for (name in data.params)\r
+                                       embed.attr(name, data.params[name]);\r
+\r
+                               tinymce.each(rootAttributes, function(name) {\r
+                                       if (data[name] && name != 'type')\r
+                                               embed.attr(name, data[name]);\r
+                               });\r
+\r
+                               data.params.src = '';\r
+                       }\r
+\r
                        // Do we have a params src then we can generate object\r
                        if (data.params.src) {\r
                                // Is flv movie add player for it\r
                                // Create new object element\r
                                object = new Node('object', 1).attr({\r
                                        id : node.attr('id'),\r
-                                       width: node.attr('width'),\r
-                                       height: node.attr('height'),\r
+                                       width: normalizeSize(node.attr('width')),\r
+                                       height: normalizeSize(node.attr('height')),\r
                                        style : style\r
                                });\r
 \r
                                tinymce.each(rootAttributes, function(name) {\r
-                                       if (data[name] && name != 'type')\r
-                                               object.attr(name, data[name]);\r
+                                       var value = data[name];\r
+\r
+                                       if (name == 'class' && value)\r
+                                               value = value.replace(/mceItem.+ ?/g, '');\r
+\r
+                                       if (value && name != 'type')\r
+                                               object.attr(name, value);\r
                                });\r
 \r
                                // Add params\r
                                        embed.shortEnded = true;\r
                                        embed.attr({\r
                                                id: node.attr('id'),\r
-                                               width: node.attr('width'),\r
-                                               height: node.attr('height'),\r
+                                               width: normalizeSize(node.attr('width')),\r
+                                               height: normalizeSize(node.attr('height')),\r
                                                style : style,\r
                                                type: typeItem.mimes[0]\r
                                        });\r
                                }\r
                        }\r
 \r
-                       if (video || object)\r
-                               node.replace(video || object);\r
+                       if (audio) {\r
+                               // Insert raw HTML\r
+                               if (data.video_html) {\r
+                                       value = new Node('#text', 3);\r
+                                       value.raw = true;\r
+                                       value.value = data.video_html;\r
+                                       audio.append(value);\r
+                               }\r
+                       }\r
+\r
+                       var n = video || audio || object || embed;\r
+                       if (n)\r
+                               node.replace(n);\r
                        else\r
                                node.remove();\r
                },\r
                        var object, embed, video, iframe, img, name, id, width, height, style, i, html,\r
                                param, params, source, sources, data, type, lookup = this.lookup,\r
                                matches, attrs, urlConverter = this.editor.settings.url_converter,\r
-                               urlConverterScope = this.editor.settings.url_converter_scope;\r
+                               urlConverterScope = this.editor.settings.url_converter_scope,\r
+                               hspace, vspace, align, bgcolor;\r
 \r
                        function getInnerHTML(node) {\r
                                return new tinymce.html.Serializer({\r
                                }).serialize(node);\r
                        };\r
 \r
+                       function lookupAttribute(o, attr) {\r
+                               return lookup[(o.attr(attr) || '').toLowerCase()];\r
+                       }\r
+\r
+                       function lookupExtension(src) {\r
+                               var ext = src.replace(/^.*\.([^.]+)$/, '$1');\r
+                               return lookup[ext.toLowerCase() || ''];\r
+                       }\r
+\r
                        // If node isn't in document\r
                        if (!node.parent)\r
                                return;\r
 \r
                        // Video element\r
                        name = node.name;\r
-                       if (name === 'video') {\r
+                       if (name === 'video' || name == 'audio') {\r
                                video = node;\r
                                object = node.getAll('object')[0];\r
                                embed = node.getAll('embed')[0];\r
 \r
                                source = node.attr('src');\r
                                if (source)\r
-                                       data.video.sources.push({src : urlConverter.call(urlConverterScope, source, 'src', 'video')});\r
+                                       data.video.sources.push({src : urlConverter.call(urlConverterScope, source, 'src', node.name)});\r
 \r
                                // Get all sources\r
                                sources = video.getAll("source");\r
 \r
                                // Convert the poster URL\r
                                if (attrs.poster)\r
-                                       attrs.poster = urlConverter.call(urlConverterScope, attrs.poster, 'poster', 'video');\r
+                                       attrs.poster = urlConverter.call(urlConverterScope, attrs.poster, 'poster', node.name);\r
                        }\r
 \r
                        // Object element\r
                                height = height || object.attr('height');\r
                                style = style || object.attr('style');\r
                                id = id || object.attr('id');\r
+                               hspace = hspace || object.attr('hspace');\r
+                               vspace = vspace || object.attr('vspace');\r
+                               align = align || object.attr('align');\r
+                               bgcolor = bgcolor || object.attr('bgcolor');\r
+                               data.name = object.attr('name');\r
 \r
                                // Get all object params\r
                                params = object.getAll("param");\r
                                height = height || embed.attr('height');\r
                                style = style || embed.attr('style');\r
                                id = id || embed.attr('id');\r
+                               hspace = hspace || embed.attr('hspace');\r
+                               vspace = vspace || embed.attr('vspace');\r
+                               align = align || embed.attr('align');\r
+                               bgcolor = bgcolor || embed.attr('bgcolor');\r
 \r
                                // Get all embed attributes\r
                                for (name in embed.attributes.map) {\r
 \r
                        if (iframe) {\r
                                // Get width/height\r
-                               width = iframe.attr('width');\r
-                               height = iframe.attr('height');\r
+                               width = normalizeSize(iframe.attr('width'));\r
+                               height = normalizeSize(iframe.attr('height'));\r
                                style = style || iframe.attr('style');\r
                                id = iframe.attr('id');\r
+                               hspace = iframe.attr('hspace');\r
+                               vspace = iframe.attr('vspace');\r
+                               align = iframe.attr('align');\r
+                               bgcolor = iframe.attr('bgcolor');\r
 \r
                                tinymce.each(rootAttributes, function(name) {\r
                                        img.attr(name, iframe.attr(name));\r
                        if (data.params.src)\r
                                data.params.src = urlConverter.call(urlConverterScope, data.params.src, 'src', 'object');\r
 \r
-                       if (video)\r
-                               type = lookup.video.name;\r
+                       if (video) {\r
+                               if (node.name === 'video')\r
+                                       type = lookup.video.name;\r
+                               else if (node.name === 'audio')\r
+                                       type = lookup.audio.name;\r
+                       }\r
 \r
                        if (object && !type)\r
-                               type = (lookup[(object.attr('clsid') || '').toLowerCase()] || lookup[(object.attr('type') || '').toLowerCase()] || {}).name;\r
+                               type = (lookupAttribute(object, 'clsid') || lookupAttribute(object, 'classid') || lookupAttribute(object, 'type') || {}).name;\r
 \r
                        if (embed && !type)\r
-                               type = (lookup[(embed.attr('type') || '').toLowerCase()] || {}).name;\r
+                               type = (lookupAttribute(embed, 'type') || lookupExtension(data.params.src) || {}).name;\r
+\r
+                       // for embedded audio we preserve the original specified type\r
+                       if (embed && type == 'EmbeddedAudio') {\r
+                               data.params.type = embed.attr('type');\r
+                       }\r
 \r
                        // Replace the video/object/embed element with a placeholder image containing the data\r
                        node.replace(img);\r
                                        data.video_html = html;\r
                        }\r
 \r
+                       data.hspace = hspace;\r
+                       data.vspace = vspace;\r
+                       data.align = align;\r
+                       data.bgcolor = bgcolor;\r
+\r
                        // Set width/height of placeholder\r
                        img.attr({\r
                                id : id,\r
                                'class' : 'mceItemMedia mceItem' + (type || 'Flash'),\r
                                style : style,\r
-                               width : width || "320",\r
-                               height : height || "240",\r
+                               width : width || (node.name == 'audio' ? "300" : "320"),\r
+                               height : height || (node.name == 'audio' ? "32" : "240"),\r
+                               hspace : hspace,\r
+                               vspace : vspace,\r
+                               align : align,\r
+                               bgcolor : bgcolor,\r
                                "data-mce-json" : JSON.serialize(data, "'")\r
                        });\r
                }\r
 \r
        // Register plugin\r
        tinymce.PluginManager.add('media', tinymce.plugins.MediaPlugin);\r
-})();
\ No newline at end of file
+})();\r
index 30ad656175e1395bcd150a7bc575bcc5ad2170b6..f6a081a6327c44c727429539ce917f555e040882 100644 (file)
@@ -8,6 +8,33 @@
                return document.getElementById(id);\r
        }\r
 \r
+       function clone(obj) {\r
+               var i, len, copy, attr;\r
+\r
+               if (null == obj || "object" != typeof obj)\r
+                       return obj;\r
+\r
+               // Handle Array\r
+               if ('length' in obj) {\r
+                       copy = [];\r
+\r
+                       for (i = 0, len = obj.length; i < len; ++i) {\r
+                               copy[i] = clone(obj[i]);\r
+                       }\r
+\r
+                       return copy;\r
+               }\r
+\r
+               // Handle Object\r
+               copy = {};\r
+               for (attr in obj) {\r
+                       if (obj.hasOwnProperty(attr))\r
+                               copy[attr] = clone(obj[attr]);\r
+               }\r
+\r
+               return copy;\r
+       }\r
+\r
        function getVal(id) {\r
                var elm = get(id);\r
 \r
                return elm.value;\r
        }\r
 \r
-       function setVal(id, value) {\r
-               if (typeof(value) != 'undefined') {\r
+       function setVal(id, value, name) {\r
+               if (typeof(value) != 'undefined' && value != null) {\r
                        var elm = get(id);\r
 \r
                        if (elm.nodeName == "SELECT")\r
                                selectByValue(document.forms[0], id, value);\r
                        else if (elm.type == "checkbox") {\r
-                               if (typeof(value) == 'string')\r
-                                       elm.checked = value.toLowerCase() === 'true' ? true : false;\r
-                               else\r
-                                       elm.checked = !!value;\r
+                               if (typeof(value) == 'string') {\r
+                                       value = value.toLowerCase();\r
+                                       value = (!name && value === 'true') || (name && value === name.toLowerCase());\r
+                               }\r
+                               elm.checked = !!value;\r
                        } else\r
                                elm.value = value;\r
                }\r
 \r
        window.Media = {\r
                init : function() {\r
-                       var html, editor;\r
+                       var html, editor, self = this;\r
 \r
-                       this.editor = editor = tinyMCEPopup.editor;\r
+                       self.editor = editor = tinyMCEPopup.editor;\r
 \r
                        // Setup file browsers and color pickers\r
                        get('filebrowsercontainer').innerHTML = getBrowserHTML('filebrowser','src','media','media');\r
                        get('qtsrcfilebrowsercontainer').innerHTML = getBrowserHTML('qtsrcfilebrowser','quicktime_qtsrc','media','media');\r
                        get('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');\r
-                       get('video_altsource1_filebrowser').innerHTML = getBrowserHTML('filebrowser_altsource1','video_altsource1','media','media');\r
-                       get('video_altsource2_filebrowser').innerHTML = getBrowserHTML('filebrowser_altsource2','video_altsource2','media','media');\r
-                       get('video_poster_filebrowser').innerHTML = getBrowserHTML('filebrowser_poster','video_poster','media','image');\r
+                       get('video_altsource1_filebrowser').innerHTML = getBrowserHTML('video_filebrowser_altsource1','video_altsource1','media','media');\r
+                       get('video_altsource2_filebrowser').innerHTML = getBrowserHTML('video_filebrowser_altsource2','video_altsource2','media','media');\r
+                       get('audio_altsource1_filebrowser').innerHTML = getBrowserHTML('audio_filebrowser_altsource1','audio_altsource1','media','media');\r
+                       get('audio_altsource2_filebrowser').innerHTML = getBrowserHTML('audio_filebrowser_altsource2','audio_altsource2','media','media');\r
+                       get('video_poster_filebrowser').innerHTML = getBrowserHTML('filebrowser_poster','video_poster','image','media');\r
 \r
-                       html = this.getMediaListHTML('medialist', 'src', 'media', 'media');\r
+                       html = self.getMediaListHTML('medialist', 'src', 'media', 'media');\r
                        if (html == "")\r
                                get("linklistrow").style.display = 'none';\r
                        else\r
                        if (isVisible('filebrowser'))\r
                                get('src').style.width = '230px';\r
 \r
-                       if (isVisible('filebrowser_altsource1'))\r
+                       if (isVisible('video_filebrowser_altsource1'))\r
                                get('video_altsource1').style.width = '220px';\r
 \r
-                       if (isVisible('filebrowser_altsource2'))\r
+                       if (isVisible('video_filebrowser_altsource2'))\r
                                get('video_altsource2').style.width = '220px';\r
 \r
+                       if (isVisible('audio_filebrowser_altsource1'))\r
+                               get('audio_altsource1').style.width = '220px';\r
+\r
+                       if (isVisible('audio_filebrowser_altsource2'))\r
+                               get('audio_altsource2').style.width = '220px';\r
+\r
                        if (isVisible('filebrowser_poster'))\r
                                get('video_poster').style.width = '220px';\r
 \r
-                       this.data = tinyMCEPopup.getWindowArg('data');\r
-                       this.dataToForm();\r
-                       this.preview();\r
+                       editor.dom.setOuterHTML(get('media_type'), self.getMediaTypeHTML(editor));\r
+\r
+                       self.setDefaultDialogSettings(editor);\r
+                       self.data = clone(tinyMCEPopup.getWindowArg('data'));\r
+                       self.dataToForm();\r
+                       self.preview();\r
+\r
+                       updateColor('bgcolor_pick', 'bgcolor');\r
                },\r
 \r
                insert : function() {\r
                },\r
 \r
                moveStates : function(to_form, field) {\r
-                       var data = this.data, editor = this.editor, data = this.data,\r
+                       var data = this.data, editor = this.editor,\r
                                mediaPlugin = editor.plugins.media, ext, src, typeInfo, defaultStates, src;\r
 \r
                        defaultStates = {\r
                                                formItemName = type == 'global' ? name : type + '_' + name;\r
 \r
                                                if (type == 'global')\r
-                                                       list = data;\r
-                                               else if (type == 'video') {\r
+                                               list = data;\r
+                                       else if (type == 'video' || type == 'audio') {\r
                                                        list = data.video.attrs;\r
 \r
                                                        if (!list && !to_form)\r
-                                                               data.video.attrs = list = {};\r
+                                                       data.video.attrs = list = {};\r
                                                } else\r
-                                                       list = data.params;\r
+                                               list = data.params;\r
 \r
                                                if (list) {\r
                                                        if (to_form) {\r
-                                                               setVal(formItemName, list[name]);\r
+                                                               setVal(formItemName, list[name], type == 'video' || type == 'audio' ? name : '');\r
                                                        } else {\r
                                                                delete list[name];\r
 \r
                                                                value = getVal(formItemName);\r
-                                                               if (type == 'video' && value === true)\r
+                                                               if ((type == 'video' || type == 'audio') && value === true)\r
                                                                        value = name;\r
 \r
                                                                if (defaultStates[formItemName]) {\r
                                        setVal('media_type', data.type);\r
                                }\r
 \r
-                               if (data.type == "video") {\r
+                               if (data.type == "video" || data.type == "audio") {\r
                                        if (!data.video.sources)\r
                                                data.video.sources = [];\r
 \r
 \r
                        // Hide all fieldsets and show the one active\r
                        get('video_options').style.display = 'none';\r
+                       get('audio_options').style.display = 'none';\r
                        get('flash_options').style.display = 'none';\r
                        get('quicktime_options').style.display = 'none';\r
                        get('shockwave_options').style.display = 'none';\r
                        get('windowsmedia_options').style.display = 'none';\r
                        get('realmedia_options').style.display = 'none';\r
+                       get('embeddedaudio_options').style.display = 'none';\r
 \r
                        if (get(data.type + '_options'))\r
                                get(data.type + '_options').style.display = 'block';\r
                        setOptions('shockwave', 'sound,progress,autostart,swliveconnect,swvolume,swstretchstyle,swstretchhalign,swstretchvalign');\r
                        setOptions('windowsmedia', 'autostart,enabled,enablecontextmenu,fullscreen,invokeurls,mute,stretchtofit,windowlessvideo,balance,baseurl,captioningid,currentmarker,currentposition,defaultframe,playcount,rate,uimode,volume');\r
                        setOptions('realmedia', 'autostart,loop,autogotourl,center,imagestatus,maintainaspect,nojava,prefetch,shuffle,console,controls,numloop,scriptcallbacks');\r
-                       setOptions('video', 'poster,autoplay,loop,preload,controls');\r
+                       setOptions('video', 'poster,autoplay,loop,muted,preload,controls');\r
+                       setOptions('audio', 'autoplay,loop,preload,controls');\r
+                       setOptions('embeddedaudio', 'autoplay,loop,controls');\r
                        setOptions('global', 'id,name,vspace,hspace,bgcolor,align,width,height');\r
 \r
                        if (to_form) {\r
                                        src = data.video.sources[2];\r
                                        if (src)\r
                                                setVal('video_altsource2', src.src);\r
+                } else if (data.type == 'audio') {\r
+                    if (data.video.sources[0])\r
+                        setVal('src', data.video.sources[0].src);\r
+                    \r
+                    src = data.video.sources[1];\r
+                    if (src)\r
+                        setVal('audio_altsource1', src.src);\r
+                    \r
+                    src = data.video.sources[2];\r
+                    if (src)\r
+                        setVal('audio_altsource2', src.src);\r
                                } else {\r
                                        // Check flash vars\r
                                        if (data.type == 'flash') {\r
                                                tinymce.each(editor.getParam('flash_video_player_flashvars', {url : '$url', poster : '$poster'}), function(value, name) {\r
                                                        if (value == '$url')\r
-                                                               data.params.src = parseQueryParams(data.params.flashvars)[name] || data.params.src;\r
+                                                               data.params.src = parseQueryParams(data.params.flashvars)[name] || data.params.src || '';\r
                                                });\r
                                        }\r
 \r
                                }\r
                        } else {\r
                                src = getVal("src");\r
-       \r
+\r
+                               // YouTube *NEW*\r
+                               if (src.match(/youtu.be\/[a-z1-9.-_]+/)) {\r
+                                       data.width = 425;\r
+                                       data.height = 350;\r
+                                       data.params.frameborder = '0';\r
+                                       data.type = 'iframe';\r
+                                       src = 'http://www.youtube.com/embed/' + src.match(/youtu.be\/([a-z1-9.-_]+)/)[1];\r
+                                       setVal('src', src);\r
+                                       setVal('media_type', data.type);\r
+                               }\r
+\r
                                // YouTube\r
                                if (src.match(/youtube.com(.+)v=([^&]+)/)) {\r
                                        data.width = 425;\r
                                        setVal('src', src);\r
                                        setVal('media_type', data.type);\r
                                }\r
+                               \r
+                               // Vimeo\r
+                               if (src.match(/vimeo.com\/([0-9]+)/)) {\r
+                                       data.width = 425;\r
+                                       data.height = 350;\r
+                                       data.params.frameborder = '0';\r
+                                       data.type = 'iframe';\r
+                                       src = 'http://player.vimeo.com/video/' + src.match(/vimeo.com\/([0-9]+)/)[1];\r
+                                       setVal('src', src);\r
+                                       setVal('media_type', data.type);\r
+                               }\r
+            \r
+                               // stream.cz\r
+                               if (src.match(/stream.cz\/((?!object).)*\/([0-9]+)/)) {\r
+                                       data.width = 425;\r
+                                       data.height = 350;\r
+                                       data.params.frameborder = '0';\r
+                                       data.type = 'iframe';\r
+                                       src = 'http://www.stream.cz/object/' + src.match(/stream.cz\/[^/]+\/([0-9]+)/)[1];\r
+                                       setVal('src', src);\r
+                                       setVal('media_type', data.type);\r
+                               }\r
+                               \r
+                               // Google maps\r
+                               if (src.match(/maps.google.([a-z]{2,3})\/maps\/(.+)msid=(.+)/)) {\r
+                                       data.width = 425;\r
+                                       data.height = 350;\r
+                                       data.params.frameborder = '0';\r
+                                       data.type = 'iframe';\r
+                                       src = 'http://maps.google.com/maps/ms?msid=' + src.match(/msid=(.+)/)[1] + "&output=embed";\r
+                                       setVal('src', src);\r
+                                       setVal('media_type', data.type);\r
+                               }\r
 \r
                                if (data.type == 'video') {\r
                                        if (!data.video.sources)\r
                                        src = getVal("video_altsource2");\r
                                        if (src)\r
                                                data.video.sources[2] = {src : src};\r
+                } else if (data.type == 'audio') {\r
+                    if (!data.video.sources)\r
+                        data.video.sources = [];\r
+                    \r
+                    data.video.sources[0] = {src : src};\r
+                    \r
+                    src = getVal("audio_altsource1");\r
+                    if (src)\r
+                        data.video.sources[1] = {src : src};\r
+                    \r
+                    src = getVal("audio_altsource2");\r
+                    if (src)\r
+                        data.video.sources[2] = {src : src};\r
                                } else\r
                                        data.params.src = src;\r
 \r
                                // Set default size\r
-                               setVal('width', data.width || 320);\r
-                               setVal('height', data.height || 240);\r
+                setVal('width', data.width || (data.type == 'audio' ? 300 : 320));\r
+                setVal('height', data.height || (data.type == 'audio' ? 32 : 240));\r
                        }\r
                },\r
 \r
                                this.panel = 'source';\r
                        } else {\r
                                if (this.panel == 'source') {\r
-                                       this.data = this.editor.plugins.media.htmlToData(getVal('source'));\r
+                                       this.data = clone(this.editor.plugins.media.htmlToData(getVal('source')));\r
                                        this.dataToForm();\r
                                        this.panel = '';\r
                                }\r
                },\r
 \r
                beforeResize : function() {\r
-                       this.width = parseInt(getVal('width') || "320", 10);\r
-                       this.height = parseInt(getVal('height') || "240", 10);\r
+            this.width = parseInt(getVal('width') || (this.data.type == 'audio' ? "300" : "320"), 10);\r
+            this.height = parseInt(getVal('height') || (this.data.type == 'audio' ? "32" : "240"), 10);\r
                },\r
 \r
                changeSize : function(type) {\r
                        var width, height, scale, size;\r
 \r
                        if (get('constrain').checked) {\r
-                               width = parseInt(getVal('width') || "320", 10);\r
-                               height = parseInt(getVal('height') || "240", 10);\r
+                width = parseInt(getVal('width') || (this.data.type == 'audio' ? "300" : "320"), 10);\r
+                height = parseInt(getVal('height') || (this.data.type == 'audio' ? "32" : "240"), 10);\r
 \r
                                if (type == 'width') {\r
                                        this.height = Math.round((width / this.width) * height);\r
                        }\r
 \r
                        return "";\r
+               },\r
+\r
+               getMediaTypeHTML : function(editor) {\r
+                       function option(media_type, element) {\r
+                               if (!editor.schema.getElementRule(element || media_type)) {\r
+                                       return '';\r
+                               }\r
+\r
+                               return '<option value="'+media_type+'">'+tinyMCEPopup.editor.translate("media_dlg."+media_type)+'</option>'\r
+                       }\r
+\r
+                       var html = "";\r
+\r
+                       html += '<select id="media_type" name="media_type" onchange="Media.formToData(\'type\');">';\r
+                       html += option("video");\r
+                       html += option("audio");\r
+                       html += option("flash", "object");\r
+                       html += option("quicktime", "object");\r
+                       html += option("shockwave", "object");\r
+                       html += option("windowsmedia", "object");\r
+                       html += option("realmedia", "object");\r
+                       html += option("iframe");\r
+\r
+                       if (editor.getParam('media_embedded_audio', false)) {\r
+                               html += option('embeddedaudio', "object");\r
+                       }\r
+\r
+                       html += '</select>';\r
+                       return html;\r
+               },\r
+\r
+               setDefaultDialogSettings : function(editor) {\r
+                       var defaultDialogSettings = editor.getParam("media_dialog_defaults", {});\r
+                       tinymce.each(defaultDialogSettings, function(v, k) {\r
+                               setVal(k, v);\r
+                       });\r
                }\r
        };\r
 \r
        tinyMCEPopup.onInit.add(function() {\r
                Media.init();\r
        });\r
-})();
\ No newline at end of file
+})();\r
old mode 100755 (executable)
new mode 100644 (file)
index 7249ba5..bc74468
@@ -1 +1 @@
-tinyMCE.addI18n('ar.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"\u0639\u0627\u0645",title:"Insert / edit embedded media",align_top_left:"Top left",align_center:"Center",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:"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",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"});
\ No newline at end of file
+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
index 64e11576aa5006a24817c83a080b1054911e4e21..5fd1f6b6c89db479ab003797ad2f7552bc006e43 100644 (file)
@@ -1 +1 @@
-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",flv_options:"Fla\u015f video nizamlamalar\u0131",flv_scalemode:"Miqyas \u00fcsulu",flv_buffer:"Bufer",flv_startimage:"Ba\u015flan\u011f\u0131c \u015f\u0259kil",flv_starttime:"Ba\u015flan\u011f\u0131c zaman",flv_defaultvolume:"Susmaya g\u00f6r\u0259 s\u0259s",flv_hiddengui:"Gizli GUI",flv_autostart:"Avtomatik ba\u015flat",flv_loop:"\u0130lm\u0259",flv_showscalemodes:"\u00d6l\u00e7\u0259k rejiml\u0259ri g\u00f6st\u0259r",flv_smoothvideo:"Videonu yum\u015falt",flv_jscallback:"JS \u00c7a\u011f\u0131r\u0131mlar\u0131"});
\ No newline at end of file
+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/be_dlg.js b/program/js/tiny_mce/plugins/media/langs/be_dlg.js
deleted file mode 100644 (file)
index 2f2ed6c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('be.media_dlg',{list:"\u0421\u043f\u0456\u0441",file:"\u0424\u0430\u0439\u043b/\u0430\u0434\u0440\u0430\u0441",advanced:"\u0414\u0430\u0434\u0430\u0442\u043a\u043e\u0432\u044b\u044f",general:"\u0410\u0433\u0443\u043b\u044c\u043d\u044b\u044f",title:"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c/\u0440\u044d\u0434\u0430\u0433\u0430\u0432\u0430\u0446\u044c \u043c\u0435\u0434\u044b\u044f-\u0430\u0431\'\u0435\u043a\u0442",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:"\u0410\u0434\u043b\u044e\u0441\u0442\u0440\u0430\u0432\u0430\u0446\u044c \u043c\u0435\u043d\u044e",loop:"\u0417\u0430\u0446\u044b\u043a\u043b\u0456\u0446\u044c",play:"\u041f\u0440\u0430\u0439\u0433\u0440\u0430\u0432\u0430\u0446\u044c \u0430\u045e\u0442\u0430\u043c\u0430\u0442\u044b\u0447\u043d\u0430",hspace:"\u0413\u0430\u0440\u044b\u0437\u0430\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u0430\u0441\u0442\u043e\u0440\u0430",vspace:"\u0412\u0435\u0440\u0442\u044b\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u0430\u0441\u0442\u043e\u0440\u0430",class_name:"\u041a\u043b\u0430\u0441",name:"\u041d\u0430\u0437\u043e\u045e",id:"\u0406\u0434\u044d\u043d\u0442\u044b\u0444\u0456\u043a\u0430\u0442\u0430\u0440",type:"\u0422\u044b\u043f",size:"\u041f\u0430\u043c\u0435\u0440\u044b",preview:"\u041f\u0430\u043f\u044f\u0440\u044d\u0434\u043d\u0456 \u043f\u0440\u0430\u0433\u043b\u044f\u0434",constrain_proportions:"\u0417\u0430\u0445\u043e\u045e\u0432\u0430\u0446\u044c \u043f\u0440\u0430\u043f\u043e\u0440\u0446\u044b\u0456",controls:"Controls",numloop:"Num loops",console:"Console",cache:"\u041a\u044d\u0448",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"\u0410\u0441\u043d\u043e\u0432\u0430",bgcolor:"\u0424\u043e\u043d",wmode:"WMode",salign:"SAlign",align:"\u0412\u044b\u0440\u0430\u045e\u043d\u043e\u045e\u0432\u0430\u043d\u043d\u0435",scale:"\u041c\u0430\u0448\u0442\u0430\u0431",quality:"\u042f\u043a\u0430\u0441\u0446\u044c",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:"\u0421\u043a\u0440\u044b\u0442\u043e\u0435",align_bottom_left:"Bottom left",align_bottom_right:"Bottom right",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"});
\ No newline at end of file
old mode 100755 (executable)
new mode 100644 (file)
index ef62029..0b16481
@@ -1 +1 @@
-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\u0430\u0442\u0430",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 Src",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:"Script callbacks",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:"Captioning 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:"Invoke URLs",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:"Flashvars",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",flv_options:"\u0412\u0438\u0434\u0435\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0437\u0430 Flash",flv_scalemode:"\u0420\u0435\u0436\u0438\u043c \u043d\u0430 \u043f\u0440\u0435\u043e\u0440\u0430\u0437\u043c\u0435\u0440\u044f\u0432\u0430\u043d\u0435",flv_buffer:"\u0411\u0443\u0444\u0435\u0440",flv_startimage:"\u041d\u0430\u0447\u0430\u043b\u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430",flv_starttime:"\u041d\u0430\u0447\u0430\u043b\u043d\u043e \u0432\u0440\u0435\u043c\u0435",flv_defaultvolume:"\u0421\u0438\u043b\u0430 \u043d\u0430 \u0437\u0432\u0443\u043a\u0430 \u043f\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043d\u0435",flv_hiddengui:"\u0421\u043a\u0440\u0438\u0442\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435",flv_autostart:"\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u043d \u0441\u0442\u0430\u0440\u0442",flv_loop:"\u041f\u043e\u0432\u0442\u0430\u0440\u044f\u0439",flv_showscalemodes:"\u041f\u043e\u043a\u0430\u0436\u0438 \u0440\u0435\u0436\u0438\u043c\u0438\u0442\u0435 \u043d\u0430 \u043f\u0440\u0435\u043e\u0440\u0430\u0437\u043c\u0435\u0440\u044f\u0432\u0430\u043d\u0435",flv_smoothvideo:"\u0413\u043b\u0430\u0434\u043a\u043e \u0432\u0438\u0434\u0435\u043e",flv_jscallback:"JS \u043f\u043e\u0434\u0434\u0440\u044a\u0436\u043a\u0430"});
\ No newline at end of file
+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
index 9c4bdd847af2ca1bd4380c773fd48d005e059557..216365a9d33660c5959c72bda331a014d76059d9 100644 (file)
@@ -1 +1 @@
-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","flv_options":"Flash video options","flv_scalemode":"Scale mode","flv_buffer":"Buffer","flv_startimage":"Start image","flv_starttime":"Start time","flv_defaultvolume":"Default volumne","flv_hiddengui":"Hidden GUI","flv_autostart":"Auto start","flv_loop":"Loop","flv_showscalemodes":"Show scale modes","flv_smoothvideo":"Smooth video","flv_jscallback":"JS Callback","html5_video_options":"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source"});
\ No newline at end of file
+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
index 437a7d770f15a82124fbb3c733a0a205023c282f..81d197820f85cac6075dbd44f3c1e29102f78803 100644 (file)
@@ -1 +1 @@
-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",flv_options:"Op\u00e7\u00f5es de Flash video",flv_scalemode:"Modo escala",flv_buffer:"Buffer",flv_startimage:"Imagem inicial",flv_starttime:"Hora inicial",flv_defaultvolume:"Volume padr\u00e3o",flv_hiddengui:"GUI oculta",flv_autostart:"Execu\u00e7\u00e3o Autom\u00e1tica",flv_loop:"Loop",flv_showscalemodes:"Mostrar modos escala",flv_smoothvideo:"Smooth video",flv_jscallback:"JS callback"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 36435b4..1a5cb23
@@ -1 +1 @@
-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",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index d10ef41..1162d4e
@@ -1 +1 @@
-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","flv_options":"Opcions de v\u00eddeo Flash","flv_scalemode":"Mode d\'escalat","flv_buffer":"Mem\u00f2ria interm\u00e8dia","flv_startimage":"Imatge d\'inici","flv_starttime":"Hora d\'inici","flv_defaultvolume":"Volumen per defecte","flv_hiddengui":"GUI ocult","flv_autostart":"Inici autom\u00e0tic","flv_loop":"Bucle","flv_showscalemodes":"Mostra els modes d\'escalat","flv_smoothvideo":"V\u00eddeo suau","flv_jscallback":"Crida de retorn JS","html5_video_options":"Opcions de v\u00eddeo HTML5",altsource1:"Font alternatiu 1",altsource2:"Font alternatiu 2",preload:"Pre-c\u00e0rrega",poster:"Anunci",source:"Font"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 2527e02..b126861
@@ -1 +1 @@
-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",flv_options:"Mo\u017enosti Flash video",flv_scalemode:"Zm\u011bna velikosti",flv_buffer:"Z\u00e1sobn\u00edk",flv_startimage:"Po\u010d\u00e1te\u010dn\u00ed obr\u00e1zek",flv_starttime:"Po\u010d\u00e1te\u010dn\u00ed \u010das",flv_defaultvolume:"V\u00fdchoz\u00ed hlasitost",flv_hiddengui:"Skryt\u00fd ovl\u00e1dac\u00ed panel",flv_autostart:"Automatick\u00e9 spu\u0161t\u011bn\u00ed",flv_loop:"Opakov\u00e1n\u00ed",flv_showscalemodes:"Zobrazit volby zm\u011bny velikosti",flv_smoothvideo:"Vyhlazen\u00e9 video",flv_jscallback:"Zp\u011btn\u00e9 vol\u00e1n\u00ed Javascriptu",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"});
\ No newline at end of file
+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
index b731a8adf7035f150e91f1fc902eb8a0346bec49..122a78fe93181afa7b7536bdfa004f07014211e4 100644 (file)
@@ -1 +1 @@
-tinyMCE.addI18n('cy.media_dlg',{list:"Rhestr",file:"Ffeil/URL",advanced:"Uwch",general:"Cyffredinol",title:"Mewnosod / golygu cyfrwng planedig",align_top_left:"Pen canol",align_center:"Canol",align_left:"Chwith",align_bottom:"Gwaelod",align_right:"De",align_top:"Pen",qt_stream_warn:"Dylai adnoddau RTSP ffrydio cael eu ychwanegu i\'r maes Fynhonell QT o dan y tab Uwch.\\n Dylai chi hefyd ychwanegu fersiwn heb-ffrydio i\'r maes Fynhonell.",qtsrc:"Fynhonell QT",progress:"Cynnydd",sound:"Sain",swstretchvalign:"Aliniad fertigol ymestyn",swstretchhalign:"Aliniad llorweddol ymestyn",swstretchstyle:"Arddull ymestyn",scriptcallbacks:"N\u00f4l-galwadau sgript",align_top_right:"Pen dde",uimode:"Modd UI",rate:"Cyfradd",playcount:"Cyfrif chwarae",defaultframe:"Ffr\u00e2m rhagosodedig",currentposition:"Lleoliad cyfredol",currentmarker:"Marciwr cyfredol",captioningid:"Id egluro",baseurl:"URL seiledig",balance:"Cydbwysedd",windowlessvideo:"Fideo heb-ffenest",stretchtofit:"Ymestun i ffitio",mute:"Mudo",invokeurls:"Defnyddio URLs",fullscreen:"Sgrin llawn",enabled:"Wedi\'i galluogi",autostart:"Awto-cychwyn",volume:"Cyfrol",target:"Targed",qtsrcchokespeed:"Tagu cyflymder",href:"Href",endtime:"Amser gorffen",starttime:"Amser dechrae",enablejavascript:"Galluogi JavaScript",correction:"Dim cywiriad",targetcache:"Storfa targed",playeveryframe:"Chwarae pob ffr\u00e2m",kioskmode:"Modd ciosk",controller:"Rheolydd",menu:"Dangos dewislen",loop:"Dolen",play:"Awto-chwarae",hspace:"Gofod llorweddol",vspace:"Gofod fertigol",class_name:"Dosbarth",name:"Enw",id:"Id",type:"Math",size:"Dimensiynau",preview:"Rhagolygu",constrain_proportions:"Cynfyngu cyfraneddau",controls:"Rheolyddion",numloop:"Nifer o dolenau",console:"Consol",cache:"Storfa",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Sail",bgcolor:"Cefndir",wmode:"Modd-W",salign:"Alinio-S",align:"Alinio",scale:"Gradd",quality:"Ansawdd",shuffle:"Cymysgu",prefetch:"Cyn-n\u00f4l",nojava:"Dim java",maintainaspect:"Cynnal agwedd",imagestatus:"Statws delwedd",center:"Canol",autogotourl:"URL awto-mynd-i",shockwave_options:"Dewisiadau Shockwave",rmp_options:"Dewisiadau Real Media Player",wmp_options:"Dewisiadau Windows Media Player",qt_options:"Dewisiadau Quicktime",flash_options:"Dewisiadau Flash",hidden:"Wedi\'i cuddio",align_bottom_left:"Gwaelod chwith",align_bottom_right:"Gwaelod dde",flv_options:"Dewisiadau fideo Flash",flv_scalemode:"Modd graddfa",flv_buffer:"Buffer",flv_startimage:"Delwedd cychwyn",flv_starttime:"Amser cychwyn",flv_defaultvolume:"Cyfrol rhagosodedig",flv_hiddengui:"GUI wedi\'i cuddio",flv_autostart:"Awto-cychwyn",flv_loop:"Doleni",flv_showscalemodes:"Dangos moddau graddfa",flv_smoothvideo:"Fideo llyfn",flv_jscallback:"N\u00f4l-galwad JS"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 471139b..d9a88d1
@@ -1 +1 @@
-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:"Fulssk\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",flv_options:"Flash video egenskaber",flv_scalemode:"Skaleringstilstand",flv_buffer:"Buffer",flv_startimage:"Startbillede",flv_starttime:"Starttidspunkt",flv_defaultvolume:"Standard lydstyrke",flv_hiddengui:"Skjul sk\u00e6rmbillede",flv_autostart:"Autostart",flv_loop:"Gentag",flv_showscalemodes:"Vis skaleringstilstande",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback",html5_video_options:"HTML5 Video Indstillinger",altsource1:"Alternativ kilde 1",altsource2:"Alternativ kilde 2",preload:"Forudindl\u00e6s",poster:"Poster",source:"Kilde"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index e7d3cfd..6d0de76
@@ -1 +1 @@
-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",flv_options:"Optionen f\u00fcr Flash Video",flv_scalemode:"Skalierungsmodus",flv_buffer:"Puffer",flv_startimage:"Startbild",flv_starttime:"Startzeitpunkt",flv_defaultvolume:"Standardlautst\u00e4rke",flv_hiddengui:"Versteckte GUI",flv_autostart:"Autostart",flv_loop:"Wiederholung",flv_showscalemodes:"Skalierungsmodi anzeigen",flv_smoothvideo:"Smooth Video",flv_jscallback:"JS Callback",html5_video_options:"HTML5 Video Optionen",altsource1:"Alternative Quelle 1",altsource2:"Alternative Quelle 2",preload:"Preload",poster:"Poster",source:"Quelle"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index efcf718..157767d
@@ -1 +1 @@
-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",flv_options:"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 \u03b2\u03af\u03bd\u03c4\u03b5\u03bf Flash",flv_scalemode:"\u039b\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03ba\u03bb\u03af\u03bc\u03b1\u03ba\u03b1\u03c2",flv_buffer:"\u0395\u03bd\u03b4\u03b9\u03ac\u03bc\u03b5\u03c3\u03b7 \u03bc\u03bd\u03ae\u03bc\u03b7",flv_startimage:"\u0395\u03b9\u03ba\u03cc\u03bd\u03b1 \u03b1\u03c1\u03c7\u03ae\u03c2",flv_starttime:"\u03a7\u03c1\u03cc\u03bd\u03bf\u03c2 \u03ad\u03bd\u03b1\u03c1\u03be\u03b7\u03c2",flv_defaultvolume:"\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03b7 \u03ad\u03bd\u03c4\u03b1\u03c3\u03b7",flv_hiddengui:"\u039a\u03c1\u03c5\u03bc\u03bc\u03ad\u03bd\u03bf GUI",flv_autostart:"\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03b5\u03ba\u03ba\u03af\u03bd\u03b7\u03c3\u03b7",flv_loop:"\u0395\u03c0\u03b1\u03bd\u03ac\u03bb\u03b7\u03c8\u03b7",flv_showscalemodes:"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03b9\u03ce\u03bd \u03ba\u03bb\u03af\u03bc\u03b1\u03ba\u03b1\u03c2",flv_smoothvideo:"\u039f\u03bc\u03b1\u03bb\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2 \u03b2\u03af\u03bd\u03c4\u03b5\u03bf",flv_jscallback:"JS Callback",html5_video_options:"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source"});
\ No newline at end of file
+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
index 29d26a0d41673a4771cc39821caf619eccdad7e4..b247f85cd5c332daee673f899594c6b782db47c8 100644 (file)
@@ -1,109 +1 @@
-tinyMCE.addI18n('en.media_dlg',{\r
-title:"Insert / edit embedded media",\r
-general:"General",\r
-advanced:"Advanced",\r
-file:"File/URL",\r
-list:"List",\r
-size:"Dimensions",\r
-preview:"Preview",\r
-constrain_proportions:"Constrain proportions",\r
-type:"Type",\r
-id:"Id",\r
-name:"Name",\r
-class_name:"Class",\r
-vspace:"V-Space",\r
-hspace:"H-Space",\r
-play:"Auto play",\r
-loop:"Loop",\r
-menu:"Show menu",\r
-quality:"Quality",\r
-scale:"Scale",\r
-align:"Align",\r
-salign:"SAlign",\r
-wmode:"WMode",\r
-bgcolor:"Background",\r
-base:"Base",\r
-flashvars:"Flashvars",\r
-liveconnect:"SWLiveConnect",\r
-autohref:"AutoHREF",\r
-cache:"Cache",\r
-hidden:"Hidden",\r
-controller:"Controller",\r
-kioskmode:"Kiosk mode",\r
-playeveryframe:"Play every frame",\r
-targetcache:"Target cache",\r
-correction:"No correction",\r
-enablejavascript:"Enable JavaScript",\r
-starttime:"Start time",\r
-endtime:"End time",\r
-href:"Href",\r
-qtsrcchokespeed:"Choke speed",\r
-target:"Target",\r
-volume:"Volume",\r
-autostart:"Auto start",\r
-enabled:"Enabled",\r
-fullscreen:"Fullscreen",\r
-invokeurls:"Invoke URLs",\r
-mute:"Mute",\r
-stretchtofit:"Stretch to fit",\r
-windowlessvideo:"Windowless video",\r
-balance:"Balance",\r
-baseurl:"Base URL",\r
-captioningid:"Captioning id",\r
-currentmarker:"Current marker",\r
-currentposition:"Current position",\r
-defaultframe:"Default frame",\r
-playcount:"Play count",\r
-rate:"Rate",\r
-uimode:"UI Mode",\r
-flash_options:"Flash options",\r
-qt_options:"Quicktime options",\r
-wmp_options:"Windows media player options",\r
-rmp_options:"Real media player options",\r
-shockwave_options:"Shockwave options",\r
-autogotourl:"Auto goto URL",\r
-center:"Center",\r
-imagestatus:"Image status",\r
-maintainaspect:"Maintain aspect",\r
-nojava:"No java",\r
-prefetch:"Prefetch",\r
-shuffle:"Shuffle",\r
-console:"Console",\r
-numloop:"Num loops",\r
-controls:"Controls",\r
-scriptcallbacks:"Script callbacks",\r
-swstretchstyle:"Stretch style",\r
-swstretchhalign:"Stretch H-Align",\r
-swstretchvalign:"Stretch V-Align",\r
-sound:"Sound",\r
-progress:"Progress",\r
-qtsrc:"QT Src",\r
-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..",\r
-align_top:"Top",\r
-align_right:"Right",\r
-align_bottom:"Bottom",\r
-align_left:"Left",\r
-align_center:"Center",\r
-align_top_left:"Top left",\r
-align_top_right:"Top right",\r
-align_bottom_left:"Bottom left",\r
-align_bottom_right:"Bottom right",\r
-flv_options:"Flash video options",\r
-flv_scalemode:"Scale mode",\r
-flv_buffer:"Buffer",\r
-flv_starttime:"Start time",\r
-flv_defaultvolume:"Default volumne",\r
-flv_hiddengui:"Hidden GUI",\r
-flv_autostart:"Auto start",\r
-flv_loop:"Loop",\r
-flv_showscalemodes:"Show scale modes",\r
-flv_smoothvideo:"Smooth video",\r
-flv_jscallback:"JS Callback",\r
-html5_video_options:"HTML5 Video Options",\r
-altsource1:"Alternative source 1",\r
-altsource2:"Alternative source 2",\r
-preload:"Preload",\r
-poster:"Poster",\r
-\r
-source:"Source"\r
-});
\ No newline at end of file
+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",flash:"",quicktime:"","embedded_audio_options":"Embedded Audio Options",windowsmedia:"",realmedia:"",shockwave:"",audio:"",video:"","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",iframe:"",embeddedaudio:""});
\ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/eo_dlg.js b/program/js/tiny_mce/plugins/media/langs/eo_dlg.js
new file mode 100644 (file)
index 0000000..73b1fb9
--- /dev/null
@@ -0,0 +1 @@
+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
old mode 100755 (executable)
new mode 100644 (file)
index 84edec6..4d84bb1
@@ -1 +1 @@
-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:"Target cache",playeveryframe:"Reproducir todo los frames",kioskmode:"Kiosk mode",controller:"Controller",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:"Flashvars",base:"Base",bgcolor:"Fondo",wmode:"WMode",salign:"SAlign",align:"Alineaci\u00f3n",scale:"Scale",quality:"Calidad",shuffle:"Aleatorio",prefetch:"Preb\u00fasqueda",nojava:"No 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:"Hidden","align_bottom_left":"Debajo Izda.","align_bottom_right":"Debajo Dcha.","flv_options":"Opciones Video Flash","flv_scalemode":"Modo escalado","flv_buffer":"Buffer","flv_startimage":"Imagen inicio","flv_starttime":"Tiempo inicio","flv_defaultvolume":"Volumen predet.","flv_hiddengui":"Ocultar GUI","flv_autostart":"Inicio auto.","flv_loop":"Repetitivo","flv_showscalemodes":"Mostrar modos escala","flv_smoothvideo":"Video suave","flv_jscallback":"JS Callback","html5_video_options":"Opciones Video HTML5",altsource1:"Fuente alternativa 1",altsource2:"Fuente alternativa 2",preload:"Precarga",poster:"P\u00f3ster",source:"Fuente"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 25e5ee1..0e305b0
@@ -1 +1 @@
-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",flv_options:"Flash video seaded",flv_scalemode:"Skaala reziim",flv_buffer:"Puffer",flv_startimage:"Stardi pilt",flv_starttime:"Stardi aeg",flv_defaultvolume:"Vaikimisi helitugevus",flv_hiddengui:"Peidetud GUI",flv_autostart:"Auto-start",flv_loop:"Auto.kordus",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Sujuv video",flv_jscallback:"JS tagasikutse"});
\ No newline at end of file
+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
index fdd8e1302aea0650b02434021bb2ceb707ee3e22..6793389448235e6f26a2e1746c233a81003c9c1c 100644 (file)
@@ -1,103 +1 @@
-tinyMCE.addI18n('eu.media_dlg',{\r
-title:"Insert / edit embedded media",\r
-general:"Orokorra",\r
-advanced:"Aurreratua",\r
-file:"Fitxategia/URL",\r
-list:"Zerrenda",\r
-size:"Tamaina",\r
-preview:"Aurrebista",\r
-constrain_proportions:"Constrain proportions",\r
-type:"Mota",\r
-id:"Id",\r
-name:"Izena",\r
-class_name:"Class",\r
-vspace:"V-Space",\r
-hspace:"H-Space",\r
-play:"Auto play",\r
-loop:"Loop",\r
-menu:"Erakutsi menua",\r
-quality:"Kalitatea",\r
-scale:"Scale",\r
-align:"Lerrokatu",\r
-salign:"SAlign",\r
-wmode:"WMode",\r
-bgcolor:"Atzea",\r
-base:"Oinarria",\r
-flashvars:"Flashvars",\r
-liveconnect:"SWLiveConnect",\r
-autohref:"AutoHREF",\r
-cache:"Katxea",\r
-hidden:"Ezkutuan",\r
-controller:"Controller",\r
-kioskmode:"Kiosk modua",\r
-playeveryframe:"Play every frame",\r
-targetcache:"Helburu katxea",\r
-correction:"Zuzenketarik ez",\r
-enablejavascript:"Gaitu JavaScript",\r
-starttime:"Noiz hasi",\r
-endtime:"Noiz bukatu",\r
-href:"Href",\r
-qtsrcchokespeed:"Choke speed",\r
-target:"Helburua",\r
-volume:"Volume",\r
-autostart:"Automatikoki hasi",\r
-enabled:"Gaituta",\r
-fullscreen:"Pantaila osoa",\r
-invokeurls:"Invoke URLs",\r
-mute:"Ixilik",\r
-stretchtofit:"Stretch to fit",\r
-windowlessvideo:"Lehiogabeko bideoa",\r
-balance:"Balance",\r
-baseurl:"Base URL",\r
-captioningid:"Captioning id",\r
-currentmarker:"Current marker",\r
-currentposition:"Uneko posizioa",\r
-defaultframe:"Default frame",\r
-playcount:"Play count",\r
-rate:"Rate",\r
-uimode:"UI Modua",\r
-flash_options:"Flash aukerak",\r
-qt_options:"Quicktime aukerak",\r
-wmp_options:"Windows media player aukerak",\r
-rmp_options:"Real media player aukerak",\r
-shockwave_options:"Shockwave aukerak",\r
-autogotourl:"Automatikoi joan URLra",\r
-center:"Erdian",\r
-imagestatus:"Irudi edoera",\r
-maintainaspect:"Maintain aspect",\r
-nojava:"Java ez",\r
-prefetch:"Prefetch",\r
-shuffle:"Shuffle",\r
-console:"Console",\r
-numloop:"Begizta kopurua",\r
-controls:"Controls",\r
-scriptcallbacks:"Script callbacks",\r
-swstretchstyle:"Stretch style",\r
-swstretchhalign:"Stretch H-Align",\r
-swstretchvalign:"Stretch V-Align",\r
-sound:"Soinua",\r
-progress:"Progress",\r
-qtsrc:"QT Src",\r
-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.",\r
-align_top:"Goian",\r
-align_right:"Eskuinean",\r
-align_bottom:"Behean",\r
-align_left:"Ezkerrean",\r
-align_center:"Erdian",\r
-align_top_left:"Goian ezkerran",\r
-align_top_right:"Goian eskuinean",\r
-align_bottom_left:"Behean ezkerrean",\r
-align_bottom_right:"Behean eskuinean",\r
-flv_options:"Flash video aukerak",\r
-flv_scalemode:"Scale modua",\r
-flv_buffer:"Buffer",\r
-flv_startimage:"Hasiera irudiae",\r
-flv_starttime:"Noiz hasi",\r
-flv_defaultvolume:"Default volumne",\r
-flv_hiddengui:"Ezkutuko GUI",\r
-flv_autostart:"Auto start",\r
-flv_loop:"Loop",\r
-flv_showscalemodes:"Erakutsi scale moduak",\r
-flv_smoothvideo:"Smooth video",\r
-flv_jscallback:"JS Callback"\r
-});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index bcaf3a0..13ac8b4
@@ -1 +1 @@
-tinyMCE.addI18n('fa.media_dlg',{list:"\u0644\u06cc\u0633\u062a",file:"\u0641\u0627\u06cc\u0644/URL",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\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:"URL \u067e\u0627\u06cc\u0647",balance:"\u062a\u0648\u0627\u0632\u0646 (Balance)",windowlessvideo:"\u0648\u06cc\u062f\u0626\u0648\u06cc \u06a9\u0645 \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:"Invoke URLs",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 Kiosk",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:"\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\u0646",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 \u0641\u0644\u0634",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",flv_options:"\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0648\u06cc\u062f\u0626\u0648\u06cc \u0641\u0644\u0634",flv_scalemode:"\u062d\u0627\u0644\u062a \u0645\u0642\u06cc\u0627\u0633",flv_buffer:"\u0628\u0627\u0641\u0631 (Buffer)",flv_startimage:"\u062a\u0635\u0648\u06cc\u0631 \u0634\u0631\u0648\u0639",flv_starttime:"\u0632\u0645\u0627\u0646 \u0634\u0631\u0648\u0639",flv_defaultvolume:"\u0628\u0644\u0646\u062f\u06cc \u0635\u062f\u0627\u06cc \u067e\u06cc\u0634\u0641\u0631\u0636",flv_hiddengui:"GUI \u0645\u062e\u0641\u06cc",flv_autostart:"\u0634\u0631\u0648\u0639 \u0627\u062a\u0648\u0645\u0627\u062a\u06cc\u06a9",flv_loop:"\u062d\u0644\u0642\u0647 (Loop)",flv_showscalemodes:"\u0646\u0645\u0627\u06cc\u0634 \u062d\u0627\u0644\u062a \u0647\u0627\u06cc \u0645\u0642\u06cc\u0627\u0633",flv_smoothvideo:"\u0648\u06cc\u062f\u0626\u0648\u06cc \u0635\u0627\u0641",flv_jscallback:"JS Callback"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index d950a0c..2ac2fca
@@ -1 +1 @@
-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",flv_options:"Flash videon asetukset",flv_scalemode:"Skaalausmoodi",flv_buffer:"Puskuri",flv_startimage:"Aloituskuva",flv_starttime:"Aloitusaika",flv_defaultvolume:"Oletus\u00e4\u00e4nenpaine",flv_hiddengui:"Piilotettu k\u00e4ytt\u00f6liittym\u00e4",flv_autostart:"Automaattinen aloitus",flv_loop:"Silmukka",flv_showscalemodes:"N\u00e4yt\u00e4 skaalausmoodit",flv_smoothvideo:"Smoothi video",flv_jscallback:"JS takaisinkutsu",html5_video_options:"HTML5 videoasetukset",altsource1:"Vaihtoehtoinen l\u00e4hde 1",altsource2:"Vaihtoehtoinen l\u00e4hde 2",preload:"Esilataa",poster:"Posteri",source:"L\u00e4hde"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 4a3f5d4..90b0102
@@ -1 +1 @@
-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",flv_options:"Options de la vid\u00e9o Flash",flv_scalemode:"\u00c9chelle",flv_buffer:"Tampon",flv_startimage:"Image de d\u00e9marrage",flv_starttime:"Temps au d\u00e9but",flv_defaultvolume:"Volume par d\u00e9faut",flv_hiddengui:"Interface utilisateur cach\u00e9e",flv_autostart:"D\u00e9marrage automatique",flv_loop:"En boucle",flv_showscalemodes:"Montrer les diff\u00e9rentes \u00e9chelles",flv_smoothvideo:"Vid\u00e9o adoucie",flv_jscallback:"Callback JavaScript",html5_video_options:"Options Vid\u00e9o HTML 5",altsource1:"Source alternative 1",altsource2:"Source alternative 2",preload:"Pr\u00e9chargement",poster:"Poster",source:"Source"});
\ No newline at end of file
+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
index 14a05f8b1a68cdd5a93a60ae1e5dc95b39a88cf6..c4848f39fd33809ad2597ffd32d5cdc698a5970f 100644 (file)
@@ -1 +1 @@
-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.",flv_options:"Opci\u00f3ns Video Flash",flv_scalemode:"Modo escalado",flv_buffer:"Buffer",flv_startimage:"Imaxe inicio",flv_starttime:"Tempo inicio",flv_defaultvolume:"Volume predet.",flv_hiddengui:"Ocultar GUI",flv_autostart:"Inicio auto.",flv_loop:"Repetitivo",flv_showscalemodes:"Mostrar modos escala",flv_smoothvideo:"Video suave",flv_jscallback:"JS Callback"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 15ca07a..4bd0058
@@ -1 +1 @@
-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:"Default frame",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:"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:"\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:"Class",name:"Name",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:"Base",bgcolor:"\u05e6\u05d1\u05e2 \u05e8\u05e7\u05e2",wmode:"WMode",salign:"SAlign",align:"Align",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:"Bottom left",align_bottom_right:"Bottom right",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback",html5_video_options:"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source"});
\ No newline at end of file
+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
index 21619d6995d5ecbb62f0a8528283a3aa334556de..ea5656d07f8e7d957e57271b6f2f56daf392f476 100644 (file)
@@ -1 +1 @@
-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",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index f80bcfa..7a19994
@@ -1 +1 @@
-tinyMCE.addI18n('hr.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",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 7cf8c95..cccb421
@@ -1 +1 @@
-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:"Folymat",sound:"Hang",swstretchvalign:"Ny\u00fajt\u00e1s F-igaz\u00edt\u00e1s",swstretchhalign:"Ny\u00fajt\u00e1s V-igaz\u00edt\u00e1s",swstretchstyle:"Ny\u00fajt\u00e1s st\u00edlus",scriptcallbacks:"Script callbacks","align_top_right":"Jobb-fent",uimode:"UI M\u00f3d",rate:"Rate",playcount:"Lej\u00e1tsz\u00e1ssz\u00e1m",defaultframe:"Alap\u00e9rtelmezett frame",currentposition:"Aktu\u00e1lis poz\u00edci\u00f3",currentmarker:"Aktu\u00e1lis marker",captioningid:"Captioning id",baseurl:"Base 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:"Dimenzi\u00f3k",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","flv_options":"Flash vide\u00f3 be\u00e1ll\u00edt\u00e1sai","flv_scalemode":"Nagy\u00edt\u00e1s m\u00f3d","flv_buffer":"Buffer","flv_startimage":"Start k\u00e9p","flv_starttime":"Start id\u0151","flv_defaultvolume":"Alap\u00e9rtelmezett hanger\u0151","flv_hiddengui":"Rejtett GUI","flv_autostart":"Aut\u00f3 start","flv_loop":"Ism\u00e9tl\u00e9s","flv_showscalemodes":"Nagy\u00edt\u00e1si m\u00f3dok mutat\u00e1sa","flv_smoothvideo":"Vide\u00f3 sim\u00edt\u00e1sa","flv_jscallback":"JS Callback","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"});
\ No newline at end of file
+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
index 0d7dd886dd50fa1043fa777aef30755023a2ba0a..2b4c15899e67dda0aee5c17acc7877ed34452ece 100644 (file)
@@ -1 +1 @@
-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",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"});
\ No newline at end of file
+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/ia_dlg.js b/program/js/tiny_mce/plugins/media/langs/ia_dlg.js
deleted file mode 100644 (file)
index b03a3c7..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ia.media_dlg',{list:"\u5217\u8868",file:"\u6587\u4ef6/\u5730\u5740",advanced:"\u9ad8\u7ea7",general:"\u57fa\u672c",title:"\u63d2\u5165/\u7f16\u8f91 \u5a92\u4f53",align_top_left:"\u9876\u90e8\u5c45\u5de6",align_center:"\u5c45\u4e2d",align_left:"\u5c45\u5de6",align_bottom:"\u5e95\u90e8",align_right:"\u5c45\u53f3",align_top:"\u9876\u90e8",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:"\u8fdb\u5ea6",sound:"\u58f0\u97f3",swstretchvalign:"\u7f29\u653e\u81f3\u5782\u76f4\u5bf9\u9f50",swstretchhalign:"\u7f29\u653e\u81f3\u6c34\u5e73\u5bf9\u9f50",swstretchstyle:"\u7f29\u653e\u6837\u5f0f",scriptcallbacks:"\u811a\u672c\u56de\u6863",align_top_right:"\u9876\u90e8\u5c45\u53f3",uimode:"UI \u6a21\u5f0f",rate:"\u7801\u7387",playcount:"\u64ad\u653e\u6b21\u6570",defaultframe:"\u9ed8\u8ba4\u5e27",currentposition:"\u5f53\u524d\u4f4d\u7f6e",currentmarker:"\u5f53\u524d\u6807\u7b7e",captioningid:"\u5b57\u5e55 id",baseurl:"Base URL",balance:"\u5e73\u8861",windowlessvideo:"\u65e0\u7a97\u53e3\u89c6\u9891",stretchtofit:"\u7f29\u653e\u81f3\u5408\u9002\u5927\u5c0f",mute:"\u9759\u97f3",invokeurls:"\u8c03\u7528\u7684URLs",fullscreen:"\u5168\u5c4f\u5e55",enabled:"\u542f\u7528",autostart:"\u81ea\u52a8\u5f00\u59cb",volume:"\u97f3\u91cf",target:"\u76ee\u6807",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"\u7ed3\u675f\u65f6\u95f4",starttime:"\u5f00\u59cb\u65f6\u95f4",enablejavascript:"\u542f\u7528 JavaScript",correction:"\u4fee\u6b63",targetcache:"\u76ee\u6807\u7f13\u5b58",playeveryframe:"\u9010\u5e27\u64ad\u653e",kioskmode:"Kiosk \u6a21\u5f0f",controller:"\u63a7\u5236\u53f0",menu:"\u663e\u793a\u83dc\u5355",loop:"\u5faa\u73af",play:"\u81ea\u52a8\u64ad\u653e",hspace:"\u6c34\u5e73\u95f4\u8ddd",vspace:"\u5782\u76f4\u95f4\u8ddd",class_name:"\u7c7b\u540d",name:"\u540d\u79f0",id:"Id",type:"\u7c7b\u578b",size:"\u5927\u5c0f",preview:"\u9884\u89c8",constrain_proportions:"\u4fdd\u6301\u6bd4\u4f8b",controls:"\u63a7\u5236",numloop:"\u5faa\u73af\u6b21\u6570",console:"\u63a7\u5236\u53f0",cache:"\u7f13\u5b58",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flash\u53d8\u6570",base:"\u57fa\u7ebf",bgcolor:"\u80cc\u666f\u8272",wmode:"WMode",salign:"SAlign",align:"\u5bf9\u9f50",scale:"\u7f29\u653e",quality:"\u54c1\u8d28",shuffle:"\u968f\u673a",prefetch:"\u9884\u8bfb",nojava:"No java",maintainaspect:"\u7ef4\u62a4\u72b6\u6001",imagestatus:"\u56fe\u50cf\u72b6\u6001",center:"\u5c45\u4e2d",autogotourl:"\u81ea\u52a8\u8df3\u8f6c URL",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:"\u5e95\u90e8\u5c45\u5de6",align_bottom_right:"\u5e95\u90e8\u5c45\u53f3",flv_options:"Flash \u89c6\u9891\u9009\u9879",flv_scalemode:"\u7f29\u653e\u6a21\u5f0f",flv_buffer:"\u7f13\u51b2",flv_startimage:"\u5f00\u59cb\u56fe\u50cf",flv_starttime:"\u5f00\u59cb\u65f6\u95f4",flv_defaultvolume:"\u9ed8\u8ba4\u58f0\u97f3",flv_hiddengui:"\u9690\u85cfGUI",flv_autostart:"\u81ea\u52a8\u5f00\u59cb",flv_loop:"\u5faa\u73af",flv_showscalemodes:"\u663e\u793a\u7f29\u653e\u6a21\u5f0f",flv_smoothvideo:"\u5e73\u6ed1\u89c6\u9891",flv_jscallback:"JS \u56de\u6a94"});
\ No newline at end of file
index a5781c4c000d7e9fc97fa72fd935c6a50f205891..3aab79b8ce43d3b6056c51de0ba17ed94ff1d627 100644 (file)
@@ -1 +1 @@
-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",flv_options:"Opsi Flash video",flv_scalemode:"Mode Skala",flv_buffer:"Buffer",flv_startimage:"Gambar Mulai",flv_starttime:"Waktu mulai",flv_defaultvolume:"Volume suara default",flv_hiddengui:"GUI tersembunyi",flv_autostart:"Mulai otomatis",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 4d20a5c..61cc8bf
@@ -1 +1 @@
-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",flv_options:"Flash m\u00f6guleikar",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 36e8044..f335ede
@@ -1 +1 @@
-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:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks",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-Space",vspace:"V-Space",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",flv_options:"Opzioni video Flash",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Immagine avvio",flv_starttime:"Tempo avvio",flv_defaultvolume:"Volume predefinito",flv_hiddengui:"GUI nascosta",flv_autostart:"Avvio automatico",flv_loop:"Riproduzione ciclica",flv_showscalemodes:"Mostra scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 6b1ad0a..9752ca2
@@ -1 +1 @@
-tinyMCE.addI18n('ja.media_dlg',{list:"\u4e00\u89a7\u304b\u3089\u9078\u3076",file:"\u30d5\u30a1\u30a4\u30eb/URL",advanced:"\u9ad8\u5ea6\u306a\u8a2d\u5b9a",general:"\u4e00\u822c",title:"\u57cb\u3081\u8fbc\u307f\u30e1\u30c7\u30a3\u30a2\u306e\u633f\u5165/\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\u306a\u8a2d\u5b9a\u300d\u30bf\u30d6\u306e\u300cQT Src\u300d\u6b04\u306b\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002n\u307e\u305f\u3001\u300cQT Src\u300d\u6b04\u306b\u306f\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u3067\u306f\u306a\u3044\u30ea\u30bd\u30fc\u30b9\u306eURI\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002",qtsrc:"QT Src",progress:"Progress",sound:"\u30b5\u30a6\u30f3\u30c9",swstretchvalign:"\u5782\u76f4\u4f4d\u7f6e",swstretchhalign:"\u6c34\u5e73\u4f4d\u7f6e",swstretchstyle:"\u4f38\u7e2e",scriptcallbacks:"\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u30a4\u30d9\u30f3\u30c8","align_top_right":"\u53f3\u4e0a",uimode:"UI\u8868\u793a\u30e2\u30fc\u30c9",rate:"\u518d\u751f\u30ec\u30fc\u30c8",playcount:"\u518d\u751f\u56de\u6570",defaultframe:"\u30c7\u30d5\u30a9\u30eb\u30c8\u30d5\u30ec\u30fc\u30e0",currentposition:"\u518d\u751f\u4f4d\u7f6e\uff08\u79d2\u5358\u4f4d\uff09",currentmarker:"\u30de\u30fc\u30ab\u30fc\u756a\u53f7",captioningid:"\u30ad\u30e3\u30d7\u30b7\u30e7\u30f3\u8868\u793a\u8981\u7d20ID",baseurl:"Base URL",balance:"\u30b9\u30c6\u30ec\u30aa\u306e\u30d0\u30e9\u30f3\u30b9",windowlessvideo:"windowless\u30e2\u30fc\u30c9",stretchtofit:"\u81ea\u52d5\u30b5\u30a4\u30ba\u5909\u66f4",mute:"\u30df\u30e5\u30fc\u30c8",invokeurls:"URL\u3092\u958b\u304f",fullscreen:"\u30d5\u30eb\u30b9\u30af\u30ea\u30fc\u30f3",enabled:"\u6709\u52b9\u306b\u3059\u308b",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\u30d5\u30ec\u30fc\u30e0",starttime:"\u958b\u59cb\u30d5\u30ec\u30fc\u30e0",enablejavascript:"JavaScript\u3092\u6709\u52b9\u306b\u3059\u308b",correction:"No correction",targetcache:"\u30bf\u30fc\u30b2\u30c3\u30c8\u30ad\u30e3\u30c3\u30b7\u30e5",playeveryframe:"\u5168\u30d5\u30ec\u30fc\u30e0\u518d\u751f",kioskmode:"Kiosk\u30e2\u30fc\u30c9",controller:"\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u8868\u793a",menu:"\u30e1\u30cb\u30e5\u30fc\u3092\u8868\u793a",loop:"\u7e70\u308a\u8fd4\u3057\u518d\u751f",play:"\u81ea\u52d5\u518d\u751f",hspace:"\u5de6\u53f3\u4f59\u767d",vspace:"\u4e0a\u4e0b\u4f59\u767d","class_name":"class\u5c5e\u6027",name:"\u540d\u524d",id:"ID\u5c5e\u6027",type:"\u30bf\u30a4\u30d7",size:"\u30b5\u30a4\u30ba",preview:"\u30d7\u30ec\u30d3\u30e5\u30fc","constrain_proportions":"\u7e26\u6a2a\u6bd4\u3092\u4fdd\u5b58",controls:"\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u8868\u793a",numloop:"\u7e70\u308a\u8fd4\u3057\u56de\u6570",console:"\u30b3\u30f3\u30bd\u30fc\u30eb",cache:"\u30ad\u30e3\u30c3\u30b7\u30e5",autohref:"\u81ea\u52d5\u8aad\u8fbc",liveconnect:"SWLiveConnect",flashvars:"Flashvars",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:"\u30d7\u30ea\u30d5\u30a7\u30c3\u30c1",nojava:"Java\u3092\u7981\u6b62",maintainaspect:"\u7e26\u6a2a\u6bd4\u4fdd\u5b58",imagestatus:"\u30b9\u30c6\u30fc\u30bf\u30b9\u8868\u793a",center:"\u30bb\u30f3\u30bf\u30ea\u30f3\u30b0",autogotourl:"autogotourl","shockwave_options":"Shockwave\u30aa\u30d7\u30b7\u30e7\u30f3","rmp_options":"Real media player\u30aa\u30d7\u30b7\u30e7\u30f3","wmp_options":"Windows media player\u30aa\u30d7\u30b7\u30e7\u30f3","qt_options":"Quicktime\u30aa\u30d7\u30b7\u30e7\u30f3","flash_options":"Flash\u30aa\u30d7\u30b7\u30e7\u30f3",hidden:"\u975e\u8868\u793a","align_bottom_left":"\u5de6\u4e0b","align_bottom_right":"\u53f3\u4e0b","flv_options":"Flash video\u30aa\u30d7\u30b7\u30e7\u30f3","flv_scalemode":"\u4f38\u7e2e\u30e2\u30fc\u30c9","flv_buffer":"\u30d0\u30c3\u30d5\u30a1\u79d2\u6570","flv_startimage":"\u521d\u671f\u753b\u50cfURL","flv_starttime":"\u958b\u59cb\u30d5\u30ec\u30fc\u30e0","flv_defaultvolume":"\u97f3\u91cf","flv_hiddengui":"\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u975e\u8868\u793a","flv_autostart":"\u81ea\u52d5\u518d\u751f","flv_loop":"\u7e70\u308a\u8fd4\u3057\u518d\u751f","flv_showscalemodes":"\u4f38\u7e2e\u5207\u66ff\u30dc\u30bf\u30f3\u8868\u793a","flv_smoothvideo":"\u30b9\u30e0\u30fc\u30b8\u30f3\u30b0","flv_jscallback":"JS\u30b3\u30fc\u30eb\u30d0\u30c3\u30af","html5_video_options":"HTML5 Video \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"});
\ No newline at end of file
+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
index 09ee13cc74304de8805fdf3f5aa381ef983f8bdf..e84713166697d973b613184bf1220fa3e0f1ceb1 100644 (file)
@@ -1 +1 @@
-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",flv_options:"Flash \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8",flv_scalemode:"\u10db\u10d0\u10e1\u10e8\u10e2\u10d0\u10d1\u10d8",flv_buffer:"\u10d1\u10e3\u10e4\u10d4\u10e0\u10d8",flv_startimage:"\u10e1\u10d0\u10ec\u10e7\u10d8\u10e1\u10d8 \u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10ee\u10e3\u10da\u10d4\u10d1\u10d0",flv_starttime:"\u10d3\u10d0\u10ec\u10e7\u10d4\u10d1\u10d8\u10e1 \u10d3\u10e0\u10dd",flv_defaultvolume:"\u10e1\u10e2\u10d0\u10dc\u10d3\u10d0\u10e0\u10e2\u10e3\u10da\u10d8 \u10ee\u10db\u10d0",flv_hiddengui:"\u10d3\u10d0\u10e4\u10d0\u10e0\u10e3\u10da\u10d8 \u10d8\u10dc\u10e2\u10d4\u10e0\u10e4\u10d4\u10d8\u10e1\u10d8",flv_autostart:"\u10d0\u10d5\u10e2\u10dd \u10ee\u10db\u10d0",flv_loop:"\u10d2\u10d0\u10db\u10d4\u10dd\u10e0\u10d4\u10d1\u10d0",flv_showscalemodes:"\u10db\u10d0\u10e8\u10e2\u10d0\u10d1\u10d8\u10e1 \u10e0\u10d4\u10df\u10d8\u10db\u10d8",flv_smoothvideo:"\u10d7\u10d0\u10dc\u10d0\u10d5\u10d0\u10e0\u10d8 \u10d5\u10d8\u10d3\u10d4\u10dd",flv_jscallback:"JS \u10db\u10ee\u10d0\u10e0\u10d3\u10d0\u10ed\u10d4\u10e0\u10d0",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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 878337a..1b68487
@@ -1 +1 @@
-tinyMCE.addI18n('ko.media_dlg',{list:"\ubaa9\ub85d",file:"\ud30c\uc77c/URL",advanced:"\uace0\uae09",general:"\uc77c\ubc18",title:"\ubbf8\ub514\uc5b4\uc758 \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",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 848dca9..14efd23
@@ -1 +1 @@
-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:"Href",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",flv_options:"Flash vaizdo nustatymai",flv_scalemode:"Mastelio re\u017eimas",flv_buffer:"Buferis",flv_startimage:"Prad\u017eios paveiksl\u0117lis",flv_starttime:"Prad\u017eios laikas",flv_defaultvolume:"Pradinis garsis",flv_hiddengui:"Pasl\u0117pta grafin\u0117 s\u0105saja",flv_autostart:"Auto grojimas",flv_loop:"Kartoti",flv_showscalemodes:"Rodyti mastelio re\u017eimus",flv_smoothvideo:"Tolygus vaizdas",flv_jscallback:"JS atgalinis atsakas"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 4028580..0f662d5
@@ -1 +1 @@
-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:"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",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 56f0b10..85afd9f
@@ -1 +1 @@
-tinyMCE.addI18n('mk.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",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 743d9cf..c73ae0a
@@ -1 +1 @@
-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",flv_options:"Alatan flash video",flv_scalemode:"Skala mod",flv_buffer:"Buffer",flv_startimage:"Start imej",flv_starttime:"Masa mula",flv_defaultvolume:"Bunyi asal",flv_hiddengui:"GUI tersorok",flv_autostart:"Auto mula",flv_loop:"Gegelung",flv_showscalemodes:"Tunjuk skala mod",flv_smoothvideo:"Perlahankan video",flv_jscallback:"JS Callback",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.."});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index e8fe8b6..162beda
@@ -1 +1 @@
-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","flv_options":"Flash video-valg","flv_scalemode":"Skalering","flv_buffer":"Buffer","flv_startimage":"Startbilde","flv_starttime":"Starttid","flv_defaultvolume":"Standardvolum","flv_hiddengui":"Skjult GUI","flv_autostart":"Auto-start","flv_loop":"L\u00f8kke","flv_showscalemodes":"Vis skalering","flv_smoothvideo":"Jevn video","flv_jscallback":"JS-tilbakekall","html5_video_options":"HTML5-videovalg",altsource1:"Alternativ kilde 1",altsource2:"Alternativ kilde 2",preload:"Forh\u00e5ndsvis",poster:"Poster",source:"Kilde"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 47f301a..68ae6b0
@@ -1 +1 @@
-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 mediaspeler opties",wmp_options:"Windows mediaspeler opties",qt_options:"Quicktime opties",flash_options:"Flash opties",hidden:"Verborgen",align_bottom_left:"Linksonder",align_bottom_right:"Rechtsonder",flv_options:"Flash video-opties",flv_scalemode:"Schaalmodus",flv_buffer:"Buffer",flv_startimage:"Startafbeelding",flv_starttime:"Starttijd",flv_defaultvolume:"Standaard volume",flv_hiddengui:"GUI verbergen",flv_autostart:"Automatisch afspelen",flv_loop:"Herhalen",flv_showscalemodes:"Schaalmodus weergeven",flv_smoothvideo:"Soepele video",flv_jscallback:"JS Callback",html5_video_options:"HTML5 Video Opties",altsource1:"Alternatieve bron 1",altsource2:"Alternatieve bron 2",preload:"Voorladen",poster:"Poster",source:"Bron"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index e223605..dc37b11
@@ -1 +1 @@
-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",flv_options:"Flash video-val",flv_scalemode:"Skalering",flv_buffer:"Buffer",flv_startimage:"Startbilde",flv_starttime:"Starttid",flv_defaultvolume:"Standardvolum",flv_hiddengui:"Skjult GUI",flv_autostart:"Autostart",flv_loop:"L\u00f8kke",flv_showscalemodes:"Vis skalering",flv_smoothvideo:"Jamn video",flv_jscallback:"JS Callback"});
\ No newline at end of file
+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/no_dlg.js b/program/js/tiny_mce/plugins/media/langs/no_dlg.js
deleted file mode 100644 (file)
index 7d5c9a0..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('no.media_dlg',{list:"Liste",file:"Fil/URL",advanced:"Avansert",general:"Generelt",title:"Sett inn/rediger inkludert objekt","align_top_left":"Topp venstre","align_center":"Midten","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-feltet under fanen avansert.\\nDu b\u00f8r ogs\u00e5 legge til en ikke-streamet versjon i src-feltet.",qtsrc:"QT Src",progress:"Fremdrift",sound:"Lyd",swstretchvalign:"Strekk V-justering",swstretchhalign:"Strekk H-justering",swstretchstyle:"Strekk stil",scriptcallbacks:"Skript referanser","align_top_right":"Topp h\u00f8yre",uimode:"UI-modus",rate:"Rate",playcount:"Teller",defaultframe:"Standard ramme",currentposition:"Aktiv posisjon",currentmarker:"Aktiv mark\u00f8r",captioningid:"Fange opp id",baseurl:"Utgangsadresse (URL)",balance:"Balanse",windowlessvideo:"Video uten vindu",stretchtofit:"Strekk for \u00e5 passe",mute:"Dempe",invokeurls:"Aktiver URLer",fullscreen:"Fullskjerm",enabled:"Aktivert",autostart:"Autostart",volume:"Volum",target:"M\u00e5l",qtsrcchokespeed:"Choke-hastighet",href:"Href",endtime:"Stopp tid",starttime:"Start tid",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:"H-avstand",vspace:"V-avstand","class_name":"Klasse",name:"Navn",id:"Id",type:"Type",size:"Dimmensjoner",preview:"Forh\u00e5ndsvis","constrain_proportions":"Behold proporsjoner",controls:"Kontroller",numloop:"Antall gjennomganger",console:"Konsoll",cache:"Mellomlager",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flash variabler",base:"Base",bgcolor:"Bakgrunn",wmode:"W-modus",salign:"S-justering",align:"Justering",scale:"Skala",quality:"Kvalitet",shuffle:"Mikse",prefetch:"Hente p\u00e5 forh\u00e5nd",nojava:"Ingen Java",maintainaspect:"Behold st\u00f8rrelsesforhold",imagestatus:"Bildestatus",center:"Midtstill",autogotourl:"Auto g\u00e5-til URL","shockwave_options":"Shockwave egenskaper","rmp_options":"Real mediaplayer egenskaper","wmp_options":"Windows Media Player egenskaper","qt_options":"Quicktime egenskaper","flash_options":"Flash egenskaper",hidden:"Skjult","align_bottom_left":"Bunn venste","align_bottom_right":"Bunn h\u00f8gre","flv_options":"Flash video egenskaper","flv_scalemode":"Skalerings modus","flv_buffer":"Buffer","flv_startimage":"Startbilde","flv_starttime":"Starttid","flv_defaultvolume":"Standardvolum","flv_hiddengui":"Skjult GUI","flv_autostart":"Autostart","flv_loop":"L\u00f8kke","flv_showscalemodes":"Vis skalering","flv_smoothvideo":"Jevn video","flv_jscallback":"JS-tilbakekall","html5_video_options":"HTML5-videovalg",altsource1:"Alternativ kilde 1",altsource2:"Alternativ kilde 2",preload:"Forh\u00e5ndsvis",poster:"Poster",source:"Kilde"});
\ No newline at end of file
old mode 100755 (executable)
new mode 100644 (file)
index 7b8695f..9e054b2
@@ -1 +1 @@
-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","flv_options":"Opcje wideo flasha","flv_scalemode":"Tryb skalowania","flv_buffer":"Bufor","flv_startimage":"Obraz startowy","flv_starttime":"Czas startu","flv_defaultvolume":"Domy\u015blna g\u0142o\u015bno\u015b\u0107","flv_hiddengui":"Ukryte GUI","flv_autostart":"Autostart","flv_loop":"Zap\u0119tlaj","flv_showscalemodes":"Pokazuj tryby skali","flv_smoothvideo":"P\u0142ynne wideo","flv_jscallback":"Funkcja zwrotna JS","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"});
\ No newline at end of file
+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
index f9d802ef456f569f4bb9cd37c63b9ea847532a15..6589c9be1ae8cf68100cb5b8e3edfa798477a697 100644 (file)
@@ -1 +1 @@
-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",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 0747dd0..f578cd7
@@ -1 +1 @@
-tinyMCE.addI18n('pt.media_dlg',{list:"Lista",file:"Arquivo/URL",advanced:"Avan\u00e7ado",general:"Geral",title:"Inserir/Editar m\u00eddia incorporada",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 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:"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:"Repeti\u00e7\u00f5es",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:"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",flv_options:"Op\u00e7\u00f5es de Flash video",flv_scalemode:"Modo escala",flv_buffer:"Buffer",flv_startimage:"Imagem inicial",flv_starttime:"Hora inicial",flv_defaultvolume:"Volume padr\u00e3o",flv_hiddengui:"GUI oculta",flv_autostart:"Execu\u00e7\u00e3o Autom\u00e1tica",flv_loop:"Repeti\u00e7\u00e3o",flv_showscalemodes:"Mostrar modos escala",flv_smoothvideo:"Suavilizar video",flv_jscallback:"Retorno de JS",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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 7c08c7a..6b4bfb3
@@ -1 +1 @@
-tinyMCE.addI18n('ro.media_dlg',{list:"List\u0103",file:"Fi\u015fier/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:"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:"Progres",sound:"Sunet",swstretchvalign:"Stretch V-Aliniere",swstretchhalign:"Stretch H-Aliniere",swstretchstyle:"Stil strech",scriptcallbacks:"Script callback",align_top_right:"Dreapta sus",uimode:"Mod UI",rate:"Vot",playcount:"Numar red\u0103ri",defaultframe:"Frame implicit",currentposition:"Pozi\u0163ie curent\u0103",currentmarker:"Marcator curent",captioningid:"Titlu id",baseurl:"URL baz\u0103",balance:"Balan\u0163\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:"Choke speed",href:"Href",endtime:"Timp de sf\u00e2r\u015fit",starttime:"Timp de \u00eenceput",enablejavascript:"Activeaz\u0103 JavaScript",correction:"F\u0103r\u0103 corecturi",targetcache:"Target cache",playeveryframe:"Red\u0103 fiecare frame",kioskmode:"Mod Kiosk",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\u0163ii",controls:"Controale",numloop:"Num\u0103r de repet\u0103ri",console:"Consola",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Variabile Flash",base:"URL de baza",bgcolor:"Fundal",wmode:"WMode",salign:"SAlign",align:"Aliniere",scale:"Scar\u0103",quality:"Calitate",shuffle:"Aleator",prefetch:"Prefetch",nojava:"F\u0103r\u0103 java",maintainaspect:"Men\u0163ine aspect",imagestatus:"Status imagine",center:"Centru",autogotourl:"Auto goto URL",shockwave_options:"Op\u0163iuni Shockwave",rmp_options:"Op\u0163iuni Real media player",wmp_options:"Op\u0163iuni Windows media player",qt_options:"Op\u0163iuni QuickTime",flash_options:"Op\u0163iuni Flash",hidden:"Ascuns",align_bottom_left:"St\u00e2nga jos",align_bottom_right:"Dreapta jos",flv_options:"Op\u0163iuni Flash video",flv_scalemode:"Moduri scal\u0103",flv_buffer:"Buffer",flv_startimage:"Imagine start ",flv_starttime:"Timp start",flv_defaultvolume:"Volum implicit",flv_hiddengui:"GUI ascuns",flv_autostart:"Auto pornire",flv_loop:"Repetare",flv_showscalemodes:"Afi\u015fare moduri scalare",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 8d19a3a..fbb186b
@@ -1 +1 @@
-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","flv_options":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 Flash","flv_scalemode":"\u041c\u0430\u0441\u0448\u0442\u0430\u0431","flv_buffer":"\u0411\u0443\u0444\u0435\u0440","flv_startimage":"\u0421\u0442\u0430\u0440\u0442\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","flv_starttime":"\u0421\u0442\u0430\u0440\u0442\u043e\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f","flv_defaultvolume":"\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0437\u0432\u0443\u043a","flv_hiddengui":"\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441","flv_autostart":"\u0410\u0432\u0442\u043e\u0437\u0430\u043f\u0443\u0441\u043a","flv_loop":"\u041f\u043e\u0432\u0442\u043e\u0440","flv_showscalemodes":"\u0420\u0435\u0436\u0438\u043c \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430","flv_smoothvideo":"\u041f\u043b\u0430\u0432\u043d\u043e\u0435 \u0432\u0438\u0434\u0435\u043e","flv_jscallback":"\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 JS","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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 6ac7ae7..7b8989d
@@ -1 +1 @@
-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",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 176c2eb..eb96783
@@ -1 +1 @@
-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\'.\\nYM\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",flv_options:"Mo\u017enosti Flash video",flv_scalemode:"Zmena ve\u013ekosti",flv_buffer:"Z\u00e1sobn\u00edk",flv_startimage:"Po\u010diato\u010dn\u00fd obr\u00e1zok",flv_starttime:"Po\u010diato\u010dn\u00fd \u010das",flv_defaultvolume:"Predvolen\u00e1 hlasitos\u0165",flv_hiddengui:"Skryt\u00fd ovl\u00e1dac\u00ed panel",flv_autostart:"Automatick\u00e9 spustenie",flv_loop:"Opakovanie",flv_showscalemodes:"Zobrazi\u0165 vo\u013eby zmeny ve\u013ekosti",flv_smoothvideo:"Vyhladzovan\u00fd obraz",flv_jscallback:"Sp\u00e4tn\u00e9 volanie JavaScriptu",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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 2c564ae..fc02c62
@@ -1 +1 @@
-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",flv_options:"Mo\u017enosti videa Flash",flv_scalemode:"Na\u010din pove\u010devanja",flv_buffer:"Medpomnjenje",flv_startimage:"Za\u010detna slika",flv_starttime:"Za\u010detni \u010das",flv_defaultvolume:"Privzeta glasnost",flv_hiddengui:"Skrit up. vmesnik",flv_autostart:"Samodejni zagon",flv_loop:"Zanka",flv_showscalemodes:"Prika\u017ei na\u010dine pove\u010dave",flv_smoothvideo:"Glajenje videa",flv_jscallback:"JS povratni klic",html5_video_options:"HTML5 video nastavitve",altsource1:"Alternativni vir 1",altsource2:"Alternativni vir 2",preload:"Predpomnenje",poster:"Poster",source:"Vir"});
\ No newline at end of file
+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
index 878010bc4addbcb6e4e2396eb6c5aa7a31dc6935..efe1332ef383a699a7d3be352ad570125193a48f 100644 (file)
@@ -1 +1 @@
-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",flv_options:"Opsionet e videos Flash",flv_scalemode:"M\u00ebnyra e shkall\u00ebs",flv_buffer:"Buffer",flv_startimage:"Foto fillestare",flv_starttime:"Foto p\u00ebrfundimtare",flv_defaultvolume:"Volumi fillestar",flv_hiddengui:"GUI e fshehur",flv_autostart:"Nis automatikisht",flv_loop:"Lak",flv_showscalemodes:"Trego shkall\u00ebt",flv_smoothvideo:"Video pa ngecje",flv_jscallback:"JS Callback"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index e65e6e2..7351c30
@@ -1 +1 @@
-tinyMCE.addI18n('sr.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",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 0fcac56..4f71780
@@ -1 +1 @@
-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":"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:"Fullsk\u00e4rm",enabled:"Enabled",autostart:"Starta automatiskt",volume:"Volym",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable 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:"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","flv_options":"Flash video options","flv_scalemode":"Scale mode","flv_buffer":"Buffer","flv_startimage":"Start image","flv_starttime":"Start time","flv_defaultvolume":"Default volumne","flv_hiddengui":"Hidden GUI","flv_autostart":"Auto start","flv_loop":"Loop","flv_showscalemodes":"Show scale modes","flv_smoothvideo":"Smooth video","flv_jscallback":"JS Callback","html5_video_options":"HTML5 Filmegenskaper",altsource1:"Alternativk\u00e4lla 1",altsource2:"Alternativk\u00e4lla 2",preload:"Preload",poster:"Poster",source:"Source"});
\ No newline at end of file
+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
index ee10a44ae6a0a7a99c9addf82d182c7ca947c007..1b70c97f34879438eef4a5bd4edba392a3f27135 100644 (file)
@@ -1 +1 @@
-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",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"});
\ No newline at end of file
+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/te_dlg.js b/program/js/tiny_mce/plugins/media/langs/te_dlg.js
deleted file mode 100644 (file)
index f62cf01..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('te.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",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"});
\ No newline at end of file
index b1eb3a92d95c67046a3760cf8cc31643f851a60d..091d4b88f73db6f616a961d503debc72c46dffd2 100644 (file)
@@ -1 +1 @@
-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",flv_options:"Flash video options",flv_scalemode:"Scale mode",flv_buffer:"Buffer",flv_startimage:"Start image",flv_starttime:"Start time",flv_defaultvolume:"Default volumne",flv_hiddengui:"Hidden GUI",flv_autostart:"Auto start",flv_loop:"Loop",flv_showscalemodes:"Show scale modes",flv_smoothvideo:"Smooth video",flv_jscallback:"JS Callback"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index d36786b..a939d40
@@ -1 +1 @@
-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",flv_options:"Flash video se\u00e7enekleri",flv_scalemode:"\u00d6l\u00e7ek modu",flv_buffer:"Tampon",flv_startimage:"Resmi ba\u015flat",flv_starttime:"Ba\u015flang\u0131\u00e7 zaman\u0131",flv_defaultvolume:"Varsay\u0131lan ses d\u00fczeyi",flv_hiddengui:"Gizli GUI",flv_autostart:"Otomatik ba\u015flat",flv_loop:"D\u00f6nd\u00fcr",flv_showscalemodes:"\u00d6l\u00e7ek modunu g\u00f6ster",flv_smoothvideo:"D\u00fczg\u00fcn video",flv_jscallback:"JS \u00c7e\u011f\u0131r"});
\ No newline at end of file
+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/tw_dlg.js b/program/js/tiny_mce/plugins/media/langs/tw_dlg.js
deleted file mode 100644 (file)
index fb44841..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('tw.media_dlg',{list:"\u5217\u8868",file:"\u5a92\u9ad4URL",advanced:"\u9032\u968e",general:"\u4e00\u822c",title:"\u63d2\u5165/\u7de8\u8f2f\u5a92\u9ad4",align_top_left:"\u5de6\u4e0a",align_center:"\u7f6e\u4e2d",align_left:"\u9760\u5de6",align_bottom:"\u9760\u4e0b",align_right:"\u9760\u53f3",align_top:"\u9760\u4e0a",qt_stream_warn:"\u4e32\u6d41\u5a92\u9ad4rtsp\u8cc7\u6e90\u61c9\u8a72\u52a0\u5230\u300c\u9032\u968e\u300d\u4e2dQT src\u3002 \\n\u540c\u6642\u589e\u52a0\u975e\u4e32\u6d41\u5a92\u9ad4\u8cc7\u6e90\u5230src\u3002",qtsrc:"QT Src",progress:"\u9032\u5ea6",sound:"\u8072\u97f3",swstretchvalign:"\u7e2e\u653e\u81f3\u5782\u76f4\u5c0d\u9f4a",swstretchhalign:"\u7e2e\u653e\u81f3\u6c34\u5e73\u5c0d\u9f4a",swstretchstyle:"\u7e2e\u653e\u6a23\u5f0f",scriptcallbacks:"Script \u547c\u53eb",align_top_right:"\u53f3\u4e0a",uimode:"\u5916\u89c0\u6a21\u5f0f",rate:"\u6bd4\u7387",playcount:"\u64ad\u653e\u6b21\u6578",defaultframe:"\u9810\u8a2d\u756b\u9762",currentposition:"\u76ee\u524d\u4f4d\u7f6e",currentmarker:"\u76ee\u524d\u6a19\u8a18",captioningid:"\u5b57\u5e55\u7de8\u865f",baseurl:"\u57fa\u5e95 URL",balance:"\u5e73\u8861",windowlessvideo:"\u7121\u8996\u7a97\u64ad\u653e",stretchtofit:"\u7e2e\u653e\u81f3\u9069\u5408\u5927\u5c0f",mute:"\u975c\u97f3",invokeurls:"\u5f15\u7528\u7684 URLs",fullscreen:"\u5168\u87a2\u5e55",enabled:"\u53ef\u7528",autostart:"\u81ea\u52d5\u64ad\u653e",volume:"\u97f3\u91cf",target:"\u76ee\u6a19",qtsrcchokespeed:"\u963b\u585e\u901f\u5ea6",href:"\u8d85\u9023\u7d50",endtime:"\u7d50\u675f\u6642\u9593",starttime:"\u958b\u59cb\u6642\u9593",enablejavascript:"\u555f\u7528 JavaScript",correction:"\u4fee\u6b63",targetcache:"\u76ee\u6a19\u66ab\u5b58",playeveryframe:"\u9010\u756b\u9762\u64ad\u653e",kioskmode:"Kiosk\u6a21\u5f0f",controller:"\u63a7\u5236\u9762\u677f",menu:"\u986f\u793a\u9078\u9805",loop:"\u5faa\u74b0",play:"\u81ea\u52d5\u64ad\u653e",hspace:"\u6c34\u5e73\u9593\u8ddd",vspace:"\u5782\u76f4\u9593\u8ddd",class_name:"\u985e\u5225",name:"\u540d\u7a31",id:"ID",type:"\u985e\u578b",size:"\u5927\u5c0f",preview:"\u9810\u89bd",constrain_proportions:"\u9396\u5b9a\u6bd4\u4f8b",controls:"\u63a7\u5236",numloop:"\u5faa\u74b0\u6b21\u6578",console:"\u63a7\u5236\u53f0",cache:"\u66ab\u5b58",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flash \u8b8a\u6578",base:"\u57fa\u5e95",bgcolor:"\u80cc\u666f\u8272",wmode:"\u8996\u7a97\u6a21\u5f0f",salign:"SAlign",align:"\u5c0d\u9f4a",scale:"\u7e2e\u653e",quality:"\u54c1\u8cea",shuffle:"\u96a8\u6a5f",prefetch:"\u9810\u5148\u8f09\u5165",nojava:"No Java",maintainaspect:"\u9396\u5b9a\u6bd4\u4f8b",imagestatus:"\u5716\u7247\u72c0\u614b",center:"\u7f6e\u4e2d",autogotourl:"\u81ea\u52d5\u8f49\u81f3 URL",shockwave_options:"Shockwave \u9078\u9805",rmp_options:"Real Media Player \u9078\u9805",wmp_options:"Windows Media Player \u9078\u9805",qt_options:"Quick Time \u9078\u9805",flash_options:"Flash \u9078\u9805",hidden:"\u96b1\u85cf",align_bottom_left:"\u5de6\u4e0b",align_bottom_right:"\u53f3\u4e0b",flv_options:"Flash\u5f71\u7247\u9078\u9805",flv_scalemode:"\u7e2e\u653e\u6a21\u5f0f",flv_buffer:"\u7de9\u885d\u5340",flv_startimage:"\u958b\u59cb\u756b\u9762",flv_starttime:"\u958b\u59cb\u6642\u9593",flv_defaultvolume:"\u9810\u8a2d\u97f3\u91cf",flv_hiddengui:"\u96b1\u85cf GUI",flv_autostart:"\u81ea\u52d5\u64ad\u653e",flv_loop:"\u5faa\u74b0",flv_showscalemodes:"\u986f\u793a\u7e2e\u653e\u6a21\u5f0f",flv_smoothvideo:"\u5e73\u6ed1\u64ad\u653e",flv_jscallback:"Script \u547c\u53eb"});
\ No newline at end of file
old mode 100755 (executable)
new mode 100644 (file)
index 9379de0..6f7a4b4
@@ -1 +1 @@
-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",flv_options:"\u041e\u043f\u0446\u0456\u0457 Flash video",flv_scalemode:"\u0420\u0435\u0436\u0438\u043c \u043c\u0430\u0448\u0442\u0430\u0431\u0443\u0432\u0430\u043d\u043d\u044f",flv_buffer:"\u0411\u0443\u0444\u0435\u0440",flv_startimage:"\u041f\u043e\u0447\u0430\u0442\u043a\u043e\u0432\u0435 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",flv_starttime:"\u041f\u043e\u0447\u0430\u0442\u043a\u043e\u0432\u0438\u0439 \u0447\u0430\u0441",flv_defaultvolume:"\u0413\u0443\u0447\u043d\u0456\u0441\u0442\u044c \u0437\u0430 \u0437\u0430\u043c\u043e\u0432\u0447\u0430\u043d\u043d\u044f\u043c",flv_hiddengui:"\u0421\u0445\u043e\u0432\u0430\u043d\u0438\u0439 \u0433\u0440\u0430\u0444\u0456\u0447\u043d\u0438\u0439 \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044c\u043a\u0438\u0439 \u0456\u043d\u0444\u0435\u0440\u0444\u0435\u0439\u0441",flv_autostart:"\u0410\u0432\u0442\u043e\u043f\u043e\u0447\u0430\u0442\u043e\u043a",flv_loop:"\u041f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u043d\u044f",flv_showscalemodes:"\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u0438 \u0440\u0435\u0436\u0438\u043c\u0438 \u043c\u0430\u0448\u0442\u0430\u0431\u0443\u0432\u0430\u043d\u043d\u044f",flv_smoothvideo:"\u041f\u043b\u0430\u0432\u043d\u0435 \u0432\u0456\u0434\u0442\u0432\u043e\u0440\u0435\u043d\u043d\u044f \u0432\u0456\u0434\u0435\u043e",flv_jscallback:"\u0417\u0432\u043e\u0440\u043e\u0442\u043d\u0456\u0439 \u0432\u0438\u043a\u043b\u0438\u043a JS"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index d9ecaef..04fca2d
@@ -1 +1 @@
-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",flv_options:"T\u00f9y ch\u1ecdn video Flash",flv_scalemode:"Ch\u1ebf \u0111\u1ed9 thang",flv_buffer:"B\u1ed9 \u0111\u1ec7m",flv_startimage:"\u1ea2nh b\u1eaft \u0111\u1ea7u",flv_starttime:"Th\u1eddi gian b\u1eaft \u0111\u1ea7u",flv_defaultvolume:"\u00c2m l\u01b0\u1ee3ng m\u1eb7c \u0111\u1ecbnh",flv_hiddengui:"\u1ea8n GUI",flv_autostart:"T\u1ef1 b\u1eaft \u0111\u1ea7u",flv_loop:"L\u1eb7p",flv_showscalemodes:"Hi\u1ec3n th\u1ecb ch\u1ebf \u0111\u1ed9 thang",flv_smoothvideo:"Video m\u01b0\u1ee3t",flv_jscallback:"H\u00e0m g\u1ecdi ng\u01b0\u1ee3c JS"});
\ No newline at end of file
+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
new file mode 100644 (file)
index 0000000..273a48f
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..da608d4
--- /dev/null
@@ -0,0 +1 @@
+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/langs/zh_dlg.js b/program/js/tiny_mce/plugins/media/langs/zh_dlg.js
deleted file mode 100755 (executable)
index e6700c0..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh.media_dlg',{list:"\u5217\u8868",file:"\u5a92\u4f53URL",advanced:"\u9ad8\u7ea7",general:"\u4e00\u822c",title:"\u63d2\u5165/\u7f16\u8f91\u5a92\u4f53",align_top_left:"\u5de6\u4e0a",align_center:"\u7f6e\u4e2d",align_left:"\u9760\u5de6",align_bottom:"\u9760\u4e0b",align_right:"\u9760\u53f3",align_top:"\u9760\u4e0a",qt_stream_warn:"\u4e32\u6d41\u5a92\u4f53rtsp\u8d44\u6e90\u5e94\u8be5\u52a0\u5230\u300c\u9ad8\u7ea7\u300d\u4e2dQT src\u3002 \\n\u540c\u65f6\u589e\u52a0\u975e\u4e32\u6d41\u5a92\u4f53\u8d44\u6e90\u5230src\u3002",qtsrc:"QT Src",progress:"\u8fdb\u5ea6",sound:"\u58f0\u97f3",swstretchvalign:"\u7f29\u653e\u81f3\u5782\u76f4\u5bf9\u9f50",swstretchhalign:"\u7f29\u653e\u81f3\u6c34\u5e73\u5bf9\u9f50",swstretchstyle:"\u7f29\u653e\u6837\u5f0f",scriptcallbacks:"Script \u553f\u53eb",align_top_right:"\u53f3\u4e0a",uimode:"\u9762\u677f\u6a21\u5f0f",rate:"\u6bd4\u7387",playcount:"\u64ad\u653e\u6b21\u6570",defaultframe:"\u9884\u8bbe\u753b\u9762",currentposition:"\u76ee\u524d\u4f4d\u7f6e",currentmarker:"\u76ee\u524d\u6807\u8bb0",captioningid:"\u5b57\u5e55\u7f16\u53f7",baseurl:"\u57fa\u5e95 URL",balance:"\u5e73\u8861",windowlessvideo:"\u65e0\u89c6\u7a97\u64ad\u653e",stretchtofit:"\u7f29\u653e\u81f3\u6700\u4f73\u5927\u5c0f",mute:"\u9759\u97f3",invokeurls:"\u5f15\u7528\u7684 URLs",fullscreen:"\u5168\u8424\u5e55",enabled:"\u53ef\u7528",autostart:"\u81ea\u52a8\u64ad\u653e",volume:"\u97f3\u91cf",target:"\u76ee\u6807",qtsrcchokespeed:"\u963b\u585e\u901f\u5ea6",href:"\u8d85\u8fde\u7ed3",endtime:"\u7ed3\u675f\u65f6\u95f4",starttime:"\u5f00\u59cb\u65f6\u95f4",enablejavascript:"\u542f\u7528 JavaScript",correction:"\u4fee\u6b63",targetcache:"\u76ee\u6807\u7f13\u5b58",playeveryframe:"\u9010\u683c\u64ad\u653e",kioskmode:"Kiosk\u6a21\u5f0f",controller:"\u63a7\u5236\u53f0",menu:"\u663e\u793a\u9009\u9879",loop:"\u5faa\u73af",play:"\u81ea\u52a8\u64ad\u653e",hspace:"\u6c34\u5e73\u95f4\u8ddd",vspace:"\u5782\u76f4\u95f4\u8ddd",class_name:"\u7c7b\u522b",name:"\u540d\u79f0",id:"ID",type:"\u7c7b\u578b",size:"\u5927\u5c0f",preview:"\u9884\u89c8",constrain_proportions:"\u7ea6\u675f\u6bd4\u4f8b",controls:"\u63a7\u5236",numloop:"\u5faa\u73af\u6b21\u6570",console:"\u63a7\u5236\u53f0",cache:"\u7f13\u5b58",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flash \u53d8\u91cf",base:"\u57fa\u5e95",bgcolor:"\u80cc\u666f\u8272",wmode:"\u89c6\u7a97\u6a21\u5f0f",salign:"SAlign",align:"\u5bf9\u9f50",scale:"\u7f29\u653e",quality:"\u54c1\u8d28",shuffle:"\u968f\u673a",prefetch:"\u9884\u8f7d",nojava:"No Java",maintainaspect:"\u9501\u5b9a\u6bd4\u4f8b",imagestatus:"\u56fe\u7247\u72b6\u6001",center:"\u7f6e\u4e2d",autogotourl:"\u81ea\u52a8\u8f6c\u81f3 URL",shockwave_options:"Shockwave \u9009\u9879",rmp_options:"Real Media Player \u9009\u9879",wmp_options:"Windows Media Player \u9009\u9879",qt_options:"Quick Time \u9009\u9879",flash_options:"Flash \u9009\u9879",hidden:"\u9690\u85cf",align_bottom_left:"\u5de6\u4e0b",align_bottom_right:"\u53f3\u4e0b",flv_options:"Flash\u5f71\u7247\u9009\u9879",flv_scalemode:"\u7f29\u653e\u6a21\u5f0f",flv_buffer:"\u7f13\u885d\u533a",flv_startimage:"\u5f00\u59cb\u753b\u9762",flv_starttime:"\u5f00\u59cb\u65f6\u95f4",flv_defaultvolume:"\u9884\u8bbe\u97f3\u91cf",flv_hiddengui:"\u9690\u85cf GUI",flv_autostart:"\u81ea\u52a8\u64ad\u653e",flv_loop:"\u5faa\u73af",flv_showscalemodes:"\u663e\u793a\u7f29\u653e\u6a21\u5f0f",flv_smoothvideo:"\u5e73\u6ed1\u64ad\u653e",flv_jscallback:"Script \u553f\u53eb"});
\ No newline at end of file
index 807a537dc4c02027838f60817ee5f9216d6a44e5..957d83a686ee3322f98d7cd7695cbf1c9a92e920 100644 (file)
                                                        <tr>\r
                                                                <td><label for="media_type">{#media_dlg.type}</label></td>\r
                                                                <td>\r
-                                                                       <select id="media_type" name="media_type" onchange="Media.formToData('type');">\r
-                                                                               <option value="video">HTML5 Video</option>\r
-                                                                               <option value="flash">Flash</option>\r
-                                                                               <option value="quicktime">QuickTime</option>\r
-                                                                               <option value="shockwave">Shockwave</option>\r
-                                                                               <option value="windowsmedia">Windows Media</option>\r
-                                                                               <option value="realmedia">Real Media</option>\r
-                                                                               <option value="iframe">Iframe</option>\r
-                                                                       </select>\r
+                                                                       <select id="media_type"></select>\r
                                                                </td>\r
                                                        </tr>\r
                                                        <tr>\r
                                                                </table>\r
                                                        </td>\r
                                                </tr>\r
+\r
+                                               <tr>\r
+                                                       <td><label for="video_preload">{#media_dlg.preload}</label></td>\r
+                                                       <td>\r
+                                                               <select id="video_preload" name="video_preload" onchange="Media.formToData();">\r
+                                                                       <option value="none">{#media_dlg.preload_none}</option> \r
+                                                                       <option value="metadata">{#media_dlg.preload_metadata}</option>\r
+                                                                       <option value="auto">{#media_dlg.preload_auto}</option>\r
+                                                               </select>\r
+                                                       </td>\r
+                                               </tr>\r
                                        </table>\r
 \r
                                        <table role="presentation" border="0" cellpadding="4" cellspacing="0">\r
                                                        <td>\r
                                                                <table role="presentation" border="0" cellpadding="0" cellspacing="0">\r
                                                                        <tr>\r
-                                                                               <td><input type="checkbox" class="checkbox" id="video_loop" name="video_loop" onchange="Media.formToData();" /></td>\r
-                                                                               <td><label for="video_loop">{#media_dlg.loop}</label></td>\r
+                                                                               <td><input type="checkbox" class="checkbox" id="video_muted" name="video_muted" onchange="Media.formToData();" /></td>\r
+                                                                               <td><label for="video_muted">{#media_dlg.mute}</label></td>\r
                                                                        </tr>\r
                                                                </table>\r
                                                        </td>\r
 \r
+                                                       <td>\r
+                                                                       <table role="presentation" border="0" cellpadding="0" cellspacing="0">\r
+                                                                                       <tr>\r
+                                                                                                       <td><input type="checkbox" class="checkbox" id="video_loop" name="video_loop" onchange="Media.formToData();" /></td>\r
+                                                                                                       <td><label for="video_loop">{#media_dlg.loop}</label></td>\r
+                                                                                       </tr>\r
+                                                                       </table>\r
+                                                       </td>\r
+\r
                                                        <td>\r
                                                                <table role="presentation" border="0" cellpadding="0" cellspacing="0">\r
                                                                        <tr>\r
-                                                                               <td><input type="checkbox" class="checkbox" id="video_preload" name="video_preload" onchange="Media.formToData();" /></td>\r
-                                                                               <td><label for="video_preload">{#media_dlg.preload}</label></td>\r
+                                                                               <td><input type="checkbox" class="checkbox" id="video_controls" name="video_controls" onchange="Media.formToData();" /></td>\r
+                                                                               <td><label for="video_controls">{#media_dlg.controls}</label></td>\r
                                                                        </tr>\r
                                                                </table>\r
                                                        </td>\r
+                                               </tr>\r
+                                       </table>\r
+                               </fieldset>\r
+\r
+                               <fieldset id="embeddedaudio_options">\r
+                                       <legend>{#media_dlg.embedded_audio_options}</legend>\r
 \r
+                                       <table role="presentation" border="0" cellpadding="4" cellspacing="0">\r
+                                               <tr>\r
                                                        <td>\r
                                                                <table role="presentation" border="0" cellpadding="0" cellspacing="0">\r
                                                                        <tr>\r
-                                                                               <td><input type="checkbox" class="checkbox" id="video_controls" name="video_controls" onchange="Media.formToData();" /></td>\r
-                                                                               <td><label for="video_controls">{#media_dlg.controls}</label></td>\r
+                                                                               <td><input type="checkbox" class="checkbox" id="embeddedaudio_autoplay" name="audio_autoplay" onchange="Media.formToData();" /></td>\r
+                                                                               <td><label for="audio_autoplay">{#media_dlg.play}</label></td>\r
+                                                                       </tr>\r
+                                                               </table>\r
+                                                       </td>\r
+\r
+                                                       <td>\r
+                                                               <table role="presentation" border="0" cellpadding="0" cellspacing="0">\r
+                                                                       <tr>\r
+                                                                               <td><input type="checkbox" class="checkbox" id="embeddedaudio_loop" name="audio_loop" onchange="Media.formToData();" /></td>\r
+                                                                               <td><label for="audio_loop">{#media_dlg.loop}</label></td>\r
+                                                                       </tr>\r
+                                                               </table>\r
+                                                       </td>\r
+\r
+                                                       <td>\r
+                                                               <table role="presentation" border="0" cellpadding="0" cellspacing="0">\r
+                                                                       <tr>\r
+                                                                               <td><input type="checkbox" class="checkbox" id="embeddedaudio_controls" name="audio_controls" onchange="Media.formToData();" /></td>\r
+                                                                               <td><label for="audio_controls">{#media_dlg.controls}</label></td>\r
+                                                                       </tr>\r
+                                                               </table>\r
+                                                       </td>\r
+                                               </tr>\r
+                                       </table>\r
+                               </fieldset>\r
+\r
+                               <fieldset id="audio_options">\r
+                                       <legend>{#media_dlg.html5_audio_options}</legend>\r
+\r
+                                       <table role="presentation">\r
+                                               <tr>\r
+                                                       <td><label for="audio_altsource1">{#media_dlg.altsource1}</label></td>\r
+                                                       <td>\r
+                                                               <table role="presentation" border="0" cellspacing="0" cellpadding="0">\r
+                                                                       <tr>\r
+                                                                               <td><input type="text" id="audio_altsource1" name="audio_altsource1" onchange="Media.formToData();" style="width: 240px" /></td>\r
+                                                                               <td id="audio_altsource1_filebrowser">&nbsp;</td>\r
+                                                                       </tr>\r
+                                                               </table>\r
+                                                       </td>\r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td><label for="audio_altsource2">{#media_dlg.altsource2}</label></td>\r
+                                                       <td>\r
+                                                               <table role="presentation" border="0" cellspacing="0" cellpadding="0">\r
+                                                                       <tr>\r
+                                                                               <td><input type="text" id="audio_altsource2" name="audio_altsource2" onchange="Media.formToData();" style="width: 240px" /></td>\r
+                                                                               <td id="audio_altsource2_filebrowser">&nbsp;</td>\r
+                                                                       </tr>\r
+                                                               </table>\r
+                                                       </td>\r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td><label for="audio_preload">{#media_dlg.preload}</label></td>\r
+                                                       <td>\r
+                                                               <select id="audio_preload" name="audio_preload" onchange="Media.formToData();">\r
+                                                                       <option value="none">{#media_dlg.preload_none}</option>\r
+                                                                       <option value="metadata">{#media_dlg.preload_metadata}</option>\r
+                                                                       <option value="auto">{#media_dlg.preload_auto}</option>\r
+                                                               </select>\r
+                                                       </td>\r
+                                               </tr>\r
+                                       </table>\r
+\r
+                                       <table role="presentation" border="0" cellpadding="4" cellspacing="0">\r
+                                               <tr>\r
+                                                       <td>\r
+                                                               <table role="presentation" border="0" cellpadding="0" cellspacing="0">\r
+                                                                       <tr>\r
+                                                                               <td><input type="checkbox" class="checkbox" id="audio_autoplay" name="audio_autoplay" onchange="Media.formToData();" /></td>\r
+                                                                               <td><label for="audio_autoplay">{#media_dlg.play}</label></td>\r
+                                                                       </tr>\r
+                                                               </table>\r
+                                                       </td>\r
+\r
+                                                       <td>\r
+                                                               <table role="presentation" border="0" cellpadding="0" cellspacing="0">\r
+                                                                       <tr>\r
+                                                                               <td><input type="checkbox" class="checkbox" id="audio_loop" name="audio_loop" onchange="Media.formToData();" /></td>\r
+                                                                               <td><label for="audio_loop">{#media_dlg.loop}</label></td>\r
+                                                                       </tr>\r
+                                                               </table>\r
+                                                       </td>\r
+\r
+                                                       <td>\r
+                                                               <table role="presentation" border="0" cellpadding="0" cellspacing="0">\r
+                                                                       <tr>\r
+                                                                               <td><input type="checkbox" class="checkbox" id="audio_controls" name="audio_controls" onchange="Media.formToData();" /></td>\r
+                                                                               <td><label for="audio_controls">{#media_dlg.controls}</label></td>\r
                                                                        </tr>\r
                                                                </table>\r
                                                        </td>\r
                        <div id="source_panel" class="panel">\r
                                <fieldset>\r
                                        <legend>{#media_dlg.source}</legend>\r
-                                       <textarea id="source" style="width: 100%; height: 390px"></textarea>\r
+                                       <textarea id="source" style="width: 99%; height: 390px"></textarea>\r
                                </fieldset>\r
                        </div>\r
                </div>\r
diff --git a/program/js/tiny_mce/plugins/media/moxieplayer.swf b/program/js/tiny_mce/plugins/media/moxieplayer.swf
new file mode 100644 (file)
index 0000000..585d772
Binary files /dev/null and b/program/js/tiny_mce/plugins/media/moxieplayer.swf differ
index 73947355f014523794f540cb294f88b3390b4219..687f5486690595bf4174e91645c686cf0bfe06e8 100644 (file)
@@ -1 +1 @@
-(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(tinymce.isIE&&f.keyCode==9){d.execCommand("mceNonBreaking");d.execCommand("mceNonBreaking");d.execCommand("mceNonBreaking");tinymce.dom.Event.cancel(f)}})}},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
+(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
index b3ea82ee03737a0ac3a6b922b76d3cf445ee29cb..d492fbefe4190c7bed16ef668b7c941403dd7be0 100644 (file)
 \r
                        if (ed.getParam('nonbreaking_force_tab')) {\r
                                ed.onKeyDown.add(function(ed, e) {\r
-                                       if (tinymce.isIE && e.keyCode == 9) {\r
+                                       if (e.keyCode == 9) {\r
+                                               e.preventDefault();\r
+       \r
                                                ed.execCommand('mceNonBreaking');\r
                                                ed.execCommand('mceNonBreaking');\r
                                                ed.execCommand('mceNonBreaking');\r
-                                               tinymce.dom.Event.cancel(e);\r
                                        }\r
                                });\r
                        }\r
diff --git a/program/js/tiny_mce/plugins/noneditable/editor_plugin.js b/program/js/tiny_mce/plugins/noneditable/editor_plugin.js
new file mode 100644 (file)
index 0000000..da411eb
--- /dev/null
@@ -0,0 +1 @@
+(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
new file mode 100644 (file)
index 0000000..a18bcd7
--- /dev/null
@@ -0,0 +1,537 @@
+/**\r
+ * editor_plugin_src.js\r
+ *\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ */\r
+\r
+(function() {\r
+       var TreeWalker = tinymce.dom.TreeWalker;\r
+       var externalName = 'contenteditable', internalName = 'data-mce-' + externalName;\r
+       var VK = tinymce.VK;\r
+\r
+       function handleContentEditableSelection(ed) {\r
+               var dom = ed.dom, selection = ed.selection, invisibleChar, caretContainerId = 'mce_noneditablecaret', invisibleChar = '\uFEFF';\r
+\r
+               // Returns the content editable state of a node "true/false" or null\r
+               function getContentEditable(node) {\r
+                       var contentEditable;\r
+\r
+                       // Ignore non elements\r
+                       if (node.nodeType === 1) {\r
+                               // Check for fake content editable\r
+                               contentEditable = node.getAttribute(internalName);\r
+                               if (contentEditable && contentEditable !== "inherit") {\r
+                                       return contentEditable;\r
+                               }\r
+\r
+                               // Check for real content editable\r
+                               contentEditable = node.contentEditable;\r
+                               if (contentEditable !== "inherit") {\r
+                                       return contentEditable;\r
+                               }\r
+                       }\r
+\r
+                       return null;\r
+               };\r
+\r
+               // Returns the noneditable parent or null if there is a editable before it or if it wasn't found\r
+               function getNonEditableParent(node) {\r
+                       var state;\r
+\r
+                       while (node) {\r
+                               state = getContentEditable(node);\r
+                               if (state) {\r
+                                       return state  === "false" ? node : null;\r
+                               }\r
+\r
+                               node = node.parentNode;\r
+                       }\r
+               };\r
+\r
+               // Get caret container parent for the specified node\r
+               function getParentCaretContainer(node) {\r
+                       while (node) {\r
+                               if (node.id === caretContainerId) {\r
+                                       return node;\r
+                               }\r
+\r
+                               node = node.parentNode;\r
+                       }\r
+               };\r
+\r
+               // Finds the first text node in the specified node\r
+               function findFirstTextNode(node) {\r
+                       var walker;\r
+\r
+                       if (node) {\r
+                               walker = new TreeWalker(node, node);\r
+\r
+                               for (node = walker.current(); node; node = walker.next()) {\r
+                                       if (node.nodeType === 3) {\r
+                                               return node;\r
+                                       }\r
+                               }\r
+                       }\r
+               };\r
+\r
+               // Insert caret container before/after target or expand selection to include block\r
+               function insertCaretContainerOrExpandToBlock(target, before) {\r
+                       var caretContainer, rng;\r
+\r
+                       // Select block\r
+                       if (getContentEditable(target) === "false") {\r
+                               if (dom.isBlock(target)) {\r
+                                       selection.select(target);\r
+                                       return;\r
+                               }\r
+                       }\r
+\r
+                       rng = dom.createRng();\r
+\r
+                       if (getContentEditable(target) === "true") {\r
+                               if (!target.firstChild) {\r
+                                       target.appendChild(ed.getDoc().createTextNode('\u00a0'));\r
+                               }\r
+\r
+                               target = target.firstChild;\r
+                               before = true;\r
+                       }\r
+\r
+                       //caretContainer = dom.create('span', {id: caretContainerId, 'data-mce-bogus': true, style:'border: 1px solid red'}, invisibleChar);\r
+                       caretContainer = dom.create('span', {id: caretContainerId, 'data-mce-bogus': true}, invisibleChar);\r
+\r
+                       if (before) {\r
+                               target.parentNode.insertBefore(caretContainer, target);\r
+                       } else {\r
+                               dom.insertAfter(caretContainer, target);\r
+                       }\r
+\r
+                       rng.setStart(caretContainer.firstChild, 1);\r
+                       rng.collapse(true);\r
+                       selection.setRng(rng);\r
+\r
+                       return caretContainer;\r
+               };\r
+\r
+               // Removes any caret container except the one we might be in\r
+               function removeCaretContainer(caretContainer) {\r
+                       var child, currentCaretContainer, lastContainer;\r
+\r
+                       if (caretContainer) {\r
+                                       rng = selection.getRng(true);\r
+                                       rng.setStartBefore(caretContainer);\r
+                                       rng.setEndBefore(caretContainer);\r
+\r
+                                       child = findFirstTextNode(caretContainer);\r
+                                       if (child && child.nodeValue.charAt(0) == invisibleChar) {\r
+                                               child = child.deleteData(0, 1);\r
+                                       }\r
+\r
+                                       dom.remove(caretContainer, true);\r
+\r
+                                       selection.setRng(rng);\r
+                       } else {\r
+                               currentCaretContainer = getParentCaretContainer(selection.getStart());\r
+                               while ((caretContainer = dom.get(caretContainerId)) && caretContainer !== lastContainer) {\r
+                                       if (currentCaretContainer !== caretContainer) {\r
+                                               child = findFirstTextNode(caretContainer);\r
+                                               if (child && child.nodeValue.charAt(0) == invisibleChar) {\r
+                                                       child = child.deleteData(0, 1);\r
+                                               }\r
+\r
+                                               dom.remove(caretContainer, true);\r
+                                       }\r
+\r
+                                       lastContainer = caretContainer;\r
+                               }\r
+                       }\r
+               };\r
+\r
+               // Modifies the selection to include contentEditable false elements or insert caret containers\r
+               function moveSelection() {\r
+                       var nonEditableStart, nonEditableEnd, isCollapsed, rng, element;\r
+\r
+                       // 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\r
+                       function hasSideContent(element, left) {\r
+                               var container, offset, walker, node, len;\r
+\r
+                               container = rng.startContainer;\r
+                               offset = rng.startOffset;\r
+\r
+                               // If endpoint is in middle of text node then expand to beginning/end of element\r
+                               if (container.nodeType == 3) {\r
+                                       len = container.nodeValue.length;\r
+                                       if ((offset > 0 && offset < len) || (left ? offset == len : offset == 0)) {\r
+                                               return;\r
+                                       }\r
+                               } else {\r
+                                       // Can we resolve the node by index\r
+                                       if (offset < container.childNodes.length) {\r
+                                               // Browser represents caret position as the offset at the start of an element. When moving right\r
+                                               // this is the element we are moving into so we consider our container to be child node at offset-1\r
+                                               var pos = !left && offset > 0 ? offset-1 : offset;\r
+                                               container = container.childNodes[pos];\r
+                                               if (container.hasChildNodes()) {\r
+                                                       container = container.firstChild;\r
+                                               }\r
+                                       } else {\r
+                                               // 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\r
+                                               return !left ? element : null;\r
+                                       }\r
+                               }\r
+\r
+                               // Walk left/right to look for contents\r
+                               walker = new TreeWalker(container, element);\r
+                               while (node = walker[left ? 'prev' : 'next']()) {\r
+                                       if (node.nodeType === 3 && node.nodeValue.length > 0) {\r
+                                               return;\r
+                                       } else if (getContentEditable(node) === "true") {\r
+                                               // Found contentEditable=true element return this one to we can move the caret inside it\r
+                                               return node;\r
+                                       }\r
+                               }\r
+\r
+                               return element;\r
+                       };\r
+\r
+                       // Remove any existing caret containers\r
+                       removeCaretContainer();\r
+\r
+                       // Get noneditable start/end elements\r
+                       isCollapsed = selection.isCollapsed();\r
+                       nonEditableStart = getNonEditableParent(selection.getStart());\r
+                       nonEditableEnd = getNonEditableParent(selection.getEnd());\r
+\r
+                       // Is any fo the range endpoints noneditable\r
+                       if (nonEditableStart || nonEditableEnd) {\r
+                               rng = selection.getRng(true);\r
+\r
+                               // If it's a caret selection then look left/right to see if we need to move the caret out side or expand\r
+                               if (isCollapsed) {\r
+                                       nonEditableStart = nonEditableStart || nonEditableEnd;\r
+                                       var start = selection.getStart();\r
+                                       if (element = hasSideContent(nonEditableStart, true)) {\r
+                                               // We have no contents to the left of the caret then insert a caret container before the noneditable element\r
+                                               insertCaretContainerOrExpandToBlock(element, true);\r
+                                       } else if (element = hasSideContent(nonEditableStart, false)) {\r
+                                               // We have no contents to the right of the caret then insert a caret container after the noneditable element\r
+                                               insertCaretContainerOrExpandToBlock(element, false);\r
+                                       } else {\r
+                                               // We are in the middle of a noneditable so expand to select it\r
+                                               selection.select(nonEditableStart);\r
+                                       }\r
+                               } else {\r
+                                       rng = selection.getRng(true);\r
+\r
+                                       // Expand selection to include start non editable element\r
+                                       if (nonEditableStart) {\r
+                                               rng.setStartBefore(nonEditableStart);\r
+                                       }\r
+\r
+                                       // Expand selection to include end non editable element\r
+                                       if (nonEditableEnd) {\r
+                                               rng.setEndAfter(nonEditableEnd);\r
+                                       }\r
+\r
+                                       selection.setRng(rng);\r
+                               }\r
+                       }\r
+               };\r
+\r
+               function handleKey(ed, e) {\r
+                       var keyCode = e.keyCode, nonEditableParent, caretContainer, startElement, endElement;\r
+\r
+                       function getNonEmptyTextNodeSibling(node, prev) {\r
+                               while (node = node[prev ? 'previousSibling' : 'nextSibling']) {\r
+                                       if (node.nodeType !== 3 || node.nodeValue.length > 0) {\r
+                                               return node;\r
+                                       }\r
+                               }\r
+                       };\r
+\r
+                       function positionCaretOnElement(element, start) {\r
+                               selection.select(element);\r
+                               selection.collapse(start);\r
+                       }\r
+\r
+                       function canDelete(backspace) {\r
+                               var rng, container, offset, nonEditableParent;\r
+\r
+                               function removeNodeIfNotParent(node) {\r
+                                       var parent = container;\r
+\r
+                                       while (parent) {\r
+                                               if (parent === node) {\r
+                                                       return;\r
+                                               }\r
+\r
+                                               parent = parent.parentNode;\r
+                                       }\r
+\r
+                                       dom.remove(node);\r
+                                       moveSelection();\r
+                               }\r
+\r
+                               function isNextPrevTreeNodeNonEditable() {\r
+                                       var node, walker, nonEmptyElements = ed.schema.getNonEmptyElements();\r
+\r
+                                       walker = new tinymce.dom.TreeWalker(container, ed.getBody());\r
+                                       while (node = (backspace ? walker.prev() : walker.next())) {\r
+                                               // Found IMG/INPUT etc\r
+                                               if (nonEmptyElements[node.nodeName.toLowerCase()]) {\r
+                                                       break;\r
+                                               }\r
+\r
+                                               // Found text node with contents\r
+                                               if (node.nodeType === 3 && tinymce.trim(node.nodeValue).length > 0) {\r
+                                                       break;\r
+                                               }\r
+\r
+                                               // Found non editable node\r
+                                               if (getContentEditable(node) === "false") {\r
+                                                       removeNodeIfNotParent(node);\r
+                                                       return true;\r
+                                               }\r
+                                       }\r
+\r
+                                       // Check if the content node is within a non editable parent\r
+                                       if (getNonEditableParent(node)) {\r
+                                               return true;\r
+                                       }\r
+\r
+                                       return false;\r
+                               }\r
+\r
+                               if (selection.isCollapsed()) {\r
+                                       rng = selection.getRng(true);\r
+                                       container = rng.startContainer;\r
+                                       offset = rng.startOffset;\r
+                                       container = getParentCaretContainer(container) || container;\r
+\r
+                                       // Is in noneditable parent\r
+                                       if (nonEditableParent = getNonEditableParent(container)) {\r
+                                               removeNodeIfNotParent(nonEditableParent);\r
+                                               return false;\r
+                                       }\r
+\r
+                                       // Check if the caret is in the middle of a text node\r
+                                       if (container.nodeType == 3 && (backspace ? offset > 0 : offset < container.nodeValue.length)) {\r
+                                               return true;\r
+                                       }\r
+\r
+                                       // Resolve container index\r
+                                       if (container.nodeType == 1) {\r
+                                               container = container.childNodes[offset] || container;\r
+                                       }\r
+\r
+                                       // Check if previous or next tree node is non editable then block the event\r
+                                       if (isNextPrevTreeNodeNonEditable()) {\r
+                                               return false;\r
+                                       }\r
+                               }\r
+\r
+                               return true;\r
+                       }\r
+\r
+                       startElement = selection.getStart()\r
+                       endElement = selection.getEnd();\r
+\r
+                       // Disable all key presses in contentEditable=false except delete or backspace\r
+                       nonEditableParent = getNonEditableParent(startElement) || getNonEditableParent(endElement);\r
+                       if (nonEditableParent && (keyCode < 112 || keyCode > 124) && keyCode != VK.DELETE && keyCode != VK.BACKSPACE) {\r
+                               // Is Ctrl+c, Ctrl+v or Ctrl+x then use default browser behavior\r
+                               if ((tinymce.isMac ? e.metaKey : e.ctrlKey) && (keyCode == 67 || keyCode == 88 || keyCode == 86)) {\r
+                                       return;\r
+                               }\r
+\r
+                               e.preventDefault();\r
+\r
+                               // Arrow left/right select the element and collapse left/right\r
+                               if (keyCode == VK.LEFT || keyCode == VK.RIGHT) {\r
+                                       var left = keyCode == VK.LEFT;\r
+                                       // If a block element find previous or next element to position the caret\r
+                                       if (ed.dom.isBlock(nonEditableParent)) {\r
+                                               var targetElement = left ? nonEditableParent.previousSibling : nonEditableParent.nextSibling;\r
+                                               var walker = new TreeWalker(targetElement, targetElement);\r
+                                               var caretElement = left ? walker.prev() : walker.next();\r
+                                               positionCaretOnElement(caretElement, !left);\r
+                                       } else {\r
+                                               positionCaretOnElement(nonEditableParent, left);\r
+                                       }\r
+                               }\r
+                       } else {\r
+                               // Is arrow left/right, backspace or delete\r
+                               if (keyCode == VK.LEFT || keyCode == VK.RIGHT || keyCode == VK.BACKSPACE || keyCode == VK.DELETE) {\r
+                                       caretContainer = getParentCaretContainer(startElement);\r
+                                       if (caretContainer) {\r
+                                               // Arrow left or backspace\r
+                                               if (keyCode == VK.LEFT || keyCode == VK.BACKSPACE) {\r
+                                                       nonEditableParent = getNonEmptyTextNodeSibling(caretContainer, true);\r
+\r
+                                                       if (nonEditableParent && getContentEditable(nonEditableParent) === "false") {\r
+                                                               e.preventDefault();\r
+\r
+                                                               if (keyCode == VK.LEFT) {\r
+                                                                       positionCaretOnElement(nonEditableParent, true);\r
+                                                               } else {\r
+                                                                       dom.remove(nonEditableParent);\r
+                                                                       return;\r
+                                                               }\r
+                                                       } else {\r
+                                                               removeCaretContainer(caretContainer);\r
+                                                       }\r
+                                               }\r
+\r
+                                               // Arrow right or delete\r
+                                               if (keyCode == VK.RIGHT || keyCode == VK.DELETE) {\r
+                                                       nonEditableParent = getNonEmptyTextNodeSibling(caretContainer);\r
+\r
+                                                       if (nonEditableParent && getContentEditable(nonEditableParent) === "false") {\r
+                                                               e.preventDefault();\r
+\r
+                                                               if (keyCode == VK.RIGHT) {\r
+                                                                       positionCaretOnElement(nonEditableParent, false);\r
+                                                               } else {\r
+                                                                       dom.remove(nonEditableParent);\r
+                                                                       return;\r
+                                                               }\r
+                                                       } else {\r
+                                                               removeCaretContainer(caretContainer);\r
+                                                       }\r
+                                               }\r
+                                       }\r
+\r
+                                       if ((keyCode == VK.BACKSPACE || keyCode == VK.DELETE) && !canDelete(keyCode == VK.BACKSPACE)) {\r
+                                               e.preventDefault();\r
+                                               return false;\r
+                                       }\r
+                               }\r
+                       }\r
+               };\r
+\r
+               ed.onMouseDown.addToTop(function(ed, e) {\r
+                       var node = ed.selection.getNode();\r
+\r
+                       if (getContentEditable(node) === "false" && node == e.target) {\r
+                               // Expand selection on mouse down we can't block the default event since it's used for drag/drop\r
+                               moveSelection();\r
+                       }\r
+               });\r
+\r
+               ed.onMouseUp.addToTop(moveSelection);\r
+               ed.onKeyDown.addToTop(handleKey);\r
+               ed.onKeyUp.addToTop(moveSelection);\r
+       };\r
+\r
+       tinymce.create('tinymce.plugins.NonEditablePlugin', {\r
+               init : function(ed, url) {\r
+                       var editClass, nonEditClass, nonEditableRegExps;\r
+\r
+                       // Converts configured regexps to noneditable span items\r
+                       function convertRegExpsToNonEditable(ed, args) {\r
+                               var i = nonEditableRegExps.length, content = args.content, cls = tinymce.trim(nonEditClass);\r
+\r
+                               // Don't replace the variables when raw is used for example on undo/redo\r
+                               if (args.format == "raw") {\r
+                                       return;\r
+                               }\r
+\r
+                               while (i--) {\r
+                                       content = content.replace(nonEditableRegExps[i], function(match) {\r
+                                               var args = arguments, index = args[args.length - 2];\r
+\r
+                                               // Is value inside an attribute then don't replace\r
+                                               if (index > 0 && content.charAt(index - 1) == '"') {\r
+                                                       return match;\r
+                                               }\r
+\r
+                                               return '<span class="' + cls + '" data-mce-content="' + ed.dom.encode(args[0]) + '">' + ed.dom.encode(typeof(args[1]) === "string" ? args[1] : args[0]) + '</span>';\r
+                                       });\r
+                               }\r
+\r
+                               args.content = content;\r
+                       };\r
+                       \r
+                       editClass = " " + tinymce.trim(ed.getParam("noneditable_editable_class", "mceEditable")) + " ";\r
+                       nonEditClass = " " + tinymce.trim(ed.getParam("noneditable_noneditable_class", "mceNonEditable")) + " ";\r
+\r
+                       // Setup noneditable regexps array\r
+                       nonEditableRegExps = ed.getParam("noneditable_regexp");\r
+                       if (nonEditableRegExps && !nonEditableRegExps.length) {\r
+                               nonEditableRegExps = [nonEditableRegExps];\r
+                       }\r
+\r
+                       ed.onPreInit.add(function() {\r
+                               handleContentEditableSelection(ed);\r
+\r
+                               if (nonEditableRegExps) {\r
+                                       ed.selection.onBeforeSetContent.add(convertRegExpsToNonEditable);\r
+                                       ed.onBeforeSetContent.add(convertRegExpsToNonEditable);\r
+                               }\r
+\r
+                               // Apply contentEditable true/false on elements with the noneditable/editable classes\r
+                               ed.parser.addAttributeFilter('class', function(nodes) {\r
+                                       var i = nodes.length, className, node;\r
+\r
+                                       while (i--) {\r
+                                               node = nodes[i];\r
+                                               className = " " + node.attr("class") + " ";\r
+\r
+                                               if (className.indexOf(editClass) !== -1) {\r
+                                                       node.attr(internalName, "true");\r
+                                               } else if (className.indexOf(nonEditClass) !== -1) {\r
+                                                       node.attr(internalName, "false");\r
+                                               }\r
+                                       }\r
+                               });\r
+\r
+                               // Remove internal name\r
+                               ed.serializer.addAttributeFilter(internalName, function(nodes, name) {\r
+                                       var i = nodes.length, node;\r
+\r
+                                       while (i--) {\r
+                                               node = nodes[i];\r
+\r
+                                               if (nonEditableRegExps && node.attr('data-mce-content')) {\r
+                                                       node.name = "#text";\r
+                                                       node.type = 3;\r
+                                                       node.raw = true;\r
+                                                       node.value = node.attr('data-mce-content');\r
+                                               } else {\r
+                                                       node.attr(externalName, null);\r
+                                                       node.attr(internalName, null);\r
+                                               }\r
+                                       }\r
+                               });\r
+\r
+                               // Convert external name into internal name\r
+                               ed.parser.addAttributeFilter(externalName, function(nodes, name) {\r
+                                       var i = nodes.length, node;\r
+\r
+                                       while (i--) {\r
+                                               node = nodes[i];\r
+                                               node.attr(internalName, node.attr(externalName));\r
+                                               node.attr(externalName, null);\r
+                                       }\r
+                               });\r
+                       });\r
+               },\r
+\r
+               getInfo : function() {\r
+                       return {\r
+                               longname : 'Non editable elements',\r
+                               author : 'Moxiecode Systems AB',\r
+                               authorurl : 'http://tinymce.moxiecode.com',\r
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable',\r
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+                       };\r
+               }\r
+       });\r
+\r
+       // Register plugin\r
+       tinymce.PluginManager.add('noneditable', tinymce.plugins.NonEditablePlugin);\r
+})();
\ 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
new file mode 100644 (file)
index 0000000..35085e8
--- /dev/null
@@ -0,0 +1 @@
+(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
new file mode 100644 (file)
index 0000000..a094c19
--- /dev/null
@@ -0,0 +1,74 @@
+/**\r
+ * editor_plugin_src.js\r
+ *\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ */\r
+\r
+(function() {\r
+       tinymce.create('tinymce.plugins.PageBreakPlugin', {\r
+               init : function(ed, url) {\r
+                       var pb = '<img src="' + ed.theme.url + '/img/trans.gif" class="mcePageBreak mceItemNoResize" />', cls = 'mcePageBreak', sep = ed.getParam('pagebreak_separator', '<!-- pagebreak -->'), pbRE;\r
+\r
+                       pbRE = new RegExp(sep.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g, function(a) {return '\\' + a;}), 'g');\r
+\r
+                       // Register commands\r
+                       ed.addCommand('mcePageBreak', function() {\r
+                               ed.execCommand('mceInsertContent', 0, pb);\r
+                       });\r
+\r
+                       // Register buttons\r
+                       ed.addButton('pagebreak', {title : 'pagebreak.desc', cmd : cls});\r
+\r
+                       ed.onInit.add(function() {\r
+                               if (ed.theme.onResolveName) {\r
+                                       ed.theme.onResolveName.add(function(th, o) {\r
+                                               if (o.node.nodeName == 'IMG' && ed.dom.hasClass(o.node, cls))\r
+                                                       o.name = 'pagebreak';\r
+                                       });\r
+                               }\r
+                       });\r
+\r
+                       ed.onClick.add(function(ed, e) {\r
+                               e = e.target;\r
+\r
+                               if (e.nodeName === 'IMG' && ed.dom.hasClass(e, cls))\r
+                                       ed.selection.select(e);\r
+                       });\r
+\r
+                       ed.onNodeChange.add(function(ed, cm, n) {\r
+                               cm.setActive('pagebreak', n.nodeName === 'IMG' && ed.dom.hasClass(n, cls));\r
+                       });\r
+\r
+                       ed.onBeforeSetContent.add(function(ed, o) {\r
+                               o.content = o.content.replace(pbRE, pb);\r
+                       });\r
+\r
+                       ed.onPostProcess.add(function(ed, o) {\r
+                               if (o.get)\r
+                                       o.content = o.content.replace(/<img[^>]+>/g, function(im) {\r
+                                               if (im.indexOf('class="mcePageBreak') !== -1)\r
+                                                       im = sep;\r
+\r
+                                               return im;\r
+                                       });\r
+                       });\r
+               },\r
+\r
+               getInfo : function() {\r
+                       return {\r
+                               longname : 'PageBreak',\r
+                               author : 'Moxiecode Systems AB',\r
+                               authorurl : 'http://tinymce.moxiecode.com',\r
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/pagebreak',\r
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+                       };\r
+               }\r
+       });\r
+\r
+       // Register plugin\r
+       tinymce.PluginManager.add('pagebreak', tinymce.plugins.PageBreakPlugin);\r
+})();
\ No newline at end of file
index 6c65069f3ee22e761aae344abaf536a46bbe95c3..be7eee8f143752b360ec213c69fb6925737fa411 100644 (file)
@@ -1 +1 @@
-(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_text_use_dialog:false,paste_text_sticky:false,paste_text_sticky_default:false,paste_text_notifyalways:false,paste_text_linebreaktype:"p",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(m,k){var l=d.dom,i,j;f.onPreProcess.dispatch(f,m);m.node=l.create("div",0,m.content);if(tinymce.isGecko){i=d.selection.getRng(true);if(i.startContainer==i.endContainer&&i.startContainer.nodeType==3){j=l.select("p,h1,h2,h3,h4,h5,h6,pre",m.node);if(j.length==1&&m.content.indexOf("__MCE_ITEM__")===-1){l.remove(j.reverse(),true)}}}f.onPostProcess.dispatch(f,m);m.content=d.serializer.serialize(m.node,{getInner:1});if((!k)&&(d.pasteAsPlainText)){f._insertPlainText(d,l,m.content);if(!b(d,"paste_text_sticky")){d.pasteAsPlainText=false;d.controlManager.setActive("pastetext",false)}}else{f._insert(m.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_sticky"))}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: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().y}o.setStyles(l,{position:"absolute",left:-10000,top:i,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="<pre>"+o.encode(r).replace(/\r?\n/g,"<br />")+"</pre>"}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){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"]])}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(/(<[a-z][^>]*\s)(?:id|name|language|type|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,x,v){var t,u,l,k,r,e,p,f,n=j.getWin(),z=j.getDoc(),s=j.selection,m=tinymce.is,y=tinymce.inArray,g=b(j,"paste_text_linebreaktype"),o=b(j,"paste_text_replacements");function q(d){c(d,function(h){if(h.constructor==RegExp){v=v.replace(h,"")}else{v=v.replace(h[0],h[1])}})}if((typeof(v)==="string")&&(v.length>0)){if(/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(v)){q([/[\n\r]+/g])}else{q([/\r+/g])}q([[/<\/(?: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"],[/\n{3,}/g,"\n\n"],/^\s+|\s+$/g]);v=x.decode(tinymce.html.Entities.encodeRaw(v));if(!s.isCollapsed()){z.execCommand("Delete",false,null)}if(m(o,"array")||(m(o,"array"))){q(o)}else{if(m(o,"string")){q(new RegExp(o,"gi"))}}if(g=="none"){q([[/\n+/g," "]])}else{if(g=="br"){q([[/\n/g,"<br />"]])}else{q([/^\s+|\s+$/g,[/\n\n/g,"</p><p>"],[/\n/g,"<br />"]])}}if((l=v.indexOf("</p><p>"))!=-1){k=v.lastIndexOf("</p><p>");r=s.getNode();e=[];do{if(r.nodeType==1){if(r.nodeName=="TD"||r.nodeName=="BODY"){break}e[e.length]=r}}while(r=r.parentNode);if(e.length>0){p=v.substring(0,l);f="";for(t=0,u=e.length;t<u;t++){p+="</"+e[t].nodeName.toLowerCase()+">";f+="<"+e[e.length-t-1].nodeName.toLowerCase()+">"}if(l==k){v=p+f+v.substring(l+7)}else{v=p+v.substring(l+4,k+4)+f+v.substring(k+7)}}}j.execCommand("mceInsertRawHTML",false,v+'<span id="_plain_text_marker">&nbsp;</span>');window.setTimeout(function(){var d=x.get("_plain_text_marker"),A,h,w,i;s.select(d,false);z.execCommand("Delete",false,null);d=null;A=s.getStart();h=x.getViewPort(n);w=x.getPos(A).y;i=A.clientHeight;if((w<h.y)||(w+i>h.y+h.h)){z.body.scrollTop=w<h.y?w:w-h.h+25}},0)}},_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
+(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_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(/(<[a-z][^>]*\s)(?:id|name|language|type|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(g){var d=this.editor,e=b(d,"paste_text_linebreaktype"),i=b(d,"paste_text_replacements"),f=tinymce.is;function h(j){c(j,function(k){if(k.constructor==RegExp){g=g.replace(k,"")}else{g=g.replace(k[0],k[1])}})}if((typeof(g)==="string")&&(g.length>0)){if(/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(g)){h([/[\n\r]+/g])}else{h([/\r+/g])}h([[/<\/(?: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"],[/\n{3,}/g,"\n\n"]]);g=d.dom.decode(tinymce.html.Entities.encodeRaw(g));if(f(i,"array")){h(i)}else{if(f(i,"string")){h(new RegExp(i,"gi"))}}if(e=="none"){h([[/\n+/g," "]])}else{if(e=="br"){h([[/\n/g,"<br />"]])}else{if(e=="p"){h([[/\n+/g,"</p><p>"],[/^(.*<\/p>)(<p>)$/,"<p>$1"]])}else{h([[/\n\n/g,"</p><p>"],[/^(.*<\/p>)(<p>)$/,"<p>$1"],[/\n/g,"<br />"]])}}}d.execCommand("mceInsertContent",false,g)}},_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
index ef5fe3a7cf5787e260c3f6d6ce2c90c51a7e89a3..9f1c35476a2ea9afe328907d8a955208fd905ff0 100644 (file)
@@ -27,7 +27,7 @@
                        paste_text_sticky : false,\r
                        paste_text_sticky_default : false,\r
                        paste_text_notifyalways : false,\r
-                       paste_text_linebreaktype : "p",\r
+                       paste_text_linebreaktype : "combined",\r
                        paste_text_replacements : [\r
                                [/\u2026/g, "..."],\r
                                [/[\x93\x94\u201c\u201d]/g, '"'],\r
@@ -76,7 +76,7 @@
                        // This function executes the process handlers and inserts the contents\r
                        // force_rich overrides plain text mode set by user, important for pasting with execCommand\r
                        function process(o, force_rich) {\r
-                               var dom = ed.dom, rng, nodes;\r
+                               var dom = ed.dom, rng;\r
 \r
                                // Execute pre process handlers\r
                                t.onPreProcess.dispatch(t, o);\r
                                if (tinymce.isGecko) {\r
                                        rng = ed.selection.getRng(true);\r
                                        if (rng.startContainer == rng.endContainer && rng.startContainer.nodeType == 3) {\r
-                                               nodes = dom.select('p,h1,h2,h3,h4,h5,h6,pre', o.node);\r
-\r
                                                // Is only one block node and it doesn't contain word stuff\r
-                                               if (nodes.length == 1 && o.content.indexOf('__MCE_ITEM__') === -1)\r
-                                                       dom.remove(nodes.reverse(), true);\r
+                                               if (o.node.childNodes.length === 1 && /^(p|h[1-6]|pre)$/i.test(o.node.firstChild.nodeName) && o.content.indexOf('__MCE_ITEM__') === -1)\r
+                                                       dom.remove(o.node.firstChild, true);\r
                                        }\r
                                }\r
 \r
                                t.onPostProcess.dispatch(t, o);\r
 \r
                                // Serialize content\r
-                               o.content = ed.serializer.serialize(o.node, {getInner : 1});\r
+                               o.content = ed.serializer.serialize(o.node, {getInner : 1, forced_root_block : ''});\r
 \r
                                // Plain text option active?\r
                                if ((!force_rich) && (ed.pasteAsPlainText)) {\r
-                                       t._insertPlainText(ed, dom, o.content);\r
+                                       t._insertPlainText(o.content);\r
 \r
                                        if (!getParam(ed, "paste_text_sticky")) {\r
                                                ed.pasteAsPlainText = false;\r
                                                if (getParam(ed, "paste_text_sticky")) {\r
                                                        ed.windowManager.alert(ed.translate('paste.plaintext_mode_sticky'));\r
                                                } else {\r
-                                                       ed.windowManager.alert(ed.translate('paste.plaintext_mode_sticky'));\r
+                                                       ed.windowManager.alert(ed.translate('paste.plaintext_mode'));\r
                                                }\r
 \r
                                                if (!getParam(ed, "paste_text_notifyalways")) {\r
 \r
                                        if (ed.pasteAsPlainText) {\r
                                                e.preventDefault();\r
-                                               process({content : textContent.replace(/\r?\n/g, '<br />')});\r
+                                               process({content : dom.encode(textContent).replace(/\r?\n/g, '<br />')});\r
                                                return;\r
                                        }\r
                                }\r
                                if (body != ed.getDoc().body)\r
                                        posY = dom.getPos(ed.selection.getStart(), body).y;\r
                                else\r
-                                       posY = body.scrollTop + dom.getViewPort().y;\r
+                                       posY = body.scrollTop + dom.getViewPort(ed.getWin()).y;\r
 \r
                                // Styles needs to be applied after the element is added to the document since WebKit will otherwise remove all styles\r
+                               // If also needs to be in view on IE or the paste would fail\r
                                dom.setStyles(n, {\r
                                        position : 'absolute',\r
-                                       left : -10000,\r
-                                       top : posY,\r
+                                       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\r
+                                       top : posY - 25,\r
                                        width : 1,\r
                                        height : 1,\r
                                        overflow : 'hidden'\r
                                                                        h += n.innerHTML;\r
                                                        });\r
                                                } else {\r
-                                                       // Found WebKit weirdness so force the content into plain text mode\r
-                                                       h = '<pre>' + dom.encode(textContent).replace(/\r?\n/g, '<br />') + '</pre>';\r
+                                                       // Found WebKit weirdness so force the content into paragraphs this seems to happen when you paste plain text from Nodepad etc\r
+                                                       // So this logic will replace double enter with paragraphs and single enter with br so it kind of looks the same\r
+                                                       h = '<p>' + dom.encode(textContent).replace(/\r?\n\r?\n/g, '</p><p>').replace(/\r?\n/g, '<br />') + '</p>';\r
                                                }\r
 \r
                                                // Remove the nodes\r
                        }\r
 \r
                        // IE9 adds BRs before/after block elements when contents is pasted from word or for example another browser\r
-                       if (tinymce.isIE && document.documentMode >= 9)\r
+                       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)) {\r
+                               // IE9 adds BRs before/after block elements when contents is pasted from word or for example another browser\r
                                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']]);\r
 \r
+                               // IE9 also adds an extra BR element for each soft-linefeed and it also adds a BR for each word wrap break\r
+                               process([\r
+                                       [/<br><br>/g, '<BR><BR>'], // Replace multiple BR elements with uppercase BR to keep them intact\r
+                                       [/<br>/g, ' '], // Replace single br elements with space since they are word wrap BR:s\r
+                                       [/<BR><BR>/g, '<br>'] // Replace back the double brs but into a single BR\r
+                               ]);\r
+                       }\r
+\r
                        // Detect Word content and process it more aggressive\r
                        if (/class="?Mso|style="[^"]*\bmso-|w:WordDocument/i.test(h) || o.wordContent) {\r
                                o.wordContent = true;                   // Mark the pasted contents as word specific content\r
                 * plugin, and requires minimal changes to add the new functionality.\r
                 * Speednet - June 2009\r
                 */\r
-               _insertPlainText : function(ed, dom, h) {\r
-                       var i, len, pos, rpos, node, breakElms, before, after,\r
-                               w = ed.getWin(),\r
-                               d = ed.getDoc(),\r
-                               sel = ed.selection,\r
-                               is = tinymce.is,\r
-                               inArray = tinymce.inArray,\r
+               _insertPlainText : function(content) {\r
+                       var ed = this.editor,\r
                                linebr = getParam(ed, "paste_text_linebreaktype"),\r
-                               rl = getParam(ed, "paste_text_replacements");\r
+                               rl = getParam(ed, "paste_text_replacements"),\r
+                               is = tinymce.is;\r
 \r
                        function process(items) {\r
                                each(items, function(v) {\r
                                        if (v.constructor == RegExp)\r
-                                               h = h.replace(v, "");\r
+                                               content = content.replace(v, "");\r
                                        else\r
-                                               h = h.replace(v[0], v[1]);\r
+                                               content = content.replace(v[0], v[1]);\r
                                });\r
                        };\r
 \r
-                       if ((typeof(h) === "string") && (h.length > 0)) {\r
+                       if ((typeof(content) === "string") && (content.length > 0)) {\r
                                // If HTML content with line-breaking tags, then remove all cr/lf chars because only tags will break a line\r
-                               if (/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(h)) {\r
+                               if (/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(content)) {\r
                                        process([\r
                                                /[\n\r]+/g\r
                                        ]);\r
                                        [/<\/t[dh]>\s*<t[dh][^>]*>/gi, "\t"],           // Table cells get tabs betweem them\r
                                        /<[a-z!\/?][^>]*>/gi,                                           // Delete all remaining tags\r
                                        [/&nbsp;/gi, " "],                                                      // Convert non-break spaces to regular spaces (remember, *plain text*)\r
-                                       [/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi, "$1"],    // Cool little RegExp deletes whitespace around linebreak chars.\r
-                                       [/\n{3,}/g, "\n\n"],                                                    // Max. 2 consecutive linebreaks\r
-                                       /^\s+|\s+$/g                                                                    // Trim the front & back\r
+                                       [/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi, "$1"],// Cool little RegExp deletes whitespace around linebreak chars.\r
+                                       [/\n{3,}/g, "\n\n"]                                                     // Max. 2 consecutive linebreaks\r
                                ]);\r
 \r
-                               h = dom.decode(tinymce.html.Entities.encodeRaw(h));\r
-\r
-                               // Delete any highlighted text before pasting\r
-                               if (!sel.isCollapsed()) {\r
-                                       d.execCommand("Delete", false, null);\r
-                               }\r
+                               content = ed.dom.decode(tinymce.html.Entities.encodeRaw(content));\r
 \r
                                // Perform default or custom replacements\r
-                               if (is(rl, "array") || (is(rl, "array"))) {\r
+                               if (is(rl, "array")) {\r
                                        process(rl);\r
-                               }\r
-                               else if (is(rl, "string")) {\r
+                               } else if (is(rl, "string")) {\r
                                        process(new RegExp(rl, "gi"));\r
                                }\r
 \r
                                // Treat paragraphs as specified in the config\r
                                if (linebr == "none") {\r
+                                       // Convert all line breaks to space\r
                                        process([\r
                                                [/\n+/g, " "]\r
                                        ]);\r
-                               }\r
-                               else if (linebr == "br") {\r
+                               } else if (linebr == "br") {\r
+                                       // Convert all line breaks to <br />\r
                                        process([\r
                                                [/\n/g, "<br />"]\r
                                        ]);\r
-                               }\r
-                               else {\r
+                               } else if (linebr == "p") {\r
+                                       // Convert all line breaks to <p>...</p>\r
+                                       process([\r
+                                               [/\n+/g, "</p><p>"],\r
+                                               [/^(.*<\/p>)(<p>)$/, '<p>$1']\r
+                                       ]);\r
+                               } else {\r
+                                       // defaults to "combined"\r
+                                       // Convert single line breaks to <br /> and double line breaks to <p>...</p>\r
                                        process([\r
-                                               /^\s+|\s+$/g,\r
                                                [/\n\n/g, "</p><p>"],\r
+                                               [/^(.*<\/p>)(<p>)$/, '<p>$1'],\r
                                                [/\n/g, "<br />"]\r
                                        ]);\r
                                }\r
 \r
-                               // This next piece of code handles the situation where we're pasting more than one paragraph of plain\r
-                               // text, and we are pasting the content into the middle of a block node in the editor.  The block\r
-                               // node gets split at the selection point into "Para A" and "Para B" (for the purposes of explaining).\r
-                               // The first paragraph of the pasted text is appended to "Para A", and the last paragraph of the\r
-                               // pasted text is prepended to "Para B".  Any other paragraphs of pasted text are placed between\r
-                               // "Para A" and "Para B".  This code solves a host of problems with the original plain text plugin and\r
-                               // now handles styles correctly.  (Pasting plain text into a styled paragraph is supposed to make the\r
-                               // plain text take the same style as the existing paragraph.)\r
-                               if ((pos = h.indexOf("</p><p>")) != -1) {\r
-                                       rpos = h.lastIndexOf("</p><p>");\r
-                                       node = sel.getNode(); \r
-                                       breakElms = [];         // Get list of elements to break \r
-\r
-                                       do {\r
-                                               if (node.nodeType == 1) {\r
-                                                       // Don't break tables and break at body\r
-                                                       if (node.nodeName == "TD" || node.nodeName == "BODY") {\r
-                                                               break;\r
-                                                       }\r
-\r
-                                                       breakElms[breakElms.length] = node;\r
-                                               }\r
-                                       } while (node = node.parentNode);\r
-\r
-                                       // Are we in the middle of a block node?\r
-                                       if (breakElms.length > 0) {\r
-                                               before = h.substring(0, pos);\r
-                                               after = "";\r
-\r
-                                               for (i=0, len=breakElms.length; i<len; i++) {\r
-                                                       before += "</" + breakElms[i].nodeName.toLowerCase() + ">";\r
-                                                       after += "<" + breakElms[breakElms.length-i-1].nodeName.toLowerCase() + ">";\r
-                                               }\r
-\r
-                                               if (pos == rpos) {\r
-                                                       h = before + after + h.substring(pos+7);\r
-                                               }\r
-                                               else {\r
-                                                       h = before + h.substring(pos+4, rpos+4) + after + h.substring(rpos+7);\r
-                                               }\r
-                                       }\r
-                               }\r
-\r
-                               // Insert content at the caret, plus add a marker for repositioning the caret\r
-                               ed.execCommand("mceInsertRawHTML", false, h + '<span id="_plain_text_marker">&nbsp;</span>');\r
-\r
-                               // Reposition the caret to the marker, which was placed immediately after the inserted content.\r
-                               // Needs to be done asynchronously (in window.setTimeout) or else it doesn't work in all browsers.\r
-                               // The second part of the code scrolls the content up if the caret is positioned off-screen.\r
-                               // This is only necessary for WebKit browsers, but it doesn't hurt to use for all.\r
-                               window.setTimeout(function() {\r
-                                       var marker = dom.get('_plain_text_marker'),\r
-                                               elm, vp, y, elmHeight;\r
-\r
-                                       sel.select(marker, false);\r
-                                       d.execCommand("Delete", false, null);\r
-                                       marker = null;\r
-\r
-                                       // Get element, position and height\r
-                                       elm = sel.getStart();\r
-                                       vp = dom.getViewPort(w);\r
-                                       y = dom.getPos(elm).y;\r
-                                       elmHeight = elm.clientHeight;\r
-\r
-                                       // Is element within viewport if not then scroll it into view\r
-                                       if ((y < vp.y) || (y + elmHeight > vp.y + vp.h)) {\r
-                                               d.body.scrollTop = y < vp.y ? y : y - vp.h + 25;\r
-                                       }\r
-                               }, 0);\r
+                               ed.execCommand('mceInsertContent', false, content);\r
                        }\r
                },\r
 \r
index a5d0c9ed5ecce1ce7acca1edcc8eee6d83cd469c..f4fb2aba2f338dbc95ee97e8116311763fb33cb4 100644 (file)
@@ -1 +1 @@
-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
+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
index 8371ae1e0e5771a71c96ad374f9694f1cf55fc9a..98a7fe1ce2ebd5aa7dea8d85261c0ea0b55c6ee0 100644 (file)
@@ -1 +1 @@
-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
+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/be_dlg.js b/program/js/tiny_mce/plugins/paste/langs/be_dlg.js
deleted file mode 100644 (file)
index 63d134b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('be.paste_dlg',{word_title:"\u0412\u044b\u043a\u0430\u0440\u044b\u0441\u0442\u0430\u0439\u0446\u0435 \u0441\u043f\u0430\u043b\u0443\u0447\u044d\u043d\u043d\u0435 \u043a\u043b\u0430\u0432\u0456\u0448 CTRL+V \u043a\u0430\u0431 \u0443\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u0442\u044d\u043a\u0441\u0442 \u0443 \u0430\u043a\u043d\u043e.",text_linebreaks:"\u0417\u0430\u0445\u043e\u045e\u0432\u0430\u0446\u044c \u043f\u0430\u0440\u044b\u0432\u044b \u0440\u0430\u0434\u043a\u043e\u045e",text_title:"\u0412\u044b\u043a\u0430\u0440\u044b\u0441\u0442\u0430\u0439\u0446\u0435 \u0441\u043f\u0430\u043b\u0443\u0447\u044d\u043d\u043d\u0435 \u043a\u043b\u0430\u0432\u0456\u0448 CTRL+V \u043a\u0430\u0431 \u0443\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u0442\u044d\u043a\u0441\u0442 \u0443 \u0430\u043a\u043d\u043e."});
\ No newline at end of file
index 2761efa8159980bf4787e40b8271bfc04f2a7a60..722ecdc561630cad03613dbea8ae47bfb9008e8b 100644 (file)
@@ -1 +1 @@
-tinyMCE.addI18n('bg.paste_dlg',{word_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.",text_linebreaks:"\u0417\u0430\u043f\u0430\u0437\u0438 \u043d\u043e\u0432\u0438\u0442\u0435 \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
+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
index 679cd6c521b2a3b74c4bbd69d61c188222172770..41832e433e4c1b03a6d6de20e3dac382479a733e 100644 (file)
@@ -1 +1 @@
-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
+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
index 51ae381f273cd5dc90df5c5ad7d958bb47114c3e..0e6c62cb5c424bf505f40ec0f81f06f0a3eb8c95 100644 (file)
@@ -1 +1 @@
-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
+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
index 104458b9316ce036f9a7e71bed4de6023015f2dc..66936bbabfb28b389f1fe9aab72a188a950556d3 100644 (file)
@@ -1 +1 @@
-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
+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
index c7b6ac74fcd5e1d805a9cded41ebc0bc55f88ec4..d1c91b9aa918afdbd38e646acc524bce32993dff 100644 (file)
@@ -1 +1 @@
-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
+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
index e5c175d302ef5e6eaa0a33ad36da99183e764c16..7e1b961830d31538fb75100115e0f22965e31328 100644 (file)
@@ -1 +1 @@
-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
+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
index 316384588821c6db7a37f71e06bf85c847315402..84b9bc620d4d78fe4a9ac7342f95459dbeeb6de7 100644 (file)
@@ -1 +1 @@
-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
+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
index 0ca1903b0fc66cd382813b8c71e158bf0b8ac3e0..563ecc761fed77306024329b50c53bd828b85bc8 100644 (file)
@@ -1 +1 @@
-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
+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
index eeac778960a75ff23c94b3fb48067798038b2778..bc74daf85c89271ee86308ab0ee971650e5f8f4f 100644 (file)
@@ -1,5 +1 @@
-tinyMCE.addI18n('en.paste_dlg',{\r
-text_title:"Use CTRL+V on your keyboard to paste the text into the window.",\r
-text_linebreaks:"Keep linebreaks",\r
-word_title:"Use CTRL+V on your keyboard to paste the text into the window."\r
-});
\ No newline at end of file
+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
new file mode 100644 (file)
index 0000000..e6613b7
--- /dev/null
@@ -0,0 +1 @@
+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
index 82d8dc278f6c21b74834a2622556ba74f69c10b2..aa54f98ccf146695318a28c5836aff53d59d2ea1 100644 (file)
@@ -1 +1 @@
-tinyMCE.addI18n('es.paste_dlg',{"word_title":"Use CTRL+V en su teclado para pegar el texto en la ventana.","text_linebreaks":"Keep linebreaks","text_title":"Use CTRL+V en su teclado para pegar el texto en la ventana."});
\ No newline at end of file
+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
index c9a4fa90ef76a9b8e5ae375b2e3d2da1d90577a2..8949d832db9ba33d7ea4f498b514cd6271247c95 100644 (file)
@@ -1 +1 @@
-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
+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
index 1e2e11775efbf41d1668c4931f6afb6554d2fc8b..3296bd5b170c990a716faef8a74a8b0604483280 100644 (file)
@@ -1,5 +1 @@
-tinyMCE.addI18n('eu.paste_dlg',{\r
-text_title:"Erabili CTRL+V testua lehioan itsasteko.",\r
-text_linebreaks:"Mantendu lerro-jauziak",\r
-word_title:"Erabili CTRL+V testua lehioan itsasteko.."\r
-});
\ No newline at end of file
+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
index c555ac8eab34c8c73ddf6767a9b2f7f09124fa3b..cb554bcadd10c7ec95d4353710583bb51cc90581 100644 (file)
@@ -1 +1 @@
-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
+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
index d4e2b284ff20127d0567f65c9704cadf49e31b59..530e507cd8bf1bb4c9ab59d927f342ac5ff2de97 100644 (file)
@@ -1 +1 @@
-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
+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
index 1431de182bb63fbf12eb772b74148c832c05e59f..acc5d639f04bf44fb30491ac007872c19cdf0182 100644 (file)
@@ -1 +1 @@
-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
+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
index 4c4bcb61d688ca0b820bc40446bbc013a15a7ff9..3fc652da5b42c01d93dff631721d35569ed42e4b 100644 (file)
@@ -1 +1 @@
-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
+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
index e69c41565f9d336fb48948ee6f144d70dd4c4ef3..5fe796a6a9243ecbef4dc2f2d97483323ca2ce49 100644 (file)
@@ -1 +1 @@
-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
+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
index 6a6a903f26a37b8bf685c38117e5e107ad5603fa..51c6566c956a0ca65de22fb0d04dc63cedcaa436 100644 (file)
@@ -1 +1 @@
-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
+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
index a1dbefe790da81eea632b71b526091d17f02c966..60433743eda24d8d51e888548800e1db862a46fa 100644 (file)
@@ -1 +1 @@
-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
+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
index 7bfd0adb2d10c83d2db7701c606df00831978aa2..adc0b318dbeaa3397efa9ac9879f3110533ff70f 100644 (file)
@@ -1 +1 @@
-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
+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/ia_dlg.js b/program/js/tiny_mce/plugins/paste/langs/ia_dlg.js
deleted file mode 100644 (file)
index b7906e9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ia.paste_dlg',{word_title:"\u5c06\u590d\u5236(CTRL + C)\u7684\u5185\u5bb9\u7c98\u8d34(CTRL + V)\u5230\u7a97\u53e3\u3002",text_linebreaks:"\u4fdd\u7559\u5206\u884c\u7b26\u53f7\u53f7",text_title:"\u5c06\u590d\u5236(CTRL + C)\u7684\u5185\u5bb9\u7c98\u8d34(CTRL + V)\u5230\u7a97\u53e3\u3002"});
\ No newline at end of file
index 316ad15ccde9e04d48a331316bb7e3feca2cc003..f3e05b52ce31723fc7e035ec7f009de14da48315 100644 (file)
@@ -1 +1 @@
-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
+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
index a0e80907fbb21db4898bd5e01c0f79968f6f70f9..cbacd611f1f5643717a66451ba7b976d648996f6 100644 (file)
@@ -1 +1 @@
-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
+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
index 70da578110487c5c3184e0588577536665fe238b..f1b8dc7e064c1fc6733dee6c18709b5bd4262bc2 100644 (file)
@@ -1 +1 @@
-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
+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
index 0126672ca14d6a5295d5eb00614c2d014d4eb102..5af598227183e9380d4c6e2bccbc6cf49cf6cf5f 100644 (file)
@@ -1 +1 @@
-tinyMCE.addI18n('ja.paste_dlg',{"word_title":"\u30ad\u30fc\u30dc\u30fc\u30c9\u3067CTRL+V\u3092\u62bc\u3057\u3066\u30c6\u30ad\u30b9\u30c8\u3092\u8cbc\u308a\u4ed8\u3051\u3066\u304f\u3060\u3055\u3044\u3002","text_linebreaks":"\u6539\u884c\u3092\u4fdd\u6301\u3059\u308b","text_title":"\u30ad\u30fc\u30dc\u30fc\u30c9\u3067CTRL+V\u3092\u62bc\u3057\u3066\u30c6\u30ad\u30b9\u30c8\u3092\u8cbc\u308a\u4ed8\u3051\u3066\u304f\u3060\u3055\u3044\u3002"});
\ No newline at end of file
+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
index d0a6b03834a313529a0be85d738c21f92c166a4f..dedcfd33b3bf0632aa9c4e35bf0b317a5b836c30 100644 (file)
@@ -1 +1 @@
-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
+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
index 4c009fe66fd75aab7798f555abec5d697b618f00..3fb6c9762ec9d199503fb615e76a079444d52a54 100644 (file)
@@ -1 +1 @@
-tinyMCE.addI18n('ko.paste_dlg',{word_title:"\uc708\ub3c4\uc6b0\uc5d0 \ud14d\uc2a4\ud2b8\ub97c \ubd99\uc774\ub824\uba74 \ud0a4\ubcf4\ub4dc\ub85cCtrl+V\ub97c \uc785\ub825\ud574 \uc8fc\uc138\uc694.",text_linebreaks:"\uac1c\ud589\uc744 \ubcf4\uad00 \uc720\uc9c0",text_title:"\uc708\ub3c4\uc6b0\uc5d0 \ud14d\uc2a4\ud2b8\ub97c \ubd99\uc774\ub824\uba74 \ud0a4\ubcf4\ub4dc\ub85c Ctrl+V\ub97c \uc785\ub825\ud574 \uc8fc\uc138\uc694."});
\ No newline at end of file
+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
index d1eac566b497770e26a0df092fade7bff0b1c4c6..7cf928dab1d853e704a8b5cf25d893dd54cb3dd6 100644 (file)
@@ -1 +1 @@
-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
+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
index b9f8ef963129a76e09b6f076cd3d2ee7fcb981cd..ae02a186436647c7dc0cb5a9e7cf1a9e7085bd59 100644 (file)
@@ -1 +1 @@
-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
+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
index dffbe0d85284ce7db8aa82f5169ab371241b702e..bebf74f7be223abfd67a71fb1f724a8d787db192 100644 (file)
@@ -1 +1 @@
-tinyMCE.addI18n('mk.paste_dlg',{word_title:"Koristite CTRL+V na tipkovnici da zalepite tekst u prozor.",text_linebreaks:"Zadr\u017ei prelome",text_title:"Koristite CTRL+V na tipkovnici da zalepite tekst u prozor."});
\ No newline at end of file
+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
index 46b55d666380da7918dae73dda59981a8d0313a1..547d849d0b52a7f25aec7d7e535298c0ce4d8a16 100644 (file)
@@ -1 +1 @@
-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
+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
index 17ce906af3852f386176be850d4540147fb76f42..bac8ac046b949710e993263b67f8b5e0b085939c 100644 (file)
@@ -1 +1 @@
-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
+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
index 0f421ae7f3608ff5cedde7e90d113e27a048ddd1..be58ae572421cee61c3ea02e1060bfe654a528a7 100644 (file)
@@ -1 +1 @@
-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
+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/no_dlg.js b/program/js/tiny_mce/plugins/paste/langs/no_dlg.js
deleted file mode 100644 (file)
index 3f8e333..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('no.paste_dlg',{"word_title":"Bruk CTRL+V p\u00e5 tastaturet for \u00e5 lime inn teksten i dette vinduet.","text_linebreaks":"Behold tekstbryting","text_title":"Bruk CTRL+V p\u00e5 tastaturet for \u00e5 lime inn teksten i dette vinduet."});
\ No newline at end of file
index 721f1010a9740be7b6872ecc0e4dbbb67cb51def..a2a054660822bdc3fe0796fe8788872b00f736d7 100644 (file)
@@ -1 +1 @@
-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
+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
index f49d5dd4b0d1bde85a4591e3dd41dac214745154..c9601cf945b138f756e88dfc275f9e5946402100 100644 (file)
@@ -1 +1 @@
-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
+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
index 91a8d2140c0f2427bb50a46172134d4aa1342b59..897bc01fcb99b1f5d453935e3dd3850f9d3b7f9a 100644 (file)
@@ -1 +1 @@
-tinyMCE.addI18n('ro.paste_dlg',{word_title:"Folosi\u0163i CTRL+V pentru a lipi \u00een aceast\u0103 zon\u0103.",text_linebreaks:"P\u0103streaz\u0103 separatoarele de linii.",text_title:"Folosi\u0163i CTRL+V pentru a lipi \u00een aceast\u0103 zon\u0103."});
\ No newline at end of file
+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
index 058c014fa59bc5190508ed421f622992c3980b61..c72fcae8c486b26cc7302b60685d6226e4abfb8d 100644 (file)
@@ -1 +1 @@
-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
+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
index eb3b2dba748b4d67d62bc378fb6f18006e996f2e..a3745f3001edac36cd35cfde5fde8366676390ca 100644 (file)
@@ -1 +1 @@
-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
+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
index 1757bcd43d12fe8c0b2fd88bde2965bb8c3aee11..eca8bd1d390a80ebd99449b97b8aec6be70d179c 100644 (file)
@@ -1 +1 @@
-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
+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
index 7e763e4d3af0c941d88a71ce69414e998a0a122c..74146142193558219830b806840f53a5957f4500 100644 (file)
@@ -1 +1 @@
-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
+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
index 841442a1138bf263acde6435161a80e6aa715f0d..51dc0ddadfb0f2234dc5093a08ee9f1b59b95357 100644 (file)
@@ -1 +1 @@
-tinyMCE.addI18n('sr.paste_dlg',{word_title:"Koristite CTRL+V na tastaturi da zalepite tekst u prozor.",text_linebreaks:"Zadr\u017ei prelome",text_title:"Koristite CTRL+V na tastaturi da zalepite tekst u prozor."});
\ No newline at end of file
+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
index 0865a582c28746c4b1c59cf3d16144caecf36277..03eb3e075ff9d9aeaaef533879d0bd18d3c0c2af 100644 (file)
@@ -1 +1 @@
-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
+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/te_dlg.js b/program/js/tiny_mce/plugins/paste/langs/te_dlg.js
deleted file mode 100644 (file)
index f711779..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('te.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
index 646a460fed06a5ec273e44ab634bb9207a193458..9616c4102ec9641ded5b06808345663df086c3d5 100644 (file)
@@ -1 +1 @@
-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
+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
index 99e1b73da8d73dc6fd874e8d9ee742b2c5e10af5..16864b474ccd59796ed2f6a8b479f9d484b80f89 100644 (file)
@@ -1 +1 @@
-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
+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/tw_dlg.js b/program/js/tiny_mce/plugins/paste/langs/tw_dlg.js
deleted file mode 100644 (file)
index ae63d51..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('tw.paste_dlg',{word_title:"\u7528 Ctrl+V \u5c07\u5167\u5bb9\u8cbc\u4e0a\u3002",text_linebreaks:"\u4fdd\u7559\u63db\u884c\u7b26\u865f",text_title:"\u7528 Ctrl+V \u5c07\u5167\u5bb9\u8cbc\u4e0a\u3002"});
\ No newline at end of file
index 7a1f28ac1023a796442257374337713e714867e8..b623289568294c7520f8ca2d43dfd8445c80243e 100644 (file)
@@ -1 +1 @@
-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
+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
index 63a74d27fb133bbc1e8e7f36eafe75c569fecd61..25694d9c11403af705745df03edb2bb94fa1ae83 100644 (file)
@@ -1 +1 @@
-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
+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
new file mode 100644 (file)
index 0000000..4abd1a9
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..ea2f214
--- /dev/null
@@ -0,0 +1 @@
+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/langs/zh_dlg.js b/program/js/tiny_mce/plugins/paste/langs/zh_dlg.js
deleted file mode 100644 (file)
index 94fb061..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh.paste_dlg',{word_title:"\u7528 Ctrl+V \u5c06\u5185\u5bb9\u8d34\u4e0a\u3002",text_linebreaks:"\u4fdd\u7559\u5206\u884c\u7b26\u53f7",text_title:"\u7528 Ctrl+V \u5c06\u5185\u5bb9\u8d34\u4e0a\u3002"});
\ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/preview/editor_plugin.js b/program/js/tiny_mce/plugins/preview/editor_plugin.js
new file mode 100644 (file)
index 0000000..507909c
--- /dev/null
@@ -0,0 +1 @@
+(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
new file mode 100644 (file)
index 0000000..80f00f0
--- /dev/null
@@ -0,0 +1,53 @@
+/**
+ * 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
new file mode 100644 (file)
index 0000000..b2c3d90
--- /dev/null
@@ -0,0 +1,28 @@
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+<script language="javascript" src="../../tiny_mce_popup.js"></script>\r
+<script type="text/javascript" src="jscripts/embed.js"></script>\r
+<script type="text/javascript">\r
+tinyMCEPopup.onInit.add(function(ed) {\r
+       var dom = tinyMCEPopup.dom;\r
+\r
+       // Load editor content_css\r
+       tinymce.each(ed.settings.content_css.split(','), function(u) {\r
+               dom.loadCSS(ed.documentBaseURI.toAbsolute(u));\r
+       });\r
+\r
+       // Place contents inside div container\r
+       dom.setHTML('content', ed.getContent());\r
+});\r
+</script>\r
+<title>Example of a custom preview page</title>\r
+</head>\r
+<body>\r
+\r
+Editor contents: <br />\r
+<div id="content">\r
+<!-- Gets filled with editor contents -->\r
+</div>\r
+\r
+</body>\r
+</html>\r
diff --git a/program/js/tiny_mce/plugins/preview/jscripts/embed.js b/program/js/tiny_mce/plugins/preview/jscripts/embed.js
new file mode 100644 (file)
index 0000000..f8dc810
--- /dev/null
@@ -0,0 +1,73 @@
+/**\r
+ * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose.\r
+ */\r
+\r
+function writeFlash(p) {\r
+       writeEmbed(\r
+               'D27CDB6E-AE6D-11cf-96B8-444553540000',\r
+               'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',\r
+               'application/x-shockwave-flash',\r
+               p\r
+       );\r
+}\r
+\r
+function writeShockWave(p) {\r
+       writeEmbed(\r
+       '166B1BCA-3F9C-11CF-8075-444553540000',\r
+       'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0',\r
+       'application/x-director',\r
+               p\r
+       );\r
+}\r
+\r
+function writeQuickTime(p) {\r
+       writeEmbed(\r
+               '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',\r
+               'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0',\r
+               'video/quicktime',\r
+               p\r
+       );\r
+}\r
+\r
+function writeRealMedia(p) {\r
+       writeEmbed(\r
+               'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA',\r
+               'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',\r
+               'audio/x-pn-realaudio-plugin',\r
+               p\r
+       );\r
+}\r
+\r
+function writeWindowsMedia(p) {\r
+       p.url = p.src;\r
+       writeEmbed(\r
+               '6BF52A52-394A-11D3-B153-00C04F79FAA6',\r
+               'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',\r
+               'application/x-mplayer2',\r
+               p\r
+       );\r
+}\r
+\r
+function writeEmbed(cls, cb, mt, p) {\r
+       var h = '', n;\r
+\r
+       h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';\r
+       h += typeof(p.id) != "undefined" ? 'id="' + p.id + '"' : '';\r
+       h += typeof(p.name) != "undefined" ? 'name="' + p.name + '"' : '';\r
+       h += typeof(p.width) != "undefined" ? 'width="' + p.width + '"' : '';\r
+       h += typeof(p.height) != "undefined" ? 'height="' + p.height + '"' : '';\r
+       h += typeof(p.align) != "undefined" ? 'align="' + p.align + '"' : '';\r
+       h += '>';\r
+\r
+       for (n in p)\r
+               h += '<param name="' + n + '" value="' + p[n] + '">';\r
+\r
+       h += '<embed type="' + mt + '"';\r
+\r
+       for (n in p)\r
+               h += n + '="' + p[n] + '" ';\r
+\r
+       h += '></embed></object>';\r
+\r
+       document.write(h);\r
+}\r
diff --git a/program/js/tiny_mce/plugins/preview/preview.html b/program/js/tiny_mce/plugins/preview/preview.html
new file mode 100644 (file)
index 0000000..67e7b14
--- /dev/null
@@ -0,0 +1,17 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+<script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+<script type="text/javascript" src="jscripts/embed.js"></script>\r
+<script type="text/javascript"><!--\r
+document.write('<base href="' + tinyMCEPopup.getWindowArg("base") + '">');\r
+// -->\r
+</script>\r
+<title>{#preview.preview_desc}</title>\r
+</head>\r
+<body id="content">\r
+<script type="text/javascript">\r
+       document.write(tinyMCEPopup.editor.getContent());\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/program/js/tiny_mce/plugins/print/editor_plugin.js b/program/js/tiny_mce/plugins/print/editor_plugin.js
new file mode 100644 (file)
index 0000000..b5b3a55
--- /dev/null
@@ -0,0 +1 @@
+(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
new file mode 100644 (file)
index 0000000..3933fe6
--- /dev/null
@@ -0,0 +1,34 @@
+/**\r
+ * editor_plugin_src.js\r
+ *\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ */\r
+\r
+(function() {\r
+       tinymce.create('tinymce.plugins.Print', {\r
+               init : function(ed, url) {\r
+                       ed.addCommand('mcePrint', function() {\r
+                               ed.getWin().print();\r
+                       });\r
+\r
+                       ed.addButton('print', {title : 'print.print_desc', cmd : 'mcePrint'});\r
+               },\r
+\r
+               getInfo : function() {\r
+                       return {\r
+                               longname : 'Print',\r
+                               author : 'Moxiecode Systems AB',\r
+                               authorurl : 'http://tinymce.moxiecode.com',\r
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print',\r
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+                       };\r
+               }\r
+       });\r
+\r
+       // Register plugin\r
+       tinymce.PluginManager.add('print', tinymce.plugins.Print);\r
+})();\r
diff --git a/program/js/tiny_mce/plugins/save/editor_plugin.js b/program/js/tiny_mce/plugins/save/editor_plugin.js
new file mode 100644 (file)
index 0000000..8e93996
--- /dev/null
@@ -0,0 +1 @@
+(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
new file mode 100644 (file)
index 0000000..f5a3de8
--- /dev/null
@@ -0,0 +1,101 @@
+/**\r
+ * editor_plugin_src.js\r
+ *\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ */\r
+\r
+(function() {\r
+       tinymce.create('tinymce.plugins.Save', {\r
+               init : function(ed, url) {\r
+                       var t = this;\r
+\r
+                       t.editor = ed;\r
+\r
+                       // Register commands\r
+                       ed.addCommand('mceSave', t._save, t);\r
+                       ed.addCommand('mceCancel', t._cancel, t);\r
+\r
+                       // Register buttons\r
+                       ed.addButton('save', {title : 'save.save_desc', cmd : 'mceSave'});\r
+                       ed.addButton('cancel', {title : 'save.cancel_desc', cmd : 'mceCancel'});\r
+\r
+                       ed.onNodeChange.add(t._nodeChange, t);\r
+                       ed.addShortcut('ctrl+s', ed.getLang('save.save_desc'), 'mceSave');\r
+               },\r
+\r
+               getInfo : function() {\r
+                       return {\r
+                               longname : 'Save',\r
+                               author : 'Moxiecode Systems AB',\r
+                               authorurl : 'http://tinymce.moxiecode.com',\r
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save',\r
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+                       };\r
+               },\r
+\r
+               // Private methods\r
+\r
+               _nodeChange : function(ed, cm, n) {\r
+                       var ed = this.editor;\r
+\r
+                       if (ed.getParam('save_enablewhendirty')) {\r
+                               cm.setDisabled('save', !ed.isDirty());\r
+                               cm.setDisabled('cancel', !ed.isDirty());\r
+                       }\r
+               },\r
+\r
+               // Private methods\r
+\r
+               _save : function() {\r
+                       var ed = this.editor, formObj, os, i, elementId;\r
+\r
+                       formObj = tinymce.DOM.get(ed.id).form || tinymce.DOM.getParent(ed.id, 'form');\r
+\r
+                       if (ed.getParam("save_enablewhendirty") && !ed.isDirty())\r
+                               return;\r
+\r
+                       tinyMCE.triggerSave();\r
+\r
+                       // Use callback instead\r
+                       if (os = ed.getParam("save_onsavecallback")) {\r
+                               if (ed.execCallback('save_onsavecallback', ed)) {\r
+                                       ed.startContent = tinymce.trim(ed.getContent({format : 'raw'}));\r
+                                       ed.nodeChanged();\r
+                               }\r
+\r
+                               return;\r
+                       }\r
+\r
+                       if (formObj) {\r
+                               ed.isNotDirty = true;\r
+\r
+                               if (formObj.onsubmit == null || formObj.onsubmit() != false)\r
+                                       formObj.submit();\r
+\r
+                               ed.nodeChanged();\r
+                       } else\r
+                               ed.windowManager.alert("Error: No form element found.");\r
+               },\r
+\r
+               _cancel : function() {\r
+                       var ed = this.editor, os, h = tinymce.trim(ed.startContent);\r
+\r
+                       // Use callback instead\r
+                       if (os = ed.getParam("save_oncancelcallback")) {\r
+                               ed.execCallback('save_oncancelcallback', ed);\r
+                               return;\r
+                       }\r
+\r
+                       ed.setContent(h);\r
+                       ed.undoManager.clear();\r
+                       ed.nodeChanged();\r
+               }\r
+       });\r
+\r
+       // Register plugin\r
+       tinymce.PluginManager.add('save', tinymce.plugins.Save);\r
+})();
\ No newline at end of file
old mode 100755 (executable)
new mode 100644 (file)
index a4181b3..4e6674b
@@ -1 +1 @@
-tinyMCE.addI18n('ar.searchreplace_dlg',{findwhat:"\u0627\u0628\u062d\u062b \u0639\u0646",replacewith:"\u0627\u0633\u062a\u0628\u062f\u0644 \u0628",direction:"\u0627\u0644\u0627\u062a\u062c\u0627\u0647\u0627\u062a",up:"\u0627\u0644\u0627\u0639\u0644\u0649",down:"\u0627\u0644\u0627\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\u062f\u0627\u0644"});
\ No newline at end of file
+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
index 353092b28b954930ce1af6400822f8a2341eddd9..d9085f84755413b03da1c35bff345852ad5ae654 100644 (file)
@@ -1 +1 @@
-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
+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/be_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/be_dlg.js
deleted file mode 100644 (file)
index 22bf3eb..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('be.searchreplace_dlg',{findwhat:"\u0428\u0442\u043e \u0437\u043d\u0430\u0439\u0441\u0446\u0456",replacewith:"\u0417\u0430\u043c\u044f\u043d\u0456\u0446\u044c \u043d\u0430",direction:"\u041a\u0456\u0440\u0443\u043d\u0430\u043a",up:"\u0423\u0432\u0435\u0440\u0445",down:"\u0423\u043d\u0456\u0437",mcase:"\u0423\u043b\u0456\u0447\u0432\u0430\u0446\u044c \u0440\u044d\u0433\u0456\u0441\u0442\u0440",findnext:"\u0417\u043d\u0430\u0439\u0441\u0446\u0456 \u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0443\u044e",allreplaced:"\u0423\u0441\u0435 \u0441\u0443\u0441\u0442\u0440\u0430\u043a\u0430\u0435\u043c\u044b\u044f \u0440\u0430\u0434\u043a\u0456 \u0431\u044b\u043b\u0456 \u0437\u0430\u043c\u0435\u043d\u0435\u043d\u044b\u044f.",searchnext_desc:"\u0417\u043d\u0430\u0439\u0441\u0446\u0456 \u0437\u043d\u043e\u045e",notfound:"\u041f\u043e\u0448\u0443\u043a \u0441\u043a\u043e\u043d\u0447\u0430\u043d\u044b. \u0420\u0430\u0434\u043e\u043a \u043d\u0435 \u0437\u043d\u043e\u0439\u0434\u0437\u0435\u043d\u0430\u044f.",search_title:"\u0417\u043d\u0430\u0439\u0441\u0446\u0456",replace_title:"\u0417\u043d\u0430\u0439\u0441\u0446\u0456/\u0417\u0430\u043c\u044f\u043d\u0456\u0446\u044c",replaceall:"\u0417\u0430\u043c\u044f\u043d\u0456\u0446\u044c \u0443\u0441\u0451",replace:"\u0417\u0430\u043c\u044f\u043d\u0456\u0446\u044c"});
\ No newline at end of file
old mode 100755 (executable)
new mode 100644 (file)
index 90743a2..6560e0f
@@ -1 +1 @@
-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
+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
index 0543498f05539b8e0925a3e41e7b64ec13ee571d..9313b83469c57f048988346e1b4b049cbd6e0083 100644 (file)
@@ -1 +1 @@
-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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 394a719..358f15c
@@ -1 +1 @@
-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
+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
old mode 100755 (executable)
new mode 100644 (file)
index fb8ab7b..8165408
@@ -1 +1 @@
-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
+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
index ec4318029718694e4972d6139f50a98a35d1a73c..204824f556ba54c84d694124ed02aa995d833ebc 100644 (file)
@@ -1 +1 @@
-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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 89436c6..b551cea
@@ -1 +1 @@
-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
+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
old mode 100755 (executable)
new mode 100644 (file)
index d12c75e..7c40acd
@@ -1 +1 @@
-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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 6671a9d..10e564d
@@ -1 +1 @@
-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
+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
index 370959afa3cc8f02feb5a1bf41f727a1f4c2fadf..8a65900977a7200bcae8c471cf0f1949aef210fb 100644 (file)
@@ -1,16 +1 @@
-tinyMCE.addI18n('en.searchreplace_dlg',{\r
-searchnext_desc:"Find again",\r
-notfound:"The search has been completed. The search string could not be found.",\r
-search_title:"Find",\r
-replace_title:"Find/Replace",\r
-allreplaced:"All occurrences of the search string were replaced.",\r
-findwhat:"Find what",\r
-replacewith:"Replace with",\r
-direction:"Direction",\r
-up:"Up",\r
-down:"Down",\r
-mcase:"Match case",\r
-findnext:"Find next",\r
-replace:"Replace",\r
-replaceall:"Replace all"\r
-});
\ No newline at end of file
+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
new file mode 100644 (file)
index 0000000..3cd4185
--- /dev/null
@@ -0,0 +1 @@
+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
old mode 100755 (executable)
new mode 100644 (file)
index 73d49b0..ef567f7
@@ -1 +1 @@
-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
+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
index 769f5f8de090d4ab9dd0c185dafc1063fcc6dc3c..602cfa8bcca5559ca4e576274ac2fde0e232b5bf 100644 (file)
@@ -1,16 +1 @@
-tinyMCE.addI18n('eu.searchreplace_dlg',{\r
-searchnext_desc:"Berriz bilatu",\r
-notfound:"Bilaketa bukatu da. Bilatutakoa ez da aurkitu.",\r
-search_title:"Bilatu",\r
-replace_title:"Bilatu/Ordezkatu",\r
-allreplaced:"Bilatutakoaren agerpen guztiak ordezkatu dira.",\r
-findwhat:"Zer bilatu",\r
-replacewith:"Zerekin ordezkatu",\r
-direction:"Norabidea",\r
-up:"Gorantz",\r
-down:"Beherantz",\r
-mcase:"Maiuskulak eta minuskulak kontuan hartu",\r
-findnext:"Hurrengoa",\r
-replace:"Ordezkatu",\r
-replaceall:"Ordezkatu guztiak"\r
-});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 420129d..d8c5d4b
@@ -1 +1 @@
-tinyMCE.addI18n('fa.searchreplace_dlg',{findwhat:"\u062c\u0633\u062a\u062c\u0648\u06cc \u0686\u0647 \u0686\u06cc\u0632\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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 595b8dd..c2617c3
@@ -1 +1 @@
-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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 9aaebe3..707b5c2
@@ -1 +1 @@
-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
+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
index 4e469cfbaa8dfd8472cf31ef2d07120256e0213d..72be08cdac6cf1c71c16656191016b04dbceb08d 100644 (file)
@@ -1 +1 @@
-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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 99792ef..c5861bb
@@ -1 +1 @@
-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
+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
index 79dece284648b76e043f1b0fc494528d578c453f..a65ceb8ae90ebe17360ac01c23c814c4f5e7b6e3 100644 (file)
@@ -1 +1 @@
-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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 14d96a5..9dafb45
@@ -1 +1 @@
-tinyMCE.addI18n('hr.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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 3218cd6..4165838
@@ -1 +1 @@
-tinyMCE.addI18n('hu.searchreplace_dlg',{findwhat:"Mit cser\u00e9l",replacewith:"Mire cser\u00e9l",direction:"Ir\u00e1ny",up:"Fel",down:"Le",mcase:"Kis- \u00e9s nagybet\u0171k megk\u00fcl\u00f6nb\u00f6ztet\u00e9se",findnext:"Keres\u00e9s",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:"Minden tal\u00e1lat cser\u00e9je",replace:"Csere"});
\ No newline at end of file
+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
index f92349c13c347d8ebeb02edc41de49dcf43cc8ac..c2cdadb4343dd962f0600e4e9780cf9f1d733d66 100644 (file)
@@ -1 +1 @@
-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
+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/ia_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/ia_dlg.js
deleted file mode 100644 (file)
index f05d770..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ia.searchreplace_dlg',{findwhat:"\u67e5\u627e\u76ee\u6807",replacewith:"\u66ff\u6362\u4e3a",direction:"\u65b9\u5411",up:"\u5411\u4e0a",down:"\u5411\u4e0b",mcase:"\u533a\u5206\u5927\u5c0f\u5199",findnext:"\u67e5\u627e\u4e0b\u4e00\u4e2a",allreplaced:"\u5df2\u66ff\u6362\u6240\u6709\u5339\u914d\u7684\u5b57\u7b26\u4e32.",searchnext_desc:"\u518d\u6b21\u67e5\u627e",notfound:"\u67e5\u627e\u5df2\u5b8c\u6210 ! \u627e\u4e0d\u5230\u4efb\u4f55\u76ee\u6807\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
index 45bffb96374c40102351f448bca7c4412d026b3d..3d6ce654fa813e8a23462c536fabf2b41e5bb90c 100644 (file)
@@ -1 +1 @@
-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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 6d989f4..94004af
@@ -1 +1 @@
-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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 1b20adf..da34e5d
@@ -1 +1 @@
-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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 3a3b8cb..a12eb78
@@ -1 +1 @@
-tinyMCE.addI18n('ja.searchreplace_dlg',{findwhat:"\u691c\u7d22\u6587\u5b57\u5217",replacewith:"\u7f6e\u63db\u6587\u5b57\u5217",direction:"\u65b9\u5411",up:"\u4e0a\u3078",down:"\u4e0b\u3078",mcase:"\u5927\u6587\u5b57/\u5c0f\u6587\u5b57\u3092\u533a\u5225\u3059\u308b",findnext:"\u6b21\u3078",allreplaced:"\u5168\u3066\u7f6e\u63db\u3055\u308c\u307e\u3057\u305f\u3002","searchnext_desc":"\u518d\u691c\u7d22",notfound:"\u6700\u5f8c\u307e\u3067\u691c\u7d22\u3057\u307e\u3057\u305f\u304c\u3001\u691c\u7d22\u6587\u5b57\u5217\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002","search_title":"\u691c\u7d22","replace_title":"\u691c\u7d22/\u7f6e\u63db",replaceall:"\u5168\u3066\u7f6e\u63db",replace:"\u7f6e\u63db"});
\ No newline at end of file
+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
index 337cd3ea865356c99e8bdcb3af5409335a0d357c..fdf508fc4af953cd6cb3176d2ca26056369268e6 100644 (file)
@@ -1 +1 @@
-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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 516230f..15587c9
@@ -1 +1 @@
-tinyMCE.addI18n('ko.searchreplace_dlg',{findwhat:"\uac80\uc0c9 \ubb38\uc790\uc5f4",replacewith:"\uce58\ud658 \ubb38\uc790\uc5f4",direction:"\ubc29\ud5a5",up:"\uc704\uc5d0",down:"\uc544\ub798\uc5d0",mcase:"\ub300\ubb38\uc790/\uc18c\ubb38\uc790\ub97c \uad6c\ubcc4",findnext:"\uac80\uc0c9",allreplaced:"\ubaa8\ub450 \uce58\ud658\ub418\uc5c8\uc2b5\ub2c8\ub2e4.",searchnext_desc:"\uc7ac\uac80\uc0c9",notfound:"\uac80\uc0c9\uc774 \uc644\ub8cc\ud588\uc2b5\ub2c8\ub2e4. \uac80\uc0c9 \ubb38\uc790\uc5f4\uc740 \ubc1c\uacac\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.",search_title:"\uac80\uc0c9",replace_title:"\uac80\uc0c9/\uce58\ud658",replaceall:"\ubaa8\ub450 \uce58\ud658",replace:"\uce58\ud658"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index d1a80a8..bc35477
@@ -1 +1 @@
-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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 89c6aff..f093dd5
@@ -1 +1 @@
-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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 2635322..bf3828a
@@ -1 +1 @@
-tinyMCE.addI18n('mk.searchreplace_dlg',{findwhat:"Prona\u0111i tekst",replacewith:"Zameni sa",direction:"Smjer",up:"Gore",down:"Dolje",mcase:"Match case",findnext:"Prona\u0111i sljede\u0107e",allreplaced:"Sva pojavljivanja tra\u017eenog teksta su zamenjena.",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/Zameni",replaceall:"Zameni sve",replace:"Zameni"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 8bd457c..6ec6c15
@@ -1 +1 @@
-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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 8f675dc..afda5f0
@@ -1 +1 @@
-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
+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
old mode 100755 (executable)
new mode 100644 (file)
index b9a6c29..3dddb7f
@@ -1 +1 @@
-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
+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/no_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/no_dlg.js
deleted file mode 100644 (file)
index a623c93..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('no.searchreplace_dlg',{findwhat:"Finn hva",replacewith:"Erstatt med",direction:"Retning",up:"Oppover",down:"Nedover",mcase:"Skille mellom store og sm\u00e5 bokstaver",findnext:"Finn neste",allreplaced:"Alle forekomster av s\u00f8kestrengen er erstattet.","searchnext_desc":"S\u00f8k igjen",notfound:"S\u00f8ket avsluttet. Fant ikke s\u00f8kestrengen.","search_title":"S\u00f8k","replace_title":"S\u00f8k/Erstatt",replaceall:"Erstatt alle",replace:"Erstatt"});
\ No newline at end of file
index 4536b4af0d472504bd7793056cf3ad66da4dbcd1..4a69379afab24b5a778caa118d2b00b0901aba24 100644 (file)
@@ -1 +1 @@
-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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 466825b..25c9a42
@@ -1 +1 @@
-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\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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 8d1f171..d076707
@@ -1 +1 @@
-tinyMCE.addI18n('ro.searchreplace_dlg',{findwhat:"Termen c\u0103utat:",replacewith:"\u00cenlocuie\u015fte cu:",direction:"Direc\u0163ia",up:"\u00cen sus",down:"\u00cen jos",mcase:"Conteaz\u0103 litere mici/mari?",findnext:"Caut\u0103 urm\u0103torul",allreplaced:"Toate instan\u0163ele 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:"Caut\u0103/\u00eenlocuie\u015fte",replaceall:"\u00cenlocuie\u015fte toate",replace:"\u00cenlocuie\u015fte"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 2c118fb..cfa3a2d
@@ -1 +1 @@
-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
+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
old mode 100755 (executable)
new mode 100644 (file)
index b366274..5698886
@@ -1 +1 @@
-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 dalej",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
+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
old mode 100755 (executable)
new mode 100644 (file)
index f6de312..828fc64
@@ -1 +1 @@
-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
+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
index 7a25d6049ca3aa254609bcce350550f81224922f..851befdbe824f709d273a85da11e5745a1c44568 100644 (file)
@@ -1 +1 @@
-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
+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
old mode 100755 (executable)
new mode 100644 (file)
index ba727a7..0ce4906
@@ -1 +1 @@
-tinyMCE.addI18n('sr.searchreplace_dlg',{findwhat:"Prona\u0111i tekst",replacewith:"Zameni sa",direction:"Smer",up:"Gore",down:"Dole",mcase:"Slaganje",findnext:"Prona\u0111i slede\u0107e",allreplaced:"Sva pojavljivanja tra\u017eenog teksta su zamenjena.",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/Zameni",replaceall:"Zameni sve",replace:"Zameni"});
\ No newline at end of file
+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
index 87e21746b1b7edac5987846302b25d0276f9f011..908bf7fe54b481cbbad082c8c5dad6779005359d 100644 (file)
@@ -1 +1 @@
-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
+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/te_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/te_dlg.js
deleted file mode 100644 (file)
index 5716eba..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('te.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
index eb47e88fe9aa0ff7d06c4dd5fb363da70cf0dc06..cd02e1880270428ff6bcb9d7b5146eef6315c332 100644 (file)
@@ -1 +1 @@
-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
+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
old mode 100755 (executable)
new mode 100644 (file)
index fff4fec..e5ef98c
@@ -1 +1 @@
-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
+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/tw_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/tw_dlg.js
deleted file mode 100644 (file)
index 0924f89..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('tw.searchreplace_dlg',{findwhat:"\u641c\u5c0b\u76ee\u6a19",replacewith:"\u53d6\u4ee3\u70ba",direction:"\u65b9\u5411",up:"\u5411\u4e0a",down:"\u5411\u4e0b",mcase:"\u5340\u5206\u5927\u5c0f\u5beb",findnext:"\u5c0b\u627e\u4e0b\u4e00\u500b",allreplaced:"\u6240\u6709\u7b26\u5408\u7684\u5b57\u5143\u4e32\u5747\u5df2\u53d6\u4ee3\u3002",searchnext_desc:"\u7e7c\u7e8c\u641c\u5c0b",notfound:"\u641c\u5c0b\u5b8c\u7562\uff0c\u6c92\u6709\u627e\u5230\u7b26\u5408\u7684\u5b57\u5143\u4e32\u3002",search_title:"\u641c\u5c0b",replace_title:"\u641c\u5c0b/\u53d6\u4ee3",replaceall:"\u5168\u90e8\u53d6\u4ee3",replace:"\u53d6\u4ee3"});
\ No newline at end of file
old mode 100755 (executable)
new mode 100644 (file)
index 56457b7..cdb46ab
@@ -1 +1 @@
-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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 673d77e..f291ee7
@@ -1 +1 @@
-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
+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
new file mode 100644 (file)
index 0000000..8891247
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..f60db8e
--- /dev/null
@@ -0,0 +1 @@
+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/langs/zh_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/zh_dlg.js
deleted file mode 100755 (executable)
index a664baa..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh.searchreplace_dlg',{findwhat:"\u641c\u5bfb\u76ee\u6807",replacewith:"\u53d6\u4ee3\u4e3a",direction:"\u65b9\u5411",up:"\u5411\u4e0a",down:"\u5411\u4e0b",mcase:"\u533a\u5206\u5927\u5c0f\u5199",findnext:"\u5bfb\u627e\u4e0b\u4e00\u4e2a",allreplaced:"\u6240\u6709\u7b26\u5408\u7684\u5b57\u7b26\u4e32\u5747\u5df2\u53d6\u4ee3\u3002",searchnext_desc:"\u7ee7\u7eed\u641c\u5bfb",notfound:"\u641c\u5bfb\u5b8c\u6bd5\uff0c\u6ca1\u6709\u627e\u5230\u7b26\u5408\u7684\u5b57\u7b26\u4e32\u3002",search_title:"\u641c\u5bfb",replace_title:"\u641c\u5bfb/\u53d6\u4ee3",replaceall:"\u5168\u90e8\u53d6\u4ee3",replace:"\u53d6\u4ee3"});
\ No newline at end of file
index 5a22d8aa4dcc977e547e07a93f20df0ea84524a0..2443a9184b199ac8f7ba27cde4cff4cf52621210 100644 (file)
@@ -93,7 +93,7 @@
                <input type="submit" id="insert" name="insert" value="{#searchreplace_dlg.findnext}" />\r
                <input type="button" class="button" id="replaceBtn" name="replaceBtn" value="{#searchreplace_dlg.replace}" onclick="SearchReplaceDialog.searchNext('current');" />\r
                <input type="button" class="button" id="replaceAllBtn" name="replaceAllBtn" value="{#searchreplace_dlg.replaceall}" onclick="SearchReplaceDialog.searchNext('all');" />\r
-               <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+               <input type="button" id="cancel" name="close" value="{#close}" onclick="tinyMCEPopup.close();" />\r
        </div>\r
 </form>\r
 </body>\r
index 90cde6a546c59629fafd15c61b40796915effcc2..48549c9239294c2588705e5b3a649e729c5de9ca 100644 (file)
@@ -1 +1 @@
-(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);c(f.languages,function(n,m){var p={icon:1},l;p.onclick=function(){if(n==f.selectedLang){return}l.setSelected(1);f.selectedItem.setSelected(0);f.selectedItem=l;f.selectedLang=n};p.title=m;l=i.add(p);l.setSelected(n==f.selectedLang);if(n==f.selectedLang){f.selectedItem=l}})});return g}},_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(e){var f=this.editor,h=f.dom,g=f.selection,d=g.getBookmark();c(h.select("span").reverse(),function(i){if(i&&(h.hasClass(i,"mceItemHiddenSpellWord")||h.hasClass(i,"mceItemHidden"))){if(!e||h.decode(i.innerHTML)==e){h.remove(i,1)}}});g.moveToBookmark(d)},_markWords:function(l){var g=this.editor,f=g.dom,j=g.getDoc(),h=g.selection,i=h.getBookmark(),d=[],k=l.join("|"),m=this._getSeparators(),e=new RegExp("(^|["+m+"])("+k+")(?=["+m+"]|$)","g");this._walk(g.getBody(),function(o){if(o.nodeType==3){d.push(o)}});c(d,function(t){var r,q,o,s,p=t.nodeValue;if(e.test(p)){p=f.encode(p);q=f.create("span",{"class":"mceItemHidden"});if(tinymce.isIE){p=p.replace(e,"$1<mcespell>$2</mcespell>");while((s=p.indexOf("<mcespell>"))!=-1){o=p.substring(0,s);if(o.length){r=j.createTextNode(f.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(f.create("span",{"class":"mceItemHiddenSpellWord"},o))}if(p.length){r=j.createTextNode(f.decode(p));q.appendChild(r)}}else{q.innerHTML=p.replace(e,'$1<span class="mceItemHiddenSpellWord">$2</span>')}f.replace(q,t)}});h.moveToBookmark(i)},_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)}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=k.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
+(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);c(f.languages,function(n,m){var p={icon:1},l;p.onclick=function(){if(n==f.selectedLang){return}l.setSelected(1);f.selectedItem.setSelected(0);f.selectedItem=l;f.selectedLang=n};p.title=m;l=i.add(p);l.setSelected(n==f.selectedLang);if(n==f.selectedLang){f.selectedItem=l}})});return g}},_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;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
index 9757aec9c3eb7680de10da4607498196c13d6a51..86fdfceb409ed46342668cc63e78e6d6d8350735 100644 (file)
                },\r
 \r
                _removeWords : function(w) {\r
-                       var ed = this.editor, dom = ed.dom, se = ed.selection, b = se.getBookmark();\r
+                       var ed = this.editor, dom = ed.dom, se = ed.selection, r = se.getRng(true);\r
 \r
                        each(dom.select('span').reverse(), function(n) {\r
                                if (n && (dom.hasClass(n, 'mceItemHiddenSpellWord') || dom.hasClass(n, 'mceItemHidden'))) {\r
                                }\r
                        });\r
 \r
-                       se.moveToBookmark(b);\r
+                       se.setRng(r);\r
                },\r
 \r
                _markWords : function(wl) {\r
-                       var ed = this.editor, dom = ed.dom, doc = ed.getDoc(), se = ed.selection, b = se.getBookmark(), nl = [],\r
+                       var ed = this.editor, dom = ed.dom, doc = ed.getDoc(), se = ed.selection, r = se.getRng(true), nl = [],\r
                                w = wl.join('|'), re = this._getSeparators(), rx = new RegExp('(^|[' + re + '])(' + w + ')(?=[' + re + ']|$)', 'g');\r
 \r
                        // Collect all text nodes\r
                                }\r
                        });\r
 \r
-                       se.moveToBookmark(b);\r
+                       se.setRng(r);\r
                },\r
 \r
                _showMenu : function(ed, e) {\r
                                        } else\r
                                                m.add({title : 'spellchecker.no_sug', 'class' : 'mceMenuItemTitle'}).setDisabled(1);\r
 \r
-                                       ignoreRpc = t.editor.getParam("spellchecker_enable_ignore_rpc", '');\r
-                                       m.add({\r
-                                               title : 'spellchecker.ignore_word',\r
-                                               onclick : function() {\r
-                                                       var word = wordSpan.innerHTML;\r
+                                       if (ed.getParam('show_ignore_words', true)) {\r
+                                               ignoreRpc = t.editor.getParam("spellchecker_enable_ignore_rpc", '');\r
+                                               m.add({\r
+                                                       title : 'spellchecker.ignore_word',\r
+                                                       onclick : function() {\r
+                                                               var word = wordSpan.innerHTML;\r
 \r
-                                                       dom.remove(wordSpan, 1);\r
-                                                       t._checkDone();\r
+                                                               dom.remove(wordSpan, 1);\r
+                                                               t._checkDone();\r
 \r
-                                                       // tell the server if we need to\r
-                                                       if (ignoreRpc) {\r
-                                                               ed.setProgressState(1);\r
-                                                               t._sendRPC('ignoreWord', [t.selectedLang, word], function(r) {\r
-                                                                       ed.setProgressState(0);\r
-                                                               });\r
+                                                               // tell the server if we need to\r
+                                                               if (ignoreRpc) {\r
+                                                                       ed.setProgressState(1);\r
+                                                                       t._sendRPC('ignoreWord', [t.selectedLang, word], function(r) {\r
+                                                                               ed.setProgressState(0);\r
+                                                                       });\r
+                                                               }\r
                                                        }\r
-                                               }\r
-                                       });\r
+                                               });\r
 \r
-                                       m.add({\r
-                                               title : 'spellchecker.ignore_words',\r
-                                               onclick : function() {\r
-                                                       var word = wordSpan.innerHTML;\r
+                                               m.add({\r
+                                                       title : 'spellchecker.ignore_words',\r
+                                                       onclick : function() {\r
+                                                               var word = wordSpan.innerHTML;\r
 \r
-                                                       t._removeWords(dom.decode(word));\r
-                                                       t._checkDone();\r
+                                                               t._removeWords(dom.decode(word));\r
+                                                               t._checkDone();\r
 \r
-                                                       // tell the server if we need to\r
-                                                       if (ignoreRpc) {\r
-                                                               ed.setProgressState(1);\r
-                                                               t._sendRPC('ignoreWords', [t.selectedLang, word], function(r) {\r
-                                                                       ed.setProgressState(0);\r
-                                                               });\r
+                                                               // tell the server if we need to\r
+                                                               if (ignoreRpc) {\r
+                                                                       ed.setProgressState(1);\r
+                                                                       t._sendRPC('ignoreWords', [t.selectedLang, word], function(r) {\r
+                                                                               ed.setProgressState(0);\r
+                                                                       });\r
+                                                               }\r
                                                        }\r
-                                               }\r
-                                       });\r
-\r
+                                               });\r
+                                       }\r
 \r
                                        if (t.editor.getParam("spellchecker_enable_learn_rpc")) {\r
                                                m.add({\r
                                        m.update();\r
                                });\r
 \r
-                               p1 = dom.getPos(ed.getContentAreaContainer());\r
+                               p1 = DOM.getPos(ed.getContentAreaContainer());\r
                                m.settings.offset_x = p1.x;\r
                                m.settings.offset_y = p1.y;\r
 \r
diff --git a/program/js/tiny_mce/plugins/style/css/props.css b/program/js/tiny_mce/plugins/style/css/props.css
new file mode 100644 (file)
index 0000000..3b8f0ee
--- /dev/null
@@ -0,0 +1,14 @@
+#text_font {width:250px;}\r
+#text_size {width:70px;}\r
+.mceAddSelectValue {background:#DDD;}\r
+select, #block_text_indent, #box_width, #box_height, #box_padding_top, #box_padding_right, #box_padding_bottom, #box_padding_left {width:70px;}\r
+#box_margin_top, #box_margin_right, #box_margin_bottom, #box_margin_left, #positioning_width, #positioning_height, #positioning_zindex {width:70px;}\r
+#positioning_placement_top, #positioning_placement_right, #positioning_placement_bottom, #positioning_placement_left {width:70px;}\r
+#positioning_clip_top, #positioning_clip_right, #positioning_clip_bottom, #positioning_clip_left {width:70px;}\r
+.panel_toggle_insert_span {padding-top:10px;}\r
+.panel_wrapper div.current {padding-top:10px;height:230px;}\r
+.delim {border-left:1px solid gray;}\r
+.tdelim {border-bottom:1px solid gray;}\r
+#block_display {width:145px;}\r
+#list_type {width:115px;}\r
+.disabled {background:#EEE;}\r
diff --git a/program/js/tiny_mce/plugins/style/editor_plugin.js b/program/js/tiny_mce/plugins/style/editor_plugin.js
new file mode 100644 (file)
index 0000000..dda9f92
--- /dev/null
@@ -0,0 +1 @@
+(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
new file mode 100644 (file)
index 0000000..eaa7c77
--- /dev/null
@@ -0,0 +1,71 @@
+/**\r
+ * editor_plugin_src.js\r
+ *\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ */\r
+\r
+(function() {\r
+       tinymce.create('tinymce.plugins.StylePlugin', {\r
+               init : function(ed, url) {\r
+                       // Register commands\r
+                       ed.addCommand('mceStyleProps', function() {\r
+\r
+                               var applyStyleToBlocks = false;\r
+                               var blocks = ed.selection.getSelectedBlocks();\r
+                               var styles = [];\r
+\r
+                               if (blocks.length === 1) {\r
+                                       styles.push(ed.selection.getNode().style.cssText);\r
+                               }\r
+                               else {\r
+                                       tinymce.each(blocks, function(block) {\r
+                                               styles.push(ed.dom.getAttrib(block, 'style'));\r
+                                       });\r
+                                       applyStyleToBlocks = true;\r
+                               }\r
+\r
+                               ed.windowManager.open({\r
+                                       file : url + '/props.htm',\r
+                                       width : 480 + parseInt(ed.getLang('style.delta_width', 0)),\r
+                                       height : 340 + parseInt(ed.getLang('style.delta_height', 0)),\r
+                                       inline : 1\r
+                               }, {\r
+                                       applyStyleToBlocks : applyStyleToBlocks,\r
+                                       plugin_url : url,\r
+                                       styles : styles\r
+                               });\r
+                       });\r
+\r
+                       ed.addCommand('mceSetElementStyle', function(ui, v) {\r
+                               if (e = ed.selection.getNode()) {\r
+                                       ed.dom.setAttrib(e, 'style', v);\r
+                                       ed.execCommand('mceRepaint');\r
+                               }\r
+                       });\r
+\r
+                       ed.onNodeChange.add(function(ed, cm, n) {\r
+                               cm.setDisabled('styleprops', n.nodeName === 'BODY');\r
+                       });\r
+\r
+                       // Register buttons\r
+                       ed.addButton('styleprops', {title : 'style.desc', cmd : 'mceStyleProps'});\r
+               },\r
+\r
+               getInfo : function() {\r
+                       return {\r
+                               longname : 'Style',\r
+                               author : 'Moxiecode Systems AB',\r
+                               authorurl : 'http://tinymce.moxiecode.com',\r
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style',\r
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+                       };\r
+               }\r
+       });\r
+\r
+       // Register plugin\r
+       tinymce.PluginManager.add('style', tinymce.plugins.StylePlugin);\r
+})();\r
diff --git a/program/js/tiny_mce/plugins/style/js/props.js b/program/js/tiny_mce/plugins/style/js/props.js
new file mode 100644 (file)
index 0000000..0a8a8ec
--- /dev/null
@@ -0,0 +1,709 @@
+tinyMCEPopup.requireLangPack();\r
+\r
+var defaultFonts = "" + \r
+       "Arial, Helvetica, sans-serif=Arial, Helvetica, sans-serif;" + \r
+       "Times New Roman, Times, serif=Times New Roman, Times, serif;" + \r
+       "Courier New, Courier, mono=Courier New, Courier, mono;" + \r
+       "Times New Roman, Times, serif=Times New Roman, Times, serif;" + \r
+       "Georgia, Times New Roman, Times, serif=Georgia, Times New Roman, Times, serif;" + \r
+       "Verdana, Arial, Helvetica, sans-serif=Verdana, Arial, Helvetica, sans-serif;" + \r
+       "Geneva, Arial, Helvetica, sans-serif=Geneva, Arial, Helvetica, sans-serif";\r
+\r
+var defaultSizes = "9;10;12;14;16;18;24;xx-small;x-small;small;medium;large;x-large;xx-large;smaller;larger";\r
+var defaultMeasurement = "+pixels=px;points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;ems=em;exs=ex;%";\r
+var defaultSpacingMeasurement = "pixels=px;points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;+ems=em;exs=ex;%";\r
+var defaultIndentMeasurement = "pixels=px;+points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;ems=em;exs=ex;%";\r
+var defaultWeight = "normal;bold;bolder;lighter;100;200;300;400;500;600;700;800;900";\r
+var defaultTextStyle = "normal;italic;oblique";\r
+var defaultVariant = "normal;small-caps";\r
+var defaultLineHeight = "normal";\r
+var defaultAttachment = "fixed;scroll";\r
+var defaultRepeat = "no-repeat;repeat;repeat-x;repeat-y";\r
+var defaultPosH = "left;center;right";\r
+var defaultPosV = "top;center;bottom";\r
+var defaultVAlign = "baseline;sub;super;top;text-top;middle;bottom;text-bottom";\r
+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";\r
+var defaultBorderStyle = "none;solid;dashed;dotted;double;groove;ridge;inset;outset";\r
+var defaultBorderWidth = "thin;medium;thick";\r
+var defaultListType = "disc;circle;square;decimal;lower-roman;upper-roman;lower-alpha;upper-alpha;none";\r
+\r
+function aggregateStyles(allStyles) {\r
+       var mergedStyles = {};\r
+\r
+       tinymce.each(allStyles, function(style) {\r
+               if (style !== '') {\r
+                       var parsedStyles = tinyMCEPopup.editor.dom.parseStyle(style);\r
+                       for (var name in parsedStyles) {\r
+                               if (parsedStyles.hasOwnProperty(name)) {\r
+                                       if (mergedStyles[name] === undefined) {\r
+                                               mergedStyles[name] = parsedStyles[name];\r
+                                       }\r
+                                       else if (name === 'text-decoration') {\r
+                                               if (mergedStyles[name].indexOf(parsedStyles[name]) === -1) {\r
+                                                       mergedStyles[name] = mergedStyles[name] +' '+ parsedStyles[name];\r
+                                               }\r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
+       });\r
+\r
+  return mergedStyles;\r
+}\r
+\r
+var applyActionIsInsert;\r
+var existingStyles;\r
+\r
+function init(ed) {\r
+       var ce = document.getElementById('container'), h;\r
+\r
+       existingStyles = aggregateStyles(tinyMCEPopup.getWindowArg('styles'));\r
+       ce.style.cssText = tinyMCEPopup.editor.dom.serializeStyle(existingStyles);\r
+\r
+       applyActionIsInsert = ed.getParam("edit_css_style_insert_span", false);\r
+       document.getElementById('toggle_insert_span').checked = applyActionIsInsert;\r
+\r
+       h = getBrowserHTML('background_image_browser','background_image','image','advimage');\r
+       document.getElementById("background_image_browser").innerHTML = h;\r
+\r
+       document.getElementById('text_color_pickcontainer').innerHTML = getColorPickerHTML('text_color_pick','text_color');\r
+       document.getElementById('background_color_pickcontainer').innerHTML = getColorPickerHTML('background_color_pick','background_color');\r
+       document.getElementById('border_color_top_pickcontainer').innerHTML = getColorPickerHTML('border_color_top_pick','border_color_top');\r
+       document.getElementById('border_color_right_pickcontainer').innerHTML = getColorPickerHTML('border_color_right_pick','border_color_right');\r
+       document.getElementById('border_color_bottom_pickcontainer').innerHTML = getColorPickerHTML('border_color_bottom_pick','border_color_bottom');\r
+       document.getElementById('border_color_left_pickcontainer').innerHTML = getColorPickerHTML('border_color_left_pick','border_color_left');\r
+\r
+       fillSelect(0, 'text_font', 'style_font', defaultFonts, ';', true);\r
+       fillSelect(0, 'text_size', 'style_font_size', defaultSizes, ';', true);\r
+       fillSelect(0, 'text_size_measurement', 'style_font_size_measurement', defaultMeasurement, ';', true);\r
+       fillSelect(0, 'text_case', 'style_text_case', "capitalize;uppercase;lowercase", ';', true);\r
+       fillSelect(0, 'text_weight', 'style_font_weight', defaultWeight, ';', true);\r
+       fillSelect(0, 'text_style', 'style_font_style', defaultTextStyle, ';', true);\r
+       fillSelect(0, 'text_variant', 'style_font_variant', defaultVariant, ';', true);\r
+       fillSelect(0, 'text_lineheight', 'style_font_line_height', defaultLineHeight, ';', true);\r
+       fillSelect(0, 'text_lineheight_measurement', 'style_font_line_height_measurement', defaultMeasurement, ';', true);\r
+\r
+       fillSelect(0, 'background_attachment', 'style_background_attachment', defaultAttachment, ';', true);\r
+       fillSelect(0, 'background_repeat', 'style_background_repeat', defaultRepeat, ';', true);\r
+\r
+       fillSelect(0, 'background_hpos_measurement', 'style_background_hpos_measurement', defaultMeasurement, ';', true);\r
+       fillSelect(0, 'background_vpos_measurement', 'style_background_vpos_measurement', defaultMeasurement, ';', true);\r
+\r
+       fillSelect(0, 'background_hpos', 'style_background_hpos', defaultPosH, ';', true);\r
+       fillSelect(0, 'background_vpos', 'style_background_vpos', defaultPosV, ';', true);\r
+\r
+       fillSelect(0, 'block_wordspacing', 'style_wordspacing', 'normal', ';', true);\r
+       fillSelect(0, 'block_wordspacing_measurement', 'style_wordspacing_measurement', defaultSpacingMeasurement, ';', true);\r
+       fillSelect(0, 'block_letterspacing', 'style_letterspacing', 'normal', ';', true);\r
+       fillSelect(0, 'block_letterspacing_measurement', 'style_letterspacing_measurement', defaultSpacingMeasurement, ';', true);\r
+       fillSelect(0, 'block_vertical_alignment', 'style_vertical_alignment', defaultVAlign, ';', true);\r
+       fillSelect(0, 'block_text_align', 'style_text_align', "left;right;center;justify", ';', true);\r
+       fillSelect(0, 'block_whitespace', 'style_whitespace', "normal;pre;nowrap", ';', true);\r
+       fillSelect(0, 'block_display', 'style_display', defaultDisplay, ';', true);\r
+       fillSelect(0, 'block_text_indent_measurement', 'style_text_indent_measurement', defaultIndentMeasurement, ';', true);\r
+\r
+       fillSelect(0, 'box_width_measurement', 'style_box_width_measurement', defaultMeasurement, ';', true);\r
+       fillSelect(0, 'box_height_measurement', 'style_box_height_measurement', defaultMeasurement, ';', true);\r
+       fillSelect(0, 'box_float', 'style_float', 'left;right;none', ';', true);\r
+       fillSelect(0, 'box_clear', 'style_clear', 'left;right;both;none', ';', true);\r
+       fillSelect(0, 'box_padding_left_measurement', 'style_padding_left_measurement', defaultMeasurement, ';', true);\r
+       fillSelect(0, 'box_padding_top_measurement', 'style_padding_top_measurement', defaultMeasurement, ';', true);\r
+       fillSelect(0, 'box_padding_bottom_measurement', 'style_padding_bottom_measurement', defaultMeasurement, ';', true);\r
+       fillSelect(0, 'box_padding_right_measurement', 'style_padding_right_measurement', defaultMeasurement, ';', true);\r
+       fillSelect(0, 'box_margin_left_measurement', 'style_margin_left_measurement', defaultMeasurement, ';', true);\r
+       fillSelect(0, 'box_margin_top_measurement', 'style_margin_top_measurement', defaultMeasurement, ';', true);\r
+       fillSelect(0, 'box_margin_bottom_measurement', 'style_margin_bottom_measurement', defaultMeasurement, ';', true);\r
+       fillSelect(0, 'box_margin_right_measurement', 'style_margin_right_measurement', defaultMeasurement, ';', true);\r
+\r
+       fillSelect(0, 'border_style_top', 'style_border_style_top', defaultBorderStyle, ';', true);\r
+       fillSelect(0, 'border_style_right', 'style_border_style_right', defaultBorderStyle, ';', true);\r
+       fillSelect(0, 'border_style_bottom', 'style_border_style_bottom', defaultBorderStyle, ';', true);\r
+       fillSelect(0, 'border_style_left', 'style_border_style_left', defaultBorderStyle, ';', true);\r
+\r
+       fillSelect(0, 'border_width_top', 'style_border_width_top', defaultBorderWidth, ';', true);\r
+       fillSelect(0, 'border_width_right', 'style_border_width_right', defaultBorderWidth, ';', true);\r
+       fillSelect(0, 'border_width_bottom', 'style_border_width_bottom', defaultBorderWidth, ';', true);\r
+       fillSelect(0, 'border_width_left', 'style_border_width_left', defaultBorderWidth, ';', true);\r
+\r
+       fillSelect(0, 'border_width_top_measurement', 'style_border_width_top_measurement', defaultMeasurement, ';', true);\r
+       fillSelect(0, 'border_width_right_measurement', 'style_border_width_right_measurement', defaultMeasurement, ';', true);\r
+       fillSelect(0, 'border_width_bottom_measurement', 'style_border_width_bottom_measurement', defaultMeasurement, ';', true);\r
+       fillSelect(0, 'border_width_left_measurement', 'style_border_width_left_measurement', defaultMeasurement, ';', true);\r
+\r
+       fillSelect(0, 'list_type', 'style_list_type', defaultListType, ';', true);\r
+       fillSelect(0, 'list_position', 'style_list_position', "inside;outside", ';', true);\r
+\r
+       fillSelect(0, 'positioning_type', 'style_positioning_type', "absolute;relative;static", ';', true);\r
+       fillSelect(0, 'positioning_visibility', 'style_positioning_visibility', "inherit;visible;hidden", ';', true);\r
+\r
+       fillSelect(0, 'positioning_width_measurement', 'style_positioning_width_measurement', defaultMeasurement, ';', true);\r
+       fillSelect(0, 'positioning_height_measurement', 'style_positioning_height_measurement', defaultMeasurement, ';', true);\r
+       fillSelect(0, 'positioning_overflow', 'style_positioning_overflow', "visible;hidden;scroll;auto", ';', true);\r
+\r
+       fillSelect(0, 'positioning_placement_top_measurement', 'style_positioning_placement_top_measurement', defaultMeasurement, ';', true);\r
+       fillSelect(0, 'positioning_placement_right_measurement', 'style_positioning_placement_right_measurement', defaultMeasurement, ';', true);\r
+       fillSelect(0, 'positioning_placement_bottom_measurement', 'style_positioning_placement_bottom_measurement', defaultMeasurement, ';', true);\r
+       fillSelect(0, 'positioning_placement_left_measurement', 'style_positioning_placement_left_measurement', defaultMeasurement, ';', true);\r
+\r
+       fillSelect(0, 'positioning_clip_top_measurement', 'style_positioning_clip_top_measurement', defaultMeasurement, ';', true);\r
+       fillSelect(0, 'positioning_clip_right_measurement', 'style_positioning_clip_right_measurement', defaultMeasurement, ';', true);\r
+       fillSelect(0, 'positioning_clip_bottom_measurement', 'style_positioning_clip_bottom_measurement', defaultMeasurement, ';', true);\r
+       fillSelect(0, 'positioning_clip_left_measurement', 'style_positioning_clip_left_measurement', defaultMeasurement, ';', true);\r
+\r
+       TinyMCE_EditableSelects.init();\r
+       setupFormData();\r
+       showDisabledControls();\r
+}\r
+\r
+function setupFormData() {\r
+       var ce = document.getElementById('container'), f = document.forms[0], s, b, i;\r
+\r
+       // Setup text fields\r
+\r
+       selectByValue(f, 'text_font', ce.style.fontFamily, true, true);\r
+       selectByValue(f, 'text_size', getNum(ce.style.fontSize), true, true);\r
+       selectByValue(f, 'text_size_measurement', getMeasurement(ce.style.fontSize));\r
+       selectByValue(f, 'text_weight', ce.style.fontWeight, true, true);\r
+       selectByValue(f, 'text_style', ce.style.fontStyle, true, true);\r
+       selectByValue(f, 'text_lineheight', getNum(ce.style.lineHeight), true, true);\r
+       selectByValue(f, 'text_lineheight_measurement', getMeasurement(ce.style.lineHeight));\r
+       selectByValue(f, 'text_case', ce.style.textTransform, true, true);\r
+       selectByValue(f, 'text_variant', ce.style.fontVariant, true, true);\r
+       f.text_color.value = tinyMCEPopup.editor.dom.toHex(ce.style.color);\r
+       updateColor('text_color_pick', 'text_color');\r
+       f.text_underline.checked = inStr(ce.style.textDecoration, 'underline');\r
+       f.text_overline.checked = inStr(ce.style.textDecoration, 'overline');\r
+       f.text_linethrough.checked = inStr(ce.style.textDecoration, 'line-through');\r
+       f.text_blink.checked = inStr(ce.style.textDecoration, 'blink');\r
+       f.text_none.checked = inStr(ce.style.textDecoration, 'none');\r
+       updateTextDecorations();\r
+\r
+       // Setup background fields\r
+\r
+       f.background_color.value = tinyMCEPopup.editor.dom.toHex(ce.style.backgroundColor);\r
+       updateColor('background_color_pick', 'background_color');\r
+       f.background_image.value = ce.style.backgroundImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");\r
+       selectByValue(f, 'background_repeat', ce.style.backgroundRepeat, true, true);\r
+       selectByValue(f, 'background_attachment', ce.style.backgroundAttachment, true, true);\r
+       selectByValue(f, 'background_hpos', getNum(getVal(ce.style.backgroundPosition, 0)), true, true);\r
+       selectByValue(f, 'background_hpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 0)));\r
+       selectByValue(f, 'background_vpos', getNum(getVal(ce.style.backgroundPosition, 1)), true, true);\r
+       selectByValue(f, 'background_vpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 1)));\r
+\r
+       // Setup block fields\r
+\r
+       selectByValue(f, 'block_wordspacing', getNum(ce.style.wordSpacing), true, true);\r
+       selectByValue(f, 'block_wordspacing_measurement', getMeasurement(ce.style.wordSpacing));\r
+       selectByValue(f, 'block_letterspacing', getNum(ce.style.letterSpacing), true, true);\r
+       selectByValue(f, 'block_letterspacing_measurement', getMeasurement(ce.style.letterSpacing));\r
+       selectByValue(f, 'block_vertical_alignment', ce.style.verticalAlign, true, true);\r
+       selectByValue(f, 'block_text_align', ce.style.textAlign, true, true);\r
+       f.block_text_indent.value = getNum(ce.style.textIndent);\r
+       selectByValue(f, 'block_text_indent_measurement', getMeasurement(ce.style.textIndent));\r
+       selectByValue(f, 'block_whitespace', ce.style.whiteSpace, true, true);\r
+       selectByValue(f, 'block_display', ce.style.display, true, true);\r
+\r
+       // Setup box fields\r
+\r
+       f.box_width.value = getNum(ce.style.width);\r
+       selectByValue(f, 'box_width_measurement', getMeasurement(ce.style.width));\r
+\r
+       f.box_height.value = getNum(ce.style.height);\r
+       selectByValue(f, 'box_height_measurement', getMeasurement(ce.style.height));\r
+       selectByValue(f, 'box_float', ce.style.cssFloat || ce.style.styleFloat, true, true);\r
+\r
+       selectByValue(f, 'box_clear', ce.style.clear, true, true);\r
+\r
+       setupBox(f, ce, 'box_padding', 'padding', '');\r
+       setupBox(f, ce, 'box_margin', 'margin', '');\r
+\r
+       // Setup border fields\r
+\r
+       setupBox(f, ce, 'border_style', 'border', 'Style');\r
+       setupBox(f, ce, 'border_width', 'border', 'Width');\r
+       setupBox(f, ce, 'border_color', 'border', 'Color');\r
+\r
+       updateColor('border_color_top_pick', 'border_color_top');\r
+       updateColor('border_color_right_pick', 'border_color_right');\r
+       updateColor('border_color_bottom_pick', 'border_color_bottom');\r
+       updateColor('border_color_left_pick', 'border_color_left');\r
+\r
+       f.elements.border_color_top.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_top.value);\r
+       f.elements.border_color_right.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_right.value);\r
+       f.elements.border_color_bottom.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_bottom.value);\r
+       f.elements.border_color_left.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_left.value);\r
+\r
+       // Setup list fields\r
+\r
+       selectByValue(f, 'list_type', ce.style.listStyleType, true, true);\r
+       selectByValue(f, 'list_position', ce.style.listStylePosition, true, true);\r
+       f.list_bullet_image.value = ce.style.listStyleImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");\r
+\r
+       // Setup box fields\r
+\r
+       selectByValue(f, 'positioning_type', ce.style.position, true, true);\r
+       selectByValue(f, 'positioning_visibility', ce.style.visibility, true, true);\r
+       selectByValue(f, 'positioning_overflow', ce.style.overflow, true, true);\r
+       f.positioning_zindex.value = ce.style.zIndex ? ce.style.zIndex : "";\r
+\r
+       f.positioning_width.value = getNum(ce.style.width);\r
+       selectByValue(f, 'positioning_width_measurement', getMeasurement(ce.style.width));\r
+\r
+       f.positioning_height.value = getNum(ce.style.height);\r
+       selectByValue(f, 'positioning_height_measurement', getMeasurement(ce.style.height));\r
+\r
+       setupBox(f, ce, 'positioning_placement', '', '', ['top', 'right', 'bottom', 'left']);\r
+\r
+       s = ce.style.clip.replace(new RegExp("rect\\('?([^']*)'?\\)", 'gi'), "$1");\r
+       s = s.replace(/,/g, ' ');\r
+\r
+       if (!hasEqualValues([getVal(s, 0), getVal(s, 1), getVal(s, 2), getVal(s, 3)])) {\r
+               f.positioning_clip_top.value = getNum(getVal(s, 0));\r
+               selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0)));\r
+               f.positioning_clip_right.value = getNum(getVal(s, 1));\r
+               selectByValue(f, 'positioning_clip_right_measurement', getMeasurement(getVal(s, 1)));\r
+               f.positioning_clip_bottom.value = getNum(getVal(s, 2));\r
+               selectByValue(f, 'positioning_clip_bottom_measurement', getMeasurement(getVal(s, 2)));\r
+               f.positioning_clip_left.value = getNum(getVal(s, 3));\r
+               selectByValue(f, 'positioning_clip_left_measurement', getMeasurement(getVal(s, 3)));\r
+       } else {\r
+               f.positioning_clip_top.value = getNum(getVal(s, 0));\r
+               selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0)));\r
+               f.positioning_clip_right.value = f.positioning_clip_bottom.value = f.positioning_clip_left.value;\r
+       }\r
+\r
+//     setupBox(f, ce, '', 'border', 'Color');\r
+}\r
+\r
+function getMeasurement(s) {\r
+       return s.replace(/^([0-9.]+)(.*)$/, "$2");\r
+}\r
+\r
+function getNum(s) {\r
+       if (new RegExp('^(?:[0-9.]+)(?:[a-z%]+)$', 'gi').test(s))\r
+               return s.replace(/[^0-9.]/g, '');\r
+\r
+       return s;\r
+}\r
+\r
+function inStr(s, n) {\r
+       return new RegExp(n, 'gi').test(s);\r
+}\r
+\r
+function getVal(s, i) {\r
+       var a = s.split(' ');\r
+\r
+       if (a.length > 1)\r
+               return a[i];\r
+\r
+       return "";\r
+}\r
+\r
+function setValue(f, n, v) {\r
+       if (f.elements[n].type == "text")\r
+               f.elements[n].value = v;\r
+       else\r
+               selectByValue(f, n, v, true, true);\r
+}\r
+\r
+function setupBox(f, ce, fp, pr, sf, b) {\r
+       if (typeof(b) == "undefined")\r
+               b = ['Top', 'Right', 'Bottom', 'Left'];\r
+\r
+       if (isSame(ce, pr, sf, b)) {\r
+               f.elements[fp + "_same"].checked = true;\r
+\r
+               setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf]));\r
+               f.elements[fp + "_top"].disabled = false;\r
+\r
+               f.elements[fp + "_right"].value = "";\r
+               f.elements[fp + "_right"].disabled = true;\r
+               f.elements[fp + "_bottom"].value = "";\r
+               f.elements[fp + "_bottom"].disabled = true;\r
+               f.elements[fp + "_left"].value = "";\r
+               f.elements[fp + "_left"].disabled = true;\r
+\r
+               if (f.elements[fp + "_top_measurement"]) {\r
+                       selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf]));\r
+                       f.elements[fp + "_left_measurement"].disabled = true;\r
+                       f.elements[fp + "_bottom_measurement"].disabled = true;\r
+                       f.elements[fp + "_right_measurement"].disabled = true;\r
+               }\r
+       } else {\r
+               f.elements[fp + "_same"].checked = false;\r
+\r
+               setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf]));\r
+               f.elements[fp + "_top"].disabled = false;\r
+\r
+               setValue(f, fp + "_right", getNum(ce.style[pr + b[1] + sf]));\r
+               f.elements[fp + "_right"].disabled = false;\r
+\r
+               setValue(f, fp + "_bottom", getNum(ce.style[pr + b[2] + sf]));\r
+               f.elements[fp + "_bottom"].disabled = false;\r
+\r
+               setValue(f, fp + "_left", getNum(ce.style[pr + b[3] + sf]));\r
+               f.elements[fp + "_left"].disabled = false;\r
+\r
+               if (f.elements[fp + "_top_measurement"]) {\r
+                       selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf]));\r
+                       selectByValue(f, fp + '_right_measurement', getMeasurement(ce.style[pr + b[1] + sf]));\r
+                       selectByValue(f, fp + '_bottom_measurement', getMeasurement(ce.style[pr + b[2] + sf]));\r
+                       selectByValue(f, fp + '_left_measurement', getMeasurement(ce.style[pr + b[3] + sf]));\r
+                       f.elements[fp + "_left_measurement"].disabled = false;\r
+                       f.elements[fp + "_bottom_measurement"].disabled = false;\r
+                       f.elements[fp + "_right_measurement"].disabled = false;\r
+               }\r
+       }\r
+}\r
+\r
+function isSame(e, pr, sf, b) {\r
+       var a = [], i, x;\r
+\r
+       if (typeof(b) == "undefined")\r
+               b = ['Top', 'Right', 'Bottom', 'Left'];\r
+\r
+       if (typeof(sf) == "undefined" || sf == null)\r
+               sf = "";\r
+\r
+       a[0] = e.style[pr + b[0] + sf];\r
+       a[1] = e.style[pr + b[1] + sf];\r
+       a[2] = e.style[pr + b[2] + sf];\r
+       a[3] = e.style[pr + b[3] + sf];\r
+\r
+       for (i=0; i<a.length; i++) {\r
+               if (a[i] == null)\r
+                       return false;\r
+\r
+               for (x=0; x<a.length; x++) {\r
+                       if (a[x] != a[i])\r
+                               return false;\r
+               }\r
+       }\r
+\r
+       return true;\r
+};\r
+\r
+function hasEqualValues(a) {\r
+       var i, x;\r
+\r
+       for (i=0; i<a.length; i++) {\r
+               if (a[i] == null)\r
+                       return false;\r
+\r
+               for (x=0; x<a.length; x++) {\r
+                       if (a[x] != a[i])\r
+                               return false;\r
+               }\r
+       }\r
+\r
+       return true;\r
+}\r
+\r
+function toggleApplyAction() {\r
+       applyActionIsInsert = ! applyActionIsInsert;\r
+}\r
+\r
+function applyAction() {\r
+       var ce = document.getElementById('container'), ed = tinyMCEPopup.editor;\r
+\r
+       generateCSS();\r
+\r
+       tinyMCEPopup.restoreSelection();\r
+\r
+       var newStyles = tinyMCEPopup.editor.dom.parseStyle(ce.style.cssText);\r
+\r
+       if (applyActionIsInsert) {\r
+               ed.formatter.register('plugin_style', {\r
+                       inline: 'span', styles: existingStyles\r
+               });\r
+               ed.formatter.remove('plugin_style');\r
+\r
+               ed.formatter.register('plugin_style', {\r
+                       inline: 'span', styles: newStyles\r
+               });\r
+               ed.formatter.apply('plugin_style');\r
+       } else {\r
+               var nodes;\r
+\r
+               if (tinyMCEPopup.getWindowArg('applyStyleToBlocks')) {\r
+                       nodes = ed.selection.getSelectedBlocks();\r
+               }\r
+               else {\r
+                       nodes = ed.selection.getNode();\r
+               }\r
+\r
+               ed.dom.setAttrib(nodes, 'style', tinyMCEPopup.editor.dom.serializeStyle(newStyles));\r
+       }\r
+}\r
+\r
+function updateAction() {\r
+       applyAction();\r
+       tinyMCEPopup.close();\r
+}\r
+\r
+function generateCSS() {\r
+       var ce = document.getElementById('container'), f = document.forms[0], num = new RegExp('[0-9]+', 'g'), s, t;\r
+\r
+       ce.style.cssText = "";\r
+\r
+       // Build text styles\r
+       ce.style.fontFamily = f.text_font.value;\r
+       ce.style.fontSize = f.text_size.value + (isNum(f.text_size.value) ? (f.text_size_measurement.value || 'px') : "");\r
+       ce.style.fontStyle = f.text_style.value;\r
+       ce.style.lineHeight = f.text_lineheight.value + (isNum(f.text_lineheight.value) ? f.text_lineheight_measurement.value : "");\r
+       ce.style.textTransform = f.text_case.value;\r
+       ce.style.fontWeight = f.text_weight.value;\r
+       ce.style.fontVariant = f.text_variant.value;\r
+       ce.style.color = f.text_color.value;\r
+\r
+       s = "";\r
+       s += f.text_underline.checked ? " underline" : "";\r
+       s += f.text_overline.checked ? " overline" : "";\r
+       s += f.text_linethrough.checked ? " line-through" : "";\r
+       s += f.text_blink.checked ? " blink" : "";\r
+       s = s.length > 0 ? s.substring(1) : s;\r
+\r
+       if (f.text_none.checked)\r
+               s = "none";\r
+\r
+       ce.style.textDecoration = s;\r
+\r
+       // Build background styles\r
+\r
+       ce.style.backgroundColor = f.background_color.value;\r
+       ce.style.backgroundImage = f.background_image.value != "" ? "url(" + f.background_image.value + ")" : "";\r
+       ce.style.backgroundRepeat = f.background_repeat.value;\r
+       ce.style.backgroundAttachment = f.background_attachment.value;\r
+\r
+       if (f.background_hpos.value != "") {\r
+               s = "";\r
+               s += f.background_hpos.value + (isNum(f.background_hpos.value) ? f.background_hpos_measurement.value : "") + " ";\r
+               s += f.background_vpos.value + (isNum(f.background_vpos.value) ? f.background_vpos_measurement.value : "");\r
+               ce.style.backgroundPosition = s;\r
+       }\r
+\r
+       // Build block styles\r
+\r
+       ce.style.wordSpacing = f.block_wordspacing.value + (isNum(f.block_wordspacing.value) ? f.block_wordspacing_measurement.value : "");\r
+       ce.style.letterSpacing = f.block_letterspacing.value + (isNum(f.block_letterspacing.value) ? f.block_letterspacing_measurement.value : "");\r
+       ce.style.verticalAlign = f.block_vertical_alignment.value;\r
+       ce.style.textAlign = f.block_text_align.value;\r
+       ce.style.textIndent = f.block_text_indent.value + (isNum(f.block_text_indent.value) ? f.block_text_indent_measurement.value : "");\r
+       ce.style.whiteSpace = f.block_whitespace.value;\r
+       ce.style.display = f.block_display.value;\r
+\r
+       // Build box styles\r
+\r
+       ce.style.width = f.box_width.value + (isNum(f.box_width.value) ? f.box_width_measurement.value : "");\r
+       ce.style.height = f.box_height.value + (isNum(f.box_height.value) ? f.box_height_measurement.value : "");\r
+       ce.style.styleFloat = f.box_float.value;\r
+       ce.style.cssFloat = f.box_float.value;\r
+\r
+       ce.style.clear = f.box_clear.value;\r
+\r
+       if (!f.box_padding_same.checked) {\r
+               ce.style.paddingTop = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : "");\r
+               ce.style.paddingRight = f.box_padding_right.value + (isNum(f.box_padding_right.value) ? f.box_padding_right_measurement.value : "");\r
+               ce.style.paddingBottom = f.box_padding_bottom.value + (isNum(f.box_padding_bottom.value) ? f.box_padding_bottom_measurement.value : "");\r
+               ce.style.paddingLeft = f.box_padding_left.value + (isNum(f.box_padding_left.value) ? f.box_padding_left_measurement.value : "");\r
+       } else\r
+               ce.style.padding = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : "");               \r
+\r
+       if (!f.box_margin_same.checked) {\r
+               ce.style.marginTop = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : "");\r
+               ce.style.marginRight = f.box_margin_right.value + (isNum(f.box_margin_right.value) ? f.box_margin_right_measurement.value : "");\r
+               ce.style.marginBottom = f.box_margin_bottom.value + (isNum(f.box_margin_bottom.value) ? f.box_margin_bottom_measurement.value : "");\r
+               ce.style.marginLeft = f.box_margin_left.value + (isNum(f.box_margin_left.value) ? f.box_margin_left_measurement.value : "");\r
+       } else\r
+               ce.style.margin = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : "");           \r
+\r
+       // Build border styles\r
+\r
+       if (!f.border_style_same.checked) {\r
+               ce.style.borderTopStyle = f.border_style_top.value;\r
+               ce.style.borderRightStyle = f.border_style_right.value;\r
+               ce.style.borderBottomStyle = f.border_style_bottom.value;\r
+               ce.style.borderLeftStyle = f.border_style_left.value;\r
+       } else\r
+               ce.style.borderStyle = f.border_style_top.value;\r
+\r
+       if (!f.border_width_same.checked) {\r
+               ce.style.borderTopWidth = f.border_width_top.value + (isNum(f.border_width_top.value) ? f.border_width_top_measurement.value : "");\r
+               ce.style.borderRightWidth = f.border_width_right.value + (isNum(f.border_width_right.value) ? f.border_width_right_measurement.value : "");\r
+               ce.style.borderBottomWidth = f.border_width_bottom.value + (isNum(f.border_width_bottom.value) ? f.border_width_bottom_measurement.value : "");\r
+               ce.style.borderLeftWidth = f.border_width_left.value + (isNum(f.border_width_left.value) ? f.border_width_left_measurement.value : "");\r
+       } else\r
+               ce.style.borderWidth = f.border_width_top.value + (isNum(f.border_width_top.value) ? f.border_width_top_measurement.value : "");\r
+\r
+       if (!f.border_color_same.checked) {\r
+               ce.style.borderTopColor = f.border_color_top.value;\r
+               ce.style.borderRightColor = f.border_color_right.value;\r
+               ce.style.borderBottomColor = f.border_color_bottom.value;\r
+               ce.style.borderLeftColor = f.border_color_left.value;\r
+       } else\r
+               ce.style.borderColor = f.border_color_top.value;\r
+\r
+       // Build list styles\r
+\r
+       ce.style.listStyleType = f.list_type.value;\r
+       ce.style.listStylePosition = f.list_position.value;\r
+       ce.style.listStyleImage = f.list_bullet_image.value != "" ? "url(" + f.list_bullet_image.value + ")" : "";\r
+\r
+       // Build positioning styles\r
+\r
+       ce.style.position = f.positioning_type.value;\r
+       ce.style.visibility = f.positioning_visibility.value;\r
+\r
+       if (ce.style.width == "")\r
+               ce.style.width = f.positioning_width.value + (isNum(f.positioning_width.value) ? f.positioning_width_measurement.value : "");\r
+\r
+       if (ce.style.height == "")\r
+               ce.style.height = f.positioning_height.value + (isNum(f.positioning_height.value) ? f.positioning_height_measurement.value : "");\r
+\r
+       ce.style.zIndex = f.positioning_zindex.value;\r
+       ce.style.overflow = f.positioning_overflow.value;\r
+\r
+       if (!f.positioning_placement_same.checked) {\r
+               ce.style.top = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : "");\r
+               ce.style.right = f.positioning_placement_right.value + (isNum(f.positioning_placement_right.value) ? f.positioning_placement_right_measurement.value : "");\r
+               ce.style.bottom = f.positioning_placement_bottom.value + (isNum(f.positioning_placement_bottom.value) ? f.positioning_placement_bottom_measurement.value : "");\r
+               ce.style.left = f.positioning_placement_left.value + (isNum(f.positioning_placement_left.value) ? f.positioning_placement_left_measurement.value : "");\r
+       } else {\r
+               s = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : "");\r
+               ce.style.top = s;\r
+               ce.style.right = s;\r
+               ce.style.bottom = s;\r
+               ce.style.left = s;\r
+       }\r
+\r
+       if (!f.positioning_clip_same.checked) {\r
+               s = "rect(";\r
+               s += (isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto") + " ";\r
+               s += (isNum(f.positioning_clip_right.value) ? f.positioning_clip_right.value + f.positioning_clip_right_measurement.value : "auto") + " ";\r
+               s += (isNum(f.positioning_clip_bottom.value) ? f.positioning_clip_bottom.value + f.positioning_clip_bottom_measurement.value : "auto") + " ";\r
+               s += (isNum(f.positioning_clip_left.value) ? f.positioning_clip_left.value + f.positioning_clip_left_measurement.value : "auto");\r
+               s += ")";\r
+\r
+               if (s != "rect(auto auto auto auto)")\r
+                       ce.style.clip = s;\r
+       } else {\r
+               s = "rect(";\r
+               t = isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto";\r
+               s += t + " ";\r
+               s += t + " ";\r
+               s += t + " ";\r
+               s += t + ")";\r
+\r
+               if (s != "rect(auto auto auto auto)")\r
+                       ce.style.clip = s;\r
+       }\r
+\r
+       ce.style.cssText = ce.style.cssText;\r
+}\r
+\r
+function isNum(s) {\r
+       return new RegExp('[0-9]+', 'g').test(s);\r
+}\r
+\r
+function showDisabledControls() {\r
+       var f = document.forms, i, a;\r
+\r
+       for (i=0; i<f.length; i++) {\r
+               for (a=0; a<f[i].elements.length; a++) {\r
+                       if (f[i].elements[a].disabled)\r
+                               tinyMCEPopup.editor.dom.addClass(f[i].elements[a], "disabled");\r
+                       else\r
+                               tinyMCEPopup.editor.dom.removeClass(f[i].elements[a], "disabled");\r
+               }\r
+       }\r
+}\r
+\r
+function fillSelect(f, s, param, dval, sep, em) {\r
+       var i, ar, p, se;\r
+\r
+       f = document.forms[f];\r
+       sep = typeof(sep) == "undefined" ? ";" : sep;\r
+\r
+       if (em)\r
+               addSelectValue(f, s, "", "");\r
+\r
+       ar = tinyMCEPopup.getParam(param, dval).split(sep);\r
+       for (i=0; i<ar.length; i++) {\r
+               se = false;\r
+\r
+               if (ar[i].charAt(0) == '+') {\r
+                       ar[i] = ar[i].substring(1);\r
+                       se = true;\r
+               }\r
+\r
+               p = ar[i].split('=');\r
+\r
+               if (p.length > 1) {\r
+                       addSelectValue(f, s, p[0], p[1]);\r
+\r
+                       if (se)\r
+                               selectByValue(f, s, p[1]);\r
+               } else {\r
+                       addSelectValue(f, s, p[0], p[0]);\r
+\r
+                       if (se)\r
+                               selectByValue(f, s, p[0]);\r
+               }\r
+       }\r
+}\r
+\r
+function toggleSame(ce, pre) {\r
+       var el = document.forms[0].elements, i;\r
+\r
+       if (ce.checked) {\r
+               el[pre + "_top"].disabled = false;\r
+               el[pre + "_right"].disabled = true;\r
+               el[pre + "_bottom"].disabled = true;\r
+               el[pre + "_left"].disabled = true;\r
+\r
+               if (el[pre + "_top_measurement"]) {\r
+                       el[pre + "_top_measurement"].disabled = false;\r
+                       el[pre + "_right_measurement"].disabled = true;\r
+                       el[pre + "_bottom_measurement"].disabled = true;\r
+                       el[pre + "_left_measurement"].disabled = true;\r
+               }\r
+       } else {\r
+               el[pre + "_top"].disabled = false;\r
+               el[pre + "_right"].disabled = false;\r
+               el[pre + "_bottom"].disabled = false;\r
+               el[pre + "_left"].disabled = false;\r
+\r
+               if (el[pre + "_top_measurement"]) {\r
+                       el[pre + "_top_measurement"].disabled = false;\r
+                       el[pre + "_right_measurement"].disabled = false;\r
+                       el[pre + "_bottom_measurement"].disabled = false;\r
+                       el[pre + "_left_measurement"].disabled = false;\r
+               }\r
+       }\r
+\r
+       showDisabledControls();\r
+}\r
+\r
+function synch(fr, to) {\r
+       var f = document.forms[0];\r
+\r
+       f.elements[to].value = f.elements[fr].value;\r
+\r
+       if (f.elements[fr + "_measurement"])\r
+               selectByValue(f, to + "_measurement", f.elements[fr + "_measurement"].value);\r
+}\r
+\r
+function updateTextDecorations(){\r
+       var el = document.forms[0].elements;\r
+\r
+       var textDecorations = ["text_underline", "text_overline", "text_linethrough", "text_blink"];\r
+       var noneChecked = el["text_none"].checked;\r
+       tinymce.each(textDecorations, function(id) {\r
+               el[id].disabled = noneChecked;\r
+               if (noneChecked) {\r
+                       el[id].checked = false;\r
+               }\r
+       });\r
+}\r
+\r
+tinyMCEPopup.onInit.add(init);\r
diff --git a/program/js/tiny_mce/plugins/style/langs/ar_dlg.js b/program/js/tiny_mce/plugins/style/langs/ar_dlg.js
new file mode 100644 (file)
index 0000000..8621f09
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..81d8cdc
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..1be3bba
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..77db890
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..c8cabcd
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..56bd505
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..466109a
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..8e6dc60
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..3b55155
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..733249f
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..ad04664
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..8ae651b
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..9a1d4a2
--- /dev/null
@@ -0,0 +1 @@
+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",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/eo_dlg.js b/program/js/tiny_mce/plugins/style/langs/eo_dlg.js
new file mode 100644 (file)
index 0000000..29822e8
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..7a63754
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..89de41d
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..961e98a
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..d00a708
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..4f174cc
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..3f7bdb9
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..e5d85d2
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..22680ba
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..8b0f315
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..48cf6b9
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..b60f3f7
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..4b9885b
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..b8862d6
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..433672f
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..401b727
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..4d5953c
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..442f54e
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..c326368
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..c8bc042
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..9f0d3f2
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..ce8ab5d
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..518a3be
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..c178574
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..ad81f8f
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..8b891c1
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..1dd01ce
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..aa85aad
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..21c6b5e
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..98a1605
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..857077c
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..3d67250
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..d184cd3
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..e2b8f2e
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..0151767
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..8765f5b
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..4a52954
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..4968e45
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..264f85a
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..bc12209
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..4c07a44
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..ee7136b
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..c5fc08b
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..22774eb
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..7dc087a
--- /dev/null
@@ -0,0 +1,845 @@
+<!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
new file mode 100644 (file)
index 0000000..5bac302
--- /dev/null
@@ -0,0 +1,19 @@
+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.
index d18689ddb9a9753d4d73d9a93bb79d8704a2e871..2c51291615f5c1e3d957904d5751d9fcb52616ca 100644 (file)
@@ -1 +1 @@
-(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(r){n=c.select(":input:enabled,*[tabindex]");function i(s){return s.type!="hidden"&&s.tabIndex!="-1"&&!(n[m].style.display=="none")&&!(n[m].style.visibility=="hidden")}d(n,function(t,s){if(t.id==l.id){j=s;return false}});if(r>0){for(m=j+1;m<n.length;m++){if(i(n[m])){return n[m]}}}else{for(m=j-1;m>=0;m--){if(i(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
+(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
index f4545e16703546db8e08a1c1a03e94cb23eb8314..94f45320d600fcf930c693ce39fa83b0d02518cc 100644 (file)
-/**\r
- * editor_plugin_src.js\r
- *\r
- * Copyright 2009, Moxiecode Systems AB\r
- * Released under LGPL License.\r
- *\r
- * License: http://tinymce.moxiecode.com/license\r
- * Contributing: http://tinymce.moxiecode.com/contributing\r
- */\r
-\r
-(function() {\r
-       var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, explode = tinymce.explode;\r
-\r
-       tinymce.create('tinymce.plugins.TabFocusPlugin', {\r
-               init : function(ed, url) {\r
-                       function tabCancel(ed, e) {\r
-                               if (e.keyCode === 9)\r
-                                       return Event.cancel(e);\r
-                       };\r
-\r
-                       function tabHandler(ed, e) {\r
-                               var x, i, f, el, v;\r
-\r
-                               function find(d) {\r
-                                       el = DOM.select(':input:enabled,*[tabindex]');\r
-                                       function canSelect(e) {\r
-                                               return e.type != 'hidden' && \r
-                                               e.tabIndex != '-1' && \r
-                                                       !(el[i].style.display == "none") && \r
-                                                       !(el[i].style.visibility == "hidden");\r
-                                   }\r
-\r
-                                       each(el, function(e, i) {\r
-                                               if (e.id == ed.id) {\r
-                                                       x = i;\r
-                                                       return false;\r
-                                               }\r
-                                       });\r
-\r
-                                       if (d > 0) {\r
-                                               for (i = x + 1; i < el.length; i++) {\r
-                                                       if (canSelect(el[i]))\r
-                                                               return el[i];\r
-                                               }\r
-                                       } else {\r
-                                               for (i = x - 1; i >= 0; i--) {\r
-                                                       if (canSelect(el[i]))\r
-                                                               return el[i];\r
-                                               }\r
-                                       }\r
-\r
-                                       return null;\r
-                               };\r
-\r
-                               if (e.keyCode === 9) {\r
-                                       v = explode(ed.getParam('tab_focus', ed.getParam('tabfocus_elements', ':prev,:next')));\r
-\r
-                                       if (v.length == 1) {\r
-                                               v[1] = v[0];\r
-                                               v[0] = ':prev';\r
-                                       }\r
-\r
-                                       // Find element to focus\r
-                                       if (e.shiftKey) {\r
-                                               if (v[0] == ':prev')\r
-                                                       el = find(-1);\r
-                                               else\r
-                                                       el = DOM.get(v[0]);\r
-                                       } else {\r
-                                               if (v[1] == ':next')\r
-                                                       el = find(1);\r
-                                               else\r
-                                                       el = DOM.get(v[1]);\r
-                                       }\r
-\r
-                                       if (el) {\r
-                                               if (el.id && (ed = tinymce.get(el.id || el.name)))\r
-                                                       ed.focus();\r
-                                               else\r
-                                                       window.setTimeout(function() {\r
-                                                               if (!tinymce.isWebKit)\r
-                                                                       window.focus();\r
-                                                               el.focus();\r
-                                                       }, 10);\r
-\r
-                                               return Event.cancel(e);\r
-                                       }\r
-                               }\r
-                       };\r
-\r
-                       ed.onKeyUp.add(tabCancel);\r
-\r
-                       if (tinymce.isGecko) {\r
-                               ed.onKeyPress.add(tabHandler);\r
-                               ed.onKeyDown.add(tabCancel);\r
-                       } else\r
-                               ed.onKeyDown.add(tabHandler);\r
-\r
-               },\r
-\r
-               getInfo : function() {\r
-                       return {\r
-                               longname : 'Tabfocus',\r
-                               author : 'Moxiecode Systems AB',\r
-                               authorurl : 'http://tinymce.moxiecode.com',\r
-                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus',\r
-                               version : tinymce.majorVersion + "." + tinymce.minorVersion\r
-                       };\r
-               }\r
-       });\r
-\r
-       // Register plugin\r
-       tinymce.PluginManager.add('tabfocus', tinymce.plugins.TabFocusPlugin);\r
-})();
\ No newline at end of file
+/**
+ * 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);
+})();
index 4afb6afa3a7acc8d48196a3a9d5c27735961338f..a72a8d69736074abb03cdd051056cdcdb9ab5af4 100644 (file)
@@ -5,6 +5,7 @@
        <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
        <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
        <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
+       <script type="text/javascript" src="../../utils/validate.js"></script>\r
        <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
        <script type="text/javascript" src="js/cell.js"></script>\r
        <link href="css/cell.css" rel="stylesheet" type="text/css" />\r
 \r
                                                <tr>\r
                                                        <td><label for="width">{#table_dlg.width}</label></td>\r
-                                                       <td><input id="width" name="width" type="text" value="" size="4" maxlength="4" onchange="changedSize();" /></td>\r
+                                                       <td><input id="width" name="width" type="text" value="" size="7" maxlength="7" onchange="changedSize();" class="size" /></td>\r
 \r
                                                        <td><label for="height">{#table_dlg.height}</label></td>\r
-                                                       <td><input id="height" name="height" type="text" value="" size="4" maxlength="4" onchange="changedSize();" /></td>\r
+                                                       <td><input id="height" name="height" type="text" value="" size="7" maxlength="7" onchange="changedSize();" class="size" /></td>\r
                                                </tr>\r
 \r
                                                <tr id="styleSelectRow">\r
                                <select id="action" name="action">\r
                                        <option value="cell">{#table_dlg.cell_cell}</option>\r
                                        <option value="row">{#table_dlg.cell_row}</option>\r
+                                       <option value="col">{#table_dlg.cell_col}</option>\r
                                        <option value="all">{#table_dlg.cell_all}</option>\r
                                </select>\r
                        </div>\r
index 727ae4e79e45c77e05e51ac44d03217daf7a1e49..23c1a83f33bd05f6838b809b4bdaecb029b12a95 100644 (file)
@@ -1 +1 @@
-(function(c){var d=c.each;function b(f,g){var h=g.ownerDocument,e=h.createRange(),j;e.setStartBefore(g);e.setEnd(f.endContainer,f.endOffset);j=h.createElement("body");j.appendChild(e.cloneContents());return j.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi,"-").replace(/<[^>]+>/g,"").length==0}function a(H,G,K){var f,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;f=[];d(["thead","tbody","tfoot"],function(N){var O=G.select("> "+N+" tr",H);d(O,function(P,Q){Q+=M;d(G.select("> td, > th",P),function(W,R){var S,T,U,V;if(f[Q]){while(f[Q][R]){R++}}U=h(W,"rowspan");V=h(W,"colspan");for(T=Q;T<Q+U;T++){if(!f[T]){f[T]=[]}for(S=R;S<R+V;S++){f[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=f[O];if(N){return N[M]}}function h(N,M){return parseInt(N.getAttribute(M)||1)}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=[];d(H.rows,function(N){d(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 e(M){var N;c.walk(M,function(P){var O;if(P.nodeType==3){d(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=c.isIE?"&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(!c.isIE){M.innerHTML='<br data-mce-bogus="1" />'}}return M}function q(){var M=G.createRng();d(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}d(G.select("thead,tbody,tfoot",H),function(N){if(N.rows.length==0){G.remove(N)}});t();row=f[Math.min(f.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=f[Q][S].elm.parentNode;for(M=1;M<=U;M++){P=G.getNext(P,"tr");if(P){for(N=S;N>=0;N--){T=f[Q+M][N].elm;if(T.parentNode==P){for(O=1;O<=R;O++){G.insertAfter(e(T),T)}break}}if(N==-1){for(O=1;O<=R;O++){P.insertBefore(e(P.cells[0]),P.cells[0])}}}}}function C(){d(f,function(M,N){d(M,function(P,O){var S,R,T,Q;if(j(P)){P=P.elm;S=h(P,"colspan");R=h(P,"rowspan");if(S>1||R>1){s(P,"rowSpan",1);s(P,"colSpan",1);for(Q=0;Q<S-1;Q++){G.insertAfter(e(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{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(!f[R]||!f[R][U]){continue}V=f[R][U].elm;if(V!=T){N=c.grep(V.childNodes);d(N,function(Z){T.appendChild(Z)});if(N.length){N=c.grep(T.childNodes);Q=0;d(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;d(f,function(W,X){d(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<f[0].length;R++){if(!f[M][R]){continue}S=f[M][R].elm;if(S!=P){if(!Q){O=h(S,"rowspan");if(O>1){s(S,"rowSpan",O+1);continue}}else{if(M>0&&f[M-1][R]){V=f[M-1][R].elm;O=h(V,"rowSpan");if(O>1){s(V,"rowSpan",O+1);continue}}}N=e(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 g(N){var O,M;d(f,function(P,Q){d(P,function(S,R){if(j(S)){O=R;if(N){return false}}});if(N){return !O}});d(f,function(S,T){var P,Q,R;if(!S[O]){return}P=S[O].elm;if(P!=M){R=h(P,"colspan");Q=h(P,"rowspan");if(R==1){if(!N){G.insertAfter(e(P),P);u(O,T,Q-1,R)}else{P.parentNode.insertBefore(e(P),P);u(O,T,Q-1,R)}}else{s(P,"colSpan",P.colSpan+1)}M=P}})}function n(){var M=[];d(f,function(N,O){d(N,function(Q,P){if(j(Q)&&c.inArray(M,P)===-1){d(f,function(T){var R=T[P].elm,S;S=h(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");d(Q.cells,function(S){var T=h(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]);d(f[R.y],function(S){var T;S=S.elm;if(S!=O){T=h(S,"rowSpan");if(T<=1){G.remove(S)}else{s(S,"rowSpan",T-1)}O=S}})}N=k();d(N.reverse(),function(O){M(O)});q()}function E(){var M=k();G.remove(M);q();return M}function J(){var M=k();d(M,function(O,N){M[N]=A(O,true)});return M}function B(O,N){var P=k(),M=P[N?0:P.length-1],Q=M.cells.length;d(f,function(S){var R;Q=0;d(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()}d(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(e(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)}})}function F(M){var N;d(f,function(O,P){d(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;d(f,function(P,Q){d(P,function(S,R){var U,T;if(j(S)){S=f[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=f[y][P];if(!S.real){if(P-(S.colspan-1)<P){P-=S.colspan-1}}}for(x=P;x<=N;x++){S=f[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=f[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(f[y][x]){G.addClass(f[y][x].elm,"mceSelected")}}}}}c.extend(this,{deleteTable:r,split:C,merge:p,insertRow:l,insertCol:g,deleteCols:n,deleteRows:m,cutRows:E,copyRows:J,pasteRows:B,getPos:F,setStartCell:w,setEndCell:v})}c.create("tinymce.plugins.TablePlugin",{init:function(f,g){var e,k;function j(n){var m=f.selection,l=f.dom.getParent(n||m.getNode(),"table");if(l){return new a(l,f.dom,m)}}function h(){f.getBody().style.webkitUserSelect="";f.dom.removeClass(f.dom.select("td.mceSelected,th.mceSelected"),"mceSelected")}d([["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(l){f.addButton(l[0],{title:l[1],cmd:l[2],ui:l[3]})});if(!c.isIE){f.onClick.add(function(l,m){m=m.target;if(m.nodeName==="TABLE"){l.selection.select(m);l.nodeChanged()}})}f.onPreProcess.add(function(m,n){var l,o,p,r=m.dom,q;l=r.select("table",n.node);o=l.length;while(o--){p=l[o];r.setAttrib(p,"data-mce-style","");if((q=r.getAttrib(p,"width"))){r.setStyle(p,"width",q);r.setAttrib(p,"width","")}if((q=r.getAttrib(p,"height"))){r.setStyle(p,"height",q);r.setAttrib(p,"height","")}}});f.onNodeChange.add(function(m,l,q){var o;q=m.selection.getStart();o=m.dom.getParent(q,"td,th,caption");l.setActive("table",q.nodeName==="TABLE"||!!o);if(o&&o.nodeName==="CAPTION"){o=0}l.setDisabled("delete_table",!o);l.setDisabled("delete_col",!o);l.setDisabled("delete_table",!o);l.setDisabled("delete_row",!o);l.setDisabled("col_after",!o);l.setDisabled("col_before",!o);l.setDisabled("row_after",!o);l.setDisabled("row_before",!o);l.setDisabled("row_props",!o);l.setDisabled("cell_props",!o);l.setDisabled("split_cells",!o);l.setDisabled("merge_cells",!o)});f.onInit.add(function(m){var l,p,q=m.dom,n;e=m.windowManager;m.onMouseDown.add(function(r,s){if(s.button!=2){h();p=q.getParent(s.target,"td,th");l=q.getParent(p,"table")}});q.bind(m.getDoc(),"mouseover",function(v){var t,s,u=v.target;if(p&&(n||u!=p)&&(u.nodeName=="TD"||u.nodeName=="TH")){s=q.getParent(u,"table");if(s==l){if(!n){n=j(s);n.setStartCell(p);m.getBody().style.webkitUserSelect="none"}n.setEndCell(u)}t=m.selection.getSel();try{if(t.removeAllRanges){t.removeAllRanges()}else{t.empty()}}catch(r){}v.preventDefault()}});m.onMouseUp.add(function(A,B){var s,u=A.selection,C,D=u.getSel(),r,v,t,z;if(p){if(n){A.getBody().style.webkitUserSelect=""}function w(E,G){var F=new c.dom.TreeWalker(E,E);do{if(E.nodeType==3&&c.trim(E.nodeValue).length!=0){if(G){s.setStart(E,0)}else{s.setEnd(E,E.nodeValue.length)}return}if(E.nodeName=="BR"){if(G){s.setStartBefore(E)}else{s.setEndBefore(E)}return}}while(E=(G?F.next():F.prev()))}C=q.select("td.mceSelected,th.mceSelected");if(C.length>0){s=q.createRng();v=C[0];z=C[C.length-1];w(v,1);r=new c.dom.TreeWalker(v,q.getParent(C[0],"table"));do{if(v.nodeName=="TD"||v.nodeName=="TH"){if(!q.hasClass(v,"mceSelected")){break}t=v}}while(v=r.next());w(t);u.setRng(s)}A.nodeChanged();p=n=l=null}});m.onKeyUp.add(function(r,s){h()});if(m&&m.plugins.contextmenu){m.plugins.contextmenu.onContextMenu.add(function(t,r,v){var w,u=m.selection,s=u.getNode()||m.getBody();if(m.dom.getParent(v,"td")||m.dom.getParent(v,"th")||m.dom.select("td.mceSelected,th.mceSelected").length){r.removeAll();if(s.nodeName=="A"&&!m.dom.getAttrib(s,"name")){r.add({title:"advanced.link_desc",icon:"link",cmd:m.plugins.advlink?"mceAdvLink":"mceLink",ui:true});r.add({title:"advanced.unlink_desc",icon:"unlink",cmd:"UnLink"});r.addSeparator()}if(s.nodeName=="IMG"&&s.className.indexOf("mceItem")==-1){r.add({title:"advanced.image_desc",icon:"image",cmd:m.plugins.advimage?"mceAdvImage":"mceImage",ui:true});r.addSeparator()}r.add({title:"table.desc",icon:"table",cmd:"mceInsertTable",value:{action:"insert"}});r.add({title:"table.props_desc",icon:"table_props",cmd:"mceInsertTable"});r.add({title:"table.del",icon:"delete_table",cmd:"mceTableDelete"});r.addSeparator();w=r.addMenu({title:"table.cell"});w.add({title:"table.cell_desc",icon:"cell_props",cmd:"mceTableCellProps"});w.add({title:"table.split_cells_desc",icon:"split_cells",cmd:"mceTableSplitCells"});w.add({title:"table.merge_cells_desc",icon:"merge_cells",cmd:"mceTableMergeCells"});w=r.addMenu({title:"table.row"});w.add({title:"table.row_desc",icon:"row_props",cmd:"mceTableRowProps"});w.add({title:"table.row_before_desc",icon:"row_before",cmd:"mceTableInsertRowBefore"});w.add({title:"table.row_after_desc",icon:"row_after",cmd:"mceTableInsertRowAfter"});w.add({title:"table.delete_row_desc",icon:"delete_row",cmd:"mceTableDeleteRow"});w.addSeparator();w.add({title:"table.cut_row_desc",icon:"cut",cmd:"mceTableCutRow"});w.add({title:"table.copy_row_desc",icon:"copy",cmd:"mceTableCopyRow"});w.add({title:"table.paste_row_before_desc",icon:"paste",cmd:"mceTablePasteRowBefore"}).setDisabled(!k);w.add({title:"table.paste_row_after_desc",icon:"paste",cmd:"mceTablePasteRowAfter"}).setDisabled(!k);w=r.addMenu({title:"table.col"});w.add({title:"table.col_before_desc",icon:"col_before",cmd:"mceTableInsertColBefore"});w.add({title:"table.col_after_desc",icon:"col_after",cmd:"mceTableInsertColAfter"});w.add({title:"table.delete_col_desc",icon:"delete_col",cmd:"mceTableDeleteCol"})}else{r.add({title:"table.desc",icon:"table",cmd:"mceInsertTable"})}})}if(!c.isIE){function o(){var r;for(r=m.getBody().lastChild;r&&r.nodeType==3&&!r.nodeValue.length;r=r.previousSibling){}if(r&&r.nodeName=="TABLE"){m.dom.add(m.getBody(),"p",null,'<br mce_bogus="1" />')}}if(c.isGecko){m.onKeyDown.add(function(s,u){var r,t,v=s.dom;if(u.keyCode==37||u.keyCode==38){r=s.selection.getRng();t=v.getParent(r.startContainer,"table");if(t&&s.getBody().firstChild==t){if(b(r,t)){r=v.createRng();r.setStartBefore(t);r.setEndBefore(t);s.selection.setRng(r);u.preventDefault()}}}})}m.onKeyUp.add(o);m.onSetContent.add(o);m.onVisualAid.add(o);m.onPreProcess.add(function(r,t){var s=t.node.lastChild;if(s&&s.childNodes.length==1&&s.firstChild.nodeName=="BR"){r.dom.remove(s)}});o()}});d({mceTableSplitCells:function(l){l.split()},mceTableMergeCells:function(m){var n,o,l;l=f.dom.getParent(f.selection.getNode(),"th,td");if(l){n=l.rowSpan;o=l.colSpan}if(!f.dom.select("td.mceSelected,th.mceSelected").length){e.open({url:g+"/merge_cells.htm",width:240+parseInt(f.getLang("table.merge_cells_delta_width",0)),height:110+parseInt(f.getLang("table.merge_cells_delta_height",0)),inline:1},{rows:n,cols:o,onaction:function(p){m.merge(l,p.cols,p.rows)},plugin_url:g})}else{m.merge()}},mceTableInsertRowBefore:function(l){l.insertRow(true)},mceTableInsertRowAfter:function(l){l.insertRow()},mceTableInsertColBefore:function(l){l.insertCol(true)},mceTableInsertColAfter:function(l){l.insertCol()},mceTableDeleteCol:function(l){l.deleteCols()},mceTableDeleteRow:function(l){l.deleteRows()},mceTableCutRow:function(l){k=l.cutRows()},mceTableCopyRow:function(l){k=l.copyRows()},mceTablePasteRowBefore:function(l){l.pasteRows(k,true)},mceTablePasteRowAfter:function(l){l.pasteRows(k)},mceTableDelete:function(l){l.deleteTable()}},function(m,l){f.addCommand(l,function(){var n=j();if(n){m(n);f.execCommand("mceRepaint");h()}})});d({mceInsertTable:function(l){e.open({url:g+"/table.htm",width:400+parseInt(f.getLang("table.table_delta_width",0)),height:320+parseInt(f.getLang("table.table_delta_height",0)),inline:1},{plugin_url:g,action:l?l.action:0})},mceTableRowProps:function(){e.open({url:g+"/row.htm",width:400+parseInt(f.getLang("table.rowprops_delta_width",0)),height:295+parseInt(f.getLang("table.rowprops_delta_height",0)),inline:1},{plugin_url:g})},mceTableCellProps:function(){e.open({url:g+"/cell.htm",width:400+parseInt(f.getLang("table.cellprops_delta_width",0)),height:295+parseInt(f.getLang("table.cellprops_delta_height",0)),inline:1},{plugin_url:g})}},function(m,l){f.addCommand(l,function(n,o){m(o)})})}});c.PluginManager.add("table",c.plugins.TablePlugin)})(tinymce);
\ No newline at end of file
+(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?"&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){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){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?"&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)}});if(d.isGecko){r.onKeyDown.add(function(z,B){if(B.keyCode===d.VK.ENTER&&B.shiftKey){var A=z.selection.getRng().startContainer;var C=q.getParent(A,"td,th");if(C){var w=z.getDoc().createTextNode("\uFEFF");q.insertAfter(w,A)}}})}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
index 442e465c43a31db6ef418bdaa087c030489e7ecf..54bab56c3b1d67edb58ef941c7f612b5fa220377 100644 (file)
-/**\r
- * editor_plugin_src.js\r
- *\r
- * Copyright 2009, Moxiecode Systems AB\r
- * Released under LGPL License.\r
- *\r
- * License: http://tinymce.moxiecode.com/license\r
- * Contributing: http://tinymce.moxiecode.com/contributing\r
- */\r
-\r
-(function(tinymce) {\r
-       var each = tinymce.each;\r
-\r
-       // Checks if the selection/caret is at the start of the specified block element\r
-       function isAtStart(rng, par) {\r
-               var doc = par.ownerDocument, rng2 = doc.createRange(), elm;\r
-\r
-               rng2.setStartBefore(par);\r
-               rng2.setEnd(rng.endContainer, rng.endOffset);\r
-\r
-               elm = doc.createElement('body');\r
-               elm.appendChild(rng2.cloneContents());\r
-\r
-               // Check for text characters of other elements that should be treated as content\r
-               return elm.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi, '-').replace(/<[^>]+>/g, '').length == 0;\r
-       };\r
-\r
-       /**\r
-        * Table Grid class.\r
-        */\r
-       function TableGrid(table, dom, selection) {\r
-               var grid, startPos, endPos, selectedCell;\r
-\r
-               buildGrid();\r
-               selectedCell = dom.getParent(selection.getStart(), 'th,td');\r
-               if (selectedCell) {\r
-                       startPos = getPos(selectedCell);\r
-                       endPos = findEndPos();\r
-                       selectedCell = getCell(startPos.x, startPos.y);\r
-               }\r
-\r
-               function cloneNode(node, children) {\r
-                       node = node.cloneNode(children);\r
-                       node.removeAttribute('id');\r
-\r
-                       return node;\r
-               }\r
-\r
-               function buildGrid() {\r
-                       var startY = 0;\r
-\r
-                       grid = [];\r
-\r
-                       each(['thead', 'tbody', 'tfoot'], function(part) {\r
-                               var rows = dom.select('> ' + part + ' tr', table);\r
-\r
-                               each(rows, function(tr, y) {\r
-                                       y += startY;\r
-\r
-                                       each(dom.select('> td, > th', tr), function(td, x) {\r
-                                               var x2, y2, rowspan, colspan;\r
-\r
-                                               // Skip over existing cells produced by rowspan\r
-                                               if (grid[y]) {\r
-                                                       while (grid[y][x])\r
-                                                               x++;\r
-                                               }\r
-\r
-                                               // Get col/rowspan from cell\r
-                                               rowspan = getSpanVal(td, 'rowspan');\r
-                                               colspan = getSpanVal(td, 'colspan');\r
-\r
-                                               // Fill out rowspan/colspan right and down\r
-                                               for (y2 = y; y2 < y + rowspan; y2++) {\r
-                                                       if (!grid[y2])\r
-                                                               grid[y2] = [];\r
-\r
-                                                       for (x2 = x; x2 < x + colspan; x2++) {\r
-                                                               grid[y2][x2] = {\r
-                                                                       part : part,\r
-                                                                       real : y2 == y && x2 == x,\r
-                                                                       elm : td,\r
-                                                                       rowspan : rowspan,\r
-                                                                       colspan : colspan\r
-                                                               };\r
-                                                       }\r
-                                               }\r
-                                       });\r
-                               });\r
-\r
-                               startY += rows.length;\r
-                       });\r
-               };\r
-\r
-               function getCell(x, y) {\r
-                       var row;\r
-\r
-                       row = grid[y];\r
-                       if (row)\r
-                               return row[x];\r
-               };\r
-\r
-               function getSpanVal(td, name) {\r
-                       return parseInt(td.getAttribute(name) || 1);\r
-               };\r
-\r
-               function setSpanVal(td, name, val) {\r
-                       if (td) {\r
-                               val = parseInt(val);\r
-\r
-                               if (val === 1)\r
-                                       td.removeAttribute(name, 1);\r
-                               else\r
-                                       td.setAttribute(name, val, 1);\r
-                       }\r
-               }\r
-\r
-               function isCellSelected(cell) {\r
-                       return cell && (dom.hasClass(cell.elm, 'mceSelected') || cell == selectedCell);\r
-               };\r
-\r
-               function getSelectedRows() {\r
-                       var rows = [];\r
-\r
-                       each(table.rows, function(row) {\r
-                               each(row.cells, function(cell) {\r
-                                       if (dom.hasClass(cell, 'mceSelected') || cell == selectedCell.elm) {\r
-                                               rows.push(row);\r
-                                               return false;\r
-                                       }\r
-                               });\r
-                       });\r
-\r
-                       return rows;\r
-               };\r
-\r
-               function deleteTable() {\r
-                       var rng = dom.createRng();\r
-\r
-                       rng.setStartAfter(table);\r
-                       rng.setEndAfter(table);\r
-\r
-                       selection.setRng(rng);\r
-\r
-                       dom.remove(table);\r
-               };\r
-\r
-               function cloneCell(cell) {\r
-                       var formatNode;\r
-\r
-                       // Clone formats\r
-                       tinymce.walk(cell, function(node) {\r
-                               var curNode;\r
-\r
-                               if (node.nodeType == 3) {\r
-                                       each(dom.getParents(node.parentNode, null, cell).reverse(), function(node) {\r
-                                               node = cloneNode(node, false);\r
-\r
-                                               if (!formatNode)\r
-                                                       formatNode = curNode = node;\r
-                                               else if (curNode)\r
-                                                       curNode.appendChild(node);\r
-\r
-                                               curNode = node;\r
-                                       });\r
-\r
-                                       // Add something to the inner node\r
-                                       if (curNode)\r
-                                               curNode.innerHTML = tinymce.isIE ? '&nbsp;' : '<br data-mce-bogus="1" />';\r
-\r
-                                       return false;\r
-                               }\r
-                       }, 'childNodes');\r
-\r
-                       cell = cloneNode(cell, false);\r
-                       setSpanVal(cell, 'rowSpan', 1);\r
-                       setSpanVal(cell, 'colSpan', 1);\r
-\r
-                       if (formatNode) {\r
-                               cell.appendChild(formatNode);\r
-                       } else {\r
-                               if (!tinymce.isIE)\r
-                                       cell.innerHTML = '<br data-mce-bogus="1" />';\r
-                       }\r
-\r
-                       return cell;\r
-               };\r
-\r
-               function cleanup() {\r
-                       var rng = dom.createRng();\r
-\r
-                       // Empty rows\r
-                       each(dom.select('tr', table), function(tr) {\r
-                               if (tr.cells.length == 0)\r
-                                       dom.remove(tr);\r
-                       });\r
-\r
-                       // Empty table\r
-                       if (dom.select('tr', table).length == 0) {\r
-                               rng.setStartAfter(table);\r
-                               rng.setEndAfter(table);\r
-                               selection.setRng(rng);\r
-                               dom.remove(table);\r
-                               return;\r
-                       }\r
-\r
-                       // Empty header/body/footer\r
-                       each(dom.select('thead,tbody,tfoot', table), function(part) {\r
-                               if (part.rows.length == 0)\r
-                                       dom.remove(part);\r
-                       });\r
-\r
-                       // Restore selection to start position if it still exists\r
-                       buildGrid();\r
-\r
-                       // Restore the selection to the closest table position\r
-                       row = grid[Math.min(grid.length - 1, startPos.y)];\r
-                       if (row) {\r
-                               selection.select(row[Math.min(row.length - 1, startPos.x)].elm, true);\r
-                               selection.collapse(true);\r
-                       }\r
-               };\r
-\r
-               function fillLeftDown(x, y, rows, cols) {\r
-                       var tr, x2, r, c, cell;\r
-\r
-                       tr = grid[y][x].elm.parentNode;\r
-                       for (r = 1; r <= rows; r++) {\r
-                               tr = dom.getNext(tr, 'tr');\r
-\r
-                               if (tr) {\r
-                                       // Loop left to find real cell\r
-                                       for (x2 = x; x2 >= 0; x2--) {\r
-                                               cell = grid[y + r][x2].elm;\r
-\r
-                                               if (cell.parentNode == tr) {\r
-                                                       // Append clones after\r
-                                                       for (c = 1; c <= cols; c++)\r
-                                                               dom.insertAfter(cloneCell(cell), cell);\r
-\r
-                                                       break;\r
-                                               }\r
-                                       }\r
-\r
-                                       if (x2 == -1) {\r
-                                               // Insert nodes before first cell\r
-                                               for (c = 1; c <= cols; c++)\r
-                                                       tr.insertBefore(cloneCell(tr.cells[0]), tr.cells[0]);\r
-                                       }\r
-                               }\r
-                       }\r
-               };\r
-\r
-               function split() {\r
-                       each(grid, function(row, y) {\r
-                               each(row, function(cell, x) {\r
-                                       var colSpan, rowSpan, newCell, i;\r
-\r
-                                       if (isCellSelected(cell)) {\r
-                                               cell = cell.elm;\r
-                                               colSpan = getSpanVal(cell, 'colspan');\r
-                                               rowSpan = getSpanVal(cell, 'rowspan');\r
-\r
-                                               if (colSpan > 1 || rowSpan > 1) {\r
-                                                       setSpanVal(cell, 'rowSpan', 1);\r
-                                                       setSpanVal(cell, 'colSpan', 1);\r
-\r
-                                                       // Insert cells right\r
-                                                       for (i = 0; i < colSpan - 1; i++)\r
-                                                               dom.insertAfter(cloneCell(cell), cell);\r
-\r
-                                                       fillLeftDown(x, y, rowSpan - 1, colSpan);\r
-                                               }\r
-                                       }\r
-                               });\r
-                       });\r
-               };\r
-\r
-               function merge(cell, cols, rows) {\r
-                       var startX, startY, endX, endY, x, y, startCell, endCell, cell, children, count;\r
-\r
-                       // Use specified cell and cols/rows\r
-                       if (cell) {\r
-                               pos = getPos(cell);\r
-                               startX = pos.x;\r
-                               startY = pos.y;\r
-                               endX = startX + (cols - 1);\r
-                               endY = startY + (rows - 1);\r
-                       } else {\r
-                               // Use selection\r
-                               startX = startPos.x;\r
-                               startY = startPos.y;\r
-                               endX = endPos.x;\r
-                               endY = endPos.y;\r
-                       }\r
-\r
-                       // Find start/end cells\r
-                       startCell = getCell(startX, startY);\r
-                       endCell = getCell(endX, endY);\r
-\r
-                       // Check if the cells exists and if they are of the same part for example tbody = tbody\r
-                       if (startCell && endCell && startCell.part == endCell.part) {\r
-                               // Split and rebuild grid\r
-                               split();\r
-                               buildGrid();\r
-\r
-                               // Set row/col span to start cell\r
-                               startCell = getCell(startX, startY).elm;\r
-                               setSpanVal(startCell, 'colSpan', (endX - startX) + 1);\r
-                               setSpanVal(startCell, 'rowSpan', (endY - startY) + 1);\r
-\r
-                               // Remove other cells and add it's contents to the start cell\r
-                               for (y = startY; y <= endY; y++) {\r
-                                       for (x = startX; x <= endX; x++) {\r
-                                               if (!grid[y] || !grid[y][x])\r
-                                                       continue;\r
-\r
-                                               cell = grid[y][x].elm;\r
-\r
-                                               if (cell != startCell) {\r
-                                                       // Move children to startCell\r
-                                                       children = tinymce.grep(cell.childNodes);\r
-                                                       each(children, function(node) {\r
-                                                               startCell.appendChild(node);\r
-                                                       });\r
-\r
-                                                       // Remove bogus nodes if there is children in the target cell\r
-                                                       if (children.length) {\r
-                                                               children = tinymce.grep(startCell.childNodes);\r
-                                                               count = 0;\r
-                                                               each(children, function(node) {\r
-                                                                       if (node.nodeName == 'BR' && dom.getAttrib(node, 'data-mce-bogus') && count++ < children.length - 1)\r
-                                                                               startCell.removeChild(node);\r
-                                                               });\r
-                                                       }\r
-                                                       \r
-                                                       // Remove cell\r
-                                                       dom.remove(cell);\r
-                                               }\r
-                                       }\r
-                               }\r
-\r
-                               // Remove empty rows etc and restore caret location\r
-                               cleanup();\r
-                       }\r
-               };\r
-\r
-               function insertRow(before) {\r
-                       var posY, cell, lastCell, x, rowElm, newRow, newCell, otherCell, rowSpan;\r
-\r
-                       // Find first/last row\r
-                       each(grid, function(row, y) {\r
-                               each(row, function(cell, x) {\r
-                                       if (isCellSelected(cell)) {\r
-                                               cell = cell.elm;\r
-                                               rowElm = cell.parentNode;\r
-                                               newRow = cloneNode(rowElm, false);\r
-                                               posY = y;\r
-\r
-                                               if (before)\r
-                                                       return false;\r
-                                       }\r
-                               });\r
-\r
-                               if (before)\r
-                                       return !posY;\r
-                       });\r
-\r
-                       for (x = 0; x < grid[0].length; x++) {\r
-                               // Cell not found could be because of an invalid table structure\r
-                               if (!grid[posY][x])\r
-                                       continue;\r
-\r
-                               cell = grid[posY][x].elm;\r
-\r
-                               if (cell != lastCell) {\r
-                                       if (!before) {\r
-                                               rowSpan = getSpanVal(cell, 'rowspan');\r
-                                               if (rowSpan > 1) {\r
-                                                       setSpanVal(cell, 'rowSpan', rowSpan + 1);\r
-                                                       continue;\r
-                                               }\r
-                                       } else {\r
-                                               // Check if cell above can be expanded\r
-                                               if (posY > 0 && grid[posY - 1][x]) {\r
-                                                       otherCell = grid[posY - 1][x].elm;\r
-                                                       rowSpan = getSpanVal(otherCell, 'rowSpan');\r
-                                                       if (rowSpan > 1) {\r
-                                                               setSpanVal(otherCell, 'rowSpan', rowSpan + 1);\r
-                                                               continue;\r
-                                                       }\r
-                                               }\r
-                                       }\r
-\r
-                                       // Insert new cell into new row\r
-                                       newCell = cloneCell(cell);\r
-                                       setSpanVal(newCell, 'colSpan', cell.colSpan);\r
-\r
-                                       newRow.appendChild(newCell);\r
-\r
-                                       lastCell = cell;\r
-                               }\r
-                       }\r
-\r
-                       if (newRow.hasChildNodes()) {\r
-                               if (!before)\r
-                                       dom.insertAfter(newRow, rowElm);\r
-                               else\r
-                                       rowElm.parentNode.insertBefore(newRow, rowElm);\r
-                       }\r
-               };\r
-\r
-               function insertCol(before) {\r
-                       var posX, lastCell;\r
-\r
-                       // Find first/last column\r
-                       each(grid, function(row, y) {\r
-                               each(row, function(cell, x) {\r
-                                       if (isCellSelected(cell)) {\r
-                                               posX = x;\r
-\r
-                                               if (before)\r
-                                                       return false;\r
-                                       }\r
-                               });\r
-\r
-                               if (before)\r
-                                       return !posX;\r
-                       });\r
-\r
-                       each(grid, function(row, y) {\r
-                               var cell, rowSpan, colSpan;\r
-\r
-                               if (!row[posX])\r
-                                       return;\r
-\r
-                               cell = row[posX].elm;\r
-                               if (cell != lastCell) {\r
-                                       colSpan = getSpanVal(cell, 'colspan');\r
-                                       rowSpan = getSpanVal(cell, 'rowspan');\r
-\r
-                                       if (colSpan == 1) {\r
-                                               if (!before) {\r
-                                                       dom.insertAfter(cloneCell(cell), cell);\r
-                                                       fillLeftDown(posX, y, rowSpan - 1, colSpan);\r
-                                               } else {\r
-                                                       cell.parentNode.insertBefore(cloneCell(cell), cell);\r
-                                                       fillLeftDown(posX, y, rowSpan - 1, colSpan);\r
-                                               }\r
-                                       } else\r
-                                               setSpanVal(cell, 'colSpan', cell.colSpan + 1);\r
-\r
-                                       lastCell = cell;\r
-                               }\r
-                       });\r
-               };\r
-\r
-               function deleteCols() {\r
-                       var cols = [];\r
-\r
-                       // Get selected column indexes\r
-                       each(grid, function(row, y) {\r
-                               each(row, function(cell, x) {\r
-                                       if (isCellSelected(cell) && tinymce.inArray(cols, x) === -1) {\r
-                                               each(grid, function(row) {\r
-                                                       var cell = row[x].elm, colSpan;\r
-\r
-                                                       colSpan = getSpanVal(cell, 'colSpan');\r
-\r
-                                                       if (colSpan > 1)\r
-                                                               setSpanVal(cell, 'colSpan', colSpan - 1);\r
-                                                       else\r
-                                                               dom.remove(cell);\r
-                                               });\r
-\r
-                                               cols.push(x);\r
-                                       }\r
-                               });\r
-                       });\r
-\r
-                       cleanup();\r
-               };\r
-\r
-               function deleteRows() {\r
-                       var rows;\r
-\r
-                       function deleteRow(tr) {\r
-                               var nextTr, pos, lastCell;\r
-\r
-                               nextTr = dom.getNext(tr, 'tr');\r
-\r
-                               // Move down row spanned cells\r
-                               each(tr.cells, function(cell) {\r
-                                       var rowSpan = getSpanVal(cell, 'rowSpan');\r
-\r
-                                       if (rowSpan > 1) {\r
-                                               setSpanVal(cell, 'rowSpan', rowSpan - 1);\r
-                                               pos = getPos(cell);\r
-                                               fillLeftDown(pos.x, pos.y, 1, 1);\r
-                                       }\r
-                               });\r
-\r
-                               // Delete cells\r
-                               pos = getPos(tr.cells[0]);\r
-                               each(grid[pos.y], function(cell) {\r
-                                       var rowSpan;\r
-\r
-                                       cell = cell.elm;\r
-\r
-                                       if (cell != lastCell) {\r
-                                               rowSpan = getSpanVal(cell, 'rowSpan');\r
-\r
-                                               if (rowSpan <= 1)\r
-                                                       dom.remove(cell);\r
-                                               else\r
-                                                       setSpanVal(cell, 'rowSpan', rowSpan - 1);\r
-\r
-                                               lastCell = cell;\r
-                                       }\r
-                               });\r
-                       };\r
-\r
-                       // Get selected rows and move selection out of scope\r
-                       rows = getSelectedRows();\r
-\r
-                       // Delete all selected rows\r
-                       each(rows.reverse(), function(tr) {\r
-                               deleteRow(tr);\r
-                       });\r
-\r
-                       cleanup();\r
-               };\r
-\r
-               function cutRows() {\r
-                       var rows = getSelectedRows();\r
-\r
-                       dom.remove(rows);\r
-                       cleanup();\r
-\r
-                       return rows;\r
-               };\r
-\r
-               function copyRows() {\r
-                       var rows = getSelectedRows();\r
-\r
-                       each(rows, function(row, i) {\r
-                               rows[i] = cloneNode(row, true);\r
-                       });\r
-\r
-                       return rows;\r
-               };\r
-\r
-               function pasteRows(rows, before) {\r
-                       var selectedRows = getSelectedRows(),\r
-                               targetRow = selectedRows[before ? 0 : selectedRows.length - 1],\r
-                               targetCellCount = targetRow.cells.length;\r
-\r
-                       // Calc target cell count\r
-                       each(grid, function(row) {\r
-                               var match;\r
-\r
-                               targetCellCount = 0;\r
-                               each(row, function(cell, x) {\r
-                                       if (cell.real)\r
-                                               targetCellCount += cell.colspan;\r
-\r
-                                       if (cell.elm.parentNode == targetRow)\r
-                                               match = 1;\r
-                               });\r
-\r
-                               if (match)\r
-                                       return false;\r
-                       });\r
-\r
-                       if (!before)\r
-                               rows.reverse();\r
-\r
-                       each(rows, function(row) {\r
-                               var cellCount = row.cells.length, cell;\r
-\r
-                               // Remove col/rowspans\r
-                               for (i = 0; i < cellCount; i++) {\r
-                                       cell = row.cells[i];\r
-                                       setSpanVal(cell, 'colSpan', 1);\r
-                                       setSpanVal(cell, 'rowSpan', 1);\r
-                               }\r
-\r
-                               // Needs more cells\r
-                               for (i = cellCount; i < targetCellCount; i++)\r
-                                       row.appendChild(cloneCell(row.cells[cellCount - 1]));\r
-\r
-                               // Needs less cells\r
-                               for (i = targetCellCount; i < cellCount; i++)\r
-                                       dom.remove(row.cells[i]);\r
-\r
-                               // Add before/after\r
-                               if (before)\r
-                                       targetRow.parentNode.insertBefore(row, targetRow);\r
-                               else\r
-                                       dom.insertAfter(row, targetRow);\r
-                       });\r
-               };\r
-\r
-               function getPos(target) {\r
-                       var pos;\r
-\r
-                       each(grid, function(row, y) {\r
-                               each(row, function(cell, x) {\r
-                                       if (cell.elm == target) {\r
-                                               pos = {x : x, y : y};\r
-                                               return false;\r
-                                       }\r
-                               });\r
-\r
-                               return !pos;\r
-                       });\r
-\r
-                       return pos;\r
-               };\r
-\r
-               function setStartCell(cell) {\r
-                       startPos = getPos(cell);\r
-               };\r
-\r
-               function findEndPos() {\r
-                       var pos, maxX, maxY;\r
-\r
-                       maxX = maxY = 0;\r
-\r
-                       each(grid, function(row, y) {\r
-                               each(row, function(cell, x) {\r
-                                       var colSpan, rowSpan;\r
-\r
-                                       if (isCellSelected(cell)) {\r
-                                               cell = grid[y][x];\r
-\r
-                                               if (x > maxX)\r
-                                                       maxX = x;\r
-\r
-                                               if (y > maxY)\r
-                                                       maxY = y;\r
-\r
-                                               if (cell.real) {\r
-                                                       colSpan = cell.colspan - 1;\r
-                                                       rowSpan = cell.rowspan - 1;\r
-\r
-                                                       if (colSpan) {\r
-                                                               if (x + colSpan > maxX)\r
-                                                                       maxX = x + colSpan;\r
-                                                       }\r
-\r
-                                                       if (rowSpan) {\r
-                                                               if (y + rowSpan > maxY)\r
-                                                                       maxY = y + rowSpan;\r
-                                                       }\r
-                                               }\r
-                                       }\r
-                               });\r
-                       });\r
-\r
-                       return {x : maxX, y : maxY};\r
-               };\r
-\r
-               function setEndCell(cell) {\r
-                       var startX, startY, endX, endY, maxX, maxY, colSpan, rowSpan;\r
-\r
-                       endPos = getPos(cell);\r
-\r
-                       if (startPos && endPos) {\r
-                               // Get start/end positions\r
-                               startX = Math.min(startPos.x, endPos.x);\r
-                               startY = Math.min(startPos.y, endPos.y);\r
-                               endX = Math.max(startPos.x, endPos.x);\r
-                               endY = Math.max(startPos.y, endPos.y);\r
-\r
-                               // Expand end positon to include spans\r
-                               maxX = endX;\r
-                               maxY = endY;\r
-\r
-                               // Expand startX\r
-                               for (y = startY; y <= maxY; y++) {\r
-                                       cell = grid[y][startX];\r
-\r
-                                       if (!cell.real) {\r
-                                               if (startX - (cell.colspan - 1) < startX)\r
-                                                       startX -= cell.colspan - 1;\r
-                                       }\r
-                               }\r
-\r
-                               // Expand startY\r
-                               for (x = startX; x <= maxX; x++) {\r
-                                       cell = grid[startY][x];\r
-\r
-                                       if (!cell.real) {\r
-                                               if (startY - (cell.rowspan - 1) < startY)\r
-                                                       startY -= cell.rowspan - 1;\r
-                                       }\r
-                               }\r
-\r
-                               // Find max X, Y\r
-                               for (y = startY; y <= endY; y++) {\r
-                                       for (x = startX; x <= endX; x++) {\r
-                                               cell = grid[y][x];\r
-\r
-                                               if (cell.real) {\r
-                                                       colSpan = cell.colspan - 1;\r
-                                                       rowSpan = cell.rowspan - 1;\r
-\r
-                                                       if (colSpan) {\r
-                                                               if (x + colSpan > maxX)\r
-                                                                       maxX = x + colSpan;\r
-                                                       }\r
-\r
-                                                       if (rowSpan) {\r
-                                                               if (y + rowSpan > maxY)\r
-                                                                       maxY = y + rowSpan;\r
-                                                       }\r
-                                               }\r
-                                       }\r
-                               }\r
-\r
-                               // Remove current selection\r
-                               dom.removeClass(dom.select('td.mceSelected,th.mceSelected'), 'mceSelected');\r
-\r
-                               // Add new selection\r
-                               for (y = startY; y <= maxY; y++) {\r
-                                       for (x = startX; x <= maxX; x++) {\r
-                                               if (grid[y][x])\r
-                                                       dom.addClass(grid[y][x].elm, 'mceSelected');\r
-                                       }\r
-                               }\r
-                       }\r
-               };\r
-\r
-               // Expose to public\r
-               tinymce.extend(this, {\r
-                       deleteTable : deleteTable,\r
-                       split : split,\r
-                       merge : merge,\r
-                       insertRow : insertRow,\r
-                       insertCol : insertCol,\r
-                       deleteCols : deleteCols,\r
-                       deleteRows : deleteRows,\r
-                       cutRows : cutRows,\r
-                       copyRows : copyRows,\r
-                       pasteRows : pasteRows,\r
-                       getPos : getPos,\r
-                       setStartCell : setStartCell,\r
-                       setEndCell : setEndCell\r
-               });\r
-       };\r
-\r
-       tinymce.create('tinymce.plugins.TablePlugin', {\r
-               init : function(ed, url) {\r
-                       var winMan, clipboardRows;\r
-\r
-                       function createTableGrid(node) {\r
-                               var selection = ed.selection, tblElm = ed.dom.getParent(node || selection.getNode(), 'table');\r
-\r
-                               if (tblElm)\r
-                                       return new TableGrid(tblElm, ed.dom, selection);\r
-                       };\r
-\r
-                       function cleanup() {\r
-                               // Restore selection possibilities\r
-                               ed.getBody().style.webkitUserSelect = '';\r
-                               ed.dom.removeClass(ed.dom.select('td.mceSelected,th.mceSelected'), 'mceSelected');\r
-                       };\r
-\r
-                       // Register buttons\r
-                       each([\r
-                               ['table', 'table.desc', 'mceInsertTable', true],\r
-                               ['delete_table', 'table.del', 'mceTableDelete'],\r
-                               ['delete_col', 'table.delete_col_desc', 'mceTableDeleteCol'],\r
-                               ['delete_row', 'table.delete_row_desc', 'mceTableDeleteRow'],\r
-                               ['col_after', 'table.col_after_desc', 'mceTableInsertColAfter'],\r
-                               ['col_before', 'table.col_before_desc', 'mceTableInsertColBefore'],\r
-                               ['row_after', 'table.row_after_desc', 'mceTableInsertRowAfter'],\r
-                               ['row_before', 'table.row_before_desc', 'mceTableInsertRowBefore'],\r
-                               ['row_props', 'table.row_desc', 'mceTableRowProps', true],\r
-                               ['cell_props', 'table.cell_desc', 'mceTableCellProps', true],\r
-                               ['split_cells', 'table.split_cells_desc', 'mceTableSplitCells', true],\r
-                               ['merge_cells', 'table.merge_cells_desc', 'mceTableMergeCells', true]\r
-                       ], function(c) {\r
-                               ed.addButton(c[0], {title : c[1], cmd : c[2], ui : c[3]});\r
-                       });\r
-\r
-                       // Select whole table is a table border is clicked\r
-                       if (!tinymce.isIE) {\r
-                               ed.onClick.add(function(ed, e) {\r
-                                       e = e.target;\r
-\r
-                                       if (e.nodeName === 'TABLE') {\r
-                                               ed.selection.select(e);\r
-                                               ed.nodeChanged();\r
-                                       }\r
-                               });\r
-                       }\r
-\r
-                       ed.onPreProcess.add(function(ed, args) {\r
-                               var nodes, i, node, dom = ed.dom, value;\r
-\r
-                               nodes = dom.select('table', args.node);\r
-                               i = nodes.length;\r
-                               while (i--) {\r
-                                       node = nodes[i];\r
-                                       dom.setAttrib(node, 'data-mce-style', '');\r
-\r
-                                       if ((value = dom.getAttrib(node, 'width'))) {\r
-                                               dom.setStyle(node, 'width', value);\r
-                                               dom.setAttrib(node, 'width', '');\r
-                                       }\r
-\r
-                                       if ((value = dom.getAttrib(node, 'height'))) {\r
-                                               dom.setStyle(node, 'height', value);\r
-                                               dom.setAttrib(node, 'height', '');\r
-                                       }\r
-                               }\r
-                       });\r
-\r
-                       // Handle node change updates\r
-                       ed.onNodeChange.add(function(ed, cm, n) {\r
-                               var p;\r
-\r
-                               n = ed.selection.getStart();\r
-                               p = ed.dom.getParent(n, 'td,th,caption');\r
-                               cm.setActive('table', n.nodeName === 'TABLE' || !!p);\r
-\r
-                               // Disable table tools if we are in caption\r
-                               if (p && p.nodeName === 'CAPTION')\r
-                                       p = 0;\r
-\r
-                               cm.setDisabled('delete_table', !p);\r
-                               cm.setDisabled('delete_col', !p);\r
-                               cm.setDisabled('delete_table', !p);\r
-                               cm.setDisabled('delete_row', !p);\r
-                               cm.setDisabled('col_after', !p);\r
-                               cm.setDisabled('col_before', !p);\r
-                               cm.setDisabled('row_after', !p);\r
-                               cm.setDisabled('row_before', !p);\r
-                               cm.setDisabled('row_props', !p);\r
-                               cm.setDisabled('cell_props', !p);\r
-                               cm.setDisabled('split_cells', !p);\r
-                               cm.setDisabled('merge_cells', !p);\r
-                       });\r
-\r
-                       ed.onInit.add(function(ed) {\r
-                               var startTable, startCell, dom = ed.dom, tableGrid;\r
-\r
-                               winMan = ed.windowManager;\r
-\r
-                               // Add cell selection logic\r
-                               ed.onMouseDown.add(function(ed, e) {\r
-                                       if (e.button != 2) {\r
-                                               cleanup();\r
-\r
-                                               startCell = dom.getParent(e.target, 'td,th');\r
-                                               startTable = dom.getParent(startCell, 'table');\r
-                                       }\r
-                               });\r
-\r
-                               dom.bind(ed.getDoc(), 'mouseover', function(e) {\r
-                                       var sel, table, target = e.target;\r
-\r
-                                       if (startCell && (tableGrid || target != startCell) && (target.nodeName == 'TD' || target.nodeName == 'TH')) {\r
-                                               table = dom.getParent(target, 'table');\r
-                                               if (table == startTable) {\r
-                                                       if (!tableGrid) {\r
-                                                               tableGrid = createTableGrid(table);\r
-                                                               tableGrid.setStartCell(startCell);\r
-\r
-                                                               ed.getBody().style.webkitUserSelect = 'none';\r
-                                                       }\r
-\r
-                                                       tableGrid.setEndCell(target);\r
-                                               }\r
-\r
-                                               // Remove current selection\r
-                                               sel = ed.selection.getSel();\r
-\r
-                                               try {\r
-                                                       if (sel.removeAllRanges)\r
-                                                               sel.removeAllRanges();\r
-                                                       else\r
-                                                               sel.empty();\r
-                                               } catch (ex) {\r
-                                                       // IE9 might throw errors here\r
-                                               }\r
-\r
-                                               e.preventDefault();\r
-                                       }\r
-                               });\r
-\r
-                               ed.onMouseUp.add(function(ed, e) {\r
-                                       var rng, sel = ed.selection, selectedCells, nativeSel = sel.getSel(), walker, node, lastNode, endNode;\r
-\r
-                                       // Move selection to startCell\r
-                                       if (startCell) {\r
-                                               if (tableGrid)\r
-                                                       ed.getBody().style.webkitUserSelect = '';\r
-\r
-                                               function setPoint(node, start) {\r
-                                                       var walker = new tinymce.dom.TreeWalker(node, node);\r
-\r
-                                                       do {\r
-                                                               // Text node\r
-                                                               if (node.nodeType == 3 && tinymce.trim(node.nodeValue).length != 0) {\r
-                                                                       if (start)\r
-                                                                               rng.setStart(node, 0);\r
-                                                                       else\r
-                                                                               rng.setEnd(node, node.nodeValue.length);\r
-\r
-                                                                       return;\r
-                                                               }\r
-\r
-                                                               // BR element\r
-                                                               if (node.nodeName == 'BR') {\r
-                                                                       if (start)\r
-                                                                               rng.setStartBefore(node);\r
-                                                                       else\r
-                                                                               rng.setEndBefore(node);\r
-\r
-                                                                       return;\r
-                                                               }\r
-                                                       } while (node = (start ? walker.next() : walker.prev()));\r
-                                               };\r
-\r
-                                               // Try to expand text selection as much as we can only Gecko supports cell selection\r
-                                               selectedCells = dom.select('td.mceSelected,th.mceSelected');\r
-                                               if (selectedCells.length > 0) {\r
-                                                       rng = dom.createRng();\r
-                                                       node = selectedCells[0];\r
-                                                       endNode = selectedCells[selectedCells.length - 1];\r
-\r
-                                                       setPoint(node, 1);\r
-                                                       walker = new tinymce.dom.TreeWalker(node, dom.getParent(selectedCells[0], 'table'));\r
-\r
-                                                       do {\r
-                                                               if (node.nodeName == 'TD' || node.nodeName == 'TH') {\r
-                                                                       if (!dom.hasClass(node, 'mceSelected'))\r
-                                                                               break;\r
-\r
-                                                                       lastNode = node;\r
-                                                               }\r
-                                                       } while (node = walker.next());\r
-\r
-                                                       setPoint(lastNode);\r
-\r
-                                                       sel.setRng(rng);\r
-                                               }\r
-\r
-                                               ed.nodeChanged();\r
-                                               startCell = tableGrid = startTable = null;\r
-                                       }\r
-                               });\r
-\r
-                               ed.onKeyUp.add(function(ed, e) {\r
-                                       cleanup();\r
-                               });\r
-\r
-                               // Add context menu\r
-                               if (ed && ed.plugins.contextmenu) {\r
-                                       ed.plugins.contextmenu.onContextMenu.add(function(th, m, e) {\r
-                                               var sm, se = ed.selection, el = se.getNode() || ed.getBody();\r
-\r
-                                               if (ed.dom.getParent(e, 'td') || ed.dom.getParent(e, 'th') || ed.dom.select('td.mceSelected,th.mceSelected').length) {\r
-                                                       m.removeAll();\r
-\r
-                                                       if (el.nodeName == 'A' && !ed.dom.getAttrib(el, 'name')) {\r
-                                                               m.add({title : 'advanced.link_desc', icon : 'link', cmd : ed.plugins.advlink ? 'mceAdvLink' : 'mceLink', ui : true});\r
-                                                               m.add({title : 'advanced.unlink_desc', icon : 'unlink', cmd : 'UnLink'});\r
-                                                               m.addSeparator();\r
-                                                       }\r
-\r
-                                                       if (el.nodeName == 'IMG' && el.className.indexOf('mceItem') == -1) {\r
-                                                               m.add({title : 'advanced.image_desc', icon : 'image', cmd : ed.plugins.advimage ? 'mceAdvImage' : 'mceImage', ui : true});\r
-                                                               m.addSeparator();\r
-                                                       }\r
-\r
-                                                       m.add({title : 'table.desc', icon : 'table', cmd : 'mceInsertTable', value : {action : 'insert'}});\r
-                                                       m.add({title : 'table.props_desc', icon : 'table_props', cmd : 'mceInsertTable'});\r
-                                                       m.add({title : 'table.del', icon : 'delete_table', cmd : 'mceTableDelete'});\r
-                                                       m.addSeparator();\r
-\r
-                                                       // Cell menu\r
-                                                       sm = m.addMenu({title : 'table.cell'});\r
-                                                       sm.add({title : 'table.cell_desc', icon : 'cell_props', cmd : 'mceTableCellProps'});\r
-                                                       sm.add({title : 'table.split_cells_desc', icon : 'split_cells', cmd : 'mceTableSplitCells'});\r
-                                                       sm.add({title : 'table.merge_cells_desc', icon : 'merge_cells', cmd : 'mceTableMergeCells'});\r
-\r
-                                                       // Row menu\r
-                                                       sm = m.addMenu({title : 'table.row'});\r
-                                                       sm.add({title : 'table.row_desc', icon : 'row_props', cmd : 'mceTableRowProps'});\r
-                                                       sm.add({title : 'table.row_before_desc', icon : 'row_before', cmd : 'mceTableInsertRowBefore'});\r
-                                                       sm.add({title : 'table.row_after_desc', icon : 'row_after', cmd : 'mceTableInsertRowAfter'});\r
-                                                       sm.add({title : 'table.delete_row_desc', icon : 'delete_row', cmd : 'mceTableDeleteRow'});\r
-                                                       sm.addSeparator();\r
-                                                       sm.add({title : 'table.cut_row_desc', icon : 'cut', cmd : 'mceTableCutRow'});\r
-                                                       sm.add({title : 'table.copy_row_desc', icon : 'copy', cmd : 'mceTableCopyRow'});\r
-                                                       sm.add({title : 'table.paste_row_before_desc', icon : 'paste', cmd : 'mceTablePasteRowBefore'}).setDisabled(!clipboardRows);\r
-                                                       sm.add({title : 'table.paste_row_after_desc', icon : 'paste', cmd : 'mceTablePasteRowAfter'}).setDisabled(!clipboardRows);\r
-\r
-                                                       // Column menu\r
-                                                       sm = m.addMenu({title : 'table.col'});\r
-                                                       sm.add({title : 'table.col_before_desc', icon : 'col_before', cmd : 'mceTableInsertColBefore'});\r
-                                                       sm.add({title : 'table.col_after_desc', icon : 'col_after', cmd : 'mceTableInsertColAfter'});\r
-                                                       sm.add({title : 'table.delete_col_desc', icon : 'delete_col', cmd : 'mceTableDeleteCol'});\r
-                                               } else\r
-                                                       m.add({title : 'table.desc', icon : 'table', cmd : 'mceInsertTable'});\r
-                                       });\r
-                               }\r
-\r
-                               // Fixes an issue on Gecko where it's impossible to place the caret behind a table\r
-                               // This fix will force a paragraph element after the table but only when the forced_root_block setting is enabled\r
-                               if (!tinymce.isIE) {\r
-                                       function fixTableCaretPos() {\r
-                                               var last;\r
-\r
-                                               // Skip empty text nodes form the end\r
-                                               for (last = ed.getBody().lastChild; last && last.nodeType == 3 && !last.nodeValue.length; last = last.previousSibling) ;\r
-\r
-                                               if (last && last.nodeName == 'TABLE')\r
-                                                       ed.dom.add(ed.getBody(), 'p', null, '<br mce_bogus="1" />');\r
-                                       };\r
-\r
-                                       // Fixes an bug where it's impossible to place the caret before a table in Gecko\r
-                                       // this fix solves it by detecting when the caret is at the beginning of such a table\r
-                                       // and then manually moves the caret infront of the table\r
-                                       if (tinymce.isGecko) {\r
-                                               ed.onKeyDown.add(function(ed, e) {\r
-                                                       var rng, table, dom = ed.dom;\r
-\r
-                                                       // On gecko it's not possible to place the caret before a table\r
-                                                       if (e.keyCode == 37 || e.keyCode == 38) {\r
-                                                               rng = ed.selection.getRng();\r
-                                                               table = dom.getParent(rng.startContainer, 'table');\r
-\r
-                                                               if (table && ed.getBody().firstChild == table) {\r
-                                                                       if (isAtStart(rng, table)) {\r
-                                                                               rng = dom.createRng();\r
-\r
-                                                                               rng.setStartBefore(table);\r
-                                                                               rng.setEndBefore(table);\r
-\r
-                                                                               ed.selection.setRng(rng);\r
-\r
-                                                                               e.preventDefault();\r
-                                                                       }\r
-                                                               }\r
-                                                       }\r
-                                               });\r
-                                       }\r
-\r
-                                       ed.onKeyUp.add(fixTableCaretPos);\r
-                                       ed.onSetContent.add(fixTableCaretPos);\r
-                                       ed.onVisualAid.add(fixTableCaretPos);\r
-\r
-                                       ed.onPreProcess.add(function(ed, o) {\r
-                                               var last = o.node.lastChild;\r
-\r
-                                               if (last && last.childNodes.length == 1 && last.firstChild.nodeName == 'BR')\r
-                                                       ed.dom.remove(last);\r
-                                       });\r
-\r
-                                       fixTableCaretPos();\r
-                               }\r
-                       });\r
-\r
-                       // Register action commands\r
-                       each({\r
-                               mceTableSplitCells : function(grid) {\r
-                                       grid.split();\r
-                               },\r
-\r
-                               mceTableMergeCells : function(grid) {\r
-                                       var rowSpan, colSpan, cell;\r
-\r
-                                       cell = ed.dom.getParent(ed.selection.getNode(), 'th,td');\r
-                                       if (cell) {\r
-                                               rowSpan = cell.rowSpan;\r
-                                               colSpan = cell.colSpan;\r
-                                       }\r
-\r
-                                       if (!ed.dom.select('td.mceSelected,th.mceSelected').length) {\r
-                                               winMan.open({\r
-                                                       url : url + '/merge_cells.htm',\r
-                                                       width : 240 + parseInt(ed.getLang('table.merge_cells_delta_width', 0)),\r
-                                                       height : 110 + parseInt(ed.getLang('table.merge_cells_delta_height', 0)),\r
-                                                       inline : 1\r
-                                               }, {\r
-                                                       rows : rowSpan,\r
-                                                       cols : colSpan,\r
-                                                       onaction : function(data) {\r
-                                                               grid.merge(cell, data.cols, data.rows);\r
-                                                       },\r
-                                                       plugin_url : url\r
-                                               });\r
-                                       } else\r
-                                               grid.merge();\r
-                               },\r
-\r
-                               mceTableInsertRowBefore : function(grid) {\r
-                                       grid.insertRow(true);\r
-                               },\r
-\r
-                               mceTableInsertRowAfter : function(grid) {\r
-                                       grid.insertRow();\r
-                               },\r
-\r
-                               mceTableInsertColBefore : function(grid) {\r
-                                       grid.insertCol(true);\r
-                               },\r
-\r
-                               mceTableInsertColAfter : function(grid) {\r
-                                       grid.insertCol();\r
-                               },\r
-\r
-                               mceTableDeleteCol : function(grid) {\r
-                                       grid.deleteCols();\r
-                               },\r
-\r
-                               mceTableDeleteRow : function(grid) {\r
-                                       grid.deleteRows();\r
-                               },\r
-\r
-                               mceTableCutRow : function(grid) {\r
-                                       clipboardRows = grid.cutRows();\r
-                               },\r
-\r
-                               mceTableCopyRow : function(grid) {\r
-                                       clipboardRows = grid.copyRows();\r
-                               },\r
-\r
-                               mceTablePasteRowBefore : function(grid) {\r
-                                       grid.pasteRows(clipboardRows, true);\r
-                               },\r
-\r
-                               mceTablePasteRowAfter : function(grid) {\r
-                                       grid.pasteRows(clipboardRows);\r
-                               },\r
-\r
-                               mceTableDelete : function(grid) {\r
-                                       grid.deleteTable();\r
-                               }\r
-                       }, function(func, name) {\r
-                               ed.addCommand(name, function() {\r
-                                       var grid = createTableGrid();\r
-\r
-                                       if (grid) {\r
-                                               func(grid);\r
-                                               ed.execCommand('mceRepaint');\r
-                                               cleanup();\r
-                                       }\r
-                               });\r
-                       });\r
-\r
-                       // Register dialog commands\r
-                       each({\r
-                               mceInsertTable : function(val) {\r
-                                       winMan.open({\r
-                                               url : url + '/table.htm',\r
-                                               width : 400 + parseInt(ed.getLang('table.table_delta_width', 0)),\r
-                                               height : 320 + parseInt(ed.getLang('table.table_delta_height', 0)),\r
-                                               inline : 1\r
-                                       }, {\r
-                                               plugin_url : url,\r
-                                               action : val ? val.action : 0\r
-                                       });\r
-                               },\r
-\r
-                               mceTableRowProps : function() {\r
-                                       winMan.open({\r
-                                               url : url + '/row.htm',\r
-                                               width : 400 + parseInt(ed.getLang('table.rowprops_delta_width', 0)),\r
-                                               height : 295 + parseInt(ed.getLang('table.rowprops_delta_height', 0)),\r
-                                               inline : 1\r
-                                       }, {\r
-                                               plugin_url : url\r
-                                       });\r
-                               },\r
-\r
-                               mceTableCellProps : function() {\r
-                                       winMan.open({\r
-                                               url : url + '/cell.htm',\r
-                                               width : 400 + parseInt(ed.getLang('table.cellprops_delta_width', 0)),\r
-                                               height : 295 + parseInt(ed.getLang('table.cellprops_delta_height', 0)),\r
-                                               inline : 1\r
-                                       }, {\r
-                                               plugin_url : url\r
-                                       });\r
-                               }\r
-                       }, function(func, name) {\r
-                               ed.addCommand(name, function(ui, val) {\r
-                                       func(val);\r
-                               });\r
-                       });\r
-               }\r
-       });\r
-\r
-       // Register plugin\r
-       tinymce.PluginManager.add('table', tinymce.plugins.TablePlugin);\r
-})(tinymce);
\ No newline at end of file
+/**
+ * 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 ? '&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)
+                                       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) {
+                       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 ? '&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
+                                */
+                               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);
index 45e6061fd081a5f18894ff301afc54c69a36ffd0..02ecf22c8aff0ea9d41ebff5b8abb9fa84e715cb 100644 (file)
@@ -63,6 +63,11 @@ function init() {
 function updateAction() {\r
        var el, inst = ed, tdElm, trElm, tableElm, formObj = document.forms[0];\r
 \r
+       if (!AutoValidator.validate(formObj)) {\r
+               tinyMCEPopup.alert(AutoValidator.getErrorMessages(formObj).join('. ') + '.');\r
+               return false;\r
+       }\r
+\r
        tinyMCEPopup.restoreSelection();\r
        el = ed.selection.getStart();\r
        tdElm = ed.dom.getParent(el, "td,th");\r
@@ -123,6 +128,36 @@ function updateAction() {
 \r
                        break;\r
 \r
+               case "col":\r
+                       var curr, col = 0, cell = trElm.firstChild, rows = tableElm.getElementsByTagName("tr");\r
+\r
+                       if (cell.nodeName != "TD" && cell.nodeName != "TH")\r
+                               cell = nextCell(cell);\r
+\r
+                       do {\r
+                               if (cell == tdElm)\r
+                                       break;\r
+                               col += cell.getAttribute("colspan")?cell.getAttribute("colspan"):1;\r
+                       } while ((cell = nextCell(cell)) != null);\r
+\r
+                       for (var i=0; i<rows.length; i++) {\r
+                               cell = rows[i].firstChild;\r
+\r
+                               if (cell.nodeName != "TD" && cell.nodeName != "TH")\r
+                                       cell = nextCell(cell);\r
+\r
+                               curr = 0;\r
+                               do {\r
+                                       if (curr == col) {\r
+                                               cell = updateCell(cell, true);\r
+                                               break;\r
+                                       }\r
+                                       curr += cell.getAttribute("colspan")?cell.getAttribute("colspan"):1;\r
+                               } while ((cell = nextCell(cell)) != null);\r
+                       }\r
+\r
+                       break;\r
+\r
                case "all":\r
                        var rows = tableElm.getElementsByTagName("tr");\r
 \r
index b275e6ea98c08301aabb6600d3a3d95c72b899a1..a13d69592d5af7467eee68259b930ab110975ed8 100644 (file)
@@ -56,6 +56,11 @@ function updateAction() {
        var inst = tinyMCEPopup.editor, dom = inst.dom, trElm, tableElm, formObj = document.forms[0];\r
        var action = getSelectValue(formObj, 'action');\r
 \r
+       if (!AutoValidator.validate(formObj)) {\r
+               tinyMCEPopup.alert(AutoValidator.getErrorMessages(formObj).join('. ') + '.');\r
+               return false;\r
+       }\r
+\r
        tinyMCEPopup.restoreSelection();\r
        trElm = dom.getParent(inst.selection.getStart(), "tr");\r
        tableElm = dom.getParent(inst.selection.getStart(), "table");\r
index 520d857fcee05a41563523e7b2836f7708070ede..1db243b63a69a7c4d442703c08bd673efe85e62b 100644 (file)
@@ -60,7 +60,19 @@ function insertTable() {
        if (action == "update") {\r
                dom.setAttrib(elm, 'cellPadding', cellpadding, true);\r
                dom.setAttrib(elm, 'cellSpacing', cellspacing, true);\r
-               dom.setAttrib(elm, 'border', border);\r
+\r
+               if (!isCssSize(border)) {\r
+                       dom.setAttrib(elm, 'border', border);\r
+               } else {\r
+                       dom.setAttrib(elm, 'border', '');\r
+               }\r
+\r
+               if (border == '') {\r
+                       dom.setStyle(elm, 'border-width', '');\r
+                       dom.setStyle(elm, 'border', '');\r
+                       dom.setAttrib(elm, 'border', '');\r
+               }\r
+\r
                dom.setAttrib(elm, 'align', align);\r
                dom.setAttrib(elm, 'frame', frame);\r
                dom.setAttrib(elm, 'rules', rules);\r
@@ -119,7 +131,7 @@ function insertTable() {
                if (bordercolor != "") {\r
                        elm.style.borderColor = bordercolor;\r
                        elm.style.borderStyle = elm.style.borderStyle == "" ? "solid" : elm.style.borderStyle;\r
-                       elm.style.borderWidth = border == "" ? "1px" : border;\r
+                       elm.style.borderWidth = cssSize(border);\r
                } else\r
                        elm.style.borderColor = '';\r
 \r
@@ -132,7 +144,7 @@ function insertTable() {
                //elm.outerHTML = elm.outerHTML;\r
 \r
                inst.nodeChanged();\r
-               inst.execCommand('mceEndUndoLevel');\r
+               inst.execCommand('mceEndUndoLevel', false, {}, {skip_undo: true});\r
 \r
                // Repaint if dimensions changed\r
                if (formObj.width.value != orgTableWidth || formObj.height.value != orgTableHeight)\r
@@ -146,7 +158,10 @@ function insertTable() {
        html += '<table';\r
 \r
        html += makeAttrib('id', id);\r
-       html += makeAttrib('border', border);\r
+       if (!isCssSize(border)) {\r
+               html += makeAttrib('border', border);\r
+       }\r
+\r
        html += makeAttrib('cellpadding', cellpadding);\r
        html += makeAttrib('cellspacing', cellspacing);\r
        html += makeAttrib('data-mce-new', '1');\r
@@ -227,13 +242,20 @@ function insertTable() {
        } else\r
                inst.execCommand('mceInsertContent', false, html);\r
 \r
-       tinymce.each(dom.select('table[data-mce-new]'), function(node) {\r
-               var td = dom.select('td', node);\r
+       tinymce.each(dom.select('table[data-mce-new]'), function(node) {
+               var tdorth = dom.select('td,th', node);\r
+
+               // Fixes a bug in IE where the caret cannot be placed after the table if the table is at the end of the document\r
+               if (tinymce.isIE && node.nextSibling == null) {\r
+                       if (inst.settings.forced_root_block)\r
+                               dom.insertAfter(dom.create(inst.settings.forced_root_block), node);\r
+                       else\r
+                               dom.insertAfter(dom.create('br', {'data-mce-bogus': '1'}), node);\r
+               }
 \r
                try {\r
-                       // IE9 might fail to do this selection\r
-                       inst.selection.select(td[0], true);\r
-                       inst.selection.collapse();\r
+                       // IE9 might fail to do this selection \r
+                       inst.selection.setCursorLocation(tdorth[0], 0);\r
                } catch (ex) {\r
                        // Ignore\r
                }\r
@@ -242,7 +264,7 @@ function insertTable() {
        });\r
 \r
        inst.addVisual();\r
-       inst.execCommand('mceEndUndoLevel');\r
+       inst.execCommand('mceEndUndoLevel', false, {}, {skip_undo: true});\r
 \r
        tinyMCEPopup.close();\r
 }\r
@@ -285,6 +307,15 @@ function init() {
        var formObj = document.forms[0];\r
        var elm = dom.getParent(inst.selection.getNode(), "table");\r
 \r
+       // Hide advanced fields that isn't available in the schema\r
+       tinymce.each("summary id rules dir style frame".split(" "), function(name) {\r
+               var tr = tinyMCEPopup.dom.getParent(name, "tr") || tinyMCEPopup.dom.getParent("t" + name, "tr");\r
+\r
+               if (tr && !tinyMCEPopup.editor.schema.isValid("table", name)) {\r
+                       tr.style.display = 'none';\r
+               }\r
+       });\r
+\r
        action = tinyMCEPopup.getWindowArg('action');\r
 \r
        if (!action)\r
@@ -384,6 +415,20 @@ function changedSize() {
        formObj.style.value = dom.serializeStyle(st);\r
 }\r
 \r
+function isCssSize(value) {\r
+       return /^[0-9.]+(%|in|cm|mm|em|ex|pt|pc|px)$/.test(value);\r
+}\r
+\r
+function cssSize(value, def) {\r
+       value = tinymce.trim(value || def);\r
+\r
+       if (!isCssSize(value)) {\r
+               return parseInt(value, 10) + 'px';\r
+       }\r
+\r
+       return value;\r
+}\r
+\r
 function changedBackgroundImage() {\r
        var formObj = document.forms[0];\r
        var st = dom.parseStyle(formObj.style.value);\r
@@ -398,8 +443,14 @@ function changedBorder() {
        var st = dom.parseStyle(formObj.style.value);\r
 \r
        // Update border width if the element has a color\r
-       if (formObj.border.value != "" && formObj.bordercolor.value != "")\r
-               st['border-width'] = formObj.border.value + "px";\r
+       if (formObj.border.value != "" && (isCssSize(formObj.border.value) || formObj.bordercolor.value != ""))\r
+               st['border-width'] = cssSize(formObj.border.value);\r
+       else {\r
+               if (!formObj.border.value) {\r
+                       st['border'] = '';\r
+                       st['border-width'] = '';\r
+               }\r
+       }\r
 \r
        formObj.style.value = dom.serializeStyle(st);\r
 }\r
@@ -415,7 +466,7 @@ function changedColor() {
 \r
                // Add border-width if it's missing\r
                if (!st['border-width'])\r
-                       st['border-width'] = formObj.border.value == "" ? "1px" : formObj.border.value + "px";\r
+                       st['border-width'] = cssSize(formObj.border.value, 1);\r
        }\r
 \r
        formObj.style.value = dom.serializeStyle(st);\r
old mode 100755 (executable)
new mode 100644 (file)
index 4870568..bb2d617
@@ -1 +1 @@
-tinyMCE.addI18n('ar.table_dlg',{rules_border:"\u0627\u0644\u062d\u062f\u0648\u062f",rules_box:"\u0635\u0646\u062f\u0648\u0642",rules_vsides:"vsides",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"hsides",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:"\u0623\u0639\u0645\u062f\u0629",frame_rows:"\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:"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:"\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:"\u0627\u0644\u062c\u062f\u0648\u0644 \u0627\u0644\u0642\u062f\u0645",tbody:" \u0627\u0644\u062c\u062f\u0648\u0644 \u062c\u0633\u062f",thead:"\u0627\u0644\u062c\u062f\u0648\u0644 \u0631\u0626\u064a\u0633",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 \u0641\u064a \u0627\u0644\u062c\u062f\u0648\u0644 \u0632\u0648\u062c\u0649 \u0639\u062f\u062f",row_odd:"\u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0635\u0641\u0648\u0641 \u0641\u064a \u0627\u0644\u062c\u062f\u0648\u0644 \u0645\u0641\u0631\u062f",row_row:"\u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0635\u0641 \u0627\u0644\u062d\u0627\u0644\u064a",cell_all:"\u062d\u062f\u064a\u062b \u0643\u0627\u0641\u0629 \u0627\u0644\u062e\u0644\u0627\u064a\u0627 \u0641\u064a \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:"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\u0644\u0627\u0639\u0644\u0649",valign:"\u0627\u0644\u0645\u062d\u0627\u0630\u0627\u0629 \u0627\u0644\u0639\u0645\u0648\u062f\u064a\u0629",cell_type:"\u0646\u0648\u0639 \u0627\u0644\u062e\u0644\u064a\u0629",cell_title:"\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u062c\u062f\u0648\u0644 \u0627\u0644\u062e\u0644\u064a\u0629",row_title:"\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u062c\u062f\u0648\u0644 \u0627\u0644\u0635\u0641",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:"\u0628\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:"\u0637\u0648\u0644",width:"\u0639\u0631\u0636",title:"\u0625\u062f\u0631\u0627\u062c \u062c\u062f\u0648\u0644 / \u062a\u0639\u062f\u064a\u0644",rowtype:"\u0635\u0641 \u0641\u064a \u062c\u0632\u0621 \u0627\u0644\u062c\u062f\u0648\u0644",advanced_props:"\u0627\u0644\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0639\u0627\u0645\u0629",general_props:"General properties",advanced_tab:"\u0645\u062a\u0642\u062f\u0645",general_tab:"\u0639\u0627\u0645"});
\ No newline at end of file
+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
index ba254dc965e5236f476a3f8091659bc09b1fc7f2..5d5deca5b500359d7390c5c85b9b201b999d4094 100644 (file)
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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/be_dlg.js b/program/js/tiny_mce/plugins/table/langs/be_dlg.js
deleted file mode 100644 (file)
index ee49c0d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('be.table_dlg',{rules_border:"\u043c\u044f\u0436\u0430",rules_box:"\u043a\u0430\u043d\u0442\u044d\u0439\u043d\u0435\u0440",rules_vsides:"\u0432\u0435\u0440\u0442\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u044f \u0431\u0430\u043a\u0456",rules_rhs:"\u043f\u0440\u0430\u0432\u044b\u044f \u0433\u0430\u0440\u044b\u0437\u0430\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u044f \u0431\u0430\u043a\u0456",rules_lhs:"\u043b\u0435\u0432\u044b\u044f \u0433\u0430\u0440\u044b\u0437\u0430\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u044f \u0431\u0430\u043a\u0456",rules_hsides:"\u0433\u0430\u0440\u044b\u0437\u0430\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u044f \u0431\u0430\u043a\u0456",rules_below:"\u0437\u043d\u0456\u0437\u0443",rules_above:"\u0437\u0432\u0435\u0440\u0445\u0443",rules_void:"\u043d\u0456\u0448\u0442\u043e",rules:"\u041b\u0456\u043d\u0435\u0439\u043a\u0456",frame_all:"\u0443\u0441\u0451",frame_cols:"\u0441\u043b\u0443\u043f\u043a\u0456",frame_rows:"\u0440\u0430\u0434\u043a\u0456",frame_groups:"\u0433\u0440\u0443\u043f\u044b",frame_none:"\u043d\u0456\u0447\u043e\u0433\u0430",frame:"\u0420\u0430\u043c\u043a\u0430",caption:"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a \u0442\u0430\u0431\u043b\u0456\u0446\u044b",missing_scope:"\u0412\u044b \u0441\u0430\u043f\u0440\u0430\u045e\u0434\u044b \u0436\u0430\u0434\u0430\u0435\u0446\u0435 \u043f\u0440\u0430\u0446\u044f\u0433\u043d\u0443\u0446\u044c \u0431\u0435\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044f \u043c\u0435\u0436 \u0433\u044d\u0442\u0430\u0433\u0430 \u0432\u043e\u0447\u043a\u0430 \u0437\u0430\u0433\u0430\u043b\u043e\u045e\u043a\u0430? \u0411\u0435\u0437 \u0433\u044d\u0442\u0430\u0433\u0430 \u043d\u0435\u043a\u0430\u0442\u043e\u0440\u044b\u043c \u043a\u0430\u0440\u044b\u0441\u0442\u0430\u0447\u0430\u043c \u0437 \u0430\u0431\u043c\u0435\u0436\u0430\u0432\u0430\u043d\u0430\u0439 \u043f\u0440\u0430\u0446\u0430\u0437\u0434\u043e\u043b\u044c\u043d\u0430\u0441\u0446\u044e \u043c\u043e\u0436\u0430 \u0431\u044b\u0446\u044c \u0446\u044f\u0436\u043a\u0430 \u0437\u0440\u0430\u0437\u0443\u043c\u0435\u0446\u044c \u0443\u0442\u0440\u044b\u043c\u0430\u043d\u043d\u0435 \u0430\u0431\u043e \u0434\u0430\u0434\u0437\u0435\u043d\u044b\u044f \u0442\u0430\u0431\u043b\u0456\u0446\u044b.",cell_limit:"\u0412\u044b \u043f\u0435\u0440\u0430\u0432\u044b\u0441\u0456\u043b\u0456 \u043c\u0430\u043a\u0441\u0456\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043b\u044c\u043a\u0430\u0441\u0446\u044c \u0443 {$cells} \u0432\u043e\u0447\u0430\u043a.",row_limit:"\u0412\u044b \u043f\u0435\u0440\u0430\u0432\u044b\u0441\u0456\u043b\u0456 \u043c\u0430\u043a\u0441\u0456\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043b\u044c\u043a\u0430\u0441\u0446\u044c \u0443 {$rows} \u0440\u0430\u0434\u043a\u043e\u045e.",col_limit:"\u0412\u044b \u043f\u0435\u0440\u0430\u0432\u044b\u0441\u0456\u043b\u0456 \u043c\u0430\u043a\u0441\u0456\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043b\u044c\u043a\u0430\u0441\u0446\u044c \u0443 {$cols} \u0441\u043b\u0443\u043f\u043a\u043e\u045e.",colgroup:"\u0413\u0440\u0443\u043f\u0430 \u0441\u043b\u0443\u043f\u043a\u043e\u045e",rowgroup:"\u0413\u0440\u0443\u043f\u0430 \u0440\u0430\u0434\u043a\u043e\u045e",scope:"\u041c\u0435\u0436\u044b",tfoot:"\u041d\u0456\u0436\u043d\u044f\u044f \u0447\u0430\u0441\u0442\u043a\u0430 \u0442\u0430\u0431\u043b\u0456\u0446\u044b",tbody:"\u0410\u0441\u043d\u043e\u045e\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u043a\u0430 \u0442\u0430\u0431\u043b\u0456\u0446\u044b",thead:"\u0412\u0435\u0440\u0445\u043d\u044f\u044f \u0447\u0430\u0441\u0442\u043a\u0430 \u0442\u0430\u0431\u043b\u0456\u0446\u044b",row_all:"\u0410\u0431\u043d\u0430\u0432\u0456\u0446\u044c \u0443\u0441\u0435 \u0440\u0430\u0434\u043a\u0456 \u045e \u0442\u0430\u0431\u043b\u0456\u0446\u044b",row_even:"\u0410\u0431\u043d\u0430\u0432\u0456\u0446\u044c \u0446\u043e\u0442\u043d\u044b\u044f \u0440\u0430\u0434\u043a\u0456 \u045e \u0442\u0430\u0431\u043b\u0456\u0446\u044b",row_odd:"\u0410\u0431\u043d\u0430\u0432\u0456\u0446\u044c \u043d\u044f\u0446\u043e\u0442\u043d\u044b\u044f \u0440\u0430\u0434\u043a\u0456 \u045e \u0442\u0430\u0431\u043b\u0456\u0446\u044b",row_row:"\u0410\u0431\u043d\u0430\u0432\u0456\u0446\u044c \u0431\u044f\u0433\u0443\u0447\u044b \u0440\u0430\u0434\u043e\u043a",cell_all:"\u0410\u0431\u043d\u0430\u0432\u0456\u0446\u044c \u0443\u0441\u0435 \u0432\u043e\u0447\u043a\u0456 \u045e \u0442\u0430\u0431\u043b\u0456\u0446\u044b",cell_row:"\u0410\u0431\u043d\u0430\u0432\u0456\u0446\u044c \u0443\u0441\u0435 \u0432\u043e\u0447\u043a\u0456 \u045e \u0440\u0430\u0434\u043a\u0443",cell_cell:"\u0410\u0431\u043d\u0430\u0432\u0456\u0446\u044c \u0431\u044f\u0433\u0443\u0447\u0430\u0435 \u0432\u043e\u0447\u043a\u0430",th:"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a",td:"\u0414\u0430\u0434\u0437\u0435\u043d\u044b\u044f",summary:"\u0417\u0432\u043e\u0434\u043a\u0430",bgimage:"\u0424\u043e\u043d\u0430\u0432\u044b \u043c\u0430\u043b\u044e\u043d\u0430\u043a",rtl:"\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u0430",ltr:"\u0417\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u0430",mime:"\u041c\u044d\u0442\u0430\u0432\u044b MIME-\u0442\u044b\u043f",langcode:"\u041a\u043e\u0434 \u043c\u043e\u0432\u044b",langdir:"\u041a\u0456\u0440\u0443\u043d\u0430\u043a \u043c\u043e\u0432\u044b",style:"\u0421\u0442\u044b\u043b\u044c",id:"\u0406\u0434\u044d\u043d\u0442\u044b\u0444\u0456\u043a\u0430\u0442\u0430\u0440",merge_cells_title:"\u0417\u043b\u0456\u0446\u044c \u0432\u043e\u0447\u043a\u0456",bgcolor:"\u041a\u043e\u043b\u0435\u0440 \u0444\u043e\u043d\u0443",bordercolor:"\u041a\u043e\u043b\u0435\u0440 \u043c\u044f\u0436\u044b",align_bottom:"\u041f\u0430 \u043d\u0456\u0437\u0435",align_top:"\u041f\u0430 \u0432\u0435\u0440\u0441\u0435",valign:"\u0412\u0435\u0440\u0442\u044b\u043a\u0430\u043b\u044c\u043d\u0430\u0435 \u0432\u044b\u0440\u0430\u045e\u043d\u043e\u045e\u0432\u0430\u043d\u043d\u0435",cell_type:"\u0422\u044b\u043f \u0432\u043e\u0447\u043a\u0430",cell_title:"\u0423\u043b\u0430\u0441\u0446\u0456\u0432\u0430\u0441\u0446\u0456 \u0432\u043e\u0447\u043a\u0430",row_title:"\u0423\u043b\u0430\u0441\u0446\u0456\u0432\u0430\u0441\u0446\u0456 \u0440\u0430\u0434\u043a\u0430",align_middle:"\u041f\u0430 \u0446\u044d\u043d\u0442\u0440\u044b",align_right:"\u041d\u0430\u043f\u0440\u0430\u0432\u0430",align_left:"\u041d\u0430\u043b\u0435\u0432\u0430",align_default:"\u041f\u0430 \u0437\u043c\u0430\u045e\u0447\u0430\u043d\u043d\u0456",align:"\u0412\u044b\u0440\u0430\u045e\u043d\u043e\u045e\u0432\u0430\u043d\u043d\u0435",border:"\u041c\u044f\u0436\u0430",cellpadding:"\u041d\u0430\u0431\u0456\u0432\u0430\u043d\u043d\u0435 \u045e \u0432\u043e\u0447\u043a\u0430\u0445",cellspacing:"\u0410\u0434\u043b\u0435\u0433\u043b\u0430\u0441\u0446\u044c \u043f\u0430\u043c\u0456\u0436 \u0432\u043e\u0447\u043a\u0430\u043c\u0456",rows:"\u0420\u0430\u0434\u043a\u0456",cols:"\u0421\u043b\u0443\u043f\u043a\u0456",height:"\u0412\u044b\u0448\u044b\u043d\u044f",width:"\u0428\u044b\u0440\u044b\u043d\u044f",title:"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c/\u0437\u043c\u044f\u043d\u0456\u0446\u044c \u0442\u0430\u0431\u043b\u0456\u0446\u0443",rowtype:"\u0420\u0430\u0434\u043e\u043a \u0443 \u0447\u0430\u0441\u0442\u043a\u0456 \u0442\u0430\u0431\u043b\u0456\u0446\u044b",advanced_props:"\u0414\u0430\u0434\u0430\u0442\u043a\u043e\u0432\u044b\u044f \u045e\u043b\u0430\u0441\u0446\u0456\u0432\u0430\u0441\u0446\u0456",general_props:"\u0410\u0433\u0443\u043b\u044c\u043d\u044b\u044f \u045e\u043b\u0430\u0441\u0446\u0456\u0432\u0430\u0441\u0446\u0456",advanced_tab:"\u0414\u0430\u0434\u0430\u0442\u043a\u043e\u0432\u044b\u044f",general_tab:"\u0410\u0433\u0443\u043b\u044c\u043d\u044b\u044f"});
\ No newline at end of file
old mode 100755 (executable)
new mode 100644 (file)
index e045851..30d4181
@@ -1 +1 @@
-tinyMCE.addI18n('bg.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\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 \u043d\u0435\u0434\u044a\u0437\u0438 \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\u0430Update current cell",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:"Padding \u043d\u0430 \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"});
\ No newline at end of file
+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
index 9912fbe20923e55865a3da7ef4e701e0685d6641..c422b3ac96fdee6a3b86f4a56f43ef70f9370d18 100644 (file)
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
index 97847f4678598f28486bee82c15adc638900153b..0572c22e99a1fc7fc21f24e95895b5c0a0fde76a 100644 (file)
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index b192686..11f5d17
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 6073602..881c0ae
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 58acd35..735c521
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
index e4628528f53ea69499b657d6368a9e6b2a42a885..6a4bc65378ce8a132100211cb08103ad4847368d 100644 (file)
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 04c34b8..13220a5
@@ -1 +1 @@
-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:"Row in table part",advanced_props:"Avancerede egenskaber",general_props:"Generelle egenskaber",advanced_tab:"Avanceret",general_tab:"Generelt"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 8e34ae7..5a64ebd
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 3810efe..f2510f0
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
index 8352d9ffa19b88e391508c5113413802cd9a8b00..463e09ee1b62c51ed21a2e3d85beb07f1b5efb23 100644 (file)
@@ -1,74 +1 @@
-tinyMCE.addI18n('en.table_dlg',{\r
-general_tab:"General",\r
-advanced_tab:"Advanced",\r
-general_props:"General properties",\r
-advanced_props:"Advanced properties",\r
-rowtype:"Row in table part",\r
-title:"Insert/Modify table",\r
-width:"Width",\r
-height:"Height",\r
-cols:"Columns",\r
-rows:"Rows",\r
-cellspacing:"Cellspacing",\r
-cellpadding:"Cellpadding",\r
-border:"Border",\r
-align:"Alignment",\r
-align_default:"Default",\r
-align_left:"Left",\r
-align_right:"Right",\r
-align_middle:"Center",\r
-row_title:"Table row properties",\r
-cell_title:"Table cell properties",\r
-cell_type:"Cell type",\r
-valign:"Vertical alignment",\r
-align_top:"Top",\r
-align_bottom:"Bottom",\r
-bordercolor:"Border color",\r
-bgcolor:"Background color",\r
-merge_cells_title:"Merge table cells",\r
-id:"Id",\r
-style:"Style",\r
-langdir:"Language direction",\r
-langcode:"Language code",\r
-mime:"Target MIME type",\r
-ltr:"Left to right",\r
-rtl:"Right to left",\r
-bgimage:"Background image",\r
-summary:"Summary",\r
-td:"Data",\r
-th:"Header",\r
-cell_cell:"Update current cell",\r
-cell_row:"Update all cells in row",\r
-cell_all:"Update all cells in table",\r
-row_row:"Update current row",\r
-row_odd:"Update odd rows in table",\r
-row_even:"Update even rows in table",\r
-row_all:"Update all rows in table",\r
-thead:"Table Head",\r
-tbody:"Table Body",\r
-tfoot:"Table Foot",\r
-scope:"Scope",\r
-rowgroup:"Row Group",\r
-colgroup:"Col Group",\r
-col_limit:"You've exceeded the maximum number of columns of {$cols}.",\r
-row_limit:"You've exceeded the maximum number of rows of {$rows}.",\r
-cell_limit:"You've exceeded the maximum number of cells of {$cells}.",\r
-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.",\r
-caption:"Table caption",\r
-frame:"Frame",\r
-frame_none:"none",\r
-frame_groups:"groups",\r
-frame_rows:"rows",\r
-frame_cols:"cols",\r
-frame_all:"all",\r
-rules:"Rules",\r
-rules_void:"void",\r
-rules_above:"above",\r
-rules_below:"below",\r
-rules_hsides:"hsides",\r
-rules_lhs:"lhs",\r
-rules_rhs:"rhs",\r
-rules_vsides:"vsides",\r
-rules_box:"box",\r
-rules_border:"border"\r
-});
\ No newline at end of file
+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
new file mode 100644 (file)
index 0000000..d31f078
--- /dev/null
@@ -0,0 +1 @@
+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
old mode 100755 (executable)
new mode 100644 (file)
index 1e41db6..32701a8
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 504e545..61e05ff
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
index f51f333ea7103bac2057a50fb829f703da5f4863..b27211535822f0a755a06aecd5365ac9aeb364e5 100644 (file)
@@ -1,74 +1 @@
-tinyMCE.addI18n('eu.table_dlg',{\r
-general_tab:"Orokorra",\r
-advanced_tab:"Aurreratua",\r
-general_props:"Ezaugarri orokorrak",\r
-advanced_props:"Ezaugarri aurreratuak",\r
-rowtype:"Row in table part",\r
-title:"Txertatu/Aldatu taula",\r
-width:"Zabalera",\r
-height:"Altuera",\r
-cols:"Zutabeak",\r
-rows:"Lerroak",\r
-cellspacing:"Cellspacing",\r
-cellpadding:"Cellpadding",\r
-border:"Border",\r
-align:"Lerrokatzea",\r
-align_default:"Default",\r
-align_left:"Ezkerrera",\r
-align_right:"Eskuinera",\r
-align_middle:"Erdian",\r
-row_title:"Lerro ezaugarriak",\r
-cell_title:"Gelaxka ezaugarriak",\r
-cell_type:"Gelaxka mota",\r
-valign:"Lerrokatze bertikala",\r
-align_top:"Goian",\r
-align_bottom:"Behean",\r
-bordercolor:"Border color",\r
-bgcolor:"Atzeko kolorea",\r
-merge_cells_title:"Bateratu gelaxkak",\r
-id:"Id",\r
-style:"Estiloa",\r
-langdir:"Hizkuntza norabidea",\r
-langcode:"Hizkuntza kodea",\r
-mime:"Helburuareb MIME mota",\r
-ltr:"Ezkerretik eskuinera",\r
-rtl:"Eskuinetik ezkerrera",\r
-bgimage:"Atzeko irudia",\r
-summary:"Laburpena",\r
-td:"Datuak",\r
-th:"Goiburua",\r
-cell_cell:"Eguneratu uneko gelaxka",\r
-cell_row:"Eguneratu lerroko gelaxka guztiak",\r
-cell_all:"Eguneratu gelaxka guztiak",\r
-row_row:"Eguneratu uneko lerroa",\r
-row_odd:"Eguneratu lerro bikoitiak",\r
-row_even:"Eguneratu lerro bakoitiak",\r
-row_all:"Eguneratu lerro guztiak",\r
-thead:"Taularen Goiburukoa",\r
-tbody:"Taularen Gorputza",\r
-tfoot:"Taularen Oina",\r
-scope:"Eremua",\r
-rowgroup:"Lerro Taldea",\r
-colgroup:"Zut Taldea",\r
-col_limit:"Zutabe kopuru maximoa ({$cols}) gainditu duzu.",\r
-row_limit:"Lerro kopuru maximoa ({$rows}) gainditu duzu.",\r
-cell_limit:"Gelaxka kopuru maximoa ({$cells}) gainditu duzu..",\r
-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.",\r
-caption:"Table caption",\r
-frame:"Markoa",\r
-frame_none:"none",\r
-frame_groups:"taldeak",\r
-frame_rows:"lerroak",\r
-frame_cols:"zurabeak",\r
-frame_all:"guztiak",\r
-rules:"Rules",\r
-rules_void:"void",\r
-rules_above:"above",\r
-rules_below:"below",\r
-rules_hsides:"hsides",\r
-rules_lhs:"lhs",\r
-rules_rhs:"rhs",\r
-rules_vsides:"vsides",\r
-rules_box:"box",\r
-rules_border:"border"\r
-});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 3ef6750..d26a937
@@ -1 +1 @@
-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\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/\u0627\u0635\u0644\u0627\u062d \u062c\u062f\u0648\u0644",rowtype:"\u0633\u0637\u0631 \u062f\u0631 \u0628\u062e\u0634 \u062c\u062f\u0648\u0644",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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 78a1129..87ed836
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index cc69de5..9f9488a
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
index 2075f2900dad5ab448a57eb2ddbd4ecfe0ed46b7..c992348fe78ae8eecdda7c8d7fc1784d98d90383 100644 (file)
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 1566114..25371ea
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
index 563089b9425e08e2e65120d116a2d89acd13591d..bf2a8911a2b535ccf19f7e4215e56efc540d6cfc 100644 (file)
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 511eb92..0760d72
@@ -1 +1 @@
-tinyMCE.addI18n('hr.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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 0a2b8c1..518c3ad
@@ -1 +1 @@
-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\u00e1b",tbody:"T\u00e1bl\u00e1zat test",thead:"T\u00e1bl\u00e1zat fej","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\u0151k\u00f6z",cellspacing:"Cellak\u00f6z",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"});
\ No newline at end of file
+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
index 3f1805a26d7da328d4f6049bd3365aa6d2c389d9..5b3222b707364edf254f2ad5431ae17610e402c8 100644 (file)
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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/ia_dlg.js b/program/js/tiny_mce/plugins/table/langs/ia_dlg.js
deleted file mode 100644 (file)
index 3b8f5fe..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ia.table_dlg',{rules_border:"\u8fb9\u6846",rules_box:"\u76d2",rules_vsides:"\u5782\u76f4\u5927\u5c0f",rules_rhs:"rhs",rules_lhs:"lhs",rules_hsides:"\u6c34\u5e73\u5927\u5c0f",rules_below:"\u4e4b\u4e0b",rules_above:"\u4e4b\u4e0a",rules_void:"\u7a7a",rules:"\u6807\u5c3a",frame_all:"\u5168\u90e8",frame_cols:"\u5217",frame_rows:"\u884c",frame_groups:"\u7ec4",frame_none:"\u65e0",frame:"\u8fb9\u6846",caption:"\u8868\u683c\u6807\u9898",missing_scope:"\u60a8\u786e\u5b9a\u4e0d\u6307\u5b9a\u8868\u5934\u50a8\u5b58\u683c\u7684\u8303\u56f4\u5417\uff1f\u5982\u679c\u4e0d\u6307\u5b9a\uff0c\u90e8\u5206\u4f7f\u7528\u8005\u5c06\u5f88\u96be\u67e5\u770b\u8868\u683c\u5185\u5bb9",cell_limit:"\u5df2\u8d85\u8fc7\u9650\u5236\uff0c\u6700\u591a\u4e3a{$cells} \u50a8\u5b58\u683c\u3002",row_limit:"\u5df2\u8d85\u8fc7\u9650\u5236\uff0c\u6700\u591a\u4e3a {$rows} \u884c\u3002",col_limit:"\u5df2\u8d85\u8fc7\u9650\u5236\uff0c\u6700\u591a\u4e3a {$cols} \u5217\u3002",colgroup:"\u5217\u7ec4",rowgroup:"\u884c\u7ec4",scope:"\u8303\u56f4",tfoot:"\u8868\u811a",tbody:"\u8868\u4f53",thead:"\u8868\u5934",row_all:"\u66f4\u65b0\u8868\u683c\u7684\u5168\u90e8\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\u6240\u5728\u884c",cell_all:"\u66f4\u65b0\u5168\u90e8\u50a8\u5b58\u683c",cell_row:"\u66f4\u65b0\u5f53\u524d\u884c\u7684\u50a8\u5b58\u683c",cell_cell:"\u66f4\u65b0\u76ee\u524d\u7684\u50a8\u5b58\u683c",th:"\u8868\u5934",td:"\u8868\u683c",summary:"\u6458\u8981",bgimage:"\u80cc\u666f\u56fe\u7247",rtl:"\u4ece\u53f3\u5230\u5de6",ltr:"\u4ece\u5de6\u5230\u53f3",mime:"\u76ee\u6807 MIME \u7c7b\u578b",langcode:"\u8bed\u8a00\u7f16\u7801",langdir:"\u8bed\u8a00\u4e66\u5199\u65b9\u5411",style:"\u6837\u5f0f",id:"Id",merge_cells_title:"\u5408\u5e76\u50a8\u5b58\u683c",bgcolor:"\u80cc\u666f\u989c\u8272",bordercolor:"\u8fb9\u6846\u989c\u8272",align_bottom:"\u5e95\u90e8",align_top:"\u9876\u90e8",valign:"\u5782\u76f4\u5bf9\u9f50\u65b9\u5f0f",cell_type:"\u50a8\u5b58\u683c \u7c7b\u522b",cell_title:"\u50a8\u5b58\u683c \u5c5e\u6027",row_title:"\u884c \u5c5e\u6027",align_middle:"\u5c45\u4e2d",align_right:"\u5c45\u53f3",align_left:"\u5c45\u5de6",align_default:"\u9ed8\u8ba4",align:"\u5bf9\u9f50\u65b9\u5f0f",border:"\u8fb9\u6846",cellpadding:"\u50a8\u5b58\u683c\u5185\u8ddd",cellspacing:"\u50a8\u5b58\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:"\u57fa\u672c \u5c5e\u6027",advanced_tab:"\u9ad8\u7ea7",general_tab:"\u57fa\u672c"});
\ No newline at end of file
index d14fd155b3adddd2b9325294994c0db48973e248..e67d2e6e6956b2d20b9ead412a58c1f2b8653fef 100644 (file)
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index b2fb158..8b4b1ff
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 35bc2d9..2a847ed
@@ -1 +1 @@
-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:"Table caption",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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index cfa85d9..ad33586
@@ -1 +1 @@
-tinyMCE.addI18n('ja.table_dlg',{"rules_border":"\u4e0a\u4e0b\u5de6\u53f3(border)","rules_box":"\u4e0a\u4e0b\u5de6\u53f3(box)","rules_vsides":"\u5de6\u53f3","rules_rhs":"\u53f3","rules_lhs":"\u5de6","rules_hsides":"\u4e0a\u4e0b","rules_below":"\u4e0b","rules_above":"\u4e0a","rules_void":"\u306a\u3057",rules:"\u8868\u306e\u5916\u67a0","frame_all":"\u5168\u3066","frame_cols":"\u5217","frame_rows":"\u884c","frame_groups":"\u30b0\u30eb\u30fc\u30d7\u6bce","frame_none":"\u306a\u3057",frame:"\u30bb\u30eb\u67a0\u7dda",caption:"\u8868\u306b\u898b\u51fa\u3057\u3092\u4ed8\u3051\u308b","missing_scope":"\u8868\u306e\u30b9\u30b3\u30fc\u30d7\u5c5e\u6027\u3092\u8a2d\u5b9a\u3057\u3066\u3044\u307e\u305b\u3093\u304c\u3088\u308d\u3057\u3044\u3067\u3059\u304b\uff1f\u30a2\u30af\u30bb\u30b7\u30d3\u30ea\u30c6\u30a3\u306b\u554f\u984c\u304c\u751f\u3058\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002","cell_limit":"\u30bb\u30eb\u306e\u6700\u5927\u6570\u3092\u8d85\u3048\u307e\u3057\u305f\u3002","row_limit":"\u884c\u306e\u6700\u5927\u6570\u3092\u8d85\u3048\u307e\u3057\u305f\u3002","col_limit":"\u5217\u306e\u6700\u5927\u6570\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\u30d5\u30c3\u30bf",tbody:"\u8868\u30dc\u30c7\u30a3",thead:"\u8868\u30d8\u30c3\u30c0","row_all":"\u5168\u3066\u306e\u884c\u306e\u66f4\u65b0","row_even":"\u5076\u6570\u884c\u306e\u66f4\u65b0","row_odd":"\u5947\u6570\u884c\u306e\u66f4\u65b0","row_row":"\u9078\u629e\u884c\u306e\u66f4\u65b0","cell_all":"\u5168\u3066\u306e\u30bb\u30eb\u306e\u66f4\u65b0","cell_row":"\u884c\u5185\u306e\u30bb\u30eb\u306e\u66f4\u65b0","cell_cell":"\u9078\u629e\u30bb\u30eb\u306e\u66f4\u65b0",th:"\u30d8\u30c3\u30c0",td:"\u30c7\u30fc\u30bf",summary:"\u30b5\u30de\u30ea\u30fc",bgimage:"\u80cc\u666f\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:"style\u5c5e\u6027",id:"ID\u5c5e\u6027","merge_cells_title":"\u30bb\u30eb\u306e\u7d50\u5408",bgcolor:"\u80cc\u666f\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\u7a2e\u5225","cell_title":"\u30bb\u30eb\u306e\u30d7\u30ed\u30d1\u30c6\u30a3","row_title":"\u884c\u306e\u30d7\u30ed\u30d1\u30c6\u30a3","align_middle":"\u4e2d\u592e\u63c3\u3048","align_right":"\u53f3\u63c3\u3048","align_left":"\u5de6\u63c3\u3048","align_default":"\u30c7\u30d5\u30a9\u30eb\u30c8",align:"\u914d\u7f6e",border:"\u67a0\u7dda",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"\u884c",cols:"\u5217",height:"\u9ad8\u3055",width:"\u5e45",title:"\u8868\u306e\u633f\u5165/\u7de8\u96c6",rowtype:"\u884c","advanced_props":"\u9ad8\u5ea6\u306a\u8a2d\u5b9a","general_props":"\u4e00\u822c","advanced_tab":"\u9ad8\u5ea6\u306a\u8a2d\u5b9a","general_tab":"\u4e00\u822c"});
\ No newline at end of file
+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
index 757007531ec798e1ec29e5a34a131918d3d4e0e3..ff8b1bef93b3e4f8dd3c097fdca8ffe95d7f8d24 100644 (file)
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 348608a..67c7d8d
@@ -1 +1 @@
-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",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:"\ub82c\uc218\uc758 \uc0c1\ud55c{$cols}\ub97c \ub118\uc5c8\uc2b5\ub2c8\ub2e4.",colgroup:"\uc5f4\uadf8\ub8f9",rowgroup:"\ud589\uadf8\ub8f9",scope:"Scope",tfoot:"\ud14c\uc774\ube14 \ud48b\ud130",tbody:"Table Body",thead:"Table Head",row_all:"\uc804\ud589\uc744 \uac31\uc2e0",row_even:"\uc9dd\uc218\ud589\uc744 \uac31\uc2e0",row_odd:"\ud640\uc218\ud589\uc744 \uac31\uc2e0",row_row:"\ud604\uc7ac\uc758 \ud589\uc744 \uac31\uc2e0",cell_all:"\ud14c\uc774\ube14\uc758 \ubaa8\ub4e0 \uc140\uc744 \uac31\uc2e0",cell_row:"\ud589\uc758 \uc804\uc140\uc744 \uac31\uc2e0",cell_cell:"\ud604\uc7ac\uc758 \uc140\uc744 \uac31\uc2e0",th:"Header",td:"Data",summary:"\uc694\uc57d",bgimage:"\ubc30\uacbd \uc774\ubbf8\uc9c0",rtl:"\uc624\ub978\ucabd\uc5d0\uc11c \uc67c\ucabd",ltr:"\uc67c\ucabd\uc5d0\uc11c \uc624\ub978\ucabd",mime:"Target MIME \ud0c0\uc785",langcode:"\uc5b8\uc5b4 \ucf54\ub4dc",langdir:"\ubb38\uc790 \ubc29\ud5a5",style:"\uc2a4\ud0c0\uc77c",id:"Id",merge_cells_title:"\uc140 \uacb0\ud569",bgcolor:"\ubc30\uacbd\uc0c9",bordercolor:"\ud14c\ub450\ub9ac\uc120\uc0c9",align_bottom:"\ud558",align_top:"\uc0c1",valign:"\uc218\uc9c1 \uc704\uce58",cell_type:"\uc140 \uc885\ub958",cell_title:"\uc140 \uc124\uc815",row_title:"\ud589 \uc124\uc815",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:"\uc815\ub82c",border:"\ud14c\ub450\ub9ac\uc120",cellpadding:"\uc140\ub0b4 \uc5ec\ubc31",cellspacing:"\uc140 \uac04\uaca9",rows:"\ud589",cols:"\ub82c",height:"\ub192\uc774",width:"\ud3ed",title:"\ud14c\uc774\ube14\uc758 \uc0bd\uc785/\ud3b8\uc9d1",rowtype:"\ud589",advanced_props:"\uace0\uae09 \uc124\uc815",general_props:"\uc77c\ubc18 \uc124\uc815",advanced_tab:"\uace0\uae09",general_tab:"\uc77c\ubc18"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 4cecfd1..754fd7d
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 7e9ff1c..6920325
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 168ba38..6bf049b
@@ -1 +1 @@
-tinyMCE.addI18n('mk.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:"Telo 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 levo",ltr:"S leva 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:"Levo",align_default:"Zadano",align:"Poravnavanje",border:"Obrub",cellpadding:"Dopuna \u0107elije",cellspacing:"Razmak \u0107elija",rows:"Redaka",cols:"Stupaca",height:"Visina",width:"\u0160irina",title:"\u0412\u043c\u0435\u0442\u043d\u0438/uredi tablicu",rowtype:"Row in table part",advanced_props:"Napredna svojstva",general_props:"Osnovna svojstva",advanced_tab:"Napredno",general_tab:"Osnovno"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 019e265..d32483f
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index f8a9ea8..2fc6c4f
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 4526c10..ebc25e7
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 5e145db..ac1ea85
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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/no_dlg.js b/program/js/tiny_mce/plugins/table/langs/no_dlg.js
deleted file mode 100644 (file)
index ec7c0af..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('no.table_dlg',{"rules_border":"ramme","rules_box":"boks","rules_vsides":"vside","rules_rhs":"hs","rules_lhs":"vs","rules_hsides":"hside","rules_below":"under","rules_above":"over","rules_void":"tom",rules:"Streker","frame_all":"alle","frame_cols":"kolonner","frame_rows":"rader","frame_groups":"grupper","frame_none":"ingen",frame:"Ramme",caption:"Tabell tittel","missing_scope":"Er du sikker du vil fortsette uten \u00e5 angi tittel for denne overskrifscellen? Uten denne kan det bli vanskelig for enkelte funksjonshemmede brukere \u00e5 forst\u00e5 innhold eller data som presenteres i tabellen.","cell_limit":"Du har overg\u00e5tt maksimalt antall tillatt celler p\u00e5 {$cells}.","row_limit":"Du har overg\u00e5tt maksimalt antall tillatte rader p\u00e5 {$rows}.","col_limit":"Du har overg\u00e5tt maksimalt antall tillatte kolonner p\u00e5 {$cols}.",colgroup:"Kolonne gruppe",rowgroup:"Rad gruppe",scope:"Tittel",tfoot:"Tabell foot",tbody:"Tabell body",thead:"Tabell head","row_all":"Oppdater alle rader","row_even":"Oppdater rader med partall","row_odd":"Oppdater rader med oddetall","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\u00e5k kode",langdir:"Skriftretning",style:"Stil",id:"Id","merge_cells_title":"Sl\u00e5 sammen celler",bgcolor:"Bakgrunnsfarge",bordercolor:"Rammefarge","align_bottom":"Bunn","align_top":"Topp",valign:"Vertikal justering","cell_type":"Celle type","cell_title":"Celle egenskaper","row_title":"Rad egenskaper","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/editer tabell",rowtype:"Rad i tabell","advanced_props":"Avanserte egenskaper","general_props":"Generelle egenskaper","advanced_tab":"Avansert","general_tab":"Generelt"});
\ No newline at end of file
old mode 100755 (executable)
new mode 100644 (file)
index 7e78c47..8bbe7c8
@@ -1 +1 @@
-tinyMCE.addI18n('pl.table_dlg',{"rules_border":"border","rules_box":"box","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"});
\ No newline at end of file
+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
index 686211c8b83888072e6719ff133aa7e4faea94d0..b34a45a571cf476b7ec89442024467b92cb12003 100644 (file)
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 7534c5c..fb54400
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 5e4a118..c1974ed
@@ -1 +1 @@
-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 dori\u0163i s\u0103 l\u0103sa\u0163i scopul necompletat? ",cell_limit:"A\u0163i dep\u0103\u015fit num\u0103rul maxim de celule: {$cells}.",row_limit:"A\u0163i dep\u0103\u015fit num\u0103rul maxim de r\u00e2nduri: {$rows}.",col_limit:"A\u0163i dep\u0103\u015fit num\u0103rul maxim de coloane: {$cols}.",colgroup:"Grupeaz\u0103 celule",rowgroup:"Grupeaz\u0103 r\u00e2nduri",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 \u0163int\u0103",langcode:"Cod limb\u0103",langdir:"Direc\u0163ie limb\u0103",style:"Stil",id:"Id",merge_cells_title:"Uni\u0163i 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\u0163i celul\u0103",row_title:"Propriet\u0103\u0163i r\u00e2nd",align_middle:"Centru",align_right:"Dreapta",align_left:"St\u00e2nga",align_default:"Implicit\u0103",align:"Aliniere",border:"Bordur\u0103",cellpadding:"Spa\u0163iu \u00een celule",cellspacing:"Spa\u0163iu \u00eentre celule",rows:"R\u00e2nduri",cols:"Coloane",height:"\u00cen\u0103l\u0163ime",width:"L\u0103\u0163ime",title:"Inserare/modificare tabel",rowtype:"R\u0103nd \u00een tabel",advanced_props:"Propriet\u0103\u0163i avansate",general_props:"Propriet\u0103\u0163i generale",advanced_tab:"Avansat",general_tab:"General"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 0721ef8..3bd8815
@@ -1 +1 @@
-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":"all","frame_cols":"cols","frame_rows":"rows","frame_groups":"groups","frame_none":"none",frame:"\u041a\u0430\u0434\u0440",caption:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a","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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index abd3e9d..5dcb178
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index f232c30..817f0e0
@@ -1 +1 @@
-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 intepret\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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index f5e9464..52e1efe
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
index 15aa4531c2ce413f459885ea393a124d86aae545..c9bd5a8e14fbfe4eec1dc3d6a212690eaaa9264e 100644 (file)
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 49e051f..1ef0d8d
@@ -1 +1 @@
-tinyMCE.addI18n('sr.table_dlg',{rules_border:"sve ivice",rules_box:"sve strane",rules_vsides:"levo i desno",rules_rhs:"samo desno",rules_lhs:"samo levo",rules_hsides:"gornja i donja",rules_below:"ispod",rules_above:"iznad",rules_void:"prazno",rules:"Linije",frame_all:"sve",frame_cols:"kolone",frame_rows:"redovi",frame_groups:"grupe",frame_none:"bez rama",frame:"ram",caption:"Opis tabele",missing_scope:"Da li ste sigurni da \u017eelite da nastavite a da niste definisali obim \u0107elije zaglavlja tabele. Kada nije definisan, 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:"Obim",tfoot:"Podno\u017eje tabele",tbody:"Sadr\u017eaj tabele",thead:"Zaglavlje tabele",row_all:"Primeni na sve redove u tabeli",row_even:"Primeni na parne redove u tabeli",row_odd:"Primeni na neparne redove u tabeli",row_row:"Primeni na izabrani red",cell_all:"Primeni na sve \u0107elije u tabeli",cell_row:"Primeni na sve \u0107elije u redu",cell_cell:"Primeni na izabranu \u0107eliju",th:"Zaglavlje",td:"Podaci",summary:"Prikaz",bgimage:"Slika pozadine",rtl:"S desna na levo",ltr:"S leva na desno",mime:"MIME tip",langcode:"Kod jezika",langdir:"Smer jezika",style:"Stil",id:"Id",merge_cells_title:"Spoji \u0107elije",bgcolor:"Boja pozadine",bordercolor:"Boja ivice",align_bottom:"Dno",align_top:"Vrh",valign:"Vertikalno poravnavanje",cell_type:"Tip \u0107elije",cell_title:"Svojstva \u0107elije",row_title:"Svojstva reda",align_middle:"Sredina",align_right:"Desno",align_left:"Levo",align_default:"Zadato",align:"Poravnavanje",border:"Ivica",cellpadding:"Dopuna \u0107elije",cellspacing:"Razmak \u0107elija",rows:"Redova",cols:"Kolona",height:"Visina",width:"\u0160irina",title:"Ubaci/uredi tabelu",rowtype:"Red u tabeli",advanced_props:"Napredna svojstva",general_props:"Osnovna svojstva",advanced_tab:"Napredno",general_tab:"Osnovno"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 687daa4..d058bcb
@@ -1 +1 @@
-tinyMCE.addI18n('sv.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:"Regler","frame_all":"all","frame_cols":"cols","frame_rows":"rows","frame_groups":"groups","frame_none":"none",frame:"Ram",caption:"\u00d6verskrift","missing_scope":"\u00d6\u0084r 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":"Ingen",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"});
\ No newline at end of file
+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
index 3d60f8959cc2480ac703cb0c2fd4e77d7bab6936..5917ec35cea6778d8b41e0af02191239f4fc7de3 100644 (file)
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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/te_dlg.js b/program/js/tiny_mce/plugins/table/langs/te_dlg.js
deleted file mode 100644 (file)
index 6ce7b3c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('te.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"});
\ No newline at end of file
index cd8f8ab4d871470e6a8ec809937bd5c5c0a2d279..e16138049d0d18acab3253f5cebaec0b8e24f1bf 100644 (file)
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 3ce108f..28020cf
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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/tw_dlg.js b/program/js/tiny_mce/plugins/table/langs/tw_dlg.js
deleted file mode 100644 (file)
index 6cd369e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('tw.table_dlg',{rules_border:"\u5916\u6846",rules_box:"\u76d2\u578b",rules_vsides:"\u5782\u76f4",rules_rhs:"\u53f3\u908a",rules_lhs:"\u5de6\u908a",rules_hsides:"\u6c34\u5e73",rules_below:"\u4e0b",rules_above:"\u4e0a",rules_void:"\u7a7a",rules:"\u898f\u5247",frame_all:"\u5168\u90e8",frame_cols:"\u6b04",frame_rows:"\u884c",frame_groups:"\u7fa4\u7d44",frame_none:"\u7121",frame:"\u6846\u67b6",caption:"\u8868\u683c\u6a19\u984c",missing_scope:"\u60a8\u78ba\u5b9a\u4e0d\u6307\u5b9a\u8868\u683c\u982d\u90e8\u5132\u5b58\u683c\u4e00\u500b\u7bc4\u570d\u55ce\uff1f\u6c92\u6709\u5b83\uff0c\u6216\u8a31\u5c0d\u90a3\u4e9b\u6709\u969c\u7919\u7684\u4f7f\u7528\u8005\u7406\u89e3\u8868\u683c\u5c55\u793a\u7684\u5167\u5bb9\u6216\u6578\u64da\u66f4\u52a0\u7684\u56f0\u96e3\u3002",cell_limit:"\u5df2\u8d85\u904e\u6700\u5927\u5132\u5b58\u683c\u9650\u5236{$cells} \u5132\u5b58\u683c\u3002",row_limit:"\u5df2\u8d85\u904e\u6700\u5927\u884c\u6578\u9650\u5236 {$rows} \u5217\u3002",col_limit:"\u5df2\u8d85\u904e\u6700\u5927\u6b04\u6578\u9650\u5236 {$cols} \u6b04\u3002",colgroup:"\u6b04\u7fa4\u7d44",rowgroup:"\u884c\u7fa4\u7d44",scope:"\u7bc4\u570d",tfoot:"\u8868\u5c3e",tbody:"\u8868\u683c\u4e3b\u9ad4",thead:"\u8868\u982d",row_all:"\u66f4\u65b0\u8868\u683c\u7684\u6240\u6709\u884c",row_even:"\u66f4\u65b0\u8868\u683c\u7684\u5076\u6578\u884c",row_odd:"\u66f4\u65b0\u8868\u683c\u7684\u5947\u6578\u884c",row_row:"\u66f4\u65b0\u76ee\u524d\u884c",cell_all:"\u66f4\u65b0\u6240\u6709\u5132\u5b58\u683c",cell_row:"\u66f4\u65b0\u76ee\u524d\u884c\u7684\u5132\u5b58\u683c",cell_cell:"\u66f4\u65b0\u76ee\u524d\u5132\u5b58\u683c",th:"\u8868\u982d",td:"\u8cc7\u6599",summary:"\u6458\u8981",bgimage:"\u80cc\u666f\u5716\u7247",rtl:"\u5f9e\u53f3\u5230\u5de6",ltr:"\u5f9e\u5de6\u5230\u53f3",mime:"MIME \u985e\u578b",langcode:"\u8a9e\u8a00\u7de8\u78bc",langdir:"\u8a9e\u8a00\u66f8\u5beb\u65b9\u5411",style:"\u6a23\u5f0f",id:"ID",merge_cells_title:"\u5408\u4f75\u5132\u5b58\u683c",bgcolor:"\u80cc\u666f\u984f\u8272",bordercolor:"\u908a\u6846\u984f\u8272",align_bottom:"\u9760\u4e0b",align_top:"\u9760\u4e0a",valign:"\u5782\u76f4\u5c0d\u9f4a",cell_type:"\u5132\u5b58\u683c\u985e\u578b",cell_title:"\u5132\u5b58\u683c\u6a19\u984c",row_title:"\u884c\u5c6c\u6027",align_middle:"\u7f6e\u4e2d\u5c0d\u9f4a",align_right:"\u9760\u53f3\u5c0d\u9f4a",align_left:"\u9760\u5de6\u5c0d\u9f4a",align_default:"\u9810\u8a2d",align:"\u5c0d\u9f4a\u65b9\u5f0f",border:"\u908a\u6846",cellpadding:"\u5132\u5b58\u683c\u908a\u8ddd",cellspacing:"\u5132\u5b58\u683c\u9593\u8ddd",rows:"\u884c\u6578",cols:"\u6b04\u6578",height:"\u9ad8\u5ea6",width:"\u5bec\u5ea6",title:"\u63d2\u5165/\u7de8\u8f2f\u8868\u683c",rowtype:"\u884c\u6240\u5728\u7684\u8868\u683c\u4f4d\u7f6e",advanced_props:"\u9032\u968e\u5c6c\u6027",general_props:"\u4e00\u822c\u5c6c\u6027",advanced_tab:"\u9032\u968e",general_tab:"\u4e00\u822c"});
\ No newline at end of file
old mode 100755 (executable)
new mode 100644 (file)
index e3ae702..396cbb6
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index a182b00..64318f6
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
new file mode 100644 (file)
index 0000000..4fe3003
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..7a89be3
--- /dev/null
@@ -0,0 +1 @@
+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/langs/zh_dlg.js b/program/js/tiny_mce/plugins/table/langs/zh_dlg.js
deleted file mode 100755 (executable)
index 496c27e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh.table_dlg',{rules_border:"\u5916\u6846",rules_box:"\u76d2\u578b",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:"\u680f",frame_rows:"\u884c",frame_groups:"\u7fa4\u7ec4",frame_none:"\u65e0",frame:"\u6846\u67b6",caption:"\u8868\u683c\u6807\u9898",missing_scope:"\u4f60\u786e\u5b9a\u4e0d\u6307\u5b9a\u8868\u683c\u5934\u90e8\u50a8\u5b58\u683c\u4e00\u4e2a\u8303\u56f4\u5417\uff1f\u6ca1\u6709\u5b83\uff0c\u6216\u8bb8\u5bf9\u90a3\u4e9b\u6709\u969c\u788d\u7684\u7528\u6237\u7406\u89e3\u8868\u683c\u5c55\u793a\u7684\u5185\u5bb9\u6216\u6570\u636e\u66f4\u52a0\u7684\u56f0\u96be\u3002",cell_limit:"\u5df2\u8d85\u8fc7\u6700\u5927\u50a8\u5b58\u683c\u9650\u5236{$cells} \u50a8\u5b58\u683c\u3002",row_limit:"\u5df2\u8d85\u8fc7\u6700\u5927\u884c\u6570\u9650\u5236 {$rows} \u5217\u3002",col_limit:"\u5df2\u8d85\u8fc7\u6700\u5927\u680f\u6570\u9650\u5236 {$cols} \u680f\u3002",colgroup:"\u680f\u7fa4\u7ec4",rowgroup:"\u884c\u7fa4\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\u76ee\u524d\u884c",cell_all:"\u66f4\u65b0\u6240\u6709\u50a8\u5b58\u683c",cell_row:"\u66f4\u65b0\u76ee\u524d\u884c\u7684\u50a8\u5b58\u683c",cell_cell:"\u66f4\u65b0\u76ee\u524d\u50a8\u5b58\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:"MIME \u7c7b\u578b",langcode:"\u8bed\u8a00\u7f16\u7801",langdir:"\u8bed\u8a00\u4e66\u5199\u65b9\u5411",style:"\u6837\u5f0f",id:"ID",merge_cells_title:"\u5408\u4f75\u50a8\u5b58\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:"\u50a8\u5b58\u683c\u7c7b\u578b",cell_title:"\u50a8\u5b58\u683c\u6807\u9898",row_title:"\u884c\u5c5e\u6027",align_middle:"\u7f6e\u4e2d\u5bf9\u9f50",align_right:"\u9760\u53f3\u5bf9\u9f50",align_left:"\u9760\u5de6\u5bf9\u9f50",align_default:"\u9ed8\u8ba4",align:"\u5bf9\u9f50\u65b9\u5f0f",border:"\u8fb9\u6846",cellpadding:"\u50a8\u5b58\u683c\u8fb9\u8ddd",cellspacing:"\u50a8\u5b58\u683c\u95f4\u8ddd",rows:"\u884c\u6570",cols:"\u680f\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:"\u4e00\u822c\u5c5e\u6027",advanced_tab:"\u9ad8\u7ea7",general_tab:"\u4e00\u822c"});
\ No newline at end of file
index c197ff6c7099373d9377b30583eaf96a80f25b1b..1885401f6bc00dbcbf77d7beeedd82c77f06fa7f 100644 (file)
@@ -5,6 +5,7 @@
        <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
        <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
        <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
+       <script type="text/javascript" src="../../utils/validate.js"></script>\r
        <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
        <script type="text/javascript" src="js/row.js"></script>\r
        <link href="css/row.css" rel="stylesheet" type="text/css" />\r
@@ -70,7 +71,7 @@
 \r
                                                <tr>\r
                                                        <td><label for="height">{#table_dlg.height}</label></td>\r
-                                                       <td class="col2"><input name="height" type="text" id="height" value="" size="4" maxlength="4" onchange="changedSize();" /></td>\r
+                                                       <td class="col2"><input name="height" type="text" id="height" value="" size="7" maxlength="7" onchange="changedSize();" class="size" /></td>\r
                                                </tr>\r
                                        </table>\r
                                </fieldset>\r
index 4a873b0a6f9c3902de7d662cad86834fc2e3a6dd..b92fa741eb50eaf517232069dfc9278382254600 100644 (file)
                                                                <option value="right">{#table_dlg.align_right}</option>\r
                                                        </select></td>\r
                                                        <td><label id="borderlabel" for="border">{#table_dlg.border}</label></td>\r
-                                                       <td><input id="border" name="border" type="text" value="" size="3" maxlength="3" onchange="changedBorder();" class="number" /></td>\r
+                                                       <td><input id="border" name="border" type="text" value="" size="3" maxlength="5" onchange="changedBorder();" class="size" /></td>\r
                                                </tr>\r
                                                <tr id="width_row">\r
                                                        <td><label id="widthlabel" for="width">{#table_dlg.width}</label></td>\r
-                                                       <td><input name="width" type="text" id="width" value="" size="4" maxlength="4" onchange="changedSize();" class="size" /></td>\r
+                                                       <td><input name="width" type="text" id="width" value="" size="7" maxlength="7" onchange="changedSize();" class="size" /></td>\r
                                                        <td><label id="heightlabel" for="height">{#table_dlg.height}</label></td>\r
-                                                       <td><input name="height" type="text" id="height" value="" size="4" maxlength="4" onchange="changedSize();" class="size" /></td>\r
+                                                       <td><input name="height" type="text" id="height" value="" size="7" maxlength="7" onchange="changedSize();" class="size" /></td>\r
                                                </tr>\r
                                                <tr id="styleSelectRow" >\r
                                                        <td><label id="classlabel" for="class">{#class_name}</label></td>\r
diff --git a/program/js/tiny_mce/plugins/template/blank.htm b/program/js/tiny_mce/plugins/template/blank.htm
new file mode 100644 (file)
index 0000000..ecde53f
--- /dev/null
@@ -0,0 +1,12 @@
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+       <title>blank_page</title>\r
+       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+       <script type="text/javascript">\r
+               parent.TemplateDialog.loadCSSFiles(document);\r
+       </script>\r
+</head>\r
+<body id="mceTemplatePreview" class="mceContentBody">\r
+\r
+</body>\r
+</html>\r
diff --git a/program/js/tiny_mce/plugins/template/css/template.css b/program/js/tiny_mce/plugins/template/css/template.css
new file mode 100644 (file)
index 0000000..2d23a49
--- /dev/null
@@ -0,0 +1,23 @@
+#frmbody {\r
+       padding: 10px;\r
+       background-color: #FFF;\r
+       border: 1px solid #CCC;\r
+}\r
+\r
+.frmRow {\r
+       margin-bottom: 10px;\r
+}\r
+\r
+#templatesrc {\r
+       border: none;\r
+       width: 320px;\r
+       height: 240px;\r
+}\r
+\r
+.title {\r
+       padding-bottom: 5px;\r
+}\r
+\r
+.mceActionPanel {\r
+       padding-top: 5px;\r
+}\r
diff --git a/program/js/tiny_mce/plugins/template/editor_plugin.js b/program/js/tiny_mce/plugins/template/editor_plugin.js
new file mode 100644 (file)
index 0000000..ebe3c27
--- /dev/null
@@ -0,0 +1 @@
+(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
new file mode 100644 (file)
index 0000000..9cac269
--- /dev/null
@@ -0,0 +1,159 @@
+/**\r
+ * editor_plugin_src.js\r
+ *\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ */\r
+\r
+(function() {\r
+       var each = tinymce.each;\r
+\r
+       tinymce.create('tinymce.plugins.TemplatePlugin', {\r
+               init : function(ed, url) {\r
+                       var t = this;\r
+\r
+                       t.editor = ed;\r
+\r
+                       // Register commands\r
+                       ed.addCommand('mceTemplate', function(ui) {\r
+                               ed.windowManager.open({\r
+                                       file : url + '/template.htm',\r
+                                       width : ed.getParam('template_popup_width', 750),\r
+                                       height : ed.getParam('template_popup_height', 600),\r
+                                       inline : 1\r
+                               }, {\r
+                                       plugin_url : url\r
+                               });\r
+                       });\r
+\r
+                       ed.addCommand('mceInsertTemplate', t._insertTemplate, t);\r
+\r
+                       // Register buttons\r
+                       ed.addButton('template', {title : 'template.desc', cmd : 'mceTemplate'});\r
+\r
+                       ed.onPreProcess.add(function(ed, o) {\r
+                               var dom = ed.dom;\r
+\r
+                               each(dom.select('div', o.node), function(e) {\r
+                                       if (dom.hasClass(e, 'mceTmpl')) {\r
+                                               each(dom.select('*', e), function(e) {\r
+                                                       if (dom.hasClass(e, ed.getParam('template_mdate_classes', 'mdate').replace(/\s+/g, '|')))\r
+                                                               e.innerHTML = t._getDateTime(new Date(), ed.getParam("template_mdate_format", ed.getLang("template.mdate_format")));\r
+                                               });\r
+\r
+                                               t._replaceVals(e);\r
+                                       }\r
+                               });\r
+                       });\r
+               },\r
+\r
+               getInfo : function() {\r
+                       return {\r
+                               longname : 'Template plugin',\r
+                               author : 'Moxiecode Systems AB',\r
+                               authorurl : 'http://www.moxiecode.com',\r
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template',\r
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+                       };\r
+               },\r
+\r
+               _insertTemplate : function(ui, v) {\r
+                       var t = this, ed = t.editor, h, el, dom = ed.dom, sel = ed.selection.getContent();\r
+\r
+                       h = v.content;\r
+\r
+                       each(t.editor.getParam('template_replace_values'), function(v, k) {\r
+                               if (typeof(v) != 'function')\r
+                                       h = h.replace(new RegExp('\\{\\$' + k + '\\}', 'g'), v);\r
+                       });\r
+\r
+                       el = dom.create('div', null, h);\r
+\r
+                       // Find template element within div\r
+                       n = dom.select('.mceTmpl', el);\r
+                       if (n && n.length > 0) {\r
+                               el = dom.create('div', null);\r
+                               el.appendChild(n[0].cloneNode(true));\r
+                       }\r
+\r
+                       function hasClass(n, c) {\r
+                               return new RegExp('\\b' + c + '\\b', 'g').test(n.className);\r
+                       };\r
+\r
+                       each(dom.select('*', el), function(n) {\r
+                               // Replace cdate\r
+                               if (hasClass(n, ed.getParam('template_cdate_classes', 'cdate').replace(/\s+/g, '|')))\r
+                                       n.innerHTML = t._getDateTime(new Date(), ed.getParam("template_cdate_format", ed.getLang("template.cdate_format")));\r
+\r
+                               // Replace mdate\r
+                               if (hasClass(n, ed.getParam('template_mdate_classes', 'mdate').replace(/\s+/g, '|')))\r
+                                       n.innerHTML = t._getDateTime(new Date(), ed.getParam("template_mdate_format", ed.getLang("template.mdate_format")));\r
+\r
+                               // Replace selection\r
+                               if (hasClass(n, ed.getParam('template_selected_content_classes', 'selcontent').replace(/\s+/g, '|')))\r
+                                       n.innerHTML = sel;\r
+                       });\r
+\r
+                       t._replaceVals(el);\r
+\r
+                       ed.execCommand('mceInsertContent', false, el.innerHTML);\r
+                       ed.addVisual();\r
+               },\r
+\r
+               _replaceVals : function(e) {\r
+                       var dom = this.editor.dom, vl = this.editor.getParam('template_replace_values');\r
+\r
+                       each(dom.select('*', e), function(e) {\r
+                               each(vl, function(v, k) {\r
+                                       if (dom.hasClass(e, k)) {\r
+                                               if (typeof(vl[k]) == 'function')\r
+                                                       vl[k](e);\r
+                                       }\r
+                               });\r
+                       });\r
+               },\r
+\r
+               _getDateTime : function(d, fmt) {\r
+                               if (!fmt)\r
+                                       return "";\r
+\r
+                               function addZeros(value, len) {\r
+                                       var i;\r
+\r
+                                       value = "" + value;\r
+\r
+                                       if (value.length < len) {\r
+                                               for (i=0; i<(len-value.length); i++)\r
+                                                       value = "0" + value;\r
+                                       }\r
+\r
+                                       return value;\r
+                               }\r
+\r
+                               fmt = fmt.replace("%D", "%m/%d/%y");\r
+                               fmt = fmt.replace("%r", "%I:%M:%S %p");\r
+                               fmt = fmt.replace("%Y", "" + d.getFullYear());\r
+                               fmt = fmt.replace("%y", "" + d.getYear());\r
+                               fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));\r
+                               fmt = fmt.replace("%d", addZeros(d.getDate(), 2));\r
+                               fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));\r
+                               fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));\r
+                               fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));\r
+                               fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));\r
+                               fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));\r
+                               fmt = fmt.replace("%B", "" + this.editor.getLang("template_months_long").split(',')[d.getMonth()]);\r
+                               fmt = fmt.replace("%b", "" + this.editor.getLang("template_months_short").split(',')[d.getMonth()]);\r
+                               fmt = fmt.replace("%A", "" + this.editor.getLang("template_day_long").split(',')[d.getDay()]);\r
+                               fmt = fmt.replace("%a", "" + this.editor.getLang("template_day_short").split(',')[d.getDay()]);\r
+                               fmt = fmt.replace("%%", "%");\r
+\r
+                               return fmt;\r
+               }\r
+       });\r
+\r
+       // Register plugin\r
+       tinymce.PluginManager.add('template', tinymce.plugins.TemplatePlugin);\r
+})();
\ 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
new file mode 100644 (file)
index 0000000..bc3045d
--- /dev/null
@@ -0,0 +1,106 @@
+tinyMCEPopup.requireLangPack();\r
+\r
+var TemplateDialog = {\r
+       preInit : function() {\r
+               var url = tinyMCEPopup.getParam("template_external_list_url");\r
+\r
+               if (url != null)\r
+                       document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></sc'+'ript>');\r
+       },\r
+\r
+       init : function() {\r
+               var ed = tinyMCEPopup.editor, tsrc, sel, x, u;\r
+\r
+               tsrc = ed.getParam("template_templates", false);\r
+               sel = document.getElementById('tpath');\r
+\r
+               // Setup external template list\r
+               if (!tsrc && typeof(tinyMCETemplateList) != 'undefined') {\r
+                       for (x=0, tsrc = []; x<tinyMCETemplateList.length; x++)\r
+                               tsrc.push({title : tinyMCETemplateList[x][0], src : tinyMCETemplateList[x][1], description : tinyMCETemplateList[x][2]});\r
+               }\r
+\r
+               for (x=0; x<tsrc.length; x++)\r
+                       sel.options[sel.options.length] = new Option(tsrc[x].title, tinyMCEPopup.editor.documentBaseURI.toAbsolute(tsrc[x].src));\r
+\r
+               this.resize();\r
+               this.tsrc = tsrc;\r
+       },\r
+\r
+       resize : function() {\r
+               var w, h, e;\r
+\r
+               if (!self.innerWidth) {\r
+                       w = document.body.clientWidth - 50;\r
+                       h = document.body.clientHeight - 160;\r
+               } else {\r
+                       w = self.innerWidth - 50;\r
+                       h = self.innerHeight - 170;\r
+               }\r
+\r
+               e = document.getElementById('templatesrc');\r
+\r
+               if (e) {\r
+                       e.style.height = Math.abs(h) + 'px';\r
+                       e.style.width = Math.abs(w - 5) + 'px';\r
+               }\r
+       },\r
+\r
+       loadCSSFiles : function(d) {\r
+               var ed = tinyMCEPopup.editor;\r
+\r
+               tinymce.each(ed.getParam("content_css", '').split(','), function(u) {\r
+                       d.write('<link href="' + ed.documentBaseURI.toAbsolute(u) + '" rel="stylesheet" type="text/css" />');\r
+               });\r
+       },\r
+\r
+       selectTemplate : function(u, ti) {\r
+               var d = window.frames['templatesrc'].document, x, tsrc = this.tsrc;\r
+\r
+               if (!u)\r
+                       return;\r
+\r
+               d.body.innerHTML = this.templateHTML = this.getFileContents(u);\r
+\r
+               for (x=0; x<tsrc.length; x++) {\r
+                       if (tsrc[x].title == ti)\r
+                               document.getElementById('tmpldesc').innerHTML = tsrc[x].description || '';\r
+               }\r
+       },\r
+\r
+       insert : function() {\r
+               tinyMCEPopup.execCommand('mceInsertTemplate', false, {\r
+                       content : this.templateHTML,\r
+                       selection : tinyMCEPopup.editor.selection.getContent()\r
+               });\r
+\r
+               tinyMCEPopup.close();\r
+       },\r
+\r
+       getFileContents : function(u) {\r
+               var x, d, t = 'text/plain';\r
+\r
+               function g(s) {\r
+                       x = 0;\r
+\r
+                       try {\r
+                               x = new ActiveXObject(s);\r
+                       } catch (s) {\r
+                       }\r
+\r
+                       return x;\r
+               };\r
+\r
+               x = window.ActiveXObject ? g('Msxml2.XMLHTTP') || g('Microsoft.XMLHTTP') : new XMLHttpRequest();\r
+\r
+               // Synchronous AJAX load file\r
+               x.overrideMimeType && x.overrideMimeType(t);\r
+               x.open("GET", u, false);\r
+               x.send(null);\r
+\r
+               return x.responseText;\r
+       }\r
+};\r
+\r
+TemplateDialog.preInit();\r
+tinyMCEPopup.onInit.add(TemplateDialog.init, TemplateDialog);\r
diff --git a/program/js/tiny_mce/plugins/template/langs/ar_dlg.js b/program/js/tiny_mce/plugins/template/langs/ar_dlg.js
new file mode 100644 (file)
index 0000000..5bae50d
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..c7e8834
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..8791dcf
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..c7c09fb
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..803df2a
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..89dd021
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..8c71310
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..acf5e14
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..e6b10b2
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..5728ce1
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..04c9fa1
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..4f53722
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..83e599d
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..e54079f
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..185e45a
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..a1ad878
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..b458e9a
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..7ee0976
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..d3ce437
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..a9ee124
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..b74388b
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..cb2f785
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..35f38dd
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..c2bce38
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..b28de5b
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..447eec3
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..27a9300
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..c84fb17
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..78abd1f
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..4aae933
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..30605c2
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..3919ced
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..2a28ead
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..e6c59f9
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..5e47b4f
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..52a0654
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..4f2bc59
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..acd3304
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..8900919
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..82fbb64
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..06d005e
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..bc41014
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..c326651
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..86d2137
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..727d66d
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..a6ce09c
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..8c08beb
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..8039216
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..d50032d
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..add47e8
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..aae6017
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..97ce1d0
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..dfa9f2d
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..a457122
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..1c19bec
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..a6217b9
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..e86dd3d
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..b2182e6
--- /dev/null
@@ -0,0 +1,31 @@
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+       <title>{#template_dlg.title}</title>\r
+       <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+       <script type="text/javascript" src="js/template.js"></script>\r
+       <link href="css/template.css" rel="stylesheet" type="text/css" />\r
+</head>\r
+<body onresize="TemplateDialog.resize();"> \r
+       <form onsubmit="TemplateDialog.insert();return false;">\r
+               <div id="frmbody">\r
+                       <div class="title">{#template_dlg.desc}</div>\r
+                       <div class="frmRow"><label for="tpath" title="{#template_dlg.select}">{#template_dlg.label}:</label>\r
+                       <select id="tpath" name="tpath" onchange="TemplateDialog.selectTemplate(this.options[this.selectedIndex].value, this.options[this.selectedIndex].text);" class="mceFocus">\r
+                               <option value="">{#template_dlg.select}...</option>\r
+                       </select>\r
+                       <span id="warning"></span></div>\r
+                       <div class="frmRow"><label for="tdesc">{#template_dlg.desc_label}:</label>\r
+                       <span id="tmpldesc"></span></div>\r
+                       <fieldset>\r
+                               <legend>{#template_dlg.preview}</legend>\r
+                               <iframe id="templatesrc" name="templatesrc" src="blank.htm" width="690" height="400" frameborder="0"></iframe>\r
+                       </fieldset>\r
+               </div>\r
+               \r
+               <div class="mceActionPanel">\r
+                       <input type="submit" id="insert" name="insert" value="{#insert}" />\r
+                       <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+               </div>\r
+       </form>\r
+</body> \r
+</html> \r
diff --git a/program/js/tiny_mce/plugins/visualblocks/css/visualblocks.css b/program/js/tiny_mce/plugins/visualblocks/css/visualblocks.css
new file mode 100644 (file)
index 0000000..76bc92b
--- /dev/null
@@ -0,0 +1,21 @@
+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}\r
+p, h1, h2, h3, h4, h5, h6, hgroup, aside, div, section, article, address, pre, figure {margin-left: 3px}\r
+section, article, address, hgroup, aside, figure {margin: 0 0 1em 3px}\r
+\r
+p {background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}\r
+h1 {background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}\r
+h2 {background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}\r
+h3 {background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}\r
+h4 {background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}\r
+h5 {background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}\r
+h6 {background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}\r
+div {background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}\r
+section {background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}\r
+article {background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}\r
+blockquote {background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}\r
+address {background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}\r
+pre {background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}\r
+hgroup {background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}\r
+aside {background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}\r
+figure {background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}\r
+figcaption {border: 1px dashed #BBB}\r
diff --git a/program/js/tiny_mce/plugins/visualblocks/editor_plugin.js b/program/js/tiny_mce/plugins/visualblocks/editor_plugin.js
new file mode 100644 (file)
index 0000000..c65eaf2
--- /dev/null
@@ -0,0 +1 @@
+(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
new file mode 100644 (file)
index 0000000..b9d2ab2
--- /dev/null
@@ -0,0 +1,63 @@
+/**\r
+ * editor_plugin_src.js\r
+ *\r
+ * Copyright 2012, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ */\r
+\r
+(function() {\r
+       tinymce.create('tinymce.plugins.VisualBlocks', {\r
+               init : function(ed, url) {\r
+                       var cssId;\r
+\r
+                       // We don't support older browsers like IE6/7 and they don't provide prototypes for DOM objects\r
+                       if (!window.NodeList) {\r
+                               return;\r
+                       }\r
+\r
+                       ed.addCommand('mceVisualBlocks', function() {\r
+                               var dom = ed.dom, linkElm;\r
+\r
+                               if (!cssId) {\r
+                                       cssId = dom.uniqueId();\r
+                                       linkElm = dom.create('link', {\r
+                                               id: cssId,\r
+                                               rel : 'stylesheet',\r
+                                               href : url + '/css/visualblocks.css'\r
+                                       });\r
+\r
+                                       ed.getDoc().getElementsByTagName('head')[0].appendChild(linkElm);\r
+                               } else {\r
+                                       linkElm = dom.get(cssId);\r
+                                       linkElm.disabled = !linkElm.disabled;\r
+                               }\r
+\r
+                               ed.controlManager.setActive('visualblocks', !linkElm.disabled);\r
+                       });\r
+\r
+                       ed.addButton('visualblocks', {title : 'visualblocks.desc', cmd : 'mceVisualBlocks'});\r
+\r
+                       ed.onInit.add(function() {\r
+                               if (ed.settings.visualblocks_default_state) {\r
+                                       ed.execCommand('mceVisualBlocks', false, null, {skip_focus : true});\r
+                               }\r
+                       });\r
+               },\r
+\r
+               getInfo : function() {\r
+                       return {\r
+                               longname : 'Visual blocks',\r
+                               author : 'Moxiecode Systems AB',\r
+                               authorurl : 'http://tinymce.moxiecode.com',\r
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualblocks',\r
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+                       };\r
+               }\r
+       });\r
+\r
+       // Register plugin\r
+       tinymce.PluginManager.add('visualblocks', tinymce.plugins.VisualBlocks);\r
+})();
\ 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
new file mode 100644 (file)
index 0000000..42ece20
--- /dev/null
@@ -0,0 +1 @@
+(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
new file mode 100644 (file)
index 0000000..34b2655
--- /dev/null
@@ -0,0 +1,122 @@
+/**\r
+ * editor_plugin_src.js\r
+ *\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ */\r
+\r
+(function() {\r
+       tinymce.create('tinymce.plugins.WordCount', {\r
+               block : 0,\r
+               id : null,\r
+               countre : null,\r
+               cleanre : null,\r
+\r
+               init : function(ed, url) {\r
+                       var t = this, last = 0, VK = tinymce.VK;\r
+\r
+                       t.countre = ed.getParam('wordcount_countregex', /[\w\u2019\'-]+/g); // u2019 == &rsquo;\r
+                       t.cleanre = ed.getParam('wordcount_cleanregex', /[0-9.(),;:!?%#$?\'\"_+=\\\/-]*/g);\r
+                       t.update_rate = ed.getParam('wordcount_update_rate', 2000);\r
+                       t.update_on_delete = ed.getParam('wordcount_update_on_delete', false);\r
+                       t.id = ed.id + '-word-count';\r
+\r
+                       ed.onPostRender.add(function(ed, cm) {\r
+                               var row, id;\r
+\r
+                               // Add it to the specified id or the theme advanced path\r
+                               id = ed.getParam('wordcount_target_id');\r
+                               if (!id) {\r
+                                       row = tinymce.DOM.get(ed.id + '_path_row');\r
+\r
+                                       if (row)\r
+                                               tinymce.DOM.add(row.parentNode, 'div', {'style': 'float: right'}, ed.getLang('wordcount.words', 'Words: ') + '<span id="' + t.id + '">0</span>');\r
+                               } else {\r
+                                       tinymce.DOM.add(id, 'span', {}, '<span id="' + t.id + '">0</span>');\r
+                               }\r
+                       });\r
+\r
+                       ed.onInit.add(function(ed) {\r
+                               ed.selection.onSetContent.add(function() {\r
+                                       t._count(ed);\r
+                               });\r
+\r
+                               t._count(ed);\r
+                       });\r
+\r
+                       ed.onSetContent.add(function(ed) {\r
+                               t._count(ed);\r
+                       });\r
+\r
+                       function checkKeys(key) {\r
+                               return key !== last && (key === VK.ENTER || last === VK.SPACEBAR || checkDelOrBksp(last));\r
+                       }\r
+\r
+                       function checkDelOrBksp(key) {\r
+                               return key === VK.DELETE || key === VK.BACKSPACE;\r
+                       }\r
+\r
+                       ed.onKeyUp.add(function(ed, e) {\r
+                               if (checkKeys(e.keyCode) || t.update_on_delete && checkDelOrBksp(e.keyCode)) {\r
+                                       t._count(ed);\r
+                               }\r
+\r
+                               last = e.keyCode;\r
+                       });\r
+               },\r
+\r
+               _getCount : function(ed) {\r
+                       var tc = 0;\r
+                       var tx = ed.getContent({ format: 'raw' });\r
+\r
+                       if (tx) {\r
+                                       tx = tx.replace(/\.\.\./g, ' '); // convert ellipses to spaces\r
+                                       tx = tx.replace(/<.[^<>]*?>/g, ' ').replace(/&nbsp;|&#160;/gi, ' '); // remove html tags and space chars\r
+\r
+                                       // deal with html entities\r
+                                       tx = tx.replace(/(\w+)(&.+?;)+(\w+)/, "$1$3").replace(/&.+?;/g, ' ');\r
+                                       tx = tx.replace(this.cleanre, ''); // remove numbers and punctuation\r
+\r
+                                       var wordArray = tx.match(this.countre);\r
+                                       if (wordArray) {\r
+                                                       tc = wordArray.length;\r
+                                       }\r
+                       }\r
+\r
+                       return tc;\r
+               },\r
+\r
+               _count : function(ed) {\r
+                       var t = this;\r
+\r
+                       // Keep multiple calls from happening at the same time\r
+                       if (t.block)\r
+                               return;\r
+\r
+                       t.block = 1;\r
+\r
+                       setTimeout(function() {\r
+                               if (!ed.destroyed) {\r
+                                       var tc = t._getCount(ed);\r
+                                       tinymce.DOM.setHTML(t.id, tc.toString());\r
+                                       setTimeout(function() {t.block = 0;}, t.update_rate);\r
+                               }\r
+                       }, 1);\r
+               },\r
+\r
+               getInfo: function() {\r
+                       return {\r
+                               longname : 'Word Count plugin',\r
+                               author : 'Moxiecode Systems AB',\r
+                               authorurl : 'http://tinymce.moxiecode.com',\r
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/wordcount',\r
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+                       };\r
+               }\r
+       });\r
+\r
+       tinymce.PluginManager.add('wordcount', tinymce.plugins.WordCount);\r
+})();\r
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/abbr.htm b/program/js/tiny_mce/plugins/xhtmlxtras/abbr.htm
new file mode 100644 (file)
index 0000000..30a894f
--- /dev/null
@@ -0,0 +1,142 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+       <title>{#xhtmlxtras_dlg.title_abbr_element}</title>\r
+       <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+       <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
+       <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
+       <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
+       <script type="text/javascript" src="js/element_common.js"></script>\r
+       <script type="text/javascript" src="js/abbr.js"></script>\r
+       <link rel="stylesheet" type="text/css" href="css/popup.css" />\r
+</head>\r
+<body style="display: none" role="application" aria-labelledby="app_title">\r
+<span style="display:none;" id="app_title">{#xhtmlxtras_dlg.title_abbr_element}</span>\r
+<form onsubmit="insertAbbr();return false;" action="#">\r
+       <div class="tabs">\r
+               <ul>\r
+                       <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>\r
+                       <!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->\r
+               </ul>\r
+       </div>\r
+\r
+       <div class="panel_wrapper">\r
+               <div id="general_panel" class="panel current">\r
+                       <fieldset>\r
+                               <legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>\r
+                               <table role="presentation" border="0" cellpadding="0" cellspacing="4">\r
+                                       <tr>\r
+                                               <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td> \r
+                                               <td><input id="title" name="title" type="text" value="" class="field mceFocus" /></td> \r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td> \r
+                                               <td><input id="id" name="id" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td> \r
+                                               <td>\r
+                                                       <select id="class" name="class" class="field mceEditableSelect">\r
+                                                               <option value="">{#not_set}</option> \r
+                                                       </select>\r
+                                               </td>\r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td class="label"><label id="stylelabel" for="style">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> \r
+                                               <td><input id="style" name="style" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td> \r
+                                               <td>\r
+                                                       <select id="dir" name="dir" class="field"> \r
+                                                               <option value="">{#not_set}</option> \r
+                                                               <option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option> \r
+                                                               <option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option> \r
+                                                       </select>\r
+                                               </td> \r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td> \r
+                                               <td>\r
+                                                       <input id="lang" name="lang" type="text" value="" class="field" />\r
+                                               </td> \r
+                                       </tr>\r
+                               </table>\r
+                       </fieldset>\r
+               </div>\r
+               <div id="events_panel" class="panel">\r
+                       <fieldset>\r
+                               <legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>\r
+\r
+                               <table role="presentation" border="0" cellpadding="0" cellspacing="4">\r
+                                       <tr>\r
+                                               <td class="label"><label for="onfocus">onfocus</label>:</td> \r
+                                               <td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onblur">onblur</label>:</td> \r
+                                               <td><input id="onblur" name="onblur" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onclick">onclick</label>:</td> \r
+                                               <td><input id="onclick" name="onclick" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="ondblclick">ondblclick</label>:</td> \r
+                                               <td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onmousedown">onmousedown</label>:</td> \r
+                                               <td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onmouseup">onmouseup</label>:</td> \r
+                                               <td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onmouseover">onmouseover</label>:</td> \r
+                                               <td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onmousemove">onmousemove</label>:</td> \r
+                                               <td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onmouseout">onmouseout</label>:</td> \r
+                                               <td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onkeypress">onkeypress</label>:</td> \r
+                                               <td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onkeydown">onkeydown</label>:</td> \r
+                                               <td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onkeyup">onkeyup</label>:</td> \r
+                                               <td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+                               </table>\r
+                       </fieldset>\r
+               </div>\r
+       </div>\r
+       <div class="mceActionPanel">\r
+               <input type="submit" id="insert" name="insert" value="{#update}" />\r
+               <input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeAbbr();" style="display: none;" />\r
+               <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+       </div>\r
+</form>\r
+</body>\r
+</html>\r
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/acronym.htm b/program/js/tiny_mce/plugins/xhtmlxtras/acronym.htm
new file mode 100644 (file)
index 0000000..c109345
--- /dev/null
@@ -0,0 +1,142 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+       <title>{#xhtmlxtras_dlg.title_acronym_element}</title>\r
+       <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+       <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
+       <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
+       <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
+       <script type="text/javascript" src="js/element_common.js"></script>\r
+       <script type="text/javascript" src="js/acronym.js"></script>\r
+       <link rel="stylesheet" type="text/css" href="css/popup.css" />\r
+</head>\r
+<body style="display: none" role="application" aria-labelledby="app_title">\r
+<span style="display:none;" id="app_title">{#xhtmlxtras_dlg.title_acronym_element}</span>\r
+<form onsubmit="insertAcronym();return false;" action="#">\r
+       <div class="tabs">\r
+               <ul>\r
+                       <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>\r
+                       <!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->\r
+               </ul>\r
+       </div>\r
+\r
+       <div class="panel_wrapper">\r
+               <div id="general_panel" class="panel current">\r
+                       <fieldset>\r
+                               <legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>\r
+                               <table role="presentation" border="0" cellpadding="0" cellspacing="4">\r
+                                       <tr>\r
+                                               <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td> \r
+                                               <td><input id="title" name="title" type="text" value="" class="field mceFocus" /></td> \r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td> \r
+                                               <td><input id="id" name="id" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td> \r
+                                               <td>\r
+                                                       <select id="class" name="class" class="field mceEditableSelect">\r
+                                                               <option value="">{#not_set}</option> \r
+                                                       </select>\r
+                                               </td>\r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td class="label"><label id="stylelabel" for="style">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> \r
+                                               <td><input id="style" name="style" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td> \r
+                                               <td>\r
+                                                       <select id="dir" name="dir" class="field"> \r
+                                                               <option value="">{#not_set}</option> \r
+                                                               <option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option> \r
+                                                               <option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option> \r
+                                                       </select>\r
+                                               </td> \r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td> \r
+                                               <td>\r
+                                                       <input id="lang" name="lang" type="text" value="" class="field" />\r
+                                               </td> \r
+                                       </tr>\r
+                               </table>\r
+                       </fieldset>\r
+               </div>\r
+               <div id="events_panel" class="panel">\r
+                       <fieldset>\r
+                               <legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>\r
+\r
+                               <table role="presentation" border="0" cellpadding="0" cellspacing="4">\r
+                                       <tr>\r
+                                               <td class="label"><label for="onfocus">onfocus</label>:</td> \r
+                                               <td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onblur">onblur</label>:</td> \r
+                                               <td><input id="onblur" name="onblur" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onclick">onclick</label>:</td> \r
+                                               <td><input id="onclick" name="onclick" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="ondblclick">ondblclick</label>:</td> \r
+                                               <td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onmousedown">onmousedown</label>:</td> \r
+                                               <td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onmouseup">onmouseup</label>:</td> \r
+                                               <td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onmouseover">onmouseover</label>:</td> \r
+                                               <td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onmousemove">onmousemove</label>:</td> \r
+                                               <td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onmouseout">onmouseout</label>:</td> \r
+                                               <td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onkeypress">onkeypress</label>:</td> \r
+                                               <td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onkeydown">onkeydown</label>:</td> \r
+                                               <td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onkeyup">onkeyup</label>:</td> \r
+                                               <td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+                               </table>\r
+                       </fieldset>\r
+               </div>\r
+       </div>\r
+       <div class="mceActionPanel">\r
+               <input type="submit" id="insert" name="insert" value="{#update}" />\r
+               <input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeAcronym();" style="display: none;" />\r
+               <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+       </div>\r
+</form>\r
+</body>\r
+</html>\r
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/attributes.htm b/program/js/tiny_mce/plugins/xhtmlxtras/attributes.htm
new file mode 100644 (file)
index 0000000..e8d606a
--- /dev/null
@@ -0,0 +1,149 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+       <title>{#xhtmlxtras_dlg.attribs_title}</title>\r
+       <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+       <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
+       <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
+       <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
+       <script type="text/javascript" src="js/attributes.js"></script>\r
+       <link rel="stylesheet" type="text/css" href="css/attributes.css" />\r
+</head>\r
+<body style="display: none" role="application" aria-labelledby="app_title">\r
+<span style="display:none;" id="app_title">{#xhtmlxtras_dlg.attribs_title}</span>\r
+<form onsubmit="insertAction();return false;" action="#">\r
+       <div class="tabs">\r
+               <ul>\r
+                       <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>\r
+                       <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>\r
+               </ul>\r
+       </div>\r
+\r
+       <div class="panel_wrapper">\r
+               <div id="general_panel" class="panel current">\r
+                       <fieldset>\r
+                               <legend>{#xhtmlxtras_dlg.attribute_attrib_tab}</legend>\r
+                               <table role="presentation" border="0" cellpadding="0" cellspacing="4">\r
+                                       <tr>\r
+                                               <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td> \r
+                                               <td><input id="title" name="title" type="text" value="" class="mceFocus" /></td> \r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td> \r
+                                               <td><input id="id" name="id" type="text" value="" /></td> \r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td><label id="classlabel" for="classlist">{#class_name}</label></td>\r
+                                               <td>\r
+                                                       <select id="classlist" name="classlist" class="mceEditableSelect">\r
+                                                               <option value="" selected="selected">{#not_set}</option>\r
+                                                       </select>\r
+                                               </td>\r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td class="label"><label id="stylelabel" for="style">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> \r
+                                               <td><input id="style" name="style" type="text" value="" /></td> \r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td> \r
+                                               <td>\r
+                                                       <select id="dir" name="dir"> \r
+                                                               <option value="">{#not_set}</option> \r
+                                                               <option value="ltr">{#xhtmlxtras_dlg.option_ltr}</option> \r
+                                                               <option value="rtl">{#xhtmlxtras_dlg.option_rtl}</option> \r
+                                                       </select>\r
+                                               </td> \r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td> \r
+                                               <td>\r
+                                                       <input id="lang" name="lang" type="text" value="" />\r
+                                               </td> \r
+                                       </tr>\r
+                                       <tr>\r
+                                                       <td><label id="tabindexlabel" for="tabindex">{#xhtmlxtras_dlg.attribute_label_tabindex}</label></td>\r
+                                                       <td><input type="text" id="tabindex" name="tabindex" value="" /></td>\r
+                                               </tr>\r
+\r
+                                               <tr>\r
+                                                       <td><label id="accesskeylabel" for="accesskey">{#xhtmlxtras_dlg.attribute_label_accesskey}</label></td>\r
+                                                       <td><input type="text" id="accesskey" name="accesskey" value="" /></td>\r
+                                               </tr>\r
+                               </table>\r
+                       </fieldset>\r
+               </div>\r
+               <div id="events_panel" class="panel">\r
+                       <fieldset>\r
+                               <legend>{#xhtmlxtras_dlg.attribute_events_tab}</legend>\r
+\r
+                               <table role="presentation" border="0" cellpadding="0" cellspacing="4">\r
+                                       <tr>\r
+                                               <td class="label"><label for="onfocus">onfocus</label>:</td> \r
+                                               <td><input id="onfocus" name="onfocus" type="text" value="" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onblur">onblur</label>:</td> \r
+                                               <td><input id="onblur" name="onblur" type="text" value="" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onclick">onclick</label>:</td> \r
+                                               <td><input id="onclick" name="onclick" type="text" value="" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="ondblclick">ondblclick</label>:</td> \r
+                                               <td><input id="ondblclick" name="ondblclick" type="text" value="" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onmousedown">onmousedown</label>:</td> \r
+                                               <td><input id="onmousedown" name="onmousedown" type="text" value="" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onmouseup">onmouseup</label>:</td> \r
+                                               <td><input id="onmouseup" name="onmouseup" type="text" value="" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onmouseover">onmouseover</label>:</td> \r
+                                               <td><input id="onmouseover" name="onmouseover" type="text" value="" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onmousemove">onmousemove</label>:</td> \r
+                                               <td><input id="onmousemove" name="onmousemove" type="text" value="" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onmouseout">onmouseout</label>:</td> \r
+                                               <td><input id="onmouseout" name="onmouseout" type="text" value="" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onkeypress">onkeypress</label>:</td> \r
+                                               <td><input id="onkeypress" name="onkeypress" type="text" value="" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onkeydown">onkeydown</label>:</td> \r
+                                               <td><input id="onkeydown" name="onkeydown" type="text" value="" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onkeyup">onkeyup</label>:</td> \r
+                                               <td><input id="onkeyup" name="onkeyup" type="text" value="" /></td> \r
+                                       </tr>\r
+                               </table>\r
+                       </fieldset>\r
+               </div>\r
+       </div>\r
+       <div class="mceActionPanel">\r
+               <input type="submit" id="insert" name="insert" value="{#insert}" />\r
+               <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+       </div>\r
+</form>\r
+</body>\r
+</html>\r
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/cite.htm b/program/js/tiny_mce/plugins/xhtmlxtras/cite.htm
new file mode 100644 (file)
index 0000000..0ac6bdb
--- /dev/null
@@ -0,0 +1,142 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+       <title>{#xhtmlxtras_dlg.title_cite_element}</title>\r
+       <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+       <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
+       <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
+       <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
+       <script type="text/javascript" src="js/element_common.js"></script>\r
+       <script type="text/javascript" src="js/cite.js"></script>\r
+       <link rel="stylesheet" type="text/css" href="css/popup.css" />\r
+</head>\r
+<body style="display: none" role="application" aria-labelledby="app_title">\r
+<span style="display:none;" id="app_title">{#xhtmlxtras_dlg.title_cite_element}</span>\r
+<form onsubmit="insertCite();return false;" action="#">\r
+       <div class="tabs">\r
+               <ul>\r
+                       <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>\r
+                       <!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->\r
+               </ul>\r
+       </div>\r
+\r
+       <div class="panel_wrapper">\r
+               <div id="general_panel" class="panel current">\r
+                       <fieldset>\r
+                               <legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>\r
+                               <table role="presentation" border="0" cellpadding="0" cellspacing="4">\r
+                                       <tr>\r
+                                               <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td> \r
+                                               <td><input id="title" name="title" type="text" value="" class="field mceFocus" /></td> \r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td> \r
+                                               <td><input id="id" name="id" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td> \r
+                                               <td>\r
+                                                       <select id="class" name="class" class="field mceEditableSelect">\r
+                                                               <option value="">{#not_set}</option> \r
+                                                       </select>\r
+                                               </td>\r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> \r
+                                               <td><input id="style" name="style" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td> \r
+                                               <td>\r
+                                                       <select id="dir" name="dir" class="field"> \r
+                                                               <option value="">{#not_set}</option> \r
+                                                               <option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option> \r
+                                                               <option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option> \r
+                                                       </select>\r
+                                               </td> \r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td> \r
+                                               <td>\r
+                                                       <input id="lang" name="lang" type="text" value="" class="field" />\r
+                                               </td> \r
+                                       </tr>\r
+                               </table>\r
+                       </fieldset>\r
+               </div>\r
+               <div id="events_panel" class="panel">\r
+                       <fieldset>\r
+                               <legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>\r
+\r
+                               <table role="presentation" border="0" cellpadding="0" cellspacing="4">\r
+                                       <tr>\r
+                                               <td class="label"><label for="onfocus">onfocus</label>:</td> \r
+                                               <td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onblur">onblur</label>:</td> \r
+                                               <td><input id="onblur" name="onblur" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onclick">onclick</label>:</td> \r
+                                               <td><input id="onclick" name="onclick" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="ondblclick">ondblclick</label>:</td> \r
+                                               <td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onmousedown">onmousedown</label>:</td> \r
+                                               <td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onmouseup">onmouseup</label>:</td> \r
+                                               <td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onmouseover">onmouseover</label>:</td> \r
+                                               <td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onmousemove">onmousemove</label>:</td> \r
+                                               <td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onmouseout">onmouseout</label>:</td> \r
+                                               <td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onkeypress">onkeypress</label>:</td> \r
+                                               <td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onkeydown">onkeydown</label>:</td> \r
+                                               <td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onkeyup">onkeyup</label>:</td> \r
+                                               <td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+                               </table>\r
+                       </fieldset>\r
+               </div>\r
+       </div>\r
+       <div class="mceActionPanel">\r
+               <input type="submit" id="insert" name="insert" value="{#update}" />\r
+               <input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeCite();" style="display: none;" />\r
+               <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+       </div>\r
+</form>\r
+</body>\r
+</html>\r
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/css/attributes.css b/program/js/tiny_mce/plugins/xhtmlxtras/css/attributes.css
new file mode 100644 (file)
index 0000000..9a6a235
--- /dev/null
@@ -0,0 +1,11 @@
+.panel_wrapper div.current {\r
+       height: 290px;\r
+}\r
+\r
+#id, #style, #title, #dir, #hreflang, #lang, #classlist, #tabindex, #accesskey {\r
+       width: 200px;\r
+}\r
+\r
+#events_panel input {\r
+       width: 200px;\r
+}\r
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/css/popup.css b/program/js/tiny_mce/plugins/xhtmlxtras/css/popup.css
new file mode 100644 (file)
index 0000000..e67114d
--- /dev/null
@@ -0,0 +1,9 @@
+input.field, select.field {width:200px;}\r
+input.picker {width:179px; margin-left: 5px;}\r
+input.disabled {border-color:#F2F2F2;}\r
+img.picker {vertical-align:text-bottom; cursor:pointer;}\r
+h1 {padding: 0 0 5px 0;}\r
+.panel_wrapper div.current {height:160px;}\r
+#xhtmlxtrasdel .panel_wrapper div.current, #xhtmlxtrasins .panel_wrapper div.current {height: 230px;}\r
+a.browse span {display:block; width:20px; height:20px; background:url('../../../themes/advanced/img/icons.gif') -140px -20px;}\r
+#datetime {width:180px;}\r
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/del.htm b/program/js/tiny_mce/plugins/xhtmlxtras/del.htm
new file mode 100644 (file)
index 0000000..5f66751
--- /dev/null
@@ -0,0 +1,162 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+       <title>{#xhtmlxtras_dlg.title_del_element}</title>\r
+       <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+       <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
+       <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
+       <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
+       <script type="text/javascript" src="js/element_common.js"></script>\r
+       <script type="text/javascript" src="js/del.js"></script>\r
+       <link rel="stylesheet" type="text/css" href="css/popup.css" />\r
+</head>\r
+<body id="xhtmlxtrasins" style="display: none" role="application" aria-labelledby="app_title">\r
+<span style="display:none;" id="app_title">{#xhtmlxtras_dlg.title_del_element}</span>\r
+<form onsubmit="insertDel();return false;" action="#">\r
+       <div class="tabs">\r
+               <ul>\r
+                       <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>\r
+                       <!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->\r
+               </ul>\r
+       </div>\r
+\r
+       <div class="panel_wrapper">\r
+               <div id="general_panel" class="panel current">\r
+                       <fieldset>\r
+                               <legend>{#xhtmlxtras_dlg.fieldset_general_tab}</legend>\r
+                               <table role="presentation" border="0" cellpadding="0" cellspacing="4">\r
+                                       <tr>\r
+                                               <td class="label"><label id="datetimelabel" for="datetime">{#xhtmlxtras_dlg.attribute_label_datetime}</label>:</td>\r
+                                               <td>\r
+                                                       <table role="presentation" border="0" cellspacing="0" cellpadding="0">\r
+                                                               <tr> \r
+                                                                       <td><input id="datetime" name="datetime" type="text" value="" maxlength="19" class="field mceFocus" /></td> \r
+                                                                       <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>\r
+                                                               </tr>\r
+                                                       </table>\r
+                                               </td>\r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td class="label"><label id="citelabel" for="cite">{#xhtmlxtras_dlg.attribute_label_cite}</label>:</td>\r
+                                               <td><input id="cite" name="cite" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+                               </table>\r
+                       </fieldset>\r
+                       <fieldset>\r
+                               <legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>\r
+                               <table role="presentation" border="0" cellpadding="0" cellspacing="4">\r
+                                       <tr>\r
+                                               <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td> \r
+                                               <td><input id="title" name="title" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td> \r
+                                               <td><input id="id" name="id" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td> \r
+                                               <td>\r
+                                                       <select id="class" name="class" class="field mceEditableSelect">\r
+                                                               <option value="">{#not_set}</option> \r
+                                                       </select>\r
+                                               </td>\r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td class="label"><label id="stylelabel" for="style">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> \r
+                                               <td><input id="style" name="style" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td> \r
+                                               <td>\r
+                                                       <select id="dir" name="dir" class="field"> \r
+                                                               <option value="">{#not_set}</option> \r
+                                                               <option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option> \r
+                                                               <option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option> \r
+                                                       </select>\r
+                                               </td> \r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td> \r
+                                               <td>\r
+                                                       <input id="lang" name="lang" type="text" value="" class="field" />\r
+                                               </td> \r
+                                       </tr>\r
+                               </table>\r
+                       </fieldset>\r
+               </div>\r
+               <div id="events_panel" class="panel">\r
+                       <fieldset>\r
+                               <legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>\r
+\r
+                               <table role="presentation" border="0" cellpadding="0" cellspacing="4">\r
+                                       <tr>\r
+                                               <td class="label"><label for="onfocus">onfocus</label>:</td> \r
+                                               <td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onblur">onblur</label>:</td> \r
+                                               <td><input id="onblur" name="onblur" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onclick">onclick</label>:</td> \r
+                                               <td><input id="onclick" name="onclick" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="ondblclick">ondblclick</label>:</td> \r
+                                               <td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onmousedown">onmousedown</label>:</td> \r
+                                               <td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onmouseup">onmouseup</label>:</td> \r
+                                               <td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onmouseover">onmouseover</label>:</td> \r
+                                               <td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onmousemove">onmousemove</label>:</td> \r
+                                               <td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onmouseout">onmouseout</label>:</td> \r
+                                               <td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onkeypress">onkeypress</label>:</td> \r
+                                               <td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onkeydown">onkeydown</label>:</td> \r
+                                               <td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onkeyup">onkeyup</label>:</td> \r
+                                               <td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+                               </table>\r
+                       </fieldset>\r
+               </div>\r
+       </div>\r
+       <div class="mceActionPanel">\r
+               <input type="submit" id="insert" name="insert" value="{#update}" />\r
+               <input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeDel();" style="display: none;" />\r
+               <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+       </div>\r
+</form>\r
+</body>\r
+</html>\r
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/editor_plugin.js b/program/js/tiny_mce/plugins/xhtmlxtras/editor_plugin.js
new file mode 100644 (file)
index 0000000..9b98a51
--- /dev/null
@@ -0,0 +1 @@
+(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
new file mode 100644 (file)
index 0000000..f240572
--- /dev/null
@@ -0,0 +1,132 @@
+/**\r
+ * editor_plugin_src.js\r
+ *\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ */\r
+\r
+(function() {\r
+       tinymce.create('tinymce.plugins.XHTMLXtrasPlugin', {\r
+               init : function(ed, url) {\r
+                       // Register commands\r
+                       ed.addCommand('mceCite', function() {\r
+                               ed.windowManager.open({\r
+                                       file : url + '/cite.htm',\r
+                                       width : 350 + parseInt(ed.getLang('xhtmlxtras.cite_delta_width', 0)),\r
+                                       height : 250 + parseInt(ed.getLang('xhtmlxtras.cite_delta_height', 0)),\r
+                                       inline : 1\r
+                               }, {\r
+                                       plugin_url : url\r
+                               });\r
+                       });\r
+\r
+                       ed.addCommand('mceAcronym', function() {\r
+                               ed.windowManager.open({\r
+                                       file : url + '/acronym.htm',\r
+                                       width : 350 + parseInt(ed.getLang('xhtmlxtras.acronym_delta_width', 0)),\r
+                                       height : 250 + parseInt(ed.getLang('xhtmlxtras.acronym_delta_height', 0)),\r
+                                       inline : 1\r
+                               }, {\r
+                                       plugin_url : url\r
+                               });\r
+                       });\r
+\r
+                       ed.addCommand('mceAbbr', function() {\r
+                               ed.windowManager.open({\r
+                                       file : url + '/abbr.htm',\r
+                                       width : 350 + parseInt(ed.getLang('xhtmlxtras.abbr_delta_width', 0)),\r
+                                       height : 250 + parseInt(ed.getLang('xhtmlxtras.abbr_delta_height', 0)),\r
+                                       inline : 1\r
+                               }, {\r
+                                       plugin_url : url\r
+                               });\r
+                       });\r
+\r
+                       ed.addCommand('mceDel', function() {\r
+                               ed.windowManager.open({\r
+                                       file : url + '/del.htm',\r
+                                       width : 340 + parseInt(ed.getLang('xhtmlxtras.del_delta_width', 0)),\r
+                                       height : 310 + parseInt(ed.getLang('xhtmlxtras.del_delta_height', 0)),\r
+                                       inline : 1\r
+                               }, {\r
+                                       plugin_url : url\r
+                               });\r
+                       });\r
+\r
+                       ed.addCommand('mceIns', function() {\r
+                               ed.windowManager.open({\r
+                                       file : url + '/ins.htm',\r
+                                       width : 340 + parseInt(ed.getLang('xhtmlxtras.ins_delta_width', 0)),\r
+                                       height : 310 + parseInt(ed.getLang('xhtmlxtras.ins_delta_height', 0)),\r
+                                       inline : 1\r
+                               }, {\r
+                                       plugin_url : url\r
+                               });\r
+                       });\r
+\r
+                       ed.addCommand('mceAttributes', function() {\r
+                               ed.windowManager.open({\r
+                                       file : url + '/attributes.htm',\r
+                                       width : 380 + parseInt(ed.getLang('xhtmlxtras.attr_delta_width', 0)),\r
+                                       height : 370 + parseInt(ed.getLang('xhtmlxtras.attr_delta_height', 0)),\r
+                                       inline : 1\r
+                               }, {\r
+                                       plugin_url : url\r
+                               });\r
+                       });\r
+\r
+                       // Register buttons\r
+                       ed.addButton('cite', {title : 'xhtmlxtras.cite_desc', cmd : 'mceCite'});\r
+                       ed.addButton('acronym', {title : 'xhtmlxtras.acronym_desc', cmd : 'mceAcronym'});\r
+                       ed.addButton('abbr', {title : 'xhtmlxtras.abbr_desc', cmd : 'mceAbbr'});\r
+                       ed.addButton('del', {title : 'xhtmlxtras.del_desc', cmd : 'mceDel'});\r
+                       ed.addButton('ins', {title : 'xhtmlxtras.ins_desc', cmd : 'mceIns'});\r
+                       ed.addButton('attribs', {title : 'xhtmlxtras.attribs_desc', cmd : 'mceAttributes'});\r
+\r
+                       ed.onNodeChange.add(function(ed, cm, n, co) {\r
+                               n = ed.dom.getParent(n, 'CITE,ACRONYM,ABBR,DEL,INS');\r
+\r
+                               cm.setDisabled('cite', co);\r
+                               cm.setDisabled('acronym', co);\r
+                               cm.setDisabled('abbr', co);\r
+                               cm.setDisabled('del', co);\r
+                               cm.setDisabled('ins', co);\r
+                               cm.setDisabled('attribs', n && n.nodeName == 'BODY');\r
+                               cm.setActive('cite', 0);\r
+                               cm.setActive('acronym', 0);\r
+                               cm.setActive('abbr', 0);\r
+                               cm.setActive('del', 0);\r
+                               cm.setActive('ins', 0);\r
+\r
+                               // Activate all\r
+                               if (n) {\r
+                                       do {\r
+                                               cm.setDisabled(n.nodeName.toLowerCase(), 0);\r
+                                               cm.setActive(n.nodeName.toLowerCase(), 1);\r
+                                       } while (n = n.parentNode);\r
+                               }\r
+                       });\r
+\r
+                       ed.onPreInit.add(function() {\r
+                               // Fixed IE issue where it can't handle these elements correctly\r
+                               ed.dom.create('abbr');\r
+                       });\r
+               },\r
+\r
+               getInfo : function() {\r
+                       return {\r
+                               longname : 'XHTML Xtras Plugin',\r
+                               author : 'Moxiecode Systems AB',\r
+                               authorurl : 'http://tinymce.moxiecode.com',\r
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras',\r
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+                       };\r
+               }\r
+       });\r
+\r
+       // Register plugin\r
+       tinymce.PluginManager.add('xhtmlxtras', tinymce.plugins.XHTMLXtrasPlugin);\r
+})();
\ 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
new file mode 100644 (file)
index 0000000..d001ac7
--- /dev/null
@@ -0,0 +1,162 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+       <title>{#xhtmlxtras_dlg.title_ins_element}</title>\r
+       <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+       <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
+       <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
+       <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
+       <script type="text/javascript" src="js/element_common.js"></script>\r
+       <script type="text/javascript" src="js/ins.js"></script>\r
+       <link rel="stylesheet" type="text/css" href="css/popup.css" />\r
+</head>\r
+<body id="xhtmlxtrasins" style="display: none" role="application" aria-labelledby="app_title">\r
+<span style="display:none;" id="app_title">{#xhtmlxtras_dlg.title_ins_element}</span>\r
+<form onsubmit="insertIns();return false;" action="#">\r
+       <div class="tabs">\r
+               <ul>\r
+                       <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>\r
+                       <!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->\r
+               </ul>\r
+       </div>\r
+\r
+       <div class="panel_wrapper">\r
+               <div id="general_panel" class="panel current">\r
+                       <fieldset>\r
+                               <legend>{#xhtmlxtras_dlg.fieldset_general_tab}</legend>\r
+                               <table role="presentation" border="0" cellpadding="0" cellspacing="4">\r
+                                       <tr>\r
+                                               <td class="label"><label id="datetimelabel" for="datetime">{#xhtmlxtras_dlg.attribute_label_datetime}</label>:</td> \r
+                                               <td>\r
+                                                       <table role="presentation" border="0" cellspacing="0" cellpadding="0">\r
+                                                               <tr> \r
+                                                                       <td><input id="datetime" name="datetime" type="text" value="" maxlength="19" class="field mceFocus" /></td> \r
+                                                                       <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>\r
+                                                               </tr>\r
+                                                       </table>\r
+                                               </td>\r
+                                       </tr>\r
+                                       <tr >\r
+                                               <td class="label"><label id="citelabel" for="cite">{#xhtmlxtras_dlg.attribute_label_cite}</label>:</td> \r
+                                               <td><input id="cite" name="cite" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+                               </table>\r
+                       </fieldset>\r
+                       <fieldset>\r
+                               <legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>\r
+                               <table role="presentation" border="0" cellpadding="0" cellspacing="4">\r
+                                       <tr>\r
+                                               <td  class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td> \r
+                                               <td><input id="title" name="title" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td> \r
+                                               <td><input id="id" name="id" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td> \r
+                                               <td>\r
+                                                       <select id="class" name="class" class="field mceEditableSelect">\r
+                                                               <option value="">{#not_set}</option> \r
+                                                       </select>\r
+                                               </td>\r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td class="label"><label id="stylelabel" for="style">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> \r
+                                               <td><input id="style" name="style" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td> \r
+                                               <td>\r
+                                                       <select id="dir" name="dir" class="field"> \r
+                                                               <option value="">{#not_set}</option> \r
+                                                               <option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option> \r
+                                                               <option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option> \r
+                                                       </select>\r
+                                               </td> \r
+                                       </tr>\r
+                                       <tr>\r
+                                               <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td> \r
+                                               <td>\r
+                                                       <input id="lang" name="lang" type="text" value="" class="field" />\r
+                                               </td> \r
+                                       </tr>\r
+                               </table>\r
+                       </fieldset>\r
+               </div>\r
+               <div id="events_panel" class="panel">\r
+                       <fieldset>\r
+                               <legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>\r
+\r
+                               <table role="presentation" border="0" cellpadding="0" cellspacing="4">\r
+                                       <tr>\r
+                                               <td class="label"><label for="onfocus">onfocus</label>:</td> \r
+                                               <td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onblur">onblur</label>:</td> \r
+                                               <td><input id="onblur" name="onblur" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onclick">onclick</label>:</td> \r
+                                               <td><input id="onclick" name="onclick" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="ondblclick">ondblclick</label>:</td> \r
+                                               <td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onmousedown">onmousedown</label>:</td> \r
+                                               <td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onmouseup">onmouseup</label>:</td> \r
+                                               <td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onmouseover">onmouseover</label>:</td> \r
+                                               <td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onmousemove">onmousemove</label>:</td> \r
+                                               <td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onmouseout">onmouseout</label>:</td> \r
+                                               <td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onkeypress">onkeypress</label>:</td> \r
+                                               <td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onkeydown">onkeydown</label>:</td> \r
+                                               <td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+\r
+                                       <tr>\r
+                                               <td class="label"><label for="onkeyup">onkeyup</label>:</td> \r
+                                               <td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td> \r
+                                       </tr>\r
+                               </table>\r
+                       </fieldset>\r
+               </div>\r
+       </div>\r
+       <div class="mceActionPanel">\r
+               <input type="submit" id="insert" name="insert" value="{#update}" />\r
+               <input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeIns();" style="display: none;" />\r
+               <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />\r
+       </div>\r
+</form>\r
+</body>\r
+</html>\r
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/js/abbr.js b/program/js/tiny_mce/plugins/xhtmlxtras/js/abbr.js
new file mode 100644 (file)
index 0000000..4b51a25
--- /dev/null
@@ -0,0 +1,28 @@
+/**\r
+ * abbr.js\r
+ *\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ */\r
+\r
+function init() {\r
+       SXE.initElementDialog('abbr');\r
+       if (SXE.currentAction == "update") {\r
+               SXE.showRemoveButton();\r
+       }\r
+}\r
+\r
+function insertAbbr() {\r
+       SXE.insertElement('abbr');\r
+       tinyMCEPopup.close();\r
+}\r
+\r
+function removeAbbr() {\r
+       SXE.removeElement('abbr');\r
+       tinyMCEPopup.close();\r
+}\r
+\r
+tinyMCEPopup.onInit.add(init);\r
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/js/acronym.js b/program/js/tiny_mce/plugins/xhtmlxtras/js/acronym.js
new file mode 100644 (file)
index 0000000..6ec2f88
--- /dev/null
@@ -0,0 +1,28 @@
+/**\r
+ * acronym.js\r
+ *\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ */\r
+\r
+function init() {\r
+       SXE.initElementDialog('acronym');\r
+       if (SXE.currentAction == "update") {\r
+               SXE.showRemoveButton();\r
+       }\r
+}\r
+\r
+function insertAcronym() {\r
+       SXE.insertElement('acronym');\r
+       tinyMCEPopup.close();\r
+}\r
+\r
+function removeAcronym() {\r
+       SXE.removeElement('acronym');\r
+       tinyMCEPopup.close();\r
+}\r
+\r
+tinyMCEPopup.onInit.add(init);\r
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/js/attributes.js b/program/js/tiny_mce/plugins/xhtmlxtras/js/attributes.js
new file mode 100644 (file)
index 0000000..9c99995
--- /dev/null
@@ -0,0 +1,111 @@
+/**\r
+ * attributes.js\r
+ *\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ */\r
+\r
+function init() {\r
+       tinyMCEPopup.resizeToInnerSize();\r
+       var inst = tinyMCEPopup.editor;\r
+       var dom = inst.dom;\r
+       var elm = inst.selection.getNode();\r
+       var f = document.forms[0];\r
+       var onclick = dom.getAttrib(elm, 'onclick');\r
+\r
+       setFormValue('title', dom.getAttrib(elm, 'title'));\r
+       setFormValue('id', dom.getAttrib(elm, 'id'));\r
+       setFormValue('style', dom.getAttrib(elm, "style"));\r
+       setFormValue('dir', dom.getAttrib(elm, 'dir'));\r
+       setFormValue('lang', dom.getAttrib(elm, 'lang'));\r
+       setFormValue('tabindex', dom.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : ""));\r
+       setFormValue('accesskey', dom.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : ""));\r
+       setFormValue('onfocus', dom.getAttrib(elm, 'onfocus'));\r
+       setFormValue('onblur', dom.getAttrib(elm, 'onblur'));\r
+       setFormValue('onclick', onclick);\r
+       setFormValue('ondblclick', dom.getAttrib(elm, 'ondblclick'));\r
+       setFormValue('onmousedown', dom.getAttrib(elm, 'onmousedown'));\r
+       setFormValue('onmouseup', dom.getAttrib(elm, 'onmouseup'));\r
+       setFormValue('onmouseover', dom.getAttrib(elm, 'onmouseover'));\r
+       setFormValue('onmousemove', dom.getAttrib(elm, 'onmousemove'));\r
+       setFormValue('onmouseout', dom.getAttrib(elm, 'onmouseout'));\r
+       setFormValue('onkeypress', dom.getAttrib(elm, 'onkeypress'));\r
+       setFormValue('onkeydown', dom.getAttrib(elm, 'onkeydown'));\r
+       setFormValue('onkeyup', dom.getAttrib(elm, 'onkeyup'));\r
+       className = dom.getAttrib(elm, 'class');\r
+\r
+       addClassesToList('classlist', 'advlink_styles');\r
+       selectByValue(f, 'classlist', className, true);\r
+\r
+       TinyMCE_EditableSelects.init();\r
+}\r
+\r
+function setFormValue(name, value) {\r
+       if(value && document.forms[0].elements[name]){\r
+               document.forms[0].elements[name].value = value;\r
+       }\r
+}\r
+\r
+function insertAction() {\r
+       var inst = tinyMCEPopup.editor;\r
+       var elm = inst.selection.getNode();\r
+\r
+       setAllAttribs(elm);\r
+       tinyMCEPopup.execCommand("mceEndUndoLevel");\r
+       tinyMCEPopup.close();\r
+}\r
+\r
+function setAttrib(elm, attrib, value) {\r
+       var formObj = document.forms[0];\r
+       var valueElm = formObj.elements[attrib.toLowerCase()];\r
+       var inst = tinyMCEPopup.editor;\r
+       var dom = inst.dom;\r
+\r
+       if (typeof(value) == "undefined" || value == null) {\r
+               value = "";\r
+\r
+               if (valueElm)\r
+                       value = valueElm.value;\r
+       }\r
+\r
+       dom.setAttrib(elm, attrib.toLowerCase(), value);\r
+}\r
+\r
+function setAllAttribs(elm) {\r
+       var f = document.forms[0];\r
+\r
+       setAttrib(elm, 'title');\r
+       setAttrib(elm, 'id');\r
+       setAttrib(elm, 'style');\r
+       setAttrib(elm, 'class', getSelectValue(f, 'classlist'));\r
+       setAttrib(elm, 'dir');\r
+       setAttrib(elm, 'lang');\r
+       setAttrib(elm, 'tabindex');\r
+       setAttrib(elm, 'accesskey');\r
+       setAttrib(elm, 'onfocus');\r
+       setAttrib(elm, 'onblur');\r
+       setAttrib(elm, 'onclick');\r
+       setAttrib(elm, 'ondblclick');\r
+       setAttrib(elm, 'onmousedown');\r
+       setAttrib(elm, 'onmouseup');\r
+       setAttrib(elm, 'onmouseover');\r
+       setAttrib(elm, 'onmousemove');\r
+       setAttrib(elm, 'onmouseout');\r
+       setAttrib(elm, 'onkeypress');\r
+       setAttrib(elm, 'onkeydown');\r
+       setAttrib(elm, 'onkeyup');\r
+\r
+       // Refresh in old MSIE\r
+//     if (tinyMCE.isMSIE5)\r
+//             elm.outerHTML = elm.outerHTML;\r
+}\r
+\r
+function insertAttribute() {\r
+       tinyMCEPopup.close();\r
+}\r
+\r
+tinyMCEPopup.onInit.add(init);\r
+tinyMCEPopup.requireLangPack();\r
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/js/cite.js b/program/js/tiny_mce/plugins/xhtmlxtras/js/cite.js
new file mode 100644 (file)
index 0000000..009b715
--- /dev/null
@@ -0,0 +1,28 @@
+/**\r
+ * cite.js\r
+ *\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ */\r
+\r
+function init() {\r
+       SXE.initElementDialog('cite');\r
+       if (SXE.currentAction == "update") {\r
+               SXE.showRemoveButton();\r
+       }\r
+}\r
+\r
+function insertCite() {\r
+       SXE.insertElement('cite');\r
+       tinyMCEPopup.close();\r
+}\r
+\r
+function removeCite() {\r
+       SXE.removeElement('cite');\r
+       tinyMCEPopup.close();\r
+}\r
+\r
+tinyMCEPopup.onInit.add(init);\r
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/js/del.js b/program/js/tiny_mce/plugins/xhtmlxtras/js/del.js
new file mode 100644 (file)
index 0000000..1f957dc
--- /dev/null
@@ -0,0 +1,53 @@
+/**\r
+ * del.js\r
+ *\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ */\r
+\r
+function init() {\r
+       SXE.initElementDialog('del');\r
+       if (SXE.currentAction == "update") {\r
+               setFormValue('datetime', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'datetime'));\r
+               setFormValue('cite', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'cite'));\r
+               SXE.showRemoveButton();\r
+       }\r
+}\r
+\r
+function setElementAttribs(elm) {\r
+       setAllCommonAttribs(elm);\r
+       setAttrib(elm, 'datetime');\r
+       setAttrib(elm, 'cite');\r
+       elm.removeAttribute('data-mce-new');\r
+}\r
+\r
+function insertDel() {\r
+       var elm = tinyMCEPopup.editor.dom.getParent(SXE.focusElement, 'DEL');\r
+\r
+       if (elm == null) {\r
+               var s = SXE.inst.selection.getContent();\r
+               if(s.length > 0) {\r
+                       insertInlineElement('del');\r
+                       var elementArray = SXE.inst.dom.select('del[data-mce-new]');\r
+                       for (var i=0; i<elementArray.length; i++) {\r
+                               var elm = elementArray[i];\r
+                               setElementAttribs(elm);\r
+                       }\r
+               }\r
+       } else {\r
+               setElementAttribs(elm);\r
+       }\r
+       tinyMCEPopup.editor.nodeChanged();\r
+       tinyMCEPopup.execCommand('mceEndUndoLevel');\r
+       tinyMCEPopup.close();\r
+}\r
+\r
+function removeDel() {\r
+       SXE.removeElement('del');\r
+       tinyMCEPopup.close();\r
+}\r
+\r
+tinyMCEPopup.onInit.add(init);\r
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/js/element_common.js b/program/js/tiny_mce/plugins/xhtmlxtras/js/element_common.js
new file mode 100644 (file)
index 0000000..4e5d9c3
--- /dev/null
@@ -0,0 +1,229 @@
+/**\r
+ * element_common.js\r
+ *\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ */\r
+\r
+tinyMCEPopup.requireLangPack();\r
+\r
+function initCommonAttributes(elm) {\r
+       var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;\r
+\r
+       // Setup form data for common element attributes\r
+       setFormValue('title', dom.getAttrib(elm, 'title'));\r
+       setFormValue('id', dom.getAttrib(elm, 'id'));\r
+       selectByValue(formObj, 'class', dom.getAttrib(elm, 'class'), true);\r
+       setFormValue('style', dom.getAttrib(elm, 'style'));\r
+       selectByValue(formObj, 'dir', dom.getAttrib(elm, 'dir'));\r
+       setFormValue('lang', dom.getAttrib(elm, 'lang'));\r
+       setFormValue('onfocus', dom.getAttrib(elm, 'onfocus'));\r
+       setFormValue('onblur', dom.getAttrib(elm, 'onblur'));\r
+       setFormValue('onclick', dom.getAttrib(elm, 'onclick'));\r
+       setFormValue('ondblclick', dom.getAttrib(elm, 'ondblclick'));\r
+       setFormValue('onmousedown', dom.getAttrib(elm, 'onmousedown'));\r
+       setFormValue('onmouseup', dom.getAttrib(elm, 'onmouseup'));\r
+       setFormValue('onmouseover', dom.getAttrib(elm, 'onmouseover'));\r
+       setFormValue('onmousemove', dom.getAttrib(elm, 'onmousemove'));\r
+       setFormValue('onmouseout', dom.getAttrib(elm, 'onmouseout'));\r
+       setFormValue('onkeypress', dom.getAttrib(elm, 'onkeypress'));\r
+       setFormValue('onkeydown', dom.getAttrib(elm, 'onkeydown'));\r
+       setFormValue('onkeyup', dom.getAttrib(elm, 'onkeyup'));\r
+}\r
+\r
+function setFormValue(name, value) {\r
+       if(document.forms[0].elements[name]) document.forms[0].elements[name].value = value;\r
+}\r
+\r
+function insertDateTime(id) {\r
+       document.getElementById(id).value = getDateTime(new Date(), "%Y-%m-%dT%H:%M:%S");\r
+}\r
+\r
+function getDateTime(d, fmt) {\r
+       fmt = fmt.replace("%D", "%m/%d/%y");\r
+       fmt = fmt.replace("%r", "%I:%M:%S %p");\r
+       fmt = fmt.replace("%Y", "" + d.getFullYear());\r
+       fmt = fmt.replace("%y", "" + d.getYear());\r
+       fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));\r
+       fmt = fmt.replace("%d", addZeros(d.getDate(), 2));\r
+       fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));\r
+       fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));\r
+       fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));\r
+       fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));\r
+       fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));\r
+       fmt = fmt.replace("%%", "%");\r
+\r
+       return fmt;\r
+}\r
+\r
+function addZeros(value, len) {\r
+       var i;\r
+\r
+       value = "" + value;\r
+\r
+       if (value.length < len) {\r
+               for (i=0; i<(len-value.length); i++)\r
+                       value = "0" + value;\r
+       }\r
+\r
+       return value;\r
+}\r
+\r
+function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {\r
+       if (!form_obj || !form_obj.elements[field_name])\r
+               return;\r
+\r
+       var sel = form_obj.elements[field_name];\r
+\r
+       var found = false;\r
+       for (var i=0; i<sel.options.length; i++) {\r
+               var option = sel.options[i];\r
+\r
+               if (option.value == value || (ignore_case && option.value.toLowerCase() == value.toLowerCase())) {\r
+                       option.selected = true;\r
+                       found = true;\r
+               } else\r
+                       option.selected = false;\r
+       }\r
+\r
+       if (!found && add_custom && value != '') {\r
+               var option = new Option('Value: ' + value, value);\r
+               option.selected = true;\r
+               sel.options[sel.options.length] = option;\r
+       }\r
+\r
+       return found;\r
+}\r
+\r
+function setAttrib(elm, attrib, value) {\r
+       var formObj = document.forms[0];\r
+       var valueElm = formObj.elements[attrib.toLowerCase()];\r
+       tinyMCEPopup.editor.dom.setAttrib(elm, attrib, value || valueElm.value);\r
+}\r
+\r
+function setAllCommonAttribs(elm) {\r
+       setAttrib(elm, 'title');\r
+       setAttrib(elm, 'id');\r
+       setAttrib(elm, 'class');\r
+       setAttrib(elm, 'style');\r
+       setAttrib(elm, 'dir');\r
+       setAttrib(elm, 'lang');\r
+       /*setAttrib(elm, 'onfocus');\r
+       setAttrib(elm, 'onblur');\r
+       setAttrib(elm, 'onclick');\r
+       setAttrib(elm, 'ondblclick');\r
+       setAttrib(elm, 'onmousedown');\r
+       setAttrib(elm, 'onmouseup');\r
+       setAttrib(elm, 'onmouseover');\r
+       setAttrib(elm, 'onmousemove');\r
+       setAttrib(elm, 'onmouseout');\r
+       setAttrib(elm, 'onkeypress');\r
+       setAttrib(elm, 'onkeydown');\r
+       setAttrib(elm, 'onkeyup');*/\r
+}\r
+\r
+SXE = {\r
+       currentAction : "insert",\r
+       inst : tinyMCEPopup.editor,\r
+       updateElement : null\r
+}\r
+\r
+SXE.focusElement = SXE.inst.selection.getNode();\r
+\r
+SXE.initElementDialog = function(element_name) {\r
+       addClassesToList('class', 'xhtmlxtras_styles');\r
+       TinyMCE_EditableSelects.init();\r
+\r
+       element_name = element_name.toLowerCase();\r
+       var elm = SXE.inst.dom.getParent(SXE.focusElement, element_name.toUpperCase());\r
+       if (elm != null && elm.nodeName.toUpperCase() == element_name.toUpperCase()) {\r
+               SXE.currentAction = "update";\r
+       }\r
+\r
+       if (SXE.currentAction == "update") {\r
+               initCommonAttributes(elm);\r
+               SXE.updateElement = elm;\r
+       }\r
+\r
+       document.forms[0].insert.value = tinyMCEPopup.getLang(SXE.currentAction, 'Insert', true); \r
+}\r
+\r
+SXE.insertElement = function(element_name) {\r
+       var elm = SXE.inst.dom.getParent(SXE.focusElement, element_name.toUpperCase()), h, tagName;\r
+\r
+       if (elm == null) {\r
+               var s = SXE.inst.selection.getContent();\r
+               if(s.length > 0) {\r
+                       tagName = element_name;\r
+\r
+                       insertInlineElement(element_name);\r
+                       var elementArray = tinymce.grep(SXE.inst.dom.select(element_name));\r
+                       for (var i=0; i<elementArray.length; i++) {\r
+                               var elm = elementArray[i];\r
+\r
+                               if (SXE.inst.dom.getAttrib(elm, 'data-mce-new')) {\r
+                                       elm.id = '';\r
+                                       elm.setAttribute('id', '');\r
+                                       elm.removeAttribute('id');\r
+                                       elm.removeAttribute('data-mce-new');\r
+\r
+                                       setAllCommonAttribs(elm);\r
+                               }\r
+                       }\r
+               }\r
+       } else {\r
+               setAllCommonAttribs(elm);\r
+       }\r
+       SXE.inst.nodeChanged();\r
+       tinyMCEPopup.execCommand('mceEndUndoLevel');\r
+}\r
+\r
+SXE.removeElement = function(element_name){\r
+       element_name = element_name.toLowerCase();\r
+       elm = SXE.inst.dom.getParent(SXE.focusElement, element_name.toUpperCase());\r
+       if(elm && elm.nodeName.toUpperCase() == element_name.toUpperCase()){\r
+               tinyMCE.execCommand('mceRemoveNode', false, elm);\r
+               SXE.inst.nodeChanged();\r
+               tinyMCEPopup.execCommand('mceEndUndoLevel');\r
+       }\r
+}\r
+\r
+SXE.showRemoveButton = function() {\r
+               document.getElementById("remove").style.display = '';\r
+}\r
+\r
+SXE.containsClass = function(elm,cl) {\r
+       return (elm.className.indexOf(cl) > -1) ? true : false;\r
+}\r
+\r
+SXE.removeClass = function(elm,cl) {\r
+       if(elm.className == null || elm.className == "" || !SXE.containsClass(elm,cl)) {\r
+               return true;\r
+       }\r
+       var classNames = elm.className.split(" ");\r
+       var newClassNames = "";\r
+       for (var x = 0, cnl = classNames.length; x < cnl; x++) {\r
+               if (classNames[x] != cl) {\r
+                       newClassNames += (classNames[x] + " ");\r
+               }\r
+       }\r
+       elm.className = newClassNames.substring(0,newClassNames.length-1); //removes extra space at the end\r
+}\r
+\r
+SXE.addClass = function(elm,cl) {\r
+       if(!SXE.containsClass(elm,cl)) elm.className ? elm.className += " " + cl : elm.className = cl;\r
+       return true;\r
+}\r
+\r
+function insertInlineElement(en) {\r
+       var ed = tinyMCEPopup.editor, dom = ed.dom;\r
+\r
+       ed.getDoc().execCommand('FontName', false, 'mceinline');\r
+       tinymce.each(dom.select('span,font'), function(n) {\r
+               if (n.style.fontFamily == 'mceinline' || n.face == 'mceinline')\r
+                       dom.replace(dom.create(en, {'data-mce-new' : 1}), n, 1);\r
+       });\r
+}\r
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/js/ins.js b/program/js/tiny_mce/plugins/xhtmlxtras/js/ins.js
new file mode 100644 (file)
index 0000000..c4addfb
--- /dev/null
@@ -0,0 +1,53 @@
+/**\r
+ * ins.js\r
+ *\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
+ *\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
+ */\r
+\r
+function init() {\r
+       SXE.initElementDialog('ins');\r
+       if (SXE.currentAction == "update") {\r
+               setFormValue('datetime', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'datetime'));\r
+               setFormValue('cite', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'cite'));\r
+               SXE.showRemoveButton();\r
+       }\r
+}\r
+\r
+function setElementAttribs(elm) {\r
+       setAllCommonAttribs(elm);\r
+       setAttrib(elm, 'datetime');\r
+       setAttrib(elm, 'cite');\r
+       elm.removeAttribute('data-mce-new');\r
+}\r
+\r
+function insertIns() {\r
+       var elm = tinyMCEPopup.editor.dom.getParent(SXE.focusElement, 'INS');\r
+\r
+       if (elm == null) {\r
+               var s = SXE.inst.selection.getContent();\r
+               if(s.length > 0) {\r
+                       insertInlineElement('ins');\r
+                       var elementArray = SXE.inst.dom.select('ins[data-mce-new]');\r
+                       for (var i=0; i<elementArray.length; i++) {\r
+                               var elm = elementArray[i];\r
+                               setElementAttribs(elm);\r
+                       }\r
+               }\r
+       } else {\r
+               setElementAttribs(elm);\r
+       }\r
+       tinyMCEPopup.editor.nodeChanged();\r
+       tinyMCEPopup.execCommand('mceEndUndoLevel');\r
+       tinyMCEPopup.close();\r
+}\r
+\r
+function removeIns() {\r
+       SXE.removeElement('ins');\r
+       tinyMCEPopup.close();\r
+}\r
+\r
+tinyMCEPopup.onInit.add(init);\r
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/ar_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/ar_dlg.js
new file mode 100644 (file)
index 0000000..e7a5633
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..2378cf6
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..4cf4ef9
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..085ed82
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..0c75ca8
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..5d931ec
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..5c548b5
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..55c8cab
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..9814839
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..cd9eb40
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..4994355
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..cbc5fbb
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..c4569f8
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..c0e9776
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..676e200
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..6e7ffcc
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..16997b8
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..a37c26b
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..58c4e7e
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..4ae5a3b
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..59fb5fe
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..515536f
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..36d773c
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..38c19db
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..8af1666
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..2f9a048
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..f9a392c
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..71a87c9
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..726be22
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..888522c
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..9898869
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..b89bd9d
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..ebf7cfb
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..f41b504
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..0e7d13a
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..19db575
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..e5207eb
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..5708ddf
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..415d724
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..a409dd3
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..e0d668a
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..520eaa5
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..bb80219
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..bd25335
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..4d44aa5
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..3ee6e8b
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..09cb321
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..2764148
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..8d72ccc
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..7184797
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..3079423
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..c5e2eb4
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..cca5435
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..1dbf928
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..227659a
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..eccbdf6
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..d0fec64
--- /dev/null
@@ -0,0 +1 @@
+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
index 2c3b3f27bde8c158d8ba2bc797e9afeaf4fcc392..d4b6bdfb7b16accacc50e462e118fe26bb135782 100644 (file)
@@ -5,7 +5,7 @@
        <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
        <script type="text/javascript" src="js/charmap.js"></script>\r
 </head>\r
-<body id="charmap" style="display:none">\r
+<body id="charmap" style="display:none" role="application">\r
 <table align="center" border="0" cellspacing="0" cellpadding="2" role="presentation">\r
        <tr>\r
                <td colspan="2" class="title" ><label for="charmapView" id="charmap_label">{#advanced_dlg.charmap_title}</label></td>\r
                        </table>\r
                </td>\r
        </tr>\r
+       <tr>\r
+               <td colspan="2" id="charmap_usage">{#advanced_dlg.charmap_usage}</td>\r
+       </tr>\r
+       \r
 </table>\r
 </body>\r
 </html>\r
index ad1bb0f6ccfaee3762641f44044e39d2fbae4d8a..b625531a6a8e70b5eef7f084193444fa81379640 100644 (file)
 \r
        <div class="mceActionPanel">\r
                <input type="submit" id="insert" name="insert" value="{#apply}" />\r
-\r
-               <div id="preview"></div>\r
-\r
-               <div id="previewblock">\r
-                       <label for="color">{#advanced_dlg.colorpicker_color}</label> <input id="color" type="text" size="8" class="text mceFocus" aria-required="true" />\r
-               </div>\r
+               <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();"/>\r
+               <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>\r
        </div>\r
 </form>\r
 </body>\r
index ba8dd4c30432612fca279391bbb1cabce94f3018..9ab712cb50451372be6ec59f8478c29f5e8df99c 100644 (file)
@@ -1 +1 @@
-(function(e){var d=e.DOM,b=e.dom.Event,h=e.extend,f=e.each,a=e.util.Cookie,g,c=e.explode;e.ThemeManager.requireLangPack("advanced");e.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(j,k){var l=this,m,i,n;l.editor=j;l.url=k;l.onResolveName=new e.util.Dispatcher(this);j.forcedHighContrastMode=j.settings.detect_highcontrast&&l._isHighContrast();j.settings.skin=j.forcedHighContrastMode?"highcontrast":j.settings.skin;l.settings=m=h({theme_advanced_path:true,theme_advanced_toolbar_location:"bottom",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",theme_advanced_blockformats:"p,address,pre,h1,h2,h3,h4,h5,h6",theme_advanced_toolbar_align:"center",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:j.settings.readonly},j.settings);if(!m.font_size_style_values){m.font_size_style_values="8pt,10pt,12pt,14pt,18pt,24pt,36pt"}if(e.is(m.theme_advanced_font_sizes,"string")){m.font_size_style_values=e.explode(m.font_size_style_values);m.font_size_classes=e.explode(m.font_size_classes||"");n={};j.settings.theme_advanced_font_sizes=m.theme_advanced_font_sizes;f(j.getParam("theme_advanced_font_sizes","","hash"),function(q,p){var o;if(p==q&&q>=1&&q<=7){p=q+" ("+l.sizes[q-1]+"pt)";o=m.font_size_classes[q-1];q=m.font_size_style_values[q-1]||(l.sizes[q-1]+"pt")}if(/^\s*\./.test(q)){o=q.replace(/\./g,"")}n[p]=o?{"class":o}:{fontSize:q}});m.theme_advanced_font_sizes=n}if((i=m.theme_advanced_path_location)&&i!="none"){m.theme_advanced_statusbar_location=m.theme_advanced_path_location}if(m.theme_advanced_statusbar_location=="none"){m.theme_advanced_statusbar_location=0}if(j.settings.content_css!==false){j.contentCSS.push(j.baseURI.toAbsolute(k+"/skins/"+j.settings.skin+"/content.css"))}j.onInit.add(function(){if(!j.settings.readonly){j.onNodeChange.add(l._nodeChanged,l);j.onKeyUp.add(l._updateUndoStatus,l);j.onMouseUp.add(l._updateUndoStatus,l);j.dom.bind(j.dom.getRoot(),"dragend",function(){l._updateUndoStatus(j)})}});j.onSetProgressState.add(function(q,o,r){var s,t=q.id,p;if(o){l.progressTimer=setTimeout(function(){s=q.getContainer();s=s.insertBefore(d.create("DIV",{style:"position:relative"}),s.firstChild);p=d.get(q.id+"_tbl");d.add(s,"div",{id:t+"_blocker","class":"mceBlocker",style:{width:p.clientWidth+2,height:p.clientHeight+2}});d.add(s,"div",{id:t+"_progress","class":"mceProgress",style:{left:p.clientWidth/2,top:p.clientHeight/2}})},r||0)}else{d.remove(t+"_blocker");d.remove(t+"_progress");clearTimeout(l.progressTimer)}});d.loadCSS(m.editor_css?j.documentBaseURI.toAbsolute(m.editor_css):k+"/skins/"+j.settings.skin+"/ui.css");if(m.skin_variant){d.loadCSS(k+"/skins/"+j.settings.skin+"/ui_"+m.skin_variant+".css")}},_isHighContrast:function(){var i,j=d.add(d.getRoot(),"div",{style:"background-color: rgb(171,239,86);"});i=(d.getStyle(j,"background-color",true)+"").toLowerCase().replace(/ /g,"");d.remove(j);return i!="rgb(171,239,86)"&&i!="#abef56"},createControl:function(l,i){var j,k;if(k=i.createControl(l)){return k}switch(l){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((j=this.controls[l])){return i.createButton(l,{title:"advanced."+j[0],cmd:j[1],ui:j[2],value:j[3]})}},execCommand:function(k,j,l){var i=this["_"+k];if(i){i.call(this,j,l);return true}return false},_importClasses:function(k){var i=this.editor,j=i.controlManager.get("styleselect");if(j.getLength()==0){f(i.dom.getClasses(),function(n,l){var m="style_"+l;i.formatter.register(m,{inline:"span",attributes:{"class":n["class"]},selector:"*"});j.add(n["class"],m)})}},_createStyleSelect:function(m){var k=this,i=k.editor,j=i.controlManager,l;l=j.createListBox("styleselect",{title:"advanced.style_select",onselect:function(o){var p,n=[];f(l.items,function(q){n.push(q.value)});i.focus();i.undoManager.add();p=i.formatter.matchAll(n);if(!o||p[0]==o){if(p[0]){i.formatter.remove(p[0])}}else{i.formatter.apply(o)}i.undoManager.add();i.nodeChanged();return false}});i.onInit.add(function(){var o=0,n=i.getParam("style_formats");if(n){f(n,function(p){var q,r=0;f(p,function(){r++});if(r>1){q=p.name=p.name||"style_"+(o++);i.formatter.register(q,p);l.add(p.title,q)}else{l.add(p.title)}})}else{f(i.getParam("theme_advanced_styles","","hash"),function(r,q){var p;if(r){p="style_"+(o++);i.formatter.register(p,{inline:"span",classes:r,selector:"*"});l.add(k.editor.translate(q),p)}})}});if(l.getLength()==0){l.onPostRender.add(function(o,p){if(!l.NativeListBox){b.add(p.id+"_text","focus",k._importClasses,k);b.add(p.id+"_text","mousedown",k._importClasses,k);b.add(p.id+"_open","focus",k._importClasses,k);b.add(p.id+"_open","mousedown",k._importClasses,k)}else{b.add(p.id,"focus",k._importClasses,k)}})}return l},_createFontSelect:function(){var k,j=this,i=j.editor;k=i.controlManager.createListBox("fontselect",{title:"advanced.fontdefault",onselect:function(l){var m=k.items[k.selectedIndex];if(!l&&m){i.execCommand("FontName",false,m.value);return}i.execCommand("FontName",false,l);k.select(function(n){return l==n});if(m&&m.value==l){k.select(null)}return false}});if(k){f(i.getParam("theme_advanced_fonts",j.settings.theme_advanced_fonts,"hash"),function(m,l){k.add(i.translate(l),m,{style:m.indexOf("dings")==-1?"font-family:"+m:""})})}return k},_createFontSizeSelect:function(){var m=this,k=m.editor,n,l=0,j=[];n=k.controlManager.createListBox("fontsizeselect",{title:"advanced.font_size",onselect:function(i){var o=n.items[n.selectedIndex];if(!i&&o){o=o.value;if(o["class"]){k.formatter.toggle("fontsize_class",{value:o["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,o.fontSize)}return}if(i["class"]){k.focus();k.undoManager.add();k.formatter.toggle("fontsize_class",{value:i["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,i.fontSize)}n.select(function(p){return i==p});if(o&&(o.value.fontSize==i.fontSize||o.value["class"]==i["class"])){n.select(null)}return false}});if(n){f(m.settings.theme_advanced_font_sizes,function(o,i){var p=o.fontSize;if(p>=1&&p<=7){p=m.sizes[parseInt(p)-1]+"pt"}n.add(i,o,{style:"font-size:"+p,"class":"mceFontSize"+(l++)+(" "+(o["class"]||""))})})}return n},_createBlockFormats:function(){var k,i={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"},j=this;k=j.editor.controlManager.createListBox("formatselect",{title:"advanced.block",onselect:function(l){j.editor.execCommand("FormatBlock",false,l);return false}});if(k){f(j.editor.getParam("theme_advanced_blockformats",j.settings.theme_advanced_blockformats,"hash"),function(m,l){k.add(j.editor.translate(l!=m?l:i[m]),m,{"class":"mce_formatPreview mce_"+m})})}return k},_createForeColorMenu:function(){var m,j=this,k=j.settings,l={},i;if(k.theme_advanced_more_colors){l.more_colors_func=function(){j._mceColorPicker(0,{color:m.value,func:function(n){m.setColor(n)}})}}if(i=k.theme_advanced_text_colors){l.colors=i}if(k.theme_advanced_default_foreground_color){l.default_color=k.theme_advanced_default_foreground_color}l.title="advanced.forecolor_desc";l.cmd="ForeColor";l.scope=this;m=j.editor.controlManager.createColorSplitButton("forecolor",l);return m},_createBackColorMenu:function(){var m,j=this,k=j.settings,l={},i;if(k.theme_advanced_more_colors){l.more_colors_func=function(){j._mceColorPicker(0,{color:m.value,func:function(n){m.setColor(n)}})}}if(i=k.theme_advanced_background_colors){l.colors=i}if(k.theme_advanced_default_background_color){l.default_color=k.theme_advanced_default_background_color}l.title="advanced.backcolor_desc";l.cmd="HiliteColor";l.scope=this;m=j.editor.controlManager.createColorSplitButton("backcolor",l);return m},renderUI:function(k){var m,l,q,v=this,r=v.editor,w=v.settings,u,j,i;if(r.settings){r.settings.aria_label=w.aria_label+r.getLang("advanced.help_shortcut")}m=j=d.create("span",{role:"application","aria-labelledby":r.id+"_voice",id:r.id+"_parent","class":"mceEditor "+r.settings.skin+"Skin"+(w.skin_variant?" "+r.settings.skin+"Skin"+v._ufirst(w.skin_variant):"")});d.add(m,"span",{"class":"mceVoiceLabel",style:"display:none;",id:r.id+"_voice"},w.aria_label);if(!d.boxModel){m=d.add(m,"div",{"class":"mceOldBoxModel"})}m=u=d.add(m,"table",{role:"presentation",id:r.id+"_tbl","class":"mceLayout",cellSpacing:0,cellPadding:0});m=q=d.add(m,"tbody");switch((w.theme_advanced_layout_manager||"").toLowerCase()){case"rowlayout":l=v._rowLayout(w,q,k);break;case"customlayout":l=r.execCallback("theme_advanced_custom_layout",w,q,k,j);break;default:l=v._simpleLayout(w,q,k,j)}m=k.targetNode;i=u.rows;d.addClass(i[0],"mceFirst");d.addClass(i[i.length-1],"mceLast");f(d.select("tr",q),function(o){d.addClass(o.firstChild,"mceFirst");d.addClass(o.childNodes[o.childNodes.length-1],"mceLast")});if(d.get(w.theme_advanced_toolbar_container)){d.get(w.theme_advanced_toolbar_container).appendChild(j)}else{d.insertAfter(j,m)}b.add(r.id+"_path_row","click",function(n){n=n.target;if(n.nodeName=="A"){v._sel(n.className.replace(/^.*mcePath_([0-9]+).*$/,"$1"));return b.cancel(n)}});if(!r.getParam("accessibility_focus")){b.add(d.add(j,"a",{href:"#"},"<!-- IE -->"),"focus",function(){tinyMCE.get(r.id).focus()})}if(w.theme_advanced_toolbar_location=="external"){k.deltaHeight=0}v.deltaHeight=k.deltaHeight;k.targetNode=null;r.onKeyDown.add(function(p,n){var s=121,o=122;if(n.altKey){if(n.keyCode===s){v.toolbarGroup.focus();return b.cancel(n)}else{if(n.keyCode===o){d.get(p.id+"_path_row").focus();return b.cancel(n)}}}});r.addShortcut("alt+0","","mceShortcuts",v);return{iframeContainer:l,editorContainer:r.id+"_parent",sizeContainer:u,deltaHeight:k.deltaHeight}},getInfo:function(){return{longname:"Advanced theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:e.majorVersion+"."+e.minorVersion}},resizeBy:function(i,j){var k=d.get(this.editor.id+"_ifr");this.resizeTo(k.clientWidth+i,k.clientHeight+j)},resizeTo:function(i,m,k){var j=this.editor,l=this.settings,n=d.get(j.id+"_tbl"),o=d.get(j.id+"_ifr");i=Math.max(l.theme_advanced_resizing_min_width||100,i);m=Math.max(l.theme_advanced_resizing_min_height||100,m);i=Math.min(l.theme_advanced_resizing_max_width||65535,i);m=Math.min(l.theme_advanced_resizing_max_height||65535,m);d.setStyle(n,"height","");d.setStyle(o,"height",m);if(l.theme_advanced_resize_horizontal){d.setStyle(n,"width","");d.setStyle(o,"width",i);if(i<n.clientWidth){i=n.clientWidth;d.setStyle(o,"width",n.clientWidth)}}if(k&&l.theme_advanced_resizing_use_cookie){a.setHash("TinyMCE_"+j.id+"_size",{cw:i,ch:m})}},destroy:function(){var i=this.editor.id;b.clear(i+"_resize");b.clear(i+"_path_row");b.clear(i+"_external_close")},_simpleLayout:function(y,r,k,i){var x=this,u=x.editor,v=y.theme_advanced_toolbar_location,m=y.theme_advanced_statusbar_location,l,j,q,w;if(y.readonly){l=d.add(r,"tr");l=j=d.add(l,"td",{"class":"mceIframeContainer"});return j}if(v=="top"){x._addToolbars(r,k)}if(v=="external"){l=w=d.create("div",{style:"position:relative"});l=d.add(l,"div",{id:u.id+"_external","class":"mceExternalToolbar"});d.add(l,"a",{id:u.id+"_external_close",href:"javascript:;","class":"mceExternalClose"});l=d.add(l,"table",{id:u.id+"_tblext",cellSpacing:0,cellPadding:0});q=d.add(l,"tbody");if(i.firstChild.className=="mceOldBoxModel"){i.firstChild.appendChild(w)}else{i.insertBefore(w,i.firstChild)}x._addToolbars(q,k);u.onMouseUp.add(function(){var o=d.get(u.id+"_external");d.show(o);d.hide(g);var n=b.add(u.id+"_external_close","click",function(){d.hide(u.id+"_external");b.remove(u.id+"_external_close","click",n)});d.show(o);d.setStyle(o,"top",0-d.getRect(u.id+"_tblext").h-1);d.hide(o);d.show(o);o.style.filter="";g=u.id+"_external";o=null})}if(m=="top"){x._addStatusBar(r,k)}if(!y.theme_advanced_toolbar_container){l=d.add(r,"tr");l=j=d.add(l,"td",{"class":"mceIframeContainer"})}if(v=="bottom"){x._addToolbars(r,k)}if(m=="bottom"){x._addStatusBar(r,k)}return j},_rowLayout:function(w,m,k){var v=this,p=v.editor,u,x,i=p.controlManager,l,j,r,q;u=w.theme_advanced_containers_default_class||"";x=w.theme_advanced_containers_default_align||"center";f(c(w.theme_advanced_containers||""),function(s,o){var n=w["theme_advanced_container_"+s]||"";switch(s.toLowerCase()){case"mceeditor":l=d.add(m,"tr");l=j=d.add(l,"td",{"class":"mceIframeContainer"});break;case"mceelementpath":v._addStatusBar(m,k);break;default:q=(w["theme_advanced_container_"+s+"_align"]||x).toLowerCase();q="mce"+v._ufirst(q);l=d.add(d.add(m,"tr"),"td",{"class":"mceToolbar "+(w["theme_advanced_container_"+s+"_class"]||u)+" "+q||x});r=i.createToolbar("toolbar"+o);v._addControls(n,r);d.setHTML(l,r.renderHTML());k.deltaHeight-=w.theme_advanced_row_height}});return j},_addControls:function(j,i){var k=this,l=k.settings,m,n=k.editor.controlManager;if(l.theme_advanced_disable&&!k._disabled){m={};f(c(l.theme_advanced_disable),function(o){m[o]=1});k._disabled=m}else{m=k._disabled}f(c(j),function(p){var o;if(m&&m[p]){return}if(p=="tablecontrols"){f(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"],function(q){q=k.createControl(q,n);if(q){i.add(q)}});return}o=k.createControl(p,n);if(o){i.add(o)}})},_addToolbars:function(x,k){var A=this,p,m,r=A.editor,B=A.settings,z,j=r.controlManager,u,l,q=[],y,w;w=j.createToolbarGroup("toolbargroup",{name:r.getLang("advanced.toolbar"),tab_focus_toolbar:r.getParam("theme_advanced_tab_focus_toolbar")});A.toolbarGroup=w;y=B.theme_advanced_toolbar_align.toLowerCase();y="mce"+A._ufirst(y);l=d.add(d.add(x,"tr",{role:"presentation"}),"td",{"class":"mceToolbar "+y,role:"presentation"});for(p=1;(z=B["theme_advanced_buttons"+p]);p++){m=j.createToolbar("toolbar"+p,{"class":"mceToolbarRow"+p});if(B["theme_advanced_buttons"+p+"_add"]){z+=","+B["theme_advanced_buttons"+p+"_add"]}if(B["theme_advanced_buttons"+p+"_add_before"]){z=B["theme_advanced_buttons"+p+"_add_before"]+","+z}A._addControls(z,m);w.add(m);k.deltaHeight-=B.theme_advanced_row_height}q.push(w.renderHTML());q.push(d.createHTML("a",{href:"#",accesskey:"z",title:r.getLang("advanced.toolbar_focus"),onfocus:"tinyMCE.getInstanceById('"+r.id+"').focus();"},"<!-- IE -->"));d.setHTML(l,q.join(""))},_addStatusBar:function(m,j){var k,v=this,p=v.editor,w=v.settings,i,q,u,l;k=d.add(m,"tr");k=l=d.add(k,"td",{"class":"mceStatusbar"});k=d.add(k,"div",{id:p.id+"_path_row",role:"group","aria-labelledby":p.id+"_path_voice"});if(w.theme_advanced_path){d.add(k,"span",{id:p.id+"_path_voice"},p.translate("advanced.path"));d.add(k,"span",{},": ")}else{d.add(k,"span",{},"&#160;")}if(w.theme_advanced_resizing){d.add(l,"a",{id:p.id+"_resize",href:"javascript:;",onclick:"return false;","class":"mceResize"});if(w.theme_advanced_resizing_use_cookie){p.onPostRender.add(function(){var n=a.getHash("TinyMCE_"+p.id+"_size"),r=d.get(p.id+"_tbl");if(!n){return}v.resizeTo(n.cw,n.ch)})}p.onPostRender.add(function(){b.add(p.id+"_resize","click",function(n){n.preventDefault()});b.add(p.id+"_resize","mousedown",function(D){var t,r,s,o,C,z,A,F,n,E,x;function y(G){G.preventDefault();n=A+(G.screenX-C);E=F+(G.screenY-z);v.resizeTo(n,E)}function B(G){b.remove(d.doc,"mousemove",t);b.remove(p.getDoc(),"mousemove",r);b.remove(d.doc,"mouseup",s);b.remove(p.getDoc(),"mouseup",o);n=A+(G.screenX-C);E=F+(G.screenY-z);v.resizeTo(n,E,true)}D.preventDefault();C=D.screenX;z=D.screenY;x=d.get(v.editor.id+"_ifr");A=n=x.clientWidth;F=E=x.clientHeight;t=b.add(d.doc,"mousemove",y);r=b.add(p.getDoc(),"mousemove",y);s=b.add(d.doc,"mouseup",B);o=b.add(p.getDoc(),"mouseup",B)})})}j.deltaHeight-=21;k=m=null},_updateUndoStatus:function(j){var i=j.controlManager;i.setDisabled("undo",!j.undoManager.hasUndo()&&!j.typing);i.setDisabled("redo",!j.undoManager.hasRedo())},_nodeChanged:function(m,r,D,q,E){var y=this,C,F=0,x,G,z=y.settings,w,k,u,B,l,j,i;e.each(y.stateControls,function(n){r.setActive(n,m.queryCommandState(y.controls[n][1]))});function o(p){var s,n=E.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]}}}r.setActive("visualaid",m.hasVisual);y._updateUndoStatus(m);r.setDisabled("outdent",!m.queryCommandState("Outdent"));C=o("A");if(G=r.get("link")){if(!C||!C.name){G.setDisabled(!C&&q);G.setActive(!!C)}}if(G=r.get("unlink")){G.setDisabled(!C&&q);G.setActive(!!C&&!C.name)}if(G=r.get("anchor")){G.setActive(!q&&!!C&&C.name)}C=o("IMG");if(G=r.get("image")){G.setActive(!q&&!!C&&D.className.indexOf("mceItem")==-1)}if(G=r.get("styleselect")){y._importClasses();j=[];f(G.items,function(n){j.push(n.value)});i=m.formatter.matchAll(j);G.select(i[0])}if(G=r.get("formatselect")){C=o(d.isBlock);if(C){G.select(C.nodeName.toLowerCase())}}o(function(p){if(p.nodeName==="SPAN"){if(!w&&p.className){w=p.className}}if(m.dom.is(p,z.theme_advanced_font_selector)){if(!k&&p.style.fontSize){k=p.style.fontSize}if(!u&&p.style.fontFamily){u=p.style.fontFamily.replace(/[\"\']+/g,"").replace(/^([^,]+).*/,"$1").toLowerCase()}if(!B&&p.style.color){B=p.style.color}if(!l&&p.style.backgroundColor){l=p.style.backgroundColor}}return false});if(G=r.get("fontselect")){G.select(function(n){return n.replace(/^([^,]+).*/,"$1").toLowerCase()==u})}if(G=r.get("fontsizeselect")){if(z.theme_advanced_runtime_fontsize&&!k&&!w){k=m.dom.getStyle(D,"fontSize",true)}G.select(function(n){if(n.fontSize&&n.fontSize===k){return true}if(n["class"]&&n["class"]===w){return true}})}if(z.theme_advanced_show_current_color){function A(p,n){if(G=r.get(p)){if(!n){n=G.settings.default_color}if(n!==G.value){G.displayColor(n)}}}A("forecolor",B);A("backcolor",l)}if(z.theme_advanced_show_current_color){function A(p,n){if(G=r.get(p)){if(!n){n=G.settings.default_color}if(n!==G.value){G.displayColor(n)}}}A("forecolor",B);A("backcolor",l)}if(z.theme_advanced_path&&z.theme_advanced_statusbar_location){C=d.get(m.id+"_path")||d.add(m.id+"_path_row","span",{id:m.id+"_path"});if(y.statusKeyboardNavigation){y.statusKeyboardNavigation.destroy();y.statusKeyboardNavigation=null}d.setHTML(C,"");o(function(H){var p=H.nodeName.toLowerCase(),s,v,t="";if(H.getAttribute("data-mce-bogus")){return}if(H.nodeType!=1||H.nodeName==="BR"||(d.hasClass(H,"mceItemHidden")||d.hasClass(H,"mceItemRemoved"))){return}if(e.isIE&&H.scopeName!=="HTML"){p=H.scopeName+":"+p}p=p.replace(/mce\:/g,"");switch(p){case"b":p="strong";break;case"i":p="em";break;case"img":if(x=d.getAttrib(H,"src")){t+="src: "+x+" "}break;case"a":if(x=d.getAttrib(H,"name")){t+="name: "+x+" ";p+="#"+x}if(x=d.getAttrib(H,"href")){t+="href: "+x+" "}break;case"font":if(x=d.getAttrib(H,"face")){t+="font: "+x+" "}if(x=d.getAttrib(H,"size")){t+="size: "+x+" "}if(x=d.getAttrib(H,"color")){t+="color: "+x+" "}break;case"span":if(x=d.getAttrib(H,"style")){t+="style: "+x+" "}break}if(x=d.getAttrib(H,"id")){t+="id: "+x+" "}if(x=H.className){x=x.replace(/\b\s*(webkit|mce|Apple-)\w+\s*\b/g,"");if(x){t+="class: "+x+" ";if(d.isBlock(H)||p=="img"||p=="span"){p+="."+x}}}p=p.replace(/(html:)/g,"");p={name:p,node:H,title:t};y.onResolveName.dispatch(y,p);t=p.title;p=p.name;v=d.create("a",{href:"javascript:;",role:"button",onmousedown:"return false;",title:t,"class":"mcePath_"+(F++)},p);if(C.hasChildNodes()){C.insertBefore(d.create("span",{"aria-hidden":"true"},"\u00a0\u00bb "),C.firstChild);C.insertBefore(v,C.firstChild)}else{C.appendChild(v)}},m.getBody());if(d.select("a",C).length>0){y.statusKeyboardNavigation=new e.ui.KeyboardNavigation({root:m.id+"_path_row",items:d.select("a",C),excludeFromTabOrder:true,onCancel:function(){m.focus()}},d)}}},_sel:function(i){this.editor.execCommand("mceSelectNodeDepth",false,i)},_mceInsertAnchor:function(k,j){var i=this.editor;i.windowManager.open({url:this.url+"/anchor.htm",width:320+parseInt(i.getLang("advanced.anchor_delta_width",0)),height:90+parseInt(i.getLang("advanced.anchor_delta_height",0)),inline:true},{theme_url:this.url})},_mceCharMap:function(){var i=this.editor;i.windowManager.open({url:this.url+"/charmap.htm",width:550+parseInt(i.getLang("advanced.charmap_delta_width",0)),height:250+parseInt(i.getLang("advanced.charmap_delta_height",0)),inline:true},{theme_url:this.url})},_mceHelp:function(){var i=this.editor;i.windowManager.open({url:this.url+"/about.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceShortcuts:function(){var i=this.editor;i.windowManager.open({url:this.url+"/shortcuts.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceColorPicker:function(k,j){var i=this.editor;j=j||{};i.windowManager.open({url:this.url+"/color_picker.htm",width:375+parseInt(i.getLang("advanced.colorpicker_delta_width",0)),height:250+parseInt(i.getLang("advanced.colorpicker_delta_height",0)),close_previous:false,inline:true},{input_color:j.color,func:j.func,theme_url:this.url})},_mceCodeEditor:function(j,k){var i=this.editor;i.windowManager.open({url:this.url+"/source_editor.htm",width:parseInt(i.getParam("theme_advanced_source_editor_width",720)),height:parseInt(i.getParam("theme_advanced_source_editor_height",580)),inline:true,resizable:true,maximizable:true},{theme_url:this.url})},_mceImage:function(j,k){var i=this.editor;if(i.dom.getAttrib(i.selection.getNode(),"class").indexOf("mceItem")!=-1){return}i.windowManager.open({url:this.url+"/image.htm",width:355+parseInt(i.getLang("advanced.image_delta_width",0)),height:275+parseInt(i.getLang("advanced.image_delta_height",0)),inline:true},{theme_url:this.url})},_mceLink:function(j,k){var i=this.editor;i.windowManager.open({url:this.url+"/link.htm",width:310+parseInt(i.getLang("advanced.link_delta_width",0)),height:200+parseInt(i.getLang("advanced.link_delta_height",0)),inline:true},{theme_url:this.url})},_mceNewDocument:function(){var i=this.editor;i.windowManager.confirm("advanced.newdocument",function(j){if(j){i.execCommand("mceSetContent",false,"")}})},_mceForeColor:function(){var i=this;this._mceColorPicker(0,{color:i.fgColor,func:function(j){i.fgColor=j;i.editor.execCommand("ForeColor",false,j)}})},_mceBackColor:function(){var i=this;this._mceColorPicker(0,{color:i.bgColor,func:function(j){i.bgColor=j;i.editor.execCommand("HiliteColor",false,j)}})},_ufirst:function(i){return i.substring(0,1).toUpperCase()+i.substring(1)}});e.ThemeManager.add("advanced",e.themes.AdvancedTheme)}(tinymce));
\ No newline at end of file
+(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:"presentation"});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
index 2bdef96d508b39b808247f09278a5b507221c95d..afd722d13599db980e41b9d224f8e117ac9da151 100644 (file)
 (function(tinymce) {\r
        var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend, each = tinymce.each, Cookie = tinymce.util.Cookie, lastExtID, explode = tinymce.explode;\r
 \r
+       // Generates a preview for a format\r
+       function getPreviewCss(ed, fmt) {\r
+               var name, previewElm, dom = ed.dom, previewCss = '', parentFontSize, previewStylesName;\r
+\r
+               previewStyles = ed.settings.preview_styles;\r
+\r
+               // No preview forced\r
+               if (previewStyles === false)\r
+                       return '';\r
+\r
+               // Default preview\r
+               if (!previewStyles)\r
+                       previewStyles = 'font-family font-size font-weight text-decoration text-transform color background-color';\r
+\r
+               // Removes any variables since these can't be previewed\r
+               function removeVars(val) {\r
+                       return val.replace(/%(\w+)/g, '');\r
+               };\r
+\r
+               // Create block/inline element to use for preview\r
+               name = fmt.block || fmt.inline || 'span';\r
+               previewElm = dom.create(name);\r
+\r
+               // Add format styles to preview element\r
+               each(fmt.styles, function(value, name) {\r
+                       value = removeVars(value);\r
+\r
+                       if (value)\r
+                               dom.setStyle(previewElm, name, value);\r
+               });\r
+\r
+               // Add attributes to preview element\r
+               each(fmt.attributes, function(value, name) {\r
+                       value = removeVars(value);\r
+\r
+                       if (value)\r
+                               dom.setAttrib(previewElm, name, value);\r
+               });\r
+\r
+               // Add classes to preview element\r
+               each(fmt.classes, function(value) {\r
+                       value = removeVars(value);\r
+\r
+                       if (!dom.hasClass(previewElm, value))\r
+                               dom.addClass(previewElm, value);\r
+               });\r
+\r
+               // Add the previewElm outside the visual area\r
+               dom.setStyles(previewElm, {position: 'absolute', left: -0xFFFF});\r
+               ed.getBody().appendChild(previewElm);\r
+\r
+               // Get parent container font size so we can compute px values out of em/% for older IE:s\r
+               parentFontSize = dom.getStyle(ed.getBody(), 'fontSize', true);\r
+               parentFontSize = /px$/.test(parentFontSize) ? parseInt(parentFontSize, 10) : 0;\r
+\r
+               each(previewStyles.split(' '), function(name) {\r
+                       var value = dom.getStyle(previewElm, name, true);\r
+\r
+                       // If background is transparent then check if the body has a background color we can use\r
+                       if (name == 'background-color' && /transparent|rgba\s*\([^)]+,\s*0\)/.test(value)) {\r
+                               value = dom.getStyle(ed.getBody(), name, true);\r
+\r
+                               // Ignore white since it's the default color, not the nicest fix\r
+                               if (dom.toHex(value).toLowerCase() == '#ffffff') {\r
+                                       return;\r
+                               }\r
+                       }\r
+\r
+                       // Old IE won't calculate the font size so we need to do that manually\r
+                       if (name == 'font-size') {\r
+                               if (/em|%$/.test(value)) {\r
+                                       if (parentFontSize === 0) {\r
+                                               return;\r
+                                       }\r
+\r
+                                       // Convert font size from em/% to px\r
+                                       value = parseFloat(value, 10) / (/%$/.test(value) ? 100 : 1);\r
+                                       value = (value * parentFontSize) + 'px';\r
+                               }\r
+                       }\r
+\r
+                       previewCss += name + ':' + value + ';';\r
+               });\r
+\r
+               dom.remove(previewElm);\r
+\r
+               return previewCss;\r
+       };\r
+\r
        // Tell it to load theme specific language pack(s)\r
        tinymce.ThemeManager.requireLangPack('advanced');\r
 \r
                        t.editor = ed;\r
                        t.url = url;\r
                        t.onResolveName = new tinymce.util.Dispatcher(this);\r
+                       s = ed.settings;\r
 \r
                        ed.forcedHighContrastMode = ed.settings.detect_highcontrast && t._isHighContrast();\r
                        ed.settings.skin = ed.forcedHighContrastMode ? 'highcontrast' : ed.settings.skin;\r
 \r
+                       // Setup default buttons\r
+                       if (!s.theme_advanced_buttons1) {\r
+                               s = extend({\r
+                                       theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",\r
+                                       theme_advanced_buttons2 : "bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",\r
+                                       theme_advanced_buttons3 : "hr,removeformat,visualaid,|,sub,sup,|,charmap"\r
+                               }, s);\r
+                       }\r
+       \r
                        // Default settings\r
                        t.settings = s = extend({\r
                                theme_advanced_path : true,\r
-                               theme_advanced_toolbar_location : 'bottom',\r
-                               theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",\r
-                               theme_advanced_buttons2 : "bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",\r
-                               theme_advanced_buttons3 : "hr,removeformat,visualaid,|,sub,sup,|,charmap",\r
+                               theme_advanced_toolbar_location : 'top',\r
                                theme_advanced_blockformats : "p,address,pre,h1,h2,h3,h4,h5,h6",\r
-                               theme_advanced_toolbar_align : "center",\r
+                               theme_advanced_toolbar_align : "left",\r
+                               theme_advanced_statusbar_location : "bottom",\r
                                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",\r
                                theme_advanced_more_colors : 1,\r
                                theme_advanced_row_height : 23,\r
                                theme_advanced_font_selector : "span",\r
                                theme_advanced_show_current_color: 0,\r
                                readonly : ed.settings.readonly\r
-                       }, ed.settings);\r
+                       }, s);\r
 \r
                        // Setup default font_size_style_values\r
                        if (!s.font_size_style_values)\r
 \r
                        if (ctrl.getLength() == 0) {\r
                                each(ed.dom.getClasses(), function(o, idx) {\r
-                                       var name = 'style_' + idx;\r
+                                       var name = 'style_' + idx, fmt;\r
 \r
-                                       ed.formatter.register(name, {\r
+                                       fmt = {\r
                                                inline : 'span',\r
                                                attributes : {'class' : o['class']},\r
                                                selector : '*'\r
-                                       });\r
+                                       };\r
+\r
+                                       ed.formatter.register(name, fmt);\r
 \r
-                                       ctrl.add(o['class'], name);\r
+                                       ctrl.add(o['class'], name, {\r
+                                               style: function() {\r
+                                                       return getPreviewCss(ed, fmt);\r
+                                               }\r
+                                       });\r
                                });\r
                        }\r
                },\r
                        ctrl = ctrlMan.createListBox('styleselect', {\r
                                title : 'advanced.style_select',\r
                                onselect : function(name) {\r
-                                       var matches, formatNames = [];\r
+                                       var matches, formatNames = [], removedFormat;\r
 \r
                                        each(ctrl.items, function(item) {\r
                                                formatNames.push(item.value);\r
                                        ed.focus();\r
                                        ed.undoManager.add();\r
 \r
-                                       // Toggle off the current format\r
+                                       // Toggle off the current format(s)\r
                                        matches = ed.formatter.matchAll(formatNames);\r
-                                       if (!name || matches[0] == name) {\r
-                                               if (matches[0]) \r
-                                                       ed.formatter.remove(matches[0]);\r
-                                       } else\r
+                                       tinymce.each(matches, function(match) {\r
+                                               if (!name || match == name) {\r
+                                                       if (match)\r
+                                                               ed.formatter.remove(match);\r
+\r
+                                                       removedFormat = true;\r
+                                               }\r
+                                       });\r
+\r
+                                       if (!removedFormat)\r
                                                ed.formatter.apply(name);\r
 \r
                                        ed.undoManager.add();\r
                        });\r
 \r
                        // Handle specified format\r
-                       ed.onInit.add(function() {\r
+                       ed.onPreInit.add(function() {\r
                                var counter = 0, formats = ed.getParam('style_formats');\r
 \r
                                if (formats) {\r
                                                if (keys > 1) {\r
                                                        name = fmt.name = fmt.name || 'style_' + (counter++);\r
                                                        ed.formatter.register(name, fmt);\r
-                                                       ctrl.add(fmt.title, name);\r
+                                                       ctrl.add(fmt.title, name, {\r
+                                                               style: function() {\r
+                                                                       return getPreviewCss(ed, fmt);\r
+                                                               }\r
+                                                       });\r
                                                } else\r
                                                        ctrl.add(fmt.title);\r
                                        });\r
                                } else {\r
                                        each(ed.getParam('theme_advanced_styles', '', 'hash'), function(val, key) {\r
-                                               var name;\r
+                                               var name, fmt;\r
 \r
                                                if (val) {\r
                                                        name = 'style_' + (counter++);\r
-\r
-                                                       ed.formatter.register(name, {\r
+                                                       fmt = {\r
                                                                inline : 'span',\r
                                                                classes : val,\r
                                                                selector : '*'\r
-                                                       });\r
+                                                       };\r
 \r
-                                                       ctrl.add(t.editor.translate(key), name);\r
+                                                       ed.formatter.register(name, fmt);\r
+                                                       ctrl.add(t.editor.translate(key), name, {\r
+                                                               style: function() {\r
+                                                                       return getPreviewCss(ed, fmt);\r
+                                                               }\r
+                                                       });\r
                                                }\r
                                        });\r
                                }\r
                                        return v == sv;\r
                                });\r
 \r
-                               if (cur && (cur.value.fontSize == v.fontSize || cur.value['class'] == v['class'])) {\r
+                               if (cur && (cur.value.fontSize == v.fontSize || cur.value['class'] && cur.value['class'] == v['class'])) {\r
                                        c.select(null);\r
                                }\r
 \r
 \r
                        if (c) {\r
                                each(t.editor.getParam('theme_advanced_blockformats', t.settings.theme_advanced_blockformats, 'hash'), function(v, k) {\r
-                                       c.add(t.editor.translate(k != v ? k : fmts[v]), v, {'class' : 'mce_formatPreview mce_' + v});\r
+                                       c.add(t.editor.translate(k != v ? k : fmts[v]), v, {'class' : 'mce_formatPreview mce_' + v, style: function() {\r
+                                               return getPreviewCss(t.editor, {block: v});\r
+                                       }});\r
                                });\r
                        }\r
 \r
 \r
                        // TODO: ACC Should have an aria-describedby attribute which is user-configurable to describe what this field is actually for.\r
                        // Maybe actually inherit it from the original textara?\r
-                       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) : '')});\r
+                       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' : '')});\r
                        DOM.add(n, 'span', {'class': 'mceVoiceLabel', 'style': 'display:none;', id: ed.id + '_voice'}, s.aria_label);\r
 \r
                        if (!DOM.boxModel)\r
 \r
                                if (e.nodeName == 'A') {\r
                                        t._sel(e.className.replace(/^.*mcePath_([0-9]+).*$/, '$1'));\r
-\r
-                                       return Event.cancel(e);\r
+                                       return false;\r
                                }\r
                        });\r
 /*\r
 \r
                                if (evt.altKey) {\r
                                        if (evt.keyCode === DOM_VK_F10) {\r
+                                               // Make sure focus is given to toolbar in Safari.\r
+                                               // We can't do this in IE as it prevents giving focus to toolbar when editor is in a frame\r
+                                               if (tinymce.isWebKit) {\r
+                                                       window.focus();\r
+                                               }\r
                                                t.toolbarGroup.focus();\r
                                                return Event.cancel(evt);\r
                                        } else if (evt.keyCode === DOM_VK_F11) {\r
                                        var f = Event.add(ed.id + '_external_close', 'click', function() {\r
                                                DOM.hide(ed.id + '_external');\r
                                                Event.remove(ed.id + '_external_close', 'click', f);\r
+                                               return false;\r
                                        });\r
 \r
                                        DOM.show(e);\r
                },\r
 \r
                _addToolbars : function(c, o) {\r
-                       var t = this, i, tb, ed = t.editor, s = t.settings, v, cf = ed.controlManager, di, n, h = [], a, toolbarGroup;\r
+                       var t = this, i, tb, ed = t.editor, s = t.settings, v, cf = ed.controlManager, di, n, h = [], a, toolbarGroup, toolbarsExist = false;\r
 \r
                        toolbarGroup = cf.createToolbarGroup('toolbargroup', {\r
                                'name': ed.getLang('advanced.toolbar'),\r
 \r
                        // Create toolbar and add the controls\r
                        for (i=1; (v = s['theme_advanced_buttons' + i]); i++) {\r
+                               toolbarsExist = true;\r
                                tb = cf.createToolbar("toolbar" + i, {'class' : 'mceToolbarRow' + i});\r
 \r
                                if (s['theme_advanced_buttons' + i + '_add'])\r
 \r
                                o.deltaHeight -= s.theme_advanced_row_height;\r
                        }\r
+                       // Handle case when there are no toolbar buttons and ensure editor height is adjusted accordingly\r
+                       if (!toolbarsExist)\r
+                               o.deltaHeight -= s.theme_advanced_row_height;\r
                        h.push(toolbarGroup.renderHTML());\r
                        h.push(DOM.createHTML('a', {href : '#', accesskey : 'z', title : ed.getLang("advanced.toolbar_focus"), onfocus : 'tinyMCE.getInstanceById(\'' + ed.id + '\').focus();'}, '<!-- IE -->'));\r
                        DOM.setHTML(n, h.join(''));\r
                        \r
 \r
                        if (s.theme_advanced_resizing) {\r
-                               DOM.add(td, 'a', {id : ed.id + '_resize', href : 'javascript:;', onclick : "return false;", 'class' : 'mceResize'});\r
+                               DOM.add(td, 'a', {id : ed.id + '_resize', href : 'javascript:;', onclick : "return false;", 'class' : 'mceResize', tabIndex:"-1"});\r
 \r
                                if (s.theme_advanced_resizing_use_cookie) {\r
                                        ed.onPostRender.add(function() {\r
                                                        width = startWidth + (e.screenX - startX);\r
                                                        height = startHeight + (e.screenY - startY);\r
                                                        t.resizeTo(width, height, true);\r
+\r
+                                                       ed.nodeChanged();\r
                                                };\r
 \r
                                                e.preventDefault();\r
                },\r
 \r
                _updateUndoStatus : function(ed) {\r
-                       var cm = ed.controlManager;\r
+                       var cm = ed.controlManager, um = ed.undoManager;\r
 \r
-                       cm.setDisabled('undo', !ed.undoManager.hasUndo() && !ed.typing);\r
-                       cm.setDisabled('redo', !ed.undoManager.hasRedo());\r
+                       cm.setDisabled('undo', !um.hasUndo() && !um.typing);\r
+                       cm.setDisabled('redo', !um.hasRedo());\r
                },\r
 \r
                _nodeChanged : function(ed, cm, n, co, ob) {\r
 \r
                        p = getParent('A');\r
                        if (c = cm.get('link')) {\r
-                               if (!p || !p.name) {\r
-                                       c.setDisabled(!p && co);\r
-                                       c.setActive(!!p);\r
-                               }\r
+                               c.setDisabled((!p && co) || (p && !p.href));\r
+                               c.setActive(!!p && (!p.name && !p.id));\r
                        }\r
 \r
                        if (c = cm.get('unlink')) {\r
                                c.setDisabled(!p && co);\r
-                               c.setActive(!!p && !p.name);\r
+                               c.setActive(!!p && !p.name && !p.id);\r
                        }\r
 \r
                        if (c = cm.get('anchor')) {\r
-                               c.setActive(!co && !!p && p.name);\r
+                               c.setActive(!co && !!p && (p.name || (p.id && !p.href)));\r
                        }\r
 \r
                        p = getParent('IMG');\r
 \r
                                matches = ed.formatter.matchAll(formatNames);\r
                                c.select(matches[0]);\r
+                               tinymce.each(matches, function(match, index) {\r
+                                       if (index > 0) {\r
+                                               c.mark(match);\r
+                                       }\r
+                               });\r
                        }\r
 \r
                        if (c = cm.get('formatselect')) {\r
-                               p = getParent(DOM.isBlock);\r
+                               p = getParent(ed.dom.isBlock);\r
 \r
                                if (p)\r
                                        c.select(p.nodeName.toLowerCase());\r
                                getParent(function(n) {\r
                                        var na = n.nodeName.toLowerCase(), u, pi, ti = '';\r
 \r
-                                       if (n.getAttribute('data-mce-bogus'))\r
-                                               return;\r
-\r
-                                       // Ignore non element and hidden elements\r
-                                       if (n.nodeType != 1 || n.nodeName === 'BR' || (DOM.hasClass(n, 'mceItemHidden') || DOM.hasClass(n, 'mceItemRemoved')))\r
+                                       // Ignore non element and bogus/hidden elements\r
+                                       if (n.nodeType != 1 || na === 'br' || n.getAttribute('data-mce-bogus') || DOM.hasClass(n, 'mceItemHidden') || DOM.hasClass(n, 'mceItemRemoved'))\r
                                                return;\r
 \r
                                        // Handle prefix\r
-                                       if (tinymce.isIE && n.scopeName !== 'HTML')\r
+                                       if (tinymce.isIE && n.scopeName !== 'HTML' && n.scopeName)\r
                                                na = n.scopeName + ':' + na;\r
 \r
                                        // Remove internal prefix\r
                                                ti += 'id: ' + v + ' ';\r
 \r
                                        if (v = n.className) {\r
-                                               v = v.replace(/\b\s*(webkit|mce|Apple-)\w+\s*\b/g, '')\r
+                                               v = v.replace(/\b\s*(webkit|mce|Apple-)\w+\s*\b/g, '');\r
 \r
                                                if (v) {\r
                                                        ti += 'class: ' + v + ' ';\r
 \r
-                                                       if (DOM.isBlock(n) || na == 'img' || na == 'span')\r
+                                                       if (ed.dom.isBlock(n) || na == 'img' || na == 'span')\r
                                                                na += '.' + v;\r
                                                }\r
                                        }\r
                        ed.windowManager.open({\r
                                url : this.url + '/charmap.htm',\r
                                width : 550 + parseInt(ed.getLang('advanced.charmap_delta_width', 0)),\r
-                               height : 250 + parseInt(ed.getLang('advanced.charmap_delta_height', 0)),\r
+                               height : 265 + parseInt(ed.getLang('advanced.charmap_delta_height', 0)),\r
                                inline : true\r
                        }, {\r
                                theme_url : this.url\r
                        var ed = this.editor;\r
 \r
                        // Internal image object like a flash placeholder\r
-                       if (ed.dom.getAttrib(ed.selection.getNode(), 'class').indexOf('mceItem') != -1)\r
+                       if (ed.dom.getAttrib(ed.selection.getNode(), 'class', '').indexOf('mceItem') != -1)\r
                                return;\r
 \r
                        ed.windowManager.open({\r
index b4c542d107b25f68a9d4f9d7a109d0565d1f1437..b1a377aba7784d3a0a0fabb4d22b8114cde25ace 100644 (file)
Binary files a/program/js/tiny_mce/themes/advanced/img/colorpicker.jpg and b/program/js/tiny_mce/themes/advanced/img/colorpicker.jpg differ
index cb192e6ceda8d19ad8e7d08dd1cfde0aa72ead2a..dec3f7c7028df98657860529461af29b8793601c 100644 (file)
Binary files a/program/js/tiny_mce/themes/advanced/img/flash.gif and b/program/js/tiny_mce/themes/advanced/img/flash.gif differ
index e46de5333082869b9bdab2576a554a2f9d01a966..ca222490188b939d695f5ff8823c42c0394c65f7 100644 (file)
Binary files a/program/js/tiny_mce/themes/advanced/img/icons.gif and b/program/js/tiny_mce/themes/advanced/img/icons.gif differ
index 3b0499145b16138249f653a1a3f2c80230fb292c..8f10e7aa6b6ab40ee69a1a41a961c092168d6fda 100644 (file)
Binary files a/program/js/tiny_mce/themes/advanced/img/quicktime.gif and b/program/js/tiny_mce/themes/advanced/img/quicktime.gif differ
index 5f235dfc7363bd4957b5fe352e16a7eee9a38574..9314d044709c9845876e08003cf94526fd69177f 100644 (file)
Binary files a/program/js/tiny_mce/themes/advanced/img/shockwave.gif and b/program/js/tiny_mce/themes/advanced/img/shockwave.gif differ
index e528e4f42f78a571657b6abe88f429a1d57400dd..2909a3a4d738640f44eb57a327372d9e0efb2f25 100644 (file)
@@ -6,7 +6,7 @@ var AnchorDialog = {
 \r
                this.editor = ed;\r
                elm = ed.dom.getParent(ed.selection.getNode(), 'A');\r
-               v = ed.dom.getAttrib(elm, 'name');\r
+               v = ed.dom.getAttrib(elm, 'name') || ed.dom.getAttrib(elm, 'id');\r
 \r
                if (v) {\r
                        this.action = 'update';\r
@@ -17,7 +17,7 @@ var AnchorDialog = {
        },\r
 \r
        update : function() {\r
-               var ed = this.editor, elm, name = document.forms[0].anchorName.value;\r
+               var ed = this.editor, elm, name = document.forms[0].anchorName.value, attribName;\r
 \r
                if (!name || !/^[a-z][a-z0-9\-\_:\.]*$/i.test(name)) {\r
                        tinyMCEPopup.alert('advanced_dlg.anchor_invalid');\r
@@ -29,11 +29,25 @@ var AnchorDialog = {
                if (this.action != 'update')\r
                        ed.selection.collapse(1);\r
 \r
+               var aRule = ed.schema.getElementRule('a');\r
+               if (!aRule || aRule.attributes.name) {\r
+                       attribName = 'name';\r
+               } else {\r
+                       attribName = 'id';\r
+               }\r
+\r
                elm = ed.dom.getParent(ed.selection.getNode(), 'A');\r
-               if (elm)\r
-                       elm.name = name;\r
-               else\r
-                       ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('a', {name : name, 'class' : 'mceItemAnchor'}, ''));\r
+               if (elm) {\r
+                       elm.setAttribute(attribName, name);\r
+                       elm[attribName] = name;\r
+                       ed.undoManager.add();\r
+               } else {\r
+                       // create with zero-sized nbsp so that in Webkit where anchor is on last line by itself caret cannot be placed after it\r
+                       var attrs =  {'class' : 'mceItemAnchor'};\r
+                       attrs[attribName] = name;\r
+                       ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('a', attrs, '\uFEFF'));\r
+                       ed.nodeChanged();\r
+               }\r
 \r
                tinyMCEPopup.close();\r
        }\r
index 1cead6dfe87c50cc7dc2d9a889131ee5e45eb2df..bb1869558c6dd5dcdcd1259d9d22e546fb4c88e9 100644 (file)
@@ -281,13 +281,21 @@ tinyMCEPopup.onInit.add(function() {
 function addKeyboardNavigation(){\r
        var tableElm, cells, settings;\r
 \r
-       cells = tinyMCEPopup.dom.select(".charmaplink", "charmapgroup");\r
+       cells = tinyMCEPopup.dom.select("a.charmaplink", "charmapgroup");\r
 \r
        settings ={\r
                root: "charmapgroup",\r
                items: cells\r
        };\r
-\r
+       cells[0].tabindex=0;\r
+       tinyMCEPopup.dom.addClass(cells[0], "mceFocus");\r
+       if (tinymce.isGecko) {\r
+               cells[0].focus();               \r
+       } else {\r
+               setTimeout(function(){\r
+                       cells[0].focus();\r
+               }, 100);\r
+       }\r
        tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', settings, tinyMCEPopup.dom);\r
 }\r
 \r
@@ -306,7 +314,7 @@ function renderCharMapHTML() {
                        previewCharFn = 'previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');';\r
                        html += ''\r
                                + '<td class="charmap">'\r
-                               + '<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] + '">'\r
+                               + '<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")+'">'\r
                                + charmap[i][1]\r
                                + '</a></td>';\r
                        if ((cols+1) % charsPerRow == 0)\r
index 7decac5b43c3c431867eb07a13f70e7dbebf76f5..cc891c17118d80462a1bb18a8db37cdb13535b04 100644 (file)
-tinyMCEPopup.requireLangPack();\r
-\r
-var detail = 50, strhex = "0123456789ABCDEF", i, isMouseDown = false, isMouseOver = false;\r
-\r
-var colors = [\r
-       "#000000","#000033","#000066","#000099","#0000cc","#0000ff","#330000","#330033",\r
-       "#330066","#330099","#3300cc","#3300ff","#660000","#660033","#660066","#660099",\r
-       "#6600cc","#6600ff","#990000","#990033","#990066","#990099","#9900cc","#9900ff",\r
-       "#cc0000","#cc0033","#cc0066","#cc0099","#cc00cc","#cc00ff","#ff0000","#ff0033",\r
-       "#ff0066","#ff0099","#ff00cc","#ff00ff","#003300","#003333","#003366","#003399",\r
-       "#0033cc","#0033ff","#333300","#333333","#333366","#333399","#3333cc","#3333ff",\r
-       "#663300","#663333","#663366","#663399","#6633cc","#6633ff","#993300","#993333",\r
-       "#993366","#993399","#9933cc","#9933ff","#cc3300","#cc3333","#cc3366","#cc3399",\r
-       "#cc33cc","#cc33ff","#ff3300","#ff3333","#ff3366","#ff3399","#ff33cc","#ff33ff",\r
-       "#006600","#006633","#006666","#006699","#0066cc","#0066ff","#336600","#336633",\r
-       "#336666","#336699","#3366cc","#3366ff","#666600","#666633","#666666","#666699",\r
-       "#6666cc","#6666ff","#996600","#996633","#996666","#996699","#9966cc","#9966ff",\r
-       "#cc6600","#cc6633","#cc6666","#cc6699","#cc66cc","#cc66ff","#ff6600","#ff6633",\r
-       "#ff6666","#ff6699","#ff66cc","#ff66ff","#009900","#009933","#009966","#009999",\r
-       "#0099cc","#0099ff","#339900","#339933","#339966","#339999","#3399cc","#3399ff",\r
-       "#669900","#669933","#669966","#669999","#6699cc","#6699ff","#999900","#999933",\r
-       "#999966","#999999","#9999cc","#9999ff","#cc9900","#cc9933","#cc9966","#cc9999",\r
-       "#cc99cc","#cc99ff","#ff9900","#ff9933","#ff9966","#ff9999","#ff99cc","#ff99ff",\r
-       "#00cc00","#00cc33","#00cc66","#00cc99","#00cccc","#00ccff","#33cc00","#33cc33",\r
-       "#33cc66","#33cc99","#33cccc","#33ccff","#66cc00","#66cc33","#66cc66","#66cc99",\r
-       "#66cccc","#66ccff","#99cc00","#99cc33","#99cc66","#99cc99","#99cccc","#99ccff",\r
-       "#cccc00","#cccc33","#cccc66","#cccc99","#cccccc","#ccccff","#ffcc00","#ffcc33",\r
-       "#ffcc66","#ffcc99","#ffcccc","#ffccff","#00ff00","#00ff33","#00ff66","#00ff99",\r
-       "#00ffcc","#00ffff","#33ff00","#33ff33","#33ff66","#33ff99","#33ffcc","#33ffff",\r
-       "#66ff00","#66ff33","#66ff66","#66ff99","#66ffcc","#66ffff","#99ff00","#99ff33",\r
-       "#99ff66","#99ff99","#99ffcc","#99ffff","#ccff00","#ccff33","#ccff66","#ccff99",\r
-       "#ccffcc","#ccffff","#ffff00","#ffff33","#ffff66","#ffff99","#ffffcc","#ffffff"\r
-];\r
-\r
-var named = {\r
-       '#F0F8FF':'Alice Blue','#FAEBD7':'Antique White','#00FFFF':'Aqua','#7FFFD4':'Aquamarine','#F0FFFF':'Azure','#F5F5DC':'Beige',\r
-       '#FFE4C4':'Bisque','#000000':'Black','#FFEBCD':'Blanched Almond','#0000FF':'Blue','#8A2BE2':'Blue Violet','#A52A2A':'Brown',\r
-       '#DEB887':'Burly Wood','#5F9EA0':'Cadet Blue','#7FFF00':'Chartreuse','#D2691E':'Chocolate','#FF7F50':'Coral','#6495ED':'Cornflower Blue',\r
-       '#FFF8DC':'Cornsilk','#DC143C':'Crimson','#00FFFF':'Cyan','#00008B':'Dark Blue','#008B8B':'Dark Cyan','#B8860B':'Dark Golden Rod',\r
-       '#A9A9A9':'Dark Gray','#A9A9A9':'Dark Grey','#006400':'Dark Green','#BDB76B':'Dark Khaki','#8B008B':'Dark Magenta','#556B2F':'Dark Olive Green',\r
-       '#FF8C00':'Darkorange','#9932CC':'Dark Orchid','#8B0000':'Dark Red','#E9967A':'Dark Salmon','#8FBC8F':'Dark Sea Green','#483D8B':'Dark Slate Blue',\r
-       '#2F4F4F':'Dark Slate Gray','#2F4F4F':'Dark Slate Grey','#00CED1':'Dark Turquoise','#9400D3':'Dark Violet','#FF1493':'Deep Pink','#00BFFF':'Deep Sky Blue',\r
-       '#696969':'Dim Gray','#696969':'Dim Grey','#1E90FF':'Dodger Blue','#B22222':'Fire Brick','#FFFAF0':'Floral White','#228B22':'Forest Green',\r
-       '#FF00FF':'Fuchsia','#DCDCDC':'Gainsboro','#F8F8FF':'Ghost White','#FFD700':'Gold','#DAA520':'Golden Rod','#808080':'Gray','#808080':'Grey',\r
-       '#008000':'Green','#ADFF2F':'Green Yellow','#F0FFF0':'Honey Dew','#FF69B4':'Hot Pink','#CD5C5C':'Indian Red','#4B0082':'Indigo','#FFFFF0':'Ivory',\r
-       '#F0E68C':'Khaki','#E6E6FA':'Lavender','#FFF0F5':'Lavender Blush','#7CFC00':'Lawn Green','#FFFACD':'Lemon Chiffon','#ADD8E6':'Light Blue',\r
-       '#F08080':'Light Coral','#E0FFFF':'Light Cyan','#FAFAD2':'Light Golden Rod Yellow','#D3D3D3':'Light Gray','#D3D3D3':'Light Grey','#90EE90':'Light Green',\r
-       '#FFB6C1':'Light Pink','#FFA07A':'Light Salmon','#20B2AA':'Light Sea Green','#87CEFA':'Light Sky Blue','#778899':'Light Slate Gray','#778899':'Light Slate Grey',\r
-       '#B0C4DE':'Light Steel Blue','#FFFFE0':'Light Yellow','#00FF00':'Lime','#32CD32':'Lime Green','#FAF0E6':'Linen','#FF00FF':'Magenta','#800000':'Maroon',\r
-       '#66CDAA':'Medium Aqua Marine','#0000CD':'Medium Blue','#BA55D3':'Medium Orchid','#9370D8':'Medium Purple','#3CB371':'Medium Sea Green','#7B68EE':'Medium Slate Blue',\r
-       '#00FA9A':'Medium Spring Green','#48D1CC':'Medium Turquoise','#C71585':'Medium Violet Red','#191970':'Midnight Blue','#F5FFFA':'Mint Cream','#FFE4E1':'Misty Rose','#FFE4B5':'Moccasin',\r
-       '#FFDEAD':'Navajo White','#000080':'Navy','#FDF5E6':'Old Lace','#808000':'Olive','#6B8E23':'Olive Drab','#FFA500':'Orange','#FF4500':'Orange Red','#DA70D6':'Orchid',\r
-       '#EEE8AA':'Pale Golden Rod','#98FB98':'Pale Green','#AFEEEE':'Pale Turquoise','#D87093':'Pale Violet Red','#FFEFD5':'Papaya Whip','#FFDAB9':'Peach Puff',\r
-       '#CD853F':'Peru','#FFC0CB':'Pink','#DDA0DD':'Plum','#B0E0E6':'Powder Blue','#800080':'Purple','#FF0000':'Red','#BC8F8F':'Rosy Brown','#4169E1':'Royal Blue',\r
-       '#8B4513':'Saddle Brown','#FA8072':'Salmon','#F4A460':'Sandy Brown','#2E8B57':'Sea Green','#FFF5EE':'Sea Shell','#A0522D':'Sienna','#C0C0C0':'Silver',\r
-       '#87CEEB':'Sky Blue','#6A5ACD':'Slate Blue','#708090':'Slate Gray','#708090':'Slate Grey','#FFFAFA':'Snow','#00FF7F':'Spring Green',\r
-       '#4682B4':'Steel Blue','#D2B48C':'Tan','#008080':'Teal','#D8BFD8':'Thistle','#FF6347':'Tomato','#40E0D0':'Turquoise','#EE82EE':'Violet',\r
-       '#F5DEB3':'Wheat','#FFFFFF':'White','#F5F5F5':'White Smoke','#FFFF00':'Yellow','#9ACD32':'Yellow Green'\r
-};\r
-\r
-var namedLookup = {};\r
-\r
-function init() {\r
-       var inputColor = convertRGBToHex(tinyMCEPopup.getWindowArg('input_color')), key, value;\r
-\r
-       tinyMCEPopup.resizeToInnerSize();\r
-\r
-       generatePicker();\r
-       generateWebColors();\r
-       generateNamedColors();\r
-\r
-       if (inputColor) {\r
-               changeFinalColor(inputColor);\r
-\r
-               col = convertHexToRGB(inputColor);\r
-\r
-               if (col)\r
-                       updateLight(col.r, col.g, col.b);\r
-       }\r
-       \r
-       for (key in named) {\r
-               value = named[key];\r
-               namedLookup[value.replace(/\s+/, '').toLowerCase()] = key.replace(/#/, '').toLowerCase();\r
-       }\r
-}\r
-\r
-function toHexColor(color) {\r
-       var matches, red, green, blue, toInt = parseInt;\r
-\r
-       function hex(value) {\r
-               value = parseInt(value).toString(16);\r
-\r
-               return value.length > 1 ? value : '0' + value; // Padd with leading zero\r
-       };\r
-\r
-       color = color.replace(/[\s#]+/g, '').toLowerCase();\r
-       color = namedLookup[color] || color;\r
-       matches = /^rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)|([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})|([a-f0-9])([a-f0-9])([a-f0-9])$/.exec(color);\r
-\r
-       if (matches) {\r
-               if (matches[1]) {\r
-                       red = toInt(matches[1]);\r
-                       green = toInt(matches[2]);\r
-                       blue = toInt(matches[3]);\r
-               } else if (matches[4]) {\r
-                       red = toInt(matches[4], 16);\r
-                       green = toInt(matches[5], 16);\r
-                       blue = toInt(matches[6], 16);\r
-               } else if (matches[7]) {\r
-                       red = toInt(matches[7] + matches[7], 16);\r
-                       green = toInt(matches[8] + matches[8], 16);\r
-                       blue = toInt(matches[9] + matches[9], 16);\r
-               }\r
-\r
-               return '#' + hex(red) + hex(green) + hex(blue);\r
-       }\r
-\r
-       return '';\r
-}\r
-\r
-function insertAction() {\r
-       var color = document.getElementById("color").value, f = tinyMCEPopup.getWindowArg('func');\r
-\r
-       tinyMCEPopup.restoreSelection();\r
-\r
-       if (f)\r
-               f(toHexColor(color));\r
-\r
-       tinyMCEPopup.close();\r
-}\r
-\r
-function showColor(color, name) {\r
-       if (name)\r
-               document.getElementById("colorname").innerHTML = name;\r
-\r
-       document.getElementById("preview").style.backgroundColor = color;\r
-       document.getElementById("color").value = color.toUpperCase();\r
-}\r
-\r
-function convertRGBToHex(col) {\r
-       var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");\r
-\r
-       if (!col)\r
-               return col;\r
-\r
-       var rgb = col.replace(re, "$1,$2,$3").split(',');\r
-       if (rgb.length == 3) {\r
-               r = parseInt(rgb[0]).toString(16);\r
-               g = parseInt(rgb[1]).toString(16);\r
-               b = parseInt(rgb[2]).toString(16);\r
-\r
-               r = r.length == 1 ? '0' + r : r;\r
-               g = g.length == 1 ? '0' + g : g;\r
-               b = b.length == 1 ? '0' + b : b;\r
-\r
-               return "#" + r + g + b;\r
-       }\r
-\r
-       return col;\r
-}\r
-\r
-function convertHexToRGB(col) {\r
-       if (col.indexOf('#') != -1) {\r
-               col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');\r
-\r
-               r = parseInt(col.substring(0, 2), 16);\r
-               g = parseInt(col.substring(2, 4), 16);\r
-               b = parseInt(col.substring(4, 6), 16);\r
-\r
-               return {r : r, g : g, b : b};\r
-       }\r
-\r
-       return null;\r
-}\r
-\r
-function generatePicker() {\r
-       var el = document.getElementById('light'), h = '', i;\r
-\r
-       for (i = 0; i < detail; i++){\r
-               h += '<div id="gs'+i+'" style="background-color:#000000; width:15px; height:3px; border-style:none; border-width:0px;"'\r
-               + ' onclick="changeFinalColor(this.style.backgroundColor)"'\r
-               + ' onmousedown="isMouseDown = true; return false;"'\r
-               + ' onmouseup="isMouseDown = false;"'\r
-               + ' onmousemove="if (isMouseDown && isMouseOver) changeFinalColor(this.style.backgroundColor); return false;"'\r
-               + ' onmouseover="isMouseOver = true;"'\r
-               + ' onmouseout="isMouseOver = false;"'\r
-               + '></div>';\r
-       }\r
-\r
-       el.innerHTML = h;\r
-}\r
-\r
-function generateWebColors() {\r
-       var el = document.getElementById('webcolors'), h = '', i;\r
-\r
-       if (el.className == 'generated')\r
-               return;\r
-\r
-       // TODO: VoiceOver doesn't seem to support legend as a label referenced by labelledby.\r
-       h += '<div role="listbox" aria-labelledby="webcolors_title" tabindex="0"><table role="presentation" border="0" cellspacing="1" cellpadding="0">'\r
-               + '<tr>';\r
-\r
-       for (i=0; i<colors.length; i++) {\r
-               h += '<td bgcolor="' + colors[i] + '" width="10" height="10">'\r
-                       + '<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;">';\r
-               if (tinyMCEPopup.editor.forcedHighContrastMode) {\r
-                       h += '<canvas class="mceColorSwatch" height="10" width="10" data-color="' + colors[i] + '"></canvas>';\r
-               }\r
-               h += '<span class="mceVoiceLabel" style="display:none;" id="web_colors_' + i + '">' + colors[i].toUpperCase() + '</span>';\r
-               h += '</a></td>';\r
-               if ((i+1) % 18 == 0)\r
-                       h += '</tr><tr>';\r
-       }\r
-\r
-       h += '</table></div>';\r
-\r
-       el.innerHTML = h;\r
-       el.className = 'generated';\r
-\r
-       paintCanvas(el);\r
-       enableKeyboardNavigation(el.firstChild);\r
-}\r
-\r
-function paintCanvas(el) {\r
-       tinyMCEPopup.getWin().tinymce.each(tinyMCEPopup.dom.select('canvas.mceColorSwatch', el), function(canvas) {\r
-               var context;\r
-               if (canvas.getContext && (context = canvas.getContext("2d"))) {\r
-                       context.fillStyle = canvas.getAttribute('data-color');\r
-                       context.fillRect(0, 0, 10, 10);\r
-               }\r
-       });\r
-}\r
-function generateNamedColors() {\r
-       var el = document.getElementById('namedcolors'), h = '', n, v, i = 0;\r
-\r
-       if (el.className == 'generated')\r
-               return;\r
-\r
-       for (n in named) {\r
-               v = named[n];\r
-               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 + '">';\r
-               if (tinyMCEPopup.editor.forcedHighContrastMode) {\r
-                       h += '<canvas class="mceColorSwatch" height="10" width="10" data-color="' + colors[i] + '"></canvas>';\r
-               }\r
-               h += '<span class="mceVoiceLabel" style="display:none;" id="named_colors_' + i + '">' + v + '</span>';\r
-               h += '</a>';\r
-               i++;\r
-       }\r
-\r
-       el.innerHTML = h;\r
-       el.className = 'generated';\r
-\r
-       paintCanvas(el);\r
-       enableKeyboardNavigation(el);\r
-}\r
-\r
-function enableKeyboardNavigation(el) {\r
-       tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', {\r
-               root: el,\r
-               items: tinyMCEPopup.dom.select('a', el)\r
-       }, tinyMCEPopup.dom);\r
-}\r
-\r
-function dechex(n) {\r
-       return strhex.charAt(Math.floor(n / 16)) + strhex.charAt(n % 16);\r
-}\r
-\r
-function computeColor(e) {\r
-       var x, y, partWidth, partDetail, imHeight, r, g, b, coef, i, finalCoef, finalR, finalG, finalB;\r
-\r
-       x = e.offsetX ? e.offsetX : (e.target ? e.clientX - e.target.x : 0);\r
-       y = e.offsetY ? e.offsetY : (e.target ? e.clientY - e.target.y : 0);\r
-\r
-       partWidth = document.getElementById('colors').width / 6;\r
-       partDetail = detail / 2;\r
-       imHeight = document.getElementById('colors').height;\r
-\r
-       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;\r
-       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);\r
-       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);\r
-\r
-       coef = (imHeight - y) / imHeight;\r
-       r = 128 + (r - 128) * coef;\r
-       g = 128 + (g - 128) * coef;\r
-       b = 128 + (b - 128) * coef;\r
-\r
-       changeFinalColor('#' + dechex(r) + dechex(g) + dechex(b));\r
-       updateLight(r, g, b);\r
-}\r
-\r
-function updateLight(r, g, b) {\r
-       var i, partDetail = detail / 2, finalCoef, finalR, finalG, finalB, color;\r
-\r
-       for (i=0; i<detail; i++) {\r
-               if ((i>=0) && (i<partDetail)) {\r
-                       finalCoef = i / partDetail;\r
-                       finalR = dechex(255 - (255 - r) * finalCoef);\r
-                       finalG = dechex(255 - (255 - g) * finalCoef);\r
-                       finalB = dechex(255 - (255 - b) * finalCoef);\r
-               } else {\r
-                       finalCoef = 2 - i / partDetail;\r
-                       finalR = dechex(r * finalCoef);\r
-                       finalG = dechex(g * finalCoef);\r
-                       finalB = dechex(b * finalCoef);\r
-               }\r
-\r
-               color = finalR + finalG + finalB;\r
-\r
-               setCol('gs' + i, '#'+color);\r
-       }\r
-}\r
-\r
-function changeFinalColor(color) {\r
-       if (color.indexOf('#') == -1)\r
-               color = convertRGBToHex(color);\r
-\r
-       setCol('preview', color);\r
-       document.getElementById('color').value = color;\r
-}\r
-\r
-function setCol(e, c) {\r
-       try {\r
-               document.getElementById(e).style.backgroundColor = c;\r
-       } catch (ex) {\r
-               // Ignore IE warning\r
-       }\r
-}\r
-\r
-tinyMCEPopup.onInit.add(init);\r
+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);
index 257477282f041c6f8d9e9b2a6106f5fd4517635a..bb09e75bf5970001ac43c2988580f1526715808f 100644 (file)
@@ -18,7 +18,7 @@ var ImageDialog = {
 \r
                e = ed.selection.getNode();\r
 \r
-               this.fillFileList('image_list', 'tinyMCEImageList');\r
+               this.fillFileList('image_list', tinyMCEPopup.getParam('external_image_list', 'tinyMCEImageList'));\r
 \r
                if (e.nodeName == 'IMG') {\r
                        f.src.value = ed.dom.getAttrib(e, 'src');\r
@@ -39,7 +39,7 @@ var ImageDialog = {
        fillFileList : function(id, l) {\r
                var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;\r
 \r
-               l = window[l];\r
+               l = typeof(l) === 'function' ? l() : window[l];\r
 \r
                if (l && l.length > 0) {\r
                        lst.options[lst.options.length] = new Option('', '');\r
@@ -90,9 +90,13 @@ var ImageDialog = {
                        tinyMCEPopup.editor.execCommand('mceRepaint');\r
                        tinyMCEPopup.editor.focus();\r
                } else {\r
-                       ed.execCommand('mceInsertContent', false, '<img id="__mce_tmp" />', {skip_undo : 1});\r
-                       ed.dom.setAttribs('__mce_tmp', args);\r
-                       ed.dom.setAttrib('__mce_tmp', 'id', '');\r
+                       tinymce.each(args, function(value, name) {\r
+                               if (value === "") {\r
+                                       delete args[name];\r
+                               }\r
+                       });\r
+\r
+                       ed.execCommand('mceInsertContent', false, tinyMCEPopup.editor.dom.createHTML('img', args), {skip_undo : 1});\r
                        ed.undoManager.add();\r
                }\r
 \r
@@ -100,10 +104,12 @@ var ImageDialog = {
        },\r
 \r
        updateStyle : function() {\r
-               var dom = tinyMCEPopup.dom, st, v, f = document.forms[0];\r
+               var dom = tinyMCEPopup.dom, st = {}, v, f = document.forms[0];\r
 \r
                if (tinyMCEPopup.editor.settings.inline_styles) {\r
-                       st = tinyMCEPopup.dom.parseStyle(this.styleVal);\r
+                       tinymce.each(tinyMCEPopup.dom.parseStyle(this.styleVal), function(value, key) {\r
+                               st[key] = value;\r
+                       });\r
 \r
                        // Handle align\r
                        v = getSelectValue(f, 'align');\r
index 53ff409e7962f0d4f2d686922e33eff2ae53714b..8c1d73c502fbb37134946625381cbb9767d9076d 100644 (file)
@@ -68,10 +68,16 @@ var LinkDialog = {
                } else {\r
                        ed.dom.setAttribs(e, {\r
                                href : href,\r
-                               title : f.linktitle.value,\r
-                               target : f.target_list ? getSelectValue(f, "target_list") : null,\r
-                               'class' : f.class_list ? getSelectValue(f, "class_list") : null\r
+                               title : f.linktitle.value\r
                        });\r
+       \r
+                       if (f.target_list) {\r
+                               ed.dom.setAttrib(e, 'target', getSelectValue(f, "target_list"));\r
+                       }\r
+\r
+                       if (f.class_list) {\r
+                               ed.dom.setAttrib(e, 'class', getSelectValue(f, "class_list"));\r
+                       }\r
                }\r
 \r
                // Don't move caret if selection was image\r
index 84546ad52ebc461ccdebb02e1762e8c9ea760744..dd5e366fa9daf9f7556586b0756dc8cc5a74cc4a 100644 (file)
@@ -16,7 +16,7 @@ function onLoadInit() {
        document.getElementById('htmlSource').value = tinyMCEPopup.editor.getContent({source_view : true});\r
 \r
        if (tinyMCEPopup.editor.getParam("theme_advanced_source_editor_wrap", true)) {\r
-               setWrap('soft');\r
+               turnWrapOn();\r
                document.getElementById('wraped').checked = true;\r
        }\r
 \r
@@ -37,11 +37,33 @@ function setWrap(val) {
        }\r
 }\r
 \r
-function toggleWordWrap(elm) {\r
-       if (elm.checked)\r
-               setWrap('soft');\r
-       else\r
+function setWhiteSpaceCss(value) {\r
+       var el = document.getElementById('htmlSource');\r
+       tinymce.DOM.setStyle(el, 'white-space', value);\r
+}\r
+\r
+function turnWrapOff() {\r
+       if (tinymce.isWebKit) {\r
+               setWhiteSpaceCss('pre');\r
+       } else {\r
                setWrap('off');\r
+       }\r
+}\r
+\r
+function turnWrapOn() {\r
+       if (tinymce.isWebKit) {\r
+               setWhiteSpaceCss('pre-wrap');\r
+       } else {\r
+               setWrap('soft');\r
+       }\r
+}\r
+\r
+function toggleWordWrap(elm) {\r
+       if (elm.checked) {\r
+               turnWrapOn();\r
+       } else {\r
+               turnWrapOff();\r
+       }\r
 }\r
 \r
 function resizeInputs() {\r
old mode 100755 (executable)
new mode 100644 (file)
index 046eea0..9bdeef0
@@ -1 +1 @@
-tinyMCE.addI18n('ar.advanced',{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)",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:"Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X",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",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
+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
old mode 100755 (executable)
new mode 100644 (file)
index b20af36..6cfc8ad
@@ -1 +1 @@
-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:"\u0631\u0627\u0628\u0637 \u0627\u0644\u0627\u0631\u062a\u0628\u0627\u0637",link_title:"\u0625\u062f\u0631\u0627\u062c / \u062a\u062d\u0631\u064a\u0631 \u0627\u0631\u062a\u0628\u0627\u0637",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:"\u0625\u062f\u0631\u0627\u062c / \u062a\u062d\u0631\u064a\u0631 \u0635\u0648\u0631\u0629",charmap_title:"\u062a\u062d\u062f\u064a\u062f \u0645\u062e\u0635\u0635 \u062d\u0631\u0641",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"});
\ No newline at end of file
+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
index 68c8e70f0c1f40cbceb5bd5af5297e63d9ea05b5..1edbec24d9b728f7391921ba7e7fe6e0f83c4271 100644 (file)
@@ -1 +1 @@
-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:""});
\ No newline at end of file
+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
index d75e388c90cc3135f8e74926978aa836cb29a70f..de9a2f46a64f6757328f0cf28ece2c445596518a 100644 (file)
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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/be.js b/program/js/tiny_mce/themes/advanced/langs/be.js
deleted file mode 100644 (file)
index de7c8da..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('be.advanced',{underline_desc:"\u041f\u0430\u0434\u043a\u0440\u044d\u0441\u043b\u0435\u043d\u044b (Ctrl+U)",italic_desc:"\u041a\u0443\u0440\u0441\u0456\u045e (Ctrl+I)",bold_desc:"\u0422\u043e\u045e\u0441\u0442\u044b (Ctrl+B)",dd:"\u0410\u0437\u043d\u0430\u0447\u044d\u043d\u043d\u0435 \u0442\u044d\u0440\u043c\u0456\u043d\u0430",dt:"\u0412\u044b\u0437\u043d\u0430\u0447\u0430\u0435\u043c\u044b \u0442\u044d\u0440\u043c\u0456\u043d",samp:"\u041f\u0440\u044b\u043a\u043b\u0430\u0434 \u043a\u043e\u0434\u0430",code:"\u041a\u043e\u0434",blockquote:"\u0411\u043b\u043e\u043a \u0432\u044b\u043d\u044f\u0442\u043a\u0456",h6:"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 6",h5:"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 5",h4:"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 4",h3:"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 3",h2:"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 2",h1:"\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 1",pre:"\u0410\u0434\u0444\u0430\u0440\u043c\u0430\u0442\u0430\u0432\u0430\u043d\u044b \u0442\u044d\u043a\u0441\u0442",address:"\u0410\u0434\u0440\u0430\u0441",div:"\u041f\u0430\u0434\u0437\u0435\u043b",paragraph:"\u0410\u0431\u0437\u0430\u0446",block:"\u0424\u0430\u0440\u043c\u0430\u0442",fontdefault:"\u0428\u0440\u044b\u0444\u0442",font_size:"\u041f\u0430\u043c\u0435\u0440 \u0448\u0440\u044b\u0444\u0442\u0430",style_select:"\u0421\u0442\u044b\u043b\u0456",more_colors:"\u042f\u0448\u0447\u044d \u043a\u043e\u043b\u0435\u0440\u044b",toolbar_focus:"\u041f\u0435\u0440\u0430\u0439\u0441\u0446\u0456 \u0434\u0430 \u043a\u043d\u043e\u043f\u0430\u043a \u043f\u0440\u044b\u043b\u0430\u0434 - Alt+Q, \u041f\u0435\u0440\u0430\u0439\u0441\u0446\u0456 \u0434\u0430 \u0440\u044d\u0434\u0430\u043a\u0442\u0430\u0440\u0430 - Alt-Z, \u041f\u0435\u0440\u0430\u0439\u0441\u0446\u0456 \u0434\u0430 \u0448\u043b\u044f\u0445\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 - Alt-X",newdocument:"\u0412\u044b \u045e\u043f\u044d\u045e\u043d\u0435\u043d\u044b\u044f, \u0448\u0442\u043e \u0436\u0430\u0434\u0430\u0435\u0446\u0435 \u0430\u0447\u044b\u0441\u0446\u0456\u0446\u044c \u0443\u0441\u0451 \u0437\u043c\u0435\u0441\u0446\u0456\u0432\u0430?",path:"\u0428\u043b\u044f\u0445",clipboard_msg:"\u041a\u0430\u043f\u0456\u044f\u0432\u0430\u043d\u043d\u0435/\u0423\u0441\u0442\u0430\u045e\u043a\u0430 \u043d\u0435 \u043f\u0440\u0430\u0446\u0443\u0435 \u045e Mozilla \u0456 Firefox.\n\u0416\u0430\u0434\u0430\u0435\u0446\u0435 \u043f\u0430\u0434\u0440\u0430\u0431\u044f\u0437\u043d\u0435\u0439 \u043f\u0430\u0437\u043d\u0430\u0446\u044c, \u0443 \u0447\u044b\u043c \u0441\u043f\u0440\u0430\u0432\u0430?",blockquote_desc:"\u0411\u043b\u043e\u043a \u0432\u044b\u043d\u044f\u0442\u043a\u0456",help_desc:"\u0414\u0430\u043f\u0430\u043c\u043e\u0433\u0430",newdocument_desc:"\u041d\u043e\u0432\u044b \u0434\u0430\u043a\u0443\u043c\u0435\u043d\u0442",image_props_desc:"\u0423\u043b\u0430\u0441\u0446\u0456\u0432\u0430\u0441\u0446\u0456 \u043c\u0430\u043b\u044e\u043d\u043a\u0430",paste_desc:"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c",copy_desc:"\u041a\u0430\u043f\u0456\u044f\u0432\u0430\u0446\u044c",cut_desc:"\u0412\u044b\u0440\u0430\u0437\u0430\u0446\u044c",anchor_desc:"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c/\u0440\u044d\u0434\u0430\u0433\u0430\u0432\u0430\u0446\u044c \u044f\u043a\u0430\u0440",visualaid_desc:"\u0423\u043b\u0443\u0447\u044b\u0446\u044c/\u0432\u044b\u043a\u043b\u044e\u0447\u044b\u0446\u044c \u043d\u0430\u043a\u0456\u0440\u0430\u0432\u0430\u043b\u044c\u043d\u044b\u044f/\u043d\u044f\u0431\u0430\u0447\u043d\u044b\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b",charmap_desc:"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u0430\u0434\u043c\u044b\u0441\u043b\u043e\u0432\u044b \u0437\u043d\u0430\u043a",backcolor_desc:"\u0410\u0431\u0440\u0430\u0446\u044c \u043a\u043e\u043b\u0435\u0440 \u0444\u043e\u043d\u0443",forecolor_desc:"\u0410\u0431\u0440\u0430\u0446\u044c \u043a\u043e\u043b\u0435\u0440 \u0442\u044d\u043a\u0441\u0442\u0443",custom1_desc:"\u0423\u0432\u044f\u0434\u0437\u0456\u0446\u0435 \u0432\u0430\u0448\u0430 \u0430\u043f\u0456\u0441\u0430\u043d\u043d\u0435",removeformat_desc:"\u041f\u0440\u044b\u0431\u0440\u0430\u0446\u044c \u0444\u0430\u0440\u043c\u0430\u0442\u0430\u0432\u0430\u043d\u043d\u0435",hr_desc:"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u0433\u0430\u0440\u044b\u0437\u0430\u043d\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u043b\u0456\u043d\u0456\u044e",sup_desc:"\u0412\u0435\u0440\u0445\u043d\u0456 \u0430\u0437\u043d\u0430\u0447\u043d\u0456\u043a",sub_desc:"\u041d\u0456\u0436\u043d\u0456 \u0430\u0437\u043d\u0430\u0447\u043d\u0456\u043a",code_desc:"\u0420\u044d\u0434\u0430\u0433\u0430\u0432\u0430\u0446\u044c HTML-\u0437\u044b\u0445\u043e\u0434\u043d\u0456\u043a",cleanup_desc:"\u041f\u0430\u0447\u044b\u0441\u0446\u0456\u0446\u044c \u0431\u0440\u0443\u0434\u043d\u044b \u043a\u043e\u0434",image_desc:"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c/\u0440\u044d\u0434\u0430\u0433\u0430\u0432\u0430\u0446\u044c \u043c\u0430\u043b\u044e\u043d\u0430\u043a",unlink_desc:"\u0412\u044b\u0434\u0430\u043b\u0456\u0446\u044c \u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0443",link_desc:"\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",redo_desc:"\u041f\u0430\u045e\u0442\u0430\u0440\u044b\u0446\u044c (Ctrl+Y)",undo_desc:"\u0410\u0434\u043c\u044f\u043d\u0456\u0446\u044c (Ctrl+Z)",indent_desc:"\u041f\u0430\u0432\u044f\u043b\u0456\u0447\u044b\u0446\u044c \u0432\u043e\u0434\u0441\u0442\u0443\u043f",outdent_desc:"\u041f\u0430\u043c\u0435\u043d\u0448\u044b\u0446\u044c \u0432\u043e\u0434\u0441\u0442\u0443\u043f",numlist_desc:"\u041d\u0443\u043c\u0430\u0440\u0430\u0432\u0430\u043d\u044b \u0441\u043f\u0456\u0441",bullist_desc:"\u041c\u0430\u0440\u043a\u0456\u0440\u0430\u0432\u0430\u043d\u044b \u0441\u043f\u0456\u0441",justifyfull_desc:"\u0412\u044b\u0440\u0430\u045e\u043d\u043e\u045e\u0432\u0430\u043d\u043d\u0435 \u043f\u0430 \u0448\u044b\u0440\u044b\u043d\u0456",justifyright_desc:"\u0412\u044b\u0440\u0430\u045e\u043d\u043e\u045e\u0432\u0430\u043d\u043d\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u0430",justifycenter_desc:"\u0412\u044b\u0440\u0430\u045e\u043d\u043e\u045e\u0432\u0430\u043d\u043d\u0435 \u043f\u0430 \u0446\u044d\u043d\u0442\u0440\u044b",justifyleft_desc:"\u0412\u044b\u0440\u0430\u045e\u043d\u043e\u045e\u0432\u0430\u043d\u043d\u0435 \u043d\u0430\u043b\u0435\u0432\u0430",striketrough_desc:"\u041f\u0435\u0440\u0430\u043a\u0440\u044d\u0441\u043b\u0435\u043d\u044b",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/be_dlg.js b/program/js/tiny_mce/themes/advanced/langs/be_dlg.js
deleted file mode 100644 (file)
index 3b7722f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('be.advanced_dlg',{link_list:"\u0421\u043f\u0456\u0441 \u0441\u043f\u0430\u0441\u044b\u043b\u0430\u043a",link_is_external:"\u0423\u0432\u0435\u0434\u0437\u0435\u043d\u044b \u0430\u0434\u0440\u0430\u0441 \u043f\u0430\u0434\u043e\u0431\u043d\u044b \u043d\u0430 \u0432\u043e\u043d\u043a\u0430\u0432\u0443\u044e \u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0443, \u0432\u044b \u0436\u0430\u0434\u0430\u0435\u0446\u0435 \u0434\u0430\u0434\u0430\u0446\u044c \u043f\u0440\u044d\u0444\u0456\u043a\u0441 http://?",link_is_email:"\u0423\u0432\u0435\u0434\u0437\u0435\u043d\u044b \u0430\u0434\u0440\u0430\u0441 \u043f\u0430\u0434\u043e\u0431\u043d\u044b \u043d\u0430 email, \u0432\u044b \u0436\u0430\u0434\u0430\u0435\u0446\u0435 \u0434\u0430\u0434\u0430\u0446\u044c \u043f\u0440\u044d\u0444\u0456\u043a\u0441 mailto:?",link_titlefield:"\u041d\u0430\u0437\u043e\u045e",link_target_blank:"\u0410\u0434\u043a\u0440\u044b\u0446\u044c \u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0443 \u045e \u043d\u043e\u0432\u044b\u043c \u0430\u043a\u043d\u0435",link_target_same:"\u0410\u0434\u043a\u0440\u044b\u0446\u044c \u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0443 \u045e \u0442\u044b\u043c \u0436\u0430 \u0430\u043a\u043d\u0435",link_target:"\u041c\u044d\u0442\u0430",link_url:"\u0410\u0434\u0440\u0430\u0441 \u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0456",link_title:"\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",image_align_right:"\u041d\u0430\u043f\u0440\u0430\u0432\u0430",image_align_left:"\u041d\u0430\u043b\u0435\u0432\u0430",image_align_textbottom:"\u041f\u0430 \u043d\u0456\u0437\u0435 \u0442\u044d\u043a\u0441\u0442\u0443",image_align_texttop:"\u041f\u0430 \u0432\u0435\u0440\u0441\u0435 \u0442\u044d\u043a\u0441\u0442\u0443",image_align_bottom:"\u041f\u0430 \u043d\u0456\u0437\u0435",image_align_middle:"\u041f\u0430 \u0446\u044d\u043d\u0442\u0440\u044b",image_align_top:"\u041f\u0430 \u0432\u0435\u0440\u0441\u0435",image_align_baseline:"\u041f\u0430 \u0431\u0430\u0437\u0456\u0441\u043d\u0430\u0439 \u043b\u0456\u043d\u0456\u0456",image_align:"\u0412\u044b\u0440\u0430\u045e\u043d\u043e\u045e\u0432\u0430\u043d\u043d\u0435",image_hspace:"\u0413\u0430\u0440\u044b\u0437\u0430\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u0430\u0441\u0442\u043e\u0440\u0430",image_vspace:"\u0412\u0435\u0440\u0442\u044b\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u0430\u0441\u0442\u043e\u0440\u0430",image_dimensions:"\u041f\u0430\u043c\u0435\u0440\u044b",image_alt:"\u0410\u043f\u0456\u0441\u0430\u043d\u043d\u0435 \u043c\u0430\u043b\u044e\u043d\u043a\u0430",image_list:"\u0421\u043f\u0456\u0441 \u043c\u0430\u043b\u044e\u043d\u043a\u0430\u045e",image_border:"\u041c\u044f\u0436\u0430",image_src:"\u0410\u0434\u0440\u0430\u0441 \u043c\u0430\u043b\u044e\u043d\u043a\u0430",image_title:"\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c/\u0440\u044d\u0434\u0430\u0433\u0430\u0432\u0430\u0446\u044c \u043c\u0430\u043b\u044e\u043d\u0430\u043a",charmap_title:"\u0410\u0431\u044f\u0440\u044b\u0446\u0435 \u0430\u0434\u043c\u044b\u0441\u043b\u043e\u0432\u044b \u0437\u043d\u0430\u043a",colorpicker_name:"\u041d\u0430\u0437\u043e\u045e:",colorpicker_color:"\u041a\u043e\u043b\u0435\u0440:",colorpicker_named_title:"\u041d\u0430\u0439\u043c\u0435\u043d\u043d\u044b\u044f \u043a\u043e\u043b\u0435\u0440\u044b",colorpicker_named_tab:"\u041d\u0430\u0439\u043c\u0435\u043d\u043d\u044b",colorpicker_palette_title:"\u041a\u043e\u043b\u0435\u0440\u044b \u043f\u0430\u043b\u0456\u0442\u0440\u044b",colorpicker_palette_tab:"\u041f\u0430\u043b\u0456\u0442\u0440\u0430",colorpicker_picker_title:"\u0412\u044b\u0431\u0430\u0440 \u043a\u043e\u043b\u0435\u0440\u0443",colorpicker_picker_tab:"\u0412\u044b\u0431\u0430\u0440",colorpicker_title:"\u0410\u0431\u044f\u0440\u044b\u0446\u0435 \u043a\u043e\u043b\u0435\u0440",code_wordwrap:"\u041f\u0435\u0440\u0430\u043d\u043e\u0441 \u0441\u043b\u043e\u045e",code_title:"\u0420\u044d\u0434\u0430\u043a\u0442\u0430\u0440 HTML-\u0437\u044b\u0445\u043e\u0434\u043d\u0456\u043a\u0430",anchor_name:"\u0418\u043c\u044f \u044f\u043a\u043e\u0440\u044f",anchor_title:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044f\u043a\u043e\u0440\u044c",about_loaded:"\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u043d\u044b\u044f \u045e\u0431\u0443\u0434\u043e\u0432\u044b",about_version:"\u0412\u0435\u0440\u0441\u0456\u044f",about_author:"\u0410\u045e\u0442\u0430\u0440",about_plugin:"\u0423\u0431\u0443\u0434\u043e\u0432\u0430",about_plugins:"\u0423\u0431\u0443\u0434\u043e\u0432\u044b",about_license:"\u041b\u0456\u0446\u044d\u043d\u0437\u0456\u044f",about_help:"\u0414\u0430\u043f\u0430\u043c\u043e\u0433\u0430",about_general:"\u0410\u0431 \u043f\u0440\u0430\u0433\u0440\u0430\u043c\u0435",about_title:"\u0410\u0431 TinyMCE"});
\ No newline at end of file
old mode 100755 (executable)
new mode 100644 (file)
index 4a66bd7..6587c73
@@ -1 +1 @@
-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",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",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
+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
old mode 100755 (executable)
new mode 100644 (file)
index f5d85d0..7df3449
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
index 0057b1734f7237aaf5a359a911ba0caffa03f8e7..3b2e4f8582e66607b4a83fc6f25d8ff6f570bb6d 100644 (file)
@@ -1 +1 @@
-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":""});
\ No newline at end of file
+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
index 49e5e9f54889e700b85f00a2ece04116a248912b..6be9a341b057c5d856014363a22b11a9abdc71b3 100644 (file)
@@ -1 +1 @@
-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."});
\ No newline at end of file
+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
index 554d2b82866af71eb43c27dc844e41b0a168e2f6..f73f53c72b2b46ef3f5061f529ec2ecd5f49f700 100644 (file)
@@ -1 +1 @@
-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:""});
\ No newline at end of file
+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
index 6867a524e67a0aa80488b6a64c0d2a753151bcba..bcb26f1b71d8663ab46b576af6eb451725e3f7c4 100644 (file)
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index ac8af0a..ae50817
@@ -1 +1 @@
-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:""});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index ed48271..d2fd361
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index aeb083e..4e4be8e
@@ -1 +1 @@
-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","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
+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
old mode 100755 (executable)
new mode 100644 (file)
index ca62507..d1b3776
@@ -1 +1 @@
-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","anchor_invalid":"Sisplau, especifiqueu un nom d\'\u00e0ncora v\u00e0lid."});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 2941ae8..9d88d4c
@@ -1 +1 @@
-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 li\u0161tu 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",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
+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
old mode 100755 (executable)
new mode 100644 (file)
index f01a226..35c165a
@@ -1 +1 @@
-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",anchor_invalid:"Zadejte, pros\u00edm, platn\u00fd n\u00e1zev z\u00e1lo\u017eky (kotvy)."});
\ No newline at end of file
+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
index 3c4446f2f5634a9e60bd0f6c10b3cf3a60fcc38a..d8b099ff38812c32e3995f4cbed61455c7db8537 100644 (file)
@@ -1 +1 @@
-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",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
+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
index ca05b5861d5350a0dde8c98e19e8735a7aba01eb..4df78cbe8ce493e0bc1ee364bbd6bba46ec6daa6 100644 (file)
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index f0e8171..3d5fb8b
@@ -1 +1 @@
-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",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
+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
old mode 100755 (executable)
new mode 100644 (file)
index ac09dfb..f3a752c
@@ -1 +1 @@
-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",anchor_invalid:"Angiv venligst et gyldigt anker navn."});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 6286003..034195c
@@ -1 +1 @@
-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",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
+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
old mode 100755 (executable)
new mode 100644 (file)
index fa4fc25..d33ca1d
@@ -1 +1 @@
-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/bearbeiten",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/bearbeiten",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",anchor_invalid:"Bitte spezifizieren Sie einen g\u00fcltigen Namen f\u00fcr den Anker!"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 1b56ec9..0ec14a6
@@ -1 +1 @@
-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",anchor_delta_height:"",anchor_delta_width:"",charmap_delta_height:"",charmap_delta_width:"",colorpicker_delta_height:"",colorpicker_delta_width:"",link_delta_height:"",image_delta_height:""});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 69c34a9..df5856e
@@ -1 +1 @@
-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",anchor_invalid:"Please specify a valid anchor name."});
\ No newline at end of file
+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
index fbf29893fe02656ab99c9771769f544215ad966b..6e5848187436f557d16608b406f7d6700860c15f 100644 (file)
@@ -1,68 +1 @@
-tinyMCE.addI18n('en.advanced',{\r
-style_select:"Styles",\r
-font_size:"Font size",\r
-fontdefault:"Font family",\r
-block:"Format",\r
-paragraph:"Paragraph",\r
-div:"Div",\r
-address:"Address",\r
-pre:"Preformatted",\r
-h1:"Heading 1",\r
-h2:"Heading 2",\r
-h3:"Heading 3",\r
-h4:"Heading 4",\r
-h5:"Heading 5",\r
-h6:"Heading 6",\r
-blockquote:"Blockquote",\r
-code:"Code",\r
-samp:"Code sample",\r
-dt:"Definition term ",\r
-dd:"Definition description",\r
-bold_desc:"Bold (Ctrl+B)",\r
-italic_desc:"Italic (Ctrl+I)",\r
-underline_desc:"Underline (Ctrl+U)",\r
-striketrough_desc:"Strikethrough",\r
-justifyleft_desc:"Align left",\r
-justifycenter_desc:"Align center",\r
-justifyright_desc:"Align right",\r
-justifyfull_desc:"Align full",\r
-bullist_desc:"Unordered list",\r
-numlist_desc:"Ordered list",\r
-outdent_desc:"Outdent",\r
-indent_desc:"Indent",\r
-undo_desc:"Undo (Ctrl+Z)",\r
-redo_desc:"Redo (Ctrl+Y)",\r
-link_desc:"Insert/edit link",\r
-unlink_desc:"Unlink",\r
-image_desc:"Insert/edit image",\r
-cleanup_desc:"Cleanup messy code",\r
-code_desc:"Edit HTML Source",\r
-sub_desc:"Subscript",\r
-sup_desc:"Superscript",\r
-hr_desc:"Insert horizontal ruler",\r
-removeformat_desc:"Remove formatting",\r
-custom1_desc:"Your custom description here",\r
-forecolor_desc:"Select text color",\r
-backcolor_desc:"Select background color",\r
-charmap_desc:"Insert custom character",\r
-visualaid_desc:"Toggle guidelines/invisible elements",\r
-anchor_desc:"Insert/edit anchor",\r
-cut_desc:"Cut",\r
-copy_desc:"Copy",\r
-paste_desc:"Paste",\r
-image_props_desc:"Image properties",\r
-newdocument_desc:"New document",\r
-help_desc:"Help",\r
-blockquote_desc:"Blockquote",\r
-clipboard_msg:"Copy/Cut/Paste is not available in Mozilla and Firefox.\r\nDo you want more information about this issue?",\r
-path:"Path",\r
-newdocument:"Are you sure you want clear all contents?",\r
-toolbar_focus:"Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X",\r
-more_colors:"More colors",\r
-\r
-// Accessibility Strings\r
-shortcuts_desc:'Accessibility Help',\r
-help_shortcut:'. Press ALT F10 for toolbar. Press ALT 0 for help.',\r
-rich_text_area:"Rich Text Area",\r
-toolbar:"Toolbar"\r
-});\r
+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
index 0a459beb5ca3e31ba7d1ae00dce8a0b0915ff2a6..e451f37748e72ec4dbfb6f76a6cca7aee8b98cd4 100644 (file)
@@ -1,54 +1 @@
-tinyMCE.addI18n('en.advanced_dlg',{\r
-about_title:"About TinyMCE",\r
-about_general:"About",\r
-about_help:"Help",\r
-about_license:"License",\r
-about_plugins:"Plugins",\r
-about_plugin:"Plugin",\r
-about_author:"Author",\r
-about_version:"Version",\r
-about_loaded:"Loaded plugins",\r
-anchor_title:"Insert/edit anchor",\r
-anchor_name:"Anchor name",\r
-anchor_invalid:"Please specify a valid anchor name.",\r
-code_title:"HTML Source Editor",\r
-code_wordwrap:"Word wrap",\r
-colorpicker_title:"Select a color",\r
-colorpicker_picker_tab:"Picker",\r
-colorpicker_picker_title:"Color picker",\r
-colorpicker_palette_tab:"Palette",\r
-colorpicker_palette_title:"Palette colors",\r
-colorpicker_named_tab:"Named",\r
-colorpicker_named_title:"Named colors",\r
-colorpicker_color:"Color:",\r
-colorpicker_name:"Name:",\r
-charmap_title:"Select custom character",\r
-image_title:"Insert/edit image",\r
-image_src:"Image URL",\r
-image_alt:"Image description",\r
-image_list:"Image list",\r
-image_border:"Border",\r
-image_dimensions:"Dimensions",\r
-image_vspace:"Vertical space",\r
-image_hspace:"Horizontal space",\r
-image_align:"Alignment",\r
-image_align_baseline:"Baseline",\r
-image_align_top:"Top",\r
-image_align_middle:"Middle",\r
-image_align_bottom:"Bottom",\r
-image_align_texttop:"Text top",\r
-image_align_textbottom:"Text bottom",\r
-image_align_left:"Left",\r
-image_align_right:"Right",\r
-link_title:"Insert/edit link",\r
-link_url:"Link URL",\r
-link_target:"Target",\r
-link_target_same:"Open link in the same window",\r
-link_target_blank:"Open link in a new window",\r
-link_titlefield:"Title",\r
-link_is_email:"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",\r
-link_is_external:"The URL you entered seems to be an external link. Do you want to add the required http:// prefix?",\r
-link_list:"Link list",\r
-accessibility_help:"Accessibility Help",\r
-accessibility_usage_title:"General Usage"\r
-});
\ No newline at end of file
+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","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","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/eo.js b/program/js/tiny_mce/themes/advanced/langs/eo.js
new file mode 100644 (file)
index 0000000..6a875e5
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..40f0edf
--- /dev/null
@@ -0,0 +1 @@
+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
old mode 100755 (executable)
new mode 100644 (file)
index b96da60..ef9f264
@@ -1 +1 @@
-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","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
+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
old mode 100755 (executable)
new mode 100644 (file)
index b797931..923c34b
@@ -1 +1 @@
-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","anchor_invalid":"Especifique un nombre v\u00e1lido para liga"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 205df15..5c0c793
@@ -1 +1 @@
-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",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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 329f29b..2226a12
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
index 9bc232e48a0499c0fcaf0976456168c1fc1e8bb1..f19e37d023e5682d36fa89e7043821a3dcae12be 100644 (file)
@@ -1,72 +1 @@
-tinyMCE.addI18n('eu.advanced',{\r
-style_select:"Estiloak",\r
-font_size:"Letra-tamaina",\r
-fontdefault:"Letra-tipoa",\r
-block:"Formatua",\r
-paragraph:"Parrafoa",\r
-div:"Div",\r
-address:"Helbidea",\r
-pre:"Aurreformateatua",\r
-h1:"1. goiburua",\r
-h2:"2. goiburua",\r
-h3:"3. goiburua",\r
-h4:"4. goiburua",\r
-h5:"5. goiburua",\r
-h6:"6. goiburua",\r
-blockquote:"Zita",\r
-code:"Kodea",\r
-samp:"Kode adibidea",\r
-dt:"Definizio terminoa (dt) ",\r
-dd:"Definizioa (dd)",\r
-bold_desc:"Beltza (Ctrl+B)",\r
-italic_desc:"Etzana (Ctrl+I)",\r
-underline_desc:"Azpimarratua (Ctrl+U)",\r
-striketrough_desc:"Gainetik marra duena",\r
-justifyleft_desc:"Ezkerrean alineatu",\r
-justifycenter_desc:"Erdian zentratu",\r
-justifyright_desc:"Eskuinean alineatu",\r
-justifyfull_desc:"Testua justifikatu",\r
-bullist_desc:"Zerrenda",\r
-numlist_desc:"Zerrenda ordenatua",\r
-outdent_desc:"Koska kendu",\r
-indent_desc:"Koska gehitu",\r
-undo_desc:"Desegin (Ctrl+Z)",\r
-redo_desc:"Berregin (Ctrl+Y)",\r
-link_desc:"Lotura txertatu/editatu",\r
-unlink_desc:"Lotura kendu",\r
-image_desc:"Irudia txertatu/editatu",\r
-cleanup_desc:"Kode zikina garbitu",\r
-code_desc:"HTML kodea editatu",\r
-sub_desc:"Azpi-indizea",\r
-sup_desc:"Goi-indizea",\r
-hr_desc:"Lerro horizontala gehitu",\r
-removeformat_desc:"Formatua kendu",\r
-custom1_desc:"Nahi duzun deskribapena hemen idatzi",\r
-forecolor_desc:"Testuaren kolorea aukeratu",\r
-backcolor_desc:"Atzeko kolorea aukeratu",\r
-charmap_desc:"Karaktere berezia txertatu",\r
-visualaid_desc:"Elementu ikustezinak ikustarazi/ezkutatu",\r
-anchor_desc:"Aingura txertatu/editatu",\r
-cut_desc:"Ebaki",\r
-copy_desc:"Kopiatu",\r
-paste_desc:"Itsatsi",\r
-image_props_desc:"Irudiaren aukerak",\r
-newdocument_desc:"Dokumentu berria",\r
-help_desc:"Laguntza",\r
-blockquote_desc:"Zita",\r
-clipboard_msg:"Kopiatu/Ebaki/Itsatsi ez dago Mozilla eta Firefoxen.\nHonen inguruko informazioa nahi duzu??",\r
-path:"Bidea",\r
-newdocument:"Eduki guztia kendu nahi duzu?",\r
-toolbar_focus:"Tresnaren botoietara joan - Alt+Q, Editorera joan - Alt-Z, Elementuaren bidera joan - Alt-X",\r
-more_colors:"Kolore gehiago",\r
-image_delta_width:"Irudiaren zabalera",\r
-image_delta_height:"Irudiaren altuera",\r
-link_delta_width:"Loturaren zabalera",\r
-link_delta_height:"Loturaren altuera",\r
-colorpicker_delta_width:"Kolore hautatzailearen zabalera",\r
-colorpicker_delta_height:"Kolore hautatzailearen altuera",\r
-charmap_delta_width:"Karaktere maparen zabalera",\r
-charmap_delta_height:"Karaktere maparen altuera",\r
-anchor_delta_width:"Ainguraren zabalera",\r
-anchor_delta_height:"Ainguraren altuera"\r
-});
\ No newline at end of file
+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
index 6da23056f5cb3abb58c5546b2484d5cd1e5ee6bd..010174841ccc1a82d04612b4daf9175b46ee299f 100644 (file)
@@ -1,51 +1 @@
-tinyMCE.addI18n('eu.advanced_dlg',{\r
-about_title:"TinyMCEri buruz",\r
-about_general:"Honi buruz",\r
-about_help:"Laguntza",\r
-about_license:"Lizentzia",\r
-about_plugins:"Gehigarriak",\r
-about_plugin:"Gehiagarria",\r
-about_author:"Egilea",\r
-about_version:"Bertsioa",\r
-about_loaded:"Kargatutako gehigarriak",\r
-anchor_title:"Aingura txertatu/editatu",\r
-anchor_name:"Ainguraren izena",\r
-code_title:"HTML kodearen editorea",\r
-code_wordwrap:"Itzulbiratu",\r
-colorpicker_title:"Kolorea aukeratu",\r
-colorpicker_picker_tab:"Aukeratu",\r
-colorpicker_picker_title:"Kolore aukeratzailea",\r
-colorpicker_palette_tab:"Paleta",\r
-colorpicker_palette_title:"Kolore paleta",\r
-colorpicker_named_tab:"Izendunak",\r
-colorpicker_named_title:"Izendun koloreak",\r
-colorpicker_color:"Kolorea:",\r
-colorpicker_name:"Izena:",\r
-charmap_title:"Karaktere berezia aukeratu",\r
-image_title:"Irudia txertatu/editatu",\r
-image_src:"Irudiaren URL helbidea",\r
-image_alt:"Irudiaren deskribapena",\r
-image_list:"Irudi zerrenda",\r
-image_border:"Inguruko marra",\r
-image_dimensions:"Tamaina",\r
-image_vspace:"Tarte bertikala",\r
-image_hspace:"Tarte horizontala",\r
-image_align:"Alineazioa",\r
-image_align_baseline:"Oinarriko marra",\r
-image_align_top:"Goian",\r
-image_align_middle:"Tartean",\r
-image_align_bottom:"Behean",\r
-image_align_texttop:"Testua goian",\r
-image_align_textbottom:"Testua behean",\r
-image_align_left:"Ezkerrean",\r
-image_align_right:"Eskuinean",\r
-link_title:"Lotura txertatu/editatu",\r
-link_url:"Loturaren URLa",\r
-link_target:"Helburua",\r
-link_target_same:"Lotura leiho berean ireki",\r
-link_target_blank:"Lotura leiho berrian ireki",\r
-link_titlefield:"Izenburua",\r
-link_is_email:"Sartutako helbideak e-posta bat dirudi, aurretik mailto: gehitzea nahi duzu?",\r
-link_is_external:"Sartutako helbideak kanpoko webgune batena dirudi, aurretik http:// gehitzea nahi duzu?",\r
-link_list:"Lotura zerrenda"\r
-});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index ad291db..94af922
@@ -1 +1 @@
-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:"\u062e\u0627\u0646\u0648\u0627\u062f\u0647 \u0642\u0644\u0645",font_size:"\u0627\u0646\u062f\u0627\u0632\u0647 \u0642\u0644\u0645",style_select:"\u0627\u0633\u062a\u06cc\u0644 \u0647\u0627",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\u0627 \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/\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\u06cc\u06cc",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",cut_desc:"\u0628\u0631\u0634 (Cut)",anchor_desc:"\u062f\u0631\u062c/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0644\u0646\u06af\u0631",visualaid_desc:"\u062a\u0639\u0648\u06cc\u0636 \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 \u0633\u0641\u0627\u0631\u0634\u06cc",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:"\u0627\u0646\u062c\u0627\u0645 \u0639\u0645\u0644 \u0628\u0639\u062f (Ctrl+Y)",undo_desc:"\u0627\u0646\u062c\u0627\u0645 \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",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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 7f2634c..3fa6a8a
@@ -1 +1 @@
-tinyMCE.addI18n('fa.advanced_dlg',{link_list:"\u0644\u06cc\u0633\u062a \u0644\u06cc\u0646\u06a9",link_is_external:"URL \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:"URL \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:"URL \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:"URL \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 \u0633\u0641\u0627\u0631\u0634\u06cc",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:"\u0644\u06cc\u0633\u0627\u0646\u0633",about_help:"\u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc",about_general:"\u062f\u0631\u0628\u0627\u0631\u0647",about_title:"\u062f\u0631\u0628\u0627\u0631\u0647 TinyMCE"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 6eb7967..2edb8f6
@@ -1 +1 @@
-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",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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 3a065f4..89c0b0b
@@ -1 +1 @@
-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",anchor_invalid:"Ole hyv\u00e4 ja anna hyv\u00e4ksytty ankkurin nimi."});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 23e6e40..1e91abb
@@ -1 +1 @@
-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",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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 6116a51..97b6b52
@@ -1 +1 @@
-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",anchor_invalid:"Veuillez sp\u00e9cifier un nom d\'ancre valide."});
\ No newline at end of file
+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
index 91d68b40d2e6f873e68bf1da31b428959b8ea0d8..cf00430ee8c1bac261e4fbbee3f10aa4761bc5b0 100644 (file)
@@ -1 +1 @@
-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:""});
\ No newline at end of file
+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
index 4496cdc985749698a72bd0be5b825b56f69141c1..279bc2993a4cb4f6672aca1ea3ccc5cbd6feddba 100644 (file)
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index a8ed68c..2c50a4b
@@ -1 +1 @@
-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",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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 13dbc35..c27a31a
@@ -1 +1 @@
-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",anchor_invalid:"\u05e0\u05d0 \u05dc\u05e6\u05d9\u05d9\u05df \u05e9\u05dd \u05d7\u05d5\u05e7\u05d9"});
\ No newline at end of file
+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
index 24b9f2fcc23227e928c84f10b78d2014fc0b6197..845102ad2e728ea2b0b955a65c0c58bfef8bc6ec 100644 (file)
@@ -1 +1 @@
-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:""});
\ No newline at end of file
+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
index 238cf69a5c728f84e8e8e8dcba593fbfca36029f..023fa2d4c88333948501fa375175f2438b7d8ab4 100644 (file)
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 51f665f..50521bc
@@ -1 +1 @@
-tinyMCE.addI18n('hr.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:""});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 54a440a..515db71
@@ -1 +1 @@
-tinyMCE.addI18n('hr.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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 9d731b6..b5a0cbd
@@ -1 +1 @@
-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","more_colors":"T\u00f6bb sz\u00edn","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. K\u00edv\u00e1n t\u00f6bbet tudni err\u0151l a t\u00e9m\u00e1r\u00f3l?","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 besz\u00far\u00e1sa","sup_desc":"Fels\u0151 index","sub_desc":"Als\u00f3 index","code_desc":"HTML forr\u00e1s szerkeszt\u00e9se","cleanup_desc":"Rendetlen k\u00f3d takar\u00edt\u00e1sa","image_desc":"K\u00e9p besz\u00far\u00e1sa/szerkeszt\u00e9se","unlink_desc":"Link megsz\u00fcntet\u00e9se","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","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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 3da818a..33c197d
@@ -1 +1 @@
-tinyMCE.addI18n('hu.advanced_dlg',{"link_list":"Link lista","link_is_external":"A be\u00edrt URL 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 URL 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":"Link \u00faj ablakba nyit\u00e1sa","link_target_same":"Link azonos ablakba nyit\u00e1sa","link_target":"Target","link_url":"Link URL","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","anchor_invalid":"Adjon meg egy helyes horgony nevet."});
\ No newline at end of file
+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
index 514293c43387691bc5509913cc04a6a06943e1b5..18c86cd5b6b29bbcb675a85e7a33e4375dbacb4b 100644 (file)
@@ -1 +1 @@
-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:""});
\ No newline at end of file
+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
index e43746e4dfe7c70921c62bc96a469007434a1ce9..c960f947efa7eb0445d8fa137285fb9f88413f58 100644 (file)
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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/ia.js b/program/js/tiny_mce/themes/advanced/langs/ia.js
deleted file mode 100644 (file)
index 700935f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ia.advanced',{underline_desc:"\u5e95\u7ebf (Ctrl+U)",italic_desc:"\u659c\u4f53 (Ctrl+I)",bold_desc:"\u7c97\u4f53 (Ctrl+B)",dd:"\u540d\u8bcd\u89e3\u91ca",dt:"\u540d\u8bcd\u5b9a\u4e49",samp:"\u7a0b\u5e8f\u8303\u4f8b",code:"\u4ee3\u7801",blockquote:"\u5f15\u7528",h6:"\u6807\u9898 6",h5:"\u6807\u9898 5",h4:"\u6807\u9898 4",h3:"\u6807\u9898 3",h2:"\u6807\u9898 2",h1:"\u6807\u9898 1",pre:"\u9ed8\u8ba4\u683c\u5f0f",address:"\u5730\u5740",div:"Div",paragraph:"\u6bb5\u843d",block:"\u683c\u5f0f",fontdefault:"\u5b57\u4f53",font_size:"\u5b57\u4f53\u5927\u5c0f",style_select:"\u6837\u5f0f",more_colors:"\u66f4\u591a\u989c\u8272",toolbar_focus:"\u5de5\u5177\u5217 - Alt+Q, \u7f16\u8f91\u5668 - Alt-Z, \u7ec4\u4ef6\u8def\u5f84 - Alt-X",newdocument:"\u60a8\u786e\u8ba4\u8981\u5220\u9664\u5168\u90e8\u5185\u5bb9\u5417\uff1f",path:"\u8def\u5f84",clipboard_msg:"\u590d\u5236\u3001\u526a\u5207\u548c\u7c98\u8d34\u529f\u80fd\u5728Mozilla \u548c Firefox\u4e2d\u65e0\u6cd5\u4f7f\u7528",blockquote_desc:"\u5f15\u7528",help_desc:"\u5e2e\u52a9",newdocument_desc:"\u65b0\u5efa\u6587\u4ef6",image_props_desc:"\u56fe\u7247\u5c5e\u6027",paste_desc:"\u7c98\u8d34 (Ctrl+V)",copy_desc:"\u590d\u5236 (Ctrl+C)",cut_desc:"\u526a\u5207 (Ctrl+X)",anchor_desc:"\u63d2\u5165/\u7f16\u8f91 \u951a\u70b9",visualaid_desc:"\u7f51\u683c/\u9690\u85cf\u7ec4\u4ef6\uff1f",charmap_desc:"\u63d2\u5165\u7279\u6b8a\u7b26\u53f7",backcolor_desc:"\u9009\u62e9\u80cc\u666f\u989c\u8272",forecolor_desc:"\u9009\u62e9\u6587\u5b57\u989c\u8272",custom1_desc:"\u5728\u6b64\u8f93\u5165\u60a8\u7684\u81ea\u8ba2\u63cf\u8ff0",removeformat_desc:"\u6e05\u9664\u6837\u5f0f",hr_desc:"\u63d2\u5165\u6c34\u5e73\u7ebf",sup_desc:"\u4e0a\u6807",sub_desc:"\u4e0b\u6807",code_desc:"\u7f16\u8f91 HTML \u539f\u59cb\u7a0b\u5e8f\u4ee3\u7801",cleanup_desc:"\u5220\u9664\u5197\u4f59\u7801",image_desc:"\u63d2\u5165/\u7f16\u8f91 \u56fe\u7247",unlink_desc:"\u53d6\u6d88\u8fde\u7ed3",link_desc:"\u63d2\u5165/\u7f16\u8f91 \u8fde\u7ed3",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",bullist_desc:"\u6e05\u5355\u7b26\u53f7",justifyfull_desc:"\u4e24\u7aef\u5bf9\u9f50",justifyright_desc:"\u53f3\u5bf9\u9f50",justifycenter_desc:"\u5c45\u4e2d",justifyleft_desc:"\u5de6\u5bf9\u9f50",striketrough_desc:"\u4e2d\u5212\u7ebf",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/ia_dlg.js b/program/js/tiny_mce/themes/advanced/langs/ia_dlg.js
deleted file mode 100644 (file)
index 3155cef..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ia.advanced_dlg',{link_list:"\u8fde\u7ed3\u6e05\u5355",link_is_external:"\u60a8\u8f93\u5165\u7684\u7f51\u5740\u5e94\u8be5\u662f\u4e00\u4e2a\u5916\u90e8\u8fde\u7ed3\uff0c\u662f\u5426\u9700\u8981\u5728\u7f51\u5740\u524d\u52a0\u4e0a http:// ?",link_is_email:"\u60a8\u8f93\u5165\u7684\u5e94\u8be5\u662f\u4e00\u4e2a\u7535\u5b50\u90ae\u5bc4\u5730\u5740\uff0c\u662f\u5426\u9700\u8981\u5728\u7f51\u5740\u524d\u52a0\u4e0a mailto: ? ",link_titlefield:"\u6807\u9898",link_target_blank:"\u65b0\u7a97\u53e3\u6253\u5f00",link_target_same:"\u5f53\u524d\u7a97\u53e3\u6253\u5f00",link_target:"\u76ee\u6807",link_url:"\u8fde\u7ed3\u7f51\u5740",link_title:"\u63d2\u5165/\u7f16\u8f91 \u8fde\u7ed3",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\u90e8\u5bf9\u9f50",image_align_middle:"\u4e2d\u90e8\u5bf9\u9f50",image_align_top:"\u9876\u90e8\u5bf9\u9f50",image_align_baseline:"\u57fa\u7ebf",image_align:"\u5bf9\u9f50\u65b9\u5f0f",image_hspace:"\u6c34\u5e73\u95f4\u8ddd",image_vspace:"\u5782\u76f4\u95f4\u8ddd",image_dimensions:"\u5c3a\u5bf8",image_alt:"\u56fe\u7247\u8bf4\u660e",image_list:"\u56fe\u7247\u6e05\u5355",image_border:"\u8fb9\u6846",image_src:"\u56fe\u7247\u7f51\u5740",image_title:"\u63d2\u5165/\u7f16\u8f91 \u56fe\u7247",charmap_title:"\u63d2\u5165\u7279\u6b8a\u7b26\u53f7",colorpicker_name:"\u8272\u540d:",colorpicker_color:"\u989c\u8272:",colorpicker_named_title:"\u9ed8\u8ba4\u7684\u989c\u8272",colorpicker_named_tab:"\u9ed8\u8ba4\u503c",colorpicker_palette_title:"\u8272\u8c31\u989c\u8272",colorpicker_palette_tab:"\u8272\u8c31",colorpicker_picker_title:"\u53d6\u8272\u5668",colorpicker_picker_tab:"\u9009\u62e9\u5668",colorpicker_title:"\u9009\u62e9\u989c\u8272",code_wordwrap:"\u81ea\u52a8\u6362\u884c",code_title:"HTML \u539f\u59cb\u7a0b\u5e8f\u4ee3\u7801\u7f16\u8f91\u5668",anchor_name:"\u951a\u70b9\u540d\u79f0",anchor_title:"\u63d2\u5165/\u7f16\u8f91 \u951a\u70b9",about_loaded:"\u5df2\u52a0\u8f7d\u7684\u5916\u6302\u7a0b\u5e8f",about_version:"\u7248\u672c",about_author:"\u4f5c\u8005",about_plugin:"\u5916\u6302\u7a0b\u5e8f",about_plugins:"\u5168\u90e8\u5916\u6302\u7a0b\u5e8f",about_license:"\u6388\u6743",about_help:"\u5e2e\u52a9",about_general:"\u5173\u4e8e",about_title:"\u5173\u4e8e TinyMCE"});
\ No newline at end of file
index f91c64106155fcc5f832f2339f613cde3838aa1c..cfd77b8f82dd17e97352b9918559d4a134e82d0a 100644 (file)
@@ -1 +1 @@
-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:""});
\ No newline at end of file
+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
index 5cb66e3976eaa10ec6834c3f5b1a2dedff136588..6d6ed3239c617e0d77c3396ce2105ed550ae5e94 100644 (file)
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index f1f4e46..600433c
@@ -1 +1 @@
-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:""});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 7e22b17..7775c7e
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index d77ffb1..af84c79
@@ -1 +1 @@
-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",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",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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 1d3f967..9fc5380
@@ -1 +1 @@
-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:"Allineamentot",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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 0852fc9..f5533c5
@@ -1 +1 @@
-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\u8aac\u660e",dt:"\u8a9e\u53e5\u5b9a\u7fa9",samp:"\u30b3\u30fc\u30c9\u30b5\u30f3\u30d7\u30eb",code:"\u30bd\u30fc\u30b9\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",paragraph:"\u6bb5\u843d",block:"\u30d5\u30a9\u30fc\u30de\u30c3\u30c8",fontdefault:"\u30d5\u30a9\u30f3\u30c8","font_size":"\u30d5\u30a9\u30f3\u30c8\u30b5\u30a4\u30ba","style_select":"style\u5c5e\u6027","more_colors":"\u305d\u306e\u4ed6\u306e\u8272","toolbar_focus":"\u30c4\u30fc\u30eb\u30dc\u30bf\u30f3\u3078\u30b8\u30e3\u30f3\u30d7 - Alt+Q, \u30a8\u30c7\u30a3\u30bf\u306b\u30b8\u30e3\u30f3\u30d7 - Alt-Z, \u30a8\u30ec\u30e1\u30f3\u30c8\u30d1\u30b9\u3078\u30b8\u30e3\u30f3\u30d7 - Alt-X",newdocument:"\u7de8\u96c6\u4e2d\u306e\u30c7\u30fc\u30bf\u3092\u7834\u68c4\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b\uff1f",path:"\u30d1\u30b9","clipboard_msg":"\u30b3\u30d4\u30fc/\u5207\u308a\u53d6\u308a/\u8cbc\u308a\u4ed8\u3051\u306fFirefox\u3067\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002\u3088\u308a\u8a73\u7d30\u306a\u60c5\u5831\u3092\u77e5\u308a\u305f\u3044\u3067\u3059\u304b\uff1f","blockquote_desc":"\u5f15\u7528","help_desc":"\u30d8\u30eb\u30d7","newdocument_desc":"\u65b0\u898f\u4f5c\u6210","image_props_desc":"\u753b\u50cf\u306e\u30d7\u30ed\u30d1\u30c6\u30a3","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\u9805\u76ee\u306e\u8868\u793a\u5207\u66ff","charmap_desc":"\u7279\u6b8a\u6587\u5b57","backcolor_desc":"\u80cc\u666f\u8272","forecolor_desc":"\u6587\u5b57\u8272","custom1_desc":"\u8aac\u660e\u6587\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","removeformat_desc":"\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u89e3\u9664","hr_desc":"\u6c34\u5e73\u7dda","sup_desc":"\u4e0a\u4ed8\u304d","sub_desc":"\u4e0b\u4ed8\u304d","code_desc":"HTML\u30bd\u30fc\u30b9\u7de8\u96c6","cleanup_desc":"\u30b3\u30fc\u30c9\u6574\u5f62","image_desc":"\u753b\u50cf\u306e\u633f\u5165/\u7de8\u96c6","unlink_desc":"\u30ea\u30f3\u30af\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":"\u30a4\u30f3\u30c7\u30f3\u30c8","outdent_desc":"\u30a4\u30f3\u30c7\u30f3\u30c8\u89e3\u9664","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":"\u6253\u6d88\u3057\u7dda","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
+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
old mode 100755 (executable)
new mode 100644 (file)
index b352784..234fb71
@@ -1 +1 @@
-tinyMCE.addI18n('ja.advanced_dlg',{"link_list":"\u4e00\u89a7\u304b\u3089\u9078\u3076","link_is_external":"\u30ea\u30f3\u30af\u306bhttp://\u3092\u4ed8\u52a0\u3057\u307e\u3059\u304b\uff1f","link_is_email":"\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u304c\u5165\u529b\u3055\u308c\u307e\u3057\u305f\u3002\u30ea\u30f3\u30af\u306bmailto:\u3092\u4ed8\u52a0\u3057\u307e\u3059\u304b\uff1f","link_titlefield":"title\u5c5e\u6027","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\u30afURL","link_title":"\u30ea\u30f3\u30af\u306e\u633f\u5165/\u7de8\u96c6","image_align_right":"\u53f3\u63c3\u3048","image_align_left":"\u5de6\u63c3\u3048","image_align_textbottom":"\u30c6\u30ad\u30b9\u30c8\u4e0b\u7aef\u3067\u63c3\u3048\u308b","image_align_texttop":"\u30c6\u30ad\u30b9\u30c8\u4e0a\u7aef\u3067\u63c3\u3048\u308b","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","image_align":"\u914d\u7f6e","image_hspace":"\u5de6\u53f3\u4f59\u767d","image_vspace":"\u4e0a\u4e0b\u4f59\u767d","image_dimensions":"\u30b5\u30a4\u30ba","image_alt":"\u753b\u50cf\u306e\u8aac\u660e","image_list":"\u4e00\u89a7\u304b\u3089\u9078\u3076","image_border":"\u67a0\u7dda","image_src":"\u753b\u50cfURL","image_title":"\u753b\u50cf\u306e\u633f\u5165/\u7de8\u96c6","charmap_title":"\u7279\u6b8a\u6587\u5b57","colorpicker_name":"\u540d\u524d:","colorpicker_color":"\u30ab\u30e9\u30fc:","colorpicker_named_title":"\u65e2\u5b9a\u8272","colorpicker_named_tab":"\u65e2\u5b9a\u8272","colorpicker_palette_title":"\u30d1\u30ec\u30c3\u30c8","colorpicker_palette_tab":"\u30d1\u30ec\u30c3\u30c8","colorpicker_picker_title":"\u30ab\u30e9\u30fc\u30d4\u30c3\u30ab\u30fc","colorpicker_picker_tab":"\u30ab\u30e9\u30fc\u30d4\u30c3\u30ab\u30fc","colorpicker_title":"\u8272\u306e\u9078\u629e","code_wordwrap":"\u6298\u308a\u8fd4\u3057","code_title":"HTML\u30bd\u30fc\u30b9\u30a8\u30c7\u30a3\u30bf","anchor_name":"\u30a2\u30f3\u30ab\u30fc\u540d","anchor_title":"\u30a2\u30f3\u30ab\u30fc\u306e\u633f\u5165/\u7de8\u96c6","about_loaded":"\u8aad\u8fbc\u6e08\u307f\u30d7\u30e9\u30b0\u30a4\u30f3","about_version":"\u30d0\u30fc\u30b8\u30e7\u30f3","about_author":"\u4f5c\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":"\u8a73\u7d30","about_title":"TinyMCE\u306b\u3064\u3044\u3066","anchor_invalid":"\u30a2\u30f3\u30ab\u30fc\u540d\u3068\u3057\u3066\u6709\u52b9\u306a\u6587\u5b57\u5217\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002"});
\ No newline at end of file
+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
index a46c7acecb84fb0cf804e159762da2ded03a55f2..bc2b1faa90e59befc4044305687ad5c310ba8243 100644 (file)
@@ -1 +1 @@
-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:""});
\ No newline at end of file
+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
index c8ddc3fcf24c809dd72a70d78eac789020ee0ac5..a25659f3450c3d764e8a1ace40909714ae334a95 100644 (file)
@@ -1 +1 @@
-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."});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 772c836..43a4368
@@ -1 +1 @@
-tinyMCE.addI18n('ko.advanced',{underline_desc:"\ubc11\uc904(Ctrl+U)",italic_desc:"\uc774\ud0e4\ub9ad(Ctrl+I)",bold_desc:"\uad75\uc740 \uae00\uc528(Ctrl+B)",dd:"\uc815\uc758 \uc124\uba85",dt:"\uc5b4\uad6c \uc815\uc758",samp:"\uc0d8\ud50c\ucf54\ub4dc",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:"\ud3ec\ub9f7",fontdefault:"\uae00\uaf34",font_size:"\uae00\uaf34 \ud06c\uae30",style_select:"\uc2a4\ud0c0\uc77c",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:"\ud3b8\uc9d1\uc911\uc758 \ub370\uc774\ud130\ub97c \ubaa8\ub450 \uc783\uc5b4\ub3c4 \uad1c\ucc2e\uc2b5\ub2c8\uae4c?",path:"Path",clipboard_msg:"\ubcf5\uc0ac/\uc798\ub77c\ub0b4\uae30/\ubd99\uc774\uae30\ub294 Mozilla \ubc0fFirefox \uc5d0\uc11c \uc0ac\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\\n\uc0c1\uc138\uc815\ubcf4\ub97c \ud45c\uc2dc\ud569\ub2c8\uae4c?",blockquote_desc:"\uc778\uc6a9\ubb38",help_desc:"\ub3c4\uc6c0\ub9d0",newdocument_desc:"\uc2e0\uaddc\uae00 \uc791\uc131",image_props_desc:"\uc774\ubbf8\uc9c0\uc18d\uc131",paste_desc:"\ubd99\uc774\uae30",copy_desc:"\ubcf5\uc0ac",cut_desc:"\uc798\ub77c\ub0b4\uae30",anchor_desc:"\uc5e5\ucee4 \uc0bd\uc785/\ud3b8\uc9d1",visualaid_desc:"\uac00\uc774\ub4dc\ub77c\uc778 \ud45c\uc2dc/\ube44\ud45c\uc2dc",charmap_desc:"\ud2b9\uc218 \ubb38\uc790",backcolor_desc:"\ubc30\uacbd\uc0c9",forecolor_desc:"\uae00\uc790\uc0c9",custom1_desc:"\ucee4\uc2a4\ud140 \uc124\uba85",removeformat_desc:"\uc11c\uc2dd \ud574\uc81c",hr_desc:"\uad6c\ubd84\uc120",sup_desc:"\uc704\ucca8\uc790",sub_desc:"\uc544\ub798\ucca8\uc790",code_desc:"HTML \ud3b8\uc9d1",cleanup_desc:"\uc9c0\uc800\ubd84\ud55c \ucf54\ub4dc \uc0ad\uc81c",image_desc:"\uc774\ubbf8\uc9c0 \uc0bd\uc785/\ud3b8\uc9d1",unlink_desc:"\ub9c1\ud06c \uc0ad\uc81c",link_desc:"\ub9c1\ud06c\uc758 \uc0bd\uc785/\ud3b8\uc9d1",redo_desc:"\ub2e4\uc2dc\uc2e4\ud589(Ctrl+Y)",undo_desc:"\uc2e4\ud589\ucde8\uc18c(Ctrl+Z)",indent_desc:"\ub4e4\uc5ec\uc4f0\uae30",outdent_desc:"\ub0b4\uc5b4\uc4f0\uae30",numlist_desc:"\uc21c\ucc28\ubaa9\ub85d",bullist_desc:"\ube44\uc21c\ucc28\ubaa9\ub85d",justifyfull_desc:"\ubc30\ubd84 \uc815\ub82c",justifyright_desc:"\uc624\ub978\ucabd \uc815\ub82c",justifycenter_desc:"\uac00\uc6b4\ub370 \uc815\ub82c",justifyleft_desc:"\uc67c\ucabd \uc815\ub82c",striketrough_desc:"\ucde8\uc18c\uc120",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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 67bf5b2..4bdb79f
@@ -1 +1 @@
-tinyMCE.addI18n('ko.advanced_dlg',{link_list:"\ub9c1\ud06c \ubaa9\ub85d",link_is_external:"\uc678\ubd80URL\uc774 \uc785\ub825\ub418\uc5c8\uc2b5\ub2c8\ub2e4.\\nURL\uc758 \uc55e\uc5d0 http://\ub97c \ubd99\uc785\ub2c8\uae4c?",link_is_email:"\uba54\uc77c\uc8fc\uc18c\uac00 \uc785\ub825\ub418\uc5c8\uc2b5\ub2c8\ub2e4.\\n\uba54\uc77c\uc8fc\uc18c\uc758 \uc55e\uc5d0 mailto:\ub97c \ubd99\uc785\ub2c8\uae4c?",link_titlefield:"\uc81c\ubaa9",link_target_blank:"\uc0c8\ucc3d",link_target_same:"\uac19\uc740\ucc3d",link_target:"Target",link_url:"\ub9c1\ud06c URL",link_title:"\ub9c1\ud06c\uc758 \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:"\uc815\ub82c",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\uc758 \uc0bd\uc785/\ud3b8\uc9d1",charmap_title:"\ud2b9\uc218 \ubb38\uc790",colorpicker_name:"\uc0c9 \uc774\ub984:",colorpicker_color:"Color:",colorpicker_named_title:"\uc0c9",colorpicker_named_tab:"\uc0c9 \uc774\ub984",colorpicker_palette_title:"\ud314\ub808\ud2b8 \uc0c9",colorpicker_palette_tab:"\ud314\ub808\ud2b8",colorpicker_picker_title:"\uceec\ub7ec \ud53d\ucee4",colorpicker_picker_tab:"\ud53d\ucee4",colorpicker_title:"\uc0c9\uc744 \uc120\ud0dd",code_wordwrap:"\uc6cc\ub4dc\ub7a9",code_title:"\uc18c\uc2a4 \ud3b8\uc9d1",anchor_name:"\uc5e5\ucee4\uba85",anchor_title:"\uc5e5\ucee4 \uc0bd\uc785/\ud3b8\uc9d1",about_loaded:"\uc2e4\ud589\ub41c \ud50c\ub7ec\uadf8\uc778",about_version:"\ubc84\uc83c",about_author:"\uc81c\uc791\uc790",about_plugin:"\ud50c\ub7ec\uadf8\uc778",about_plugins:"\ud50c\ub7ec\uadf8\uc778",about_license:"\ub77c\uc774\uc13c\uc2a4",about_help:"\ub3c4\uc6c0\ub9d0",about_general:"About",about_title:"TinyMCE\uc5d0 \ub300\ud558\uc5ec"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index dcaaefd..3056354
@@ -1 +1 @@
-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",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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 6535e50..2474073
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 04557b6..e7ed143
@@ -1 +1 @@
-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",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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 1ee3b86..e19b9e2
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 58ff778..b95e95d
@@ -1 +1 @@
-tinyMCE.addI18n('mk.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:"\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:"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:"Pre\u0111i na alatnu traku - Alt+Q, pre\u0111i na ure\u0111iva\u010d - Alt-Z, pre\u0111i na element path - Alt-X",newdocument:"Jeste li sigurni da \u017eelite izbrisati celi sadr\u017eaj?",path:"Staza",clipboard_msg:"Kopiraj/Izre\u017ei/Zalepi 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:"Zalepi",copy_desc:"Kopiraj",cut_desc:"Izre\u017ei",anchor_desc:"\u0412\u043c\u0435\u0442\u043d\u0438/uredi sidro",visualaid_desc:"Vodilice/nevidljivi elementi",charmap_desc:"\u0412\u043c\u0435\u0442\u043d\u0438 vlastiti znak",backcolor_desc:"Odaberite boju pozadine",forecolor_desc:"Odaberite boju teksta",custom1_desc:"Vlastiti opis ovdje",removeformat_desc:"Poni\u0161ti oblikovanje",hr_desc:"\u0412\u043c\u0435\u0442\u043d\u0438 vodoravnu crtu",sup_desc:"Eksponent",sub_desc:"Indeks",code_desc:"Uredi HTML izvor",cleanup_desc:"Po\u010disti kod",image_desc:"\u0412\u043c\u0435\u0442\u043d\u0438/uredi sliku",unlink_desc:"Poni\u0161ti poveznicu",link_desc:"\u0412\u043c\u0435\u0442\u043d\u0438/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 levo",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:""});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index da2eeb9..052b43b
@@ -1 +1 @@
-tinyMCE.addI18n('mk.advanced_dlg',{link_list:"Lista poveznica",link_is_external:"URL koji ste uneli izgleda kao vanjska poveznica, \u017eelite li dodati potrebni http:// prefiks?",link_is_email:"URL koji ste uneli izgleda kao e-mail adresa, \u017eelite li dodati potrebni mailto: prefiks?",link_titlefield:"\u041d\u0430\u0441\u043b\u043e\u0432",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:"\u0412\u043c\u0435\u0442\u043d\u0438/\u0441\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:"\u0414\u043d\u043e \u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u043e\u0442",image_align_texttop:"\u0412\u0440\u0432 \u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u043e\u0442",image_align_bottom:"\u0414\u043d\u043e",image_align_middle:"\u0421\u0440\u0435\u0434\u0438\u043d\u0430",image_align_top:"\u0412\u0440\u0432",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:"\u0420\u0430\u0431",image_src:"\u041b\u0438\u043d\u043a \u043d\u0430 \u0441\u043b\u0438\u043a\u0430\u0442\u0430",image_title:"\u0412\u043c\u0435\u0442\u043d\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 \u0441\u0440\u0435\u0434\u0443\u0432\u0430\u0447",anchor_name:"\u0418\u043c\u0435 \u043d\u0430 \u0441\u0438\u0434\u0440\u043e\u0442\u043e",anchor_title:"\u0412\u043c\u0435\u0442\u043d\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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index e318077..599e211
@@ -1 +1 @@
-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:""});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index d221ee3..550c32c
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index bbb7d75..c83c6aa
@@ -1 +1 @@
-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","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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 1f09a21..16b3d18
@@ -1 +1 @@
-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","anchor_invalid":"Du m\u00e5 angi et gyldig ankernavn."});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 3f65145..3ef2c14
@@ -1 +1 @@
-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",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",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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 34b3159..615a5e8
@@ -1 +1 @@
-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",anchor_invalid:"Geef een geldige ankernaam."});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 28c9c87..4f6441e
@@ -1 +1 @@
-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",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",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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 2075c06..0344eb6
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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/no.js b/program/js/tiny_mce/themes/advanced/langs/no.js
deleted file mode 100644 (file)
index 4f91193..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('no.advanced',{"underline_desc":"Understrek (Ctrl+U)","italic_desc":"Kursiv (Ctrl+I)","bold_desc":"Fet (Ctrl+B)",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":"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 er ikke tilgjengelig i Mozilla og Firefox. \n  Vil du vite mer om dette?","blockquote_desc":"Innrykk","help_desc":"Hjelp","newdocument_desc":"Nytt dokument","image_props_desc":"Egenskaper for bilde","paste_desc":"Lim inn","copy_desc":"Kopier","cut_desc":"Klipp ut","anchor_desc":"Sett inn/editer 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":"Din egen beskriveles her","removeformat_desc":"Fjern formatering","hr_desc":"Sett inn horisontal linje","sup_desc":"Hev skrift","sub_desc":"Senk skrift","code_desc":"Rediger HTML kildekode","cleanup_desc":"Rense grisete kode","image_desc":"Sett inn / endre bilde","unlink_desc":"Fjerne lenke","link_desc":"Sett inn/editer lenke","redo_desc":"Gj\u00f8r om (Ctrl+Y)","undo_desc":"Angre (Ctrl+Z)","indent_desc":"\u00d8k innrykk","outdent_desc":"Reduser innrykk","numlist_desc":"Nummerliste","bullist_desc":"Punktliste","justifyfull_desc":"Blokkjustert","justifyright_desc":"H\u00f8yrejustert","justifycenter_desc":"Midtstilt","justifyleft_desc":"Venstrejustert","striketrough_desc":"Gjennomstreke","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/no_dlg.js b/program/js/tiny_mce/themes/advanced/langs/no_dlg.js
deleted file mode 100644 (file)
index bc7ea8b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('no.advanced_dlg',{"link_list":"Liste over lenker","link_is_external":"Nettadressen du skrev inn ser ut til \u00e5 v\u00e6re en ekstern nettadresse. \u00d8nsker du \u00e5 legge til obligatorisk http://-prefiks?","link_is_email":"Nettadressen du skrev inn ser ut til \u00e5 v\u00e6re en Epost adresse. \u00d8nsker du \u00e5 legge til obligatorisk mailto:-prefiks?","link_titlefield":"Tittel","link_target_blank":"\u00c5pne i nytt vindu","link_target_same":"\u00c5pne i dette vindu","link_target":"M\u00e5lvindu","link_url":"Lenke URL","link_title":"Sett inn/editer lenke","image_align_right":"H\u00f8yre","image_align_left":"Venstre","image_align_textbottom":"Tekst bunn","image_align_texttop":"Tekst topp","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":"Liste med bilder","image_border":"Ramme","image_src":"Bilde URL","image_title":"Sett inn/editer 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":"Fargevelger","colorpicker_title":"Velg farge","code_wordwrap":"Tekstbryting","code_title":"HTML kildeeditor","anchor_name":"Ankernavn","anchor_title":"Sett inn/editer anker","about_loaded":"Innlastede programtillegg","about_version":"Versjon","about_author":"Forfatter","about_plugin":"Programtillegg","about_plugins":"Programtillegg","about_license":"Lisens","about_help":"Hjelp","about_general":"Om","about_title":"Om TinyMCE","anchor_invalid":"Du m\u00e5 angi et gyldig ankernavn."});
\ No newline at end of file
old mode 100755 (executable)
new mode 100644 (file)
index 38f4459..f7348f1
@@ -1 +1 @@
-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","copy_desc":"Kopiuj","cut_desc":"Wytnij","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","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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 6142361..e1ba93c
@@ -1 +1 @@
-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","anchor_invalid":"Prosz\u0119 poda\u0107 w\u0142a\u015bciw\u0105 nazw\u0119 zakotwiczenia."});
\ No newline at end of file
+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
index 1c87dbb775974d6a8c4e4228b4217316708ec9b2..59d632974add302ad897c35537b64e7ae1e62b86 100644 (file)
@@ -1 +1 @@
-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:""});
\ No newline at end of file
+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
index 012df2d024681d8a65a1206217a48204301bce88..597f01f94a6004e1f04acb996af0d46844a60edf 100644 (file)
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 9d86b41..48d17b1
@@ -1 +1 @@
-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",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",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
+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
old mode 100755 (executable)
new mode 100644 (file)
index ad34611..313a012
@@ -1 +1 @@
-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",anchor_invalid:"Por favor, especifique um nome v\u00e1lido de \u00e2ncora."});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index ae6adcb..88899a8
@@ -1 +1 @@
-tinyMCE.addI18n('ro.advanced',{underline_desc:"Subliniat (Ctrl+U)",italic_desc:"Italic (Ctrl+I)",bold_desc:"\u00cengro\u015fat (Ctrl+B)",dd:"Defini\u0163ie",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:"Font",font_size:"M\u0103rime font",style_select:"Stiluri",more_colors:"Mai multe culori",toolbar_focus:"S\u0103ri\u0163i la instrumente - Alt+Q, S\u0103ri\u0163i la editor - Alt-Z, S\u0103ri\u0163i la cale - Alt-X",newdocument:"Sigur dori\u0163i s\u0103 \u015fterge\u0163i tot?",path:"Cale",clipboard_msg:"Copierea/T\u0103ierea/Lipirea nu sunt disponibile \u00een Mozilla \u015fi Firefox.\\nDori\u0163i mai multe informa\u0163ii despre aceast\u0103 problem\u0103?",blockquote_desc:"Citat",help_desc:"Autor",newdocument_desc:"Document nou",image_props_desc:"Detalii imagine",paste_desc:"Lipe\u015fte",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:"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\u0163are cod",image_desc:"Inserare/editare imagine",unlink_desc:"\u015eterge 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\u0163imea",justifyright_desc:"Aliniere la dreapta",justifycenter_desc:"Centrare",justifyleft_desc:"Aliniere la st\u00e2nga",striketrough_desc:"T\u0103iat",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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 87ce7e9..3cb647d
@@ -1 +1 @@
-tinyMCE.addI18n('ro.advanced_dlg',{link_list:"Lista de leg\u0103turi",link_is_external:"URL-ul pe care l-a\u0163i introdus pare a fi o leg\u0103tur\u0103 extern\u0103. Dori\u0163i s\u0103 adaug \u015fi prefixul http:// necesar?",link_is_email:"URL-ul pe care l-a\u0163i introdus pare a fi o adres\u0103 de e-mail. Dori\u0163i s\u0103 adaug \u015fi 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\u015fi fereastr\u0103",link_target:"\u0162int\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\u0163iu orizontal",image_vspace:"Spa\u0163iu 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\u0163i 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\u0163i o culoare",code_wordwrap:"Word wrap",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\u0163\u0103",about_help:"Ajutor",about_general:"Despre",about_title:"Despre TinyMCE"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 3ab4e69..5dcf47a
@@ -1 +1 @@
-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.\\r\\n\u0425\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\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","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
+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
old mode 100755 (executable)
new mode 100644 (file)
index a1ad580..4cd823d
@@ -1 +1 @@
-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","anchor_invalid":"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430 \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0438\u043c\u044f \u044f\u043a\u043e\u0440\u044f."});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 678d9c3..48bd635
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 00d8700..029f5fc
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 723cded..5633fbf
@@ -1 +1 @@
-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 li\u0161tu 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 podporovan\u00e9 v prehliada\u010doch Mozilla a Firefox.\\nChcete 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",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
+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
old mode 100755 (executable)
new mode 100644 (file)
index 494f527..3af287a
@@ -1 +1 @@
-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:"Vzorkovn\u00edk farieb",colorpicker_palette_tab:"Vzorkovn\u00edk",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",anchor_invalid:"Zadajte, pros\u00edm, platn\u00fd n\u00e1zov z\u00e1lo\u017eky (kotvy)."});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 093496e..0f9901e
@@ -1 +1 @@
-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",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
+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
old mode 100755 (executable)
new mode 100644 (file)
index ea4d967..dccb621
@@ -1 +1 @@
-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",anchor_invalid:"Prosimo vnesite veljavno ime sidra."});
\ No newline at end of file
+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
index d1d6c39bd7e3e85a744f369f79653f30408c04aa..18c265c87af4858639b779a62f5a38f0286c3195 100644 (file)
@@ -1 +1 @@
-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",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
+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
index c27c6e7d3250866924a744ad52974df4a1ea35be..de456f87e9b2219e9d1f58051b701abc78e34066 100644 (file)
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 7b8bbde..1042caa
@@ -1 +1 @@
-tinyMCE.addI18n('sr.advanced',{underline_desc:"Podvuci (Ctrl+U)",italic_desc:"Iskosi (Ctrl+I)",bold_desc:"Podebljaj (Ctrl+B)",dd:"Opis definicije",dt:"Definicija pojma",samp:"Primer 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:"Font",font_size:"Veli\u010dina",style_select:"Stilovi",more_colors:"Dodatne boje",toolbar_focus:"Pre\u0111i na traku sa alatima - Alt+Q, Pre\u0111i na ure\u0111iva\u010d - Alt-Z, Pre\u0111i na putanju elementa - Alt-X",newdocument:"Da li ste sigurni da \u017eelite da obri\u0161ete celi sadr\u017eaj?",path:"Putanja",clipboard_msg:"Kopiraj/Iseci/Zalepi nisu dostupni u Mozilla i Firefox pretra\u017eiva\u010dima. Da li \u017eelite vi\u0161e informacija?",blockquote_desc:"Citiraj",help_desc:"Pomo\u0107",newdocument_desc:"Novi dokument",image_props_desc:"Detalji slike",paste_desc:"Zalepi",copy_desc:"Kopiraj",cut_desc:"Iseci",anchor_desc:"Ubaci/uredi sidro",visualaid_desc:"Vo\u0111ice/nevidljivi elementi",charmap_desc:"Ubaci specijalni znak",backcolor_desc:"Izaberi boju pozadine",forecolor_desc:"Izaberi boju teksta",custom1_desc:"Unesi vlastiti opis",removeformat_desc:"Ukloni formatiranje",hr_desc:"Ubaci horizontalnu liniju",sup_desc:"Eksponent",sub_desc:"Indeks",code_desc:"Uredi HTML izvor",cleanup_desc:"O\u010disti kod",image_desc:"Ubaci/uredi sliku",unlink_desc:"Ukloni link",link_desc:"Ubaci/izmeni link",redo_desc:"Vrati (Ctrl+Y)",undo_desc:"Opozovi (Ctrl+Z)",indent_desc:"Smanji uvla\u010denje",outdent_desc:"Pove\u0107aj uvla\u010denje",numlist_desc:"Broj\u010dana lista",bullist_desc:"Znakovna lista",justifyfull_desc:"Poravnato",justifyright_desc:"Desno",justifycenter_desc:"Centrirano",justifyleft_desc:"Levo",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:""});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 645d504..aca90a3
@@ -1 +1 @@
-tinyMCE.addI18n('sr.advanced_dlg',{link_list:"Lista linkova",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 link",link_title:"Ubaci/izmeni link",image_align_right:"Desno",image_align_left:"Levo",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:"Osnova",image_align:"Poravnanje",image_hspace:"Horizontalni razmak",image_vspace:"Vertikalni razmak",image_dimensions:"Dimenzije",image_alt:"Opis slike",image_list:"Lista slika",image_border:"Ivice",image_src:"URL slike",image_title:"Ubaci/uredi sliku",charmap_title:"Izberi znak",colorpicker_name:"Naziv:",colorpicker_color:"Boja:",colorpicker_named_title:"Naziv boja",colorpicker_named_tab:"Pod nazivom",colorpicker_palette_title:"Paleta boja",colorpicker_palette_tab:"Paleta",colorpicker_picker_title:"Odabir boje",colorpicker_picker_tab:"Odabir",colorpicker_title:"Izaberi boje",code_wordwrap:"Prelom teksta",code_title:"HTML ure\u0111iva\u010d",anchor_name:"Ime sidra",anchor_title:"Ubaci/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:"O TinyMCE"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index bea650c..9a20833
@@ -1 +1 @@
-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:"Fontfamilj","font_size":"Fontstorlek","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","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
+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
old mode 100755 (executable)
new mode 100644 (file)
index c59ecb4..f2da940
@@ -1 +1 @@
-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","anchor_invalid":"Skiv ett korrekt ankarnamn."});
\ No newline at end of file
+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
index 157b9af2c7ecdfb011a169c5833a9309a55b3521..c72f1799168e298032ddac34d2b7f583b508f7ad 100644 (file)
@@ -1 +1 @@
-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:""});
\ No newline at end of file
+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
index eb36863d8094068a71ed9d9067f0d8eaf7c02713..f7646ae1a698d051c31501ccad6940eed3709279 100644 (file)
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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/te.js b/program/js/tiny_mce/themes/advanced/langs/te.js
deleted file mode 100644 (file)
index c291976..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('te.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:""});
\ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/te_dlg.js b/program/js/tiny_mce/themes/advanced/langs/te_dlg.js
deleted file mode 100644 (file)
index ffb2a40..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('te.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"});
\ No newline at end of file
index 32652a31b1dbc4e9ea449e1d800ec12b836a4ae6..144f0a2df2a4ba11bc6d57b1e059c4c00a4dacc4 100644 (file)
@@ -1 +1 @@
-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:""});
\ No newline at end of file
+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
index a142ac17544e0274c964a04fc94c7d16b5f08c1e..81540943f241cd60a67f60f62f8763d8265fff24 100644 (file)
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 7e155b2..e08a86b
@@ -1 +1 @@
-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",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
+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
old mode 100755 (executable)
new mode 100644 (file)
index e39602b..0994148
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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/tw.js b/program/js/tiny_mce/themes/advanced/langs/tw.js
deleted file mode 100644 (file)
index e637e60..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('tw.advanced',{underline_desc:"\u5e95\u7dda (Ctrl+U)",italic_desc:"\u659c\u9ad4 (Ctrl+I)",bold_desc:"\u7c97\u9ad4 (Ctrl+B)",dd:"\u540d\u8a5e\u89e3\u91cb",dt:"\u540d\u8a5e\u5b9a\u7fa9",samp:"\u539f\u59cb\u78bc\u7bc4\u4f8b",code:"\u539f\u59cb\u78bc",blockquote:"\u5f15\u7528",h6:"\u6a19\u984c6",h5:"\u6a19\u984c5",h4:"\u6a19\u984c4",h3:"\u6a19\u984c3",h2:"\u6a19\u984c2",h1:"\u6a19\u984c1",pre:"\u9810\u8a2d\u5b9a\u7fa9\u683c\u5f0f",address:"\u5730\u5740",div:"DIV \u968e\u5c64",paragraph:"\u6bb5\u843d",block:"\u683c\u5f0f",fontdefault:"\u5b57\u9ad4",font_size:"\u5b57\u578b\u5927\u5c0f",style_select:"\u6a23\u5f0f",link_delta_height:"60",link_delta_width:"40",more_colors:"\u66f4\u591a\u984f\u8272...",toolbar_focus:"\u5b9a\u4f4d\u5230\u5de5\u5177\u5217\uff1aAlt+Q\uff0c\u5b9a\u4f4d\u5230\u7de8\u8f2f\u6846\uff1aAlt+Z\u5b9a\u4f4d\u5230\u5de5\u5177\u5217- Alt+Q\uff0c\u5b9a\u4f4d\u5230\u5143\u7d20\u76ee\u9304\uff1aAlt+X\u3002",newdocument:"\u78ba\u8a8d\u6e05\u9664\u76ee\u524d\u7de8\u8f2f\u7684\u5167\u5bb9\u55ce\uff1f",path:"\u5143\u7d20\u76ee\u9304",clipboard_msg:"\u5f88\u62b1\u6b49\uff0c\u60a8\u7684\u700f\u89bd\u5668\u4e0d\u652f\u63f4\u8907\u88fd\u529f\u80fd\u3002",blockquote_desc:"\u5f15\u7528",help_desc:"\u8aaa\u660e",newdocument_desc:"\u65b0\u5efa\u6a94\u6848",image_props_desc:"\u5716\u7247\u5c6c\u6027",paste_desc:"\u8cbc\u4e0a (Ctrl+V)",copy_desc:"\u8907\u88fd (Ctrl+C)",cut_desc:"\u526a\u4e0b (Ctrl+X)",anchor_desc:"\u63d2\u5165/\u7de8\u8f2f\u66f8\u7c64",visualaid_desc:"\u986f\u793a/\u96b1\u85cf\u76ee\u6a19",charmap_desc:"\u63d2\u5165\u7279\u6b8a\u7b26\u865f",backcolor_desc:"\u80cc\u666f\u984f\u8272",forecolor_desc:"\u6587\u5b57\u984f\u8272",custom1_desc:"\u5728\u6b64\u8f38\u5165\u63cf\u8ff0",removeformat_desc:"\u6e05\u9664\u683c\u5f0f",hr_desc:"\u6c34\u5e73\u7dda",sup_desc:"\u4e0a\u6a19",sub_desc:"\u4e0b\u6a19",code_desc:"Html\u539f\u59cb\u78bc\u6a21\u5f0f",cleanup_desc:"\u6e05\u9664\u683c\u5f0f",image_desc:"\u63d2\u5165/\u7de8\u8f2f\u5716\u7247",unlink_desc:"\u522a\u9664\u8d85\u9023\u7d50",link_desc:"\u63d2\u5165/\u7de8\u8f2f\u8d85\u9023\u7d50",redo_desc:"\u53d6\u6d88\u5fa9\u539f (Ctrl+Y)",undo_desc:"\u5fa9\u539f (Ctrl+Z)",indent_desc:"\u589e\u52a0\u7e2e\u6392",outdent_desc:"\u6e1b\u5c11\u7e2e\u6392",numlist_desc:"\u7de8\u865f\u5217\u8868",bullist_desc:"\u9805\u76ee\u5217\u8868",justifyfull_desc:"\u5de6\u53f3\u5c0d\u9f4a",justifyright_desc:"\u9760\u53f3\u5c0d\u9f4a",justifycenter_desc:"\u7f6e\u4e2d\u5c0d\u9f4a",justifyleft_desc:"\u9760\u5de6\u5c0d\u9f4a",striketrough_desc:"\u522a\u9664\u7dda",anchor_delta_height:"",anchor_delta_width:"",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/tw_dlg.js b/program/js/tiny_mce/themes/advanced/langs/tw_dlg.js
deleted file mode 100644 (file)
index d9e7d77..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('tw.advanced_dlg',{link_list:"\u8d85\u9023\u7d50\u6e05\u55ae",link_is_external:"\u60a8\u8f38\u5165\u7684 URL \u662f\u4e00\u500b\u5916\u90e8\u8d85\u9023\u7d50\uff0c\u662f\u5426\u8981\u52a0\u4e0a http:// \uff1f",link_is_email:"\u60a8\u8f38\u5165\u7684\u662f\u96fb\u5b50\u90f5\u4ef6\u5730\u5740,\u662f\u5426\u9700\u8981\u52a0 mailto:\uff1f",link_titlefield:"\u6a19\u984c",link_target_blank:"\u65b0\u8996\u7a97\u6253\u958b\u8d85\u9023\u7d50",link_target_same:"\u76ee\u524d\u8996\u7a97\u6253\u958b\u8d85\u9023\u7d50",link_target:"\u76ee\u6a19",link_url:"\u8d85\u9023\u7d50URL",link_title:"\u63d2\u5165/\u7de8\u8f2f\u8d85\u9023\u7d50",image_align_right:"\u9760\u53f3",image_align_left:"\u9760\u5de6",image_align_textbottom:"\u6587\u5b57\u4e0b\u65b9",image_align_texttop:"\u6587\u5b57\u4e0a\u65b9",image_align_bottom:"\u9760\u4e0b",image_align_middle:"\u7f6e\u4e2d",image_align_top:"\u9760\u4e0a",image_align_baseline:"\u57fa\u6e96\u7dda",image_align:"\u5c0d\u9f4a\u65b9\u5f0f",image_hspace:"\u6c34\u5e73\u9593\u8ddd",image_vspace:"\u5782\u76f4\u9593\u8ddd",image_dimensions:"\u5c3a\u5bf8",image_alt:"\u5716\u7247\u8aaa\u660e",image_list:"\u5716\u7247\u6e05\u55ae",image_border:"\u908a\u6846",image_src:"\u5716\u7247URL",image_title:"\u63d2\u5165/\u7de8\u8f2f\u5716\u7247",charmap_title:"\u63d2\u5165\u7279\u6b8a\u7b26\u865f",colorpicker_name:"\u540d\u7a31\uff1a",colorpicker_color:"\u984f\u8272\uff1a",colorpicker_named_title:"\u5e38\u7528\u984f\u8272",colorpicker_named_tab:"\u5e38\u7528\u984f\u8272",colorpicker_palette_title:"WEB\u984f\u8272",colorpicker_palette_tab:"\u5b89\u5168\u8272",colorpicker_picker_title:"\u8abf\u8272\u76e4",colorpicker_picker_tab:"\u8abf\u8272\u76e4",colorpicker_title:"\u9078\u64c7\u984f\u8272",code_wordwrap:"\u81ea\u52d5\u63db\u884c",code_title:"\u539f\u59cb\u78bc\u6a19\u984c",anchor_name:"\u66f8\u7c64\u540d\u7a31",anchor_title:"\u63d2\u5165/\u7de8\u8f2f\u66f8\u7c64",about_loaded:"\u5df2\u555f\u7528\u7684\u5916\u639b\u7a0b\u5f0f",about_version:"\u7248\u672c",about_author:"\u4f5c\u8005",about_plugin:"\u5916\u639b\u7a0b\u5f0f",about_plugins:"\u5916\u639b\u7a0b\u5f0f",about_license:"\u6388\u6b0a",about_help:"\u8aaa\u660e",about_general:"\u95dc\u65bc",about_title:"\u95dc\u65bc TinyMCE"});
\ No newline at end of file
old mode 100755 (executable)
new mode 100644 (file)
index de45a13..9988c60
@@ -1 +1 @@
-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",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
+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
old mode 100755 (executable)
new mode 100644 (file)
index ebbcadd..89e0031
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index e18db8b..6f80fc9
@@ -1 +1 @@
-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:""});
\ No newline at end of file
+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
old mode 100755 (executable)
new mode 100644 (file)
index 69ed2e5..3a36071
@@ -1 +1 @@
-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"});
\ No newline at end of file
+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
new file mode 100644 (file)
index 0000000..cef3df2
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..5d03875
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..54041ae
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..46208f9
--- /dev/null
@@ -0,0 +1 @@
+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/langs/zh.js b/program/js/tiny_mce/themes/advanced/langs/zh.js
deleted file mode 100755 (executable)
index 0a3073a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh.advanced',{underline_desc:"\u5e95\u7ebf (Ctrl+U)",italic_desc:"\u659c\u4f53 (Ctrl+I)",bold_desc:"\u7c97\u4f53 (Ctrl+B)",dd:"\u540d\u8bcd\u63cf\u8ff0",dt:"\u540d\u8bcd\u5b9a\u4e49",samp:"\u4ee3\u7801\u8303\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\u8bbe\u683c\u5f0f",address:"\u5730\u5740",div:"DIV\u5c42\u7ea7",paragraph:"\u6bb5\u843d",block:"\u683c\u5f0f",fontdefault:"\u5b57\u4f53",font_size:"\u6587\u5b57\u5927\u5c0f",style_select:"\u6837\u5f0f",link_delta_height:"60",link_delta_width:"40",more_colors:"\u66f4\u591a\u989c\u8272...",toolbar_focus:"\u5b9a\u4f4d\u5230\u5de5\u5177\u5217\uff1aAlt+Q\uff0c\u5b9a\u4f4d\u5230\u7f16\u8f91\u6846\uff1aAlt+Z\u5b9a\u4f4d\u5230\u5de5\u5177\u5217- Alt+Q\uff0c\u5b9a\u4f4d\u5230\u5143\u7d20\u8def\u5f84\uff1aAlt+X\u3002",newdocument:"\u786e\u8ba4\u6e05\u9664\u76ee\u524d\u7f16\u8f91\u7684\u5185\u5bb9\u5417\uff1f",path:"\u5143\u7d20\u8def\u5f84",clipboard_msg:"\u5f88\u62b1\u6b49\uff0c\u60a8\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u63f4\u590d\u88fd\u529f\u80fd\u3002",blockquote_desc:"\u5f15\u7528",help_desc:"\u8bf4\u660e",newdocument_desc:"\u65b0\u5efa\u6587\u4ef6",image_props_desc:"\u56fe\u7247\u5c5e\u6027",paste_desc:"\u8d34\u4e0a (Ctrl+V)",copy_desc:"\u590d\u88fd (Ctrl+C)",cut_desc:"\u526a\u4e0b (Ctrl+X)",anchor_desc:"\u63d2\u5165/\u7f16\u8f91\u4e66\u7b7e",visualaid_desc:"\u663e\u793a/\u9690\u85cf\u76ee\u6807",charmap_desc:"\u63d2\u5165\u7279\u6b8a\u7b26\u53f7",backcolor_desc:"\u80cc\u666f\u989c\u8272",forecolor_desc:"\u6587\u5b57\u989c\u8272",custom1_desc:"\u5728\u6b64\u8f93\u5165\u63cf\u8ff0",removeformat_desc:"\u6e05\u9664\u683c\u5f0f",hr_desc:"\u6c34\u5e73\u7ebf",sup_desc:"\u4e0a\u6807",sub_desc:"\u4e0b\u6807",code_desc:"Html\u4ee3\u7801\u6a21\u5f0f",cleanup_desc:"\u6e05\u9664\u683c\u5f0f",image_desc:"\u63d2\u5165/\u7f16\u8f91\u56fe\u7247",unlink_desc:"\u5220\u9664\u8d85\u8d85\u8fde\u7ed3",link_desc:"\u63d2\u5165/\u7f16\u8f91\u8d85\u8fde\u7ed3",redo_desc:"\u53d6\u6d88\u5fa9\u586c (Ctrl+Y)",undo_desc:"\u5fa9\u586c (Ctrl+Z)",indent_desc:"\u589e\u52a0\u7f29\u6392",outdent_desc:"\u51cf\u5c11\u7f29\u6392",numlist_desc:"\u7f16\u53f7\u5217\u8868",bullist_desc:"\u9879\u76ee\u5217\u8868",justifyfull_desc:"\u5de6\u53f3\u5bf9\u9f50",justifyright_desc:"\u9760\u53f3\u5bf9\u9f50",justifycenter_desc:"\u7f6e\u4e2d\u5bf9\u9f50",justifyleft_desc:"\u9760\u5de6\u5bf9\u9f50",striketrough_desc:"\u5220\u9664\u7ebf",anchor_delta_height:"",anchor_delta_width:"",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/zh_dlg.js b/program/js/tiny_mce/themes/advanced/langs/zh_dlg.js
deleted file mode 100755 (executable)
index 73e14e8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh.advanced_dlg',{link_list:"\u8d85\u8fde\u7ed3\u6e05\u5355",link_is_external:"\u60a8\u8f93\u5165\u7684 URL \u662f\u4e00\u4e2a\u5916\u90e8\u8d85\u8fde\u7ed3\uff0c\u662f\u5426\u8981\u52a0\u4e0a http:// \uff1f",link_is_email:"\u60a8\u8f93\u5165\u7684\u662f\u7535\u5b50\u90ae\u4ef6\u5730\u5740,\u662f\u5426\u9700\u8981\u52a0 mailto:\uff1f",link_titlefield:"\u6807\u9898",link_target_blank:"\u65b0\u89c6\u7a97\u6253\u5f00\u8d85\u8fde\u7ed3",link_target_same:"\u76ee\u524d\u89c6\u7a97\u6253\u5f00\u8d85\u8fde\u7ed3",link_target:"\u76ee\u6807",link_url:"\u8d85\u8fde\u7ed3URL",link_title:"\u63d2\u5165/\u7f16\u8f91\u8d85\u8fde\u7ed3",image_align_right:"\u9760\u53f3",image_align_left:"\u9760\u5de6",image_align_textbottom:"\u6587\u5b57\u4e0b\u65b9",image_align_texttop:"\u6587\u5b57\u4e0a\u65b9",image_align_bottom:"\u9760\u4e0b",image_align_middle:"\u7f6e\u4e2d",image_align_top:"\u9760\u4e0a",image_align_baseline:"\u57fa\u51c6\u7ebf",image_align:"\u5bf9\u9f50\u65b9\u5f0f",image_hspace:"\u6c34\u5e73\u95f4\u8ddd",image_vspace:"\u5782\u76f4\u95f4\u8ddd",image_dimensions:"\u5c3a\u5bf8",image_alt:"\u56fe\u7247\u8bf4\u660e",image_list:"\u56fe\u7247\u6e05\u5355",image_border:"\u8fb9\u6846",image_src:"\u56fe\u7247URL",image_title:"\u63d2\u5165/\u7f16\u8f91\u56fe\u7247",charmap_title:"\u63d2\u5165\u7279\u6b8a\u7b26\u53f7",colorpicker_name:"\u540d\u79f0\uff1a",colorpicker_color:"\u989c\u8272\uff1a",colorpicker_named_title:"\u5e38\u7528\u989c\u8272",colorpicker_named_tab:"\u5e38\u7528\u989c\u8272",colorpicker_palette_title:"WEB\u989c\u8272",colorpicker_palette_tab:"\u5b89\u5168\u8272",colorpicker_picker_title:"\u8c03\u8272\u76d8",colorpicker_picker_tab:"\u8c03\u8272\u76d8",colorpicker_title:"\u9009\u62e9\u989c\u8272",code_wordwrap:"\u81ea\u52a8\u6362\u884c",code_title:"\u4ee3\u7801\u6807\u9898",anchor_name:"\u4e66\u7b7e\u540d\u79f0",anchor_title:"\u63d2\u5165/\u7f16\u8f91\u4e66\u7b7e",about_loaded:"\u5df2\u542f\u7528\u7684\u63d2\u4ef6",about_version:"\u7248\u672c",about_author:"\u4f5c\u8005",about_plugin:"\u63d2\u4ef6",about_plugins:"\u63d2\u4ef6",about_license:"\u6388\u6743",about_help:"\u8bf4\u660e",about_general:"\u5173\u65bc",about_title:"\u5173\u65bc TinyMCE"});
\ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/shortcuts.htm b/program/js/tiny_mce/themes/advanced/shortcuts.htm
new file mode 100644 (file)
index 0000000..20ec2f5
--- /dev/null
@@ -0,0 +1,47 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+       <head>\r
+               <title>{#advanced_dlg.accessibility_help}</title>\r
+               <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+               <script type="text/javascript">tinyMCEPopup.requireLangPack();</script>\r
+       </head>\r
+       <body id="content">\r
+               <h1>{#advanced_dlg.accessibility_usage_title}</h1>\r
+               <h2>Toolbars</h2>\r
+               <p>Press ALT-F10 to move focus to the toolbars. Navigate through the buttons using the arrow keys.\r
+               Press enter to activate a button and return focus to the editor.\r
+               Press escape to return focus to the editor without performing any actions.</p>\r
+               \r
+               <h2>Status Bar</h2>\r
+               <p>To access the editor status bar, press ALT-F11. Use the left and right arrow keys to navigate between elements in the path.\r
+               Press enter or space to select an element. Press escape to return focus to the editor without changing the selection.</p>\r
+               \r
+               <h2>Context Menu</h2>\r
+               <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.\r
+               To close submenus press the left arrow key.  Press escape to close the context menu.</p>\r
+               \r
+               <h1>Keyboard Shortcuts</h1>\r
+               <table>\r
+                       <thead>\r
+                               <tr>\r
+                                       <th>Keystroke</th>\r
+                                       <th>Function</th>\r
+                               </tr>\r
+                       </thead>\r
+                       <tbody>\r
+                               <tr>\r
+                                       <td>Control-B</td><td>Bold</td>\r
+                               </tr>\r
+                               <tr>\r
+                                       <td>Control-I</td><td>Italic</td>\r
+                               </tr>\r
+                               <tr>\r
+                                       <td>Control-Z</td><td>Undo</td>\r
+                               </tr>\r
+                               <tr>\r
+                                       <td>Control-Y</td><td>Redo</td>\r
+                               </tr>\r
+                       </tbody>\r
+               </table>\r
+       </body>\r
+</html>\r
index 03634668e72380f35fd0af48bbfecbc50f44d6f7..2fd94a1f9c44817cfc6c6f61e9864610dd26a1ed 100644 (file)
@@ -9,11 +9,11 @@ h4 {font-size: 1em}
 h5 {font-size: .83em}\r
 h6 {font-size: .75em}\r
 .mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;}\r
-a.mceItemAnchor {display:inline-block; width:11px !important; height:11px  !important; background:url(img/items.gif) no-repeat 0 0;}\r
+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}\r
 span.mceItemNbsp {background: #DDD}\r
 td.mceSelected, th.mceSelected {background-color:#3399ff !important}\r
 img {border:0;}\r
-table {cursor:default}\r
+table, img, hr, .mceItemAnchor {cursor:default}\r
 table td, table th {cursor:text}\r
 ins {border-bottom:1px solid green; text-decoration: none; color:green}\r
 del {color:red; text-decoration:line-through}\r
@@ -35,6 +35,7 @@ scrollbar-track-color:#F5F5F5;
 \r
 img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px}\r
 font[face=mceinline] {font-family:inherit !important}\r
+*[contentEditable]:focus {outline:0}\r
 \r
 .mceItemMedia {border:1px dotted #cc0000; background-position:center; background-repeat:no-repeat; background-color:#ffffcc}\r
 .mceItemShockWave {background-image:url(../../img/shockwave.gif)}\r
@@ -43,5 +44,7 @@ font[face=mceinline] {font-family:inherit !important}
 .mceItemWindowsMedia {background-image:url(../../img/windowsmedia.gif)}\r
 .mceItemRealMedia {background-image:url(../../img/realmedia.gif)}\r
 .mceItemVideo {background-image:url(../../img/video.gif)}\r
+.mceItemAudio {background-image:url(../../img/video.gif)}\r
+.mceItemEmbeddedAudio {background-image:url(../../img/video.gif)}\r
 .mceItemIframe {background-image:url(../../img/iframe.gif)}\r
 .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;}\r
index f01222650e03a53bac7d07907127cf5b1bdd27f6..879786fc15cbb534320d21426a839443fe84eade 100644 (file)
@@ -105,11 +105,12 @@ h3 {font-size:14px;}
 #plugintable, #about #plugintable td {border:1px solid #919B9C;}\r
 #plugintable {width:96%; margin-top:10px;}\r
 #pluginscontainer {height:290px; overflow:auto;}\r
-#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;}\r
+#colorpicker #preview {display:inline-block; padding-left:40px; height:14px; border:1px solid black; margin-left:5px; margin-right: 5px}\r
+#colorpicker #previewblock {position: relative; top: -3px; padding-left:5px; padding-top: 0px; display:inline}\r
+#colorpicker #preview_wrapper { text-align:center; padding-top:4px; white-space: nowrap}\r
 #colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}\r
 #colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}\r
 #colorpicker #light div {overflow:hidden;}\r
-#colorpicker #previewblock {float:right; padding-left:10px; height:20px;}\r
 #colorpicker .panel_wrapper div.current {height:175px;}\r
 #colorpicker #namedcolors {width:150px;}\r
 #colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}\r
index 7dd58418ba7cfe58ae7efdf174e0b223fe3aa6a0..1e53560e0aa7bb1b9a0373fc2f330acab7d1d51f 100644 (file)
Binary files a/program/js/tiny_mce/themes/advanced/skins/default/img/buttons.png and b/program/js/tiny_mce/themes/advanced/skins/default/img/buttons.png differ
index 2eafd7954e6ebf24204b01db94b39299426d09da..d2f93671ca3090b277e16a67b1aa6cfb6ac4915f 100644 (file)
Binary files a/program/js/tiny_mce/themes/advanced/skins/default/img/items.gif and b/program/js/tiny_mce/themes/advanced/skins/default/img/items.gif differ
index ce4be63558b02e9837b995d2b9dd540ce6d61a6f..06812cb4109b0b236b9659c570458842e39c6416 100644 (file)
Binary files a/program/js/tiny_mce/themes/advanced/skins/default/img/tabs.gif and b/program/js/tiny_mce/themes/advanced/skins/default/img/tabs.gif differ
index 556b510714dd456331d36e5ec9f709d7cee0fb4f..77083f311d0c9a6706cbebf878ad6fbbe7a4de04 100644 (file)
@@ -83,7 +83,7 @@
 .defaultSkin .mce_forecolor span.mceAction, .defaultSkin .mce_backcolor span.mceAction {overflow:hidden; height:16px}\r
 \r
 /* Menu */\r
-.defaultSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #D4D0C8}\r
+.defaultSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #D4D0C8; direction:ltr}\r
 .defaultSkin .mceNoIcons span.mceIcon {width:0;}\r
 .defaultSkin .mceNoIcons a .mceText {padding-left:10px}\r
 .defaultSkin .mceMenu table {background:#FFF}\r
 .defaultSkin .mceNoIcons .mceMenuItemSelected a {background:url(img/menu_arrow.gif) no-repeat -6px center}\r
 .defaultSkin .mceMenu span.mceMenuLine {display:none}\r
 .defaultSkin .mceMenuItemSub a {background:url(img/menu_arrow.gif) no-repeat top right;}\r
+.defaultSkin .mceMenuItem td, .defaultSkin .mceMenuItem th {line-height: normal}\r
 \r
 /* Progress,Resize */\r
 .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}\r
 .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}\r
 \r
+/* Rtl */\r
+.mceRtl .mceListBox .mceText {text-align: right; padding: 0 4px 0 0}\r
+.mceRtl .mceMenuItem .mceText {text-align: right}\r
+\r
 /* Formats */\r
 .defaultSkin .mce_formatPreview a {font-size:10px}\r
 .defaultSkin .mce_p span.mceText {}\r
 .defaultSkin span.mce_pagebreak {background-position:0 -40px}\r
 .defaultSkin span.mce_restoredraft {background-position:-20px -40px}\r
 .defaultSkin span.mce_spellchecker {background-position:-540px -20px}\r
+.defaultSkin span.mce_visualblocks {background-position: -40px -40px}\r
diff --git a/program/js/tiny_mce/themes/advanced/skins/highcontrast/content.css b/program/js/tiny_mce/themes/advanced/skins/highcontrast/content.css
new file mode 100644 (file)
index 0000000..cbce6c6
--- /dev/null
@@ -0,0 +1,24 @@
+body, td, pre { margin:8px;}\r
+body.mceForceColors {background:#FFF; color:#000;}\r
+h1 {font-size: 2em}\r
+h2 {font-size: 1.5em}\r
+h3 {font-size: 1.17em}\r
+h4 {font-size: 1em}\r
+h5 {font-size: .83em}\r
+h6 {font-size: .75em}\r
+.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;}\r
+a.mceItemAnchor {display:inline-block; width:11px !important; height:11px  !important; background:url(../default/img/items.gif) no-repeat 0 0;}\r
+span.mceItemNbsp {background: #DDD}\r
+td.mceSelected, th.mceSelected {background-color:#3399ff !important}\r
+img {border:0;}\r
+table, img, hr, .mceItemAnchor {cursor:default}\r
+table td, table th {cursor:text}\r
+ins {border-bottom:1px solid green; text-decoration: none; color:green}\r
+del {color:red; text-decoration:line-through}\r
+cite {border-bottom:1px dashed blue}\r
+acronym {border-bottom:1px dotted #CCC; cursor:help}\r
+abbr {border-bottom:1px dashed #CCC; cursor:help}\r
+\r
+img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px}\r
+font[face=mceinline] {font-family:inherit !important}\r
+*[contentEditable]:focus {outline:0}\r
diff --git a/program/js/tiny_mce/themes/advanced/skins/highcontrast/dialog.css b/program/js/tiny_mce/themes/advanced/skins/highcontrast/dialog.css
new file mode 100644 (file)
index 0000000..6d9fc8d
--- /dev/null
@@ -0,0 +1,106 @@
+/* Generic */\r
+body {\r
+font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;\r
+background:#F0F0EE;\r
+color: black;\r
+padding:0;\r
+margin:8px 8px 0 8px;\r
+}\r
+\r
+html {background:#F0F0EE; color:#000;}\r
+td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}\r
+textarea {resize:none;outline:none;}\r
+a:link, a:visited {color:black;background-color:transparent;}\r
+a:hover {color:#2B6FB6;background-color:transparent;}\r
+.nowrap {white-space: nowrap}\r
+\r
+/* Forms */\r
+fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;}\r
+legend {color:#2B6FB6; font-weight:bold;}\r
+label.msg {display:none;}\r
+label.invalid {color:#EE0000; display:inline;background-color:transparent;}\r
+input.invalid {border:1px solid #EE0000;background-color:transparent;}\r
+input {background:#FFF; border:1px solid #CCC;color:black;}\r
+input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}\r
+input, select, textarea {border:1px solid #808080;}\r
+input.radio {border:1px none #000000; background:transparent; vertical-align:middle;}\r
+input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;}\r
+.input_noborder {border:0;}\r
+\r
+/* Buttons */\r
+#insert, #cancel, input.button, .updateButton {\r
+font-weight:bold;\r
+width:94px; height:23px;\r
+cursor:pointer;\r
+padding-bottom:2px;\r
+float:left;\r
+}\r
+\r
+#cancel {float:right}\r
+\r
+/* Browse */\r
+a.pickcolor, a.browse {text-decoration:none}\r
+a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;}\r
+.mceOldBoxModel a.browse span {width:22px; height:20px;}\r
+a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;}\r
+a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}\r
+a.browse:hover span.disabled {border:1px solid white; background-color:transparent;}\r
+a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;}\r
+.mceOldBoxModel a.pickcolor span {width:21px; height:17px;}\r
+a.pickcolor:hover span {background-color:#B2BBD0;}\r
+a.pickcolor:hover span.disabled {}\r
+\r
+/* Charmap */\r
+table.charmap {border:1px solid #AAA; text-align:center}\r
+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;}\r
+#charmap a {display:block; color:#000; text-decoration:none; border:0}\r
+#charmap a:hover {background:#CCC;color:#2B6FB6}\r
+#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center}\r
+#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center}\r
+\r
+/* Source */\r
+.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;}\r
+.mceActionPanel {margin-top:5px;}\r
+\r
+/* Tabs classes */\r
+.tabs {width:100%; height:18px; line-height:normal;}\r
+.tabs ul {margin:0; padding:0; list-style:none;}\r
+.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;}\r
+.tabs li.current {font-weight: bold; margin-right:2px;}\r
+.tabs span {float:left; display:block; padding:0px 10px 0 0;}\r
+.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;}\r
+.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;}\r
+\r
+/* Panels */\r
+.panel_wrapper div.panel {display:none;}\r
+.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;}\r
+.panel_wrapper {border:1px solid #919B9C; padding:10px; padding-top:5px; clear:both; background:white;}\r
+\r
+/* Columns */\r
+.column {float:left;}\r
+.properties {width:100%;}\r
+.properties .column1 {}\r
+.properties .column2 {text-align:left;}\r
+\r
+/* Titles */\r
+h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;}\r
+h3 {font-size:14px;}\r
+.title {font-size:12px; font-weight:bold; color:#2B6FB6;}\r
+\r
+/* Dialog specific */\r
+#link .panel_wrapper, #link div.current {height:125px;}\r
+#image .panel_wrapper, #image div.current {height:200px;}\r
+#plugintable thead {font-weight:bold; background:#DDD;}\r
+#plugintable, #about #plugintable td {border:1px solid #919B9C;}\r
+#plugintable {width:96%; margin-top:10px;}\r
+#pluginscontainer {height:290px; overflow:auto;}\r
+#colorpicker #preview {display:inline-block; padding-left:40px; height:14px; border:1px solid black; margin-left:5px; margin-right: 5px}\r
+#colorpicker #previewblock {position: relative; top: -3px; padding-left:5px; padding-top: 0px; display:inline}\r
+#colorpicker #preview_wrapper { text-align:center; padding-top:4px; white-space: nowrap}\r
+#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}\r
+#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}\r
+#colorpicker #light div {overflow:hidden;}\r
+#colorpicker .panel_wrapper div.current {height:175px;}\r
+#colorpicker #namedcolors {width:150px;}\r
+#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}\r
+#colorpicker #colornamecontainer {margin-top:5px;}\r
diff --git a/program/js/tiny_mce/themes/advanced/skins/highcontrast/ui.css b/program/js/tiny_mce/themes/advanced/skins/highcontrast/ui.css
new file mode 100644 (file)
index 0000000..effbbe1
--- /dev/null
@@ -0,0 +1,106 @@
+/* Reset */\r
+.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;}\r
+.highcontrastSkin a:hover, .highcontrastSkin a:link, .highcontrastSkin a:visited, .highcontrastSkin a:active {text-decoration:none; font-weight:normal; cursor:default;}\r
+.highcontrastSkin table td {vertical-align:middle}\r
+\r
+.highcontrastSkin .mceIconOnly {display: block !important;}\r
+\r
+/* External */\r
+.highcontrastSkin .mceExternalToolbar {position:absolute; border:1px solid; border-bottom:0; display:none; background-color: white;}\r
+.highcontrastSkin .mceExternalToolbar td.mceToolbar {padding-right:13px;}\r
+.highcontrastSkin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px;}\r
+\r
+/* Layout */\r
+.highcontrastSkin table.mceLayout {border: 1px solid;}\r
+.highcontrastSkin .mceIframeContainer {border-top:1px solid; border-bottom:1px solid}\r
+.highcontrastSkin .mceStatusbar a:hover {text-decoration:underline}\r
+.highcontrastSkin .mceStatusbar {display:block; line-height:1.5em; overflow:visible;}\r
+.highcontrastSkin .mceStatusbar div {float:left}\r
+.highcontrastSkin .mceStatusbar a.mceResize {display:block; float:right; width:20px; height:20px; cursor:se-resize; outline:0}\r
+\r
+.highcontrastSkin .mceToolbar td { display: inline-block; float: left;}\r
+.highcontrastSkin .mceToolbar tr { display: block;}\r
+.highcontrastSkin .mceToolbar table { display: block; }\r
+\r
+/* Button */\r
+\r
+.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;}\r
+.highcontrastSkin .mceButton .mceVoiceLabel { height: 100%; vertical-align: center; line-height: 2em}\r
+.highcontrastSkin .mceButtonDisabled .mceVoiceLabel { opacity:0.6; -ms-filter:'alpha(opacity=60)'; filter:alpha(opacity=60);}\r
+.highcontrastSkin .mceButtonActive, .highcontrastSkin .mceButton:focus, .highcontrastSkin .mceButton:active { border: 5px solid; padding: 1px 6px;-webkit-focus-ring-color:none;outline:none;}\r
+\r
+/* Separator */\r
+.highcontrastSkin .mceSeparator {display:block; width:16px; height:26px;}\r
+\r
+/* ListBox */\r
+.highcontrastSkin .mceListBox { display: block; margin:2px;-webkit-focus-ring-color:none;outline:none;}\r
+.highcontrastSkin .mceListBox .mceText {padding: 5px 6px;  line-height: 2em; width: 15ex; overflow: hidden;}\r
+.highcontrastSkin .mceListBoxDisabled .mceText { opacity:0.6; -ms-filter:'alpha(opacity=60)'; filter:alpha(opacity=60);}\r
+.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;}\r
+.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;}\r
+.highcontrastSkin .mceListBox:focus a.mceText, .highcontrastSkin .mceListBox:active a.mceText { border-width: 5px; padding: 1px 10px 1px 6px;}\r
+.highcontrastSkin .mceListBox:focus a.mceOpen, .highcontrastSkin .mceListBox:active a.mceOpen { border-width: 5px; padding: 1px 0px 1px 4px;}\r
+\r
+.highcontrastSkin .mceListBoxMenu {overflow-y:auto}\r
+\r
+/* SplitButton */\r
+.highcontrastSkin .mceSplitButtonDisabled .mceAction {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}\r
+\r
+.highcontrastSkin .mceSplitButton { border-collapse: collapse; margin: 2px; height: 2em; line-height: 2em;-webkit-focus-ring-color:none;outline:none;}\r
+.highcontrastSkin .mceSplitButton td { display: table-cell; float: none; margin: 0; padding: 0; height: 2em;}\r
+.highcontrastSkin .mceSplitButton tr { display: table-row; }\r
+.highcontrastSkin table.mceSplitButton  { display: table; }\r
+.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;}\r
+.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;}\r
+.highcontrastSkin .mceSplitButton .mceVoiceLabel { height: 2em; vertical-align: center; line-height: 2em; } \r
+.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;}\r
+.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;}\r
+\r
+/* Menu */\r
+.highcontrastSkin .mceNoIcons span.mceIcon {width:0;}\r
+.highcontrastSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid; direction:ltr}\r
+.highcontrastSkin .mceMenu table {background:white; color: black}\r
+.highcontrastSkin .mceNoIcons a .mceText {padding-left:10px}\r
+.highcontrastSkin .mceMenu a, .highcontrastSkin .mceMenu span, .highcontrastSkin .mceMenu {display:block;background:white; color: black}\r
+.highcontrastSkin .mceMenu td {height:2em}\r
+.highcontrastSkin .mceMenu a {position:relative;padding:3px 0 4px 0; display: block;}\r
+.highcontrastSkin .mceMenu .mceText {position:relative; display:block; cursor:default; margin:0; padding:0 25px 0 25px;}\r
+.highcontrastSkin .mceMenu pre.mceText {font-family:Monospace}\r
+.highcontrastSkin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:26px;}\r
+.highcontrastSkin td.mceMenuItemSeparator {border-top:1px solid; height:1px}\r
+.highcontrastSkin .mceMenuItemTitle a {border:0; border-bottom:1px solid}\r
+.highcontrastSkin .mceMenuItemTitle span.mceText {font-weight:bold; padding-left:4px}\r
+.highcontrastSkin .mceNoIcons .mceMenuItemSelected span.mceText:before {content: "\2713\A0";}\r
+.highcontrastSkin .mceMenu span.mceMenuLine {display:none}\r
+.highcontrastSkin .mceMenuItemSub a .mceText:after {content: "\A0\25B8"}\r
+.highcontrastSkin .mceMenuItem td, .highcontrastSkin .mceMenuItem th {line-height: normal}\r
+\r
+/* ColorSplitButton */\r
+.highcontrastSkin div.mceColorSplitMenu table {background:#FFF; border:1px solid; color: #000}\r
+.highcontrastSkin .mceColorSplitMenu td {padding:2px}\r
+.highcontrastSkin .mceColorSplitMenu a {display:block; width:16px; height:16px; overflow:hidden; color:#000; margin: 0; padding: 0;}\r
+.highcontrastSkin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px}\r
+.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}\r
+.highcontrastSkin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid; background-color:#B6BDD2}\r
+.highcontrastSkin a.mceMoreColors:hover {border:1px solid #0A246A; color: #000;}\r
+.highcontrastSkin .mceColorPreview {display:none;}\r
+.highcontrastSkin .mce_forecolor span.mceAction, .highcontrastSkin .mce_backcolor span.mceAction {height:17px;overflow:hidden}\r
+\r
+/* Progress,Resize */\r
+.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}\r
+.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}\r
+\r
+/* Rtl */\r
+.mceRtl .mceListBox .mceText {text-align: right; padding: 0 4px 0 0}\r
+.mceRtl .mceMenuItem .mceText {text-align: right}\r
+\r
+/* Formats */\r
+.highcontrastSkin .mce_p span.mceText {}\r
+.highcontrastSkin .mce_address span.mceText {font-style:italic}\r
+.highcontrastSkin .mce_pre span.mceText {font-family:monospace}\r
+.highcontrastSkin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em}\r
+.highcontrastSkin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em}\r
+.highcontrastSkin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em}\r
+.highcontrastSkin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em}\r
+.highcontrastSkin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em}\r
+.highcontrastSkin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em}\r
index 4ac4e4dfb3d16f4aba0b6f1c6595127dc3e27978..a1a8f9bd32577b22adda138e4341f8fd45ca4445 100644 (file)
@@ -12,7 +12,7 @@ a.mceItemAnchor {display:inline-block; width:11px !important; height:11px  !impo
 span.mceItemNbsp {background: #DDD}\r
 td.mceSelected, th.mceSelected {background-color:#3399ff !important}\r
 img {border:0;}\r
-table {cursor:default}\r
+table, img, hr, .mceItemAnchor {cursor:default}\r
 table td, table th {cursor:text}\r
 ins {border-bottom:1px solid green; text-decoration: none; color:green}\r
 del {color:red; text-decoration:line-through}\r
@@ -34,6 +34,7 @@ scrollbar-track-color:#F5F5F5;
 \r
 img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px}\r
 font[face=mceinline] {font-family:inherit !important}\r
+*[contentEditable]:focus {outline:0}\r
 \r
 .mceItemMedia {border:1px dotted #cc0000; background-position:center; background-repeat:no-repeat; background-color:#ffffcc}\r
 .mceItemShockWave {background-image:url(../../img/shockwave.gif)}\r
@@ -42,5 +43,6 @@ font[face=mceinline] {font-family:inherit !important}
 .mceItemWindowsMedia {background-image:url(../../img/windowsmedia.gif)}\r
 .mceItemRealMedia {background-image:url(../../img/realmedia.gif)}\r
 .mceItemVideo {background-image:url(../../img/video.gif)}\r
+.mceItemAudio {background-image:url(../../img/video.gif)}\r
 .mceItemIframe {background-image:url(../../img/iframe.gif)}\r
 .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;}\r
index ec087722481db858c53b6cf7a637988e254a76b5..a54db98df1a0b11df10d5108a06aab8ee558ad47 100644 (file)
@@ -105,11 +105,12 @@ h3 {font-size:14px;}
 #plugintable, #about #plugintable td {border:1px solid #919B9C;}\r
 #plugintable {width:96%; margin-top:10px;}\r
 #pluginscontainer {height:290px; overflow:auto;}\r
-#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;}\r
+#colorpicker #preview {display:inline-block; padding-left:40px; height:14px; border:1px solid black; margin-left:5px; margin-right: 5px}\r
+#colorpicker #previewblock {position: relative; top: -3px; padding-left:5px; padding-top: 0px; display:inline}\r
+#colorpicker #preview_wrapper { text-align:center; padding-top:4px; white-space: nowrap}\r
 #colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}\r
 #colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}\r
 #colorpicker #light div {overflow:hidden;}\r
-#colorpicker #previewblock {float:right; padding-left:10px; height:20px;}\r
 #colorpicker .panel_wrapper div.current {height:175px;}\r
 #colorpicker #namedcolors {width:150px;}\r
 #colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}\r
index 12cfb419bbf2fb87f845731aa0fceb653d0dbf88..13a5cb03097c004f7b37658654a9250748cf073c 100644 (file)
Binary files a/program/js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png and b/program/js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png differ
index 8996c7493e8a58c9c40845cbe8abdc3e6730716d..7fc57f2bc2d63a3ad6fbf98b663f336539f011ec 100644 (file)
Binary files a/program/js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png and b/program/js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png differ
index bd5d2550c06d83c1141b78c5af7217e89559fc32..c0dcc6cac2003f7405fff3ea5df7bcf276243596 100644 (file)
Binary files a/program/js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png and b/program/js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png differ
index df596bf781ef3507227e960bd14f8fce6537f833..a310223719a3a8c660c82a7984c0e7b9bfe801d9 100644 (file)
 .o2k7Skin .mceSeparator {display:block; background:url(img/button_bg.png) -22px 0; width:5px; height:22px}\r
 \r
 /* ListBox */\r
-.o2k7Skin .mceListBox {margin-left:3px}\r
+.o2k7Skin .mceListBox  {padding-left: 3px}\r
 .o2k7Skin .mceListBox, .o2k7Skin .mceListBox a {display:block}\r
 .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}\r
 .o2k7Skin .mceListBox .mceOpen {width:14px; height:22px; background:url(img/button_bg.png) -66px 0}\r
 .o2k7Skin table.mceListBoxEnabled:hover .mceText, .o2k7Skin .mceListBoxHover .mceText, .o2k7Skin .mceListBoxSelected .mceText {background:#FFF}\r
 .o2k7Skin table.mceListBoxEnabled:hover .mceOpen, .o2k7Skin .mceListBoxHover .mceOpen, .o2k7Skin .mceListBoxSelected .mceOpen {background-position:-66px -22px}\r
 .o2k7Skin .mceListBoxDisabled .mceText {color:gray}\r
-.o2k7Skin .mceListBoxMenu {overflow:auto; overflow-x:hidden}\r
+.o2k7Skin .mceListBoxMenu {overflow:auto; overflow-x:hidden; margin-left:3px}\r
 .o2k7Skin .mceOldBoxModel .mceListBox .mceText {height:22px}\r
 .o2k7Skin select.mceListBox {font-family:Tahoma,Verdana,Arial,Helvetica; font-size:12px; border:1px solid #b3c7e1; background:#FFF;}\r
 \r
@@ -86,7 +86,7 @@
 .o2k7Skin .mce_forecolor span.mceAction, .o2k7Skin .mce_backcolor span.mceAction {height:15px;overflow:hidden}\r
 \r
 /* Menu */\r
-.o2k7Skin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #ABC6DD}\r
+.o2k7Skin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #ABC6DD; direction:ltr}\r
 .o2k7Skin .mceNoIcons span.mceIcon {width:0;}\r
 .o2k7Skin .mceNoIcons a .mceText {padding-left:10px}\r
 .o2k7Skin .mceMenu table {background:#FFF}\r
 .o2k7Skin .mceNoIcons .mceMenuItemSelected a {background:url(../default/img/menu_arrow.gif) no-repeat -6px center}\r
 .o2k7Skin .mceMenu span.mceMenuLine {display:none}\r
 .o2k7Skin .mceMenuItemSub a {background:url(../default/img/menu_arrow.gif) no-repeat top right;}\r
+.o2k7Skin .mceMenuItem td, .o2k7Skin .mceMenuItem th {line-height: normal}\r
 \r
 /* Progress,Resize */\r
 .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}\r
 .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}\r
 \r
+/* Rtl */\r
+.mceRtl .mceListBox .mceText {text-align: right; padding: 0 4px 0 0}\r
+.mceRtl .mceMenuItem .mceText {text-align: right}\r
+\r
 /* Formats */\r
 .o2k7Skin .mce_formatPreview a {font-size:10px}\r
 .o2k7Skin .mce_p span.mceText {}\r
 .o2k7Skin span.mce_pagebreak {background-position:0 -40px}\r
 .o2k7Skin span.mce_restoredraft {background-position:-20px -40px}\r
 .o2k7Skin span.mce_spellchecker {background-position:-540px -20px}\r
+.o2k7Skin span.mce_visualblocks {background-position: -40px -40px}\r
index 3c6d65808a854b73e184ba7ec9a67a0790e501ff..dd973fcc0517b2f6e92914c9a8da2211d356f4c4 100644 (file)
@@ -4,7 +4,7 @@
        <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
        <script type="text/javascript" src="js/source_editor.js"></script>\r
 </head>\r
-<body onresize="resizeInputs();" style="display:none; overflow:hidden;">\r
+<body onresize="resizeInputs();" style="display:none; overflow:hidden;" spellcheck="false">\r
        <form name="source" onsubmit="saveContent();return false;" action="#">\r
                <div style="float: left" class="title"><label for="htmlSource">{#advanced_dlg.code_title}</label></div>\r
 \r
index 16af141ff0eea376a889b1e8d28e9c1cacaaab16..6fcbcb5dedf16a5fa1d15c2aa127bceb612f1e71 100644 (file)
Binary files a/program/js/tiny_mce/themes/simple/img/icons.gif and b/program/js/tiny_mce/themes/simple/img/icons.gif differ
diff --git a/program/js/tiny_mce/themes/simple/langs/ar.js b/program/js/tiny_mce/themes/simple/langs/ar.js
new file mode 100644 (file)
index 0000000..f16c580
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..3523e1f
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..6aca15a
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..eba13f2
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..65358cc
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..aa6ce90
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..7b4c143
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..1be2fd6
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..473b436
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..92de7a7
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..59bf788
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..c7554b8
--- /dev/null
@@ -0,0 +1 @@
+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
index 9f08f102fb8996fd738724e0a04994842aac2e7d..088ed0fcbed55cfd09b49109263868e5fb7961d8 100644 (file)
@@ -1,11 +1 @@
-tinyMCE.addI18n('en.simple',{\r
-bold_desc:"Bold (Ctrl+B)",\r
-italic_desc:"Italic (Ctrl+I)",\r
-underline_desc:"Underline (Ctrl+U)",\r
-striketrough_desc:"Strikethrough",\r
-bullist_desc:"Unordered list",\r
-numlist_desc:"Ordered list",\r
-undo_desc:"Undo (Ctrl+Z)",\r
-redo_desc:"Redo (Ctrl+Y)",\r
-cleanup_desc:"Cleanup messy code"\r
-});
\ No newline at end of file
+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
new file mode 100644 (file)
index 0000000..1d59bd9
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..0fc0311
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..ec105a5
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..0b78f7c
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..7351bb2
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..6ca1d8d
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..ebe964e
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..bc7d205
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..ade41a1
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..88c14c5
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..38c59b0
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..169722a
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..f31febe
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..ef37c5e
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..f4023f8
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..e0c45ed
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..b3acbb5
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..5932df8
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..6012a71
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..97d45a6
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..12f7db2
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..c2a28df
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..e097ab0
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..178bae8
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..9f105d5
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..8b81334
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..e48d5df
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..4070f09
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..955201d
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..3e3ef32
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..44970b2
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..8f02c36
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..76a87f8
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..5bd108b
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..3b01cd6
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..0e17e5b
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..4824f58
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..941af17
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..241d1ee
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..01e4585
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..b016c9a
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..a22b4bf
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..6e0c695
--- /dev/null
@@ -0,0 +1 @@
+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
new file mode 100644 (file)
index 0000000..1629934
--- /dev/null
@@ -0,0 +1 @@
+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
index 40342b996f3deb92762a8cafcfe201bddeaa31f5..af5a802934395a0ca172b4be7d2a9dc9df1c0b78 100644 (file)
@@ -1 +1 @@
-(function(d){var a=/^\s*|\s*$/g,e,c="B".replace(/A(.)|B/,"$1")==="$1";var b={majorVersion:"3",minorVersion:"4.2",releaseDate:"2011-04-07",_init:function(){var s=this,q=document,o=navigator,g=o.userAgent,m,f,l,k,j,r;s.isOpera=d.opera&&opera.buildNumber;s.isWebKit=/WebKit/.test(g);s.isIE=!s.isWebKit&&!s.isOpera&&(/MSIE/gi).test(g)&&(/Explorer/gi).test(o.appName);s.isIE6=s.isIE&&/MSIE [56]/.test(g);s.isGecko=!s.isWebKit&&/Gecko/.test(g);s.isMac=g.indexOf("Mac")!=-1;s.isAir=/adobeair/i.test(g);s.isIDevice=/(iPad|iPhone)/.test(g);if(d.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++){if(r=f[m].href){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!==e}if(f=="array"&&(g.hasOwnProperty&&g instanceof Array)){return true}return typeof(g)==f},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!==e){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=[];b.each(g,function(f){i.push(h(f))});return i},grep:function(g,h){var i=[];b.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(k,j){var h,g,f=arguments;for(h=1,g=f.length;h<g;h++){j=f[h];b.each(j,function(i,l){if(i!==e){k[l]=i}})}return k},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]}b.each(i,function(k,f){if(h.call(g,k,f,j)===false){return false}b.walk(k,h,j,g)})}},createNS:function(j,h){var g,f;h=h||d;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||d;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;j={func:j,scope:i||this};if(!h.unloads){function g(){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(d.detachEvent){d.detachEvent("onbeforeunload",k);d.detachEvent("onunload",g)}else{if(d.removeEventListener){d.removeEventListener("unload",g,false)}}h.unloads=l=f=w=g=0;if(d.CollectGarbage){CollectGarbage()}}}function k(){var l=document;if(l.readyState=="interactive"){function f(){l.detachEvent("onstop",f);if(g){g()}l=0}if(l){l.attachEvent("onstop",f)}d.setTimeout(function(){if(l){l.detachEvent("onstop",f)}},0)}}if(d.attachEvent){d.attachEvent("onunload",g);d.attachEvent("onbeforeunload",k)}else{if(d.addEventListener){d.addEventListener("unload",g,false)}}h.unloads=[j]}else{h.unloads.push(j)}return j},removeUnload:function(i){var g=this.unloads,h=null;b.each(g,function(j,f){if(j&&j.func==i){g.splice(f,1);h=i;return false}});return h},explode:function(f,g){return f?b.map(f.split(g||","),b.trim):f},_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(c){return g.replace(h,function(){var l=f,j=arguments,k;for(k=0;k<j.length-2;k++){if(j[k]===e){l=l.replace(new RegExp("\\$"+k,"g"),"")}else{l=l.replace(new RegExp("\\$"+k,"g"),j[k])}}return l})}return g.replace(h,f)}};b._init();d.tinymce=d.tinyMCE=b})(window);tinymce.create("tinymce.util.Dispatcher",{scope:null,listeners:null,Dispatcher:function(a){this.scope=a||this;this.listeners=[]},add:function(a,b){this.listeners.push({cb:a,scope:b||this.scope});return a},addToTop:function(a,b){this.listeners.unshift({cb:a,scope:b||this.scope});return a},remove:function(a){var b=this.listeners,c=null;tinymce.each(b,function(e,d){if(a==e.cb){c=a;b.splice(d,1);return false}});return c},dispatch:function(){var f,d=arguments,e,b=this.listeners,g;for(e=0;e<b.length;e++){g=b[e];f=g.cb.apply(g.scope,d);if(f===false){break}}return f}});(function(){var a=tinymce.each;tinymce.create("tinymce.util.URI",{URI:function(e,g){var f=this,h,d,c;e=tinymce.trim(e);g=f.settings=g||{};if(/^(mailto|tel|news|javascript|about|data):/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)){e=(g.base_uri.protocol||"http")+"://mce_host"+f.toAbsPath(g.base_uri.path,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});if(c=g.base_uri){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 c=this,d;if(b==="./"){return b}b=new tinymce.util.URI(b,{base_uri:c});if((b.host!="mce_host"&&c.host!=b.host&&b.host)||c.port!=b.port||c.protocol!=b.protocol){return b.getURI()}d=c.toRelPath(c.path,b.path);if(b.query){d+="?"+b.query}if(b.anchor){d+="#"+b.anchor}return d},toAbsolute:function(b,c){var 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(e,b){var c=new Date();c.setTime(c.getTime()-1000);this.set(e,"",c,b,c)}})})();(function(){function serialize(o,quote){var i,v,t;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&&o instanceof Array){for(i=0,v="[";i<o.length;i++){v+=(i>0?",":"")+serialize(o[i],quote)}return v+"]"}v="{";for(i in o){v+=typeof o[i]!="function"?(v.length>1?","+quote:quote)+i+quote+":"+serialize(o[i],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;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);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)}}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(j){var a,g,d,k=/[&\"\u007E-\uD7FF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,b=/[<>&\u007E-\uD7FF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,f=/[<>&\"\']/g,c=/&(#)?([\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);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="\\\" \\' \\; \\: ; : _".split(" ");for(g=0;g<j.length;g++){a[j[g]]="_"+g;a["_"+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(r){var y={},p,n,v,q,u=d.url_converter,x=d.url_converter_scope||this;function o(C,F){var E,B,A,D;E=y[C+"-top"+F];if(!E){return}B=y[C+"-right"+F];if(E!=B){return}A=y[C+"-bottom"+F];if(B!=A){return}D=y[C+"-left"+F];if(A!=D){return}y[C+F]=D;delete y[C+"-top"+F];delete y[C+"-right"+F];delete y[C+"-bottom"+F];delete y[C+"-left"+F]}function t(B){var C=y[B],A;if(!C||C.indexOf(" ")<0){return}C=C.split(" ");A=C.length;while(A--){if(C[A]!==C[0]){return false}}y[B]=C[0];return true}function z(C,B,A,D){if(!t(B)){return}if(!t(A)){return}if(!t(D)){return}y[C]=y[B]+" "+y[A]+" "+y[D];delete y[B];delete y[A];delete y[D]}function s(A){q=true;return a[A]}function i(B,A){if(q){B=B.replace(/_[0-9]/g,function(C){return a[C]})}if(!A){B=B.replace(/\\([\'\";:])/g,"$1")}return B}if(r){r=r.replace(/\\[\"\';:_]/g,s).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(A){return A.replace(/[;:]/g,s)});while(p=b.exec(r)){n=p[1].replace(l,"").toLowerCase();v=p[2].replace(l,"");if(n&&v.length>0){if(n==="font-weight"&&v==="700"){v="bold"}else{if(n==="color"||n==="background-color"){v=v.toLowerCase()}}v=v.replace(k,c);v=v.replace(h,function(B,A,E,D,F,C){F=F||C;if(F){F=i(F);return"'"+F.replace(/\'/g,"\\'")+"'"}A=i(A||E||D);if(u){A=u.call(x,A,"style")}return"url('"+A.replace(/\'/g,"\\'")+"')"});y[n]=q?i(v,true):v}b.lastIndex=p.index+p[0].length}o("border","");o("border","-width");o("border","-color");o("border","-style");o("padding","");o("margin","");z("border","border-width","border-style","border-color");if(y.border==="medium none"){delete y.border}}return y},serialize:function(p,r){var o="",n,q;function i(t){var x,u,s,t,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(n)}else{for(n in p){q=p[n];if(q!==e&&q.length>0){o+=(o.length>0?" ":"")+n+": "+q+";"}}}return o}}};(function(l){var g={},i,k,f,d,b,e,c=l.makeMap,j=l.each;function h(n,m){return n.split(m||",")}function a(q,p){var n,o={};function m(r){return r.replace(/[A-Z]+/g,function(s){return m(q[s])})}for(n in q){if(q.hasOwnProperty(n)){q[n]=m(q[n])}}m(p).replace(/#/g,"#text").replace(/(\w+)\[([^\]]+)\]\[([^\]]*)\]/g,function(u,s,r,t){r=h(r,"|");o[s]={attributes:c(r),attributesOrder:r,children:c(t,"|",{"#comment":{}})}});return o}k="h1,h2,h3,h4,h5,h6,hr,p,div,address,pre,form,table,tbody,thead,tfoot,th,tr,td,li,ol,ul,caption,blockquote,center,dl,dt,dd,dir,fieldset,noscript,menu,isindex,samp,header,footer,article,section,hgroup";k=c(k,",",c(k.toUpperCase()));g=a({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]");i=c("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected,preload,autoplay,loop,controls");f=c("area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed,source");d=l.extend(c("td,th,iframe,video,object"),f);b=c("pre,script,style");e=c("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr");l.html.Schema=function(p){var x=this,m={},n={},u=[],o;p=p||{};if(p.verify_html===false){p.valid_elements="*[*]"}if(p.valid_styles){o={};j(p.valid_styles,function(z,y){o[y]=l.explode(z)})}function v(y){return new RegExp("^"+y.replace(/([?+*])/g,".$1")+"$")}function r(F){var E,A,T,P,U,z,C,O,R,K,S,W,I,D,Q,y,M,B,V,X,J,N,H=/^([#+-])?([^\[\/]+)(?:\/([^\[]+))?(?:\[([^\]]+)\])?$/,L=/^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,G=/[*?+]/;if(F){F=h(F);if(m["@"]){M=m["@"].attributes;B=m["@"].attributesOrder}for(E=0,A=F.length;E<A;E++){z=H.exec(F[E]);if(z){Q=z[1];K=z[2];y=z[3];R=z[4];I={};D=[];C={attributes:I,attributesOrder:D};if(Q==="#"){C.paddEmpty=true}if(Q==="-"){C.removeEmpty=true}if(M){for(X in M){I[X]=M[X]}D.push.apply(D,B)}if(R){R=h(R,"|");for(T=0,P=R.length;T<P;T++){z=L.exec(R[T]);if(z){O={};W=z[1];S=z[2].replace(/::/g,":");Q=z[3];N=z[4];if(W==="!"){C.attributesRequired=C.attributesRequired||[];C.attributesRequired.push(S);O.required=true}if(W==="-"){delete I[S];D.splice(l.inArray(D,S),1);continue}if(Q){if(Q==="="){C.attributesDefault=C.attributesDefault||[];C.attributesDefault.push({name:S,value:N});O.defaultValue=N}if(Q===":"){C.attributesForced=C.attributesForced||[];C.attributesForced.push({name:S,value:N});O.forcedValue=N}if(Q==="<"){O.validValues=c(N,"?")}}if(G.test(S)){C.attributePatterns=C.attributePatterns||[];O.pattern=v(S);C.attributePatterns.push(O)}else{if(!I[S]){D.push(S)}I[S]=O}}}}if(!M&&K=="@"){M=I;B=D}if(y){C.outputName=K;m[y]=C}if(G.test(K)){C.pattern=v(K);u.push(C)}else{m[K]=C}}}}}function t(y){m={};u=[];r(y);j(g,function(A,z){n[z]=A.children})}function q(z){var y=/^(~)?(.+)$/;if(z){j(h(z),function(C){var B=y.exec(C),D=B[1]==="~"?"span":"div",A=B[2];n[A]=n[D];j(n,function(E,F){if(E[D]){E[A]=E[D]}})})}}function s(z){var y=/^([+\-]?)(\w+)\[([^\]]+)\]$/;if(z){j(h(z),function(D){var C=y.exec(D),A,B;if(C){B=C[1];if(B){A=n[C[2]]}else{A=n[C[2]]={"#comment":{}}}A=n[C[2]];j(h(C[3],"|"),function(E){if(B==="-"){delete A[E]}else{A[E]={}}})}})}}if(!p.valid_elements){j(g,function(z,y){m[y]={attributes:z.attributes,attributesOrder:z.attributesOrder};n[y]=z.children});j(h("strong/b,em/i"),function(y){y=h(y,"/");m[y[1]].outputName=y[0]});m.img.attributesDefault=[{name:"alt",value:""}];j(h("ol,ul,li,sub,sup,blockquote,tr,div,span,font,a,table,tbody"),function(y){m[y].removeEmpty=true});j(h("p,h1,h2,h3,h4,h5,h6,th,td,pre,div,address,caption"),function(y){m[y].paddEmpty=true})}else{t(p.valid_elements)}q(p.custom_elements);s(p.valid_children);r(p.extended_valid_elements);s("+ol[ul|ol],+ul[ul|ol]");if(p.invalid_elements){l.each(l.explode(p.invalid_elements),function(y){if(m[y]){delete m[y]}})}x.children=n;x.styles=o;x.getBoolAttrs=function(){return i};x.getBlockElements=function(){return k};x.getShortEndedElements=function(){return f};x.getSelfClosingElements=function(){return e};x.getNonEmptyElements=function(){return d};x.getWhiteSpaceElements=function(){return b};x.isValidChild=function(y,A){var z=n[y];return !!(z&&z[A])};x.getElementRule=function(y){var A=m[y],z;if(A){return A}z=u.length;while(z--){A=u[z];if(A.pattern.test(y)){return A}}};x.addValidElements=r;x.setValidElements=t;x.addCustomElements=q;x.addValidChildren=s};l.html.Schema.boolAttrMap=i;l.html.Schema.blockElementsMap=k})(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(q){var A=this,f,m=0,G,j,l=[],B,K,t,N,F,k,p,x,I,r,E,o,J,n,H,M,L,z,D,h,g,u,s=0,v=a.html.Entities.decode,y;function C(O){var Q,P;Q=l.length;while(Q--){if(l[Q].name===O){break}}if(Q>=0){for(P=l.length-1;P>=Q;P--){O=l[P];if(O.valid){A.end(O.name)}}l.length=Q}}D=new RegExp("<(?:(?:!--([\\w\\W]*?)-->)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([^>]+)>)|(?:([^\\s\\/<>]+)\\s*((?:[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*)>))","g");h=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:\\.|[^\"])*)\")|(?:\'((?:\\.|[^\'])*)\')|([^>\s]+)))?/g;g={script:/<\/script[^>]*>/gi,style:/<\/style[^>]*>/gi,noscript:/<\/noscript[^>]*>/gi};F=e.getShortEndedElements();z=e.getSelfClosingElements();k=e.getBoolAttrs();x=c.validate;y=c.fix_self_closing;while(f=D.exec(q)){if(m<f.index){A.text(v(q.substr(m,f.index-m)))}if(G=f[6]){C(G.toLowerCase())}else{if(G=f[7]){G=G.toLowerCase();p=G in F;if(y&&z[G]&&l.length>0&&l[l.length-1].name===G){C(G)}if(!x||(I=e.getElementRule(G))){r=true;if(x){J=I.attributes;n=I.attributePatterns}if(o=f[8]){B=[];B.map={};o.replace(h,function(P,O,T,S,R){var U,Q;O=O.toLowerCase();T=O in k?O:v(T||S||R||"");if(x&&O.indexOf("data-")!==0){U=J[O];if(!U&&n){Q=n.length;while(Q--){U=n[Q];if(U.pattern.test(O)){break}}if(Q===-1){U=null}}if(!U){return}if(U.validValues&&!(T in U.validValues)){return}}B.map[O]=T;B.push({name:O,value:T})})}else{B=[];B.map={}}if(x){H=I.attributesRequired;M=I.attributesDefault;L=I.attributesForced;if(L){K=L.length;while(K--){E=L[K];N=E.name;u=E.value;if(u==="{$uid}"){u="mce_"+s++}B.map[N]=u;B.push({name:N,value:u})}}if(M){K=M.length;while(K--){E=M[K];N=E.name;if(!(N in B.map)){u=E.value;if(u==="{$uid}"){u="mce_"+s++}B.map[N]=u;B.push({name:N,value:u})}}}if(H){K=H.length;while(K--){if(H[K] in B.map){break}}if(K===-1){r=false}}if(B.map["data-mce-bogus"]){r=false}}if(r){A.start(G,B,p)}}else{r=false}if(j=g[G]){j.lastIndex=m=f.index+f[0].length;if(f=j.exec(q)){if(r){t=q.substr(m,f.index-m)}m=f.index+f[0].length}else{t=q.substr(m);m=q.length}if(r&&t.length>0){A.text(t,true)}if(r){A.end(G)}D.lastIndex=m;continue}if(!p){if(!o||o.indexOf("/")!=o.length-1){l.push({name:G,valid:r})}else{if(r){A.end(G)}}}}else{if(G=f[1]){A.comment(G)}else{if(G=f[2]){A.cdata(G)}else{if(G=f[3]){A.doctype(G)}else{if(G=f[4]){A.pi(G,f[5])}}}}}}m=f.index+f[0].length}if(m<q.length){A.text(v(q.substr(m)))}for(K=l.length-1;K>=0;K--){G=l[K];if(G.valid){A.end(G.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-")===0){return false}}}if((j.type===3&&!c.test(j.value))){return false}}while(j=a(j,f))}return true}});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(m){var o,p,x,v,z,n,q,l,t,u,k,s,y,r;s=b.makeMap("tr,td,th,tbody,thead,tfoot,table");k=h.getNonEmptyElements();for(o=0;o<m.length;o++){p=m[o];if(!p.parent){continue}v=[p];for(x=p.parent;x&&!h.isValidChild(x.name,p.name)&&!s[x.name];x=x.parent){v.push(x)}if(x&&v.length>1){v.reverse();z=n=f.filterNode(v[0].clone());for(t=0;t<v.length-1;t++){if(h.isValidChild(n.name,v[t].name)){q=f.filterNode(v[t].clone());n.append(q)}else{q=n}for(l=v[t].firstChild;l&&l!=v[t+1];){r=l.next;q.append(l);l=r}n=q}if(!z.isEmpty(k)){x.insert(z,v[0],true);x.insert(p,z)}else{x.insert(p,v[0],true)}x=v[0];if(x.isEmpty(k)||x.firstChild===x.lastChild&&x.firstChild.name==="br"){x.empty().remove()}}else{if(p.parent){if(p.name==="li"){y=p.prev;if(y&&(y.name==="ul"||y.name==="ul")){y.append(p);continue}y=p.next;if(y&&(y.name==="ul"||y.name==="ul")){y.insert(p,y.firstChild,true);continue}p.wrap(f.filterNode(new a("ul",1)));continue}if(h.isValidChild(p.parent.name,"div")&&h.isValidChild("div",p.name)){p.wrap(f.filterNode(new a("div",1)))}else{if(p.name==="style"||p.name==="script"){p.empty().remove()}else{p.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(u,m){var n,F,z,y,B,A,v,q,D,I,x,o,C,H=[],s,k,r,p,t;m=m||{};i={};c={};o=b.extend(b.makeMap("script,style,head,html,body,title,meta,param"),h.getBlockElements());t=h.getNonEmptyElements();p=h.children;x=g.validate;r=h.getWhiteSpaceElements();C=/^[ \t\r\n]+/;s=/[ \t\r\n]+$/;k=/[ \t\r\n]+/g;function G(l,J){var K=new a(l,J),L;if(l in e){L=i[l];if(L){L.push(K)}else{i[l]=[K]}}return K}function E(K){var L,l,J;for(L=K.prev;L&&L.type===3;){l=L.value.replace(s,"");if(l.length>0){L.value=l;L=L.prev}else{J=L.prev;L.remove();L=J}}}n=new b.html.SaxParser({validate:x,fix_self_closing:!x,cdata:function(l){z.append(G("#cdata",4)).value=l},text:function(K,l){var J;if(!r[z.name]){K=K.replace(k," ");if(z.lastChild&&o[z.lastChild.name]){K=K.replace(C,"")}}if(K.length!==0){J=G("#text",3);J.raw=!!l;z.append(J).value=K}},comment:function(l){z.append(G("#comment",8)).value=l},pi:function(l,J){z.append(G(l,7)).value=J;E(z)},doctype:function(J){var l;l=z.append(G("#doctype",10));l.value=J;E(z)},start:function(l,R,K){var P,M,L,J,N,S,Q,O;L=x?h.getElementRule(l):{};if(L){P=G(L.outputName||l,1);P.attributes=R;P.shortEnded=K;z.append(P);O=p[z.name];if(O&&p[P.name]&&!O[P.name]){H.push(P)}M=d.length;while(M--){N=d[M].name;if(N in R.map){D=c[N];if(D){D.push(P)}else{c[N]=[P]}}}if(o[l]){E(P)}if(!K){z=P}}},end:function(l){var N,K,M,J,L;K=x?h.getElementRule(l):{};if(K){if(o[l]){if(!r[z.name]){for(N=z.firstChild;N&&N.type===3;){M=N.value.replace(C,"");if(M.length>0){N.value=M;N=N.next}else{J=N.next;N.remove();N=J}}for(N=z.lastChild;N&&N.type===3;){M=N.value.replace(s,"");if(M.length>0){N.value=M;N=N.prev}else{J=N.prev;N.remove();N=J}}}N=z.prev;if(N&&N.type===3){M=N.value.replace(C,"");if(M.length>0){N.value=M}else{N.remove()}}}if(K.removeEmpty||K.paddEmpty){if(z.isEmpty(t)){if(K.paddEmpty){z.empty().append(new a("#text","3")).value="\u00a0"}else{if(!z.attributes.map.name){L=z.parent;z.empty().remove();z=L;return}}}}z=z.parent}}},h);F=z=new a(g.root_name,11);n.parse(u);if(x){j(H)}for(I in i){D=e[I];y=i[I];v=y.length;while(v--){if(!y[v].parent){y.splice(v,1)}}for(B=0,A=D.length;B<A;B++){D[B](y,I,m)}}for(B=0,A=d.length;B<A;B++){D=d[B];if(D.name in c){y=c[D.name];v=y.length;while(v--){if(!y[v].parent){y.splice(v,1)}}for(v=0,q=D.callbacks.length;v<q;v++){D.callbacks[v](y,D.name,m)}}}return F};if(g.remove_trailing_brs){f.addNodeFilter("br",function(n,m){var r,q=n.length,o,u=h.getBlockElements(),k=h.getNonEmptyElements(),s,p,t;for(r=0;r<q;r++){o=n[r];s=o.parent;if(u[o.parent.name]&&o===s.lastChild){p=o.prev;while(p){t=p.name;if(t!=="span"||p.attr("data-mce-type")!=="bookmark"){if(t!=="br"){break}if(t==="br"){o=null;break}}p=p.prev}if(o){o.remove();if(s.isEmpty(k)){elementRule=h.getElementRule(s.name);if(elementRule.removeEmpty){s.remove()}else{if(elementRule.paddEmpty){s.empty().append(new b.html.Node("#text",3)).value="\u00a0"}}}}}}})}}})(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);(function(h){var f=h.each,e=h.is,d=h.isWebKit,b=h.isIE,c=h.html.Entities,a=/^([a-z0-9],?)+$/i,g=h.html.Schema.blockElementsMap,i=/^[ \t\r\n]*$/;h.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(n,l){var k=this,j;k.doc=n;k.win=window;k.files={};k.cssFlicker=false;k.counter=0;k.stdMode=!h.isIE||n.documentMode>=8;k.boxModel=!h.isIE||n.compatMode=="CSS1Compat"||k.stdMode;k.hasOuterHTML="outerHTML" in n.createElement("a");k.settings=l=h.extend({keep_values:false,hex_colors:1},l);k.schema=l.schema;k.styles=new h.html.Styles({url_converter:l.url_converter,url_converter_scope:l.url_converter_scope},l.schema);if(h.isIE6){try{n.execCommand("BackgroundImageCache",false,true)}catch(m){k.cssFlicker=true}}if(b){("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(o){n.createElement(o)})}h.addUnload(k.destroy,k)},getRoot:function(){var j=this,k=j.settings;return(k&&j.get(k.root_element))||j.doc.body},getViewPort:function(k){var l,j;k=!k?this.win:k;l=k.document;j=this.boxModel?l.documentElement:l.body;return{x:k.pageXOffset||j.scrollLeft,y:k.pageYOffset||j.scrollTop,w:k.innerWidth||j.clientWidth,h:k.innerHeight||j.clientHeight}},getRect:function(m){var l,j=this,k;m=j.get(m);l=j.getPos(m);k=j.getSize(m);return{x:l.x,y:l.y,w:k.w,h:k.h}},getSize:function(m){var k=this,j,l;m=k.get(m);j=k.getStyle(m,"width");l=k.getStyle(m,"height");if(j.indexOf("px")===-1){j=0}if(l.indexOf("px")===-1){l=0}return{w:parseInt(j)||m.offsetWidth||m.clientWidth,h:parseInt(l)||m.offsetHeight||m.clientHeight}},getParent:function(l,k,j){return this.getParents(l,k,j,false)},getParents:function(u,p,l,s){var k=this,j,m=k.settings,q=[];u=k.get(u);s=s===undefined;if(m.strict_root){l=l||k.getRoot()}if(e(p,"string")){j=p;if(p==="*"){p=function(o){return o.nodeType==1}}else{p=function(o){return k.is(o,j)}}}while(u){if(u==l||!u.nodeType||u.nodeType===9){break}if(!p||p(u)){if(s){q.push(u)}else{return u}}u=u.parentNode}return s?q:null},get:function(j){var k;if(j&&this.doc&&typeof(j)=="string"){k=j;j=this.doc.getElementById(j);if(j&&j.id!==k){return this.doc.getElementsByName(k)[1]}}return j},getNext:function(k,j){return this._findSib(k,j,"nextSibling")},getPrev:function(k,j){return this._findSib(k,j,"previousSibling")},select:function(l,k){var j=this;return h.dom.Sizzle(l,j.get(k)||j.get(j.settings.root_element)||j.doc,[])},is:function(l,j){var k;if(l.length===undefined){if(j==="*"){return l.nodeType==1}if(a.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 h.dom.Sizzle.matches(j,l.nodeType?[l]:l).length>0},add:function(m,q,j,l,o){var k=this;return this.run(m,function(s){var r,n;r=e(q,"string")?k.doc.createElement(q):q;k.setAttribs(r,j);if(l){if(l.nodeType){r.appendChild(l)}else{k.setHTML(r,l)}}return !o?s.appendChild(r):r})},create:function(l,j,k){return this.add(this.doc.createElement(l),l,j,k,1)},createHTML:function(r,j,p){var q="",m=this,l;q+="<"+r;for(l in j){if(j.hasOwnProperty(l)){q+=" "+l+'="'+m.encode(j[l])+'"'}}if(typeof(p)!="undefined"){return q+">"+p+"</"+r+">"}return q+" />"},remove:function(j,k){return this.run(j,function(m){var n,l=m.parentNode;if(!l){return null}if(k){while(n=m.firstChild){if(!h.isIE||n.nodeType!==3||n.nodeValue){l.insertBefore(n,m)}else{m.removeChild(n)}}}return l.removeChild(m)})},setStyle:function(m,j,k){var l=this;return l.run(m,function(p){var o,n;o=p.style;j=j.replace(/-(\D)/g,function(r,q){return q.toUpperCase()});if(l.pixelStyles.test(j)&&(h.is(k,"number")||/^[\-0-9\.]+$/.test(k))){k+="px"}switch(j){case"opacity":if(b){o.filter=k===""?"":"alpha(opacity="+(k*100)+")";if(!m.currentStyle||!m.currentStyle.hasLayout){o.display="inline-block"}}o[j]=o["-moz-opacity"]=o["-khtml-opacity"]=k||"";break;case"float":b?o.styleFloat=k:o.cssFloat=k;break;default:o[j]=k||""}if(l.settings.update_styles){l.setAttrib(p,"data-mce-style")}})},getStyle:function(m,j,l){m=this.get(m);if(!m){return}if(this.doc.defaultView&&l){j=j.replace(/[A-Z]/g,function(n){return"-"+n});try{return this.doc.defaultView.getComputedStyle(m,null).getPropertyValue(j)}catch(k){return null}}j=j.replace(/-(\D)/g,function(o,n){return n.toUpperCase()});if(j=="float"){j=b?"styleFloat":"cssFloat"}if(m.currentStyle&&l){return m.currentStyle[j]}return m.style?m.style[j]:undefined},setStyles:function(m,n){var k=this,l=k.settings,j;j=l.update_styles;l.update_styles=0;f(n,function(o,p){k.setStyle(m,p,o)});l.update_styles=j;if(l.update_styles){k.setAttrib(m,l.cssText)}},removeAllAttribs:function(j){return this.run(j,function(m){var l,k=m.attributes;for(l=k.length-1;l>=0;l--){m.removeAttributeNode(k.item(l))}})},setAttrib:function(l,m,j){var k=this;if(!l||!m){return}if(k.settings.strict){m=m.toLowerCase()}return this.run(l,function(o){var n=k.settings;switch(m){case"style":if(!e(j,"string")){f(j,function(p,q){k.setStyle(o,q,p)});return}if(n.keep_values){if(j&&!k._isRes(j)){o.setAttribute("data-mce-style",j,2)}else{o.removeAttribute("data-mce-style",2)}}o.style.cssText=j;break;case"class":o.className=j||"";break;case"src":case"href":if(n.keep_values){if(n.url_converter){j=n.url_converter.call(n.url_converter_scope||k,j,m,o)}k.setAttrib(o,"data-mce-"+m,j,2)}break;case"shape":o.setAttribute("data-mce-style",j);break}if(e(j)&&j!==null&&j.length!==0){o.setAttribute(m,""+j,2)}else{o.removeAttribute(m,2)}})},setAttribs:function(k,l){var j=this;return this.run(k,function(m){f(l,function(o,p){j.setAttrib(m,p,o)})})},getAttrib:function(m,o,l){var j,k=this;m=k.get(m);if(!m||m.nodeType!==1){return false}if(!e(l)){l=""}if(/^(src|href|style|coords|shape)$/.test(o)){j=m.getAttribute("data-mce-"+o);if(j){return j}}if(b&&k.props[o]){j=m[k.props[o]];j=j&&j.nodeValue?j.nodeValue:j}if(!j){j=m.getAttribute(o,2)}if(/^(checked|compact|declare|defer|disabled|ismap|multiple|nohref|noshade|nowrap|readonly|selected)$/.test(o)){if(m[k.props[o]]===true&&j===""){return o}return j?o:""}if(m.nodeName==="FORM"&&m.getAttributeNode(o)){return m.getAttributeNode(o).nodeValue}if(o==="style"){j=j||m.style.cssText;if(j){j=k.serializeStyle(k.parseStyle(j),m.nodeName);if(k.settings.keep_values&&!k._isRes(j)){m.setAttribute("data-mce-style",j)}}}if(d&&o==="class"&&j){j=j.replace(/(apple|webkit)\-[a-z\-]+/gi,"")}if(b){switch(o){case"rowspan":case"colspan":if(j===1){j=""}break;case"size":if(j==="+0"||j===20||j===0){j=""}break;case"width":case"height":case"vspace":case"checked":case"disabled":case"readonly":if(j===0){j=""}break;case"hspace":if(j===-1){j=""}break;case"maxlength":case"tabindex":if(j===32768||j===2147483647||j==="32768"){j=""}break;case"multiple":case"compact":case"noshade":case"nowrap":if(j===65535){return o}return l;case"shape":j=j.toLowerCase();break;default:if(o.indexOf("on")===0&&j){j=h._replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/,"$1",""+j)}}}return(j!==undefined&&j!==null&&j!=="")?""+j:l},getPos:function(s,m){var k=this,j=0,q=0,o,p=k.doc,l;s=k.get(s);m=m||p.body;if(s){if(b&&!k.stdMode){s=s.getBoundingClientRect();o=k.boxModel?p.documentElement:p.body;j=k.getStyle(k.select("html")[0],"borderWidth");j=(j=="medium"||k.boxModel&&!k.isIE6)&&2||j;return{x:s.left+o.scrollLeft-j,y:s.top+o.scrollTop-j}}l=s;while(l&&l!=m&&l.nodeType){j+=l.offsetLeft||0;q+=l.offsetTop||0;l=l.offsetParent}l=s.parentNode;while(l&&l!=m&&l.nodeType){j-=l.scrollLeft||0;q-=l.scrollTop||0;l=l.parentNode}}return{x:j,y:q}},parseStyle:function(j){return this.styles.parse(j)},serializeStyle:function(k,j){return this.styles.serialize(k,j)},loadCSS:function(j){var l=this,m=l.doc,k;if(!j){j=""}k=l.select("head")[0];f(j.split(","),function(n){var o;if(l.files[n]){return}l.files[n]=true;o=l.create("link",{rel:"stylesheet",href:h._addVer(n)});if(b&&m.documentMode&&m.recalc){o.onload=function(){if(m.recalc){m.recalc()}o.onload=null}}k.appendChild(o)})},addClass:function(j,k){return this.run(j,function(l){var m;if(!k){return 0}if(this.hasClass(l,k)){return l.className}m=this.removeClass(l,k);return l.className=(m!=""?(m+" "):"")+k})},removeClass:function(l,m){var j=this,k;return j.run(l,function(o){var n;if(j.hasClass(o,m)){if(!k){k=new RegExp("(^|\\s+)"+m+"(\\s+|$)","g")}n=o.className.replace(k," ");n=h.trim(n!=" "?n:"");o.className=n;if(!n){o.removeAttribute("class");o.removeAttribute("className")}return n}return o.className})},hasClass:function(k,j){k=this.get(k);if(!k||!j){return false}return(" "+k.className+" ").indexOf(" "+j+" ")!==-1},show:function(j){return this.setStyle(j,"display","block")},hide:function(j){return this.setStyle(j,"display","none")},isHidden:function(j){j=this.get(j);return !j||j.style.display=="none"||this.getStyle(j,"display")=="none"},uniqueId:function(j){return(!j?"mce_":j)+(this.counter++)},setHTML:function(l,k){var j=this;return j.run(l,function(n){if(b){while(n.firstChild){n.removeChild(n.firstChild)}try{n.innerHTML="<br />"+k;n.removeChild(n.firstChild)}catch(m){n=j.create("div");n.innerHTML="<br />"+k;f(n.childNodes,function(p,o){if(o){n.appendChild(p)}})}}else{n.innerHTML=k}return k})},getOuterHTML:function(l){var k,j=this;l=j.get(l);if(!l){return null}if(l.nodeType===1&&j.hasOuterHTML){return l.outerHTML}k=(l.ownerDocument||j.doc).createElement("body");k.appendChild(l.cloneNode(true));return k.innerHTML},setOuterHTML:function(m,k,n){var j=this;function l(p,o,r){var s,q;q=r.createElement("body");q.innerHTML=o;s=q.lastChild;while(s){j.insertAfter(s.cloneNode(true),p);s=s.previousSibling}j.remove(p)}return this.run(m,function(p){p=j.get(p);if(p.nodeType==1){n=n||p.ownerDocument||j.doc;if(b){try{if(b&&p.nodeType==1){p.outerHTML=k}else{l(p,k,n)}}catch(o){l(p,k,n)}}else{l(p,k,n)}}})},decode:c.decode,encode:c.encodeAllRaw,insertAfter:function(j,k){k=this.get(k);return this.run(j,function(m){var l,n;l=k.parentNode;n=k.nextSibling;if(n){l.insertBefore(m,n)}else{l.appendChild(m)}return m})},isBlock:function(k){var j=k.nodeType;if(j){return !!(j===1&&g[k.nodeName])}return !!g[k]},replace:function(p,m,j){var l=this;if(e(m,"array")){p=p.cloneNode(true)}return l.run(m,function(k){if(j){f(h.grep(k.childNodes),function(n){p.appendChild(n)})}return k.parentNode.replaceChild(p,k)})},rename:function(m,j){var l=this,k;if(m.nodeName!=j.toUpperCase()){k=l.create(j);f(l.getAttribs(m),function(n){l.setAttrib(k,n.nodeName,l.getAttrib(m,n.nodeName))});l.replace(k,m,1)}return k||m},findCommonAncestor:function(l,j){var m=l,k;while(m){k=j;while(k&&m!=k){k=k.parentNode}if(m==k){break}m=m.parentNode}if(!m&&l.ownerDocument){return l.ownerDocument.documentElement}return m},toHex:function(j){var l=/^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(j);function k(m){m=parseInt(m).toString(16);return m.length>1?m:"0"+m}if(l){j="#"+k(l[1])+k(l[2])+k(l[3]);return j}return j},getClasses:function(){var n=this,j=[],m,o={},p=n.settings.class_filter,l;if(n.classes){return n.classes}function q(r){f(r.imports,function(s){q(s)});f(r.cssRules||r.rules,function(s){switch(s.type||1){case 1:if(s.selectorText){f(s.selectorText.split(","),function(t){t=t.replace(/^\s*|\s*$|^\s\./g,"");if(/\.mce/.test(t)||!/\.[\w\-]+$/.test(t)){return}l=t;t=h._replace(/.*\.([a-z0-9_\-]+).*/i,"$1",t);if(p&&!(t=p(t,l))){return}if(!o[t]){j.push({"class":t});o[t]=1}})}break;case 3:q(s.styleSheet);break}})}try{f(n.doc.styleSheets,q)}catch(k){}if(j.length>0){n.classes=j}return j},run:function(m,l,k){var j=this,n;if(j.doc&&typeof(m)==="string"){m=j.get(m)}if(!m){return false}k=k||this;if(!m.nodeType&&(m.length||m.length===0)){n=[];f(m,function(p,o){if(p){if(typeof(p)=="string"){p=j.doc.getElementById(p)}n.push(l.call(k,p,o))}});return n}return l.call(k,m)},getAttribs:function(k){var j;k=this.get(k);if(!k){return[]}if(b){j=[];if(k.nodeName=="OBJECT"){return k.attributes}if(k.nodeName==="OPTION"&&this.getAttrib(k,"selected")){j.push({specified:1,nodeName:"selected"})}k.cloneNode(false).outerHTML.replace(/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi,"").replace(/[\w:\-]+/gi,function(l){j.push({specified:1,nodeName:l})});return j}return k.attributes},isEmpty:function(o,p){var k=this,m,j,n,q,l;o=o.firstChild;if(o){q=new h.dom.TreeWalker(o);p=p||k.schema?k.schema.getNonEmptyElements():null;do{n=o.nodeType;if(n===1){if(o.getAttribute("data-mce-bogus")){continue}if(p&&p[o.nodeName.toLowerCase()]){return false}j=k.getAttribs(o);m=o.attributes.length;while(m--){l=o.attributes[m].nodeName;if(l==="name"||l.indexOf("data-")===0){return false}}}if((n===3&&!i.test(o.nodeValue))){return false}}while(o=q.next())}return true},destroy:function(k){var j=this;if(j.events){j.events.destroy()}j.win=j.doc=j.root=j.events=null;if(!k){h.removeUnload(j.destroy)}},createRng:function(){var j=this.doc;return j.createRange?j.createRange():new h.dom.Range(this)},nodeIndex:function(o,p){var j=0,m,n,l,k;if(o){for(m=o.nodeType,o=o.previousSibling,n=o;o;o=o.previousSibling){l=o.nodeType;if(p&&l==3){k=false;try{k=o.nodeValue.length}catch(q){}if(l==m||!k){continue}}j++;m=l}}return j},split:function(n,m,q){var s=this,j=s.createRng(),o,l,p;function k(v){var t,r=v.childNodes,u=v.nodeType;if(u==1&&v.getAttribute("data-mce-type")=="bookmark"){return}for(t=r.length-1;t>=0;t--){k(r[t])}if(u!=9){if(u==3&&v.nodeValue.length>0){if(!s.isBlock(v.parentNode)||h.trim(v.nodeValue).length>0){return}}else{if(u==1){r=v.childNodes;if(r.length==1&&r[0]&&r[0].nodeType==1&&r[0].getAttribute("data-mce-type")=="bookmark"){v.parentNode.insertBefore(r[0],v)}if(r.length||/^(br|hr|input|img)$/i.test(v.nodeName)){return}}}s.remove(v)}return v}if(n&&m){j.setStart(n.parentNode,s.nodeIndex(n));j.setEnd(m.parentNode,s.nodeIndex(m));o=j.extractContents();j=s.createRng();j.setStart(m.parentNode,s.nodeIndex(m)+1);j.setEnd(n.parentNode,s.nodeIndex(n)+1);l=j.extractContents();p=n.parentNode;p.insertBefore(k(o),n);if(q){p.replaceChild(q,m)}else{p.insertBefore(m,n)}p.insertBefore(k(l),n);s.remove(n);return q||m}},bind:function(n,j,m,l){var k=this;if(!k.events){k.events=new h.dom.EventUtils()}return k.events.add(n,j,m,l||this)},unbind:function(m,j,l){var k=this;if(!k.events){k.events=new h.dom.EventUtils()}return k.events.remove(m,j,l)},_findSib:function(m,j,k){var l=this,n=j;if(m){if(e(n,"string")){n=function(o){return l.is(o,j)}}for(m=m[k];m;m=m[k]){if(n(m)){return m}}}return null},_isRes:function(j){return/^(top|left|bottom|right|width|height)/i.test(j)||/;\s*(top|left|bottom|right|width|height)/i.test(j)}});h.DOM=new h.dom.DOMUtils(document,{process_html:0})})(tinymce);(function(a){function b(c){var N=this,e=c.doc,S=0,E=1,j=2,D=true,R=false,U="startOffset",h="startContainer",P="endContainer",z="endOffset",k=tinymce.extend,n=c.nodeIndex;k(N,{startContainer:e,startOffset:0,endContainer:e,endOffset:0,collapsed:D,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:I,setEndBefore:J,setEndAfter:u,collapse:A,selectNode:x,selectNodeContents:F,compareBoundaryPoints:v,deleteContents:p,extractContents:H,cloneContents:d,insertNode:C,surroundContents:M,cloneRange:K});function q(V,t){B(D,V,t)}function s(V,t){B(R,V,t)}function g(t){q(t.parentNode,n(t))}function I(t){q(t.parentNode,n(t)+1)}function J(t){s(t.parentNode,n(t))}function u(t){s(t.parentNode,n(t)+1)}function A(t){if(t){N[P]=N[h];N[z]=N[U]}else{N[h]=N[P];N[U]=N[z]}N.collapsed=D}function x(t){g(t);u(t)}function F(t){q(t,0);s(t,t.nodeType===1?t.childNodes.length:t.nodeValue.length)}function v(Y,t){var ab=N[h],W=N[U],aa=N[P],V=N[z],Z=t.startContainer,ad=t.startOffset,X=t.endContainer,ac=t.endOffset;if(Y===0){return G(ab,W,Z,ad)}if(Y===1){return G(aa,V,Z,ad)}if(Y===2){return G(aa,V,X,ac)}if(Y===3){return G(ab,W,X,ac)}}function p(){m(j)}function H(){return m(S)}function d(){return m(E)}function C(Y){var V=this[h],t=this[U],X,W;if((V.nodeType===3||V.nodeType===4)&&V.nodeValue){if(!t){V.parentNode.insertBefore(Y,V)}else{if(t>=V.nodeValue.length){c.insertAfter(Y,V)}else{X=V.splitText(t);V.parentNode.insertBefore(Y,X)}}}else{if(V.childNodes.length>0){W=V.childNodes[t]}if(W){V.insertBefore(Y,W)}else{V.appendChild(Y)}}}function M(V){var t=N.extractContents();N.insertNode(V);V.appendChild(t);N.selectNode(V)}function K(){return k(new b(c),{startContainer:N[h],startOffset:N[U],endContainer:N[P],endOffset:N[z],collapsed:N.collapsed,commonAncestorContainer:N.commonAncestorContainer})}function O(t,V){var W;if(t.nodeType==3){return t}if(V<0){return t}W=t.firstChild;while(W&&V>0){--V;W=W.nextSibling}if(W){return W}return t}function l(){return(N[h]==N[P]&&N[U]==N[z])}function G(X,Z,V,Y){var aa,W,t,ab,ad,ac;if(X==V){if(Z==Y){return 0}if(Z<Y){return -1}return 1}aa=V;while(aa&&aa.parentNode!=X){aa=aa.parentNode}if(aa){W=0;t=X.firstChild;while(t!=aa&&W<Z){W++;t=t.nextSibling}if(Z<=W){return -1}return 1}aa=X;while(aa&&aa.parentNode!=V){aa=aa.parentNode}if(aa){W=0;t=V.firstChild;while(t!=aa&&W<Y){W++;t=t.nextSibling}if(W<Y){return -1}return 1}ab=c.findCommonAncestor(X,V);ad=X;while(ad&&ad.parentNode!=ab){ad=ad.parentNode}if(!ad){ad=ab}ac=V;while(ac&&ac.parentNode!=ab){ac=ac.parentNode}if(!ac){ac=ab}if(ad==ac){return 0}t=ab.firstChild;while(t){if(t==ad){return -1}if(t==ac){return 1}t=t.nextSibling}}function B(V,Y,X){var t,W;if(V){N[h]=Y;N[U]=X}else{N[P]=Y;N[z]=X}t=N[P];while(t.parentNode){t=t.parentNode}W=N[h];while(W.parentNode){W=W.parentNode}if(W==t){if(G(N[h],N[U],N[P],N[z])>0){N.collapse(V)}}else{N.collapse(V)}N.collapsed=l();N.commonAncestorContainer=c.findCommonAncestor(N[h],N[P])}function m(ab){var aa,X=0,ad=0,V,Z,W,Y,t,ac;if(N[h]==N[P]){return f(ab)}for(aa=N[P],V=aa.parentNode;V;aa=V,V=V.parentNode){if(V==N[h]){return r(aa,ab)}++X}for(aa=N[h],V=aa.parentNode;V;aa=V,V=V.parentNode){if(V==N[P]){return T(aa,ab)}++ad}Z=ad-X;W=N[h];while(Z>0){W=W.parentNode;Z--}Y=N[P];while(Z<0){Y=Y.parentNode;Z++}for(t=W.parentNode,ac=Y.parentNode;t!=ac;t=t.parentNode,ac=ac.parentNode){W=t;Y=ac}return o(W,Y,ab)}function f(Z){var ab,Y,X,aa,t,W,V;if(Z!=j){ab=e.createDocumentFragment()}if(N[U]==N[z]){return ab}if(N[h].nodeType==3){Y=N[h].nodeValue;X=Y.substring(N[U],N[z]);if(Z!=E){N[h].deleteData(N[U],N[z]-N[U]);N.collapse(D)}if(Z==j){return}ab.appendChild(e.createTextNode(X));return ab}aa=O(N[h],N[U]);t=N[z]-N[U];while(t>0){W=aa.nextSibling;V=y(aa,Z);if(ab){ab.appendChild(V)}--t;aa=W}if(Z!=E){N.collapse(D)}return ab}function r(ab,Y){var aa,Z,V,t,X,W;if(Y!=j){aa=e.createDocumentFragment()}Z=i(ab,Y);if(aa){aa.appendChild(Z)}V=n(ab);t=V-N[U];if(t<=0){if(Y!=E){N.setEndBefore(ab);N.collapse(R)}return aa}Z=ab.previousSibling;while(t>0){X=Z.previousSibling;W=y(Z,Y);if(aa){aa.insertBefore(W,aa.firstChild)}--t;Z=X}if(Y!=E){N.setEndBefore(ab);N.collapse(R)}return aa}function T(Z,Y){var ab,V,aa,t,X,W;if(Y!=j){ab=e.createDocumentFragment()}aa=Q(Z,Y);if(ab){ab.appendChild(aa)}V=n(Z);++V;t=N[z]-V;aa=Z.nextSibling;while(t>0){X=aa.nextSibling;W=y(aa,Y);if(ab){ab.appendChild(W)}--t;aa=X}if(Y!=E){N.setStartAfter(Z);N.collapse(D)}return ab}function o(Z,t,ac){var W,ae,Y,aa,ab,V,ad,X;if(ac!=j){ae=e.createDocumentFragment()}W=Q(Z,ac);if(ae){ae.appendChild(W)}Y=Z.parentNode;aa=n(Z);ab=n(t);++aa;V=ab-aa;ad=Z.nextSibling;while(V>0){X=ad.nextSibling;W=y(ad,ac);if(ae){ae.appendChild(W)}ad=X;--V}W=i(t,ac);if(ae){ae.appendChild(W)}if(ac!=E){N.setStartAfter(Z);N.collapse(D)}return ae}function i(aa,ab){var W=O(N[P],N[z]-1),ac,Z,Y,t,V,X=W!=N[P];if(W==aa){return L(W,X,R,ab)}ac=W.parentNode;Z=L(ac,R,R,ab);while(ac){while(W){Y=W.previousSibling;t=L(W,X,R,ab);if(ab!=j){Z.insertBefore(t,Z.firstChild)}X=D;W=Y}if(ac==aa){return Z}W=ac.previousSibling;ac=ac.parentNode;V=L(ac,R,R,ab);if(ab!=j){V.appendChild(Z)}Z=V}}function Q(aa,ab){var X=O(N[h],N[U]),Y=X!=N[h],ac,Z,W,t,V;if(X==aa){return L(X,Y,D,ab)}ac=X.parentNode;Z=L(ac,R,D,ab);while(ac){while(X){W=X.nextSibling;t=L(X,Y,D,ab);if(ab!=j){Z.appendChild(t)}Y=D;X=W}if(ac==aa){return Z}X=ac.nextSibling;ac=ac.parentNode;V=L(ac,R,D,ab);if(ab!=j){V.appendChild(Z)}Z=V}}function L(t,Y,ab,ac){var X,W,Z,V,aa;if(Y){return y(t,ac)}if(t.nodeType==3){X=t.nodeValue;if(ab){V=N[U];W=X.substring(V);Z=X.substring(0,V)}else{V=N[z];W=X.substring(0,V);Z=X.substring(V)}if(ac!=E){t.nodeValue=Z}if(ac==j){return}aa=t.cloneNode(R);aa.nodeValue=W;return aa}if(ac==j){return}return t.cloneNode(R)}function y(V,t){if(t!=j){return t==E?V.cloneNode(D):V}V.parentNode.removeChild(V)}}a.Range=b})(tinymce.dom);(function(){function a(g){var i=this,j="\uFEFF",e,h,d=g.dom,c=true,f=false;function b(){var n=g.getRng(),k=d.createRng(),m,o;m=n.item?n.item(0):n.parentElement();if(m.ownerDocument!=d.doc){return k}o=g.isCollapsed();if(n.item||!m.hasChildNodes()){if(o){k.setStart(m,0);k.setEnd(m,0)}else{k.setStart(m.parentNode,d.nodeIndex(m));k.setEnd(k.startContainer,k.startOffset+1)}return k}function l(s){var u,q,t,p,A=0,x,y,z,r,v;r=n.duplicate();r.collapse(s);u=d.create("a");z=r.parentElement();if(!z.hasChildNodes()){k[s?"setStart":"setEnd"](z,0);return}z.appendChild(u);r.moveToElementText(u);v=n.compareEndPoints(s?"StartToStart":"EndToEnd",r);if(v>0){k[s?"setStartAfter":"setEndAfter"](z);d.remove(u);return}p=tinymce.grep(z.childNodes);x=p.length-1;while(A<=x){y=Math.floor((A+x)/2);z.insertBefore(u,p[y]);r.moveToElementText(u);v=n.compareEndPoints(s?"StartToStart":"EndToEnd",r);if(v>0){A=y+1}else{if(v<0){x=y-1}else{found=true;break}}}q=v>0||y==0?u.nextSibling:u.previousSibling;if(q.nodeType==1){d.remove(u);t=d.nodeIndex(q);q=q.parentNode;if(!s||y>0){t++}}else{if(v>0||y==0){r.setEndPoint(s?"StartToStart":"EndToEnd",n);t=r.text.length}else{r.setEndPoint(s?"StartToStart":"EndToEnd",n);t=q.nodeValue.length-r.text.length}d.remove(u)}k[s?"setStart":"setEnd"](q,t)}l(true);if(!o){l()}return k}this.addRange=function(k){var p,n,m,r,u,s,t=g.dom.doc,o=t.body;function l(B){var x,A,v,z,y;v=d.create("a");x=B?m:u;A=B?r:s;z=p.duplicate();if(x==t||x==t.documentElement){x=o;A=0}if(x.nodeType==3){x.parentNode.insertBefore(v,x);z.moveToElementText(v);z.moveStart("character",A);d.remove(v);p.setEndPoint(B?"StartToStart":"EndToEnd",z)}else{y=x.childNodes;if(y.length){if(A>=y.length){d.insertAfter(v,y[y.length-1])}else{x.insertBefore(v,y[A])}z.moveToElementText(v)}else{v=t.createTextNode(j);x.appendChild(v);z.moveToElementText(v.parentNode);z.collapse(c)}p.setEndPoint(B?"StartToStart":"EndToEnd",z);d.remove(v)}}this.destroy();m=k.startContainer;r=k.startOffset;u=k.endContainer;s=k.endOffset;p=o.createTextRange();if(m==u&&m.nodeType==1&&r==s-1){if(r==s-1){try{n=o.createControlRange();n.addElement(m.childNodes[r]);n.select();return}catch(q){}}}l(true);l();p.select()};this.getRangeAt=function(){if(!e||!tinymce.dom.RangeUtils.compareRanges(h,g.getRng())){e=b();h=g.getRng()}try{e.startContainer.nextSibling}catch(k){e=b();h=null}return e};this.destroy=function(){h=e=null}}tinymce.dom.TridentSelection=a})();(function(){var p=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,j=0,d=Object.prototype.toString,o=false,i=true;[0,0].sort(function(){i=false;return 0});var b=function(v,e,z,A){z=z||[];e=e||document;var C=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!v||typeof v!=="string"){return z}var x=[],s,E,H,r,u=true,t=b.isXML(e),B=v,D,G,F,y;do{p.exec("");s=p.exec(B);if(s){B=s[3];x.push(s[1]);if(s[2]){r=s[3];break}}}while(s);if(x.length>1&&k.exec(v)){if(x.length===2&&f.relative[x[0]]){E=h(x[0]+x[1],e)}else{E=f.relative[x[0]]?[e]:b(x.shift(),e);while(x.length){v=x.shift();if(f.relative[v]){v+=x.shift()}E=h(v,E)}}}else{if(!A&&x.length>1&&e.nodeType===9&&!t&&f.match.ID.test(x[0])&&!f.match.ID.test(x[x.length-1])){D=b.find(x.shift(),e,t);e=D.expr?b.filter(D.expr,D.set)[0]:D.set[0]}if(e){D=A?{expr:x.pop(),set:a(A)}:b.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&e.parentNode?e.parentNode:e,t);E=D.expr?b.filter(D.expr,D.set):D.set;if(x.length>0){H=a(E)}else{u=false}while(x.length){G=x.pop();F=G;if(!f.relative[G]){G=""}else{F=x.pop()}if(F==null){F=e}f.relative[G](H,F,t)}}else{H=x=[]}}if(!H){H=E}if(!H){b.error(G||v)}if(d.call(H)==="[object Array]"){if(!u){z.push.apply(z,H)}else{if(e&&e.nodeType===1){for(y=0;H[y]!=null;y++){if(H[y]&&(H[y]===true||H[y].nodeType===1&&b.contains(e,H[y]))){z.push(E[y])}}}else{for(y=0;H[y]!=null;y++){if(H[y]&&H[y].nodeType===1){z.push(E[y])}}}}}else{a(H,z)}if(r){b(r,C,z,A);b.uniqueSort(z)}return z};b.uniqueSort=function(r){if(c){o=i;r.sort(c);if(o){for(var e=1;e<r.length;e++){if(r[e]===r[e-1]){r.splice(e--,1)}}}}return r};b.matches=function(e,r){return b(e,null,null,r)};b.find=function(y,e,z){var x;if(!y){return[]}for(var t=0,s=f.order.length;t<s;t++){var v=f.order[t],u;if((u=f.leftMatch[v].exec(y))){var r=u[1];u.splice(1,1);if(r.substr(r.length-1)!=="\\"){u[1]=(u[1]||"").replace(/\\/g,"");x=f.find[v](u,e,z);if(x!=null){y=y.replace(f.match[v],"");break}}}}if(!x){x=e.getElementsByTagName("*")}return{set:x,expr:y}};b.filter=function(C,B,F,u){var s=C,H=[],z=B,x,e,y=B&&B[0]&&b.isXML(B[0]);while(C&&B.length){for(var A in f.filter){if((x=f.leftMatch[A].exec(C))!=null&&x[2]){var r=f.filter[A],G,E,t=x[1];e=false;x.splice(1,1);if(t.substr(t.length-1)==="\\"){continue}if(z===H){H=[]}if(f.preFilter[A]){x=f.preFilter[A](x,z,F,H,u,y);if(!x){e=G=true}else{if(x===true){continue}}}if(x){for(var v=0;(E=z[v])!=null;v++){if(E){G=r(E,x,v,z);var D=u^!!G;if(F&&G!=null){if(D){e=true}else{z[v]=false}}else{if(D){H.push(E);e=true}}}}}if(G!==undefined){if(!F){z=H}C=C.replace(f.match[A],"");if(!e){return[]}break}}}if(C===s){if(e==null){b.error(C)}else{break}}s=C}return z};b.error=function(e){throw"Syntax error, unrecognized expression: "+e};var f=b.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|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+\-]*)\))?/,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")}},relative:{"+":function(x,r){var t=typeof r==="string",v=t&&!/\W/.test(r),y=t&&!v;if(v){r=r.toLowerCase()}for(var s=0,e=x.length,u;s<e;s++){if((u=x[s])){while((u=u.previousSibling)&&u.nodeType!==1){}x[s]=y||u&&u.nodeName.toLowerCase()===r?u||false:u===r}}if(y){b.filter(r,x,true)}},">":function(x,r){var u=typeof r==="string",v,s=0,e=x.length;if(u&&!/\W/.test(r)){r=r.toLowerCase();for(;s<e;s++){v=x[s];if(v){var t=v.parentNode;x[s]=t.nodeName.toLowerCase()===r?t:false}}}else{for(;s<e;s++){v=x[s];if(v){x[s]=u?v.parentNode:v.parentNode===r}}if(u){b.filter(r,x,true)}}},"":function(t,r,v){var s=j++,e=q,u;if(typeof r==="string"&&!/\W/.test(r)){r=r.toLowerCase();u=r;e=n}e("parentNode",r,s,t,u,v)},"~":function(t,r,v){var s=j++,e=q,u;if(typeof r==="string"&&!/\W/.test(r)){r=r.toLowerCase();u=r;e=n}e("previousSibling",r,s,t,u,v)}},find:{ID:function(r,s,t){if(typeof s.getElementById!=="undefined"&&!t){var e=s.getElementById(r[1]);return e?[e]:[]}},NAME:function(s,v){if(typeof v.getElementsByName!=="undefined"){var r=[],u=v.getElementsByName(s[1]);for(var t=0,e=u.length;t<e;t++){if(u[t].getAttribute("name")===s[1]){r.push(u[t])}}return r.length===0?null:r}},TAG:function(e,r){return r.getElementsByTagName(e[1])}},preFilter:{CLASS:function(t,r,s,e,x,y){t=" "+t[1].replace(/\\/g,"")+" ";if(y){return t}for(var u=0,v;(v=r[u])!=null;u++){if(v){if(x^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(t)>=0)){if(!s){e.push(v)}}else{if(s){r[u]=false}}}}return false},ID:function(e){return e[1].replace(/\\/g,"")},TAG:function(r,e){return r[1].toLowerCase()},CHILD:function(e){if(e[1]==="nth"){var r=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(r[1]+(r[2]||1))-0;e[3]=r[3]-0}e[0]=j++;return e},ATTR:function(u,r,s,e,v,x){var t=u[1].replace(/\\/g,"");if(!x&&f.attrMap[t]){u[1]=f.attrMap[t]}if(u[2]==="~="){u[4]=" "+u[4]+" "}return u},PSEUDO:function(u,r,s,e,v){if(u[1]==="not"){if((p.exec(u[3])||"").length>1||/^\w/.test(u[3])){u[3]=b(u[3],null,null,r)}else{var t=b.filter(u[3],r,s,true^v);if(!s){e.push.apply(e,t)}return false}}else{if(f.match.POS.test(u[0])||f.match.CHILD.test(u[0])){return true}}return u},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){e.parentNode.selectedIndex;return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(s,r,e){return !!b(e[3],s).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(e){return"text"===e.type},radio:function(e){return"radio"===e.type},checkbox:function(e){return"checkbox"===e.type},file:function(e){return"file"===e.type},password:function(e){return"password"===e.type},submit:function(e){return"submit"===e.type},image:function(e){return"image"===e.type},reset:function(e){return"reset"===e.type},button:function(e){return"button"===e.type||e.nodeName.toLowerCase()==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)}},setFilters:{first:function(r,e){return e===0},last:function(s,r,e,t){return r===t.length-1},even:function(r,e){return e%2===0},odd:function(r,e){return e%2===1},lt:function(s,r,e){return r<e[3]-0},gt:function(s,r,e){return r>e[3]-0},nth:function(s,r,e){return e[3]-0===r},eq:function(s,r,e){return e[3]-0===r}},filter:{PSEUDO:function(s,y,x,z){var e=y[1],r=f.filters[e];if(r){return r(s,x,y,z)}else{if(e==="contains"){return(s.textContent||s.innerText||b.getText([s])||"").indexOf(y[3])>=0}else{if(e==="not"){var t=y[3];for(var v=0,u=t.length;v<u;v++){if(t[v]===s){return false}}return true}else{b.error("Syntax error, unrecognized expression: "+e)}}}},CHILD:function(e,t){var x=t[1],r=e;switch(x){case"only":case"first":while((r=r.previousSibling)){if(r.nodeType===1){return false}}if(x==="first"){return true}r=e;case"last":while((r=r.nextSibling)){if(r.nodeType===1){return false}}return true;case"nth":var s=t[2],A=t[3];if(s===1&&A===0){return true}var v=t[0],z=e.parentNode;if(z&&(z.sizcache!==v||!e.nodeIndex)){var u=0;for(r=z.firstChild;r;r=r.nextSibling){if(r.nodeType===1){r.nodeIndex=++u}}z.sizcache=v}var y=e.nodeIndex-A;if(s===0){return y===0}else{return(y%s===0&&y/s>=0)}}},ID:function(r,e){return r.nodeType===1&&r.getAttribute("id")===e},TAG:function(r,e){return(e==="*"&&r.nodeType===1)||r.nodeName.toLowerCase()===e},CLASS:function(r,e){return(" "+(r.className||r.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(v,t){var s=t[1],e=f.attrHandle[s]?f.attrHandle[s](v):v[s]!=null?v[s]:v.getAttribute(s),x=e+"",u=t[2],r=t[4];return e==null?u==="!=":u==="="?x===r:u==="*="?x.indexOf(r)>=0:u==="~="?(" "+x+" ").indexOf(r)>=0:!r?x&&e!==false:u==="!="?x!==r:u==="^="?x.indexOf(r)===0:u==="$="?x.substr(x.length-r.length)===r:u==="|="?x===r||x.substr(0,r.length+1)===r+"-":false},POS:function(u,r,s,v){var e=r[2],t=f.setFilters[e];if(t){return t(u,s,r,v)}}}};var k=f.match.POS,g=function(r,e){return"\\"+(e-0+1)};for(var m in f.match){f.match[m]=new RegExp(f.match[m].source+(/(?![^\[]*\])(?![^\(]*\))/.source));f.leftMatch[m]=new RegExp(/(^(?:.|\r|\n)*?)/.source+f.match[m].source.replace(/\\(\d+)/g,g))}var a=function(r,e){r=Array.prototype.slice.call(r,0);if(e){e.push.apply(e,r);return e}return r};try{Array.prototype.slice.call(document.documentElement.childNodes,0)[0].nodeType}catch(l){a=function(u,t){var r=t||[],s=0;if(d.call(u)==="[object Array]"){Array.prototype.push.apply(r,u)}else{if(typeof u.length==="number"){for(var e=u.length;s<e;s++){r.push(u[s])}}else{for(;u[s];s++){r.push(u[s])}}}return r}}var c;if(document.documentElement.compareDocumentPosition){c=function(r,e){if(!r.compareDocumentPosition||!e.compareDocumentPosition){if(r==e){o=true}return r.compareDocumentPosition?-1:1}var s=r.compareDocumentPosition(e)&4?-1:r===e?0:1;if(s===0){o=true}return s}}else{if("sourceIndex" in document.documentElement){c=function(r,e){if(!r.sourceIndex||!e.sourceIndex){if(r==e){o=true}return r.sourceIndex?-1:1}var s=r.sourceIndex-e.sourceIndex;if(s===0){o=true}return s}}else{if(document.createRange){c=function(t,r){if(!t.ownerDocument||!r.ownerDocument){if(t==r){o=true}return t.ownerDocument?-1:1}var s=t.ownerDocument.createRange(),e=r.ownerDocument.createRange();s.setStart(t,0);s.setEnd(t,0);e.setStart(r,0);e.setEnd(r,0);var u=s.compareBoundaryPoints(Range.START_TO_END,e);if(u===0){o=true}return u}}}}b.getText=function(e){var r="",t;for(var s=0;e[s];s++){t=e[s];if(t.nodeType===3||t.nodeType===4){r+=t.nodeValue}else{if(t.nodeType!==8){r+=b.getText(t.childNodes)}}}return r};(function(){var r=document.createElement("div"),s="script"+(new Date()).getTime();r.innerHTML="<a name='"+s+"'/>";var e=document.documentElement;e.insertBefore(r,e.firstChild);if(document.getElementById(s)){f.find.ID=function(u,v,x){if(typeof v.getElementById!=="undefined"&&!x){var t=v.getElementById(u[1]);return t?t.id===u[1]||typeof t.getAttributeNode!=="undefined"&&t.getAttributeNode("id").nodeValue===u[1]?[t]:undefined:[]}};f.filter.ID=function(v,t){var u=typeof v.getAttributeNode!=="undefined"&&v.getAttributeNode("id");return v.nodeType===1&&u&&u.nodeValue===t}}e.removeChild(r);e=r=null})();(function(){var e=document.createElement("div");e.appendChild(document.createComment(""));if(e.getElementsByTagName("*").length>0){f.find.TAG=function(r,v){var u=v.getElementsByTagName(r[1]);if(r[1]==="*"){var t=[];for(var s=0;u[s];s++){if(u[s].nodeType===1){t.push(u[s])}}u=t}return u}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){f.attrHandle.href=function(r){return r.getAttribute("href",2)}}e=null})();if(document.querySelectorAll){(function(){var e=b,s=document.createElement("div");s.innerHTML="<p class='TEST'></p>";if(s.querySelectorAll&&s.querySelectorAll(".TEST").length===0){return}b=function(x,v,t,u){v=v||document;if(!u&&v.nodeType===9&&!b.isXML(v)){try{return a(v.querySelectorAll(x),t)}catch(y){}}return e(x,v,t,u)};for(var r in e){b[r]=e[r]}s=null})()}(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}f.order.splice(1,0,"CLASS");f.find.CLASS=function(r,s,t){if(typeof s.getElementsByClassName!=="undefined"&&!t){return s.getElementsByClassName(r[1])}};e=null})();function n(r,x,v,A,y,z){for(var t=0,s=A.length;t<s;t++){var e=A[t];if(e){e=e[r];var u=false;while(e){if(e.sizcache===v){u=A[e.sizset];break}if(e.nodeType===1&&!z){e.sizcache=v;e.sizset=t}if(e.nodeName.toLowerCase()===x){u=e;break}e=e[r]}A[t]=u}}}function q(r,x,v,A,y,z){for(var t=0,s=A.length;t<s;t++){var e=A[t];if(e){e=e[r];var u=false;while(e){if(e.sizcache===v){u=A[e.sizset];break}if(e.nodeType===1){if(!z){e.sizcache=v;e.sizset=t}if(typeof x!=="string"){if(e===x){u=true;break}}else{if(b.filter(x,[e]).length>0){u=e;break}}}e=e[r]}A[t]=u}}}b.contains=document.compareDocumentPosition?function(r,e){return !!(r.compareDocumentPosition(e)&16)}:function(r,e){return r!==e&&(r.contains?r.contains(e):true)};b.isXML=function(e){var r=(e?e.ownerDocument||e:0).documentElement;return r?r.nodeName!=="HTML":false};var h=function(e,y){var t=[],u="",v,s=y.nodeType?[y]:y;while((v=f.match.PSEUDO.exec(e))){u+=v[0];e=e.replace(f.match.PSEUDO,"")}e=f.relative[e]?e+"*":e;for(var x=0,r=s.length;x<r;x++){b(e,s[x],t)}return b.filter(u,t)};window.tinymce.dom.Sizzle=b})();(function(d){var f=d.each,c=d.DOM,b=d.isIE,e=d.isWebKit,a;d.create("tinymce.dom.EventUtils",{EventUtils:function(){this.inits=[];this.events=[]},add:function(m,p,l,j){var g,h=this,i=h.events,k;if(p instanceof Array){k=[];f(p,function(o){k.push(h.add(m,o,l,j))});return k}if(m&&m.hasOwnProperty&&m instanceof Array){k=[];f(m,function(n){n=c.get(n);k.push(h.add(n,p,l,j))});return k}m=c.get(m);if(!m){return}g=function(n){if(h.disabled){return}n=n||window.event;if(n&&b){if(!n.target){n.target=n.srcElement}d.extend(n,h._stoppers)}if(!j){return l(n)}return l.call(j,n)};if(p=="unload"){d.unloads.unshift({func:g});return g}if(p=="init"){if(h.domLoaded){g()}else{h.inits.push(g)}return g}i.push({obj:m,name:p,func:l,cfunc:g,scope:j});h._add(m,p,g);return l},remove:function(l,m,k){var h=this,g=h.events,i=false,j;if(l&&l.hasOwnProperty&&l instanceof Array){j=[];f(l,function(n){n=c.get(n);j.push(h.remove(n,m,k))});return j}l=c.get(l);f(g,function(o,n){if(o.obj==l&&o.name==m&&(!k||(o.func==k||o.cfunc==k))){g.splice(n,1);h._remove(l,m,o.cfunc);i=true;return false}});return i},clear:function(l){var j=this,g=j.events,h,k;if(l){l=c.get(l);for(h=g.length-1;h>=0;h--){k=g[h];if(k.obj===l){j._remove(k.obj,k.name,k.cfunc);k.obj=k.cfunc=null;g.splice(h,1)}}}},cancel:function(g){if(!g){return false}this.stop(g);return this.prevent(g)},stop:function(g){if(g.stopPropagation){g.stopPropagation()}else{g.cancelBubble=true}return false},prevent:function(g){if(g.preventDefault){g.preventDefault()}else{g.returnValue=false}return false},destroy:function(){var g=this;f(g.events,function(j,h){g._remove(j.obj,j.name,j.cfunc);j.obj=j.cfunc=null});g.events=[];g=null},_add:function(h,i,g){if(h.attachEvent){h.attachEvent("on"+i,g)}else{if(h.addEventListener){h.addEventListener(i,g,false)}else{h["on"+i]=g}}},_remove:function(i,j,h){if(i){try{if(i.detachEvent){i.detachEvent("on"+j,h)}else{if(i.removeEventListener){i.removeEventListener(j,h,false)}else{i["on"+j]=null}}}catch(g){}}},_pageInit:function(h){var g=this;if(g.domLoaded){return}g.domLoaded=true;f(g.inits,function(i){i()});g.inits=[]},_wait:function(i){var g=this,h=i.document;if(i.tinyMCE_GZ&&tinyMCE_GZ.loaded){g.domLoaded=1;return}if(h.attachEvent){h.attachEvent("onreadystatechange",function(){if(h.readyState==="complete"){h.detachEvent("onreadystatechange",arguments.callee);g._pageInit(i)}});if(h.documentElement.doScroll&&i==i.top){(function(){if(g.domLoaded){return}try{h.documentElement.doScroll("left")}catch(j){setTimeout(arguments.callee,0);return}g._pageInit(i)})()}}else{if(h.addEventListener){g._add(i,"DOMContentLoaded",function(){g._pageInit(i)})}}g._add(i,"load",function(){g._pageInit(i)})},_stoppers:{preventDefault:function(){this.returnValue=false},stopPropagation:function(){this.cancelBubble=true}}});a=d.dom.Event=new d.dom.EventUtils();a._wait(window);d.addUnload(function(){a.destroy()})})(tinymce);(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(c){function e(f){return f.replace(/[\n\r]+/g,"")}var b=c.is,a=c.isIE,d=c.each;c.create("tinymce.dom.Selection",{Selection:function(i,h,g){var f=this;f.dom=i;f.win=h;f.serializer=g;d(["onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent"],function(j){f[j]=new c.util.Dispatcher(f)});if(!f.win.getSelection){f.tridentSel=new c.dom.TridentSelection(f)}if(c.isIE&&i.boxModel){this._fixIESelection()}c.addUnload(f.destroy,f)},getContent:function(g){var f=this,h=f.getRng(),l=f.dom.create("body"),j=f.getSel(),i,k,m;g=g||{};i=k="";g.get=true;g.format=g.format||"html";f.onBeforeGetContent.dispatch(f,g);if(g.format=="text"){return f.isCollapsed()?"":(h.text||(j.toString?j.toString():""))}if(h.cloneContents){m=h.cloneContents();if(m){l.appendChild(m)}}else{if(b(h.item)||b(h.htmlText)){l.innerHTML=h.item?h.item(0).outerHTML:h.htmlText}else{l.innerHTML=h.toString()}}if(/^\s/.test(l.innerHTML)){i=" "}if(/\s+$/.test(l.innerHTML)){k=" "}g.getInner=true;g.content=f.isCollapsed()?"":i+f.serializer.serialize(l,g)+k;f.onGetContent.dispatch(f,g);return g.content},setContent:function(k,j){var h=this,f=h.getRng(),i,l=h.win.document,m,g;j=j||{format:"html"};j.set=true;k=j.content=k;if(!j.no_events){h.onBeforeSetContent.dispatch(h,j)}k=j.content;if(f.insertNode){k+='<span id="__caret">_</span>';if(f.startContainer==l&&f.endContainer==l){l.body.innerHTML=k}else{f.deleteContents();if(l.body.childNodes.length==0){l.body.innerHTML=k}else{if(f.createContextualFragment){f.insertNode(f.createContextualFragment(k))}else{m=l.createDocumentFragment();g=l.createElement("div");m.appendChild(g);g.outerHTML=k;f.insertNode(m)}}}i=h.dom.get("__caret");f=l.createRange();f.setStartBefore(i);f.setEndBefore(i);h.setRng(f);h.dom.remove("__caret");h.setRng(f)}else{if(f.item){l.execCommand("Delete",false,null);f=h.getRng()}f.pasteHTML(k)}if(!j.no_events){h.onSetContent.dispatch(h,j)}},getStart:function(){var g=this.getRng(),h,f,j,i;if(g.duplicate||g.item){if(g.item){return g.item(0)}j=g.duplicate();j.collapse(1);h=j.parentElement();f=i=g.parentElement();while(i=i.parentNode){if(i==h){h=f;break}}return h}else{h=g.startContainer;if(h.nodeType==1&&h.hasChildNodes()){h=h.childNodes[Math.min(h.childNodes.length-1,g.startOffset)]}if(h&&h.nodeType==3){return h.parentNode}return h}},getEnd:function(){var g=this,h=g.getRng(),i,f;if(h.duplicate||h.item){if(h.item){return h.item(0)}h=h.duplicate();h.collapse(0);i=h.parentElement();if(i&&i.nodeName=="BODY"){return i.lastChild||i}return i}else{i=h.endContainer;f=h.endOffset;if(i.nodeType==1&&i.hasChildNodes()){i=i.childNodes[f>0?f-1:f]}if(i&&i.nodeType==3){return i.parentNode}return i}},getBookmark:function(r,s){var v=this,m=v.dom,g,j,i,n,h,o,p,l="\uFEFF",u;function f(x,y){var t=0;d(m.select(x),function(A,z){if(A==y){t=z}});return t}if(r==2){function k(){var x=v.getRng(true),t=m.getRoot(),y={};function z(C,H){var B=C[H?"startContainer":"endContainer"],G=C[H?"startOffset":"endOffset"],A=[],D,F,E=0;if(B.nodeType==3){if(s){for(D=B.previousSibling;D&&D.nodeType==3;D=D.previousSibling){G+=D.nodeValue.length}}A.push(G)}else{F=B.childNodes;if(G>=F.length&&F.length){E=1;G=Math.max(0,F.length-1)}A.push(v.dom.nodeIndex(F[G],s)+E)}for(;B&&B!=t;B=B.parentNode){A.push(v.dom.nodeIndex(B,s))}return A}y.start=z(x,true);if(!v.isCollapsed()){y.end=z(x)}return y}return k()}if(r){return{rng:v.getRng()}}g=v.getRng();i=m.uniqueId();n=tinyMCE.activeEditor.selection.isCollapsed();u="overflow:hidden;line-height:0px";if(g.duplicate||g.item){if(!g.item){j=g.duplicate();try{g.collapse();g.pasteHTML('<span data-mce-type="bookmark" id="'+i+'_start" style="'+u+'">'+l+"</span>");if(!n){j.collapse(false);g.moveToElementText(j.parentElement());if(g.compareEndPoints("StartToEnd",j)==0){j.move("character",-1)}j.pasteHTML('<span data-mce-type="bookmark" id="'+i+'_end" style="'+u+'">'+l+"</span>")}}catch(q){return null}}else{o=g.item(0);h=o.nodeName;return{name:h,index:f(h,o)}}}else{o=v.getNode();h=o.nodeName;if(h=="IMG"){return{name:h,index:f(h,o)}}j=g.cloneRange();if(!n){j.collapse(false);j.insertNode(m.create("span",{"data-mce-type":"bookmark",id:i+"_end",style:u},l))}g.collapse(true);g.insertNode(m.create("span",{"data-mce-type":"bookmark",id:i+"_start",style:u},l))}v.moveToBookmark({id:i,keep:1});return{id:i}},moveToBookmark:function(n){var r=this,l=r.dom,i,h,f,q,j,s,o,p;if(r.tridentSel){r.tridentSel.destroy()}if(n){if(n.start){f=l.createRng();q=l.getRoot();function g(z){var t=n[z?"start":"end"],v,x,y,u;if(t){y=t[0];for(x=q,v=t.length-1;v>=1;v--){u=x.childNodes;if(t[v]>u.length-1){return}x=u[t[v]]}if(x.nodeType===3){y=Math.min(t[0],x.nodeValue.length)}if(x.nodeType===1){y=Math.min(t[0],x.childNodes.length)}if(z){f.setStart(x,y)}else{f.setEnd(x,y)}}return true}if(g(true)&&g()){r.setRng(f)}}else{if(n.id){function k(A){var u=l.get(n.id+"_"+A),z,t,x,y,v=n.keep;if(u){z=u.parentNode;if(A=="start"){if(!v){t=l.nodeIndex(u)}else{z=u.firstChild;t=1}j=s=z;o=p=t}else{if(!v){t=l.nodeIndex(u)}else{z=u.firstChild;t=1}s=z;p=t}if(!v){y=u.previousSibling;x=u.nextSibling;d(c.grep(u.childNodes),function(B){if(B.nodeType==3){B.nodeValue=B.nodeValue.replace(/\uFEFF/g,"")}});while(u=l.get(n.id+"_"+A)){l.remove(u,1)}if(y&&x&&y.nodeType==x.nodeType&&y.nodeType==3&&!c.isOpera){t=y.nodeValue.length;y.appendData(x.nodeValue);l.remove(x);if(A=="start"){j=s=y;o=p=t}else{s=y;p=t}}}}}function m(t){if(l.isBlock(t)&&!t.innerHTML){t.innerHTML=!a?'<br data-mce-bogus="1" />':" "}return t}k("start");k("end");if(j){f=l.createRng();f.setStart(m(j),o);f.setEnd(m(s),p);r.setRng(f)}}else{if(n.name){r.select(l.select(n.name)[n.index])}else{if(n.rng){r.setRng(n.rng)}}}}}},select:function(k,j){var i=this,l=i.dom,g=l.createRng(),f;if(k){f=l.nodeIndex(k);g.setStart(k.parentNode,f);g.setEnd(k.parentNode,f+1);if(j){function h(m,o){var n=new c.dom.TreeWalker(m,m);do{if(m.nodeType==3&&c.trim(m.nodeValue).length!=0){if(o){g.setStart(m,0)}else{g.setEnd(m,m.nodeValue.length)}return}if(m.nodeName=="BR"){if(o){g.setStartBefore(m)}else{g.setEndBefore(m)}return}}while(m=(o?n.next():n.prev()))}h(k,1);h(k)}i.setRng(g)}return k},isCollapsed:function(){var f=this,h=f.getRng(),g=f.getSel();if(!h||h.item){return false}if(h.compareEndPoints){return h.compareEndPoints("StartToEnd",h)===0}return !g||h.collapsed},collapse:function(f){var h=this,g=h.getRng(),i;if(g.item){i=g.item(0);g=h.win.document.body.createTextRange();g.moveToElementText(i)}g.collapse(!!f);h.setRng(g)},getSel:function(){var g=this,f=this.win;return f.getSelection?f.getSelection():f.document.selection},getRng:function(l){var g=this,h,i,k,j=g.win.document;if(l&&g.tridentSel){return g.tridentSel.getRangeAt(0)}try{if(h=g.getSel()){i=h.rangeCount>0?h.getRangeAt(0):(h.createRange?h.createRange():j.createRange())}}catch(f){}if(c.isIE&&i&&i.setStart&&j.selection.createRange().item){k=j.selection.createRange().item(0);i=j.createRange();i.setStartBefore(k);i.setEndAfter(k)}if(!i){i=j.createRange?j.createRange():j.body.createTextRange()}if(g.selectedRange&&g.explicitRange){if(i.compareBoundaryPoints(i.START_TO_START,g.selectedRange)===0&&i.compareBoundaryPoints(i.END_TO_END,g.selectedRange)===0){i=g.explicitRange}else{g.selectedRange=null;g.explicitRange=null}}return i},setRng:function(i){var h,g=this;if(!g.tridentSel){h=g.getSel();if(h){g.explicitRange=i;try{h.removeAllRanges()}catch(f){}h.addRange(i);g.selectedRange=h.getRangeAt(0)}}else{if(i.cloneRange){g.tridentSel.addRange(i);return}try{i.select()}catch(f){}}},setNode:function(g){var f=this;f.setContent(f.dom.getOuterHTML(g));return g},getNode:function(){var h=this,g=h.getRng(),i=h.getSel(),l,k=g.startContainer,f=g.endContainer;if(!g){return h.dom.getRoot()}if(g.setStart){l=g.commonAncestorContainer;if(!g.collapsed){if(g.startContainer==g.endContainer){if(g.endOffset-g.startOffset<2){if(g.startContainer.hasChildNodes()){l=g.startContainer.childNodes[g.startOffset]}}}if(k.nodeType===3&&f.nodeType===3){function j(p,m){var o=p;while(p&&p.nodeType===3&&p.length===0){p=m?p.nextSibling:p.previousSibling}return p||o}if(k.length===g.startOffset){k=j(k.nextSibling,true)}else{k=k.parentNode}if(g.endOffset===0){f=j(f.previousSibling,false)}else{f=f.parentNode}if(k&&k===f){return k}}}if(l&&l.nodeType==3){return l.parentNode}return l}return g.item?g.item(0):g.parentElement()},getSelectedBlocks:function(g,f){var i=this,j=i.dom,m,h,l,k=[];m=j.getParent(g||i.getStart(),j.isBlock);h=j.getParent(f||i.getEnd(),j.isBlock);if(m){k.push(m)}if(m&&h&&m!=h){l=m;while((l=l.nextSibling)&&l!=h){if(j.isBlock(l)){k.push(l)}}}if(h&&m!=h){k.push(h)}return k},destroy:function(g){var f=this;f.win=null;if(f.tridentSel){f.tridentSel.destroy()}if(!g){c.removeUnload(f.destroy)}},_fixIESelection:function(){var g=this.dom,m=g.doc,h=m.body,j,n,f;m.documentElement.unselectable=true;function i(o,r){var p=h.createTextRange();try{p.moveToPoint(o,r)}catch(q){p=null}return p}function l(p){var o;if(p.button){o=i(p.x,p.y);if(o){if(o.compareEndPoints("StartToStart",n)>0){o.setEndPoint("StartToStart",n)}else{o.setEndPoint("EndToEnd",n)}o.select()}}else{k()}}function k(){var o=m.selection.createRange();if(n&&!o.item&&o.compareEndPoints("StartToEnd",o)===0){n.select()}g.unbind(m,"mouseup",k);g.unbind(m,"mousemove",l);n=j=0}g.bind(m,["mousedown","contextmenu"],function(o){if(o.target.nodeName==="HTML"){if(j){k()}f=m.documentElement;if(f.scrollHeight>f.clientHeight){return}j=1;n=i(o.x,o.y);if(n){g.bind(m,"mouseup",k);g.bind(m,"mousemove",l);g.win.focus();n.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}e.remove_trailing_brs=true;i=i||a.DOM;f=f||new a.html.Schema(e);e.entity_encoding=e.entity_encoding||"named";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.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\[|<!--|<!\[CDATA\[)[\r\n]*/g,"").replace(/\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").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(m.getInner?o.innerHTML:a.trim(i.getOuterHTML(o),m),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=[],f={},d=[],g=0,e;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=q.create("script",{id:n,type:"text/javascript",src:a._addVer(m)});if(!a.isIE){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==e){j.push(m);l[m]=c}if(q){if(!f[m]){f[m]=[]}f[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(f[r],function(s){s.func.call(s.scope)});f[r]=e}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);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(a){a.dom.RangeUtils=function(c){var b="\uFEFF";this.walk=function(d,r){var h=d.startContainer,k=d.startOffset,s=d.endContainer,l=d.endOffset,i,f,n,g,q,p,e;e=c.select("td.mceSelected,th.mceSelected");if(e.length>0){a.each(e,function(t){r([t])});return}function o(v,u,t){var x=[];for(;v&&v!=t;v=v[u]){x.push(v)}return x}function m(u,t){do{if(u.parentNode==t){return u}u=u.parentNode}while(u)}function j(v,u,x){var t=x?"nextSibling":"previousSibling";for(g=v,q=g.parentNode;g&&g!=u;g=q){q=g.parentNode;p=o(g==v?g:g[t],t);if(p.length){if(!x){p.reverse()}r(p)}}}if(h.nodeType==1&&h.hasChildNodes()){h=h.childNodes[k]}if(s.nodeType==1&&s.hasChildNodes()){s=s.childNodes[Math.min(l-1,s.childNodes.length-1)]}i=c.findCommonAncestor(h,s);if(h==s){return r([h])}for(g=h;g;g=g.parentNode){if(g==s){return j(h,i,true)}if(g==i){break}}for(g=s;g;g=g.parentNode){if(g==h){return j(s,i)}if(g==i){break}}f=m(h,i)||h;n=m(s,i)||s;j(h,f,true);p=o(f==h?f:f.nextSibling,"nextSibling",n==s?n.nextSibling:n);if(p.length){r(p)}j(s,n)}};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 p=this,m=e.root,l=e.items,n=e.enableUpDown,i=e.enableLeftRight||!e.enableUpDown,k=e.excludeFromTabOrder,j,h,o,d,g;f=f||b.DOM;j=function(q){g=q.target.id};h=function(q){f.setAttrib(q.target.id,"tabindex","-1")};d=function(q){var r=f.get(g);f.setAttrib(r,"tabindex","0");r.focus()};p.focus=function(){f.get(g).focus()};p.destroy=function(){c(l,function(q){f.unbind(f.get(q.id),"focus",j);f.unbind(f.get(q.id),"blur",h)});f.unbind(f.get(m),"focus",d);f.unbind(f.get(m),"keydown",o);l=f=m=p.focus=j=h=o=d=null;p.destroy=function(){}};p.moveFocus=function(u,r){var q=-1,t=p.controls,s;if(!g){return}c(l,function(x,v){if(x.id===g){q=v;return false}});q+=u;if(q<0){q=l.length-1}else{if(q>=l.length){q=0}}s=l[q];f.setAttrib(g,"tabindex","-1");f.setAttrib(s.id,"tabindex","0");f.get(s.id).focus();if(e.actOnFocus){e.onAction(s.id)}if(r){a.cancel(r)}};o=function(y){var u=37,t=39,x=38,z=40,q=27,s=14,r=13,v=32;switch(y.keyCode){case u:if(i){p.moveFocus(-1)}break;case t:if(i){p.moveFocus(1)}break;case x:if(n){p.moveFocus(-1)}break;case z:if(n){p.moveFocus(1)}break;case q:if(e.onCancel){e.onCancel();a.cancel(y)}break;case s:case r:case v:if(e.onAction){e.onAction(g);a.cancel(y)}break}};c(l,function(s,q){var r;if(!s.id){s.id=f.uniqueId("_mce_item_")}if(k){f.bind(s.id,"blur",h);r="-1"}else{r=(q===0?"0":"-1")}f.setAttrib(s.id,"tabindex",r);f.bind(f.get(s.id),"focus",j)});if(l[0]){g=l[0].id}f.setAttrib(m,"tabindex","-1");f.bind(f.get(m),"focus",d);f.bind(f.get(m),"keydown",o)}})})(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.clientWidth,j.max_width):g.clientWidth;k=j.max_height?Math.min(g.clientHeight,j.max_height):g.clientHeight;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 a.cancel(s)}});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.select("#menu_"+g.id)[0];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){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){d+='<img class="mceIcon" src="'+e.image+'" alt="'+a.encode(e.title)+'" />'+c}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 c=this,d=c.settings;b.dom.Event.add(c.id,"click",function(f){if(!c.isDisabled()){return d.onclick.call(d.scope,f)}})}})})(tinymce);(function(d){var c=d.DOM,b=d.dom.Event,e=d.each,a=d.util.Dispatcher;d.create("tinymce.ui.ListBox:tinymce.ui.Control",{ListBox:function(i,h,f){var g=this;g.parent(i,h,f);g.items=[];g.onChange=new a(g);g.onPostRender=new a(g);g.onAdd=new a(g);g.onRenderMenu=new d.util.Dispatcher(this);g.classPrefix="mceListBox"},select:function(h){var g=this,j,i;if(h==undefined){return g.selectByIndex(-1)}if(h&&h.call){i=h}else{i=function(f){return f==h}}if(h!=g.selectedValue){e(g.items,function(k,f){if(i(k.value)){j=1;g.selectByIndex(f);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(f){var g=this,h,i;if(f!=g.selectedIndex){h=c.get(g.id+"_text");i=g.items[f];if(i){g.selectedValue=i.value;g.selectedIndex=f;c.setHTML(h,c.encode(i.title));c.removeClass(h,"mceTitle");c.setAttrib(g.id,"aria-valuenow",i.title)}else{c.setHTML(h,c.encode(g.settings.title));c.addClass(h,"mceTitle");g.selectedValue=g.selectedIndex=null;c.setAttrib(g.id,"aria-valuenow",g.settings.title)}h=0}},add:function(i,f,h){var g=this;h=h||{};h=d.extend(h,{title:i,value:f});g.items.push(h);g.onAdd.dispatch(g,h)},getLength:function(){return this.items.length},renderHTML:function(){var i="",f=this,g=f.settings,j=f.classPrefix;i='<span role="button" aria-haspopup="true" aria-labelledby="'+f.id+'_text" aria-describedby="'+f.id+'_voiceDesc"><table role="presentation" tabindex="0" id="'+f.id+'" cellpadding="0" cellspacing="0" class="'+j+" "+j+"Enabled"+(g["class"]?(" "+g["class"]):"")+'"><tbody><tr>';i+="<td>"+c.createHTML("span",{id:f.id+"_voiceDesc","class":"voiceLabel",style:"display:none;"},f.settings.title);i+=c.createHTML("a",{id:f.id+"_text",tabindex:-1,href:"javascript:;","class":"mceText",onclick:"return false;",onmousedown:"return false;"},c.encode(f.settings.title))+"</td>";i+="<td>"+c.createHTML("a",{id:f.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>";i+="</tr></tbody></table></span>";return i},showMenu:function(){var g=this,j,i,h=c.get(this.id),f;if(g.isDisabled()||g.items.length==0){return}if(g.menu&&g.menu.isMenuVisible){return g.hideMenu()}if(!g.isMenuRendered){g.renderMenu();g.isMenuRendered=true}j=c.getPos(this.settings.menu_container);i=c.getPos(h);f=g.menu;f.settings.offset_x=i.x;f.settings.offset_y=i.y;f.settings.keyboard_focus=!d.isOpera;if(g.oldID){f.items[g.oldID].setSelected(0)}e(g.items,function(k){if(k.value===g.selectedValue){f.items[k.id].setSelected(1);g.oldID=k.id}});f.showMenu(0,h.clientHeight);b.add(c.doc,"mousedown",g.hideMenu,g);c.addClass(g.id,g.classPrefix+"Selected")},hideMenu:function(g){var f=this;if(f.menu&&f.menu.isMenuVisible){c.removeClass(f.id,f.classPrefix+"Selected");if(g&&g.type=="mousedown"&&(g.target.id==f.id+"_text"||g.target.id==f.id+"_open")){return}if(!g||!c.getParent(g.target,".mceMenu")){c.removeClass(f.id,f.classPrefix+"Selected");b.remove(c.doc,"mousedown",f.hideMenu,f);f.menu.hideMenu()}}},renderMenu:function(){var g=this,f;f=g.settings.control_manager.createDropMenu(g.id+"_menu",{menu_line:1,"class":g.classPrefix+"Menu mceNoIcons",max_width:150,max_height:150});f.onHideMenu.add(function(){g.hideMenu();g.focus()});f.add({title:g.settings.title,"class":"mceMenuItemTitle",onclick:function(){if(g.settings.onselect("")!==false){g.select("")}}});e(g.items,function(h){if(h.value===undefined){f.add({title:h.title,"class":"mceMenuItemTitle",onclick:function(){if(g.settings.onselect("")!==false){g.select("")}}})}else{h.id=c.uniqueId();h.onclick=function(){if(g.settings.onselect(h.value)!==false){g.select(h.value)}};f.add(h)}});g.onRenderMenu.dispatch(g,f);g.menu=f},postRender:function(){var f=this,g=f.classPrefix;b.add(f.id,"click",f.showMenu,f);b.add(f.id,"keydown",function(h){if(h.keyCode==32){f.showMenu(h);b.cancel(h)}});b.add(f.id,"focus",function(){if(!f._focused){f.keyDownHandler=b.add(f.id,"keydown",function(h){if(h.keyCode==40){f.showMenu();b.cancel(h)}});f.keyPressHandler=b.add(f.id,"keypress",function(i){var h;if(i.keyCode==13){h=f.selectedValue;f.selectedValue=null;b.cancel(i);f.settings.onselect(h)}})}f._focused=1});b.add(f.id,"blur",function(){b.remove(f.id,"keydown",f.keyDownHandler);b.remove(f.id,"keypress",f.keyPressHandler);f._focused=0});if(d.isIE6||!c.boxModel){b.add(f.id,"mouseover",function(){if(!c.hasClass(f.id,g+"Disabled")){c.addClass(f.id,g+"Hover")}});b.add(f.id,"mouseout",function(){if(!c.hasClass(f.id,g+"Disabled")){c.removeClass(f.id,g+"Hover")}})}f.onPostRender.dispatch(f,c.get(f.id))},destroy:function(){this.parent();b.clear(this.id+"_text");b.clear(this.id+"_open")}})})(tinymce);(function(d){var c=d.DOM,b=d.dom.Event,e=d.each,a=d.util.Dispatcher;d.create("tinymce.ui.NativeListBox:tinymce.ui.ListBox",{NativeListBox:function(g,f){this.parent(g,f);this.classPrefix="mceNativeListBox"},setDisabled:function(f){c.get(this.id).disabled=f;this.setAriaProperty("disabled",f)},isDisabled:function(){return c.get(this.id).disabled},select:function(h){var g=this,j,i;if(h==undefined){return g.selectByIndex(-1)}if(h&&h.call){i=h}else{i=function(f){return f==h}}if(h!=g.selectedValue){e(g.items,function(k,f){if(i(k.value)){j=1;g.selectByIndex(f);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(f){c.get(this.id).selectedIndex=f+1;this.selectedValue=this.items[f]?this.items[f].value:null},add:function(j,g,f){var i,h=this;f=f||{};f.value=g;if(h.isRendered()){c.add(c.get(this.id),"option",f,j)}i={title:j,value:g,attribs:f};h.items.push(i);h.onAdd.dispatch(h,i)},getLength:function(){return this.items.length},renderHTML:function(){var g,f=this;g=c.createHTML("option",{value:""},"-- "+f.settings.title+" --");e(f.items,function(h){g+=c.createHTML("option",{value:h.value},h.title)});g=c.createHTML("select",{id:f.id,"class":"mceNativeListBox","aria-labelledby":f.id+"_aria"},g);g+=c.createHTML("span",{id:f.id+"_aria",style:"display: none"},f.settings.title);return g},postRender:function(){var g=this,h,i=true;g.rendered=true;function f(k){var j=g.items[k.target.selectedIndex-1];if(j&&(j=j.value)){g.onChange.dispatch(g,j);if(g.settings.onselect){g.settings.onselect(j)}}}b.add(g.id,"change",f);b.add(g.id,"keydown",function(k){var j;b.remove(g.id,"change",h);i=false;j=b.add(g.id,"blur",function(){if(i){return}i=true;b.add(g.id,"change",f);b.remove(g.id,"blur",j)});if(k.keyCode==13||k.keyCode==32){f(k);return b.cancel(k)}});g.onPostRender.dispatch(g,c.get(g.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.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",{id:f.id,role:"presentation",tabindex:"0","class":"mceSplitButton mceSplitButtonEnabled "+g["class"],cellpadding:"0",cellspacing:"0",title:g.title},i);return b.createHTML("span",{role:"button","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.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.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}},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(i){i=i.replace(/^#/,"");if(!k--){l=c.add(j,"tr");k=q.grid_width-1}g=c.add(l,"td");g=c.add(g,"a",{role:"option",href:"javascript:;",style:{backgroundColor:"#"+i},title:p.editor.getLang("colors."+i,i),"data-mce-color":"#"+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="#"+i;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");new d.ui.KeyboardNavigation({root:p.id+"_menu",items:c.select("a",p.id+"_menu"),onCancel:function(){p.hideMenu();p.focus()}});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 a.cancel(i)});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(){this.parent();a.clear(this.id+"_menu");a.clear(this.id+"_more");c.remove(this.id+"_menu")}})})(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(){this.keyNav.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(){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){return this.lookup[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(e,d){this.items.push(d);this.lookup[e]=d;this.onAdd.dispatch(this,e,d);return d},load:function(h,e,d,g){var f=this;if(f.urls[h]){return}if(e.indexOf("/")!=0&&e.indexOf("://")==-1){e=b.baseURL+"/"+e}f.urls[h]=e.substring(0,e.lastIndexOf("/"));if(!f.lookup[h]){b.ScriptLoader.add(e,d,g)}}});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(q){var n=this,p,l=j.ScriptLoader,u,o=[],m;function r(x,y,t){var v=x[y];if(!v){return}if(j.is(v,"string")){t=v.replace(/\.\w+$/,"");t=t?j.resolve(t):0;v=j.resolve(v)}return v.apply(t||this,Array.prototype.slice.call(arguments,2))}q=d({theme:"simple",language:"en"},q);n.settings=q;i.add(document,"init",function(){var s,v;r(q,"onpageload");switch(q.mode){case"exact":s=q.elements||"";if(s.length>0){g(e(s),function(x){if(k.get(x)){m=new j.Editor(x,q);o.push(m);m.render(1)}else{g(document.forms,function(y){g(y.elements,function(z){if(z.name===x){x="mce_editor_"+c++;k.setAttrib(z,"id",x);m=new j.Editor(x,q);o.push(m);m.render(1)}})})}})}break;case"textareas":case"specific_textareas":function t(y,x){return x.constructor===RegExp?x.test(y.className):k.hasClass(y,x)}g(k.select("textarea"),function(x){if(q.editor_deselector&&t(x,q.editor_deselector)){return}if(!q.editor_selector||t(x,q.editor_selector)){u=k.get(x.name);if(!x.id&&!u){x.id=x.name}if(!x.id||n.get(x.id)){x.id=k.uniqueId()}m=new j.Editor(x.id,q);o.push(m);m.render(1)}});break}if(q.oninit){s=v=0;g(o,function(x){v++;if(!x.initialized){x.onInit.add(function(){s++;if(s==v){r(q,"oninit")}})}else{s++}if(s==v){r(q,"oninit")}})}})},get:function(l){if(l===a){return this.editors}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;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){function m(){n.destroy();l.detachEvent("onunload",m);l=l.tinyMCE=l.tinymce=null}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(m){var n=m.DOM,j=m.dom.Event,f=m.extend,k=m.util.Dispatcher,i=m.each,a=m.isGecko,b=m.isIE,e=m.isWebKit,d=m.is,h=m.ThemeManager,c=m.PluginManager,o=m.inArray,l=m.grep,g=m.explode;m.create("tinymce.Editor",{Editor:function(r,q){var p=this;p.id=p.editorId=r;p.execCommands={};p.queryStateCommands={};p.queryValueCommands={};p.isNotDirty=false;p.plugins={};i(["onPreInit","onBeforeRenderUI","onPostRender","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"],function(s){p[s]=new k(p)});p.settings=q=f({id:r,language:"en",docs_language:"en",theme:"simple",skin:"default",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:m.documentBaseURL,add_form_submit_trigger:1,submit_patch:1,add_unload_trigger:1,convert_urls:1,relative_urls:1,remove_script_host:1,table_inline_editing:0,object_resizing:1,cleanup:1,accessibility_focus:1,custom_shortcuts:1,custom_undo_redo_keyboard_shortcuts:1,custom_undo_redo_restore_selection:1,custom_undo_redo:1,doctype:m.isIE6?'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">':"<!DOCTYPE>",visual_table_class:"mceItemTable",visual:1,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",apply_source_formatting:1,directionality:"ltr",forced_root_block:"p",hidden_input:1,padd_empty_editor:1,render_ui:1,init_theme:1,force_p_newlines:1,indentation:"30px",keep_styles:1,fix_table_elements:1,inline_styles:1,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",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr",validate:true,entity_encoding:"named",url_converter:p.convertURL,url_converter_scope:p,ie7_compat:true},q);p.documentBaseURI=new m.util.URI(q.document_base_url||m.documentBaseURL,{base_uri:tinyMCE.baseURI});p.baseURI=m.baseURI;p.contentCSS=[];p.execCallback("setup",p)},render:function(r){var u=this,v=u.settings,x=u.id,p=m.ScriptLoader;if(!j.domLoaded){j.add(document,"init",function(){u.render()});return}tinyMCE.settings=v;if(!u.getElement()){return}if(m.isIDevice){return}if(!/TEXTAREA|INPUT/i.test(u.getElement().nodeName)&&v.hidden_input&&n.getParent(x,"form")){n.insertAfter(n.create("input",{type:"hidden",name:x}),x)}if(m.WindowManager){u.windowManager=new m.WindowManager(u)}if(v.encoding=="xml"){u.onGetContent.add(function(s,t){if(t.save){t.content=n.encode(t.content)}})}if(v.add_form_submit_trigger){u.onSubmit.addToTop(function(){if(u.initialized){u.save();u.isNotDirty=1}})}if(v.add_unload_trigger){u._beforeUnload=tinyMCE.onBeforeUnload.add(function(){if(u.initialized&&!u.destroyed&&!u.isHidden()){u.save({format:"raw",no_events:true})}})}m.addUnload(u.destroy,u);if(v.submit_patch){u.onBeforeRenderUI.add(function(){var s=u.getElement().form;if(!s){return}if(s._mceOldSubmit){return}if(!s.submit.nodeType&&!s.submit.length){u.formElement=s;s._mceOldSubmit=s.submit;s.submit=function(){m.triggerSave();u.isNotDirty=1;return u.formElement._mceOldSubmit(u.formElement)}}s=null})}function q(){if(v.language&&v.language_load!==false){p.add(m.baseURL+"/langs/"+v.language+".js")}if(v.theme&&v.theme.charAt(0)!="-"&&!h.urls[v.theme]){h.load(v.theme,"themes/"+v.theme+"/editor_template"+m.suffix+".js")}i(g(v.plugins),function(s){if(s&&s.charAt(0)!="-"&&!c.urls[s]){if(s=="safari"){return}c.load(s,"plugins/"+s+"/editor_plugin"+m.suffix+".js")}});p.loadQueue(function(){if(!u.removed){u.init()}})}q()},init:function(){var r,F=this,G=F.settings,C,z,B=F.getElement(),q,p,D,x,A,E,y;m.add(F);G.aria_label=G.aria_label||n.getAttrib(B,"aria-label",F.getLang("aria.rich_text_area"));if(G.theme){G.theme=G.theme.replace(/-/,"");q=h.get(G.theme);F.theme=new q();if(F.theme.init&&G.init_theme){F.theme.init(F,h.urls[G.theme]||m.documentBaseURL.replace(/\/$/,""))}}i(g(G.plugins.replace(/\-/g,"")),function(H){var I=c.get(H),t=c.urls[H]||m.documentBaseURL.replace(/\/$/,""),s;if(I){s=new I(F,t);F.plugins[H]=s;if(s.init){s.init(F,t)}}});if(G.popup_css!==false){if(G.popup_css){G.popup_css=F.documentBaseURI.toAbsolute(G.popup_css)}else{G.popup_css=F.baseURI.toAbsolute("themes/"+G.theme+"/skins/"+G.skin+"/dialog.css")}}if(G.popup_css_add){G.popup_css+=","+F.documentBaseURI.toAbsolute(G.popup_css_add)}F.controlManager=new m.ControlManager(F);if(G.custom_undo_redo){F.onBeforeExecCommand.add(function(t,H,u,I,s){if(H!="Undo"&&H!="Redo"&&H!="mceRepaint"&&(!s||!s.skip_undo)){F.undoManager.beforeChange()}});F.onExecCommand.add(function(t,H,u,I,s){if(H!="Undo"&&H!="Redo"&&H!="mceRepaint"&&(!s||!s.skip_undo)){F.undoManager.add()}})}F.onExecCommand.add(function(s,t){if(!/^(FontName|FontSize)$/.test(t)){F.nodeChanged()}});if(a){function v(s,t){if(!t||!t.initial){F.execCommand("mceRepaint")}}F.onUndo.add(v);F.onRedo.add(v);F.onSetContent.add(v)}F.onBeforeRenderUI.dispatch(F,F.controlManager);if(G.render_ui){C=G.width||B.style.width||B.offsetWidth;z=G.height||B.style.height||B.offsetHeight;F.orgDisplay=B.style.display;E=/^[0-9\.]+(|px)$/i;if(E.test(""+C)){C=Math.max(parseInt(C)+(q.deltaWidth||0),100)}if(E.test(""+z)){z=Math.max(parseInt(z)+(q.deltaHeight||0),100)}q=F.theme.renderUI({targetNode:B,width:C,height:z,deltaWidth:G.delta_width,deltaHeight:G.delta_height});F.editorContainer=q.editorContainer}if(document.domain&&location.hostname!=document.domain){m.relaxedDomain=document.domain}n.setStyles(q.sizeContainer||q.editorContainer,{width:C,height:z});if(G.content_css){m.each(g(G.content_css),function(s){F.contentCSS.push(F.documentBaseURI.toAbsolute(s))})}z=(q.iframeHeight||z)+(typeof(z)=="number"?(q.deltaHeight||0):"");if(z<100){z=100}F.iframeHTML=G.doctype+'<html><head xmlns="http://www.w3.org/1999/xhtml">';if(G.document_base_url!=m.documentBaseURL){F.iframeHTML+='<base href="'+F.documentBaseURI.getURI()+'" />'}if(G.ie7_compat){F.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=7" />'}else{F.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=edge" />'}F.iframeHTML+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';if(!a||!/Firefox\/2/.test(navigator.userAgent)){for(y=0;y<F.contentCSS.length;y++){F.iframeHTML+='<link type="text/css" rel="stylesheet" href="'+F.contentCSS[y]+'" />'}F.contentCSS=[]}x=G.body_id||"tinymce";if(x.indexOf("=")!=-1){x=F.getParam("body_id","","hash");x=x[F.id]||x}A=G.body_class||"";if(A.indexOf("=")!=-1){A=F.getParam("body_class","","hash");A=A[F.id]||""}F.iframeHTML+='</head><body id="'+x+'" class="mceContentBody '+A+'"></body></html>';if(m.relaxedDomain&&(b||(m.isOpera&&parseFloat(opera.version())<11))){D='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinyMCE.get("'+F.id+'");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()'}r=n.add(q.iframeContainer,"iframe",{id:F.id+"_ifr",src:D||'javascript:""',frameBorder:"0",title:G.aria_label,style:{width:"100%",height:z}});F.contentAreaContainer=q.iframeContainer;n.get(q.editorContainer).style.display=F.orgDisplay;n.get(F.id).style.display="none";n.setAttrib(F.id,"aria-hidden",true);if(!m.relaxedDomain||!D){F.setupIframe()}B=r=q=null},setupIframe:function(){var r=this,x=r.settings,y=n.get(r.id),z=r.getDoc(),v,p;if(!b||!m.relaxedDomain){z.open();z.write(r.iframeHTML);z.close();if(m.relaxedDomain){z.domain=m.relaxedDomain}}if(!b){try{if(!x.readonly){z.designMode="On"}}catch(q){}}if(b){p=r.getBody();n.hide(p);if(!x.readonly){p.contentEditable=true}n.show(p)}r.schema=new m.html.Schema(x);r.dom=new m.dom.DOMUtils(r.getDoc(),{keep_values:true,url_converter:r.convertURL,url_converter_scope:r,hex_colors:x.force_hex_style_colors,class_filter:x.class_filter,update_styles:1,fix_ie_paragraphs:1,schema:r.schema});r.parser=new m.html.DomParser(x,r.schema);r.parser.addAttributeFilter("name",function(s,t){var B=s.length,D,A,C,E;while(B--){E=s[B];if(E.name==="a"&&E.firstChild){C=E.parent;D=E.lastChild;do{A=D.prev;C.insert(D,E);D=A}while(D)}}});r.parser.addAttributeFilter("src,href,style",function(s,t){var A=s.length,B,D=r.dom,C;while(A--){B=s[A];C=B.attr(t);if(t==="style"){B.attr("data-mce-style",D.serializeStyle(D.parseStyle(C),B.name))}else{B.attr("data-mce-"+t,r.convertURL(C,t,B.name))}}});r.parser.addNodeFilter("script",function(s,t){var A=s.length;while(A--){s[A].attr("type","mce-text/javascript")}});r.parser.addNodeFilter("#cdata",function(s,t){var A=s.length,B;while(A--){B=s[A];B.type=8;B.name="#comment";B.value="[CDATA["+B.value+"]]"}});r.parser.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(t,A){var B=t.length,C,s=r.schema.getNonEmptyElements();while(B--){C=t[B];if(C.isEmpty(s)){C.empty().append(new m.html.Node("br",1)).shortEnded=true}}});r.serializer=new m.dom.Serializer(x,r.dom,r.schema);r.selection=new m.dom.Selection(r.dom,r.getWin(),r.serializer);r.formatter=new m.Formatter(this);r.formatter.register({alignleft:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"left"}},{selector:"img,table",collapsed:false,styles:{"float":"left"}}],aligncenter:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"center"}},{selector:"img",collapsed:false,styles:{display:"block",marginLeft:"auto",marginRight:"auto"}},{selector:"table",collapsed:false,styles:{marginLeft:"auto",marginRight:"auto"}}],alignright:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"right"}},{selector:"img,table",collapsed:false,styles:{"float":"right"}}],alignfull:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"justify"}}],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"},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}]});i("p h1 h2 h3 h4 h5 h6 div address pre div code dt dd samp".split(/\s/),function(s){r.formatter.register(s,{block:s,remove:"all"})});r.formatter.register(r.settings.formats);r.undoManager=new m.UndoManager(r);r.undoManager.onAdd.add(function(t,s){if(t.hasUndo()){return r.onChange.dispatch(r,s,t)}});r.undoManager.onUndo.add(function(t,s){return r.onUndo.dispatch(r,s,t)});r.undoManager.onRedo.add(function(t,s){return r.onRedo.dispatch(r,s,t)});r.forceBlocks=new m.ForceBlocks(r,{forced_root_block:x.forced_root_block});r.editorCommands=new m.EditorCommands(r);r.serializer.onPreProcess.add(function(s,t){return r.onPreProcess.dispatch(r,t,s)});r.serializer.onPostProcess.add(function(s,t){return r.onPostProcess.dispatch(r,t,s)});r.onPreInit.dispatch(r);if(!x.gecko_spellcheck){r.getBody().spellcheck=0}if(!x.readonly){r._addEvents()}r.controlManager.onPostRender.dispatch(r,r.controlManager);r.onPostRender.dispatch(r);if(x.directionality){r.getBody().dir=x.directionality}if(x.nowrap){r.getBody().style.whiteSpace="nowrap"}if(x.handle_node_change_callback){r.onNodeChange.add(function(t,s,A){r.execCallback("handle_node_change_callback",r.id,A,-1,-1,true,r.selection.isCollapsed())})}if(x.save_callback){r.onSaveContent.add(function(s,A){var t=r.execCallback("save_callback",r.id,A.content,r.getBody());if(t){A.content=t}})}if(x.onchange_callback){r.onChange.add(function(t,s){r.execCallback("onchange_callback",r,s)})}if(x.protect){r.onBeforeSetContent.add(function(s,t){if(x.protect){i(x.protect,function(A){t.content=t.content.replace(A,function(B){return"<!--mce:protected "+escape(B)+"-->"})})}})}if(x.convert_newlines_to_brs){r.onBeforeSetContent.add(function(s,t){if(t.initial){t.content=t.content.replace(/\r?\n/g,"<br />")}})}if(x.preformatted){r.onPostProcess.add(function(s,t){t.content=t.content.replace(/^\s*<pre.*?>/,"");t.content=t.content.replace(/<\/pre>\s*$/,"");if(t.set){t.content='<pre class="mceItemHidden">'+t.content+"</pre>"}})}if(x.verify_css_classes){r.serializer.attribValueFilter=function(C,A){var B,t;if(C=="class"){if(!r.classesRE){t=r.dom.getClasses();if(t.length>0){B="";i(t,function(s){B+=(B?"|":"")+s["class"]});r.classesRE=new RegExp("("+B+")","gi")}}return !r.classesRE||/(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(A)||r.classesRE.test(A)?A:""}return A}}if(x.cleanup_callback){r.onBeforeSetContent.add(function(s,t){t.content=r.execCallback("cleanup_callback","insert_to_editor",t.content,t)});r.onPreProcess.add(function(s,t){if(t.set){r.execCallback("cleanup_callback","insert_to_editor_dom",t.node,t)}if(t.get){r.execCallback("cleanup_callback","get_from_editor_dom",t.node,t)}});r.onPostProcess.add(function(s,t){if(t.set){t.content=r.execCallback("cleanup_callback","insert_to_editor",t.content,t)}if(t.get){t.content=r.execCallback("cleanup_callback","get_from_editor",t.content,t)}})}if(x.save_callback){r.onGetContent.add(function(s,t){if(t.save){t.content=r.execCallback("save_callback",r.id,t.content,r.getBody())}})}if(x.handle_event_callback){r.onEvent.add(function(s,t,A){if(r.execCallback("handle_event_callback",t,s,A)===false){j.cancel(t)}})}r.onSetContent.add(function(){r.addVisual(r.getBody())});if(x.padd_empty_editor){r.onPostProcess.add(function(s,t){t.content=t.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,"")})}if(a){function u(s,t){i(s.dom.select("a"),function(B){var A=B.parentNode;if(s.dom.isBlock(A)&&A.lastChild===B){s.dom.add(A,"br",{"data-mce-bogus":1})}})}r.onExecCommand.add(function(s,t){if(t==="CreateLink"){u(s)}});r.onSetContent.add(r.selection.onSetContent.add(u));if(!x.readonly){try{z.designMode="Off";z.designMode="On"}catch(q){}}}setTimeout(function(){if(r.removed){return}r.load({initial:true,format:"html"});r.startContent=r.getContent({format:"raw"});r.undoManager.add();r.initialized=true;r.onInit.dispatch(r);r.execCallback("setupcontent_callback",r.id,r.getBody(),r.getDoc());r.execCallback("init_instance_callback",r);r.focus(true);r.nodeChanged({initial:1});i(r.contentCSS,function(s){r.dom.loadCSS(s)});if(x.auto_focus){setTimeout(function(){var s=m.get(x.auto_focus);s.selection.select(s.getBody(),1);s.selection.collapse(1);s.getWin().focus()},100)}},1);y=null},focus:function(s){var x,q=this,v=q.settings.content_editable,r,p,u=q.getDoc();if(!s){r=q.selection.getRng();if(r.item){p=r.item(0)}if(!v){q.getWin().focus()}if(p&&p.ownerDocument==u){r=u.body.createControlRange();r.addElement(p);r.select()}}if(m.activeEditor!=q){if((x=m.activeEditor)!=null){x.onDeactivate.dispatch(x,q)}q.onActivate.dispatch(q,x)}m._setActive(q)},execCallback:function(u){var p=this,r=p.settings[u],q;if(!r){return}if(p.callbackLookup&&(q=p.callbackLookup[u])){r=q.func;q=q.scope}if(d(r,"string")){q=r.replace(/\.\w+$/,"");q=q?m.resolve(q):0;r=m.resolve(r);p.callbackLookup=p.callbackLookup||{};p.callbackLookup[u]={func:r,scope:q}}return r.apply(q||p,Array.prototype.slice.call(arguments,1))},translate:function(p){var r=this.settings.language||"en",q=m.i18n;if(!p){return""}return q[r+"."+p]||p.replace(/{\#([^}]+)\}/g,function(t,s){return q[r+"."+s]||"{#"+s+"}"})},getLang:function(q,p){return m.i18n[(this.settings.language||"en")+"."+q]||(d(p)?p:"{#"+q+"}")},getParam:function(u,r,p){var s=m.trim,q=d(this.settings[u])?this.settings[u]:r,t;if(p==="hash"){t={};if(d(q,"string")){i(q.indexOf("=")>0?q.split(/[;,](?![^=;,]*(?:[;,]|$))/):q.split(","),function(x){x=x.split("=");if(x.length>1){t[s(x[0])]=s(x[1])}else{t[s(x[0])]=s(x)}})}else{t=q}return t}return q},nodeChanged:function(r){var p=this,q=p.selection,u=q.getStart()||p.getBody();if(p.initialized){r=r||{};u=b&&u.ownerDocument!=p.getDoc()?p.getBody():u;r.parents=[];p.dom.getParent(u,function(s){if(s.nodeName=="BODY"){return true}r.parents.push(s)});p.onNodeChange.dispatch(p,r?r.controlManager||p.controlManager:p.controlManager,u,q.isCollapsed(),r)}},addButton:function(r,q){var p=this;p.buttons=p.buttons||{};p.buttons[r]=q},addCommand:function(p,r,q){this.execCommands[p]={func:r,scope:q||this}},addQueryStateHandler:function(p,r,q){this.queryStateCommands[p]={func:r,scope:q||this}},addQueryValueHandler:function(p,r,q){this.queryValueCommands[p]={func:r,scope:q||this}},addShortcut:function(r,u,p,s){var q=this,v;if(!q.settings.custom_shortcuts){return false}q.shortcuts=q.shortcuts||{};if(d(p,"string")){v=p;p=function(){q.execCommand(v,false,null)}}if(d(p,"object")){v=p;p=function(){q.execCommand(v[0],v[1],v[2])}}i(g(r),function(t){var x={func:p,scope:s||this,desc:u,alt:false,ctrl:false,shift:false};i(g(t,"+"),function(y){switch(y){case"alt":case"ctrl":case"shift":x[y]=true;break;default:x.charCode=y.charCodeAt(0);x.keyCode=y.toUpperCase().charCodeAt(0)}});q.shortcuts[(x.ctrl?"ctrl":"")+","+(x.alt?"alt":"")+","+(x.shift?"shift":"")+","+x.keyCode]=x});return true},execCommand:function(x,v,z,p){var r=this,u=0,y,q;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(x)&&(!p||!p.skip_focus)){r.focus()}y={};r.onBeforeExecCommand.dispatch(r,x,v,z,y);if(y.terminate){return false}if(r.execCallback("execcommand_callback",r.id,r.selection.getNode(),x,v,z)){r.onExecCommand.dispatch(r,x,v,z,p);return true}if(y=r.execCommands[x]){q=y.func.call(y.scope,v,z);if(q!==true){r.onExecCommand.dispatch(r,x,v,z,p);return q}}i(r.plugins,function(s){if(s.execCommand&&s.execCommand(x,v,z)){r.onExecCommand.dispatch(r,x,v,z,p);u=1;return false}});if(u){return true}if(r.theme&&r.theme.execCommand&&r.theme.execCommand(x,v,z)){r.onExecCommand.dispatch(r,x,v,z,p);return true}if(r.editorCommands.execCommand(x,v,z)){r.onExecCommand.dispatch(r,x,v,z,p);return true}r.getDoc().execCommand(x,v,z);r.onExecCommand.dispatch(r,x,v,z,p)},queryCommandState:function(u){var q=this,v,r;if(q._isHidden()){return}if(v=q.queryStateCommands[u]){r=v.func.call(v.scope);if(r!==true){return r}}v=q.editorCommands.queryCommandState(u);if(v!==-1){return v}try{return this.getDoc().queryCommandState(u)}catch(p){}},queryCommandValue:function(v){var q=this,u,r;if(q._isHidden()){return}if(u=q.queryValueCommands[v]){r=u.func.call(u.scope);if(r!==true){return r}}u=q.editorCommands.queryCommandValue(v);if(d(u)){return u}try{return this.getDoc().queryCommandValue(v)}catch(p){}},show:function(){var p=this;n.show(p.getContainer());n.hide(p.id);p.load()},hide:function(){var p=this,q=p.getDoc();if(b&&q){q.execCommand("SelectAll")}p.save();n.hide(p.getContainer());n.setStyle(p.id,"display",p.orgDisplay)},isHidden:function(){return !n.isHidden(this.id)},setProgressState:function(p,q,r){this.onSetProgressState.dispatch(this,p,q,r);return p},load:function(s){var p=this,r=p.getElement(),q;if(r){s=s||{};s.load=true;q=p.setContent(d(r.value)?r.value:r.innerHTML,s);s.element=r;if(!s.no_events){p.onLoadContent.dispatch(p,s)}s.element=r=null;return q}},save:function(u){var p=this,s=p.getElement(),q,r;if(!s||!p.initialized){return}u=u||{};u.save=true;if(!u.no_events){p.undoManager.typing=false;p.undoManager.add()}u.element=s;q=u.content=p.getContent(u);if(!u.no_events){p.onSaveContent.dispatch(p,u)}q=u.content;if(!/TEXTAREA|INPUT/i.test(s.nodeName)){s.innerHTML=q;if(r=n.getParent(p.id,"form")){i(r.elements,function(t){if(t.name==p.id){t.value=q;return false}})}}else{s.value=q}u.element=s=null;return q},setContent:function(t,s){var r=this,q,p=r.getBody();s=s||{};s.format=s.format||"html";s.set=true;s.content=t;if(!s.no_events){r.onBeforeSetContent.dispatch(r,s)}t=s.content;if(!m.isIE&&(t.length===0||/^\s+$/.test(t))){p.innerHTML='<br data-mce-bogus="1" />';return}if(s.format!=="raw"){t=new m.html.Serializer({},r.schema).serialize(r.parser.parse(t))}s.content=m.trim(t);r.dom.setHTML(p,s.content);if(!s.no_events){r.onSetContent.dispatch(r,s)}return s.content},getContent:function(q){var p=this,r;q=q||{};q.format=q.format||"html";q.get=true;if(!q.no_events){p.onBeforeGetContent.dispatch(p,q)}if(q.format=="raw"){r=p.getBody().innerHTML}else{r=p.serializer.serialize(p.getBody(),q)}q.content=m.trim(r);if(!q.no_events){p.onGetContent.dispatch(p,q)}return q.content},isDirty:function(){var p=this;return m.trim(p.startContent)!=m.trim(p.getContent({format:"raw",no_events:1}))&&!p.isNotDirty},getContainer:function(){var p=this;if(!p.container){p.container=n.get(p.editorContainer||p.id+"_parent")}return p.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return n.get(this.settings.content_element||this.id)},getWin:function(){var p=this,q;if(!p.contentWindow){q=n.get(p.id+"_ifr");if(q){p.contentWindow=q.contentWindow}}return p.contentWindow},getDoc:function(){var q=this,p;if(!q.contentDocument){p=q.getWin();if(p){q.contentDocument=p.document}}return q.contentDocument},getBody:function(){return this.bodyElement||this.getDoc().body},convertURL:function(p,x,v){var q=this,r=q.settings;if(r.urlconverter_callback){return q.execCallback("urlconverter_callback",p,v,true,x)}if(!r.convert_urls||(v&&v.nodeName=="LINK")||p.indexOf("file:")===0){return p}if(r.relative_urls){return q.documentBaseURI.toRelative(p)}p=q.documentBaseURI.toAbsolute(p,r.remove_script_host);return p},addVisual:function(r){var p=this,q=p.settings;r=r||p.getBody();if(!d(p.hasVisual)){p.hasVisual=q.visual}i(p.dom.select("table,a",r),function(t){var s;switch(t.nodeName){case"TABLE":s=p.dom.getAttrib(t,"border");if(!s||s=="0"){if(p.hasVisual){p.dom.addClass(t,q.visual_table_class)}else{p.dom.removeClass(t,q.visual_table_class)}}return;case"A":s=p.dom.getAttrib(t,"name");if(s){if(p.hasVisual){p.dom.addClass(t,"mceItemAnchor")}else{p.dom.removeClass(t,"mceItemAnchor")}}return}});p.onVisualAid.dispatch(p,r,p.hasVisual)},remove:function(){var p=this,q=p.getContainer();p.removed=1;p.hide();p.execCallback("remove_instance_callback",p);p.onRemove.dispatch(p);p.onExecCommand.listeners=[];m.remove(p);n.remove(q)},destroy:function(q){var p=this;if(p.destroyed){return}if(!q){m.removeUnload(p.destroy);tinyMCE.onBeforeUnload.remove(p._beforeUnload);if(p.theme&&p.theme.destroy){p.theme.destroy()}p.controlManager.destroy();p.selection.destroy();p.dom.destroy();if(!p.settings.content_editable){j.clear(p.getWin());j.clear(p.getDoc())}j.clear(p.getBody());j.clear(p.formElement)}if(p.formElement){p.formElement.submit=p.formElement._mceOldSubmit;p.formElement._mceOldSubmit=null}p.contentAreaContainer=p.formElement=p.container=p.settings.content_element=p.bodyElement=p.contentDocument=p.contentWindow=null;if(p.selection){p.selection=p.selection.win=p.selection.dom=p.selection.dom.doc=null}p.destroyed=1},_addEvents:function(){var B=this,r,C=B.settings,q=B.dom,x={mouseup:"onMouseUp",mousedown:"onMouseDown",click:"onClick",keyup:"onKeyUp",keydown:"onKeyDown",keypress:"onKeyPress",submit:"onSubmit",reset:"onReset",contextmenu:"onContextMenu",dblclick:"onDblClick",paste:"onPaste"};function p(t,D){var s=t.type;if(B.removed){return}if(B.onEvent.dispatch(B,t,D)!==false){B[x[t.fakeType||t.type]].dispatch(B,t,D)}}i(x,function(t,s){switch(s){case"contextmenu":q.bind(B.getDoc(),s,p);break;case"paste":q.bind(B.getBody(),s,function(D){p(D)});break;case"submit":case"reset":q.bind(B.getElement().form||n.getParent(B.id,"form"),s,p);break;default:q.bind(C.content_editable?B.getBody():B.getDoc(),s,p)}});q.bind(C.content_editable?B.getBody():(a?B.getDoc():B.getWin()),"focus",function(s){B.focus(true)});if(m.isGecko){q.bind(B.getDoc(),"DOMNodeInserted",function(t){var s;t=t.target;if(t.nodeType===1&&t.nodeName==="IMG"&&(s=t.getAttribute("data-mce-src"))){t.src=B.documentBaseURI.toAbsolute(s)}})}if(a){function u(){var E=this,G=E.getDoc(),F=E.settings;if(a&&!F.readonly){if(E._isHidden()){try{if(!F.content_editable){G.designMode="On"}}catch(D){}}try{G.execCommand("styleWithCSS",0,false)}catch(D){if(!E._isHidden()){try{G.execCommand("useCSS",0,true)}catch(D){}}}if(!F.table_inline_editing){try{G.execCommand("enableInlineTableEditing",false,false)}catch(D){}}if(!F.object_resizing){try{G.execCommand("enableObjectResizing",false,false)}catch(D){}}}}B.onBeforeExecCommand.add(u);B.onMouseDown.add(u)}if(m.isWebKit){B.onClick.add(function(s,t){t=t.target;if(t.nodeName=="IMG"||(t.nodeName=="A"&&q.hasClass(t,"mceItemAnchor"))){B.selection.getSel().setBaseAndExtent(t,0,t,1);B.nodeChanged()}})}B.onMouseUp.add(B.nodeChanged);B.onKeyUp.add(function(s,t){var D=t.keyCode;if((D>=33&&D<=36)||(D>=37&&D<=40)||D==13||D==45||D==46||D==8||(m.isMac&&(D==91||D==93))||t.ctrlKey){B.nodeChanged()}});B.onReset.add(function(){B.setContent(B.startContent,{format:"raw"})});if(C.custom_shortcuts){if(C.custom_undo_redo_keyboard_shortcuts){B.addShortcut("ctrl+z",B.getLang("undo_desc"),"Undo");B.addShortcut("ctrl+y",B.getLang("redo_desc"),"Redo")}B.addShortcut("ctrl+b",B.getLang("bold_desc"),"Bold");B.addShortcut("ctrl+i",B.getLang("italic_desc"),"Italic");B.addShortcut("ctrl+u",B.getLang("underline_desc"),"Underline");for(r=1;r<=6;r++){B.addShortcut("ctrl+"+r,"",["FormatBlock",false,"h"+r])}B.addShortcut("ctrl+7","",["FormatBlock",false,"<p>"]);B.addShortcut("ctrl+8","",["FormatBlock",false,"<div>"]);B.addShortcut("ctrl+9","",["FormatBlock",false,"<address>"]);function v(t){var s=null;if(!t.altKey&&!t.ctrlKey&&!t.metaKey){return s}i(B.shortcuts,function(D){if(m.isMac&&D.ctrl!=t.metaKey){return}else{if(!m.isMac&&D.ctrl!=t.ctrlKey){return}}if(D.alt!=t.altKey){return}if(D.shift!=t.shiftKey){return}if(t.keyCode==D.keyCode||(t.charCode&&t.charCode==D.charCode)){s=D;return false}});return s}B.onKeyUp.add(function(s,t){var D=v(t);if(D){return j.cancel(t)}});B.onKeyPress.add(function(s,t){var D=v(t);if(D){return j.cancel(t)}});B.onKeyDown.add(function(s,t){var D=v(t);if(D){D.func.call(D.scope);return j.cancel(t)}})}if(m.isIE){q.bind(B.getDoc(),"controlselect",function(D){var t=B.resizeInfo,s;D=D.target;if(D.nodeName!=="IMG"){return}if(t){q.unbind(t.node,t.ev,t.cb)}if(!q.hasClass(D,"mceItemNoResize")){ev="resizeend";s=q.bind(D,ev,function(F){var E;F=F.target;if(E=q.getStyle(F,"width")){q.setAttrib(F,"width",E.replace(/[^0-9%]+/g,""));q.setStyle(F,"width","")}if(E=q.getStyle(F,"height")){q.setAttrib(F,"height",E.replace(/[^0-9%]+/g,""));q.setStyle(F,"height","")}})}else{ev="resizestart";s=q.bind(D,"resizestart",j.cancel,j)}t=B.resizeInfo={node:D,ev:ev,cb:s}});B.onKeyDown.add(function(s,D){var t;switch(D.keyCode){case 8:t=B.getDoc().selection;if(t.createRange&&t.createRange().item){s.dom.remove(t.createRange().item(0));return j.cancel(D)}}})}if(m.isOpera){B.onClick.add(function(s,t){j.prevent(t)})}if(C.custom_undo_redo){function y(){B.undoManager.typing=false;B.undoManager.add()}q.bind(B.getDoc(),"focusout",function(s){if(!B.removed&&B.undoManager.typing){y()}});B.dom.bind(B.dom.getRoot(),"dragend",function(s){y()});B.onKeyUp.add(function(t,F){var s,E,D;if(b&&F.keyCode==8){s=B.selection.getRng();if(s.parentElement){E=s.parentElement();D=B.selection.getBookmark();E.innerHTML=E.innerHTML;B.selection.moveToBookmark(D)}}if((F.keyCode>=33&&F.keyCode<=36)||(F.keyCode>=37&&F.keyCode<=40)||F.keyCode==13||F.keyCode==45||F.ctrlKey){y()}});B.onKeyDown.add(function(t,H){var s,F,E,G=H.keyCode;if(b&&G==46){s=B.selection.getRng();if(s.parentElement){F=s.parentElement();if(!B.undoManager.typing){B.undoManager.beforeChange();B.undoManager.typing=true;B.undoManager.add()}if(H.ctrlKey){s.moveEnd("word",1);s.select()}B.selection.getSel().clear();if(s.parentElement()==F){E=B.selection.getBookmark();try{F.innerHTML=F.innerHTML}catch(D){}B.selection.moveToBookmark(E)}H.preventDefault();return}}if((G>=33&&G<=36)||(G>=37&&G<=40)||G==13||G==45){if(m.isIE&&G==13){B.undoManager.beforeChange()}if(B.undoManager.typing){y()}return}if((G<16||G>20)&&G!=224&&G!=91&&!B.undoManager.typing){B.undoManager.beforeChange();B.undoManager.add();B.undoManager.typing=true}});B.onMouseDown.add(function(){if(B.undoManager.typing){y()}})}if(m.isGecko){function A(){var s=B.dom.getAttribs(B.selection.getStart().cloneNode(false));return function(){var t=B.selection.getStart();B.dom.removeAllAttribs(t);i(s,function(D){t.setAttributeNode(D.cloneNode(true))})}}function z(){var t=B.selection;return !t.isCollapsed()&&t.getStart()!=t.getEnd()}B.onKeyPress.add(function(s,D){var t;if((D.keyCode==8||D.keyCode==46)&&z()){t=A();B.getDoc().execCommand("delete",false,null);t();return j.cancel(D)}});B.dom.bind(B.getDoc(),"cut",function(t){var s;if(z()){s=A();B.onKeyUp.addToTop(j.cancel,j);setTimeout(function(){s();B.onKeyUp.remove(j.cancel,j)},0)}})}},_isHidden:function(){var p;if(!a){return 0}p=this.selection.getSel();return(!p||!p.rangeCount||p.rangeCount==0)}})})(tinymce);(function(c){var d=c.each,e,a=true,b=false;c.EditorCommands=function(n){var l=n.dom,p=n.selection,j={state:{},exec:{},value:{}},k=n.settings,o;function q(y,x,v){var u;y=y.toLowerCase();if(u=j.exec[y]){u(y,x,v);return a}return b}function m(v){var u;v=v.toLowerCase();if(u=j.state[v]){return u(v)}return -1}function h(v){var u;v=v.toLowerCase();if(u=j.value[v]){return u(v)}return b}function t(u,v){v=v||"exec";d(u,function(y,x){d(x.toLowerCase().split(","),function(z){j[v][z]=y})})}c.extend(this,{execCommand:q,queryCommandState:m,queryCommandValue:h,addCommands:t});function f(x,v,u){if(v===e){v=b}if(u===e){u=null}return n.getDoc().execCommand(x,v,u)}function s(u){return n.formatter.match(u)}function r(u,v){n.formatter.toggle(u,v?{value:v}:e)}function i(u){o=p.getBookmark(u)}function g(){p.moveToBookmark(o)}t({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){n.undoManager.add()},"Cut,Copy,Paste":function(y){var x=n.getDoc(),u;try{f(y)}catch(v){u=a}if(u||!x.queryCommandSupported(y)){if(c.isGecko){n.windowManager.confirm(n.getLang("clipboard_msg"),function(z){if(z){open("http://www.mozilla.org/editor/midasdemo/securityprefs.html","_blank")}})}else{n.windowManager.alert(n.getLang("clipboard_no_support"))}}},unlink:function(u){if(p.isCollapsed()){p.select(p.getNode())}f(u);p.collapse(b)},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(u){var v=u.substring(7);d("left,center,right,full".split(","),function(x){if(v!=x){n.formatter.remove("align"+x)}});r("align"+v);q("mceRepaint")},"InsertUnorderedList,InsertOrderedList":function(x){var u,v;f(x);u=l.getParent(p.getNode(),"ol,ul");if(u){v=u.parentNode;if(/^(H[1-6]|P|ADDRESS|PRE)$/.test(v.nodeName)){i();l.split(v,u);g()}}},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(u){r(u)},"ForeColor,HiliteColor,FontName":function(x,v,u){r(x,u)},FontSize:function(y,x,v){var u,z;if(v>=1&&v<=7){z=c.explode(k.font_size_style_values);u=c.explode(k.font_size_classes);if(u){v=u[v-1]||v}else{v=z[v-1]||v}}r(y,v)},RemoveFormat:function(u){n.formatter.remove(u)},mceBlockQuote:function(u){r("blockquote")},FormatBlock:function(x,v,u){return r(u||"p")},mceCleanup:function(){var u=p.getBookmark();n.setContent(n.getContent({cleanup:a}),{cleanup:a});p.moveToBookmark(u)},mceRemoveNode:function(y,x,v){var u=v||p.getNode();if(u!=n.getBody()){i();n.dom.remove(u,a);g()}},mceSelectNodeDepth:function(y,x,v){var u=0;l.getParent(p.getNode(),function(z){if(z.nodeType==1&&u++==v){p.select(z);return b}},n.getBody())},mceSelectNode:function(x,v,u){p.select(u)},mceInsertContent:function(z,D,E){var C,u,x,F,y,u,A,G,B;function v(I,J,H){var K=new c.dom.TreeWalker(H?I.nextSibling:I.previousSibling,J);while((I=K.current())){if((I.nodeType==3&&c.trim(I.nodeValue).length)||I.nodeName=="BR"||I.nodeName=="IMG"){return I}if(H){K.next()}else{K.prev()}}}B={content:E,format:"html"};p.onBeforeSetContent.dispatch(p,B);E=B.content;if(E.indexOf("{$caret}")==-1){E+="{$caret}"}p.setContent('<span id="__mce">\uFEFF</span>',{no_events:false});l.setOuterHTML("__mce",E.replace(/\{\$caret\}/,'<span data-mce-type="bookmark" id="__mce">\uFEFF</span>'));C=l.select("#__mce")[0];x=l.getRoot();if(C.previousSibling&&l.isBlock(C.previousSibling)||C.parentNode==x){y=v(C,x);if(y){if(y.nodeName=="BR"){y.parentNode.insertBefore(C,y)}else{l.insertAfter(C,y)}}}while(C){if(C===x){l.setOuterHTML(F,new c.html.Serializer({},n.schema).serialize(n.parser.parse(l.getOuterHTML(F))));break}F=C;C=C.parentNode}C=l.select("#__mce")[0];if(C){y=v(C,x)||v(C,x,true);l.remove(C);if(y){u=l.createRng();if(y.nodeType==3){u.setStart(y,y.length);u.setEnd(y,y.length)}else{if(y.nodeName=="BR"){u.setStartBefore(y);u.setEndBefore(y)}else{u.setStartAfter(y);u.setEndAfter(y)}}p.setRng(u);if(!c.isIE){y=l.create("span",null,"\u00a0");u.insertNode(y);A=l.getRect(y);G=l.getViewPort(n.getWin());if((A.y>G.y+G.h||A.y<G.y)||(A.x>G.x+G.w||A.x<G.x)){n.getBody().scrollLeft=A.x;n.getBody().scrollTop=A.y}l.remove(y)}p.collapse(true)}}p.onSetContent.dispatch(p,B);n.addVisual()},mceInsertRawHTML:function(x,v,u){p.setContent("tiny_mce_marker");n.setContent(n.getContent().replace(/tiny_mce_marker/g,function(){return u}))},mceSetContent:function(x,v,u){n.setContent(u)},"Indent,Outdent":function(y){var v,u,x;v=k.indentation;u=/[a-z%]+$/i.exec(v);v=parseInt(v);if(!m("InsertUnorderedList")&&!m("InsertOrderedList")){d(p.getSelectedBlocks(),function(z){if(y=="outdent"){x=Math.max(0,parseInt(z.style.paddingLeft||0)-v);l.setStyle(z,"paddingLeft",x?x+u:"")}else{l.setStyle(z,"paddingLeft",(parseInt(z.style.paddingLeft||0)+v)+u)}})}else{f(y)}},mceRepaint:function(){var v;if(c.isGecko){try{i(a);if(p.getSel()){p.getSel().selectAllChildren(n.getBody())}p.collapse(a);g()}catch(u){}}},mceToggleFormat:function(x,v,u){n.formatter.toggle(u)},InsertHorizontalRule:function(){n.execCommand("mceInsertContent",false,"<hr />")},mceToggleVisualAid:function(){n.hasVisual=!n.hasVisual;n.addVisual()},mceReplaceContent:function(x,v,u){n.execCommand("mceInsertContent",false,u.replace(/\{\$selection\}/g,p.getContent({format:"text"})))},mceInsertLink:function(A,z,y){var x=l.getParent(p.getNode(),"a"),v,u;if(c.is(y,"string")){y={href:y}}y.href=y.href.replace(" ","%20");if(!x){if(c.isWebKit){v=l.getParent(p.getNode(),"img");if(v){u=v.style.cssFloat;v.style.cssFloat=null}}f("CreateLink",b,"javascript:mctmp(0);");if(u){v.style.cssFloat=u}d(l.select("a[href='javascript:mctmp(0);']"),function(B){l.setAttribs(B,y)})}else{if(y.href){l.setAttribs(x,y)}else{n.dom.remove(x,a)}}},selectAll:function(){var v=l.getRoot(),u=l.createRng();u.setStart(v,0);u.setEnd(v,v.childNodes.length);n.selection.setRng(u)}});t({"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(u){return s("align"+u.substring(7))},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(u){return s(u)},mceBlockQuote:function(){return s("blockquote")},Outdent:function(){var u;if(k.inline_styles){if((u=l.getParent(p.getStart(),l.isBlock))&&parseInt(u.style.paddingLeft)>0){return a}if((u=l.getParent(p.getEnd(),l.isBlock))&&parseInt(u.style.paddingLeft)>0){return a}}return m("InsertUnorderedList")||m("InsertOrderedList")||(!k.inline_styles&&!!l.getParent(p.getNode(),"BLOCKQUOTE"))},"InsertUnorderedList,InsertOrderedList":function(u){return l.getParent(p.getNode(),u=="insertunorderedlist"?"UL":"OL")}},"state");t({"FontSize,FontName":function(x){var v=0,u;if(u=l.getParent(p.getNode(),"span")){if(x=="fontsize"){v=u.style.fontSize}else{v=u.style.fontFamily.replace(/, /g,",").replace(/[\'\"]/g,"").toLowerCase()}}return v}},"value");if(k.custom_undo_redo){t({Undo:function(){n.undoManager.undo()},Redo:function(){n.undoManager.redo()}})}}})(tinymce);(function(b){var a=b.util.Dispatcher;b.UndoManager=function(e){var c,d=0,g=[];function f(){return b.trim(e.getContent({format:"raw",no_events:1}))}return c={typing:false,onAdd:new a(c),onUndo:new a(c),onRedo:new a(c),beforeChange:function(){if(g[d]){g[d].beforeBookmark=e.selection.getBookmark(2,true)}},add:function(l){var h,j=e.settings,k;l=l||{};l.content=f();k=g[d];if(k&&k.content==l.content){return null}if(j.custom_undo_redo_levels){if(g.length>j.custom_undo_redo_levels){for(h=0;h<g.length-1;h++){g[h]=g[h+1]}g.length--;d=g.length}}l.bookmark=e.selection.getBookmark(2,true);if(d<g.length-1){g.length=d+1}g.push(l);d=g.length-1;c.onAdd.dispatch(c,l);e.isNotDirty=0;return l},undo:function(){var j,h;if(c.typing){c.add();c.typing=false}if(d>0){j=g[--d];e.setContent(j.content,{format:"raw"});e.selection.moveToBookmark(j.beforeBookmark);c.onUndo.dispatch(c,j)}return j},redo:function(){var h;if(d<g.length-1){h=g[++d];e.setContent(h.content,{format:"raw"});e.selection.moveToBookmark(h.bookmark);c.onRedo.dispatch(c,h)}return h},clear:function(){g=[];d=0;c.typing=false},hasUndo:function(){return d>0||this.typing},hasRedo:function(){return d<g.length-1&&!this.typing}}}})(tinymce);(function(l){var j=l.dom.Event,c=l.isIE,a=l.isGecko,b=l.isOpera,i=l.each,h=l.extend,d=true,g=false;function k(o){var p,n,m;do{if(/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(o.nodeName)){if(p){n=o.cloneNode(false);n.appendChild(p);p=n}else{p=m=o.cloneNode(false)}p.removeAttribute("id")}}while(o=o.parentNode);if(p){return{wrapper:p,inner:m}}}function f(n,o){var m=o.ownerDocument.createRange();m.setStart(n.endContainer,n.endOffset);m.setEndAfter(o);return m.cloneContents().textContent.length==0}function e(o,q,m){var n,p;if(q.isEmpty(m)){n=q.getParent(m,"ul,ol");if(!q.getParent(n.parentNode,"ul,ol")){q.split(n,m);p=q.create("p",0,'<br data-mce-bogus="1" />');q.replace(p,m);o.select(p,1)}return g}return d}l.create("tinymce.ForceBlocks",{ForceBlocks:function(m){var n=this,o=m.settings,p;n.editor=m;n.dom=m.dom;p=(o.forced_root_block||"p").toLowerCase();o.element=p.toUpperCase();m.onPreInit.add(n.setup,n);if(o.forced_root_block){m.onInit.add(n.forceRoots,n);m.onSetContent.add(n.forceRoots,n);m.onBeforeGetContent.add(n.forceRoots,n);m.onExecCommand.add(function(q,r){if(r=="mceInsertContent"){n.forceRoots();q.nodeChanged()}})}},setup:function(){var n=this,m=n.editor,p=m.settings,r=m.dom,o=m.selection;if(p.forced_root_block){m.onBeforeExecCommand.add(n.forceRoots,n);m.onKeyUp.add(n.forceRoots,n);m.onPreProcess.add(n.forceRoots,n)}if(p.force_br_newlines){if(c){m.onKeyPress.add(function(s,t){var u;if(t.keyCode==13&&o.getNode().nodeName!="LI"){o.setContent('<br id="__" /> ',{format:"raw"});u=r.get("__");u.removeAttribute("id");o.select(u);o.collapse();return j.cancel(t)}})}}if(p.force_p_newlines){if(!c){m.onKeyPress.add(function(s,t){if(t.keyCode==13&&!t.shiftKey&&!n.insertPara(t)){j.cancel(t)}})}else{l.addUnload(function(){n._previousFormats=0});m.onKeyPress.add(function(s,t){n._previousFormats=0;if(t.keyCode==13&&!t.shiftKey&&s.selection.isCollapsed()&&p.keep_styles){n._previousFormats=k(s.selection.getStart())}});m.onKeyUp.add(function(t,v){if(v.keyCode==13&&!v.shiftKey){var u=t.selection.getStart(),s=n._previousFormats;if(!u.hasChildNodes()&&s){u=r.getParent(u,r.isBlock);if(u&&u.nodeName!="LI"){u.innerHTML="";if(n._previousFormats){u.appendChild(s.wrapper);s.inner.innerHTML="\uFEFF"}else{u.innerHTML="\uFEFF"}o.select(u,1);o.collapse(true);t.getDoc().execCommand("Delete",false,null);n._previousFormats=0}}}})}if(a){m.onKeyDown.add(function(s,t){if((t.keyCode==8||t.keyCode==46)&&!t.shiftKey){n.backspaceDelete(t,t.keyCode==8)}})}}if(l.isWebKit){function q(t){var s=o.getRng(),u,y=r.create("div",null," "),x,v=r.getViewPort(t.getWin()).h;s.insertNode(u=r.create("br"));s.setStartAfter(u);s.setEndAfter(u);o.setRng(s);if(o.getSel().focusNode==u.previousSibling){o.select(r.insertAfter(r.doc.createTextNode("\u00a0"),u));o.collapse(d)}r.insertAfter(y,u);x=r.getPos(y).y;r.remove(y);if(x>v){t.getWin().scrollTo(0,x)}}m.onKeyPress.add(function(s,t){if(t.keyCode==13&&(t.shiftKey||(p.force_br_newlines&&!r.getParent(o.getNode(),"h1,h2,h3,h4,h5,h6,ol,ul")))){q(s);j.cancel(t)}})}if(c){if(p.element!="P"){m.onKeyPress.add(function(s,t){n.lastElm=o.getNode().nodeName});m.onKeyUp.add(function(t,u){var x,v=o.getNode(),s=t.getBody();if(s.childNodes.length===1&&v.nodeName=="P"){v=r.rename(v,p.element);o.select(v);o.collapse();t.nodeChanged()}else{if(u.keyCode==13&&!u.shiftKey&&n.lastElm!="P"){x=r.getParent(v,"p");if(x){r.rename(x,p.element);t.nodeChanged()}}}})}}},find:function(u,p,q){var o=this.editor,m=o.getDoc().createTreeWalker(u,4,null,g),r=-1;while(u=m.nextNode()){r++;if(p==0&&u==q){return r}if(p==1&&r==q){return u}}return -1},forceRoots:function(v,H){var y=this,v=y.editor,L=v.getBody(),I=v.getDoc(),O=v.selection,z=O.getSel(),A=O.getRng(),M=-2,u,F,m,o,J=-16777215;var K,p,N,E,B,q=L.childNodes,D,C,x;for(D=q.length-1;D>=0;D--){K=q[D];if(K.nodeType===1&&K.getAttribute("data-mce-type")){p=null;continue}if(K.nodeType===3||(!y.dom.isBlock(K)&&K.nodeType!==8&&!/^(script|mce:script|style|mce:style)$/i.test(K.nodeName))){if(!p){if(K.nodeType!=3||/[^\s]/g.test(K.nodeValue)){if(M==-2&&A){if(!c||A.setStart){if(A.startContainer.nodeType==1&&(C=A.startContainer.childNodes[A.startOffset])&&C.nodeType==1){x=C.getAttribute("id");C.setAttribute("id","__mce")}else{if(v.dom.getParent(A.startContainer,function(n){return n===L})){F=A.startOffset;m=A.endOffset;M=y.find(L,0,A.startContainer);u=y.find(L,0,A.endContainer)}}}else{if(A.item){o=I.body.createTextRange();o.moveToElementText(A.item(0));A=o}o=I.body.createTextRange();o.moveToElementText(L);o.collapse(1);N=o.move("character",J)*-1;o=A.duplicate();o.collapse(1);E=o.move("character",J)*-1;o=A.duplicate();o.collapse(0);B=(o.move("character",J)*-1)-E;M=E-N;u=B}}p=v.dom.create(v.settings.forced_root_block);K.parentNode.replaceChild(p,K);p.appendChild(K)}}else{if(p.hasChildNodes()){p.insertBefore(K,p.firstChild)}else{p.appendChild(K)}}}else{p=null}}if(M!=-2){if(!c||A.setStart){p=L.getElementsByTagName(v.settings.element)[0];A=I.createRange();if(M!=-1){A.setStart(y.find(L,1,M),F)}else{A.setStart(p,0)}if(u!=-1){A.setEnd(y.find(L,1,u),m)}else{A.setEnd(p,0)}if(z){z.removeAllRanges();z.addRange(A)}}else{try{A=z.createRange();A.moveToElementText(L);A.collapse(1);A.moveStart("character",M);A.moveEnd("character",u);A.select()}catch(G){}}}else{if((!c||A.setStart)&&(C=v.dom.get("__mce"))){if(x){C.setAttribute("id",x)}else{C.removeAttribute("id")}A=I.createRange();A.setStartBefore(C);A.setEndBefore(C);O.setRng(A)}}},getParentBlock:function(o){var m=this.dom;return m.getParent(o,m.isBlock)},insertPara:function(R){var F=this,v=F.editor,N=v.dom,S=v.getDoc(),W=v.settings,G=v.selection.getSel(),H=G.getRangeAt(0),V=S.body;var K,L,I,P,O,q,o,u,z,m,D,U,p,x,J,M=N.getViewPort(v.getWin()),C,E,B;v.undoManager.beforeChange();K=S.createRange();K.setStart(G.anchorNode,G.anchorOffset);K.collapse(d);L=S.createRange();L.setStart(G.focusNode,G.focusOffset);L.collapse(d);I=K.compareBoundaryPoints(K.START_TO_END,L)<0;P=I?G.anchorNode:G.focusNode;O=I?G.anchorOffset:G.focusOffset;q=I?G.focusNode:G.anchorNode;o=I?G.focusOffset:G.anchorOffset;if(P===q&&/^(TD|TH)$/.test(P.nodeName)){if(P.firstChild.nodeName=="BR"){N.remove(P.firstChild)}if(P.childNodes.length==0){v.dom.add(P,W.element,null,"<br />");U=v.dom.add(P,W.element,null,"<br />")}else{J=P.innerHTML;P.innerHTML="";v.dom.add(P,W.element,null,J);U=v.dom.add(P,W.element,null,"<br />")}H=S.createRange();H.selectNodeContents(U);H.collapse(1);v.selection.setRng(H);return g}if(P==V&&q==V&&V.firstChild&&v.dom.isBlock(V.firstChild)){P=q=P.firstChild;O=o=0;K=S.createRange();K.setStart(P,0);L=S.createRange();L.setStart(q,0)}P=P.nodeName=="HTML"?S.body:P;P=P.nodeName=="BODY"?P.firstChild:P;q=q.nodeName=="HTML"?S.body:q;q=q.nodeName=="BODY"?q.firstChild:q;u=F.getParentBlock(P);z=F.getParentBlock(q);m=u?u.nodeName:W.element;if(J=F.dom.getParent(u,"li,pre")){if(J.nodeName=="LI"){return e(v.selection,F.dom,J)}return d}if(u&&(u.nodeName=="CAPTION"||/absolute|relative|fixed/gi.test(N.getStyle(u,"position",1)))){m=W.element;u=null}if(z&&(z.nodeName=="CAPTION"||/absolute|relative|fixed/gi.test(N.getStyle(u,"position",1)))){m=W.element;z=null}if(/(TD|TABLE|TH|CAPTION)/.test(m)||(u&&m=="DIV"&&/left|right/gi.test(N.getStyle(u,"float",1)))){m=W.element;u=z=null}D=(u&&u.nodeName==m)?u.cloneNode(0):v.dom.create(m);U=(z&&z.nodeName==m)?z.cloneNode(0):v.dom.create(m);U.removeAttribute("id");if(/^(H[1-6])$/.test(m)&&f(H,u)){U=v.dom.create(W.element)}J=p=P;do{if(J==V||J.nodeType==9||F.dom.isBlock(J)||/(TD|TABLE|TH|CAPTION)/.test(J.nodeName)){break}p=J}while((J=J.previousSibling?J.previousSibling:J.parentNode));J=x=q;do{if(J==V||J.nodeType==9||F.dom.isBlock(J)||/(TD|TABLE|TH|CAPTION)/.test(J.nodeName)){break}x=J}while((J=J.nextSibling?J.nextSibling:J.parentNode));if(p.nodeName==m){K.setStart(p,0)}else{K.setStartBefore(p)}K.setEnd(P,O);D.appendChild(K.cloneContents()||S.createTextNode(""));try{L.setEndAfter(x)}catch(Q){}L.setStart(q,o);U.appendChild(L.cloneContents()||S.createTextNode(""));H=S.createRange();if(!p.previousSibling&&p.parentNode.nodeName==m){H.setStartBefore(p.parentNode)}else{if(K.startContainer.nodeName==m&&K.startOffset==0){H.setStartBefore(K.startContainer)}else{H.setStart(K.startContainer,K.startOffset)}}if(!x.nextSibling&&x.parentNode.nodeName==m){H.setEndAfter(x.parentNode)}else{H.setEnd(L.endContainer,L.endOffset)}H.deleteContents();if(b){v.getWin().scrollTo(0,M.y)}if(D.firstChild&&D.firstChild.nodeName==m){D.innerHTML=D.firstChild.innerHTML}if(U.firstChild&&U.firstChild.nodeName==m){U.innerHTML=U.firstChild.innerHTML}if(N.isEmpty(D)){D.innerHTML="<br />"}function T(y,s){var r=[],Y,X,t;y.innerHTML="";if(W.keep_styles){X=s;do{if(/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(X.nodeName)){Y=X.cloneNode(g);N.setAttrib(Y,"id","");r.push(Y)}}while(X=X.parentNode)}if(r.length>0){for(t=r.length-1,Y=y;t>=0;t--){Y=Y.appendChild(r[t])}r[0].innerHTML=b?"\u00a0":"<br />";return r[0]}else{y.innerHTML=b?"\u00a0":"<br />"}}if(N.isEmpty(U)){B=T(U,q)}if(b&&parseFloat(opera.version())<9.5){H.insertNode(D);H.insertNode(U)}else{H.insertNode(U);H.insertNode(D)}U.normalize();D.normalize();function A(r){return S.createTreeWalker(r,NodeFilter.SHOW_TEXT,null,g).nextNode()||r}H=S.createRange();H.selectNodeContents(a?A(B||U):B||U);H.collapse(1);G.removeAllRanges();G.addRange(H);C=v.dom.getPos(U).y;if(C<M.y||C+25>M.y+M.h){v.getWin().scrollTo(0,C<M.y?C:C-M.h+25)}v.undoManager.add();return g},backspaceDelete:function(u,B){var C=this,s=C.editor,y=s.getBody(),q=s.dom,p,v=s.selection,o=v.getRng(),x=o.startContainer,p,z,A,m;if(!B&&o.collapsed&&x.nodeType==1&&o.startOffset==x.childNodes.length){m=new l.dom.TreeWalker(x.lastChild,x);for(p=x.lastChild;p;p=m.prev()){if(p.nodeType==3){o.setStart(p,p.nodeValue.length);o.collapse(true);v.setRng(o);return}}}if(x&&s.dom.isBlock(x)&&!/^(TD|TH)$/.test(x.nodeName)&&B){if(x.childNodes.length==0||(x.childNodes.length==1&&x.firstChild.nodeName=="BR")){p=x;while((p=p.previousSibling)&&!s.dom.isBlock(p)){}if(p){if(x!=y.firstChild){z=s.dom.doc.createTreeWalker(p,NodeFilter.SHOW_TEXT,null,g);while(A=z.nextNode()){p=A}o=s.getDoc().createRange();o.setStart(p,p.nodeValue?p.nodeValue.length:0);o.setEnd(p,p.nodeValue?p.nodeValue.length:0);v.setRng(o);s.dom.remove(x)}return j.cancel(u)}}}}})})(tinymce);(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(i){var h,g=this,f=g.editor;d(f.plugins,function(j){if(j.createControl){h=j.createControl(i,g);if(h){return false}}});switch(i){case"|":case"separator":return g.createSeparator()}if(!h&&f.buttons&&(h=f.buttons[i])){return g.createButton(i,h)}return g.add(h)},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)}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(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.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;if(g.settings.use_native_selects){k=new c.ui.NativeListBox(m,i)}else{f=l||h._cls.listbox||c.ui.ListBox;k=new f(m,i,g)}h.controls[m]=k;if(c.isWebKit){k.onPostRender.add(function(p,o){a.add(o,"mousedown",function(){g.bookmark=g.selection.getBookmark(1)});a.add(o,"focus",function(){g.selection.moveToBookmark(g.bookmark);g.bookmark=null})})}if(k.hideMenu){g.onMouseDown.add(k.hideMenu,k)}return h.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)}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(V){var M={},O=a.each,c=V.dom,q=V.selection,t=a.dom.TreeWalker,K=new a.dom.RangeUtils(c),d=V.schema.isValidChild,F=c.isBlock,l=V.settings.forced_root_block,s=c.nodeIndex,E="\uFEFF",e=/^(src|href|style)$/,S=false,B=true,p,P={apply:[],remove:[]};function z(W){return W instanceof Array}function m(X,W){return c.getParents(X,W,c.getRoot())}function b(W){return W.nodeType===1&&(W.face==="mceinline"||W.style.fontFamily==="mceinline")}function R(W){return W?M[W]:M}function k(W,X){if(W){if(typeof(W)!=="string"){O(W,function(Z,Y){k(Y,Z)})}else{X=X.length?X:[X];O(X,function(Y){if(Y.deep===p){Y.deep=!Y.selector}if(Y.split===p){Y.split=!Y.selector||Y.inline}if(Y.remove===p&&Y.selector&&!Y.inline){Y.remove="none"}if(Y.selector&&Y.inline){Y.mixed=true;Y.block_expand=true}if(typeof(Y.classes)==="string"){Y.classes=Y.classes.split(/\s+/)}});M[W]=X}}}var i=function(X){var W;V.dom.getParent(X,function(Y){W=V.dom.getStyle(Y,"text-decoration");return W&&W!=="none"});return W};var I=function(W){var X;if(W.nodeType===1&&W.parentNode&&W.parentNode.nodeType===1){X=i(W.parentNode);if(V.dom.getStyle(W,"color")&&X){V.dom.setStyle(W,"text-decoration",X)}else{if(V.dom.getStyle(W,"textdecoration")===X){V.dom.setStyle(W,"text-decoration",null)}}}};function T(Y,af,aa){var ab=R(Y),ag=ab[0],ae,X,ad,ac=q.isCollapsed();function Z(ak){var aj=ak.startContainer,an=ak.startOffset,am,al;if(aj.nodeType==1||aj.nodeValue===""){aj=aj.nodeType==1?aj.childNodes[an]:aj;if(aj){am=new t(aj,aj.parentNode);for(al=am.current();al;al=am.next()){if(al.nodeType==3&&!f(al)){ak.setStart(al,0);break}}}}return ak}function W(ak,aj){aj=aj||ag;if(ak){O(aj.styles,function(am,al){c.setStyle(ak,al,r(am,af))});O(aj.attributes,function(am,al){c.setAttrib(ak,al,r(am,af))});O(aj.classes,function(al){al=r(al,af);if(!c.hasClass(ak,al)){c.addClass(ak,al)}})}}function ah(ak){var aj=[],am,al;am=ag.inline||ag.block;al=c.create(am);W(al);K.walk(ak,function(an){var ao;function ap(aq){var au=aq.nodeName.toLowerCase(),at=aq.parentNode.nodeName.toLowerCase(),ar;if(g(au,"br")){ao=0;if(ag.block){c.remove(aq)}return}if(ag.wrapper&&x(aq,Y,af)){ao=0;return}if(ag.block&&!ag.wrapper&&G(au)){aq=c.rename(aq,am);W(aq);aj.push(aq);ao=0;return}if(ag.selector){O(ab,function(av){if("collapsed" in av&&av.collapsed!==ac){return}if(c.is(aq,av.selector)&&!b(aq)){W(aq,av);ar=true}});if(!ag.inline||ar){ao=0;return}}if(d(am,au)&&d(at,am)&&!(aq.nodeType===3&&aq.nodeValue.length===1&&aq.nodeValue.charCodeAt(0)===65279)){if(!ao){ao=al.cloneNode(S);aq.parentNode.insertBefore(ao,aq);aj.push(ao)}ao.appendChild(aq)}else{ao=0;O(a.grep(aq.childNodes),ap);ao=0}}O(an,ap)});if(ag.wrap_links===false){O(aj,function(an){function ao(at){var ar,aq,ap;if(at.nodeName==="A"){aq=al.cloneNode(S);aj.push(aq);ap=a.grep(at.childNodes);for(ar=0;ar<ap.length;ar++){aq.appendChild(ap[ar])}at.appendChild(aq)}O(a.grep(at.childNodes),ao)}ao(an)})}O(aj,function(ap){var an;function aq(at){var ar=0;O(at.childNodes,function(au){if(!f(au)&&!H(au)){ar++}});return ar}function ao(ar){var au,at;O(ar.childNodes,function(av){if(av.nodeType==1&&!H(av)&&!b(av)){au=av;return S}});if(au&&h(au,ag)){at=au.cloneNode(S);W(at);c.replace(at,ar,B);c.remove(au,1)}return at||ar}an=aq(ap);if((aj.length>1||!F(ap))&&an===0){c.remove(ap,1);return}if(ag.inline||ag.wrapper){if(!ag.exact&&an===1){ap=ao(ap)}O(ab,function(ar){O(c.select(ar.inline,ap),function(au){var at;if(ar.wrap_links===false){at=au.parentNode;do{if(at.nodeName==="A"){return}}while(at=at.parentNode)}U(ar,af,au,ar.exact?au:null)})});if(x(ap.parentNode,Y,af)){c.remove(ap,1);ap=0;return B}if(ag.merge_with_parents){c.getParent(ap.parentNode,function(ar){if(x(ar,Y,af)){c.remove(ap,1);ap=0;return B}})}if(ap){ap=u(C(ap),ap);ap=u(ap,C(ap,B))}}})}if(ag){if(aa){X=c.createRng();X.setStartBefore(aa);X.setEndAfter(aa);ah(o(X,ab))}else{if(!ac||!ag.inline||c.select("td.mceSelected,th.mceSelected").length){var ai=V.selection.getNode();ae=q.getBookmark();ah(o(q.getRng(B),ab));if(ag.styles&&(ag.styles.color||ag.styles.textDecoration)){a.walk(ai,I,"childNodes");I(ai)}q.moveToBookmark(ae);q.setRng(Z(q.getRng(B)));V.nodeChanged()}else{Q("apply",Y,af)}}}}function A(Y,ah,ab){var ac=R(Y),aj=ac[0],ag,af,X;function aa(am){var al=am.startContainer,ar=am.startOffset,aq,ap,an,ao;if(al.nodeType==3&&ar>=al.nodeValue.length-1){al=al.parentNode;ar=s(al)+1}if(al.nodeType==1){an=al.childNodes;al=an[Math.min(ar,an.length-1)];aq=new t(al);if(ar>an.length-1){aq.next()}for(ap=aq.current();ap;ap=aq.next()){if(ap.nodeType==3&&!f(ap)){ao=c.create("a",null,E);ap.parentNode.insertBefore(ao,ap);am.setStart(ap,0);q.setRng(am);c.remove(ao);return}}}}function Z(ao){var an,am,al;an=a.grep(ao.childNodes);for(am=0,al=ac.length;am<al;am++){if(U(ac[am],ah,ao,ao)){break}}if(aj.deep){for(am=0,al=an.length;am<al;am++){Z(an[am])}}}function ad(al){var am;O(m(al.parentNode).reverse(),function(an){var ao;if(!am&&an.id!="_start"&&an.id!="_end"){ao=x(an,Y,ah);if(ao&&ao.split!==false){am=an}}});return am}function W(ao,al,aq,au){var av,at,ar,an,ap,am;if(ao){am=ao.parentNode;for(av=al.parentNode;av&&av!=am;av=av.parentNode){at=av.cloneNode(S);for(ap=0;ap<ac.length;ap++){if(U(ac[ap],ah,at,at)){at=0;break}}if(at){if(ar){at.appendChild(ar)}if(!an){an=at}ar=at}}if(au&&(!aj.mixed||!F(ao))){al=c.split(ao,al)}if(ar){aq.parentNode.insertBefore(ar,aq);an.appendChild(aq)}}return al}function ai(al){return W(ad(al),al,al,true)}function ae(an){var am=c.get(an?"_start":"_end"),al=am[an?"firstChild":"lastChild"];if(H(al)){al=al[an?"firstChild":"lastChild"]}c.remove(am,true);return al}function ak(al){var am,an;al=o(al,ac,B);if(aj.split){am=J(al,B);an=J(al);if(am!=an){am=N(am,"span",{id:"_start","data-mce-type":"bookmark"});an=N(an,"span",{id:"_end","data-mce-type":"bookmark"});ai(am);ai(an);am=ae(B);an=ae()}else{am=an=ai(am)}al.startContainer=am.parentNode;al.startOffset=s(am);al.endContainer=an.parentNode;al.endOffset=s(an)+1}K.walk(al,function(ao){O(ao,function(ap){Z(ap);if(ap.nodeType===1&&V.dom.getStyle(ap,"text-decoration")==="underline"&&ap.parentNode&&i(ap.parentNode)==="underline"){U({deep:false,exact:true,inline:"span",styles:{textDecoration:"underline"}},null,ap)}})})}if(ab){X=c.createRng();X.setStartBefore(ab);X.setEndAfter(ab);ak(X);return}if(!q.isCollapsed()||!aj.inline||c.select("td.mceSelected,th.mceSelected").length){ag=q.getBookmark();ak(q.getRng(B));q.moveToBookmark(ag);if(j(Y,ah,q.getStart())){aa(q.getRng(true))}V.nodeChanged()}else{Q("remove",Y,ah)}}function D(X,Z,Y){var W=R(X);if(j(X,Z,Y)&&(!("toggle" in W[0])||W[0]["toggle"])){A(X,Z,Y)}else{T(X,Z,Y)}}function x(X,W,ac,aa){var Y=R(W),ad,ab,Z;function ae(ai,ak,al){var ah,aj,af=ak[al],ag;if(af){if(af.length===p){for(ah in af){if(af.hasOwnProperty(ah)){if(al==="attributes"){aj=c.getAttrib(ai,ah)}else{aj=L(ai,ah)}if(aa&&!aj&&!ak.exact){return}if((!aa||ak.exact)&&!g(aj,r(af[ah],ac))){return}}}}else{for(ag=0;ag<af.length;ag++){if(al==="attributes"?c.getAttrib(ai,af[ag]):L(ai,af[ag])){return ak}}}}return ak}if(Y&&X){for(ab=0;ab<Y.length;ab++){ad=Y[ab];if(h(X,ad)&&ae(X,ad,"attributes")&&ae(X,ad,"styles")){if(Z=ad.classes){for(ab=0;ab<Z.length;ab++){if(!c.hasClass(X,Z[ab])){return}}}return ad}}}}function j(Y,ab,aa){var X,Z;function W(ac){ac=c.getParent(ac,function(ad){return !!x(ad,Y,ab,true)});return x(ac,Y,ab)}if(aa){return W(aa)}if(q.isCollapsed()){for(Z=P.apply.length-1;Z>=0;Z--){if(P.apply[Z].name==Y){return true}}for(Z=P.remove.length-1;Z>=0;Z--){if(P.remove[Z].name==Y){return false}}return W(q.getNode())}aa=q.getNode();if(W(aa)){return B}X=q.getStart();if(X!=aa){if(W(X)){return B}}return S}function v(ad,ac){var aa,ab=[],Z={},Y,X,W;if(q.isCollapsed()){for(X=0;X<ad.length;X++){for(Y=P.remove.length-1;Y>=0;Y--){W=ad[X];if(P.remove[Y].name==W){Z[W]=true;break}}}for(Y=P.apply.length-1;Y>=0;Y--){for(X=0;X<ad.length;X++){W=ad[X];if(!Z[W]&&P.apply[Y].name==W){Z[W]=true;ab.push(W)}}}}aa=q.getStart();c.getParent(aa,function(ag){var af,ae;for(af=0;af<ad.length;af++){ae=ad[af];if(!Z[ae]&&x(ag,ae,ac)){Z[ae]=true;ab.push(ae)}}});return ab}function y(aa){var ac=R(aa),Z,Y,ab,X,W;if(ac){Z=q.getStart();Y=m(Z);for(X=ac.length-1;X>=0;X--){W=ac[X].selector;if(!W){return B}for(ab=Y.length-1;ab>=0;ab--){if(c.is(Y[ab],W)){return B}}}}return S}a.extend(this,{get:R,register:k,apply:T,remove:A,toggle:D,match:j,matchAll:v,matchNode:x,canApply:y});function h(W,X){if(g(W,X.inline)){return B}if(g(W,X.block)){return B}if(X.selector){return c.is(W,X.selector)}}function g(X,W){X=X||"";W=W||"";X=""+(X.nodeName||X);W=""+(W.nodeName||W);return X.toLowerCase()==W.toLowerCase()}function L(X,W){var Y=c.getStyle(X,W);if(W=="color"||W=="backgroundColor"){Y=c.toHex(Y)}if(W=="fontWeight"&&Y==700){Y="bold"}return""+Y}function r(W,X){if(typeof(W)!="string"){W=W(X)}else{if(X){W=W.replace(/%(\w+)/g,function(Z,Y){return X[Y]||Z})}}return W}function f(W){return W&&W.nodeType===3&&/^([\s\r\n]+|)$/.test(W.nodeValue)}function N(Y,X,W){var Z=c.create(X,W);Y.parentNode.insertBefore(Z,Y);Z.appendChild(Y);return Z}function o(W,ag,Z){var Y=W.startContainer,ad=W.startOffset,aj=W.endContainer,ae=W.endOffset,ai,af,ac;function ah(am,an,ak,al){var ao,ap;al=al||c.getRoot();for(;;){ao=am.parentNode;if(ao==al||(!ag[0].block_expand&&F(ao))){return am}for(ai=ao[an];ai&&ai!=am;ai=ai[ak]){if(ai.nodeType==1&&!H(ai)){return am}if(ai.nodeType==3&&!f(ai)){return am}}am=am.parentNode}return am}function ab(ak,al){if(al===p){al=ak.nodeType===3?ak.length:ak.childNodes.length}while(ak&&ak.hasChildNodes()){ak=ak.childNodes[al];if(ak){al=ak.nodeType===3?ak.length:ak.childNodes.length}}return{node:ak,offset:al}}if(Y.nodeType==1&&Y.hasChildNodes()){af=Y.childNodes.length-1;Y=Y.childNodes[ad>af?af:ad];if(Y.nodeType==3){ad=0}}if(aj.nodeType==1&&aj.hasChildNodes()){af=aj.childNodes.length-1;aj=aj.childNodes[ae>af?af:ae-1];if(aj.nodeType==3){ae=aj.nodeValue.length}}if(H(Y.parentNode)){Y=Y.parentNode}if(H(Y)){Y=Y.nextSibling||Y}if(H(aj.parentNode)){ae=c.nodeIndex(aj);aj=aj.parentNode}if(H(aj)&&aj.previousSibling){aj=aj.previousSibling;ae=aj.length}if(ag[0].inline){ac=ab(aj,ae);if(ac.node){while(ac.node&&ac.offset===0&&ac.node.previousSibling){ac=ab(ac.node.previousSibling)}if(ac.node&&ac.offset>0&&ac.node.nodeType===3&&ac.node.nodeValue.charAt(ac.offset-1)===" "){if(ac.offset>1){aj=ac.node;aj.splitText(ac.offset-1)}else{if(ac.node.previousSibling){aj=ac.node.previousSibling}}}}}if(ag[0].inline||ag[0].block_expand){Y=ah(Y,"firstChild","nextSibling");aj=ah(aj,"lastChild","previousSibling")}if(ag[0].selector&&ag[0].expand!==S&&!ag[0].inline){function aa(al,ak){var am,an,ap,ao;if(al.nodeType==3&&al.nodeValue.length==0&&al[ak]){al=al[ak]}am=m(al);for(an=0;an<am.length;an++){for(ap=0;ap<ag.length;ap++){ao=ag[ap];if("collapsed" in ao&&ao.collapsed!==W.collapsed){continue}if(c.is(am[an],ao.selector)){return am[an]}}}return al}Y=aa(Y,"previousSibling");aj=aa(aj,"nextSibling")}if(ag[0].block||ag[0].selector){function X(al,ak,an){var am;if(!ag[0].wrapper){am=c.getParent(al,ag[0].block)}if(!am){am=c.getParent(al.nodeType==3?al.parentNode:al,F)}if(am&&ag[0].wrapper){am=m(am,"ul,ol").reverse()[0]||am}if(!am){am=al;while(am[ak]&&!F(am[ak])){am=am[ak];if(g(am,"br")){break}}}return am||al}Y=X(Y,"previousSibling");aj=X(aj,"nextSibling");if(ag[0].block){if(!F(Y)){Y=ah(Y,"firstChild","nextSibling")}if(!F(aj)){aj=ah(aj,"lastChild","previousSibling")}}}if(Y.nodeType==1){ad=s(Y);Y=Y.parentNode}if(aj.nodeType==1){ae=s(aj)+1;aj=aj.parentNode}return{startContainer:Y,startOffset:ad,endContainer:aj,endOffset:ae}}function U(ac,ab,Z,W){var Y,X,aa;if(!h(Z,ac)){return S}if(ac.remove!="all"){O(ac.styles,function(ae,ad){ae=r(ae,ab);if(typeof(ad)==="number"){ad=ae;W=0}if(!W||g(L(W,ad),ae)){c.setStyle(Z,ad,"")}aa=1});if(aa&&c.getAttrib(Z,"style")==""){Z.removeAttribute("style");Z.removeAttribute("data-mce-style")}O(ac.attributes,function(af,ad){var ae;af=r(af,ab);if(typeof(ad)==="number"){ad=af;W=0}if(!W||g(c.getAttrib(W,ad),af)){if(ad=="class"){af=c.getAttrib(Z,ad);if(af){ae="";O(af.split(/\s+/),function(ag){if(/mce\w+/.test(ag)){ae+=(ae?" ":"")+ag}});if(ae){c.setAttrib(Z,ad,ae);return}}}if(ad=="class"){Z.removeAttribute("className")}if(e.test(ad)){Z.removeAttribute("data-mce-"+ad)}Z.removeAttribute(ad)}});O(ac.classes,function(ad){ad=r(ad,ab);if(!W||c.hasClass(W,ad)){c.removeClass(Z,ad)}});X=c.getAttribs(Z);for(Y=0;Y<X.length;Y++){if(X[Y].nodeName.indexOf("_")!==0){return S}}}if(ac.remove!="none"){n(Z,ac);return B}}function n(Y,Z){var W=Y.parentNode,X;if(Z.block){if(!l){function aa(ac,ab,ad){ac=C(ac,ab,ad);return !ac||(ac.nodeName=="BR"||F(ac))}if(F(Y)&&!F(W)){if(!aa(Y,S)&&!aa(Y.firstChild,B,1)){Y.insertBefore(c.create("br"),Y.firstChild)}if(!aa(Y,B)&&!aa(Y.lastChild,S,1)){Y.appendChild(c.create("br"))}}}else{if(W==c.getRoot()){if(!Z.list_block||!g(Y,Z.list_block)){O(a.grep(Y.childNodes),function(ab){if(d(l,ab.nodeName.toLowerCase())){if(!X){X=N(ab,l)}else{X.appendChild(ab)}}else{X=0}})}}}}if(Z.selector&&Z.inline&&!g(Z.inline,Y)){return}c.remove(Y,1)}function C(X,W,Y){if(X){W=W?"nextSibling":"previousSibling";for(X=Y?X:X[W];X;X=X[W]){if(X.nodeType==1||!f(X)){return X}}}}function H(W){return W&&W.nodeType==1&&W.getAttribute("data-mce-type")=="bookmark"}function u(aa,Z){var W,Y,X;function ac(af,ae){if(af.nodeName!=ae.nodeName){return S}function ad(ah){var ai={};O(c.getAttribs(ah),function(aj){var ak=aj.nodeName.toLowerCase();if(ak.indexOf("_")!==0&&ak!=="style"){ai[ak]=c.getAttrib(ah,ak)}});return ai}function ag(ak,aj){var ai,ah;for(ah in ak){if(ak.hasOwnProperty(ah)){ai=aj[ah];if(ai===p){return S}if(ak[ah]!=ai){return S}delete aj[ah]}}for(ah in aj){if(aj.hasOwnProperty(ah)){return S}}return B}if(!ag(ad(af),ad(ae))){return S}if(!ag(c.parseStyle(c.getAttrib(af,"style")),c.parseStyle(c.getAttrib(ae,"style")))){return S}return B}if(aa&&Z){function ab(ae,ad){for(Y=ae;Y;Y=Y[ad]){if(Y.nodeType==3&&Y.nodeValue.length!==0){return ae}if(Y.nodeType==1&&!H(Y)){return Y}}return ae}aa=ab(aa,"previousSibling");Z=ab(Z,"nextSibling");if(ac(aa,Z)){for(Y=aa.nextSibling;Y&&Y!=Z;){X=Y;Y=Y.nextSibling;aa.appendChild(X)}c.remove(Z);O(a.grep(Z.childNodes),function(ad){aa.appendChild(ad)});return aa}}return Z}function G(W){return/^(h[1-6]|p|div|pre|address|dl|dt|dd)$/.test(W)}function J(X,aa){var W,Z,Y;W=X[aa?"startContainer":"endContainer"];Z=X[aa?"startOffset":"endOffset"];if(W.nodeType==1){Y=W.childNodes.length-1;if(!aa&&Z){Z--}W=W.childNodes[Z>Y?Y:Z]}return W}function Q(ab,X,aa){var Y,W=P[ab],ac=P[ab=="apply"?"remove":"apply"];function ad(){return P.apply.length||P.remove.length}function Z(){P.apply=[];P.remove=[]}function ae(af){O(P.apply.reverse(),function(ag){T(ag.name,ag.vars,af);if(ag.name==="forecolor"&&ag.vars.value){I(af.parentNode)}});O(P.remove.reverse(),function(ag){A(ag.name,ag.vars,af)});c.remove(af,1);Z()}for(Y=W.length-1;Y>=0;Y--){if(W[Y].name==X){return}}W.push({name:X,vars:aa});for(Y=ac.length-1;Y>=0;Y--){if(ac[Y].name==X){ac.splice(Y,1)}}if(ad()){V.getDoc().execCommand("FontName",false,"mceinline");P.lastRng=q.getRng();O(c.select("font,span"),function(ag){var af;if(b(ag)){af=q.getBookmark();ae(ag);q.moveToBookmark(af);V.nodeChanged()}});if(!P.isListening&&ad()){P.isListening=true;O("onKeyDown,onKeyUp,onKeyPress,onMouseUp".split(","),function(af){V[af].addToTop(function(ag,ah){if(ad()&&!a.dom.RangeUtils.compareRanges(P.lastRng,q.getRng())){O(c.select("font,span"),function(aj){var ak,ai;if(b(aj)){ak=aj.firstChild;if(ak){ae(aj);ai=c.createRng();ai.setStart(ak,ak.nodeValue.length);ai.setEnd(ak,ak.nodeValue.length);q.setRng(ai);ag.nodeChanged()}else{c.remove(aj)}}});if(ah.type=="keyup"||ah.type=="mouseup"){Z()}}})})}}}}})(tinymce);tinymce.onAddEditor.add(function(e,a){var d,h,g,c=a.settings;if(c.inline_styles){h=e.explode(c.font_size_style_values);function b(j,i){e.each(i,function(l,k){if(l){g.setStyle(j,k,l)}});g.rename(j,"span")}d={font:function(j,i){b(i,{backgroundColor:i.style.backgroundColor,color:i.color,fontFamily:i.face,fontSize:h[parseInt(i.size)-1]})},u:function(j,i){b(i,{textDecoration:"underline"})},strike:function(j,i){b(i,{textDecoration:"line-through"})}};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)})}}a.onPreProcess.add(f);a.onSetContent.add(f);a.onInit.add(function(){a.selection.onSetContent.add(f)})}});
\ No newline at end of file
+(function(e){var a=/^\s*|\s*$/g,b,d="B".replace(/A(.)|B/,"$1")==="$1";var c={majorVersion:"3",minorVersion:"5.6",releaseDate:"2012-07-26",_init:function(){var s=this,q=document,o=navigator,g=o.userAgent,m,f,l,k,j,r;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.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&&/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"&&(g.hasOwnProperty&&g instanceof Array)){return true}return typeof(g)==f},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&&o instanceof 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(d){var m=tinymce.VK,t=m.BACKSPACE,u=m.DELETE,p=d.dom,E=d.selection,s=d.settings;function c(I,H){try{d.getDoc().execCommand(I,false,H)}catch(G){}}function z(){var G=d.getDoc().documentMode;return G?G:6}function j(){function G(J){var H,L,I,K;H=E.getRng();L=p.getParent(H.startContainer,p.isBlock);if(J){L=p.getNext(L,p.isBlock)}if(L){I=L.firstChild;while(I&&I.nodeType==3&&I.nodeValue.length===0){I=I.nextSibling}if(I&&I.nodeName==="SPAN"){K=I.cloneNode(false)}}d.getDoc().execCommand(J?"ForwardDelete":"Delete",false,null);L=p.getParent(H.startContainer,p.isBlock);tinymce.each(p.select("span.Apple-style-span,font.Apple-style-span",L),function(M){var N=E.getBookmark();if(K){p.replace(K.cloneNode(false),M,true)}else{p.remove(M,true)}E.moveToBookmark(N)})}d.onKeyDown.add(function(H,J){var I;I=J.keyCode==u;if(!J.isDefaultPrevented()&&(I||J.keyCode==t)&&!m.modifierPressed(J)){J.preventDefault();G(I)}});d.addCommand("Delete",function(){G()})}function F(){function G(J){var I=p.create("body");var K=J.cloneContents();I.appendChild(K);return E.serializer.serialize(I,{format:"html"})}function H(I){var K=G(I);var L=p.createRng();L.selectNode(d.getBody());var J=G(L);return K===J}d.onKeyDown.add(function(J,L){var K=L.keyCode,I;if(!L.isDefaultPrevented()&&(K==u||K==t)){I=J.selection.isCollapsed();if(I&&!p.isEmpty(J.getBody())){return}if(tinymce.isIE&&!I){return}if(!I&&!H(J.selection.getRng())){return}J.setContent("");J.selection.setCursorLocation(J.getBody(),0);J.nodeChanged()}})}function x(){d.onKeyDown.add(function(G,H){if(H.keyCode==65&&m.metaKeyPressed(H)){H.preventDefault();G.execCommand("SelectAll")}})}function y(){if(!d.settings.content_editable){p.bind(d.getDoc(),"focusin",function(G){E.setRng(E.getRng())});p.bind(d.getDoc(),"mousedown",function(G){if(G.target==d.getDoc().documentElement){d.getWin().focus();E.setRng(E.getRng())}})}}function n(){d.onKeyDown.add(function(G,J){if(!J.isDefaultPrevented()&&J.keyCode===t){if(E.isCollapsed()&&E.getRng(true).startOffset===0){var I=E.getNode();var H=I.previousSibling;if(H&&H.nodeName&&H.nodeName.toLowerCase()==="hr"){p.remove(H);tinymce.dom.Event.cancel(J)}}}})}function b(){if(!Range.prototype.getClientRects){d.onMouseDown.add(function(H,I){if(I.target.nodeName==="HTML"){var G=H.getBody();G.blur();setTimeout(function(){G.focus()},0)}})}}function B(){d.onClick.add(function(G,H){H=H.target;if(/^(IMG|HR)$/.test(H.nodeName)){E.getSel().setBaseAndExtent(H,0,H,1)}if(H.nodeName=="A"&&p.hasClass(H,"mceItemAnchor")){E.select(H)}G.nodeChanged()})}function C(){function H(){var J=p.getAttribs(E.getStart().cloneNode(false));return function(){var K=E.getStart();if(K!==d.getBody()){p.setAttrib(K,"style",null);tinymce.each(J,function(L){K.setAttributeNode(L.cloneNode(true))})}}}function G(){return !E.isCollapsed()&&p.getParent(E.getStart(),p.isBlock)!=p.getParent(E.getEnd(),p.isBlock)}function I(J,K){K.preventDefault();return false}d.onKeyPress.add(function(J,L){var K;if((L.keyCode==8||L.keyCode==46)&&G()){K=H();J.getDoc().execCommand("delete",false,null);K();L.preventDefault();return false}});p.bind(d.getDoc(),"cut",function(K){var J;if(G()){J=H();d.onKeyUp.addToTop(I);setTimeout(function(){J();d.onKeyUp.remove(I)},0)}})}function k(){var H,G;p.bind(d.getDoc(),"selectionchange",function(){if(G){clearTimeout(G);G=0}G=window.setTimeout(function(){var I=E.getRng();if(!H||!tinymce.dom.RangeUtils.compareRanges(I,H)){d.nodeChanged();H=I}},50)})}function D(){document.body.setAttribute("role","application")}function A(){d.onKeyDown.add(function(G,I){if(!I.isDefaultPrevented()&&I.keyCode===t){if(E.isCollapsed()&&E.getRng(true).startOffset===0){var H=E.getNode().previousSibling;if(H&&H.nodeName&&H.nodeName.toLowerCase()==="table"){return tinymce.dom.Event.cancel(I)}}}})}function h(){if(z()>7){return}c("RespectVisibilityInDesign",true);d.contentStyles.push(".mceHideBrInPre pre br {display: none}");p.addClass(d.getBody(),"mceHideBrInPre");d.parser.addNodeFilter("pre",function(G,I){var J=G.length,L,H,M,K;while(J--){L=G[J].getAll("br");H=L.length;while(H--){M=L[H];K=M.prev;if(K&&K.type===3&&K.value.charAt(K.value-1)!="\n"){K.value+="\n"}else{M.parent.insert(new tinymce.html.Node("#text",3),M,true).value="\n"}}}});d.serializer.addNodeFilter("pre",function(G,I){var J=G.length,L,H,M,K;while(J--){L=G[J].getAll("br");H=L.length;while(H--){M=L[H];K=M.prev;if(K&&K.type==3){K.value=K.value.replace(/\r?\n$/,"")}}}})}function f(){p.bind(d.getBody(),"mouseup",function(I){var H,G=E.getNode();if(G.nodeName=="IMG"){if(H=p.getStyle(G,"width")){p.setAttrib(G,"width",H.replace(/[^0-9%]+/g,""));p.setStyle(G,"width","")}if(H=p.getStyle(G,"height")){p.setAttrib(G,"height",H.replace(/[^0-9%]+/g,""));p.setStyle(G,"height","")}}})}function r(){d.onKeyDown.add(function(M,N){var L,G,H,J,K,O,I;L=N.keyCode==u;if(!N.isDefaultPrevented()&&(L||N.keyCode==t)&&!m.modifierPressed(N)){G=E.getRng();H=G.startContainer;J=G.startOffset;I=G.collapsed;if(H.nodeType==3&&H.nodeValue.length>0&&((J===0&&!I)||(I&&J===(L?0:1)))){nonEmptyElements=M.schema.getNonEmptyElements();N.preventDefault();K=p.create("br",{id:"__tmp"});H.parentNode.insertBefore(K,H);M.getDoc().execCommand(L?"ForwardDelete":"Delete",false,null);H=E.getRng().startContainer;O=H.previousSibling;if(O&&O.nodeType==1&&!p.isBlock(O)&&p.isEmpty(O)&&!nonEmptyElements[O.nodeName.toLowerCase()]){p.remove(O)}p.remove("__tmp")}}})}function e(){d.onKeyDown.add(function(K,L){var I,H,M,G,J;if(L.isDefaultPrevented()||L.keyCode!=m.BACKSPACE){return}I=E.getRng();H=I.startContainer;M=I.startOffset;G=p.getRoot();J=H;if(!I.collapsed||M!==0){return}while(J&&J.parentNode&&J.parentNode.firstChild==J&&J.parentNode!=G){J=J.parentNode}if(J.tagName==="BLOCKQUOTE"){K.formatter.toggle("blockquote",null,J);I.setStart(H,0);I.setEnd(H,0);E.setRng(I);E.collapse(false)}})}function l(){function G(){d._refreshContentEditable();c("StyleWithCSS",false);c("enableInlineTableEditing",false);if(!s.object_resizing){c("enableObjectResizing",false)}}if(!s.readonly){d.onBeforeExecCommand.add(G);d.onMouseDown.add(G)}}function o(){function G(H,I){tinymce.each(p.select("a"),function(L){var J=L.parentNode,K=p.getRoot();if(J.lastChild===L){while(J&&!p.isBlock(J)){if(J.parentNode.lastChild!==J||J===K){return}J=J.parentNode}p.add(J,"br",{"data-mce-bogus":1})}})}d.onExecCommand.add(function(H,I){if(I==="CreateLink"){G(H)}});d.onSetContent.add(E.onSetContent.add(G))}function v(){if(s.forced_root_block){d.onInit.add(function(){c("DefaultParagraphSeparator",s.forced_root_block)})}}function a(){function G(I,H){if(!I||!H.initial){d.execCommand("mceRepaint")}}d.onUndo.add(G);d.onRedo.add(G);d.onSetContent.add(G)}function q(){d.onKeyDown.add(function(H,I){var G;if(!I.isDefaultPrevented()&&I.keyCode==t){G=H.getDoc().selection.createRange();if(G&&G.item){I.preventDefault();H.undoManager.beforeChange();p.remove(G.item(0));H.undoManager.add()}}})}function i(){var G;if(z()>=10){G="";tinymce.each("p div h1 h2 h3 h4 h5 h6".split(" "),function(H,I){G+=(I>0?",":"")+H+":empty"});d.contentStyles.push(G+"{padding-right: 1px !important}")}}function g(){var I,H,Y,G,T,W,U,X,J,K,V,R,Q,S=document,O=d.getDoc();if(!s.object_resizing||s.webkit_fake_resize===false){return}c("enableObjectResizing",false);V={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 M(ac){var ab,aa;ab=ac.screenX-W;aa=ac.screenY-U;R=ab*T[2]+X;Q=aa*T[3]+J;R=R<5?5:R;Q=Q<5?5:Q;if(m.modifierPressed(ac)||(Y.nodeName=="IMG"&&T[2]*T[3]!==0)){R=Math.round(Q/K);Q=Math.round(R*K)}p.setStyles(G,{width:R,height:Q});if(T[2]<0&&G.clientWidth<=R){p.setStyle(G,"left",I+(X-R))}if(T[3]<0&&G.clientHeight<=Q){p.setStyle(G,"top",H+(J-Q))}}function Z(){function aa(ab,ac){if(ac){if(Y.style[ab]||!d.schema.isValid(Y.nodeName.toLowerCase(),ab)){p.setStyle(Y,ab,ac)}else{p.setAttrib(Y,ab,ac)}}}aa("width",R);aa("height",Q);p.unbind(O,"mousemove",M);p.unbind(O,"mouseup",Z);if(S!=O){p.unbind(S,"mousemove",M);p.unbind(S,"mouseup",Z)}p.remove(G);L(Y)}function L(ad){var ab,ac,aa;N();ab=p.getPos(ad);I=ab.x;H=ab.y;ac=ad.offsetWidth;aa=ad.offsetHeight;if(Y!=ad){Y=ad;R=Q=0}tinymce.each(V,function(ag,ae){var af;af=p.get("mceResizeHandle"+ae);if(!af){af=p.add(O.documentElement,"div",{id:"mceResizeHandle"+ae,"class":"mceResizeHandle",style:"cursor:"+ae+"-resize; margin:0; padding:0"});p.bind(af,"mousedown",function(ah){ah.preventDefault();Z();W=ah.screenX;U=ah.screenY;X=Y.clientWidth;J=Y.clientHeight;K=J/X;T=ag;G=Y.cloneNode(true);p.addClass(G,"mceClonedResizable");p.setStyles(G,{left:I,top:H,margin:0});O.documentElement.appendChild(G);p.bind(O,"mousemove",M);p.bind(O,"mouseup",Z);if(S!=O){p.bind(S,"mousemove",M);p.bind(S,"mouseup",Z)}})}else{p.show(af)}p.setStyles(af,{left:(ac*ag[0]+I)-(af.offsetWidth/2),top:(aa*ag[1]+H)-(af.offsetHeight/2)})});if(!tinymce.isOpera&&Y.nodeName=="IMG"){Y.setAttribute("data-mce-selected","1")}}function N(){if(Y){Y.removeAttribute("data-mce-selected")}for(var aa in V){p.hide("mceResizeHandle"+aa)}}d.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 P(){var aa=p.getParent(E.getNode(),"table,img");tinymce.each(p.select("img[data-mce-selected]"),function(ab){ab.removeAttribute("data-mce-selected")});if(aa){L(aa)}else{N()}}d.onNodeChange.add(P);p.bind(O,"selectionchange",P);d.serializer.addAttributeFilter("data-mce-selected",function(aa,ab){var ac=aa.length;while(ac--){aa[ac].attr(ab,null)}})}A();e();F();if(tinymce.isWebKit){r();j();y();B();v();if(tinymce.isIDevice){k()}else{g();x()}}if(tinymce.isIE){n();D();h();f();q();i()}if(tinymce.isGecko){n();b();C();l();o();a()}if(tinymce.isOpera){g()}};(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;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|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 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",z);v=m("block_elements","h1 h2 h3 h4 h5 h6 hr p div address pre form table tbody thead tfoot th tr td li ol ul caption blockquote center dl dt dd dir fieldset noscript menu isindex samp header footer article section hgroup aside nav figure option datalist select optgroup");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]={}}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.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}})(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-")===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(m){var o,p,x,v,z,n,q,l,t,u,k,s,y,r;s=b.makeMap("tr,td,th,tbody,thead,tfoot,table");k=h.getNonEmptyElements();for(o=0;o<m.length;o++){p=m[o];if(!p.parent){continue}v=[p];for(x=p.parent;x&&!h.isValidChild(x.name,p.name)&&!s[x.name];x=x.parent){v.push(x)}if(x&&v.length>1){v.reverse();z=n=f.filterNode(v[0].clone());for(t=0;t<v.length-1;t++){if(h.isValidChild(n.name,v[t].name)){q=f.filterNode(v[t].clone());n.append(q)}else{q=n}for(l=v[t].firstChild;l&&l!=v[t+1];){r=l.next;q.append(l);l=r}n=q}if(!z.isEmpty(k)){x.insert(z,v[0],true);x.insert(p,z)}else{x.insert(p,v[0],true)}x=v[0];if(x.isEmpty(k)||x.firstChild===x.lastChild&&x.firstChild.name==="br"){x.empty().remove()}}else{if(p.parent){if(p.name==="li"){y=p.prev;if(y&&(y.name==="ul"||y.name==="ul")){y.append(p);continue}y=p.next;if(y&&(y.name==="ul"||y.name==="ul")){y.insert(p,y.firstChild,true);continue}p.wrap(f.filterNode(new a("ul",1)));continue}if(h.isValidChild(p.parent.name,"div")&&h.isValidChild("div",p.name)){p.wrap(f.filterNode(new a("div",1)))}else{if(p.name==="style"||p.name==="script"){p.empty().remove()}else{p.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}}}S=B.prev;if(S&&S.type===3){R=S.value.replace(E,"");if(R.length>0){S.value=R}else{S.remove()}}}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(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){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&&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||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){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?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&&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(s){switch(s.type||1){case 1:if(s.selectorText){g(s.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:q(s.styleSheet);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&&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){return{rng:y.getRng()}}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(o){var s=this,m=s.dom,j,i,g,r,k,u,p,q;function h(A){var t=o[A?"start":"end"],x,y,z,v;if(t){z=t[0];for(y=r,x=t.length-1;x>=1;x--){v=y.childNodes;if(t[x]>v.length-1){return}y=v[t[x]]}if(y.nodeType===3){z=Math.min(t[0],y.nodeValue.length)}if(y.nodeType===1){z=Math.min(t[0],y.childNodes.length)}if(A){g.setStart(y,z)}else{g.setEnd(y,z)}}return true}function l(B){var v=m.get(o.id+"_"+B),A,t,y,z,x=o.keep;if(v){A=v.parentNode;if(B=="start"){if(!x){t=m.nodeIndex(v)}else{A=v.firstChild;t=1}k=u=A;p=q=t}else{if(!x){t=m.nodeIndex(v)}else{A=v.firstChild;t=1}u=A;q=t}if(!x){z=v.previousSibling;y=v.nextSibling;e(d.grep(v.childNodes),function(C){if(C.nodeType==3){C.nodeValue=C.nodeValue.replace(/\uFEFF/g,"")}});while(v=m.get(o.id+"_"+B)){m.remove(v,1)}if(z&&y&&z.nodeType==y.nodeType&&z.nodeType==3&&!d.isOpera){t=z.nodeValue.length;z.appendData(y.nodeValue);m.remove(y);if(B=="start"){k=u=z;p=q=t}else{u=z;q=t}}}}}function n(t){if(m.isBlock(t)&&!t.innerHTML&&!b){t.innerHTML='<br data-mce-bogus="1" />'}return t}if(o){if(o.start){g=m.createRng();r=m.getRoot();if(s.tridentSel){return s.tridentSel.moveToBookmark(o)}if(h(true)&&h()){s.setRng(g)}}else{if(o.id){l("start");l("end");if(k){g=m.createRng();g.setStart(n(k),p);g.setEnd(n(u),q);s.setRng(g)}}else{if(o.name){s.select(m.select(o.name)[o.index])}else{if(o.rng){s.setRng(o.rng)}}}}}},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&&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},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("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){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)}break;case u:if(i){q.moveFocus(1)}break;case y:if(o){q.moveFocus(-1)}break;case A:if(o){q.moveFocus(1)}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,"keyup",function(f){if(!d.isDisabled()&&f.keyCode==b.VK.SPACEBAR){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(l){var k;b.remove(h.id,"change",i);j=false;k=b.add(h.id,"blur",function(){if(j){return}j=true;b.add(h.id,"change",g);b.remove(h.id,"blur",k)});if(e.isWebKit&&(l.keyCode==37||l.keyCode==39)){return b.prevent(l)}if(l.keyCode==13||l.keyCode==32){g(l);return b.cancel(l)}});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}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){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",function(){n.lastIERng=n.selection.getRng()})})}}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(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.lastIERng){t.setRng(u.lastIERng)}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){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,n=m.getContainer();if(!m.removed){m.removed=1;m.hide();if(!m.settings.content_editable){j.unbind(m.getWin());j.unbind(m.getDoc())}j.unbind(m.getBody());j.clear(n);m.execCallback("remove_instance_callback",m);m.onRemove.dispatch(m);m.onExecCommand.listeners=[];k.remove(m);l.remove(n)}},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.getDoc(),b.isGecko?"blur":"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,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 A(ab){return ab instanceof Array}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)){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===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(az){var au,ax,ay,aw,av,at;au=ax=az?ad:ar;av=az?"previousSibling":"nextSibling";at=c.getRoot();if(au.nodeType==3&&!f(au)){if(az?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)){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,H)}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 I(ab){return/^(h[1-6]|p|div|pre|address|dl|dt|dd)$/.test(ab)}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,ar,av,au,aq,ay,ax=[],at,aw;ap=ao.startContainer;ar=ao.startOffset;aq=ap;if(ap.nodeType==3){if(ar!=ap.nodeValue.length||ap.nodeValue===G){au=true}aq=aq.parentNode}while(aq){if(y(aq,ab,ai)){ay=aq;break}if(aq.nextSibling){au=true}ax.push(aq);aq=aq.parentNode}if(!ay){return}if(au){av=r.getBookmark();ao.collapse(true);ao=p(ao,V(ab),true);ao=N.split(ao);B(ab,ai,ao);r.moveToBookmark(av)}else{aw=ad();aq=aw;for(at=ax.length-1;at>=0;at--){aq.appendChild(c.clone(ax[at],false));aq=aq.firstChild}aq.appendChild(c.doc.createTextNode(G));aq=aq.firstChild;c.insertAfter(aw,ay);r.setCursorLocation(aq,1)}}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(A){var v=e.getRng(true),G,j,z,u,p,M,B,o,k,n,t,J,x,C;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&&i.isBlock(O)){N=e.getRng();O.appendChild(i.create("span",null,"\u00a0"));e.select(O);O.lastChild.outerHTML="";e.setRng(N)}}function y(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=z,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)){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){N.innerHTML="<br>"}return R}function q(Q){var P,O,N;if(z.nodeType==3&&(Q?u>0:u<z.nodeValue.length)){return false}if(z.parentNode==p&&C&&!Q){return true}if(Q&&z.nodeType==1&&z==p.firstChild){return true}if(z.nodeName==="TABLE"||(z.previousSibling&&z.previousSibling.nodeName=="TABLE")){return(C&&!Q)||(!C&&Q)}P=new a(z,p);if(z.nodeType==3){if(Q&&u==0){P.prev()}else{if(!Q&&u==z.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 D(){var O=new a(z,p),N;while(N=O.current()){if(N.nodeName=="BR"){return true}N=O.next()}}function L(){var O,N;if(z&&z.nodeType==3&&u>=z.nodeValue.length){if(!b.isIE&&!D()){O=i.create("br");v.insertNode(O);v.setStartAfter(O);v.setEndAfter(O);N=true}}O=i.create("br");v.insertNode(O);if(b.isIE&&t=="PRE"&&(!M||M<8)){O.parentNode.insertBefore(i.doc.createTextNode("\r"),O)}if(!N){v.setStartAfter(O);v.setEndAfter(O)}else{v.setStartBefore(O);v.setEndBefore(O)}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){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(A.isDefaultPrevented()){return}z=v.startContainer;u=v.startOffset;x=(d.force_p_newlines?"p":"")||d.forced_root_block;x=x?x.toUpperCase():"";M=i.doc.documentMode;B=A.shiftKey;if(z.nodeType==1&&z.hasChildNodes()){C=u>z.childNodes.length-1;z=z.childNodes[Math.min(u,z.childNodes.length-1)]||z;if(C&&z.nodeType==3){u=z.nodeValue.length}else{u=0}}j=K(z);if(!j){return}h.beforeChange();if(!i.isBlock(j)&&j!=i.getRoot()){if(!x||B){L()}return}if((x&&!B)||(!x&&B)){z=l(z,u)}p=i.getParent(z,i.isBlock);n=p?i.getParent(p.parentNode,i.isBlock):null;t=p?p.nodeName.toUpperCase():"";J=n?n.nodeName.toUpperCase():"";if(t=="LI"){if(!x&&B){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(!B){L();return}}else{if((!x&&!B&&t!="LI")||(x&&B)){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);y(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
index f859d24e6a6788d5890a02f76f96c81ff2749580..bb8e58c88a6b86169d25a1b15ea6be5a8031d6f0 100644 (file)
@@ -2,4 +2,4 @@
 // 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);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(){var a=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.domLoaded){return}b.domLoaded=1;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){document.attachEvent("onmouseup",tinyMCEPopup._restoreSelection);b.dom.add(b.dom.select("head")[0],"base",{target:"_self"})}b.restoreSelection();b.resizeToInnerSize();if(!b.isWindow){b.editor.windowManager.setTitle(window,d)}else{window.focus()}if(!tinymce.isIE&&!b.isWindow){tinymce.dom.Event._add(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){a=a.target||a.srcElement;if(a.onchange){a.onchange()}return tinymce.dom.Event.cancel(a)}},_closeWinKeyHandler:function(a){a=a||window.event;if(a.keyCode==27){tinyMCEPopup.close()}},_wait:function(){if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);tinyMCEPopup._onDOMLoaded()}});if(document.documentElement.doScroll&&window==window.top){(function(){if(tinyMCEPopup.domLoaded){return}try{document.documentElement.doScroll("left")}catch(a){setTimeout(arguments.callee,0);return}tinyMCEPopup._onDOMLoaded()})()}document.attachEvent("onload",tinyMCEPopup._onDOMLoaded)}else{if(document.addEventListener){window.addEventListener("DOMContentLoaded",tinyMCEPopup._onDOMLoaded,false);window.addEventListener("load",tinyMCEPopup._onDOMLoaded,false)}}}};tinyMCEPopup.init();tinyMCEPopup._wait();
\ No newline at end of file
+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(){var a=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){document.attachEvent("onmouseup",tinyMCEPopup._restoreSelection);b.dom.add(b.dom.select("head")[0],"base",{target:"_self"})}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
index c1d47fcb7fc145df6a6b7f0dc015e76ceaf9c12a..e38fb7efbedebfd11abd901c94544448f2e9d64b 100644 (file)
@@ -1,13 +1,14 @@
+// FILE IS GENERATED BY COMBINING THE SOURCES IN THE "classes" DIRECTORY SO DON'T MODIFY THIS FILE DIRECTLY\r
 (function(win) {\r
        var whiteSpaceRe = /^\s*|\s*$/g,\r
-               undefined, isRegExpBroken = 'B'.replace(/A(.)|B/, '$1') === '$1';\r
+               undef, isRegExpBroken = 'B'.replace(/A(.)|B/, '$1') === '$1';\r
 \r
        var tinymce = {\r
                majorVersion : '3',\r
 \r
-               minorVersion : '4.2',\r
+               minorVersion : '5.6',\r
 \r
-               releaseDate : '2011-04-07',\r
+               releaseDate : '2012-07-26',\r
 \r
                _init : function() {\r
                        var t = this, d = document, na = navigator, ua = na.userAgent, i, nl, n, base, p, v;\r
 \r
                        t.isIE6 = t.isIE && /MSIE [56]/.test(ua);\r
 \r
+                       t.isIE7 = t.isIE && /MSIE [7]/.test(ua);\r
+\r
+                       t.isIE8 = t.isIE && /MSIE [8]/.test(ua);\r
+\r
+                       t.isIE9 = t.isIE && /MSIE [9]/.test(ua);\r
+\r
                        t.isGecko = !t.isWebKit && /Gecko/.test(ua);\r
 \r
                        t.isMac = ua.indexOf('Mac') != -1;\r
@@ -27,6 +34,8 @@
                        t.isAir = /adobeair/i.test(ua);\r
 \r
                        t.isIDevice = /(iPad|iPhone)/.test(ua);\r
+                       \r
+                       t.isIOS5 = t.isIDevice && ua.match(/AppleWebKit\/(\d*)/)[1]>=534;\r
 \r
                        // TinyMCE .NET webcontrol might be setting the values for TinyMCE\r
                        if (win.tinyMCEPreInit) {\r
@@ -42,7 +51,8 @@
                        // If base element found, add that infront of baseURL\r
                        nl = d.getElementsByTagName('base');\r
                        for (i=0; i<nl.length; i++) {\r
-                               if (v = nl[i].href) {\r
+                               v = nl[i].href;\r
+                               if (v) {\r
                                        // Host only value like http://site.com or http://site.com:8008\r
                                        if (/^https?:\/\/[^\/]+$/.test(v))\r
                                                v += '/';\r
 \r
                is : function(o, t) {\r
                        if (!t)\r
-                               return o !== undefined;\r
+                               return o !== undef;\r
 \r
                        if (t == 'array' && (o.hasOwnProperty && o instanceof Array))\r
                                return true;\r
 \r
                        s = s || o;\r
 \r
-                       if (o.length !== undefined) {\r
+                       if (o.length !== undef) {\r
                                // Indexed arrays, needed for Safari\r
                                for (n=0, l = o.length; n < l; n++) {\r
                                        if (cb.call(s, o[n], n, o) === false)\r
                        return -1;\r
                },\r
 \r
-               extend : function(o, e) {\r
-                       var i, l, a = arguments;\r
+               extend : function(obj, ext) {\r
+                       var i, l, name, args = arguments, value;\r
 \r
-                       for (i = 1, l = a.length; i < l; i++) {\r
-                               e = a[i];\r
+                       for (i = 1, l = args.length; i < l; i++) {\r
+                               ext = args[i];\r
+                               for (name in ext) {\r
+                                       if (ext.hasOwnProperty(name)) {\r
+                                               value = ext[name];\r
 \r
-                               tinymce.each(e, function(v, n) {\r
-                                       if (v !== undefined)\r
-                                               o[n] = v;\r
-                               });\r
+                                               if (value !== undef) {\r
+                                                       obj[name] = value;\r
+                                               }\r
+                                       }\r
+                               }\r
                        }\r
 \r
-                       return o;\r
+                       return obj;\r
                },\r
 \r
 \r
                },\r
 \r
                addUnload : function(f, s) {\r
-                       var t = this;\r
+                       var t = this, unload;\r
 \r
-                       f = {func : f, scope : s || this};\r
+                       unload = function() {\r
+                               var li = t.unloads, o, n;\r
 \r
-                       if (!t.unloads) {\r
-                               function unload() {\r
-                                       var li = t.unloads, o, n;\r
+                               if (li) {\r
+                                       // Call unload handlers\r
+                                       for (n in li) {\r
+                                               o = li[n];\r
 \r
-                                       if (li) {\r
-                                               // Call unload handlers\r
-                                               for (n in li) {\r
-                                                       o = li[n];\r
+                                               if (o && o.func)\r
+                                                       o.func.call(o.scope, 1); // Send in one arg to distinct unload and user destroy\r
+                                       }\r
 \r
-                                                       if (o && o.func)\r
-                                                               o.func.call(o.scope, 1); // Send in one arg to distinct unload and user destroy\r
-                                               }\r
+                                       // Detach unload function\r
+                                       if (win.detachEvent) {\r
+                                               win.detachEvent('onbeforeunload', fakeUnload);\r
+                                               win.detachEvent('onunload', unload);\r
+                                       } else if (win.removeEventListener)\r
+                                               win.removeEventListener('unload', unload, false);\r
 \r
-                                               // Detach unload function\r
-                                               if (win.detachEvent) {\r
-                                                       win.detachEvent('onbeforeunload', fakeUnload);\r
-                                                       win.detachEvent('onunload', unload);\r
-                                               } else if (win.removeEventListener)\r
-                                                       win.removeEventListener('unload', unload, false);\r
+                                       // Destroy references\r
+                                       t.unloads = o = li = w = unload = 0;\r
 \r
-                                               // Destroy references\r
-                                               t.unloads = o = li = w = unload = 0;\r
+                                       // Run garbarge collector on IE\r
+                                       if (win.CollectGarbage)\r
+                                               CollectGarbage();\r
+                               }\r
+                       };\r
 \r
-                                               // Run garbarge collector on IE\r
-                                               if (win.CollectGarbage)\r
-                                                       CollectGarbage();\r
-                                       }\r
-                               };\r
+                       function fakeUnload() {\r
+                               var d = document;\r
 \r
-                               function fakeUnload() {\r
-                                       var d = document;\r
+                               function stop() {\r
+                                       // Prevent memory leak\r
+                                       d.detachEvent('onstop', stop);\r
 \r
-                                       // Is there things still loading, then do some magic\r
-                                       if (d.readyState == 'interactive') {\r
-                                               function stop() {\r
-                                                       // Prevent memory leak\r
-                                                       d.detachEvent('onstop', stop);\r
+                                       // Call unload handler\r
+                                       if (unload)\r
+                                               unload();\r
 \r
-                                                       // Call unload handler\r
-                                                       if (unload)\r
-                                                               unload();\r
+                                       d = 0;\r
+                               };\r
 \r
-                                                       d = 0;\r
-                                               };\r
+                               // Is there things still loading, then do some magic\r
+                               if (d.readyState == 'interactive') {\r
+                                       // Fire unload when the currently loading page is stopped\r
+                                       if (d)\r
+                                               d.attachEvent('onstop', stop);\r
 \r
-                                               // Fire unload when the currently loading page is stopped\r
+                                       // Remove onstop listener after a while to prevent the unload function\r
+                                       // to execute if the user presses cancel in an onbeforeunload\r
+                                       // confirm dialog and then presses the browser stop button\r
+                                       win.setTimeout(function() {\r
                                                if (d)\r
-                                                       d.attachEvent('onstop', stop);\r
+                                                       d.detachEvent('onstop', stop);\r
+                                       }, 0);\r
+                               }\r
+                       };\r
 \r
-                                               // Remove onstop listener after a while to prevent the unload function\r
-                                               // to execute if the user presses cancel in an onbeforeunload\r
-                                               // confirm dialog and then presses the browser stop button\r
-                                               win.setTimeout(function() {\r
-                                                       if (d)\r
-                                                               d.detachEvent('onstop', stop);\r
-                                               }, 0);\r
-                                       }\r
-                               };\r
+                       f = {func : f, scope : s || this};\r
 \r
+                       if (!t.unloads) {\r
                                // Attach unload handler\r
                                if (win.attachEvent) {\r
                                        win.attachEvent('onunload', unload);\r
                },\r
 \r
                explode : function(s, d) {\r
-                       return s ? tinymce.map(s.split(d || ','), tinymce.trim) : s;\r
+                       if (!s || tinymce.is(s, 'array')) {\r
+                               return s;\r
+                       }\r
+\r
+                       return tinymce.map(s.split(d || ','), tinymce.trim);\r
                },\r
 \r
                _addVer : function(u) {\r
                                        var val = replace, args = arguments, i;\r
 \r
                                        for (i = 0; i < args.length - 2; i++) {\r
-                                               if (args[i] === undefined) {\r
+                                               if (args[i] === undef) {\r
                                                        val = val.replace(new RegExp('\\$' + i, 'g'), '');\r
                                                } else {\r
                                                        val = val.replace(new RegExp('\\$' + i, 'g'), args[i]);\r
        })(window);\r
 \r
 \r
+\r
 tinymce.create('tinymce.util.Dispatcher', {\r
        scope : null,\r
        listeners : null,\r
+       inDispatch: false,\r
 \r
-       Dispatcher : function(s) {\r
-               this.scope = s || this;\r
+       Dispatcher : function(scope) {\r
+               this.scope = scope || this;\r
                this.listeners = [];\r
        },\r
 \r
-       add : function(cb, s) {\r
-               this.listeners.push({cb : cb, scope : s || this.scope});\r
+       add : function(callback, scope) {\r
+               this.listeners.push({cb : callback, scope : scope || this.scope});\r
 \r
-               return cb;\r
+               return callback;\r
        },\r
 \r
-       addToTop : function(cb, s) {\r
-               this.listeners.unshift({cb : cb, scope : s || this.scope});\r
+       addToTop : function(callback, scope) {\r
+               var self = this, listener = {cb : callback, scope : scope || self.scope};\r
+\r
+               // Create new listeners if addToTop is executed in a dispatch loop\r
+               if (self.inDispatch) {\r
+                       self.listeners = [listener].concat(self.listeners);\r
+               } else {\r
+                       self.listeners.unshift(listener);\r
+               }\r
 \r
-               return cb;\r
+               return callback;\r
        },\r
 \r
-       remove : function(cb) {\r
-               var l = this.listeners, o = null;\r
+       remove : function(callback) {\r
+               var listeners = this.listeners, output = null;\r
 \r
-               tinymce.each(l, function(c, i) {\r
-                       if (cb == c.cb) {\r
-                               o = cb;\r
-                               l.splice(i, 1);\r
+               tinymce.each(listeners, function(listener, i) {\r
+                       if (callback == listener.cb) {\r
+                               output = listener;\r
+                               listeners.splice(i, 1);\r
                                return false;\r
                        }\r
                });\r
 \r
-               return o;\r
+               return output;\r
        },\r
 \r
        dispatch : function() {\r
-               var s, a = arguments, i, li = this.listeners, c;\r
+               var self = this, returnValue, args = arguments, i, listeners = self.listeners, listener;\r
 \r
+               self.inDispatch = true;\r
+               \r
                // Needs to be a real loop since the listener count might change while looping\r
                // And this is also more efficient\r
-               for (i = 0; i<li.length; i++) {\r
-                       c = li[i];\r
-                       s = c.cb.apply(c.scope, a);\r
+               for (i = 0; i < listeners.length; i++) {\r
+                       listener = listeners[i];\r
+                       returnValue = listener.cb.apply(listener.scope, args.length > 0 ? args : [listener.scope]);\r
 \r
-                       if (s === false)\r
+                       if (returnValue === false)\r
                                break;\r
                }\r
 \r
-               return s;\r
+               self.inDispatch = false;\r
+\r
+               return returnValue;\r
        }\r
 \r
        });\r
@@ -542,7 +573,7 @@ tinymce.create('tinymce.util.Dispatcher', {
 \r
        tinymce.create('tinymce.util.URI', {\r
                URI : function(u, s) {\r
-                       var t = this, o, a, b;\r
+                       var t = this, o, a, b, base_url;\r
 \r
                        // Trim whitespace\r
                        u = tinymce.trim(u);\r
@@ -550,8 +581,9 @@ tinymce.create('tinymce.util.Dispatcher', {
                        // Default settings\r
                        s = t.settings = s || {};\r
 \r
-                       // Strange app protocol or local anchor\r
-                       if (/^(mailto|tel|news|javascript|about|data):/i.test(u) || /^\s*#/.test(u)) {\r
+                       // Strange app protocol that isn't http/https or local anchor\r
+                       // For example: mailto,skype,tel etc.\r
+                       if (/^([\w\-]+):([^\/]{2})/i.test(u) || /^\s*#/.test(u)) {\r
                                t.source = u;\r
                                return;\r
                        }\r
@@ -561,12 +593,14 @@ tinymce.create('tinymce.util.Dispatcher', {
                                u = (s.base_uri ? s.base_uri.protocol || 'http' : 'http') + '://mce_host' + u;\r
 \r
                        // Relative path http:// or protocol relative //path\r
-                       if (!/^\w*:?\/\//.test(u))\r
-                               u = (s.base_uri.protocol || 'http') + '://mce_host' + t.toAbsPath(s.base_uri.path, u);\r
+                       if (!/^[\w\-]*:?\/\//.test(u)) {\r
+                               base_url = s.base_uri ? s.base_uri.path : new tinymce.util.URI(location.href).directory;\r
+                               u = ((s.base_uri && s.base_uri.protocol) || 'http') + '://mce_host' + t.toAbsPath(base_url, u);\r
+                       }\r
 \r
                        // Parse URL (Credits goes to Steave, http://blog.stevenlevithan.com/archives/parseuri)\r
                        u = u.replace(/@@/g, '(mce_at)'); // Zope 3 workaround, they use @@something\r
-                       u = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(u);\r
+                       u = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(u);\r
                        each(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"], function(v, i) {\r
                                var s = u[i];\r
 \r
@@ -577,17 +611,18 @@ tinymce.create('tinymce.util.Dispatcher', {
                                t[v] = s;\r
                        });\r
 \r
-                       if (b = s.base_uri) {\r
+                       b = s.base_uri;\r
+                       if (b) {\r
                                if (!t.protocol)\r
                                        t.protocol = b.protocol;\r
 \r
                                if (!t.userInfo)\r
                                        t.userInfo = b.userInfo;\r
 \r
-                               if (!t.port && t.host == 'mce_host')\r
+                               if (!t.port && t.host === 'mce_host')\r
                                        t.port = b.port;\r
 \r
-                               if (!t.host || t.host == 'mce_host')\r
+                               if (!t.host || t.host === 'mce_host')\r
                                        t.host = b.host;\r
 \r
                                t.source = '';\r
@@ -623,6 +658,12 @@ tinymce.create('tinymce.util.Dispatcher', {
                        if ((u.host != 'mce_host' && t.host != u.host && u.host) || t.port != u.port || t.protocol != u.protocol)\r
                                return u.getURI();\r
 \r
+                       var tu = t.getURI(), uu = u.getURI();\r
+                       \r
+                       // Allow usage of the base_uri when relative_urls = true\r
+                       if(tu == uu || (tu.charAt(tu.length - 1) == "/" && tu.substr(0, tu.length - 1) == uu))\r
+                               return tu;\r
+\r
                        o = t.toRelPath(t.path, u.path);\r
 \r
                        // Add query\r
@@ -637,7 +678,7 @@ tinymce.create('tinymce.util.Dispatcher', {
                },\r
        \r
                toAbsolute : function(u, nh) {\r
-                       var u = new tinymce.util.URI(u, {base_uri : this});\r
+                       u = new tinymce.util.URI(u, {base_uri : this});\r
 \r
                        return u.getURI(this.host == u.host && this.protocol == u.protocol ? nh : 0);\r
                },\r
@@ -668,7 +709,7 @@ tinymce.create('tinymce.util.Dispatcher', {
                                }\r
                        }\r
 \r
-                       if (bp == 1)\r
+                       if (bp === 1)\r
                                return path;\r
 \r
                        for (i = 0, l = base.length - (bp - 1); i < l; i++)\r
@@ -703,11 +744,11 @@ tinymce.create('tinymce.util.Dispatcher', {
                        // Merge relURLParts chunks\r
                        for (i = path.length - 1, o = []; i >= 0; i--) {\r
                                // Ignore empty or .\r
-                               if (path[i].length == 0 || path[i] == ".")\r
+                               if (path[i].length === 0 || path[i] === ".")\r
                                        continue;\r
 \r
                                // Is parent\r
-                               if (path[i] == '..') {\r
+                               if (path[i] === '..') {\r
                                        nb++;\r
                                        continue;\r
                                }\r
@@ -818,7 +859,7 @@ tinymce.create('tinymce.util.Dispatcher', {
                        if (b == -1) {\r
                                b = c.indexOf(p);\r
 \r
-                               if (b != 0)\r
+                               if (b !== 0)\r
                                        return null;\r
                        } else\r
                                b += 2;\r
@@ -839,19 +880,19 @@ tinymce.create('tinymce.util.Dispatcher', {
                                ((s) ? "; secure" : "");\r
                },\r
 \r
-               remove : function(n, p) {\r
-                       var d = new Date();\r
+               remove : function(name, path, domain) {\r
+                       var date = new Date();\r
 \r
-                       d.setTime(d.getTime() - 1000);\r
+                       date.setTime(date.getTime() - 1000);\r
 \r
-                       this.set(n, '', d, p, d);\r
+                       this.set(name, '', date, path, domain);\r
                }\r
        });\r
 })();\r
 \r
 (function() {\r
        function serialize(o, quote) {\r
-               var i, v, t;\r
+               var i, v, t, name;\r
 \r
                quote = quote || '"';\r
 \r
@@ -889,8 +930,11 @@ tinymce.create('tinymce.util.Dispatcher', {
 \r
                                v = '{';\r
 \r
-                               for (i in o)\r
-                                       v += typeof o[i] != 'function' ? (v.length > 1 ? ',' + quote : quote) + i + quote +':' + serialize(o[i], quote) : '';\r
+                               for (name in o) {\r
+                                       if (o.hasOwnProperty(name)) {\r
+                                               v += typeof o[name] != 'function' ? (v.length > 1 ? ',' + quote : quote) + name + quote +':' + serialize(o[name], quote) : '';\r
+                                       }\r
+                               }\r
 \r
                                return v + '}';\r
                }\r
@@ -911,10 +955,23 @@ tinymce.create('tinymce.util.Dispatcher', {
 \r
                };\r
 })();\r
+\r
 tinymce.create('static tinymce.util.XHR', {\r
        send : function(o) {\r
                var x, t, w = window, c = 0;\r
 \r
+               function ready() {\r
+                       if (!o.async || x.readyState == 4 || c++ > 10000) {\r
+                               if (o.success && c < 10000 && x.status == 200)\r
+                                       o.success.call(o.success_scope, '' + x.responseText, x, o);\r
+                               else if (o.error)\r
+                                       o.error.call(o.error_scope, c > 10000 ? 'TIMED_OUT' : 'GENERAL', x, o);\r
+\r
+                               x = null;\r
+                       } else\r
+                               w.setTimeout(ready, 10);\r
+               };\r
+\r
                // Default settings\r
                o.scope = o.scope || this;\r
                o.success_scope = o.success_scope || o.scope;\r
@@ -948,18 +1005,6 @@ tinymce.create('static tinymce.util.XHR', {
 \r
                        x.send(o.data);\r
 \r
-                       function ready() {\r
-                               if (!o.async || x.readyState == 4 || c++ > 10000) {\r
-                                       if (o.success && c < 10000 && x.status == 200)\r
-                                               o.success.call(o.success_scope, '' + x.responseText, x, o);\r
-                                       else if (o.error)\r
-                                               o.error.call(o.error_scope, c > 10000 ? 'TIMED_OUT' : 'GENERAL', x, o);\r
-\r
-                                       x = null;\r
-                               } else\r
-                                       w.setTimeout(ready, 10);\r
-                       };\r
-\r
                        // Syncronous request\r
                        if (!o.async)\r
                                return ready();\r
@@ -1024,2196 +1069,3983 @@ tinymce.create('static tinymce.util.XHR', {
                }\r
        });\r
 }());\r
-(function(tinymce) {\r
-       var namedEntities, baseEntities, reverseEntities,\r
-               attrsCharsRegExp = /[&\"\u007E-\uD7FF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,\r
-               textCharsRegExp = /[<>&\u007E-\uD7FF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,\r
-               rawCharsRegExp = /[<>&\"\']/g,\r
-               entityRegExp = /&(#)?([\w]+);/g,\r
-               asciiMap = {\r
-                               128 : "\u20AC", 130 : "\u201A", 131 : "\u0192", 132 : "\u201E", 133 : "\u2026", 134 : "\u2020",\r
-                               135 : "\u2021", 136 : "\u02C6", 137 : "\u2030", 138 : "\u0160", 139 : "\u2039", 140 : "\u0152",\r
-                               142 : "\u017D", 145 : "\u2018", 146 : "\u2019", 147 : "\u201C", 148 : "\u201D", 149 : "\u2022",\r
-                               150 : "\u2013", 151 : "\u2014", 152 : "\u02DC", 153 : "\u2122", 154 : "\u0161", 155 : "\u203A",\r
-                               156 : "\u0153", 158 : "\u017E", 159 : "\u0178"\r
-               };\r
-\r
-       // Raw entities\r
-       baseEntities = {\r
-               '"' : '&quot;',\r
-               "'" : '&#39;',\r
-               '<' : '&lt;',\r
-               '>' : '&gt;',\r
-               '&' : '&amp;'\r
+(function(tinymce){\r
+       tinymce.VK = {\r
+               BACKSPACE: 8,\r
+               DELETE: 46,\r
+               DOWN: 40,\r
+               ENTER: 13,\r
+               LEFT: 37,\r
+               RIGHT: 39,\r
+               SPACEBAR: 32,\r
+               TAB: 9,\r
+               UP: 38,\r
+\r
+               modifierPressed: function (e) {\r
+                       return e.shiftKey || e.ctrlKey || e.altKey;\r
+               },\r
+\r
+               metaKeyPressed: function(e) {\r
+                       // Check if ctrl or meta key is pressed also check if alt is false for Polish users\r
+                       return tinymce.isMac ? e.metaKey : e.ctrlKey && !e.altKey;\r
+               }\r
        };\r
+})(tinymce);\r
 \r
-       // Reverse lookup table for raw entities\r
-       reverseEntities = {\r
-               '&lt;' : '<',\r
-               '&gt;' : '>',\r
-               '&amp;' : '&',\r
-               '&quot;' : '"',\r
-               '&apos;' : "'"\r
-       };\r
+tinymce.util.Quirks = function(editor) {\r
+       var VK = tinymce.VK, BACKSPACE = VK.BACKSPACE, DELETE = VK.DELETE, dom = editor.dom, selection = editor.selection, settings = editor.settings;\r
 \r
-       // Decodes text by using the browser\r
-       function nativeDecode(text) {\r
-               var elm;\r
+       function setEditorCommandState(cmd, state) {\r
+               try {\r
+                       editor.getDoc().execCommand(cmd, false, state);\r
+               } catch (ex) {\r
+                       // Ignore\r
+               }\r
+       }\r
 \r
-               elm = document.createElement("div");\r
-               elm.innerHTML = text;\r
+       function getDocumentMode() {\r
+               var documentMode = editor.getDoc().documentMode;\r
 \r
-               return elm.textContent || elm.innerText || text;\r
+               return documentMode ? documentMode : 6;\r
        };\r
 \r
-       // Build a two way lookup table for the entities\r
-       function buildEntitiesLookup(items, radix) {\r
-               var i, chr, entity, lookup = {};\r
+       function cleanupStylesWhenDeleting() {\r
+               function removeMergedFormatSpans(isDelete) {\r
+                       var rng, blockElm, node, clonedSpan;\r
 \r
-               if (items) {\r
-                       items = items.split(',');\r
-                       radix = radix || 10;\r
+                       rng = selection.getRng();\r
 \r
-                       // Build entities lookup table\r
-                       for (i = 0; i < items.length; i += 2) {\r
-                               chr = String.fromCharCode(parseInt(items[i], radix));\r
+                       // Find root block\r
+                       blockElm = dom.getParent(rng.startContainer, dom.isBlock);\r
 \r
-                               // Only add non base entities\r
-                               if (!baseEntities[chr]) {\r
-                                       entity = '&' + items[i + 1] + ';';\r
-                                       lookup[chr] = entity;\r
-                                       lookup[entity] = chr;\r
+                       // On delete clone the root span of the next block element\r
+                       if (isDelete)\r
+                               blockElm = dom.getNext(blockElm, dom.isBlock);\r
+\r
+                       // Locate root span element and clone it since it would otherwise get merged by the "apple-style-span" on delete/backspace\r
+                       if (blockElm) {\r
+                               node = blockElm.firstChild;\r
+\r
+                               // Ignore empty text nodes\r
+                               while (node && node.nodeType == 3 && node.nodeValue.length === 0)\r
+                                       node = node.nextSibling;\r
+\r
+                               if (node && node.nodeName === 'SPAN') {\r
+                                       clonedSpan = node.cloneNode(false);\r
                                }\r
                        }\r
 \r
-                       return lookup;\r
-               }\r
-       };\r
-\r
-       // Unpack entities lookup where the numbers are in radix 32 to reduce the size\r
-       namedEntities = buildEntitiesLookup(\r
-               '50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,' +\r
-               '5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,' +\r
-               '5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,' +\r
-               '5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,' +\r
-               '68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,' +\r
-               '6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,' +\r
-               '6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,' +\r
-               '75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,' +\r
-               '7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,' +\r
-               '7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,' +\r
-               'sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,' +\r
-               'st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,' +\r
-               't9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,' +\r
-               'tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,' +\r
-               'u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,' +\r
-               '81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,' +\r
-               '8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,' +\r
-               '8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,' +\r
-               '8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,' +\r
-               '8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,' +\r
-               'nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,' +\r
-               'rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,' +\r
-               'Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,' +\r
-               '80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,' +\r
-               '811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro'\r
-       , 32);\r
+                       // Do the backspace/delete action\r
+                       editor.getDoc().execCommand(isDelete ? 'ForwardDelete' : 'Delete', false, null);\r
 \r
-       tinymce.html = tinymce.html || {};\r
+                       // Find all odd apple-style-spans\r
+                       blockElm = dom.getParent(rng.startContainer, dom.isBlock);\r
+                       tinymce.each(dom.select('span.Apple-style-span,font.Apple-style-span', blockElm), function(span) {\r
+                               var bm = selection.getBookmark();\r
 \r
-       tinymce.html.Entities = {\r
-               encodeRaw : function(text, attr) {\r
-                       return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) {\r
-                               return baseEntities[chr] || chr;\r
-                       });\r
-               },\r
+                               if (clonedSpan) {\r
+                                       dom.replace(clonedSpan.cloneNode(false), span, true);\r
+                               } else {\r
+                                       dom.remove(span, true);\r
+                               }\r
 \r
-               encodeAllRaw : function(text) {\r
-                       return ('' + text).replace(rawCharsRegExp, function(chr) {\r
-                               return baseEntities[chr] || chr;\r
+                               // Restore the selection\r
+                               selection.moveToBookmark(bm);\r
                        });\r
-               },\r
+               };\r
 \r
-               encodeNumeric : function(text, attr) {\r
-                       return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) {\r
-                               // Multi byte sequence convert it to a single entity\r
-                               if (chr.length > 1)\r
-                                       return '&#' + (((chr.charCodeAt(0) - 0xD800) * 0x400) + (chr.charCodeAt(1) - 0xDC00) + 0x10000) + ';';\r
+               editor.onKeyDown.add(function(editor, e) {\r
+                       var isDelete;\r
 \r
-                               return baseEntities[chr] || '&#' + chr.charCodeAt(0) + ';';\r
-                       });\r
-               },\r
+                       isDelete = e.keyCode == DELETE;\r
+                       if (!e.isDefaultPrevented() && (isDelete || e.keyCode == BACKSPACE) && !VK.modifierPressed(e)) {\r
+                               e.preventDefault();\r
+                               removeMergedFormatSpans(isDelete);\r
+                       }\r
+               });\r
 \r
-               encodeNamed : function(text, attr, entities) {\r
-                       entities = entities || namedEntities;\r
+               editor.addCommand('Delete', function() {removeMergedFormatSpans();});\r
+       };\r
+       \r
+       function emptyEditorWhenDeleting() {\r
+               function serializeRng(rng) {\r
+                       var body = dom.create("body");\r
+                       var contents = rng.cloneContents();\r
+                       body.appendChild(contents);\r
+                       return selection.serializer.serialize(body, {format: 'html'});\r
+               }\r
 \r
-                       return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) {\r
-                               return baseEntities[chr] || entities[chr] || chr;\r
-                       });\r
-               },\r
+               function allContentsSelected(rng) {\r
+                       var selection = serializeRng(rng);\r
 \r
-               getEncodeFunc : function(name, entities) {\r
-                       var Entities = tinymce.html.Entities;\r
+                       var allRng = dom.createRng();\r
+                       allRng.selectNode(editor.getBody());\r
 \r
-                       entities = buildEntitiesLookup(entities) || namedEntities;\r
+                       var allSelection = serializeRng(allRng);\r
+                       return selection === allSelection;\r
+               }\r
 \r
-                       function encodeNamedAndNumeric(text, attr) {\r
-                               return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) {\r
-                                       return baseEntities[chr] || entities[chr] || '&#' + chr.charCodeAt(0) + ';' || chr;\r
-                               });\r
-                       };\r
+               editor.onKeyDown.add(function(editor, e) {\r
+                       var keyCode = e.keyCode, isCollapsed;\r
 \r
-                       function encodeCustomNamed(text, attr) {\r
-                               return Entities.encodeNamed(text, attr, entities);\r
-                       };\r
+                       // Empty the editor if it's needed for example backspace at <p><b>|</b></p>\r
+                       if (!e.isDefaultPrevented() && (keyCode == DELETE || keyCode == BACKSPACE)) {\r
+                               isCollapsed = editor.selection.isCollapsed();\r
 \r
-                       // Replace + with , to be compatible with previous TinyMCE versions\r
-                       name = tinymce.makeMap(name.replace(/\+/g, ','));\r
+                               // Selection is collapsed but the editor isn't empty\r
+                               if (isCollapsed && !dom.isEmpty(editor.getBody())) {\r
+                                       return;\r
+                               }\r
 \r
-                       // Named and numeric encoder\r
-                       if (name.named && name.numeric)\r
-                               return encodeNamedAndNumeric;\r
+                               // IE deletes all contents correctly when everything is selected\r
+                               if (tinymce.isIE && !isCollapsed) {\r
+                                       return;\r
+                               }\r
 \r
-                       // Named encoder\r
-                       if (name.named) {\r
-                               // Custom names\r
-                               if (entities)\r
-                                       return encodeCustomNamed;\r
+                               // Selection isn't collapsed but not all the contents is selected\r
+                               if (!isCollapsed && !allContentsSelected(editor.selection.getRng())) {\r
+                                       return;\r
+                               }\r
 \r
-                               return Entities.encodeNamed;\r
+                               // Manually empty the editor\r
+                               editor.setContent('');\r
+                               editor.selection.setCursorLocation(editor.getBody(), 0);\r
+                               editor.nodeChanged();\r
                        }\r
+               });\r
+       };\r
 \r
-                       // Numeric\r
-                       if (name.numeric)\r
-                               return Entities.encodeNumeric;\r
+       function selectAll() {\r
+               editor.onKeyDown.add(function(editor, e) {\r
+                       if (e.keyCode == 65 && VK.metaKeyPressed(e)) {\r
+                               e.preventDefault();\r
+                               editor.execCommand('SelectAll');\r
+                       }\r
+               });\r
+       };\r
 \r
-                       // Raw encoder\r
-                       return Entities.encodeRaw;\r
-               },\r
+       function inputMethodFocus() {\r
+               if (!editor.settings.content_editable) {\r
+                       // Case 1 IME doesn't initialize if you focus the document\r
+                       dom.bind(editor.getDoc(), 'focusin', function(e) {\r
+                               selection.setRng(selection.getRng());\r
+                       });\r
 \r
-               decode : function(text) {\r
-                       return text.replace(entityRegExp, function(all, numeric, value) {\r
-                               if (numeric) {\r
-                                       value = parseInt(value);\r
+                       // Case 2 IME doesn't initialize if you click the documentElement it also doesn't properly fire the focusin event\r
+                       dom.bind(editor.getDoc(), 'mousedown', function(e) {\r
+                               if (e.target == editor.getDoc().documentElement) {\r
+                                       editor.getWin().focus();\r
+                                       selection.setRng(selection.getRng());\r
+                               }\r
+                       });\r
+               }\r
+       };\r
 \r
-                                       // Support upper UTF\r
-                                       if (value > 0xFFFF) {\r
-                                               value -= 0x10000;\r
+       function removeHrOnBackspace() {\r
+               editor.onKeyDown.add(function(editor, e) {\r
+                       if (!e.isDefaultPrevented() && e.keyCode === BACKSPACE) {\r
+                               if (selection.isCollapsed() && selection.getRng(true).startOffset === 0) {\r
+                                       var node = selection.getNode();\r
+                                       var previousSibling = node.previousSibling;\r
 \r
-                                               return String.fromCharCode(0xD800 + (value >> 10), 0xDC00 + (value & 0x3FF));\r
-                                       } else\r
-                                               return asciiMap[value] || String.fromCharCode(value);\r
+                                       if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === "hr") {\r
+                                               dom.remove(previousSibling);\r
+                                               tinymce.dom.Event.cancel(e);\r
+                                       }\r
                                }\r
+                       }\r
+               })\r
+       }\r
 \r
-                               return reverseEntities[all] || namedEntities[all] || nativeDecode(all);\r
+       function focusBody() {\r
+               // Fix for a focus bug in FF 3.x where the body element\r
+               // wouldn't get proper focus if the user clicked on the HTML element\r
+               if (!Range.prototype.getClientRects) { // Detect getClientRects got introduced in FF 4\r
+                       editor.onMouseDown.add(function(editor, e) {\r
+                               if (e.target.nodeName === "HTML") {\r
+                                       var body = editor.getBody();\r
+\r
+                                       // Blur the body it's focused but not correctly focused\r
+                                       body.blur();\r
+\r
+                                       // Refocus the body after a little while\r
+                                       setTimeout(function() {\r
+                                               body.focus();\r
+                                       }, 0);\r
+                               }\r
                        });\r
                }\r
        };\r
-})(tinymce);\r
 \r
-tinymce.html.Styles = function(settings, schema) {\r
-       var rgbRegExp = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,\r
-               urlOrStrRegExp = /(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,\r
-               styleRegExp = /\s*([^:]+):\s*([^;]+);?/g,\r
-               trimRightRegExp = /\s+$/,\r
-               urlColorRegExp = /rgb/,\r
-               undef, i, encodingLookup = {}, encodingItems;\r
+       function selectControlElements() {\r
+               editor.onClick.add(function(editor, e) {\r
+                       e = e.target;\r
 \r
-       settings = settings || {};\r
+                       // Workaround for bug, http://bugs.webkit.org/show_bug.cgi?id=12250\r
+                       // WebKit can't even do simple things like selecting an image\r
+                       // Needs tobe the setBaseAndExtend or it will fail to select floated images\r
+                       if (/^(IMG|HR)$/.test(e.nodeName)) {\r
+                               selection.getSel().setBaseAndExtent(e, 0, e, 1);\r
+                       }\r
 \r
-       encodingItems = '\\" \\\' \\; \\: ; : _'.split(' ');\r
-       for (i = 0; i < encodingItems.length; i++) {\r
-               encodingLookup[encodingItems[i]] = '_' + i;\r
-               encodingLookup['_' + i] = encodingItems[i];\r
-       }\r
+                       if (e.nodeName == 'A' && dom.hasClass(e, 'mceItemAnchor')) {\r
+                               selection.select(e);\r
+                       }\r
 \r
-       function toHex(match, r, g, b) {\r
-               function hex(val) {\r
-                       val = parseInt(val).toString(16);\r
+                       editor.nodeChanged();\r
+               });\r
+       };\r
 \r
-                       return val.length > 1 ? val : '0' + val; // 0 -> 00\r
-               };\r
+       function removeStylesWhenDeletingAccrossBlockElements() {\r
+               function getAttributeApplyFunction() {\r
+                       var template = dom.getAttribs(selection.getStart().cloneNode(false));\r
 \r
-               return '#' + hex(r) + hex(g) + hex(b);\r
-       };\r
+                       return function() {\r
+                               var target = selection.getStart();\r
 \r
-       return {\r
-               toHex : function(color) {\r
-                       return color.replace(rgbRegExp, toHex);\r
-               },\r
+                               if (target !== editor.getBody()) {\r
+                                       dom.setAttrib(target, "style", null);\r
 \r
-               parse : function(css) {\r
-                       var styles = {}, matches, name, value, isEncoded, urlConverter = settings.url_converter, urlConverterScope = settings.url_converter_scope || this;\r
-\r
-                       function compress(prefix, suffix) {\r
-                               var top, right, bottom, left;\r
-\r
-                               // Get values and check it it needs compressing\r
-                               top = styles[prefix + '-top' + suffix];\r
-                               if (!top)\r
-                                       return;\r
-\r
-                               right = styles[prefix + '-right' + suffix];\r
-                               if (top != right)\r
-                                       return;\r
-\r
-                               bottom = styles[prefix + '-bottom' + suffix];\r
-                               if (right != bottom)\r
-                                       return;\r
-\r
-                               left = styles[prefix + '-left' + suffix];\r
-                               if (bottom != left)\r
-                                       return;\r
-\r
-                               // Compress\r
-                               styles[prefix + suffix] = left;\r
-                               delete styles[prefix + '-top' + suffix];\r
-                               delete styles[prefix + '-right' + suffix];\r
-                               delete styles[prefix + '-bottom' + suffix];\r
-                               delete styles[prefix + '-left' + suffix];\r
+                                       tinymce.each(template, function(attr) {\r
+                                               target.setAttributeNode(attr.cloneNode(true));\r
+                                       });\r
+                               }\r
                        };\r
+               }\r
 \r
-                       function canCompress(key) {\r
-                               var value = styles[key], i;\r
-\r
-                               if (!value || value.indexOf(' ') < 0)\r
-                                       return;\r
+               function isSelectionAcrossElements() {\r
+                       return !selection.isCollapsed() && dom.getParent(selection.getStart(), dom.isBlock) != dom.getParent(selection.getEnd(), dom.isBlock);\r
+               }\r
 \r
-                               value = value.split(' ');\r
-                               i = value.length;\r
-                               while (i--) {\r
-                                       if (value[i] !== value[0])\r
-                                               return false;\r
-                               }\r
+               function blockEvent(editor, e) {\r
+                       e.preventDefault();\r
+                       return false;\r
+               }\r
 \r
-                               styles[key] = value[0];\r
+               editor.onKeyPress.add(function(editor, e) {\r
+                       var applyAttributes;\r
 \r
-                               return true;\r
-                       };\r
+                       if ((e.keyCode == 8 || e.keyCode == 46) && isSelectionAcrossElements()) {\r
+                               applyAttributes = getAttributeApplyFunction();\r
+                               editor.getDoc().execCommand('delete', false, null);\r
+                               applyAttributes();\r
+                               e.preventDefault();\r
+                               return false;\r
+                       }\r
+               });\r
 \r
-                       function compress2(target, a, b, c) {\r
-                               if (!canCompress(a))\r
-                                       return;\r
+               dom.bind(editor.getDoc(), 'cut', function(e) {\r
+                       var applyAttributes;\r
 \r
-                               if (!canCompress(b))\r
-                                       return;\r
+                       if (isSelectionAcrossElements()) {\r
+                               applyAttributes = getAttributeApplyFunction();\r
+                               editor.onKeyUp.addToTop(blockEvent);\r
 \r
-                               if (!canCompress(c))\r
-                                       return;\r
+                               setTimeout(function() {\r
+                                       applyAttributes();\r
+                                       editor.onKeyUp.remove(blockEvent);\r
+                               }, 0);\r
+                       }\r
+               });\r
+       }\r
 \r
-                               // Compress\r
-                               styles[target] = styles[a] + ' ' + styles[b] + ' ' + styles[c];\r
-                               delete styles[a];\r
-                               delete styles[b];\r
-                               delete styles[c];\r
-                       };\r
+       function selectionChangeNodeChanged() {\r
+               var lastRng, selectionTimer;\r
 \r
-                       // Encodes the specified string by replacing all \" \' ; : with _<num>\r
-                       function encode(str) {\r
-                               isEncoded = true;\r
+               dom.bind(editor.getDoc(), 'selectionchange', function() {\r
+                       if (selectionTimer) {\r
+                               clearTimeout(selectionTimer);\r
+                               selectionTimer = 0;\r
+                       }\r
 \r
-                               return encodingLookup[str];\r
-                       };\r
+                       selectionTimer = window.setTimeout(function() {\r
+                               var rng = selection.getRng();\r
 \r
-                       // Decodes the specified string by replacing all _<num> with it's original value \" \' etc\r
-                       // It will also decode the \" \' if keep_slashes is set to fale or omitted\r
-                       function decode(str, keep_slashes) {\r
-                               if (isEncoded) {\r
-                                       str = str.replace(/_[0-9]/g, function(str) {\r
-                                               return encodingLookup[str];\r
-                                       });\r
+                               // Compare the ranges to see if it was a real change or not\r
+                               if (!lastRng || !tinymce.dom.RangeUtils.compareRanges(rng, lastRng)) {\r
+                                       editor.nodeChanged();\r
+                                       lastRng = rng;\r
                                }\r
+                       }, 50);\r
+               });\r
+       }\r
 \r
-                               if (!keep_slashes)\r
-                                       str = str.replace(/\\([\'\";:])/g, "$1");\r
+       function ensureBodyHasRoleApplication() {\r
+               document.body.setAttribute("role", "application");\r
+       }\r
 \r
-                               return str;\r
+       function disableBackspaceIntoATable() {\r
+               editor.onKeyDown.add(function(editor, e) {\r
+                       if (!e.isDefaultPrevented() && e.keyCode === BACKSPACE) {\r
+                               if (selection.isCollapsed() && selection.getRng(true).startOffset === 0) {\r
+                                       var previousSibling = selection.getNode().previousSibling;\r
+                                       if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === "table") {\r
+                                               return tinymce.dom.Event.cancel(e);\r
+                                       }\r
+                               }\r
                        }\r
+               })\r
+       }\r
 \r
-                       if (css) {\r
-                               // Encode \" \' % and ; and : inside strings so they don't interfere with the style parsing\r
-                               css = css.replace(/\\[\"\';:_]/g, encode).replace(/\"[^\"]+\"|\'[^\']+\'/g, function(str) {\r
-                                       return str.replace(/[;:]/g, encode);\r
-                               });\r
-\r
-                               // Parse styles\r
-                               while (matches = styleRegExp.exec(css)) {\r
-                                       name = matches[1].replace(trimRightRegExp, '').toLowerCase();\r
-                                       value = matches[2].replace(trimRightRegExp, '');\r
+       function addNewLinesBeforeBrInPre() {\r
+               // IE8+ rendering mode does the right thing with BR in PRE\r
+               if (getDocumentMode() > 7) {\r
+                       return;\r
+               }\r
 \r
-                                       if (name && value.length > 0) {\r
-                                               // Opera will produce 700 instead of bold in their style values\r
-                                               if (name === 'font-weight' && value === '700')\r
-                                                       value = 'bold';\r
-                                               else if (name === 'color' || name === 'background-color') // Lowercase colors like RED\r
-                                                       value = value.toLowerCase();            \r
+                // Enable display: none in area and add a specific class that hides all BR elements in PRE to\r
+                // avoid the caret from getting stuck at the BR elements while pressing the right arrow key\r
+               setEditorCommandState('RespectVisibilityInDesign', true);\r
+               editor.contentStyles.push('.mceHideBrInPre pre br {display: none}');\r
+               dom.addClass(editor.getBody(), 'mceHideBrInPre');\r
 \r
-                                               // Convert RGB colors to HEX\r
-                                               value = value.replace(rgbRegExp, toHex);\r
+               // Adds a \n before all BR elements in PRE to get them visual\r
+               editor.parser.addNodeFilter('pre', function(nodes, name) {\r
+                       var i = nodes.length, brNodes, j, brElm, sibling;\r
 \r
-                                               // Convert URLs and force them into url('value') format\r
-                                               value = value.replace(urlOrStrRegExp, function(match, url, url2, url3, str, str2) {\r
-                                                       str = str || str2;\r
+                       while (i--) {\r
+                               brNodes = nodes[i].getAll('br');\r
+                               j = brNodes.length;\r
+                               while (j--) {\r
+                                       brElm = brNodes[j];\r
+\r
+                                       // Add \n before BR in PRE elements on older IE:s so the new lines get rendered\r
+                                       sibling = brElm.prev;\r
+                                       if (sibling && sibling.type === 3 && sibling.value.charAt(sibling.value - 1) != '\n') {\r
+                                               sibling.value += '\n';\r
+                                       } else {\r
+                                               brElm.parent.insert(new tinymce.html.Node('#text', 3), brElm, true).value = '\n';\r
+                                       }\r
+                               }\r
+                       }\r
+               });\r
 \r
-                                                       if (str) {\r
-                                                               str = decode(str);\r
+               // Removes any \n before BR elements in PRE since other browsers and in contentEditable=false mode they will be visible\r
+               editor.serializer.addNodeFilter('pre', function(nodes, name) {\r
+                       var i = nodes.length, brNodes, j, brElm, sibling;\r
 \r
-                                                               // Force strings into single quote format\r
-                                                               return "'" + str.replace(/\'/g, "\\'") + "'";\r
-                                                       }\r
+                       while (i--) {\r
+                               brNodes = nodes[i].getAll('br');\r
+                               j = brNodes.length;\r
+                               while (j--) {\r
+                                       brElm = brNodes[j];\r
+                                       sibling = brElm.prev;\r
+                                       if (sibling && sibling.type == 3) {\r
+                                               sibling.value = sibling.value.replace(/\r?\n$/, '');\r
+                                       }\r
+                               }\r
+                       }\r
+               });\r
+       }\r
 \r
-                                                       url = decode(url || url2 || url3);\r
+       function removePreSerializedStylesWhenSelectingControls() {\r
+               dom.bind(editor.getBody(), 'mouseup', function(e) {\r
+                       var value, node = selection.getNode();\r
 \r
-                                                       // Convert the URL to relative/absolute depending on config\r
-                                                       if (urlConverter)\r
-                                                               url = urlConverter.call(urlConverterScope, url, 'style');\r
+                       // Moved styles to attributes on IMG eements\r
+                       if (node.nodeName == 'IMG') {\r
+                               // Convert style width to width attribute\r
+                               if (value = dom.getStyle(node, 'width')) {\r
+                                       dom.setAttrib(node, 'width', value.replace(/[^0-9%]+/g, ''));\r
+                                       dom.setStyle(node, 'width', '');\r
+                               }\r
 \r
-                                                       // Output new URL format\r
-                                                       return "url('" + url.replace(/\'/g, "\\'") + "')";\r
-                                               });\r
+                               // Convert style height to height attribute\r
+                               if (value = dom.getStyle(node, 'height')) {\r
+                                       dom.setAttrib(node, 'height', value.replace(/[^0-9%]+/g, ''));\r
+                                       dom.setStyle(node, 'height', '');\r
+                               }\r
+                       }\r
+               });\r
+       }\r
 \r
-                                               styles[name] = isEncoded ? decode(value, true) : value;\r
+       function keepInlineElementOnDeleteBackspace() {\r
+               editor.onKeyDown.add(function(editor, e) {\r
+                       var isDelete, rng, container, offset, brElm, sibling, collapsed;\r
+\r
+                       isDelete = e.keyCode == DELETE;\r
+                       if (!e.isDefaultPrevented() && (isDelete || e.keyCode == BACKSPACE) && !VK.modifierPressed(e)) {\r
+                               rng = selection.getRng();\r
+                               container = rng.startContainer;\r
+                               offset = rng.startOffset;\r
+                               collapsed = rng.collapsed;\r
+\r
+                               // Override delete if the start container is a text node and is at the beginning of text or\r
+                               // just before/after the last character to be deleted in collapsed mode\r
+                               if (container.nodeType == 3 && container.nodeValue.length > 0 && ((offset === 0 && !collapsed) || (collapsed && offset === (isDelete ? 0 : 1)))) {\r
+                                       nonEmptyElements = editor.schema.getNonEmptyElements();\r
+\r
+                                       // Prevent default logic since it's broken\r
+                                       e.preventDefault();\r
+\r
+                                       // Insert a BR before the text node this will prevent the containing element from being deleted/converted\r
+                                       brElm = dom.create('br', {id: '__tmp'});\r
+                                       container.parentNode.insertBefore(brElm, container);\r
+\r
+                                       // Do the browser delete\r
+                                       editor.getDoc().execCommand(isDelete ? 'ForwardDelete' : 'Delete', false, null);\r
+\r
+                                       // Check if the previous sibling is empty after deleting for example: <p><b></b>|</p>\r
+                                       container = selection.getRng().startContainer;\r
+                                       sibling = container.previousSibling;\r
+                                       if (sibling && sibling.nodeType == 1 && !dom.isBlock(sibling) && dom.isEmpty(sibling) && !nonEmptyElements[sibling.nodeName.toLowerCase()]) {\r
+                                               dom.remove(sibling);\r
                                        }\r
 \r
-                                       styleRegExp.lastIndex = matches.index + matches[0].length;\r
+                                       // Remove the temp element we inserted\r
+                                       dom.remove('__tmp');\r
                                }\r
+                       }\r
+               });\r
+       }\r
 \r
-                               // Compress the styles to reduce it's size for example IE will expand styles\r
-                               compress("border", "");\r
-                               compress("border", "-width");\r
-                               compress("border", "-color");\r
-                               compress("border", "-style");\r
-                               compress("padding", "");\r
-                               compress("margin", "");\r
-                               compress2('border', 'border-width', 'border-style', 'border-color');\r
+       function removeBlockQuoteOnBackSpace() {\r
+               // Add block quote deletion handler\r
+               editor.onKeyDown.add(function(editor, e) {\r
+                       var rng, container, offset, root, parent;\r
 \r
-                               // Remove pointless border, IE produces these\r
-                               if (styles.border === 'medium none')\r
-                                       delete styles.border;\r
+                       if (e.isDefaultPrevented() || e.keyCode != VK.BACKSPACE) {\r
+                               return;\r
                        }\r
 \r
-                       return styles;\r
-               },\r
+                       rng = selection.getRng();\r
+                       container = rng.startContainer;\r
+                       offset = rng.startOffset;\r
+                       root = dom.getRoot();\r
+                       parent = container;\r
 \r
-               serialize : function(styles, element_name) {\r
-                       var css = '', name, value;\r
+                       if (!rng.collapsed || offset !== 0) {\r
+                               return;\r
+                       }\r
 \r
-                       function serializeStyles(name) {\r
-                               var styleList, i, l, name, value;\r
+                       while (parent && parent.parentNode && parent.parentNode.firstChild == parent && parent.parentNode != root) {\r
+                               parent = parent.parentNode;\r
+                       }\r
 \r
-                               styleList = schema.styles[name];\r
-                               if (styleList) {\r
-                                       for (i = 0, l = styleList.length; i < l; i++) {\r
-                                               name = styleList[i];\r
-                                               value = styles[name];\r
+                       // Is the cursor at the beginning of a blockquote?\r
+                       if (parent.tagName === 'BLOCKQUOTE') {\r
+                               // Remove the blockquote\r
+                               editor.formatter.toggle('blockquote', null, parent);\r
 \r
-                                               if (value !== undef && value.length > 0)\r
-                                                       css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';';\r
-                                       }\r
-                               }\r
-                       };\r
+                               // Move the caret to the beginning of container\r
+                               rng.setStart(container, 0);\r
+                               rng.setEnd(container, 0);\r
+                               selection.setRng(rng);\r
+                               selection.collapse(false);\r
+                       }\r
+               });\r
+       };\r
 \r
-                       // Serialize styles according to schema\r
-                       if (element_name && schema && schema.styles) {\r
-                               // Serialize global styles and element specific styles\r
-                               serializeStyles('*');\r
-                               serializeStyles(name);\r
-                       } else {\r
-                               // Output the styles in the order they are inside the object\r
-                               for (name in styles) {\r
-                                       value = styles[name];\r
+       function setGeckoEditingOptions() {\r
+               function setOpts() {\r
+                       editor._refreshContentEditable();\r
 \r
-                                       if (value !== undef && value.length > 0)\r
-                                               css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';';\r
-                               }\r
+                       setEditorCommandState("StyleWithCSS", false);\r
+                       setEditorCommandState("enableInlineTableEditing", false);\r
+\r
+                       if (!settings.object_resizing) {\r
+                               setEditorCommandState("enableObjectResizing", false);\r
                        }\r
+               };\r
 \r
-                       return css;\r
+               if (!settings.readonly) {\r
+                       editor.onBeforeExecCommand.add(setOpts);\r
+                       editor.onMouseDown.add(setOpts);\r
                }\r
        };\r
-};\r
 \r
-(function(tinymce) {\r
-       var transitional = {}, boolAttrMap, blockElementsMap, shortEndedElementsMap, nonEmptyElementsMap,\r
-               whiteSpaceElementsMap, selfClosingElementsMap, makeMap = tinymce.makeMap, each = tinymce.each;\r
+       function addBrAfterLastLinks() {\r
+               function fixLinks(editor, o) {\r
+                       tinymce.each(dom.select('a'), function(node) {\r
+                               var parentNode = node.parentNode, root = dom.getRoot();\r
 \r
-       function split(str, delim) {\r
-               return str.split(delim || ',');\r
-       };\r
+                               if (parentNode.lastChild === node) {\r
+                                       while (parentNode && !dom.isBlock(parentNode)) {\r
+                                               if (parentNode.parentNode.lastChild !== parentNode || parentNode === root) {\r
+                                                       return;\r
+                                               }\r
 \r
-       function unpack(lookup, data) {\r
-               var key, elements = {};\r
+                                               parentNode = parentNode.parentNode;\r
+                                       }\r
 \r
-               function replace(value) {\r
-                       return value.replace(/[A-Z]+/g, function(key) {\r
-                               return replace(lookup[key]);\r
+                                       dom.add(parentNode, 'br', {'data-mce-bogus' : 1});\r
+                               }\r
                        });\r
                };\r
 \r
-               // Unpack lookup\r
-               for (key in lookup) {\r
-                       if (lookup.hasOwnProperty(key))\r
-                               lookup[key] = replace(lookup[key]);\r
-               }\r
-\r
-               // Unpack and parse data into object map\r
-               replace(data).replace(/#/g, '#text').replace(/(\w+)\[([^\]]+)\]\[([^\]]*)\]/g, function(str, name, attributes, children) {\r
-                       attributes = split(attributes, '|');\r
-\r
-                       elements[name] = {\r
-                               attributes : makeMap(attributes),\r
-                               attributesOrder : attributes,\r
-                               children : makeMap(children, '|', {'#comment' : {}})\r
+               editor.onExecCommand.add(function(editor, cmd) {\r
+                       if (cmd === 'CreateLink') {\r
+                               fixLinks(editor);\r
                        }\r
                });\r
 \r
-               return elements;\r
+               editor.onSetContent.add(selection.onSetContent.add(fixLinks));\r
        };\r
 \r
-       // Build a lookup table for block elements both lowercase and uppercase\r
-       blockElementsMap = 'h1,h2,h3,h4,h5,h6,hr,p,div,address,pre,form,table,tbody,thead,tfoot,' + \r
-                                               'th,tr,td,li,ol,ul,caption,blockquote,center,dl,dt,dd,dir,fieldset,' + \r
-                                               'noscript,menu,isindex,samp,header,footer,article,section,hgroup';\r
-       blockElementsMap = makeMap(blockElementsMap, ',', makeMap(blockElementsMap.toUpperCase()));\r
-\r
-       // This is the XHTML 1.0 transitional elements with it's attributes and children packed to reduce it's size\r
-       transitional = unpack({\r
-               Z : 'H|K|N|O|P',\r
-               Y : 'X|form|R|Q',\r
-               ZG : 'E|span|width|align|char|charoff|valign',\r
-               X : 'p|T|div|U|W|isindex|fieldset|table',\r
-               ZF : 'E|align|char|charoff|valign',\r
-               W : 'pre|hr|blockquote|address|center|noframes',\r
-               ZE : 'abbr|axis|headers|scope|rowspan|colspan|align|char|charoff|valign|nowrap|bgcolor|width|height',\r
-               ZD : '[E][S]',\r
-               U : 'ul|ol|dl|menu|dir',\r
-               ZC : 'p|Y|div|U|W|table|br|span|bdo|object|applet|img|map|K|N|Q',\r
-               T : 'h1|h2|h3|h4|h5|h6',\r
-               ZB : 'X|S|Q',\r
-               S : 'R|P',\r
-               ZA : 'a|G|J|M|O|P',\r
-               R : 'a|H|K|N|O',\r
-               Q : 'noscript|P',\r
-               P : 'ins|del|script',\r
-               O : 'input|select|textarea|label|button',\r
-               N : 'M|L',\r
-               M : 'em|strong|dfn|code|q|samp|kbd|var|cite|abbr|acronym',\r
-               L : 'sub|sup',\r
-               K : 'J|I',\r
-               J : 'tt|i|b|u|s|strike',\r
-               I : 'big|small|font|basefont',\r
-               H : 'G|F',\r
-               G : 'br|span|bdo',\r
-               F : 'object|applet|img|map|iframe',\r
-               E : 'A|B|C',\r
-               D : 'accesskey|tabindex|onfocus|onblur',\r
-               C : 'onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup',\r
-               B : 'lang|xml:lang|dir',\r
-               A : 'id|class|style|title'\r
-       }, 'script[id|charset|type|language|src|defer|xml:space][]' + \r
-               'style[B|id|type|media|title|xml:space][]' + \r
-               'object[E|declare|classid|codebase|data|type|codetype|archive|standby|width|height|usemap|name|tabindex|align|border|hspace|vspace][#|param|Y]' + \r
-               'param[id|name|value|valuetype|type][]' + \r
-               'p[E|align][#|S]' + \r
-               'a[E|D|charset|type|name|href|hreflang|rel|rev|shape|coords|target][#|Z]' + \r
-               'br[A|clear][]' + \r
-               'span[E][#|S]' + \r
-               'bdo[A|C|B][#|S]' + \r
-               'applet[A|codebase|archive|code|object|alt|name|width|height|align|hspace|vspace][#|param|Y]' + \r
-               'h1[E|align][#|S]' + \r
-               'img[E|src|alt|name|longdesc|width|height|usemap|ismap|align|border|hspace|vspace][]' + \r
-               'map[B|C|A|name][X|form|Q|area]' + \r
-               'h2[E|align][#|S]' + \r
-               'iframe[A|longdesc|name|src|frameborder|marginwidth|marginheight|scrolling|align|width|height][#|Y]' + \r
-               'h3[E|align][#|S]' + \r
-               'tt[E][#|S]' + \r
-               'i[E][#|S]' + \r
-               'b[E][#|S]' + \r
-               'u[E][#|S]' + \r
-               's[E][#|S]' + \r
-               'strike[E][#|S]' + \r
-               'big[E][#|S]' + \r
-               'small[E][#|S]' + \r
-               'font[A|B|size|color|face][#|S]' + \r
-               'basefont[id|size|color|face][]' + \r
-               'em[E][#|S]' + \r
-               'strong[E][#|S]' + \r
-               'dfn[E][#|S]' + \r
-               'code[E][#|S]' + \r
-               'q[E|cite][#|S]' + \r
-               'samp[E][#|S]' + \r
-               'kbd[E][#|S]' + \r
-               'var[E][#|S]' + \r
-               'cite[E][#|S]' + \r
-               'abbr[E][#|S]' + \r
-               'acronym[E][#|S]' + \r
-               'sub[E][#|S]' + \r
-               'sup[E][#|S]' + \r
-               'input[E|D|type|name|value|checked|disabled|readonly|size|maxlength|src|alt|usemap|onselect|onchange|accept|align][]' + \r
-               'select[E|name|size|multiple|disabled|tabindex|onfocus|onblur|onchange][optgroup|option]' + \r
-               'optgroup[E|disabled|label][option]' + \r
-               'option[E|selected|disabled|label|value][]' + \r
-               'textarea[E|D|name|rows|cols|disabled|readonly|onselect|onchange][]' + \r
-               'label[E|for|accesskey|onfocus|onblur][#|S]' + \r
-               'button[E|D|name|value|type|disabled][#|p|T|div|U|W|table|G|object|applet|img|map|K|N|Q]' + \r
-               'h4[E|align][#|S]' + \r
-               'ins[E|cite|datetime][#|Y]' + \r
-               'h5[E|align][#|S]' + \r
-               'del[E|cite|datetime][#|Y]' + \r
-               'h6[E|align][#|S]' + \r
-               'div[E|align][#|Y]' + \r
-               'ul[E|type|compact][li]' + \r
-               'li[E|type|value][#|Y]' + \r
-               'ol[E|type|compact|start][li]' + \r
-               'dl[E|compact][dt|dd]' + \r
-               'dt[E][#|S]' + \r
-               'dd[E][#|Y]' + \r
-               'menu[E|compact][li]' + \r
-               'dir[E|compact][li]' + \r
-               'pre[E|width|xml:space][#|ZA]' + \r
-               'hr[E|align|noshade|size|width][]' + \r
-               'blockquote[E|cite][#|Y]' + \r
-               'address[E][#|S|p]' + \r
-               'center[E][#|Y]' + \r
-               'noframes[E][#|Y]' + \r
-               'isindex[A|B|prompt][]' + \r
-               'fieldset[E][#|legend|Y]' + \r
-               'legend[E|accesskey|align][#|S]' + \r
-               'table[E|summary|width|border|frame|rules|cellspacing|cellpadding|align|bgcolor][caption|col|colgroup|thead|tfoot|tbody|tr]' + \r
-               'caption[E|align][#|S]' + \r
-               'col[ZG][]' + \r
-               'colgroup[ZG][col]' + \r
-               'thead[ZF][tr]' + \r
-               'tr[ZF|bgcolor][th|td]' + \r
-               'th[E|ZE][#|Y]' + \r
-               'form[E|action|method|name|enctype|onsubmit|onreset|accept|accept-charset|target][#|X|R|Q]' + \r
-               'noscript[E][#|Y]' + \r
-               'td[E|ZE][#|Y]' + \r
-               'tfoot[ZF][tr]' + \r
-               'tbody[ZF][tr]' + \r
-               'area[E|D|shape|coords|href|nohref|alt|target][]' + \r
-               'base[id|href|target][]' + \r
-               'body[E|onload|onunload|background|bgcolor|text|link|vlink|alink][#|Y]'\r
-       );\r
-\r
-       boolAttrMap = makeMap('checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected,preload,autoplay,loop,controls');\r
-       shortEndedElementsMap = makeMap('area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed,source');\r
-       nonEmptyElementsMap = tinymce.extend(makeMap('td,th,iframe,video,object'), shortEndedElementsMap);\r
-       whiteSpaceElementsMap = makeMap('pre,script,style');\r
-       selfClosingElementsMap = makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr');\r
+       function setDefaultBlockType() {\r
+               if (settings.forced_root_block) {\r
+                       editor.onInit.add(function() {\r
+                               setEditorCommandState('DefaultParagraphSeparator', settings.forced_root_block);\r
+                       });\r
+               }\r
+       }\r
 \r
-       tinymce.html.Schema = function(settings) {\r
-               var self = this, elements = {}, children = {}, patternElements = [], validStyles;\r
+       function removeGhostSelection() {\r
+               function repaint(sender, args) {\r
+                       if (!sender || !args.initial) {\r
+                               editor.execCommand('mceRepaint');\r
+                       }\r
+               };\r
 \r
-               settings = settings || {};\r
+               editor.onUndo.add(repaint);\r
+               editor.onRedo.add(repaint);\r
+               editor.onSetContent.add(repaint);\r
+       };\r
 \r
-               // Allow all elements and attributes if verify_html is set to false\r
-               if (settings.verify_html === false)\r
-                       settings.valid_elements = '*[*]';\r
+       function deleteControlItemOnBackSpace() {\r
+               editor.onKeyDown.add(function(editor, e) {\r
+                       var rng;\r
+\r
+                       if (!e.isDefaultPrevented() && e.keyCode == BACKSPACE) {\r
+                               rng = editor.getDoc().selection.createRange();\r
+                               if (rng && rng.item) {\r
+                                       e.preventDefault();\r
+                                       editor.undoManager.beforeChange();\r
+                                       dom.remove(rng.item(0));\r
+                                       editor.undoManager.add();\r
+                               }\r
+                       }\r
+               });\r
+       };\r
 \r
-               // Build styles list\r
-               if (settings.valid_styles) {\r
-                       validStyles = {};\r
+       function renderEmptyBlocksFix() {\r
+               var emptyBlocksCSS;\r
 \r
-                       // Convert styles into a rule list\r
-                       each(settings.valid_styles, function(value, key) {\r
-                               validStyles[key] = tinymce.explode(value);\r
+               // IE10+\r
+               if (getDocumentMode() >= 10) {\r
+                       emptyBlocksCSS = '';\r
+                       tinymce.each('p div h1 h2 h3 h4 h5 h6'.split(' '), function(name, i) {\r
+                               emptyBlocksCSS += (i > 0 ? ',' : '') + name + ':empty';\r
                        });\r
+\r
+                       editor.contentStyles.push(emptyBlocksCSS + '{padding-right: 1px !important}');\r
                }\r
+       };\r
 \r
-               // Converts a wildcard expression string to a regexp for example *a will become /.*a/.\r
-               function patternToRegExp(str) {\r
-                       return new RegExp('^' + str.replace(/([?+*])/g, '.$1') + '$');\r
+       function fakeImageResize() {\r
+               var selectedElmX, selectedElmY, selectedElm, selectedElmGhost, selectedHandle, startX, startY, startW, startH, ratio,\r
+                       resizeHandles, width, height, rootDocument = document, editableDoc = editor.getDoc();\r
+\r
+               if (!settings.object_resizing || settings.webkit_fake_resize === false) {\r
+                       return;\r
+               }\r
+\r
+               // Try disabling object resizing if WebKit implements resizing in the future\r
+               setEditorCommandState("enableObjectResizing", false);\r
+\r
+               // Details about each resize handle how to scale etc\r
+               resizeHandles = {\r
+                       // Name: x multiplier, y multiplier, delta size x, delta size y\r
+                       n: [.5, 0, 0, -1],\r
+                       e: [1, .5, 1, 0],\r
+                       s: [.5, 1, 0, 1],\r
+                       w: [0, .5, -1, 0],\r
+                       nw: [0, 0, -1, -1],\r
+                       ne: [1, 0, 1, -1],\r
+                       se: [1, 1, 1, 1],\r
+                       sw : [0, 1, -1, 1]\r
                };\r
 \r
-               // Parses the specified valid_elements string and adds to the current rules\r
-               // This function is a bit hard to read since it's heavily optimized for speed\r
-               function addValidElements(valid_elements) {\r
-                       var ei, el, ai, al, yl, matches, element, attr, attrData, elementName, attrName, attrType, attributes, attributesOrder,\r
-                               prefix, outputName, globalAttributes, globalAttributesOrder, transElement, key, childKey, value,\r
-                               elementRuleRegExp = /^([#+-])?([^\[\/]+)(?:\/([^\[]+))?(?:\[([^\]]+)\])?$/,\r
-                               attrRuleRegExp = /^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,\r
-                               hasPatternsRegExp = /[*?+]/;\r
+               function resizeElement(e) {\r
+                       var deltaX, deltaY;\r
 \r
-                       if (valid_elements) {\r
-                               // Split valid elements into an array with rules\r
-                               valid_elements = split(valid_elements);\r
+                       // Calc new width/height\r
+                       deltaX = e.screenX - startX;\r
+                       deltaY = e.screenY - startY;\r
 \r
-                               if (elements['@']) {\r
-                                       globalAttributes = elements['@'].attributes;\r
-                                       globalAttributesOrder = elements['@'].attributesOrder;\r
-                               }\r
+                       // Calc new size\r
+                       width = deltaX * selectedHandle[2] + startW;\r
+                       height = deltaY * selectedHandle[3] + startH;\r
 \r
-                               // Loop all rules\r
-                               for (ei = 0, el = valid_elements.length; ei < el; ei++) {\r
-                                       // Parse element rule\r
-                                       matches = elementRuleRegExp.exec(valid_elements[ei]);\r
-                                       if (matches) {\r
-                                               // Setup local names for matches\r
-                                               prefix = matches[1];\r
-                                               elementName = matches[2];\r
-                                               outputName = matches[3];\r
-                                               attrData = matches[4];\r
-\r
-                                               // Create new attributes and attributesOrder\r
-                                               attributes = {};\r
-                                               attributesOrder = [];\r
-\r
-                                               // Create the new element\r
-                                               element = {\r
-                                                       attributes : attributes,\r
-                                                       attributesOrder : attributesOrder\r
-                                               };\r
-\r
-                                               // Padd empty elements prefix\r
-                                               if (prefix === '#')\r
-                                                       element.paddEmpty = true;\r
-\r
-                                               // Remove empty elements prefix\r
-                                               if (prefix === '-')\r
-                                                       element.removeEmpty = true;\r
+                       // Never scale down lower than 5 pixels\r
+                       width = width < 5 ? 5 : width;\r
+                       height = height < 5 ? 5 : height;\r
 \r
-                                               // Copy attributes from global rule into current rule\r
-                                               if (globalAttributes) {\r
-                                                       for (key in globalAttributes)\r
-                                                               attributes[key] = globalAttributes[key];\r
+                       // Constrain proportions when modifier key is pressed or if the nw, ne, sw, se corners are moved on an image\r
+                       if (VK.modifierPressed(e) || (selectedElm.nodeName == "IMG" && selectedHandle[2] * selectedHandle[3] !== 0)) {\r
+                               width = Math.round(height / ratio);\r
+                               height = Math.round(width * ratio);\r
+                       }\r
 \r
-                                                       attributesOrder.push.apply(attributesOrder, globalAttributesOrder);\r
-                                               }\r
+                       // Update ghost size\r
+                       dom.setStyles(selectedElmGhost, {\r
+                               width: width,\r
+                               height: height\r
+                       });\r
 \r
-                                               // Attributes defined\r
-                                               if (attrData) {\r
-                                                       attrData = split(attrData, '|');\r
-                                                       for (ai = 0, al = attrData.length; ai < al; ai++) {\r
-                                                               matches = attrRuleRegExp.exec(attrData[ai]);\r
-                                                               if (matches) {\r
-                                                                       attr = {};\r
-                                                                       attrType = matches[1];\r
-                                                                       attrName = matches[2].replace(/::/g, ':');\r
-                                                                       prefix = matches[3];\r
-                                                                       value = matches[4];\r
+                       // Update ghost X position if needed\r
+                       if (selectedHandle[2] < 0 && selectedElmGhost.clientWidth <= width) {\r
+                               dom.setStyle(selectedElmGhost, 'left', selectedElmX + (startW - width));\r
+                       }\r
 \r
-                                                                       // Required\r
-                                                                       if (attrType === '!') {\r
-                                                                               element.attributesRequired = element.attributesRequired || [];\r
-                                                                               element.attributesRequired.push(attrName);\r
-                                                                               attr.required = true;\r
-                                                                       }\r
+                       // Update ghost Y position if needed\r
+                       if (selectedHandle[3] < 0 && selectedElmGhost.clientHeight <= height) {\r
+                               dom.setStyle(selectedElmGhost, 'top', selectedElmY + (startH - height));\r
+                       }\r
+               }\r
 \r
-                                                                       // Denied from global\r
-                                                                       if (attrType === '-') {\r
-                                                                               delete attributes[attrName];\r
-                                                                               attributesOrder.splice(tinymce.inArray(attributesOrder, attrName), 1);\r
-                                                                               continue;\r
-                                                                       }\r
+               function endResize() {\r
+                       function setSizeProp(name, value) {\r
+                               if (value) {\r
+                                       // Resize by using style or attribute\r
+                                       if (selectedElm.style[name] || !editor.schema.isValid(selectedElm.nodeName.toLowerCase(), name)) {\r
+                                               dom.setStyle(selectedElm, name, value);\r
+                                       } else {\r
+                                               dom.setAttrib(selectedElm, name, value);\r
+                                       }\r
+                               }\r
+                       }\r
 \r
-                                                                       // Default value\r
-                                                                       if (prefix) {\r
-                                                                               // Default value\r
-                                                                               if (prefix === '=') {\r
-                                                                                       element.attributesDefault = element.attributesDefault || [];\r
-                                                                                       element.attributesDefault.push({name: attrName, value: value});\r
-                                                                                       attr.defaultValue = value;\r
-                                                                               }\r
+                       // Set width/height properties\r
+                       setSizeProp('width', width);\r
+                       setSizeProp('height', height);\r
 \r
-                                                                               // Forced value\r
-                                                                               if (prefix === ':') {\r
-                                                                                       element.attributesForced = element.attributesForced || [];\r
-                                                                                       element.attributesForced.push({name: attrName, value: value});\r
-                                                                                       attr.forcedValue = value;\r
-                                                                               }\r
+                       dom.unbind(editableDoc, 'mousemove', resizeElement);\r
+                       dom.unbind(editableDoc, 'mouseup', endResize);\r
 \r
-                                                                               // Required values\r
-                                                                               if (prefix === '<')\r
-                                                                                       attr.validValues = makeMap(value, '?');\r
-                                                                       }\r
+                       if (rootDocument != editableDoc) {\r
+                               dom.unbind(rootDocument, 'mousemove', resizeElement);\r
+                               dom.unbind(rootDocument, 'mouseup', endResize);\r
+                       }\r
 \r
-                                                                       // Check for attribute patterns\r
-                                                                       if (hasPatternsRegExp.test(attrName)) {\r
-                                                                               element.attributePatterns = element.attributePatterns || [];\r
-                                                                               attr.pattern = patternToRegExp(attrName);\r
-                                                                               element.attributePatterns.push(attr);\r
-                                                                       } else {\r
-                                                                               // Add attribute to order list if it doesn't already exist\r
-                                                                               if (!attributes[attrName])\r
-                                                                                       attributesOrder.push(attrName);\r
+                       // Remove ghost and update resize handle positions\r
+                       dom.remove(selectedElmGhost);\r
+                       showResizeRect(selectedElm);\r
+               }\r
 \r
-                                                                               attributes[attrName] = attr;\r
-                                                                       }\r
-                                                               }\r
-                                                       }\r
-                                               }\r
+               function showResizeRect(targetElm) {\r
+                       var position, targetWidth, targetHeight;\r
 \r
-                                               // Global rule, store away these for later usage\r
-                                               if (!globalAttributes && elementName == '@') {\r
-                                                       globalAttributes = attributes;\r
-                                                       globalAttributesOrder = attributesOrder;\r
-                                               }\r
+                       hideResizeRect();\r
 \r
-                                               // Handle substitute elements such as b/strong\r
-                                               if (outputName) {\r
-                                                       element.outputName = elementName;\r
-                                                       elements[outputName] = element;\r
-                                               }\r
+                       // Get position and size of target\r
+                       position = dom.getPos(targetElm);\r
+                       selectedElmX = position.x;\r
+                       selectedElmY = position.y;\r
+                       targetWidth = targetElm.offsetWidth;\r
+                       targetHeight = targetElm.offsetHeight;\r
 \r
-                                               // Add pattern or exact element\r
-                                               if (hasPatternsRegExp.test(elementName)) {\r
-                                                       element.pattern = patternToRegExp(elementName);\r
-                                                       patternElements.push(element);\r
-                                               } else\r
-                                                       elements[elementName] = element;\r
-                                       }\r
-                               }\r
+                       // Reset width/height if user selects a new image/table\r
+                       if (selectedElm != targetElm) {\r
+                               selectedElm = targetElm;\r
+                               width = height = 0;\r
                        }\r
-               };\r
-\r
-               function setValidElements(valid_elements) {\r
-                       elements = {};\r
-                       patternElements = [];\r
-\r
-                       addValidElements(valid_elements);\r
-\r
-                       each(transitional, function(element, name) {\r
-                               children[name] = element.children;\r
-                       });\r
-               };\r
 \r
-               // Adds custom non HTML elements to the schema\r
-               function addCustomElements(custom_elements) {\r
-                       var customElementRegExp = /^(~)?(.+)$/;\r
+                       tinymce.each(resizeHandles, function(handle, name) {\r
+                               var handleElm;\r
 \r
-                       if (custom_elements) {\r
-                               each(split(custom_elements), function(rule) {\r
-                                       var matches = customElementRegExp.exec(rule),\r
-                                               cloneName = matches[1] === '~' ? 'span' : 'div',\r
-                                               name = matches[2];\r
+                               // Get existing or render resize handle\r
+                               handleElm = dom.get('mceResizeHandle' + name);\r
+                               if (!handleElm) {\r
+                                       handleElm = dom.add(editableDoc.documentElement, 'div', {\r
+                                               id: 'mceResizeHandle' + name,\r
+                                               'class': 'mceResizeHandle',\r
+                                               style: 'cursor:' + name + '-resize; margin:0; padding:0'\r
+                                       });\r
 \r
-                                       children[name] = children[cloneName];\r
+                                       dom.bind(handleElm, 'mousedown', function(e) {\r
+                                               e.preventDefault();\r
 \r
-                                       // Add custom elements at span/div positions\r
-                                       each(children, function(element, child) {\r
-                                               if (element[cloneName])\r
-                                                       element[name] = element[cloneName];\r
-                                       });\r
-                               });\r
-                       }\r
-               };\r
+                                               endResize();\r
 \r
-               // Adds valid children to the schema object\r
-               function addValidChildren(valid_children) {\r
-                       var childRuleRegExp = /^([+\-]?)(\w+)\[([^\]]+)\]$/;\r
+                                               startX = e.screenX;\r
+                                               startY = e.screenY;\r
+                                               startW = selectedElm.clientWidth;\r
+                                               startH = selectedElm.clientHeight;\r
+                                               ratio = startH / startW;\r
+                                               selectedHandle = handle;\r
 \r
-                       if (valid_children) {\r
-                               each(split(valid_children), function(rule) {\r
-                                       var matches = childRuleRegExp.exec(rule), parent, prefix;\r
+                                               selectedElmGhost = selectedElm.cloneNode(true);\r
+                                               dom.addClass(selectedElmGhost, 'mceClonedResizable');\r
+                                               dom.setStyles(selectedElmGhost, {\r
+                                                       left: selectedElmX,\r
+                                                       top: selectedElmY,\r
+                                                       margin: 0\r
+                                               });\r
 \r
-                                       if (matches) {\r
-                                               prefix = matches[1];\r
+                                               editableDoc.documentElement.appendChild(selectedElmGhost);\r
 \r
-                                               // Add/remove items from default\r
-                                               if (prefix)\r
-                                                       parent = children[matches[2]];\r
-                                               else\r
-                                                       parent = children[matches[2]] = {'#comment' : {}};\r
+                                               dom.bind(editableDoc, 'mousemove', resizeElement);\r
+                                               dom.bind(editableDoc, 'mouseup', endResize);\r
 \r
-                                               parent = children[matches[2]];\r
+                                               if (rootDocument != editableDoc) {\r
+                                                       dom.bind(rootDocument, 'mousemove', resizeElement);\r
+                                                       dom.bind(rootDocument, 'mouseup', endResize);\r
+                                               }\r
+                                       });\r
+                               } else {\r
+                                       dom.show(handleElm);\r
+                               }\r
 \r
-                                               each(split(matches[3], '|'), function(child) {\r
-                                                       if (prefix === '-')\r
-                                                               delete parent[child];\r
-                                                       else\r
-                                                               parent[child] = {};\r
-                                               });\r
-                                       }\r
+                               // Position element\r
+                               dom.setStyles(handleElm, {\r
+                                       left: (targetWidth * handle[0] + selectedElmX) - (handleElm.offsetWidth / 2),\r
+                                       top: (targetHeight * handle[1] + selectedElmY) - (handleElm.offsetHeight / 2)\r
                                });\r
+                       });\r
+\r
+                       // Only add resize rectangle on WebKit and only on images\r
+                       if (!tinymce.isOpera && selectedElm.nodeName == "IMG") {\r
+                               selectedElm.setAttribute('data-mce-selected', '1');\r
                        }\r
                }\r
 \r
-               if (!settings.valid_elements) {\r
-                       // No valid elements defined then clone the elements from the transitional spec\r
-                       each(transitional, function(element, name) {\r
-                               elements[name] = {\r
-                                       attributes : element.attributes,\r
-                                       attributesOrder : element.attributesOrder\r
-                               };\r
+               function hideResizeRect() {\r
+                       if (selectedElm) {\r
+                               selectedElm.removeAttribute('data-mce-selected');\r
+                       }\r
 \r
-                               children[name] = element.children;\r
-                       });\r
+                       for (var name in resizeHandles) {\r
+                               dom.hide('mceResizeHandle' + name);\r
+                       }\r
+               }\r
 \r
-                       // Switch these\r
-                       each(split('strong/b,em/i'), function(item) {\r
-                               item = split(item, '/');\r
-                               elements[item[1]].outputName = item[0];\r
+               // Add CSS for resize handles, cloned element and selected\r
+               editor.contentStyles.push(\r
+                       '.mceResizeHandle {' +\r
+                               'position: absolute;' +\r
+                               'border: 1px solid black;' +\r
+                               'background: #FFF;' +\r
+                               'width: 5px;' +\r
+                               'height: 5px;' +\r
+                               'z-index: 10000' +\r
+                       '}' +\r
+                       '.mceResizeHandle:hover {' +\r
+                               'background: #000' +\r
+                       '}' +\r
+                       'img[data-mce-selected] {' +\r
+                               'outline: 1px solid black' +\r
+                       '}' +\r
+                       'img.mceClonedResizable, table.mceClonedResizable {' +\r
+                               'position: absolute;' +\r
+                               'outline: 1px dashed black;' +\r
+                               'opacity: .5;' +\r
+                               'z-index: 10000' +\r
+                       '}'\r
+               );\r
+\r
+               function updateResizeRect() {\r
+                       var controlElm = dom.getParent(selection.getNode(), 'table,img');\r
+\r
+                       // Remove data-mce-selected from all elements since they might have been copied using Ctrl+c/v\r
+                       tinymce.each(dom.select('img[data-mce-selected]'), function(img) {\r
+                               img.removeAttribute('data-mce-selected');\r
                        });\r
 \r
-                       // Add default alt attribute for images\r
-                       elements.img.attributesDefault = [{name: 'alt', value: ''}];\r
+                       if (controlElm) {\r
+                               showResizeRect(controlElm);\r
+                       } else {\r
+                               hideResizeRect();\r
+                       }\r
+               }\r
 \r
-                       // Remove these if they are empty by default\r
-                       each(split('ol,ul,li,sub,sup,blockquote,tr,div,span,font,a,table,tbody'), function(name) {\r
-                               elements[name].removeEmpty = true;\r
-                       });\r
+               // Show/hide resize rect when image is selected\r
+               editor.onNodeChange.add(updateResizeRect);\r
 \r
-                       // Padd these by default\r
-                       each(split('p,h1,h2,h3,h4,h5,h6,th,td,pre,div,address,caption'), function(name) {\r
-                               elements[name].paddEmpty = true;\r
-                       });\r
-               } else\r
-                       setValidElements(settings.valid_elements);\r
+               // Fixes WebKit quirk where it returns IMG on getNode if caret is after last image in container\r
+               dom.bind(editableDoc, 'selectionchange', updateResizeRect);\r
 \r
-               addCustomElements(settings.custom_elements);\r
-               addValidChildren(settings.valid_children);\r
-               addValidElements(settings.extended_valid_elements);\r
+               // Remove the internal attribute when serializing the DOM\r
+               editor.serializer.addAttributeFilter('data-mce-selected', function(nodes, name) {\r
+                       var i = nodes.length;\r
 \r
-               // Todo: Remove this when we fix list handling to be valid\r
-               addValidChildren('+ol[ul|ol],+ul[ul|ol]');\r
+                       while (i--) {\r
+                               nodes[i].attr(name, null);\r
+                       }\r
+               });\r
+       }\r
 \r
-               // Delete invalid elements\r
-               if (settings.invalid_elements) {\r
-                       tinymce.each(tinymce.explode(settings.invalid_elements), function(item) {\r
-                               if (elements[item])\r
-                                       delete elements[item];\r
-                       });\r
+       // All browsers\r
+       disableBackspaceIntoATable();\r
+       removeBlockQuoteOnBackSpace();\r
+       emptyEditorWhenDeleting();\r
+\r
+       // WebKit\r
+       if (tinymce.isWebKit) {\r
+               keepInlineElementOnDeleteBackspace();\r
+               cleanupStylesWhenDeleting();\r
+               inputMethodFocus();\r
+               selectControlElements();\r
+               setDefaultBlockType();\r
+\r
+               // iOS\r
+               if (tinymce.isIDevice) {\r
+                       selectionChangeNodeChanged();\r
+               } else {\r
+                       fakeImageResize();\r
+                       selectAll();\r
                }\r
+       }\r
 \r
-               self.children = children;\r
+       // IE\r
+       if (tinymce.isIE) {\r
+               removeHrOnBackspace();\r
+               ensureBodyHasRoleApplication();\r
+               addNewLinesBeforeBrInPre();\r
+               removePreSerializedStylesWhenSelectingControls();\r
+               deleteControlItemOnBackSpace();\r
+               renderEmptyBlocksFix();\r
+       }\r
 \r
-               self.styles = validStyles;\r
+       // Gecko\r
+       if (tinymce.isGecko) {\r
+               removeHrOnBackspace();\r
+               focusBody();\r
+               removeStylesWhenDeletingAccrossBlockElements();\r
+               setGeckoEditingOptions();\r
+               addBrAfterLastLinks();\r
+               removeGhostSelection();\r
+       }\r
 \r
-               self.getBoolAttrs = function() {\r
-                       return boolAttrMap;\r
+       // Opera\r
+       if (tinymce.isOpera) {\r
+               fakeImageResize();\r
+       }\r
+};\r
+(function(tinymce) {\r
+       var namedEntities, baseEntities, reverseEntities,\r
+               attrsCharsRegExp = /[&<>\"\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,\r
+               textCharsRegExp = /[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,\r
+               rawCharsRegExp = /[<>&\"\']/g,\r
+               entityRegExp = /&(#x|#)?([\w]+);/g,\r
+               asciiMap = {\r
+                               128 : "\u20AC", 130 : "\u201A", 131 : "\u0192", 132 : "\u201E", 133 : "\u2026", 134 : "\u2020",\r
+                               135 : "\u2021", 136 : "\u02C6", 137 : "\u2030", 138 : "\u0160", 139 : "\u2039", 140 : "\u0152",\r
+                               142 : "\u017D", 145 : "\u2018", 146 : "\u2019", 147 : "\u201C", 148 : "\u201D", 149 : "\u2022",\r
+                               150 : "\u2013", 151 : "\u2014", 152 : "\u02DC", 153 : "\u2122", 154 : "\u0161", 155 : "\u203A",\r
+                               156 : "\u0153", 158 : "\u017E", 159 : "\u0178"\r
                };\r
 \r
-               self.getBlockElements = function() {\r
-                       return blockElementsMap;\r
-               };\r
+       // Raw entities\r
+       baseEntities = {\r
+               '\"' : '&quot;', // Needs to be escaped since the YUI compressor would otherwise break the code\r
+               "'" : '&#39;',\r
+               '<' : '&lt;',\r
+               '>' : '&gt;',\r
+               '&' : '&amp;'\r
+       };\r
 \r
-               self.getShortEndedElements = function() {\r
-                       return shortEndedElementsMap;\r
-               };\r
+       // Reverse lookup table for raw entities\r
+       reverseEntities = {\r
+               '&lt;' : '<',\r
+               '&gt;' : '>',\r
+               '&amp;' : '&',\r
+               '&quot;' : '"',\r
+               '&apos;' : "'"\r
+       };\r
 \r
-               self.getSelfClosingElements = function() {\r
-                       return selfClosingElementsMap;\r
-               };\r
-\r
-               self.getNonEmptyElements = function() {\r
-                       return nonEmptyElementsMap;\r
-               };\r
-\r
-               self.getWhiteSpaceElements = function() {\r
-                       return whiteSpaceElementsMap;\r
-               };\r
+       // Decodes text by using the browser\r
+       function nativeDecode(text) {\r
+               var elm;\r
 \r
-               self.isValidChild = function(name, child) {\r
-                       var parent = children[name];\r
+               elm = document.createElement("div");\r
+               elm.innerHTML = text;\r
 \r
-                       return !!(parent && parent[child]);\r
-               };\r
+               return elm.textContent || elm.innerText || text;\r
+       };\r
 \r
-               self.getElementRule = function(name) {\r
-                       var element = elements[name], i;\r
+       // Build a two way lookup table for the entities\r
+       function buildEntitiesLookup(items, radix) {\r
+               var i, chr, entity, lookup = {};\r
 \r
-                       // Exact match found\r
-                       if (element)\r
-                               return element;\r
+               if (items) {\r
+                       items = items.split(',');\r
+                       radix = radix || 10;\r
 \r
-                       // No exact match then try the patterns\r
-                       i = patternElements.length;\r
-                       while (i--) {\r
-                               element = patternElements[i];\r
+                       // Build entities lookup table\r
+                       for (i = 0; i < items.length; i += 2) {\r
+                               chr = String.fromCharCode(parseInt(items[i], radix));\r
 \r
-                               if (element.pattern.test(name))\r
-                                       return element;\r
+                               // Only add non base entities\r
+                               if (!baseEntities[chr]) {\r
+                                       entity = '&' + items[i + 1] + ';';\r
+                                       lookup[chr] = entity;\r
+                                       lookup[entity] = chr;\r
+                               }\r
                        }\r
-               };\r
-\r
-               self.addValidElements = addValidElements;\r
-\r
-               self.setValidElements = setValidElements;\r
-\r
-               self.addCustomElements = addCustomElements;\r
 \r
-               self.addValidChildren = addValidChildren;\r
+                       return lookup;\r
+               }\r
        };\r
 \r
-       // Expose boolMap and blockElementMap as static properties for usage in DOMUtils\r
-       tinymce.html.Schema.boolAttrMap = boolAttrMap;\r
-       tinymce.html.Schema.blockElementsMap = blockElementsMap;\r
-})(tinymce);\r
+       // Unpack entities lookup where the numbers are in radix 32 to reduce the size\r
+       namedEntities = buildEntitiesLookup(\r
+               '50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,' +\r
+               '5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,' +\r
+               '5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,' +\r
+               '5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,' +\r
+               '68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,' +\r
+               '6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,' +\r
+               '6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,' +\r
+               '75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,' +\r
+               '7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,' +\r
+               '7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,' +\r
+               'sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,' +\r
+               'st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,' +\r
+               't9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,' +\r
+               'tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,' +\r
+               'u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,' +\r
+               '81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,' +\r
+               '8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,' +\r
+               '8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,' +\r
+               '8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,' +\r
+               '8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,' +\r
+               'nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,' +\r
+               'rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,' +\r
+               'Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,' +\r
+               '80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,' +\r
+               '811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro', 32);\r
 \r
-(function(tinymce) {\r
-       tinymce.html.SaxParser = function(settings, schema) {\r
-               var self = this, noop = function() {};\r
+       tinymce.html = tinymce.html || {};\r
 \r
-               settings = settings || {};\r
-               self.schema = schema = schema || new tinymce.html.Schema();\r
+       tinymce.html.Entities = {\r
+               encodeRaw : function(text, attr) {\r
+                       return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) {\r
+                               return baseEntities[chr] || chr;\r
+                       });\r
+               },\r
 \r
-               if (settings.fix_self_closing !== false)\r
-                       settings.fix_self_closing = true;\r
+               encodeAllRaw : function(text) {\r
+                       return ('' + text).replace(rawCharsRegExp, function(chr) {\r
+                               return baseEntities[chr] || chr;\r
+                       });\r
+               },\r
 \r
-               // Add handler functions from settings and setup default handlers\r
-               tinymce.each('comment cdata text start end pi doctype'.split(' '), function(name) {\r
-                       if (name)\r
-                               self[name] = settings[name] || noop;\r
-               });\r
+               encodeNumeric : function(text, attr) {\r
+                       return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) {\r
+                               // Multi byte sequence convert it to a single entity\r
+                               if (chr.length > 1)\r
+                                       return '&#' + (((chr.charCodeAt(0) - 0xD800) * 0x400) + (chr.charCodeAt(1) - 0xDC00) + 0x10000) + ';';\r
 \r
-               self.parse = function(html) {\r
-                       var self = this, matches, index = 0, value, endRegExp, stack = [], attrList, i, text, name,\r
-                               shortEndedElements, fillAttrsMap, isShortEnded, validate, elementRule, isValidElement, attr, attribsValue,\r
-                               validAttributesMap, validAttributePatterns, attributesRequired, attributesDefault, attributesForced, selfClosing,\r
-                               tokenRegExp, attrRegExp, specialElements, attrValue, idCount = 0, decode = tinymce.html.Entities.decode, fixSelfClosing;\r
+                               return baseEntities[chr] || '&#' + chr.charCodeAt(0) + ';';\r
+                       });\r
+               },\r
 \r
-                       function processEndTag(name) {\r
-                               var pos, i;\r
+               encodeNamed : function(text, attr, entities) {\r
+                       entities = entities || namedEntities;\r
 \r
-                               // Find position of parent of the same type\r
-                               pos = stack.length;\r
-                               while (pos--) {\r
-                                       if (stack[pos].name === name)\r
-                                               break;                                          \r
-                               }\r
+                       return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) {\r
+                               return baseEntities[chr] || entities[chr] || chr;\r
+                       });\r
+               },\r
 \r
-                               // Found parent\r
-                               if (pos >= 0) {\r
-                                       // Close all the open elements\r
-                                       for (i = stack.length - 1; i >= pos; i--) {\r
-                                               name = stack[i];\r
+               getEncodeFunc : function(name, entities) {\r
+                       var Entities = tinymce.html.Entities;\r
 \r
-                                               if (name.valid)\r
-                                                       self.end(name.name);\r
-                                       }\r
+                       entities = buildEntitiesLookup(entities) || namedEntities;\r
 \r
-                                       // Remove the open elements from the stack\r
-                                       stack.length = pos;\r
-                               }\r
+                       function encodeNamedAndNumeric(text, attr) {\r
+                               return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) {\r
+                                       return baseEntities[chr] || entities[chr] || '&#' + chr.charCodeAt(0) + ';' || chr;\r
+                               });\r
                        };\r
 \r
-                       // Precompile RegExps and map objects\r
-                       tokenRegExp = new RegExp('<(?:' +\r
-                               '(?:!--([\\w\\W]*?)-->)|' + // Comment\r
-                               '(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|' + // CDATA\r
-                               '(?:!DOCTYPE([\\w\\W]*?)>)|' + // DOCTYPE\r
-                               '(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|' + // PI\r
-                               '(?:\\/([^>]+)>)|' + // End element\r
-                               '(?:([^\\s\\/<>]+)\\s*((?:[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*)>)' + // Start element\r
-                       ')', 'g');\r
-\r
-                       attrRegExp = /([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:\\.|[^\"])*)\")|(?:\'((?:\\.|[^\'])*)\')|([^>\s]+)))?/g;\r
-                       specialElements = {\r
-                               'script' : /<\/script[^>]*>/gi,\r
-                               'style' : /<\/style[^>]*>/gi,\r
-                               'noscript' : /<\/noscript[^>]*>/gi\r
+                       function encodeCustomNamed(text, attr) {\r
+                               return Entities.encodeNamed(text, attr, entities);\r
                        };\r
 \r
-                       // Setup lookup tables for empty elements and boolean attributes\r
-                       shortEndedElements = schema.getShortEndedElements();\r
-                       selfClosing = schema.getSelfClosingElements();\r
-                       fillAttrsMap = schema.getBoolAttrs();\r
-                       validate = settings.validate;\r
-                       fixSelfClosing = settings.fix_self_closing;\r
-\r
-                       while (matches = tokenRegExp.exec(html)) {\r
-                               // Text\r
-                               if (index < matches.index)\r
-                                       self.text(decode(html.substr(index, matches.index - index)));\r
+                       // Replace + with , to be compatible with previous TinyMCE versions\r
+                       name = tinymce.makeMap(name.replace(/\+/g, ','));\r
 \r
-                               if (value = matches[6]) { // End element\r
-                                       processEndTag(value.toLowerCase());\r
-                               } else if (value = matches[7]) { // Start element\r
-                                       value = value.toLowerCase();\r
-                                       isShortEnded = value in shortEndedElements;\r
+                       // Named and numeric encoder\r
+                       if (name.named && name.numeric)\r
+                               return encodeNamedAndNumeric;\r
 \r
-                                       // Is self closing tag for example an <li> after an open <li>\r
-                                       if (fixSelfClosing && selfClosing[value] && stack.length > 0 && stack[stack.length - 1].name === value)\r
-                                               processEndTag(value);\r
+                       // Named encoder\r
+                       if (name.named) {\r
+                               // Custom names\r
+                               if (entities)\r
+                                       return encodeCustomNamed;\r
 \r
-                                       // Validate element\r
-                                       if (!validate || (elementRule = schema.getElementRule(value))) {\r
-                                               isValidElement = true;\r
+                               return Entities.encodeNamed;\r
+                       }\r
 \r
-                                               // Grab attributes map and patters when validation is enabled\r
-                                               if (validate) {\r
-                                                       validAttributesMap = elementRule.attributes;\r
-                                                       validAttributePatterns = elementRule.attributePatterns;\r
-                                               }\r
+                       // Numeric\r
+                       if (name.numeric)\r
+                               return Entities.encodeNumeric;\r
 \r
-                                               // Parse attributes\r
-                                               if (attribsValue = matches[8]) {\r
-                                                       attrList = [];\r
-                                                       attrList.map = {};\r
+                       // Raw encoder\r
+                       return Entities.encodeRaw;\r
+               },\r
 \r
-                                                       attribsValue.replace(attrRegExp, function(match, name, value, val2, val3) {\r
-                                                               var attrRule, i;\r
+               decode : function(text) {\r
+                       return text.replace(entityRegExp, function(all, numeric, value) {\r
+                               if (numeric) {\r
+                                       value = parseInt(value, numeric.length === 2 ? 16 : 10);\r
 \r
-                                                               name = name.toLowerCase();\r
-                                                               value = name in fillAttrsMap ? name : decode(value || val2 || val3 || ''); // Handle boolean attribute than value attribute\r
+                                       // Support upper UTF\r
+                                       if (value > 0xFFFF) {\r
+                                               value -= 0x10000;\r
 \r
-                                                               // Validate name and value\r
-                                                               if (validate && name.indexOf('data-') !== 0) {\r
-                                                                       attrRule = validAttributesMap[name];\r
+                                               return String.fromCharCode(0xD800 + (value >> 10), 0xDC00 + (value & 0x3FF));\r
+                                       } else\r
+                                               return asciiMap[value] || String.fromCharCode(value);\r
+                               }\r
 \r
-                                                                       // Find rule by pattern matching\r
-                                                                       if (!attrRule && validAttributePatterns) {\r
-                                                                               i = validAttributePatterns.length;\r
-                                                                               while (i--) {\r
-                                                                                       attrRule = validAttributePatterns[i];\r
-                                                                                       if (attrRule.pattern.test(name))\r
-                                                                                               break;\r
-                                                                               }\r
+                               return reverseEntities[all] || namedEntities[all] || nativeDecode(all);\r
+                       });\r
+               }\r
+       };\r
+})(tinymce);\r
 \r
-                                                                               // No rule matched\r
-                                                                               if (i === -1)\r
-                                                                                       attrRule = null;\r
-                                                                       }\r
+tinymce.html.Styles = function(settings, schema) {\r
+       var rgbRegExp = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,\r
+               urlOrStrRegExp = /(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,\r
+               styleRegExp = /\s*([^:]+):\s*([^;]+);?/g,\r
+               trimRightRegExp = /\s+$/,\r
+               urlColorRegExp = /rgb/,\r
+               undef, i, encodingLookup = {}, encodingItems;\r
 \r
-                                                                       // No attribute rule found\r
-                                                                       if (!attrRule)\r
-                                                                               return;\r
+       settings = settings || {};\r
 \r
-                                                                       // Validate value\r
-                                                                       if (attrRule.validValues && !(value in attrRule.validValues))\r
-                                                                               return;\r
-                                                               }\r
+       encodingItems = '\\" \\\' \\; \\: ; : \uFEFF'.split(' ');\r
+       for (i = 0; i < encodingItems.length; i++) {\r
+               encodingLookup[encodingItems[i]] = '\uFEFF' + i;\r
+               encodingLookup['\uFEFF' + i] = encodingItems[i];\r
+       }\r
 \r
-                                                               // Add attribute to list and map\r
-                                                               attrList.map[name] = value;\r
-                                                               attrList.push({\r
-                                                                       name: name,\r
-                                                                       value: value\r
-                                                               });\r
-                                                       });\r
-                                               } else {\r
-                                                       attrList = [];\r
-                                                       attrList.map = {};\r
-                                               }\r
+       function toHex(match, r, g, b) {\r
+               function hex(val) {\r
+                       val = parseInt(val).toString(16);\r
 \r
-                                               // Process attributes if validation is enabled\r
-                                               if (validate) {\r
-                                                       attributesRequired = elementRule.attributesRequired;\r
-                                                       attributesDefault = elementRule.attributesDefault;\r
-                                                       attributesForced = elementRule.attributesForced;\r
+                       return val.length > 1 ? val : '0' + val; // 0 -> 00\r
+               };\r
 \r
-                                                       // Handle forced attributes\r
-                                                       if (attributesForced) {\r
-                                                               i = attributesForced.length;\r
-                                                               while (i--) {\r
-                                                                       attr = attributesForced[i];\r
-                                                                       name = attr.name;\r
-                                                                       attrValue = attr.value;\r
+               return '#' + hex(r) + hex(g) + hex(b);\r
+       };\r
 \r
-                                                                       if (attrValue === '{$uid}')\r
-                                                                               attrValue = 'mce_' + idCount++;\r
+       return {\r
+               toHex : function(color) {\r
+                       return color.replace(rgbRegExp, toHex);\r
+               },\r
 \r
-                                                                       attrList.map[name] = attrValue;\r
-                                                                       attrList.push({name: name, value: attrValue});\r
-                                                               }\r
-                                                       }\r
+               parse : function(css) {\r
+                       var styles = {}, matches, name, value, isEncoded, urlConverter = settings.url_converter, urlConverterScope = settings.url_converter_scope || this;\r
 \r
-                                                       // Handle default attributes\r
-                                                       if (attributesDefault) {\r
-                                                               i = attributesDefault.length;\r
-                                                               while (i--) {\r
-                                                                       attr = attributesDefault[i];\r
-                                                                       name = attr.name;\r
+                       function compress(prefix, suffix) {\r
+                               var top, right, bottom, left;\r
 \r
-                                                                       if (!(name in attrList.map)) {\r
-                                                                               attrValue = attr.value;\r
+                               // Get values and check it it needs compressing\r
+                               top = styles[prefix + '-top' + suffix];\r
+                               if (!top)\r
+                                       return;\r
 \r
-                                                                               if (attrValue === '{$uid}')\r
-                                                                                       attrValue = 'mce_' + idCount++;\r
+                               right = styles[prefix + '-right' + suffix];\r
+                               if (top != right)\r
+                                       return;\r
 \r
-                                                                               attrList.map[name] = attrValue;\r
-                                                                               attrList.push({name: name, value: attrValue});\r
-                                                                       }\r
-                                                               }\r
-                                                       }\r
+                               bottom = styles[prefix + '-bottom' + suffix];\r
+                               if (right != bottom)\r
+                                       return;\r
 \r
-                                                       // Handle required attributes\r
-                                                       if (attributesRequired) {\r
-                                                               i = attributesRequired.length;\r
-                                                               while (i--) {\r
-                                                                       if (attributesRequired[i] in attrList.map)\r
-                                                                               break;\r
-                                                               }\r
+                               left = styles[prefix + '-left' + suffix];\r
+                               if (bottom != left)\r
+                                       return;\r
 \r
-                                                               // None of the required attributes where found\r
-                                                               if (i === -1)\r
-                                                                       isValidElement = false;\r
-                                                       }\r
+                               // Compress\r
+                               styles[prefix + suffix] = left;\r
+                               delete styles[prefix + '-top' + suffix];\r
+                               delete styles[prefix + '-right' + suffix];\r
+                               delete styles[prefix + '-bottom' + suffix];\r
+                               delete styles[prefix + '-left' + suffix];\r
+                       };\r
 \r
-                                                       // Invalidate element if it's marked as bogus\r
-                                                       if (attrList.map['data-mce-bogus'])\r
-                                                               isValidElement = false;\r
-                                               }\r
+                       function canCompress(key) {\r
+                               var value = styles[key], i;\r
 \r
-                                               if (isValidElement)\r
-                                                       self.start(value, attrList, isShortEnded);\r
-                                       } else\r
-                                               isValidElement = false;\r
+                               if (!value || value.indexOf(' ') < 0)\r
+                                       return;\r
 \r
-                                       // Treat script, noscript and style a bit different since they may include code that looks like elements\r
-                                       if (endRegExp = specialElements[value]) {\r
-                                               endRegExp.lastIndex = index = matches.index + matches[0].length;\r
+                               value = value.split(' ');\r
+                               i = value.length;\r
+                               while (i--) {\r
+                                       if (value[i] !== value[0])\r
+                                               return false;\r
+                               }\r
 \r
-                                               if (matches = endRegExp.exec(html)) {\r
-                                                       if (isValidElement)\r
-                                                               text = html.substr(index, matches.index - index);\r
+                               styles[key] = value[0];\r
 \r
-                                                       index = matches.index + matches[0].length;\r
-                                               } else {\r
-                                                       text = html.substr(index);\r
-                                                       index = html.length;\r
-                                               }\r
+                               return true;\r
+                       };\r
 \r
-                                               if (isValidElement && text.length > 0)\r
-                                                       self.text(text, true);\r
+                       function compress2(target, a, b, c) {\r
+                               if (!canCompress(a))\r
+                                       return;\r
 \r
-                                               if (isValidElement)\r
-                                                       self.end(value);\r
+                               if (!canCompress(b))\r
+                                       return;\r
 \r
-                                               tokenRegExp.lastIndex = index;\r
-                                               continue;\r
-                                       }\r
+                               if (!canCompress(c))\r
+                                       return;\r
 \r
-                                       // Push value on to stack\r
-                                       if (!isShortEnded) {\r
-                                               if (!attribsValue || attribsValue.indexOf('/') != attribsValue.length - 1)\r
-                                                       stack.push({name: value, valid: isValidElement});\r
-                                               else if (isValidElement)\r
-                                                       self.end(value);\r
-                                       }\r
-                               } else if (value = matches[1]) { // Comment\r
-                                       self.comment(value);\r
-                               } else if (value = matches[2]) { // CDATA\r
-                                       self.cdata(value);\r
-                               } else if (value = matches[3]) { // DOCTYPE\r
-                                       self.doctype(value);\r
-                               } else if (value = matches[4]) { // PI\r
-                                       self.pi(value, matches[5]);\r
+                               // Compress\r
+                               styles[target] = styles[a] + ' ' + styles[b] + ' ' + styles[c];\r
+                               delete styles[a];\r
+                               delete styles[b];\r
+                               delete styles[c];\r
+                       };\r
+\r
+                       // Encodes the specified string by replacing all \" \' ; : with _<num>\r
+                       function encode(str) {\r
+                               isEncoded = true;\r
+\r
+                               return encodingLookup[str];\r
+                       };\r
+\r
+                       // Decodes the specified string by replacing all _<num> with it's original value \" \' etc\r
+                       // It will also decode the \" \' if keep_slashes is set to fale or omitted\r
+                       function decode(str, keep_slashes) {\r
+                               if (isEncoded) {\r
+                                       str = str.replace(/\uFEFF[0-9]/g, function(str) {\r
+                                               return encodingLookup[str];\r
+                                       });\r
                                }\r
 \r
-                               index = matches.index + matches[0].length;\r
-                       }\r
+                               if (!keep_slashes)\r
+                                       str = str.replace(/\\([\'\";:])/g, "$1");\r
 \r
-                       // Text\r
-                       if (index < html.length)\r
-                               self.text(decode(html.substr(index)));\r
+                               return str;\r
+                       };\r
 \r
-                       // Close any open elements\r
-                       for (i = stack.length - 1; i >= 0; i--) {\r
-                               value = stack[i];\r
+                       function processUrl(match, url, url2, url3, str, str2) {\r
+                               str = str || str2;\r
 \r
-                               if (value.valid)\r
-                                       self.end(value.name);\r
-                       }\r
-               };\r
-       }\r
-})(tinymce);\r
+                               if (str) {\r
+                                       str = decode(str);\r
 \r
-(function(tinymce) {\r
-       var whiteSpaceRegExp = /^[ \t\r\n]*$/, typeLookup = {\r
-               '#text' : 3,\r
-               '#comment' : 8,\r
-               '#cdata' : 4,\r
-               '#pi' : 7,\r
-               '#doctype' : 10,\r
-               '#document-fragment' : 11\r
-       };\r
+                                       // Force strings into single quote format\r
+                                       return "'" + str.replace(/\'/g, "\\'") + "'";\r
+                               }\r
 \r
-       // Walks the tree left/right\r
-       function walk(node, root_node, prev) {\r
-               var sibling, parent, startName = prev ? 'lastChild' : 'firstChild', siblingName = prev ? 'prev' : 'next';\r
+                               url = decode(url || url2 || url3);\r
 \r
-               // Walk into nodes if it has a start\r
-               if (node[startName])\r
-                       return node[startName];\r
+                               // Convert the URL to relative/absolute depending on config\r
+                               if (urlConverter)\r
+                                       url = urlConverter.call(urlConverterScope, url, 'style');\r
 \r
-               // Return the sibling if it has one\r
-               if (node !== root_node) {\r
-                       sibling = node[siblingName];\r
+                               // Output new URL format\r
+                               return "url('" + url.replace(/\'/g, "\\'") + "')";\r
+                       };\r
 \r
-                       if (sibling)\r
-                               return sibling;\r
+                       if (css) {\r
+                               // Encode \" \' % and ; and : inside strings so they don't interfere with the style parsing\r
+                               css = css.replace(/\\[\"\';:\uFEFF]/g, encode).replace(/\"[^\"]+\"|\'[^\']+\'/g, function(str) {\r
+                                       return str.replace(/[;:]/g, encode);\r
+                               });\r
 \r
-                       // Walk up the parents to look for siblings\r
-                       for (parent = node.parent; parent && parent !== root_node; parent = parent.parent) {\r
-                               sibling = parent[siblingName];\r
+                               // Parse styles\r
+                               while (matches = styleRegExp.exec(css)) {\r
+                                       name = matches[1].replace(trimRightRegExp, '').toLowerCase();\r
+                                       value = matches[2].replace(trimRightRegExp, '');\r
 \r
-                               if (sibling)\r
-                                       return sibling;\r
-                       }\r
-               }\r
-       };\r
+                                       if (name && value.length > 0) {\r
+                                               // Opera will produce 700 instead of bold in their style values\r
+                                               if (name === 'font-weight' && value === '700')\r
+                                                       value = 'bold';\r
+                                               else if (name === 'color' || name === 'background-color') // Lowercase colors like RED\r
+                                                       value = value.toLowerCase();            \r
 \r
-       function Node(name, type) {\r
-               this.name = name;\r
-               this.type = type;\r
+                                               // Convert RGB colors to HEX\r
+                                               value = value.replace(rgbRegExp, toHex);\r
 \r
-               if (type === 1) {\r
-                       this.attributes = [];\r
-                       this.attributes.map = {};\r
-               }\r
-       }\r
+                                               // Convert URLs and force them into url('value') format\r
+                                               value = value.replace(urlOrStrRegExp, processUrl);\r
+                                               styles[name] = isEncoded ? decode(value, true) : value;\r
+                                       }\r
 \r
-       tinymce.extend(Node.prototype, {\r
-               replace : function(node) {\r
-                       var self = this;\r
+                                       styleRegExp.lastIndex = matches.index + matches[0].length;\r
+                               }\r
 \r
-                       if (node.parent)\r
-                               node.remove();\r
+                               // Compress the styles to reduce it's size for example IE will expand styles\r
+                               compress("border", "");\r
+                               compress("border", "-width");\r
+                               compress("border", "-color");\r
+                               compress("border", "-style");\r
+                               compress("padding", "");\r
+                               compress("margin", "");\r
+                               compress2('border', 'border-width', 'border-style', 'border-color');\r
 \r
-                       self.insert(node, self);\r
-                       self.remove();\r
+                               // Remove pointless border, IE produces these\r
+                               if (styles.border === 'medium none')\r
+                                       delete styles.border;\r
+                       }\r
 \r
-                       return self;\r
+                       return styles;\r
                },\r
 \r
-               attr : function(name, value) {\r
-                       var self = this, attrs, i, undef;\r
+               serialize : function(styles, element_name) {\r
+                       var css = '', name, value;\r
 \r
-                       if (typeof name !== "string") {\r
-                               for (i in name)\r
-                                       self.attr(i, name[i]);\r
+                       function serializeStyles(name) {\r
+                               var styleList, i, l, value;\r
 \r
-                               return self;\r
-                       }\r
-\r
-                       if (attrs = self.attributes) {\r
-                               if (value !== undef) {\r
-                                       // Remove attribute\r
-                                       if (value === null) {\r
-                                               if (name in attrs.map) {\r
-                                                       delete attrs.map[name];\r
-\r
-                                                       i = attrs.length;\r
-                                                       while (i--) {\r
-                                                               if (attrs[i].name === name) {\r
-                                                                       attrs = attrs.splice(i, 1);\r
-                                                                       return self;\r
-                                                               }\r
-                                                       }\r
-                                               }\r
+                               styleList = schema.styles[name];\r
+                               if (styleList) {\r
+                                       for (i = 0, l = styleList.length; i < l; i++) {\r
+                                               name = styleList[i];\r
+                                               value = styles[name];\r
 \r
-                                               return self;\r
+                                               if (value !== undef && value.length > 0)\r
+                                                       css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';';\r
                                        }\r
+                               }\r
+                       };\r
 \r
-                                       // Set attribute\r
-                                       if (name in attrs.map) {\r
-                                               // Set attribute\r
-                                               i = attrs.length;\r
-                                               while (i--) {\r
-                                                       if (attrs[i].name === name) {\r
-                                                               attrs[i].value = value;\r
-                                                               break;\r
-                                                       }\r
-                                               }\r
-                                       } else\r
-                                               attrs.push({name: name, value: value});\r
-\r
-                                       attrs.map[name] = value;\r
+                       // Serialize styles according to schema\r
+                       if (element_name && schema && schema.styles) {\r
+                               // Serialize global styles and element specific styles\r
+                               serializeStyles('*');\r
+                               serializeStyles(element_name);\r
+                       } else {\r
+                               // Output the styles in the order they are inside the object\r
+                               for (name in styles) {\r
+                                       value = styles[name];\r
 \r
-                                       return self;\r
-                               } else {\r
-                                       return attrs.map[name];\r
+                                       if (value !== undef && value.length > 0)\r
+                                               css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';';\r
                                }\r
                        }\r
-               },\r
 \r
-               clone : function() {\r
-                       var self = this, clone = new Node(self.name, self.type), i, l, selfAttrs, selfAttr, cloneAttrs;\r
+                       return css;\r
+               }\r
+       };\r
+};\r
 \r
-                       // Clone element attributes\r
-                       if (selfAttrs = self.attributes) {\r
-                               cloneAttrs = [];\r
-                               cloneAttrs.map = {};\r
+(function(tinymce) {\r
+       var mapCache = {}, makeMap = tinymce.makeMap, each = tinymce.each;\r
 \r
-                               for (i = 0, l = selfAttrs.length; i < l; i++) {\r
-                                       selfAttr = selfAttrs[i];\r
+       function split(str, delim) {\r
+               return str.split(delim || ',');\r
+       };\r
 \r
-                                       // Clone everything except id\r
-                                       if (selfAttr.name !== 'id') {\r
-                                               cloneAttrs[cloneAttrs.length] = {name: selfAttr.name, value: selfAttr.value};\r
-                                               cloneAttrs.map[selfAttr.name] = selfAttr.value;\r
-                                       }\r
-                               }\r
+       function unpack(lookup, data) {\r
+               var key, elements = {};\r
 \r
-                               clone.attributes = cloneAttrs;\r
-                       }\r
+               function replace(value) {\r
+                       return value.replace(/[A-Z]+/g, function(key) {\r
+                               return replace(lookup[key]);\r
+                       });\r
+               };\r
 \r
-                       clone.value = self.value;\r
-                       clone.shortEnded = self.shortEnded;\r
+               // Unpack lookup\r
+               for (key in lookup) {\r
+                       if (lookup.hasOwnProperty(key))\r
+                               lookup[key] = replace(lookup[key]);\r
+               }\r
 \r
-                       return clone;\r
-               },\r
+               // Unpack and parse data into object map\r
+               replace(data).replace(/#/g, '#text').replace(/(\w+)\[([^\]]+)\]\[([^\]]*)\]/g, function(str, name, attributes, children) {\r
+                       attributes = split(attributes, '|');\r
 \r
-               wrap : function(wrapper) {\r
-                       var self = this;\r
+                       elements[name] = {\r
+                               attributes : makeMap(attributes),\r
+                               attributesOrder : attributes,\r
+                               children : makeMap(children, '|', {'#comment' : {}})\r
+                       }\r
+               });\r
 \r
-                       self.parent.insert(wrapper, self);\r
-                       wrapper.append(self);\r
+               return elements;\r
+       };\r
 \r
-                       return self;\r
-               },\r
+       function getHTML5() {\r
+               var html5 = mapCache.html5;\r
+\r
+               if (!html5) {\r
+                       html5 = mapCache.html5 = unpack({\r
+                                       A : 'id|accesskey|class|dir|draggable|item|hidden|itemprop|role|spellcheck|style|subject|title|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup',\r
+                                       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|' +\r
+                                               'meter|noscript|object|output|progress|q|ruby|samp|script|select|small|span|strong|sub|sup|svg|textarea|time|var|video|wbr',\r
+                                       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|' +\r
+                                               '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|' +\r
+                                               'p|pre|progress|q|ruby|samp|script|section|select|small|span|strong|style|sub|sup|svg|table|textarea|time|ul|var|video'\r
+                               }, 'html[A|manifest][body|head]' +\r
+                                       'head[A][base|command|link|meta|noscript|script|style|title]' +\r
+                                       'title[A][#]' +\r
+                                       'base[A|href|target][]' +\r
+                                       'link[A|href|rel|media|type|sizes][]' +\r
+                                       'meta[A|http-equiv|name|content|charset][]' +\r
+                                       'style[A|type|media|scoped][#]' +\r
+                                       'script[A|charset|type|src|defer|async][#]' +\r
+                                       'noscript[A][C]' +\r
+                                       'body[A][C]' +\r
+                                       'section[A][C]' +\r
+                                       'nav[A][C]' +\r
+                                       'article[A][C]' +\r
+                                       'aside[A][C]' +\r
+                                       'h1[A][B]' +\r
+                                       'h2[A][B]' +\r
+                                       'h3[A][B]' +\r
+                                       'h4[A][B]' +\r
+                                       'h5[A][B]' +\r
+                                       'h6[A][B]' +\r
+                                       'hgroup[A][h1|h2|h3|h4|h5|h6]' +\r
+                                       'header[A][C]' +\r
+                                       'footer[A][C]' +\r
+                                       'address[A][C]' +\r
+                                       'p[A][B]' +\r
+                                       'br[A][]' +\r
+                                       'pre[A][B]' +\r
+                                       'dialog[A][dd|dt]' +\r
+                                       'blockquote[A|cite][C]' +\r
+                                       'ol[A|start|reversed][li]' +\r
+                                       'ul[A][li]' +\r
+                                       'li[A|value][C]' +\r
+                                       'dl[A][dd|dt]' +\r
+                                       'dt[A][B]' +\r
+                                       'dd[A][C]' +\r
+                                       'a[A|href|target|ping|rel|media|type][B]' +\r
+                                       'em[A][B]' +\r
+                                       'strong[A][B]' +\r
+                                       'small[A][B]' +\r
+                                       'cite[A][B]' +\r
+                                       'q[A|cite][B]' +\r
+                                       'dfn[A][B]' +\r
+                                       'abbr[A][B]' +\r
+                                       'code[A][B]' +\r
+                                       'var[A][B]' +\r
+                                       'samp[A][B]' +\r
+                                       'kbd[A][B]' +\r
+                                       'sub[A][B]' +\r
+                                       'sup[A][B]' +\r
+                                       'i[A][B]' +\r
+                                       'b[A][B]' +\r
+                                       'mark[A][B]' +\r
+                                       'progress[A|value|max][B]' +\r
+                                       'meter[A|value|min|max|low|high|optimum][B]' +\r
+                                       'time[A|datetime][B]' +\r
+                                       'ruby[A][B|rt|rp]' +\r
+                                       'rt[A][B]' +\r
+                                       'rp[A][B]' +\r
+                                       'bdo[A][B]' +\r
+                                       'span[A][B]' +\r
+                                       'ins[A|cite|datetime][B]' +\r
+                                       'del[A|cite|datetime][B]' +\r
+                                       'figure[A][C|legend|figcaption]' +\r
+                                       'figcaption[A][C]' +\r
+                                       'img[A|alt|src|height|width|usemap|ismap][]' +\r
+                                       'iframe[A|name|src|height|width|sandbox|seamless][]' +\r
+                                       'embed[A|src|height|width|type][]' +\r
+                                       'object[A|data|type|height|width|usemap|name|form|classid][param]' +\r
+                                       'param[A|name|value][]' +\r
+                                       'details[A|open][C|legend]' +\r
+                                       'command[A|type|label|icon|disabled|checked|radiogroup][]' +\r
+                                       'menu[A|type|label][C|li]' +\r
+                                       'legend[A][C|B]' +\r
+                                       'div[A][C]' +\r
+                                       'source[A|src|type|media][]' +\r
+                                       'audio[A|src|autobuffer|autoplay|loop|controls][source]' +\r
+                                       'video[A|src|autobuffer|autoplay|loop|controls|width|height|poster][source]' +\r
+                                       'hr[A][]' +\r
+                                       'form[A|accept-charset|action|autocomplete|enctype|method|name|novalidate|target][C]' +\r
+                                       'fieldset[A|disabled|form|name][C|legend]' +\r
+                                       'label[A|form|for][B]' +\r
+                                       'input[A|type|accept|alt|autocomplete|checked|disabled|form|formaction|formenctype|formmethod|formnovalidate|formtarget|height|list|max|maxlength|min|' +\r
+                                               'multiple|pattern|placeholder|readonly|required|size|src|step|width|files|value|name][]' +\r
+                                       'button[A|autofocus|disabled|form|formaction|formenctype|formmethod|formnovalidate|formtarget|name|value|type][B]' +\r
+                                       'select[A|autofocus|disabled|form|multiple|name|size][option|optgroup]' +\r
+                                       'datalist[A][B|option]' +\r
+                                       'optgroup[A|disabled|label][option]' +\r
+                                       'option[A|disabled|selected|label|value][]' +\r
+                                       'textarea[A|autofocus|disabled|form|maxlength|name|placeholder|readonly|required|rows|cols|wrap][]' +\r
+                                       'keygen[A|autofocus|challenge|disabled|form|keytype|name][]' +\r
+                                       'output[A|for|form|name][B]' +\r
+                                       'canvas[A|width|height][]' +\r
+                                       'map[A|name][B|C]' +\r
+                                       'area[A|shape|coords|href|alt|target|media|rel|ping|type][]' +\r
+                                       'mathml[A][]' +\r
+                                       'svg[A][]' +\r
+                                       'table[A|border][caption|colgroup|thead|tfoot|tbody|tr]' +\r
+                                       'caption[A][C]' +\r
+                                       'colgroup[A|span][col]' +\r
+                                       'col[A|span][]' +\r
+                                       'thead[A][tr]' +\r
+                                       'tfoot[A][tr]' +\r
+                                       'tbody[A][tr]' +\r
+                                       'tr[A][th|td]' +\r
+                                       'th[A|headers|rowspan|colspan|scope][B]' +\r
+                                       'td[A|headers|rowspan|colspan][C]' +\r
+                                       'wbr[A][]'\r
+                       );\r
+               }\r
 \r
-               unwrap : function() {\r
-                       var self = this, node, next;\r
+               return html5;\r
+       };\r
 \r
-                       for (node = self.firstChild; node; ) {\r
-                               next = node.next;\r
-                               self.insert(node, self, true);\r
-                               node = next;\r
-                       }\r
+       function getHTML4() {\r
+               var html4 = mapCache.html4;\r
+\r
+               if (!html4) {\r
+                       // This is the XHTML 1.0 transitional elements with it's attributes and children packed to reduce it's size\r
+                       html4 = mapCache.html4 = unpack({\r
+                               Z : 'H|K|N|O|P',\r
+                               Y : 'X|form|R|Q',\r
+                               ZG : 'E|span|width|align|char|charoff|valign',\r
+                               X : 'p|T|div|U|W|isindex|fieldset|table',\r
+                               ZF : 'E|align|char|charoff|valign',\r
+                               W : 'pre|hr|blockquote|address|center|noframes',\r
+                               ZE : 'abbr|axis|headers|scope|rowspan|colspan|align|char|charoff|valign|nowrap|bgcolor|width|height',\r
+                               ZD : '[E][S]',\r
+                               U : 'ul|ol|dl|menu|dir',\r
+                               ZC : 'p|Y|div|U|W|table|br|span|bdo|object|applet|img|map|K|N|Q',\r
+                               T : 'h1|h2|h3|h4|h5|h6',\r
+                               ZB : 'X|S|Q',\r
+                               S : 'R|P',\r
+                               ZA : 'a|G|J|M|O|P',\r
+                               R : 'a|H|K|N|O',\r
+                               Q : 'noscript|P',\r
+                               P : 'ins|del|script',\r
+                               O : 'input|select|textarea|label|button',\r
+                               N : 'M|L',\r
+                               M : 'em|strong|dfn|code|q|samp|kbd|var|cite|abbr|acronym',\r
+                               L : 'sub|sup',\r
+                               K : 'J|I',\r
+                               J : 'tt|i|b|u|s|strike',\r
+                               I : 'big|small|font|basefont',\r
+                               H : 'G|F',\r
+                               G : 'br|span|bdo',\r
+                               F : 'object|applet|img|map|iframe',\r
+                               E : 'A|B|C',\r
+                               D : 'accesskey|tabindex|onfocus|onblur',\r
+                               C : 'onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup',\r
+                               B : 'lang|xml:lang|dir',\r
+                               A : 'id|class|style|title'\r
+                       }, 'script[id|charset|type|language|src|defer|xml:space][]' + \r
+                               'style[B|id|type|media|title|xml:space][]' + \r
+                               'object[E|declare|classid|codebase|data|type|codetype|archive|standby|width|height|usemap|name|tabindex|align|border|hspace|vspace][#|param|Y]' + \r
+                               'param[id|name|value|valuetype|type][]' + \r
+                               'p[E|align][#|S]' + \r
+                               'a[E|D|charset|type|name|href|hreflang|rel|rev|shape|coords|target][#|Z]' + \r
+                               'br[A|clear][]' + \r
+                               'span[E][#|S]' + \r
+                               'bdo[A|C|B][#|S]' + \r
+                               'applet[A|codebase|archive|code|object|alt|name|width|height|align|hspace|vspace][#|param|Y]' + \r
+                               'h1[E|align][#|S]' + \r
+                               'img[E|src|alt|name|longdesc|width|height|usemap|ismap|align|border|hspace|vspace][]' + \r
+                               'map[B|C|A|name][X|form|Q|area]' + \r
+                               'h2[E|align][#|S]' + \r
+                               'iframe[A|longdesc|name|src|frameborder|marginwidth|marginheight|scrolling|align|width|height][#|Y]' + \r
+                               'h3[E|align][#|S]' + \r
+                               'tt[E][#|S]' + \r
+                               'i[E][#|S]' + \r
+                               'b[E][#|S]' + \r
+                               'u[E][#|S]' + \r
+                               's[E][#|S]' + \r
+                               'strike[E][#|S]' + \r
+                               'big[E][#|S]' + \r
+                               'small[E][#|S]' + \r
+                               'font[A|B|size|color|face][#|S]' + \r
+                               'basefont[id|size|color|face][]' + \r
+                               'em[E][#|S]' + \r
+                               'strong[E][#|S]' + \r
+                               'dfn[E][#|S]' + \r
+                               'code[E][#|S]' + \r
+                               'q[E|cite][#|S]' + \r
+                               'samp[E][#|S]' + \r
+                               'kbd[E][#|S]' + \r
+                               'var[E][#|S]' + \r
+                               'cite[E][#|S]' + \r
+                               'abbr[E][#|S]' + \r
+                               'acronym[E][#|S]' + \r
+                               'sub[E][#|S]' + \r
+                               'sup[E][#|S]' + \r
+                               'input[E|D|type|name|value|checked|disabled|readonly|size|maxlength|src|alt|usemap|onselect|onchange|accept|align][]' + \r
+                               'select[E|name|size|multiple|disabled|tabindex|onfocus|onblur|onchange][optgroup|option]' + \r
+                               'optgroup[E|disabled|label][option]' + \r
+                               'option[E|selected|disabled|label|value][]' + \r
+                               'textarea[E|D|name|rows|cols|disabled|readonly|onselect|onchange][]' + \r
+                               'label[E|for|accesskey|onfocus|onblur][#|S]' + \r
+                               'button[E|D|name|value|type|disabled][#|p|T|div|U|W|table|G|object|applet|img|map|K|N|Q]' + \r
+                               'h4[E|align][#|S]' + \r
+                               'ins[E|cite|datetime][#|Y]' + \r
+                               'h5[E|align][#|S]' + \r
+                               'del[E|cite|datetime][#|Y]' + \r
+                               'h6[E|align][#|S]' + \r
+                               'div[E|align][#|Y]' + \r
+                               'ul[E|type|compact][li]' + \r
+                               'li[E|type|value][#|Y]' + \r
+                               'ol[E|type|compact|start][li]' + \r
+                               'dl[E|compact][dt|dd]' + \r
+                               'dt[E][#|S]' + \r
+                               'dd[E][#|Y]' + \r
+                               'menu[E|compact][li]' + \r
+                               'dir[E|compact][li]' + \r
+                               'pre[E|width|xml:space][#|ZA]' + \r
+                               'hr[E|align|noshade|size|width][]' + \r
+                               'blockquote[E|cite][#|Y]' + \r
+                               'address[E][#|S|p]' + \r
+                               'center[E][#|Y]' + \r
+                               'noframes[E][#|Y]' + \r
+                               'isindex[A|B|prompt][]' + \r
+                               'fieldset[E][#|legend|Y]' + \r
+                               'legend[E|accesskey|align][#|S]' + \r
+                               'table[E|summary|width|border|frame|rules|cellspacing|cellpadding|align|bgcolor][caption|col|colgroup|thead|tfoot|tbody|tr]' + \r
+                               'caption[E|align][#|S]' + \r
+                               'col[ZG][]' + \r
+                               'colgroup[ZG][col]' + \r
+                               'thead[ZF][tr]' + \r
+                               'tr[ZF|bgcolor][th|td]' + \r
+                               'th[E|ZE][#|Y]' + \r
+                               'form[E|action|method|name|enctype|onsubmit|onreset|accept|accept-charset|target][#|X|R|Q]' + \r
+                               'noscript[E][#|Y]' + \r
+                               'td[E|ZE][#|Y]' + \r
+                               'tfoot[ZF][tr]' + \r
+                               'tbody[ZF][tr]' + \r
+                               'area[E|D|shape|coords|href|nohref|alt|target][]' + \r
+                               'base[id|href|target][]' + \r
+                               'body[E|onload|onunload|background|bgcolor|text|link|vlink|alink][#|Y]'\r
+                       );\r
+               }\r
 \r
-                       self.remove();\r
-               },\r
+               return html4;\r
+       };\r
 \r
-               remove : function() {\r
-                       var self = this, parent = self.parent, next = self.next, prev = self.prev;\r
+       tinymce.html.Schema = function(settings) {\r
+               var self = this, elements = {}, children = {}, patternElements = [], validStyles, schemaItems;\r
+               var whiteSpaceElementsMap, selfClosingElementsMap, shortEndedElementsMap, boolAttrMap, blockElementsMap, nonEmptyElementsMap, customElementsMap = {};\r
 \r
-                       if (parent) {\r
-                               if (parent.firstChild === self) {\r
-                                       parent.firstChild = next;\r
+               // Creates an lookup table map object for the specified option or the default value\r
+               function createLookupTable(option, default_value, extend) {\r
+                       var value = settings[option];\r
 \r
-                                       if (next)\r
-                                               next.prev = null;\r
-                               } else {\r
-                                       prev.next = next;\r
-                               }\r
+                       if (!value) {\r
+                               // Get cached default map or make it if needed\r
+                               value = mapCache[option];\r
 \r
-                               if (parent.lastChild === self) {\r
-                                       parent.lastChild = prev;\r
+                               if (!value) {\r
+                                       value = makeMap(default_value, ' ', makeMap(default_value.toUpperCase(), ' '));\r
+                                       value = tinymce.extend(value, extend);\r
 \r
-                                       if (prev)\r
-                                               prev.next = null;\r
-                               } else {\r
-                                       next.prev = prev;\r
+                                       mapCache[option] = value;\r
                                }\r
-\r
-                               self.parent = self.next = self.prev = null;\r
+                       } else {\r
+                               // Create custom map\r
+                               value = makeMap(value, ',', makeMap(value.toUpperCase(), ' '));\r
                        }\r
 \r
-                       return self;\r
-               },\r
+                       return value;\r
+               };\r
 \r
-               append : function(node) {\r
-                       var self = this, last;\r
+               settings = settings || {};\r
+               schemaItems = settings.schema == "html5" ? getHTML5() : getHTML4();\r
 \r
-                       if (node.parent)\r
-                               node.remove();\r
+               // Allow all elements and attributes if verify_html is set to false\r
+               if (settings.verify_html === false)\r
+                       settings.valid_elements = '*[*]';\r
 \r
-                       last = self.lastChild;\r
-                       if (last) {\r
-                               last.next = node;\r
-                               node.prev = last;\r
-                               self.lastChild = node;\r
-                       } else\r
-                               self.lastChild = self.firstChild = node;\r
+               // Build styles list\r
+               if (settings.valid_styles) {\r
+                       validStyles = {};\r
 \r
-                       node.parent = self;\r
+                       // Convert styles into a rule list\r
+                       each(settings.valid_styles, function(value, key) {\r
+                               validStyles[key] = tinymce.explode(value);\r
+                       });\r
+               }\r
 \r
-                       return node;\r
-               },\r
+               // Setup map objects\r
+               whiteSpaceElementsMap = createLookupTable('whitespace_elements', 'pre script style textarea');\r
+               selfClosingElementsMap = createLookupTable('self_closing_elements', 'colgroup dd dt li option p td tfoot th thead tr');\r
+               shortEndedElementsMap = createLookupTable('short_ended_elements', 'area base basefont br col frame hr img input isindex link meta param embed source wbr');\r
+               boolAttrMap = createLookupTable('boolean_attributes', 'checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls');\r
+               nonEmptyElementsMap = createLookupTable('non_empty_elements', 'td th iframe video audio object', shortEndedElementsMap);\r
+               blockElementsMap = createLookupTable('block_elements', 'h1 h2 h3 h4 h5 h6 hr p div address pre form table tbody thead tfoot ' + \r
+                                               'th tr td li ol ul caption blockquote center dl dt dd dir fieldset ' + \r
+                                               'noscript menu isindex samp header footer article section hgroup aside nav figure option datalist select optgroup');\r
 \r
-               insert : function(node, ref_node, before) {\r
-                       var parent;\r
+               // Converts a wildcard expression string to a regexp for example *a will become /.*a/.\r
+               function patternToRegExp(str) {\r
+                       return new RegExp('^' + str.replace(/([?+*])/g, '.$1') + '$');\r
+               };\r
 \r
-                       if (node.parent)\r
-                               node.remove();\r
+               // Parses the specified valid_elements string and adds to the current rules\r
+               // This function is a bit hard to read since it's heavily optimized for speed\r
+               function addValidElements(valid_elements) {\r
+                       var ei, el, ai, al, yl, matches, element, attr, attrData, elementName, attrName, attrType, attributes, attributesOrder,\r
+                               prefix, outputName, globalAttributes, globalAttributesOrder, transElement, key, childKey, value,\r
+                               elementRuleRegExp = /^([#+\-])?([^\[\/]+)(?:\/([^\[]+))?(?:\[([^\]]+)\])?$/,\r
+                               attrRuleRegExp = /^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,\r
+                               hasPatternsRegExp = /[*?+]/;\r
 \r
-                       parent = ref_node.parent || this;\r
+                       if (valid_elements) {\r
+                               // Split valid elements into an array with rules\r
+                               valid_elements = split(valid_elements);\r
 \r
-                       if (before) {\r
-                               if (ref_node === parent.firstChild)\r
-                                       parent.firstChild = node;\r
-                               else\r
-                                       ref_node.prev.next = node;\r
+                               if (elements['@']) {\r
+                                       globalAttributes = elements['@'].attributes;\r
+                                       globalAttributesOrder = elements['@'].attributesOrder;\r
+                               }\r
 \r
-                               node.prev = ref_node.prev;\r
-                               node.next = ref_node;\r
-                               ref_node.prev = node;\r
-                       } else {\r
-                               if (ref_node === parent.lastChild)\r
-                                       parent.lastChild = node;\r
-                               else\r
-                                       ref_node.next.prev = node;\r
+                               // Loop all rules\r
+                               for (ei = 0, el = valid_elements.length; ei < el; ei++) {\r
+                                       // Parse element rule\r
+                                       matches = elementRuleRegExp.exec(valid_elements[ei]);\r
+                                       if (matches) {\r
+                                               // Setup local names for matches\r
+                                               prefix = matches[1];\r
+                                               elementName = matches[2];\r
+                                               outputName = matches[3];\r
+                                               attrData = matches[4];\r
 \r
-                               node.next = ref_node.next;\r
-                               node.prev = ref_node;\r
-                               ref_node.next = node;\r
-                       }\r
+                                               // Create new attributes and attributesOrder\r
+                                               attributes = {};\r
+                                               attributesOrder = [];\r
 \r
-                       node.parent = parent;\r
+                                               // Create the new element\r
+                                               element = {\r
+                                                       attributes : attributes,\r
+                                                       attributesOrder : attributesOrder\r
+                                               };\r
 \r
-                       return node;\r
-               },\r
+                                               // Padd empty elements prefix\r
+                                               if (prefix === '#')\r
+                                                       element.paddEmpty = true;\r
 \r
-               getAll : function(name) {\r
-                       var self = this, node, collection = [];\r
+                                               // Remove empty elements prefix\r
+                                               if (prefix === '-')\r
+                                                       element.removeEmpty = true;\r
 \r
-                       for (node = self.firstChild; node; node = walk(node, self)) {\r
-                               if (node.name === name)\r
-                                       collection.push(node);\r
-                       }\r
+                                               // Copy attributes from global rule into current rule\r
+                                               if (globalAttributes) {\r
+                                                       for (key in globalAttributes)\r
+                                                               attributes[key] = globalAttributes[key];\r
 \r
-                       return collection;\r
+                                                       attributesOrder.push.apply(attributesOrder, globalAttributesOrder);\r
+                                               }\r
+\r
+                                               // Attributes defined\r
+                                               if (attrData) {\r
+                                                       attrData = split(attrData, '|');\r
+                                                       for (ai = 0, al = attrData.length; ai < al; ai++) {\r
+                                                               matches = attrRuleRegExp.exec(attrData[ai]);\r
+                                                               if (matches) {\r
+                                                                       attr = {};\r
+                                                                       attrType = matches[1];\r
+                                                                       attrName = matches[2].replace(/::/g, ':');\r
+                                                                       prefix = matches[3];\r
+                                                                       value = matches[4];\r
+\r
+                                                                       // Required\r
+                                                                       if (attrType === '!') {\r
+                                                                               element.attributesRequired = element.attributesRequired || [];\r
+                                                                               element.attributesRequired.push(attrName);\r
+                                                                               attr.required = true;\r
+                                                                       }\r
+\r
+                                                                       // Denied from global\r
+                                                                       if (attrType === '-') {\r
+                                                                               delete attributes[attrName];\r
+                                                                               attributesOrder.splice(tinymce.inArray(attributesOrder, attrName), 1);\r
+                                                                               continue;\r
+                                                                       }\r
+\r
+                                                                       // Default value\r
+                                                                       if (prefix) {\r
+                                                                               // Default value\r
+                                                                               if (prefix === '=') {\r
+                                                                                       element.attributesDefault = element.attributesDefault || [];\r
+                                                                                       element.attributesDefault.push({name: attrName, value: value});\r
+                                                                                       attr.defaultValue = value;\r
+                                                                               }\r
+\r
+                                                                               // Forced value\r
+                                                                               if (prefix === ':') {\r
+                                                                                       element.attributesForced = element.attributesForced || [];\r
+                                                                                       element.attributesForced.push({name: attrName, value: value});\r
+                                                                                       attr.forcedValue = value;\r
+                                                                               }\r
+\r
+                                                                               // Required values\r
+                                                                               if (prefix === '<')\r
+                                                                                       attr.validValues = makeMap(value, '?');\r
+                                                                       }\r
+\r
+                                                                       // Check for attribute patterns\r
+                                                                       if (hasPatternsRegExp.test(attrName)) {\r
+                                                                               element.attributePatterns = element.attributePatterns || [];\r
+                                                                               attr.pattern = patternToRegExp(attrName);\r
+                                                                               element.attributePatterns.push(attr);\r
+                                                                       } else {\r
+                                                                               // Add attribute to order list if it doesn't already exist\r
+                                                                               if (!attributes[attrName])\r
+                                                                                       attributesOrder.push(attrName);\r
+\r
+                                                                               attributes[attrName] = attr;\r
+                                                                       }\r
+                                                               }\r
+                                                       }\r
+                                               }\r
+\r
+                                               // Global rule, store away these for later usage\r
+                                               if (!globalAttributes && elementName == '@') {\r
+                                                       globalAttributes = attributes;\r
+                                                       globalAttributesOrder = attributesOrder;\r
+                                               }\r
+\r
+                                               // Handle substitute elements such as b/strong\r
+                                               if (outputName) {\r
+                                                       element.outputName = elementName;\r
+                                                       elements[outputName] = element;\r
+                                               }\r
+\r
+                                               // Add pattern or exact element\r
+                                               if (hasPatternsRegExp.test(elementName)) {\r
+                                                       element.pattern = patternToRegExp(elementName);\r
+                                                       patternElements.push(element);\r
+                                               } else\r
+                                                       elements[elementName] = element;\r
+                                       }\r
+                               }\r
+                       }\r
+               };\r
+\r
+               function setValidElements(valid_elements) {\r
+                       elements = {};\r
+                       patternElements = [];\r
+\r
+                       addValidElements(valid_elements);\r
+\r
+                       each(schemaItems, function(element, name) {\r
+                               children[name] = element.children;\r
+                       });\r
+               };\r
+\r
+               // Adds custom non HTML elements to the schema\r
+               function addCustomElements(custom_elements) {\r
+                       var customElementRegExp = /^(~)?(.+)$/;\r
+\r
+                       if (custom_elements) {\r
+                               each(split(custom_elements), function(rule) {\r
+                                       var matches = customElementRegExp.exec(rule),\r
+                                               inline = matches[1] === '~',\r
+                                               cloneName = inline ? 'span' : 'div',\r
+                                               name = matches[2];\r
+\r
+                                       children[name] = children[cloneName];\r
+                                       customElementsMap[name] = cloneName;\r
+\r
+                                       // If it's not marked as inline then add it to valid block elements\r
+                                       if (!inline)\r
+                                               blockElementsMap[name] = {};\r
+\r
+                                       // Add custom elements at span/div positions\r
+                                       each(children, function(element, child) {\r
+                                               if (element[cloneName])\r
+                                                       element[name] = element[cloneName];\r
+                                       });\r
+                               });\r
+                       }\r
+               };\r
+\r
+               // Adds valid children to the schema object\r
+               function addValidChildren(valid_children) {\r
+                       var childRuleRegExp = /^([+\-]?)(\w+)\[([^\]]+)\]$/;\r
+\r
+                       if (valid_children) {\r
+                               each(split(valid_children), function(rule) {\r
+                                       var matches = childRuleRegExp.exec(rule), parent, prefix;\r
+\r
+                                       if (matches) {\r
+                                               prefix = matches[1];\r
+\r
+                                               // Add/remove items from default\r
+                                               if (prefix)\r
+                                                       parent = children[matches[2]];\r
+                                               else\r
+                                                       parent = children[matches[2]] = {'#comment' : {}};\r
+\r
+                                               parent = children[matches[2]];\r
+\r
+                                               each(split(matches[3], '|'), function(child) {\r
+                                                       if (prefix === '-')\r
+                                                               delete parent[child];\r
+                                                       else\r
+                                                               parent[child] = {};\r
+                                               });\r
+                                       }\r
+                               });\r
+                       }\r
+               };\r
+\r
+               function getElementRule(name) {\r
+                       var element = elements[name], i;\r
+\r
+                       // Exact match found\r
+                       if (element)\r
+                               return element;\r
+\r
+                       // No exact match then try the patterns\r
+                       i = patternElements.length;\r
+                       while (i--) {\r
+                               element = patternElements[i];\r
+\r
+                               if (element.pattern.test(name))\r
+                                       return element;\r
+                       }\r
+               };\r
+\r
+               if (!settings.valid_elements) {\r
+                       // No valid elements defined then clone the elements from the schema spec\r
+                       each(schemaItems, function(element, name) {\r
+                               elements[name] = {\r
+                                       attributes : element.attributes,\r
+                                       attributesOrder : element.attributesOrder\r
+                               };\r
+\r
+                               children[name] = element.children;\r
+                       });\r
+\r
+                       // Switch these on HTML4\r
+                       if (settings.schema != "html5") {\r
+                               each(split('strong/b,em/i'), function(item) {\r
+                                       item = split(item, '/');\r
+                                       elements[item[1]].outputName = item[0];\r
+                               });\r
+                       }\r
+\r
+                       // Add default alt attribute for images\r
+                       elements.img.attributesDefault = [{name: 'alt', value: ''}];\r
+\r
+                       // Remove these if they are empty by default\r
+                       each(split('ol,ul,sub,sup,blockquote,span,font,a,table,tbody,tr,strong,em,b,i'), function(name) {\r
+                               if (elements[name]) {\r
+                                       elements[name].removeEmpty = true;\r
+                               }\r
+                       });\r
+\r
+                       // Padd these by default\r
+                       each(split('p,h1,h2,h3,h4,h5,h6,th,td,pre,div,address,caption'), function(name) {\r
+                               elements[name].paddEmpty = true;\r
+                       });\r
+               } else\r
+                       setValidElements(settings.valid_elements);\r
+\r
+               addCustomElements(settings.custom_elements);\r
+               addValidChildren(settings.valid_children);\r
+               addValidElements(settings.extended_valid_elements);\r
+\r
+               // Todo: Remove this when we fix list handling to be valid\r
+               addValidChildren('+ol[ul|ol],+ul[ul|ol]');\r
+\r
+               // Delete invalid elements\r
+               if (settings.invalid_elements) {\r
+                       tinymce.each(tinymce.explode(settings.invalid_elements), function(item) {\r
+                               if (elements[item])\r
+                                       delete elements[item];\r
+                       });\r
+               }\r
+\r
+               // If the user didn't allow span only allow internal spans\r
+               if (!getElementRule('span'))\r
+                       addValidElements('span[!data-mce-type|*]');\r
+\r
+               self.children = children;\r
+\r
+               self.styles = validStyles;\r
+\r
+               self.getBoolAttrs = function() {\r
+                       return boolAttrMap;\r
+               };\r
+\r
+               self.getBlockElements = function() {\r
+                       return blockElementsMap;\r
+               };\r
+\r
+               self.getShortEndedElements = function() {\r
+                       return shortEndedElementsMap;\r
+               };\r
+\r
+               self.getSelfClosingElements = function() {\r
+                       return selfClosingElementsMap;\r
+               };\r
+\r
+               self.getNonEmptyElements = function() {\r
+                       return nonEmptyElementsMap;\r
+               };\r
+\r
+               self.getWhiteSpaceElements = function() {\r
+                       return whiteSpaceElementsMap;\r
+               };\r
+\r
+               self.isValidChild = function(name, child) {\r
+                       var parent = children[name];\r
+\r
+                       return !!(parent && parent[child]);\r
+               };\r
+\r
+               self.isValid = function(name, attr) {\r
+                       var attrPatterns, i, rule = getElementRule(name);\r
+\r
+                       // Check if it's a valid element\r
+                       if (rule) {\r
+                               if (attr) {\r
+                                       // Check if attribute name exists\r
+                                       if (rule.attributes[attr]) {\r
+                                               return true;\r
+                                       }\r
+\r
+                                       // Check if attribute matches a regexp pattern\r
+                                       attrPatterns = rule.attributePatterns;\r
+                                       if (attrPatterns) {\r
+                                               i = attrPatterns.length;\r
+                                               while (i--) {\r
+                                                       if (attrPatterns[i].pattern.test(name)) {\r
+                                                               return true;\r
+                                                       }\r
+                                               }\r
+                                       }\r
+                               } else {\r
+                                       return true;\r
+                               }\r
+                       }\r
+\r
+                       // No match\r
+                       return false;\r
+               };\r
+               \r
+               self.getElementRule = getElementRule;\r
+\r
+               self.getCustomElements = function() {\r
+                       return customElementsMap;\r
+               };\r
+\r
+               self.addValidElements = addValidElements;\r
+\r
+               self.setValidElements = setValidElements;\r
+\r
+               self.addCustomElements = addCustomElements;\r
+\r
+               self.addValidChildren = addValidChildren;\r
+       };\r
+})(tinymce);\r
+\r
+(function(tinymce) {\r
+       tinymce.html.SaxParser = function(settings, schema) {\r
+               var self = this, noop = function() {};\r
+\r
+               settings = settings || {};\r
+               self.schema = schema = schema || new tinymce.html.Schema();\r
+\r
+               if (settings.fix_self_closing !== false)\r
+                       settings.fix_self_closing = true;\r
+\r
+               // Add handler functions from settings and setup default handlers\r
+               tinymce.each('comment cdata text start end pi doctype'.split(' '), function(name) {\r
+                       if (name)\r
+                               self[name] = settings[name] || noop;\r
+               });\r
+\r
+               self.parse = function(html) {\r
+                       var self = this, matches, index = 0, value, endRegExp, stack = [], attrList, i, text, name, isInternalElement, removeInternalElements,\r
+                               shortEndedElements, fillAttrsMap, isShortEnded, validate, elementRule, isValidElement, attr, attribsValue, invalidPrefixRegExp,\r
+                               validAttributesMap, validAttributePatterns, attributesRequired, attributesDefault, attributesForced, selfClosing,\r
+                               tokenRegExp, attrRegExp, specialElements, attrValue, idCount = 0, decode = tinymce.html.Entities.decode, fixSelfClosing, isIE;\r
+\r
+                       function processEndTag(name) {\r
+                               var pos, i;\r
+\r
+                               // Find position of parent of the same type\r
+                               pos = stack.length;\r
+                               while (pos--) {\r
+                                       if (stack[pos].name === name)\r
+                                               break;                                          \r
+                               }\r
+\r
+                               // Found parent\r
+                               if (pos >= 0) {\r
+                                       // Close all the open elements\r
+                                       for (i = stack.length - 1; i >= pos; i--) {\r
+                                               name = stack[i];\r
+\r
+                                               if (name.valid)\r
+                                                       self.end(name.name);\r
+                                       }\r
+\r
+                                       // Remove the open elements from the stack\r
+                                       stack.length = pos;\r
+                               }\r
+                       };\r
+\r
+                       function parseAttribute(match, name, value, val2, val3) {\r
+                               var attrRule, i;\r
+\r
+                               name = name.toLowerCase();\r
+                               value = name in fillAttrsMap ? name : decode(value || val2 || val3 || ''); // Handle boolean attribute than value attribute\r
+\r
+                               // Validate name and value\r
+                               if (validate && !isInternalElement && name.indexOf('data-') !== 0) {\r
+                                       attrRule = validAttributesMap[name];\r
+\r
+                                       // Find rule by pattern matching\r
+                                       if (!attrRule && validAttributePatterns) {\r
+                                               i = validAttributePatterns.length;\r
+                                               while (i--) {\r
+                                                       attrRule = validAttributePatterns[i];\r
+                                                       if (attrRule.pattern.test(name))\r
+                                                               break;\r
+                                               }\r
+\r
+                                               // No rule matched\r
+                                               if (i === -1)\r
+                                                       attrRule = null;\r
+                                       }\r
+\r
+                                       // No attribute rule found\r
+                                       if (!attrRule)\r
+                                               return;\r
+\r
+                                       // Validate value\r
+                                       if (attrRule.validValues && !(value in attrRule.validValues))\r
+                                               return;\r
+                               }\r
+\r
+                               // Add attribute to list and map\r
+                               attrList.map[name] = value;\r
+                               attrList.push({\r
+                                       name: name,\r
+                                       value: value\r
+                               });\r
+                       };\r
+\r
+                       // Precompile RegExps and map objects\r
+                       tokenRegExp = new RegExp('<(?:' +\r
+                               '(?:!--([\\w\\W]*?)-->)|' + // Comment\r
+                               '(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|' + // CDATA\r
+                               '(?:!DOCTYPE([\\w\\W]*?)>)|' + // DOCTYPE\r
+                               '(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|' + // PI\r
+                               '(?:\\/([^>]+)>)|' + // End element\r
+                               '(?:([A-Za-z0-9\\-\\:]+)((?:\\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\\/|\\s+)>)' + // Start element\r
+                       ')', 'g');\r
+\r
+                       attrRegExp = /([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:\\.|[^\"])*)\")|(?:\'((?:\\.|[^\'])*)\')|([^>\s]+)))?/g;\r
+                       specialElements = {\r
+                               'script' : /<\/script[^>]*>/gi,\r
+                               'style' : /<\/style[^>]*>/gi,\r
+                               'noscript' : /<\/noscript[^>]*>/gi\r
+                       };\r
+\r
+                       // Setup lookup tables for empty elements and boolean attributes\r
+                       shortEndedElements = schema.getShortEndedElements();\r
+                       selfClosing = settings.self_closing_elements || schema.getSelfClosingElements();\r
+                       fillAttrsMap = schema.getBoolAttrs();\r
+                       validate = settings.validate;\r
+                       removeInternalElements = settings.remove_internals;\r
+                       fixSelfClosing = settings.fix_self_closing;\r
+                       isIE = tinymce.isIE;\r
+                       invalidPrefixRegExp = /^:/;\r
+\r
+                       while (matches = tokenRegExp.exec(html)) {\r
+                               // Text\r
+                               if (index < matches.index)\r
+                                       self.text(decode(html.substr(index, matches.index - index)));\r
+\r
+                               if (value = matches[6]) { // End element\r
+                                       value = value.toLowerCase();\r
+\r
+                                       // IE will add a ":" in front of elements it doesn't understand like custom elements or HTML5 elements\r
+                                       if (isIE && invalidPrefixRegExp.test(value))\r
+                                               value = value.substr(1);\r
+\r
+                                       processEndTag(value);\r
+                               } else if (value = matches[7]) { // Start element\r
+                                       value = value.toLowerCase();\r
+\r
+                                       // IE will add a ":" in front of elements it doesn't understand like custom elements or HTML5 elements\r
+                                       if (isIE && invalidPrefixRegExp.test(value))\r
+                                               value = value.substr(1);\r
+\r
+                                       isShortEnded = value in shortEndedElements;\r
+\r
+                                       // Is self closing tag for example an <li> after an open <li>\r
+                                       if (fixSelfClosing && selfClosing[value] && stack.length > 0 && stack[stack.length - 1].name === value)\r
+                                               processEndTag(value);\r
+\r
+                                       // Validate element\r
+                                       if (!validate || (elementRule = schema.getElementRule(value))) {\r
+                                               isValidElement = true;\r
+\r
+                                               // Grab attributes map and patters when validation is enabled\r
+                                               if (validate) {\r
+                                                       validAttributesMap = elementRule.attributes;\r
+                                                       validAttributePatterns = elementRule.attributePatterns;\r
+                                               }\r
+\r
+                                               // Parse attributes\r
+                                               if (attribsValue = matches[8]) {\r
+                                                       isInternalElement = attribsValue.indexOf('data-mce-type') !== -1; // Check if the element is an internal element\r
+\r
+                                                       // If the element has internal attributes then remove it if we are told to do so\r
+                                                       if (isInternalElement && removeInternalElements)\r
+                                                               isValidElement = false;\r
+\r
+                                                       attrList = [];\r
+                                                       attrList.map = {};\r
+\r
+                                                       attribsValue.replace(attrRegExp, parseAttribute);\r
+                                               } else {\r
+                                                       attrList = [];\r
+                                                       attrList.map = {};\r
+                                               }\r
+\r
+                                               // Process attributes if validation is enabled\r
+                                               if (validate && !isInternalElement) {\r
+                                                       attributesRequired = elementRule.attributesRequired;\r
+                                                       attributesDefault = elementRule.attributesDefault;\r
+                                                       attributesForced = elementRule.attributesForced;\r
+\r
+                                                       // Handle forced attributes\r
+                                                       if (attributesForced) {\r
+                                                               i = attributesForced.length;\r
+                                                               while (i--) {\r
+                                                                       attr = attributesForced[i];\r
+                                                                       name = attr.name;\r
+                                                                       attrValue = attr.value;\r
+\r
+                                                                       if (attrValue === '{$uid}')\r
+                                                                               attrValue = 'mce_' + idCount++;\r
+\r
+                                                                       attrList.map[name] = attrValue;\r
+                                                                       attrList.push({name: name, value: attrValue});\r
+                                                               }\r
+                                                       }\r
+\r
+                                                       // Handle default attributes\r
+                                                       if (attributesDefault) {\r
+                                                               i = attributesDefault.length;\r
+                                                               while (i--) {\r
+                                                                       attr = attributesDefault[i];\r
+                                                                       name = attr.name;\r
+\r
+                                                                       if (!(name in attrList.map)) {\r
+                                                                               attrValue = attr.value;\r
+\r
+                                                                               if (attrValue === '{$uid}')\r
+                                                                                       attrValue = 'mce_' + idCount++;\r
+\r
+                                                                               attrList.map[name] = attrValue;\r
+                                                                               attrList.push({name: name, value: attrValue});\r
+                                                                       }\r
+                                                               }\r
+                                                       }\r
+\r
+                                                       // Handle required attributes\r
+                                                       if (attributesRequired) {\r
+                                                               i = attributesRequired.length;\r
+                                                               while (i--) {\r
+                                                                       if (attributesRequired[i] in attrList.map)\r
+                                                                               break;\r
+                                                               }\r
+\r
+                                                               // None of the required attributes where found\r
+                                                               if (i === -1)\r
+                                                                       isValidElement = false;\r
+                                                       }\r
+\r
+                                                       // Invalidate element if it's marked as bogus\r
+                                                       if (attrList.map['data-mce-bogus'])\r
+                                                               isValidElement = false;\r
+                                               }\r
+\r
+                                               if (isValidElement)\r
+                                                       self.start(value, attrList, isShortEnded);\r
+                                       } else\r
+                                               isValidElement = false;\r
+\r
+                                       // Treat script, noscript and style a bit different since they may include code that looks like elements\r
+                                       if (endRegExp = specialElements[value]) {\r
+                                               endRegExp.lastIndex = index = matches.index + matches[0].length;\r
+\r
+                                               if (matches = endRegExp.exec(html)) {\r
+                                                       if (isValidElement)\r
+                                                               text = html.substr(index, matches.index - index);\r
+\r
+                                                       index = matches.index + matches[0].length;\r
+                                               } else {\r
+                                                       text = html.substr(index);\r
+                                                       index = html.length;\r
+                                               }\r
+\r
+                                               if (isValidElement && text.length > 0)\r
+                                                       self.text(text, true);\r
+\r
+                                               if (isValidElement)\r
+                                                       self.end(value);\r
+\r
+                                               tokenRegExp.lastIndex = index;\r
+                                               continue;\r
+                                       }\r
+\r
+                                       // Push value on to stack\r
+                                       if (!isShortEnded) {\r
+                                               if (!attribsValue || attribsValue.indexOf('/') != attribsValue.length - 1)\r
+                                                       stack.push({name: value, valid: isValidElement});\r
+                                               else if (isValidElement)\r
+                                                       self.end(value);\r
+                                       }\r
+                               } else if (value = matches[1]) { // Comment\r
+                                       self.comment(value);\r
+                               } else if (value = matches[2]) { // CDATA\r
+                                       self.cdata(value);\r
+                               } else if (value = matches[3]) { // DOCTYPE\r
+                                       self.doctype(value);\r
+                               } else if (value = matches[4]) { // PI\r
+                                       self.pi(value, matches[5]);\r
+                               }\r
+\r
+                               index = matches.index + matches[0].length;\r
+                       }\r
+\r
+                       // Text\r
+                       if (index < html.length)\r
+                               self.text(decode(html.substr(index)));\r
+\r
+                       // Close any open elements\r
+                       for (i = stack.length - 1; i >= 0; i--) {\r
+                               value = stack[i];\r
+\r
+                               if (value.valid)\r
+                                       self.end(value.name);\r
+                       }\r
+               };\r
+       }\r
+})(tinymce);\r
+\r
+(function(tinymce) {\r
+       var whiteSpaceRegExp = /^[ \t\r\n]*$/, typeLookup = {\r
+               '#text' : 3,\r
+               '#comment' : 8,\r
+               '#cdata' : 4,\r
+               '#pi' : 7,\r
+               '#doctype' : 10,\r
+               '#document-fragment' : 11\r
+       };\r
+\r
+       // Walks the tree left/right\r
+       function walk(node, root_node, prev) {\r
+               var sibling, parent, startName = prev ? 'lastChild' : 'firstChild', siblingName = prev ? 'prev' : 'next';\r
+\r
+               // Walk into nodes if it has a start\r
+               if (node[startName])\r
+                       return node[startName];\r
+\r
+               // Return the sibling if it has one\r
+               if (node !== root_node) {\r
+                       sibling = node[siblingName];\r
+\r
+                       if (sibling)\r
+                               return sibling;\r
+\r
+                       // Walk up the parents to look for siblings\r
+                       for (parent = node.parent; parent && parent !== root_node; parent = parent.parent) {\r
+                               sibling = parent[siblingName];\r
+\r
+                               if (sibling)\r
+                                       return sibling;\r
+                       }\r
+               }\r
+       };\r
+\r
+       function Node(name, type) {\r
+               this.name = name;\r
+               this.type = type;\r
+\r
+               if (type === 1) {\r
+                       this.attributes = [];\r
+                       this.attributes.map = {};\r
+               }\r
+       }\r
+\r
+       tinymce.extend(Node.prototype, {\r
+               replace : function(node) {\r
+                       var self = this;\r
+\r
+                       if (node.parent)\r
+                               node.remove();\r
+\r
+                       self.insert(node, self);\r
+                       self.remove();\r
+\r
+                       return self;\r
+               },\r
+\r
+               attr : function(name, value) {\r
+                       var self = this, attrs, i, undef;\r
+\r
+                       if (typeof name !== "string") {\r
+                               for (i in name)\r
+                                       self.attr(i, name[i]);\r
+\r
+                               return self;\r
+                       }\r
+\r
+                       if (attrs = self.attributes) {\r
+                               if (value !== undef) {\r
+                                       // Remove attribute\r
+                                       if (value === null) {\r
+                                               if (name in attrs.map) {\r
+                                                       delete attrs.map[name];\r
+\r
+                                                       i = attrs.length;\r
+                                                       while (i--) {\r
+                                                               if (attrs[i].name === name) {\r
+                                                                       attrs = attrs.splice(i, 1);\r
+                                                                       return self;\r
+                                                               }\r
+                                                       }\r
+                                               }\r
+\r
+                                               return self;\r
+                                       }\r
+\r
+                                       // Set attribute\r
+                                       if (name in attrs.map) {\r
+                                               // Set attribute\r
+                                               i = attrs.length;\r
+                                               while (i--) {\r
+                                                       if (attrs[i].name === name) {\r
+                                                               attrs[i].value = value;\r
+                                                               break;\r
+                                                       }\r
+                                               }\r
+                                       } else\r
+                                               attrs.push({name: name, value: value});\r
+\r
+                                       attrs.map[name] = value;\r
+\r
+                                       return self;\r
+                               } else {\r
+                                       return attrs.map[name];\r
+                               }\r
+                       }\r
+               },\r
+\r
+               clone : function() {\r
+                       var self = this, clone = new Node(self.name, self.type), i, l, selfAttrs, selfAttr, cloneAttrs;\r
+\r
+                       // Clone element attributes\r
+                       if (selfAttrs = self.attributes) {\r
+                               cloneAttrs = [];\r
+                               cloneAttrs.map = {};\r
+\r
+                               for (i = 0, l = selfAttrs.length; i < l; i++) {\r
+                                       selfAttr = selfAttrs[i];\r
+\r
+                                       // Clone everything except id\r
+                                       if (selfAttr.name !== 'id') {\r
+                                               cloneAttrs[cloneAttrs.length] = {name: selfAttr.name, value: selfAttr.value};\r
+                                               cloneAttrs.map[selfAttr.name] = selfAttr.value;\r
+                                       }\r
+                               }\r
+\r
+                               clone.attributes = cloneAttrs;\r
+                       }\r
+\r
+                       clone.value = self.value;\r
+                       clone.shortEnded = self.shortEnded;\r
+\r
+                       return clone;\r
+               },\r
+\r
+               wrap : function(wrapper) {\r
+                       var self = this;\r
+\r
+                       self.parent.insert(wrapper, self);\r
+                       wrapper.append(self);\r
+\r
+                       return self;\r
+               },\r
+\r
+               unwrap : function() {\r
+                       var self = this, node, next;\r
+\r
+                       for (node = self.firstChild; node; ) {\r
+                               next = node.next;\r
+                               self.insert(node, self, true);\r
+                               node = next;\r
+                       }\r
+\r
+                       self.remove();\r
+               },\r
+\r
+               remove : function() {\r
+                       var self = this, parent = self.parent, next = self.next, prev = self.prev;\r
+\r
+                       if (parent) {\r
+                               if (parent.firstChild === self) {\r
+                                       parent.firstChild = next;\r
+\r
+                                       if (next)\r
+                                               next.prev = null;\r
+                               } else {\r
+                                       prev.next = next;\r
+                               }\r
+\r
+                               if (parent.lastChild === self) {\r
+                                       parent.lastChild = prev;\r
+\r
+                                       if (prev)\r
+                                               prev.next = null;\r
+                               } else {\r
+                                       next.prev = prev;\r
+                               }\r
+\r
+                               self.parent = self.next = self.prev = null;\r
+                       }\r
+\r
+                       return self;\r
+               },\r
+\r
+               append : function(node) {\r
+                       var self = this, last;\r
+\r
+                       if (node.parent)\r
+                               node.remove();\r
+\r
+                       last = self.lastChild;\r
+                       if (last) {\r
+                               last.next = node;\r
+                               node.prev = last;\r
+                               self.lastChild = node;\r
+                       } else\r
+                               self.lastChild = self.firstChild = node;\r
+\r
+                       node.parent = self;\r
+\r
+                       return node;\r
+               },\r
+\r
+               insert : function(node, ref_node, before) {\r
+                       var parent;\r
+\r
+                       if (node.parent)\r
+                               node.remove();\r
+\r
+                       parent = ref_node.parent || this;\r
+\r
+                       if (before) {\r
+                               if (ref_node === parent.firstChild)\r
+                                       parent.firstChild = node;\r
+                               else\r
+                                       ref_node.prev.next = node;\r
+\r
+                               node.prev = ref_node.prev;\r
+                               node.next = ref_node;\r
+                               ref_node.prev = node;\r
+                       } else {\r
+                               if (ref_node === parent.lastChild)\r
+                                       parent.lastChild = node;\r
+                               else\r
+                                       ref_node.next.prev = node;\r
+\r
+                               node.next = ref_node.next;\r
+                               node.prev = ref_node;\r
+                               ref_node.next = node;\r
+                       }\r
+\r
+                       node.parent = parent;\r
+\r
+                       return node;\r
+               },\r
+\r
+               getAll : function(name) {\r
+                       var self = this, node, collection = [];\r
+\r
+                       for (node = self.firstChild; node; node = walk(node, self)) {\r
+                               if (node.name === name)\r
+                                       collection.push(node);\r
+                       }\r
+\r
+                       return collection;\r
+               },\r
+\r
+               empty : function() {\r
+                       var self = this, nodes, i, node;\r
+\r
+                       // Remove all children\r
+                       if (self.firstChild) {\r
+                               nodes = [];\r
+\r
+                               // Collect the children\r
+                               for (node = self.firstChild; node; node = walk(node, self))\r
+                                       nodes.push(node);\r
+\r
+                               // Remove the children\r
+                               i = nodes.length;\r
+                               while (i--) {\r
+                                       node = nodes[i];\r
+                                       node.parent = node.firstChild = node.lastChild = node.next = node.prev = null;\r
+                               }\r
+                       }\r
+\r
+                       self.firstChild = self.lastChild = null;\r
+\r
+                       return self;\r
+               },\r
+\r
+               isEmpty : function(elements) {\r
+                       var self = this, node = self.firstChild, i, name;\r
+\r
+                       if (node) {\r
+                               do {\r
+                                       if (node.type === 1) {\r
+                                               // Ignore bogus elements\r
+                                               if (node.attributes.map['data-mce-bogus'])\r
+                                                       continue;\r
+\r
+                                               // Keep empty elements like <img />\r
+                                               if (elements[node.name])\r
+                                                       return false;\r
+\r
+                                               // Keep elements with data attributes or name attribute like <a name="1"></a>\r
+                                               i = node.attributes.length;\r
+                                               while (i--) {\r
+                                                       name = node.attributes[i].name;\r
+                                                       if (name === "name" || name.indexOf('data-') === 0)\r
+                                                               return false;\r
+                                               }\r
+                                       }\r
+\r
+                                       // Keep comments\r
+                                       if (node.type === 8)\r
+                                               return false;\r
+                                       \r
+                                       // Keep non whitespace text nodes\r
+                                       if ((node.type === 3 && !whiteSpaceRegExp.test(node.value)))\r
+                                               return false;\r
+                               } while (node = walk(node, self));\r
+                       }\r
+\r
+                       return true;\r
                },\r
 \r
-               empty : function() {\r
-                       var self = this, nodes, i, node;\r
+               walk : function(prev) {\r
+                       return walk(this, null, prev);\r
+               }\r
+       });\r
+\r
+       tinymce.extend(Node, {\r
+               create : function(name, attrs) {\r
+                       var node, attrName;\r
+\r
+                       // Create node\r
+                       node = new Node(name, typeLookup[name] || 1);\r
+\r
+                       // Add attributes if needed\r
+                       if (attrs) {\r
+                               for (attrName in attrs)\r
+                                       node.attr(attrName, attrs[attrName]);\r
+                       }\r
+\r
+                       return node;\r
+               }\r
+       });\r
+\r
+       tinymce.html.Node = Node;\r
+})(tinymce);\r
+\r
+(function(tinymce) {\r
+       var Node = tinymce.html.Node;\r
+\r
+       tinymce.html.DomParser = function(settings, schema) {\r
+               var self = this, nodeFilters = {}, attributeFilters = [], matchedNodes = {}, matchedAttributes = {};\r
+\r
+               settings = settings || {};\r
+               settings.validate = "validate" in settings ? settings.validate : true;\r
+               settings.root_name = settings.root_name || 'body';\r
+               self.schema = schema = schema || new tinymce.html.Schema();\r
+\r
+               function fixInvalidChildren(nodes) {\r
+                       var ni, node, parent, parents, newParent, currentNode, tempNode, childNode, i,\r
+                               childClone, nonEmptyElements, nonSplitableElements, sibling, nextNode;\r
+\r
+                       nonSplitableElements = tinymce.makeMap('tr,td,th,tbody,thead,tfoot,table');\r
+                       nonEmptyElements = schema.getNonEmptyElements();\r
+\r
+                       for (ni = 0; ni < nodes.length; ni++) {\r
+                               node = nodes[ni];\r
+\r
+                               // Already removed\r
+                               if (!node.parent)\r
+                                       continue;\r
+\r
+                               // Get list of all parent nodes until we find a valid parent to stick the child into\r
+                               parents = [node];\r
+                               for (parent = node.parent; parent && !schema.isValidChild(parent.name, node.name) && !nonSplitableElements[parent.name]; parent = parent.parent)\r
+                                       parents.push(parent);\r
+\r
+                               // Found a suitable parent\r
+                               if (parent && parents.length > 1) {\r
+                                       // Reverse the array since it makes looping easier\r
+                                       parents.reverse();\r
+\r
+                                       // Clone the related parent and insert that after the moved node\r
+                                       newParent = currentNode = self.filterNode(parents[0].clone());\r
+\r
+                                       // Start cloning and moving children on the left side of the target node\r
+                                       for (i = 0; i < parents.length - 1; i++) {\r
+                                               if (schema.isValidChild(currentNode.name, parents[i].name)) {\r
+                                                       tempNode = self.filterNode(parents[i].clone());\r
+                                                       currentNode.append(tempNode);\r
+                                               } else\r
+                                                       tempNode = currentNode;\r
+\r
+                                               for (childNode = parents[i].firstChild; childNode && childNode != parents[i + 1]; ) {\r
+                                                       nextNode = childNode.next;\r
+                                                       tempNode.append(childNode);\r
+                                                       childNode = nextNode;\r
+                                               }\r
+\r
+                                               currentNode = tempNode;\r
+                                       }\r
+\r
+                                       if (!newParent.isEmpty(nonEmptyElements)) {\r
+                                               parent.insert(newParent, parents[0], true);\r
+                                               parent.insert(node, newParent);\r
+                                       } else {\r
+                                               parent.insert(node, parents[0], true);\r
+                                       }\r
+\r
+                                       // Check if the element is empty by looking through it's contents and special treatment for <p><br /></p>\r
+                                       parent = parents[0];\r
+                                       if (parent.isEmpty(nonEmptyElements) || parent.firstChild === parent.lastChild && parent.firstChild.name === 'br') {\r
+                                               parent.empty().remove();\r
+                                       }\r
+                               } else if (node.parent) {\r
+                                       // If it's an LI try to find a UL/OL for it or wrap it\r
+                                       if (node.name === 'li') {\r
+                                               sibling = node.prev;\r
+                                               if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) {\r
+                                                       sibling.append(node);\r
+                                                       continue;\r
+                                               }\r
+\r
+                                               sibling = node.next;\r
+                                               if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) {\r
+                                                       sibling.insert(node, sibling.firstChild, true);\r
+                                                       continue;\r
+                                               }\r
+\r
+                                               node.wrap(self.filterNode(new Node('ul', 1)));\r
+                                               continue;\r
+                                       }\r
+\r
+                                       // Try wrapping the element in a DIV\r
+                                       if (schema.isValidChild(node.parent.name, 'div') && schema.isValidChild('div', node.name)) {\r
+                                               node.wrap(self.filterNode(new Node('div', 1)));\r
+                                       } else {\r
+                                               // We failed wrapping it, then remove or unwrap it\r
+                                               if (node.name === 'style' || node.name === 'script')\r
+                                                       node.empty().remove();\r
+                                               else\r
+                                                       node.unwrap();\r
+                                       }\r
+                               }\r
+                       }\r
+               };\r
+\r
+               self.filterNode = function(node) {\r
+                       var i, name, list;\r
+\r
+                       // Run element filters\r
+                       if (name in nodeFilters) {\r
+                               list = matchedNodes[name];\r
+\r
+                               if (list)\r
+                                       list.push(node);\r
+                               else\r
+                                       matchedNodes[name] = [node];\r
+                       }\r
+\r
+                       // Run attribute filters\r
+                       i = attributeFilters.length;\r
+                       while (i--) {\r
+                               name = attributeFilters[i].name;\r
+\r
+                               if (name in node.attributes.map) {\r
+                                       list = matchedAttributes[name];\r
+\r
+                                       if (list)\r
+                                               list.push(node);\r
+                                       else\r
+                                               matchedAttributes[name] = [node];\r
+                               }\r
+                       }\r
+\r
+                       return node;\r
+               };\r
+\r
+               self.addNodeFilter = function(name, callback) {\r
+                       tinymce.each(tinymce.explode(name), function(name) {\r
+                               var list = nodeFilters[name];\r
+\r
+                               if (!list)\r
+                                       nodeFilters[name] = list = [];\r
+\r
+                               list.push(callback);\r
+                       });\r
+               };\r
+\r
+               self.addAttributeFilter = function(name, callback) {\r
+                       tinymce.each(tinymce.explode(name), function(name) {\r
+                               var i;\r
+\r
+                               for (i = 0; i < attributeFilters.length; i++) {\r
+                                       if (attributeFilters[i].name === name) {\r
+                                               attributeFilters[i].callbacks.push(callback);\r
+                                               return;\r
+                                       }\r
+                               }\r
+\r
+                               attributeFilters.push({name: name, callbacks: [callback]});\r
+                       });\r
+               };\r
+\r
+               self.parse = function(html, args) {\r
+                       var parser, rootNode, node, nodes, i, l, fi, fl, list, name, validate,\r
+                               blockElements, startWhiteSpaceRegExp, invalidChildren = [], isInWhiteSpacePreservedElement,\r
+                               endWhiteSpaceRegExp, allWhiteSpaceRegExp, isAllWhiteSpaceRegExp, whiteSpaceElements, children, nonEmptyElements, rootBlockName;\r
+\r
+                       args = args || {};\r
+                       matchedNodes = {};\r
+                       matchedAttributes = {};\r
+                       blockElements = tinymce.extend(tinymce.makeMap('script,style,head,html,body,title,meta,param'), schema.getBlockElements());\r
+                       nonEmptyElements = schema.getNonEmptyElements();\r
+                       children = schema.children;\r
+                       validate = settings.validate;\r
+                       rootBlockName = "forced_root_block" in args ? args.forced_root_block : settings.forced_root_block;\r
+\r
+                       whiteSpaceElements = schema.getWhiteSpaceElements();\r
+                       startWhiteSpaceRegExp = /^[ \t\r\n]+/;\r
+                       endWhiteSpaceRegExp = /[ \t\r\n]+$/;\r
+                       allWhiteSpaceRegExp = /[ \t\r\n]+/g;\r
+                       isAllWhiteSpaceRegExp = /^[ \t\r\n]+$/;\r
+\r
+                       function addRootBlocks() {\r
+                               var node = rootNode.firstChild, next, rootBlockNode;\r
+\r
+                               while (node) {\r
+                                       next = node.next;\r
+\r
+                                       if (node.type == 3 || (node.type == 1 && node.name !== 'p' && !blockElements[node.name] && !node.attr('data-mce-type'))) {\r
+                                               if (!rootBlockNode) {\r
+                                                       // Create a new root block element\r
+                                                       rootBlockNode = createNode(rootBlockName, 1);\r
+                                                       rootNode.insert(rootBlockNode, node);\r
+                                                       rootBlockNode.append(node);\r
+                                               } else\r
+                                                       rootBlockNode.append(node);\r
+                                       } else {\r
+                                               rootBlockNode = null;\r
+                                       }\r
+\r
+                                       node = next;\r
+                               };\r
+                       };\r
+\r
+                       function createNode(name, type) {\r
+                               var node = new Node(name, type), list;\r
+\r
+                               if (name in nodeFilters) {\r
+                                       list = matchedNodes[name];\r
+\r
+                                       if (list)\r
+                                               list.push(node);\r
+                                       else\r
+                                               matchedNodes[name] = [node];\r
+                               }\r
+\r
+                               return node;\r
+                       };\r
+\r
+                       function removeWhitespaceBefore(node) {\r
+                               var textNode, textVal, sibling;\r
+\r
+                               for (textNode = node.prev; textNode && textNode.type === 3; ) {\r
+                                       textVal = textNode.value.replace(endWhiteSpaceRegExp, '');\r
+\r
+                                       if (textVal.length > 0) {\r
+                                               textNode.value = textVal;\r
+                                               textNode = textNode.prev;\r
+                                       } else {\r
+                                               sibling = textNode.prev;\r
+                                               textNode.remove();\r
+                                               textNode = sibling;\r
+                                       }\r
+                               }\r
+                       };\r
+\r
+                       function cloneAndExcludeBlocks(input) {\r
+                               var name, output = {};\r
+\r
+                               for (name in input) {\r
+                                       if (name !== 'li' && name != 'p') {\r
+                                               output[name] = input[name];\r
+                                       }\r
+                               }\r
+\r
+                               return output;\r
+                       };\r
+\r
+                       parser = new tinymce.html.SaxParser({\r
+                               validate : validate,\r
+\r
+                               // Exclude P and LI from DOM parsing since it's treated better by the DOM parser\r
+                               self_closing_elements: cloneAndExcludeBlocks(schema.getSelfClosingElements()),\r
+\r
+                               cdata: function(text) {\r
+                                       node.append(createNode('#cdata', 4)).value = text;\r
+                               },\r
+\r
+                               text: function(text, raw) {\r
+                                       var textNode;\r
+\r
+                                       // Trim all redundant whitespace on non white space elements\r
+                                       if (!isInWhiteSpacePreservedElement) {\r
+                                               text = text.replace(allWhiteSpaceRegExp, ' ');\r
+\r
+                                               if (node.lastChild && blockElements[node.lastChild.name])\r
+                                                       text = text.replace(startWhiteSpaceRegExp, '');\r
+                                       }\r
+\r
+                                       // Do we need to create the node\r
+                                       if (text.length !== 0) {\r
+                                               textNode = createNode('#text', 3);\r
+                                               textNode.raw = !!raw;\r
+                                               node.append(textNode).value = text;\r
+                                       }\r
+                               },\r
+\r
+                               comment: function(text) {\r
+                                       node.append(createNode('#comment', 8)).value = text;\r
+                               },\r
+\r
+                               pi: function(name, text) {\r
+                                       node.append(createNode(name, 7)).value = text;\r
+                                       removeWhitespaceBefore(node);\r
+                               },\r
+\r
+                               doctype: function(text) {\r
+                                       var newNode;\r
+               \r
+                                       newNode = node.append(createNode('#doctype', 10));\r
+                                       newNode.value = text;\r
+                                       removeWhitespaceBefore(node);\r
+                               },\r
+\r
+                               start: function(name, attrs, empty) {\r
+                                       var newNode, attrFiltersLen, elementRule, textNode, attrName, text, sibling, parent;\r
+\r
+                                       elementRule = validate ? schema.getElementRule(name) : {};\r
+                                       if (elementRule) {\r
+                                               newNode = createNode(elementRule.outputName || name, 1);\r
+                                               newNode.attributes = attrs;\r
+                                               newNode.shortEnded = empty;\r
+\r
+                                               node.append(newNode);\r
+\r
+                                               // Check if node is valid child of the parent node is the child is\r
+                                               // unknown we don't collect it since it's probably a custom element\r
+                                               parent = children[node.name];\r
+                                               if (parent && children[newNode.name] && !parent[newNode.name])\r
+                                                       invalidChildren.push(newNode);\r
+\r
+                                               attrFiltersLen = attributeFilters.length;\r
+                                               while (attrFiltersLen--) {\r
+                                                       attrName = attributeFilters[attrFiltersLen].name;\r
 \r
-                       // Remove all children\r
-                       if (self.firstChild) {\r
-                               nodes = [];\r
+                                                       if (attrName in attrs.map) {\r
+                                                               list = matchedAttributes[attrName];\r
 \r
-                               // Collect the children\r
-                               for (node = self.firstChild; node; node = walk(node, self))\r
-                                       nodes.push(node);\r
+                                                               if (list)\r
+                                                                       list.push(newNode);\r
+                                                               else\r
+                                                                       matchedAttributes[attrName] = [newNode];\r
+                                                       }\r
+                                               }\r
+\r
+                                               // Trim whitespace before block\r
+                                               if (blockElements[name])\r
+                                                       removeWhitespaceBefore(newNode);\r
+\r
+                                               // Change current node if the element wasn't empty i.e not <br /> or <img />\r
+                                               if (!empty)\r
+                                                       node = newNode;\r
+\r
+                                               // Check if we are inside a whitespace preserved element\r
+                                               if (!isInWhiteSpacePreservedElement && whiteSpaceElements[name]) {\r
+                                                       isInWhiteSpacePreservedElement = true;\r
+                                               }\r
+                                       }\r
+                               },\r
+\r
+                               end: function(name) {\r
+                                       var textNode, elementRule, text, sibling, tempNode;\r
+\r
+                                       elementRule = validate ? schema.getElementRule(name) : {};\r
+                                       if (elementRule) {\r
+                                               if (blockElements[name]) {\r
+                                                       if (!isInWhiteSpacePreservedElement) {\r
+                                                               // Trim whitespace of the first node in a block\r
+                                                               textNode = node.firstChild;\r
+                                                               if (textNode && textNode.type === 3) {\r
+                                                                       text = textNode.value.replace(startWhiteSpaceRegExp, '');\r
+\r
+                                                                       // Any characters left after trim or should we remove it\r
+                                                                       if (text.length > 0) {\r
+                                                                               textNode.value = text;\r
+                                                                               textNode = textNode.next;\r
+                                                                       } else {\r
+                                                                               sibling = textNode.next;\r
+                                                                               textNode.remove();\r
+                                                                               textNode = sibling;\r
+                                                                       }\r
+\r
+                                                                       // Remove any pure whitespace siblings\r
+                                                                       while (textNode && textNode.type === 3) {\r
+                                                                               text = textNode.value;\r
+                                                                               sibling = textNode.next;\r
+\r
+                                                                               if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) {\r
+                                                                                       textNode.remove();\r
+                                                                                       textNode = sibling;\r
+                                                                               }\r
+\r
+                                                                               textNode = sibling;\r
+                                                                       }\r
+                                                               }\r
+\r
+                                                               // Trim whitespace of the last node in a block\r
+                                                               textNode = node.lastChild;\r
+                                                               if (textNode && textNode.type === 3) {\r
+                                                                       text = textNode.value.replace(endWhiteSpaceRegExp, '');\r
+\r
+                                                                       // Any characters left after trim or should we remove it\r
+                                                                       if (text.length > 0) {\r
+                                                                               textNode.value = text;\r
+                                                                               textNode = textNode.prev;\r
+                                                                       } else {\r
+                                                                               sibling = textNode.prev;\r
+                                                                               textNode.remove();\r
+                                                                               textNode = sibling;\r
+                                                                       }\r
+\r
+                                                                       // Remove any pure whitespace siblings\r
+                                                                       while (textNode && textNode.type === 3) {\r
+                                                                               text = textNode.value;\r
+                                                                               sibling = textNode.prev;\r
+\r
+                                                                               if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) {\r
+                                                                                       textNode.remove();\r
+                                                                                       textNode = sibling;\r
+                                                                               }\r
+\r
+                                                                               textNode = sibling;\r
+                                                                       }\r
+                                                               }\r
+                                                       }\r
+\r
+                                                       // Trim start white space\r
+                                                       textNode = node.prev;\r
+                                                       if (textNode && textNode.type === 3) {\r
+                                                               text = textNode.value.replace(startWhiteSpaceRegExp, '');\r
+\r
+                                                               if (text.length > 0)\r
+                                                                       textNode.value = text;\r
+                                                               else\r
+                                                                       textNode.remove();\r
+                                                       }\r
+                                               }\r
+\r
+                                               // Check if we exited a whitespace preserved element\r
+                                               if (isInWhiteSpacePreservedElement && whiteSpaceElements[name]) {\r
+                                                       isInWhiteSpacePreservedElement = false;\r
+                                               }\r
+\r
+                                               // Handle empty nodes\r
+                                               if (elementRule.removeEmpty || elementRule.paddEmpty) {\r
+                                                       if (node.isEmpty(nonEmptyElements)) {\r
+                                                               if (elementRule.paddEmpty)\r
+                                                                       node.empty().append(new Node('#text', '3')).value = '\u00a0';\r
+                                                               else {\r
+                                                                       // Leave nodes that have a name like <a name="name">\r
+                                                                       if (!node.attributes.map.name && !node.attributes.map.id) {\r
+                                                                               tempNode = node.parent;\r
+                                                                               node.empty().remove();\r
+                                                                               node = tempNode;\r
+                                                                               return;\r
+                                                                       }\r
+                                                               }\r
+                                                       }\r
+                                               }\r
+\r
+                                               node = node.parent;\r
+                                       }\r
+                               }\r
+                       }, schema);\r
+\r
+                       rootNode = node = new Node(args.context || settings.root_name, 11);\r
+\r
+                       parser.parse(html);\r
+\r
+                       // Fix invalid children or report invalid children in a contextual parsing\r
+                       if (validate && invalidChildren.length) {\r
+                               if (!args.context)\r
+                                       fixInvalidChildren(invalidChildren);\r
+                               else\r
+                                       args.invalid = true;\r
+                       }\r
+\r
+                       // Wrap nodes in the root into block elements if the root is body\r
+                       if (rootBlockName && rootNode.name == 'body')\r
+                               addRootBlocks();\r
+\r
+                       // Run filters only when the contents is valid\r
+                       if (!args.invalid) {\r
+                               // Run node filters\r
+                               for (name in matchedNodes) {\r
+                                       list = nodeFilters[name];\r
+                                       nodes = matchedNodes[name];\r
+\r
+                                       // Remove already removed children\r
+                                       fi = nodes.length;\r
+                                       while (fi--) {\r
+                                               if (!nodes[fi].parent)\r
+                                                       nodes.splice(fi, 1);\r
+                                       }\r
+\r
+                                       for (i = 0, l = list.length; i < l; i++)\r
+                                               list[i](nodes, name, args);\r
+                               }\r
+\r
+                               // Run attribute filters\r
+                               for (i = 0, l = attributeFilters.length; i < l; i++) {\r
+                                       list = attributeFilters[i];\r
+\r
+                                       if (list.name in matchedAttributes) {\r
+                                               nodes = matchedAttributes[list.name];\r
+\r
+                                               // Remove already removed children\r
+                                               fi = nodes.length;\r
+                                               while (fi--) {\r
+                                                       if (!nodes[fi].parent)\r
+                                                               nodes.splice(fi, 1);\r
+                                               }\r
+\r
+                                               for (fi = 0, fl = list.callbacks.length; fi < fl; fi++)\r
+                                                       list.callbacks[fi](nodes, list.name, args);\r
+                                       }\r
+                               }\r
+                       }\r
+\r
+                       return rootNode;\r
+               };\r
+\r
+               // Remove <br> at end of block elements Gecko and WebKit injects BR elements to\r
+               // make it possible to place the caret inside empty blocks. This logic tries to remove\r
+               // these elements and keep br elements that where intended to be there intact\r
+               if (settings.remove_trailing_brs) {\r
+                       self.addNodeFilter('br', function(nodes, name) {\r
+                               var i, l = nodes.length, node, blockElements = tinymce.extend({}, schema.getBlockElements()),\r
+                                       nonEmptyElements = schema.getNonEmptyElements(), parent, lastParent, prev, prevName;\r
+\r
+                               // Remove brs from body element as well\r
+                               blockElements.body = 1;\r
+\r
+                               // Must loop forwards since it will otherwise remove all brs in <p>a<br><br><br></p>\r
+                               for (i = 0; i < l; i++) {\r
+                                       node = nodes[i];\r
+                                       parent = node.parent;\r
+\r
+                                       if (blockElements[node.parent.name] && node === parent.lastChild) {\r
+                                               // Loop all nodes to the left of the current node and check for other BR elements\r
+                                               // excluding bookmarks since they are invisible\r
+                                               prev = node.prev;\r
+                                               while (prev) {\r
+                                                       prevName = prev.name;\r
+\r
+                                                       // Ignore bookmarks\r
+                                                       if (prevName !== "span" || prev.attr('data-mce-type') !== 'bookmark') {\r
+                                                               // Found a non BR element\r
+                                                               if (prevName !== "br")\r
+                                                                       break;\r
+       \r
+                                                               // Found another br it's a <br><br> structure then don't remove anything\r
+                                                               if (prevName === 'br') {\r
+                                                                       node = null;\r
+                                                                       break;\r
+                                                               }\r
+                                                       }\r
+\r
+                                                       prev = prev.prev;\r
+                                               }\r
+\r
+                                               if (node) {\r
+                                                       node.remove();\r
+\r
+                                                       // Is the parent to be considered empty after we removed the BR\r
+                                                       if (parent.isEmpty(nonEmptyElements)) {\r
+                                                               elementRule = schema.getElementRule(parent.name);\r
+\r
+                                                               // Remove or padd the element depending on schema rule\r
+                                                               if (elementRule) {\r
+                                                                       if (elementRule.removeEmpty)\r
+                                                                               parent.remove();\r
+                                                                       else if (elementRule.paddEmpty)\r
+                                                                               parent.empty().append(new tinymce.html.Node('#text', 3)).value = '\u00a0';\r
+                                                               }\r
+                                                       }\r
+                                               }\r
+                                       } else {\r
+                                               // Replaces BR elements inside inline elements like <p><b><i><br></i></b></p> so they become <p><b><i>&nbsp;</i></b></p> \r
+                                               lastParent = node;\r
+                                               while (parent.firstChild === lastParent && parent.lastChild === lastParent) {\r
+                                                       lastParent = parent;\r
+\r
+                                                       if (blockElements[parent.name]) {\r
+                                                               break;\r
+                                                       }\r
+\r
+                                                       parent = parent.parent;\r
+                                               }\r
+\r
+                                               if (lastParent === parent) {\r
+                                                       textNode = new tinymce.html.Node('#text', 3);\r
+                                                       textNode.value = '\u00a0';\r
+                                                       node.replace(textNode);\r
+                                               }\r
+                                       }\r
+                               }\r
+                       });\r
+               }\r
+\r
+               // Force anchor names closed, unless the setting "allow_html_in_named_anchor" is explicitly included.\r
+               if (!settings.allow_html_in_named_anchor) {\r
+                       self.addAttributeFilter('id,name', function(nodes, name) {\r
+                               var i = nodes.length, sibling, prevSibling, parent, node;\r
 \r
-                               // Remove the children\r
-                               i = nodes.length;\r
                                while (i--) {\r
                                        node = nodes[i];\r
-                                       node.parent = node.firstChild = node.lastChild = node.next = node.prev = null;\r
+                                       if (node.name === 'a' && node.firstChild && !node.attr('href')) {\r
+                                               parent = node.parent;\r
+\r
+                                               // Move children after current node\r
+                                               sibling = node.lastChild;\r
+                                               do {\r
+                                                       prevSibling = sibling.prev;\r
+                                                       parent.insert(sibling, node);\r
+                                                       sibling = prevSibling;\r
+                                               } while (sibling);\r
+                                       }\r
                                }\r
-                       }\r
+                       });\r
+               }\r
+       }\r
+})(tinymce);\r
 \r
-                       self.firstChild = self.lastChild = null;\r
+tinymce.html.Writer = function(settings) {\r
+       var html = [], indent, indentBefore, indentAfter, encode, htmlOutput;\r
 \r
-                       return self;\r
-               },\r
+       settings = settings || {};\r
+       indent = settings.indent;\r
+       indentBefore = tinymce.makeMap(settings.indent_before || '');\r
+       indentAfter = tinymce.makeMap(settings.indent_after || '');\r
+       encode = tinymce.html.Entities.getEncodeFunc(settings.entity_encoding || 'raw', settings.entities);\r
+       htmlOutput = settings.element_format == "html";\r
 \r
-               isEmpty : function(elements) {\r
-                       var self = this, node = self.firstChild, i, name;\r
+       return {\r
+               start: function(name, attrs, empty) {\r
+                       var i, l, attr, value;\r
 \r
-                       if (node) {\r
-                               do {\r
-                                       if (node.type === 1) {\r
-                                               // Ignore bogus elements\r
-                                               if (node.attributes.map['data-mce-bogus'])\r
-                                                       continue;\r
+                       if (indent && indentBefore[name] && html.length > 0) {\r
+                               value = html[html.length - 1];\r
+\r
+                               if (value.length > 0 && value !== '\n')\r
+                                       html.push('\n');\r
+                       }\r
+\r
+                       html.push('<', name);\r
+\r
+                       if (attrs) {\r
+                               for (i = 0, l = attrs.length; i < l; i++) {\r
+                                       attr = attrs[i];\r
+                                       html.push(' ', attr.name, '="', encode(attr.value, true), '"');\r
+                               }\r
+                       }\r
 \r
-                                               // Keep empty elements like <img />\r
-                                               if (elements[node.name])\r
-                                                       return false;\r
+                       if (!empty || htmlOutput)\r
+                               html[html.length] = '>';\r
+                       else\r
+                               html[html.length] = ' />';\r
 \r
-                                               // Keep elements with data attributes or name attribute like <a name="1"></a>\r
-                                               i = node.attributes.length;\r
-                                               while (i--) {\r
-                                                       name = node.attributes[i].name;\r
-                                                       if (name === "name" || name.indexOf('data-') === 0)\r
-                                                               return false;\r
-                                               }\r
-                                       }\r
+                       if (empty && indent && indentAfter[name] && html.length > 0) {\r
+                               value = html[html.length - 1];\r
 \r
-                                       // Keep non whitespace text nodes\r
-                                       if ((node.type === 3 && !whiteSpaceRegExp.test(node.value)))\r
-                                               return false;\r
-                               } while (node = walk(node, self));\r
+                               if (value.length > 0 && value !== '\n')\r
+                                       html.push('\n');\r
                        }\r
+               },\r
 \r
-                       return true;\r
-               }\r
-       });\r
+               end: function(name) {\r
+                       var value;\r
 \r
-       tinymce.extend(Node, {\r
-               create : function(name, attrs) {\r
-                       var node, attrName;\r
+                       /*if (indent && indentBefore[name] && html.length > 0) {\r
+                               value = html[html.length - 1];\r
 \r
-                       // Create node\r
-                       node = new Node(name, typeLookup[name] || 1);\r
+                               if (value.length > 0 && value !== '\n')\r
+                                       html.push('\n');\r
+                       }*/\r
 \r
-                       // Add attributes if needed\r
-                       if (attrs) {\r
-                               for (attrName in attrs)\r
-                                       node.attr(attrName, attrs[attrName]);\r
-                       }\r
+                       html.push('</', name, '>');\r
 \r
-                       return node;\r
-               }\r
-       });\r
+                       if (indent && indentAfter[name] && html.length > 0) {\r
+                               value = html[html.length - 1];\r
 \r
-       tinymce.html.Node = Node;\r
-})(tinymce);\r
+                               if (value.length > 0 && value !== '\n')\r
+                                       html.push('\n');\r
+                       }\r
+               },\r
 \r
-(function(tinymce) {\r
-       var Node = tinymce.html.Node;\r
+               text: function(text, raw) {\r
+                       if (text.length > 0)\r
+                               html[html.length] = raw ? text : encode(text);\r
+               },\r
 \r
-       tinymce.html.DomParser = function(settings, schema) {\r
-               var self = this, nodeFilters = {}, attributeFilters = [], matchedNodes = {}, matchedAttributes = {};\r
+               cdata: function(text) {\r
+                       html.push('<![CDATA[', text, ']]>');\r
+               },\r
 \r
-               settings = settings || {};\r
-               settings.validate = "validate" in settings ? settings.validate : true;\r
-               settings.root_name = settings.root_name || 'body';\r
-               self.schema = schema = schema || new tinymce.html.Schema();\r
+               comment: function(text) {\r
+                       html.push('<!--', text, '-->');\r
+               },\r
 \r
-               function fixInvalidChildren(nodes) {\r
-                       var ni, node, parent, parents, newParent, currentNode, tempNode, childNode, i,\r
-                               childClone, nonEmptyElements, nonSplitableElements, sibling, nextNode;\r
+               pi: function(name, text) {\r
+                       if (text)\r
+                               html.push('<?', name, ' ', text, '?>');\r
+                       else\r
+                               html.push('<?', name, '?>');\r
 \r
-                       nonSplitableElements = tinymce.makeMap('tr,td,th,tbody,thead,tfoot,table');\r
-                       nonEmptyElements = schema.getNonEmptyElements();\r
+                       if (indent)\r
+                               html.push('\n');\r
+               },\r
 \r
-                       for (ni = 0; ni < nodes.length; ni++) {\r
-                               node = nodes[ni];\r
+               doctype: function(text) {\r
+                       html.push('<!DOCTYPE', text, '>', indent ? '\n' : '');\r
+               },\r
 \r
-                               // Already removed\r
-                               if (!node.parent)\r
-                                       continue;\r
+               reset: function() {\r
+                       html.length = 0;\r
+               },\r
 \r
-                               // Get list of all parent nodes until we find a valid parent to stick the child into\r
-                               parents = [node];\r
-                               for (parent = node.parent; parent && !schema.isValidChild(parent.name, node.name) && !nonSplitableElements[parent.name]; parent = parent.parent)\r
-                                       parents.push(parent);\r
+               getContent: function() {\r
+                       return html.join('').replace(/\n$/, '');\r
+               }\r
+       };\r
+};\r
 \r
-                               // Found a suitable parent\r
-                               if (parent && parents.length > 1) {\r
-                                       // Reverse the array since it makes looping easier\r
-                                       parents.reverse();\r
+(function(tinymce) {\r
+       tinymce.html.Serializer = function(settings, schema) {\r
+               var self = this, writer = new tinymce.html.Writer(settings);\r
 \r
-                                       // Clone the related parent and insert that after the moved node\r
-                                       newParent = currentNode = self.filterNode(parents[0].clone());\r
+               settings = settings || {};\r
+               settings.validate = "validate" in settings ? settings.validate : true;\r
 \r
-                                       // Start cloning and moving children on the left side of the target node\r
-                                       for (i = 0; i < parents.length - 1; i++) {\r
-                                               if (schema.isValidChild(currentNode.name, parents[i].name)) {\r
-                                                       tempNode = self.filterNode(parents[i].clone());\r
-                                                       currentNode.append(tempNode);\r
-                                               } else\r
-                                                       tempNode = currentNode;\r
+               self.schema = schema = schema || new tinymce.html.Schema();\r
+               self.writer = writer;\r
 \r
-                                               for (childNode = parents[i].firstChild; childNode && childNode != parents[i + 1]; ) {\r
-                                                       nextNode = childNode.next;\r
-                                                       tempNode.append(childNode);\r
-                                                       childNode = nextNode;\r
-                                               }\r
+               self.serialize = function(node) {\r
+                       var handlers, validate;\r
 \r
-                                               currentNode = tempNode;\r
-                                       }\r
+                       validate = settings.validate;\r
 \r
-                                       if (!newParent.isEmpty(nonEmptyElements)) {\r
-                                               parent.insert(newParent, parents[0], true);\r
-                                               parent.insert(node, newParent);\r
-                                       } else {\r
-                                               parent.insert(node, parents[0], true);\r
-                                       }\r
+                       handlers = {\r
+                               // #text\r
+                               3: function(node, raw) {\r
+                                       writer.text(node.value, node.raw);\r
+                               },\r
 \r
-                                       // Check if the element is empty by looking through it's contents and special treatment for <p><br /></p>\r
-                                       parent = parents[0];\r
-                                       if (parent.isEmpty(nonEmptyElements) || parent.firstChild === parent.lastChild && parent.firstChild.name === 'br') {\r
-                                               parent.empty().remove();\r
-                                       }\r
-                               } else if (node.parent) {\r
-                                       // If it's an LI try to find a UL/OL for it or wrap it\r
-                                       if (node.name === 'li') {\r
-                                               sibling = node.prev;\r
-                                               if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) {\r
-                                                       sibling.append(node);\r
-                                                       continue;\r
-                                               }\r
+                               // #comment\r
+                               8: function(node) {\r
+                                       writer.comment(node.value);\r
+                               },\r
 \r
-                                               sibling = node.next;\r
-                                               if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) {\r
-                                                       sibling.insert(node, sibling.firstChild, true);\r
-                                                       continue;\r
-                                               }\r
+                               // Processing instruction\r
+                               7: function(node) {\r
+                                       writer.pi(node.name, node.value);\r
+                               },\r
 \r
-                                               node.wrap(self.filterNode(new Node('ul', 1)));\r
-                                               continue;\r
-                                       }\r
+                               // Doctype\r
+                               10: function(node) {\r
+                                       writer.doctype(node.value);\r
+                               },\r
 \r
-                                       // Try wrapping the element in a DIV\r
-                                       if (schema.isValidChild(node.parent.name, 'div') && schema.isValidChild('div', node.name)) {\r
-                                               node.wrap(self.filterNode(new Node('div', 1)));\r
-                                       } else {\r
-                                               // We failed wrapping it, then remove or unwrap it\r
-                                               if (node.name === 'style' || node.name === 'script')\r
-                                                       node.empty().remove();\r
-                                               else\r
-                                                       node.unwrap();\r
+                               // CDATA\r
+                               4: function(node) {\r
+                                       writer.cdata(node.value);\r
+                               },\r
+\r
+                               // Document fragment\r
+                               11: function(node) {\r
+                                       if ((node = node.firstChild)) {\r
+                                               do {\r
+                                                       walk(node);\r
+                                               } while (node = node.next);\r
                                        }\r
                                }\r
-                       }\r
-               };\r
+                       };\r
 \r
-               self.filterNode = function(node) {\r
-                       var i, name, list;\r
+                       writer.reset();\r
 \r
-                       // Run element filters\r
-                       if (name in nodeFilters) {\r
-                               list = matchedNodes[name];\r
+                       function walk(node) {\r
+                               var handler = handlers[node.type], name, isEmpty, attrs, attrName, attrValue, sortedAttrs, i, l, elementRule;\r
 \r
-                               if (list)\r
-                                       list.push(node);\r
-                               else\r
-                                       matchedNodes[name] = [node];\r
-                       }\r
+                               if (!handler) {\r
+                                       name = node.name;\r
+                                       isEmpty = node.shortEnded;\r
+                                       attrs = node.attributes;\r
 \r
-                       // Run attribute filters\r
-                       i = attributeFilters.length;\r
-                       while (i--) {\r
-                               name = attributeFilters[i].name;\r
+                                       // Sort attributes\r
+                                       if (validate && attrs && attrs.length > 1) {\r
+                                               sortedAttrs = [];\r
+                                               sortedAttrs.map = {};\r
 \r
-                               if (name in node.attributes.map) {\r
-                                       list = matchedAttributes[name];\r
+                                               elementRule = schema.getElementRule(node.name);\r
+                                               for (i = 0, l = elementRule.attributesOrder.length; i < l; i++) {\r
+                                                       attrName = elementRule.attributesOrder[i];\r
 \r
-                                       if (list)\r
-                                               list.push(node);\r
-                                       else\r
-                                               matchedAttributes[name] = [node];\r
-                               }\r
-                       }\r
+                                                       if (attrName in attrs.map) {\r
+                                                               attrValue = attrs.map[attrName];\r
+                                                               sortedAttrs.map[attrName] = attrValue;\r
+                                                               sortedAttrs.push({name: attrName, value: attrValue});\r
+                                                       }\r
+                                               }\r
 \r
-                       return node;\r
-               };\r
+                                               for (i = 0, l = attrs.length; i < l; i++) {\r
+                                                       attrName = attrs[i].name;\r
 \r
-               self.addNodeFilter = function(name, callback) {\r
-                       tinymce.each(tinymce.explode(name), function(name) {\r
-                               var list = nodeFilters[name];\r
+                                                       if (!(attrName in sortedAttrs.map)) {\r
+                                                               attrValue = attrs.map[attrName];\r
+                                                               sortedAttrs.map[attrName] = attrValue;\r
+                                                               sortedAttrs.push({name: attrName, value: attrValue});\r
+                                                       }\r
+                                               }\r
 \r
-                               if (!list)\r
-                                       nodeFilters[name] = list = [];\r
+                                               attrs = sortedAttrs;\r
+                                       }\r
 \r
-                               list.push(callback);\r
-                       });\r
-               };\r
+                                       writer.start(node.name, attrs, isEmpty);\r
 \r
-               self.addAttributeFilter = function(name, callback) {\r
-                       tinymce.each(tinymce.explode(name), function(name) {\r
-                               var i;\r
+                                       if (!isEmpty) {\r
+                                               if ((node = node.firstChild)) {\r
+                                                       do {\r
+                                                               walk(node);\r
+                                                       } while (node = node.next);\r
+                                               }\r
 \r
-                               for (i = 0; i < attributeFilters.length; i++) {\r
-                                       if (attributeFilters[i].name === name) {\r
-                                               attributeFilters[i].callbacks.push(callback);\r
-                                               return;\r
+                                               writer.end(name);\r
                                        }\r
-                               }\r
+                               } else\r
+                                       handler(node);\r
+                       }\r
 \r
-                               attributeFilters.push({name: name, callbacks: [callback]});\r
-                       });\r
+                       // Serialize element and treat all non elements as fragments\r
+                       if (node.type == 1 && !settings.inner)\r
+                               walk(node);\r
+                       else\r
+                               handlers[11](node);\r
+\r
+                       return writer.getContent();\r
                };\r
+       }\r
+})(tinymce);\r
 \r
-               self.parse = function(html, args) {\r
-                       var parser, rootNode, node, nodes, i, l, fi, fl, list, name, validate,\r
-                               blockElements, startWhiteSpaceRegExp, invalidChildren = [],\r
-                               endWhiteSpaceRegExp, allWhiteSpaceRegExp, whiteSpaceElements, children, nonEmptyElements;\r
+// JSLint defined globals\r
+/*global tinymce:false, window:false */\r
 \r
-                       args = args || {};\r
-                       matchedNodes = {};\r
-                       matchedAttributes = {};\r
-                       blockElements = tinymce.extend(tinymce.makeMap('script,style,head,html,body,title,meta,param'), schema.getBlockElements());\r
-                       nonEmptyElements = schema.getNonEmptyElements();\r
-                       children = schema.children;\r
-                       validate = settings.validate;\r
+tinymce.dom = {};\r
 \r
-                       whiteSpaceElements = schema.getWhiteSpaceElements();\r
-                       startWhiteSpaceRegExp = /^[ \t\r\n]+/;\r
-                       endWhiteSpaceRegExp = /[ \t\r\n]+$/;\r
-                       allWhiteSpaceRegExp = /[ \t\r\n]+/g;\r
+(function(namespace, expando) {\r
+       var w3cEventModel = !!document.addEventListener;\r
 \r
-                       function createNode(name, type) {\r
-                               var node = new Node(name, type), list;\r
+       function addEvent(target, name, callback, capture) {\r
+               if (target.addEventListener) {\r
+                       target.addEventListener(name, callback, capture || false);\r
+               } else if (target.attachEvent) {\r
+                       target.attachEvent('on' + name, callback);\r
+               }\r
+       }\r
 \r
-                               if (name in nodeFilters) {\r
-                                       list = matchedNodes[name];\r
+       function removeEvent(target, name, callback, capture) {\r
+               if (target.removeEventListener) {\r
+                       target.removeEventListener(name, callback, capture || false);\r
+               } else if (target.detachEvent) {\r
+                       target.detachEvent('on' + name, callback);\r
+               }\r
+       }\r
 \r
-                                       if (list)\r
-                                               list.push(node);\r
-                                       else\r
-                                               matchedNodes[name] = [node];\r
-                               }\r
+       function fix(original_event, data) {\r
+               var name, event = data || {};\r
 \r
-                               return node;\r
-                       };\r
+               // Dummy function that gets replaced on the delegation state functions\r
+               function returnFalse() {\r
+                       return false;\r
+               }\r
 \r
-                       function removeWhitespaceBefore(node) {\r
-                               var textNode, textVal, sibling;\r
+               // Dummy function that gets replaced on the delegation state functions\r
+               function returnTrue() {\r
+                       return true;\r
+               }\r
 \r
-                               for (textNode = node.prev; textNode && textNode.type === 3; ) {\r
-                                       textVal = textNode.value.replace(endWhiteSpaceRegExp, '');\r
+               // Copy all properties from the original event\r
+               for (name in original_event) {\r
+                       // layerX/layerY is deprecated in Chrome and produces a warning\r
+                       if (name !== "layerX" && name !== "layerY") {\r
+                               event[name] = original_event[name];\r
+                       }\r
+               }\r
 \r
-                                       if (textVal.length > 0) {\r
-                                               textNode.value = textVal;\r
-                                               textNode = textNode.prev;\r
-                                       } else {\r
-                                               sibling = textNode.prev;\r
-                                               textNode.remove();\r
-                                               textNode = sibling;\r
-                                       }\r
-                               }\r
-                       };\r
+               // Normalize target IE uses srcElement\r
+               if (!event.target) {\r
+                       event.target = event.srcElement || document;\r
+               }\r
 \r
-                       parser = new tinymce.html.SaxParser({\r
-                               validate : validate,\r
-                               fix_self_closing : !validate, // Let the DOM parser handle <li> in <li> or <p> in <p> for better results\r
+               // Add preventDefault method\r
+               event.preventDefault = function() {\r
+                       event.isDefaultPrevented = returnTrue;\r
 \r
-                               cdata: function(text) {\r
-                                       node.append(createNode('#cdata', 4)).value = text;\r
-                               },\r
+                       // Execute preventDefault on the original event object\r
+                       if (original_event) {\r
+                               if (original_event.preventDefault) {\r
+                                       original_event.preventDefault();\r
+                               } else {\r
+                                       original_event.returnValue = false; // IE\r
+                               }\r
+                       }\r
+               };\r
 \r
-                               text: function(text, raw) {\r
-                                       var textNode;\r
+               // Add stopPropagation\r
+               event.stopPropagation = function() {\r
+                       event.isPropagationStopped = returnTrue;\r
 \r
-                                       // Trim all redundant whitespace on non white space elements\r
-                                       if (!whiteSpaceElements[node.name]) {\r
-                                               text = text.replace(allWhiteSpaceRegExp, ' ');\r
+                       // Execute stopPropagation on the original event object\r
+                       if (original_event) {\r
+                               if (original_event.stopPropagation) {\r
+                                       original_event.stopPropagation();\r
+                               } else {\r
+                                       original_event.cancelBubble = true; // IE\r
+                               }\r
+                        }\r
+               };\r
 \r
-                                               if (node.lastChild && blockElements[node.lastChild.name])\r
-                                                       text = text.replace(startWhiteSpaceRegExp, '');\r
-                                       }\r
+               // Add stopImmediatePropagation\r
+               event.stopImmediatePropagation = function() {\r
+                       event.isImmediatePropagationStopped = returnTrue;\r
+                       event.stopPropagation();\r
+               };\r
 \r
-                                       // Do we need to create the node\r
-                                       if (text.length !== 0) {\r
-                                               textNode = createNode('#text', 3);\r
-                                               textNode.raw = !!raw;\r
-                                               node.append(textNode).value = text;\r
-                                       }\r
-                               },\r
+               // Add event delegation states\r
+               if (!event.isDefaultPrevented) {\r
+                       event.isDefaultPrevented = returnFalse;\r
+                       event.isPropagationStopped = returnFalse;\r
+                       event.isImmediatePropagationStopped = returnFalse;\r
+               }\r
 \r
-                               comment: function(text) {\r
-                                       node.append(createNode('#comment', 8)).value = text;\r
-                               },\r
+               return event;\r
+       }\r
 \r
-                               pi: function(name, text) {\r
-                                       node.append(createNode(name, 7)).value = text;\r
-                                       removeWhitespaceBefore(node);\r
-                               },\r
+       function bindOnReady(win, callback, event_utils) {\r
+               var doc = win.document, event = {type: 'ready'};\r
 \r
-                               doctype: function(text) {\r
-                                       var newNode;\r
-               \r
-                                       newNode = node.append(createNode('#doctype', 10));\r
-                                       newNode.value = text;\r
-                                       removeWhitespaceBefore(node);\r
-                               },\r
+               // Gets called when the DOM is ready\r
+               function readyHandler() {\r
+                       if (!event_utils.domLoaded) {\r
+                               event_utils.domLoaded = true;\r
+                               callback(event);\r
+                       }\r
+               }\r
 \r
-                               start: function(name, attrs, empty) {\r
-                                       var newNode, attrFiltersLen, elementRule, textNode, attrName, text, sibling, parent;\r
+               // Use W3C method\r
+               if (w3cEventModel) {\r
+                       addEvent(win, 'DOMContentLoaded', readyHandler);\r
+               } else {\r
+                       // Use IE method\r
+                       addEvent(doc, "readystatechange", function() {\r
+                               if (doc.readyState === "complete") {\r
+                                       removeEvent(doc, "readystatechange", arguments.callee);\r
+                                       readyHandler();\r
+                               }\r
+                       });\r
 \r
-                                       elementRule = validate ? schema.getElementRule(name) : {};\r
-                                       if (elementRule) {\r
-                                               newNode = createNode(elementRule.outputName || name, 1);\r
-                                               newNode.attributes = attrs;\r
-                                               newNode.shortEnded = empty;\r
+                       // Wait until we can scroll, when we can the DOM is initialized\r
+                       if (doc.documentElement.doScroll && win === win.top) {\r
+                               (function() {\r
+                                       try {\r
+                                               // If IE is used, use the trick by Diego Perini licensed under MIT by request to the author.\r
+                                               // http://javascript.nwbox.com/IEContentLoaded/\r
+                                               doc.documentElement.doScroll("left");\r
+                                       } catch (ex) {\r
+                                               setTimeout(arguments.callee, 0);\r
+                                               return;\r
+                                       }\r
 \r
-                                               node.append(newNode);\r
+                                       readyHandler();\r
+                               })();\r
+                       }\r
+               }\r
 \r
-                                               // Check if node is valid child of the parent node is the child is\r
-                                               // unknown we don't collect it since it's probably a custom element\r
-                                               parent = children[node.name];\r
-                                               if (parent && children[newNode.name] && !parent[newNode.name])\r
-                                                       invalidChildren.push(newNode);\r
+               // Fallback if any of the above methods should fail for some odd reason\r
+               addEvent(win, 'load', readyHandler);\r
+       }\r
 \r
-                                               attrFiltersLen = attributeFilters.length;\r
-                                               while (attrFiltersLen--) {\r
-                                                       attrName = attributeFilters[attrFiltersLen].name;\r
+       function EventUtils(proxy) {\r
+               var self = this, events = {}, count, isFocusBlurBound, hasFocusIn, hasMouseEnterLeave, mouseEnterLeave;\r
 \r
-                                                       if (attrName in attrs.map) {\r
-                                                               list = matchedAttributes[attrName];\r
+               hasMouseEnterLeave = "onmouseenter" in document.documentElement;\r
+               hasFocusIn = "onfocusin" in document.documentElement;\r
+               mouseEnterLeave = {mouseenter: 'mouseover', mouseleave: 'mouseout'};\r
+               count = 1;\r
 \r
-                                                               if (list)\r
-                                                                       list.push(newNode);\r
-                                                               else\r
-                                                                       matchedAttributes[attrName] = [newNode];\r
-                                                       }\r
-                                               }\r
+               // State if the DOMContentLoaded was executed or not\r
+               self.domLoaded = false;\r
+               self.events = events;\r
 \r
-                                               // Trim whitespace before block\r
-                                               if (blockElements[name])\r
-                                                       removeWhitespaceBefore(newNode);\r
+               function executeHandlers(evt, id) {\r
+                       var callbackList, i, l, callback;\r
 \r
-                                               // Change current node if the element wasn't empty i.e not <br /> or <img />\r
-                                               if (!empty)\r
-                                                       node = newNode;\r
+                       callbackList = events[id][evt.type];\r
+                       if (callbackList) {\r
+                               for (i = 0, l = callbackList.length; i < l; i++) {\r
+                                       callback = callbackList[i];\r
+                                       \r
+                                       // Check if callback exists might be removed if a unbind is called inside the callback\r
+                                       if (callback && callback.func.call(callback.scope, evt) === false) {\r
+                                               evt.preventDefault();\r
                                        }\r
-                               },\r
 \r
-                               end: function(name) {\r
-                                       var textNode, elementRule, text, sibling, tempNode;\r
+                                       // Should we stop propagation to immediate listeners\r
+                                       if (evt.isImmediatePropagationStopped()) {\r
+                                               return;\r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
 \r
-                                       elementRule = validate ? schema.getElementRule(name) : {};\r
-                                       if (elementRule) {\r
-                                               if (blockElements[name]) {\r
-                                                       if (!whiteSpaceElements[node.name]) {\r
-                                                               // Trim whitespace at beginning of block\r
-                                                               for (textNode = node.firstChild; textNode && textNode.type === 3; ) {\r
-                                                                       text = textNode.value.replace(startWhiteSpaceRegExp, '');\r
+               self.bind = function(target, names, callback, scope) {\r
+                       var id, callbackList, i, name, fakeName, nativeHandler, capture, win = window;\r
 \r
-                                                                       if (text.length > 0) {\r
-                                                                               textNode.value = text;\r
-                                                                               textNode = textNode.next;\r
-                                                                       } else {\r
-                                                                               sibling = textNode.next;\r
-                                                                               textNode.remove();\r
-                                                                               textNode = sibling;\r
-                                                                       }\r
-                                                               }\r
+                       // Native event handler function patches the event and executes the callbacks for the expando\r
+                       function defaultNativeHandler(evt) {\r
+                               executeHandlers(fix(evt || win.event), id);\r
+                       }\r
 \r
-                                                               // Trim whitespace at end of block\r
-                                                               for (textNode = node.lastChild; textNode && textNode.type === 3; ) {\r
-                                                                       text = textNode.value.replace(endWhiteSpaceRegExp, '');\r
+                       // Don't bind to text nodes or comments\r
+                       if (!target || target.nodeType === 3 || target.nodeType === 8) {\r
+                               return;\r
+                       }\r
 \r
-                                                                       if (text.length > 0) {\r
-                                                                               textNode.value = text;\r
-                                                                               textNode = textNode.prev;\r
-                                                                       } else {\r
-                                                                               sibling = textNode.prev;\r
-                                                                               textNode.remove();\r
-                                                                               textNode = sibling;\r
-                                                                       }\r
-                                                               }\r
-                                                       }\r
+                       // Create or get events id for the target\r
+                       if (!target[expando]) {\r
+                               id = count++;\r
+                               target[expando] = id;\r
+                               events[id] = {};\r
+                       } else {\r
+                               id = target[expando];\r
 \r
-                                                       // Trim start white space\r
-                                                       textNode = node.prev;\r
-                                                       if (textNode && textNode.type === 3) {\r
-                                                               text = textNode.value.replace(startWhiteSpaceRegExp, '');\r
+                               if (!events[id]) {\r
+                                       events[id] = {};\r
+                               }\r
+                       }\r
 \r
-                                                               if (text.length > 0)\r
-                                                                       textNode.value = text;\r
-                                                               else\r
-                                                                       textNode.remove();\r
-                                                       }\r
-                                               }\r
+                       // Setup the specified scope or use the target as a default\r
+                       scope = scope || target;\r
 \r
-                                               // Handle empty nodes\r
-                                               if (elementRule.removeEmpty || elementRule.paddEmpty) {\r
-                                                       if (node.isEmpty(nonEmptyElements)) {\r
-                                                               if (elementRule.paddEmpty)\r
-                                                                       node.empty().append(new Node('#text', '3')).value = '\u00a0';\r
-                                                               else {\r
-                                                                       // Leave nodes that have a name like <a name="name">\r
-                                                                       if (!node.attributes.map.name) {\r
-                                                                               tempNode = node.parent;\r
-                                                                               node.empty().remove();\r
-                                                                               node = tempNode;\r
-                                                                               return;\r
-                                                                       }\r
-                                                               }\r
-                                                       }\r
-                                               }\r
+                       // Split names and bind each event, enables you to bind multiple events with one call\r
+                       names = names.split(' ');\r
+                       i = names.length;\r
+                       while (i--) {\r
+                               name = names[i];\r
+                               nativeHandler = defaultNativeHandler;\r
+                               fakeName = capture = false;\r
 \r
-                                               node = node.parent;\r
-                                       }\r
+                               // Use ready instead of DOMContentLoaded\r
+                               if (name === "DOMContentLoaded") {\r
+                                       name = "ready";\r
                                }\r
-                       }, schema);\r
-\r
-                       rootNode = node = new Node(settings.root_name, 11);\r
 \r
-                       parser.parse(html);\r
+                               // DOM is already ready\r
+                               if ((self.domLoaded || target.readyState == 'complete') && name === "ready") {\r
+                                       self.domLoaded = true;\r
+                                       callback.call(scope, fix({type: name}));\r
+                                       continue;\r
+                               }\r
 \r
-                       if (validate)\r
-                               fixInvalidChildren(invalidChildren);\r
+                               // Handle mouseenter/mouseleaver\r
+                               if (!hasMouseEnterLeave) {\r
+                                       fakeName = mouseEnterLeave[name];\r
 \r
-                       // Run node filters\r
-                       for (name in matchedNodes) {\r
-                               list = nodeFilters[name];\r
-                               nodes = matchedNodes[name];\r
+                                       if (fakeName) {\r
+                                               nativeHandler = function(evt) {\r
+                                                       var current, related;\r
 \r
-                               // Remove already removed children\r
-                               fi = nodes.length;\r
-                               while (fi--) {\r
-                                       if (!nodes[fi].parent)\r
-                                               nodes.splice(fi, 1);\r
-                               }\r
+                                                       current = evt.currentTarget;\r
+                                                       related = evt.relatedTarget;\r
 \r
-                               for (i = 0, l = list.length; i < l; i++)\r
-                                       list[i](nodes, name, args);\r
-                       }\r
+                                                       // 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\r
+                                                       if (related && current.contains) {\r
+                                                               // Use contains for performance\r
+                                                               related = current.contains(related);\r
+                                                       } else {\r
+                                                               while (related && related !== current) {\r
+                                                                       related = related.parentNode;\r
+                                                               }\r
+                                                       }\r
 \r
-                       // Run attribute filters\r
-                       for (i = 0, l = attributeFilters.length; i < l; i++) {\r
-                               list = attributeFilters[i];\r
+                                                       // Fire fake event\r
+                                                       if (!related) {\r
+                                                               evt = fix(evt || win.event);\r
+                                                               evt.type = evt.type === 'mouseout' ? 'mouseleave' : 'mouseenter';\r
+                                                               evt.target = current;\r
+                                                               executeHandlers(evt, id);\r
+                                                       }\r
+                                               };\r
+                                       }\r
+                               }\r
 \r
-                               if (list.name in matchedAttributes) {\r
-                                       nodes = matchedAttributes[list.name];\r
+                               // Fake bubbeling of focusin/focusout\r
+                               if (!hasFocusIn && (name === "focusin" || name === "focusout")) {\r
+                                       capture = true;\r
+                                       fakeName = name === "focusin" ? "focus" : "blur";\r
+                                       nativeHandler = function(evt) {\r
+                                               evt = fix(evt || win.event);\r
+                                               evt.type = evt.type === 'focus' ? 'focusin' : 'focusout';\r
+                                               executeHandlers(evt, id);\r
+                                       };\r
+                               }\r
 \r
-                                       // Remove already removed children\r
-                                       fi = nodes.length;\r
-                                       while (fi--) {\r
-                                               if (!nodes[fi].parent)\r
-                                                       nodes.splice(fi, 1);\r
+                               // Setup callback list and bind native event\r
+                               callbackList = events[id][name];\r
+                               if (!callbackList) {\r
+                                       events[id][name] = callbackList = [{func: callback, scope: scope}];\r
+                                       callbackList.fakeName = fakeName;\r
+                                       callbackList.capture = capture;\r
+\r
+                                       // Add the nativeHandler to the callback list so that we can later unbind it\r
+                                       callbackList.nativeHandler = nativeHandler;\r
+                                       if (!w3cEventModel) {\r
+                                               callbackList.proxyHandler = proxy(id);\r
                                        }\r
 \r
-                                       for (fi = 0, fl = list.callbacks.length; fi < fl; fi++)\r
-                                               list.callbacks[fi](nodes, list.name, args);\r
+                                       // Check if the target has native events support\r
+                                       if (name === "ready") {\r
+                                               bindOnReady(target, nativeHandler, self);\r
+                                       } else {\r
+                                               addEvent(target, fakeName || name, w3cEventModel ? nativeHandler : callbackList.proxyHandler, capture);\r
+                                       }\r
+                               } else {\r
+                                       // If it already has an native handler then just push the callback\r
+                                       callbackList.push({func: callback, scope: scope});\r
                                }\r
                        }\r
 \r
-                       return rootNode;\r
-               };\r
+                       target = callbackList = 0; // Clean memory for IE\r
 \r
-               // Remove <br> at end of block elements Gecko and WebKit injects BR elements to\r
-               // make it possible to place the caret inside empty blocks. This logic tries to remove\r
-               // these elements and keep br elements that where intended to be there intact\r
-               if (settings.remove_trailing_brs) {\r
-                       self.addNodeFilter('br', function(nodes, name) {\r
-                               var i, l = nodes.length, node, blockElements = schema.getBlockElements(),\r
-                                       nonEmptyElements = schema.getNonEmptyElements(), parent, prev, prevName;\r
+                       return callback;\r
+               };\r
 \r
-                               // Must loop forwards since it will otherwise remove all brs in <p>a<br><br><br></p>\r
-                               for (i = 0; i < l; i++) {\r
-                                       node = nodes[i];\r
-                                       parent = node.parent;\r
+               self.unbind = function(target, names, callback) {\r
+                       var id, callbackList, i, ci, name, eventMap;\r
 \r
-                                       if (blockElements[node.parent.name] && node === parent.lastChild) {\r
-                                               // Loop all nodes to the right of the current node and check for other BR elements\r
-                                               // excluding bookmarks since they are invisible\r
-                                               prev = node.prev;\r
-                                               while (prev) {\r
-                                                       prevName = prev.name;\r
+                       // Don't bind to text nodes or comments\r
+                       if (!target || target.nodeType === 3 || target.nodeType === 8) {\r
+                               return self;\r
+                       }\r
 \r
-                                                       // Ignore bookmarks\r
-                                                       if (prevName !== "span" || prev.attr('data-mce-type') !== 'bookmark') {\r
-                                                               // Found a non BR element\r
-                                                               if (prevName !== "br")\r
-                                                                       break;\r
-       \r
-                                                               // Found another br it's a <br><br> structure then don't remove anything\r
-                                                               if (prevName === 'br') {\r
-                                                                       node = null;\r
-                                                                       break;\r
+                       // Unbind event or events if the target has the expando\r
+                       id = target[expando];\r
+                       if (id) {\r
+                               eventMap = events[id];\r
+\r
+                               // Specific callback\r
+                               if (names) {\r
+                                       names = names.split(' ');\r
+                                       i = names.length;\r
+                                       while (i--) {\r
+                                               name = names[i];\r
+                                               callbackList = eventMap[name];\r
+\r
+                                               // Unbind the event if it exists in the map\r
+                                               if (callbackList) {\r
+                                                       // Remove specified callback\r
+                                                       if (callback) {\r
+                                                               ci = callbackList.length;\r
+                                                               while (ci--) {\r
+                                                                       if (callbackList[ci].func === callback) {\r
+                                                                               callbackList.splice(ci, 1);\r
+                                                                       }\r
                                                                }\r
                                                        }\r
 \r
-                                                       prev = prev.prev;\r
-                                               }\r
-\r
-                                               if (node) {\r
-                                                       node.remove();\r
-\r
-                                                       // Is the parent to be considered empty after we removed the BR\r
-                                                       if (parent.isEmpty(nonEmptyElements)) {\r
-                                                               elementRule = schema.getElementRule(parent.name);\r
-\r
-                                                               // Remove or padd the element depending on schema rule\r
-                                                               if (elementRule.removeEmpty)\r
-                                                                       parent.remove();\r
-                                                               else if (elementRule.paddEmpty) \r
-                                                                       parent.empty().append(new tinymce.html.Node('#text', 3)).value = '\u00a0';\r
+                                                       // Remove all callbacks if there isn't a specified callback or there is no callbacks left\r
+                                                       if (!callback || callbackList.length === 0) {\r
+                                                               delete eventMap[name];\r
+                                                               removeEvent(target, callbackList.fakeName || name, w3cEventModel ? callbackList.nativeHandler : callbackList.proxyHandler, callbackList.capture);\r
                                                        }\r
                                                }\r
                                        }\r
+                               } else {\r
+                                       // All events for a specific element\r
+                                       for (name in eventMap) {\r
+                                               callbackList = eventMap[name];\r
+                                               removeEvent(target, callbackList.fakeName || name, w3cEventModel ? callbackList.nativeHandler : callbackList.proxyHandler, callbackList.capture);\r
+                                       }\r
+\r
+                                       eventMap = {};\r
                                }\r
-                       });\r
-               }\r
-       }\r
-})(tinymce);\r
 \r
-tinymce.html.Writer = function(settings) {\r
-       var html = [], indent, indentBefore, indentAfter, encode, htmlOutput;\r
+                               // Check if object is empty, if it isn't then we won't remove the expando map\r
+                               for (name in eventMap) {\r
+                                       return self;\r
+                               }\r
 \r
-       settings = settings || {};\r
-       indent = settings.indent;\r
-       indentBefore = tinymce.makeMap(settings.indent_before || '');\r
-       indentAfter = tinymce.makeMap(settings.indent_after || '');\r
-       encode = tinymce.html.Entities.getEncodeFunc(settings.entity_encoding || 'raw', settings.entities);\r
-       htmlOutput = settings.element_format == "html";\r
+                               // Delete event object\r
+                               delete events[id];\r
 \r
-       return {\r
-               start: function(name, attrs, empty) {\r
-                       var i, l, attr, value;\r
+                               // Remove expando from target\r
+                               try {\r
+                                       // IE will fail here since it can't delete properties from window\r
+                                       delete target[expando];\r
+                               } catch (ex) {\r
+                                       // IE will set it to null\r
+                                       target[expando] = null;\r
+                               }\r
+                       }\r
 \r
-                       if (indent && indentBefore[name] && html.length > 0) {\r
-                               value = html[html.length - 1];\r
+                       return self;\r
+               };\r
 \r
-                               if (value.length > 0 && value !== '\n')\r
-                                       html.push('\n');\r
+               self.fire = function(target, name, args) {\r
+                       var id, event;\r
+\r
+                       // Don't bind to text nodes or comments\r
+                       if (!target || target.nodeType === 3 || target.nodeType === 8) {\r
+                               return self;\r
                        }\r
 \r
-                       html.push('<', name);\r
+                       // Build event object by patching the args\r
+                       event = fix(null, args);\r
+                       event.type = name;\r
 \r
-                       if (attrs) {\r
-                               for (i = 0, l = attrs.length; i < l; i++) {\r
-                                       attr = attrs[i];\r
-                                       html.push(' ', attr.name, '="', encode(attr.value, true), '"');\r
+                       do {\r
+                               // Found an expando that means there is listeners to execute\r
+                               id = target[expando];\r
+                               if (id) {\r
+                                       executeHandlers(event, id);\r
                                }\r
-                       }\r
 \r
-                       if (!empty || htmlOutput)\r
-                               html[html.length] = '>';\r
-                       else\r
-                               html[html.length] = ' />';\r
+                               // Walk up the DOM\r
+                               target = target.parentNode || target.ownerDocument || target.defaultView || target.parentWindow;\r
+                       } while (target && !event.isPropagationStopped());\r
 \r
-                       if (empty && indent && indentAfter[name] && html.length > 0) {\r
-                               value = html[html.length - 1];\r
+                       return self;\r
+               };\r
 \r
-                               if (value.length > 0 && value !== '\n')\r
-                                       html.push('\n');\r
+               self.clean = function(target) {\r
+                       var i, children, unbind = self.unbind;\r
+       \r
+                       // Don't bind to text nodes or comments\r
+                       if (!target || target.nodeType === 3 || target.nodeType === 8) {\r
+                               return self;\r
                        }\r
-               },\r
 \r
-               end: function(name) {\r
-                       var value;\r
+                       // Unbind any element on the specificed target\r
+                       if (target[expando]) {\r
+                               unbind(target);\r
+                       }\r
 \r
-                       /*if (indent && indentBefore[name] && html.length > 0) {\r
-                               value = html[html.length - 1];\r
+                       // Target doesn't have getElementsByTagName it's probably a window object then use it's document to find the children\r
+                       if (!target.getElementsByTagName) {\r
+                               target = target.document;\r
+                       }\r
 \r
-                               if (value.length > 0 && value !== '\n')\r
-                                       html.push('\n');\r
-                       }*/\r
+                       // Remove events from each child element\r
+                       if (target && target.getElementsByTagName) {\r
+                               unbind(target);\r
 \r
-                       html.push('</', name, '>');\r
+                               children = target.getElementsByTagName('*');\r
+                               i = children.length;\r
+                               while (i--) {\r
+                                       target = children[i];\r
 \r
-                       if (indent && indentAfter[name] && html.length > 0) {\r
-                               value = html[html.length - 1];\r
+                                       if (target[expando]) {\r
+                                               unbind(target);\r
+                                       }\r
+                               }\r
+                       }\r
 \r
-                               if (value.length > 0 && value !== '\n')\r
-                                       html.push('\n');\r
+                       return self;\r
+               };\r
+\r
+               self.callNativeHandler = function(id, evt) {\r
+                       if (events) {\r
+                               events[id][evt.type].nativeHandler(evt);\r
                        }\r
-               },\r
+               };\r
 \r
-               text: function(text, raw) {\r
-                       if (text.length > 0)\r
-                               html[html.length] = raw ? text : encode(text);\r
-               },\r
+               self.destory = function() {\r
+                       events = {};\r
+               };\r
 \r
-               cdata: function(text) {\r
-                       html.push('<![CDATA[', text, ']]>');\r
-               },\r
+               // Legacy function calls\r
 \r
-               comment: function(text) {\r
-                       html.push('<!--', text, '-->');\r
-               },\r
+               self.add = function(target, events, func, scope) {\r
+                       // Old API supported direct ID assignment\r
+                       if (typeof(target) === "string") {\r
+                               target = document.getElementById(target);\r
+                       }\r
 \r
-               pi: function(name, text) {\r
-                       if (text)\r
-                               html.push('<?', name, ' ', text, '?>');\r
-                       else\r
-                               html.push('<?', name, '?>');\r
+                       // Old API supported multiple targets\r
+                       if (target && target instanceof Array) {\r
+                               var i = target.length;\r
 \r
-                       if (indent)\r
-                               html.push('\n');\r
-               },\r
+                               while (i--) {\r
+                                       self.add(target[i], events, func, scope);\r
+                               }\r
 \r
-               doctype: function(text) {\r
-                       html.push('<!DOCTYPE', text, '>', indent ? '\n' : '');\r
-               },\r
+                               return;\r
+                       }\r
 \r
-               reset: function() {\r
-                       html.length = 0;\r
-               },\r
+                       // Old API called ready init\r
+                       if (events === "init") {\r
+                               events = "ready";\r
+                       }\r
 \r
-               getContent: function() {\r
-                       return html.join('').replace(/\n$/, '');\r
-               }\r
-       };\r
-};\r
+                       return self.bind(target, events instanceof Array ? events.join(' ') : events, func, scope);\r
+               };\r
 \r
-(function(tinymce) {\r
-       tinymce.html.Serializer = function(settings, schema) {\r
-               var self = this, writer = new tinymce.html.Writer(settings);\r
+               self.remove = function(target, events, func, scope) {\r
+                       if (!target) {\r
+                               return self;\r
+                       }\r
 \r
-               settings = settings || {};\r
-               settings.validate = "validate" in settings ? settings.validate : true;\r
+                       // Old API supported direct ID assignment\r
+                       if (typeof(target) === "string") {\r
+                               target = document.getElementById(target);\r
+                       }\r
 \r
-               self.schema = schema = schema || new tinymce.html.Schema();\r
-               self.writer = writer;\r
+                       // Old API supported multiple targets\r
+                       if (target instanceof Array) {\r
+                               var i = target.length;\r
 \r
-               self.serialize = function(node) {\r
-                       var handlers, validate;\r
+                               while (i--) {\r
+                                       self.remove(target[i], events, func, scope);\r
+                               }\r
 \r
-                       validate = settings.validate;\r
+                               return self;\r
+                       }\r
 \r
-                       handlers = {\r
-                               // #text\r
-                               3: function(node, raw) {\r
-                                       writer.text(node.value, node.raw);\r
-                               },\r
+                       return self.unbind(target, events instanceof Array ? events.join(' ') : events, func);\r
+               };\r
 \r
-                               // #comment\r
-                               8: function(node) {\r
-                                       writer.comment(node.value);\r
-                               },\r
+               self.clear = function(target) {\r
+                       // Old API supported direct ID assignment\r
+                       if (typeof(target) === "string") {\r
+                               target = document.getElementById(target);\r
+                       }\r
 \r
-                               // Processing instruction\r
-                               7: function(node) {\r
-                                       writer.pi(node.name, node.value);\r
-                               },\r
+                       return self.clean(target);\r
+               };\r
 \r
-                               // Doctype\r
-                               10: function(node) {\r
-                                       writer.doctype(node.value);\r
-                               },\r
+               self.cancel = function(e) {\r
+                       if (e) {\r
+                               self.prevent(e);\r
+                               self.stop(e);\r
+                       }\r
 \r
-                               // CDATA\r
-                               4: function(node) {\r
-                                       writer.cdata(node.value);\r
-                               },\r
+                       return false;\r
+               };\r
 \r
-                               // Document fragment\r
-                               11: function(node) {\r
-                                       if ((node = node.firstChild)) {\r
-                                               do {\r
-                                                       walk(node);\r
-                                               } while (node = node.next);\r
-                                       }\r
-                               }\r
-                       };\r
+               self.prevent = function(e) {\r
+                       if (!e.preventDefault) {\r
+                               e = fix(e);\r
+                       }\r
 \r
-                       writer.reset();\r
+                       e.preventDefault();\r
 \r
-                       function walk(node) {\r
-                               var handler = handlers[node.type], name, isEmpty, attrs, attrName, attrValue, sortedAttrs, i, l, elementRule;\r
+                       return false;\r
+               };\r
 \r
-                               if (!handler) {\r
-                                       name = node.name;\r
-                                       isEmpty = node.shortEnded;\r
-                                       attrs = node.attributes;\r
+               self.stop = function(e) {\r
+                       if (!e.stopPropagation) {\r
+                               e = fix(e);\r
+                       }\r
 \r
-                                       // Sort attributes\r
-                                       if (validate && attrs && attrs.length > 1) {\r
-                                               sortedAttrs = [];\r
-                                               sortedAttrs.map = {};\r
+                       e.stopPropagation();\r
 \r
-                                               elementRule = schema.getElementRule(node.name);\r
-                                               for (i = 0, l = elementRule.attributesOrder.length; i < l; i++) {\r
-                                                       attrName = elementRule.attributesOrder[i];\r
+                       return false;\r
+               };\r
+       }\r
 \r
-                                                       if (attrName in attrs.map) {\r
-                                                               attrValue = attrs.map[attrName];\r
-                                                               sortedAttrs.map[attrName] = attrValue;\r
-                                                               sortedAttrs.push({name: attrName, value: attrValue});\r
-                                                       }\r
-                                               }\r
+       namespace.EventUtils = EventUtils;\r
 \r
-                                               for (i = 0, l = attrs.length; i < l; i++) {\r
-                                                       attrName = attrs[i].name;\r
+       namespace.Event = new EventUtils(function(id) {\r
+               return function(evt) {\r
+                       tinymce.dom.Event.callNativeHandler(id, evt);\r
+               };\r
+       });\r
 \r
-                                                       if (!(attrName in sortedAttrs.map)) {\r
-                                                               attrValue = attrs.map[attrName];\r
-                                                               sortedAttrs.map[attrName] = attrValue;\r
-                                                               sortedAttrs.push({name: attrName, value: attrValue});\r
-                                                       }\r
-                                               }\r
+       // Bind ready event when tinymce script is loaded\r
+       namespace.Event.bind(window, 'ready', function() {});\r
 \r
-                                               attrs = sortedAttrs;\r
-                                       }\r
+       namespace = 0;\r
+})(tinymce.dom, 'data-mce-expando'); // Namespace and expando\r
 \r
-                                       writer.start(node.name, attrs, isEmpty);\r
+tinymce.dom.TreeWalker = function(start_node, root_node) {\r
+       var node = start_node;\r
 \r
-                                       if (!isEmpty) {\r
-                                               if ((node = node.firstChild)) {\r
-                                                       do {\r
-                                                               walk(node);\r
-                                                       } while (node = node.next);\r
-                                               }\r
+       function findSibling(node, start_name, sibling_name, shallow) {\r
+               var sibling, parent;\r
 \r
-                                               writer.end(name);\r
-                                       }\r
-                               } else\r
-                                       handler(node);\r
+               if (node) {\r
+                       // Walk into nodes if it has a start\r
+                       if (!shallow && node[start_name])\r
+                               return node[start_name];\r
+\r
+                       // Return the sibling if it has one\r
+                       if (node != root_node) {\r
+                               sibling = node[sibling_name];\r
+                               if (sibling)\r
+                                       return sibling;\r
+\r
+                               // Walk up the parents to look for siblings\r
+                               for (parent = node.parentNode; parent && parent != root_node; parent = parent.parentNode) {\r
+                                       sibling = parent[sibling_name];\r
+                                       if (sibling)\r
+                                               return sibling;\r
+                               }\r
                        }\r
+               }\r
+       };\r
 \r
-                       // Serialize element and treat all non elements as fragments\r
-                       if (node.type == 1 && !settings.inner)\r
-                               walk(node);\r
-                       else\r
-                               handlers[11](node);\r
+       this.current = function() {\r
+               return node;\r
+       };\r
 \r
-                       return writer.getContent();\r
-               };\r
-       }\r
-})(tinymce);\r
+       this.next = function(shallow) {\r
+               return (node = findSibling(node, 'firstChild', 'nextSibling', shallow));\r
+       };\r
+\r
+       this.prev = function(shallow) {\r
+               return (node = findSibling(node, 'lastChild', 'previousSibling', shallow));\r
+       };\r
+};\r
 \r
 (function(tinymce) {\r
        // Shorten names\r
@@ -3223,7 +5055,6 @@ tinymce.html.Writer = function(settings) {
                isIE = tinymce.isIE,\r
                Entities = tinymce.html.Entities,\r
                simpleSelectorRe = /^([a-z0-9],?)+$/i,\r
-               blockElementsMap = tinymce.html.Schema.blockElementsMap,\r
                whiteSpaceRegExp = /^[ \t\r\n]*$/;\r
 \r
        tinymce.create('tinymce.dom.DOMUtils', {\r
@@ -3247,7 +5078,7 @@ tinymce.html.Writer = function(settings) {
                },\r
 \r
                DOMUtils : function(d, s) {\r
-                       var t = this, globalStyle;\r
+                       var t = this, globalStyle, name, blockElementsMap;\r
 \r
                        t.doc = d;\r
                        t.win = window;\r
@@ -3278,18 +5109,78 @@ tinymce.html.Writer = function(settings) {
                                }\r
                        }\r
 \r
-                       if (isIE) {\r
+                       t.fixDoc(d);\r
+                       t.events = s.ownEvents ? new tinymce.dom.EventUtils(s.proxy) : tinymce.dom.Event;\r
+                       tinymce.addUnload(t.destroy, t);\r
+                       blockElementsMap = s.schema ? s.schema.getBlockElements() : {};\r
+\r
+                       t.isBlock = function(node) {\r
+                               // This function is called in module pattern style since it might be executed with the wrong this scope\r
+                               var type = node.nodeType;\r
+\r
+                               // If it's a node then check the type and use the nodeName\r
+                               if (type)\r
+                                       return !!(type === 1 && blockElementsMap[node.nodeName]);\r
+\r
+                               return !!blockElementsMap[node];\r
+                       };\r
+               },\r
+\r
+               fixDoc: function(doc) {\r
+                       var settings = this.settings, name;\r
+\r
+                       if (isIE && settings.schema) {\r
                                // Add missing HTML 4/5 elements to IE\r
                                ('abbr article aside audio canvas ' +\r
                                'details figcaption figure footer ' +\r
                                'header hgroup mark menu meter nav ' +\r
                                'output progress section summary ' +\r
                                'time video').replace(/\w+/g, function(name) {\r
-                                       d.createElement(name);\r
+                                       doc.createElement(name);\r
                                });\r
+\r
+                               // Create all custom elements\r
+                               for (name in settings.schema.getCustomElements()) {\r
+                                       doc.createElement(name);\r
+                               }\r
+                       }\r
+               },\r
+\r
+               clone: function(node, deep) {\r
+                       var self = this, clone, doc;\r
+\r
+                       // TODO: Add feature detection here in the future\r
+                       if (!isIE || node.nodeType !== 1 || deep) {\r
+                               return node.cloneNode(deep);\r
                        }\r
 \r
-                       tinymce.addUnload(t.destroy, t);\r
+                       doc = self.doc;\r
+\r
+                       // Make a HTML5 safe shallow copy\r
+                       if (!deep) {\r
+                               clone = doc.createElement(node.nodeName);\r
+\r
+                               // Copy attribs\r
+                               each(self.getAttribs(node), function(attr) {\r
+                                       self.setAttrib(clone, attr.nodeName, self.getAttrib(node, attr.nodeName));\r
+                               });\r
+\r
+                               return clone;\r
+                       }\r
+/*\r
+                       // Setup HTML5 patched document fragment\r
+                       if (!self.frag) {\r
+                               self.frag = doc.createDocumentFragment();\r
+                               self.fixDoc(self.frag);\r
+                       }\r
+\r
+                       // Make a deep copy by adding it to the document fragment then removing it this removed the :section\r
+                       clone = doc.createElement('div');\r
+                       self.frag.appendChild(clone);\r
+                       clone.innerHTML = node.outerHTML;\r
+                       self.frag.removeChild(clone);\r
+*/\r
+                       return clone.firstChild;\r
                },\r
 \r
                getRoot : function() {\r
@@ -3345,8 +5236,8 @@ tinymce.html.Writer = function(settings) {
                                h = 0;\r
 \r
                        return {\r
-                               w : parseInt(w) || e.offsetWidth || e.clientWidth,\r
-                               h : parseInt(h) || e.offsetHeight || e.clientHeight\r
+                               w : parseInt(w, 10) || e.offsetWidth || e.clientWidth,\r
+                               h : parseInt(h, 10) || e.offsetHeight || e.clientHeight\r
                        };\r
                },\r
 \r
@@ -3631,52 +5522,59 @@ tinymce.html.Writer = function(settings) {
 \r
                        return this.run(e, function(e) {\r
                                var s = t.settings;\r
+                               var originalValue = e.getAttribute(n);\r
+                               if (v !== null) {\r
+                                       switch (n) {\r
+                                               case "style":\r
+                                                       if (!is(v, 'string')) {\r
+                                                               each(v, function(v, n) {\r
+                                                                       t.setStyle(e, n, v);\r
+                                                               });\r
 \r
-                               switch (n) {\r
-                                       case "style":\r
-                                               if (!is(v, 'string')) {\r
-                                                       each(v, function(v, n) {\r
-                                                               t.setStyle(e, n, v);\r
-                                                       });\r
-\r
-                                                       return;\r
-                                               }\r
+                                                               return;\r
+                                                       }\r
 \r
-                                               // No mce_style for elements with these since they might get resized by the user\r
-                                               if (s.keep_values) {\r
-                                                       if (v && !t._isRes(v))\r
-                                                               e.setAttribute('data-mce-style', v, 2);\r
-                                                       else\r
-                                                               e.removeAttribute('data-mce-style', 2);\r
-                                               }\r
+                                                       // No mce_style for elements with these since they might get resized by the user\r
+                                                       if (s.keep_values) {\r
+                                                               if (v && !t._isRes(v))\r
+                                                                       e.setAttribute('data-mce-style', v, 2);\r
+                                                               else\r
+                                                                       e.removeAttribute('data-mce-style', 2);\r
+                                                       }\r
 \r
-                                               e.style.cssText = v;\r
-                                               break;\r
+                                                       e.style.cssText = v;\r
+                                                       break;\r
 \r
-                                       case "class":\r
-                                               e.className = v || ''; // Fix IE null bug\r
-                                               break;\r
+                                               case "class":\r
+                                                       e.className = v || ''; // Fix IE null bug\r
+                                                       break;\r
 \r
-                                       case "src":\r
-                                       case "href":\r
-                                               if (s.keep_values) {\r
-                                                       if (s.url_converter)\r
-                                                               v = s.url_converter.call(s.url_converter_scope || t, v, n, e);\r
+                                               case "src":\r
+                                               case "href":\r
+                                                       if (s.keep_values) {\r
+                                                               if (s.url_converter)\r
+                                                                       v = s.url_converter.call(s.url_converter_scope || t, v, n, e);\r
 \r
-                                                       t.setAttrib(e, 'data-mce-' + n, v, 2);\r
-                                               }\r
+                                                               t.setAttrib(e, 'data-mce-' + n, v, 2);\r
+                                                       }\r
 \r
-                                               break;\r
+                                                       break;\r
 \r
-                                       case "shape":\r
-                                               e.setAttribute('data-mce-style', v);\r
-                                               break;\r
+                                               case "shape":\r
+                                                       e.setAttribute('data-mce-style', v);\r
+                                                       break;\r
+                                       }\r
                                }\r
-\r
                                if (is(v) && v !== null && v.length !== 0)\r
                                        e.setAttribute(n, '' + v, 2);\r
                                else\r
                                        e.removeAttribute(n, 2);\r
+\r
+                               // fire onChangeAttrib event for attributes that have changed\r
+                               if (tinyMCE.activeEditor && originalValue != v) {\r
+                                       var ed = tinyMCE.activeEditor;\r
+                                       ed.onSetAttrib.dispatch(ed, e, n, v);\r
+                               }\r
                        });\r
                },\r
 \r
@@ -3691,12 +5589,12 @@ tinymce.html.Writer = function(settings) {
                },\r
 \r
                getAttrib : function(e, n, dv) {\r
-                       var v, t = this;\r
+                       var v, t = this, undef;\r
 \r
                        e = t.get(e);\r
 \r
                        if (!e || e.nodeType !== 1)\r
-                               return false;\r
+                               return dv === undef ? false : dv;\r
 \r
                        if (!is(dv))\r
                                dv = '';\r
@@ -3808,7 +5706,7 @@ tinymce.html.Writer = function(settings) {
                                }\r
                        }\r
 \r
-                       return (v !== undefined && v !== null && v !== '') ? '' + v : dv;\r
+                       return (v !== undef && v !== null && v !== '') ? '' + v : dv;\r
                },\r
 \r
                getPos : function(n, ro) {\r
@@ -3818,14 +5716,17 @@ tinymce.html.Writer = function(settings) {
                        ro = ro || d.body;\r
 \r
                        if (n) {\r
-                               // Use getBoundingClientRect on IE, Opera has it but it's not perfect\r
-                               if (isIE && !t.stdMode) {\r
+                               // Use getBoundingClientRect if it exists since it's faster than looping offset nodes\r
+                               if (n.getBoundingClientRect) {\r
                                        n = n.getBoundingClientRect();\r
                                        e = t.boxModel ? d.documentElement : d.body;\r
-                                       x = t.getStyle(t.select('html')[0], 'borderWidth'); // Remove border\r
-                                       x = (x == 'medium' || t.boxModel && !t.isIE6) && 2 || x;\r
 \r
-                                       return {x : n.left + e.scrollLeft - x, y : n.top + e.scrollTop - x};\r
+                                       // Add scroll offsets from documentElement or body since IE with the wrong box model will use d.body and so do WebKit\r
+                                       // Also remove the body/documentelement clientTop/clientLeft on IE 6, 7 since they offset the position\r
+                                       x = n.left + (d.documentElement.scrollLeft || d.body.scrollLeft) - e.clientTop;\r
+                                       y = n.top + (d.documentElement.scrollTop || d.body.scrollTop) - e.clientLeft;\r
+\r
+                                       return {x : x, y : y};\r
                                }\r
 \r
                                r = n;\r
@@ -3854,13 +5755,39 @@ tinymce.html.Writer = function(settings) {
                        return this.styles.serialize(o, name);\r
                },\r
 \r
+               addStyle: function(cssText) {\r
+                       var doc = this.doc, head;\r
+\r
+                       // Create style element if needed\r
+                       styleElm = doc.getElementById('mceDefaultStyles');\r
+                       if (!styleElm) {\r
+                               styleElm = doc.createElement('style'),\r
+                               styleElm.id = 'mceDefaultStyles';\r
+                               styleElm.type = 'text/css';\r
+\r
+                               head = doc.getElementsByTagName('head')[0];\r
+                               if (head.firstChild) {\r
+                                       head.insertBefore(styleElm, head.firstChild);\r
+                               } else {\r
+                                       head.appendChild(styleElm);\r
+                               }\r
+                       }\r
+\r
+                       // Append style data to old or new style element\r
+                       if (styleElm.styleSheet) {\r
+                               styleElm.styleSheet.cssText += cssText;\r
+                       } else {\r
+                               styleElm.appendChild(doc.createTextNode(cssText));\r
+                       }\r
+               },\r
+\r
                loadCSS : function(u) {\r
                        var t = this, d = t.doc, head;\r
 \r
                        if (!u)\r
                                u = '';\r
 \r
-                       head = t.select('head')[0];\r
+                       head = d.getElementsByTagName('head')[0];\r
 \r
                        each(u.split(','), function(u) {\r
                                var link;\r
@@ -3977,13 +5904,13 @@ tinymce.html.Writer = function(settings) {
                                                // This seems to fix this problem\r
 \r
                                                // Create new div with HTML contents and a BR infront to keep comments\r
-                                               element = self.create('div');\r
-                                               element.innerHTML = '<br />' + html;\r
+                                               var newElement = self.create('div');\r
+                                               newElement.innerHTML = '<br />' + html;\r
 \r
                                                // Add all children from div to target\r
-                                               each (element.childNodes, function(node, i) {\r
+                                               each (tinymce.grep(newElement.childNodes), function(node, i) {\r
                                                        // Skip br element\r
-                                                       if (i)\r
+                                                       if (i && element.canHaveHTML)\r
                                                                element.appendChild(node);\r
                                                });\r
                                        }\r
@@ -4075,16 +6002,6 @@ tinymce.html.Writer = function(settings) {
                        });\r
                },\r
 \r
-               isBlock : function(node) {\r
-                       var type = node.nodeType;\r
-\r
-                       // If it's a node then check the type and use the nodeName\r
-                       if (type)\r
-                               return !!(type === 1 && blockElementsMap[node.nodeName]);\r
-\r
-                       return !!blockElementsMap[node];\r
-               },\r
-\r
                replace : function(n, o, k) {\r
                        var t = this;\r
 \r
@@ -4146,7 +6063,7 @@ tinymce.html.Writer = function(settings) {
                        var c = /^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(s);\r
 \r
                        function hex(s) {\r
-                               s = parseInt(s).toString(16);\r
+                               s = parseInt(s, 10).toString(16);\r
 \r
                                return s.length > 1 ? s : '0' + s; // 0 -> 00\r
                        };\r
@@ -4280,11 +6197,11 @@ tinymce.html.Writer = function(settings) {
                },\r
 \r
                isEmpty : function(node, elements) {\r
-                       var self = this, i, attributes, type, walker, name;\r
+                       var self = this, i, attributes, type, walker, name, brCount = 0;\r
 \r
                        node = node.firstChild;\r
                        if (node) {\r
-                               walker = new tinymce.dom.TreeWalker(node);\r
+                               walker = new tinymce.dom.TreeWalker(node, node.parentNode);\r
                                elements = elements || self.schema ? self.schema.getNonEmptyElements() : null;\r
 \r
                                do {\r
@@ -4296,35 +6213,44 @@ tinymce.html.Writer = function(settings) {
                                                        continue;\r
 \r
                                                // Keep empty elements like <img />\r
-                                               if (elements && elements[node.nodeName.toLowerCase()])\r
+                                               name = node.nodeName.toLowerCase();\r
+                                               if (elements && elements[name]) {\r
+                                                       // Ignore single BR elements in blocks like <p><br /></p> or <p><span><br /></span></p>\r
+                                                       if (name === 'br') {\r
+                                                               brCount++;\r
+                                                               continue;\r
+                                                       }\r
+\r
                                                        return false;\r
+                                               }\r
 \r
-                                               // Keep elements with data attributes or name attribute like <a name="1"></a>\r
+                                               // Keep elements with data-bookmark attributes or name attribute like <a name="1"></a>\r
                                                attributes = self.getAttribs(node);\r
                                                i = node.attributes.length;\r
                                                while (i--) {\r
                                                        name = node.attributes[i].nodeName;\r
-                                                       if (name === "name" || name.indexOf('data-') === 0)\r
+                                                       if (name === "name" || name === 'data-mce-bookmark')\r
                                                                return false;\r
                                                }\r
                                        }\r
 \r
+                                       // Keep comment nodes\r
+                                       if (type == 8)\r
+                                               return false;\r
+\r
                                        // Keep non whitespace text nodes\r
                                        if ((type === 3 && !whiteSpaceRegExp.test(node.nodeValue)))\r
                                                return false;\r
                                } while (node = walker.next());\r
                        }\r
 \r
-                       return true;\r
+                       return brCount <= 1;\r
                },\r
 \r
                destroy : function(s) {\r
                        var t = this;\r
 \r
-                       if (t.events)\r
-                               t.events.destroy();\r
-\r
-                       t.win = t.doc = t.root = t.events = null;\r
+                       t.win = t.doc = t.root = t.events = t.frag = null;\r
 \r
                        // Manual destroy then remove unload handler\r
                        if (!s)\r
@@ -4338,7 +6264,7 @@ tinymce.html.Writer = function(settings) {
                },\r
 \r
                nodeIndex : function(node, normalized) {\r
-                       var idx = 0, lastNodeType, lastNode, nodeType, nodeValueExists;\r
+                       var idx = 0, lastNodeType, lastNode, nodeType;\r
 \r
                        if (node) {\r
                                for (lastNodeType = node.nodeType, node = node.previousSibling, lastNode = node; node; node = node.previousSibling) {\r
@@ -4346,11 +6272,7 @@ tinymce.html.Writer = function(settings) {
 \r
                                        // Normalize text nodes\r
                                        if (normalized && nodeType == 3) {\r
-                                               // ensure that text nodes that have been removed are handled correctly in Internet Explorer.\r
-                                               // (the nodeValue attribute will not exist, and will error here).\r
-                                               nodeValueExists = false;\r
-                                               try {nodeValueExists = node.nodeValue.length} catch (c) {}\r
-                                               if (nodeType == lastNodeType || !nodeValueExists)\r
+                                               if (nodeType == lastNodeType || !node.nodeValue.length)\r
                                                        continue;\r
                                        }\r
                                        idx++;\r
@@ -4375,6 +6297,12 @@ tinymce.html.Writer = function(settings) {
                        function trim(node) {\r
                                var i, children = node.childNodes, type = node.nodeType;\r
 \r
+                               function surroundedBySpans(node) {\r
+                                       var previousIsSpan = node.previousSibling && node.previousSibling.nodeName == 'SPAN';\r
+                                       var nextIsSpan = node.nextSibling && node.nextSibling.nodeName == 'SPAN';\r
+                                       return previousIsSpan && nextIsSpan;\r
+                               }\r
+\r
                                if (type == 1 && node.getAttribute('data-mce-type') == 'bookmark')\r
                                        return;\r
 \r
@@ -4385,7 +6313,10 @@ tinymce.html.Writer = function(settings) {
                                        // Keep non whitespace text nodes\r
                                        if (type == 3 && node.nodeValue.length > 0) {\r
                                                // If parent element isn't a block or there isn't any useful contents for example "<p>   </p>"\r
-                                               if (!t.isBlock(node.parentNode) || tinymce.trim(node.nodeValue).length > 0)\r
+                                               // Also keep text nodes with only spaces if surrounded by spans.\r
+                                               // eg. "<p><span>a</span> <span>b</span></p>" should keep space between a and b\r
+                                               var trimmedLength = tinymce.trim(node.nodeValue).length;\r
+                                               if (!t.isBlock(node.parentNode) || trimmedLength > 0 || trimmedLength === 0 && surroundedBySpans(node))\r
                                                        return;\r
                                        } else if (type == 1) {\r
                                                // If the only child is a bookmark then move it up\r
@@ -4422,9 +6353,9 @@ tinymce.html.Writer = function(settings) {
 \r
                                // Insert middle chunk\r
                                if (re)\r
-                                       pa.replaceChild(re, e);\r
-                               else\r
-                                       pa.insertBefore(e, pe);\r
+                               pa.replaceChild(re, e);\r
+                       else\r
+                               pa.insertBefore(e, pe);\r
 \r
                                // Insert after chunk\r
                                pa.insertBefore(trim(aft), pe);\r
@@ -4435,21 +6366,34 @@ tinymce.html.Writer = function(settings) {
                },\r
 \r
                bind : function(target, name, func, scope) {\r
-                       var t = this;\r
+                       return this.events.add(target, name, func, scope || this);\r
+               },\r
 \r
-                       if (!t.events)\r
-                               t.events = new tinymce.dom.EventUtils();\r
+               unbind : function(target, name, func) {\r
+                       return this.events.remove(target, name, func);\r
+               },\r
 \r
-                       return t.events.add(target, name, func, scope || this);\r
+               fire : function(target, name, evt) {\r
+                       return this.events.fire(target, name, evt);\r
                },\r
 \r
-               unbind : function(target, name, func) {\r
-                       var t = this;\r
+               // Returns the content editable state of a node\r
+               getContentEditable: function(node) {\r
+                       var contentEditable;\r
+\r
+                       // Check type\r
+                       if (node.nodeType != 1) {\r
+                               return null;\r
+                       }\r
 \r
-                       if (!t.events)\r
-                               t.events = new tinymce.dom.EventUtils();\r
+                       // Check for fake content editable\r
+                       contentEditable = node.getAttribute("data-mce-contenteditable");\r
+                       if (contentEditable && contentEditable !== "inherit") {\r
+                               return contentEditable;\r
+                       }\r
 \r
-                       return t.events.remove(target, name, func);\r
+                       // Check for real content editable\r
+                       return node.contentEditable !== "inherit" ? node.contentEditable : null;\r
                },\r
 \r
 \r
@@ -4561,9 +6505,14 @@ tinymce.html.Writer = function(settings) {
                        cloneContents : cloneContents,\r
                        insertNode : insertNode,\r
                        surroundContents : surroundContents,\r
-                       cloneRange : cloneRange\r
+                       cloneRange : cloneRange,\r
+                       toStringIE : toStringIE\r
                });\r
 \r
+               function createDocumentFragment() {\r
+                       return doc.createDocumentFragment();\r
+               };\r
+\r
                function setStart(n, o) {\r
                        _setEndPoint(TRUE, n, o);\r
                };\r
@@ -4896,10 +6845,10 @@ tinymce.html.Writer = function(settings) {
                };\r
 \r
                 function _traverseSameContainer(how) {\r
-                       var frag, s, sub, n, cnt, sibling, xferNode;\r
+                       var frag, s, sub, n, cnt, sibling, xferNode, start, len;\r
 \r
                        if (how != DELETE)\r
-                               frag = doc.createDocumentFragment();\r
+                               frag = createDocumentFragment();\r
 \r
                        // If selection is empty, just return the fragment\r
                        if (t[START_OFFSET] == t[END_OFFSET])\r
@@ -4913,7 +6862,15 @@ tinymce.html.Writer = function(settings) {
 \r
                                // set the original text node to its new value\r
                                if (how != CLONE) {\r
-                                       t[START_CONTAINER].deleteData(t[START_OFFSET], t[END_OFFSET] - t[START_OFFSET]);\r
+                                       n = t[START_CONTAINER];\r
+                                       start = t[START_OFFSET];\r
+                                       len = t[END_OFFSET] - t[START_OFFSET];\r
+\r
+                                       if (start === 0 && len >= n.nodeValue.length - 1) {\r
+                                               n.parentNode.removeChild(n);\r
+                                       } else {\r
+                                               n.deleteData(start, len);\r
+                                       }\r
 \r
                                        // Nothing is partially selected, so collapse to start point\r
                                        t.collapse(TRUE);\r
@@ -4922,7 +6879,10 @@ tinymce.html.Writer = function(settings) {
                                if (how == DELETE)\r
                                        return;\r
 \r
-                               frag.appendChild(doc.createTextNode(sub));\r
+                               if (sub.length > 0) {\r
+                                       frag.appendChild(doc.createTextNode(sub));\r
+                               }\r
+\r
                                return frag;\r
                        }\r
 \r
@@ -4930,7 +6890,7 @@ tinymce.html.Writer = function(settings) {
                        n = _getSelectedNode(t[START_CONTAINER], t[START_OFFSET]);\r
                        cnt = t[END_OFFSET] - t[START_OFFSET];\r
 \r
-                       while (cnt > 0) {\r
+                       while (n && cnt > 0) {\r
                                sibling = n.nextSibling;\r
                                xferNode = _traverseFullySelected(n, how);\r
 \r
@@ -4952,7 +6912,7 @@ tinymce.html.Writer = function(settings) {
                        var frag, n, endIdx, cnt, sibling, xferNode;\r
 \r
                        if (how != DELETE)\r
-                               frag = doc.createDocumentFragment();\r
+                               frag = createDocumentFragment();\r
 \r
                        n = _traverseRightBoundary(endAncestor, how);\r
 \r
@@ -4999,7 +6959,7 @@ tinymce.html.Writer = function(settings) {
                        var frag, startIdx, n, cnt, sibling, xferNode;\r
 \r
                        if (how != DELETE)\r
-                               frag = doc.createDocumentFragment();\r
+                               frag = createDocumentFragment();\r
 \r
                        n = _traverseLeftBoundary(startAncestor, how);\r
                        if (frag)\r
@@ -5010,7 +6970,7 @@ tinymce.html.Writer = function(settings) {
 \r
                        cnt = t[END_OFFSET] - startIdx;\r
                        n = startAncestor.nextSibling;\r
-                       while (cnt > 0) {\r
+                       while (n && cnt > 0) {\r
                                sibling = n.nextSibling;\r
                                xferNode = _traverseFullySelected(n, how);\r
 \r
@@ -5033,7 +6993,7 @@ tinymce.html.Writer = function(settings) {
                        var n, frag, commonParent, startOffset, endOffset, cnt, sibling, nextSibling;\r
 \r
                        if (how != DELETE)\r
-                               frag = doc.createDocumentFragment();\r
+                               frag = createDocumentFragment();\r
 \r
                        n = _traverseLeftBoundary(startAncestor, how);\r
                        if (frag)\r
@@ -5168,7 +7128,7 @@ tinymce.html.Writer = function(settings) {
                                if (how == DELETE)\r
                                        return;\r
 \r
-                               newNode = n.cloneNode(FALSE);\r
+                               newNode = dom.clone(n, FALSE);\r
                                newNode.nodeValue = newNodeValue;\r
 \r
                                return newNode;\r
@@ -5177,142 +7137,386 @@ tinymce.html.Writer = function(settings) {
                        if (how == DELETE)\r
                                return;\r
 \r
-                       return n.cloneNode(FALSE);\r
+                       return dom.clone(n, FALSE);\r
                };\r
 \r
                function _traverseFullySelected(n, how) {\r
                        if (how != DELETE)\r
-                               return how == CLONE ? n.cloneNode(TRUE) : n;\r
+                               return how == CLONE ? dom.clone(n, TRUE) : n;\r
 \r
                        n.parentNode.removeChild(n);\r
                };\r
+\r
+               function toStringIE() {\r
+                       return dom.create('body', null, cloneContents()).outerText;\r
+               }\r
+               \r
+               return t;\r
        };\r
 \r
        ns.Range = Range;\r
+\r
+       // Older IE versions doesn't let you override toString by it's constructor so we have to stick it in the prototype\r
+       Range.prototype.toString = function() {\r
+               return this.toStringIE();\r
+       };\r
 })(tinymce.dom);\r
 \r
 (function() {\r
        function Selection(selection) {\r
-               var t = this, invisibleChar = '\uFEFF', range, lastIERng, dom = selection.dom, TRUE = true, FALSE = false;\r
+               var self = this, dom = selection.dom, TRUE = true, FALSE = false;\r
+\r
+               function getPosition(rng, start) {\r
+                       var checkRng, startIndex = 0, endIndex, inside,\r
+                               children, child, offset, index, position = -1, parent;\r
+\r
+                       // Setup test range, collapse it and get the parent\r
+                       checkRng = rng.duplicate();\r
+                       checkRng.collapse(start);\r
+                       parent = checkRng.parentElement();\r
+\r
+                       // Check if the selection is within the right document\r
+                       if (parent.ownerDocument !== selection.dom.doc)\r
+                               return;\r
+\r
+                       // IE will report non editable elements as it's parent so look for an editable one\r
+                       while (parent.contentEditable === "false") {\r
+                               parent = parent.parentNode;\r
+                       }\r
+\r
+                       // If parent doesn't have any children then return that we are inside the element\r
+                       if (!parent.hasChildNodes()) {\r
+                               return {node : parent, inside : 1};\r
+                       }\r
+\r
+                       // Setup node list and endIndex\r
+                       children = parent.children;\r
+                       endIndex = children.length - 1;\r
+\r
+                       // Perform a binary search for the position\r
+                       while (startIndex <= endIndex) {\r
+                               index = Math.floor((startIndex + endIndex) / 2);\r
+\r
+                               // Move selection to node and compare the ranges\r
+                               child = children[index];\r
+                               checkRng.moveToElementText(child);\r
+                               position = checkRng.compareEndPoints(start ? 'StartToStart' : 'EndToEnd', rng);\r
+\r
+                               // Before/after or an exact match\r
+                               if (position > 0) {\r
+                                       endIndex = index - 1;\r
+                               } else if (position < 0) {\r
+                                       startIndex = index + 1;\r
+                               } else {\r
+                                       return {node : child};\r
+                               }\r
+                       }\r
+\r
+                       // Check if child position is before or we didn't find a position\r
+                       if (position < 0) {\r
+                               // No element child was found use the parent element and the offset inside that\r
+                               if (!child) {\r
+                                       checkRng.moveToElementText(parent);\r
+                                       checkRng.collapse(true);\r
+                                       child = parent;\r
+                                       inside = true;\r
+                               } else\r
+                                       checkRng.collapse(false);\r
+\r
+                               // 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\r
+                               // We need to walk char by char since rng.text or rng.htmlText will trim line endings\r
+                               offset = 0;\r
+                               while (checkRng.compareEndPoints(start ? 'StartToStart' : 'StartToEnd', rng) !== 0) {\r
+                                       if (checkRng.move('character', 1) === 0 || parent != checkRng.parentElement()) {\r
+                                               break;\r
+                                       }\r
+\r
+                                       offset++;\r
+                               }\r
+                       } else {\r
+                               // Child position is after the selection endpoint\r
+                               checkRng.collapse(true);\r
+\r
+                               // 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\r
+                               offset = 0;\r
+                               while (checkRng.compareEndPoints(start ? 'StartToStart' : 'StartToEnd', rng) !== 0) {\r
+                                       if (checkRng.move('character', -1) === 0 || parent != checkRng.parentElement()) {\r
+                                               break;\r
+                                       }\r
+\r
+                                       offset++;\r
+                               }\r
+                       }\r
+\r
+                       return {node : child, position : position, offset : offset, inside : inside};\r
+               };\r
 \r
                // Returns a W3C DOM compatible range object by using the IE Range API\r
                function getRange() {\r
-                       var ieRange = selection.getRng(), domRange = dom.createRng(), element, collapsed;\r
+                       var ieRange = selection.getRng(), domRange = dom.createRng(), element, collapsed, tmpRange, element2, bookmark, fail;\r
 \r
                        // If selection is outside the current document just return an empty range\r
                        element = ieRange.item ? ieRange.item(0) : ieRange.parentElement();\r
                        if (element.ownerDocument != dom.doc)\r
                                return domRange;\r
 \r
-                       collapsed = selection.isCollapsed();\r
+                       collapsed = selection.isCollapsed();\r
+\r
+                       // Handle control selection\r
+                       if (ieRange.item) {\r
+                               domRange.setStart(element.parentNode, dom.nodeIndex(element));\r
+                               domRange.setEnd(domRange.startContainer, domRange.startOffset + 1);\r
+\r
+                               return domRange;\r
+                       }\r
+\r
+                       function findEndPoint(start) {\r
+                               var endPoint = getPosition(ieRange, start), container, offset, textNodeOffset = 0, sibling, undef, nodeValue;\r
+\r
+                               container = endPoint.node;\r
+                               offset = endPoint.offset;\r
+\r
+                               if (endPoint.inside && !container.hasChildNodes()) {\r
+                                       domRange[start ? 'setStart' : 'setEnd'](container, 0);\r
+                                       return;\r
+                               }\r
+\r
+                               if (offset === undef) {\r
+                                       domRange[start ? 'setStartBefore' : 'setEndAfter'](container);\r
+                                       return;\r
+                               }\r
+\r
+                               if (endPoint.position < 0) {\r
+                                       sibling = endPoint.inside ? container.firstChild : container.nextSibling;\r
+\r
+                                       if (!sibling) {\r
+                                               domRange[start ? 'setStartAfter' : 'setEndAfter'](container);\r
+                                               return;\r
+                                       }\r
+\r
+                                       if (!offset) {\r
+                                               if (sibling.nodeType == 3)\r
+                                                       domRange[start ? 'setStart' : 'setEnd'](sibling, 0);\r
+                                               else\r
+                                                       domRange[start ? 'setStartBefore' : 'setEndBefore'](sibling);\r
+\r
+                                               return;\r
+                                       }\r
+\r
+                                       // Find the text node and offset\r
+                                       while (sibling) {\r
+                                               nodeValue = sibling.nodeValue;\r
+                                               textNodeOffset += nodeValue.length;\r
+\r
+                                               // We are at or passed the position we where looking for\r
+                                               if (textNodeOffset >= offset) {\r
+                                                       container = sibling;\r
+                                                       textNodeOffset -= offset;\r
+                                                       textNodeOffset = nodeValue.length - textNodeOffset;\r
+                                                       break;\r
+                                               }\r
+\r
+                                               sibling = sibling.nextSibling;\r
+                                       }\r
+                               } else {\r
+                                       // Find the text node and offset\r
+                                       sibling = container.previousSibling;\r
+\r
+                                       if (!sibling)\r
+                                               return domRange[start ? 'setStartBefore' : 'setEndBefore'](container);\r
+\r
+                                       // If there isn't any text to loop then use the first position\r
+                                       if (!offset) {\r
+                                               if (container.nodeType == 3)\r
+                                                       domRange[start ? 'setStart' : 'setEnd'](sibling, container.nodeValue.length);\r
+                                               else\r
+                                                       domRange[start ? 'setStartAfter' : 'setEndAfter'](sibling);\r
+\r
+                                               return;\r
+                                       }\r
+\r
+                                       while (sibling) {\r
+                                               textNodeOffset += sibling.nodeValue.length;\r
+\r
+                                               // We are at or passed the position we where looking for\r
+                                               if (textNodeOffset >= offset) {\r
+                                                       container = sibling;\r
+                                                       textNodeOffset -= offset;\r
+                                                       break;\r
+                                               }\r
+\r
+                                               sibling = sibling.previousSibling;\r
+                                       }\r
+                               }\r
+\r
+                               domRange[start ? 'setStart' : 'setEnd'](container, textNodeOffset);\r
+                       };\r
+\r
+                       try {\r
+                               // Find start point\r
+                               findEndPoint(true);\r
+\r
+                               // Find end point if needed\r
+                               if (!collapsed)\r
+                                       findEndPoint();\r
+                       } catch (ex) {\r
+                               // IE has a nasty bug where text nodes might throw "invalid argument" when you\r
+                               // access the nodeValue or other properties of text nodes. This seems to happend when\r
+                               // text nodes are split into two nodes by a delete/backspace call. So lets detect it and try to fix it.\r
+                               if (ex.number == -2147024809) {\r
+                                       // Get the current selection\r
+                                       bookmark = self.getBookmark(2);\r
+\r
+                                       // Get start element\r
+                                       tmpRange = ieRange.duplicate();\r
+                                       tmpRange.collapse(true);\r
+                                       element = tmpRange.parentElement();\r
+\r
+                                       // Get end element\r
+                                       if (!collapsed) {\r
+                                               tmpRange = ieRange.duplicate();\r
+                                               tmpRange.collapse(false);\r
+                                               element2 = tmpRange.parentElement();\r
+                                               element2.innerHTML = element2.innerHTML;\r
+                                       }\r
+\r
+                                       // Remove the broken elements\r
+                                       element.innerHTML = element.innerHTML;\r
+\r
+                                       // Restore the selection\r
+                                       self.moveToBookmark(bookmark);\r
+\r
+                                       // Since the range has moved we need to re-get it\r
+                                       ieRange = selection.getRng();\r
+\r
+                                       // Find start point\r
+                                       findEndPoint(true);\r
+\r
+                                       // Find end point if needed\r
+                                       if (!collapsed)\r
+                                               findEndPoint();\r
+                               } else\r
+                                       throw ex; // Throw other errors\r
+                       }\r
+\r
+                       return domRange;\r
+               };\r
 \r
-                       // Handle control selection or text selection of a image\r
-                       if (ieRange.item || !element.hasChildNodes()) {\r
-                               if (collapsed) {\r
-                                       domRange.setStart(element, 0);\r
-                                       domRange.setEnd(element, 0);\r
-                               } else {\r
-                                       domRange.setStart(element.parentNode, dom.nodeIndex(element));\r
-                                       domRange.setEnd(domRange.startContainer, domRange.startOffset + 1);\r
-                               }\r
+               this.getBookmark = function(type) {\r
+                       var rng = selection.getRng(), start, end, bookmark = {};\r
 \r
-                               return domRange;\r
-                       }\r
+                       function getIndexes(node) {\r
+                               var parent, root, children, i, indexes = [];\r
 \r
-                       function findEndPoint(start) {\r
-                               var marker, container, offset, nodes, startIndex = 0, endIndex, index, parent, checkRng, position;\r
+                               parent = node.parentNode;\r
+                               root = dom.getRoot().parentNode;\r
 \r
-                               // Setup temp range and collapse it\r
-                               checkRng = ieRange.duplicate();\r
-                               checkRng.collapse(start);\r
+                               while (parent != root && parent.nodeType !== 9) {\r
+                                       children = parent.children;\r
 \r
-                               // Create marker and insert it at the end of the endpoints parent\r
-                               marker = dom.create('a');\r
-                               parent = checkRng.parentElement();\r
+                                       i = children.length;\r
+                                       while (i--) {\r
+                                               if (node === children[i]) {\r
+                                                       indexes.push(i);\r
+                                                       break;\r
+                                               }\r
+                                       }\r
 \r
-                               // If parent doesn't have any children then set the container to that parent and the index to 0\r
-                               if (!parent.hasChildNodes()) {\r
-                                       domRange[start ? 'setStart' : 'setEnd'](parent, 0);\r
-                                       return;\r
+                                       node = parent;\r
+                                       parent = parent.parentNode;\r
                                }\r
 \r
-                               parent.appendChild(marker);\r
-                               checkRng.moveToElementText(marker);\r
-                               position = ieRange.compareEndPoints(start ? 'StartToStart' : 'EndToEnd', checkRng);\r
-                               if (position > 0) {\r
-                                       // The position is after the end of the parent element.\r
-                                       // This is the case where IE puts the caret to the left edge of a table.\r
-                                       domRange[start ? 'setStartAfter' : 'setEndAfter'](parent);\r
-                                       dom.remove(marker);\r
-                                       return;\r
-                               }\r
+                               return indexes;\r
+                       };\r
 \r
-                               // Setup node list and endIndex\r
-                               nodes = tinymce.grep(parent.childNodes);\r
-                               endIndex = nodes.length - 1;\r
-                               // Perform a binary search for the position\r
-                               while (startIndex <= endIndex) {\r
-                                       index = Math.floor((startIndex + endIndex) / 2);\r
-\r
-                                       // Insert marker and check it's position relative to the selection\r
-                                       parent.insertBefore(marker, nodes[index]);\r
-                                       checkRng.moveToElementText(marker);\r
-                                       position = ieRange.compareEndPoints(start ? 'StartToStart' : 'EndToEnd', checkRng);\r
-                                       if (position > 0) {\r
-                                               // Marker is to the right\r
-                                               startIndex = index + 1;\r
-                                       } else if (position < 0) {\r
-                                               // Marker is to the left\r
-                                               endIndex = index - 1;\r
-                                       } else {\r
-                                               // Maker is where we are\r
-                                               found = true;\r
-                                               break;\r
-                                       }\r
+                       function getBookmarkEndPoint(start) {\r
+                               var position;\r
+\r
+                               position = getPosition(rng, start);\r
+                               if (position) {\r
+                                       return {\r
+                                               position : position.position,\r
+                                               offset : position.offset,\r
+                                               indexes : getIndexes(position.node),\r
+                                               inside : position.inside\r
+                                       };\r
                                }\r
+                       };\r
 \r
-                               // Setup container\r
-                               container = position > 0 || index == 0 ? marker.nextSibling : marker.previousSibling;\r
+                       // Non ubstructive bookmark\r
+                       if (type === 2) {\r
+                               // Handle text selection\r
+                               if (!rng.item) {\r
+                                       bookmark.start = getBookmarkEndPoint(true);\r
 \r
-                               // Handle element selection\r
-                               if (container.nodeType == 1) {\r
-                                       dom.remove(marker);\r
+                                       if (!selection.isCollapsed())\r
+                                               bookmark.end = getBookmarkEndPoint();\r
+                               } else\r
+                                       bookmark.start = {ctrl : true, indexes : getIndexes(rng.item(0))};\r
+                       }\r
 \r
-                                       // Find offset and container\r
-                                       offset = dom.nodeIndex(container);\r
-                                       container = container.parentNode;\r
+                       return bookmark;\r
+               };\r
 \r
-                                       // Move the offset if we are setting the end or the position is after an element\r
-                                       if (!start || index > 0)\r
-                                               offset++;\r
-                               } else {\r
-                                       // Calculate offset within text node\r
-                                       if (position > 0 || index == 0) {\r
-                                               checkRng.setEndPoint(start ? 'StartToStart' : 'EndToEnd', ieRange);\r
-                                               offset = checkRng.text.length;\r
-                                       } else {\r
-                                               checkRng.setEndPoint(start ? 'StartToStart' : 'EndToEnd', ieRange);\r
-                                               offset = container.nodeValue.length - checkRng.text.length;\r
-                                       }\r
+               this.moveToBookmark = function(bookmark) {\r
+                       var rng, body = dom.doc.body;\r
 \r
-                                       dom.remove(marker);\r
+                       function resolveIndexes(indexes) {\r
+                               var node, i, idx, children;\r
+\r
+                               node = dom.getRoot();\r
+                               for (i = indexes.length - 1; i >= 0; i--) {\r
+                                       children = node.children;\r
+                                       idx = indexes[i];\r
+\r
+                                       if (idx <= children.length - 1) {\r
+                                               node = children[idx];\r
+                                       }\r
                                }\r
 \r
-                               domRange[start ? 'setStart' : 'setEnd'](container, offset);\r
+                               return node;\r
                        };\r
+                       \r
+                       function setBookmarkEndPoint(start) {\r
+                               var endPoint = bookmark[start ? 'start' : 'end'], moveLeft, moveRng, undef;\r
 \r
-                       // Find start point\r
-                       findEndPoint(true);\r
+                               if (endPoint) {\r
+                                       moveLeft = endPoint.position > 0;\r
 \r
-                       // Find end point if needed\r
-                       if (!collapsed)\r
-                               findEndPoint();\r
+                                       moveRng = body.createTextRange();\r
+                                       moveRng.moveToElementText(resolveIndexes(endPoint.indexes));\r
 \r
-                       return domRange;\r
+                                       offset = endPoint.offset;\r
+                                       if (offset !== undef) {\r
+                                               moveRng.collapse(endPoint.inside || moveLeft);\r
+                                               moveRng.moveStart('character', moveLeft ? -offset : offset);\r
+                                       } else\r
+                                               moveRng.collapse(start);\r
+\r
+                                       rng.setEndPoint(start ? 'StartToStart' : 'EndToStart', moveRng);\r
+\r
+                                       if (start)\r
+                                               rng.collapse(true);\r
+                               }\r
+                       };\r
+\r
+                       if (bookmark.start) {\r
+                               if (bookmark.start.ctrl) {\r
+                                       rng = body.createControlRange();\r
+                                       rng.addElement(resolveIndexes(bookmark.start.indexes));\r
+                                       rng.select();\r
+                               } else {\r
+                                       rng = body.createTextRange();\r
+                                       setBookmarkEndPoint(true);\r
+                                       setBookmarkEndPoint();\r
+                                       rng.select();\r
+                               }\r
+                       }\r
                };\r
 \r
                this.addRange = function(rng) {\r
-                       var ieRng, ctrlRng, startContainer, startOffset, endContainer, endOffset, doc = selection.dom.doc, body = doc.body;\r
+                       var ieRng, ctrlRng, startContainer, startOffset, endContainer, endOffset, sibling,\r
+                               doc = selection.dom.doc, body = doc.body, nativeRng, ctrlElm;\r
 \r
                        function setEndPoint(start) {\r
                                var container, offset, marker, tmpRng, nodes;\r
@@ -5344,12 +7548,13 @@ tinymce.html.Writer = function(settings) {
                                                }\r
 \r
                                                tmpRng.moveToElementText(marker);\r
-                                       } else {\r
+                                       } else if (container.canHaveHTML) {\r
                                                // Empty node selection for example <div>|</div>\r
-                                               marker = doc.createTextNode(invisibleChar);\r
-                                               container.appendChild(marker);\r
-                                               tmpRng.moveToElementText(marker.parentNode);\r
-                                               tmpRng.collapse(TRUE);\r
+                                               // Setting innerHTML with a span marker then remove that marker seems to keep empty block elements open\r
+                                               container.innerHTML = '<span>\uFEFF</span>';\r
+                                               marker = container.firstChild;\r
+                                               tmpRng.moveToElementText(marker);\r
+                                               tmpRng.collapse(FALSE); // Collapse false works better than true for some odd reason\r
                                        }\r
 \r
                                        ieRng.setEndPoint(start ? 'StartToStart' : 'EndToEnd', tmpRng);\r
@@ -5357,9 +7562,6 @@ tinymce.html.Writer = function(settings) {
                                }\r
                        }\r
 \r
-                       // Destroy cached range\r
-                       this.destroy();\r
-\r
                        // Setup some shorter versions\r
                        startContainer = rng.startContainer;\r
                        startOffset = rng.startOffset;\r
@@ -5368,13 +7570,49 @@ tinymce.html.Writer = function(settings) {
                        ieRng = body.createTextRange();\r
 \r
                        // If single element selection then try making a control selection out of it\r
-                       if (startContainer == endContainer && startContainer.nodeType == 1 && startOffset == endOffset - 1) {\r
+                       if (startContainer == endContainer && startContainer.nodeType == 1) {\r
+                               // Trick to place the caret inside an empty block element like <p></p>\r
+                               if (startOffset == endOffset && !startContainer.hasChildNodes()) {\r
+                                       if (startContainer.canHaveHTML) {\r
+                                               // Check if previous sibling is an empty block if it is then we need to render it\r
+                                               // IE would otherwise move the caret into the sibling instead of the empty startContainer see: #5236\r
+                                               // Example this: <p></p><p>|</p> would become this: <p>|</p><p></p>\r
+                                               sibling = startContainer.previousSibling;\r
+                                               if (sibling && !sibling.hasChildNodes() && dom.isBlock(sibling)) {\r
+                                                       sibling.innerHTML = '\uFEFF';\r
+                                               } else {\r
+                                                       sibling = null;\r
+                                               }\r
+\r
+                                               startContainer.innerHTML = '<span>\uFEFF</span><span>\uFEFF</span>';\r
+                                               ieRng.moveToElementText(startContainer.lastChild);\r
+                                               ieRng.select();\r
+                                               dom.doc.selection.clear();\r
+                                               startContainer.innerHTML = '';\r
+\r
+                                               if (sibling) {\r
+                                                       sibling.innerHTML = '';\r
+                                               }\r
+                                               return;\r
+                                       } else {\r
+                                               startOffset = dom.nodeIndex(startContainer);\r
+                                               startContainer = startContainer.parentNode;\r
+                                       }\r
+                               }\r
+\r
                                if (startOffset == endOffset - 1) {\r
                                        try {\r
+                                               ctrlElm = startContainer.childNodes[startOffset];\r
                                                ctrlRng = body.createControlRange();\r
-                                               ctrlRng.addElement(startContainer.childNodes[startOffset]);\r
+                                               ctrlRng.addElement(ctrlElm);\r
                                                ctrlRng.select();\r
-                                               return;\r
+\r
+                                               // Check if the range produced is on the correct element and is a control range\r
+                                               // On IE 8 it will select the parent contentEditable container if you select an inner element see: #5398\r
+                                               nativeRng = selection.getRng();\r
+                                               if (nativeRng.item && ctrlElm === nativeRng.item(0)) {\r
+                                                       return;\r
+                                               }\r
                                        } catch (ex) {\r
                                                // Ignore\r
                                        }\r
@@ -5389,33 +7627,8 @@ tinymce.html.Writer = function(settings) {
                        ieRng.select();\r
                };\r
 \r
-               this.getRangeAt = function() {\r
-                       // Setup new range if the cache is empty\r
-                       if (!range || !tinymce.dom.RangeUtils.compareRanges(lastIERng, selection.getRng())) {\r
-                               range = getRange();\r
-\r
-                               // Store away text range for next call\r
-                               lastIERng = selection.getRng();\r
-                       }\r
-\r
-                       // IE will say that the range is equal then produce an invalid argument exception\r
-                       // if you perform specific operations in a keyup event. For example Ctrl+Del.\r
-                       // This hack will invalidate the range cache if the exception occurs\r
-                       try {\r
-                               range.startContainer.nextSibling;\r
-                       } catch (ex) {\r
-                               range = getRange();\r
-                               lastIERng = null;\r
-                       }\r
-\r
-                       // Return cached range\r
-                       return range;\r
-               };\r
-\r
-               this.destroy = function() {\r
-                       // Destroy cached range and last IE range to avoid memory leaks\r
-                       lastIERng = range = null;\r
-               };\r
+               // Expose range method\r
+               this.getRangeAt = getRange;\r
        };\r
 \r
        // Expose the selection object\r
@@ -5424,29 +7637,33 @@ tinymce.html.Writer = function(settings) {
 \r
 \r
 /*\r
- * Sizzle CSS Selector Engine - v1.0\r
- *  Copyright 2009, The Dojo Foundation\r
+ * Sizzle CSS Selector Engine\r
+ *  Copyright, The Dojo Foundation\r
  *  Released under the MIT, BSD, and GPL Licenses.\r
  *  More information: http://sizzlejs.com/\r
  */\r
 (function(){\r
 \r
 var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,\r
+       expando = "sizcache",\r
        done = 0,\r
        toString = Object.prototype.toString,\r
        hasDuplicate = false,\r
-       baseHasDuplicate = true;\r
+       baseHasDuplicate = true,\r
+       rBackslash = /\\/g,\r
+       rReturn = /\r\n/g,\r
+       rNonWord = /\W/;\r
 \r
 // Here we check if the JavaScript engine is using some sort of\r
 // optimization where it does not always call our comparision\r
 // function. If that is the case, discard the hasDuplicate value.\r
 //   Thus far that includes Google Chrome.\r
-[0, 0].sort(function(){\r
+[0, 0].sort(function() {\r
        baseHasDuplicate = false;\r
        return 0;\r
 });\r
 \r
-var Sizzle = function(selector, context, results, seed) {\r
+var Sizzle = function( selector, context, results, seed ) {\r
        results = results || [];\r
        context = context || document;\r
 \r
@@ -5455,24 +7672,27 @@ var Sizzle = function(selector, context, results, seed) {
        if ( context.nodeType !== 1 && context.nodeType !== 9 ) {\r
                return [];\r
        }\r
-       \r
+\r
        if ( !selector || typeof selector !== "string" ) {\r
                return results;\r
        }\r
 \r
-       var parts = [], m, set, checkSet, extra, prune = true, contextXML = Sizzle.isXML(context),\r
-               soFar = selector, ret, cur, pop, i;\r
-       \r
+       var m, set, checkSet, extra, ret, cur, pop, i,\r
+               prune = true,\r
+               contextXML = Sizzle.isXML( context ),\r
+               parts = [],\r
+               soFar = selector;\r
+\r
        // Reset the position of the chunker regexp (start from head)\r
        do {\r
-               chunker.exec("");\r
-               m = chunker.exec(soFar);\r
+               chunker.exec( "" );\r
+               m = chunker.exec( soFar );\r
 \r
                if ( m ) {\r
                        soFar = m[3];\r
-               \r
+\r
                        parts.push( m[1] );\r
-               \r
+\r
                        if ( m[2] ) {\r
                                extra = m[3];\r
                                break;\r
@@ -5481,8 +7701,10 @@ var Sizzle = function(selector, context, results, seed) {
        } while ( m );\r
 \r
        if ( parts.length > 1 && origPOS.exec( selector ) ) {\r
+\r
                if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\r
-                       set = posProcess( parts[0] + parts[1], context );\r
+                       set = posProcess( parts[0] + parts[1], context, seed );\r
+\r
                } else {\r
                        set = Expr.relative[ parts[0] ] ?\r
                                [ context ] :\r
@@ -5494,27 +7716,35 @@ var Sizzle = function(selector, context, results, seed) {
                                if ( Expr.relative[ selector ] ) {\r
                                        selector += parts.shift();\r
                                }\r
-                               \r
-                               set = posProcess( selector, set );\r
+\r
+                               set = posProcess( selector, set, seed );\r
                        }\r
                }\r
+\r
        } else {\r
                // Take a shortcut and set the context if the root selector is an ID\r
                // (but not if it'll be faster if the inner selector is an ID)\r
                if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\r
                                Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\r
+\r
                        ret = Sizzle.find( parts.shift(), context, contextXML );\r
-                       context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];\r
+                       context = ret.expr ?\r
+                               Sizzle.filter( ret.expr, ret.set )[0] :\r
+                               ret.set[0];\r
                }\r
 \r
                if ( context ) {\r
                        ret = seed ?\r
                                { expr: parts.pop(), set: makeArray(seed) } :\r
                                Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );\r
-                       set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;\r
+\r
+                       set = ret.expr ?\r
+                               Sizzle.filter( ret.expr, ret.set ) :\r
+                               ret.set;\r
 \r
                        if ( parts.length > 0 ) {\r
-                               checkSet = makeArray(set);\r
+                               checkSet = makeArray( set );\r
+\r
                        } else {\r
                                prune = false;\r
                        }\r
@@ -5535,6 +7765,7 @@ var Sizzle = function(selector, context, results, seed) {
 \r
                                Expr.relative[ cur ]( checkSet, pop, contextXML );\r
                        }\r
+\r
                } else {\r
                        checkSet = parts = [];\r
                }\r
@@ -5551,12 +7782,14 @@ var Sizzle = function(selector, context, results, seed) {
        if ( toString.call(checkSet) === "[object Array]" ) {\r
                if ( !prune ) {\r
                        results.push.apply( results, checkSet );\r
+\r
                } else if ( context && context.nodeType === 1 ) {\r
                        for ( i = 0; checkSet[i] != null; i++ ) {\r
                                if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {\r
                                        results.push( set[i] );\r
                                }\r
                        }\r
+\r
                } else {\r
                        for ( i = 0; checkSet[i] != null; i++ ) {\r
                                if ( checkSet[i] && checkSet[i].nodeType === 1 ) {\r
@@ -5564,6 +7797,7 @@ var Sizzle = function(selector, context, results, seed) {
                                }\r
                        }\r
                }\r
+\r
        } else {\r
                makeArray( checkSet, results );\r
        }\r
@@ -5576,15 +7810,15 @@ var Sizzle = function(selector, context, results, seed) {
        return results;\r
 };\r
 \r
-Sizzle.uniqueSort = function(results){\r
+Sizzle.uniqueSort = function( results ) {\r
        if ( sortOrder ) {\r
                hasDuplicate = baseHasDuplicate;\r
-               results.sort(sortOrder);\r
+               results.sort( sortOrder );\r
 \r
                if ( hasDuplicate ) {\r
                        for ( var i = 1; i < results.length; i++ ) {\r
-                               if ( results[i] === results[i-1] ) {\r
-                                       results.splice(i--, 1);\r
+                               if ( results[i] === results[ i - 1 ] ) {\r
+                                       results.splice( i--, 1 );\r
                                }\r
                        }\r
                }\r
@@ -5593,27 +7827,32 @@ Sizzle.uniqueSort = function(results){
        return results;\r
 };\r
 \r
-Sizzle.matches = function(expr, set){\r
-       return Sizzle(expr, null, null, set);\r
+Sizzle.matches = function( expr, set ) {\r
+       return Sizzle( expr, null, null, set );\r
+};\r
+\r
+Sizzle.matchesSelector = function( node, expr ) {\r
+       return Sizzle( expr, null, null, [node] ).length > 0;\r
 };\r
 \r
-Sizzle.find = function(expr, context, isXML){\r
-       var set;\r
+Sizzle.find = function( expr, context, isXML ) {\r
+       var set, i, len, match, type, left;\r
 \r
        if ( !expr ) {\r
                return [];\r
        }\r
 \r
-       for ( var i = 0, l = Expr.order.length; i < l; i++ ) {\r
-               var type = Expr.order[i], match;\r
-               \r
+       for ( i = 0, len = Expr.order.length; i < len; i++ ) {\r
+               type = Expr.order[i];\r
+\r
                if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {\r
-                       var left = match[1];\r
-                       match.splice(1,1);\r
+                       left = match[1];\r
+                       match.splice( 1, 1 );\r
 \r
                        if ( left.substr( left.length - 1 ) !== "\\" ) {\r
-                               match[1] = (match[1] || "").replace(/\\/g, "");\r
+                               match[1] = (match[1] || "").replace( rBackslash, "" );\r
                                set = Expr.find[ type ]( match, context, isXML );\r
+\r
                                if ( set != null ) {\r
                                        expr = expr.replace( Expr.match[ type ], "" );\r
                                        break;\r
@@ -5623,20 +7862,29 @@ Sizzle.find = function(expr, context, isXML){
        }\r
 \r
        if ( !set ) {\r
-               set = context.getElementsByTagName("*");\r
+               set = typeof context.getElementsByTagName !== "undefined" ?\r
+                       context.getElementsByTagName( "*" ) :\r
+                       [];\r
        }\r
 \r
-       return {set: set, expr: expr};\r
+       return { set: set, expr: expr };\r
 };\r
 \r
-Sizzle.filter = function(expr, set, inplace, not){\r
-       var old = expr, result = [], curLoop = set, match, anyFound,\r
-               isXMLFilter = set && set[0] && Sizzle.isXML(set[0]);\r
+Sizzle.filter = function( expr, set, inplace, not ) {\r
+       var match, anyFound,\r
+               type, found, item, filter, left,\r
+               i, pass,\r
+               old = expr,\r
+               result = [],\r
+               curLoop = set,\r
+               isXMLFilter = set && set[0] && Sizzle.isXML( set[0] );\r
 \r
        while ( expr && set.length ) {\r
-               for ( var type in Expr.filter ) {\r
+               for ( type in Expr.filter ) {\r
                        if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {\r
-                               var filter = Expr.filter[ type ], found, item, left = match[1];\r
+                               filter = Expr.filter[ type ];\r
+                               left = match[1];\r
+\r
                                anyFound = false;\r
 \r
                                match.splice(1,1);\r
@@ -5654,23 +7902,26 @@ Sizzle.filter = function(expr, set, inplace, not){
 \r
                                        if ( !match ) {\r
                                                anyFound = found = true;\r
+\r
                                        } else if ( match === true ) {\r
                                                continue;\r
                                        }\r
                                }\r
 \r
                                if ( match ) {\r
-                                       for ( var i = 0; (item = curLoop[i]) != null; i++ ) {\r
+                                       for ( i = 0; (item = curLoop[i]) != null; i++ ) {\r
                                                if ( item ) {\r
                                                        found = filter( item, match, i, curLoop );\r
-                                                       var pass = not ^ !!found;\r
+                                                       pass = not ^ found;\r
 \r
                                                        if ( inplace && found != null ) {\r
                                                                if ( pass ) {\r
                                                                        anyFound = true;\r
+\r
                                                                } else {\r
                                                                        curLoop[i] = false;\r
                                                                }\r
+\r
                                                        } else if ( pass ) {\r
                                                                result.push( item );\r
                                                                anyFound = true;\r
@@ -5699,6 +7950,7 @@ Sizzle.filter = function(expr, set, inplace, not){
                if ( expr === old ) {\r
                        if ( anyFound == null ) {\r
                                Sizzle.error( expr );\r
+\r
                        } else {\r
                                break;\r
                        }\r
@@ -5711,35 +7963,78 @@ Sizzle.filter = function(expr, set, inplace, not){
 };\r
 \r
 Sizzle.error = function( msg ) {\r
-       throw "Syntax error, unrecognized expression: " + msg;\r
+       throw new Error( "Syntax error, unrecognized expression: " + msg );\r
+};\r
+\r
+var getText = Sizzle.getText = function( elem ) {\r
+    var i, node,\r
+               nodeType = elem.nodeType,\r
+               ret = "";\r
+\r
+       if ( nodeType ) {\r
+               if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\r
+                       // Use textContent || innerText for elements\r
+                       if ( typeof elem.textContent === 'string' ) {\r
+                               return elem.textContent;\r
+                       } else if ( typeof elem.innerText === 'string' ) {\r
+                               // Replace IE's carriage returns\r
+                               return elem.innerText.replace( rReturn, '' );\r
+                       } else {\r
+                               // Traverse it's children\r
+                               for ( elem = elem.firstChild; elem; elem = elem.nextSibling) {\r
+                                       ret += getText( elem );\r
+                               }\r
+                       }\r
+               } else if ( nodeType === 3 || nodeType === 4 ) {\r
+                       return elem.nodeValue;\r
+               }\r
+       } else {\r
+\r
+               // If no nodeType, this is expected to be an array\r
+               for ( i = 0; (node = elem[i]); i++ ) {\r
+                       // Do not traverse comment nodes\r
+                       if ( node.nodeType !== 8 ) {\r
+                               ret += getText( node );\r
+                       }\r
+               }\r
+       }\r
+       return ret;\r
 };\r
 \r
 var Expr = Sizzle.selectors = {\r
        order: [ "ID", "NAME", "TAG" ],\r
+\r
        match: {\r
                ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,\r
                CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,\r
                NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,\r
-               ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,\r
+               ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,\r
                TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,\r
-               CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+\-]*)\))?/,\r
+               CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,\r
                POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,\r
                PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/\r
        },\r
+\r
        leftMatch: {},\r
+\r
        attrMap: {\r
                "class": "className",\r
                "for": "htmlFor"\r
        },\r
+\r
        attrHandle: {\r
-               href: function(elem){\r
-                       return elem.getAttribute("href");\r
+               href: function( elem ) {\r
+                       return elem.getAttribute( "href" );\r
+               },\r
+               type: function( elem ) {\r
+                       return elem.getAttribute( "type" );\r
                }\r
        },\r
+\r
        relative: {\r
                "+": function(checkSet, part){\r
                        var isPartStr = typeof part === "string",\r
-                               isTag = isPartStr && !/\W/.test(part),\r
+                               isTag = isPartStr && !rNonWord.test( part ),\r
                                isPartStrNotTag = isPartStr && !isTag;\r
 \r
                        if ( isTag ) {\r
@@ -5760,23 +8055,29 @@ var Expr = Sizzle.selectors = {
                                Sizzle.filter( part, checkSet, true );\r
                        }\r
                },\r
-               ">": function(checkSet, part){\r
-                       var isPartStr = typeof part === "string",\r
-                               elem, i = 0, l = checkSet.length;\r
 \r
-                       if ( isPartStr && !/\W/.test(part) ) {\r
+               ">": function( checkSet, part ) {\r
+                       var elem,\r
+                               isPartStr = typeof part === "string",\r
+                               i = 0,\r
+                               l = checkSet.length;\r
+\r
+                       if ( isPartStr && !rNonWord.test( part ) ) {\r
                                part = part.toLowerCase();\r
 \r
                                for ( ; i < l; i++ ) {\r
                                        elem = checkSet[i];\r
+\r
                                        if ( elem ) {\r
                                                var parent = elem.parentNode;\r
                                                checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;\r
                                        }\r
                                }\r
+\r
                        } else {\r
                                for ( ; i < l; i++ ) {\r
                                        elem = checkSet[i];\r
+\r
                                        if ( elem ) {\r
                                                checkSet[i] = isPartStr ?\r
                                                        elem.parentNode :\r
@@ -5789,39 +8090,50 @@ var Expr = Sizzle.selectors = {
                                }\r
                        }\r
                },\r
+\r
                "": function(checkSet, part, isXML){\r
-                       var doneName = done++, checkFn = dirCheck, nodeCheck;\r
+                       var nodeCheck,\r
+                               doneName = done++,\r
+                               checkFn = dirCheck;\r
 \r
-                       if ( typeof part === "string" && !/\W/.test(part) ) {\r
+                       if ( typeof part === "string" && !rNonWord.test( part ) ) {\r
                                part = part.toLowerCase();\r
                                nodeCheck = part;\r
                                checkFn = dirNodeCheck;\r
                        }\r
 \r
-                       checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);\r
+                       checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML );\r
                },\r
-               "~": function(checkSet, part, isXML){\r
-                       var doneName = done++, checkFn = dirCheck, nodeCheck;\r
 \r
-                       if ( typeof part === "string" && !/\W/.test(part) ) {\r
+               "~": function( checkSet, part, isXML ) {\r
+                       var nodeCheck,\r
+                               doneName = done++,\r
+                               checkFn = dirCheck;\r
+\r
+                       if ( typeof part === "string" && !rNonWord.test( part ) ) {\r
                                part = part.toLowerCase();\r
                                nodeCheck = part;\r
                                checkFn = dirNodeCheck;\r
                        }\r
 \r
-                       checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);\r
+                       checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML );\r
                }\r
        },\r
+\r
        find: {\r
-               ID: function(match, context, isXML){\r
+               ID: function( match, context, isXML ) {\r
                        if ( typeof context.getElementById !== "undefined" && !isXML ) {\r
                                var m = context.getElementById(match[1]);\r
-                               return m ? [m] : [];\r
+                               // Check parentNode to catch when Blackberry 4.6 returns\r
+                               // nodes that are no longer in the document #6963\r
+                               return m && m.parentNode ? [m] : [];\r
                        }\r
                },\r
-               NAME: function(match, context){\r
+\r
+               NAME: function( match, context ) {\r
                        if ( typeof context.getElementsByName !== "undefined" ) {\r
-                               var ret = [], results = context.getElementsByName(match[1]);\r
+                               var ret = [],\r
+                                       results = context.getElementsByName( match[1] );\r
 \r
                                for ( var i = 0, l = results.length; i < l; i++ ) {\r
                                        if ( results[i].getAttribute("name") === match[1] ) {\r
@@ -5832,13 +8144,16 @@ var Expr = Sizzle.selectors = {
                                return ret.length === 0 ? null : ret;\r
                        }\r
                },\r
-               TAG: function(match, context){\r
-                       return context.getElementsByTagName(match[1]);\r
+\r
+               TAG: function( match, context ) {\r
+                       if ( typeof context.getElementsByTagName !== "undefined" ) {\r
+                               return context.getElementsByTagName( match[1] );\r
+                       }\r
                }\r
        },\r
        preFilter: {\r
-               CLASS: function(match, curLoop, inplace, result, not, isXML){\r
-                       match = " " + match[1].replace(/\\/g, "") + " ";\r
+               CLASS: function( match, curLoop, inplace, result, not, isXML ) {\r
+                       match = " " + match[1].replace( rBackslash, "" ) + " ";\r
 \r
                        if ( isXML ) {\r
                                return match;\r
@@ -5846,10 +8161,11 @@ var Expr = Sizzle.selectors = {
 \r
                        for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\r
                                if ( elem ) {\r
-                                       if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n]/g, " ").indexOf(match) >= 0) ) {\r
+                                       if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) {\r
                                                if ( !inplace ) {\r
                                                        result.push( elem );\r
                                                }\r
+\r
                                        } else if ( inplace ) {\r
                                                curLoop[i] = false;\r
                                        }\r
@@ -5858,16 +8174,25 @@ var Expr = Sizzle.selectors = {
 \r
                        return false;\r
                },\r
-               ID: function(match){\r
-                       return match[1].replace(/\\/g, "");\r
+\r
+               ID: function( match ) {\r
+                       return match[1].replace( rBackslash, "" );\r
                },\r
-               TAG: function(match, curLoop){\r
-                       return match[1].toLowerCase();\r
+\r
+               TAG: function( match, curLoop ) {\r
+                       return match[1].replace( rBackslash, "" ).toLowerCase();\r
                },\r
-               CHILD: function(match){\r
+\r
+               CHILD: function( match ) {\r
                        if ( match[1] === "nth" ) {\r
+                               if ( !match[2] ) {\r
+                                       Sizzle.error( match[0] );\r
+                               }\r
+\r
+                               match[2] = match[2].replace(/^\+|\s*/g, '');\r
+\r
                                // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\r
-                               var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(\r
+                               var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(\r
                                        match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||\r
                                        !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);\r
 \r
@@ -5875,141 +8200,196 @@ var Expr = Sizzle.selectors = {
                                match[2] = (test[1] + (test[2] || 1)) - 0;\r
                                match[3] = test[3] - 0;\r
                        }\r
+                       else if ( match[2] ) {\r
+                               Sizzle.error( match[0] );\r
+                       }\r
 \r
                        // TODO: Move to normal caching system\r
                        match[0] = done++;\r
 \r
                        return match;\r
                },\r
-               ATTR: function(match, curLoop, inplace, result, not, isXML){\r
-                       var name = match[1].replace(/\\/g, "");\r
-                       \r
+\r
+               ATTR: function( match, curLoop, inplace, result, not, isXML ) {\r
+                       var name = match[1] = match[1].replace( rBackslash, "" );\r
+\r
                        if ( !isXML && Expr.attrMap[name] ) {\r
                                match[1] = Expr.attrMap[name];\r
                        }\r
 \r
+                       // Handle if an un-quoted value was used\r
+                       match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" );\r
+\r
                        if ( match[2] === "~=" ) {\r
                                match[4] = " " + match[4] + " ";\r
                        }\r
 \r
                        return match;\r
                },\r
-               PSEUDO: function(match, curLoop, inplace, result, not){\r
+\r
+               PSEUDO: function( match, curLoop, inplace, result, not ) {\r
                        if ( match[1] === "not" ) {\r
                                // If we're dealing with a complex expression, or a simple one\r
                                if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {\r
                                        match[3] = Sizzle(match[3], null, null, curLoop);\r
+\r
                                } else {\r
                                        var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\r
+\r
                                        if ( !inplace ) {\r
                                                result.push.apply( result, ret );\r
                                        }\r
+\r
                                        return false;\r
                                }\r
+\r
                        } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\r
                                return true;\r
                        }\r
-                       \r
+\r
                        return match;\r
                },\r
-               POS: function(match){\r
+\r
+               POS: function( match ) {\r
                        match.unshift( true );\r
+\r
                        return match;\r
                }\r
        },\r
+\r
        filters: {\r
-               enabled: function(elem){\r
+               enabled: function( elem ) {\r
                        return elem.disabled === false && elem.type !== "hidden";\r
                },\r
-               disabled: function(elem){\r
+\r
+               disabled: function( elem ) {\r
                        return elem.disabled === true;\r
                },\r
-               checked: function(elem){\r
+\r
+               checked: function( elem ) {\r
                        return elem.checked === true;\r
                },\r
-               selected: function(elem){\r
+\r
+               selected: function( elem ) {\r
                        // Accessing this property makes selected-by-default\r
                        // options in Safari work properly\r
-                       elem.parentNode.selectedIndex;\r
+                       if ( elem.parentNode ) {\r
+                               elem.parentNode.selectedIndex;\r
+                       }\r
+\r
                        return elem.selected === true;\r
                },\r
-               parent: function(elem){\r
+\r
+               parent: function( elem ) {\r
                        return !!elem.firstChild;\r
                },\r
-               empty: function(elem){\r
+\r
+               empty: function( elem ) {\r
                        return !elem.firstChild;\r
                },\r
-               has: function(elem, i, match){\r
+\r
+               has: function( elem, i, match ) {\r
                        return !!Sizzle( match[3], elem ).length;\r
                },\r
-               header: function(elem){\r
+\r
+               header: function( elem ) {\r
                        return (/h\d/i).test( elem.nodeName );\r
                },\r
-               text: function(elem){\r
-                       return "text" === elem.type;\r
+\r
+               text: function( elem ) {\r
+                       var attr = elem.getAttribute( "type" ), type = elem.type;\r
+                       // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)\r
+                       // use getAttribute instead to test this case\r
+                       return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null );\r
+               },\r
+\r
+               radio: function( elem ) {\r
+                       return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type;\r
                },\r
-               radio: function(elem){\r
-                       return "radio" === elem.type;\r
+\r
+               checkbox: function( elem ) {\r
+                       return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type;\r
                },\r
-               checkbox: function(elem){\r
-                       return "checkbox" === elem.type;\r
+\r
+               file: function( elem ) {\r
+                       return elem.nodeName.toLowerCase() === "input" && "file" === elem.type;\r
                },\r
-               file: function(elem){\r
-                       return "file" === elem.type;\r
+\r
+               password: function( elem ) {\r
+                       return elem.nodeName.toLowerCase() === "input" && "password" === elem.type;\r
                },\r
-               password: function(elem){\r
-                       return "password" === elem.type;\r
+\r
+               submit: function( elem ) {\r
+                       var name = elem.nodeName.toLowerCase();\r
+                       return (name === "input" || name === "button") && "submit" === elem.type;\r
                },\r
-               submit: function(elem){\r
-                       return "submit" === elem.type;\r
+\r
+               image: function( elem ) {\r
+                       return elem.nodeName.toLowerCase() === "input" && "image" === elem.type;\r
                },\r
-               image: function(elem){\r
-                       return "image" === elem.type;\r
+\r
+               reset: function( elem ) {\r
+                       var name = elem.nodeName.toLowerCase();\r
+                       return (name === "input" || name === "button") && "reset" === elem.type;\r
                },\r
-               reset: function(elem){\r
-                       return "reset" === elem.type;\r
+\r
+               button: function( elem ) {\r
+                       var name = elem.nodeName.toLowerCase();\r
+                       return name === "input" && "button" === elem.type || name === "button";\r
                },\r
-               button: function(elem){\r
-                       return "button" === elem.type || elem.nodeName.toLowerCase() === "button";\r
+\r
+               input: function( elem ) {\r
+                       return (/input|select|textarea|button/i).test( elem.nodeName );\r
                },\r
-               input: function(elem){\r
-                       return (/input|select|textarea|button/i).test(elem.nodeName);\r
+\r
+               focus: function( elem ) {\r
+                       return elem === elem.ownerDocument.activeElement;\r
                }\r
        },\r
        setFilters: {\r
-               first: function(elem, i){\r
+               first: function( elem, i ) {\r
                        return i === 0;\r
                },\r
-               last: function(elem, i, match, array){\r
+\r
+               last: function( elem, i, match, array ) {\r
                        return i === array.length - 1;\r
                },\r
-               even: function(elem, i){\r
+\r
+               even: function( elem, i ) {\r
                        return i % 2 === 0;\r
                },\r
-               odd: function(elem, i){\r
+\r
+               odd: function( elem, i ) {\r
                        return i % 2 === 1;\r
                },\r
-               lt: function(elem, i, match){\r
+\r
+               lt: function( elem, i, match ) {\r
                        return i < match[3] - 0;\r
                },\r
-               gt: function(elem, i, match){\r
+\r
+               gt: function( elem, i, match ) {\r
                        return i > match[3] - 0;\r
                },\r
-               nth: function(elem, i, match){\r
+\r
+               nth: function( elem, i, match ) {\r
                        return match[3] - 0 === i;\r
                },\r
-               eq: function(elem, i, match){\r
+\r
+               eq: function( elem, i, match ) {\r
                        return match[3] - 0 === i;\r
                }\r
        },\r
        filter: {\r
-               PSEUDO: function(elem, match, i, array){\r
-                       var name = match[1], filter = Expr.filters[ name ];\r
+               PSEUDO: function( elem, match, i, array ) {\r
+                       var name = match[1],\r
+                               filter = Expr.filters[ name ];\r
 \r
                        if ( filter ) {\r
                                return filter( elem, i, match, array );\r
+\r
                        } else if ( name === "contains" ) {\r
-                               return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0;\r
+                               return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0;\r
+\r
                        } else if ( name === "not" ) {\r
                                var not = match[3];\r
 \r
@@ -6020,72 +8400,96 @@ var Expr = Sizzle.selectors = {
                                }\r
 \r
                                return true;\r
+\r
                        } else {\r
-                               Sizzle.error( "Syntax error, unrecognized expression: " + name );\r
+                               Sizzle.error( name );\r
                        }\r
                },\r
-               CHILD: function(elem, match){\r
-                       var type = match[1], node = elem;\r
-                       switch (type) {\r
-                               case 'only':\r
-                               case 'first':\r
-                                       while ( (node = node.previousSibling) )  {\r
-                                               if ( node.nodeType === 1 ) { \r
-                                                       return false; \r
+\r
+               CHILD: function( elem, match ) {\r
+                       var first, last,\r
+                               doneName, parent, cache,\r
+                               count, diff,\r
+                               type = match[1],\r
+                               node = elem;\r
+\r
+                       switch ( type ) {\r
+                               case "only":\r
+                               case "first":\r
+                                       while ( (node = node.previousSibling) ) {\r
+                                               if ( node.nodeType === 1 ) {\r
+                                                       return false;\r
                                                }\r
                                        }\r
-                                       if ( type === "first" ) { \r
-                                               return true; \r
+\r
+                                       if ( type === "first" ) {\r
+                                               return true;\r
                                        }\r
+\r
                                        node = elem;\r
-                               case 'last':\r
-                                       while ( (node = node.nextSibling) )      {\r
-                                               if ( node.nodeType === 1 ) { \r
-                                                       return false; \r
+\r
+                                       /* falls through */\r
+                               case "last":\r
+                                       while ( (node = node.nextSibling) ) {\r
+                                               if ( node.nodeType === 1 ) {\r
+                                                       return false;\r
                                                }\r
                                        }\r
+\r
                                        return true;\r
-                               case 'nth':\r
-                                       var first = match[2], last = match[3];\r
+\r
+                               case "nth":\r
+                                       first = match[2];\r
+                                       last = match[3];\r
 \r
                                        if ( first === 1 && last === 0 ) {\r
                                                return true;\r
                                        }\r
-                                       \r
-                                       var doneName = match[0],\r
-                                               parent = elem.parentNode;\r
-       \r
-                                       if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {\r
-                                               var count = 0;\r
+\r
+                                       doneName = match[0];\r
+                                       parent = elem.parentNode;\r
+\r
+                                       if ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) {\r
+                                               count = 0;\r
+\r
                                                for ( node = parent.firstChild; node; node = node.nextSibling ) {\r
                                                        if ( node.nodeType === 1 ) {\r
                                                                node.nodeIndex = ++count;\r
                                                        }\r
-                                               } \r
-                                               parent.sizcache = doneName;\r
+                                               }\r
+\r
+                                               parent[ expando ] = doneName;\r
                                        }\r
-                                       \r
-                                       var diff = elem.nodeIndex - last;\r
+\r
+                                       diff = elem.nodeIndex - last;\r
+\r
                                        if ( first === 0 ) {\r
                                                return diff === 0;\r
+\r
                                        } else {\r
                                                return ( diff % first === 0 && diff / first >= 0 );\r
                                        }\r
                        }\r
                },\r
-               ID: function(elem, match){\r
+\r
+               ID: function( elem, match ) {\r
                        return elem.nodeType === 1 && elem.getAttribute("id") === match;\r
                },\r
-               TAG: function(elem, match){\r
-                       return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;\r
+\r
+               TAG: function( elem, match ) {\r
+                       return (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match;\r
                },\r
-               CLASS: function(elem, match){\r
+\r
+               CLASS: function( elem, match ) {\r
                        return (" " + (elem.className || elem.getAttribute("class")) + " ")\r
                                .indexOf( match ) > -1;\r
                },\r
-               ATTR: function(elem, match){\r
+\r
+               ATTR: function( elem, match ) {\r
                        var name = match[1],\r
-                               result = Expr.attrHandle[ name ] ?\r
+                               result = Sizzle.attr ?\r
+                                       Sizzle.attr( elem, name ) :\r
+                                       Expr.attrHandle[ name ] ?\r
                                        Expr.attrHandle[ name ]( elem ) :\r
                                        elem[ name ] != null ?\r
                                                elem[ name ] :\r
@@ -6096,6 +8500,8 @@ var Expr = Sizzle.selectors = {
 \r
                        return result == null ?\r
                                type === "!=" :\r
+                               !type && Sizzle.attr ?\r
+                               result != null :\r
                                type === "=" ?\r
                                value === check :\r
                                type === "*=" ?\r
@@ -6114,8 +8520,10 @@ var Expr = Sizzle.selectors = {
                                value === check || value.substr(0, check.length + 1) === check + "-" :\r
                                false;\r
                },\r
-               POS: function(elem, match, i, array){\r
-                       var name = match[2], filter = Expr.setFilters[ name ];\r
+\r
+               POS: function( elem, match, i, array ) {\r
+                       var name = match[2],\r
+                               filter = Expr.setFilters[ name ];\r
 \r
                        if ( filter ) {\r
                                return filter( elem, i, match, array );\r
@@ -6133,15 +8541,18 @@ for ( var type in Expr.match ) {
        Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );\r
        Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );\r
 }\r
+// Expose origPOS\r
+// "global" as in regardless of relation to brackets/parens\r
+Expr.match.globalPOS = origPOS;\r
 \r
-var makeArray = function(array, results) {\r
+var makeArray = function( array, results ) {\r
        array = Array.prototype.slice.call( array, 0 );\r
 \r
        if ( results ) {\r
                results.push.apply( results, array );\r
                return results;\r
        }\r
-       \r
+\r
        return array;\r
 };\r
 \r
@@ -6153,17 +8564,20 @@ try {
        Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;\r
 \r
 // Provide a fallback method if it does not work\r
-} catch(e){\r
-       makeArray = function(array, results) {\r
-               var ret = results || [], i = 0;\r
+} catch( e ) {\r
+       makeArray = function( array, results ) {\r
+               var i = 0,\r
+                       ret = results || [];\r
 \r
                if ( toString.call(array) === "[object Array]" ) {\r
                        Array.prototype.push.apply( ret, array );\r
+\r
                } else {\r
                        if ( typeof array.length === "number" ) {\r
                                for ( var l = array.length; i < l; i++ ) {\r
                                        ret.push( array[i] );\r
                                }\r
+\r
                        } else {\r
                                for ( ; array[i]; i++ ) {\r
                                        ret.push( array[i] );\r
@@ -6175,110 +8589,141 @@ try {
        };\r
 }\r
 \r
-var sortOrder;\r
+var sortOrder, siblingCheck;\r
 \r
 if ( document.documentElement.compareDocumentPosition ) {\r
        sortOrder = function( a, b ) {\r
+               if ( a === b ) {\r
+                       hasDuplicate = true;\r
+                       return 0;\r
+               }\r
+\r
                if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {\r
-                       if ( a == b ) {\r
-                               hasDuplicate = true;\r
-                       }\r
                        return a.compareDocumentPosition ? -1 : 1;\r
                }\r
 \r
-               var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;\r
-               if ( ret === 0 ) {\r
-                       hasDuplicate = true;\r
-               }\r
-               return ret;\r
+               return a.compareDocumentPosition(b) & 4 ? -1 : 1;\r
        };\r
-} else if ( "sourceIndex" in document.documentElement ) {\r
+\r
+} else {\r
        sortOrder = function( a, b ) {\r
-               if ( !a.sourceIndex || !b.sourceIndex ) {\r
-                       if ( a == b ) {\r
-                               hasDuplicate = true;\r
-                       }\r
-                       return a.sourceIndex ? -1 : 1;\r
+               // The nodes are identical, we can exit early\r
+               if ( a === b ) {\r
+                       hasDuplicate = true;\r
+                       return 0;\r
+\r
+               // Fallback to using sourceIndex (in IE) if it's available on both nodes\r
+               } else if ( a.sourceIndex && b.sourceIndex ) {\r
+                       return a.sourceIndex - b.sourceIndex;\r
                }\r
 \r
-               var ret = a.sourceIndex - b.sourceIndex;\r
-               if ( ret === 0 ) {\r
-                       hasDuplicate = true;\r
+               var al, bl,\r
+                       ap = [],\r
+                       bp = [],\r
+                       aup = a.parentNode,\r
+                       bup = b.parentNode,\r
+                       cur = aup;\r
+\r
+               // If the nodes are siblings (or identical) we can do a quick check\r
+               if ( aup === bup ) {\r
+                       return siblingCheck( a, b );\r
+\r
+               // If no parents were found then the nodes are disconnected\r
+               } else if ( !aup ) {\r
+                       return -1;\r
+\r
+               } else if ( !bup ) {\r
+                       return 1;\r
                }\r
-               return ret;\r
-       };\r
-} else if ( document.createRange ) {\r
-       sortOrder = function( a, b ) {\r
-               if ( !a.ownerDocument || !b.ownerDocument ) {\r
-                       if ( a == b ) {\r
-                               hasDuplicate = true;\r
-                       }\r
-                       return a.ownerDocument ? -1 : 1;\r
+\r
+               // Otherwise they're somewhere else in the tree so we need\r
+               // to build up a full list of the parentNodes for comparison\r
+               while ( cur ) {\r
+                       ap.unshift( cur );\r
+                       cur = cur.parentNode;\r
                }\r
 \r
-               var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();\r
-               aRange.setStart(a, 0);\r
-               aRange.setEnd(a, 0);\r
-               bRange.setStart(b, 0);\r
-               bRange.setEnd(b, 0);\r
-               var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);\r
-               if ( ret === 0 ) {\r
-                       hasDuplicate = true;\r
+               cur = bup;\r
+\r
+               while ( cur ) {\r
+                       bp.unshift( cur );\r
+                       cur = cur.parentNode;\r
                }\r
-               return ret;\r
+\r
+               al = ap.length;\r
+               bl = bp.length;\r
+\r
+               // Start walking down the tree looking for a discrepancy\r
+               for ( var i = 0; i < al && i < bl; i++ ) {\r
+                       if ( ap[i] !== bp[i] ) {\r
+                               return siblingCheck( ap[i], bp[i] );\r
+                       }\r
+               }\r
+\r
+               // We ended someplace up the tree so do a sibling check\r
+               return i === al ?\r
+                       siblingCheck( a, bp[i], -1 ) :\r
+                       siblingCheck( ap[i], b, 1 );\r
        };\r
-}\r
 \r
-// Utility function for retreiving the text value of an array of DOM nodes\r
-Sizzle.getText = function( elems ) {\r
-       var ret = "", elem;\r
+       siblingCheck = function( a, b, ret ) {\r
+               if ( a === b ) {\r
+                       return ret;\r
+               }\r
 \r
-       for ( var i = 0; elems[i]; i++ ) {\r
-               elem = elems[i];\r
+               var cur = a.nextSibling;\r
 \r
-               // Get the text from text nodes and CDATA nodes\r
-               if ( elem.nodeType === 3 || elem.nodeType === 4 ) {\r
-                       ret += elem.nodeValue;\r
+               while ( cur ) {\r
+                       if ( cur === b ) {\r
+                               return -1;\r
+                       }\r
 \r
-               // Traverse everything else, except comment nodes\r
-               } else if ( elem.nodeType !== 8 ) {\r
-                       ret += Sizzle.getText( elem.childNodes );\r
+                       cur = cur.nextSibling;\r
                }\r
-       }\r
 \r
-       return ret;\r
-};\r
+               return 1;\r
+       };\r
+}\r
 \r
 // Check to see if the browser returns elements by name when\r
 // querying by getElementById (and provide a workaround)\r
 (function(){\r
        // We're going to inject a fake input element with a specified name\r
        var form = document.createElement("div"),\r
-               id = "script" + (new Date()).getTime();\r
+               id = "script" + (new Date()).getTime(),\r
+               root = document.documentElement;\r
+\r
        form.innerHTML = "<a name='" + id + "'/>";\r
 \r
        // Inject it into the root element, check its status, and remove it quickly\r
-       var root = document.documentElement;\r
        root.insertBefore( form, root.firstChild );\r
 \r
        // The workaround has to do additional checks after a getElementById\r
        // Which slows things down for other browsers (hence the branching)\r
        if ( document.getElementById( id ) ) {\r
-               Expr.find.ID = function(match, context, isXML){\r
+               Expr.find.ID = function( match, context, isXML ) {\r
                        if ( typeof context.getElementById !== "undefined" && !isXML ) {\r
                                var m = context.getElementById(match[1]);\r
-                               return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];\r
+\r
+                               return m ?\r
+                                       m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ?\r
+                                               [m] :\r
+                                               undefined :\r
+                                       [];\r
                        }\r
                };\r
 \r
-               Expr.filter.ID = function(elem, match){\r
+               Expr.filter.ID = function( elem, match ) {\r
                        var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");\r
+\r
                        return elem.nodeType === 1 && node && node.nodeValue === match;\r
                };\r
        }\r
 \r
        root.removeChild( form );\r
-       root = form = null; // release memory in IE\r
+\r
+       // release memory in IE\r
+       root = form = null;\r
 })();\r
 \r
 (function(){\r
@@ -6291,8 +8736,8 @@ Sizzle.getText = function( elems ) {
 \r
        // Make sure no comments are found\r
        if ( div.getElementsByTagName("*").length > 0 ) {\r
-               Expr.find.TAG = function(match, context){\r
-                       var results = context.getElementsByTagName(match[1]);\r
+               Expr.find.TAG = function( match, context ) {\r
+                       var results = context.getElementsByTagName( match[1] );\r
 \r
                        // Filter out possible comments\r
                        if ( match[1] === "*" ) {\r
@@ -6313,19 +8758,25 @@ Sizzle.getText = function( elems ) {
 \r
        // Check to see if an attribute returns normalized href attributes\r
        div.innerHTML = "<a href='#'></a>";\r
+\r
        if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&\r
                        div.firstChild.getAttribute("href") !== "#" ) {\r
-               Expr.attrHandle.href = function(elem){\r
-                       return elem.getAttribute("href", 2);\r
+\r
+               Expr.attrHandle.href = function( elem ) {\r
+                       return elem.getAttribute( "href", 2 );\r
                };\r
        }\r
 \r
-       div = null; // release memory in IE\r
+       // release memory in IE\r
+       div = null;\r
 })();\r
 \r
 if ( document.querySelectorAll ) {\r
        (function(){\r
-               var oldSizzle = Sizzle, div = document.createElement("div");\r
+               var oldSizzle = Sizzle,\r
+                       div = document.createElement("div"),\r
+                       id = "__sizzle__";\r
+\r
                div.innerHTML = "<p class='TEST'></p>";\r
 \r
                // Safari can't handle uppercase or unicode characters when\r
@@ -6333,18 +8784,89 @@ if ( document.querySelectorAll ) {
                if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {\r
                        return;\r
                }\r
-       \r
-               Sizzle = function(query, context, extra, seed){\r
+\r
+               Sizzle = function( query, context, extra, seed ) {\r
                        context = context || document;\r
 \r
                        // Only use querySelectorAll on non-XML documents\r
                        // (ID selectors don't work in non-HTML documents)\r
-                       if ( !seed && context.nodeType === 9 && !Sizzle.isXML(context) ) {\r
-                               try {\r
-                                       return makeArray( context.querySelectorAll(query), extra );\r
-                               } catch(e){}\r
+                       if ( !seed && !Sizzle.isXML(context) ) {\r
+                               // See if we find a selector to speed up\r
+                               var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query );\r
+\r
+                               if ( match && (context.nodeType === 1 || context.nodeType === 9) ) {\r
+                                       // Speed-up: Sizzle("TAG")\r
+                                       if ( match[1] ) {\r
+                                               return makeArray( context.getElementsByTagName( query ), extra );\r
+\r
+                                       // Speed-up: Sizzle(".CLASS")\r
+                                       } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {\r
+                                               return makeArray( context.getElementsByClassName( match[2] ), extra );\r
+                                       }\r
+                               }\r
+\r
+                               if ( context.nodeType === 9 ) {\r
+                                       // Speed-up: Sizzle("body")\r
+                                       // The body element only exists once, optimize finding it\r
+                                       if ( query === "body" && context.body ) {\r
+                                               return makeArray( [ context.body ], extra );\r
+\r
+                                       // Speed-up: Sizzle("#ID")\r
+                                       } else if ( match && match[3] ) {\r
+                                               var elem = context.getElementById( match[3] );\r
+\r
+                                               // Check parentNode to catch when Blackberry 4.6 returns\r
+                                               // nodes that are no longer in the document #6963\r
+                                               if ( elem && elem.parentNode ) {\r
+                                                       // Handle the case where IE and Opera return items\r
+                                                       // by name instead of ID\r
+                                                       if ( elem.id === match[3] ) {\r
+                                                               return makeArray( [ elem ], extra );\r
+                                                       }\r
+\r
+                                               } else {\r
+                                                       return makeArray( [], extra );\r
+                                               }\r
+                                       }\r
+\r
+                                       try {\r
+                                               return makeArray( context.querySelectorAll(query), extra );\r
+                                       } catch(qsaError) {}\r
+\r
+                               // qSA works strangely on Element-rooted queries\r
+                               // We can work around this by specifying an extra ID on the root\r
+                               // and working up from there (Thanks to Andrew Dupont for the technique)\r
+                               // IE 8 doesn't work on object elements\r
+                               } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {\r
+                                       var oldContext = context,\r
+                                               old = context.getAttribute( "id" ),\r
+                                               nid = old || id,\r
+                                               hasParent = context.parentNode,\r
+                                               relativeHierarchySelector = /^\s*[+~]/.test( query );\r
+\r
+                                       if ( !old ) {\r
+                                               context.setAttribute( "id", nid );\r
+                                       } else {\r
+                                               nid = nid.replace( /'/g, "\\$&" );\r
+                                       }\r
+                                       if ( relativeHierarchySelector && hasParent ) {\r
+                                               context = context.parentNode;\r
+                                       }\r
+\r
+                                       try {\r
+                                               if ( !relativeHierarchySelector || hasParent ) {\r
+                                                       return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra );\r
+                                               }\r
+\r
+                                       } catch(pseudoError) {\r
+                                       } finally {\r
+                                               if ( !old ) {\r
+                                                       oldContext.removeAttribute( "id" );\r
+                                               }\r
+                                       }\r
+                               }\r
                        }\r
-               \r
+\r
                        return oldSizzle(query, context, extra, seed);\r
                };\r
 \r
@@ -6352,10 +8874,55 @@ if ( document.querySelectorAll ) {
                        Sizzle[ prop ] = oldSizzle[ prop ];\r
                }\r
 \r
-               div = null; // release memory in IE\r
+               // release memory in IE\r
+               div = null;\r
        })();\r
 }\r
 \r
+(function(){\r
+       var html = document.documentElement,\r
+               matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;\r
+\r
+       if ( matches ) {\r
+               // Check to see if it's possible to do matchesSelector\r
+               // on a disconnected node (IE 9 fails this)\r
+               var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ),\r
+                       pseudoWorks = false;\r
+\r
+               try {\r
+                       // This should fail with an exception\r
+                       // Gecko does not error, returns false instead\r
+                       matches.call( document.documentElement, "[test!='']:sizzle" );\r
+\r
+               } catch( pseudoError ) {\r
+                       pseudoWorks = true;\r
+               }\r
+\r
+               Sizzle.matchesSelector = function( node, expr ) {\r
+                       // Make sure that attribute selectors are quoted\r
+                       expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");\r
+\r
+                       if ( !Sizzle.isXML( node ) ) {\r
+                               try {\r
+                                       if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {\r
+                                               var ret = matches.call( node, expr );\r
+\r
+                                               // IE 9's matchesSelector returns false on disconnected nodes\r
+                                               if ( ret || !disconnectedMatch ||\r
+                                                               // As well, disconnected nodes are said to be in a document\r
+                                                               // fragment in IE 9, so check for that\r
+                                                               node.document && node.document.nodeType !== 11 ) {\r
+                                                       return ret;\r
+                                               }\r
+                                       }\r
+                               } catch(e) {}\r
+                       }\r
+\r
+                       return Sizzle(expr, null, null, [node]).length > 0;\r
+               };\r
+       }\r
+})();\r
+\r
 (function(){\r
        var div = document.createElement("div");\r
 \r
@@ -6373,32 +8940,35 @@ if ( document.querySelectorAll ) {
        if ( div.getElementsByClassName("e").length === 1 ) {\r
                return;\r
        }\r
-       \r
+\r
        Expr.order.splice(1, 0, "CLASS");\r
-       Expr.find.CLASS = function(match, context, isXML) {\r
+       Expr.find.CLASS = function( match, context, isXML ) {\r
                if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {\r
                        return context.getElementsByClassName(match[1]);\r
                }\r
        };\r
 \r
-       div = null; // release memory in IE\r
+       // release memory in IE\r
+       div = null;\r
 })();\r
 \r
 function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\r
        for ( var i = 0, l = checkSet.length; i < l; i++ ) {\r
                var elem = checkSet[i];\r
+\r
                if ( elem ) {\r
-                       elem = elem[dir];\r
                        var match = false;\r
 \r
+                       elem = elem[dir];\r
+\r
                        while ( elem ) {\r
-                               if ( elem.sizcache === doneName ) {\r
+                               if ( elem[ expando ] === doneName ) {\r
                                        match = checkSet[elem.sizset];\r
                                        break;\r
                                }\r
 \r
                                if ( elem.nodeType === 1 && !isXML ){\r
-                                       elem.sizcache = doneName;\r
+                                       elem[ expando ] = doneName;\r
                                        elem.sizset = i;\r
                                }\r
 \r
@@ -6418,21 +8988,24 @@ function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
 function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\r
        for ( var i = 0, l = checkSet.length; i < l; i++ ) {\r
                var elem = checkSet[i];\r
+\r
                if ( elem ) {\r
-                       elem = elem[dir];\r
                        var match = false;\r
 \r
+                       elem = elem[dir];\r
+\r
                        while ( elem ) {\r
-                               if ( elem.sizcache === doneName ) {\r
+                               if ( elem[ expando ] === doneName ) {\r
                                        match = checkSet[elem.sizset];\r
                                        break;\r
                                }\r
 \r
                                if ( elem.nodeType === 1 ) {\r
                                        if ( !isXML ) {\r
-                                               elem.sizcache = doneName;\r
+                                               elem[ expando ] = doneName;\r
                                                elem.sizset = i;\r
                                        }\r
+\r
                                        if ( typeof cur !== "string" ) {\r
                                                if ( elem === cur ) {\r
                                                        match = true;\r
@@ -6453,21 +9026,34 @@ function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
        }\r
 }\r
 \r
-Sizzle.contains = document.compareDocumentPosition ? function(a, b){\r
-       return !!(a.compareDocumentPosition(b) & 16);\r
-} : function(a, b){\r
-       return a !== b && (a.contains ? a.contains(b) : true);\r
-};\r
+if ( document.documentElement.contains ) {\r
+       Sizzle.contains = function( a, b ) {\r
+               return a !== b && (a.contains ? a.contains(b) : true);\r
+       };\r
+\r
+} else if ( document.documentElement.compareDocumentPosition ) {\r
+       Sizzle.contains = function( a, b ) {\r
+               return !!(a.compareDocumentPosition(b) & 16);\r
+       };\r
 \r
-Sizzle.isXML = function(elem){\r
+} else {\r
+       Sizzle.contains = function() {\r
+               return false;\r
+       };\r
+}\r
+\r
+Sizzle.isXML = function( elem ) {\r
        // documentElement is verified for cases where it doesn't yet exist\r
-       // (such as loading iframes in IE - #4833) \r
+       // (such as loading iframes in IE - #4833)\r
        var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;\r
+\r
        return documentElement ? documentElement.nodeName !== "HTML" : false;\r
 };\r
 \r
-var posProcess = function(selector, context){\r
-       var tmpSet = [], later = "", match,\r
+var posProcess = function( selector, context, seed ) {\r
+       var match,\r
+               tmpSet = [],\r
+               later = "",\r
                root = context.nodeType ? [context] : context;\r
 \r
        // Position selectors must be done after the filter\r
@@ -6480,7 +9066,7 @@ var posProcess = function(selector, context){
        selector = Expr.relative[selector] ? selector + "*" : selector;\r
 \r
        for ( var i = 0, l = root.length; i < l; i++ ) {\r
-               Sizzle( selector, root[i], tmpSet );\r
+               Sizzle( selector, root[i], tmpSet, seed );\r
        }\r
 \r
        return Sizzle.filter( later, tmpSet );\r
@@ -6493,290 +9079,6 @@ window.tinymce.dom.Sizzle = Sizzle;
 })();\r
 \r
 \r
-(function(tinymce) {\r
-       // Shorten names\r
-       var each = tinymce.each, DOM = tinymce.DOM, isIE = tinymce.isIE, isWebKit = tinymce.isWebKit, Event;\r
-\r
-       tinymce.create('tinymce.dom.EventUtils', {\r
-               EventUtils : function() {\r
-                       this.inits = [];\r
-                       this.events = [];\r
-               },\r
-\r
-               add : function(o, n, f, s) {\r
-                       var cb, t = this, el = t.events, r;\r
-\r
-                       if (n instanceof Array) {\r
-                               r = [];\r
-\r
-                               each(n, function(n) {\r
-                                       r.push(t.add(o, n, f, s));\r
-                               });\r
-\r
-                               return r;\r
-                       }\r
-\r
-                       // Handle array\r
-                       if (o && o.hasOwnProperty && o instanceof Array) {\r
-                               r = [];\r
-\r
-                               each(o, function(o) {\r
-                                       o = DOM.get(o);\r
-                                       r.push(t.add(o, n, f, s));\r
-                               });\r
-\r
-                               return r;\r
-                       }\r
-\r
-                       o = DOM.get(o);\r
-\r
-                       if (!o)\r
-                               return;\r
-\r
-                       // Setup event callback\r
-                       cb = function(e) {\r
-                               // Is all events disabled\r
-                               if (t.disabled)\r
-                                       return;\r
-\r
-                               e = e || window.event;\r
-\r
-                               // Patch in target, preventDefault and stopPropagation in IE it's W3C valid\r
-                               if (e && isIE) {\r
-                                       if (!e.target)\r
-                                               e.target = e.srcElement;\r
-\r
-                                       // Patch in preventDefault, stopPropagation methods for W3C compatibility\r
-                                       tinymce.extend(e, t._stoppers);\r
-                               }\r
-\r
-                               if (!s)\r
-                                       return f(e);\r
-\r
-                               return f.call(s, e);\r
-                       };\r
-\r
-                       if (n == 'unload') {\r
-                               tinymce.unloads.unshift({func : cb});\r
-                               return cb;\r
-                       }\r
-\r
-                       if (n == 'init') {\r
-                               if (t.domLoaded)\r
-                                       cb();\r
-                               else\r
-                                       t.inits.push(cb);\r
-\r
-                               return cb;\r
-                       }\r
-\r
-                       // Store away listener reference\r
-                       el.push({\r
-                               obj : o,\r
-                               name : n,\r
-                               func : f,\r
-                               cfunc : cb,\r
-                               scope : s\r
-                       });\r
-\r
-                       t._add(o, n, cb);\r
-\r
-                       return f;\r
-               },\r
-\r
-               remove : function(o, n, f) {\r
-                       var t = this, a = t.events, s = false, r;\r
-\r
-                       // Handle array\r
-                       if (o && o.hasOwnProperty && o instanceof Array) {\r
-                               r = [];\r
-\r
-                               each(o, function(o) {\r
-                                       o = DOM.get(o);\r
-                                       r.push(t.remove(o, n, f));\r
-                               });\r
-\r
-                               return r;\r
-                       }\r
-\r
-                       o = DOM.get(o);\r
-\r
-                       each(a, function(e, i) {\r
-                               if (e.obj == o && e.name == n && (!f || (e.func == f || e.cfunc == f))) {\r
-                                       a.splice(i, 1);\r
-                                       t._remove(o, n, e.cfunc);\r
-                                       s = true;\r
-                                       return false;\r
-                               }\r
-                       });\r
-\r
-                       return s;\r
-               },\r
-\r
-               clear : function(o) {\r
-                       var t = this, a = t.events, i, e;\r
-\r
-                       if (o) {\r
-                               o = DOM.get(o);\r
-\r
-                               for (i = a.length - 1; i >= 0; i--) {\r
-                                       e = a[i];\r
-\r
-                                       if (e.obj === o) {\r
-                                               t._remove(e.obj, e.name, e.cfunc);\r
-                                               e.obj = e.cfunc = null;\r
-                                               a.splice(i, 1);\r
-                                       }\r
-                               }\r
-                       }\r
-               },\r
-\r
-               cancel : function(e) {\r
-                       if (!e)\r
-                               return false;\r
-\r
-                       this.stop(e);\r
-\r
-                       return this.prevent(e);\r
-               },\r
-\r
-               stop : function(e) {\r
-                       if (e.stopPropagation)\r
-                               e.stopPropagation();\r
-                       else\r
-                               e.cancelBubble = true;\r
-\r
-                       return false;\r
-               },\r
-\r
-               prevent : function(e) {\r
-                       if (e.preventDefault)\r
-                               e.preventDefault();\r
-                       else\r
-                               e.returnValue = false;\r
-\r
-                       return false;\r
-               },\r
-\r
-               destroy : function() {\r
-                       var t = this;\r
-\r
-                       each(t.events, function(e, i) {\r
-                               t._remove(e.obj, e.name, e.cfunc);\r
-                               e.obj = e.cfunc = null;\r
-                       });\r
-\r
-                       t.events = [];\r
-                       t = null;\r
-               },\r
-\r
-               _add : function(o, n, f) {\r
-                       if (o.attachEvent)\r
-                               o.attachEvent('on' + n, f);\r
-                       else if (o.addEventListener)\r
-                               o.addEventListener(n, f, false);\r
-                       else\r
-                               o['on' + n] = f;\r
-               },\r
-\r
-               _remove : function(o, n, f) {\r
-                       if (o) {\r
-                               try {\r
-                                       if (o.detachEvent)\r
-                                               o.detachEvent('on' + n, f);\r
-                                       else if (o.removeEventListener)\r
-                                               o.removeEventListener(n, f, false);\r
-                                       else\r
-                                               o['on' + n] = null;\r
-                               } catch (ex) {\r
-                                       // Might fail with permission denined on IE so we just ignore that\r
-                               }\r
-                       }\r
-               },\r
-\r
-               _pageInit : function(win) {\r
-                       var t = this;\r
-\r
-                       // Keep it from running more than once\r
-                       if (t.domLoaded)\r
-                               return;\r
-\r
-                       t.domLoaded = true;\r
-\r
-                       each(t.inits, function(c) {\r
-                               c();\r
-                       });\r
-\r
-                       t.inits = [];\r
-               },\r
-\r
-               _wait : function(win) {\r
-                       var t = this, doc = win.document;\r
-\r
-                       // No need since the document is already loaded\r
-                       if (win.tinyMCE_GZ && tinyMCE_GZ.loaded) {\r
-                               t.domLoaded = 1;\r
-                               return;\r
-                       }\r
-\r
-                       // Use IE method\r
-                       if (doc.attachEvent) {\r
-                               doc.attachEvent("onreadystatechange", function() {\r
-                                       if (doc.readyState === "complete") {\r
-                                               doc.detachEvent("onreadystatechange", arguments.callee);\r
-                                               t._pageInit(win);\r
-                                       }\r
-                               });\r
-\r
-                               if (doc.documentElement.doScroll && win == win.top) {\r
-                                       (function() {\r
-                                               if (t.domLoaded)\r
-                                                       return;\r
-\r
-                                               try {\r
-                                                       // If IE is used, use the trick by Diego Perini\r
-                                                       // http://javascript.nwbox.com/IEContentLoaded/\r
-                                                       doc.documentElement.doScroll("left");\r
-                                               } catch (ex) {\r
-                                                       setTimeout(arguments.callee, 0);\r
-                                                       return;\r
-                                               }\r
-\r
-                                               t._pageInit(win);\r
-                                       })();\r
-                               }\r
-                       } else if (doc.addEventListener) {\r
-                               t._add(win, 'DOMContentLoaded', function() {\r
-                                       t._pageInit(win);\r
-                               });\r
-                       }\r
-\r
-                       t._add(win, 'load', function() {\r
-                               t._pageInit(win);\r
-                       });\r
-               },\r
-\r
-               _stoppers : {\r
-                       preventDefault : function() {\r
-                               this.returnValue = false;\r
-                       },\r
-\r
-                       stopPropagation : function() {\r
-                               this.cancelBubble = true;\r
-                       }\r
-               }\r
-       });\r
-\r
-       Event = tinymce.dom.Event = new tinymce.dom.EventUtils();\r
-\r
-       // Dispatch DOM content loaded event for IE and Safari\r
-       Event._wait(window);\r
-\r
-       tinymce.addUnload(function() {\r
-               Event.destroy();\r
-       });\r
-})(tinymce);\r
-\r
 (function(tinymce) {\r
        tinymce.dom.Element = function(id, settings) {\r
                var t = this, dom, el;\r
@@ -6793,20 +9095,20 @@ window.tinymce.dom.Sizzle = Sizzle;
                                ('getPos,getRect,getParent,add,setStyle,getStyle,setStyles,' + \r
                                'setAttrib,setAttribs,getAttrib,addClass,removeClass,' + \r
                                'hasClass,getOuterHTML,setOuterHTML,remove,show,hide,' + \r
-                               'isHidden,setHTML,get').split(/,/)\r
-                       , function(k) {\r
-                               t[k] = function() {\r
-                                       var a = [id], i;\r
+                               'isHidden,setHTML,get').split(/,/), function(k) {\r
+                                       t[k] = function() {\r
+                                               var a = [id], i;\r
 \r
-                                       for (i = 0; i < arguments.length; i++)\r
-                                               a.push(arguments[i]);\r
+                                               for (i = 0; i < arguments.length; i++)\r
+                                                       a.push(arguments[i]);\r
 \r
-                                       a = dom[k].apply(dom, a);\r
-                                       t.update(k);\r
+                                               a = dom[k].apply(dom, a);\r
+                                               t.update(k);\r
 \r
-                                       return a;\r
-                               };\r
-               });\r
+                                               return a;\r
+                                       };\r
+                       }\r
+               );\r
 \r
                tinymce.extend(t, {\r
                        on : function(n, f, s) {\r
@@ -6892,15 +9194,16 @@ window.tinymce.dom.Sizzle = Sizzle;
        };\r
 \r
        // Shorten names\r
-       var is = tinymce.is, isIE = tinymce.isIE, each = tinymce.each;\r
+       var is = tinymce.is, isIE = tinymce.isIE, each = tinymce.each, TreeWalker = tinymce.dom.TreeWalker;\r
 \r
        tinymce.create('tinymce.dom.Selection', {\r
-               Selection : function(dom, win, serializer) {\r
+               Selection : function(dom, win, serializer, editor) {\r
                        var t = this;\r
 \r
                        t.dom = dom;\r
                        t.win = win;\r
                        t.serializer = serializer;\r
+                       t.editor = editor;\r
 \r
                        // Add events\r
                        each([\r
@@ -6926,6 +9229,13 @@ window.tinymce.dom.Sizzle = Sizzle;
                        tinymce.addUnload(t.destroy, t);\r
                },\r
 \r
+               setCursorLocation: function(node, offset) {\r
+                       var t = this; var r = t.dom.createRng();\r
+                       r.setStart(node, offset);\r
+                       r.setEnd(node, offset);\r
+                       t.setRng(r);\r
+                       t.collapse(false);\r
+               },\r
                getContent : function(s) {\r
                        var t = this, r = t.getRng(), e = t.dom.create("body"), se = t.getSel(), wb, wa, n;\r
 \r
@@ -6933,6 +9243,7 @@ window.tinymce.dom.Sizzle = Sizzle;
                        wb = wa = '';\r
                        s.get = true;\r
                        s.format = s.format || 'html';\r
+                       s.forced_root_block = '';\r
                        t.onBeforeGetContent.dispatch(t, s);\r
 \r
                        if (s.format == 'text')\r
@@ -6943,9 +9254,13 @@ window.tinymce.dom.Sizzle = Sizzle;
 \r
                                if (n)\r
                                        e.appendChild(n);\r
-                       } else if (is(r.item) || is(r.htmlText))\r
-                               e.innerHTML = r.item ? r.item(0).outerHTML : r.htmlText;\r
-                       else\r
+                       } else if (is(r.item) || is(r.htmlText)) {\r
+                               // IE will produce invalid markup if elements are present that\r
+                               // it doesn't understand like custom elements or HTML5 elements.\r
+                               // Adding a BR in front of the contents and then remoiving it seems to fix it though.\r
+                               e.innerHTML = '<br>' + (r.item ? r.item(0).outerHTML : r.htmlText);\r
+                               e.removeChild(e.firstChild);\r
+                       } else\r
                                e.innerHTML = r.toString();\r
 \r
                        // Keep whitespace before and after\r
@@ -6987,7 +9302,7 @@ window.tinymce.dom.Sizzle = Sizzle;
                                } else {\r
                                        rng.deleteContents();\r
 \r
-                                       if (doc.body.childNodes.length == 0) {\r
+                                       if (doc.body.childNodes.length === 0) {\r
                                                doc.body.innerHTML = content;\r
                                        } else {\r
                                                // createContextualFragment doesn't exists in IE 9 DOMRanges\r
@@ -7017,7 +9332,12 @@ window.tinymce.dom.Sizzle = Sizzle;
 \r
                                // Remove the caret position\r
                                self.dom.remove('__caret');\r
-                               self.setRng(rng);\r
+\r
+                               try {\r
+                                       self.setRng(rng);\r
+                               } catch (ex) {\r
+                                       // Might fail on Opera for some odd reason\r
+                               }\r
                        } else {\r
                                if (rng.item) {\r
                                        // Delete content and get caret text selection\r
@@ -7025,7 +9345,12 @@ window.tinymce.dom.Sizzle = Sizzle;
                                        rng = self.getRng();\r
                                }\r
 \r
-                               rng.pasteHTML(content);\r
+                               // Explorer removes spaces from the beginning of pasted contents\r
+                               if (/^\s+/.test(content)) {\r
+                                       rng.pasteHTML('<span id="__mce_tmp">_</span>' + content);\r
+                                       self.dom.remove('__mce_tmp');\r
+                               } else\r
+                                       rng.pasteHTML(content);\r
                        }\r
 \r
                        // Dispatch set content event\r
@@ -7034,7 +9359,7 @@ window.tinymce.dom.Sizzle = Sizzle;
                },\r
 \r
                getStart : function() {\r
-                       var rng = this.getRng(), startElement, parentElement, checkRng, node;\r
+                       var self = this, rng = self.getRng(), startElement, parentElement, checkRng, node;\r
 \r
                        if (rng.duplicate || rng.item) {\r
                                // Control selection, return first item\r
@@ -7045,6 +9370,9 @@ window.tinymce.dom.Sizzle = Sizzle;
                                checkRng = rng.duplicate();\r
                                checkRng.collapse(1);\r
                                startElement = checkRng.parentElement();\r
+                               if (startElement.ownerDocument !== self.dom.doc) {\r
+                                       startElement = self.dom.getRoot();\r
+                               }\r
 \r
                                // Check if range parent is inside the start element, then return the inner parent element\r
                                // This will fix issues when a single element is selected, IE would otherwise return the wrong start element\r
@@ -7071,31 +9399,34 @@ window.tinymce.dom.Sizzle = Sizzle;
                },\r
 \r
                getEnd : function() {\r
-                       var t = this, r = t.getRng(), e, eo;\r
+                       var self = this, rng = self.getRng(), endElement, endOffset;\r
 \r
-                       if (r.duplicate || r.item) {\r
-                               if (r.item)\r
-                                       return r.item(0);\r
+                       if (rng.duplicate || rng.item) {\r
+                               if (rng.item)\r
+                                       return rng.item(0);\r
 \r
-                               r = r.duplicate();\r
-                               r.collapse(0);\r
-                               e = r.parentElement();\r
+                               rng = rng.duplicate();\r
+                               rng.collapse(0);\r
+                               endElement = rng.parentElement();\r
+                               if (endElement.ownerDocument !== self.dom.doc) {\r
+                                       endElement = self.dom.getRoot();\r
+                               }\r
 \r
-                               if (e && e.nodeName == 'BODY')\r
-                                       return e.lastChild || e;\r
+                               if (endElement && endElement.nodeName == 'BODY')\r
+                                       return endElement.lastChild || endElement;\r
 \r
-                               return e;\r
+                               return endElement;\r
                        } else {\r
-                               e = r.endContainer;\r
-                               eo = r.endOffset;\r
+                               endElement = rng.endContainer;\r
+                               endOffset = rng.endOffset;\r
 \r
-                               if (e.nodeType == 1 && e.hasChildNodes())\r
-                                       e = e.childNodes[eo > 0 ? eo - 1 : eo];\r
+                               if (endElement.nodeType == 1 && endElement.hasChildNodes())\r
+                                       endElement = endElement.childNodes[endOffset > 0 ? endOffset - 1 : endOffset];\r
 \r
-                               if (e && e.nodeType == 3)\r
-                                       return e.parentNode;\r
+                               if (endElement && endElement.nodeType == 3)\r
+                                       return endElement.parentNode;\r
 \r
-                               return e;\r
+                               return endElement;\r
                        }\r
                },\r
 \r
@@ -7113,46 +9444,72 @@ window.tinymce.dom.Sizzle = Sizzle;
                                return index;\r
                        };\r
 \r
-                       if (type == 2) {\r
-                               function getLocation() {\r
-                                       var rng = t.getRng(true), root = dom.getRoot(), bookmark = {};\r
+                       function normalizeTableCellSelection(rng) {\r
+                               function moveEndPoint(start) {\r
+                                       var container, offset, childNodes, prefix = start ? 'start' : 'end';\r
 \r
-                                       function getPoint(rng, start) {\r
-                                               var container = rng[start ? 'startContainer' : 'endContainer'],\r
-                                                       offset = rng[start ? 'startOffset' : 'endOffset'], point = [], node, childNodes, after = 0;\r
+                                       container = rng[prefix + 'Container'];\r
+                                       offset = rng[prefix + 'Offset'];\r
 \r
-                                               if (container.nodeType == 3) {\r
-                                                       if (normalized) {\r
-                                                               for (node = container.previousSibling; node && node.nodeType == 3; node = node.previousSibling)\r
-                                                                       offset += node.nodeValue.length;\r
-                                                       }\r
+                                       if (container.nodeType == 1 && container.nodeName == "TR") {\r
+                                               childNodes = container.childNodes;\r
+                                               container = childNodes[Math.min(start ? offset : offset - 1, childNodes.length - 1)];\r
+                                               if (container) {\r
+                                                       offset = start ? 0 : container.childNodes.length;\r
+                                                       rng['set' + (start ? 'Start' : 'End')](container, offset);\r
+                                               }\r
+                                       }\r
+                               };\r
 \r
-                                                       point.push(offset);\r
-                                               } else {\r
-                                                       childNodes = container.childNodes;\r
+                               moveEndPoint(true);\r
+                               moveEndPoint();\r
 \r
-                                                       if (offset >= childNodes.length && childNodes.length) {\r
-                                                               after = 1;\r
-                                                               offset = Math.max(0, childNodes.length - 1);\r
-                                                       }\r
+                               return rng;\r
+                       };\r
+\r
+                       function getLocation() {\r
+                               var rng = t.getRng(true), root = dom.getRoot(), bookmark = {};\r
 \r
-                                                       point.push(t.dom.nodeIndex(childNodes[offset], normalized) + after);\r
+                               function getPoint(rng, start) {\r
+                                       var container = rng[start ? 'startContainer' : 'endContainer'],\r
+                                               offset = rng[start ? 'startOffset' : 'endOffset'], point = [], node, childNodes, after = 0;\r
+\r
+                                       if (container.nodeType == 3) {\r
+                                               if (normalized) {\r
+                                                       for (node = container.previousSibling; node && node.nodeType == 3; node = node.previousSibling)\r
+                                                               offset += node.nodeValue.length;\r
                                                }\r
 \r
-                                               for (; container && container != root; container = container.parentNode)\r
-                                                       point.push(t.dom.nodeIndex(container, normalized));\r
+                                               point.push(offset);\r
+                                       } else {\r
+                                               childNodes = container.childNodes;\r
 \r
-                                               return point;\r
-                                       };\r
+                                               if (offset >= childNodes.length && childNodes.length) {\r
+                                                       after = 1;\r
+                                                       offset = Math.max(0, childNodes.length - 1);\r
+                                               }\r
 \r
-                                       bookmark.start = getPoint(rng, true);\r
+                                               point.push(t.dom.nodeIndex(childNodes[offset], normalized) + after);\r
+                                       }\r
 \r
-                                       if (!t.isCollapsed())\r
-                                               bookmark.end = getPoint(rng);\r
+                                       for (; container && container != root; container = container.parentNode)\r
+                                               point.push(t.dom.nodeIndex(container, normalized));\r
 \r
-                                       return bookmark;\r
+                                       return point;\r
                                };\r
 \r
+                               bookmark.start = getPoint(rng, true);\r
+\r
+                               if (!t.isCollapsed())\r
+                                       bookmark.end = getPoint(rng);\r
+\r
+                               return bookmark;\r
+                       };\r
+\r
+                       if (type == 2) {\r
+                               if (t.tridentSel)\r
+                                       return t.tridentSel.getBookmark(type);\r
+\r
                                return getLocation();\r
                        }\r
 \r
@@ -7182,7 +9539,7 @@ window.tinymce.dom.Sizzle = Sizzle;
 \r
                                                        // Detect the empty space after block elements in IE and move the end back one character <p></p>] becomes <p>]</p>\r
                                                        rng.moveToElementText(rng2.parentElement());\r
-                                                       if (rng.compareEndPoints('StartToEnd', rng2) == 0)\r
+                                                       if (rng.compareEndPoints('StartToEnd', rng2) === 0)\r
                                                                rng2.move('character', -1);\r
 \r
                                                        rng2.pasteHTML('<span data-mce-type="bookmark" id="' + id + '_end" style="' + styles + '">' + chr + '</span>');\r
@@ -7205,7 +9562,7 @@ window.tinymce.dom.Sizzle = Sizzle;
                                        return {name : name, index : findIndex(name, element)};\r
 \r
                                // W3C method\r
-                               rng2 = rng.cloneRange();\r
+                               rng2 = normalizeTableCellSelection(rng.cloneRange());\r
 \r
                                // Insert end marker\r
                                if (!collapsed) {\r
@@ -7213,6 +9570,7 @@ window.tinymce.dom.Sizzle = Sizzle;
                                        rng2.insertNode(dom.create('span', {'data-mce-type' : "bookmark", id : id + '_end', style : styles}, chr));\r
                                }\r
 \r
+                               rng = normalizeTableCellSelection(rng);\r
                                rng.collapse(true);\r
                                rng.insertNode(dom.create('span', {'data-mce-type' : "bookmark", id : id + '_start', style : styles}, chr));\r
                        }\r
@@ -7225,123 +9583,122 @@ window.tinymce.dom.Sizzle = Sizzle;
                moveToBookmark : function(bookmark) {\r
                        var t = this, dom = t.dom, marker1, marker2, rng, root, startContainer, endContainer, startOffset, endOffset;\r
 \r
-                       // Clear selection cache\r
-                       if (t.tridentSel)\r
-                               t.tridentSel.destroy();\r
+                       function setEndPoint(start) {\r
+                               var point = bookmark[start ? 'start' : 'end'], i, node, offset, children;\r
 \r
-                       if (bookmark) {\r
-                               if (bookmark.start) {\r
-                                       rng = dom.createRng();\r
-                                       root = dom.getRoot();\r
+                               if (point) {\r
+                                       offset = point[0];\r
 \r
-                                       function setEndPoint(start) {\r
-                                               var point = bookmark[start ? 'start' : 'end'], i, node, offset, children;\r
+                                       // Find container node\r
+                                       for (node = root, i = point.length - 1; i >= 1; i--) {\r
+                                               children = node.childNodes;\r
 \r
-                                               if (point) {\r
-                                                       offset = point[0];\r
+                                               if (point[i] > children.length - 1)\r
+                                                       return;\r
 \r
-                                                       // Find container node\r
-                                                       for (node = root, i = point.length - 1; i >= 1; i--) {\r
-                                                               children = node.childNodes;\r
+                                               node = children[point[i]];\r
+                                       }\r
 \r
-                                                               if (point[i] > children.length - 1)\r
-                                                                       return;\r
+                                       // Move text offset to best suitable location\r
+                                       if (node.nodeType === 3)\r
+                                               offset = Math.min(point[0], node.nodeValue.length);\r
 \r
-                                                               node = children[point[i]];\r
-                                                       }\r
+                                       // Move element offset to best suitable location\r
+                                       if (node.nodeType === 1)\r
+                                               offset = Math.min(point[0], node.childNodes.length);\r
+\r
+                                       // Set offset within container node\r
+                                       if (start)\r
+                                               rng.setStart(node, offset);\r
+                                       else\r
+                                               rng.setEnd(node, offset);\r
+                               }\r
 \r
-                                                       // Move text offset to best suitable location\r
-                                                       if (node.nodeType === 3)\r
-                                                               offset = Math.min(point[0], node.nodeValue.length);\r
+                               return true;\r
+                       };\r
 \r
-                                                       // Move element offset to best suitable location\r
-                                                       if (node.nodeType === 1)\r
-                                                               offset = Math.min(point[0], node.childNodes.length);\r
+                       function restoreEndPoint(suffix) {\r
+                               var marker = dom.get(bookmark.id + '_' + suffix), node, idx, next, prev, keep = bookmark.keep;\r
 \r
-                                                       // Set offset within container node\r
-                                                       if (start)\r
-                                                               rng.setStart(node, offset);\r
-                                                       else\r
-                                                               rng.setEnd(node, offset);\r
+                               if (marker) {\r
+                                       node = marker.parentNode;\r
+\r
+                                       if (suffix == 'start') {\r
+                                               if (!keep) {\r
+                                                       idx = dom.nodeIndex(marker);\r
+                                               } else {\r
+                                                       node = marker.firstChild;\r
+                                                       idx = 1;\r
                                                }\r
 \r
-                                               return true;\r
-                                       };\r
+                                               startContainer = endContainer = node;\r
+                                               startOffset = endOffset = idx;\r
+                                       } else {\r
+                                               if (!keep) {\r
+                                                       idx = dom.nodeIndex(marker);\r
+                                               } else {\r
+                                                       node = marker.firstChild;\r
+                                                       idx = 1;\r
+                                               }\r
 \r
-                                       if (setEndPoint(true) && setEndPoint()) {\r
-                                               t.setRng(rng);\r
+                                               endContainer = node;\r
+                                               endOffset = idx;\r
                                        }\r
-                               } else if (bookmark.id) {\r
-                                       function restoreEndPoint(suffix) {\r
-                                               var marker = dom.get(bookmark.id + '_' + suffix), node, idx, next, prev, keep = bookmark.keep;\r
 \r
-                                               if (marker) {\r
-                                                       node = marker.parentNode;\r
+                                       if (!keep) {\r
+                                               prev = marker.previousSibling;\r
+                                               next = marker.nextSibling;\r
 \r
-                                                       if (suffix == 'start') {\r
-                                                               if (!keep) {\r
-                                                                       idx = dom.nodeIndex(marker);\r
-                                                               } else {\r
-                                                                       node = marker.firstChild;\r
-                                                                       idx = 1;\r
-                                                               }\r
+                                               // Remove all marker text nodes\r
+                                               each(tinymce.grep(marker.childNodes), function(node) {\r
+                                                       if (node.nodeType == 3)\r
+                                                               node.nodeValue = node.nodeValue.replace(/\uFEFF/g, '');\r
+                                               });\r
+\r
+                                               // Remove marker but keep children if for example contents where inserted into the marker\r
+                                               // Also remove duplicated instances of the marker for example by a split operation or by WebKit auto split on paste feature\r
+                                               while (marker = dom.get(bookmark.id + '_' + suffix))\r
+                                                       dom.remove(marker, 1);\r
 \r
-                                                               startContainer = endContainer = node;\r
+                                               // If siblings are text nodes then merge them unless it's Opera since it some how removes the node\r
+                                               // 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\r
+                                               if (prev && next && prev.nodeType == next.nodeType && prev.nodeType == 3 && !tinymce.isOpera) {\r
+                                                       idx = prev.nodeValue.length;\r
+                                                       prev.appendData(next.nodeValue);\r
+                                                       dom.remove(next);\r
+\r
+                                                       if (suffix == 'start') {\r
+                                                               startContainer = endContainer = prev;\r
                                                                startOffset = endOffset = idx;\r
                                                        } else {\r
-                                                               if (!keep) {\r
-                                                                       idx = dom.nodeIndex(marker);\r
-                                                               } else {\r
-                                                                       node = marker.firstChild;\r
-                                                                       idx = 1;\r
-                                                               }\r
-\r
-                                                               endContainer = node;\r
+                                                               endContainer = prev;\r
                                                                endOffset = idx;\r
                                                        }\r
+                                               }\r
+                                       }\r
+                               }\r
+                       };\r
 \r
-                                                       if (!keep) {\r
-                                                               prev = marker.previousSibling;\r
-                                                               next = marker.nextSibling;\r
-\r
-                                                               // Remove all marker text nodes\r
-                                                               each(tinymce.grep(marker.childNodes), function(node) {\r
-                                                                       if (node.nodeType == 3)\r
-                                                                               node.nodeValue = node.nodeValue.replace(/\uFEFF/g, '');\r
-                                                               });\r
+                       function addBogus(node) {\r
+                               // Adds a bogus BR element for empty block elements\r
+                               if (dom.isBlock(node) && !node.innerHTML && !isIE)\r
+                                       node.innerHTML = '<br data-mce-bogus="1" />';\r
 \r
-                                                               // Remove marker but keep children if for example contents where inserted into the marker\r
-                                                               // Also remove duplicated instances of the marker for example by a split operation or by WebKit auto split on paste feature\r
-                                                               while (marker = dom.get(bookmark.id + '_' + suffix))\r
-                                                                       dom.remove(marker, 1);\r
-\r
-                                                               // If siblings are text nodes then merge them unless it's Opera since it some how removes the node\r
-                                                               // 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\r
-                                                               if (prev && next && prev.nodeType == next.nodeType && prev.nodeType == 3 && !tinymce.isOpera) {\r
-                                                                       idx = prev.nodeValue.length;\r
-                                                                       prev.appendData(next.nodeValue);\r
-                                                                       dom.remove(next);\r
-\r
-                                                                       if (suffix == 'start') {\r
-                                                                               startContainer = endContainer = prev;\r
-                                                                               startOffset = endOffset = idx;\r
-                                                                       } else {\r
-                                                                               endContainer = prev;\r
-                                                                               endOffset = idx;\r
-                                                                       }\r
-                                                               }\r
-                                                       }\r
-                                               }\r
-                                       };\r
+                               return node;\r
+                       };\r
 \r
-                                       function addBogus(node) {\r
-                                               // Adds a bogus BR element for empty block elements or just a space on IE since it renders BR elements incorrectly\r
-                                               if (dom.isBlock(node) && !node.innerHTML)\r
-                                                       node.innerHTML = !isIE ? '<br data-mce-bogus="1" />' : ' ';\r
+                       if (bookmark) {\r
+                               if (bookmark.start) {\r
+                                       rng = dom.createRng();\r
+                                       root = dom.getRoot();\r
 \r
-                                               return node;\r
-                                       };\r
+                                       if (t.tridentSel)\r
+                                               return t.tridentSel.moveToBookmark(bookmark);\r
 \r
+                                       if (setEndPoint(true) && setEndPoint()) {\r
+                                               t.setRng(rng);\r
+                                       }\r
+                               } else if (bookmark.id) {\r
                                        // Restore start/end points\r
                                        restoreEndPoint('start');\r
                                        restoreEndPoint('end');\r
@@ -7362,6 +9719,32 @@ window.tinymce.dom.Sizzle = Sizzle;
                select : function(node, content) {\r
                        var t = this, dom = t.dom, rng = dom.createRng(), idx;\r
 \r
+                       function setPoint(node, start) {\r
+                               var walker = new TreeWalker(node, node);\r
+\r
+                               do {\r
+                                       // Text node\r
+                                       if (node.nodeType == 3 && tinymce.trim(node.nodeValue).length !== 0) {\r
+                                               if (start)\r
+                                                       rng.setStart(node, 0);\r
+                                               else\r
+                                                       rng.setEnd(node, node.nodeValue.length);\r
+\r
+                                               return;\r
+                                       }\r
+\r
+                                       // BR element\r
+                                       if (node.nodeName == 'BR') {\r
+                                               if (start)\r
+                                                       rng.setStartBefore(node);\r
+                                               else\r
+                                                       rng.setEndBefore(node);\r
+\r
+                                               return;\r
+                                       }\r
+                               } while (node = (start ? walker.next() : walker.prev()));\r
+                       };\r
+\r
                        if (node) {\r
                                idx = dom.nodeIndex(node);\r
                                rng.setStart(node.parentNode, idx);\r
@@ -7369,32 +9752,6 @@ window.tinymce.dom.Sizzle = Sizzle;
 \r
                                // Find first/last text node or BR element\r
                                if (content) {\r
-                                       function setPoint(node, start) {\r
-                                               var walker = new tinymce.dom.TreeWalker(node, node);\r
-\r
-                                               do {\r
-                                                       // Text node\r
-                                                       if (node.nodeType == 3 && tinymce.trim(node.nodeValue).length != 0) {\r
-                                                               if (start)\r
-                                                                       rng.setStart(node, 0);\r
-                                                               else\r
-                                                                       rng.setEnd(node, node.nodeValue.length);\r
-\r
-                                                               return;\r
-                                                       }\r
-\r
-                                                       // BR element\r
-                                                       if (node.nodeName == 'BR') {\r
-                                                               if (start)\r
-                                                                       rng.setStartBefore(node);\r
-                                                               else\r
-                                                                       rng.setEndBefore(node);\r
-\r
-                                                               return;\r
-                                                       }\r
-                                               } while (node = (start ? walker.next() : walker.prev()));\r
-                                       };\r
-\r
                                        setPoint(node, 1);\r
                                        setPoint(node);\r
                                }\r
@@ -7438,50 +9795,60 @@ window.tinymce.dom.Sizzle = Sizzle;
                },\r
 \r
                getRng : function(w3c) {\r
-                       var t = this, s, r, elm, doc = t.win.document;\r
+                       var self = this, selection, rng, elm, doc = self.win.document;\r
 \r
                        // Found tridentSel object then we need to use that one\r
-                       if (w3c && t.tridentSel)\r
-                               return t.tridentSel.getRangeAt(0);\r
+                       if (w3c && self.tridentSel) {\r
+                               return self.tridentSel.getRangeAt(0);\r
+                       }\r
 \r
                        try {\r
-                               if (s = t.getSel())\r
-                                       r = s.rangeCount > 0 ? s.getRangeAt(0) : (s.createRange ? s.createRange() : doc.createRange());\r
+                               if (selection = self.getSel()) {\r
+                                       rng = selection.rangeCount > 0 ? selection.getRangeAt(0) : (selection.createRange ? selection.createRange() : doc.createRange());\r
+                               }\r
                        } catch (ex) {\r
                                // IE throws unspecified error here if TinyMCE is placed in a frame/iframe\r
                        }\r
 \r
                        // We have W3C ranges and it's IE then fake control selection since IE9 doesn't handle that correctly yet\r
-                       if (tinymce.isIE && r && r.setStart && doc.selection.createRange().item) {\r
+                       if (tinymce.isIE && rng && rng.setStart && doc.selection.createRange().item) {\r
                                elm = doc.selection.createRange().item(0);\r
-                               r = doc.createRange();\r
-                               r.setStartBefore(elm);\r
-                               r.setEndAfter(elm);\r
+                               rng = doc.createRange();\r
+                               rng.setStartBefore(elm);\r
+                               rng.setEndAfter(elm);\r
                        }\r
 \r
                        // No range found then create an empty one\r
                        // This can occur when the editor is placed in a hidden container element on Gecko\r
                        // Or on IE when there was an exception\r
-                       if (!r)\r
-                               r = doc.createRange ? doc.createRange() : doc.body.createTextRange();\r
+                       if (!rng) {\r
+                               rng = doc.createRange ? doc.createRange() : doc.body.createTextRange();\r
+                       }\r
+\r
+                       // If range is at start of document then move it to start of body\r
+                       if (rng.setStart && rng.startContainer.nodeType === 9 && rng.collapsed) {\r
+                               elm = self.dom.getRoot();\r
+                               rng.setStart(elm, 0);\r
+                               rng.setEnd(elm, 0);\r
+                       }\r
 \r
-                       if (t.selectedRange && t.explicitRange) {\r
-                               if (r.compareBoundaryPoints(r.START_TO_START, t.selectedRange) === 0 && r.compareBoundaryPoints(r.END_TO_END, t.selectedRange) === 0) {\r
+                       if (self.selectedRange && self.explicitRange) {\r
+                               if (rng.compareBoundaryPoints(rng.START_TO_START, self.selectedRange) === 0 && rng.compareBoundaryPoints(rng.END_TO_END, self.selectedRange) === 0) {\r
                                        // Safari, Opera and Chrome only ever select text which causes the range to change.\r
                                        // This lets us use the originally set range if the selection hasn't been changed by the user.\r
-                                       r = t.explicitRange;\r
+                                       rng = self.explicitRange;\r
                                } else {\r
-                                       t.selectedRange = null;\r
-                                       t.explicitRange = null;\r
+                                       self.selectedRange = null;\r
+                                       self.explicitRange = null;\r
                                }\r
                        }\r
 \r
-                       return r;\r
+                       return rng;\r
                },\r
 \r
-               setRng : function(r) {\r
+               setRng : function(r, forward) {\r
                        var s, t = this;\r
-                       \r
+\r
                        if (!t.tridentSel) {\r
                                s = t.getSel();\r
 \r
@@ -7495,13 +9862,25 @@ window.tinymce.dom.Sizzle = Sizzle;
                                        }\r
 \r
                                        s.addRange(r);\r
-                                       t.selectedRange = s.getRangeAt(0);\r
+\r
+                                       // Forward is set to false and we have an extend function\r
+                                       if (forward === false && s.extend) {\r
+                                               s.collapse(r.endContainer, r.endOffset);\r
+                                               s.extend(r.startContainer, r.startOffset);\r
+                                       }\r
+\r
+                                       // adding range isn't always successful so we need to check range count otherwise an exception can occur\r
+                                       t.selectedRange = s.rangeCount > 0 ? s.getRangeAt(0) : null;\r
                                }\r
                        } else {\r
                                // Is W3C Range\r
                                if (r.cloneRange) {\r
-                                       t.tridentSel.addRange(r);\r
-                                       return;\r
+                                       try {\r
+                                               t.tridentSel.addRange(r);\r
+                                               return;\r
+                                       } catch (ex) {\r
+                                               //IE9 throws an error here if called before selection is placed in the editor\r
+                                       }\r
                                }\r
 \r
                                // Is IE specific range\r
@@ -7524,6 +9903,14 @@ window.tinymce.dom.Sizzle = Sizzle;
                getNode : function() {\r
                        var t = this, rng = t.getRng(), sel = t.getSel(), elm, start = rng.startContainer, end = rng.endContainer;\r
 \r
+                       function skipEmptyTextNodes(n, forwards) {\r
+                               var orig = n;\r
+                               while (n && n.nodeType === 3 && n.length === 0) {\r
+                                       n = forwards ? n.nextSibling : n.previousSibling;\r
+                               }\r
+                               return n || orig;\r
+                       };\r
+\r
                        // Range maybe lost after the editor is made visible again\r
                        if (!rng)\r
                                return t.dom.getRoot();\r
@@ -7541,19 +9928,12 @@ window.tinymce.dom.Sizzle = Sizzle;
                                        }\r
 \r
                                        // If the anchor node is a element instead of a text node then return this element\r
-                                       //if (tinymce.isWebKit && sel.anchorNode && sel.anchorNode.nodeType == 1) \r
+                                       //if (tinymce.isWebKit && sel.anchorNode && sel.anchorNode.nodeType == 1)\r
                                        //      return sel.anchorNode.childNodes[sel.anchorOffset];\r
 \r
                                        // Handle cases where the selection is immediately wrapped around a node and return that node instead of it's parent.\r
                                        // This happens when you double click an underlined word in FireFox.\r
                                        if (start.nodeType === 3 && end.nodeType === 3) {\r
-                                               function skipEmptyTextNodes(n, forwards) {\r
-                                                       var orig = n;\r
-                                                       while (n && n.nodeType === 3 && n.length === 0) {\r
-                                                               n = forwards ? n.nextSibling : n.previousSibling;\r
-                                                       }\r
-                                                       return n || orig;\r
-                                               }\r
                                                if (start.length === rng.startOffset) {\r
                                                        start = skipEmptyTextNodes(start.nextSibling, true);\r
                                                } else {\r
@@ -7591,7 +9971,8 @@ window.tinymce.dom.Sizzle = Sizzle;
                        if (sb && eb && sb != eb) {\r
                                n = sb;\r
 \r
-                               while ((n = n.nextSibling) && n != eb) {\r
+                               var walker = new TreeWalker(sb, dom.getRoot());\r
+                               while ((n = walker.next()) && n != eb) {\r
                                        if (dom.isBlock(n))\r
                                                bl.push(n);\r
                                }\r
@@ -7603,26 +9984,260 @@ window.tinymce.dom.Sizzle = Sizzle;
                        return bl;\r
                },\r
 \r
-               destroy : function(s) {\r
-                       var t = this;\r
+               isForward: function(){\r
+                       var dom = this.dom, sel = this.getSel(), anchorRange, focusRange;\r
+\r
+                       // No support for selection direction then always return true\r
+                       if (!sel || sel.anchorNode == null || sel.focusNode == null) {\r
+                               return true;\r
+                       }\r
+\r
+                       anchorRange = dom.createRng();\r
+                       anchorRange.setStart(sel.anchorNode, sel.anchorOffset);\r
+                       anchorRange.collapse(true);\r
+\r
+                       focusRange = dom.createRng();\r
+                       focusRange.setStart(sel.focusNode, sel.focusOffset);\r
+                       focusRange.collapse(true);\r
+\r
+                       return anchorRange.compareBoundaryPoints(anchorRange.START_TO_START, focusRange) <= 0;\r
+               },\r
+\r
+               normalize : function() {\r
+                       var self = this, rng, normalized, collapsed, node, sibling;\r
+\r
+                       function normalizeEndPoint(start) {\r
+                               var container, offset, walker, dom = self.dom, body = dom.getRoot(), node, nonEmptyElementsMap, nodeName;\r
+\r
+                               function hasBrBeforeAfter(node, left) {\r
+                                       var walker = new TreeWalker(node, dom.getParent(node.parentNode, dom.isBlock) || body);\r
+\r
+                                       while (node = walker[left ? 'prev' : 'next']()) {\r
+                                               if (node.nodeName === "BR") {\r
+                                                       return true;\r
+                                               }\r
+                                       }\r
+                               };\r
+\r
+                               // Walks the dom left/right to find a suitable text node to move the endpoint into\r
+                               // It will only walk within the current parent block or body and will stop if it hits a block or a BR/IMG\r
+                               function findTextNodeRelative(left, startNode) {\r
+                                       var walker, lastInlineElement;\r
+\r
+                                       startNode = startNode || container;\r
+                                       walker = new TreeWalker(startNode, dom.getParent(startNode.parentNode, dom.isBlock) || body);\r
+\r
+                                       // Walk left until we hit a text node we can move to or a block/br/img\r
+                                       while (node = walker[left ? 'prev' : 'next']()) {\r
+                                               // Found text node that has a length\r
+                                               if (node.nodeType === 3 && node.nodeValue.length > 0) {\r
+                                                       container = node;\r
+                                                       offset = left ? node.nodeValue.length : 0;\r
+                                                       normalized = true;\r
+                                                       return;\r
+                                               }\r
+\r
+                                               // Break if we find a block or a BR/IMG/INPUT etc\r
+                                               if (dom.isBlock(node) || nonEmptyElementsMap[node.nodeName.toLowerCase()]) {\r
+                                                       return;\r
+                                               }\r
+\r
+                                               lastInlineElement = node;\r
+                                       }\r
+\r
+                                       // Only fetch the last inline element when in caret mode for now\r
+                                       if (collapsed && lastInlineElement) {\r
+                                               container = lastInlineElement;\r
+                                               normalized = true;\r
+                                               offset = 0;\r
+                                       }\r
+                               };\r
+\r
+                               container = rng[(start ? 'start' : 'end') + 'Container'];\r
+                               offset = rng[(start ? 'start' : 'end') + 'Offset'];\r
+                               nonEmptyElementsMap = dom.schema.getNonEmptyElements();\r
+\r
+                               // If the container is a document move it to the body element\r
+                               if (container.nodeType === 9) {\r
+                                       container = dom.getRoot();\r
+                                       offset = 0;\r
+                               }\r
+\r
+                               // If the container is body try move it into the closest text node or position\r
+                               if (container === body) {\r
+                                       // If start is before/after a image, table etc\r
+                                       if (start) {\r
+                                               node = container.childNodes[offset > 0 ? offset - 1 : 0];\r
+                                               if (node) {\r
+                                                       nodeName = node.nodeName.toLowerCase();\r
+                                                       if (nonEmptyElementsMap[node.nodeName] || node.nodeName == "TABLE") {\r
+                                                               return;\r
+                                                       }\r
+                                               }\r
+                                       }\r
+\r
+                                       // Resolve the index\r
+                                       if (container.hasChildNodes()) {\r
+                                               container = container.childNodes[Math.min(!start && offset > 0 ? offset - 1 : offset, container.childNodes.length - 1)];\r
+                                               offset = 0;\r
+\r
+                                               // Don't walk into elements that doesn't have any child nodes like a IMG\r
+                                               if (container.hasChildNodes() && !/TABLE/.test(container.nodeName)) {\r
+                                                       // Walk the DOM to find a text node to place the caret at or a BR\r
+                                                       node = container;\r
+                                                       walker = new TreeWalker(container, body);\r
+\r
+                                                       do {\r
+                                                               // Found a text node use that position\r
+                                                               if (node.nodeType === 3 && node.nodeValue.length > 0) {\r
+                                                                       offset = start ? 0 : node.nodeValue.length;\r
+                                                                       container = node;\r
+                                                                       normalized = true;\r
+                                                                       break;\r
+                                                               }\r
+\r
+                                                               // Found a BR/IMG element that we can place the caret before\r
+                                                               if (nonEmptyElementsMap[node.nodeName.toLowerCase()]) {\r
+                                                                       offset = dom.nodeIndex(node);\r
+                                                                       container = node.parentNode;\r
+\r
+                                                                       // Put caret after image when moving the end point\r
+                                                                       if (node.nodeName ==  "IMG" && !start) {\r
+                                                                               offset++;\r
+                                                                       }\r
+\r
+                                                                       normalized = true;\r
+                                                                       break;\r
+                                                               }\r
+                                                       } while (node = (start ? walker.next() : walker.prev()));\r
+                                               }\r
+                                       }\r
+                               }\r
+\r
+                               // Lean the caret to the left if possible\r
+                               if (collapsed) {\r
+                                       // So this: <b>x</b><i>|x</i>\r
+                                       // Becomes: <b>x|</b><i>x</i>\r
+                                       // Seems that only gecko has issues with this\r
+                                       if (container.nodeType === 3 && offset === 0) {\r
+                                               findTextNodeRelative(true);\r
+                                       }\r
+\r
+                                       // Lean left into empty inline elements when the caret is before a BR\r
+                                       // So this: <i><b></b><i>|<br></i>\r
+                                       // Becomes: <i><b>|</b><i><br></i>\r
+                                       // Seems that only gecko has issues with this\r
+                                       if (container.nodeType === 1) {\r
+                                               node = container.childNodes[offset];\r
+                                               if(node && node.nodeName === 'BR' && !hasBrBeforeAfter(node) && !hasBrBeforeAfter(node, true)) {\r
+                                                       findTextNodeRelative(true, container.childNodes[offset]);\r
+                                               }\r
+                                       }\r
+                               }\r
+\r
+                               // Lean the start of the selection right if possible\r
+                               // So this: x[<b>x]</b>\r
+                               // Becomes: x<b>[x]</b>\r
+                               if (start && !collapsed && container.nodeType === 3 && offset === container.nodeValue.length) {\r
+                                       findTextNodeRelative(false);\r
+                               }\r
+\r
+                               // Set endpoint if it was normalized\r
+                               if (normalized)\r
+                                       rng['set' + (start ? 'Start' : 'End')](container, offset);\r
+                       };\r
+\r
+                       // Normalize only on non IE browsers for now\r
+                       if (tinymce.isIE)\r
+                               return;\r
+                       \r
+                       rng = self.getRng();\r
+                       collapsed = rng.collapsed;\r
+\r
+                       // Normalize the end points\r
+                       normalizeEndPoint(true);\r
+\r
+                       if (!collapsed)\r
+                               normalizeEndPoint();\r
+\r
+                       // Set the selection if it was normalized\r
+                       if (normalized) {\r
+                               // If it was collapsed then make sure it still is\r
+                               if (collapsed) {\r
+                                       rng.collapse(true);\r
+                               }\r
+\r
+                               //console.log(self.dom.dumpRng(rng));\r
+                               self.setRng(rng, self.isForward());\r
+                       }\r
+               },\r
+\r
+               selectorChanged: function(selector, callback) {\r
+                       var self = this, currentSelectors;\r
+\r
+                       if (!self.selectorChangedData) {\r
+                               self.selectorChangedData = {};\r
+                               currentSelectors = {};\r
+\r
+                               self.editor.onNodeChange.addToTop(function(ed, cm, node) {\r
+                                       var dom = self.dom, parents = dom.getParents(node, null, dom.getRoot()), matchedSelectors = {};\r
+\r
+                                       // Check for new matching selectors\r
+                                       each(self.selectorChangedData, function(callbacks, selector) {\r
+                                               each(parents, function(node) {\r
+                                                       if (dom.is(node, selector)) {\r
+                                                               if (!currentSelectors[selector]) {\r
+                                                                       // Execute callbacks\r
+                                                                       each(callbacks, function(callback) {\r
+                                                                               callback(true, {node: node, selector: selector, parents: parents});\r
+                                                                       });\r
+\r
+                                                                       currentSelectors[selector] = callbacks;\r
+                                                               }\r
+\r
+                                                               matchedSelectors[selector] = callbacks;\r
+                                                               return false;\r
+                                                       }\r
+                                               });\r
+                                       });\r
 \r
-                       t.win = null;\r
+                                       // Check if current selectors still match\r
+                                       each(currentSelectors, function(callbacks, selector) {\r
+                                               if (!matchedSelectors[selector]) {\r
+                                                       delete currentSelectors[selector];\r
 \r
-                       if (t.tridentSel)\r
-                               t.tridentSel.destroy();\r
+                                                       each(callbacks, function(callback) {\r
+                                                               callback(false, {node: node, selector: selector, parents: parents});\r
+                                                       });\r
+                                               }\r
+                                       });\r
+                               });\r
+                       }\r
+\r
+                       // Add selector listeners\r
+                       if (!self.selectorChangedData[selector]) {\r
+                               self.selectorChangedData[selector] = [];\r
+                       }\r
+\r
+                       self.selectorChangedData[selector].push(callback);\r
+\r
+                       return self;\r
+               },\r
+\r
+               destroy : function(manual) {\r
+                       var self = this;\r
+\r
+                       self.win = null;\r
 \r
                        // Manual destroy then remove unload handler\r
-                       if (!s)\r
-                               tinymce.removeUnload(t.destroy);\r
+                       if (!manual)\r
+                               tinymce.removeUnload(self.destroy);\r
                },\r
 \r
                // IE has an issue where you can't select/move the caret by clicking outside the body if the document is in standards mode\r
                _fixIESelection : function() {\r
                        var dom = this.dom, doc = dom.doc, body = doc.body, started, startRng, htmlElm;\r
 \r
-                       // Make HTML element unselectable since we are going to handle selection by hand\r
-                       doc.documentElement.unselectable = true;\r
-\r
                        // Return range from point or null if it failed\r
                        function rngFromPoint(x, y) {\r
                                var rng = body.createTextRange();\r
@@ -7672,6 +10287,9 @@ window.tinymce.dom.Sizzle = Sizzle;
                                startRng = started = 0;\r
                        };\r
 \r
+                       // Make HTML element unselectable since we are going to handle selection by hand\r
+                       doc.documentElement.unselectable = true;\r
+                       \r
                        // Detect when user selects outside BODY\r
                        dom.bind(doc, ['mousedown', 'contextmenu'], function(e) {\r
                                if (e.target.nodeName === 'HTML') {\r
@@ -7708,12 +10326,11 @@ window.tinymce.dom.Sizzle = Sizzle;
                if (!settings.apply_source_formatting)\r
                        settings.indent = false;\r
 \r
-               settings.remove_trailing_brs = true;\r
-\r
                // Default DOM and Schema if they are undefined\r
                dom = dom || tinymce.DOM;\r
                schema = schema || new tinymce.html.Schema(settings);\r
                settings.entity_encoding = settings.entity_encoding || 'named';\r
+               settings.remove_trailing_brs = "remove_trailing_brs" in settings ? settings.remove_trailing_brs : true;\r
 \r
                onPreProcess = new tinymce.util.Dispatcher(self);\r
 \r
@@ -7747,13 +10364,13 @@ window.tinymce.dom.Sizzle = Sizzle;
                        }\r
                });\r
 \r
-               // Remove internal classes mceItem<..>\r
+               // Remove internal classes mceItem<..> or mceSelected\r
                htmlParser.addAttributeFilter('class', function(nodes, name) {\r
                        var i = nodes.length, node, value;\r
 \r
                        while (i--) {\r
                                node = nodes[i];\r
-                               value = node.attr('class').replace(/\s*mce(Item\w+|Selected)\s*/g, '');\r
+                               value = node.attr('class').replace(/(?:^|\s)mce(Item\w+|Selected)(?!\S)/g, '');\r
                                node.attr('class', value.length > 0 ? value : null);\r
                        }\r
                });\r
@@ -7770,6 +10387,15 @@ window.tinymce.dom.Sizzle = Sizzle;
                        }\r
                });\r
 \r
+               // Remove expando attributes\r
+               htmlParser.addAttributeFilter('data-mce-expando', function(nodes, name, args) {\r
+                       var i = nodes.length;\r
+\r
+                       while (i--) {\r
+                               nodes[i].attr(name, null);\r
+                       }\r
+               });\r
+\r
                // Force script into CDATA sections and remove the mce- prefix also add comments around styles\r
                htmlParser.addNodeFilter('script,style', function(nodes, name) {\r
                        var i = nodes.length, node, value;\r
@@ -7777,8 +10403,8 @@ window.tinymce.dom.Sizzle = Sizzle;
                        function trim(value) {\r
                                return value.replace(/(<!--\[CDATA\[|\]\]-->)/g, '\n')\r
                                                .replace(/^[\r\n]*|[\r\n]*$/g, '')\r
-                                               .replace(/^\s*(\/\/\s*<!--|\/\/\s*<!\[CDATA\[|<!--|<!\[CDATA\[)[\r\n]*/g, '')\r
-                                               .replace(/\s*(\/\/\s*\]\]>|\/\/\s*-->|\]\]>|-->|\]\]-->)\s*$/g, '');\r
+                                               .replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi, '')\r
+                                               .replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g, '');\r
                        };\r
 \r
                        while (i--) {\r
@@ -7876,7 +10502,7 @@ window.tinymce.dom.Sizzle = Sizzle;
 \r
                                // Explorer won't clone contents of script and style and the\r
                                // selected index of select elements are cleared on a clone operation.\r
-                               if (isIE && dom.select('script,style,select').length > 0) {\r
+                               if (isIE && dom.select('script,style,select,map').length > 0) {\r
                                        content = node.innerHTML;\r
                                        node = node.cloneNode(false);\r
                                        dom.setHTML(node, content);\r
@@ -7922,7 +10548,7 @@ window.tinymce.dom.Sizzle = Sizzle;
 \r
                                // Parse and serialize HTML\r
                                args.content = htmlSerializer.serialize(\r
-                                       htmlParser.parse(args.getInner ? node.innerHTML : tinymce.trim(dom.getOuterHTML(node), args), args)\r
+                                       htmlParser.parse(tinymce.trim(args.getInner ? node.innerHTML : dom.getOuterHTML(node)), args)\r
                                );\r
 \r
                                // Replace all BOM characters for now until we can find a better solution\r
@@ -7962,7 +10588,7 @@ window.tinymce.dom.Sizzle = Sizzle;
                        scriptLoadedCallbacks = {},\r
                        queueLoadedCallbacks = [],\r
                        loading = 0,\r
-                       undefined;\r
+                       undef;\r
 \r
                function loadScript(url, callback) {\r
                        var t = this, dom = tinymce.DOM, elm, uri, loc, id;\r
@@ -8021,11 +10647,10 @@ window.tinymce.dom.Sizzle = Sizzle;
                        }\r
 \r
                        // Create new script element\r
-                       elm = dom.create('script', {\r
-                               id : id,\r
-                               type : 'text/javascript',\r
-                               src : tinymce._addVer(url)\r
-                       });\r
+                       elm = document.createElement('script');\r
+                       elm.id = id;\r
+                       elm.type = 'text/javascript';\r
+                       elm.src = tinymce._addVer(url);\r
 \r
                        // Add onload listener for non IE browsers since IE9\r
                        // fires onload event before the script is parsed and executed\r
@@ -8071,7 +10696,7 @@ window.tinymce.dom.Sizzle = Sizzle;
                        var item, state = states[url];\r
 \r
                        // Add url to load queue\r
-                       if (state == undefined) {\r
+                       if (state == undef) {\r
                                queue.push(url);\r
                                states[url] = QUEUED;\r
                        }\r
@@ -8101,7 +10726,7 @@ window.tinymce.dom.Sizzle = Sizzle;
                                        callback.func.call(callback.scope);\r
                                });\r
 \r
-                               scriptLoadedCallbacks[url] = undefined;\r
+                               scriptLoadedCallbacks[url] = undef;\r
                        };\r
 \r
                        queueLoadedCallbacks.push({\r
@@ -8136,67 +10761,27 @@ window.tinymce.dom.Sizzle = Sizzle;
 \r
                                                        // Load more scripts if they where added by the recently loaded script\r
                                                        loadScripts();\r
-                                               });\r
-                                       }\r
-                               });\r
-\r
-                               // No scripts are currently loading then execute all pending queue loaded callbacks\r
-                               if (!loading) {\r
-                                       tinymce.each(queueLoadedCallbacks, function(callback) {\r
-                                               callback.func.call(callback.scope);\r
-                                       });\r
-\r
-                                       queueLoadedCallbacks.length = 0;\r
-                               }\r
-                       };\r
-\r
-                       loadScripts();\r
-               };\r
-       };\r
-\r
-       // Global script loader\r
-       tinymce.ScriptLoader = new tinymce.dom.ScriptLoader();\r
-})(tinymce);\r
-\r
-tinymce.dom.TreeWalker = function(start_node, root_node) {\r
-       var node = start_node;\r
-\r
-       function findSibling(node, start_name, sibling_name, shallow) {\r
-               var sibling, parent;\r
-\r
-               if (node) {\r
-                       // Walk into nodes if it has a start\r
-                       if (!shallow && node[start_name])\r
-                               return node[start_name];\r
+                                               });\r
+                                       }\r
+                               });\r
 \r
-                       // Return the sibling if it has one\r
-                       if (node != root_node) {\r
-                               sibling = node[sibling_name];\r
-                               if (sibling)\r
-                                       return sibling;\r
+                               // No scripts are currently loading then execute all pending queue loaded callbacks\r
+                               if (!loading) {\r
+                                       tinymce.each(queueLoadedCallbacks, function(callback) {\r
+                                               callback.func.call(callback.scope);\r
+                                       });\r
 \r
-                               // Walk up the parents to look for siblings\r
-                               for (parent = node.parentNode; parent && parent != root_node; parent = parent.parentNode) {\r
-                                       sibling = parent[sibling_name];\r
-                                       if (sibling)\r
-                                               return sibling;\r
+                                       queueLoadedCallbacks.length = 0;\r
                                }\r
-                       }\r
-               }\r
-       };\r
-\r
-       this.current = function() {\r
-               return node;\r
-       };\r
+                       };\r
 \r
-       this.next = function(shallow) {\r
-               return (node = findSibling(node, 'firstChild', 'nextSibling', shallow));\r
+                       loadScripts();\r
+               };\r
        };\r
 \r
-       this.prev = function(shallow) {\r
-               return (node = findSibling(node, 'lastChild', 'previousSibling', shallow));\r
-       };\r
-};\r
+       // Global script loader\r
+       tinymce.ScriptLoader = new tinymce.dom.ScriptLoader();\r
+})(tinymce);\r
 \r
 (function(tinymce) {\r
        tinymce.dom.RangeUtils = function(dom) {\r
@@ -8221,6 +10806,24 @@ tinymce.dom.TreeWalker = function(start_node, root_node) {
                                return;\r
                        }\r
 \r
+                       function exclude(nodes) {\r
+                               var node;\r
+\r
+                               // First node is excluded\r
+                               node = nodes[0];\r
+                               if (node.nodeType === 3 && node === startContainer && startOffset >= node.nodeValue.length) {\r
+                                       nodes.splice(0, 1);\r
+                               }\r
+\r
+                               // Last node is excluded\r
+                               node = nodes[nodes.length - 1];\r
+                               if (endOffset === 0 && nodes.length > 0 && node === endContainer && node.nodeType === 3) {\r
+                                       nodes.splice(nodes.length - 1, 1);\r
+                               }\r
+\r
+                               return nodes;\r
+                       };\r
+\r
                        function collectSiblings(node, name, end_node) {\r
                                var siblings = [];\r
 \r
@@ -8250,7 +10853,7 @@ tinymce.dom.TreeWalker = function(start_node, root_node) {
                                                if (!next)\r
                                                        siblings.reverse();\r
 \r
-                                               callback(siblings);\r
+                                               callback(exclude(siblings));\r
                                        }\r
                                }\r
                        };\r
@@ -8263,28 +10866,28 @@ tinymce.dom.TreeWalker = function(start_node, root_node) {
                        if (endContainer.nodeType == 1 && endContainer.hasChildNodes())\r
                                endContainer = endContainer.childNodes[Math.min(endOffset - 1, endContainer.childNodes.length - 1)];\r
 \r
-                       // Find common ancestor and end points\r
-                       ancestor = dom.findCommonAncestor(startContainer, endContainer);\r
-\r
                        // Same container\r
                        if (startContainer == endContainer)\r
-                               return callback([startContainer]);\r
+                               return callback(exclude([startContainer]));\r
 \r
+                       // Find common ancestor and end points\r
+                       ancestor = dom.findCommonAncestor(startContainer, endContainer);\r
+                               \r
                        // Process left side\r
                        for (node = startContainer; node; node = node.parentNode) {\r
-                               if (node == endContainer)\r
+                               if (node === endContainer)\r
                                        return walkBoundary(startContainer, ancestor, true);\r
 \r
-                               if (node == ancestor)\r
+                               if (node === ancestor)\r
                                        break;\r
                        }\r
 \r
                        // Process right side\r
                        for (node = endContainer; node; node = node.parentNode) {\r
-                               if (node == startContainer)\r
+                               if (node === startContainer)\r
                                        return walkBoundary(endContainer, ancestor);\r
 \r
-                               if (node == ancestor)\r
+                               if (node === ancestor)\r
                                        break;\r
                        }\r
 \r
@@ -8303,48 +10906,46 @@ tinymce.dom.TreeWalker = function(start_node, root_node) {
                        );\r
 \r
                        if (siblings.length)\r
-                               callback(siblings);\r
+                               callback(exclude(siblings));\r
 \r
                        // Walk right leaf\r
                        walkBoundary(endContainer, endPoint);\r
                };\r
 \r
-               /*              this.split = function(rng) {\r
+               this.split = function(rng) {\r
                        var startContainer = rng.startContainer,\r
                                startOffset = rng.startOffset,\r
                                endContainer = rng.endContainer,\r
                                endOffset = rng.endOffset;\r
 \r
                        function splitText(node, offset) {\r
-                               if (offset == node.nodeValue.length)\r
-                                       node.appendData(INVISIBLE_CHAR);\r
-\r
-                               node = node.splitText(offset);\r
-\r
-                               if (node.nodeValue === INVISIBLE_CHAR)\r
-                                       node.nodeValue = '';\r
-\r
-                               return node;\r
+                               return node.splitText(offset);\r
                        };\r
 \r
                        // Handle single text node\r
-                       if (startContainer == endContainer) {\r
-                               if (startContainer.nodeType == 3) {\r
-                                       if (startOffset != 0)\r
-                                               startContainer = endContainer = splitText(startContainer, startOffset);\r
-\r
-                                       if (endOffset - startOffset != startContainer.nodeValue.length)\r
-                                               splitText(startContainer, endOffset - startOffset);\r
+                       if (startContainer == endContainer && startContainer.nodeType == 3) {\r
+                               if (startOffset > 0 && startOffset < startContainer.nodeValue.length) {\r
+                                       endContainer = splitText(startContainer, startOffset);\r
+                                       startContainer = endContainer.previousSibling;\r
+\r
+                                       if (endOffset > startOffset) {\r
+                                               endOffset = endOffset - startOffset;\r
+                                               startContainer = endContainer = splitText(endContainer, endOffset).previousSibling;\r
+                                               endOffset = endContainer.nodeValue.length;\r
+                                               startOffset = 0;\r
+                                       } else {\r
+                                               endOffset = 0;\r
+                                       }\r
                                }\r
                        } else {\r
                                // Split startContainer text node if needed\r
-                               if (startContainer.nodeType == 3 && startOffset != 0) {\r
+                               if (startContainer.nodeType == 3 && startOffset > 0 && startOffset < startContainer.nodeValue.length) {\r
                                        startContainer = splitText(startContainer, startOffset);\r
                                        startOffset = 0;\r
                                }\r
 \r
                                // Split endContainer text node if needed\r
-                               if (endContainer.nodeType == 3 && endOffset != endContainer.nodeValue.length) {\r
+                               if (endContainer.nodeType == 3 && endOffset > 0 && endOffset < endContainer.nodeValue.length) {\r
                                        endContainer = splitText(endContainer, endOffset).previousSibling;\r
                                        endOffset = endContainer.nodeValue.length;\r
                                }\r
@@ -8357,7 +10958,7 @@ tinymce.dom.TreeWalker = function(start_node, root_node) {
                                endOffset : endOffset\r
                        };\r
                };\r
-*/\r
+\r
        };\r
 \r
        tinymce.dom.RangeUtils.compareRanges = function(rng1, rng2) {\r
@@ -8413,12 +11014,15 @@ tinymce.dom.TreeWalker = function(start_node, root_node) {
 \r
                        t.destroy = function() {\r
                                each(items, function(item) {\r
-                                       dom.unbind(dom.get(item.id), 'focus', itemFocussed);\r
-                                       dom.unbind(dom.get(item.id), 'blur', itemBlurred);\r
+                                       var elm = dom.get(item.id);\r
+\r
+                                       dom.unbind(elm, 'focus', itemFocussed);\r
+                                       dom.unbind(elm, 'blur', itemBlurred);\r
                                });\r
 \r
-                               dom.unbind(dom.get(root), 'focus', rootFocussed);\r
-                               dom.unbind(dom.get(root), 'keydown', rootKeydown);\r
+                               var rootElm = dom.get(root);\r
+                               dom.unbind(rootElm, 'focus', rootFocussed);\r
+                               dom.unbind(rootElm, 'keydown', rootKeydown);\r
 \r
                                items = dom = root = t.focus = itemFocussed = itemBlurred = rootKeydown = rootFocussed = null;\r
                                t.destroy = function() {};\r
@@ -8497,21 +11101,23 @@ tinymce.dom.TreeWalker = function(start_node, root_node) {
 \r
                        // Set up state and listeners for each item.\r
                        each(items, function(item, idx) {\r
-                               var tabindex;\r
+                               var tabindex, elm;\r
 \r
                                if (!item.id) {\r
                                        item.id = dom.uniqueId('_mce_item_');\r
                                }\r
 \r
+                               elm = dom.get(item.id);\r
+\r
                                if (excludeFromTabOrder) {\r
-                                       dom.bind(item.id, 'blur', itemBlurred);\r
+                                       dom.bind(elm, 'blur', itemBlurred);\r
                                        tabindex = '-1';\r
                                } else {\r
                                        tabindex = (idx === 0 ? '0' : '-1');\r
                                }\r
 \r
-                               dom.setAttrib(item.id, 'tabindex', tabindex);\r
-                               dom.bind(dom.get(item.id), 'focus', itemFocussed);\r
+                               elm.setAttribute('tabindex', tabindex);\r
+                               dom.bind(elm, 'focus', itemFocussed);\r
                        });\r
                        \r
                        // Setup initial state for root element.\r
@@ -8520,13 +11126,15 @@ tinymce.dom.TreeWalker = function(start_node, root_node) {
                        }\r
 \r
                        dom.setAttrib(root, 'tabindex', '-1');\r
-                       \r
+\r
                        // Setup listeners for root element.\r
-                       dom.bind(dom.get(root), 'focus', rootFocussed);\r
-                       dom.bind(dom.get(root), 'keydown', rootKeydown);\r
+                       var rootElm = dom.get(root);\r
+                       dom.bind(rootElm, 'focus', rootFocussed);\r
+                       dom.bind(rootElm, 'keydown', rootKeydown);\r
                }\r
        });\r
 })(tinymce);\r
+\r
 (function(tinymce) {\r
        // Shorten class names\r
        var DOM = tinymce.DOM, is = tinymce.is;\r
@@ -8841,8 +11449,8 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                update : function() {\r
                        var t = this, s = t.settings, tb = DOM.get('menu_' + t.id + '_tbl'), co = DOM.get('menu_' + t.id + '_co'), tw, th;\r
 \r
-                       tw = s.max_width ? Math.min(tb.clientWidth, s.max_width) : tb.clientWidth;\r
-                       th = s.max_height ? Math.min(tb.clientHeight, s.max_height) : tb.clientHeight;\r
+                       tw = s.max_width ? Math.min(tb.offsetWidth, s.max_width) : tb.offsetWidth;\r
+                       th = s.max_height ? Math.min(tb.offsetHeight, s.max_height) : tb.offsetHeight;\r
 \r
                        if (!DOM.boxModel)\r
                                t.element.setStyles({width : tw + 2, height : th + 2});\r
@@ -8932,7 +11540,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                                        if (m.settings.onclick)\r
                                                m.settings.onclick(e);\r
 \r
-                                       return Event.cancel(e); // Cancel to fix onbeforeunload problem\r
+                                       return false; // Cancel to fix onbeforeunload problem\r
                                }\r
                        });\r
 \r
@@ -9062,7 +11670,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                // Internal functions\r
                _setupKeyboardNav : function(){\r
                        var contextMenu, menuItems, t=this; \r
-                       contextMenu = DOM.select('#menu_' + t.id)[0];\r
+                       contextMenu = DOM.get('menu_' + t.id);\r
                        menuItems = DOM.select('a[role=option]', 'menu_' + t.id);\r
                        menuItems.splice(0,0,contextMenu);\r
                        t.keyboardNav = new tinymce.ui.KeyboardNavigation({\r
@@ -9125,8 +11733,12 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
 \r
                        n = DOM.add(n, s.element || 'span', {'class' : 'mceText', title : o.settings.title}, o.settings.title);\r
 \r
-                       if (o.settings.style)\r
+                       if (o.settings.style) {\r
+                               if (typeof o.settings.style == "function")\r
+                                       o.settings.style = o.settings.style();\r
+\r
                                DOM.setAttrib(n, 'style', o.settings.style);\r
+                       }\r
 \r
                        if (tb.childNodes.length == 1)\r
                                DOM.addClass(ro, 'mceFirst');\r
@@ -9158,9 +11770,8 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
 \r
                        l = DOM.encode(s.label || '');\r
                        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) + '">';\r
-\r
-                       if (s.image)\r
-                               h += '<img class="mceIcon" src="' + s.image + '" alt="' + DOM.encode(s.title) + '" />' + l;\r
+                       if (s.image && !(this.editor  &&this.editor.forcedHighContrastMode) )\r
+                               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>' : '');\r
                        else\r
                                h += '<span class="mceIcon ' + s['class'] + '"></span>' + (l ? '<span class="' + cp + 'Label">' + l + '</span>' : '');\r
 \r
@@ -9170,10 +11781,27 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                },\r
 \r
                postRender : function() {\r
-                       var t = this, s = t.settings;\r
-\r
+                       var t = this, s = t.settings, imgBookmark;\r
+\r
+                       // In IE a large image that occupies the entire editor area will be deselected when a button is clicked, so\r
+                       // need to keep the selection in case the selection is lost\r
+                       if (tinymce.isIE && t.editor) {\r
+                               tinymce.dom.Event.add(t.id, 'mousedown', function(e) {\r
+                                       var nodeName = t.editor.selection.getNode().nodeName;\r
+                                       imgBookmark = nodeName === 'IMG' ? t.editor.selection.getBookmark() : null;\r
+                               });\r
+                       }\r
                        tinymce.dom.Event.add(t.id, 'click', function(e) {\r
-                               if (!t.isDisabled())\r
+                               if (!t.isDisabled()) {\r
+                                       // restore the selection in case the selection is lost in IE\r
+                                       if (tinymce.isIE && t.editor && imgBookmark !== null) {\r
+                                               t.editor.selection.moveToBookmark(imgBookmark);\r
+                                       }\r
+                                       return s.onclick.call(s.scope, e);\r
+                               }\r
+                       });\r
+                       tinymce.dom.Event.add(t.id, 'keyup', function(e) {\r
+                               if (!t.isDisabled() && e.keyCode==tinymce.VK.SPACEBAR)\r
                                        return s.onclick.call(s.scope, e);\r
                        });\r
                }\r
@@ -9181,7 +11809,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
 })(tinymce);\r
 \r
 (function(tinymce) {\r
-       var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, Dispatcher = tinymce.util.Dispatcher;\r
+       var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, Dispatcher = tinymce.util.Dispatcher, undef;\r
 \r
        tinymce.create('tinymce.ui.ListBox:tinymce.ui.Control', {\r
                ListBox : function(id, s, ed) {\r
@@ -9200,16 +11828,19 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                        t.onRenderMenu = new tinymce.util.Dispatcher(this);\r
 \r
                        t.classPrefix = 'mceListBox';\r
+                       t.marked = {};\r
                },\r
 \r
                select : function(va) {\r
                        var t = this, fv, f;\r
 \r
-                       if (va == undefined)\r
+                       t.marked = {};\r
+\r
+                       if (va == undef)\r
                                return t.selectByIndex(-1);\r
 \r
                        // Is string or number make function selector\r
-                       if (va && va.call)\r
+                       if (va && typeof(va)=="function")\r
                                f = va;\r
                        else {\r
                                f = function(v) {\r
@@ -9234,20 +11865,25 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                },\r
 \r
                selectByIndex : function(idx) {\r
-                       var t = this, e, o;\r
+                       var t = this, e, o, label;\r
+\r
+                       t.marked = {};\r
 \r
                        if (idx != t.selectedIndex) {\r
                                e = DOM.get(t.id + '_text');\r
+                               label = DOM.get(t.id + '_voiceDesc');\r
                                o = t.items[idx];\r
 \r
                                if (o) {\r
                                        t.selectedValue = o.value;\r
                                        t.selectedIndex = idx;\r
                                        DOM.setHTML(e, DOM.encode(o.title));\r
+                                       DOM.setHTML(label, t.settings.title + " - " + o.title);\r
                                        DOM.removeClass(e, 'mceTitle');\r
                                        DOM.setAttrib(t.id, 'aria-valuenow', o.title);\r
                                } else {\r
                                        DOM.setHTML(e, DOM.encode(t.settings.title));\r
+                                       DOM.setHTML(label, DOM.encode(t.settings.title));\r
                                        DOM.addClass(e, 'mceTitle');\r
                                        t.selectedValue = t.selectedIndex = null;\r
                                        DOM.setAttrib(t.id, 'aria-valuenow', t.settings.title);\r
@@ -9256,6 +11892,10 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                        }\r
                },\r
 \r
+               mark : function(value) {\r
+                       this.marked[value] = true;\r
+               },\r
+\r
                add : function(n, v, o) {\r
                        var t = this;\r
 \r
@@ -9276,7 +11916,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                renderHTML : function() {\r
                        var h = '', t = this, s = t.settings, cp = t.classPrefix;\r
 \r
-                       h = '<span role="button" aria-haspopup="true" aria-labelledby="' + t.id +'_text" 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>';\r
+                       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>';\r
                        h += '<td>' + DOM.createHTML('span', {id: t.id + '_voiceDesc', 'class': 'voiceLabel', style:'display:none;'}, t.settings.title); \r
                        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>';\r
                        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>';\r
@@ -9286,9 +11926,9 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                },\r
 \r
                showMenu : function() {\r
-                       var t = this, p1, p2, e = DOM.get(this.id), m;\r
+                       var t = this, p2, e = DOM.get(this.id), m;\r
 \r
-                       if (t.isDisabled() || t.items.length == 0)\r
+                       if (t.isDisabled() || t.items.length === 0)\r
                                return;\r
 \r
                        if (t.menu && t.menu.isMenuVisible)\r
@@ -9299,7 +11939,6 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                                t.isMenuRendered = true;\r
                        }\r
 \r
-                       p1 = DOM.getPos(this.settings.menu_container);\r
                        p2 = DOM.getPos(e);\r
 \r
                        m = t.menu;\r
@@ -9308,13 +11947,19 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                        m.settings.keyboard_focus = !tinymce.isOpera; // Opera is buggy when it comes to auto focus\r
 \r
                        // Select in menu\r
-                       if (t.oldID)\r
-                               m.items[t.oldID].setSelected(0);\r
+                       each(t.items, function(o) {\r
+                               if (m.items[o.id]) {\r
+                                       m.items[o.id].setSelected(0);\r
+                               }\r
+                       });\r
 \r
                        each(t.items, function(o) {\r
+                               if (m.items[o.id] && t.marked[o.value]) {\r
+                                       m.items[o.id].setSelected(1);\r
+                               }\r
+\r
                                if (o.value === t.selectedValue) {\r
                                        m.items[o.id].setSelected(1);\r
-                                       t.oldID = o.id;\r
                                }\r
                        });\r
 \r
@@ -9350,7 +11995,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                        m = t.settings.control_manager.createDropMenu(t.id + '_menu', {\r
                                menu_line : 1,\r
                                'class' : t.classPrefix + 'Menu mceNoIcons',\r
-                               max_width : 150,\r
+                               max_width : 250,\r
                                max_height : 150\r
                        });\r
 \r
@@ -9370,9 +12015,10 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
 \r
                        each(t.items, function(o) {\r
                                // No value then treat it as a title\r
-                               if (o.value === undefined) {\r
+                               if (o.value === undef) {\r
                                        m.add({\r
                                                title : o.title,\r
+                                               role : "option",\r
                                                'class' : 'mceMenuItemTitle',\r
                                                onclick : function() {\r
                                                        if (t.settings.onselect('') !== false)\r
@@ -9381,6 +12027,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                                        });\r
                                } else {\r
                                        o.id = DOM.uniqueId();\r
+                                       o.role= "option";\r
                                        o.onclick = function() {\r
                                                if (t.settings.onselect(o.value) !== false)\r
                                                        t.select(o.value); // Must be runned after\r
@@ -9456,8 +12103,9 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                }\r
        });\r
 })(tinymce);\r
+\r
 (function(tinymce) {\r
-       var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, Dispatcher = tinymce.util.Dispatcher;\r
+       var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, Dispatcher = tinymce.util.Dispatcher, undef;\r
 \r
        tinymce.create('tinymce.ui.NativeListBox:tinymce.ui.ListBox', {\r
                NativeListBox : function(id, s) {\r
@@ -9477,11 +12125,11 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                select : function(va) {\r
                        var t = this, fv, f;\r
 \r
-                       if (va == undefined)\r
+                       if (va == undef)\r
                                return t.selectByIndex(-1);\r
 \r
                        // Is string or number make function selector\r
-                       if (va && va.call)\r
+                       if (va && typeof(va)=="function")\r
                                f = va;\r
                        else {\r
                                f = function(v) {\r
@@ -9579,6 +12227,11 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                                        Event.remove(t.id, 'blur', bf);\r
                                });\r
 \r
+                               //prevent default left and right keys on chrome - so that the keyboard navigation is used.\r
+                               if (tinymce.isWebKit && (e.keyCode==37 ||e.keyCode==39)) {\r
+                                       return Event.prevent(e);\r
+                               }\r
+                               \r
                                if (e.keyCode == 13 || e.keyCode == 32) {\r
                                        onChange(e);\r
                                        return Event.cancel(e);\r
@@ -9589,6 +12242,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                }\r
        });\r
 })(tinymce);\r
+\r
 (function(tinymce) {\r
        var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each;\r
 \r
@@ -9624,7 +12278,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                        m.settings.vp_offset_x = p2.x;\r
                        m.settings.vp_offset_y = p2.y;\r
                        m.settings.keyboard_focus = t._focused;\r
-                       m.showMenu(0, e.clientHeight);\r
+                       m.showMenu(0, e.firstChild.clientHeight);\r
 \r
                        Event.add(DOM.doc, 'mousedown', t.hideMenu, t);\r
                        t.setState('Selected', 1);\r
@@ -9708,8 +12362,8 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                        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>';\r
 \r
                        h += '</tr></tbody>';\r
-                       h = DOM.createHTML('table', {id : t.id, role: 'presentation', tabindex: '0',  'class' : 'mceSplitButton mceSplitButtonEnabled ' + s['class'], cellpadding : '0', cellspacing : '0', title : s.title}, h);\r
-                       return DOM.createHTML('span', {role: 'button', 'aria-labelledby': t.id + '_voice', 'aria-haspopup': 'true'}, h);\r
+                       h = DOM.createHTML('table', { role: 'presentation',   'class' : 'mceSplitButton mceSplitButtonEnabled ' + s['class'], cellpadding : '0', cellspacing : '0', title : s.title}, h);\r
+                       return DOM.createHTML('div', {id : t.id, role: 'button', tabindex: '0', 'aria-labelledby': t.id + '_voice', 'aria-haspopup': 'true'}, h);\r
                },\r
 \r
                postRender : function() {\r
@@ -9808,7 +12462,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                        p2 = DOM.getPos(e);\r
                        DOM.setStyles(t.id + '_menu', {\r
                                left : p2.x,\r
-                               top : p2.y + e.clientHeight,\r
+                               top : p2.y + e.firstChild.clientHeight,\r
                                zIndex : 200000\r
                        });\r
                        e = 0;\r
@@ -9825,6 +12479,16 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                                DOM.select('a', t.id + '_menu')[0].focus(); // Select first link\r
                        }\r
 \r
+                       t.keyboardNav = new tinymce.ui.KeyboardNavigation({\r
+                               root: t.id + '_menu',\r
+                               items: DOM.select('a', t.id + '_menu'),\r
+                               onCancel: function() {\r
+                                       t.hideMenu();\r
+                                       t.focus();\r
+                               }\r
+                       });\r
+\r
+                       t.keyboardNav.focus();\r
                        t.isMenuVisible = 1;\r
                },\r
 \r
@@ -9844,13 +12508,15 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                                }\r
 \r
                                t.isMenuVisible = 0;\r
+                               t.onHideMenu.dispatch();\r
+                               t.keyboardNav.destroy();\r
                        }\r
                },\r
 \r
                renderMenu : function() {\r
                        var t = this, m, i = 0, s = t.settings, n, tb, tr, w, context;\r
 \r
-                       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;'});\r
+                       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;'});\r
                        m = DOM.add(w, 'div', {'class' : s['class'] + ' mceSplitButtonMenu'});\r
                        DOM.add(m, 'span', {'class' : 'mceMenuLine'});\r
 \r
@@ -9868,15 +12534,21 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                                }\r
 \r
                                n = DOM.add(tr, 'td');\r
-                               n = DOM.add(n, 'a', {\r
-                                       role : 'option',\r
+                               var settings = {\r
                                        href : 'javascript:;',\r
                                        style : {\r
                                                backgroundColor : '#' + c\r
                                        },\r
                                        'title': t.editor.getLang('colors.' + c, c),\r
                                        'data-mce-color' : '#' + c\r
-                               });\r
+                               };\r
+\r
+                               // adding a proper ARIA role = button causes JAWS to read things incorrectly on IE.\r
+                               if (!tinymce.isIE ) {\r
+                                       settings.role = 'option';\r
+                               }\r
+\r
+                               n = DOM.add(n, 'a', settings);\r
 \r
                                if (t.editor.forcedHighContrastMode) {\r
                                        n = DOM.add(n, 'canvas', { width: 16, height: 16, 'aria-hidden': 'true' });\r
@@ -9902,15 +12574,6 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                        }\r
 \r
                        DOM.addClass(m, 'mceColorSplitMenu');\r
-                       \r
-                       new tinymce.ui.KeyboardNavigation({\r
-                               root: t.id + '_menu',\r
-                               items: DOM.select('a', t.id + '_menu'),\r
-                               onCancel: function() {\r
-                                       t.hideMenu();\r
-                                       t.focus();\r
-                               }\r
-                       });\r
 \r
                        // Prevent IE from scrolling and hindering click to occur #4019\r
                        Event.add(t.id + '_menu', 'mousedown', function(e) {return Event.cancel(e);});\r
@@ -9923,7 +12586,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                                if (e && e.nodeName.toLowerCase() == 'a' && (c = e.getAttribute('data-mce-color')))\r
                                        t.setColor(c);\r
 \r
-                               return Event.cancel(e); // Prevent IE auto save warning\r
+                               return false; // Prevent IE auto save warning\r
                        });\r
 \r
                        return w;\r
@@ -9952,11 +12615,17 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                },\r
 \r
                destroy : function() {\r
-                       this.parent();\r
+                       var self = this;\r
+\r
+                       self.parent();\r
 \r
-                       Event.clear(this.id + '_menu');\r
-                       Event.clear(this.id + '_more');\r
-                       DOM.remove(this.id + '_menu');\r
+                       Event.clear(self.id + '_menu');\r
+                       Event.clear(self.id + '_more');\r
+                       DOM.remove(self.id + '_menu');\r
+\r
+                       if (self.keyboardNav) {\r
+                               self.keyboardNav.destroy();\r
+                       }\r
                }\r
        });\r
 })(tinymce);\r
@@ -9982,7 +12651,8 @@ tinymce.create('tinymce.ui.ToolbarGroup:tinymce.ui.Container', {
        },\r
        \r
        focus : function() {\r
-               this.keyNav.focus();\r
+               var t = this;\r
+               dom.get(t.id).focus();\r
        },\r
        \r
        postRender : function() {\r
@@ -10000,6 +12670,10 @@ tinymce.create('tinymce.ui.ToolbarGroup:tinymce.ui.Container', {
                        root: t.id,\r
                        items: items,\r
                        onCancel: function() {\r
+                               //Move focus if webkit so that navigation back will read the item.\r
+                               if (tinymce.isWebKit) {\r
+                                       dom.get(t.editor.id+"_ifr").focus();\r
+                               }\r
                                t.editor.focus();\r
                        },\r
                        excludeFromTabOrder: !t.settings.tab_focus_toolbar\r
@@ -10097,7 +12771,19 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                },\r
 \r
                get : function(n) {\r
-                       return this.lookup[n];\r
+                       if (this.lookup[n]) {\r
+                               return this.lookup[n].instance;\r
+                       } else {\r
+                               return undefined;\r
+                       }\r
+               },\r
+\r
+               dependencies : function(n) {\r
+                       var result;\r
+                       if (this.lookup[n]) {\r
+                               result = this.lookup[n].dependencies;\r
+                       }\r
+                       return result || [];\r
                },\r
 \r
                requireLangPack : function(n) {\r
@@ -10107,27 +12793,61 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                                tinymce.ScriptLoader.add(this.urls[n] + '/langs/' + s.language + '.js');\r
                },\r
 \r
-               add : function(id, o) {\r
+               add : function(id, o, dependencies) {\r
                        this.items.push(o);\r
-                       this.lookup[id] = o;\r
+                       this.lookup[id] = {instance:o, dependencies:dependencies};\r
                        this.onAdd.dispatch(this, id, o);\r
 \r
                        return o;\r
                },\r
+               createUrl: function(baseUrl, dep) {\r
+                       if (typeof dep === "object") {\r
+                               return dep\r
+                       } else {\r
+                               return {prefix: baseUrl.prefix, resource: dep, suffix: baseUrl.suffix};\r
+                       }\r
+               },\r
+\r
+               addComponents: function(pluginName, scripts) {\r
+                       var pluginUrl = this.urls[pluginName];\r
+                       tinymce.each(scripts, function(script){\r
+                               tinymce.ScriptLoader.add(pluginUrl+"/"+script); \r
+                       });\r
+               },\r
 \r
                load : function(n, u, cb, s) {\r
-                       var t = this;\r
+                       var t = this, url = u;\r
+\r
+                       function loadDependencies() {\r
+                               var dependencies = t.dependencies(n);\r
+                               tinymce.each(dependencies, function(dep) {\r
+                                       var newUrl = t.createUrl(u, dep);\r
+                                       t.load(newUrl.resource, newUrl, undefined, undefined);\r
+                               });\r
+                               if (cb) {\r
+                                       if (s) {\r
+                                               cb.call(s);\r
+                                       } else {\r
+                                               cb.call(tinymce.ScriptLoader);\r
+                                       }\r
+                               }\r
+                       }\r
 \r
                        if (t.urls[n])\r
                                return;\r
+                       if (typeof u === "object")\r
+                               url = u.prefix + u.resource + u.suffix;\r
 \r
-                       if (u.indexOf('/') != 0 && u.indexOf('://') == -1)\r
-                               u = tinymce.baseURL + '/' + u;\r
+                       if (url.indexOf('/') !== 0 && url.indexOf('://') == -1)\r
+                               url = tinymce.baseURL + '/' + url;\r
 \r
-                       t.urls[n] = u.substring(0, u.lastIndexOf('/'));\r
+                       t.urls[n] = url.substring(0, url.lastIndexOf('/'));\r
 \r
-                       if (!t.lookup[n])\r
-                               tinymce.ScriptLoader.add(u, cb, s);\r
+                       if (t.lookup[n]) {\r
+                               loadDependencies();\r
+                       } else {\r
+                               tinymce.ScriptLoader.add(url, loadDependencies, s);\r
+                       }\r
                }\r
        });\r
 \r
@@ -10142,7 +12862,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                DOM = tinymce.DOM, Event = tinymce.dom.Event,\r
                ThemeManager = tinymce.ThemeManager, PluginManager = tinymce.PluginManager,\r
                explode = tinymce.explode,\r
-               Dispatcher = tinymce.util.Dispatcher, undefined, instanceCounter = 0;\r
+               Dispatcher = tinymce.util.Dispatcher, undef, instanceCounter = 0;\r
 \r
        // Setup some URLs where the editor API is located and where the document is\r
        tinymce.documentBaseURL = window.location.href.replace(/[\?#].*$/, '').replace(/[\/\\][^\/]+$/, '');\r
@@ -10177,6 +12897,26 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                init : function(s) {\r
                        var t = this, pl, sl = tinymce.ScriptLoader, e, el = [], ed;\r
 \r
+                       function createId(elm) {\r
+                               var id = elm.id;\r
+       \r
+                               // Use element id, or unique name or generate a unique id\r
+                               if (!id) {\r
+                                       id = elm.name;\r
+       \r
+                                       if (id && !DOM.get(id)) {\r
+                                               id = elm.name;\r
+                                       } else {\r
+                                               // Generate unique name\r
+                                               id = DOM.uniqueId();\r
+                                       }\r
+\r
+                                       elm.setAttribute('id', id);\r
+                               }\r
+\r
+                               return id;\r
+                       };\r
+\r
                        function execCallback(se, n, s) {\r
                                var f = se[n];\r
 \r
@@ -10192,15 +12932,14 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                                return f.apply(s || this, Array.prototype.slice.call(arguments, 2));\r
                        };\r
 \r
-                       s = extend({\r
-                               theme : "simple",\r
-                               language : "en"\r
-                       }, s);\r
+                       function hasClass(n, c) {\r
+                               return c.constructor === RegExp ? c.test(n.className) : DOM.hasClass(n, c);\r
+                       };\r
 \r
                        t.settings = s;\r
 \r
                        // Legacy call\r
-                       Event.add(document, 'init', function() {\r
+                       Event.bind(window, 'ready', function() {\r
                                var l, co;\r
 \r
                                execCallback(s, 'onpageload');\r
@@ -10235,30 +12974,36 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
 \r
                                        case "textareas":\r
                                        case "specific_textareas":\r
-                                               function hasClass(n, c) {\r
-                                                       return c.constructor === RegExp ? c.test(n.className) : DOM.hasClass(n, c);\r
-                                               };\r
-\r
-                                               each(DOM.select('textarea'), function(v) {\r
-                                                       if (s.editor_deselector && hasClass(v, s.editor_deselector))\r
+                                               each(DOM.select('textarea'), function(elm) {\r
+                                                       if (s.editor_deselector && hasClass(elm, s.editor_deselector))\r
                                                                return;\r
 \r
-                                                       if (!s.editor_selector || hasClass(v, s.editor_selector)) {\r
-                                                               // Can we use the name\r
-                                                               e = DOM.get(v.name);\r
-                                                               if (!v.id && !e)\r
-                                                                       v.id = v.name;\r
-\r
-                                                               // Generate unique name if missing or already exists\r
-                                                               if (!v.id || t.get(v.id))\r
-                                                                       v.id = DOM.uniqueId();\r
-\r
-                                                               ed = new tinymce.Editor(v.id, s);\r
+                                                       if (!s.editor_selector || hasClass(elm, s.editor_selector)) {\r
+                                                               ed = new tinymce.Editor(createId(elm), s);\r
                                                                el.push(ed);\r
                                                                ed.render(1);\r
                                                        }\r
                                                });\r
                                                break;\r
+                                       \r
+                                       default:\r
+                                               if (s.types) {\r
+                                                       // Process type specific selector\r
+                                                       each(s.types, function(type) {\r
+                                                               each(DOM.select(type.selector), function(elm) {\r
+                                                                       var editor = new tinymce.Editor(createId(elm), tinymce.extend({}, s, type));\r
+                                                                       el.push(editor);\r
+                                                                       editor.render(1);\r
+                                                               });\r
+                                                       });\r
+                                               } else if (s.selector) {\r
+                                                       // Process global selector\r
+                                                       each(DOM.select(s.selector), function(elm) {\r
+                                                               var editor = new tinymce.Editor(createId(elm), s);\r
+                                                               el.push(editor);\r
+                                                               editor.render(1);\r
+                                                       });\r
+                                               }\r
                                }\r
 \r
                                // Call onInit when all editors are initialized\r
@@ -10289,7 +13034,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                },\r
 \r
                get : function(id) {\r
-                       if (id === undefined)\r
+                       if (id === undef)\r
                                return this.editors;\r
 \r
                        return this.editors[id];\r
@@ -10342,6 +13087,12 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                execCommand : function(c, u, v) {\r
                        var t = this, ed = t.get(v), w;\r
 \r
+                       function clr() {\r
+                               ed.destroy();\r
+                               w.detachEvent('onunload', clr);\r
+                               w = w.tinyMCE = w.tinymce = null; // IE leak\r
+                       };\r
+\r
                        // Manager commands\r
                        switch (c) {\r
                                case "mceFocus":\r
@@ -10370,12 +13121,6 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
 \r
                                        // Fix IE memory leaks\r
                                        if (tinymce.isIE) {\r
-                                               function clr() {\r
-                                                       ed.destroy();\r
-                                                       w.detachEvent('onunload', clr);\r
-                                                       w = w.tinyMCE = w.tinymce = null; // IE leak\r
-                                               };\r
-\r
                                                w.attachEvent('onunload', clr);\r
                                        }\r
 \r
@@ -10411,209 +13156,131 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                        return false;\r
                },\r
 \r
-               execInstanceCommand : function(id, c, u, v) {\r
-                       var ed = this.get(id);\r
-\r
-                       if (ed)\r
-                               return ed.execCommand(c, u, v);\r
-\r
-                       return false;\r
-               },\r
-\r
-               triggerSave : function() {\r
-                       each(this.editors, function(e) {\r
-                               e.save();\r
-                       });\r
-               },\r
-\r
-               addI18n : function(p, o) {\r
-                       var lo, i18n = this.i18n;\r
-\r
-                       if (!tinymce.is(p, 'string')) {\r
-                               each(p, function(o, lc) {\r
-                                       each(o, function(o, g) {\r
-                                               each(o, function(o, k) {\r
-                                                       if (g === 'common')\r
-                                                               i18n[lc + '.' + k] = o;\r
-                                                       else\r
-                                                               i18n[lc + '.' + g + '.' + k] = o;\r
-                                               });\r
-                                       });\r
-                               });\r
-                       } else {\r
-                               each(o, function(o, k) {\r
-                                       i18n[p + '.' + k] = o;\r
-                               });\r
-                       }\r
-               },\r
-\r
-               // Private methods\r
-\r
-               _setActive : function(editor) {\r
-                       this.selectedInstance = this.activeEditor = editor;\r
-               }\r
-       });\r
-})(tinymce);\r
-\r
-(function(tinymce) {\r
-       // Shorten these names\r
-       var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend,\r
-               Dispatcher = tinymce.util.Dispatcher, each = tinymce.each, isGecko = tinymce.isGecko,\r
-               isIE = tinymce.isIE, isWebKit = tinymce.isWebKit, is = tinymce.is,\r
-               ThemeManager = tinymce.ThemeManager, PluginManager = tinymce.PluginManager,\r
-               inArray = tinymce.inArray, grep = tinymce.grep, explode = tinymce.explode;\r
-\r
-       tinymce.create('tinymce.Editor', {\r
-               Editor : function(id, s) {\r
-                       var t = this;\r
-\r
-                       t.id = t.editorId = id;\r
-\r
-                       t.execCommands = {};\r
-                       t.queryStateCommands = {};\r
-                       t.queryValueCommands = {};\r
-\r
-                       t.isNotDirty = false;\r
-\r
-                       t.plugins = {};\r
-\r
-                       // Add events to the editor\r
-                       each([\r
-                               'onPreInit',\r
-\r
-                               'onBeforeRenderUI',\r
-\r
-                               'onPostRender',\r
-\r
-                               'onInit',\r
-\r
-                               'onRemove',\r
-\r
-                               'onActivate',\r
-\r
-                               'onDeactivate',\r
-\r
-                               'onClick',\r
-\r
-                               'onEvent',\r
-\r
-                               'onMouseUp',\r
-\r
-                               'onMouseDown',\r
-\r
-                               'onDblClick',\r
-\r
-                               'onKeyDown',\r
-\r
-                               'onKeyUp',\r
-\r
-                               'onKeyPress',\r
-\r
-                               'onContextMenu',\r
-\r
-                               'onSubmit',\r
-\r
-                               'onReset',\r
-\r
-                               'onPaste',\r
-\r
-                               'onPreProcess',\r
-\r
-                               'onPostProcess',\r
-\r
-                               'onBeforeSetContent',\r
-\r
-                               'onBeforeGetContent',\r
-\r
-                               'onSetContent',\r
-\r
-                               'onGetContent',\r
-\r
-                               'onLoadContent',\r
+               execInstanceCommand : function(id, c, u, v) {\r
+                       var ed = this.get(id);\r
 \r
-                               'onSaveContent',\r
+                       if (ed)\r
+                               return ed.execCommand(c, u, v);\r
 \r
-                               'onNodeChange',\r
+                       return false;\r
+               },\r
 \r
-                               'onChange',\r
+               triggerSave : function() {\r
+                       each(this.editors, function(e) {\r
+                               e.save();\r
+                       });\r
+               },\r
 \r
-                               'onBeforeExecCommand',\r
+               addI18n : function(p, o) {\r
+                       var lo, i18n = this.i18n;\r
 \r
-                               'onExecCommand',\r
+                       if (!tinymce.is(p, 'string')) {\r
+                               each(p, function(o, lc) {\r
+                                       each(o, function(o, g) {\r
+                                               each(o, function(o, k) {\r
+                                                       if (g === 'common')\r
+                                                               i18n[lc + '.' + k] = o;\r
+                                                       else\r
+                                                               i18n[lc + '.' + g + '.' + k] = o;\r
+                                               });\r
+                                       });\r
+                               });\r
+                       } else {\r
+                               each(o, function(o, k) {\r
+                                       i18n[p + '.' + k] = o;\r
+                               });\r
+                       }\r
+               },\r
 \r
-                               'onUndo',\r
+               // Private methods\r
 \r
-                               'onRedo',\r
+               _setActive : function(editor) {\r
+                       this.selectedInstance = this.activeEditor = editor;\r
+               }\r
+       });\r
+})(tinymce);\r
 \r
-                               'onVisualAid',\r
+(function(tinymce) {\r
+       // Shorten these names\r
+       var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend,\r
+               each = tinymce.each, isGecko = tinymce.isGecko,\r
+               isIE = tinymce.isIE, isWebKit = tinymce.isWebKit, is = tinymce.is,\r
+               ThemeManager = tinymce.ThemeManager, PluginManager = tinymce.PluginManager,\r
+               explode = tinymce.explode;\r
 \r
-                               'onSetProgressState'\r
-                       ], function(e) {\r
-                               t[e] = new Dispatcher(t);\r
-                       });\r
+       tinymce.create('tinymce.Editor', {\r
+               Editor : function(id, settings) {\r
+                       var self = this, TRUE = true;\r
 \r
-                       t.settings = s = extend({\r
+                       self.settings = settings = extend({\r
                                id : id,\r
                                language : 'en',\r
-                               docs_language : 'en',\r
-                               theme : 'simple',\r
+                               theme : 'advanced',\r
                                skin : 'default',\r
                                delta_width : 0,\r
                                delta_height : 0,\r
                                popup_css : '',\r
                                plugins : '',\r
                                document_base_url : tinymce.documentBaseURL,\r
-                               add_form_submit_trigger : 1,\r
-                               submit_patch : 1,\r
-                               add_unload_trigger : 1,\r
-                               convert_urls : 1,\r
-                               relative_urls : 1,\r
-                               remove_script_host : 1,\r
-                               table_inline_editing : 0,\r
-                               object_resizing : 1,\r
-                               cleanup : 1,\r
-                               accessibility_focus : 1,\r
-                               custom_shortcuts : 1,\r
-                               custom_undo_redo_keyboard_shortcuts : 1,\r
-                               custom_undo_redo_restore_selection : 1,\r
-                               custom_undo_redo : 1,\r
+                               add_form_submit_trigger : TRUE,\r
+                               submit_patch : TRUE,\r
+                               add_unload_trigger : TRUE,\r
+                               convert_urls : TRUE,\r
+                               relative_urls : TRUE,\r
+                               remove_script_host : TRUE,\r
+                               table_inline_editing : false,\r
+                               object_resizing : TRUE,\r
+                               accessibility_focus : TRUE,\r
                                doctype : tinymce.isIE6 ? '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">' : '<!DOCTYPE>', // Use old doctype on IE 6 to avoid horizontal scroll\r
-                               visual_table_class : 'mceItemTable',\r
-                               visual : 1,\r
+                               visual : TRUE,\r
                                font_size_style_values : 'xx-small,x-small,small,medium,large,x-large,xx-large',\r
-                               apply_source_formatting : 1,\r
+                               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\r
+                               apply_source_formatting : TRUE,\r
                                directionality : 'ltr',\r
                                forced_root_block : 'p',\r
-                               hidden_input : 1,\r
-                               padd_empty_editor : 1,\r
-                               render_ui : 1,\r
-                               init_theme : 1,\r
-                               force_p_newlines : 1,\r
+                               hidden_input : TRUE,\r
+                               padd_empty_editor : TRUE,\r
+                               render_ui : TRUE,\r
                                indentation : '30px',\r
-                               keep_styles : 1,\r
-                               fix_table_elements : 1,\r
-                               inline_styles : 1,\r
-                               convert_fonts_to_spans : true,\r
+                               fix_table_elements : TRUE,\r
+                               inline_styles : TRUE,\r
+                               convert_fonts_to_spans : TRUE,\r
                                indent : 'simple',\r
-                               indent_before : 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr',\r
-                               indent_after : 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr',\r
-                               validate : true,\r
+                               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',\r
+                               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',\r
+                               validate : TRUE,\r
                                entity_encoding : 'named',\r
-                               url_converter : t.convertURL,\r
-                               url_converter_scope : t,\r
-                               ie7_compat : true\r
-                       }, s);\r
+                               url_converter : self.convertURL,\r
+                               url_converter_scope : self,\r
+                               ie7_compat : TRUE\r
+                       }, settings);\r
+\r
+                       self.id = self.editorId = id;\r
+\r
+                       self.isNotDirty = false;\r
+\r
+                       self.plugins = {};\r
 \r
-                       t.documentBaseURI = new tinymce.util.URI(s.document_base_url || tinymce.documentBaseURL, {\r
+                       self.documentBaseURI = new tinymce.util.URI(settings.document_base_url || tinymce.documentBaseURL, {\r
                                base_uri : tinyMCE.baseURI\r
                        });\r
 \r
-                       t.baseURI = tinymce.baseURI;\r
+                       self.baseURI = tinymce.baseURI;\r
 \r
-                       t.contentCSS = [];\r
+                       self.contentCSS = [];\r
+\r
+                       self.contentStyles = [];\r
+\r
+                       // Creates all events like onClick, onSetContent etc see Editor.Events.js for the actual logic\r
+                       self.setupEvents();\r
+\r
+                       // Internal command handler objects\r
+                       self.execCommands = {};\r
+                       self.queryStateCommands = {};\r
+                       self.queryValueCommands = {};\r
 \r
                        // Call setup\r
-                       t.execCallback('setup', t);\r
+                       self.execCallback('setup', self);\r
                },\r
 \r
                render : function(nst) {\r
@@ -10621,7 +13288,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
 \r
                        // Page is not loaded yet, wait for it\r
                        if (!Event.domLoaded) {\r
-                               Event.add(document, 'init', function() {\r
+                               Event.add(window, 'ready', function() {\r
                                        t.render();\r
                                });\r
                                return;\r
@@ -10633,16 +13300,21 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                        if (!t.getElement())\r
                                return;\r
 \r
-                       // Is a iPad/iPhone, then skip initialization. We need to sniff here since the\r
-                       // browser says it has contentEditable support but there is no visible caret\r
-                       // We will remove this check ones Apple implements full contentEditable support\r
-                       if (tinymce.isIDevice)\r
+                       // Is a iPad/iPhone and not on iOS5, then skip initialization. We need to sniff \r
+                       // here since the browser says it has contentEditable support but there is no visible caret.\r
+                       if (tinymce.isIDevice && !tinymce.isIOS5)\r
                                return;\r
 \r
                        // Add hidden input for non input elements inside form elements\r
                        if (!/TEXTAREA|INPUT/i.test(t.getElement().nodeName) && s.hidden_input && DOM.getParent(id, 'form'))\r
                                DOM.insertAfter(DOM.create('input', {type : 'hidden', name : id}), id);\r
 \r
+                       // Hide target element early to prevent content flashing\r
+                       if (!s.content_editable) {\r
+                               t.orgVisibility = t.getElement().style.visibility;\r
+                               t.getElement().style.visibility = 'hidden';\r
+                       }\r
+\r
                        if (tinymce.WindowManager)\r
                                t.windowManager = new tinymce.WindowManager(t);\r
 \r
@@ -10704,16 +13376,26 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                                if (s.language && s.language_load !== false)\r
                                        sl.add(tinymce.baseURL + '/langs/' + s.language + '.js');\r
 \r
-                               if (s.theme && s.theme.charAt(0) != '-' && !ThemeManager.urls[s.theme])\r
+                               if (s.theme && typeof s.theme != "function" && s.theme.charAt(0) != '-' && !ThemeManager.urls[s.theme])\r
                                        ThemeManager.load(s.theme, 'themes/' + s.theme + '/editor_template' + tinymce.suffix + '.js');\r
 \r
                                each(explode(s.plugins), function(p) {\r
-                                       if (p && p.charAt(0) != '-' && !PluginManager.urls[p]) {\r
-                                               // Skip safari plugin, since it is removed as of 3.3b1\r
-                                               if (p == 'safari')\r
-                                                       return;\r
-\r
-                                               PluginManager.load(p, 'plugins/' + p + '/editor_plugin' + tinymce.suffix + '.js');\r
+                                       if (p &&!PluginManager.urls[p]) {\r
+                                               if (p.charAt(0) == '-') {\r
+                                                       p = p.substr(1, p.length);\r
+                                                       var dependencies = PluginManager.dependencies(p);\r
+                                                       each(dependencies, function(dep) {\r
+                                                               var defaultSettings = {prefix:'plugins/', resource: dep, suffix:'/editor_plugin' + tinymce.suffix + '.js'};\r
+                                                               dep = PluginManager.createUrl(defaultSettings, dep);\r
+                                                               PluginManager.load(dep.resource, dep);\r
+                                                       });\r
+                                               } else {\r
+                                                       // Skip safari plugin, since it is removed as of 3.3b1\r
+                                                       if (p == 'safari') {\r
+                                                               return;\r
+                                                       }\r
+                                                       PluginManager.load(p, {prefix:'plugins/', resource: p, suffix:'/editor_plugin' + tinymce.suffix + '.js'});\r
+                                               }\r
                                        }\r
                                });\r
 \r
@@ -10728,34 +13410,44 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                },\r
 \r
                init : function() {\r
-                       var n, t = this, s = t.settings, w, h, e = t.getElement(), o, ti, u, bi, bc, re, i;\r
+                       var n, t = this, s = t.settings, w, h, mh, e = t.getElement(), o, ti, u, bi, bc, re, i, initializedPlugins = [];\r
 \r
                        tinymce.add(t);\r
 \r
                        s.aria_label = s.aria_label || DOM.getAttrib(e, 'aria-label', t.getLang('aria.rich_text_area'));\r
 \r
                        if (s.theme) {\r
-                               s.theme = s.theme.replace(/-/, '');\r
-                               o = ThemeManager.get(s.theme);\r
-                               t.theme = new o();\r
+                               if (typeof s.theme != "function") {\r
+                                       s.theme = s.theme.replace(/-/, '');\r
+                                       o = ThemeManager.get(s.theme);\r
+                                       t.theme = new o();\r
 \r
-                               if (t.theme.init && s.init_theme)\r
-                                       t.theme.init(t, ThemeManager.urls[s.theme] || tinymce.documentBaseURL.replace(/\/$/, ''));\r
+                                       if (t.theme.init)\r
+                                               t.theme.init(t, ThemeManager.urls[s.theme] || tinymce.documentBaseURL.replace(/\/$/, ''));\r
+                               } else {\r
+                                       t.theme = s.theme;\r
+                               }\r
                        }\r
 \r
-                       // Create all plugins\r
-                       each(explode(s.plugins.replace(/\-/g, '')), function(p) {\r
+                       function initPlugin(p) {\r
                                var c = PluginManager.get(p), u = PluginManager.urls[p] || tinymce.documentBaseURL.replace(/\/$/, ''), po;\r
-\r
-                               if (c) {\r
+                               if (c && tinymce.inArray(initializedPlugins,p) === -1) {\r
+                                       each(PluginManager.dependencies(p), function(dep){\r
+                                               initPlugin(dep);\r
+                                       });\r
                                        po = new c(t, u);\r
 \r
                                        t.plugins[p] = po;\r
 \r
-                                       if (po.init)\r
+                                       if (po.init) {\r
                                                po.init(t, u);\r
+                                               initializedPlugins.push(p);\r
+                                       }\r
                                }\r
-                       });\r
+                       }\r
+                       \r
+                       // Create all plugins\r
+                       each(explode(s.plugins.replace(/\-/g, '')), initPlugin);\r
 \r
                        // Setup popup CSS path(s)\r
                        if (s.popup_css !== false) {\r
@@ -10770,85 +13462,93 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
 \r
                        t.controlManager = new tinymce.ControlManager(t);\r
 \r
-                       if (s.custom_undo_redo) {\r
-                               t.onBeforeExecCommand.add(function(ed, cmd, ui, val, a) {\r
-                                       if (cmd != 'Undo' && cmd != 'Redo' && cmd != 'mceRepaint' && (!a || !a.skip_undo))\r
-                                               t.undoManager.beforeChange();\r
-                               });\r
-\r
-                               t.onExecCommand.add(function(ed, cmd, ui, val, a) {\r
-                                       if (cmd != 'Undo' && cmd != 'Redo' && cmd != 'mceRepaint' && (!a || !a.skip_undo))\r
-                                               t.undoManager.add();\r
-                               });\r
-                       }\r
-\r
-                       t.onExecCommand.add(function(ed, c) {\r
-                               // Don't refresh the select lists until caret move\r
-                               if (!/^(FontName|FontSize)$/.test(c))\r
-                                       t.nodeChanged();\r
-                       });\r
-\r
-                       // Remove ghost selections on images and tables in Gecko\r
-                       if (isGecko) {\r
-                               function repaint(a, o) {\r
-                                       if (!o || !o.initial)\r
-                                               t.execCommand('mceRepaint');\r
-                               };\r
-\r
-                               t.onUndo.add(repaint);\r
-                               t.onRedo.add(repaint);\r
-                               t.onSetContent.add(repaint);\r
-                       }\r
-\r
                        // Enables users to override the control factory\r
                        t.onBeforeRenderUI.dispatch(t, t.controlManager);\r
 \r
                        // Measure box\r
-                       if (s.render_ui) {\r
-                               w = s.width || e.style.width || e.offsetWidth;\r
-                               h = s.height || e.style.height || e.offsetHeight;\r
+                       if (s.render_ui && t.theme) {\r
                                t.orgDisplay = e.style.display;\r
-                               re = /^[0-9\.]+(|px)$/i;\r
 \r
-                               if (re.test('' + w))\r
-                                       w = Math.max(parseInt(w) + (o.deltaWidth || 0), 100);\r
+                               if (typeof s.theme != "function") {\r
+                                       w = s.width || e.style.width || e.offsetWidth;\r
+                                       h = s.height || e.style.height || e.offsetHeight;\r
+                                       mh = s.min_height || 100;\r
+                                       re = /^[0-9\.]+(|px)$/i;\r
+\r
+                                       if (re.test('' + w))\r
+                                               w = Math.max(parseInt(w, 10) + (o.deltaWidth || 0), 100);\r
+\r
+                                       if (re.test('' + h))\r
+                                               h = Math.max(parseInt(h, 10) + (o.deltaHeight || 0), mh);\r
+\r
+                                       // Render UI\r
+                                       o = t.theme.renderUI({\r
+                                               targetNode : e,\r
+                                               width : w,\r
+                                               height : h,\r
+                                               deltaWidth : s.delta_width,\r
+                                               deltaHeight : s.delta_height\r
+                                       });\r
 \r
-                               if (re.test('' + h))\r
-                                       h = Math.max(parseInt(h) + (o.deltaHeight || 0), 100);\r
+                                       // Resize editor\r
+                                       DOM.setStyles(o.sizeContainer || o.editorContainer, {\r
+                                               width : w,\r
+                                               height : h\r
+                                       });\r
 \r
-                               // Render UI\r
-                               o = t.theme.renderUI({\r
-                                       targetNode : e,\r
-                                       width : w,\r
-                                       height : h,\r
-                                       deltaWidth : s.delta_width,\r
-                                       deltaHeight : s.delta_height\r
-                               });\r
+                                       h = (o.iframeHeight || h) + (typeof(h) == 'number' ? (o.deltaHeight || 0) : '');\r
+                                       if (h < mh)\r
+                                               h = mh;\r
+                               } else {\r
+                                       o = s.theme(t, e);\r
 \r
-                               t.editorContainer = o.editorContainer;\r
-                       }\r
+                                       // Convert element type to id:s\r
+                                       if (o.editorContainer.nodeType) {\r
+                                               o.editorContainer = o.editorContainer.id = o.editorContainer.id || t.id + "_parent";\r
+                                       }\r
 \r
+                                       // Convert element type to id:s\r
+                                       if (o.iframeContainer.nodeType) {\r
+                                               o.iframeContainer = o.iframeContainer.id = o.iframeContainer.id || t.id + "_iframecontainer";\r
+                                       }\r
 \r
-                       // User specified a document.domain value\r
-                       if (document.domain && location.hostname != document.domain)\r
-                               tinymce.relaxedDomain = document.domain;\r
+                                       // Use specified iframe height or the targets offsetHeight\r
+                                       h = o.iframeHeight || e.offsetHeight;\r
 \r
-                       // Resize editor\r
-                       DOM.setStyles(o.sizeContainer || o.editorContainer, {\r
-                               width : w,\r
-                               height : h\r
-                       });\r
+                                       // Store away the selection when it's changed to it can be restored later with a editor.focus() call\r
+                                       if (isIE) {\r
+                                               t.onInit.add(function(ed) {\r
+                                                       ed.dom.bind(ed.getBody(), 'beforedeactivate keydown', function() {\r
+                                                               ed.lastIERng = ed.selection.getRng();\r
+                                                       });\r
+                                               });\r
+                                       }\r
+                               }\r
+\r
+                               t.editorContainer = o.editorContainer;\r
+                       }\r
 \r
                        // Load specified content CSS last\r
                        if (s.content_css) {\r
-                               tinymce.each(explode(s.content_css), function(u) {\r
+                               each(explode(s.content_css), function(u) {\r
                                        t.contentCSS.push(t.documentBaseURI.toAbsolute(u));\r
                                });\r
                        }\r
 \r
-                       h = (o.iframeHeight || h) + (typeof(h) == 'number' ? (o.deltaHeight || 0) : '');\r
-                       if (h < 100)\r
-                               h = 100;\r
+                       // Load specified content CSS last\r
+                       if (s.content_style) {\r
+                               t.contentStyles.push(s.content_style);\r
+                       }\r
+\r
+                       // Content editable mode ends here\r
+                       if (s.content_editable) {\r
+                               e = n = o = null; // Fix IE leak\r
+                               return t.initContentBody();\r
+                       }\r
+\r
+                       // User specified a document.domain value\r
+                       if (document.domain && location.hostname != document.domain)\r
+                               tinymce.relaxedDomain = document.domain;\r
 \r
                        t.iframeHTML = s.doctype + '<html><head xmlns="http://www.w3.org/1999/xhtml">';\r
 \r
@@ -10865,14 +13565,13 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
 \r
                        t.iframeHTML += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';\r
 \r
-                       // Firefox 2 doesn't load stylesheets correctly this way\r
-                       if (!isGecko || !/Firefox\/2/.test(navigator.userAgent)) {\r
-                               for (i = 0; i < t.contentCSS.length; i++)\r
-                                       t.iframeHTML += '<link type="text/css" rel="stylesheet" href="' + t.contentCSS[i] + '" />';\r
-\r
-                               t.contentCSS = [];\r
+                       // Load the CSS by injecting them into the HTML this will reduce "flicker"\r
+                       for (i = 0; i < t.contentCSS.length; i++) {\r
+                               t.iframeHTML += '<link type="text/css" rel="stylesheet" href="' + t.contentCSS[i] + '" />';\r
                        }\r
 \r
+                       t.contentCSS = [];\r
+\r
                        bi = s.body_id || 'tinymce';\r
                        if (bi.indexOf('=') != -1) {\r
                                bi = t.getParam('body_id', '', 'hash');\r
@@ -10885,12 +13584,12 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                                bc = bc[t.id] || '';\r
                        }\r
 \r
-                       t.iframeHTML += '</head><body id="' + bi + '" class="mceContentBody ' + bc + '"></body></html>';\r
+                       t.iframeHTML += '</head><body id="' + bi + '" class="mceContentBody ' + bc + '" onload="window.parent.tinyMCE.get(\'' + t.id + '\').onLoad.dispatch();"><br></body></html>';\r
 \r
                        // Domain relaxing enabled, then set document domain\r
                        if (tinymce.relaxedDomain && (isIE || (tinymce.isOpera && parseFloat(opera.version()) < 11))) {\r
                                // We need to write the contents here in IE since multiple writes messes up refresh button and back button\r
-                               u = 'javascript:(function(){document.open();document.domain="' + document.domain + '";var ed = window.parent.tinyMCE.get("' + t.id + '");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()';                         \r
+                               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();})()';\r
                        }\r
 \r
                        // Create iframe\r
@@ -10898,470 +13597,280 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                        n = DOM.add(o.iframeContainer, 'iframe', { \r
                                id : t.id + "_ifr",\r
                                src : u || 'javascript:""', // Workaround for HTTPS warning in IE6/7\r
-                               frameBorder : '0', \r
+                               frameBorder : '0',\r
+                               allowTransparency : "true",\r
                                title : s.aria_label,\r
                                style : {\r
                                        width : '100%',\r
-                                       height : h\r
+                                       height : h,\r
+                                       display : 'block' // Important for Gecko to render the iframe correctly\r
                                }\r
                        });\r
 \r
                        t.contentAreaContainer = o.iframeContainer;\r
-                       DOM.get(o.editorContainer).style.display = t.orgDisplay;\r
+\r
+                       if (o.editorContainer) {\r
+                               DOM.get(o.editorContainer).style.display = t.orgDisplay;\r
+                       }\r
+\r
+                       // Restore visibility on target element\r
+                       e.style.visibility = t.orgVisibility;\r
+\r
                        DOM.get(t.id).style.display = 'none';\r
                        DOM.setAttrib(t.id, 'aria-hidden', true);\r
 \r
                        if (!tinymce.relaxedDomain || !u)\r
-                               t.setupIframe();\r
+                               t.initContentBody();\r
 \r
                        e = n = o = null; // Cleanup\r
                },\r
 \r
-               setupIframe : function() {\r
-                       var t = this, s = t.settings, e = DOM.get(t.id), d = t.getDoc(), h, b;\r
+               initContentBody : function() {\r
+                       var self = this, settings = self.settings, targetElm = DOM.get(self.id), doc = self.getDoc(), html, body, contentCssText;\r
 \r
                        // Setup iframe body\r
-                       if (!isIE || !tinymce.relaxedDomain) {\r
-                               d.open();\r
-                               d.write(t.iframeHTML);\r
-                               d.close();\r
+                       if ((!isIE || !tinymce.relaxedDomain) && !settings.content_editable) {\r
+                               doc.open();\r
+                               doc.write(self.iframeHTML);\r
+                               doc.close();\r
 \r
                                if (tinymce.relaxedDomain)\r
-                                       d.domain = tinymce.relaxedDomain;\r
+                                       doc.domain = tinymce.relaxedDomain;\r
                        }\r
 \r
-                       // Design mode needs to be added here Ctrl+A will fail otherwise\r
-                       if (!isIE) {\r
-                               try {\r
-                                       if (!s.readonly)\r
-                                               d.designMode = 'On';\r
-                               } catch (ex) {\r
-                                       // Will fail on Gecko if the editor is placed in an hidden container element\r
-                                       // The design mode will be set ones the editor is focused\r
-                               }\r
+                       if (settings.content_editable) {\r
+                               DOM.addClass(targetElm, 'mceContentBody');\r
+                               self.contentDocument = doc = settings.content_document || document;\r
+                               self.contentWindow = settings.content_window || window;\r
+                               self.bodyElement = targetElm;\r
+\r
+                               // Prevent leak in IE\r
+                               settings.content_document = settings.content_window = null;\r
                        }\r
 \r
-                       // IE needs to use contentEditable or it will display non secure items for HTTPS\r
-                       if (isIE) {\r
-                               // It will not steal focus if we hide it while setting contentEditable\r
-                               b = t.getBody();\r
-                               DOM.hide(b);\r
+                       // It will not steal focus while setting contentEditable\r
+                       body = self.getBody();\r
+                       body.disabled = true;\r
 \r
-                               if (!s.readonly)\r
-                                       b.contentEditable = true;\r
+                       if (!settings.readonly)\r
+                               body.contentEditable = self.getParam('content_editable_state', true);\r
 \r
-                               DOM.show(b);\r
-                       }\r
+                       body.disabled = false;\r
 \r
-                       t.schema = new tinymce.html.Schema(s);\r
+                       self.schema = new tinymce.html.Schema(settings);\r
 \r
-                       t.dom = new tinymce.dom.DOMUtils(t.getDoc(), {\r
+                       self.dom = new tinymce.dom.DOMUtils(doc, {\r
                                keep_values : true,\r
-                               url_converter : t.convertURL,\r
-                               url_converter_scope : t,\r
-                               hex_colors : s.force_hex_style_colors,\r
-                               class_filter : s.class_filter,\r
-                               update_styles : 1,\r
-                               fix_ie_paragraphs : 1,\r
-                               schema : t.schema\r
+                               url_converter : self.convertURL,\r
+                               url_converter_scope : self,\r
+                               hex_colors : settings.force_hex_style_colors,\r
+                               class_filter : settings.class_filter,\r
+                               update_styles : true,\r
+                               root_element : settings.content_editable ? self.id : null,\r
+                               schema : self.schema\r
                        });\r
 \r
-                       t.parser = new tinymce.html.DomParser(s, t.schema);\r
-\r
-                       // Force anchor names closed\r
-                       t.parser.addAttributeFilter('name', function(nodes, name) {\r
-                               var i = nodes.length, sibling, prevSibling, parent, node;\r
-\r
-                               while (i--) {\r
-                                       node = nodes[i];\r
-                                       if (node.name === 'a' && node.firstChild) {\r
-                                               parent = node.parent;\r
-\r
-                                               // Move children after current node\r
-                                               sibling = node.lastChild;\r
-                                               do {\r
-                                                       prevSibling = sibling.prev;\r
-                                                       parent.insert(sibling, node);\r
-                                                       sibling = prevSibling;\r
-                                               } while (sibling);\r
-                                       }\r
-                               }\r
-                       });\r
+                       self.parser = new tinymce.html.DomParser(settings, self.schema);\r
 \r
                        // Convert src and href into data-mce-src, data-mce-href and data-mce-style\r
-                       t.parser.addAttributeFilter('src,href,style', function(nodes, name) {\r
-                               var i = nodes.length, node, dom = t.dom, value;\r
-\r
-                               while (i--) {\r
-                                       node = nodes[i];\r
-                                       value = node.attr(name);\r
-\r
-                                       if (name === "style")\r
-                                               node.attr('data-mce-style', dom.serializeStyle(dom.parseStyle(value), node.name));\r
-                                       else\r
-                                               node.attr('data-mce-' + name, t.convertURL(value, name, node.name));\r
-                               }\r
-                       });\r
-\r
-                       // Keep scripts from executing\r
-                       t.parser.addNodeFilter('script', function(nodes, name) {\r
-                               var i = nodes.length;\r
-\r
-                               while (i--)\r
-                                       nodes[i].attr('type', 'mce-text/javascript');\r
-                       });\r
-\r
-                       t.parser.addNodeFilter('#cdata', function(nodes, name) {\r
-                               var i = nodes.length, node;\r
-\r
-                               while (i--) {\r
-                                       node = nodes[i];\r
-                                       node.type = 8;\r
-                                       node.name = '#comment';\r
-                                       node.value = '[CDATA[' + node.value + ']]';\r
-                               }\r
-                       });\r
-\r
-                       t.parser.addNodeFilter('p,h1,h2,h3,h4,h5,h6,div', function(nodes, name) {\r
-                               var i = nodes.length, node, nonEmptyElements = t.schema.getNonEmptyElements();\r
-\r
-                               while (i--) {\r
-                                       node = nodes[i];\r
-\r
-                                       if (node.isEmpty(nonEmptyElements))\r
-                                               node.empty().append(new tinymce.html.Node('br', 1)).shortEnded = true;\r
-                               }\r
-                       });\r
-\r
-                       t.serializer = new tinymce.dom.Serializer(s, t.dom, t.schema);\r
-\r
-                       t.selection = new tinymce.dom.Selection(t.dom, t.getWin(), t.serializer);\r
-\r
-                       t.formatter = new tinymce.Formatter(this);\r
-\r
-                       // Register default formats\r
-                       t.formatter.register({\r
-                               alignleft : [\r
-                                       {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'left'}},\r
-                                       {selector : 'img,table', collapsed : false, styles : {'float' : 'left'}}\r
-                               ],\r
-\r
-                               aligncenter : [\r
-                                       {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'center'}},\r
-                                       {selector : 'img', collapsed : false, styles : {display : 'block', marginLeft : 'auto', marginRight : 'auto'}},\r
-                                       {selector : 'table', collapsed : false, styles : {marginLeft : 'auto', marginRight : 'auto'}}\r
-                               ],\r
-\r
-                               alignright : [\r
-                                       {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'right'}},\r
-                                       {selector : 'img,table', collapsed : false, styles : {'float' : 'right'}}\r
-                               ],\r
-\r
-                               alignfull : [\r
-                                       {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'justify'}}\r
-                               ],\r
-\r
-                               bold : [\r
-                                       {inline : 'strong', remove : 'all'},\r
-                                       {inline : 'span', styles : {fontWeight : 'bold'}},\r
-                                       {inline : 'b', remove : 'all'}\r
-                               ],\r
-\r
-                               italic : [\r
-                                       {inline : 'em', remove : 'all'},\r
-                                       {inline : 'span', styles : {fontStyle : 'italic'}},\r
-                                       {inline : 'i', remove : 'all'}\r
-                               ],\r
-\r
-                               underline : [\r
-                                       {inline : 'span', styles : {textDecoration : 'underline'}, exact : true},\r
-                                       {inline : 'u', remove : 'all'}\r
-                               ],\r
-\r
-                               strikethrough : [\r
-                                       {inline : 'span', styles : {textDecoration : 'line-through'}, exact : true},\r
-                                       {inline : 'strike', remove : 'all'}\r
-                               ],\r
-\r
-                               forecolor : {inline : 'span', styles : {color : '%value'}, wrap_links : false},\r
-                               hilitecolor : {inline : 'span', styles : {backgroundColor : '%value'}, wrap_links : false},\r
-                               fontname : {inline : 'span', styles : {fontFamily : '%value'}},\r
-                               fontsize : {inline : 'span', styles : {fontSize : '%value'}},\r
-                               fontsize_class : {inline : 'span', attributes : {'class' : '%value'}},\r
-                               blockquote : {block : 'blockquote', wrapper : 1, remove : 'all'},\r
-                               subscript : {inline : 'sub'},\r
-                               superscript : {inline : 'sup'},\r
-\r
-                               removeformat : [\r
-                                       {selector : 'b,strong,em,i,font,u,strike', remove : 'all', split : true, expand : false, block_expand : true, deep : true},\r
-                                       {selector : 'span', attributes : ['style', 'class'], remove : 'empty', split : true, expand : false, deep : true},\r
-                                       {selector : '*', attributes : ['style', 'class'], split : false, expand : false, deep : true}\r
-                               ]\r
-                       });\r
-\r
-                       // Register default block formats\r
-                       each('p h1 h2 h3 h4 h5 h6 div address pre div code dt dd samp'.split(/\s/), function(name) {\r
-                               t.formatter.register(name, {block : name, remove : 'all'});\r
-                       });\r
-\r
-                       // Register user defined formats\r
-                       t.formatter.register(t.settings.formats);\r
-\r
-                       t.undoManager = new tinymce.UndoManager(t);\r
-\r
-                       // Pass through\r
-                       t.undoManager.onAdd.add(function(um, l) {\r
-                               if (um.hasUndo())\r
-                                       return t.onChange.dispatch(t, l, um);\r
-                       });\r
-\r
-                       t.undoManager.onUndo.add(function(um, l) {\r
-                               return t.onUndo.dispatch(t, l, um);\r
-                       });\r
-\r
-                       t.undoManager.onRedo.add(function(um, l) {\r
-                               return t.onRedo.dispatch(t, l, um);\r
-                       });\r
-\r
-                       t.forceBlocks = new tinymce.ForceBlocks(t, {\r
-                               forced_root_block : s.forced_root_block\r
-                       });\r
-\r
-                       t.editorCommands = new tinymce.EditorCommands(t);\r
-\r
-                       // Pass through\r
-                       t.serializer.onPreProcess.add(function(se, o) {\r
-                               return t.onPreProcess.dispatch(t, o, se);\r
-                       });\r
-\r
-                       t.serializer.onPostProcess.add(function(se, o) {\r
-                               return t.onPostProcess.dispatch(t, o, se);\r
-                       });\r
-\r
-                       t.onPreInit.dispatch(t);\r
+                       self.parser.addAttributeFilter('src,href,style', function(nodes, name) {\r
+                               var i = nodes.length, node, dom = self.dom, value, internalName;\r
 \r
-                       if (!s.gecko_spellcheck)\r
-                               t.getBody().spellcheck = 0;\r
+                               while (i--) {\r
+                                       node = nodes[i];\r
+                                       value = node.attr(name);\r
+                                       internalName = 'data-mce-' + name;\r
 \r
-                       if (!s.readonly)\r
-                               t._addEvents();\r
+                                       // Add internal attribute if we need to we don't on a refresh of the document\r
+                                       if (!node.attributes.map[internalName]) {       \r
+                                               if (name === "style")\r
+                                                       node.attr(internalName, dom.serializeStyle(dom.parseStyle(value), node.name));\r
+                                               else\r
+                                                       node.attr(internalName, self.convertURL(value, name, node.name));\r
+                                       }\r
+                               }\r
+                       });\r
 \r
-                       t.controlManager.onPostRender.dispatch(t, t.controlManager);\r
-                       t.onPostRender.dispatch(t);\r
+                       // Keep scripts from executing\r
+                       self.parser.addNodeFilter('script', function(nodes, name) {\r
+                               var i = nodes.length, node;\r
 \r
-                       if (s.directionality)\r
-                               t.getBody().dir = s.directionality;\r
+                               while (i--) {\r
+                                       node = nodes[i];\r
+                                       node.attr('type', 'mce-' + (node.attr('type') || 'text/javascript'));\r
+                               }\r
+                       });\r
 \r
-                       if (s.nowrap)\r
-                               t.getBody().style.whiteSpace = "nowrap";\r
+                       self.parser.addNodeFilter('#cdata', function(nodes, name) {\r
+                               var i = nodes.length, node;\r
 \r
-                       if (s.handle_node_change_callback) {\r
-                               t.onNodeChange.add(function(ed, cm, n) {\r
-                                       t.execCallback('handle_node_change_callback', t.id, n, -1, -1, true, t.selection.isCollapsed());\r
-                               });\r
-                       }\r
+                               while (i--) {\r
+                                       node = nodes[i];\r
+                                       node.type = 8;\r
+                                       node.name = '#comment';\r
+                                       node.value = '[CDATA[' + node.value + ']]';\r
+                               }\r
+                       });\r
 \r
-                       if (s.save_callback) {\r
-                               t.onSaveContent.add(function(ed, o) {\r
-                                       var h = t.execCallback('save_callback', t.id, o.content, t.getBody());\r
+                       self.parser.addNodeFilter('p,h1,h2,h3,h4,h5,h6,div', function(nodes, name) {\r
+                               var i = nodes.length, node, nonEmptyElements = self.schema.getNonEmptyElements();\r
 \r
-                                       if (h)\r
-                                               o.content = h;\r
-                               });\r
-                       }\r
+                               while (i--) {\r
+                                       node = nodes[i];\r
 \r
-                       if (s.onchange_callback) {\r
-                               t.onChange.add(function(ed, l) {\r
-                                       t.execCallback('onchange_callback', t, l);\r
-                               });\r
-                       }\r
+                                       if (node.isEmpty(nonEmptyElements))\r
+                                               node.empty().append(new tinymce.html.Node('br', 1)).shortEnded = true;\r
+                               }\r
+                       });\r
 \r
-                       if (s.protect) {\r
-                               t.onBeforeSetContent.add(function(ed, o) {\r
-                                       if (s.protect) {\r
-                                               each(s.protect, function(pattern) {\r
-                                                       o.content = o.content.replace(pattern, function(str) {\r
-                                                               return '<!--mce:protected ' + escape(str) + '-->';\r
-                                                       });\r
-                                               });\r
-                                       }\r
-                               });\r
-                       }\r
+                       self.serializer = new tinymce.dom.Serializer(settings, self.dom, self.schema);\r
 \r
-                       if (s.convert_newlines_to_brs) {\r
-                               t.onBeforeSetContent.add(function(ed, o) {\r
-                                       if (o.initial)\r
-                                               o.content = o.content.replace(/\r?\n/g, '<br />');\r
-                               });\r
-                       }\r
+                       self.selection = new tinymce.dom.Selection(self.dom, self.getWin(), self.serializer, self);\r
 \r
-                       if (s.preformatted) {\r
-                               t.onPostProcess.add(function(ed, o) {\r
-                                       o.content = o.content.replace(/^\s*<pre.*?>/, '');\r
-                                       o.content = o.content.replace(/<\/pre>\s*$/, '');\r
+                       self.formatter = new tinymce.Formatter(self);\r
 \r
-                                       if (o.set)\r
-                                               o.content = '<pre class="mceItemHidden">' + o.content + '</pre>';\r
-                               });\r
-                       }\r
+                       self.undoManager = new tinymce.UndoManager(self);\r
 \r
-                       if (s.verify_css_classes) {\r
-                               t.serializer.attribValueFilter = function(n, v) {\r
-                                       var s, cl;\r
+                       self.forceBlocks = new tinymce.ForceBlocks(self);\r
+                       self.enterKey = new tinymce.EnterKey(self);\r
+                       self.editorCommands = new tinymce.EditorCommands(self);\r
 \r
-                                       if (n == 'class') {\r
-                                               // Build regexp for classes\r
-                                               if (!t.classesRE) {\r
-                                                       cl = t.dom.getClasses();\r
+                       self.onExecCommand.add(function(editor, command) {\r
+                               // Don't refresh the select lists until caret move\r
+                               if (!/^(FontName|FontSize)$/.test(command))\r
+                                       self.nodeChanged();\r
+                       });\r
 \r
-                                                       if (cl.length > 0) {\r
-                                                               s = '';\r
+                       // Pass through\r
+                       self.serializer.onPreProcess.add(function(se, o) {\r
+                               return self.onPreProcess.dispatch(self, o, se);\r
+                       });\r
 \r
-                                                               each (cl, function(o) {\r
-                                                                       s += (s ? '|' : '') + o['class'];\r
-                                                               });\r
+                       self.serializer.onPostProcess.add(function(se, o) {\r
+                               return self.onPostProcess.dispatch(self, o, se);\r
+                       });\r
 \r
-                                                               t.classesRE = new RegExp('(' + s + ')', 'gi');\r
-                                                       }\r
-                                               }\r
+                       self.onPreInit.dispatch(self);\r
 \r
-                                               return !t.classesRE || /(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(v) || t.classesRE.test(v) ? v : '';\r
-                                       }\r
+                       if (!settings.browser_spellcheck && !settings.gecko_spellcheck)\r
+                               doc.body.spellcheck = false;\r
 \r
-                                       return v;\r
-                               };\r
+                       if (!settings.readonly) {\r
+                               self.bindNativeEvents();\r
                        }\r
 \r
-                       if (s.cleanup_callback) {\r
-                               t.onBeforeSetContent.add(function(ed, o) {\r
-                                       o.content = t.execCallback('cleanup_callback', 'insert_to_editor', o.content, o);\r
-                               });\r
-\r
-                               t.onPreProcess.add(function(ed, o) {\r
-                                       if (o.set)\r
-                                               t.execCallback('cleanup_callback', 'insert_to_editor_dom', o.node, o);\r
-\r
-                                       if (o.get)\r
-                                               t.execCallback('cleanup_callback', 'get_from_editor_dom', o.node, o);\r
-                               });\r
+                       self.controlManager.onPostRender.dispatch(self, self.controlManager);\r
+                       self.onPostRender.dispatch(self);\r
 \r
-                               t.onPostProcess.add(function(ed, o) {\r
-                                       if (o.set)\r
-                                               o.content = t.execCallback('cleanup_callback', 'insert_to_editor', o.content, o);\r
+                       self.quirks = tinymce.util.Quirks(self);\r
 \r
-                                       if (o.get)                                              \r
-                                               o.content = t.execCallback('cleanup_callback', 'get_from_editor', o.content, o);\r
-                               });\r
-                       }\r
+                       if (settings.directionality)\r
+                               body.dir = settings.directionality;\r
 \r
-                       if (s.save_callback) {\r
-                               t.onGetContent.add(function(ed, o) {\r
-                                       if (o.save)\r
-                                               o.content = t.execCallback('save_callback', t.id, o.content, t.getBody());\r
-                               });\r
-                       }\r
+                       if (settings.nowrap)\r
+                               body.style.whiteSpace = "nowrap";\r
 \r
-                       if (s.handle_event_callback) {\r
-                               t.onEvent.add(function(ed, e, o) {\r
-                                       if (t.execCallback('handle_event_callback', e, ed, o) === false)\r
-                                               Event.cancel(e);\r
+                       if (settings.protect) {\r
+                               self.onBeforeSetContent.add(function(ed, o) {\r
+                                       each(settings.protect, function(pattern) {\r
+                                               o.content = o.content.replace(pattern, function(str) {\r
+                                                       return '<!--mce:protected ' + escape(str) + '-->';\r
+                                               });\r
+                                       });\r
                                });\r
                        }\r
 \r
                        // Add visual aids when new contents is added\r
-                       t.onSetContent.add(function() {\r
-                               t.addVisual(t.getBody());\r
+                       self.onSetContent.add(function() {\r
+                               self.addVisual(self.getBody());\r
                        });\r
 \r
                        // Remove empty contents\r
-                       if (s.padd_empty_editor) {\r
-                               t.onPostProcess.add(function(ed, o) {\r
+                       if (settings.padd_empty_editor) {\r
+                               self.onPostProcess.add(function(ed, o) {\r
                                        o.content = o.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/, '');\r
                                });\r
                        }\r
 \r
-                       if (isGecko) {\r
-                               // Fix gecko link bug, when a link is placed at the end of block elements there is\r
-                               // no way to move the caret behind the link. This fix adds a bogus br element after the link\r
-                               function fixLinks(ed, o) {\r
-                                       each(ed.dom.select('a'), function(n) {\r
-                                               var pn = n.parentNode;\r
-\r
-                                               if (ed.dom.isBlock(pn) && pn.lastChild === n)\r
-                                                       ed.dom.add(pn, 'br', {'data-mce-bogus' : 1});\r
-                                       });\r
-                               };\r
+                       self.load({initial : true, format : 'html'});\r
+                       self.startContent = self.getContent({format : 'raw'});\r
 \r
-                               t.onExecCommand.add(function(ed, cmd) {\r
-                                       if (cmd === 'CreateLink')\r
-                                               fixLinks(ed);\r
-                               });\r
+                       self.initialized = true;\r
 \r
-                               t.onSetContent.add(t.selection.onSetContent.add(fixLinks));\r
+                       self.onInit.dispatch(self);\r
+                       self.execCallback('setupcontent_callback', self.id, body, doc);\r
+                       self.execCallback('init_instance_callback', self);\r
+                       self.focus(true);\r
+                       self.nodeChanged({initial : true});\r
 \r
-                               if (!s.readonly) {\r
-                                       try {\r
-                                               // Design mode must be set here once again to fix a bug where\r
-                                               // Ctrl+A/Delete/Backspace didn't work if the editor was added using mceAddControl then removed then added again\r
-                                               d.designMode = 'Off';\r
-                                               d.designMode = 'On';\r
-                                       } catch (ex) {\r
-                                               // Will fail on Gecko if the editor is placed in an hidden container element\r
-                                               // The design mode will be set ones the editor is focused\r
-                                       }\r
-                               }\r
-                       }\r
+                       // Add editor specific CSS styles\r
+                       if (self.contentStyles.length > 0) {\r
+                               contentCssText = '';\r
 \r
-                       // A small timeout was needed since firefox will remove. Bug: #1838304\r
-                       setTimeout(function () {\r
-                               if (t.removed)\r
-                                       return;\r
+                               each(self.contentStyles, function(style) {\r
+                                       contentCssText += style + "\r\n";\r
+                               });\r
 \r
-                               t.load({initial : true, format : 'html'});\r
-                               t.startContent = t.getContent({format : 'raw'});\r
-                               t.undoManager.add();\r
-                               t.initialized = true;\r
+                               self.dom.addStyle(contentCssText);\r
+                       }\r
 \r
-                               t.onInit.dispatch(t);\r
-                               t.execCallback('setupcontent_callback', t.id, t.getBody(), t.getDoc());\r
-                               t.execCallback('init_instance_callback', t);\r
-                               t.focus(true);\r
-                               t.nodeChanged({initial : 1});\r
+                       // Load specified content CSS last\r
+                       each(self.contentCSS, function(url) {\r
+                               self.dom.loadCSS(url);\r
+                       });\r
 \r
-                               // Load specified content CSS last\r
-                               each(t.contentCSS, function(u) {\r
-                                       t.dom.loadCSS(u);\r
-                               });\r
+                       // Handle auto focus\r
+                       if (settings.auto_focus) {\r
+                               setTimeout(function () {\r
+                                       var ed = tinymce.get(settings.auto_focus);\r
 \r
-                               // Handle auto focus\r
-                               if (s.auto_focus) {\r
-                                       setTimeout(function () {\r
-                                               var ed = tinymce.get(s.auto_focus);\r
+                                       ed.selection.select(ed.getBody(), 1);\r
+                                       ed.selection.collapse(1);\r
+                                       ed.getBody().focus();\r
+                                       ed.getWin().focus();\r
+                               }, 100);\r
+                       }\r
 \r
-                                               ed.selection.select(ed.getBody(), 1);\r
-                                               ed.selection.collapse(1);\r
-                                               ed.getWin().focus();\r
-                                       }, 100);\r
-                               }\r
-                       }, 1);\r
-       \r
-                       e = null;\r
+                       // Clean up references for IE\r
+                       targetElm = doc = body = null;\r
                },\r
 \r
+               focus : function(skip_focus) {\r
+                       var oed, self = this, selection = self.selection, contentEditable = self.settings.content_editable, ieRng, controlElm, doc = self.getDoc(), body;\r
 \r
-               focus : function(sf) {\r
-                       var oed, t = this, ce = t.settings.content_editable, ieRng, controlElm, doc = t.getDoc();\r
+                       if (!skip_focus) {\r
+                               if (self.lastIERng) {\r
+                                       selection.setRng(self.lastIERng);\r
+                               }\r
 \r
-                       if (!sf) {\r
                                // Get selected control element\r
-                               ieRng = t.selection.getRng();\r
+                               ieRng = selection.getRng();\r
                                if (ieRng.item) {\r
                                        controlElm = ieRng.item(0);\r
                                }\r
 \r
-                               // Is not content editable\r
-                               if (!ce)\r
-                                       t.getWin().focus();\r
+                               self._refreshContentEditable();\r
+\r
+                               // Focus the window iframe\r
+                               if (!contentEditable) {\r
+                                       self.getWin().focus();\r
+                               }\r
+\r
+                               // Focus the body as well since it's contentEditable\r
+                               if (tinymce.isGecko || contentEditable) {\r
+                                       body = self.getBody();\r
+\r
+                                       // Check for setActive since it doesn't scroll to the element\r
+                                       if (body.setActive) {\r
+                                               body.setActive();\r
+                                       } else {\r
+                                               body.focus();\r
+                                       }\r
+\r
+                                       if (contentEditable) {\r
+                                               selection.normalize();\r
+                                       }\r
+                               }\r
 \r
                                // Restore selected control element\r
                                // This is needed when for example an image is selected within a\r
@@ -11371,17 +13880,16 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                                        ieRng.addElement(controlElm);\r
                                        ieRng.select();\r
                                }\r
-\r
                        }\r
 \r
-                       if (tinymce.activeEditor != t) {\r
+                       if (tinymce.activeEditor != self) {\r
                                if ((oed = tinymce.activeEditor) != null)\r
-                                       oed.onDeactivate.dispatch(oed, t);\r
+                                       oed.onDeactivate.dispatch(oed, self);\r
 \r
-                               t.onActivate.dispatch(t, oed);\r
+                               self.onActivate.dispatch(self, oed);\r
                        }\r
 \r
-                       tinymce._setActive(t);\r
+                       tinymce._setActive(self);\r
                },\r
 \r
                execCallback : function(n) {\r
@@ -11413,7 +13921,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                        if (!s)\r
                                return '';\r
 \r
-                       return i18n[c + '.' + s] || s.replace(/{\#([^}]+)\}/g, function(a, b) {\r
+                       return i18n[c + '.' + s] || s.replace(/\{\#([^\}]+)\}/g, function(a, b) {\r
                                return i18n[c + '.' + b] || '{#' + b + '}';\r
                        });\r
                },\r
@@ -11447,37 +13955,40 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                },\r
 \r
                nodeChanged : function(o) {\r
-                       var t = this, s = t.selection, n = s.getStart() || t.getBody();\r
+                       var self = this, selection = self.selection, node;\r
 \r
                        // Fix for bug #1896577 it seems that this can not be fired while the editor is loading\r
-                       if (t.initialized) {\r
+                       if (self.initialized) {\r
                                o = o || {};\r
-                               n = isIE && n.ownerDocument != t.getDoc() ? t.getBody() : n; // Fix for IE initial state\r
+\r
+                               // Get start node\r
+                               node = selection.getStart() || self.getBody();\r
+                               node = isIE && node.ownerDocument != self.getDoc() ? self.getBody() : node; // Fix for IE initial state\r
 \r
                                // Get parents and add them to object\r
                                o.parents = [];\r
-                               t.dom.getParent(n, function(node) {\r
+                               self.dom.getParent(node, function(node) {\r
                                        if (node.nodeName == 'BODY')\r
                                                return true;\r
 \r
                                        o.parents.push(node);\r
                                });\r
 \r
-                               t.onNodeChange.dispatch(\r
-                                       t,\r
-                                       o ? o.controlManager || t.controlManager : t.controlManager,\r
-                                       n,\r
-                                       s.isCollapsed(),\r
+                               self.onNodeChange.dispatch(\r
+                                       self,\r
+                                       o ? o.controlManager || self.controlManager : self.controlManager,\r
+                                       node,\r
+                                       selection.isCollapsed(),\r
                                        o\r
                                );\r
                        }\r
                },\r
 \r
-               addButton : function(ns) {\r
-                       var t = this;\r
+               addButton : function(name, settings) {\r
+                       var self = this;\r
 \r
-                       t.buttons = t.buttons || {};\r
-                       t.buttons[n] = s;\r
+                       self.buttons = self.buttons || {};\r
+                       self.buttons[name] = settings;\r
                },\r
 \r
                addCommand : function(name, callback, scope) {\r
@@ -11495,7 +14006,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                addShortcut : function(pa, desc, cmd_func, sc) {\r
                        var t = this, c;\r
 \r
-                       if (!t.settings.custom_shortcuts)\r
+                       if (t.settings.custom_shortcuts === false)\r
                                return false;\r
 \r
                        t.shortcuts = t.shortcuts || {};\r
@@ -11520,7 +14031,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                                var o = {\r
                                        func : cmd_func,\r
                                        scope : sc || this,\r
-                                       desc : desc,\r
+                                       desc : t.translate(desc),\r
                                        alt : false,\r
                                        ctrl : false,\r
                                        shift : false\r
@@ -11552,9 +14063,9 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                        if (!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(cmd) && (!a || !a.skip_focus))\r
                                t.focus();\r
 \r
-                       o = {};\r
-                       t.onBeforeExecCommand.dispatch(t, cmd, ui, val, o);\r
-                       if (o.terminate)\r
+                       a = extend({}, a);\r
+                       t.onBeforeExecCommand.dispatch(t, cmd, ui, val, a);\r
+                       if (a.terminate)\r
                                return false;\r
 \r
                        // Command callback\r
@@ -11662,24 +14173,24 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                },\r
 \r
                show : function() {\r
-                       var t = this;\r
+                       var self = this;\r
 \r
-                       DOM.show(t.getContainer());\r
-                       DOM.hide(t.id);\r
-                       t.load();\r
+                       DOM.show(self.getContainer());\r
+                       DOM.hide(self.id);\r
+                       self.load();\r
                },\r
 \r
                hide : function() {\r
-                       var t = this, d = t.getDoc();\r
+                       var self = this, doc = self.getDoc();\r
 \r
                        // Fixed bug where IE has a blinking cursor left from the editor\r
-                       if (isIE && d)\r
-                               d.execCommand('SelectAll');\r
+                       if (isIE && doc)\r
+                               doc.execCommand('SelectAll');\r
 \r
                        // We must save before we hide so Safari doesn't crash\r
-                       t.save();\r
-                       DOM.hide(t.getContainer());\r
-                       DOM.setStyle(t.id, 'display', t.orgDisplay);\r
+                       self.save();\r
+                       DOM.hide(self.getContainer());\r
+                       DOM.setStyle(self.id, 'display', self.orgDisplay);\r
                },\r
 \r
                isHidden : function() {\r
@@ -11721,12 +14232,6 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                        o = o || {};\r
                        o.save = true;\r
 \r
-                       // Add undo level will trigger onchange event\r
-                       if (!o.no_events) {\r
-                               t.undoManager.typing = false;\r
-                               t.undoManager.add();\r
-                       }\r
-\r
                        o.element = e;\r
                        h = o.content = t.getContent(o);\r
 \r
@@ -11756,7 +14261,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                },\r
 \r
                setContent : function(content, args) {\r
-                       var self = this, rootNode, body = self.getBody();\r
+                       var self = this, rootNode, body = self.getBody(), forcedRootBlockName;\r
 \r
                        // Setup args object\r
                        args = args || {};\r
@@ -11773,7 +14278,15 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                        // Padd empty content in Gecko and Safari. Commands will otherwise fail on the content\r
                        // It will also be impossible to place the caret in the editor unless there is a BR element present\r
                        if (!tinymce.isIE && (content.length === 0 || /^\s+$/.test(content))) {\r
-                               body.innerHTML = '<br data-mce-bogus="1" />';\r
+                               forcedRootBlockName = self.settings.forced_root_block;\r
+                               if (forcedRootBlockName)\r
+                                       content = '<' + forcedRootBlockName + '><br data-mce-bogus="1"></' + forcedRootBlockName + '>';\r
+                               else\r
+                                       content = '<br data-mce-bogus="1">';\r
+\r
+                               body.innerHTML = content;\r
+                               self.selection.select(body, true);\r
+                               self.selection.collapse(true);\r
                                return;\r
                        }\r
 \r
@@ -11792,16 +14305,22 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                        if (!args.no_events)\r
                                self.onSetContent.dispatch(self, args);\r
 \r
+                       // Don't normalize selection if the focused element isn't the body in content editable mode since it will steal focus otherwise\r
+                       if (!self.settings.content_editable || document.activeElement === self.getBody()) {\r
+                               self.selection.normalize();\r
+                       }\r
+\r
                        return args.content;\r
                },\r
 \r
                getContent : function(args) {\r
-                       var self = this, content;\r
+                       var self = this, content, body = self.getBody();\r
 \r
                        // Setup args object\r
                        args = args || {};\r
                        args.format = args.format || 'html';\r
                        args.get = true;\r
+                       args.getInner = true;\r
 \r
                        // Do preprocessing\r
                        if (!args.no_events)\r
@@ -11809,11 +14328,18 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
 \r
                        // Get raw contents or by default the cleaned contents\r
                        if (args.format == 'raw')\r
-                               content = self.getBody().innerHTML;\r
+                               content = body.innerHTML;\r
+                       else if (args.format == 'text')\r
+                               content = body.innerText || body.textContent;\r
                        else\r
-                               content = self.serializer.serialize(self.getBody(), args);\r
+                               content = self.serializer.serialize(body, args);\r
 \r
-                       args.content = tinymce.trim(content);\r
+                       // Trim whitespace in beginning/end of HTML\r
+                       if (args.format != 'text') {\r
+                               args.content = tinymce.trim(content);\r
+                       } else {\r
+                               args.content = content;\r
+                       }\r
 \r
                        // Do post processing\r
                        if (!args.no_events)\r
@@ -11829,12 +14355,12 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                },\r
 \r
                getContainer : function() {\r
-                       var t = this;\r
+                       var self = this;\r
 \r
-                       if (!t.container)\r
-                               t.container = DOM.get(t.editorContainer || t.id + '_parent');\r
+                       if (!self.container)\r
+                               self.container = DOM.get(self.editorContainer || self.id + '_parent');\r
 \r
-                       return t.container;\r
+                       return self.container;\r
                },\r
 \r
                getContentAreaContainer : function() {\r
@@ -11846,111 +14372,127 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                },\r
 \r
                getWin : function() {\r
-                       var t = this, e;\r
+                       var self = this, elm;\r
 \r
-                       if (!t.contentWindow) {\r
-                               e = DOM.get(t.id + "_ifr");\r
+                       if (!self.contentWindow) {\r
+                               elm = DOM.get(self.id + "_ifr");\r
 \r
-                               if (e)\r
-                                       t.contentWindow = e.contentWindow;\r
+                               if (elm)\r
+                                       self.contentWindow = elm.contentWindow;\r
                        }\r
 \r
-                       return t.contentWindow;\r
+                       return self.contentWindow;\r
                },\r
 \r
                getDoc : function() {\r
-                       var t = this, w;\r
+                       var self = this, win;\r
 \r
-                       if (!t.contentDocument) {\r
-                               w = t.getWin();\r
+                       if (!self.contentDocument) {\r
+                               win = self.getWin();\r
 \r
-                               if (w)\r
-                                       t.contentDocument = w.document;\r
+                               if (win)\r
+                                       self.contentDocument = win.document;\r
                        }\r
 \r
-                       return t.contentDocument;\r
+                       return self.contentDocument;\r
                },\r
 \r
                getBody : function() {\r
                        return this.bodyElement || this.getDoc().body;\r
                },\r
 \r
-               convertURL : function(u, n, e) {\r
-                       var t = this, s = t.settings;\r
+               convertURL : function(url, name, elm) {\r
+                       var self = this, settings = self.settings;\r
 \r
                        // Use callback instead\r
-                       if (s.urlconverter_callback)\r
-                               return t.execCallback('urlconverter_callback', u, e, true, n);\r
+                       if (settings.urlconverter_callback)\r
+                               return self.execCallback('urlconverter_callback', url, elm, true, name);\r
 \r
                        // Don't convert link href since thats the CSS files that gets loaded into the editor also skip local file URLs\r
-                       if (!s.convert_urls || (e && e.nodeName == 'LINK') || u.indexOf('file:') === 0)\r
-                               return u;\r
+                       if (!settings.convert_urls || (elm && elm.nodeName == 'LINK') || url.indexOf('file:') === 0)\r
+                               return url;\r
 \r
                        // Convert to relative\r
-                       if (s.relative_urls)\r
-                               return t.documentBaseURI.toRelative(u);\r
+                       if (settings.relative_urls)\r
+                               return self.documentBaseURI.toRelative(url);\r
 \r
                        // Convert to absolute\r
-                       u = t.documentBaseURI.toAbsolute(u, s.remove_script_host);\r
+                       url = self.documentBaseURI.toAbsolute(url, settings.remove_script_host);\r
 \r
-                       return u;\r
+                       return url;\r
                },\r
 \r
-               addVisual : function(e) {\r
-                       var t = this, s = t.settings;\r
+               addVisual : function(elm) {\r
+                       var self = this, settings = self.settings, dom = self.dom, cls;\r
 \r
-                       e = e || t.getBody();\r
+                       elm = elm || self.getBody();\r
 \r
-                       if (!is(t.hasVisual))\r
-                               t.hasVisual = s.visual;\r
+                       if (!is(self.hasVisual))\r
+                               self.hasVisual = settings.visual;\r
 \r
-                       each(t.dom.select('table,a', e), function(e) {\r
-                               var v;\r
+                       each(dom.select('table,a', elm), function(elm) {\r
+                               var value;\r
 \r
-                               switch (e.nodeName) {\r
+                               switch (elm.nodeName) {\r
                                        case 'TABLE':\r
-                                               v = t.dom.getAttrib(e, 'border');\r
+                                               cls = settings.visual_table_class || 'mceItemTable';\r
+                                               value = dom.getAttrib(elm, 'border');\r
 \r
-                                               if (!v || v == '0') {\r
-                                                       if (t.hasVisual)\r
-                                                               t.dom.addClass(e, s.visual_table_class);\r
+                                               if (!value || value == '0') {\r
+                                                       if (self.hasVisual)\r
+                                                               dom.addClass(elm, cls);\r
                                                        else\r
-                                                               t.dom.removeClass(e, s.visual_table_class);\r
+                                                               dom.removeClass(elm, cls);\r
                                                }\r
 \r
                                                return;\r
 \r
                                        case 'A':\r
-                                               v = t.dom.getAttrib(e, 'name');\r
+                                               if (!dom.getAttrib(elm, 'href', false)) {\r
+                                                       value = dom.getAttrib(elm, 'name') || elm.id;\r
+                                                       cls = 'mceItemAnchor';\r
 \r
-                                               if (v) {\r
-                                                       if (t.hasVisual)\r
-                                                               t.dom.addClass(e, 'mceItemAnchor');\r
-                                                       else\r
-                                                               t.dom.removeClass(e, 'mceItemAnchor');\r
+                                                       if (value) {\r
+                                                               if (self.hasVisual)\r
+                                                                       dom.addClass(elm, cls);\r
+                                                               else\r
+                                                                       dom.removeClass(elm, cls);\r
+                                                       }\r
                                                }\r
 \r
                                                return;\r
                                }\r
                        });\r
 \r
-                       t.onVisualAid.dispatch(t, e, t.hasVisual);\r
+                       self.onVisualAid.dispatch(self, elm, self.hasVisual);\r
                },\r
 \r
                remove : function() {\r
-                       var t = this, e = t.getContainer();\r
+                       var self = this, elm = self.getContainer();\r
 \r
-                       t.removed = 1; // Cancels post remove event execution\r
-                       t.hide();\r
+                       if (!self.removed) {\r
+                               self.removed = 1; // Cancels post remove event execution\r
+                               self.hide();\r
 \r
-                       t.execCallback('remove_instance_callback', t);\r
-                       t.onRemove.dispatch(t);\r
+                               // Don't clear the window or document if content editable\r
+                               // is enabled since other instances might still be present\r
+                               if (!self.settings.content_editable) {\r
+                                       Event.unbind(self.getWin());\r
+                                       Event.unbind(self.getDoc());\r
+                               }\r
+\r
+                               Event.unbind(self.getBody());\r
+                               Event.clear(elm);\r
 \r
-                       // Clear all execCommand listeners this is required to avoid errors if the editor was removed inside another command\r
-                       t.onExecCommand.listeners = [];\r
+                               self.execCallback('remove_instance_callback', self);\r
+                               self.onRemove.dispatch(self);\r
 \r
-                       tinymce.remove(t);\r
-                       DOM.remove(e);\r
+                               // Clear all execCommand listeners this is required to avoid errors if the editor was removed inside another command\r
+                               self.onExecCommand.listeners = [];\r
+\r
+                               tinymce.remove(self);\r
+                               DOM.remove(elm);\r
+                       }\r
                },\r
 \r
                destroy : function(s) {\r
@@ -11960,6 +14502,13 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                        if (t.destroyed)\r
                                return;\r
 \r
+                       // We must unbind on Gecko since it would otherwise produce the pesky "attempt to run compile-and-go script on a cleared scope" message\r
+                       if (isGecko) {\r
+                               Event.unbind(t.getDoc());\r
+                               Event.unbind(t.getWin());\r
+                               Event.unbind(t.getBody());\r
+                       }\r
+\r
                        if (!s) {\r
                                tinymce.removeUnload(t.destroy);\r
                                tinyMCE.onBeforeUnload.remove(t._beforeUnload);\r
@@ -11972,18 +14521,6 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                                t.controlManager.destroy();\r
                                t.selection.destroy();\r
                                t.dom.destroy();\r
-\r
-                               // Remove all events\r
-\r
-                               // Don't clear the window or document if content editable\r
-                               // is enabled since other instances might still be present\r
-                               if (!t.settings.content_editable) {\r
-                                       Event.clear(t.getWin());\r
-                                       Event.clear(t.getDoc());\r
-                               }\r
-\r
-                               Event.clear(t.getBody());\r
-                               Event.clear(t.formElement);\r
                        }\r
 \r
                        if (t.formElement) {\r
@@ -12001,461 +14538,329 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
 \r
                // Internal functions\r
 \r
-               _addEvents : function() {\r
-                       // 'focus', 'blur', 'dblclick', 'beforedeactivate', submit, reset\r
-                       var t = this, i, s = t.settings, dom = t.dom, lo = {\r
-                               mouseup : 'onMouseUp',\r
-                               mousedown : 'onMouseDown',\r
-                               click : 'onClick',\r
-                               keyup : 'onKeyUp',\r
-                               keydown : 'onKeyDown',\r
-                               keypress : 'onKeyPress',\r
-                               submit : 'onSubmit',\r
-                               reset : 'onReset',\r
-                               contextmenu : 'onContextMenu',\r
-                               dblclick : 'onDblClick',\r
-                               paste : 'onPaste' // Doesn't work in all browsers yet\r
-                       };\r
-\r
-                       function eventHandler(e, o) {\r
-                               var ty = e.type;\r
-\r
-                               // Don't fire events when it's removed\r
-                               if (t.removed)\r
-                                       return;\r
-\r
-                               // Generic event handler\r
-                               if (t.onEvent.dispatch(t, e, o) !== false) {\r
-                                       // Specific event handler\r
-                                       t[lo[e.fakeType || e.type]].dispatch(t, e, o);\r
-                               }\r
-                       };\r
+               _refreshContentEditable : function() {\r
+                       var self = this, body, parent;\r
 \r
-                       // Add DOM events\r
-                       each(lo, function(v, k) {\r
-                               switch (k) {\r
-                                       case 'contextmenu':\r
-                                               dom.bind(t.getDoc(), k, eventHandler);\r
-                                               break;\r
+                       // Check if the editor was hidden and the re-initalize contentEditable mode by removing and adding the body again\r
+                       if (self._isHidden()) {\r
+                               body = self.getBody();\r
+                               parent = body.parentNode;\r
 \r
-                                       case 'paste':\r
-                                               dom.bind(t.getBody(), k, function(e) {\r
-                                                       eventHandler(e);\r
-                                               });\r
-                                               break;\r
+                               parent.removeChild(body);\r
+                               parent.appendChild(body);\r
 \r
-                                       case 'submit':\r
-                                       case 'reset':\r
-                                               dom.bind(t.getElement().form || DOM.getParent(t.id, 'form'), k, eventHandler);\r
-                                               break;\r
+                               body.focus();\r
+                       }\r
+               },\r
 \r
-                                       default:\r
-                                               dom.bind(s.content_editable ? t.getBody() : t.getDoc(), k, eventHandler);\r
-                               }\r
-                       });\r
+               _isHidden : function() {\r
+                       var s;\r
 \r
-                       dom.bind(s.content_editable ? t.getBody() : (isGecko ? t.getDoc() : t.getWin()), 'focus', function(e) {\r
-                               t.focus(true);\r
-                       });\r
+                       if (!isGecko)\r
+                               return 0;\r
 \r
+                       // Weird, wheres that cursor selection?\r
+                       s = this.selection.getSel();\r
+                       return (!s || !s.rangeCount || s.rangeCount === 0);\r
+               }\r
+       });\r
+})(tinymce);\r
+(function(tinymce) {\r
+       var each = tinymce.each;\r
 \r
-                       // Fixes bug where a specified document_base_uri could result in broken images\r
-                       // This will also fix drag drop of images in Gecko\r
-                       if (tinymce.isGecko) {\r
-                               dom.bind(t.getDoc(), 'DOMNodeInserted', function(e) {\r
-                                       var v;\r
+       tinymce.Editor.prototype.setupEvents = function() {\r
+               var self = this, settings = self.settings;\r
 \r
-                                       e = e.target;\r
+               // Add events to the editor\r
+               each([\r
+                       'onPreInit',\r
 \r
-                                       if (e.nodeType === 1 && e.nodeName === 'IMG' && (v = e.getAttribute('data-mce-src')))\r
-                                               e.src = t.documentBaseURI.toAbsolute(v);\r
-                               });\r
-                       }\r
+                       'onBeforeRenderUI',\r
 \r
-                       // Set various midas options in Gecko\r
-                       if (isGecko) {\r
-                               function setOpts() {\r
-                                       var t = this, d = t.getDoc(), s = t.settings;\r
-\r
-                                       if (isGecko && !s.readonly) {\r
-                                               if (t._isHidden()) {\r
-                                                       try {\r
-                                                               if (!s.content_editable)\r
-                                                                       d.designMode = 'On';\r
-                                                       } catch (ex) {\r
-                                                               // Fails if it's hidden\r
-                                                       }\r
-                                               }\r
+                       'onPostRender',\r
 \r
-                                               try {\r
-                                                       // Try new Gecko method\r
-                                                       d.execCommand("styleWithCSS", 0, false);\r
-                                               } catch (ex) {\r
-                                                       // Use old method\r
-                                                       if (!t._isHidden())\r
-                                                               try {d.execCommand("useCSS", 0, true);} catch (ex) {}\r
-                                               }\r
+                       'onLoad',\r
 \r
-                                               if (!s.table_inline_editing)\r
-                                                       try {d.execCommand('enableInlineTableEditing', false, false);} catch (ex) {}\r
+                       'onInit',\r
 \r
-                                               if (!s.object_resizing)\r
-                                                       try {d.execCommand('enableObjectResizing', false, false);} catch (ex) {}\r
-                                       }\r
-                               };\r
+                       'onRemove',\r
 \r
-                               t.onBeforeExecCommand.add(setOpts);\r
-                               t.onMouseDown.add(setOpts);\r
-                       }\r
+                       'onActivate',\r
 \r
-                       // Workaround for bug, http://bugs.webkit.org/show_bug.cgi?id=12250\r
-                       // WebKit can't even do simple things like selecting an image\r
-                       // This also fixes so it's possible to select mceItemAnchors\r
-                       if (tinymce.isWebKit) {\r
-                               t.onClick.add(function(ed, e) {\r
-                                       e = e.target;\r
+                       'onDeactivate',\r
 \r
-                                       // Needs tobe the setBaseAndExtend or it will fail to select floated images\r
-                                       if (e.nodeName == 'IMG' || (e.nodeName == 'A' && dom.hasClass(e, 'mceItemAnchor'))) {\r
-                                               t.selection.getSel().setBaseAndExtent(e, 0, e, 1);\r
-                                               t.nodeChanged();\r
-                                       }\r
-                               });\r
-                       }\r
+                       'onClick',\r
 \r
-                       // Add node change handlers\r
-                       t.onMouseUp.add(t.nodeChanged);\r
-                       //t.onClick.add(t.nodeChanged);\r
-                       t.onKeyUp.add(function(ed, e) {\r
-                               var c = e.keyCode;\r
+                       'onEvent',\r
 \r
-                               if ((c >= 33 && c <= 36) || (c >= 37 && c <= 40) || c == 13 || c == 45 || c == 46 || c == 8 || (tinymce.isMac && (c == 91 || c == 93)) || e.ctrlKey)\r
-                                       t.nodeChanged();\r
-                       });\r
+                       'onMouseUp',\r
 \r
-                       // Add reset handler\r
-                       t.onReset.add(function() {\r
-                               t.setContent(t.startContent, {format : 'raw'});\r
-                       });\r
+                       'onMouseDown',\r
 \r
-                       // Add shortcuts\r
-                       if (s.custom_shortcuts) {\r
-                               if (s.custom_undo_redo_keyboard_shortcuts) {\r
-                                       t.addShortcut('ctrl+z', t.getLang('undo_desc'), 'Undo');\r
-                                       t.addShortcut('ctrl+y', t.getLang('redo_desc'), 'Redo');\r
-                               }\r
+                       'onDblClick',\r
 \r
-                               // Add default shortcuts for gecko\r
-                               t.addShortcut('ctrl+b', t.getLang('bold_desc'), 'Bold');\r
-                               t.addShortcut('ctrl+i', t.getLang('italic_desc'), 'Italic');\r
-                               t.addShortcut('ctrl+u', t.getLang('underline_desc'), 'Underline');\r
+                       'onKeyDown',\r
 \r
-                               // BlockFormat shortcuts keys\r
-                               for (i=1; i<=6; i++)\r
-                                       t.addShortcut('ctrl+' + i, '', ['FormatBlock', false, 'h' + i]);\r
+                       'onKeyUp',\r
 \r
-                               t.addShortcut('ctrl+7', '', ['FormatBlock', false, '<p>']);\r
-                               t.addShortcut('ctrl+8', '', ['FormatBlock', false, '<div>']);\r
-                               t.addShortcut('ctrl+9', '', ['FormatBlock', false, '<address>']);\r
+                       'onKeyPress',\r
 \r
-                               function find(e) {\r
-                                       var v = null;\r
+                       'onContextMenu',\r
 \r
-                                       if (!e.altKey && !e.ctrlKey && !e.metaKey)\r
-                                               return v;\r
+                       'onSubmit',\r
 \r
-                                       each(t.shortcuts, function(o) {\r
-                                               if (tinymce.isMac && o.ctrl != e.metaKey)\r
-                                                       return;\r
-                                               else if (!tinymce.isMac && o.ctrl != e.ctrlKey)\r
-                                                       return;\r
+                       'onReset',\r
 \r
-                                               if (o.alt != e.altKey)\r
-                                                       return;\r
+                       'onPaste',\r
 \r
-                                               if (o.shift != e.shiftKey)\r
-                                                       return;\r
+                       'onPreProcess',\r
 \r
-                                               if (e.keyCode == o.keyCode || (e.charCode && e.charCode == o.charCode)) {\r
-                                                       v = o;\r
-                                                       return false;\r
-                                               }\r
-                                       });\r
+                       'onPostProcess',\r
 \r
-                                       return v;\r
-                               };\r
+                       'onBeforeSetContent',\r
 \r
-                               t.onKeyUp.add(function(ed, e) {\r
-                                       var o = find(e);\r
+                       'onBeforeGetContent',\r
 \r
-                                       if (o)\r
-                                               return Event.cancel(e);\r
-                               });\r
+                       'onSetContent',\r
 \r
-                               t.onKeyPress.add(function(ed, e) {\r
-                                       var o = find(e);\r
+                       'onGetContent',\r
 \r
-                                       if (o)\r
-                                               return Event.cancel(e);\r
-                               });\r
+                       'onLoadContent',\r
 \r
-                               t.onKeyDown.add(function(ed, e) {\r
-                                       var o = find(e);\r
+                       'onSaveContent',\r
 \r
-                                       if (o) {\r
-                                               o.func.call(o.scope);\r
-                                               return Event.cancel(e);\r
-                                       }\r
-                               });\r
-                       }\r
+                       'onNodeChange',\r
 \r
-                       if (tinymce.isIE) {\r
-                               // Fix so resize will only update the width and height attributes not the styles of an image\r
-                               // It will also block mceItemNoResize items\r
-                               dom.bind(t.getDoc(), 'controlselect', function(e) {\r
-                                       var re = t.resizeInfo, cb;\r
+                       'onChange',\r
 \r
-                                       e = e.target;\r
+                       'onBeforeExecCommand',\r
 \r
-                                       // Don't do this action for non image elements\r
-                                       if (e.nodeName !== 'IMG')\r
-                                               return;\r
+                       'onExecCommand',\r
 \r
-                                       if (re)\r
-                                               dom.unbind(re.node, re.ev, re.cb);\r
+                       'onUndo',\r
 \r
-                                       if (!dom.hasClass(e, 'mceItemNoResize')) {\r
-                                               ev = 'resizeend';\r
-                                               cb = dom.bind(e, ev, function(e) {\r
-                                                       var v;\r
+                       'onRedo',\r
 \r
-                                                       e = e.target;\r
+                       'onVisualAid',\r
 \r
-                                                       if (v = dom.getStyle(e, 'width')) {\r
-                                                               dom.setAttrib(e, 'width', v.replace(/[^0-9%]+/g, ''));\r
-                                                               dom.setStyle(e, 'width', '');\r
-                                                       }\r
+                       'onSetProgressState',\r
 \r
-                                                       if (v = dom.getStyle(e, 'height')) {\r
-                                                               dom.setAttrib(e, 'height', v.replace(/[^0-9%]+/g, ''));\r
-                                                               dom.setStyle(e, 'height', '');\r
-                                                       }\r
-                                               });\r
-                                       } else {\r
-                                               ev = 'resizestart';\r
-                                               cb = dom.bind(e, 'resizestart', Event.cancel, Event);\r
-                                       }\r
+                       'onSetAttrib'\r
+               ], function(name) {\r
+                       self[name] = new tinymce.util.Dispatcher(self);\r
+               });\r
 \r
-                                       re = t.resizeInfo = {\r
-                                               node : e,\r
-                                               ev : ev,\r
-                                               cb : cb\r
-                                       };\r
-                               });\r
+               // Handle legacy cleanup_callback option\r
+               if (settings.cleanup_callback) {\r
+                       self.onBeforeSetContent.add(function(ed, o) {\r
+                               o.content = ed.execCallback('cleanup_callback', 'insert_to_editor', o.content, o);\r
+                       });\r
 \r
-                               t.onKeyDown.add(function(ed, e) {\r
-                                       var sel;\r
+                       self.onPreProcess.add(function(ed, o) {\r
+                               if (o.set)\r
+                                       ed.execCallback('cleanup_callback', 'insert_to_editor_dom', o.node, o);\r
 \r
-                                       switch (e.keyCode) {\r
-                                               case 8:\r
-                                                       sel = t.getDoc().selection;\r
+                               if (o.get)\r
+                                       ed.execCallback('cleanup_callback', 'get_from_editor_dom', o.node, o);\r
+                       });\r
 \r
-                                                       // Fix IE control + backspace browser bug\r
-                                                       if (sel.createRange && sel.createRange().item) {\r
-                                                               ed.dom.remove(sel.createRange().item(0));\r
-                                                               return Event.cancel(e);\r
-                                                       }\r
-                                       }\r
-                               });\r
-                       }\r
+                       self.onPostProcess.add(function(ed, o) {\r
+                               if (o.set)\r
+                                       o.content = ed.execCallback('cleanup_callback', 'insert_to_editor', o.content, o);\r
 \r
-                       if (tinymce.isOpera) {\r
-                               t.onClick.add(function(ed, e) {\r
-                                       Event.prevent(e);\r
-                               });\r
-                       }\r
+                               if (o.get)                                              \r
+                                       o.content = ed.execCallback('cleanup_callback', 'get_from_editor', o.content, o);\r
+                       });\r
+               }\r
 \r
-                       // Add custom undo/redo handlers\r
-                       if (s.custom_undo_redo) {\r
-                               function addUndo() {\r
-                                       t.undoManager.typing = false;\r
-                                       t.undoManager.add();\r
-                               };\r
+               // Handle legacy save_callback option\r
+               if (settings.save_callback) {\r
+                       self.onGetContent.add(function(ed, o) {\r
+                               if (o.save)\r
+                                       o.content = ed.execCallback('save_callback', ed.id, o.content, ed.getBody());\r
+                       });\r
+               }\r
 \r
-                               dom.bind(t.getDoc(), 'focusout', function(e) {\r
-                                       if (!t.removed && t.undoManager.typing)\r
-                                               addUndo();\r
-                               });\r
+               // Handle legacy handle_event_callback option\r
+               if (settings.handle_event_callback) {\r
+                       self.onEvent.add(function(ed, e, o) {\r
+                               if (self.execCallback('handle_event_callback', e, ed, o) === false) {\r
+                                       e.preventDefault();\r
+                                       e.stopPropagation();\r
+                               }\r
+                       });\r
+               }\r
 \r
-                               // Add undo level when contents is drag/dropped within the editor\r
-                               t.dom.bind(t.dom.getRoot(), 'dragend', function(e) {\r
-                                       addUndo();\r
-                               });\r
+               // Handle legacy handle_node_change_callback option\r
+               if (settings.handle_node_change_callback) {\r
+                       self.onNodeChange.add(function(ed, cm, n) {\r
+                               ed.execCallback('handle_node_change_callback', ed.id, n, -1, -1, true, ed.selection.isCollapsed());\r
+                       });\r
+               }\r
 \r
-                               t.onKeyUp.add(function(ed, e) {\r
-                                       var rng, parent, bookmark;\r
+               // Handle legacy save_callback option\r
+               if (settings.save_callback) {\r
+                       self.onSaveContent.add(function(ed, o) {\r
+                               var h = ed.execCallback('save_callback', ed.id, o.content, ed.getBody());\r
 \r
-                                       // Fix for bug #3168, to remove odd ".." nodes from the DOM we need to get/set the HTML of the parent node.\r
-                                       if (isIE && e.keyCode == 8) {\r
-                                               rng = t.selection.getRng();\r
-                                               if (rng.parentElement) {\r
-                                                       parent = rng.parentElement();\r
-                                                       bookmark = t.selection.getBookmark();\r
-                                                       parent.innerHTML = parent.innerHTML;\r
-                                                       t.selection.moveToBookmark(bookmark);\r
-                                               }\r
-                                       }\r
+                               if (h)\r
+                                       o.content = h;\r
+                       });\r
+               }\r
 \r
-                                       if ((e.keyCode >= 33 && e.keyCode <= 36) || (e.keyCode >= 37 && e.keyCode <= 40) || e.keyCode == 13 || e.keyCode == 45 || e.ctrlKey)\r
-                                               addUndo();\r
-                               });\r
+               // Handle legacy onchange_callback option\r
+               if (settings.onchange_callback) {\r
+                       self.onChange.add(function(ed, l) {\r
+                               ed.execCallback('onchange_callback', ed, l);\r
+                       });\r
+               }\r
+       };\r
 \r
-                               t.onKeyDown.add(function(ed, e) {\r
-                                       var rng, parent, bookmark, keyCode = e.keyCode;\r
+       tinymce.Editor.prototype.bindNativeEvents = function() {\r
+               // 'focus', 'blur', 'dblclick', 'beforedeactivate', submit, reset\r
+               var self = this, i, settings = self.settings, dom = self.dom, nativeToDispatcherMap;\r
+\r
+               nativeToDispatcherMap = {\r
+                       mouseup : 'onMouseUp',\r
+                       mousedown : 'onMouseDown',\r
+                       click : 'onClick',\r
+                       keyup : 'onKeyUp',\r
+                       keydown : 'onKeyDown',\r
+                       keypress : 'onKeyPress',\r
+                       submit : 'onSubmit',\r
+                       reset : 'onReset',\r
+                       contextmenu : 'onContextMenu',\r
+                       dblclick : 'onDblClick',\r
+                       paste : 'onPaste' // Doesn't work in all browsers yet\r
+               };\r
 \r
-                                       // IE has a really odd bug where the DOM might include an node that doesn't have\r
-                                       // a proper structure. If you try to access nodeValue it would throw an illegal value exception.\r
-                                       // This seems to only happen when you delete contents and it seems to be avoidable if you refresh the element\r
-                                       // after you delete contents from it. See: #3008923\r
-                                       if (isIE && keyCode == 46) {\r
-                                               rng = t.selection.getRng();\r
+               // Handler that takes a native event and sends it out to a dispatcher like onKeyDown\r
+               function eventHandler(evt, args) {\r
+                       var type = evt.type;\r
 \r
-                                               if (rng.parentElement) {\r
-                                                       parent = rng.parentElement();\r
+                       // Don't fire events when it's removed\r
+                       if (self.removed)\r
+                               return;\r
 \r
-                                                       if (!t.undoManager.typing) {\r
-                                                               t.undoManager.beforeChange();\r
-                                                               t.undoManager.typing = true;\r
-                                                               t.undoManager.add();\r
-                                                       }\r
+                       // Sends the native event out to a global dispatcher then to the specific event dispatcher\r
+                       if (self.onEvent.dispatch(self, evt, args) !== false) {\r
+                               self[nativeToDispatcherMap[evt.fakeType || evt.type]].dispatch(self, evt, args);\r
+                       }\r
+               };\r
 \r
-                                                       // Select next word when ctrl key is used in combo with delete\r
-                                                       if (e.ctrlKey) {\r
-                                                               rng.moveEnd('word', 1);\r
-                                                               rng.select();\r
-                                                       }\r
+               // Opera doesn't support focus event for contentEditable elements so we need to fake it\r
+               function doOperaFocus(e) {\r
+                       self.focus(true);\r
+               };\r
 \r
-                                                       // Delete contents\r
-                                                       t.selection.getSel().clear();\r
+               function nodeChanged(ed, e) {\r
+                       // 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\r
+                       if (e.keyCode != 65 || !tinymce.VK.metaKeyPressed(e)) {\r
+                               self.selection.normalize();\r
+                       }\r
 \r
-                                                       // Check if we are within the same parent\r
-                                                       if (rng.parentElement() == parent) {\r
-                                                               bookmark = t.selection.getBookmark();\r
+                       self.nodeChanged();\r
+               }\r
 \r
-                                                               try {\r
-                                                                       // Update the HTML and hopefully it will remove the artifacts\r
-                                                                       parent.innerHTML = parent.innerHTML;\r
-                                                               } catch (ex) {\r
-                                                                       // And since it's IE it can sometimes produce an unknown runtime error\r
-                                                               }\r
+               // Add DOM events\r
+               each(nativeToDispatcherMap, function(dispatcherName, nativeName) {\r
+                       var root = settings.content_editable ? self.getBody() : self.getDoc();\r
 \r
-                                                               // Restore the caret position\r
-                                                               t.selection.moveToBookmark(bookmark);\r
-                                                       }\r
+                       switch (nativeName) {\r
+                               case 'contextmenu':\r
+                                       dom.bind(root, nativeName, eventHandler);\r
+                                       break;\r
 \r
-                                                       // Block the default delete behavior since it might be broken\r
-                                                       e.preventDefault();\r
-                                                       return;\r
-                                               }\r
-                                       }\r
+                               case 'paste':\r
+                                       dom.bind(self.getBody(), nativeName, eventHandler);\r
+                                       break;\r
 \r
-                                       // Is caracter positon keys left,right,up,down,home,end,pgdown,pgup,enter\r
-                                       if ((keyCode >= 33 && keyCode <= 36) || (keyCode >= 37 && keyCode <= 40) || keyCode == 13 || keyCode == 45) {\r
-                                               // Add position before enter key is pressed, used by IE since it still uses the default browser behavior\r
-                                               // Todo: Remove this once we normalize enter behavior on IE\r
-                                               if (tinymce.isIE && keyCode == 13)\r
-                                                       t.undoManager.beforeChange();\r
+                               case 'submit':\r
+                               case 'reset':\r
+                                       dom.bind(self.getElement().form || tinymce.DOM.getParent(self.id, 'form'), nativeName, eventHandler);\r
+                                       break;\r
 \r
-                                               if (t.undoManager.typing)\r
-                                                       addUndo();\r
+                               default:\r
+                                       dom.bind(root, nativeName, eventHandler);\r
+                       }\r
+               });\r
 \r
-                                               return;\r
-                                       }\r
+               // Set the editor as active when focused\r
+               dom.bind(settings.content_editable ? self.getBody() : (tinymce.isGecko ? self.getDoc() : self.getWin()), 'focus', function(e) {\r
+                       self.focus(true);\r
+               });\r
 \r
-                                       // If key isn't shift,ctrl,alt,capslock,metakey\r
-                                       if ((keyCode < 16 || keyCode > 20) && keyCode != 224 && keyCode != 91 && !t.undoManager.typing) {\r
-                                               t.undoManager.beforeChange();\r
-                                               t.undoManager.add();\r
-                                               t.undoManager.typing = true;\r
-                                       }\r
-                               });\r
+               if (settings.content_editable && tinymce.isOpera) {\r
+                       dom.bind(self.getBody(), 'click', doOperaFocus);\r
+                       dom.bind(self.getBody(), 'keydown', doOperaFocus);\r
+               }\r
 \r
-                               t.onMouseDown.add(function() {\r
-                                       if (t.undoManager.typing)\r
-                                               addUndo();\r
-                               });\r
-                       }\r
-                       \r
-                       // Bug fix for FireFox keeping styles from end of selection instead of start.\r
-                       if (tinymce.isGecko) {\r
-                               function getAttributeApplyFunction() {\r
-                                       var template = t.dom.getAttribs(t.selection.getStart().cloneNode(false));\r
-\r
-                                       return function() {\r
-                                               var target = t.selection.getStart();\r
-                                               t.dom.removeAllAttribs(target);\r
-                                               each(template, function(attr) {\r
-                                                       target.setAttributeNode(attr.cloneNode(true));\r
-                                               });\r
-                                       };\r
-                               }\r
+               // Add node change handler\r
+               self.onMouseUp.add(nodeChanged);\r
 \r
-                               function isSelectionAcrossElements() {\r
-                                       var s = t.selection;\r
+               self.onKeyUp.add(function(ed, e) {\r
+                       var keyCode = e.keyCode;\r
 \r
-                                       return !s.isCollapsed() && s.getStart() != s.getEnd();\r
-                               }\r
+                       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)\r
+                               nodeChanged(ed, e);\r
+               });\r
 \r
-                               t.onKeyPress.add(function(ed, e) {\r
-                                       var applyAttributes;\r
+               // Add reset handler\r
+               self.onReset.add(function() {\r
+                       self.setContent(self.startContent, {format : 'raw'});\r
+               });\r
 \r
-                                       if ((e.keyCode == 8 || e.keyCode == 46) && isSelectionAcrossElements()) {\r
-                                               applyAttributes = getAttributeApplyFunction();\r
-                                               t.getDoc().execCommand('delete', false, null);\r
-                                               applyAttributes();\r
+               // Add shortcuts\r
+               function handleShortcut(e, execute) {\r
+                       if (e.altKey || e.ctrlKey || e.metaKey) {\r
+                               each(self.shortcuts, function(shortcut) {\r
+                                       var ctrlState = tinymce.isMac ? e.metaKey : e.ctrlKey;\r
 \r
-                                               return Event.cancel(e);\r
-                                       }\r
-                               });\r
+                                       if (shortcut.ctrl != ctrlState || shortcut.alt != e.altKey || shortcut.shift != e.shiftKey)\r
+                                               return;\r
 \r
-                               t.dom.bind(t.getDoc(), 'cut', function(e) {\r
-                                       var applyAttributes;\r
+                                       if (e.keyCode == shortcut.keyCode || (e.charCode && e.charCode == shortcut.charCode)) {\r
+                                               e.preventDefault();\r
 \r
-                                       if (isSelectionAcrossElements()) {\r
-                                               applyAttributes = getAttributeApplyFunction();\r
-                                               t.onKeyUp.addToTop(Event.cancel, Event);\r
+                                               if (execute) {\r
+                                                       shortcut.func.call(shortcut.scope);\r
+                                               }\r
 \r
-                                               setTimeout(function() {\r
-                                                       applyAttributes();\r
-                                                       t.onKeyUp.remove(Event.cancel, Event);\r
-                                               }, 0);\r
+                                               return true;\r
                                        }\r
                                });\r
                        }\r
-               },\r
+               };\r
 \r
-               _isHidden : function() {\r
-                       var s;\r
+               self.onKeyUp.add(function(ed, e) {\r
+                       handleShortcut(e);\r
+               });\r
 \r
-                       if (!isGecko)\r
-                               return 0;\r
+               self.onKeyPress.add(function(ed, e) {\r
+                       handleShortcut(e);\r
+               });\r
 \r
-                       // Weird, wheres that cursor selection?\r
-                       s = this.selection.getSel();\r
-                       return (!s || !s.rangeCount || s.rangeCount == 0);\r
+               self.onKeyDown.add(function(ed, e) {\r
+                       handleShortcut(e, true);\r
+               });\r
+\r
+               if (tinymce.isOpera) {\r
+                       self.onClick.add(function(ed, e) {\r
+                               e.preventDefault();\r
+                       });\r
                }\r
-       });\r
+       };\r
 })(tinymce);\r
-\r
 (function(tinymce) {\r
        // Added for compression purposes\r
-       var each = tinymce.each, undefined, TRUE = true, FALSE = false;\r
+       var each = tinymce.each, undef, TRUE = true, FALSE = false;\r
 \r
        tinymce.EditorCommands = function(editor) {\r
                var dom = editor.dom,\r
                        selection = editor.selection,\r
                        commands = {state: {}, exec : {}, value : {}},\r
                        settings = editor.settings,\r
+                       formatter = editor.formatter,\r
                        bookmark;\r
 \r
                function execCommand(command, ui, value) {\r
@@ -12511,21 +14916,21 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                // Private methods\r
 \r
                function execNativeCommand(command, ui, value) {\r
-                       if (ui === undefined)\r
+                       if (ui === undef)\r
                                ui = FALSE;\r
 \r
-                       if (value === undefined)\r
+                       if (value === undef)\r
                                value = null;\r
 \r
                        return editor.getDoc().execCommand(command, ui, value);\r
                };\r
 \r
                function isFormatMatch(name) {\r
-                       return editor.formatter.match(name);\r
+                       return formatter.match(name);\r
                };\r
 \r
                function toggleFormat(name, value) {\r
-                       editor.formatter.toggle(name, value ? {value : value} : undefined);\r
+                       formatter.toggle(name, value ? {value : value} : undef);\r
                };\r
 \r
                function storeSelection(type) {\r
@@ -12585,7 +14990,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                                // Remove all other alignments first\r
                                each('left,center,right,full'.split(','), function(name) {\r
                                        if (align != name)\r
-                                               editor.formatter.remove('align' + name);\r
+                                               formatter.remove('align' + name);\r
                                });\r
 \r
                                toggleFormat('align' + align);\r
@@ -12642,7 +15047,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                        },\r
 \r
                        RemoveFormat : function(command) {\r
-                               editor.formatter.remove(command);\r
+                               formatter.remove(command);\r
                        },\r
 \r
                        mceBlockQuote : function(command) {\r
@@ -12688,22 +15093,17 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                        },\r
 \r
                        mceInsertContent : function(command, ui, value) {\r
-                               var caretNode, rng, rootNode, parent, node, rng, nodeRect, viewPortRect, args;\r
+                               var parser, serializer, parentNode, rootNode, fragment, args,\r
+                                       marker, nodeRect, viewPortRect, rng, node, node2, bookmarkHtml, viewportBodyElement;\r
 \r
-                               function findSuitableCaretNode(node, root_node, next) {\r
-                                       var walker = new tinymce.dom.TreeWalker(next ? node.nextSibling : node.previousSibling, root_node);\r
-\r
-                                       while ((node = walker.current())) {\r
-                                               if ((node.nodeType == 3 && tinymce.trim(node.nodeValue).length) || node.nodeName == 'BR' || node.nodeName == 'IMG')\r
-                                                       return node;\r
+                               //selection.normalize();\r
 \r
-                                               if (next)\r
-                                                       walker.next();\r
-                                               else\r
-                                                       walker.prev();\r
-                                       }\r
-                               };\r
+                               // Setup parser and serializer\r
+                               parser = editor.parser;\r
+                               serializer = new tinymce.html.Serializer({}, editor.schema);\r
+                               bookmarkHtml = '<span id="mce_marker" data-mce-type="bookmark">\uFEFF</span>';\r
 \r
+                               // Run beforeSetContent handlers on the HTML to be inserted\r
                                args = {content: value, format: 'html'};\r
                                selection.onBeforeSetContent.dispatch(selection, args);\r
                                value = args.content;\r
@@ -12712,89 +15112,114 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                                if (value.indexOf('{$caret}') == -1)\r
                                        value += '{$caret}';\r
 \r
-                               // Set the content at selection to a span and replace it's contents with the value\r
-                               selection.setContent('<span id="__mce">\uFEFF</span>', {no_events : false});\r
-                               dom.setOuterHTML('__mce', value.replace(/\{\$caret\}/, '<span data-mce-type="bookmark" id="__mce">\uFEFF</span>'));\r
+                               // Replace the caret marker with a span bookmark element\r
+                               value = value.replace(/\{\$caret\}/, bookmarkHtml);\r
 \r
-                               caretNode = dom.select('#__mce')[0];\r
-                               rootNode = dom.getRoot();\r
+                               // Insert node maker where we will insert the new HTML and get it's parent\r
+                               if (!selection.isCollapsed())\r
+                                       editor.getDoc().execCommand('Delete', false, null);\r
 \r
-                               // Move the caret into the last suitable location within the previous sibling if it's a block since the block might be split\r
-                               if (caretNode.previousSibling && dom.isBlock(caretNode.previousSibling) || caretNode.parentNode == rootNode) {\r
-                                       node = findSuitableCaretNode(caretNode, rootNode);\r
-                                       if (node) {\r
-                                               if (node.nodeName == 'BR')\r
-                                                       node.parentNode.insertBefore(caretNode, node);\r
-                                               else\r
-                                                       dom.insertAfter(caretNode, node);\r
+                               parentNode = selection.getNode();\r
+\r
+                               // Parse the fragment within the context of the parent node\r
+                               args = {context : parentNode.nodeName.toLowerCase()};\r
+                               fragment = parser.parse(value, args);\r
+\r
+                               // Move the caret to a more suitable location\r
+                               node = fragment.lastChild;\r
+                               if (node.attr('id') == 'mce_marker') {\r
+                                       marker = node;\r
+\r
+                                       for (node = node.prev; node; node = node.walk(true)) {\r
+                                               if (node.type == 3 || !dom.isBlock(node.name)) {\r
+                                                       node.parent.insert(marker, node, node.name === 'br');\r
+                                                       break;\r
+                                               }\r
                                        }\r
                                }\r
 \r
-                               // Find caret root parent and clean it up using the serializer to avoid nesting\r
-                               while (caretNode) {\r
-                                       if (caretNode === rootNode) {\r
-                                               // Clean up the parent element by parsing and serializing it\r
-                                               // This will remove invalid elements/attributes and fix nesting issues\r
-                                               dom.setOuterHTML(parent, \r
-                                                       new tinymce.html.Serializer({}, editor.schema).serialize(\r
-                                                               editor.parser.parse(dom.getOuterHTML(parent))\r
-                                                       )\r
-                                               );\r
+                               // If parser says valid we can insert the contents into that parent\r
+                               if (!args.invalid) {\r
+                                       value = serializer.serialize(fragment);\r
 \r
-                                               break;\r
-                                       }\r
+                                       // Check if parent is empty or only has one BR element then set the innerHTML of that parent\r
+                                       node = parentNode.firstChild;\r
+                                       node2 = parentNode.lastChild;\r
+                                       if (!node || (node === node2 && node.nodeName === 'BR'))\r
+                                               dom.setHTML(parentNode, value);\r
+                                       else\r
+                                               selection.setContent(value);\r
+                               } else {\r
+                                       // If the fragment was invalid within that context then we need\r
+                                       // to parse and process the parent it's inserted into\r
 \r
-                                       parent = caretNode;\r
-                                       caretNode = caretNode.parentNode;\r
-                               }\r
+                                       // Insert bookmark node and get the parent\r
+                                       selection.setContent(bookmarkHtml);\r
+                                       parentNode = selection.getNode();\r
+                                       rootNode = editor.getBody();\r
 \r
-                               // Find caret after cleanup and move selection to that location\r
-                               caretNode = dom.select('#__mce')[0];\r
-                               if (caretNode) {\r
-                                       node = findSuitableCaretNode(caretNode, rootNode) || findSuitableCaretNode(caretNode, rootNode, true);\r
-                                       dom.remove(caretNode);\r
+                                       // Opera will return the document node when selection is in root\r
+                                       if (parentNode.nodeType == 9)\r
+                                               parentNode = node = rootNode;\r
+                                       else\r
+                                               node = parentNode;\r
 \r
-                                       if (node) {\r
-                                               rng = dom.createRng();\r
+                                       // Find the ancestor just before the root element\r
+                                       while (node !== rootNode) {\r
+                                               parentNode = node;\r
+                                               node = node.parentNode;\r
+                                       }\r
 \r
-                                               if (node.nodeType == 3) {\r
-                                                       rng.setStart(node, node.length);\r
-                                                       rng.setEnd(node, node.length);\r
-                                               } else {\r
-                                                       if (node.nodeName == 'BR') {\r
-                                                               rng.setStartBefore(node);\r
-                                                               rng.setEndBefore(node);\r
-                                                       } else {\r
-                                                               rng.setStartAfter(node);\r
-                                                               rng.setEndAfter(node);\r
-                                                       }\r
-                                               }\r
+                                       // Get the outer/inner HTML depending on if we are in the root and parser and serialize that\r
+                                       value = parentNode == rootNode ? rootNode.innerHTML : dom.getOuterHTML(parentNode);\r
+                                       value = serializer.serialize(\r
+                                               parser.parse(\r
+                                                       // Need to replace by using a function since $ in the contents would otherwise be a problem\r
+                                                       value.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i, function() {\r
+                                                               return serializer.serialize(fragment);\r
+                                                       })\r
+                                               )\r
+                                       );\r
+\r
+                                       // Set the inner/outer HTML depending on if we are in the root or not\r
+                                       if (parentNode == rootNode)\r
+                                               dom.setHTML(rootNode, value);\r
+                                       else\r
+                                               dom.setOuterHTML(parentNode, value);\r
+                               }\r
 \r
-                                               selection.setRng(rng);\r
+                               marker = dom.get('mce_marker');\r
 \r
-                                               // Scroll range into view scrollIntoView on element can't be used since it will scroll the main view port as well\r
-                                               if (!tinymce.isIE) {\r
-                                                       node = dom.create('span', null, '\u00a0');\r
-                                                       rng.insertNode(node);\r
-                                                       nodeRect = dom.getRect(node);\r
-                                                       viewPortRect = dom.getViewPort(editor.getWin());\r
-\r
-                                                       // Check if node is out side the viewport if it is then scroll to it\r
-                                                       if ((nodeRect.y > viewPortRect.y + viewPortRect.h || nodeRect.y < viewPortRect.y) ||\r
-                                                               (nodeRect.x > viewPortRect.x + viewPortRect.w || nodeRect.x < viewPortRect.x)) {\r
-                                                               editor.getBody().scrollLeft = nodeRect.x;\r
-                                                               editor.getBody().scrollTop = nodeRect.y;\r
-                                                       }\r
+                               // Scroll range into view scrollIntoView on element can't be used since it will scroll the main view port as well\r
+                               nodeRect = dom.getRect(marker);\r
+                               viewPortRect = dom.getViewPort(editor.getWin());\r
 \r
-                                                       dom.remove(node);\r
-                                               }\r
+                               // Check if node is out side the viewport if it is then scroll to it\r
+                               if ((nodeRect.y + nodeRect.h > viewPortRect.y + viewPortRect.h || nodeRect.y < viewPortRect.y) ||\r
+                                       (nodeRect.x > viewPortRect.x + viewPortRect.w || nodeRect.x < viewPortRect.x)) {\r
+                                       viewportBodyElement = tinymce.isIE ? editor.getDoc().documentElement : editor.getBody();\r
+                                       viewportBodyElement.scrollLeft = nodeRect.x;\r
+                                       viewportBodyElement.scrollTop = nodeRect.y - viewPortRect.h + 25;\r
+                               }\r
 \r
-                                               // Make sure that the selection is collapsed after we removed the node fixes a WebKit bug\r
-                                               // where WebKit would place the endContainer/endOffset at a different location than the startContainer/startOffset\r
-                                               selection.collapse(true);\r
-                                       }\r
+                               // Move selection before marker and remove it\r
+                               rng = dom.createRng();\r
+\r
+                               // If previous sibling is a text node set the selection to the end of that node\r
+                               node = marker.previousSibling;\r
+                               if (node && node.nodeType == 3) {\r
+                                       rng.setStart(node, node.nodeValue.length);\r
+                               } else {\r
+                                       // If the previous sibling isn't a text node or doesn't exist set the selection before the marker node\r
+                                       rng.setStartBefore(marker);\r
+                                       rng.setEndBefore(marker);\r
                                }\r
 \r
+                               // Remove the marker node and set the new range\r
+                               dom.remove(marker);\r
+                               selection.setRng(rng);\r
+\r
+                               // Dispatch after event and add any visual elements needed\r
                                selection.onSetContent.dispatch(selection, args);\r
                                editor.addVisual();\r
                        },\r
@@ -12804,6 +15229,10 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                                editor.setContent(editor.getContent().replace(/tiny_mce_marker/g, function() { return value }));\r
                        },\r
 \r
+                       mceToggleFormat : function(command, ui, value) {\r
+                               toggleFormat(value);\r
+                       },\r
+\r
                        mceSetContent : function(command, ui, value) {\r
                                editor.setContent(value);\r
                        },\r
@@ -12817,6 +15246,11 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                                intentValue = parseInt(intentValue);\r
 \r
                                if (!queryCommandState('InsertUnorderedList') && !queryCommandState('InsertOrderedList')) {\r
+                                       // If forced_root_blocks is set to false we don't have a block to indent so lets create a div\r
+                                       if (!settings.forced_root_block && !dom.getParent(selection.getNode(), dom.isBlock)) {\r
+                                               formatter.apply('div');\r
+                                       }\r
+\r
                                        each(selection.getSelectedBlocks(), function(element) {\r
                                                if (command == 'outdent') {\r
                                                        value = Math.max(0, parseInt(element.style.paddingLeft || 0) - intentValue);\r
@@ -12847,7 +15281,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                        },\r
 \r
                        mceToggleFormat : function(command, ui, value) {\r
-                               editor.formatter.toggle(value);\r
+                               formatter.toggle(value);\r
                        },\r
 \r
                        InsertHorizontalRule : function() {\r
@@ -12864,49 +15298,39 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                        },\r
 \r
                        mceInsertLink : function(command, ui, value) {\r
-                               var link = dom.getParent(selection.getNode(), 'a'), img, floatVal;\r
+                               var anchor;\r
 \r
-                               if (tinymce.is(value, 'string'))\r
+                               if (typeof(value) == 'string')\r
                                        value = {href : value};\r
 \r
+                               anchor = dom.getParent(selection.getNode(), 'a');\r
+\r
                                // Spaces are never valid in URLs and it's a very common mistake for people to make so we fix it here.\r
                                value.href = value.href.replace(' ', '%20');\r
 \r
-                               if (!link) {\r
-                                       // WebKit can't create links on float images for some odd reason so just remove it and restore it later\r
-                                       if (tinymce.isWebKit) {\r
-                                               img = dom.getParent(selection.getNode(), 'img');\r
+                               // Remove existing links if there could be child links or that the href isn't specified\r
+                               if (!anchor || !value.href) {\r
+                                       formatter.remove('link');\r
+                               }               \r
 \r
-                                               if (img) {\r
-                                                       floatVal = img.style.cssFloat;\r
-                                                       img.style.cssFloat = null;\r
-                                               }\r
-                                       }\r
-\r
-                                       execNativeCommand('CreateLink', FALSE, 'javascript:mctmp(0);');\r
-\r
-                                       // Restore float value\r
-                                       if (floatVal)\r
-                                               img.style.cssFloat = floatVal;\r
-\r
-                                       each(dom.select("a[href='javascript:mctmp(0);']"), function(link) {\r
-                                               dom.setAttribs(link, value);\r
-                                       });\r
-                               } else {\r
-                                       if (value.href)\r
-                                               dom.setAttribs(link, value);\r
-                                       else\r
-                                               editor.dom.remove(link, TRUE);\r
+                               // Apply new link to selection\r
+                               if (value.href) {\r
+                                       formatter.apply('link', value, anchor);\r
                                }\r
                        },\r
-                       \r
+\r
                        selectAll : function() {\r
                                var root = dom.getRoot(), rng = dom.createRng();\r
 \r
-                               rng.setStart(root, 0);\r
-                               rng.setEnd(root, root.childNodes.length);\r
+                               // Old IE does a better job with selectall than new versions\r
+                               if (selection.getRng().setStart) {\r
+                                       rng.setStart(root, 0);\r
+                                       rng.setEnd(root, root.childNodes.length);\r
 \r
-                               editor.selection.setRng(rng);\r
+                                       selection.setRng(rng);\r
+                               } else {\r
+                                       execNativeCommand('SelectAll');\r
+                               }\r
                        }\r
                });\r
 \r
@@ -12914,7 +15338,12 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                addCommands({\r
                        // Override justify commands\r
                        'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull' : function(command) {\r
-                               return isFormatMatch('align' + command.substring(7));\r
+                               var name = 'align' + command.substring(7);\r
+                               var nodes = selection.isCollapsed() ? [dom.getParent(selection.getNode(), dom.isBlock)] : selection.getSelectedBlocks();\r
+                               var matches = tinymce.map(nodes, function(node) {\r
+                                       return !!formatter.matchNode(node, name);\r
+                               });\r
+                               return tinymce.inArray(matches, TRUE) !== -1;\r
                        },\r
 \r
                        'Bold,Italic,Underline,Strikethrough,Superscript,Subscript' : function(command) {\r
@@ -12940,7 +15369,10 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                        },\r
 \r
                        'InsertUnorderedList,InsertOrderedList' : function(command) {\r
-                               return dom.getParent(selection.getNode(), command == 'insertunorderedlist' ? 'UL' : 'OL');\r
+                               var list = dom.getParent(selection.getNode(), 'ul,ol');\r
+                               return list && \r
+                                    (command === 'insertunorderedlist' && list.tagName === 'UL'\r
+                                  || command === 'insertorderedlist' && list.tagName === 'OL');\r
                        }\r
                }, 'state');\r
 \r
@@ -12961,17 +15393,15 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                }, 'value');\r
 \r
                // Add undo manager logic\r
-               if (settings.custom_undo_redo) {\r
-                       addCommands({\r
-                               Undo : function() {\r
-                                       editor.undoManager.undo();\r
-                               },\r
+               addCommands({\r
+                       Undo : function() {\r
+                               editor.undoManager.undo();\r
+                       },\r
 \r
-                               Redo : function() {\r
-                                       editor.undoManager.redo();\r
-                               }\r
-                       });\r
-               }\r
+                       Redo : function() {\r
+                               editor.undoManager.redo();\r
+                       }\r
+               });\r
        };\r
 })(tinymce);\r
 \r
@@ -12979,25 +15409,122 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
        var Dispatcher = tinymce.util.Dispatcher;\r
 \r
        tinymce.UndoManager = function(editor) {\r
-               var self, index = 0, data = [];\r
+               var self, index = 0, data = [], beforeBookmark, onAdd, onUndo, onRedo;\r
 \r
                function getContent() {\r
-                       return tinymce.trim(editor.getContent({format : 'raw', no_events : 1}));\r
+                       // Remove whitespace before/after and remove pure bogus nodes\r
+                       return tinymce.trim(editor.getContent({format : 'raw', no_events : 1}).replace(/<span[^>]+data-mce-bogus[^>]+>[\u200B\uFEFF]+<\/span>/g, ''));\r
+               };\r
+\r
+               function addNonTypingUndoLevel() {\r
+                       self.typing = false;\r
+                       self.add();\r
                };\r
 \r
-               return self = {\r
+               // Create event instances\r
+               onBeforeAdd = new Dispatcher(self);\r
+               onAdd       = new Dispatcher(self);\r
+               onUndo      = new Dispatcher(self);\r
+               onRedo      = new Dispatcher(self);\r
+\r
+               // Pass though onAdd event from UndoManager to Editor as onChange\r
+               onAdd.add(function(undoman, level) {\r
+                       if (undoman.hasUndo())\r
+                               return editor.onChange.dispatch(editor, level, undoman);\r
+               });\r
+\r
+               // Pass though onUndo event from UndoManager to Editor\r
+               onUndo.add(function(undoman, level) {\r
+                       return editor.onUndo.dispatch(editor, level, undoman);\r
+               });\r
+\r
+               // Pass though onRedo event from UndoManager to Editor\r
+               onRedo.add(function(undoman, level) {\r
+                       return editor.onRedo.dispatch(editor, level, undoman);\r
+               });\r
+\r
+               // Add initial undo level when the editor is initialized\r
+               editor.onInit.add(function() {\r
+                       self.add();\r
+               });\r
+\r
+               // Get position before an execCommand is processed\r
+               editor.onBeforeExecCommand.add(function(ed, cmd, ui, val, args) {\r
+                       if (cmd != 'Undo' && cmd != 'Redo' && cmd != 'mceRepaint' && (!args || !args.skip_undo)) {\r
+                               self.beforeChange();\r
+                       }\r
+               });\r
+\r
+               // Add undo level after an execCommand call was made\r
+               editor.onExecCommand.add(function(ed, cmd, ui, val, args) {\r
+                       if (cmd != 'Undo' && cmd != 'Redo' && cmd != 'mceRepaint' && (!args || !args.skip_undo)) {\r
+                               self.add();\r
+                       }\r
+               });\r
+\r
+               // Add undo level on save contents, drag end and blur/focusout\r
+               editor.onSaveContent.add(addNonTypingUndoLevel);\r
+               editor.dom.bind(editor.dom.getRoot(), 'dragend', addNonTypingUndoLevel);\r
+               editor.dom.bind(editor.getDoc(), tinymce.isGecko ? 'blur' : 'focusout', function(e) {\r
+                       if (!editor.removed && self.typing) {\r
+                               addNonTypingUndoLevel();\r
+                       }\r
+               });\r
+\r
+               editor.onKeyUp.add(function(editor, e) {\r
+                       var keyCode = e.keyCode;\r
+\r
+                       if ((keyCode >= 33 && keyCode <= 36) || (keyCode >= 37 && keyCode <= 40) || keyCode == 45 || keyCode == 13 || e.ctrlKey) {\r
+                               addNonTypingUndoLevel();\r
+                       }\r
+               });\r
+\r
+               editor.onKeyDown.add(function(editor, e) {\r
+                       var keyCode = e.keyCode;\r
+\r
+                       // Is caracter positon keys left,right,up,down,home,end,pgdown,pgup,enter\r
+                       if ((keyCode >= 33 && keyCode <= 36) || (keyCode >= 37 && keyCode <= 40) || keyCode == 45) {\r
+                               if (self.typing) {\r
+                                       addNonTypingUndoLevel();\r
+                               }\r
+\r
+                               return;\r
+                       }\r
+\r
+                       // If key isn't shift,ctrl,alt,capslock,metakey\r
+                       if ((keyCode < 16 || keyCode > 20) && keyCode != 224 && keyCode != 91 && !self.typing) {\r
+                               self.beforeChange();\r
+                               self.typing = true;\r
+                               self.add();\r
+                       }\r
+               });\r
+\r
+               editor.onMouseDown.add(function(editor, e) {\r
+                       if (self.typing) {\r
+                               addNonTypingUndoLevel();\r
+                       }\r
+               });\r
+\r
+               // Add keyboard shortcuts for undo/redo keys\r
+               editor.addShortcut('ctrl+z', 'undo_desc', 'Undo');\r
+               editor.addShortcut('ctrl+y', 'redo_desc', 'Redo');\r
+\r
+               self = {\r
+                       // Explose for debugging reasons\r
+                       data : data,\r
+\r
                        typing : false,\r
+                       \r
+                       onBeforeAdd: onBeforeAdd,\r
 \r
-                       onAdd : new Dispatcher(self),\r
+                       onAdd : onAdd,\r
 \r
-                       onUndo : new Dispatcher(self),\r
+                       onUndo : onUndo,\r
 \r
-                       onRedo : new Dispatcher(self),\r
+                       onRedo : onRedo,\r
 \r
                        beforeChange : function() {\r
-                               // Set before bookmark on previous level\r
-                               if (data[index])\r
-                                       data[index].beforeBookmark = editor.selection.getBookmark(2, true);\r
+                               beforeBookmark = editor.selection.getBookmark(2, true);\r
                        },\r
 \r
                        add : function(level) {\r
@@ -13005,12 +15532,18 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
 \r
                                level = level || {};\r
                                level.content = getContent();\r
+                               \r
+                               self.onBeforeAdd.dispatch(self, level);\r
 \r
                                // Add undo level if needed\r
                                lastLevel = data[index];\r
                                if (lastLevel && lastLevel.content == level.content)\r
                                        return null;\r
 \r
+                               // Set before bookmark on previous level\r
+                               if (data[index])\r
+                                       data[index].beforeBookmark = beforeBookmark;\r
+\r
                                // Time to compress\r
                                if (settings.custom_undo_redo_levels) {\r
                                        if (data.length > settings.custom_undo_redo_levels) {\r
@@ -13035,2778 +15568,3292 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                                self.onAdd.dispatch(self, level);\r
                                editor.isNotDirty = 0;\r
 \r
-                               return level;\r
-                       },\r
+                               return level;\r
+                       },\r
+\r
+                       undo : function() {\r
+                               var level, i;\r
+\r
+                               if (self.typing) {\r
+                                       self.add();\r
+                                       self.typing = false;\r
+                               }\r
+\r
+                               if (index > 0) {\r
+                                       level = data[--index];\r
+\r
+                                       editor.setContent(level.content, {format : 'raw'});\r
+                                       editor.selection.moveToBookmark(level.beforeBookmark);\r
+\r
+                                       self.onUndo.dispatch(self, level);\r
+                               }\r
+\r
+                               return level;\r
+                       },\r
+\r
+                       redo : function() {\r
+                               var level;\r
+\r
+                               if (index < data.length - 1) {\r
+                                       level = data[++index];\r
+\r
+                                       editor.setContent(level.content, {format : 'raw'});\r
+                                       editor.selection.moveToBookmark(level.bookmark);\r
+\r
+                                       self.onRedo.dispatch(self, level);\r
+                               }\r
+\r
+                               return level;\r
+                       },\r
+\r
+                       clear : function() {\r
+                               data = [];\r
+                               index = 0;\r
+                               self.typing = false;\r
+                       },\r
+\r
+                       hasUndo : function() {\r
+                               return index > 0 || this.typing;\r
+                       },\r
+\r
+                       hasRedo : function() {\r
+                               return index < data.length - 1 && !this.typing;\r
+                       }\r
+               };\r
+\r
+               return self;\r
+       };\r
+})(tinymce);\r
+\r
+tinymce.ForceBlocks = function(editor) {\r
+       var settings = editor.settings, dom = editor.dom, selection = editor.selection, blockElements = editor.schema.getBlockElements();\r
+\r
+       function addRootBlocks() {\r
+               var node = selection.getStart(), rootNode = editor.getBody(), rng, startContainer, startOffset, endContainer, endOffset, rootBlockNode, tempNode, offset = -0xFFFFFF, wrapped, isInEditorDocument;\r
+\r
+               if (!node || node.nodeType !== 1 || !settings.forced_root_block)\r
+                       return;\r
+\r
+               // Check if node is wrapped in block\r
+               while (node && node != rootNode) {\r
+                       if (blockElements[node.nodeName])\r
+                               return;\r
+\r
+                       node = node.parentNode;\r
+               }\r
+\r
+               // Get current selection\r
+               rng = selection.getRng();\r
+               if (rng.setStart) {\r
+                       startContainer = rng.startContainer;\r
+                       startOffset = rng.startOffset;\r
+                       endContainer = rng.endContainer;\r
+                       endOffset = rng.endOffset;\r
+               } else {\r
+                       // Force control range into text range\r
+                       if (rng.item) {\r
+                               node = rng.item(0);\r
+                               rng = editor.getDoc().body.createTextRange();\r
+                               rng.moveToElementText(node);\r
+                       }\r
+\r
+                       isInEditorDocument = rng.parentElement().ownerDocument === editor.getDoc();\r
+                       tmpRng = rng.duplicate();\r
+                       tmpRng.collapse(true);\r
+                       startOffset = tmpRng.move('character', offset) * -1;\r
+\r
+                       if (!tmpRng.collapsed) {\r
+                               tmpRng = rng.duplicate();\r
+                               tmpRng.collapse(false);\r
+                               endOffset = (tmpRng.move('character', offset) * -1) - startOffset;\r
+                       }\r
+               }\r
+\r
+               // Wrap non block elements and text nodes\r
+               node = rootNode.firstChild;\r
+               while (node) {\r
+                       if (node.nodeType === 3 || (node.nodeType == 1 && !blockElements[node.nodeName])) {\r
+                               // Remove empty text nodes\r
+                               if (node.nodeType === 3 && node.nodeValue.length == 0) {\r
+                                       tempNode = node;\r
+                                       node = node.nextSibling;\r
+                                       dom.remove(tempNode);\r
+                                       continue;\r
+                               }\r
+\r
+                               if (!rootBlockNode) {\r
+                                       rootBlockNode = dom.create(settings.forced_root_block);\r
+                                       node.parentNode.insertBefore(rootBlockNode, node);\r
+                                       wrapped = true;\r
+                               }\r
+\r
+                               tempNode = node;\r
+                               node = node.nextSibling;\r
+                               rootBlockNode.appendChild(tempNode);\r
+                       } else {\r
+                               rootBlockNode = null;\r
+                               node = node.nextSibling;\r
+                       }\r
+               }\r
+\r
+               if (wrapped) {\r
+                       if (rng.setStart) {\r
+                               rng.setStart(startContainer, startOffset);\r
+                               rng.setEnd(endContainer, endOffset);\r
+                               selection.setRng(rng);\r
+                       } else {\r
+                               // Only select if the previous selection was inside the document to prevent auto focus in quirks mode\r
+                               if (isInEditorDocument) {\r
+                                       try {\r
+                                               rng = editor.getDoc().body.createTextRange();\r
+                                               rng.moveToElementText(rootNode);\r
+                                               rng.collapse(true);\r
+                                               rng.moveStart('character', startOffset);\r
+\r
+                                               if (endOffset > 0)\r
+                                                       rng.moveEnd('character', endOffset);\r
+\r
+                                               rng.select();\r
+                                       } catch (ex) {\r
+                                               // Ignore\r
+                                       }\r
+                               }\r
+                       }\r
+\r
+                       editor.nodeChanged();\r
+               }\r
+       };\r
+\r
+       // Force root blocks\r
+       if (settings.forced_root_block) {\r
+               editor.onKeyUp.add(addRootBlocks);\r
+               editor.onNodeChange.add(addRootBlocks);\r
+       }\r
+};\r
+\r
+(function(tinymce) {\r
+       // Shorten names\r
+       var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, extend = tinymce.extend;\r
+\r
+       tinymce.create('tinymce.ControlManager', {\r
+               ControlManager : function(ed, s) {\r
+                       var t = this, i;\r
 \r
-                       undo : function() {\r
-                               var level, i;\r
+                       s = s || {};\r
+                       t.editor = ed;\r
+                       t.controls = {};\r
+                       t.onAdd = new tinymce.util.Dispatcher(t);\r
+                       t.onPostRender = new tinymce.util.Dispatcher(t);\r
+                       t.prefix = s.prefix || ed.id + '_';\r
+                       t._cls = {};\r
 \r
-                               if (self.typing) {\r
-                                       self.add();\r
-                                       self.typing = false;\r
-                               }\r
+                       t.onPostRender.add(function() {\r
+                               each(t.controls, function(c) {\r
+                                       c.postRender();\r
+                               });\r
+                       });\r
+               },\r
 \r
-                               if (index > 0) {\r
-                                       level = data[--index];\r
+               get : function(id) {\r
+                       return this.controls[this.prefix + id] || this.controls[id];\r
+               },\r
 \r
-                                       editor.setContent(level.content, {format : 'raw'});\r
-                                       editor.selection.moveToBookmark(level.beforeBookmark);\r
+               setActive : function(id, s) {\r
+                       var c = null;\r
 \r
-                                       self.onUndo.dispatch(self, level);\r
-                               }\r
+                       if (c = this.get(id))\r
+                               c.setActive(s);\r
 \r
-                               return level;\r
-                       },\r
+                       return c;\r
+               },\r
 \r
-                       redo : function() {\r
-                               var level;\r
+               setDisabled : function(id, s) {\r
+                       var c = null;\r
 \r
-                               if (index < data.length - 1) {\r
-                                       level = data[++index];\r
+                       if (c = this.get(id))\r
+                               c.setDisabled(s);\r
 \r
-                                       editor.setContent(level.content, {format : 'raw'});\r
-                                       editor.selection.moveToBookmark(level.bookmark);\r
+                       return c;\r
+               },\r
 \r
-                                       self.onRedo.dispatch(self, level);\r
-                               }\r
+               add : function(c) {\r
+                       var t = this;\r
 \r
-                               return level;\r
-                       },\r
+                       if (c) {\r
+                               t.controls[c.id] = c;\r
+                               t.onAdd.dispatch(c, t);\r
+                       }\r
 \r
-                       clear : function() {\r
-                               data = [];\r
-                               index = 0;\r
-                               self.typing = false;\r
-                       },\r
+                       return c;\r
+               },\r
 \r
-                       hasUndo : function() {\r
-                               return index > 0 || this.typing;\r
-                       },\r
+               createControl : function(name) {\r
+                       var ctrl, i, l, self = this, editor = self.editor, factories, ctrlName;\r
 \r
-                       hasRedo : function() {\r
-                               return index < data.length - 1 && !this.typing;\r
+                       // Build control factory cache\r
+                       if (!self.controlFactories) {\r
+                               self.controlFactories = [];\r
+                               each(editor.plugins, function(plugin) {\r
+                                       if (plugin.createControl) {\r
+                                               self.controlFactories.push(plugin);\r
+                                       }\r
+                               });\r
                        }\r
-               };\r
-       };\r
-})(tinymce);\r
 \r
-(function(tinymce) {\r
-       // Shorten names\r
-       var Event = tinymce.dom.Event,\r
-               isIE = tinymce.isIE,\r
-               isGecko = tinymce.isGecko,\r
-               isOpera = tinymce.isOpera,\r
-               each = tinymce.each,\r
-               extend = tinymce.extend,\r
-               TRUE = true,\r
-               FALSE = false;\r
-\r
-       function cloneFormats(node) {\r
-               var clone, temp, inner;\r
-\r
-               do {\r
-                       if (/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(node.nodeName)) {\r
-                               if (clone) {\r
-                                       temp = node.cloneNode(false);\r
-                                       temp.appendChild(clone);\r
-                                       clone = temp;\r
-                               } else {\r
-                                       clone = inner = node.cloneNode(false);\r
+                       // Create controls by asking cached factories\r
+                       factories = self.controlFactories;\r
+                       for (i = 0, l = factories.length; i < l; i++) {\r
+                               ctrl = factories[i].createControl(name, self);\r
+\r
+                               if (ctrl) {\r
+                                       return self.add(ctrl);\r
                                }\r
+                       }\r
 \r
-                               clone.removeAttribute('id');\r
+                       // Create sepearator\r
+                       if (name === "|" || name === "separator") {\r
+                               return self.createSeparator();\r
                        }\r
-               } while (node = node.parentNode);\r
 \r
-               if (clone)\r
-                       return {wrapper : clone, inner : inner};\r
-       };\r
+                       // Create control from button collection\r
+                       if (editor.buttons && (ctrl = editor.buttons[name])) {\r
+                               return self.createButton(name, ctrl);\r
+                       }\r
 \r
-       // Checks if the selection/caret is at the end of the specified block element\r
-       function isAtEnd(rng, par) {\r
-               var rng2 = par.ownerDocument.createRange();\r
+                       return self.add(ctrl);\r
+               },\r
 \r
-               rng2.setStart(rng.endContainer, rng.endOffset);\r
-               rng2.setEndAfter(par);\r
+               createDropMenu : function(id, s, cc) {\r
+                       var t = this, ed = t.editor, c, bm, v, cls;\r
 \r
-               // Get number of characters to the right of the cursor if it's zero then we are at the end and need to merge the next block element\r
-               return rng2.cloneContents().textContent.length == 0;\r
-       };\r
+                       s = extend({\r
+                               'class' : 'mceDropDown',\r
+                               constrain : ed.settings.constrain_menus\r
+                       }, s);\r
 \r
-       function splitList(selection, dom, li) {\r
-               var listBlock, block;\r
+                       s['class'] = s['class'] + ' ' + ed.getParam('skin') + 'Skin';\r
+                       if (v = ed.getParam('skin_variant'))\r
+                               s['class'] += ' ' + ed.getParam('skin') + 'Skin' + v.substring(0, 1).toUpperCase() + v.substring(1);\r
 \r
-               if (dom.isEmpty(li)) {\r
-                       listBlock = dom.getParent(li, 'ul,ol');\r
+                       s['class'] += ed.settings.directionality == "rtl" ? ' mceRtl' : '';\r
 \r
-                       if (!dom.getParent(listBlock.parentNode, 'ul,ol')) {\r
-                               dom.split(listBlock, li);\r
-                               block = dom.create('p', 0, '<br data-mce-bogus="1" />');\r
-                               dom.replace(block, li);\r
-                               selection.select(block, 1);\r
-                       }\r
+                       id = t.prefix + id;\r
+                       cls = cc || t._cls.dropmenu || tinymce.ui.DropMenu;\r
+                       c = t.controls[id] = new cls(id, s);\r
+                       c.onAddItem.add(function(c, o) {\r
+                               var s = o.settings;\r
 \r
-                       return FALSE;\r
-               }\r
+                               s.title = ed.getLang(s.title, s.title);\r
 \r
-               return TRUE;\r
-       };\r
+                               if (!s.onclick) {\r
+                                       s.onclick = function(v) {\r
+                                               if (s.cmd)\r
+                                                       ed.execCommand(s.cmd, s.ui || false, s.value);\r
+                                       };\r
+                               }\r
+                       });\r
 \r
-       tinymce.create('tinymce.ForceBlocks', {\r
-               ForceBlocks : function(ed) {\r
-                       var t = this, s = ed.settings, elm;\r
+                       ed.onRemove.add(function() {\r
+                               c.destroy();\r
+                       });\r
 \r
-                       t.editor = ed;\r
-                       t.dom = ed.dom;\r
-                       elm = (s.forced_root_block || 'p').toLowerCase();\r
-                       s.element = elm.toUpperCase();\r
-\r
-                       ed.onPreInit.add(t.setup, t);\r
-\r
-                       if (s.forced_root_block) {\r
-                               ed.onInit.add(t.forceRoots, t);\r
-                               ed.onSetContent.add(t.forceRoots, t);\r
-                               ed.onBeforeGetContent.add(t.forceRoots, t);\r
-                               ed.onExecCommand.add(function(ed, cmd) {\r
-                                       if (cmd == 'mceInsertContent') {\r
-                                               t.forceRoots();\r
-                                               ed.nodeChanged();\r
+                       // Fix for bug #1897785, #1898007\r
+                       if (tinymce.isIE) {\r
+                               c.onShowMenu.add(function() {\r
+                                       // IE 8 needs focus in order to store away a range with the current collapsed caret location\r
+                                       ed.focus();\r
+\r
+                                       bm = ed.selection.getBookmark(1);\r
+                               });\r
+\r
+                               c.onHideMenu.add(function() {\r
+                                       if (bm) {\r
+                                               ed.selection.moveToBookmark(bm);\r
+                                               bm = 0;\r
                                        }\r
                                });\r
                        }\r
+\r
+                       return t.add(c);\r
                },\r
 \r
-               setup : function() {\r
-                       var t = this, ed = t.editor, s = ed.settings, dom = ed.dom, selection = ed.selection;\r
+               createListBox : function(id, s, cc) {\r
+                       var t = this, ed = t.editor, cmd, c, cls;\r
 \r
-                       // Force root blocks when typing and when getting output\r
-                       if (s.forced_root_block) {\r
-                               ed.onBeforeExecCommand.add(t.forceRoots, t);\r
-                               ed.onKeyUp.add(t.forceRoots, t);\r
-                               ed.onPreProcess.add(t.forceRoots, t);\r
-                       }\r
+                       if (t.get(id))\r
+                               return null;\r
 \r
-                       if (s.force_br_newlines) {\r
-                               // Force IE to produce BRs on enter\r
-                               if (isIE) {\r
-                                       ed.onKeyPress.add(function(ed, e) {\r
-                                               var n;\r
+                       s.title = ed.translate(s.title);\r
+                       s.scope = s.scope || ed;\r
 \r
-                                               if (e.keyCode == 13 && selection.getNode().nodeName != 'LI') {\r
-                                                       selection.setContent('<br id="__" /> ', {format : 'raw'});\r
-                                                       n = dom.get('__');\r
-                                                       n.removeAttribute('id');\r
-                                                       selection.select(n);\r
-                                                       selection.collapse();\r
-                                                       return Event.cancel(e);\r
-                                               }\r
-                                       });\r
-                               }\r
+                       if (!s.onselect) {\r
+                               s.onselect = function(v) {\r
+                                       ed.execCommand(s.cmd, s.ui || false, v || s.value);\r
+                               };\r
                        }\r
 \r
-                       if (s.force_p_newlines) {\r
-                               if (!isIE) {\r
-                                       ed.onKeyPress.add(function(ed, e) {\r
-                                               if (e.keyCode == 13 && !e.shiftKey && !t.insertPara(e))\r
-                                                       Event.cancel(e);\r
-                                       });\r
-                               } else {\r
-                                       // Ungly hack to for IE to preserve the formatting when you press\r
-                                       // enter at the end of a block element with formatted contents\r
-                                       // This logic overrides the browsers default logic with\r
-                                       // custom logic that enables us to control the output\r
-                                       tinymce.addUnload(function() {\r
-                                               t._previousFormats = 0; // Fix IE leak\r
-                                       });\r
-\r
-                                       ed.onKeyPress.add(function(ed, e) {\r
-                                               t._previousFormats = 0;\r
+                       s = extend({\r
+                               title : s.title,\r
+                               'class' : 'mce_' + id,\r
+                               scope : s.scope,\r
+                               control_manager : t\r
+                       }, s);\r
 \r
-                                               // Clone the current formats, this will later be applied to the new block contents\r
-                                               if (e.keyCode == 13 && !e.shiftKey && ed.selection.isCollapsed() && s.keep_styles)\r
-                                                       t._previousFormats = cloneFormats(ed.selection.getStart());\r
-                                       });\r
+                       id = t.prefix + id;\r
 \r
-                                       ed.onKeyUp.add(function(ed, e) {\r
-                                               // Let IE break the element and the wrap the new caret location in the previous formats\r
-                                               if (e.keyCode == 13 && !e.shiftKey) {\r
-                                                       var parent = ed.selection.getStart(), fmt = t._previousFormats;\r
 \r
-                                                       // Parent is an empty block\r
-                                                       if (!parent.hasChildNodes() && fmt) {\r
-                                                               parent = dom.getParent(parent, dom.isBlock);\r
+                       function useNativeListForAccessibility(ed) {\r
+                               return ed.settings.use_accessible_selects && !tinymce.isGecko\r
+                       }\r
 \r
-                                                               if (parent && parent.nodeName != 'LI') {\r
-                                                                       parent.innerHTML = '';\r
+                       if (ed.settings.use_native_selects || useNativeListForAccessibility(ed))\r
+                               c = new tinymce.ui.NativeListBox(id, s);\r
+                       else {\r
+                               cls = cc || t._cls.listbox || tinymce.ui.ListBox;\r
+                               c = new cls(id, s, ed);\r
+                       }\r
 \r
-                                                                       if (t._previousFormats) {\r
-                                                                               parent.appendChild(fmt.wrapper);\r
-                                                                               fmt.inner.innerHTML = '\uFEFF';\r
-                                                                       } else\r
-                                                                               parent.innerHTML = '\uFEFF';\r
+                       t.controls[id] = c;\r
 \r
-                                                                       selection.select(parent, 1);\r
-                                                                       selection.collapse(true);\r
-                                                                       ed.getDoc().execCommand('Delete', false, null);\r
-                                                                       t._previousFormats = 0;\r
-                                                               }\r
-                                                       }\r
-                                               }\r
+                       // Fix focus problem in Safari\r
+                       if (tinymce.isWebKit) {\r
+                               c.onPostRender.add(function(c, n) {\r
+                                       // Store bookmark on mousedown\r
+                                       Event.add(n, 'mousedown', function() {\r
+                                               ed.bookmark = ed.selection.getBookmark(1);\r
                                        });\r
-                               }\r
 \r
-                               if (isGecko) {\r
-                                       ed.onKeyDown.add(function(ed, e) {\r
-                                               if ((e.keyCode == 8 || e.keyCode == 46) && !e.shiftKey)\r
-                                                       t.backspaceDelete(e, e.keyCode == 8);\r
+                                       // Restore on focus, since it might be lost\r
+                                       Event.add(n, 'focus', function() {\r
+                                               ed.selection.moveToBookmark(ed.bookmark);\r
+                                               ed.bookmark = null;\r
                                        });\r
-                               }\r
+                               });\r
                        }\r
 \r
-                       // Workaround for missing shift+enter support, http://bugs.webkit.org/show_bug.cgi?id=16973\r
-                       if (tinymce.isWebKit) {\r
-                               function insertBr(ed) {\r
-                                       var rng = selection.getRng(), br, div = dom.create('div', null, ' '), divYPos, vpHeight = dom.getViewPort(ed.getWin()).h;\r
+                       if (c.hideMenu)\r
+                               ed.onMouseDown.add(c.hideMenu, c);\r
 \r
-                                       // Insert BR element\r
-                                       rng.insertNode(br = dom.create('br'));\r
+                       return t.add(c);\r
+               },\r
 \r
-                                       // Place caret after BR\r
-                                       rng.setStartAfter(br);\r
-                                       rng.setEndAfter(br);\r
-                                       selection.setRng(rng);\r
+               createButton : function(id, s, cc) {\r
+                       var t = this, ed = t.editor, o, c, cls;\r
 \r
-                                       // Could not place caret after BR then insert an nbsp entity and move the caret\r
-                                       if (selection.getSel().focusNode == br.previousSibling) {\r
-                                               selection.select(dom.insertAfter(dom.doc.createTextNode('\u00a0'), br));\r
-                                               selection.collapse(TRUE);\r
-                                       }\r
+                       if (t.get(id))\r
+                               return null;\r
 \r
-                                       // Create a temporary DIV after the BR and get the position as it\r
-                                       // seems like getPos() returns 0 for text nodes and BR elements.\r
-                                       dom.insertAfter(div, br);\r
-                                       divYPos = dom.getPos(div).y;\r
-                                       dom.remove(div);\r
+                       s.title = ed.translate(s.title);\r
+                       s.label = ed.translate(s.label);\r
+                       s.scope = s.scope || ed;\r
 \r
-                                       // Scroll to new position, scrollIntoView can't be used due to bug: http://bugs.webkit.org/show_bug.cgi?id=16117\r
-                                       if (divYPos > vpHeight) // It is not necessary to scroll if the DIV is inside the view port.\r
-                                               ed.getWin().scrollTo(0, divYPos);\r
+                       if (!s.onclick && !s.menu_button) {\r
+                               s.onclick = function() {\r
+                                       ed.execCommand(s.cmd, s.ui || false, s.value);\r
                                };\r
+                       }\r
 \r
-                               ed.onKeyPress.add(function(ed, e) {\r
-                                       if (e.keyCode == 13 && (e.shiftKey || (s.force_br_newlines && !dom.getParent(selection.getNode(), 'h1,h2,h3,h4,h5,h6,ol,ul')))) {\r
-                                               insertBr(ed);\r
-                                               Event.cancel(e);\r
-                                       }\r
-                               });\r
+                       s = extend({\r
+                               title : s.title,\r
+                               'class' : 'mce_' + id,\r
+                               unavailable_prefix : ed.getLang('unavailable', ''),\r
+                               scope : s.scope,\r
+                               control_manager : t\r
+                       }, s);\r
+\r
+                       id = t.prefix + id;\r
+\r
+                       if (s.menu_button) {\r
+                               cls = cc || t._cls.menubutton || tinymce.ui.MenuButton;\r
+                               c = new cls(id, s, ed);\r
+                               ed.onMouseDown.add(c.hideMenu, c);\r
+                       } else {\r
+                               cls = t._cls.button || tinymce.ui.Button;\r
+                               c = new cls(id, s, ed);\r
                        }\r
 \r
-                       // IE specific fixes\r
-                       if (isIE) {\r
-                               // Replaces IE:s auto generated paragraphs with the specified element name\r
-                               if (s.element != 'P') {\r
-                                       ed.onKeyPress.add(function(ed, e) {\r
-                                               t.lastElm = selection.getNode().nodeName;\r
-                                       });\r
+                       return t.add(c);\r
+               },\r
 \r
-                                       ed.onKeyUp.add(function(ed, e) {\r
-                                               var bl, n = selection.getNode(), b = ed.getBody();\r
+               createMenuButton : function(id, s, cc) {\r
+                       s = s || {};\r
+                       s.menu_button = 1;\r
 \r
-                                               if (b.childNodes.length === 1 && n.nodeName == 'P') {\r
-                                                       n = dom.rename(n, s.element);\r
-                                                       selection.select(n);\r
-                                                       selection.collapse();\r
-                                                       ed.nodeChanged();\r
-                                               } else if (e.keyCode == 13 && !e.shiftKey && t.lastElm != 'P') {\r
-                                                       bl = dom.getParent(n, 'p');\r
+                       return this.createButton(id, s, cc);\r
+               },\r
 \r
-                                                       if (bl) {\r
-                                                               dom.rename(bl, s.element);\r
-                                                               ed.nodeChanged();\r
-                                                       }\r
-                                               }\r
-                                       });\r
-                               }\r
+               createSplitButton : function(id, s, cc) {\r
+                       var t = this, ed = t.editor, cmd, c, cls;\r
+\r
+                       if (t.get(id))\r
+                               return null;\r
+\r
+                       s.title = ed.translate(s.title);\r
+                       s.scope = s.scope || ed;\r
+\r
+                       if (!s.onclick) {\r
+                               s.onclick = function(v) {\r
+                                       ed.execCommand(s.cmd, s.ui || false, v || s.value);\r
+                               };\r
+                       }\r
+\r
+                       if (!s.onselect) {\r
+                               s.onselect = function(v) {\r
+                                       ed.execCommand(s.cmd, s.ui || false, v || s.value);\r
+                               };\r
                        }\r
-               },\r
-\r
-               find : function(n, t, s) {\r
-                       var ed = this.editor, w = ed.getDoc().createTreeWalker(n, 4, null, FALSE), c = -1;\r
-\r
-                       while (n = w.nextNode()) {\r
-                               c++;\r
 \r
-                               // Index by node\r
-                               if (t == 0 && n == s)\r
-                                       return c;\r
+                       s = extend({\r
+                               title : s.title,\r
+                               'class' : 'mce_' + id,\r
+                               scope : s.scope,\r
+                               control_manager : t\r
+                       }, s);\r
 \r
-                               // Node by index\r
-                               if (t == 1 && c == s)\r
-                                       return n;\r
-                       }\r
+                       id = t.prefix + id;\r
+                       cls = cc || t._cls.splitbutton || tinymce.ui.SplitButton;\r
+                       c = t.add(new cls(id, s, ed));\r
+                       ed.onMouseDown.add(c.hideMenu, c);\r
 \r
-                       return -1;\r
+                       return c;\r
                },\r
 \r
-               forceRoots : function(ed, e) {\r
-                       var t = this, ed = t.editor, b = ed.getBody(), d = ed.getDoc(), se = ed.selection, s = se.getSel(), r = se.getRng(), si = -2, ei, so, eo, tr, c = -0xFFFFFF;\r
-                       var nx, bl, bp, sp, le, nl = b.childNodes, i, n, eid;\r
+               createColorSplitButton : function(id, s, cc) {\r
+                       var t = this, ed = t.editor, cmd, c, cls, bm;\r
 \r
-                       // Fix for bug #1863847\r
-                       //if (e && e.keyCode == 13)\r
-                       //      return TRUE;\r
+                       if (t.get(id))\r
+                               return null;\r
 \r
-                       // Wrap non blocks into blocks\r
-                       for (i = nl.length - 1; i >= 0; i--) {\r
-                               nx = nl[i];\r
+                       s.title = ed.translate(s.title);\r
+                       s.scope = s.scope || ed;\r
 \r
-                               // Ignore internal elements\r
-                               if (nx.nodeType === 1 && nx.getAttribute('data-mce-type')) {\r
-                                       bl = null;\r
-                                       continue;\r
-                               }\r
+                       if (!s.onclick) {\r
+                               s.onclick = function(v) {\r
+                                       if (tinymce.isIE)\r
+                                               bm = ed.selection.getBookmark(1);\r
 \r
-                               // Is text or non block element\r
-                               if (nx.nodeType === 3 || (!t.dom.isBlock(nx) && nx.nodeType !== 8 && !/^(script|mce:script|style|mce:style)$/i.test(nx.nodeName))) {\r
-                                       if (!bl) {\r
-                                               // Create new block but ignore whitespace\r
-                                               if (nx.nodeType != 3 || /[^\s]/g.test(nx.nodeValue)) {\r
-                                                       // Store selection\r
-                                                       if (si == -2 && r) {\r
-                                                               if (!isIE || r.setStart) {\r
-                                                                       // If selection is element then mark it\r
-                                                                       if (r.startContainer.nodeType == 1 && (n = r.startContainer.childNodes[r.startOffset]) && n.nodeType == 1) {\r
-                                                                               // Save the id of the selected element\r
-                                                                               eid = n.getAttribute("id");\r
-                                                                               n.setAttribute("id", "__mce");\r
-                                                                       } else {\r
-                                                                               // If element is inside body, might not be the case in contentEdiable mode\r
-                                                                               if (ed.dom.getParent(r.startContainer, function(e) {return e === b;})) {\r
-                                                                                       so = r.startOffset;\r
-                                                                                       eo = r.endOffset;\r
-                                                                                       si = t.find(b, 0, r.startContainer);\r
-                                                                                       ei = t.find(b, 0, r.endContainer);\r
-                                                                               }\r
-                                                                       }\r
-                                                               } else {\r
-                                                                       // Force control range into text range\r
-                                                                       if (r.item) {\r
-                                                                               tr = d.body.createTextRange();\r
-                                                                               tr.moveToElementText(r.item(0));\r
-                                                                               r = tr;\r
-                                                                       }\r
+                                       ed.execCommand(s.cmd, s.ui || false, v || s.value);\r
+                               };\r
+                       }\r
 \r
-                                                                       tr = d.body.createTextRange();\r
-                                                                       tr.moveToElementText(b);\r
-                                                                       tr.collapse(1);\r
-                                                                       bp = tr.move('character', c) * -1;\r
+                       if (!s.onselect) {\r
+                               s.onselect = function(v) {\r
+                                       ed.execCommand(s.cmd, s.ui || false, v || s.value);\r
+                               };\r
+                       }\r
 \r
-                                                                       tr = r.duplicate();\r
-                                                                       tr.collapse(1);\r
-                                                                       sp = tr.move('character', c) * -1;\r
+                       s = extend({\r
+                               title : s.title,\r
+                               'class' : 'mce_' + id,\r
+                               'menu_class' : ed.getParam('skin') + 'Skin',\r
+                               scope : s.scope,\r
+                               more_colors_title : ed.getLang('more_colors')\r
+                       }, s);\r
 \r
-                                                                       tr = r.duplicate();\r
-                                                                       tr.collapse(0);\r
-                                                                       le = (tr.move('character', c) * -1) - sp;\r
+                       id = t.prefix + id;\r
+                       cls = cc || t._cls.colorsplitbutton || tinymce.ui.ColorSplitButton;\r
+                       c = new cls(id, s, ed);\r
+                       ed.onMouseDown.add(c.hideMenu, c);\r
 \r
-                                                                       si = sp - bp;\r
-                                                                       ei = le;\r
-                                                               }\r
-                                                       }\r
+                       // Remove the menu element when the editor is removed\r
+                       ed.onRemove.add(function() {\r
+                               c.destroy();\r
+                       });\r
 \r
-                                                       // Uses replaceChild instead of cloneNode since it removes selected attribute from option elements on IE\r
-                                                       // See: http://support.microsoft.com/kb/829907\r
-                                                       bl = ed.dom.create(ed.settings.forced_root_block);\r
-                                                       nx.parentNode.replaceChild(bl, nx);\r
-                                                       bl.appendChild(nx);\r
-                                               }\r
-                                       } else {\r
-                                               if (bl.hasChildNodes())\r
-                                                       bl.insertBefore(nx, bl.firstChild);\r
-                                               else\r
-                                                       bl.appendChild(nx);\r
+                       // Fix for bug #1897785, #1898007\r
+                       if (tinymce.isIE) {\r
+                               c.onShowMenu.add(function() {\r
+                                       // IE 8 needs focus in order to store away a range with the current collapsed caret location\r
+                                       ed.focus();\r
+                                       bm = ed.selection.getBookmark(1);\r
+                               });\r
+\r
+                               c.onHideMenu.add(function() {\r
+                                       if (bm) {\r
+                                               ed.selection.moveToBookmark(bm);\r
+                                               bm = 0;\r
                                        }\r
-                               } else\r
-                                       bl = null; // Time to create new block\r
+                               });\r
                        }\r
 \r
-                       // Restore selection\r
-                       if (si != -2) {\r
-                               if (!isIE || r.setStart) {\r
-                                       bl = b.getElementsByTagName(ed.settings.element)[0];\r
-                                       r = d.createRange();\r
+                       return t.add(c);\r
+               },\r
 \r
-                                       // Select last location or generated block\r
-                                       if (si != -1)\r
-                                               r.setStart(t.find(b, 1, si), so);\r
-                                       else\r
-                                               r.setStart(bl, 0);\r
+               createToolbar : function(id, s, cc) {\r
+                       var c, t = this, cls;\r
 \r
-                                       // Select last location or generated block\r
-                                       if (ei != -1)\r
-                                               r.setEnd(t.find(b, 1, ei), eo);\r
-                                       else\r
-                                               r.setEnd(bl, 0);\r
+                       id = t.prefix + id;\r
+                       cls = cc || t._cls.toolbar || tinymce.ui.Toolbar;\r
+                       c = new cls(id, s, t.editor);\r
 \r
-                                       if (s) {\r
-                                               s.removeAllRanges();\r
-                                               s.addRange(r);\r
-                                       }\r
-                               } else {\r
-                                       try {\r
-                                               r = s.createRange();\r
-                                               r.moveToElementText(b);\r
-                                               r.collapse(1);\r
-                                               r.moveStart('character', si);\r
-                                               r.moveEnd('character', ei);\r
-                                               r.select();\r
-                                       } catch (ex) {\r
-                                               // Ignore\r
-                                       }\r
-                               }\r
-                       } else if ((!isIE || r.setStart) && (n = ed.dom.get('__mce'))) {\r
-                               // Restore the id of the selected element\r
-                               if (eid)\r
-                                       n.setAttribute('id', eid);\r
-                               else\r
-                                       n.removeAttribute('id');\r
+                       if (t.get(id))\r
+                               return null;\r
 \r
-                               // Move caret before selected element\r
-                               r = d.createRange();\r
-                               r.setStartBefore(n);\r
-                               r.setEndBefore(n);\r
-                               se.setRng(r);\r
-                       }\r
+                       return t.add(c);\r
                },\r
-\r
-               getParentBlock : function(n) {\r
-                       var d = this.dom;\r
-\r
-                       return d.getParent(n, d.isBlock);\r
+               \r
+               createToolbarGroup : function(id, s, cc) {\r
+                       var c, t = this, cls;\r
+                       id = t.prefix + id;\r
+                       cls = cc || this._cls.toolbarGroup || tinymce.ui.ToolbarGroup;\r
+                       c = new cls(id, s, t.editor);\r
+                       \r
+                       if (t.get(id))\r
+                               return null;\r
+                       \r
+                       return t.add(c);\r
                },\r
 \r
-               insertPara : function(e) {\r
-                       var t = this, ed = t.editor, dom = ed.dom, d = ed.getDoc(), se = ed.settings, s = ed.selection.getSel(), r = s.getRangeAt(0), b = d.body;\r
-                       var rb, ra, dir, sn, so, en, eo, sb, eb, bn, bef, aft, sc, ec, n, vp = dom.getViewPort(ed.getWin()), y, ch, car;\r
+               createSeparator : function(cc) {\r
+                       var cls = cc || this._cls.separator || tinymce.ui.Separator;\r
 \r
-                       ed.undoManager.beforeChange();\r
+                       return new cls();\r
+               },\r
 \r
-                       // If root blocks are forced then use Operas default behavior since it's really good\r
-// Removed due to bug: #1853816\r
-//                     if (se.forced_root_block && isOpera)\r
-//                             return TRUE;\r
+               setControlType : function(n, c) {\r
+                       return this._cls[n.toLowerCase()] = c;\r
+               },\r
+       \r
+               destroy : function() {\r
+                       each(this.controls, function(c) {\r
+                               c.destroy();\r
+                       });\r
 \r
-                       // Setup before range\r
-                       rb = d.createRange();\r
+                       this.controls = null;\r
+               }\r
+       });\r
+})(tinymce);\r
 \r
-                       // If is before the first block element and in body, then move it into first block element\r
-                       rb.setStart(s.anchorNode, s.anchorOffset);\r
-                       rb.collapse(TRUE);\r
+(function(tinymce) {\r
+       var Dispatcher = tinymce.util.Dispatcher, each = tinymce.each, isIE = tinymce.isIE, isOpera = tinymce.isOpera;\r
 \r
-                       // Setup after range\r
-                       ra = d.createRange();\r
+       tinymce.create('tinymce.WindowManager', {\r
+               WindowManager : function(ed) {\r
+                       var t = this;\r
 \r
-                       // If is before the first block element and in body, then move it into first block element\r
-                       ra.setStart(s.focusNode, s.focusOffset);\r
-                       ra.collapse(TRUE);\r
+                       t.editor = ed;\r
+                       t.onOpen = new Dispatcher(t);\r
+                       t.onClose = new Dispatcher(t);\r
+                       t.params = {};\r
+                       t.features = {};\r
+               },\r
 \r
-                       // Setup start/end points\r
-                       dir = rb.compareBoundaryPoints(rb.START_TO_END, ra) < 0;\r
-                       sn = dir ? s.anchorNode : s.focusNode;\r
-                       so = dir ? s.anchorOffset : s.focusOffset;\r
-                       en = dir ? s.focusNode : s.anchorNode;\r
-                       eo = dir ? s.focusOffset : s.anchorOffset;\r
+               open : function(s, p) {\r
+                       var t = this, f = '', x, y, mo = t.editor.settings.dialog_type == 'modal', w, sw, sh, vp = tinymce.DOM.getViewPort(), u;\r
 \r
-                       // If selection is in empty table cell\r
-                       if (sn === en && /^(TD|TH)$/.test(sn.nodeName)) {\r
-                               if (sn.firstChild.nodeName == 'BR')\r
-                                       dom.remove(sn.firstChild); // Remove BR\r
+                       // Default some options\r
+                       s = s || {};\r
+                       p = p || {};\r
+                       sw = isOpera ? vp.w : screen.width; // Opera uses windows inside the Opera window\r
+                       sh = isOpera ? vp.h : screen.height;\r
+                       s.name = s.name || 'mc_' + new Date().getTime();\r
+                       s.width = parseInt(s.width || 320);\r
+                       s.height = parseInt(s.height || 240);\r
+                       s.resizable = true;\r
+                       s.left = s.left || parseInt(sw / 2.0) - (s.width / 2.0);\r
+                       s.top = s.top || parseInt(sh / 2.0) - (s.height / 2.0);\r
+                       p.inline = false;\r
+                       p.mce_width = s.width;\r
+                       p.mce_height = s.height;\r
+                       p.mce_auto_focus = s.auto_focus;\r
 \r
-                               // Create two new block elements\r
-                               if (sn.childNodes.length == 0) {\r
-                                       ed.dom.add(sn, se.element, null, '<br />');\r
-                                       aft = ed.dom.add(sn, se.element, null, '<br />');\r
-                               } else {\r
-                                       n = sn.innerHTML;\r
-                                       sn.innerHTML = '';\r
-                                       ed.dom.add(sn, se.element, null, n);\r
-                                       aft = ed.dom.add(sn, se.element, null, '<br />');\r
+                       if (mo) {\r
+                               if (isIE) {\r
+                                       s.center = true;\r
+                                       s.help = false;\r
+                                       s.dialogWidth = s.width + 'px';\r
+                                       s.dialogHeight = s.height + 'px';\r
+                                       s.scroll = s.scrollbars || false;\r
                                }\r
-\r
-                               // Move caret into the last one\r
-                               r = d.createRange();\r
-                               r.selectNodeContents(aft);\r
-                               r.collapse(1);\r
-                               ed.selection.setRng(r);\r
-\r
-                               return FALSE;\r
                        }\r
 \r
-                       // If the caret is in an invalid location in FF we need to move it into the first block\r
-                       if (sn == b && en == b && b.firstChild && ed.dom.isBlock(b.firstChild)) {\r
-                               sn = en = sn.firstChild;\r
-                               so = eo = 0;\r
-                               rb = d.createRange();\r
-                               rb.setStart(sn, 0);\r
-                               ra = d.createRange();\r
-                               ra.setStart(en, 0);\r
-                       }\r
-\r
-                       // Never use body as start or end node\r
-                       sn = sn.nodeName == "HTML" ? d.body : sn; // Fix for Opera bug: https://bugs.opera.com/show_bug.cgi?id=273224&comments=yes\r
-                       sn = sn.nodeName == "BODY" ? sn.firstChild : sn;\r
-                       en = en.nodeName == "HTML" ? d.body : en; // Fix for Opera bug: https://bugs.opera.com/show_bug.cgi?id=273224&comments=yes\r
-                       en = en.nodeName == "BODY" ? en.firstChild : en;\r
-\r
-                       // Get start and end blocks\r
-                       sb = t.getParentBlock(sn);\r
-                       eb = t.getParentBlock(en);\r
-                       bn = sb ? sb.nodeName : se.element; // Get block name to create\r
-\r
-                       // Return inside list use default browser behavior\r
-                       if (n = t.dom.getParent(sb, 'li,pre')) {\r
-                               if (n.nodeName == 'LI')\r
-                                       return splitList(ed.selection, t.dom, n);\r
+                       // Build features string\r
+                       each(s, function(v, k) {\r
+                               if (tinymce.is(v, 'boolean'))\r
+                                       v = v ? 'yes' : 'no';\r
 \r
-                               return TRUE;\r
-                       }\r
+                               if (!/^(name|url)$/.test(k)) {\r
+                                       if (isIE && mo)\r
+                                               f += (f ? ';' : '') + k + ':' + v;\r
+                                       else\r
+                                               f += (f ? ',' : '') + k + '=' + v;\r
+                               }\r
+                       });\r
 \r
-                       // If caption or absolute layers then always generate new blocks within\r
-                       if (sb && (sb.nodeName == 'CAPTION' || /absolute|relative|fixed/gi.test(dom.getStyle(sb, 'position', 1)))) {\r
-                               bn = se.element;\r
-                               sb = null;\r
-                       }\r
+                       t.features = s;\r
+                       t.params = p;\r
+                       t.onOpen.dispatch(t, s, p);\r
 \r
-                       // If caption or absolute layers then always generate new blocks within\r
-                       if (eb && (eb.nodeName == 'CAPTION' || /absolute|relative|fixed/gi.test(dom.getStyle(sb, 'position', 1)))) {\r
-                               bn = se.element;\r
-                               eb = null;\r
-                       }\r
+                       u = s.url || s.file;\r
+                       u = tinymce._addVer(u);\r
 \r
-                       // Use P instead\r
-                       if (/(TD|TABLE|TH|CAPTION)/.test(bn) || (sb && bn == "DIV" && /left|right/gi.test(dom.getStyle(sb, 'float', 1)))) {\r
-                               bn = se.element;\r
-                               sb = eb = null;\r
+                       try {\r
+                               if (isIE && mo) {\r
+                                       w = 1;\r
+                                       window.showModalDialog(u, window, f);\r
+                               } else\r
+                                       w = window.open(u, s.name, f);\r
+                       } catch (ex) {\r
+                               // Ignore\r
                        }\r
 \r
-                       // Setup new before and after blocks\r
-                       bef = (sb && sb.nodeName == bn) ? sb.cloneNode(0) : ed.dom.create(bn);\r
-                       aft = (eb && eb.nodeName == bn) ? eb.cloneNode(0) : ed.dom.create(bn);\r
+                       if (!w)\r
+                               alert(t.editor.getLang('popup_blocked'));\r
+               },\r
 \r
-                       // Remove id from after clone\r
-                       aft.removeAttribute('id');\r
+               close : function(w) {\r
+                       w.close();\r
+                       this.onClose.dispatch(this);\r
+               },\r
 \r
-                       // Is header and cursor is at the end, then force paragraph under\r
-                       if (/^(H[1-6])$/.test(bn) && isAtEnd(r, sb))\r
-                               aft = ed.dom.create(se.element);\r
+               createInstance : function(cl, a, b, c, d, e) {\r
+                       var f = tinymce.resolve(cl);\r
 \r
-                       // Find start chop node\r
-                       n = sc = sn;\r
-                       do {\r
-                               if (n == b || n.nodeType == 9 || t.dom.isBlock(n) || /(TD|TABLE|TH|CAPTION)/.test(n.nodeName))\r
-                                       break;\r
+                       return new f(a, b, c, d, e);\r
+               },\r
 \r
-                               sc = n;\r
-                       } while ((n = n.previousSibling ? n.previousSibling : n.parentNode));\r
+               confirm : function(t, cb, s, w) {\r
+                       w = w || window;\r
 \r
-                       // Find end chop node\r
-                       n = ec = en;\r
-                       do {\r
-                               if (n == b || n.nodeType == 9 || t.dom.isBlock(n) || /(TD|TABLE|TH|CAPTION)/.test(n.nodeName))\r
-                                       break;\r
+                       cb.call(s || this, w.confirm(this._decode(this.editor.getLang(t, t))));\r
+               },\r
 \r
-                               ec = n;\r
-                       } while ((n = n.nextSibling ? n.nextSibling : n.parentNode));\r
+               alert : function(tx, cb, s, w) {\r
+                       var t = this;\r
 \r
-                       // Place first chop part into before block element\r
-                       if (sc.nodeName == bn)\r
-                               rb.setStart(sc, 0);\r
-                       else\r
-                               rb.setStartBefore(sc);\r
+                       w = w || window;\r
+                       w.alert(t._decode(t.editor.getLang(tx, tx)));\r
 \r
-                       rb.setEnd(sn, so);\r
-                       bef.appendChild(rb.cloneContents() || d.createTextNode('')); // Empty text node needed for Safari\r
+                       if (cb)\r
+                               cb.call(s || t);\r
+               },\r
 \r
-                       // Place secnd chop part within new block element\r
-                       try {\r
-                               ra.setEndAfter(ec);\r
-                       } catch(ex) {\r
-                               //console.debug(s.focusNode, s.focusOffset);\r
-                       }\r
+               resizeBy : function(dw, dh, win) {\r
+                       win.resizeBy(dw, dh);\r
+               },\r
 \r
-                       ra.setStart(en, eo);\r
-                       aft.appendChild(ra.cloneContents() || d.createTextNode('')); // Empty text node needed for Safari\r
+               // Internal functions\r
 \r
-                       // Create range around everything\r
-                       r = d.createRange();\r
-                       if (!sc.previousSibling && sc.parentNode.nodeName == bn) {\r
-                               r.setStartBefore(sc.parentNode);\r
-                       } else {\r
-                               if (rb.startContainer.nodeName == bn && rb.startOffset == 0)\r
-                                       r.setStartBefore(rb.startContainer);\r
-                               else\r
-                                       r.setStart(rb.startContainer, rb.startOffset);\r
-                       }\r
+               _decode : function(s) {\r
+                       return tinymce.DOM.decode(s).replace(/\\n/g, '\n');\r
+               }\r
+       });\r
+}(tinymce));\r
+(function(tinymce) {\r
+       tinymce.Formatter = function(ed) {\r
+               var formats = {},\r
+                       each = tinymce.each,\r
+                       dom = ed.dom,\r
+                       selection = ed.selection,\r
+                       TreeWalker = tinymce.dom.TreeWalker,\r
+                       rangeUtils = new tinymce.dom.RangeUtils(dom),\r
+                       isValid = ed.schema.isValidChild,\r
+                       isBlock = dom.isBlock,\r
+                       forcedRootBlock = ed.settings.forced_root_block,\r
+                       nodeIndex = dom.nodeIndex,\r
+                       INVISIBLE_CHAR = '\uFEFF',\r
+                       MCE_ATTR_RE = /^(src|href|style)$/,\r
+                       FALSE = false,\r
+                       TRUE = true,\r
+                       formatChangeData,\r
+                       undef,\r
+                       getContentEditable = dom.getContentEditable;\r
 \r
-                       if (!ec.nextSibling && ec.parentNode.nodeName == bn)\r
-                               r.setEndAfter(ec.parentNode);\r
-                       else\r
-                               r.setEnd(ra.endContainer, ra.endOffset);\r
+               function isArray(obj) {\r
+                       return obj instanceof Array;\r
+               };\r
 \r
-                       // Delete and replace it with new block elements\r
-                       r.deleteContents();\r
+               function getParents(node, selector) {\r
+                       return dom.getParents(node, selector, dom.getRoot());\r
+               };\r
 \r
-                       if (isOpera)\r
-                               ed.getWin().scrollTo(0, vp.y);\r
+               function isCaretNode(node) {\r
+                       return node.nodeType === 1 && node.id === '_mce_caret';\r
+               };\r
 \r
-                       // Never wrap blocks in blocks\r
-                       if (bef.firstChild && bef.firstChild.nodeName == bn)\r
-                               bef.innerHTML = bef.firstChild.innerHTML;\r
+               function defaultFormats() {\r
+                       register({\r
+                               alignleft : [\r
+                                       {selector : 'figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'left'}, defaultBlock: 'div'},\r
+                                       {selector : 'img,table', collapsed : false, styles : {'float' : 'left'}}\r
+                               ],\r
 \r
-                       if (aft.firstChild && aft.firstChild.nodeName == bn)\r
-                               aft.innerHTML = aft.firstChild.innerHTML;\r
+                               aligncenter : [\r
+                                       {selector : 'figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'center'}, defaultBlock: 'div'},\r
+                                       {selector : 'img', collapsed : false, styles : {display : 'block', marginLeft : 'auto', marginRight : 'auto'}},\r
+                                       {selector : 'table', collapsed : false, styles : {marginLeft : 'auto', marginRight : 'auto'}}\r
+                               ],\r
 \r
-                       // Padd empty blocks\r
-                       if (dom.isEmpty(bef))\r
-                               bef.innerHTML = '<br />';\r
+                               alignright : [\r
+                                       {selector : 'figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'right'}, defaultBlock: 'div'},\r
+                                       {selector : 'img,table', collapsed : false, styles : {'float' : 'right'}}\r
+                               ],\r
 \r
-                       function appendStyles(e, en) {\r
-                               var nl = [], nn, n, i;\r
+                               alignfull : [\r
+                                       {selector : 'figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'justify'}, defaultBlock: 'div'}\r
+                               ],\r
 \r
-                               e.innerHTML = '';\r
+                               bold : [\r
+                                       {inline : 'strong', remove : 'all'},\r
+                                       {inline : 'span', styles : {fontWeight : 'bold'}},\r
+                                       {inline : 'b', remove : 'all'}\r
+                               ],\r
 \r
-                               // Make clones of style elements\r
-                               if (se.keep_styles) {\r
-                                       n = en;\r
-                                       do {\r
-                                               // We only want style specific elements\r
-                                               if (/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(n.nodeName)) {\r
-                                                       nn = n.cloneNode(FALSE);\r
-                                                       dom.setAttrib(nn, 'id', ''); // Remove ID since it needs to be unique\r
-                                                       nl.push(nn);\r
-                                               }\r
-                                       } while (n = n.parentNode);\r
-                               }\r
+                               italic : [\r
+                                       {inline : 'em', remove : 'all'},\r
+                                       {inline : 'span', styles : {fontStyle : 'italic'}},\r
+                                       {inline : 'i', remove : 'all'}\r
+                               ],\r
 \r
-                               // Append style elements to aft\r
-                               if (nl.length > 0) {\r
-                                       for (i = nl.length - 1, nn = e; i >= 0; i--)\r
-                                               nn = nn.appendChild(nl[i]);\r
+                               underline : [\r
+                                       {inline : 'span', styles : {textDecoration : 'underline'}, exact : true},\r
+                                       {inline : 'u', remove : 'all'}\r
+                               ],\r
 \r
-                                       // Padd most inner style element\r
-                                       nl[0].innerHTML = isOpera ? '\u00a0' : '<br />'; // Extra space for Opera so that the caret can move there\r
-                                       return nl[0]; // Move caret to most inner element\r
-                               } else\r
-                                       e.innerHTML = isOpera ? '\u00a0' : '<br />'; // Extra space for Opera so that the caret can move there\r
-                       };\r
+                               strikethrough : [\r
+                                       {inline : 'span', styles : {textDecoration : 'line-through'}, exact : true},\r
+                                       {inline : 'strike', remove : 'all'}\r
+                               ],\r
 \r
-                       // Fill empty afterblook with current style\r
-                       if (dom.isEmpty(aft))\r
-                               car = appendStyles(aft, en);\r
+                               forecolor : {inline : 'span', styles : {color : '%value'}, wrap_links : false},\r
+                               hilitecolor : {inline : 'span', styles : {backgroundColor : '%value'}, wrap_links : false},\r
+                               fontname : {inline : 'span', styles : {fontFamily : '%value'}},\r
+                               fontsize : {inline : 'span', styles : {fontSize : '%value'}},\r
+                               fontsize_class : {inline : 'span', attributes : {'class' : '%value'}},\r
+                               blockquote : {block : 'blockquote', wrapper : 1, remove : 'all'},\r
+                               subscript : {inline : 'sub'},\r
+                               superscript : {inline : 'sup'},\r
 \r
-                       // Opera needs this one backwards for older versions\r
-                       if (isOpera && parseFloat(opera.version()) < 9.5) {\r
-                               r.insertNode(bef);\r
-                               r.insertNode(aft);\r
-                       } else {\r
-                               r.insertNode(aft);\r
-                               r.insertNode(bef);\r
-                       }\r
+                               link : {inline : 'a', selector : 'a', remove : 'all', split : true, deep : true,\r
+                                       onmatch : function(node) {\r
+                                               return true;\r
+                                       },\r
 \r
-                       // Normalize\r
-                       aft.normalize();\r
-                       bef.normalize();\r
+                                       onformat : function(elm, fmt, vars) {\r
+                                               each(vars, function(value, key) {\r
+                                                       dom.setAttrib(elm, key, value);\r
+                                               });\r
+                                       }\r
+                               },\r
 \r
-                       function first(n) {\r
-                               return d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, FALSE).nextNode() || n;\r
-                       };\r
+                               removeformat : [\r
+                                       {selector : 'b,strong,em,i,font,u,strike', remove : 'all', split : true, expand : false, block_expand : true, deep : true},\r
+                                       {selector : 'span', attributes : ['style', 'class'], remove : 'empty', split : true, expand : false, deep : true},\r
+                                       {selector : '*', attributes : ['style', 'class'], split : false, expand : false, deep : true}\r
+                               ]\r
+                       });\r
 \r
-                       // Move cursor and scroll into view\r
-                       r = d.createRange();\r
-                       r.selectNodeContents(isGecko ? first(car || aft) : car || aft);\r
-                       r.collapse(1);\r
-                       s.removeAllRanges();\r
-                       s.addRange(r);\r
+                       // Register default block formats\r
+                       each('p h1 h2 h3 h4 h5 h6 div address pre div code dt dd samp'.split(/\s/), function(name) {\r
+                               register(name, {block : name, remove : 'all'});\r
+                       });\r
 \r
-                       // 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\r
-                       y = ed.dom.getPos(aft).y;\r
-                       //ch = aft.clientHeight;\r
+                       // Register user defined formats\r
+                       register(ed.settings.formats);\r
+               };\r
 \r
-                       // Is element within viewport\r
-                       if (y < vp.y || y + 25 > vp.y + vp.h) {\r
-                               ed.getWin().scrollTo(0, y < vp.y ? y : y - vp.h + 25); // Needs to be hardcoded to roughly one line of text if a huge text block is broken into two blocks\r
+               function addKeyboardShortcuts() {\r
+                       // Add some inline shortcuts\r
+                       ed.addShortcut('ctrl+b', 'bold_desc', 'Bold');\r
+                       ed.addShortcut('ctrl+i', 'italic_desc', 'Italic');\r
+                       ed.addShortcut('ctrl+u', 'underline_desc', 'Underline');\r
 \r
-                               /*console.debug(\r
-                                       'Element: y=' + y + ', h=' + ch + ', ' +\r
-                                       'Viewport: y=' + vp.y + ", h=" + vp.h + ', bottom=' + (vp.y + vp.h)\r
-                               );*/\r
+                       // BlockFormat shortcuts keys\r
+                       for (var i = 1; i <= 6; i++) {\r
+                               ed.addShortcut('ctrl+' + i, '', ['FormatBlock', false, 'h' + i]);\r
                        }\r
 \r
-                       ed.undoManager.add();\r
-\r
-                       return FALSE;\r
-               },\r
+                       ed.addShortcut('ctrl+7', '', ['FormatBlock', false, 'p']);\r
+                       ed.addShortcut('ctrl+8', '', ['FormatBlock', false, 'div']);\r
+                       ed.addShortcut('ctrl+9', '', ['FormatBlock', false, 'address']);\r
+               };\r
 \r
-               backspaceDelete : function(e, bs) {\r
-                       var t = this, ed = t.editor, b = ed.getBody(), dom = ed.dom, n, se = ed.selection, r = se.getRng(), sc = r.startContainer, n, w, tn, walker;\r
+               // Public functions\r
 \r
-                       // Delete when caret is behind a element doesn't work correctly on Gecko see #3011651\r
-                       if (!bs && r.collapsed && sc.nodeType == 1 && r.startOffset == sc.childNodes.length) {\r
-                               walker = new tinymce.dom.TreeWalker(sc.lastChild, sc);\r
+               function get(name) {\r
+                       return name ? formats[name] : formats;\r
+               };\r
 \r
-                               // Walk the dom backwards until we find a text node\r
-                               for (n = sc.lastChild; n; n = walker.prev()) {\r
-                                       if (n.nodeType == 3) {\r
-                                               r.setStart(n, n.nodeValue.length);\r
-                                               r.collapse(true);\r
-                                               se.setRng(r);\r
-                                               return;\r
-                                       }\r
-                               }\r
-                       }\r
+               function register(name, format) {\r
+                       if (name) {\r
+                               if (typeof(name) !== 'string') {\r
+                                       each(name, function(format, name) {\r
+                                               register(name, format);\r
+                                       });\r
+                               } else {\r
+                                       // Force format into array and add it to internal collection\r
+                                       format = format.length ? format : [format];\r
 \r
-                       // The caret sometimes gets stuck in Gecko if you delete empty paragraphs\r
-                       // This workaround removes the element by hand and moves the caret to the previous element\r
-                       if (sc && ed.dom.isBlock(sc) && !/^(TD|TH)$/.test(sc.nodeName) && bs) {\r
-                               if (sc.childNodes.length == 0 || (sc.childNodes.length == 1 && sc.firstChild.nodeName == 'BR')) {\r
-                                       // Find previous block element\r
-                                       n = sc;\r
-                                       while ((n = n.previousSibling) && !ed.dom.isBlock(n)) ;\r
+                                       each(format, function(format) {\r
+                                               // Set deep to false by default on selector formats this to avoid removing\r
+                                               // alignment on images inside paragraphs when alignment is changed on paragraphs\r
+                                               if (format.deep === undef)\r
+                                                       format.deep = !format.selector;\r
 \r
-                                       if (n) {\r
-                                               if (sc != b.firstChild) {\r
-                                                       // Find last text node\r
-                                                       w = ed.dom.doc.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, FALSE);\r
-                                                       while (tn = w.nextNode())\r
-                                                               n = tn;\r
+                                               // Default to true\r
+                                               if (format.split === undef)\r
+                                                       format.split = !format.selector || format.inline;\r
 \r
-                                                       // Place caret at the end of last text node\r
-                                                       r = ed.getDoc().createRange();\r
-                                                       r.setStart(n, n.nodeValue ? n.nodeValue.length : 0);\r
-                                                       r.setEnd(n, n.nodeValue ? n.nodeValue.length : 0);\r
-                                                       se.setRng(r);\r
+                                               // Default to true\r
+                                               if (format.remove === undef && format.selector && !format.inline)\r
+                                                       format.remove = 'none';\r
 \r
-                                                       // Remove the target container\r
-                                                       ed.dom.remove(sc);\r
+                                               // Mark format as a mixed format inline + block level\r
+                                               if (format.selector && format.inline) {\r
+                                                       format.mixed = true;\r
+                                                       format.block_expand = true;\r
                                                }\r
 \r
-                                               return Event.cancel(e);\r
-                                       }\r
+                                               // Split classes if needed\r
+                                               if (typeof(format.classes) === 'string')\r
+                                                       format.classes = format.classes.split(/\s+/);\r
+                                       });\r
+\r
+                                       formats[name] = format;\r
                                }\r
                        }\r
-               }\r
-       });\r
-})(tinymce);\r
-\r
-(function(tinymce) {\r
-       // Shorten names\r
-       var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, extend = tinymce.extend;\r
-\r
-       tinymce.create('tinymce.ControlManager', {\r
-               ControlManager : function(ed, s) {\r
-                       var t = this, i;\r
+               };\r
 \r
-                       s = s || {};\r
-                       t.editor = ed;\r
-                       t.controls = {};\r
-                       t.onAdd = new tinymce.util.Dispatcher(t);\r
-                       t.onPostRender = new tinymce.util.Dispatcher(t);\r
-                       t.prefix = s.prefix || ed.id + '_';\r
-                       t._cls = {};\r
+               var getTextDecoration = function(node) {\r
+                       var decoration;\r
 \r
-                       t.onPostRender.add(function() {\r
-                               each(t.controls, function(c) {\r
-                                       c.postRender();\r
-                               });\r
+                       ed.dom.getParent(node, function(n) {\r
+                               decoration = ed.dom.getStyle(n, 'text-decoration');\r
+                               return decoration && decoration !== 'none';\r
                        });\r
-               },\r
-\r
-               get : function(id) {\r
-                       return this.controls[this.prefix + id] || this.controls[id];\r
-               },\r
 \r
-               setActive : function(id, s) {\r
-                       var c = null;\r
+                       return decoration;\r
+               };\r
 \r
-                       if (c = this.get(id))\r
-                               c.setActive(s);\r
+               var processUnderlineAndColor = function(node) {\r
+                       var textDecoration;\r
+                       if (node.nodeType === 1 && node.parentNode && node.parentNode.nodeType === 1) {\r
+                               textDecoration = getTextDecoration(node.parentNode);\r
+                               if (ed.dom.getStyle(node, 'color') && textDecoration) {\r
+                                       ed.dom.setStyle(node, 'text-decoration', textDecoration);\r
+                               } else if (ed.dom.getStyle(node, 'textdecoration') === textDecoration) {\r
+                                       ed.dom.setStyle(node, 'text-decoration', null);\r
+                               }\r
+                       }\r
+               };\r
 \r
-                       return c;\r
-               },\r
+               function apply(name, vars, node) {\r
+                       var formatList = get(name), format = formatList[0], bookmark, rng, i, isCollapsed = selection.isCollapsed();\r
 \r
-               setDisabled : function(id, s) {\r
-                       var c = null;\r
+                       function setElementFormat(elm, fmt) {\r
+                               fmt = fmt || format;\r
 \r
-                       if (c = this.get(id))\r
-                               c.setDisabled(s);\r
+                               if (elm) {\r
+                                       if (fmt.onformat) {\r
+                                               fmt.onformat(elm, fmt, vars, node);\r
+                                       }\r
 \r
-                       return c;\r
-               },\r
+                                       each(fmt.styles, function(value, name) {\r
+                                               dom.setStyle(elm, name, replaceVars(value, vars));\r
+                                       });\r
 \r
-               add : function(c) {\r
-                       var t = this;\r
+                                       each(fmt.attributes, function(value, name) {\r
+                                               dom.setAttrib(elm, name, replaceVars(value, vars));\r
+                                       });\r
 \r
-                       if (c) {\r
-                               t.controls[c.id] = c;\r
-                               t.onAdd.dispatch(c, t);\r
-                       }\r
+                                       each(fmt.classes, function(value) {\r
+                                               value = replaceVars(value, vars);\r
 \r
-                       return c;\r
-               },\r
+                                               if (!dom.hasClass(elm, value))\r
+                                                       dom.addClass(elm, value);\r
+                                       });\r
+                               }\r
+                       };\r
+                       function adjustSelectionToVisibleSelection() {\r
+                               function findSelectionEnd(start, end) {\r
+                                       var walker = new TreeWalker(end);\r
+                                       for (node = walker.current(); node; node = walker.prev()) {\r
+                                               if (node.childNodes.length > 1 || node == start || node.tagName == 'BR') {\r
+                                                       return node;\r
+                                               }\r
+                                       }\r
+                               };\r
 \r
-               createControl : function(n) {\r
-                       var c, t = this, ed = t.editor;\r
+                               // Adjust selection so that a end container with a end offset of zero is not included in the selection\r
+                               // as this isn't visible to the user.\r
+                               var rng = ed.selection.getRng();\r
+                               var start = rng.startContainer;\r
+                               var end = rng.endContainer;\r
 \r
-                       each(ed.plugins, function(p) {\r
-                               if (p.createControl) {\r
-                                       c = p.createControl(n, t);\r
+                               if (start != end && rng.endOffset === 0) {\r
+                                       var newEnd = findSelectionEnd(start, end);\r
+                                       var endOffset = newEnd.nodeType == 3 ? newEnd.length : newEnd.childNodes.length;\r
 \r
-                                       if (c)\r
-                                               return false;\r
+                                       rng.setEnd(newEnd, endOffset);\r
                                }\r
-                       });\r
 \r
-                       switch (n) {\r
-                               case "|":\r
-                               case "separator":\r
-                                       return t.createSeparator();\r
+                               return rng;\r
                        }\r
+                       \r
+                       function applyStyleToList(node, bookmark, wrapElm, newWrappers, process){\r
+                               var nodes = [], listIndex = -1, list, startIndex = -1, endIndex = -1, currentWrapElm;\r
+                               \r
+                               // find the index of the first child list.\r
+                               each(node.childNodes, function(n, index) {\r
+                                       if (n.nodeName === "UL" || n.nodeName === "OL") {\r
+                                               listIndex = index;\r
+                                               list = n;\r
+                                               return false;\r
+                                       }\r
+                               });\r
+                               \r
+                               // get the index of the bookmarks\r
+                               each(node.childNodes, function(n, index) {\r
+                                       if (n.nodeName === "SPAN" && dom.getAttrib(n, "data-mce-type") == "bookmark") {\r
+                                               if (n.id == bookmark.id + "_start") {\r
+                                                       startIndex = index;\r
+                                               } else if (n.id == bookmark.id + "_end") {\r
+                                                       endIndex = index;\r
+                                               }\r
+                                       }\r
+                               });\r
+                               \r
+                               // if the selection spans across an embedded list, or there isn't an embedded list - handle processing normally\r
+                               if (listIndex <= 0 || (startIndex < listIndex && endIndex > listIndex)) {\r
+                                       each(tinymce.grep(node.childNodes), process);\r
+                                       return 0;\r
+                               } else {\r
+                                       currentWrapElm = dom.clone(wrapElm, FALSE);\r
 \r
-                       if (!c && ed.buttons && (c = ed.buttons[n]))\r
-                               return t.createButton(n, c);\r
-\r
-                       return t.add(c);\r
-               },\r
+                                       // create a list of the nodes on the same side of the list as the selection\r
+                                       each(tinymce.grep(node.childNodes), function(n, index) {\r
+                                               if ((startIndex < listIndex && index < listIndex) || (startIndex > listIndex && index > listIndex)) {\r
+                                                       nodes.push(n); \r
+                                                       n.parentNode.removeChild(n);\r
+                                               }\r
+                                       });\r
 \r
-               createDropMenu : function(id, s, cc) {\r
-                       var t = this, ed = t.editor, c, bm, v, cls;\r
+                                       // insert the wrapping element either before or after the list.\r
+                                       if (startIndex < listIndex) {\r
+                                               node.insertBefore(currentWrapElm, list);\r
+                                       } else if (startIndex > listIndex) {\r
+                                               node.insertBefore(currentWrapElm, list.nextSibling);\r
+                                       }\r
+                                       \r
+                                       // add the new nodes to the list.\r
+                                       newWrappers.push(currentWrapElm);\r
 \r
-                       s = extend({\r
-                               'class' : 'mceDropDown',\r
-                               constrain : ed.settings.constrain_menus\r
-                       }, s);\r
+                                       each(nodes, function(node) {\r
+                                               currentWrapElm.appendChild(node);\r
+                                       });\r
 \r
-                       s['class'] = s['class'] + ' ' + ed.getParam('skin') + 'Skin';\r
-                       if (v = ed.getParam('skin_variant'))\r
-                               s['class'] += ' ' + ed.getParam('skin') + 'Skin' + v.substring(0, 1).toUpperCase() + v.substring(1);\r
+                                       return currentWrapElm;\r
+                               }\r
+                       };\r
 \r
-                       id = t.prefix + id;\r
-                       cls = cc || t._cls.dropmenu || tinymce.ui.DropMenu;\r
-                       c = t.controls[id] = new cls(id, s);\r
-                       c.onAddItem.add(function(c, o) {\r
-                               var s = o.settings;\r
+                       function applyRngStyle(rng, bookmark, node_specific) {\r
+                               var newWrappers = [], wrapName, wrapElm, contentEditable = true;\r
 \r
-                               s.title = ed.getLang(s.title, s.title);\r
+                               // Setup wrapper element\r
+                               wrapName = format.inline || format.block;\r
+                               wrapElm = dom.create(wrapName);\r
+                               setElementFormat(wrapElm);\r
 \r
-                               if (!s.onclick) {\r
-                                       s.onclick = function(v) {\r
-                                               if (s.cmd)\r
-                                                       ed.execCommand(s.cmd, s.ui || false, s.value);\r
-                                       };\r
-                               }\r
-                       });\r
+                               rangeUtils.walk(rng, function(nodes) {\r
+                                       var currentWrapElm;\r
 \r
-                       ed.onRemove.add(function() {\r
-                               c.destroy();\r
-                       });\r
+                                       function process(node) {\r
+                                               var nodeName, parentName, found, hasContentEditableState, lastContentEditable;\r
 \r
-                       // Fix for bug #1897785, #1898007\r
-                       if (tinymce.isIE) {\r
-                               c.onShowMenu.add(function() {\r
-                                       // IE 8 needs focus in order to store away a range with the current collapsed caret location\r
-                                       ed.focus();\r
+                                               lastContentEditable = contentEditable;\r
+                                               nodeName = node.nodeName.toLowerCase();\r
+                                               parentName = node.parentNode.nodeName.toLowerCase();\r
 \r
-                                       bm = ed.selection.getBookmark(1);\r
-                               });\r
+                                               // Node has a contentEditable value\r
+                                               if (node.nodeType === 1 && getContentEditable(node)) {\r
+                                                       lastContentEditable = contentEditable;\r
+                                                       contentEditable = getContentEditable(node) === "true";\r
+                                                       hasContentEditableState = true; // We don't want to wrap the container only it's children\r
+                                               }\r
 \r
-                               c.onHideMenu.add(function() {\r
-                                       if (bm) {\r
-                                               ed.selection.moveToBookmark(bm);\r
-                                               bm = 0;\r
-                                       }\r
-                               });\r
-                       }\r
+                                               // Stop wrapping on br elements\r
+                                               if (isEq(nodeName, 'br')) {\r
+                                                       currentWrapElm = 0;\r
 \r
-                       return t.add(c);\r
-               },\r
+                                                       // Remove any br elements when we wrap things\r
+                                                       if (format.block)\r
+                                                               dom.remove(node);\r
 \r
-               createListBox : function(id, s, cc) {\r
-                       var t = this, ed = t.editor, cmd, c, cls;\r
+                                                       return;\r
+                                               }\r
 \r
-                       if (t.get(id))\r
-                               return null;\r
+                                               // If node is wrapper type\r
+                                               if (format.wrapper && matchNode(node, name, vars)) {\r
+                                                       currentWrapElm = 0;\r
+                                                       return;\r
+                                               }\r
 \r
-                       s.title = ed.translate(s.title);\r
-                       s.scope = s.scope || ed;\r
+                                               // Can we rename the block\r
+                                               if (contentEditable && !hasContentEditableState && format.block && !format.wrapper && isTextBlock(nodeName)) {\r
+                                                       node = dom.rename(node, wrapName);\r
+                                                       setElementFormat(node);\r
+                                                       newWrappers.push(node);\r
+                                                       currentWrapElm = 0;\r
+                                                       return;\r
+                                               }\r
 \r
-                       if (!s.onselect) {\r
-                               s.onselect = function(v) {\r
-                                       ed.execCommand(s.cmd, s.ui || false, v || s.value);\r
-                               };\r
-                       }\r
+                                               // Handle selector patterns\r
+                                               if (format.selector) {\r
+                                                       // Look for matching formats\r
+                                                       each(formatList, function(format) {\r
+                                                               // Check collapsed state if it exists\r
+                                                               if ('collapsed' in format && format.collapsed !== isCollapsed) {\r
+                                                                       return;\r
+                                                               }\r
 \r
-                       s = extend({\r
-                               title : s.title,\r
-                               'class' : 'mce_' + id,\r
-                               scope : s.scope,\r
-                               control_manager : t\r
-                       }, s);\r
+                                                               if (dom.is(node, format.selector) && !isCaretNode(node)) {\r
+                                                                       setElementFormat(node, format);\r
+                                                                       found = true;\r
+                                                               }\r
+                                                       });\r
 \r
-                       id = t.prefix + id;\r
+                                                       // Continue processing if a selector match wasn't found and a inline element is defined\r
+                                                       if (!format.inline || found) {\r
+                                                               currentWrapElm = 0;\r
+                                                               return;\r
+                                                       }\r
+                                               }\r
 \r
-                       if (ed.settings.use_native_selects)\r
-                               c = new tinymce.ui.NativeListBox(id, s);\r
-                       else {\r
-                               cls = cc || t._cls.listbox || tinymce.ui.ListBox;\r
-                               c = new cls(id, s, ed);\r
-                       }\r
+                                               // Is it valid to wrap this item\r
+                                               if (contentEditable && !hasContentEditableState && isValid(wrapName, nodeName) && isValid(parentName, wrapName) &&\r
+                                                               !(!node_specific && node.nodeType === 3 && node.nodeValue.length === 1 && node.nodeValue.charCodeAt(0) === 65279) && !isCaretNode(node)) {\r
+                                                       // Start wrapping\r
+                                                       if (!currentWrapElm) {\r
+                                                               // Wrap the node\r
+                                                               currentWrapElm = dom.clone(wrapElm, FALSE);\r
+                                                               node.parentNode.insertBefore(currentWrapElm, node);\r
+                                                               newWrappers.push(currentWrapElm);\r
+                                                       }\r
 \r
-                       t.controls[id] = c;\r
+                                                       currentWrapElm.appendChild(node);\r
+                                               } else if (nodeName == 'li' && bookmark) {\r
+                                                       // Start wrapping - if we are in a list node and have a bookmark, then we will always begin by wrapping in a new element.\r
+                                                       currentWrapElm = applyStyleToList(node, bookmark, wrapElm, newWrappers, process);\r
+                                               } else {\r
+                                                       // Start a new wrapper for possible children\r
+                                                       currentWrapElm = 0;\r
+                                                       \r
+                                                       each(tinymce.grep(node.childNodes), process);\r
 \r
-                       // Fix focus problem in Safari\r
-                       if (tinymce.isWebKit) {\r
-                               c.onPostRender.add(function(c, n) {\r
-                                       // Store bookmark on mousedown\r
-                                       Event.add(n, 'mousedown', function() {\r
-                                               ed.bookmark = ed.selection.getBookmark(1);\r
-                                       });\r
+                                                       if (hasContentEditableState) {\r
+                                                               contentEditable = lastContentEditable; // Restore last contentEditable state from stack\r
+                                                       }\r
 \r
-                                       // Restore on focus, since it might be lost\r
-                                       Event.add(n, 'focus', function() {\r
-                                               ed.selection.moveToBookmark(ed.bookmark);\r
-                                               ed.bookmark = null;\r
-                                       });\r
+                                                       // End the last wrapper\r
+                                                       currentWrapElm = 0;\r
+                                               }\r
+                                       };\r
+\r
+                                       // Process siblings from range\r
+                                       each(nodes, process);\r
                                });\r
-                       }\r
 \r
-                       if (c.hideMenu)\r
-                               ed.onMouseDown.add(c.hideMenu, c);\r
+                               // Wrap links inside as well, for example color inside a link when the wrapper is around the link\r
+                               if (format.wrap_links === false) {\r
+                                       each(newWrappers, function(node) {\r
+                                               function process(node) {\r
+                                                       var i, currentWrapElm, children;\r
 \r
-                       return t.add(c);\r
-               },\r
+                                                       if (node.nodeName === 'A') {\r
+                                                               currentWrapElm = dom.clone(wrapElm, FALSE);\r
+                                                               newWrappers.push(currentWrapElm);\r
 \r
-               createButton : function(id, s, cc) {\r
-                       var t = this, ed = t.editor, o, c, cls;\r
+                                                               children = tinymce.grep(node.childNodes);\r
+                                                               for (i = 0; i < children.length; i++)\r
+                                                                       currentWrapElm.appendChild(children[i]);\r
 \r
-                       if (t.get(id))\r
-                               return null;\r
+                                                               node.appendChild(currentWrapElm);\r
+                                                       }\r
 \r
-                       s.title = ed.translate(s.title);\r
-                       s.label = ed.translate(s.label);\r
-                       s.scope = s.scope || ed;\r
+                                                       each(tinymce.grep(node.childNodes), process);\r
+                                               };\r
 \r
-                       if (!s.onclick && !s.menu_button) {\r
-                               s.onclick = function() {\r
-                                       ed.execCommand(s.cmd, s.ui || false, s.value);\r
-                               };\r
-                       }\r
+                                               process(node);\r
+                                       });\r
+                               }\r
 \r
-                       s = extend({\r
-                               title : s.title,\r
-                               'class' : 'mce_' + id,\r
-                               unavailable_prefix : ed.getLang('unavailable', ''),\r
-                               scope : s.scope,\r
-                               control_manager : t\r
-                       }, s);\r
+                               // Cleanup\r
+                               \r
+                               each(newWrappers, function(node) {\r
+                                       var childCount;\r
 \r
-                       id = t.prefix + id;\r
+                                       function getChildCount(node) {\r
+                                               var count = 0;\r
 \r
-                       if (s.menu_button) {\r
-                               cls = cc || t._cls.menubutton || tinymce.ui.MenuButton;\r
-                               c = new cls(id, s, ed);\r
-                               ed.onMouseDown.add(c.hideMenu, c);\r
-                       } else {\r
-                               cls = t._cls.button || tinymce.ui.Button;\r
-                               c = new cls(id, s);\r
-                       }\r
+                                               each(node.childNodes, function(node) {\r
+                                                       if (!isWhiteSpaceNode(node) && !isBookmarkNode(node))\r
+                                                               count++;\r
+                                               });\r
 \r
-                       return t.add(c);\r
-               },\r
+                                               return count;\r
+                                       };\r
 \r
-               createMenuButton : function(id, s, cc) {\r
-                       s = s || {};\r
-                       s.menu_button = 1;\r
+                                       function mergeStyles(node) {\r
+                                               var child, clone;\r
 \r
-                       return this.createButton(id, s, cc);\r
-               },\r
+                                               each(node.childNodes, function(node) {\r
+                                                       if (node.nodeType == 1 && !isBookmarkNode(node) && !isCaretNode(node)) {\r
+                                                               child = node;\r
+                                                               return FALSE; // break loop\r
+                                                       }\r
+                                               });\r
 \r
-               createSplitButton : function(id, s, cc) {\r
-                       var t = this, ed = t.editor, cmd, c, cls;\r
+                                               // If child was found and of the same type as the current node\r
+                                               if (child && matchName(child, format)) {\r
+                                                       clone = dom.clone(child, FALSE);\r
+                                                       setElementFormat(clone);\r
 \r
-                       if (t.get(id))\r
-                               return null;\r
+                                                       dom.replace(clone, node, TRUE);\r
+                                                       dom.remove(child, 1);\r
+                                               }\r
 \r
-                       s.title = ed.translate(s.title);\r
-                       s.scope = s.scope || ed;\r
+                                               return clone || node;\r
+                                       };\r
 \r
-                       if (!s.onclick) {\r
-                               s.onclick = function(v) {\r
-                                       ed.execCommand(s.cmd, s.ui || false, v || s.value);\r
-                               };\r
-                       }\r
+                                       childCount = getChildCount(node);\r
 \r
-                       if (!s.onselect) {\r
-                               s.onselect = function(v) {\r
-                                       ed.execCommand(s.cmd, s.ui || false, v || s.value);\r
-                               };\r
-                       }\r
+                                       // Remove empty nodes but only if there is multiple wrappers and they are not block\r
+                                       // elements so never remove single <h1></h1> since that would remove the currrent empty block element where the caret is at\r
+                                       if ((newWrappers.length > 1 || !isBlock(node)) && childCount === 0) {\r
+                                               dom.remove(node, 1);\r
+                                               return;\r
+                                       }\r
 \r
-                       s = extend({\r
-                               title : s.title,\r
-                               'class' : 'mce_' + id,\r
-                               scope : s.scope,\r
-                               control_manager : t\r
-                       }, s);\r
+                                       if (format.inline || format.wrapper) {\r
+                                               // Merges the current node with it's children of similar type to reduce the number of elements\r
+                                               if (!format.exact && childCount === 1)\r
+                                                       node = mergeStyles(node);\r
+\r
+                                               // Remove/merge children\r
+                                               each(formatList, function(format) {\r
+                                                       // Merge all children of similar type will move styles from child to parent\r
+                                                       // this: <span style="color:red"><b><span style="color:red; font-size:10px">text</span></b></span>\r
+                                                       // will become: <span style="color:red"><b><span style="font-size:10px">text</span></b></span>\r
+                                                       each(dom.select(format.inline, node), function(child) {\r
+                                                               var parent;\r
+\r
+                                                               // When wrap_links is set to false we don't want\r
+                                                               // to remove the format on children within links\r
+                                                               if (format.wrap_links === false) {\r
+                                                                       parent = child.parentNode;\r
+\r
+                                                                       do {\r
+                                                                               if (parent.nodeName === 'A')\r
+                                                                                       return;\r
+                                                                       } while (parent = parent.parentNode);\r
+                                                               }\r
+\r
+                                                               removeFormat(format, vars, child, format.exact ? child : null);\r
+                                                       });\r
+                                               });\r
 \r
-                       id = t.prefix + id;\r
-                       cls = cc || t._cls.splitbutton || tinymce.ui.SplitButton;\r
-                       c = t.add(new cls(id, s, ed));\r
-                       ed.onMouseDown.add(c.hideMenu, c);\r
+                                               // Remove child if direct parent is of same type\r
+                                               if (matchNode(node.parentNode, name, vars)) {\r
+                                                       dom.remove(node, 1);\r
+                                                       node = 0;\r
+                                                       return TRUE;\r
+                                               }\r
 \r
-                       return c;\r
-               },\r
+                                               // Look for parent with similar style format\r
+                                               if (format.merge_with_parents) {\r
+                                                       dom.getParent(node.parentNode, function(parent) {\r
+                                                               if (matchNode(parent, name, vars)) {\r
+                                                                       dom.remove(node, 1);\r
+                                                                       node = 0;\r
+                                                                       return TRUE;\r
+                                                               }\r
+                                                       });\r
+                                               }\r
 \r
-               createColorSplitButton : function(id, s, cc) {\r
-                       var t = this, ed = t.editor, cmd, c, cls, bm;\r
+                                               // Merge next and previous siblings if they are similar <b>text</b><b>text</b> becomes <b>texttext</b>\r
+                                               if (node && format.merge_siblings !== false) {\r
+                                                       node = mergeSiblings(getNonWhiteSpaceSibling(node), node);\r
+                                                       node = mergeSiblings(node, getNonWhiteSpaceSibling(node, TRUE));\r
+                                               }\r
+                                       }\r
+                               });\r
+                       };\r
 \r
-                       if (t.get(id))\r
-                               return null;\r
+                       if (format) {\r
+                               if (node) {\r
+                                       if (node.nodeType) {\r
+                                               rng = dom.createRng();\r
+                                               rng.setStartBefore(node);\r
+                                               rng.setEndAfter(node);\r
+                                               applyRngStyle(expandRng(rng, formatList), null, true);\r
+                                       } else {\r
+                                               applyRngStyle(node, null, true);\r
+                                       }\r
+                               } else {\r
+                                       if (!isCollapsed || !format.inline || dom.select('td.mceSelected,th.mceSelected').length) {\r
+                                               // Obtain selection node before selection is unselected by applyRngStyle()\r
+                                               var curSelNode = ed.selection.getNode();\r
 \r
-                       s.title = ed.translate(s.title);\r
-                       s.scope = s.scope || ed;\r
+                                               // 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\r
+                                               // It's kind of a hack but people should be using the default block type P since all desktop editors work that way\r
+                                               if (!forcedRootBlock && formatList[0].defaultBlock && !dom.getParent(curSelNode, dom.isBlock)) {\r
+                                                       apply(formatList[0].defaultBlock);\r
+                                               }\r
 \r
-                       if (!s.onclick) {\r
-                               s.onclick = function(v) {\r
-                                       if (tinymce.isIE)\r
-                                               bm = ed.selection.getBookmark(1);\r
+                                               // Apply formatting to selection\r
+                                               ed.selection.setRng(adjustSelectionToVisibleSelection());\r
+                                               bookmark = selection.getBookmark();\r
+                                               applyRngStyle(expandRng(selection.getRng(TRUE), formatList), bookmark);\r
 \r
-                                       ed.execCommand(s.cmd, s.ui || false, v || s.value);\r
-                               };\r
-                       }\r
+                                               // Colored nodes should be underlined so that the color of the underline matches the text color.\r
+                                               if (format.styles && (format.styles.color || format.styles.textDecoration)) {\r
+                                                       tinymce.walk(curSelNode, processUnderlineAndColor, 'childNodes');\r
+                                                       processUnderlineAndColor(curSelNode);\r
+                                               }\r
 \r
-                       if (!s.onselect) {\r
-                               s.onselect = function(v) {\r
-                                       ed.execCommand(s.cmd, s.ui || false, v || s.value);\r
-                               };\r
+                                               selection.moveToBookmark(bookmark);\r
+                                               moveStart(selection.getRng(TRUE));\r
+                                               ed.nodeChanged();\r
+                                       } else\r
+                                               performCaretAction('apply', name, vars);\r
+                               }\r
                        }\r
+               };\r
 \r
-                       s = extend({\r
-                               title : s.title,\r
-                               'class' : 'mce_' + id,\r
-                               'menu_class' : ed.getParam('skin') + 'Skin',\r
-                               scope : s.scope,\r
-                               more_colors_title : ed.getLang('more_colors')\r
-                       }, s);\r
+               function remove(name, vars, node) {\r
+                       var formatList = get(name), format = formatList[0], bookmark, i, rng, contentEditable = true;\r
 \r
-                       id = t.prefix + id;\r
-                       cls = cc || t._cls.colorsplitbutton || tinymce.ui.ColorSplitButton;\r
-                       c = new cls(id, s, ed);\r
-                       ed.onMouseDown.add(c.hideMenu, c);\r
+                       // Merges the styles for each node\r
+                       function process(node) {\r
+                               var children, i, l, localContentEditable, lastContentEditable, hasContentEditableState;\r
 \r
-                       // Remove the menu element when the editor is removed\r
-                       ed.onRemove.add(function() {\r
-                               c.destroy();\r
-                       });\r
+                               // Node has a contentEditable value\r
+                               if (node.nodeType === 1 && getContentEditable(node)) {\r
+                                       lastContentEditable = contentEditable;\r
+                                       contentEditable = getContentEditable(node) === "true";\r
+                                       hasContentEditableState = true; // We don't want to wrap the container only it's children\r
+                               }\r
 \r
-                       // Fix for bug #1897785, #1898007\r
-                       if (tinymce.isIE) {\r
-                               c.onShowMenu.add(function() {\r
-                                       // IE 8 needs focus in order to store away a range with the current collapsed caret location\r
-                                       ed.focus();\r
-                                       bm = ed.selection.getBookmark(1);\r
-                               });\r
+                               // Grab the children first since the nodelist might be changed\r
+                               children = tinymce.grep(node.childNodes);\r
 \r
-                               c.onHideMenu.add(function() {\r
-                                       if (bm) {\r
-                                               ed.selection.moveToBookmark(bm);\r
-                                               bm = 0;\r
+                               // Process current node\r
+                               if (contentEditable && !hasContentEditableState) {\r
+                                       for (i = 0, l = formatList.length; i < l; i++) {\r
+                                               if (removeFormat(formatList[i], vars, node, node))\r
+                                                       break;\r
                                        }\r
-                               });\r
-                       }\r
+                               }\r
 \r
-                       return t.add(c);\r
-               },\r
+                               // Process the children\r
+                               if (format.deep) {\r
+                                       if (children.length) {                                  \r
+                                               for (i = 0, l = children.length; i < l; i++)\r
+                                                       process(children[i]);\r
 \r
-               createToolbar : function(id, s, cc) {\r
-                       var c, t = this, cls;\r
+                                               if (hasContentEditableState) {\r
+                                                       contentEditable = lastContentEditable; // Restore last contentEditable state from stack\r
+                                               }\r
+                                       }\r
+                               }\r
+                       };\r
 \r
-                       id = t.prefix + id;\r
-                       cls = cc || t._cls.toolbar || tinymce.ui.Toolbar;\r
-                       c = new cls(id, s, t.editor);\r
+                       function findFormatRoot(container) {\r
+                               var formatRoot;\r
 \r
-                       if (t.get(id))\r
-                               return null;\r
+                               // Find format root\r
+                               each(getParents(container.parentNode).reverse(), function(parent) {\r
+                                       var format;\r
 \r
-                       return t.add(c);\r
-               },\r
-               \r
-               createToolbarGroup : function(id, s, cc) {\r
-                       var c, t = this, cls;\r
-                       id = t.prefix + id;\r
-                       cls = cc || this._cls.toolbarGroup || tinymce.ui.ToolbarGroup;\r
-                       c = new cls(id, s, t.editor);\r
-                       \r
-                       if (t.get(id))\r
-                               return null;\r
-                       \r
-                       return t.add(c);\r
-               },\r
+                                       // Find format root element\r
+                                       if (!formatRoot && parent.id != '_start' && parent.id != '_end') {\r
+                                               // Is the node matching the format we are looking for\r
+                                               format = matchNode(parent, name, vars);\r
+                                               if (format && format.split !== false)\r
+                                                       formatRoot = parent;\r
+                                       }\r
+                               });\r
 \r
-               createSeparator : function(cc) {\r
-                       var cls = cc || this._cls.separator || tinymce.ui.Separator;\r
+                               return formatRoot;\r
+                       };\r
 \r
-                       return new cls();\r
-               },\r
+                       function wrapAndSplit(format_root, container, target, split) {\r
+                               var parent, clone, lastClone, firstClone, i, formatRootParent;\r
 \r
-               setControlType : function(n, c) {\r
-                       return this._cls[n.toLowerCase()] = c;\r
-               },\r
-       \r
-               destroy : function() {\r
-                       each(this.controls, function(c) {\r
-                               c.destroy();\r
-                       });\r
+                               // Format root found then clone formats and split it\r
+                               if (format_root) {\r
+                                       formatRootParent = format_root.parentNode;\r
 \r
-                       this.controls = null;\r
-               }\r
-       });\r
-})(tinymce);\r
+                                       for (parent = container.parentNode; parent && parent != formatRootParent; parent = parent.parentNode) {\r
+                                               clone = dom.clone(parent, FALSE);\r
 \r
-(function(tinymce) {\r
-       var Dispatcher = tinymce.util.Dispatcher, each = tinymce.each, isIE = tinymce.isIE, isOpera = tinymce.isOpera;\r
+                                               for (i = 0; i < formatList.length; i++) {\r
+                                                       if (removeFormat(formatList[i], vars, clone, clone)) {\r
+                                                               clone = 0;\r
+                                                               break;\r
+                                                       }\r
+                                               }\r
 \r
-       tinymce.create('tinymce.WindowManager', {\r
-               WindowManager : function(ed) {\r
-                       var t = this;\r
+                                               // Build wrapper node\r
+                                               if (clone) {\r
+                                                       if (lastClone)\r
+                                                               clone.appendChild(lastClone);\r
 \r
-                       t.editor = ed;\r
-                       t.onOpen = new Dispatcher(t);\r
-                       t.onClose = new Dispatcher(t);\r
-                       t.params = {};\r
-                       t.features = {};\r
-               },\r
+                                                       if (!firstClone)\r
+                                                               firstClone = clone;\r
 \r
-               open : function(s, p) {\r
-                       var t = this, f = '', x, y, mo = t.editor.settings.dialog_type == 'modal', w, sw, sh, vp = tinymce.DOM.getViewPort(), u;\r
+                                                       lastClone = clone;\r
+                                               }\r
+                                       }\r
 \r
-                       // Default some options\r
-                       s = s || {};\r
-                       p = p || {};\r
-                       sw = isOpera ? vp.w : screen.width; // Opera uses windows inside the Opera window\r
-                       sh = isOpera ? vp.h : screen.height;\r
-                       s.name = s.name || 'mc_' + new Date().getTime();\r
-                       s.width = parseInt(s.width || 320);\r
-                       s.height = parseInt(s.height || 240);\r
-                       s.resizable = true;\r
-                       s.left = s.left || parseInt(sw / 2.0) - (s.width / 2.0);\r
-                       s.top = s.top || parseInt(sh / 2.0) - (s.height / 2.0);\r
-                       p.inline = false;\r
-                       p.mce_width = s.width;\r
-                       p.mce_height = s.height;\r
-                       p.mce_auto_focus = s.auto_focus;\r
+                                       // Never split block elements if the format is mixed\r
+                                       if (split && (!format.mixed || !isBlock(format_root)))\r
+                                               container = dom.split(format_root, container);\r
 \r
-                       if (mo) {\r
-                               if (isIE) {\r
-                                       s.center = true;\r
-                                       s.help = false;\r
-                                       s.dialogWidth = s.width + 'px';\r
-                                       s.dialogHeight = s.height + 'px';\r
-                                       s.scroll = s.scrollbars || false;\r
+                                       // Wrap container in cloned formats\r
+                                       if (lastClone) {\r
+                                               target.parentNode.insertBefore(lastClone, target);\r
+                                               firstClone.appendChild(target);\r
+                                       }\r
                                }\r
-                       }\r
 \r
-                       // Build features string\r
-                       each(s, function(v, k) {\r
-                               if (tinymce.is(v, 'boolean'))\r
-                                       v = v ? 'yes' : 'no';\r
+                               return container;\r
+                       };\r
 \r
-                               if (!/^(name|url)$/.test(k)) {\r
-                                       if (isIE && mo)\r
-                                               f += (f ? ';' : '') + k + ':' + v;\r
-                                       else\r
-                                               f += (f ? ',' : '') + k + '=' + v;\r
-                               }\r
-                       });\r
+                       function splitToFormatRoot(container) {\r
+                               return wrapAndSplit(findFormatRoot(container), container, container, true);\r
+                       };\r
 \r
-                       t.features = s;\r
-                       t.params = p;\r
-                       t.onOpen.dispatch(t, s, p);\r
+                       function unwrap(start) {\r
+                               var node = dom.get(start ? '_start' : '_end'),\r
+                                       out = node[start ? 'firstChild' : 'lastChild'];\r
+\r
+                               // If the end is placed within the start the result will be removed\r
+                               // So this checks if the out node is a bookmark node if it is it\r
+                               // checks for another more suitable node\r
+                               if (isBookmarkNode(out))\r
+                                       out = out[start ? 'firstChild' : 'lastChild'];\r
 \r
-                       u = s.url || s.file;\r
-                       u = tinymce._addVer(u);\r
+                               dom.remove(node, true);\r
 \r
-                       try {\r
-                               if (isIE && mo) {\r
-                                       w = 1;\r
-                                       window.showModalDialog(u, window, f);\r
-                               } else\r
-                                       w = window.open(u, s.name, f);\r
-                       } catch (ex) {\r
-                               // Ignore\r
-                       }\r
+                               return out;\r
+                       };\r
 \r
-                       if (!w)\r
-                               alert(t.editor.getLang('popup_blocked'));\r
-               },\r
+                       function removeRngStyle(rng) {\r
+                               var startContainer, endContainer, node;\r
 \r
-               close : function(w) {\r
-                       w.close();\r
-                       this.onClose.dispatch(this);\r
-               },\r
+                               rng = expandRng(rng, formatList, TRUE);\r
 \r
-               createInstance : function(cl, a, b, c, d, e) {\r
-                       var f = tinymce.resolve(cl);\r
+                               if (format.split) {\r
+                                       startContainer = getContainer(rng, TRUE);\r
+                                       endContainer = getContainer(rng);\r
 \r
-                       return new f(a, b, c, d, e);\r
-               },\r
+                                       if (startContainer != endContainer) {\r
+                                               // 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\r
+                                               // This will happen if you tripple click a table cell and use remove formatting\r
+                                               if (/^(TR|TD)$/.test(startContainer.nodeName) && startContainer.firstChild) {\r
+                                                       startContainer = (startContainer.nodeName == "TD" ? startContainer.firstChild : startContainer.firstChild.firstChild) || startContainer;\r
+                                               }\r
 \r
-               confirm : function(t, cb, s, w) {\r
-                       w = w || window;\r
+                                               // Wrap start/end nodes in span element since these might be cloned/moved\r
+                                               startContainer = wrap(startContainer, 'span', {id : '_start', 'data-mce-type' : 'bookmark'});\r
+                                               endContainer = wrap(endContainer, 'span', {id : '_end', 'data-mce-type' : 'bookmark'});\r
 \r
-                       cb.call(s || this, w.confirm(this._decode(this.editor.getLang(t, t))));\r
-               },\r
+                                               // Split start/end\r
+                                               splitToFormatRoot(startContainer);\r
+                                               splitToFormatRoot(endContainer);\r
 \r
-               alert : function(tx, cb, s, w) {\r
-                       var t = this;\r
+                                               // Unwrap start/end to get real elements again\r
+                                               startContainer = unwrap(TRUE);\r
+                                               endContainer = unwrap();\r
+                                       } else\r
+                                               startContainer = endContainer = splitToFormatRoot(startContainer);\r
 \r
-                       w = w || window;\r
-                       w.alert(t._decode(t.editor.getLang(tx, tx)));\r
+                                       // Update range positions since they might have changed after the split operations\r
+                                       rng.startContainer = startContainer.parentNode;\r
+                                       rng.startOffset = nodeIndex(startContainer);\r
+                                       rng.endContainer = endContainer.parentNode;\r
+                                       rng.endOffset = nodeIndex(endContainer) + 1;\r
+                               }\r
 \r
-                       if (cb)\r
-                               cb.call(s || t);\r
-               },\r
+                               // Remove items between start/end\r
+                               rangeUtils.walk(rng, function(nodes) {\r
+                                       each(nodes, function(node) {\r
+                                               process(node);\r
 \r
-               resizeBy : function(dw, dh, win) {\r
-                       win.resizeBy(dw, dh);\r
-               },\r
+                                               // Remove parent span if it only contains text-decoration: underline, yet a parent node is also underlined.\r
+                                               if (node.nodeType === 1 && ed.dom.getStyle(node, 'text-decoration') === 'underline' && node.parentNode && getTextDecoration(node.parentNode) === 'underline') {\r
+                                                       removeFormat({'deep': false, 'exact': true, 'inline': 'span', 'styles': {'textDecoration' : 'underline'}}, null, node);\r
+                                               }\r
+                                       });\r
+                               });\r
+                       };\r
 \r
-               // Internal functions\r
+                       // Handle node\r
+                       if (node) {\r
+                               if (node.nodeType) {\r
+                                       rng = dom.createRng();\r
+                                       rng.setStartBefore(node);\r
+                                       rng.setEndAfter(node);\r
+                                       removeRngStyle(rng);\r
+                               } else {\r
+                                       removeRngStyle(node);\r
+                               }\r
 \r
-               _decode : function(s) {\r
-                       return tinymce.DOM.decode(s).replace(/\\n/g, '\n');\r
-               }\r
-       });\r
-}(tinymce));\r
-(function(tinymce) {\r
-       tinymce.Formatter = function(ed) {\r
-               var formats = {},\r
-                       each = tinymce.each,\r
-                       dom = ed.dom,\r
-                       selection = ed.selection,\r
-                       TreeWalker = tinymce.dom.TreeWalker,\r
-                       rangeUtils = new tinymce.dom.RangeUtils(dom),\r
-                       isValid = ed.schema.isValidChild,\r
-                       isBlock = dom.isBlock,\r
-                       forcedRootBlock = ed.settings.forced_root_block,\r
-                       nodeIndex = dom.nodeIndex,\r
-                       INVISIBLE_CHAR = '\uFEFF',\r
-                       MCE_ATTR_RE = /^(src|href|style)$/,\r
-                       FALSE = false,\r
-                       TRUE = true,\r
-                       undefined,\r
-                       pendingFormats = {apply : [], remove : []};\r
+                               return;\r
+                       }\r
 \r
-               function isArray(obj) {\r
-                       return obj instanceof Array;\r
-               };\r
+                       if (!selection.isCollapsed() || !format.inline || dom.select('td.mceSelected,th.mceSelected').length) {\r
+                               bookmark = selection.getBookmark();\r
+                               removeRngStyle(selection.getRng(TRUE));\r
+                               selection.moveToBookmark(bookmark);\r
 \r
-               function getParents(node, selector) {\r
-                       return dom.getParents(node, selector, dom.getRoot());\r
-               };\r
+                               // 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\r
+                               if (format.inline && match(name, vars, selection.getStart())) {\r
+                                       moveStart(selection.getRng(true));\r
+                               }\r
 \r
-               function isCaretNode(node) {\r
-                       return node.nodeType === 1 && (node.face === 'mceinline' || node.style.fontFamily === 'mceinline');\r
+                               ed.nodeChanged();\r
+                       } else\r
+                               performCaretAction('remove', name, vars);\r
                };\r
 \r
-               // Public functions\r
+               function toggle(name, vars, node) {\r
+                       var fmt = get(name);\r
 \r
-               function get(name) {\r
-                       return name ? formats[name] : formats;\r
+                       if (match(name, vars, node) && (!('toggle' in fmt[0]) || fmt[0].toggle))\r
+                               remove(name, vars, node);\r
+                       else\r
+                               apply(name, vars, node);\r
                };\r
 \r
-               function register(name, format) {\r
-                       if (name) {\r
-                               if (typeof(name) !== 'string') {\r
-                                       each(name, function(format, name) {\r
-                                               register(name, format);\r
-                                       });\r
-                               } else {\r
-                                       // Force format into array and add it to internal collection\r
-                                       format = format.length ? format : [format];\r
+               function matchNode(node, name, vars, similar) {\r
+                       var formatList = get(name), format, i, classes;\r
 \r
-                                       each(format, function(format) {\r
-                                               // Set deep to false by default on selector formats this to avoid removing\r
-                                               // alignment on images inside paragraphs when alignment is changed on paragraphs\r
-                                               if (format.deep === undefined)\r
-                                                       format.deep = !format.selector;\r
+                       function matchItems(node, format, item_name) {\r
+                               var key, value, items = format[item_name], i;\r
 \r
-                                               // Default to true\r
-                                               if (format.split === undefined)\r
-                                                       format.split = !format.selector || format.inline;\r
+                               // Custom match\r
+                               if (format.onmatch) {\r
+                                       return format.onmatch(node, format, item_name);\r
+                               }\r
 \r
-                                               // Default to true\r
-                                               if (format.remove === undefined && format.selector && !format.inline)\r
-                                                       format.remove = 'none';\r
+                               // Check all items\r
+                               if (items) {\r
+                                       // Non indexed object\r
+                                       if (items.length === undef) {\r
+                                               for (key in items) {\r
+                                                       if (items.hasOwnProperty(key)) {\r
+                                                               if (item_name === 'attributes')\r
+                                                                       value = dom.getAttrib(node, key);\r
+                                                               else\r
+                                                                       value = getStyle(node, key);\r
 \r
-                                               // Mark format as a mixed format inline + block level\r
-                                               if (format.selector && format.inline) {\r
-                                                       format.mixed = true;\r
-                                                       format.block_expand = true;\r
+                                                               if (similar && !value && !format.exact)\r
+                                                                       return;\r
+\r
+                                                               if ((!similar || format.exact) && !isEq(value, replaceVars(items[key], vars)))\r
+                                                                       return;\r
+                                                       }\r
+                                               }\r
+                                       } else {\r
+                                               // Only one match needed for indexed arrays\r
+                                               for (i = 0; i < items.length; i++) {\r
+                                                       if (item_name === 'attributes' ? dom.getAttrib(node, items[i]) : getStyle(node, items[i]))\r
+                                                               return format;\r
                                                }\r
+                                       }\r
+                               }\r
 \r
-                                               // Split classes if needed\r
-                                               if (typeof(format.classes) === 'string')\r
-                                                       format.classes = format.classes.split(/\s+/);\r
-                                       });\r
+                               return format;\r
+                       };\r
 \r
-                                       formats[name] = format;\r
+                       if (formatList && node) {\r
+                               // Check each format in list\r
+                               for (i = 0; i < formatList.length; i++) {\r
+                                       format = formatList[i];\r
+\r
+                                       // Name name, attributes, styles and classes\r
+                                       if (matchName(node, format) && matchItems(node, format, 'attributes') && matchItems(node, format, 'styles')) {\r
+                                               // Match classes\r
+                                               if (classes = format.classes) {\r
+                                                       for (i = 0; i < classes.length; i++) {\r
+                                                               if (!dom.hasClass(node, classes[i]))\r
+                                                                       return;\r
+                                                       }\r
+                                               }\r
+\r
+                                               return format;\r
+                                       }\r
                                }\r
                        }\r
                };\r
 \r
-               var getTextDecoration = function(node) {\r
-                       var decoration;\r
+               function match(name, vars, node) {\r
+                       var startNode;\r
 \r
-                       ed.dom.getParent(node, function(n) {\r
-                               decoration = ed.dom.getStyle(n, 'text-decoration');\r
-                               return decoration && decoration !== 'none';\r
-                       });\r
+                       function matchParents(node) {\r
+                               // Find first node with similar format settings\r
+                               node = dom.getParent(node, function(node) {\r
+                                       return !!matchNode(node, name, vars, true);\r
+                               });\r
 \r
-                       return decoration;\r
+                               // Do an exact check on the similar format element\r
+                               return matchNode(node, name, vars);\r
+                       };\r
+\r
+                       // Check specified node\r
+                       if (node)\r
+                               return matchParents(node);\r
+\r
+                       // Check selected node\r
+                       node = selection.getNode();\r
+                       if (matchParents(node))\r
+                               return TRUE;\r
+\r
+                       // Check start node if it's different\r
+                       startNode = selection.getStart();\r
+                       if (startNode != node) {\r
+                               if (matchParents(startNode))\r
+                                       return TRUE;\r
+                       }\r
+\r
+                       return FALSE;\r
                };\r
 \r
-               var processUnderlineAndColor = function(node) {\r
-                       var textDecoration;\r
-                       if (node.nodeType === 1 && node.parentNode && node.parentNode.nodeType === 1) {\r
-                               textDecoration = getTextDecoration(node.parentNode);\r
-                               if (ed.dom.getStyle(node, 'color') && textDecoration) {\r
-                                       ed.dom.setStyle(node, 'text-decoration', textDecoration);\r
-                               } else if (ed.dom.getStyle(node, 'textdecoration') === textDecoration) {\r
-                                       ed.dom.setStyle(node, 'text-decoration', null);\r
+               function matchAll(names, vars) {\r
+                       var startElement, matchedFormatNames = [], checkedMap = {}, i, ni, name;\r
+\r
+                       // Check start of selection for formats\r
+                       startElement = selection.getStart();\r
+                       dom.getParent(startElement, function(node) {\r
+                               var i, name;\r
+\r
+                               for (i = 0; i < names.length; i++) {\r
+                                       name = names[i];\r
+\r
+                                       if (!checkedMap[name] && matchNode(node, name, vars)) {\r
+                                               checkedMap[name] = true;\r
+                                               matchedFormatNames.push(name);\r
+                                       }\r
                                }\r
-                       }\r
+                       }, dom.getRoot());\r
+\r
+                       return matchedFormatNames;\r
                };\r
 \r
-               function apply(name, vars, node) {\r
-                       var formatList = get(name), format = formatList[0], bookmark, rng, i, isCollapsed = selection.isCollapsed();\r
+               function canApply(name) {\r
+                       var formatList = get(name), startNode, parents, i, x, selector;\r
 \r
-                       function moveStart(rng) {\r
-                               var container = rng.startContainer,\r
-                                       offset = rng.startOffset,\r
-                                       walker, node;\r
-\r
-                               // Move startContainer/startOffset in to a suitable node\r
-                               if (container.nodeType == 1 || container.nodeValue === "") {\r
-                                       container = container.nodeType == 1 ? container.childNodes[offset] : container;\r
-\r
-                                       // Might fail if the offset is behind the last element in it's container\r
-                                       if (container) {\r
-                                               walker = new TreeWalker(container, container.parentNode);\r
-                                               for (node = walker.current(); node; node = walker.next()) {\r
-                                                       if (node.nodeType == 3 && !isWhiteSpaceNode(node)) {\r
-                                                               rng.setStart(node, 0);\r
-                                                               break;\r
-                                                       }\r
-                                               }\r
+                       if (formatList) {\r
+                               startNode = selection.getStart();\r
+                               parents = getParents(startNode);\r
+\r
+                               for (x = formatList.length - 1; x >= 0; x--) {\r
+                                       selector = formatList[x].selector;\r
+\r
+                                       // Format is not selector based, then always return TRUE\r
+                                       if (!selector)\r
+                                               return TRUE;\r
+\r
+                                       for (i = parents.length - 1; i >= 0; i--) {\r
+                                               if (dom.is(parents[i], selector))\r
+                                                       return TRUE;\r
                                        }\r
                                }\r
+                       }\r
 \r
-                               return rng;\r
-                       };\r
+                       return FALSE;\r
+               };\r
 \r
-                       function setElementFormat(elm, fmt) {\r
-                               fmt = fmt || format;\r
+               function formatChanged(formats, callback, similar) {\r
+                       var currentFormats;\r
+\r
+                       // Setup format node change logic\r
+                       if (!formatChangeData) {\r
+                               formatChangeData = {};\r
+                               currentFormats = {};\r
+\r
+                               ed.onNodeChange.addToTop(function(ed, cm, node) {\r
+                                       var parents = getParents(node), matchedFormats = {};\r
+\r
+                                       // Check for new formats\r
+                                       each(formatChangeData, function(callbacks, format) {\r
+                                               each(parents, function(node) {\r
+                                                       if (matchNode(node, format, {}, callbacks.similar)) {\r
+                                                               if (!currentFormats[format]) {\r
+                                                                       // Execute callbacks\r
+                                                                       each(callbacks, function(callback) {\r
+                                                                               callback(true, {node: node, format: format, parents: parents});\r
+                                                                       });\r
 \r
-                               if (elm) {\r
-                                       each(fmt.styles, function(value, name) {\r
-                                               dom.setStyle(elm, name, replaceVars(value, vars));\r
-                                       });\r
+                                                                       currentFormats[format] = callbacks;\r
+                                                               }\r
 \r
-                                       each(fmt.attributes, function(value, name) {\r
-                                               dom.setAttrib(elm, name, replaceVars(value, vars));\r
+                                                               matchedFormats[format] = callbacks;\r
+                                                               return false;\r
+                                                       }\r
+                                               });\r
                                        });\r
 \r
-                                       each(fmt.classes, function(value) {\r
-                                               value = replaceVars(value, vars);\r
+                                       // Check if current formats still match\r
+                                       each(currentFormats, function(callbacks, format) {\r
+                                               if (!matchedFormats[format]) {\r
+                                                       delete currentFormats[format];\r
 \r
-                                               if (!dom.hasClass(elm, value))\r
-                                                       dom.addClass(elm, value);\r
+                                                       each(callbacks, function(callback) {\r
+                                                               callback(false, {node: node, format: format, parents: parents});\r
+                                                       });\r
+                                               }\r
                                        });\r
-                               }\r
-                       };\r
+                               });\r
+                       }\r
 \r
-                       function applyRngStyle(rng) {\r
-                               var newWrappers = [], wrapName, wrapElm;\r
+                       // Add format listeners\r
+                       each(formats.split(','), function(format) {\r
+                               if (!formatChangeData[format]) {\r
+                                       formatChangeData[format] = [];\r
+                                       formatChangeData[format].similar = similar;\r
+                               }\r
 \r
-                               // Setup wrapper element\r
-                               wrapName = format.inline || format.block;\r
-                               wrapElm = dom.create(wrapName);\r
-                               setElementFormat(wrapElm);\r
+                               formatChangeData[format].push(callback);\r
+                       });\r
 \r
-                               rangeUtils.walk(rng, function(nodes) {\r
-                                       var currentWrapElm;\r
+                       return this;\r
+               };\r
 \r
-                                       function process(node) {\r
-                                               var nodeName = node.nodeName.toLowerCase(), parentName = node.parentNode.nodeName.toLowerCase(), found;\r
+               // Expose to public\r
+               tinymce.extend(this, {\r
+                       get : get,\r
+                       register : register,\r
+                       apply : apply,\r
+                       remove : remove,\r
+                       toggle : toggle,\r
+                       match : match,\r
+                       matchAll : matchAll,\r
+                       matchNode : matchNode,\r
+                       canApply : canApply,\r
+                       formatChanged: formatChanged\r
+               });\r
 \r
-                                               // Stop wrapping on br elements\r
-                                               if (isEq(nodeName, 'br')) {\r
-                                                       currentWrapElm = 0;\r
+               // Initialize\r
+               defaultFormats();\r
+               addKeyboardShortcuts();\r
 \r
-                                                       // Remove any br elements when we wrap things\r
-                                                       if (format.block)\r
-                                                               dom.remove(node);\r
+               // Private functions\r
 \r
-                                                       return;\r
-                                               }\r
+               function matchName(node, format) {\r
+                       // Check for inline match\r
+                       if (isEq(node, format.inline))\r
+                               return TRUE;\r
 \r
-                                               // If node is wrapper type\r
-                                               if (format.wrapper && matchNode(node, name, vars)) {\r
-                                                       currentWrapElm = 0;\r
-                                                       return;\r
-                                               }\r
+                       // Check for block match\r
+                       if (isEq(node, format.block))\r
+                               return TRUE;\r
 \r
-                                               // Can we rename the block\r
-                                               if (format.block && !format.wrapper && isTextBlock(nodeName)) {\r
-                                                       node = dom.rename(node, wrapName);\r
-                                                       setElementFormat(node);\r
-                                                       newWrappers.push(node);\r
-                                                       currentWrapElm = 0;\r
-                                                       return;\r
-                                               }\r
+                       // Check for selector match\r
+                       if (format.selector)\r
+                               return dom.is(node, format.selector);\r
+               };\r
 \r
-                                               // Handle selector patterns\r
-                                               if (format.selector) {\r
-                                                       // Look for matching formats\r
-                                                       each(formatList, function(format) {\r
-                                                               // Check collapsed state if it exists\r
-                                                               if ('collapsed' in format && format.collapsed !== isCollapsed) {\r
-                                                                       return;\r
-                                                               }\r
+               function isEq(str1, str2) {\r
+                       str1 = str1 || '';\r
+                       str2 = str2 || '';\r
 \r
-                                                               if (dom.is(node, format.selector) && !isCaretNode(node)) {\r
-                                                                       setElementFormat(node, format);\r
-                                                                       found = true;\r
-                                                               }\r
-                                                       });\r
+                       str1 = '' + (str1.nodeName || str1);\r
+                       str2 = '' + (str2.nodeName || str2);\r
 \r
-                                                       // Continue processing if a selector match wasn't found and a inline element is defined\r
-                                                       if (!format.inline || found) {\r
-                                                               currentWrapElm = 0;\r
-                                                               return;\r
-                                                       }\r
-                                               }\r
+                       return str1.toLowerCase() == str2.toLowerCase();\r
+               };\r
 \r
-                                               // Is it valid to wrap this item\r
-                                               if (isValid(wrapName, nodeName) && isValid(parentName, wrapName) &&\r
-                                                               !(node.nodeType === 3 && node.nodeValue.length === 1 && node.nodeValue.charCodeAt(0) === 65279)) {\r
-                                                       // Start wrapping\r
-                                                       if (!currentWrapElm) {\r
-                                                               // Wrap the node\r
-                                                               currentWrapElm = wrapElm.cloneNode(FALSE);\r
-                                                               node.parentNode.insertBefore(currentWrapElm, node);\r
-                                                               newWrappers.push(currentWrapElm);\r
-                                                       }\r
+               function getStyle(node, name) {\r
+                       var styleVal = dom.getStyle(node, name);\r
 \r
-                                                       currentWrapElm.appendChild(node);\r
-                                               } else {\r
-                                                       // Start a new wrapper for possible children\r
-                                                       currentWrapElm = 0;\r
+                       // Force the format to hex\r
+                       if (name == 'color' || name == 'backgroundColor')\r
+                               styleVal = dom.toHex(styleVal);\r
 \r
-                                                       each(tinymce.grep(node.childNodes), process);\r
+                       // Opera will return bold as 700\r
+                       if (name == 'fontWeight' && styleVal == 700)\r
+                               styleVal = 'bold';\r
 \r
-                                                       // End the last wrapper\r
-                                                       currentWrapElm = 0;\r
-                                               }\r
-                                       };\r
+                       return '' + styleVal;\r
+               };\r
 \r
-                                       // Process siblings from range\r
-                                       each(nodes, process);\r
+               function replaceVars(value, vars) {\r
+                       if (typeof(value) != "string")\r
+                               value = value(vars);\r
+                       else if (vars) {\r
+                               value = value.replace(/%(\w+)/g, function(str, name) {\r
+                                       return vars[name] || str;\r
                                });\r
+                       }\r
 \r
-                               // Wrap links inside as well, for example color inside a link when the wrapper is around the link\r
-                               if (format.wrap_links === false) {\r
-                                       each(newWrappers, function(node) {\r
-                                               function process(node) {\r
-                                                       var i, currentWrapElm, children;\r
+                       return value;\r
+               };\r
 \r
-                                                       if (node.nodeName === 'A') {\r
-                                                               currentWrapElm = wrapElm.cloneNode(FALSE);\r
-                                                               newWrappers.push(currentWrapElm);\r
+               function isWhiteSpaceNode(node) {\r
+                       return node && node.nodeType === 3 && /^([\t \r\n]+|)$/.test(node.nodeValue);\r
+               };\r
 \r
-                                                               children = tinymce.grep(node.childNodes);\r
-                                                               for (i = 0; i < children.length; i++)\r
-                                                                       currentWrapElm.appendChild(children[i]);\r
+               function wrap(node, name, attrs) {\r
+                       var wrapper = dom.create(name, attrs);\r
 \r
-                                                               node.appendChild(currentWrapElm);\r
-                                                       }\r
+                       node.parentNode.insertBefore(wrapper, node);\r
+                       wrapper.appendChild(node);\r
 \r
-                                                       each(tinymce.grep(node.childNodes), process);\r
-                                               };\r
+                       return wrapper;\r
+               };\r
 \r
-                                               process(node);\r
-                                       });\r
+               function expandRng(rng, format, remove) {\r
+                       var sibling, lastIdx, leaf, endPoint,\r
+                               startContainer = rng.startContainer,\r
+                               startOffset = rng.startOffset,\r
+                               endContainer = rng.endContainer,\r
+                               endOffset = rng.endOffset;\r
+\r
+                       // This function walks up the tree if there is no siblings before/after the node\r
+                       function findParentContainer(start) {\r
+                               var container, parent, child, sibling, siblingName, root;\r
+\r
+                               container = parent = start ? startContainer : endContainer;\r
+                               siblingName = start ? 'previousSibling' : 'nextSibling';\r
+                               root = dom.getRoot();\r
+\r
+                               // If it's a text node and the offset is inside the text\r
+                               if (container.nodeType == 3 && !isWhiteSpaceNode(container)) {\r
+                                       if (start ? startOffset > 0 : endOffset < container.nodeValue.length) {\r
+                                               return container;\r
+                                       }\r
                                }\r
 \r
-                               // Cleanup\r
-                               each(newWrappers, function(node) {\r
-                                       var childCount;\r
+                               for (;;) {\r
+                                       // Stop expanding on block elements\r
+                                       if (!format[0].block_expand && isBlock(parent))\r
+                                               return parent;\r
+\r
+                                       // Walk left/right\r
+                                       for (sibling = parent[siblingName]; sibling; sibling = sibling[siblingName]) {\r
+                                               if (!isBookmarkNode(sibling) && !isWhiteSpaceNode(sibling)) {\r
+                                                       return parent;\r
+                                               }\r
+                                       }\r
 \r
-                                       function getChildCount(node) {\r
-                                               var count = 0;\r
+                                       // Check if we can move up are we at root level or body level\r
+                                       if (parent.parentNode == root) {\r
+                                               container = parent;\r
+                                               break;\r
+                                       }\r
 \r
-                                               each(node.childNodes, function(node) {\r
-                                                       if (!isWhiteSpaceNode(node) && !isBookmarkNode(node))\r
-                                                               count++;\r
-                                               });\r
+                                       parent = parent.parentNode;\r
+                               }\r
 \r
-                                               return count;\r
-                                       };\r
+                               return container;\r
+                       };\r
 \r
-                                       function mergeStyles(node) {\r
-                                               var child, clone;\r
+                       // This function walks down the tree to find the leaf at the selection.\r
+                       // The offset is also returned as if node initially a leaf, the offset may be in the middle of the text node.\r
+                       function findLeaf(node, offset) {\r
+                               if (offset === undef)\r
+                                       offset = node.nodeType === 3 ? node.length : node.childNodes.length;\r
+                               while (node && node.hasChildNodes()) {\r
+                                       node = node.childNodes[offset];\r
+                                       if (node)\r
+                                               offset = node.nodeType === 3 ? node.length : node.childNodes.length;\r
+                               }\r
+                               return { node: node, offset: offset };\r
+                       }\r
 \r
-                                               each(node.childNodes, function(node) {\r
-                                                       if (node.nodeType == 1 && !isBookmarkNode(node) && !isCaretNode(node)) {\r
-                                                               child = node;\r
-                                                               return FALSE; // break loop\r
-                                                       }\r
-                                               });\r
+                       // If index based start position then resolve it\r
+                       if (startContainer.nodeType == 1 && startContainer.hasChildNodes()) {\r
+                               lastIdx = startContainer.childNodes.length - 1;\r
+                               startContainer = startContainer.childNodes[startOffset > lastIdx ? lastIdx : startOffset];\r
 \r
-                                               // If child was found and of the same type as the current node\r
-                                               if (child && matchName(child, format)) {\r
-                                                       clone = child.cloneNode(FALSE);\r
-                                                       setElementFormat(clone);\r
+                               if (startContainer.nodeType == 3)\r
+                                       startOffset = 0;\r
+                       }\r
 \r
-                                                       dom.replace(clone, node, TRUE);\r
-                                                       dom.remove(child, 1);\r
-                                               }\r
+                       // If index based end position then resolve it\r
+                       if (endContainer.nodeType == 1 && endContainer.hasChildNodes()) {\r
+                               lastIdx = endContainer.childNodes.length - 1;\r
+                               endContainer = endContainer.childNodes[endOffset > lastIdx ? lastIdx : endOffset - 1];\r
 \r
-                                               return clone || node;\r
-                                       };\r
+                               if (endContainer.nodeType == 3)\r
+                                       endOffset = endContainer.nodeValue.length;\r
+                       }\r
 \r
-                                       childCount = getChildCount(node);\r
+                       // Expands the node to the closes contentEditable false element if it exists\r
+                       function findParentContentEditable(node) {\r
+                               var parent = node;\r
 \r
-                                       // Remove empty nodes but only if there is multiple wrappers and they are not block\r
-                                       // elements so never remove single <h1></h1> since that would remove the currrent empty block element where the caret is at\r
-                                       if ((newWrappers.length > 1 || !isBlock(node)) && childCount === 0) {\r
-                                               dom.remove(node, 1);\r
-                                               return;\r
+                               while (parent) {\r
+                                       if (parent.nodeType === 1 && getContentEditable(parent)) {\r
+                                               return getContentEditable(parent) === "false" ? parent : node;\r
                                        }\r
 \r
-                                       if (format.inline || format.wrapper) {\r
-                                               // Merges the current node with it's children of similar type to reduce the number of elements\r
-                                               if (!format.exact && childCount === 1)\r
-                                                       node = mergeStyles(node);\r
-\r
-                                               // Remove/merge children\r
-                                               each(formatList, function(format) {\r
-                                                       // Merge all children of similar type will move styles from child to parent\r
-                                                       // this: <span style="color:red"><b><span style="color:red; font-size:10px">text</span></b></span>\r
-                                                       // will become: <span style="color:red"><b><span style="font-size:10px">text</span></b></span>\r
-                                                       each(dom.select(format.inline, node), function(child) {\r
-                                                               var parent;\r
+                                       parent = parent.parentNode;\r
+                               }\r
 \r
-                                                               // When wrap_links is set to false we don't want\r
-                                                               // to remove the format on children within links\r
-                                                               if (format.wrap_links === false) {\r
-                                                                       parent = child.parentNode;\r
+                               return node;\r
+                       };\r
 \r
-                                                                       do {\r
-                                                                               if (parent.nodeName === 'A')\r
-                                                                                       return;\r
-                                                                       } while (parent = parent.parentNode);\r
-                                                               }\r
+                       function findWordEndPoint(container, offset, start) {\r
+                               var walker, node, pos, lastTextNode;\r
 \r
-                                                               removeFormat(format, vars, child, format.exact ? child : null);\r
-                                                       });\r
-                                               });\r
+                               function findSpace(node, offset) {\r
+                                       var pos, pos2, str = node.nodeValue;\r
 \r
-                                               // Remove child if direct parent is of same type\r
-                                               if (matchNode(node.parentNode, name, vars)) {\r
-                                                       dom.remove(node, 1);\r
-                                                       node = 0;\r
-                                                       return TRUE;\r
-                                               }\r
+                                       if (typeof(offset) == "undefined") {\r
+                                               offset = start ? str.length : 0;\r
+                                       }\r
 \r
-                                               // Look for parent with similar style format\r
-                                               if (format.merge_with_parents) {\r
-                                                       dom.getParent(node.parentNode, function(parent) {\r
-                                                               if (matchNode(parent, name, vars)) {\r
-                                                                       dom.remove(node, 1);\r
-                                                                       node = 0;\r
-                                                                       return TRUE;\r
-                                                               }\r
-                                                       });\r
-                                               }\r
+                                       if (start) {\r
+                                               pos = str.lastIndexOf(' ', offset);\r
+                                               pos2 = str.lastIndexOf('\u00a0', offset);\r
+                                               pos = pos > pos2 ? pos : pos2;\r
 \r
-                                               // Merge next and previous siblings if they are similar <b>text</b><b>text</b> becomes <b>texttext</b>\r
-                                               if (node) {\r
-                                                       node = mergeSiblings(getNonWhiteSpaceSibling(node), node);\r
-                                                       node = mergeSiblings(node, getNonWhiteSpaceSibling(node, TRUE));\r
+                                               // Include the space on remove to avoid tag soup\r
+                                               if (pos !== -1 && !remove) {\r
+                                                       pos++;\r
                                                }\r
+                                       } else {\r
+                                               pos = str.indexOf(' ', offset);\r
+                                               pos2 = str.indexOf('\u00a0', offset);\r
+                                               pos = pos !== -1 && (pos2 === -1 || pos < pos2) ? pos : pos2;\r
                                        }\r
-                               });\r
-                       };\r
 \r
-                       if (format) {\r
-                               if (node) {\r
-                                       rng = dom.createRng();\r
+                                       return pos;\r
+                               };\r
 \r
-                                       rng.setStartBefore(node);\r
-                                       rng.setEndAfter(node);\r
+                               if (container.nodeType === 3) {\r
+                                       pos = findSpace(container, offset);\r
 \r
-                                       applyRngStyle(expandRng(rng, formatList));\r
-                               } else {\r
-                                       if (!isCollapsed || !format.inline || dom.select('td.mceSelected,th.mceSelected').length) {\r
-                                               // Obtain selection node before selection is unselected by applyRngStyle()\r
-                                               var curSelNode = ed.selection.getNode();\r
+                                       if (pos !== -1) {\r
+                                               return {container : container, offset : pos};\r
+                                       }\r
 \r
-                                               // Apply formatting to selection\r
-                                               bookmark = selection.getBookmark();\r
-                                               applyRngStyle(expandRng(selection.getRng(TRUE), formatList));\r
+                                       lastTextNode = container;\r
+                               }\r
 \r
-                                               // Colored nodes should be underlined so that the color of the underline matches the text color.\r
-                                               if (format.styles && (format.styles.color || format.styles.textDecoration)) {\r
-                                                       tinymce.walk(curSelNode, processUnderlineAndColor, 'childNodes');\r
-                                                       processUnderlineAndColor(curSelNode);\r
-                                               }\r
+                               // Walk the nodes inside the block\r
+                               walker = new TreeWalker(container, dom.getParent(container, isBlock) || ed.getBody());\r
+                               while (node = walker[start ? 'prev' : 'next']()) {\r
+                                       if (node.nodeType === 3) {\r
+                                               lastTextNode = node;\r
+                                               pos = findSpace(node);\r
 \r
-                                               selection.moveToBookmark(bookmark);\r
-                                               selection.setRng(moveStart(selection.getRng(TRUE)));\r
-                                               ed.nodeChanged();\r
-                                       } else\r
-                                               performCaretAction('apply', name, vars);\r
+                                               if (pos !== -1) {\r
+                                                       return {container : node, offset : pos};\r
+                                               }\r
+                                       } else if (isBlock(node)) {\r
+                                               break;\r
+                                       }\r
                                }\r
-                       }\r
-               };\r
-\r
-               function remove(name, vars, node) {\r
-                       var formatList = get(name), format = formatList[0], bookmark, i, rng;\r
 \r
-                       function moveStart(rng) {\r
-                               var container = rng.startContainer,\r
-                                       offset = rng.startOffset,\r
-                                       walker, node, nodes, tmpNode;\r
+                               if (lastTextNode) {\r
+                                       if (start) {\r
+                                               offset = 0;\r
+                                       } else {\r
+                                               offset = lastTextNode.length;\r
+                                       }\r
 \r
-                               // Convert text node into index if possible\r
-                               if (container.nodeType == 3 && offset >= container.nodeValue.length - 1) {\r
-                                       container = container.parentNode;\r
-                                       offset = nodeIndex(container) + 1;\r
+                                       return {container: lastTextNode, offset: offset};\r
                                }\r
+                       };\r
 \r
-                               // Move startContainer/startOffset in to a suitable node\r
-                               if (container.nodeType == 1) {\r
-                                       nodes = container.childNodes;\r
-                                       container = nodes[Math.min(offset, nodes.length - 1)];\r
-                                       walker = new TreeWalker(container);\r
+                       function findSelectorEndPoint(container, sibling_name) {\r
+                               var parents, i, y, curFormat;\r
 \r
-                                       // If offset is at end of the parent node walk to the next one\r
-                                       if (offset > nodes.length - 1)\r
-                                               walker.next();\r
+                               if (container.nodeType == 3 && container.nodeValue.length === 0 && container[sibling_name])\r
+                                       container = container[sibling_name];\r
 \r
-                                       for (node = walker.current(); node; node = walker.next()) {\r
-                                               if (node.nodeType == 3 && !isWhiteSpaceNode(node)) {\r
-                                                       // IE has a "neat" feature where it moves the start node into the closest element\r
-                                                       // we can avoid this by inserting an element before it and then remove it after we set the selection\r
-                                                       tmpNode = dom.create('a', null, INVISIBLE_CHAR);\r
-                                                       node.parentNode.insertBefore(tmpNode, node);\r
+                               parents = getParents(container);\r
+                               for (i = 0; i < parents.length; i++) {\r
+                                       for (y = 0; y < format.length; y++) {\r
+                                               curFormat = format[y];\r
 \r
-                                                       // Set selection and remove tmpNode\r
-                                                       rng.setStart(node, 0);\r
-                                                       selection.setRng(rng);\r
-                                                       dom.remove(tmpNode);\r
+                                               // If collapsed state is set then skip formats that doesn't match that\r
+                                               if ("collapsed" in curFormat && curFormat.collapsed !== rng.collapsed)\r
+                                                       continue;\r
 \r
-                                                       return;\r
-                                               }\r
+                                               if (dom.is(parents[i], curFormat.selector))\r
+                                                       return parents[i];\r
                                        }\r
                                }\r
+\r
+                               return container;\r
                        };\r
 \r
-                       // Merges the styles for each node\r
-                       function process(node) {\r
-                               var children, i, l;\r
+                       function findBlockEndPoint(container, sibling_name, sibling_name2) {\r
+                               var node;\r
 \r
-                               // Grab the children first since the nodelist might be changed\r
-                               children = tinymce.grep(node.childNodes);\r
+                               // Expand to block of similar type\r
+                               if (!format[0].wrapper)\r
+                                       node = dom.getParent(container, format[0].block);\r
 \r
-                               // Process current node\r
-                               for (i = 0, l = formatList.length; i < l; i++) {\r
-                                       if (removeFormat(formatList[i], vars, node, node))\r
-                                               break;\r
-                               }\r
+                               // Expand to first wrappable block element or any block element\r
+                               if (!node)\r
+                                       node = dom.getParent(container.nodeType == 3 ? container.parentNode : container, isBlock);\r
 \r
-                               // Process the children\r
-                               if (format.deep) {\r
-                                       for (i = 0, l = children.length; i < l; i++)\r
-                                               process(children[i]);\r
-                               }\r
-                       };\r
+                               // Exclude inner lists from wrapping\r
+                               if (node && format[0].wrapper)\r
+                                       node = getParents(node, 'ul,ol').reverse()[0] || node;\r
 \r
-                       function findFormatRoot(container) {\r
-                               var formatRoot;\r
+                               // Didn't find a block element look for first/last wrappable element\r
+                               if (!node) {\r
+                                       node = container;\r
 \r
-                               // Find format root\r
-                               each(getParents(container.parentNode).reverse(), function(parent) {\r
-                                       var format;\r
+                                       while (node[sibling_name] && !isBlock(node[sibling_name])) {\r
+                                               node = node[sibling_name];\r
 \r
-                                       // Find format root element\r
-                                       if (!formatRoot && parent.id != '_start' && parent.id != '_end') {\r
-                                               // Is the node matching the format we are looking for\r
-                                               format = matchNode(parent, name, vars);\r
-                                               if (format && format.split !== false)\r
-                                                       formatRoot = parent;\r
+                                               // Break on BR but include it will be removed later on\r
+                                               // we can't remove it now since we need to check if it can be wrapped\r
+                                               if (isEq(node, 'br'))\r
+                                                       break;\r
                                        }\r
-                               });\r
+                               }\r
 \r
-                               return formatRoot;\r
+                               return node || container;\r
                        };\r
 \r
-                       function wrapAndSplit(format_root, container, target, split) {\r
-                               var parent, clone, lastClone, firstClone, i, formatRootParent;\r
+                       // Expand to closest contentEditable element\r
+                       startContainer = findParentContentEditable(startContainer);\r
+                       endContainer = findParentContentEditable(endContainer);\r
 \r
-                               // Format root found then clone formats and split it\r
-                               if (format_root) {\r
-                                       formatRootParent = format_root.parentNode;\r
+                       // Exclude bookmark nodes if possible\r
+                       if (isBookmarkNode(startContainer.parentNode) || isBookmarkNode(startContainer)) {\r
+                               startContainer = isBookmarkNode(startContainer) ? startContainer : startContainer.parentNode;\r
+                               startContainer = startContainer.nextSibling || startContainer;\r
 \r
-                                       for (parent = container.parentNode; parent && parent != formatRootParent; parent = parent.parentNode) {\r
-                                               clone = parent.cloneNode(FALSE);\r
+                               if (startContainer.nodeType == 3)\r
+                                       startOffset = 0;\r
+                       }\r
 \r
-                                               for (i = 0; i < formatList.length; i++) {\r
-                                                       if (removeFormat(formatList[i], vars, clone, clone)) {\r
-                                                               clone = 0;\r
-                                                               break;\r
-                                                       }\r
-                                               }\r
+                       if (isBookmarkNode(endContainer.parentNode) || isBookmarkNode(endContainer)) {\r
+                               endContainer = isBookmarkNode(endContainer) ? endContainer : endContainer.parentNode;\r
+                               endContainer = endContainer.previousSibling || endContainer;\r
 \r
-                                               // Build wrapper node\r
-                                               if (clone) {\r
-                                                       if (lastClone)\r
-                                                               clone.appendChild(lastClone);\r
+                               if (endContainer.nodeType == 3)\r
+                                       endOffset = endContainer.length;\r
+                       }\r
 \r
-                                                       if (!firstClone)\r
-                                                               firstClone = clone;\r
+                       if (format[0].inline) {\r
+                               if (rng.collapsed) {\r
+                                       // Expand left to closest word boundery\r
+                                       endPoint = findWordEndPoint(startContainer, startOffset, true);\r
+                                       if (endPoint) {\r
+                                               startContainer = endPoint.container;\r
+                                               startOffset = endPoint.offset;\r
+                                       }\r
 \r
-                                                       lastClone = clone;\r
-                                               }\r
+                                       // Expand right to closest word boundery\r
+                                       endPoint = findWordEndPoint(endContainer, endOffset);\r
+                                       if (endPoint) {\r
+                                               endContainer = endPoint.container;\r
+                                               endOffset = endPoint.offset;\r
                                        }\r
+                               }\r
 \r
-                                       // Never split block elements if the format is mixed\r
-                                       if (split && (!format.mixed || !isBlock(format_root)))\r
-                                               container = dom.split(format_root, container);\r
+                               // Avoid applying formatting to a trailing space.\r
+                               leaf = findLeaf(endContainer, endOffset);\r
+                               if (leaf.node) {\r
+                                       while (leaf.node && leaf.offset === 0 && leaf.node.previousSibling)\r
+                                               leaf = findLeaf(leaf.node.previousSibling);\r
 \r
-                                       // Wrap container in cloned formats\r
-                                       if (lastClone) {\r
-                                               target.parentNode.insertBefore(lastClone, target);\r
-                                               firstClone.appendChild(target);\r
+                                       if (leaf.node && leaf.offset > 0 && leaf.node.nodeType === 3 &&\r
+                                                       leaf.node.nodeValue.charAt(leaf.offset - 1) === ' ') {\r
+\r
+                                               if (leaf.offset > 1) {\r
+                                                       endContainer = leaf.node;\r
+                                                       endContainer.splitText(leaf.offset - 1);\r
+                                               }\r
                                        }\r
                                }\r
+                       }\r
 \r
-                               return container;\r
-                       };\r
+                       // Move start/end point up the tree if the leaves are sharp and if we are in different containers\r
+                       // Example * becomes !: !<p><b><i>*text</i><i>text*</i></b></p>!\r
+                       // This will reduce the number of wrapper elements that needs to be created\r
+                       // Move start point up the tree\r
+                       if (format[0].inline || format[0].block_expand) {\r
+                               if (!format[0].inline || (startContainer.nodeType != 3 || startOffset === 0)) {\r
+                                       startContainer = findParentContainer(true);\r
+                               }\r
 \r
-                       function splitToFormatRoot(container) {\r
-                               return wrapAndSplit(findFormatRoot(container), container, container, true);\r
+                               if (!format[0].inline || (endContainer.nodeType != 3 || endOffset === endContainer.nodeValue.length)) {\r
+                                       endContainer = findParentContainer();\r
+                               }\r
+                       }\r
+\r
+                       // Expand start/end container to matching selector\r
+                       if (format[0].selector && format[0].expand !== FALSE && !format[0].inline) {\r
+                               // Find new startContainer/endContainer if there is better one\r
+                               startContainer = findSelectorEndPoint(startContainer, 'previousSibling');\r
+                               endContainer = findSelectorEndPoint(endContainer, 'nextSibling');\r
+                       }\r
+\r
+                       // Expand start/end container to matching block element or text node\r
+                       if (format[0].block || format[0].selector) {\r
+                               // Find new startContainer/endContainer if there is better one\r
+                               startContainer = findBlockEndPoint(startContainer, 'previousSibling');\r
+                               endContainer = findBlockEndPoint(endContainer, 'nextSibling');\r
+\r
+                               // Non block element then try to expand up the leaf\r
+                               if (format[0].block) {\r
+                                       if (!isBlock(startContainer))\r
+                                               startContainer = findParentContainer(true);\r
+\r
+                                       if (!isBlock(endContainer))\r
+                                               endContainer = findParentContainer();\r
+                               }\r
+                       }\r
+\r
+                       // Setup index for startContainer\r
+                       if (startContainer.nodeType == 1) {\r
+                               startOffset = nodeIndex(startContainer);\r
+                               startContainer = startContainer.parentNode;\r
+                       }\r
+\r
+                       // Setup index for endContainer\r
+                       if (endContainer.nodeType == 1) {\r
+                               endOffset = nodeIndex(endContainer) + 1;\r
+                               endContainer = endContainer.parentNode;\r
+                       }\r
+\r
+                       // Return new range like object\r
+                       return {\r
+                               startContainer : startContainer,\r
+                               startOffset : startOffset,\r
+                               endContainer : endContainer,\r
+                               endOffset : endOffset\r
                        };\r
+               }\r
 \r
-                       function unwrap(start) {\r
-                               var node = dom.get(start ? '_start' : '_end'),\r
-                                       out = node[start ? 'firstChild' : 'lastChild'];\r
+               function removeFormat(format, vars, node, compare_node) {\r
+                       var i, attrs, stylesModified;\r
+\r
+                       // Check if node matches format\r
+                       if (!matchName(node, format))\r
+                               return FALSE;\r
+\r
+                       // Should we compare with format attribs and styles\r
+                       if (format.remove != 'all') {\r
+                               // Remove styles\r
+                               each(format.styles, function(value, name) {\r
+                                       value = replaceVars(value, vars);\r
 \r
-                               // If the end is placed within the start the result will be removed\r
-                               // So this checks if the out node is a bookmark node if it is it\r
-                               // checks for another more suitable node\r
-                               if (isBookmarkNode(out))\r
-                                       out = out[start ? 'firstChild' : 'lastChild'];\r
+                                       // Indexed array\r
+                                       if (typeof(name) === 'number') {\r
+                                               name = value;\r
+                                               compare_node = 0;\r
+                                       }\r
 \r
-                               dom.remove(node, true);\r
+                                       if (!compare_node || isEq(getStyle(compare_node, name), value))\r
+                                               dom.setStyle(node, name, '');\r
 \r
-                               return out;\r
-                       };\r
+                                       stylesModified = 1;\r
+                               });\r
 \r
-                       function removeRngStyle(rng) {\r
-                               var startContainer, endContainer;\r
+                               // Remove style attribute if it's empty\r
+                               if (stylesModified && dom.getAttrib(node, 'style') == '') {\r
+                                       node.removeAttribute('style');\r
+                                       node.removeAttribute('data-mce-style');\r
+                               }\r
 \r
-                               rng = expandRng(rng, formatList, TRUE);\r
+                               // Remove attributes\r
+                               each(format.attributes, function(value, name) {\r
+                                       var valueOut;\r
 \r
-                               if (format.split) {\r
-                                       startContainer = getContainer(rng, TRUE);\r
-                                       endContainer = getContainer(rng);\r
+                                       value = replaceVars(value, vars);\r
 \r
-                                       if (startContainer != endContainer) {\r
-                                               // Wrap start/end nodes in span element since these might be cloned/moved\r
-                                               startContainer = wrap(startContainer, 'span', {id : '_start', 'data-mce-type' : 'bookmark'});\r
-                                               endContainer = wrap(endContainer, 'span', {id : '_end', 'data-mce-type' : 'bookmark'});\r
+                                       // Indexed array\r
+                                       if (typeof(name) === 'number') {\r
+                                               name = value;\r
+                                               compare_node = 0;\r
+                                       }\r
 \r
-                                               // Split start/end\r
-                                               splitToFormatRoot(startContainer);\r
-                                               splitToFormatRoot(endContainer);\r
+                                       if (!compare_node || isEq(dom.getAttrib(compare_node, name), value)) {\r
+                                               // Keep internal classes\r
+                                               if (name == 'class') {\r
+                                                       value = dom.getAttrib(node, name);\r
+                                                       if (value) {\r
+                                                               // Build new class value where everything is removed except the internal prefixed classes\r
+                                                               valueOut = '';\r
+                                                               each(value.split(/\s+/), function(cls) {\r
+                                                                       if (/mce\w+/.test(cls))\r
+                                                                               valueOut += (valueOut ? ' ' : '') + cls;\r
+                                                               });\r
 \r
-                                               // Unwrap start/end to get real elements again\r
-                                               startContainer = unwrap(TRUE);\r
-                                               endContainer = unwrap();\r
-                                       } else\r
-                                               startContainer = endContainer = splitToFormatRoot(startContainer);\r
+                                                               // We got some internal classes left\r
+                                                               if (valueOut) {\r
+                                                                       dom.setAttrib(node, name, valueOut);\r
+                                                                       return;\r
+                                                               }\r
+                                                       }\r
+                                               }\r
 \r
-                                       // Update range positions since they might have changed after the split operations\r
-                                       rng.startContainer = startContainer.parentNode;\r
-                                       rng.startOffset = nodeIndex(startContainer);\r
-                                       rng.endContainer = endContainer.parentNode;\r
-                                       rng.endOffset = nodeIndex(endContainer) + 1;\r
-                               }\r
+                                               // IE6 has a bug where the attribute doesn't get removed correctly\r
+                                               if (name == "class")\r
+                                                       node.removeAttribute('className');\r
 \r
-                               // Remove items between start/end\r
-                               rangeUtils.walk(rng, function(nodes) {\r
-                                       each(nodes, function(node) {\r
-                                               process(node);\r
+                                               // Remove mce prefixed attributes\r
+                                               if (MCE_ATTR_RE.test(name))\r
+                                                       node.removeAttribute('data-mce-' + name);\r
 \r
-                                               // Remove parent span if it only contains text-decoration: underline, yet a parent node is also underlined.\r
-                                               if (node.nodeType === 1 && ed.dom.getStyle(node, 'text-decoration') === 'underline' && node.parentNode && getTextDecoration(node.parentNode) === 'underline') {\r
-                                                       removeFormat({'deep': false, 'exact': true, 'inline': 'span', 'styles': {'textDecoration' : 'underline'}}, null, node);\r
-                                               }\r
-                                       });\r
+                                               node.removeAttribute(name);\r
+                                       }\r
                                });\r
-                       };\r
 \r
-                       // Handle node\r
-                       if (node) {\r
-                               rng = dom.createRng();\r
-                               rng.setStartBefore(node);\r
-                               rng.setEndAfter(node);\r
-                               removeRngStyle(rng);\r
-                               return;\r
-                       }\r
+                               // Remove classes\r
+                               each(format.classes, function(value) {\r
+                                       value = replaceVars(value, vars);\r
 \r
-                       if (!selection.isCollapsed() || !format.inline || dom.select('td.mceSelected,th.mceSelected').length) {\r
-                               bookmark = selection.getBookmark();\r
-                               removeRngStyle(selection.getRng(TRUE));\r
-                               selection.moveToBookmark(bookmark);\r
+                                       if (!compare_node || dom.hasClass(compare_node, value))\r
+                                               dom.removeClass(node, value);\r
+                               });\r
 \r
-                               // 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\r
-                               if (match(name, vars, selection.getStart())) {\r
-                                       moveStart(selection.getRng(true));\r
+                               // Check for non internal attributes\r
+                               attrs = dom.getAttribs(node);\r
+                               for (i = 0; i < attrs.length; i++) {\r
+                                       if (attrs[i].nodeName.indexOf('_') !== 0)\r
+                                               return FALSE;\r
                                }\r
+                       }\r
 \r
-                               ed.nodeChanged();\r
-                       } else\r
-                               performCaretAction('remove', name, vars);\r
-               };\r
-\r
-               function toggle(name, vars, node) {\r
-                       var fmt = get(name);\r
-\r
-                       if (match(name, vars, node) && (!('toggle' in fmt[0]) || fmt[0]['toggle']))\r
-                               remove(name, vars, node);\r
-                       else\r
-                               apply(name, vars, node);\r
+                       // Remove the inline child if it's empty for example <b> or <span>\r
+                       if (format.remove != 'none') {\r
+                               removeNode(node, format);\r
+                               return TRUE;\r
+                       }\r
                };\r
 \r
-               function matchNode(node, name, vars, similar) {\r
-                       var formatList = get(name), format, i, classes;\r
+               function removeNode(node, format) {\r
+                       var parentNode = node.parentNode, rootBlockElm;\r
 \r
-                       function matchItems(node, format, item_name) {\r
-                               var key, value, items = format[item_name], i;\r
+                       function find(node, next, inc) {\r
+                               node = getNonWhiteSpaceSibling(node, next, inc);\r
 \r
-                               // Check all items\r
-                               if (items) {\r
-                                       // Non indexed object\r
-                                       if (items.length === undefined) {\r
-                                               for (key in items) {\r
-                                                       if (items.hasOwnProperty(key)) {\r
-                                                               if (item_name === 'attributes')\r
-                                                                       value = dom.getAttrib(node, key);\r
-                                                               else\r
-                                                                       value = getStyle(node, key);\r
+                               return !node || (node.nodeName == 'BR' || isBlock(node));\r
+                       };\r
 \r
-                                                               if (similar && !value && !format.exact)\r
-                                                                       return;\r
+                       if (format.block) {\r
+                               if (!forcedRootBlock) {\r
+                                       // Append BR elements if needed before we remove the block\r
+                                       if (isBlock(node) && !isBlock(parentNode)) {\r
+                                               if (!find(node, FALSE) && !find(node.firstChild, TRUE, 1))\r
+                                                       node.insertBefore(dom.create('br'), node.firstChild);\r
 \r
-                                                               if ((!similar || format.exact) && !isEq(value, replaceVars(items[key], vars)))\r
-                                                                       return;\r
-                                                       }\r
-                                               }\r
-                                       } else {\r
-                                               // Only one match needed for indexed arrays\r
-                                               for (i = 0; i < items.length; i++) {\r
-                                                       if (item_name === 'attributes' ? dom.getAttrib(node, items[i]) : getStyle(node, items[i]))\r
-                                                               return format;\r
+                                               if (!find(node, TRUE) && !find(node.lastChild, FALSE, 1))\r
+                                                       node.appendChild(dom.create('br'));\r
+                                       }\r
+                               } else {\r
+                                       // Wrap the block in a forcedRootBlock if we are at the root of document\r
+                                       if (parentNode == dom.getRoot()) {\r
+                                               if (!format.list_block || !isEq(node, format.list_block)) {\r
+                                                       each(tinymce.grep(node.childNodes), function(node) {\r
+                                                               if (isValid(forcedRootBlock, node.nodeName.toLowerCase())) {\r
+                                                                       if (!rootBlockElm)\r
+                                                                               rootBlockElm = wrap(node, forcedRootBlock);\r
+                                                                       else\r
+                                                                               rootBlockElm.appendChild(node);\r
+                                                               } else\r
+                                                                       rootBlockElm = 0;\r
+                                                       });\r
                                                }\r
                                        }\r
                                }\r
+                       }\r
 \r
-                               return format;\r
-                       };\r
+                       // Never remove nodes that isn't the specified inline element if a selector is specified too\r
+                       if (format.selector && format.inline && !isEq(format.inline, node))\r
+                               return;\r
 \r
-                       if (formatList && node) {\r
-                               // Check each format in list\r
-                               for (i = 0; i < formatList.length; i++) {\r
-                                       format = formatList[i];\r
+                       dom.remove(node, 1);\r
+               };\r
 \r
-                                       // Name name, attributes, styles and classes\r
-                                       if (matchName(node, format) && matchItems(node, format, 'attributes') && matchItems(node, format, 'styles')) {\r
-                                               // Match classes\r
-                                               if (classes = format.classes) {\r
-                                                       for (i = 0; i < classes.length; i++) {\r
-                                                               if (!dom.hasClass(node, classes[i]))\r
-                                                                       return;\r
-                                                       }\r
-                                               }\r
+               function getNonWhiteSpaceSibling(node, next, inc) {\r
+                       if (node) {\r
+                               next = next ? 'nextSibling' : 'previousSibling';\r
 \r
-                                               return format;\r
-                                       }\r
+                               for (node = inc ? node : node[next]; node; node = node[next]) {\r
+                                       if (node.nodeType == 1 || !isWhiteSpaceNode(node))\r
+                                               return node;\r
                                }\r
                        }\r
                };\r
 \r
-               function match(name, vars, node) {\r
-                       var startNode, i;\r
-\r
-                       function matchParents(node) {\r
-                               // Find first node with similar format settings\r
-                               node = dom.getParent(node, function(node) {\r
-                                       return !!matchNode(node, name, vars, true);\r
-                               });\r
-\r
-                               // Do an exact check on the similar format element\r
-                               return matchNode(node, name, vars);\r
-                       };\r
-\r
-                       // Check specified node\r
-                       if (node)\r
-                               return matchParents(node);\r
+               function isBookmarkNode(node) {\r
+                       return node && node.nodeType == 1 && node.getAttribute('data-mce-type') == 'bookmark';\r
+               };\r
 \r
-                       // Check pending formats\r
-                       if (selection.isCollapsed()) {\r
-                               for (i = pendingFormats.apply.length - 1; i >= 0; i--) {\r
-                                       if (pendingFormats.apply[i].name == name)\r
-                                               return true;\r
-                               }\r
+               function mergeSiblings(prev, next) {\r
+                       var marker, sibling, tmpSibling;\r
 \r
-                               for (i = pendingFormats.remove.length - 1; i >= 0; i--) {\r
-                                       if (pendingFormats.remove[i].name == name)\r
-                                               return false;\r
-                               }\r
+                       function compareElements(node1, node2) {\r
+                               // Not the same name\r
+                               if (node1.nodeName != node2.nodeName)\r
+                                       return FALSE;\r
 \r
-                               return matchParents(selection.getNode());\r
-                       }\r
+                               function getAttribs(node) {\r
+                                       var attribs = {};\r
 \r
-                       // Check selected node\r
-                       node = selection.getNode();\r
-                       if (matchParents(node))\r
-                               return TRUE;\r
+                                       each(dom.getAttribs(node), function(attr) {\r
+                                               var name = attr.nodeName.toLowerCase();\r
 \r
-                       // Check start node if it's different\r
-                       startNode = selection.getStart();\r
-                       if (startNode != node) {\r
-                               if (matchParents(startNode))\r
-                                       return TRUE;\r
-                       }\r
+                                               // Don't compare internal attributes or style\r
+                                               if (name.indexOf('_') !== 0 && name !== 'style')\r
+                                                       attribs[name] = dom.getAttrib(node, name);\r
+                                       });\r
 \r
-                       return FALSE;\r
-               };\r
+                                       return attribs;\r
+                               };\r
 \r
-               function matchAll(names, vars) {\r
-                       var startElement, matchedFormatNames = [], checkedMap = {}, i, ni, name;\r
+                               function compareObjects(obj1, obj2) {\r
+                                       var value, name;\r
 \r
-                       // If the selection is collapsed then check pending formats\r
-                       if (selection.isCollapsed()) {\r
-                               for (ni = 0; ni < names.length; ni++) {\r
-                                       // If the name is to be removed, then stop it from being added\r
-                                       for (i = pendingFormats.remove.length - 1; i >= 0; i--) {\r
-                                               name = names[ni];\r
+                                       for (name in obj1) {\r
+                                               // Obj1 has item obj2 doesn't have\r
+                                               if (obj1.hasOwnProperty(name)) {\r
+                                                       value = obj2[name];\r
 \r
-                                               if (pendingFormats.remove[i].name == name) {\r
-                                                       checkedMap[name] = true;\r
-                                                       break;\r
-                                               }\r
-                                       }\r
-                               }\r
+                                                       // Obj2 doesn't have obj1 item\r
+                                                       if (value === undef)\r
+                                                               return FALSE;\r
 \r
-                               // If the format is to be applied\r
-                               for (i = pendingFormats.apply.length - 1; i >= 0; i--) {\r
-                                       for (ni = 0; ni < names.length; ni++) {\r
-                                               name = names[ni];\r
+                                                       // Obj2 item has a different value\r
+                                                       if (obj1[name] != value)\r
+                                                               return FALSE;\r
 \r
-                                               if (!checkedMap[name] && pendingFormats.apply[i].name == name) {\r
-                                                       checkedMap[name] = true;\r
-                                                       matchedFormatNames.push(name);\r
+                                                       // Delete similar value\r
+                                                       delete obj2[name];\r
                                                }\r
                                        }\r
-                               }\r
-                       }\r
 \r
-                       // Check start of selection for formats\r
-                       startElement = selection.getStart();\r
-                       dom.getParent(startElement, function(node) {\r
-                               var i, name;\r
+                                       // Check if obj 2 has something obj 1 doesn't have\r
+                                       for (name in obj2) {\r
+                                               // Obj2 has item obj1 doesn't have\r
+                                               if (obj2.hasOwnProperty(name))\r
+                                                       return FALSE;\r
+                                       }\r
 \r
-                               for (i = 0; i < names.length; i++) {\r
-                                       name = names[i];\r
+                                       return TRUE;\r
+                               };\r
 \r
-                                       if (!checkedMap[name] && matchNode(node, name, vars)) {\r
-                                               checkedMap[name] = true;\r
-                                               matchedFormatNames.push(name);\r
-                                       }\r
-                               }\r
-                       });\r
+                               // Attribs are not the same\r
+                               if (!compareObjects(getAttribs(node1), getAttribs(node2)))\r
+                                       return FALSE;\r
 \r
-                       return matchedFormatNames;\r
-               };\r
+                               // Styles are not the same\r
+                               if (!compareObjects(dom.parseStyle(dom.getAttrib(node1, 'style')), dom.parseStyle(dom.getAttrib(node2, 'style'))))\r
+                                       return FALSE;\r
 \r
-               function canApply(name) {\r
-                       var formatList = get(name), startNode, parents, i, x, selector;\r
+                               return TRUE;\r
+                       };\r
 \r
-                       if (formatList) {\r
-                               startNode = selection.getStart();\r
-                               parents = getParents(startNode);\r
+                       function findElementSibling(node, sibling_name) {\r
+                               for (sibling = node; sibling; sibling = sibling[sibling_name]) {\r
+                                       if (sibling.nodeType == 3 && sibling.nodeValue.length !== 0)\r
+                                               return node;\r
 \r
-                               for (x = formatList.length - 1; x >= 0; x--) {\r
-                                       selector = formatList[x].selector;\r
+                                       if (sibling.nodeType == 1 && !isBookmarkNode(sibling))\r
+                                               return sibling;\r
+                               }\r
 \r
-                                       // Format is not selector based, then always return TRUE\r
-                                       if (!selector)\r
-                                               return TRUE;\r
+                               return node;\r
+                       };\r
 \r
-                                       for (i = parents.length - 1; i >= 0; i--) {\r
-                                               if (dom.is(parents[i], selector))\r
-                                                       return TRUE;\r
+                       // Check if next/prev exists and that they are elements\r
+                       if (prev && next) {\r
+                               // If previous sibling is empty then jump over it\r
+                               prev = findElementSibling(prev, 'previousSibling');\r
+                               next = findElementSibling(next, 'nextSibling');\r
+\r
+                               // Compare next and previous nodes\r
+                               if (compareElements(prev, next)) {\r
+                                       // Append nodes between\r
+                                       for (sibling = prev.nextSibling; sibling && sibling != next;) {\r
+                                               tmpSibling = sibling;\r
+                                               sibling = sibling.nextSibling;\r
+                                               prev.appendChild(tmpSibling);\r
                                        }\r
+\r
+                                       // Remove next node\r
+                                       dom.remove(next);\r
+\r
+                                       // Move children into prev node\r
+                                       each(tinymce.grep(next.childNodes), function(node) {\r
+                                               prev.appendChild(node);\r
+                                       });\r
+\r
+                                       return prev;\r
                                }\r
                        }\r
 \r
-                       return FALSE;\r
+                       return next;\r
                };\r
 \r
-               // Expose to public\r
-               tinymce.extend(this, {\r
-                       get : get,\r
-                       register : register,\r
-                       apply : apply,\r
-                       remove : remove,\r
-                       toggle : toggle,\r
-                       match : match,\r
-                       matchAll : matchAll,\r
-                       matchNode : matchNode,\r
-                       canApply : canApply\r
-               });\r
+               function isTextBlock(name) {\r
+                       return /^(h[1-6]|p|div|pre|address|dl|dt|dd)$/.test(name);\r
+               };\r
 \r
-               // Private functions\r
+               function getContainer(rng, start) {\r
+                       var container, offset, lastIdx, walker;\r
 \r
-               function matchName(node, format) {\r
-                       // Check for inline match\r
-                       if (isEq(node, format.inline))\r
-                               return TRUE;\r
+                       container = rng[start ? 'startContainer' : 'endContainer'];\r
+                       offset = rng[start ? 'startOffset' : 'endOffset'];\r
 \r
-                       // Check for block match\r
-                       if (isEq(node, format.block))\r
-                               return TRUE;\r
+                       if (container.nodeType == 1) {\r
+                               lastIdx = container.childNodes.length - 1;\r
 \r
-                       // Check for selector match\r
-                       if (format.selector)\r
-                               return dom.is(node, format.selector);\r
-               };\r
+                               if (!start && offset)\r
+                                       offset--;\r
 \r
-               function isEq(str1, str2) {\r
-                       str1 = str1 || '';\r
-                       str2 = str2 || '';\r
+                               container = container.childNodes[offset > lastIdx ? lastIdx : offset];\r
+                       }\r
 \r
-                       str1 = '' + (str1.nodeName || str1);\r
-                       str2 = '' + (str2.nodeName || str2);\r
+                       // If start text node is excluded then walk to the next node\r
+                       if (container.nodeType === 3 && start && offset >= container.nodeValue.length) {\r
+                               container = new TreeWalker(container, ed.getBody()).next() || container;\r
+                       }\r
 \r
-                       return str1.toLowerCase() == str2.toLowerCase();\r
+                       // If end text node is excluded then walk to the previous node\r
+                       if (container.nodeType === 3 && !start && offset === 0) {\r
+                               container = new TreeWalker(container, ed.getBody()).prev() || container;\r
+                       }\r
+\r
+                       return container;\r
                };\r
 \r
-               function getStyle(node, name) {\r
-                       var styleVal = dom.getStyle(node, name);\r
+               function performCaretAction(type, name, vars) {\r
+                       var caretContainerId = '_mce_caret', debug = ed.settings.caret_debug;\r
 \r
-                       // Force the format to hex\r
-                       if (name == 'color' || name == 'backgroundColor')\r
-                               styleVal = dom.toHex(styleVal);\r
+                       // Creates a caret container bogus element\r
+                       function createCaretContainer(fill) {\r
+                               var caretContainer = dom.create('span', {id: caretContainerId, 'data-mce-bogus': true, style: debug ? 'color:red' : ''});\r
 \r
-                       // Opera will return bold as 700\r
-                       if (name == 'fontWeight' && styleVal == 700)\r
-                               styleVal = 'bold';\r
+                               if (fill) {\r
+                                       caretContainer.appendChild(ed.getDoc().createTextNode(INVISIBLE_CHAR));\r
+                               }\r
 \r
-                       return '' + styleVal;\r
-               };\r
+                               return caretContainer;\r
+                       };\r
 \r
-               function replaceVars(value, vars) {\r
-                       if (typeof(value) != "string")\r
-                               value = value(vars);\r
-                       else if (vars) {\r
-                               value = value.replace(/%(\w+)/g, function(str, name) {\r
-                                       return vars[name] || str;\r
-                               });\r
-                       }\r
+                       function isCaretContainerEmpty(node, nodes) {\r
+                               while (node) {\r
+                                       if ((node.nodeType === 3 && node.nodeValue !== INVISIBLE_CHAR) || node.childNodes.length > 1) {\r
+                                               return false;\r
+                                       }\r
 \r
-                       return value;\r
-               };\r
+                                       // Collect nodes\r
+                                       if (nodes && node.nodeType === 1) {\r
+                                               nodes.push(node);\r
+                                       }\r
 \r
-               function isWhiteSpaceNode(node) {\r
-                       return node && node.nodeType === 3 && /^([\s\r\n]+|)$/.test(node.nodeValue);\r
-               };\r
+                                       node = node.firstChild;\r
+                               }\r
 \r
-               function wrap(node, name, attrs) {\r
-                       var wrapper = dom.create(name, attrs);\r
+                               return true;\r
+                       };\r
+                       \r
+                       // Returns any parent caret container element\r
+                       function getParentCaretContainer(node) {\r
+                               while (node) {\r
+                                       if (node.id === caretContainerId) {\r
+                                               return node;\r
+                                       }\r
 \r
-                       node.parentNode.insertBefore(wrapper, node);\r
-                       wrapper.appendChild(node);\r
+                                       node = node.parentNode;\r
+                               }\r
+                       };\r
 \r
-                       return wrapper;\r
-               };\r
+                       // Finds the first text node in the specified node\r
+                       function findFirstTextNode(node) {\r
+                               var walker;\r
 \r
-               function expandRng(rng, format, remove) {\r
-                       var startContainer = rng.startContainer,\r
-                               startOffset = rng.startOffset,\r
-                               endContainer = rng.endContainer,\r
-                               endOffset = rng.endOffset, sibling, lastIdx, leaf;\r
+                               if (node) {\r
+                                       walker = new TreeWalker(node, node);\r
 \r
-                       // This function walks up the tree if there is no siblings before/after the node\r
-                       function findParentContainer(container, child_name, sibling_name, root) {\r
-                               var parent, child;\r
+                                       for (node = walker.current(); node; node = walker.next()) {\r
+                                               if (node.nodeType === 3) {\r
+                                                       return node;\r
+                                               }\r
+                                       }\r
+                               }\r
+                       };\r
 \r
-                               root = root || dom.getRoot();\r
+                       // Removes the caret container for the specified node or all on the current document\r
+                       function removeCaretContainer(node, move_caret) {\r
+                               var child, rng;\r
 \r
-                               for (;;) {\r
-                                       // Check if we can move up are we at root level or body level\r
-                                       parent = container.parentNode;\r
+                               if (!node) {\r
+                                       node = getParentCaretContainer(selection.getStart());\r
 \r
-                                       // Stop expanding on block elements or root depending on format\r
-                                       if (parent == root || (!format[0].block_expand && isBlock(parent)))\r
-                                               return container;\r
+                                       if (!node) {\r
+                                               while (node = dom.get(caretContainerId)) {\r
+                                                       removeCaretContainer(node, false);\r
+                                               }\r
+                                       }\r
+                               } else {\r
+                                       rng = selection.getRng(true);\r
+\r
+                                       if (isCaretContainerEmpty(node)) {\r
+                                               if (move_caret !== false) {\r
+                                                       rng.setStartBefore(node);\r
+                                                       rng.setEndBefore(node);\r
+                                               }\r
 \r
-                                       for (sibling = parent[child_name]; sibling && sibling != container; sibling = sibling[sibling_name]) {\r
-                                               if (sibling.nodeType == 1 && !isBookmarkNode(sibling))\r
-                                                       return container;\r
+                                               dom.remove(node);\r
+                                       } else {\r
+                                               child = findFirstTextNode(node);\r
+\r
+                                               if (child.nodeValue.charAt(0) === INVISIBLE_CHAR) {\r
+                                                       child = child.deleteData(0, 1);\r
+                                               }\r
 \r
-                                               if (sibling.nodeType == 3 && !isWhiteSpaceNode(sibling))\r
-                                                       return container;\r
+                                               dom.remove(node, 1);\r
                                        }\r
 \r
-                                       container = container.parentNode;\r
+                                       selection.setRng(rng);\r
                                }\r
-\r
-                               return container;\r
                        };\r
-\r
-                       // This function walks down the tree to find the leaf at the selection.\r
-                       // The offset is also returned as if node initially a leaf, the offset may be in the middle of the text node.\r
-                       function findLeaf(node, offset) {\r
-                               if (offset === undefined)\r
-                                       offset = node.nodeType === 3 ? node.length : node.childNodes.length;\r
-                               while (node && node.hasChildNodes()) {\r
-                                       node = node.childNodes[offset];\r
-                                       if (node)\r
-                                               offset = node.nodeType === 3 ? node.length : node.childNodes.length;\r
+                       \r
+                       // Applies formatting to the caret postion\r
+                       function applyCaretFormat() {\r
+                               var rng, caretContainer, textNode, offset, bookmark, container, text;\r
+\r
+                               rng = selection.getRng(true);\r
+                               offset = rng.startOffset;\r
+                               container = rng.startContainer;\r
+                               text = container.nodeValue;\r
+\r
+                               caretContainer = getParentCaretContainer(selection.getStart());\r
+                               if (caretContainer) {\r
+                                       textNode = findFirstTextNode(caretContainer);\r
                                }\r
-                               return { node: node, offset: offset };\r
-                       }\r
 \r
-                       // If index based start position then resolve it\r
-                       if (startContainer.nodeType == 1 && startContainer.hasChildNodes()) {\r
-                               lastIdx = startContainer.childNodes.length - 1;\r
-                               startContainer = startContainer.childNodes[startOffset > lastIdx ? lastIdx : startOffset];\r
+                               // Expand to word is caret is in the middle of a text node and the char before/after is a alpha numeric character\r
+                               if (text && offset > 0 && offset < text.length && /\w/.test(text.charAt(offset)) && /\w/.test(text.charAt(offset - 1))) {\r
+                                       // Get bookmark of caret position\r
+                                       bookmark = selection.getBookmark();\r
 \r
-                               if (startContainer.nodeType == 3)\r
-                                       startOffset = 0;\r
-                       }\r
+                                       // Collapse bookmark range (WebKit)\r
+                                       rng.collapse(true);\r
 \r
-                       // If index based end position then resolve it\r
-                       if (endContainer.nodeType == 1 && endContainer.hasChildNodes()) {\r
-                               lastIdx = endContainer.childNodes.length - 1;\r
-                               endContainer = endContainer.childNodes[endOffset > lastIdx ? lastIdx : endOffset - 1];\r
+                                       // Expand the range to the closest word and split it at those points\r
+                                       rng = expandRng(rng, get(name));\r
+                                       rng = rangeUtils.split(rng);\r
 \r
-                               if (endContainer.nodeType == 3)\r
-                                       endOffset = endContainer.nodeValue.length;\r
-                       }\r
+                                       // Apply the format to the range\r
+                                       apply(name, vars, rng);\r
 \r
-                       // Exclude bookmark nodes if possible\r
-                       if (isBookmarkNode(startContainer.parentNode))\r
-                               startContainer = startContainer.parentNode;\r
+                                       // Move selection back to caret position\r
+                                       selection.moveToBookmark(bookmark);\r
+                               } else {\r
+                                       if (!caretContainer || textNode.nodeValue !== INVISIBLE_CHAR) {\r
+                                               caretContainer = createCaretContainer(true);\r
+                                               textNode = caretContainer.firstChild;\r
 \r
-                       if (isBookmarkNode(startContainer))\r
-                               startContainer = startContainer.nextSibling || startContainer;\r
+                                               rng.insertNode(caretContainer);\r
+                                               offset = 1;\r
 \r
-                       if (isBookmarkNode(endContainer.parentNode)) {\r
-                               endOffset = dom.nodeIndex(endContainer);\r
-                               endContainer = endContainer.parentNode;\r
-                       }\r
+                                               apply(name, vars, caretContainer);\r
+                                       } else {\r
+                                               apply(name, vars, caretContainer);\r
+                                       }\r
 \r
-                       if (isBookmarkNode(endContainer) && endContainer.previousSibling) {\r
-                               endContainer = endContainer.previousSibling;\r
-                               endOffset = endContainer.length;\r
-                       }\r
+                                       // Move selection to text node\r
+                                       selection.setCursorLocation(textNode, offset);\r
+                               }\r
+                       };\r
+\r
+                       function removeCaretFormat() {\r
+                               var rng = selection.getRng(true), container, offset, bookmark,\r
+                                       hasContentAfter, node, formatNode, parents = [], i, caretContainer;\r
+\r
+                               container = rng.startContainer;\r
+                               offset = rng.startOffset;\r
+                               node = container;\r
+\r
+                               if (container.nodeType == 3) {\r
+                                       if (offset != container.nodeValue.length || container.nodeValue === INVISIBLE_CHAR) {\r
+                                               hasContentAfter = true;\r
+                                       }\r
 \r
-                       if (format[0].inline) {\r
-                               // Avoid applying formatting to a trailing space.\r
-                               leaf = findLeaf(endContainer, endOffset);\r
-                               if (leaf.node) {\r
-                                       while (leaf.node && leaf.offset === 0 && leaf.node.previousSibling)\r
-                                               leaf = findLeaf(leaf.node.previousSibling);\r
+                                       node = node.parentNode;\r
+                               }\r
 \r
-                                       if (leaf.node && leaf.offset > 0 && leaf.node.nodeType === 3 &&\r
-                                                       leaf.node.nodeValue.charAt(leaf.offset - 1) === ' ') {\r
+                               while (node) {\r
+                                       if (matchNode(node, name, vars)) {\r
+                                               formatNode = node;\r
+                                               break;\r
+                                       }\r
 \r
-                                               if (leaf.offset > 1) {\r
-                                                       endContainer = leaf.node;\r
-                                                       endContainer.splitText(leaf.offset - 1);\r
-                                               } else if (leaf.node.previousSibling) {\r
-                                                       endContainer = leaf.node.previousSibling;\r
-                                               }\r
+                                       if (node.nextSibling) {\r
+                                               hasContentAfter = true;\r
                                        }\r
+\r
+                                       parents.push(node);\r
+                                       node = node.parentNode;\r
                                }\r
-                       }\r
-                       \r
-                       // Move start/end point up the tree if the leaves are sharp and if we are in different containers\r
-                       // Example * becomes !: !<p><b><i>*text</i><i>text*</i></b></p>!\r
-                       // This will reduce the number of wrapper elements that needs to be created\r
-                       // Move start point up the tree\r
-                       if (format[0].inline || format[0].block_expand) {\r
-                               startContainer = findParentContainer(startContainer, 'firstChild', 'nextSibling');\r
-                               endContainer = findParentContainer(endContainer, 'lastChild', 'previousSibling');\r
-                       }\r
 \r
-                       // Expand start/end container to matching selector\r
-                       if (format[0].selector && format[0].expand !== FALSE && !format[0].inline) {\r
-                               function findSelectorEndPoint(container, sibling_name) {\r
-                                       var parents, i, y, curFormat;\r
+                               // Node doesn't have the specified format\r
+                               if (!formatNode) {\r
+                                       return;\r
+                               }\r
 \r
-                                       if (container.nodeType == 3 && container.nodeValue.length == 0 && container[sibling_name])\r
-                                               container = container[sibling_name];\r
+                               // Is there contents after the caret then remove the format on the element\r
+                               if (hasContentAfter) {\r
+                                       // Get bookmark of caret position\r
+                                       bookmark = selection.getBookmark();\r
 \r
-                                       parents = getParents(container);\r
-                                       for (i = 0; i < parents.length; i++) {\r
-                                               for (y = 0; y < format.length; y++) {\r
-                                                       curFormat = format[y];\r
+                                       // Collapse bookmark range (WebKit)\r
+                                       rng.collapse(true);\r
 \r
-                                                       // If collapsed state is set then skip formats that doesn't match that\r
-                                                       if ("collapsed" in curFormat && curFormat.collapsed !== rng.collapsed)\r
-                                                               continue;\r
+                                       // Expand the range to the closest word and split it at those points\r
+                                       rng = expandRng(rng, get(name), true);\r
+                                       rng = rangeUtils.split(rng);\r
 \r
-                                                       if (dom.is(parents[i], curFormat.selector))\r
-                                                               return parents[i];\r
-                                               }\r
-                                       }\r
+                                       // Remove the format from the range\r
+                                       remove(name, vars, rng);\r
 \r
-                                       return container;\r
-                               };\r
+                                       // Move selection back to caret position\r
+                                       selection.moveToBookmark(bookmark);\r
+                               } else {\r
+                                       caretContainer = createCaretContainer();\r
 \r
-                               // Find new startContainer/endContainer if there is better one\r
-                               startContainer = findSelectorEndPoint(startContainer, 'previousSibling');\r
-                               endContainer = findSelectorEndPoint(endContainer, 'nextSibling');\r
-                       }\r
+                                       node = caretContainer;\r
+                                       for (i = parents.length - 1; i >= 0; i--) {\r
+                                               node.appendChild(dom.clone(parents[i], false));\r
+                                               node = node.firstChild;\r
+                                       }\r
 \r
-                       // Expand start/end container to matching block element or text node\r
-                       if (format[0].block || format[0].selector) {\r
-                               function findBlockEndPoint(container, sibling_name, sibling_name2) {\r
-                                       var node;\r
+                                       // Insert invisible character into inner most format element\r
+                                       node.appendChild(dom.doc.createTextNode(INVISIBLE_CHAR));\r
+                                       node = node.firstChild;\r
 \r
-                                       // Expand to block of similar type\r
-                                       if (!format[0].wrapper)\r
-                                               node = dom.getParent(container, format[0].block);\r
+                                       // Insert caret container after the formated node\r
+                                       dom.insertAfter(caretContainer, formatNode);\r
 \r
-                                       // Expand to first wrappable block element or any block element\r
-                                       if (!node)\r
-                                               node = dom.getParent(container.nodeType == 3 ? container.parentNode : container, isBlock);\r
+                                       // Move selection to text node\r
+                                       selection.setCursorLocation(node, 1);\r
+                               }\r
+                       };\r
 \r
-                                       // Exclude inner lists from wrapping\r
-                                       if (node && format[0].wrapper)\r
-                                               node = getParents(node, 'ul,ol').reverse()[0] || node;\r
+                       // Checks if the parent caret container node isn't empty if that is the case it\r
+                       // will remove the bogus state on all children that isn't empty\r
+                       function unmarkBogusCaretParents() {\r
+                               var i, caretContainer, node;\r
 \r
-                                       // Didn't find a block element look for first/last wrappable element\r
-                                       if (!node) {\r
-                                               node = container;\r
+                               caretContainer = getParentCaretContainer(selection.getStart());\r
+                               if (caretContainer && !dom.isEmpty(caretContainer)) {\r
+                                       tinymce.walk(caretContainer, function(node) {\r
+                                               if (node.nodeType == 1 && node.id !== caretContainerId && !dom.isEmpty(node)) {\r
+                                                       dom.setAttrib(node, 'data-mce-bogus', null);\r
+                                               }\r
+                                       }, 'childNodes');\r
+                               }\r
+                       };\r
 \r
-                                               while (node[sibling_name] && !isBlock(node[sibling_name])) {\r
-                                                       node = node[sibling_name];\r
+                       // Only bind the caret events once\r
+                       if (!self._hasCaretEvents) {\r
+                               // Mark current caret container elements as bogus when getting the contents so we don't end up with empty elements\r
+                               ed.onBeforeGetContent.addToTop(function() {\r
+                                       var nodes = [], i;\r
 \r
-                                                       // Break on BR but include it will be removed later on\r
-                                                       // we can't remove it now since we need to check if it can be wrapped\r
-                                                       if (isEq(node, 'br'))\r
-                                                               break;\r
+                                       if (isCaretContainerEmpty(getParentCaretContainer(selection.getStart()), nodes)) {\r
+                                               // Mark children\r
+                                               i = nodes.length;\r
+                                               while (i--) {\r
+                                                       dom.setAttrib(nodes[i], 'data-mce-bogus', '1');\r
                                                }\r
                                        }\r
+                               });\r
 \r
-                                       return node || container;\r
-                               };\r
+                               // Remove caret container on mouse up and on key up\r
+                               tinymce.each('onMouseUp onKeyUp'.split(' '), function(name) {\r
+                                       ed[name].addToTop(function() {\r
+                                               removeCaretContainer();\r
+                                               unmarkBogusCaretParents();\r
+                                       });\r
+                               });\r
 \r
-                               // Find new startContainer/endContainer if there is better one\r
-                               startContainer = findBlockEndPoint(startContainer, 'previousSibling');\r
-                               endContainer = findBlockEndPoint(endContainer, 'nextSibling');\r
+                               // Remove caret container on keydown and it's a backspace, enter or left/right arrow keys\r
+                               ed.onKeyDown.addToTop(function(ed, e) {\r
+                                       var keyCode = e.keyCode;\r
 \r
-                               // Non block element then try to expand up the leaf\r
-                               if (format[0].block) {\r
-                                       if (!isBlock(startContainer))\r
-                                               startContainer = findParentContainer(startContainer, 'firstChild', 'nextSibling');\r
+                                       if (keyCode == 8 || keyCode == 37 || keyCode == 39) {\r
+                                               removeCaretContainer(getParentCaretContainer(selection.getStart()));\r
+                                       }\r
 \r
-                                       if (!isBlock(endContainer))\r
-                                               endContainer = findParentContainer(endContainer, 'lastChild', 'previousSibling');\r
-                               }\r
+                                       unmarkBogusCaretParents();\r
+                               });\r
+\r
+                               // Remove bogus state if they got filled by contents using editor.selection.setContent\r
+                               selection.onSetContent.add(unmarkBogusCaretParents);\r
+\r
+                               self._hasCaretEvents = true;\r
                        }\r
 \r
-                       // Setup index for startContainer\r
-                       if (startContainer.nodeType == 1) {\r
-                               startOffset = nodeIndex(startContainer);\r
-                               startContainer = startContainer.parentNode;\r
+                       // Do apply or remove caret format\r
+                       if (type == "apply") {\r
+                               applyCaretFormat();\r
+                       } else {\r
+                               removeCaretFormat();\r
                        }\r
+               };\r
 \r
-                       // Setup index for endContainer\r
-                       if (endContainer.nodeType == 1) {\r
-                               endOffset = nodeIndex(endContainer) + 1;\r
-                               endContainer = endContainer.parentNode;\r
+               function moveStart(rng) {\r
+                       var container = rng.startContainer,\r
+                                       offset = rng.startOffset, isAtEndOfText,\r
+                                       walker, node, nodes, tmpNode;\r
+\r
+                       // Convert text node into index if possible\r
+                       if (container.nodeType == 3 && offset >= container.nodeValue.length) {\r
+                               // Get the parent container location and walk from there\r
+                               offset = nodeIndex(container);\r
+                               container = container.parentNode;\r
+                               isAtEndOfText = true;\r
                        }\r
 \r
-                       // Return new range like object\r
-                       return {\r
-                               startContainer : startContainer,\r
-                               startOffset : startOffset,\r
-                               endContainer : endContainer,\r
-                               endOffset : endOffset\r
-                       };\r
-               }\r
+                       // Move startContainer/startOffset in to a suitable node\r
+                       if (container.nodeType == 1) {\r
+                               nodes = container.childNodes;\r
+                               container = nodes[Math.min(offset, nodes.length - 1)];\r
+                               walker = new TreeWalker(container, dom.getParent(container, dom.isBlock));\r
+\r
+                               // If offset is at end of the parent node walk to the next one\r
+                               if (offset > nodes.length - 1 || isAtEndOfText)\r
+                                       walker.next();\r
+\r
+                               for (node = walker.current(); node; node = walker.next()) {\r
+                                       if (node.nodeType == 3 && !isWhiteSpaceNode(node)) {\r
+                                               // IE has a "neat" feature where it moves the start node into the closest element\r
+                                               // we can avoid this by inserting an element before it and then remove it after we set the selection\r
+                                               tmpNode = dom.create('a', null, INVISIBLE_CHAR);\r
+                                               node.parentNode.insertBefore(tmpNode, node);\r
+\r
+                                               // Set selection and remove tmpNode\r
+                                               rng.setStart(node, 0);\r
+                                               selection.setRng(rng);\r
+                                               dom.remove(tmpNode);\r
 \r
-               function removeFormat(format, vars, node, compare_node) {\r
-                       var i, attrs, stylesModified;\r
+                                               return;\r
+                                       }\r
+                               }\r
+                       }\r
+               };\r
+       };\r
+})(tinymce);\r
 \r
-                       // Check if node matches format\r
-                       if (!matchName(node, format))\r
-                               return FALSE;\r
+tinymce.onAddEditor.add(function(tinymce, ed) {\r
+       var filters, fontSizes, dom, settings = ed.settings;\r
 \r
-                       // Should we compare with format attribs and styles\r
-                       if (format.remove != 'all') {\r
-                               // Remove styles\r
-                               each(format.styles, function(value, name) {\r
-                                       value = replaceVars(value, vars);\r
+       function replaceWithSpan(node, styles) {\r
+               tinymce.each(styles, function(value, name) {\r
+                       if (value)\r
+                               dom.setStyle(node, name, value);\r
+               });\r
 \r
-                                       // Indexed array\r
-                                       if (typeof(name) === 'number') {\r
-                                               name = value;\r
-                                               compare_node = 0;\r
-                                       }\r
+               dom.rename(node, 'span');\r
+       };\r
 \r
-                                       if (!compare_node || isEq(getStyle(compare_node, name), value))\r
-                                               dom.setStyle(node, name, '');\r
+       function convert(editor, params) {\r
+               dom = editor.dom;\r
 \r
-                                       stylesModified = 1;\r
-                               });\r
+               if (settings.convert_fonts_to_spans) {\r
+                       tinymce.each(dom.select('font,u,strike', params.node), function(node) {\r
+                               filters[node.nodeName.toLowerCase()](ed.dom, node);\r
+                       });\r
+               }\r
+       };\r
 \r
-                               // Remove style attribute if it's empty\r
-                               if (stylesModified && dom.getAttrib(node, 'style') == '') {\r
-                                       node.removeAttribute('style');\r
-                                       node.removeAttribute('data-mce-style');\r
-                               }\r
+       if (settings.inline_styles) {\r
+               fontSizes = tinymce.explode(settings.font_size_legacy_values);\r
 \r
-                               // Remove attributes\r
-                               each(format.attributes, function(value, name) {\r
-                                       var valueOut;\r
+               filters = {\r
+                       font : function(dom, node) {\r
+                               replaceWithSpan(node, {\r
+                                       backgroundColor : node.style.backgroundColor,\r
+                                       color : node.color,\r
+                                       fontFamily : node.face,\r
+                                       fontSize : fontSizes[parseInt(node.size, 10) - 1]\r
+                               });\r
+                       },\r
 \r
-                                       value = replaceVars(value, vars);\r
+                       u : function(dom, node) {\r
+                               replaceWithSpan(node, {\r
+                                       textDecoration : 'underline'\r
+                               });\r
+                       },\r
 \r
-                                       // Indexed array\r
-                                       if (typeof(name) === 'number') {\r
-                                               name = value;\r
-                                               compare_node = 0;\r
-                                       }\r
+                       strike : function(dom, node) {\r
+                               replaceWithSpan(node, {\r
+                                       textDecoration : 'line-through'\r
+                               });\r
+                       }\r
+               };\r
 \r
-                                       if (!compare_node || isEq(dom.getAttrib(compare_node, name), value)) {\r
-                                               // Keep internal classes\r
-                                               if (name == 'class') {\r
-                                                       value = dom.getAttrib(node, name);\r
-                                                       if (value) {\r
-                                                               // Build new class value where everything is removed except the internal prefixed classes\r
-                                                               valueOut = '';\r
-                                                               each(value.split(/\s+/), function(cls) {\r
-                                                                       if (/mce\w+/.test(cls))\r
-                                                                               valueOut += (valueOut ? ' ' : '') + cls;\r
-                                                               });\r
+               ed.onPreProcess.add(convert);\r
+               ed.onSetContent.add(convert);\r
 \r
-                                                               // We got some internal classes left\r
-                                                               if (valueOut) {\r
-                                                                       dom.setAttrib(node, name, valueOut);\r
-                                                                       return;\r
-                                                               }\r
-                                                       }\r
-                                               }\r
+               ed.onInit.add(function() {\r
+                       ed.selection.onSetContent.add(convert);\r
+               });\r
+       }\r
+});\r
 \r
-                                               // IE6 has a bug where the attribute doesn't get removed correctly\r
-                                               if (name == "class")\r
-                                                       node.removeAttribute('className');\r
+(function(tinymce) {\r
+       var TreeWalker = tinymce.dom.TreeWalker;\r
+\r
+       tinymce.EnterKey = function(editor) {\r
+               var dom = editor.dom, selection = editor.selection, settings = editor.settings, undoManager = editor.undoManager, nonEmptyElementsMap = editor.schema.getNonEmptyElements();\r
+\r
+               function handleEnterKey(evt) {\r
+                       var rng = selection.getRng(true), tmpRng, editableRoot, container, offset, parentBlock, documentMode, shiftKey,\r
+                               newBlock, fragment, containerBlock, parentBlockName, containerBlockName, newBlockName, isAfterLastNodeInContainer;\r
+\r
+                       // Returns true if the block can be split into two blocks or not\r
+                       function canSplitBlock(node) {\r
+                               return node &&\r
+                                       dom.isBlock(node) &&\r
+                                       !/^(TD|TH|CAPTION|FORM)$/.test(node.nodeName) &&\r
+                                       !/^(fixed|absolute)/i.test(node.style.position) && \r
+                                       dom.getContentEditable(node) !== "true";\r
+                       };\r
 \r
-                                               // Remove mce prefixed attributes\r
-                                               if (MCE_ATTR_RE.test(name))\r
-                                                       node.removeAttribute('data-mce-' + name);\r
+                       // Renders empty block on IE\r
+                       function renderBlockOnIE(block) {\r
+                               var oldRng;\r
 \r
-                                               node.removeAttribute(name);\r
-                                       }\r
-                               });\r
+                               if (tinymce.isIE && dom.isBlock(block)) {\r
+                                       oldRng = selection.getRng();\r
+                                       block.appendChild(dom.create('span', null, '\u00a0'));\r
+                                       selection.select(block);\r
+                                       block.lastChild.outerHTML = '';\r
+                                       selection.setRng(oldRng);\r
+                               }\r
+                       };\r
 \r
-                               // Remove classes\r
-                               each(format.classes, function(value) {\r
-                                       value = replaceVars(value, vars);\r
+                       // Remove the first empty inline element of the block so this: <p><b><em></em></b>x</p> becomes this: <p>x</p>\r
+                       function trimInlineElementsOnLeftSideOfBlock(block) {\r
+                               var node = block, firstChilds = [], i;\r
 \r
-                                       if (!compare_node || dom.hasClass(compare_node, value))\r
-                                               dom.removeClass(node, value);\r
-                               });\r
+                               // Find inner most first child ex: <p><i><b>*</b></i></p>\r
+                               while (node = node.firstChild) {\r
+                                       if (dom.isBlock(node)) {\r
+                                               return;\r
+                                       }\r
 \r
-                               // Check for non internal attributes\r
-                               attrs = dom.getAttribs(node);\r
-                               for (i = 0; i < attrs.length; i++) {\r
-                                       if (attrs[i].nodeName.indexOf('_') !== 0)\r
-                                               return FALSE;\r
+                                       if (node.nodeType == 1 && !nonEmptyElementsMap[node.nodeName.toLowerCase()]) {\r
+                                               firstChilds.push(node);\r
+                                       }\r
                                }\r
-                       }\r
 \r
-                       // Remove the inline child if it's empty for example <b> or <span>\r
-                       if (format.remove != 'none') {\r
-                               removeNode(node, format);\r
-                               return TRUE;\r
-                       }\r
-               };\r
+                               i = firstChilds.length;\r
+                               while (i--) {\r
+                                       node = firstChilds[i];\r
+                                       if (!node.hasChildNodes() || (node.firstChild == node.lastChild && node.firstChild.nodeValue === '')) {\r
+                                               dom.remove(node);\r
+                                       } else {\r
+                                               // Remove <a> </a> see #5381\r
+                                               if (node.nodeName == "A" && (node.innerText || node.textContent) === ' ') {\r
+                                                       dom.remove(node);\r
+                                               }\r
+                                       }\r
+                               }\r
+                       };\r
+                       \r
+                       // Moves the caret to a suitable position within the root for example in the first non pure whitespace text node or before an image\r
+                       function moveToCaretPosition(root) {\r
+                               var walker, node, rng, y, viewPort, lastNode = root, tempElm;\r
 \r
-               function removeNode(node, format) {\r
-                       var parentNode = node.parentNode, rootBlockElm;\r
+                               rng = dom.createRng();\r
 \r
-                       if (format.block) {\r
-                               if (!forcedRootBlock) {\r
-                                       function find(node, next, inc) {\r
-                                               node = getNonWhiteSpaceSibling(node, next, inc);\r
+                               if (root.hasChildNodes()) {\r
+                                       walker = new TreeWalker(root, root);\r
 \r
-                                               return !node || (node.nodeName == 'BR' || isBlock(node));\r
-                                       };\r
+                                       while (node = walker.current()) {\r
+                                               if (node.nodeType == 3) {\r
+                                                       rng.setStart(node, 0);\r
+                                                       rng.setEnd(node, 0);\r
+                                                       break;\r
+                                               }\r
 \r
-                                       // Append BR elements if needed before we remove the block\r
-                                       if (isBlock(node) && !isBlock(parentNode)) {\r
-                                               if (!find(node, FALSE) && !find(node.firstChild, TRUE, 1))\r
-                                                       node.insertBefore(dom.create('br'), node.firstChild);\r
+                                               if (nonEmptyElementsMap[node.nodeName.toLowerCase()]) {\r
+                                                       rng.setStartBefore(node);\r
+                                                       rng.setEndBefore(node);\r
+                                                       break;\r
+                                               }\r
 \r
-                                               if (!find(node, TRUE) && !find(node.lastChild, FALSE, 1))\r
-                                                       node.appendChild(dom.create('br'));\r
+                                               lastNode = node;\r
+                                               node = walker.next();\r
                                        }\r
-                               } else {\r
-                                       // Wrap the block in a forcedRootBlock if we are at the root of document\r
-                                       if (parentNode == dom.getRoot()) {\r
-                                               if (!format.list_block || !isEq(node, format.list_block)) {\r
-                                                       each(tinymce.grep(node.childNodes), function(node) {\r
-                                                               if (isValid(forcedRootBlock, node.nodeName.toLowerCase())) {\r
-                                                                       if (!rootBlockElm)\r
-                                                                               rootBlockElm = wrap(node, forcedRootBlock);\r
-                                                                       else\r
-                                                                               rootBlockElm.appendChild(node);\r
-                                                               } else\r
-                                                                       rootBlockElm = 0;\r
-                                                       });\r
+\r
+                                       if (!node) {\r
+                                               rng.setStart(lastNode, 0);\r
+                                               rng.setEnd(lastNode, 0);\r
+                                       }\r
+                               } else {\r
+                                       if (root.nodeName == 'BR') {\r
+                                               if (root.nextSibling && dom.isBlock(root.nextSibling)) {\r
+                                                       // Trick on older IE versions to render the caret before the BR between two lists\r
+                                                       if (!documentMode || documentMode < 9) {\r
+                                                               tempElm = dom.create('br');\r
+                                                               root.parentNode.insertBefore(tempElm, root);\r
+                                                       }\r
+\r
+                                                       rng.setStartBefore(root);\r
+                                                       rng.setEndBefore(root);\r
+                                               } else {\r
+                                                       rng.setStartAfter(root);\r
+                                                       rng.setEndAfter(root);\r
                                                }\r
+                                       } else {\r
+                                               rng.setStart(root, 0);\r
+                                               rng.setEnd(root, 0);\r
                                        }\r
                                }\r
-                       }\r
 \r
-                       // Never remove nodes that isn't the specified inline element if a selector is specified too\r
-                       if (format.selector && format.inline && !isEq(format.inline, node))\r
-                               return;\r
+                               selection.setRng(rng);\r
 \r
-                       dom.remove(node, 1);\r
-               };\r
+                               // Remove tempElm created for old IE:s\r
+                               dom.remove(tempElm);\r
 \r
-               function getNonWhiteSpaceSibling(node, next, inc) {\r
-                       if (node) {\r
-                               next = next ? 'nextSibling' : 'previousSibling';\r
+                               viewPort = dom.getViewPort(editor.getWin());\r
 \r
-                               for (node = inc ? node : node[next]; node; node = node[next]) {\r
-                                       if (node.nodeType == 1 || !isWhiteSpaceNode(node))\r
-                                               return node;\r
+                               // 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\r
+                               y = dom.getPos(root).y;\r
+                               if (y < viewPort.y || y + 25 > viewPort.y + viewPort.h) {\r
+                                       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\r
                                }\r
-                       }\r
-               };\r
+                       };\r
 \r
-               function isBookmarkNode(node) {\r
-                       return node && node.nodeType == 1 && node.getAttribute('data-mce-type') == 'bookmark';\r
-               };\r
+                       // Creates a new block element by cloning the current one or creating a new one if the name is specified\r
+                       // This function will also copy any text formatting from the parent block and add it to the new one\r
+                       function createNewBlock(name) {\r
+                               var node = container, block, clonedNode, caretNode;\r
 \r
-               function mergeSiblings(prev, next) {\r
-                       var marker, sibling, tmpSibling;\r
+                               block = name || parentBlockName == "TABLE" ? dom.create(name || newBlockName) : parentBlock.cloneNode(false);\r
+                               caretNode = block;\r
 \r
-                       function compareElements(node1, node2) {\r
-                               // Not the same name\r
-                               if (node1.nodeName != node2.nodeName)\r
-                                       return FALSE;\r
+                               // Clone any parent styles\r
+                               if (settings.keep_styles !== false) {\r
+                                       do {\r
+                                               if (/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(node.nodeName)) {\r
+                                                       clonedNode = node.cloneNode(false);\r
+                                                       dom.setAttrib(clonedNode, 'id', ''); // Remove ID since it needs to be document unique\r
 \r
-                               function getAttribs(node) {\r
-                                       var attribs = {};\r
+                                                       if (block.hasChildNodes()) {\r
+                                                               clonedNode.appendChild(block.firstChild);\r
+                                                               block.appendChild(clonedNode);\r
+                                                       } else {\r
+                                                               caretNode = clonedNode;\r
+                                                               block.appendChild(clonedNode);\r
+                                                       }\r
+                                               }\r
+                                       } while (node = node.parentNode);\r
+                               }\r
 \r
-                                       each(dom.getAttribs(node), function(attr) {\r
-                                               var name = attr.nodeName.toLowerCase();\r
+                               // BR is needed in empty blocks on non IE browsers\r
+                               if (!tinymce.isIE) {\r
+                                       caretNode.innerHTML = '<br>';\r
+                               }\r
 \r
-                                               // Don't compare internal attributes or style\r
-                                               if (name.indexOf('_') !== 0 && name !== 'style')\r
-                                                       attribs[name] = dom.getAttrib(node, name);\r
-                                       });\r
+                               return block;\r
+                       };\r
 \r
-                                       return attribs;\r
-                               };\r
+                       // Returns true/false if the caret is at the start/end of the parent block element\r
+                       function isCaretAtStartOrEndOfBlock(start) {\r
+                               var walker, node, name;\r
 \r
-                               function compareObjects(obj1, obj2) {\r
-                                       var value, name;\r
+                               // Caret is in the middle of a text node like "a|b"\r
+                               if (container.nodeType == 3 && (start ? offset > 0 : offset < container.nodeValue.length)) {\r
+                                       return false;\r
+                               }\r
 \r
-                                       for (name in obj1) {\r
-                                               // Obj1 has item obj2 doesn't have\r
-                                               if (obj1.hasOwnProperty(name)) {\r
-                                                       value = obj2[name];\r
+                               // If after the last element in block node edge case for #5091\r
+                               if (container.parentNode == parentBlock && isAfterLastNodeInContainer && !start) {\r
+                                       return true;\r
+                               }\r
 \r
-                                                       // Obj2 doesn't have obj1 item\r
-                                                       if (value === undefined)\r
-                                                               return FALSE;\r
+                               // If the caret if before the first element in parentBlock\r
+                               if (start && container.nodeType == 1 && container == parentBlock.firstChild) {\r
+                                       return true;\r
+                               }\r
 \r
-                                                       // Obj2 item has a different value\r
-                                                       if (obj1[name] != value)\r
-                                                               return FALSE;\r
+                               // Caret can be before/after a table\r
+                               if (container.nodeName === "TABLE" || (container.previousSibling && container.previousSibling.nodeName == "TABLE")) {\r
+                                       return (isAfterLastNodeInContainer && !start) || (!isAfterLastNodeInContainer && start);\r
+                               }\r
 \r
-                                                       // Delete similar value\r
-                                                       delete obj2[name];\r
-                                               }\r
+                               // Walk the DOM and look for text nodes or non empty elements\r
+                               walker = new TreeWalker(container, parentBlock);\r
+       \r
+                               // If caret is in beginning or end of a text block then jump to the next/previous node\r
+                               if (container.nodeType == 3) {\r
+                                       if (start && offset == 0) {\r
+                                               walker.prev();\r
+                                       } else if (!start && offset == container.nodeValue.length) {\r
+                                               walker.next();\r
                                        }\r
+                               }\r
 \r
-                                       // Check if obj 2 has something obj 1 doesn't have\r
-                                       for (name in obj2) {\r
-                                               // Obj2 has item obj1 doesn't have\r
-                                               if (obj2.hasOwnProperty(name))\r
-                                                       return FALSE;\r
+                               while (node = walker.current()) {\r
+                                       if (node.nodeType === 1) {\r
+                                               // Ignore bogus elements\r
+                                               if (!node.getAttribute('data-mce-bogus')) {\r
+                                                       // Keep empty elements like <img /> <input /> but not trailing br:s like <p>text|<br></p>\r
+                                                       name = node.nodeName.toLowerCase();\r
+                                                       if (nonEmptyElementsMap[name] && name !== 'br') {\r
+                                                               return false;\r
+                                                       }\r
+                                               }\r
+                                       } else if (node.nodeType === 3 && !/^[ \t\r\n]*$/.test(node.nodeValue)) {\r
+                                               return false;\r
                                        }\r
 \r
-                                       return TRUE;\r
-                               };\r
-\r
-                               // Attribs are not the same\r
-                               if (!compareObjects(getAttribs(node1), getAttribs(node2)))\r
-                                       return FALSE;\r
-\r
-                               // Styles are not the same\r
-                               if (!compareObjects(dom.parseStyle(dom.getAttrib(node1, 'style')), dom.parseStyle(dom.getAttrib(node2, 'style'))))\r
-                                       return FALSE;\r
+                                       if (start) {\r
+                                               walker.prev();\r
+                                       } else {\r
+                                               walker.next();\r
+                                       }\r
+                               }\r
 \r
-                               return TRUE;\r
+                               return true;\r
                        };\r
 \r
-                       // Check if next/prev exists and that they are elements\r
-                       if (prev && next) {\r
-                               function findElementSibling(node, sibling_name) {\r
-                                       for (sibling = node; sibling; sibling = sibling[sibling_name]) {\r
-                                               if (sibling.nodeType == 3 && sibling.nodeValue.length !== 0)\r
-                                                       return node;\r
+                       // Wraps any text nodes or inline elements in the specified forced root block name\r
+                       function wrapSelfAndSiblingsInDefaultBlock(container, offset) {\r
+                               var newBlock, parentBlock, startNode, node, next, blockName = newBlockName || 'P';\r
+\r
+                               // Not in a block element or in a table cell or caption\r
+                               parentBlock = dom.getParent(container, dom.isBlock);\r
+                               if (!parentBlock || !canSplitBlock(parentBlock)) {\r
+                                       parentBlock = parentBlock || editableRoot;\r
+\r
+                                       if (!parentBlock.hasChildNodes()) {\r
+                                               newBlock = dom.create(blockName);\r
+                                               parentBlock.appendChild(newBlock);\r
+                                               rng.setStart(newBlock, 0);\r
+                                               rng.setEnd(newBlock, 0);\r
+                                               return newBlock;\r
+                                       }\r
 \r
-                                               if (sibling.nodeType == 1 && !isBookmarkNode(sibling))\r
-                                                       return sibling;\r
+                                       // Find parent that is the first child of parentBlock\r
+                                       node = container;\r
+                                       while (node.parentNode != parentBlock) {\r
+                                               node = node.parentNode;\r
                                        }\r
 \r
-                                       return node;\r
-                               };\r
+                                       // Loop left to find start node start wrapping at\r
+                                       while (node && !dom.isBlock(node)) {\r
+                                               startNode = node;\r
+                                               node = node.previousSibling;\r
+                                       }\r
 \r
-                               // If previous sibling is empty then jump over it\r
-                               prev = findElementSibling(prev, 'previousSibling');\r
-                               next = findElementSibling(next, 'nextSibling');\r
+                                       if (startNode) {\r
+                                               newBlock = dom.create(blockName);\r
+                                               startNode.parentNode.insertBefore(newBlock, startNode);\r
 \r
-                               // Compare next and previous nodes\r
-                               if (compareElements(prev, next)) {\r
-                                       // Append nodes between\r
-                                       for (sibling = prev.nextSibling; sibling && sibling != next;) {\r
-                                               tmpSibling = sibling;\r
-                                               sibling = sibling.nextSibling;\r
-                                               prev.appendChild(tmpSibling);\r
+                                               // Start wrapping until we hit a block\r
+                                               node = startNode;\r
+                                               while (node && !dom.isBlock(node)) {\r
+                                                       next = node.nextSibling;\r
+                                                       newBlock.appendChild(node);\r
+                                                       node = next;\r
+                                               }\r
+\r
+                                               // Restore range to it's past location\r
+                                               rng.setStart(container, offset);\r
+                                               rng.setEnd(container, offset);\r
                                        }\r
+                               }\r
 \r
-                                       // Remove next node\r
-                                       dom.remove(next);\r
+                               return container;\r
+                       };\r
 \r
-                                       // Move children into prev node\r
-                                       each(tinymce.grep(next.childNodes), function(node) {\r
-                                               prev.appendChild(node);\r
-                                       });\r
+                       // Inserts a block or br before/after or in the middle of a split list of the LI is empty\r
+                       function handleEmptyListItem() {\r
+                               function isFirstOrLastLi(first) {\r
+                                       var node = containerBlock[first ? 'firstChild' : 'lastChild'];\r
 \r
-                                       return prev;\r
-                               }\r
-                       }\r
+                                       // Find first/last element since there might be whitespace there\r
+                                       while (node) {\r
+                                               if (node.nodeType == 1) {\r
+                                                       break;\r
+                                               }\r
 \r
-                       return next;\r
-               };\r
+                                               node = node[first ? 'nextSibling' : 'previousSibling'];\r
+                                       }\r
 \r
-               function isTextBlock(name) {\r
-                       return /^(h[1-6]|p|div|pre|address|dl|dt|dd)$/.test(name);\r
-               };\r
+                                       return node === parentBlock;\r
+                               };\r
 \r
-               function getContainer(rng, start) {\r
-                       var container, offset, lastIdx;\r
+                               newBlock = newBlockName ? createNewBlock(newBlockName) : dom.create('BR');\r
+\r
+                               if (isFirstOrLastLi(true) && isFirstOrLastLi()) {\r
+                                       // Is first and last list item then replace the OL/UL with a text block\r
+                                       dom.replace(newBlock, containerBlock);\r
+                               } else if (isFirstOrLastLi(true)) {\r
+                                       // First LI in list then remove LI and add text block before list\r
+                                       containerBlock.parentNode.insertBefore(newBlock, containerBlock);\r
+                               } else if (isFirstOrLastLi()) {\r
+                                       // Last LI in list then temove LI and add text block after list\r
+                                       dom.insertAfter(newBlock, containerBlock);\r
+                                       renderBlockOnIE(newBlock);\r
+                               } else {\r
+                                       // Middle LI in list the split the list and insert a text block in the middle\r
+                                       // Extract after fragment and insert it after the current block\r
+                                       tmpRng = rng.cloneRange();\r
+                                       tmpRng.setStartAfter(parentBlock);\r
+                                       tmpRng.setEndAfter(containerBlock);\r
+                                       fragment = tmpRng.extractContents();\r
+                                       dom.insertAfter(fragment, containerBlock);\r
+                                       dom.insertAfter(newBlock, containerBlock);\r
+                               }\r
 \r
-                       container = rng[start ? 'startContainer' : 'endContainer'];\r
-                       offset = rng[start ? 'startOffset' : 'endOffset'];\r
+                               dom.remove(parentBlock);\r
+                               moveToCaretPosition(newBlock);\r
+                               undoManager.add();\r
+                       };\r
 \r
-                       if (container.nodeType == 1) {\r
-                               lastIdx = container.childNodes.length - 1;\r
+                       // Walks the parent block to the right and look for BR elements\r
+                       function hasRightSideBr() {\r
+                               var walker = new TreeWalker(container, parentBlock), node;\r
 \r
-                               if (!start && offset)\r
-                                       offset--;\r
+                               while (node = walker.current()) {\r
+                                       if (node.nodeName == 'BR') {\r
+                                               return true;\r
+                                       }\r
 \r
-                               container = container.childNodes[offset > lastIdx ? lastIdx : offset];\r
+                                       node = walker.next();\r
+                               }\r
                        }\r
+                       \r
+                       // Inserts a BR element if the forced_root_block option is set to false or empty string\r
+                       function insertBr() {\r
+                               var brElm, extraBr;\r
+\r
+                               if (container && container.nodeType == 3 && offset >= container.nodeValue.length) {\r
+                                       // Insert extra BR element at the end block elements\r
+                                       if (!tinymce.isIE && !hasRightSideBr()) {\r
+                                               brElm = dom.create('br');\r
+                                               rng.insertNode(brElm);\r
+                                               rng.setStartAfter(brElm);\r
+                                               rng.setEndAfter(brElm);\r
+                                               extraBr = true;\r
+                                       }\r
+                               }\r
 \r
-                       return container;\r
-               };\r
+                               brElm = dom.create('br');\r
+                               rng.insertNode(brElm);\r
 \r
-               function performCaretAction(type, name, vars) {\r
-                       var i, currentPendingFormats = pendingFormats[type],\r
-                               otherPendingFormats = pendingFormats[type == 'apply' ? 'remove' : 'apply'];\r
+                               // Rendering modes below IE8 doesn't display BR elements in PRE unless we have a \n before it\r
+                               if (tinymce.isIE && parentBlockName == 'PRE' && (!documentMode || documentMode < 8)) {\r
+                                       brElm.parentNode.insertBefore(dom.doc.createTextNode('\r'), brElm);\r
+                               }\r
+\r
+                               if (!extraBr) {\r
+                                       rng.setStartAfter(brElm);\r
+                                       rng.setEndAfter(brElm);\r
+                               } else {\r
+                                       rng.setStartBefore(brElm);\r
+                                       rng.setEndBefore(brElm);\r
+                               }\r
 \r
-                       function hasPending() {\r
-                               return pendingFormats.apply.length || pendingFormats.remove.length;\r
+                               selection.setRng(rng);\r
+                               undoManager.add();\r
                        };\r
 \r
-                       function resetPending() {\r
-                               pendingFormats.apply = [];\r
-                               pendingFormats.remove = [];\r
+                       // Trims any linebreaks at the beginning of node user for example when pressing enter in a PRE element\r
+                       function trimLeadingLineBreaks(node) {\r
+                               do {\r
+                                       if (node.nodeType === 3) {\r
+                                               node.nodeValue = node.nodeValue.replace(/^[\r\n]+/, '');\r
+                                       }\r
+\r
+                                       node = node.firstChild;\r
+                               } while (node);\r
                        };\r
 \r
-                       function perform(caret_node) {\r
-                               // Apply pending formats\r
-                               each(pendingFormats.apply.reverse(), function(item) {\r
-                                       apply(item.name, item.vars, caret_node);\r
+                       function getEditableRoot(node) {\r
+                               var root = dom.getRoot(), parent, editableRoot;\r
 \r
-                                       // Colored nodes should be underlined so that the color of the underline matches the text color.\r
-                                       if (item.name === 'forecolor' && item.vars.value)\r
-                                               processUnderlineAndColor(caret_node.parentNode);\r
-                               });\r
+                               // Get all parents until we hit a non editable parent or the root\r
+                               parent = node;\r
+                               while (parent !== root && dom.getContentEditable(parent) !== "false") {\r
+                                       if (dom.getContentEditable(parent) === "true") {\r
+                                               editableRoot = parent;\r
+                                       }\r
 \r
-                               // Remove pending formats\r
-                               each(pendingFormats.remove.reverse(), function(item) {\r
-                                       remove(item.name, item.vars, caret_node);\r
-                               });\r
+                                       parent = parent.parentNode;\r
+                               }\r
+                               \r
+                               return parent !== root ? editableRoot : root;\r
+                       };\r
+\r
+                       // 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\r
+                       function addBrToBlockIfNeeded(block) {\r
+                               var lastChild;\r
 \r
-                               dom.remove(caret_node, 1);\r
-                               resetPending();\r
+                               // IE will render the blocks correctly other browsers needs a BR\r
+                               if (!tinymce.isIE) {\r
+                                       block.normalize(); // Remove empty text nodes that got left behind by the extract\r
+\r
+                                       // Check if the block is empty or contains a floated last child\r
+                                       lastChild = block.lastChild;\r
+                                       if (!lastChild || (/^(left|right)$/gi.test(dom.getStyle(lastChild, 'float', true)))) {\r
+                                               dom.add(block, 'br');\r
+                                       }\r
+                               }\r
                        };\r
 \r
-                       // Check if it already exists then ignore it\r
-                       for (i = currentPendingFormats.length - 1; i >= 0; i--) {\r
-                               if (currentPendingFormats[i].name == name)\r
-                                       return;\r
+                       // Delete any selected contents\r
+                       if (!rng.collapsed) {\r
+                               editor.execCommand('Delete');\r
+                               return;\r
                        }\r
 \r
-                       currentPendingFormats.push({name : name, vars : vars});\r
-\r
-                       // Check if it's in the other type, then remove it\r
-                       for (i = otherPendingFormats.length - 1; i >= 0; i--) {\r
-                               if (otherPendingFormats[i].name == name)\r
-                                       otherPendingFormats.splice(i, 1);\r
+                       // Event is blocked by some other handler for example the lists plugin\r
+                       if (evt.isDefaultPrevented()) {\r
+                               return;\r
                        }\r
 \r
-                       // Pending apply or remove formats\r
-                       if (hasPending()) {\r
-                               ed.getDoc().execCommand('FontName', false, 'mceinline');\r
-                               pendingFormats.lastRng = selection.getRng();\r
+                       // Setup range items and newBlockName\r
+                       container = rng.startContainer;\r
+                       offset = rng.startOffset;\r
+                       newBlockName = (settings.force_p_newlines ? 'p' : '') || settings.forced_root_block;\r
+                       newBlockName = newBlockName ? newBlockName.toUpperCase() : '';\r
+                       documentMode = dom.doc.documentMode;\r
+                       shiftKey = evt.shiftKey;\r
+\r
+                       // Resolve node index\r
+                       if (container.nodeType == 1 && container.hasChildNodes()) {\r
+                               isAfterLastNodeInContainer = offset > container.childNodes.length - 1;\r
+                               container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;\r
+                               if (isAfterLastNodeInContainer && container.nodeType == 3) {\r
+                                       offset = container.nodeValue.length;\r
+                               } else {\r
+                                       offset = 0;\r
+                               }\r
+                       }\r
 \r
-                               // IE will convert the current word\r
-                               each(dom.select('font,span'), function(node) {\r
-                                       var bookmark;\r
+                       // Get editable root node normaly the body element but sometimes a div or span\r
+                       editableRoot = getEditableRoot(container);\r
 \r
-                                       if (isCaretNode(node)) {\r
-                                               bookmark = selection.getBookmark();\r
-                                               perform(node);\r
-                                               selection.moveToBookmark(bookmark);\r
-                                               ed.nodeChanged();\r
-                                       }\r
-                               });\r
+                       // If there is no editable root then enter is done inside a contentEditable false element\r
+                       if (!editableRoot) {\r
+                               return;\r
+                       }\r
 \r
-                               // Only register listeners once if we need to\r
-                               if (!pendingFormats.isListening && hasPending()) {\r
-                                       pendingFormats.isListening = true;\r
-\r
-                                       each('onKeyDown,onKeyUp,onKeyPress,onMouseUp'.split(','), function(event) {\r
-                                               ed[event].addToTop(function(ed, e) {\r
-                                                       // Do we have pending formats and is the selection moved has moved\r
-                                                       if (hasPending() && !tinymce.dom.RangeUtils.compareRanges(pendingFormats.lastRng, selection.getRng())) {\r
-                                                               each(dom.select('font,span'), function(node) {\r
-                                                                       var textNode, rng;\r
-\r
-                                                                       // Look for marker\r
-                                                                       if (isCaretNode(node)) {\r
-                                                                               textNode = node.firstChild;\r
-\r
-                                                                               if (textNode) {\r
-                                                                                       perform(node);\r
-\r
-                                                                                       rng = dom.createRng();\r
-                                                                                       rng.setStart(textNode, textNode.nodeValue.length);\r
-                                                                                       rng.setEnd(textNode, textNode.nodeValue.length);\r
-                                                                                       selection.setRng(rng);\r
-                                                                                       ed.nodeChanged();\r
-                                                                               } else\r
-                                                                                       dom.remove(node);\r
-                                                                       }\r
-                                                               });\r
+                       undoManager.beforeChange();\r
 \r
-                                                               // Always unbind and clear pending styles on keyup\r
-                                                               if (e.type == 'keyup' || e.type == 'mouseup')\r
-                                                                       resetPending();\r
-                                                       }\r
-                                               });\r
-                                       });\r
+                       // If editable root isn't block nor the root of the editor\r
+                       if (!dom.isBlock(editableRoot) && editableRoot != dom.getRoot()) {\r
+                               if (!newBlockName || shiftKey) {\r
+                                       insertBr();\r
                                }\r
+\r
+                               return;\r
                        }\r
-               };\r
-       };\r
-})(tinymce);\r
 \r
-tinymce.onAddEditor.add(function(tinymce, ed) {\r
-       var filters, fontSizes, dom, settings = ed.settings;\r
+                       // Wrap the current node and it's sibling in a default block if it's needed.\r
+                       // for example this <td>text|<b>text2</b></td> will become this <td><p>text|<b>text2</p></b></td>\r
+                       // This won't happen if root blocks are disabled or the shiftKey is pressed\r
+                       if ((newBlockName && !shiftKey) || (!newBlockName && shiftKey)) {\r
+                               container = wrapSelfAndSiblingsInDefaultBlock(container, offset);\r
+                       }\r
 \r
-       if (settings.inline_styles) {\r
-               fontSizes = tinymce.explode(settings.font_size_style_values);\r
+                       // Find parent block and setup empty block paddings\r
+                       parentBlock = dom.getParent(container, dom.isBlock);\r
+                       containerBlock = parentBlock ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null;\r
 \r
-               function replaceWithSpan(node, styles) {\r
-                       tinymce.each(styles, function(value, name) {\r
-                               if (value)\r
-                                       dom.setStyle(node, name, value);\r
-                       });\r
+                       // Setup block names\r
+                       parentBlockName = parentBlock ? parentBlock.nodeName.toUpperCase() : ''; // IE < 9 & HTML5\r
+                       containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : ''; // IE < 9 & HTML5\r
 \r
-                       dom.rename(node, 'span');\r
-               };\r
+                       // Handle enter in LI\r
+                       if (parentBlockName == 'LI') {\r
+                               if (!newBlockName && shiftKey) {\r
+                                       insertBr();\r
+                                       return;\r
+                               }\r
 \r
-               filters = {\r
-                       font : function(dom, node) {\r
-                               replaceWithSpan(node, {\r
-                                       backgroundColor : node.style.backgroundColor,\r
-                                       color : node.color,\r
-                                       fontFamily : node.face,\r
-                                       fontSize : fontSizes[parseInt(node.size) - 1]\r
-                               });\r
-                       },\r
+                               // Handle enter inside an empty list item\r
+                               if (dom.isEmpty(parentBlock)) {\r
+                                       // Let the list plugin or browser handle nested lists for now\r
+                                       if (/^(UL|OL|LI)$/.test(containerBlock.parentNode.nodeName)) {\r
+                                               return false;\r
+                                       }\r
 \r
-                       u : function(dom, node) {\r
-                               replaceWithSpan(node, {\r
-                                       textDecoration : 'underline'\r
-                               });\r
-                       },\r
+                                       handleEmptyListItem();\r
+                                       return;\r
+                               }\r
+                       }\r
 \r
-                       strike : function(dom, node) {\r
-                               replaceWithSpan(node, {\r
-                                       textDecoration : 'line-through'\r
-                               });\r
+                       // Don't split PRE tags but insert a BR instead easier when writing code samples etc\r
+                       if (parentBlockName == 'PRE' && settings.br_in_pre !== false) {\r
+                               if (!shiftKey) {\r
+                                       insertBr();\r
+                                       return;\r
+                               }\r
+                       } else {\r
+                               // If no root block is configured then insert a BR by default or if the shiftKey is pressed\r
+                               if ((!newBlockName && !shiftKey && parentBlockName != 'LI') || (newBlockName && shiftKey)) {\r
+                                       insertBr();\r
+                                       return;\r
+                               }\r
                        }\r
-               };\r
 \r
-               function convert(editor, params) {\r
-                       dom = editor.dom;\r
+                       // Default block name if it's not configured\r
+                       newBlockName = newBlockName || 'P';\r
 \r
-                       if (settings.convert_fonts_to_spans) {\r
-                               tinymce.each(dom.select('font,u,strike', params.node), function(node) {\r
-                                       filters[node.nodeName.toLowerCase()](ed.dom, node);\r
-                               });\r
-                       }\r
-               };\r
+                       // Insert new block before/after the parent block depending on caret location\r
+                       if (isCaretAtStartOrEndOfBlock()) {\r
+                               // 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\r
+                               if (/^(H[1-6]|PRE)$/.test(parentBlockName) && containerBlockName != 'HGROUP') {\r
+                                       newBlock = createNewBlock(newBlockName);\r
+                               } else {\r
+                                       newBlock = createNewBlock();\r
+                               }\r
 \r
-               ed.onPreProcess.add(convert);\r
-               ed.onSetContent.add(convert);\r
+                               // Split the current container block element if enter is pressed inside an empty inner block element\r
+                               if (settings.end_container_on_empty_block && canSplitBlock(containerBlock) && dom.isEmpty(parentBlock)) {\r
+                                       // Split container block for example a BLOCKQUOTE at the current blockParent location for example a P\r
+                                       newBlock = dom.split(containerBlock, parentBlock);\r
+                               } else {\r
+                                       dom.insertAfter(newBlock, parentBlock);\r
+                               }\r
 \r
-               ed.onInit.add(function() {\r
-                       ed.selection.onSetContent.add(convert);\r
+                               moveToCaretPosition(newBlock);\r
+                       } else if (isCaretAtStartOrEndOfBlock(true)) {\r
+                               // Insert new block before\r
+                               newBlock = parentBlock.parentNode.insertBefore(createNewBlock(), parentBlock);\r
+                               renderBlockOnIE(newBlock);\r
+                       } else {\r
+                               // Extract after fragment and insert it after the current block\r
+                               tmpRng = rng.cloneRange();\r
+                               tmpRng.setEndAfter(parentBlock);\r
+                               fragment = tmpRng.extractContents();\r
+                               trimLeadingLineBreaks(fragment);\r
+                               newBlock = fragment.firstChild;\r
+                               dom.insertAfter(fragment, parentBlock);\r
+                               trimInlineElementsOnLeftSideOfBlock(newBlock);\r
+                               addBrToBlockIfNeeded(parentBlock);\r
+                               moveToCaretPosition(newBlock);\r
+                       }\r
+\r
+                       dom.setAttrib(newBlock, 'id', ''); // Remove ID since it needs to be document unique\r
+                       undoManager.add();\r
+               }\r
+\r
+               editor.onKeyDown.add(function(ed, evt) {\r
+                       if (evt.keyCode == 13) {\r
+                               if (handleEnterKey(evt) !== false) {\r
+                                       evt.preventDefault();\r
+                               }\r
+                       }\r
                });\r
-       }\r
-});\r
+       };\r
+})(tinymce);\r
 \r
index fd943c0f878b33330df3c060f67cdab711f0c4d6..4b920f3d1a5c17748f74b3a21430d1152b0b71b2 100644 (file)
@@ -16,7 +16,7 @@ var TinyMCE_EditableSelects = {
 \r
                for (i=0; i<nl.length; i++) {\r
                        if (nl[i].className.indexOf('mceEditableSelect') != -1) {\r
-                               o = new Option('(value)', '__mce_add_custom__');\r
+                               o = new Option(tinyMCEPopup.editor.translate('value'), '__mce_add_custom__');\r
 \r
                                o.className = 'mceAddSelectValue';\r
 \r
diff --git a/program/lib/Auth/SASL.php b/program/lib/Auth/SASL.php
new file mode 100644 (file)
index 0000000..5bd6eb0
--- /dev/null
@@ -0,0 +1,125 @@
+<?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
new file mode 100644 (file)
index 0000000..0811909
--- /dev/null
@@ -0,0 +1,71 @@
+<?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
new file mode 100644 (file)
index 0000000..d8c5610
--- /dev/null
@@ -0,0 +1,105 @@
+<?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
new file mode 100644 (file)
index 0000000..d3fbf17
--- /dev/null
@@ -0,0 +1,68 @@
+<?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
new file mode 100644 (file)
index 0000000..07007b7
--- /dev/null
@@ -0,0 +1,197 @@
+<?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
new file mode 100644 (file)
index 0000000..c5ae25e
--- /dev/null
@@ -0,0 +1,63 @@
+<?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
new file mode 100644 (file)
index 0000000..918daee
--- /dev/null
@@ -0,0 +1,65 @@
+<?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
new file mode 100644 (file)
index 0000000..57894d0
--- /dev/null
@@ -0,0 +1,63 @@
+<?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
new file mode 100644 (file)
index 0000000..cbca500
--- /dev/null
@@ -0,0 +1,306 @@
+<?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/MDB2.php b/program/lib/MDB2.php
new file mode 100644 (file)
index 0000000..61486a6
--- /dev/null
@@ -0,0 +1,4270 @@
+<?php
+// vim: set et ts=4 sw=4 fdm=marker:
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2007 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Lukas Smith <smith@pooteeweet.org>                           |
+// +----------------------------------------------------------------------+
+//
+// $Id: MDB2.php 295587 2010-02-28 17:16:38Z quipo $
+//
+
+/**
+ * @package     MDB2
+ * @category    Database
+ * @author      Lukas Smith <smith@pooteeweet.org>
+ */
+
+require_once 'PEAR.php';
+
+// {{{ Error constants
+
+/**
+ * The method mapErrorCode in each MDB2_dbtype implementation maps
+ * native error codes to one of these.
+ *
+ * If you add an error code here, make sure you also add a textual
+ * version of it in MDB2::errorMessage().
+ */
+
+define('MDB2_OK',                      true);
+define('MDB2_ERROR',                     -1);
+define('MDB2_ERROR_SYNTAX',              -2);
+define('MDB2_ERROR_CONSTRAINT',          -3);
+define('MDB2_ERROR_NOT_FOUND',           -4);
+define('MDB2_ERROR_ALREADY_EXISTS',      -5);
+define('MDB2_ERROR_UNSUPPORTED',         -6);
+define('MDB2_ERROR_MISMATCH',            -7);
+define('MDB2_ERROR_INVALID',             -8);
+define('MDB2_ERROR_NOT_CAPABLE',         -9);
+define('MDB2_ERROR_TRUNCATED',          -10);
+define('MDB2_ERROR_INVALID_NUMBER',     -11);
+define('MDB2_ERROR_INVALID_DATE',       -12);
+define('MDB2_ERROR_DIVZERO',            -13);
+define('MDB2_ERROR_NODBSELECTED',       -14);
+define('MDB2_ERROR_CANNOT_CREATE',      -15);
+define('MDB2_ERROR_CANNOT_DELETE',      -16);
+define('MDB2_ERROR_CANNOT_DROP',        -17);
+define('MDB2_ERROR_NOSUCHTABLE',        -18);
+define('MDB2_ERROR_NOSUCHFIELD',        -19);
+define('MDB2_ERROR_NEED_MORE_DATA',     -20);
+define('MDB2_ERROR_NOT_LOCKED',         -21);
+define('MDB2_ERROR_VALUE_COUNT_ON_ROW', -22);
+define('MDB2_ERROR_INVALID_DSN',        -23);
+define('MDB2_ERROR_CONNECT_FAILED',     -24);
+define('MDB2_ERROR_EXTENSION_NOT_FOUND',-25);
+define('MDB2_ERROR_NOSUCHDB',           -26);
+define('MDB2_ERROR_ACCESS_VIOLATION',   -27);
+define('MDB2_ERROR_CANNOT_REPLACE',     -28);
+define('MDB2_ERROR_CONSTRAINT_NOT_NULL',-29);
+define('MDB2_ERROR_DEADLOCK',           -30);
+define('MDB2_ERROR_CANNOT_ALTER',       -31);
+define('MDB2_ERROR_MANAGER',            -32);
+define('MDB2_ERROR_MANAGER_PARSE',      -33);
+define('MDB2_ERROR_LOADMODULE',         -34);
+define('MDB2_ERROR_INSUFFICIENT_DATA',  -35);
+define('MDB2_ERROR_NO_PERMISSION',      -36);
+define('MDB2_ERROR_DISCONNECT_FAILED',  -37);
+
+// }}}
+// {{{ Verbose constants
+/**
+ * These are just helper constants to more verbosely express parameters to prepare()
+ */
+
+define('MDB2_PREPARE_MANIP', false);
+define('MDB2_PREPARE_RESULT', null);
+
+// }}}
+// {{{ Fetchmode constants
+
+/**
+ * This is a special constant that tells MDB2 the user hasn't specified
+ * any particular get mode, so the default should be used.
+ */
+define('MDB2_FETCHMODE_DEFAULT', 0);
+
+/**
+ * Column data indexed by numbers, ordered from 0 and up
+ */
+define('MDB2_FETCHMODE_ORDERED', 1);
+
+/**
+ * Column data indexed by column names
+ */
+define('MDB2_FETCHMODE_ASSOC', 2);
+
+/**
+ * Column data as object properties
+ */
+define('MDB2_FETCHMODE_OBJECT', 3);
+
+/**
+ * For multi-dimensional results: normally the first level of arrays
+ * is the row number, and the second level indexed by column number or name.
+ * MDB2_FETCHMODE_FLIPPED switches this order, so the first level of arrays
+ * is the column name, and the second level the row number.
+ */
+define('MDB2_FETCHMODE_FLIPPED', 4);
+
+// }}}
+// {{{ Portability mode constants
+
+/**
+ * Portability: turn off all portability features.
+ * @see MDB2_Driver_Common::setOption()
+ */
+define('MDB2_PORTABILITY_NONE', 0);
+
+/**
+ * Portability: convert names of tables and fields to case defined in the
+ * "field_case" option when using the query*(), fetch*() and tableInfo() methods.
+ * @see MDB2_Driver_Common::setOption()
+ */
+define('MDB2_PORTABILITY_FIX_CASE', 1);
+
+/**
+ * Portability: right trim the data output by query*() and fetch*().
+ * @see MDB2_Driver_Common::setOption()
+ */
+define('MDB2_PORTABILITY_RTRIM', 2);
+
+/**
+ * Portability: force reporting the number of rows deleted.
+ * @see MDB2_Driver_Common::setOption()
+ */
+define('MDB2_PORTABILITY_DELETE_COUNT', 4);
+
+/**
+ * Portability: not needed in MDB2 (just left here for compatibility to DB)
+ * @see MDB2_Driver_Common::setOption()
+ */
+define('MDB2_PORTABILITY_NUMROWS', 8);
+
+/**
+ * Portability: makes certain error messages in certain drivers compatible
+ * with those from other DBMS's.
+ *
+ * + mysql, mysqli:  change unique/primary key constraints
+ *   MDB2_ERROR_ALREADY_EXISTS -> MDB2_ERROR_CONSTRAINT
+ *
+ * + odbc(access):  MS's ODBC driver reports 'no such field' as code
+ *   07001, which means 'too few parameters.'  When this option is on
+ *   that code gets mapped to MDB2_ERROR_NOSUCHFIELD.
+ *
+ * @see MDB2_Driver_Common::setOption()
+ */
+define('MDB2_PORTABILITY_ERRORS', 16);
+
+/**
+ * Portability: convert empty values to null strings in data output by
+ * query*() and fetch*().
+ * @see MDB2_Driver_Common::setOption()
+ */
+define('MDB2_PORTABILITY_EMPTY_TO_NULL', 32);
+
+/**
+ * Portability: removes database/table qualifiers from associative indexes
+ * @see MDB2_Driver_Common::setOption()
+ */
+define('MDB2_PORTABILITY_FIX_ASSOC_FIELD_NAMES', 64);
+
+/**
+ * Portability: turn on all portability features.
+ * @see MDB2_Driver_Common::setOption()
+ */
+define('MDB2_PORTABILITY_ALL', 127);
+
+// }}}
+// {{{ Globals for class instance tracking
+
+/**
+ * These are global variables that are used to track the various class instances
+ */
+
+$GLOBALS['_MDB2_databases'] = array();
+$GLOBALS['_MDB2_dsninfo_default'] = array(
+    'phptype'  => false,
+    'dbsyntax' => false,
+    'username' => false,
+    'password' => false,
+    'protocol' => false,
+    'hostspec' => false,
+    'port'     => false,
+    'socket'   => false,
+    'database' => false,
+    'mode'     => false,
+);
+
+// }}}
+// {{{ class MDB2
+
+/**
+ * The main 'MDB2' class is simply a container class with some static
+ * methods for creating DB objects as well as some utility functions
+ * common to all parts of DB.
+ *
+ * The object model of MDB2 is as follows (indentation means inheritance):
+ *
+ * MDB2          The main MDB2 class.  This is simply a utility class
+ *              with some 'static' methods for creating MDB2 objects as
+ *              well as common utility functions for other MDB2 classes.
+ *
+ * MDB2_Driver_Common   The base for each MDB2 implementation.  Provides default
+ * |            implementations (in OO lingo virtual methods) for
+ * |            the actual DB implementations as well as a bunch of
+ * |            query utility functions.
+ * |
+ * +-MDB2_Driver_mysql  The MDB2 implementation for MySQL. Inherits MDB2_Driver_Common.
+ *              When calling MDB2::factory or MDB2::connect for MySQL
+ *              connections, the object returned is an instance of this
+ *              class.
+ * +-MDB2_Driver_pgsql  The MDB2 implementation for PostGreSQL. Inherits MDB2_Driver_Common.
+ *              When calling MDB2::factory or MDB2::connect for PostGreSQL
+ *              connections, the object returned is an instance of this
+ *              class.
+ *
+ * @package     MDB2
+ * @category    Database
+ * @author      Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2
+{
+    // {{{ function setOptions($db, $options)
+
+    /**
+     * set option array   in an exiting database object
+     *
+     * @param   MDB2_Driver_Common  MDB2 object
+     * @param   array   An associative array of option names and their values.
+     *
+     * @return mixed   MDB2_OK or a PEAR Error object
+     *
+     * @access  public
+     */
+    static function setOptions($db, $options)
+    {
+        if (is_array($options)) {
+            foreach ($options as $option => $value) {
+                $test = $db->setOption($option, $value);
+                if (PEAR::isError($test)) {
+                    return $test;
+                }
+            }
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ function classExists($classname)
+
+    /**
+     * Checks if a class exists without triggering __autoload
+     *
+     * @param   string  classname
+     *
+     * @return  bool    true success and false on error
+     * @static
+     * @access  public
+     */
+    static function classExists($classname)
+    {
+        return class_exists($classname, false);
+    }
+
+    // }}}
+    // {{{ function loadClass($class_name, $debug)
+
+    /**
+     * Loads a PEAR class.
+     *
+     * @param   string  classname to load
+     * @param   bool    if errors should be suppressed
+     *
+     * @return  mixed   true success or PEAR_Error on failure
+     *
+     * @access  public
+     */
+    static function loadClass($class_name, $debug)
+    {
+        if (!MDB2::classExists($class_name)) {
+            $file_name = str_replace('_', DIRECTORY_SEPARATOR, $class_name).'.php';
+            if ($debug) {
+                $include = include_once($file_name);
+            } else {
+                $include = @include_once($file_name);
+            }
+            if (!$include) {
+                if (!MDB2::fileExists($file_name)) {
+                    $msg = "unable to find package '$class_name' file '$file_name'";
+                } else {
+                    $msg = "unable to load class '$class_name' from file '$file_name'";
+                }
+                $err = MDB2::raiseError(MDB2_ERROR_NOT_FOUND, null, null, $msg);
+                return $err;
+            }
+            if (!MDB2::classExists($class_name)) {
+                $msg = "unable to load class '$class_name' from file '$file_name'";
+                $err = MDB2::raiseError(MDB2_ERROR_NOT_FOUND, null, null, $msg);
+                return $err;
+            }
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ function factory($dsn, $options = false)
+
+    /**
+     * Create a new MDB2 object for the specified database type
+     *
+     * @param   mixed   'data source name', see the MDB2::parseDSN
+     *                      method for a description of the dsn format.
+     *                      Can also be specified as an array of the
+     *                      format returned by MDB2::parseDSN.
+     * @param   array   An associative array of option names and
+     *                            their values.
+     *
+     * @return  mixed   a newly created MDB2 object, or false on error
+     *
+     * @access  public
+     */
+    static function factory($dsn, $options = false)
+    {
+        $dsninfo = MDB2::parseDSN($dsn);
+        if (empty($dsninfo['phptype'])) {
+            $err = MDB2::raiseError(MDB2_ERROR_NOT_FOUND,
+                null, null, 'no RDBMS driver specified');
+            return $err;
+        }
+        $class_name = 'MDB2_Driver_'.$dsninfo['phptype'];
+
+        $debug = (!empty($options['debug']));
+        $err = MDB2::loadClass($class_name, $debug);
+        if (PEAR::isError($err)) {
+            return $err;
+        }
+
+        $db = new $class_name();
+        $db->setDSN($dsninfo);
+        $err = MDB2::setOptions($db, $options);
+        if (PEAR::isError($err)) {
+            return $err;
+        }
+
+        return $db;
+    }
+
+    // }}}
+    // {{{ function connect($dsn, $options = false)
+
+    /**
+     * Create a new MDB2_Driver_* connection object and connect to the specified
+     * database
+     *
+     * @param mixed $dsn     'data source name', see the MDB2::parseDSN
+     *                       method for a description of the dsn format.
+     *                       Can also be specified as an array of the
+     *                       format returned by MDB2::parseDSN.
+     * @param array $options An associative array of option names and
+     *                       their values.
+     *
+     * @return mixed a newly created MDB2 connection object, or a MDB2
+     *               error object on error
+     *
+     * @access  public
+     * @see     MDB2::parseDSN
+     */
+    static function connect($dsn, $options = false)
+    {
+        $db = MDB2::factory($dsn, $options);
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $err = $db->connect();
+        if (PEAR::isError($err)) {
+            $dsn = $db->getDSN('string', 'xxx');
+            $db->disconnect();
+            $err->addUserInfo($dsn);
+            return $err;
+        }
+
+        return $db;
+    }
+
+    // }}}
+    // {{{ function singleton($dsn = null, $options = false)
+
+    /**
+     * Returns a MDB2 connection with the requested DSN.
+     * A new MDB2 connection object is only created if no object with the
+     * requested DSN exists yet.
+     *
+     * @param   mixed   'data source name', see the MDB2::parseDSN
+     *                            method for a description of the dsn format.
+     *                            Can also be specified as an array of the
+     *                            format returned by MDB2::parseDSN.
+     * @param   array   An associative array of option names and
+     *                            their values.
+     *
+     * @return  mixed   a newly created MDB2 connection object, or a MDB2
+     *                  error object on error
+     *
+     * @access  public
+     * @see     MDB2::parseDSN
+     */
+    static function singleton($dsn = null, $options = false)
+    {
+        if ($dsn) {
+            $dsninfo = MDB2::parseDSN($dsn);
+            $dsninfo = array_merge($GLOBALS['_MDB2_dsninfo_default'], $dsninfo);
+            $keys = array_keys($GLOBALS['_MDB2_databases']);
+            for ($i=0, $j=count($keys); $i<$j; ++$i) {
+                if (isset($GLOBALS['_MDB2_databases'][$keys[$i]])) {
+                    $tmp_dsn = $GLOBALS['_MDB2_databases'][$keys[$i]]->getDSN('array');
+                    if (count(array_diff_assoc($tmp_dsn, $dsninfo)) == 0) {
+                        MDB2::setOptions($GLOBALS['_MDB2_databases'][$keys[$i]], $options);
+                        return $GLOBALS['_MDB2_databases'][$keys[$i]];
+                    }
+                }
+            }
+        } elseif (is_array($GLOBALS['_MDB2_databases']) && reset($GLOBALS['_MDB2_databases'])) {
+            return $GLOBALS['_MDB2_databases'][key($GLOBALS['_MDB2_databases'])];
+        }
+        $db = MDB2::factory($dsn, $options);
+        return $db;
+    }
+
+    // }}}
+    // {{{ function areEquals()
+
+    /**
+     * It looks like there's a memory leak in array_diff() in PHP 5.1.x,
+     * so use this method instead.
+     * @see http://pear.php.net/bugs/bug.php?id=11790
+     *
+     * @param array $arr1
+     * @param array $arr2
+     * @return boolean
+     */
+    static function areEquals($arr1, $arr2)
+    {
+        if (count($arr1) != count($arr2)) {
+            return false;
+        }
+        foreach (array_keys($arr1) as $k) {
+            if (!array_key_exists($k, $arr2) || $arr1[$k] != $arr2[$k]) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    // }}}
+    // {{{ function loadFile($file)
+
+    /**
+     * load a file (like 'Date')
+     *
+     * @param string $file name of the file in the MDB2 directory (without '.php')
+     *
+     * @return string name of the file that was included
+     *
+     * @access  public
+     */
+    static function loadFile($file)
+    {
+        $file_name = 'MDB2'.DIRECTORY_SEPARATOR.$file.'.php';
+        if (!MDB2::fileExists($file_name)) {
+            return MDB2::raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                'unable to find: '.$file_name);
+        }
+        if (!include_once($file_name)) {
+            return MDB2::raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                'unable to load driver class: '.$file_name);
+        }
+        return $file_name;
+    }
+
+    // }}}
+    // {{{ function apiVersion()
+
+    /**
+     * Return the MDB2 API version
+     *
+     * @return  string  the MDB2 API version number
+     *
+     * @access  public
+     */
+    function apiVersion()
+    {
+        return '@package_version@';
+    }
+
+    // }}}
+    // {{{ function &raiseError($code = null, $mode = null, $options = null, $userinfo = null)
+
+    /**
+     * This method is used to communicate an error and invoke error
+     * callbacks etc.  Basically a wrapper for PEAR::raiseError
+     * without the message string.
+     *
+     * @param   mixed  int error code
+     *
+     * @param   int    error mode, see PEAR_Error docs
+     *
+     * @param   mixed  If error mode is PEAR_ERROR_TRIGGER, this is the
+     *                 error level (E_USER_NOTICE etc).  If error mode is
+     *                 PEAR_ERROR_CALLBACK, this is the callback function,
+     *                 either as a function name, or as an array of an
+     *                 object and method name.  For other error modes this
+     *                 parameter is ignored.
+     *
+     * @param   string Extra debug information.  Defaults to the last
+     *                 query and native error code.
+     *
+     * @return PEAR_Error instance of a PEAR Error object
+     *
+     * @access  private
+     * @see     PEAR_Error
+     */
+    function &raiseError($code = null,
+                         $mode = null,
+                         $options = null,
+                         $userinfo = null,
+                         $dummy1 = null,
+                         $dummy2 = null,
+                         $dummy3 = false)
+    {
+        $err =& PEAR::raiseError(null, $code, $mode, $options, $userinfo, 'MDB2_Error', true);
+        return $err;
+    }
+
+    // }}}
+    // {{{ function isError($data, $code = null)
+
+    /**
+     * Tell whether a value is a MDB2 error.
+     *
+     * @param   mixed   the value to test
+     * @param   int     if is an error object, return true
+     *                        only if $code is a string and
+     *                        $db->getMessage() == $code or
+     *                        $code is an integer and $db->getCode() == $code
+     *
+     * @return  bool    true if parameter is an error
+     *
+     * @access  public
+     */
+    static function isError($data, $code = null)
+    {
+        if ($data instanceof MDB2_Error) {
+            if (null === $code) {
+                return true;
+            }
+            if (is_string($code)) {
+                return $data->getMessage() === $code;
+            }
+            return in_array($data->getCode(), (array)$code);
+        }
+        return false;
+    }
+
+    // }}}
+    // {{{ function isConnection($value)
+
+    /**
+     * Tell whether a value is a MDB2 connection
+     *
+     * @param   mixed   value to test
+     *
+     * @return  bool    whether $value is a MDB2 connection
+     * @access  public
+     */
+    function isConnection($value)
+    {
+        return ($value instanceof MDB2_Driver_Common);
+    }
+
+    // }}}
+    // {{{ function isResult($value)
+
+    /**
+     * Tell whether a value is a MDB2 result
+     *
+     * @param mixed $value value to test
+     *
+     * @return bool whether $value is a MDB2 result
+     *
+     * @access public
+     */
+    function isResult($value)
+    {
+        return ($value instanceof MDB2_Result);
+    }
+
+    // }}}
+    // {{{ function isResultCommon($value)
+
+    /**
+     * Tell whether a value is a MDB2 result implementing the common interface
+     *
+     * @param mixed $value value to test
+     *
+     * @return bool whether $value is a MDB2 result implementing the common interface
+     *
+     * @access  public
+     */
+    static function isResultCommon($value)
+    {
+        return ($value instanceof MDB2_Result_Common);
+    }
+
+    // }}}
+    // {{{ function isStatement($value)
+
+    /**
+     * Tell whether a value is a MDB2 statement interface
+     *
+     * @param   mixed   value to test
+     *
+     * @return  bool    whether $value is a MDB2 statement interface
+     *
+     * @access  public
+     */
+    function isStatement($value)
+    {
+        return ($value instanceof MDB2_Statement_Common);
+    }
+
+    // }}}
+    // {{{ function errorMessage($value = null)
+
+    /**
+     * Return a textual error message for a MDB2 error code
+     *
+     * @param   int|array   integer error code,
+                                null to get the current error code-message map,
+                                or an array with a new error code-message map
+     *
+     * @return  string  error message, or false if the error code was
+     *                  not recognized
+     *
+     * @access  public
+     */
+    function errorMessage($value = null)
+    {
+        static $errorMessages;
+
+        if (is_array($value)) {
+            $errorMessages = $value;
+            return MDB2_OK;
+        }
+
+        if (!isset($errorMessages)) {
+            $errorMessages = array(
+                MDB2_OK                       => 'no error',
+                MDB2_ERROR                    => 'unknown error',
+                MDB2_ERROR_ALREADY_EXISTS     => 'already exists',
+                MDB2_ERROR_CANNOT_CREATE      => 'can not create',
+                MDB2_ERROR_CANNOT_ALTER       => 'can not alter',
+                MDB2_ERROR_CANNOT_REPLACE     => 'can not replace',
+                MDB2_ERROR_CANNOT_DELETE      => 'can not delete',
+                MDB2_ERROR_CANNOT_DROP        => 'can not drop',
+                MDB2_ERROR_CONSTRAINT         => 'constraint violation',
+                MDB2_ERROR_CONSTRAINT_NOT_NULL=> 'null value violates not-null constraint',
+                MDB2_ERROR_DIVZERO            => 'division by zero',
+                MDB2_ERROR_INVALID            => 'invalid',
+                MDB2_ERROR_INVALID_DATE       => 'invalid date or time',
+                MDB2_ERROR_INVALID_NUMBER     => 'invalid number',
+                MDB2_ERROR_MISMATCH           => 'mismatch',
+                MDB2_ERROR_NODBSELECTED       => 'no database selected',
+                MDB2_ERROR_NOSUCHFIELD        => 'no such field',
+                MDB2_ERROR_NOSUCHTABLE        => 'no such table',
+                MDB2_ERROR_NOT_CAPABLE        => 'MDB2 backend not capable',
+                MDB2_ERROR_NOT_FOUND          => 'not found',
+                MDB2_ERROR_NOT_LOCKED         => 'not locked',
+                MDB2_ERROR_SYNTAX             => 'syntax error',
+                MDB2_ERROR_UNSUPPORTED        => 'not supported',
+                MDB2_ERROR_VALUE_COUNT_ON_ROW => 'value count on row',
+                MDB2_ERROR_INVALID_DSN        => 'invalid DSN',
+                MDB2_ERROR_CONNECT_FAILED     => 'connect failed',
+                MDB2_ERROR_NEED_MORE_DATA     => 'insufficient data supplied',
+                MDB2_ERROR_EXTENSION_NOT_FOUND=> 'extension not found',
+                MDB2_ERROR_NOSUCHDB           => 'no such database',
+                MDB2_ERROR_ACCESS_VIOLATION   => 'insufficient permissions',
+                MDB2_ERROR_LOADMODULE         => 'error while including on demand module',
+                MDB2_ERROR_TRUNCATED          => 'truncated',
+                MDB2_ERROR_DEADLOCK           => 'deadlock detected',
+                MDB2_ERROR_NO_PERMISSION      => 'no permission',
+                MDB2_ERROR_DISCONNECT_FAILED  => 'disconnect failed',
+            );
+        }
+
+        if (null === $value) {
+            return $errorMessages;
+        }
+
+        if (PEAR::isError($value)) {
+            $value = $value->getCode();
+        }
+
+        return isset($errorMessages[$value]) ?
+           $errorMessages[$value] : $errorMessages[MDB2_ERROR];
+    }
+
+    // }}}
+    // {{{ function parseDSN($dsn)
+
+    /**
+     * Parse a data source name.
+     *
+     * Additional keys can be added by appending a URI query string to the
+     * end of the DSN.
+     *
+     * The format of the supplied DSN is in its fullest form:
+     * <code>
+     *  phptype(dbsyntax)://username:password@protocol+hostspec/database?option=8&another=true
+     * </code>
+     *
+     * Most variations are allowed:
+     * <code>
+     *  phptype://username:password@protocol+hostspec:110//usr/db_file.db?mode=0644
+     *  phptype://username:password@hostspec/database_name
+     *  phptype://username:password@hostspec
+     *  phptype://username@hostspec
+     *  phptype://hostspec/database
+     *  phptype://hostspec
+     *  phptype(dbsyntax)
+     *  phptype
+     * </code>
+     *
+     * @param   string  Data Source Name to be parsed
+     *
+     * @return  array   an associative array with the following keys:
+     *  + phptype:  Database backend used in PHP (mysql, odbc etc.)
+     *  + dbsyntax: Database used with regards to SQL syntax etc.
+     *  + protocol: Communication protocol to use (tcp, unix etc.)
+     *  + hostspec: Host specification (hostname[:port])
+     *  + database: Database to use on the DBMS server
+     *  + username: User name for login
+     *  + password: Password for login
+     *
+     * @access  public
+     * @author  Tomas V.V.Cox <cox@idecnet.com>
+     */
+    static function parseDSN($dsn)
+    {
+        $parsed = $GLOBALS['_MDB2_dsninfo_default'];
+
+        if (is_array($dsn)) {
+            $dsn = array_merge($parsed, $dsn);
+            if (!$dsn['dbsyntax']) {
+                $dsn['dbsyntax'] = $dsn['phptype'];
+            }
+            return $dsn;
+        }
+
+        // Find phptype and dbsyntax
+        if (($pos = strpos($dsn, '://')) !== false) {
+            $str = substr($dsn, 0, $pos);
+            $dsn = substr($dsn, $pos + 3);
+        } else {
+            $str = $dsn;
+            $dsn = null;
+        }
+
+        // Get phptype and dbsyntax
+        // $str => phptype(dbsyntax)
+        if (preg_match('|^(.+?)\((.*?)\)$|', $str, $arr)) {
+            $parsed['phptype']  = $arr[1];
+            $parsed['dbsyntax'] = !$arr[2] ? $arr[1] : $arr[2];
+        } else {
+            $parsed['phptype']  = $str;
+            $parsed['dbsyntax'] = $str;
+        }
+
+        if (!count($dsn)) {
+            return $parsed;
+        }
+
+        // Get (if found): username and password
+        // $dsn => username:password@protocol+hostspec/database
+        if (($at = strrpos($dsn,'@')) !== false) {
+            $str = substr($dsn, 0, $at);
+            $dsn = substr($dsn, $at + 1);
+            if (($pos = strpos($str, ':')) !== false) {
+                $parsed['username'] = rawurldecode(substr($str, 0, $pos));
+                $parsed['password'] = rawurldecode(substr($str, $pos + 1));
+            } else {
+                $parsed['username'] = rawurldecode($str);
+            }
+        }
+
+        // Find protocol and hostspec
+
+        // $dsn => proto(proto_opts)/database
+        if (preg_match('|^([^(]+)\((.*?)\)/?(.*?)$|', $dsn, $match)) {
+            $proto       = $match[1];
+            $proto_opts  = $match[2] ? $match[2] : false;
+            $dsn         = $match[3];
+
+        // $dsn => protocol+hostspec/database (old format)
+        } else {
+            if (strpos($dsn, '+') !== false) {
+                list($proto, $dsn) = explode('+', $dsn, 2);
+            }
+            if (   strpos($dsn, '//') === 0
+                && strpos($dsn, '/', 2) !== false
+                && $parsed['phptype'] == 'oci8'
+            ) {
+                //oracle's "Easy Connect" syntax:
+                //"username/password@[//]host[:port][/service_name]"
+                //e.g. "scott/tiger@//mymachine:1521/oracle"
+                $proto_opts = $dsn;
+                $pos = strrpos($proto_opts, '/');
+                $dsn = substr($proto_opts, $pos + 1);
+                $proto_opts = substr($proto_opts, 0, $pos);
+            } elseif (strpos($dsn, '/') !== false) {
+                list($proto_opts, $dsn) = explode('/', $dsn, 2);
+            } else {
+                $proto_opts = $dsn;
+                $dsn = null;
+            }
+        }
+
+        // process the different protocol options
+        $parsed['protocol'] = (!empty($proto)) ? $proto : 'tcp';
+        $proto_opts = rawurldecode($proto_opts);
+        if (strpos($proto_opts, ':') !== false) {
+            list($proto_opts, $parsed['port']) = explode(':', $proto_opts);
+        }
+        if ($parsed['protocol'] == 'tcp') {
+            $parsed['hostspec'] = $proto_opts;
+        } elseif ($parsed['protocol'] == 'unix') {
+            $parsed['socket'] = $proto_opts;
+        }
+
+        // Get dabase if any
+        // $dsn => database
+        if ($dsn) {
+            // /database
+            if (($pos = strpos($dsn, '?')) === false) {
+                $parsed['database'] = rawurldecode($dsn);
+            // /database?param1=value1&param2=value2
+            } else {
+                $parsed['database'] = rawurldecode(substr($dsn, 0, $pos));
+                $dsn = substr($dsn, $pos + 1);
+                if (strpos($dsn, '&') !== false) {
+                    $opts = explode('&', $dsn);
+                } else { // database?param1=value1
+                    $opts = array($dsn);
+                }
+                foreach ($opts as $opt) {
+                    list($key, $value) = explode('=', $opt);
+                    if (!array_key_exists($key, $parsed) || false === $parsed[$key]) {
+                        // don't allow params overwrite
+                        $parsed[$key] = rawurldecode($value);
+                    }
+                }
+            }
+        }
+
+        return $parsed;
+    }
+
+    // }}}
+    // {{{ function fileExists($file)
+
+    /**
+     * Checks if a file exists in the include path
+     *
+     * @param   string  filename
+     *
+     * @return  bool    true success and false on error
+     *
+     * @access  public
+     */
+    static function fileExists($file)
+    {
+        // safe_mode does notwork with is_readable()
+        if (!@ini_get('safe_mode')) {
+             $dirs = explode(PATH_SEPARATOR, ini_get('include_path'));
+             foreach ($dirs as $dir) {
+                 if (is_readable($dir . DIRECTORY_SEPARATOR . $file)) {
+                     return true;
+                 }
+            }
+        } else {
+            $fp = @fopen($file, 'r', true);
+            if (is_resource($fp)) {
+                @fclose($fp);
+                return true;
+            }
+        }
+        return false;
+    }
+    // }}}
+}
+
+// }}}
+// {{{ class MDB2_Error extends PEAR_Error
+
+/**
+ * MDB2_Error implements a class for reporting portable database error
+ * messages.
+ *
+ * @package     MDB2
+ * @category    Database
+ * @author Stig Bakken <ssb@fast.no>
+ */
+class MDB2_Error extends PEAR_Error
+{
+    // {{{ constructor: function MDB2_Error($code = MDB2_ERROR, $mode = PEAR_ERROR_RETURN, $level = E_USER_NOTICE, $debuginfo = null)
+
+    /**
+     * MDB2_Error constructor.
+     *
+     * @param   mixed   MDB2 error code, or string with error message.
+     * @param   int     what 'error mode' to operate in
+     * @param   int     what error level to use for $mode & PEAR_ERROR_TRIGGER
+     * @param   mixed   additional debug info, such as the last query
+     */
+    function __construct($code = MDB2_ERROR, $mode = PEAR_ERROR_RETURN,
+              $level = E_USER_NOTICE, $debuginfo = null, $dummy = null)
+    {
+        if (null === $code) {
+            $code = MDB2_ERROR;
+        }
+        $this->PEAR_Error('MDB2 Error: '.MDB2::errorMessage($code), $code,
+            $mode, $level, $debuginfo);
+    }
+
+    // }}}
+}
+
+// }}}
+// {{{ class MDB2_Driver_Common extends PEAR
+
+/**
+ * MDB2_Driver_Common: Base class that is extended by each MDB2 driver
+ *
+ * @package     MDB2
+ * @category    Database
+ * @author      Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Driver_Common extends PEAR
+{
+    // {{{ Variables (Properties)
+
+    /**
+     * index of the MDB2 object within the $GLOBALS['_MDB2_databases'] array
+     * @var     int
+     * @access  public
+     */
+    var $db_index = 0;
+
+    /**
+     * DSN used for the next query
+     * @var     array
+     * @access  protected
+     */
+    var $dsn = array();
+
+    /**
+     * DSN that was used to create the current connection
+     * @var     array
+     * @access  protected
+     */
+    var $connected_dsn = array();
+
+    /**
+     * connection resource
+     * @var     mixed
+     * @access  protected
+     */
+    var $connection = 0;
+
+    /**
+     * if the current opened connection is a persistent connection
+     * @var     bool
+     * @access  protected
+     */
+    var $opened_persistent;
+
+    /**
+     * the name of the database for the next query
+     * @var     string
+     * @access  protected
+     */
+    var $database_name = '';
+
+    /**
+     * the name of the database currently selected
+     * @var     string
+     * @access  protected
+     */
+    var $connected_database_name = '';
+
+    /**
+     * server version information
+     * @var     string
+     * @access  protected
+     */
+    var $connected_server_info = '';
+
+    /**
+     * list of all supported features of the given driver
+     * @var     array
+     * @access  public
+     */
+    var $supported = array(
+        'sequences' => false,
+        'indexes' => false,
+        'affected_rows' => false,
+        'summary_functions' => false,
+        'order_by_text' => false,
+        'transactions' => false,
+        'savepoints' => false,
+        'current_id' => false,
+        'limit_queries' => false,
+        'LOBs' => false,
+        'replace' => false,
+        'sub_selects' => false,
+        'triggers' => false,
+        'auto_increment' => false,
+        'primary_key' => false,
+        'result_introspection' => false,
+        'prepared_statements' => false,
+        'identifier_quoting' => false,
+        'pattern_escaping' => false,
+        'new_link' => false,
+    );
+
+    /**
+     * Array of supported options that can be passed to the MDB2 instance.
+     * 
+     * The options can be set during object creation, using
+     * MDB2::connect(), MDB2::factory() or MDB2::singleton(). The options can 
+     * also be set after the object is created, using MDB2::setOptions() or 
+     * MDB2_Driver_Common::setOption().
+     * The list of available option includes:
+     * <ul>
+     *  <li>$options['ssl'] -> boolean: determines if ssl should be used for connections</li>
+     *  <li>$options['field_case'] -> CASE_LOWER|CASE_UPPER: determines what case to force on field/table names</li>
+     *  <li>$options['disable_query'] -> boolean: determines if queries should be executed</li>
+     *  <li>$options['result_class'] -> string: class used for result sets</li>
+     *  <li>$options['buffered_result_class'] -> string: class used for buffered result sets</li>
+     *  <li>$options['result_wrap_class'] -> string: class used to wrap result sets into</li>
+     *  <li>$options['result_buffering'] -> boolean should results be buffered or not?</li>
+     *  <li>$options['fetch_class'] -> string: class to use when fetch mode object is used</li>
+     *  <li>$options['persistent'] -> boolean: persistent connection?</li>
+     *  <li>$options['debug'] -> integer: numeric debug level</li>
+     *  <li>$options['debug_handler'] -> string: function/method that captures debug messages</li>
+     *  <li>$options['debug_expanded_output'] -> bool: BC option to determine if more context information should be send to the debug handler</li>
+     *  <li>$options['default_text_field_length'] -> integer: default text field length to use</li>
+     *  <li>$options['lob_buffer_length'] -> integer: LOB buffer length</li>
+     *  <li>$options['log_line_break'] -> string: line-break format</li>
+     *  <li>$options['idxname_format'] -> string: pattern for index name</li>
+     *  <li>$options['seqname_format'] -> string: pattern for sequence name</li>
+     *  <li>$options['savepoint_format'] -> string: pattern for auto generated savepoint names</li>
+     *  <li>$options['statement_format'] -> string: pattern for prepared statement names</li>
+     *  <li>$options['seqcol_name'] -> string: sequence column name</li>
+     *  <li>$options['quote_identifier'] -> boolean: if identifier quoting should be done when check_option is used</li>
+     *  <li>$options['use_transactions'] -> boolean: if transaction use should be enabled</li>
+     *  <li>$options['decimal_places'] -> integer: number of decimal places to handle</li>
+     *  <li>$options['portability'] -> integer: portability constant</li>
+     *  <li>$options['modules'] -> array: short to long module name mapping for __call()</li>
+     *  <li>$options['emulate_prepared'] -> boolean: force prepared statements to be emulated</li>
+     *  <li>$options['datatype_map'] -> array: map user defined datatypes to other primitive datatypes</li>
+     *  <li>$options['datatype_map_callback'] -> array: callback function/method that should be called</li>
+     *  <li>$options['bindname_format'] -> string: regular expression pattern for named parameters</li>
+     *  <li>$options['multi_query'] -> boolean: determines if queries returning multiple result sets should be executed</li>
+     *  <li>$options['max_identifiers_length'] -> integer: max identifier length</li>
+     *  <li>$options['default_fk_action_onupdate'] -> string: default FOREIGN KEY ON UPDATE action ['RESTRICT'|'NO ACTION'|'SET DEFAULT'|'SET NULL'|'CASCADE']</li>
+     *  <li>$options['default_fk_action_ondelete'] -> string: default FOREIGN KEY ON DELETE action ['RESTRICT'|'NO ACTION'|'SET DEFAULT'|'SET NULL'|'CASCADE']</li>
+     * </ul>
+     *
+     * @var     array
+     * @access  public
+     * @see     MDB2::connect()
+     * @see     MDB2::factory()
+     * @see     MDB2::singleton()
+     * @see     MDB2_Driver_Common::setOption()
+     */
+    var $options = array(
+        'ssl' => false,
+        'field_case' => CASE_LOWER,
+        'disable_query' => false,
+        'result_class' => 'MDB2_Result_%s',
+        'buffered_result_class' => 'MDB2_BufferedResult_%s',
+        'result_wrap_class' => false,
+        'result_buffering' => true,
+        'fetch_class' => 'stdClass',
+        'persistent' => false,
+        'debug' => 0,
+        'debug_handler' => 'MDB2_defaultDebugOutput',
+        'debug_expanded_output' => false,
+        'default_text_field_length' => 4096,
+        'lob_buffer_length' => 8192,
+        'log_line_break' => "\n",
+        'idxname_format' => '%s_idx',
+        'seqname_format' => '%s_seq',
+        'savepoint_format' => 'MDB2_SAVEPOINT_%s',
+        'statement_format' => 'MDB2_STATEMENT_%1$s_%2$s',
+        'seqcol_name' => 'sequence',
+        'quote_identifier' => false,
+        'use_transactions' => true,
+        'decimal_places' => 2,
+        'portability' => MDB2_PORTABILITY_ALL,
+        'modules' => array(
+            'ex' => 'Extended',
+            'dt' => 'Datatype',
+            'mg' => 'Manager',
+            'rv' => 'Reverse',
+            'na' => 'Native',
+            'fc' => 'Function',
+        ),
+        'emulate_prepared' => false,
+        'datatype_map' => array(),
+        'datatype_map_callback' => array(),
+        'nativetype_map_callback' => array(),
+        'lob_allow_url_include' => false,
+        'bindname_format' => '(?:\d+)|(?:[a-zA-Z][a-zA-Z0-9_]*)',
+        'max_identifiers_length' => 30,
+        'default_fk_action_onupdate' => 'RESTRICT',
+        'default_fk_action_ondelete' => 'RESTRICT',
+    );
+
+    /**
+     * string array
+     * @var     string
+     * @access  protected
+     */
+    var $string_quoting = array('start' => "'", 'end' => "'", 'escape' => false, 'escape_pattern' => false);
+
+    /**
+     * identifier quoting
+     * @var     array
+     * @access  protected
+     */
+    var $identifier_quoting = array('start' => '"', 'end' => '"', 'escape' => '"');
+
+    /**
+     * sql comments
+     * @var     array
+     * @access  protected
+     */
+    var $sql_comments = array(
+        array('start' => '--', 'end' => "\n", 'escape' => false),
+        array('start' => '/*', 'end' => '*/', 'escape' => false),
+    );
+
+    /**
+     * comparision wildcards
+     * @var     array
+     * @access  protected
+     */
+    var $wildcards = array('%', '_');
+
+    /**
+     * column alias keyword
+     * @var     string
+     * @access  protected
+     */
+    var $as_keyword = ' AS ';
+
+    /**
+     * warnings
+     * @var     array
+     * @access  protected
+     */
+    var $warnings = array();
+
+    /**
+     * string with the debugging information
+     * @var     string
+     * @access  public
+     */
+    var $debug_output = '';
+
+    /**
+     * determine if there is an open transaction
+     * @var     bool
+     * @access  protected
+     */
+    var $in_transaction = false;
+
+    /**
+     * the smart transaction nesting depth
+     * @var     int
+     * @access  protected
+     */
+    var $nested_transaction_counter = null;
+
+    /**
+     * the first error that occured inside a nested transaction
+     * @var     MDB2_Error|bool
+     * @access  protected
+     */
+    var $has_transaction_error = false;
+
+    /**
+     * result offset used in the next query
+     * @var     int
+     * @access  protected
+     */
+    var $offset = 0;
+
+    /**
+     * result limit used in the next query
+     * @var     int
+     * @access  protected
+     */
+    var $limit = 0;
+
+    /**
+     * Database backend used in PHP (mysql, odbc etc.)
+     * @var     string
+     * @access  public
+     */
+    var $phptype;
+
+    /**
+     * Database used with regards to SQL syntax etc.
+     * @var     string
+     * @access  public
+     */
+    var $dbsyntax;
+
+    /**
+     * the last query sent to the driver
+     * @var     string
+     * @access  public
+     */
+    var $last_query;
+
+    /**
+     * the default fetchmode used
+     * @var     int
+     * @access  protected
+     */
+    var $fetchmode = MDB2_FETCHMODE_ORDERED;
+
+    /**
+     * array of module instances
+     * @var     array
+     * @access  protected
+     */
+    var $modules = array();
+
+    /**
+     * determines of the PHP4 destructor emulation has been enabled yet
+     * @var     array
+     * @access  protected
+     */
+    var $destructor_registered = true;
+
+    // }}}
+    // {{{ constructor: function __construct()
+
+    /**
+     * Constructor
+     */
+    function __construct()
+    {
+        end($GLOBALS['_MDB2_databases']);
+        $db_index = key($GLOBALS['_MDB2_databases']) + 1;
+        $GLOBALS['_MDB2_databases'][$db_index] = &$this;
+        $this->db_index = $db_index;
+    }
+
+    // }}}
+    // {{{ destructor: function __destruct()
+
+    /**
+     *  Destructor
+     */
+    function __destruct()
+    {
+        $this->disconnect(false);
+    }
+
+    // }}}
+    // {{{ function free()
+
+    /**
+     * Free the internal references so that the instance can be destroyed
+     *
+     * @return  bool    true on success, false if result is invalid
+     *
+     * @access  public
+     */
+    function free()
+    {
+        unset($GLOBALS['_MDB2_databases'][$this->db_index]);
+        unset($this->db_index);
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ function __toString()
+
+    /**
+     * String conversation
+     *
+     * @return  string representation of the object
+     *
+     * @access  public
+     */
+    function __toString()
+    {
+        $info = get_class($this);
+        $info.= ': (phptype = '.$this->phptype.', dbsyntax = '.$this->dbsyntax.')';
+        if ($this->connection) {
+            $info.= ' [connected]';
+        }
+        return $info;
+    }
+
+    // }}}
+    // {{{ function errorInfo($error = null)
+
+    /**
+     * This method is used to collect information about an error
+     *
+     * @param   mixed   error code or resource
+     *
+     * @return  array   with MDB2 errorcode, native error code, native message
+     *
+     * @access  public
+     */
+    function errorInfo($error = null)
+    {
+        return array($error, null, null);
+    }
+
+    // }}}
+    // {{{ function &raiseError($code = null, $mode = null, $options = null, $userinfo = null)
+
+    /**
+     * This method is used to communicate an error and invoke error
+     * callbacks etc.  Basically a wrapper for PEAR::raiseError
+     * without the message string.
+     *
+     * @param mixed  $code     integer error code, or a PEAR error object (all 
+     *                         other parameters are ignored if this parameter is
+     *                         an object
+     * @param int    $mode     error mode, see PEAR_Error docs
+     * @param mixed  $options  If error mode is PEAR_ERROR_TRIGGER, this is the
+     *                         error level (E_USER_NOTICE etc). If error mode is
+     *                         PEAR_ERROR_CALLBACK, this is the callback function,
+     *                         either as a function name, or as an array of an
+     *                         object and method name. For other error modes this
+     *                         parameter is ignored.
+     * @param string $userinfo Extra debug information. Defaults to the last
+     *                         query and native error code.
+     * @param string $method   name of the method that triggered the error
+     * @param string $dummy1   not used
+     * @param bool   $dummy2   not used
+     *
+     * @return PEAR_Error instance of a PEAR Error object
+     * @access public
+     * @see    PEAR_Error
+     */
+    function &raiseError($code = null,
+                         $mode = null,
+                         $options = null,
+                         $userinfo = null,
+                         $method = null,
+                         $dummy1 = null,
+                         $dummy2 = false
+    ) {
+        $userinfo = "[Error message: $userinfo]\n";
+        // The error is yet a MDB2 error object
+        if (PEAR::isError($code)) {
+            // because we use the static PEAR::raiseError, our global
+            // handler should be used if it is set
+            if ((null === $mode) && !empty($this->_default_error_mode)) {
+                $mode    = $this->_default_error_mode;
+                $options = $this->_default_error_options;
+            }
+            if (null === $userinfo) {
+                $userinfo = $code->getUserinfo();
+            }
+            $code = $code->getCode();
+        } elseif ($code == MDB2_ERROR_NOT_FOUND) {
+            // extension not loaded: don't call $this->errorInfo() or the script
+            // will die
+        } elseif (isset($this->connection)) {
+            if (!empty($this->last_query)) {
+                $userinfo.= "[Last executed query: {$this->last_query}]\n";
+            }
+            $native_errno = $native_msg = null;
+            list($code, $native_errno, $native_msg) = $this->errorInfo($code);
+            if ((null !== $native_errno) && $native_errno !== '') {
+                $userinfo.= "[Native code: $native_errno]\n";
+            }
+            if ((null !== $native_msg) && $native_msg !== '') {
+                $userinfo.= "[Native message: ". strip_tags($native_msg) ."]\n";
+            }
+            if (null !== $method) {
+                $userinfo = $method.': '.$userinfo;
+            }
+        }
+
+        $err = PEAR::raiseError(null, $code, $mode, $options, $userinfo, 'MDB2_Error', true);
+        if ($err->getMode() !== PEAR_ERROR_RETURN
+            && isset($this->nested_transaction_counter) && !$this->has_transaction_error) {
+            $this->has_transaction_error = $err;
+        }
+        return $err;
+    }
+
+    // }}}
+    // {{{ function resetWarnings()
+
+    /**
+     * reset the warning array
+     *
+     * @return void
+     *
+     * @access  public
+     */
+    function resetWarnings()
+    {
+        $this->warnings = array();
+    }
+
+    // }}}
+    // {{{ function getWarnings()
+
+    /**
+     * Get all warnings in reverse order.
+     * This means that the last warning is the first element in the array
+     *
+     * @return  array   with warnings
+     *
+     * @access  public
+     * @see     resetWarnings()
+     */
+    function getWarnings()
+    {
+        return array_reverse($this->warnings);
+    }
+
+    // }}}
+    // {{{ function setFetchMode($fetchmode, $object_class = 'stdClass')
+
+    /**
+     * Sets which fetch mode should be used by default on queries
+     * on this connection
+     *
+     * @param   int     MDB2_FETCHMODE_ORDERED, MDB2_FETCHMODE_ASSOC
+     *                               or MDB2_FETCHMODE_OBJECT
+     * @param   string  the class name of the object to be returned
+     *                               by the fetch methods when the
+     *                               MDB2_FETCHMODE_OBJECT mode is selected.
+     *                               If no class is specified by default a cast
+     *                               to object from the assoc array row will be
+     *                               done.  There is also the possibility to use
+     *                               and extend the 'MDB2_row' class.
+     *
+     * @return  mixed   MDB2_OK or MDB2 Error Object
+     *
+     * @access  public
+     * @see     MDB2_FETCHMODE_ORDERED, MDB2_FETCHMODE_ASSOC, MDB2_FETCHMODE_OBJECT
+     */
+    function setFetchMode($fetchmode, $object_class = 'stdClass')
+    {
+        switch ($fetchmode) {
+        case MDB2_FETCHMODE_OBJECT:
+            $this->options['fetch_class'] = $object_class;
+        case MDB2_FETCHMODE_ORDERED:
+        case MDB2_FETCHMODE_ASSOC:
+            $this->fetchmode = $fetchmode;
+            break;
+        default:
+            return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                'invalid fetchmode mode', __FUNCTION__);
+        }
+
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ function setOption($option, $value)
+
+    /**
+     * set the option for the db class
+     *
+     * @param   string  option name
+     * @param   mixed   value for the option
+     *
+     * @return  mixed   MDB2_OK or MDB2 Error Object
+     *
+     * @access  public
+     */
+    function setOption($option, $value)
+    {
+        if (array_key_exists($option, $this->options)) {
+            $this->options[$option] = $value;
+            return MDB2_OK;
+        }
+        return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            "unknown option $option", __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ function getOption($option)
+
+    /**
+     * Returns the value of an option
+     *
+     * @param   string  option name
+     *
+     * @return  mixed   the option value or error object
+     *
+     * @access  public
+     */
+    function getOption($option)
+    {
+        if (array_key_exists($option, $this->options)) {
+            return $this->options[$option];
+        }
+        return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            "unknown option $option", __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ function debug($message, $scope = '', $is_manip = null)
+
+    /**
+     * set a debug message
+     *
+     * @param   string  message that should be appended to the debug variable
+     * @param   string  usually the method name that triggered the debug call:
+     *                  for example 'query', 'prepare', 'execute', 'parameters',
+     *                  'beginTransaction', 'commit', 'rollback'
+     * @param   array   contains context information about the debug() call
+     *                  common keys are: is_manip, time, result etc.
+     *
+     * @return void
+     *
+     * @access  public
+     */
+    function debug($message, $scope = '', $context = array())
+    {
+        if ($this->options['debug'] && $this->options['debug_handler']) {
+            if (!$this->options['debug_expanded_output']) {
+                if (!empty($context['when']) && $context['when'] !== 'pre') {
+                    return null;
+                }
+                $context = empty($context['is_manip']) ? false : $context['is_manip'];
+            }
+            return call_user_func_array($this->options['debug_handler'], array(&$this, $scope, $message, $context));
+        }
+        return null;
+    }
+
+    // }}}
+    // {{{ function getDebugOutput()
+
+    /**
+     * output debug info
+     *
+     * @return  string  content of the debug_output class variable
+     *
+     * @access  public
+     */
+    function getDebugOutput()
+    {
+        return $this->debug_output;
+    }
+
+    // }}}
+    // {{{ function escape($text)
+
+    /**
+     * Quotes a string so it can be safely used in a query. It will quote
+     * the text so it can safely be used within a query.
+     *
+     * @param   string  the input string to quote
+     * @param   bool    escape wildcards
+     *
+     * @return  string  quoted string
+     *
+     * @access  public
+     */
+    function escape($text, $escape_wildcards = false)
+    {
+        if ($escape_wildcards) {
+            $text = $this->escapePattern($text);
+        }
+
+        $text = str_replace($this->string_quoting['end'], $this->string_quoting['escape'] . $this->string_quoting['end'], $text);
+        return $text;
+    }
+
+    // }}}
+    // {{{ function escapePattern($text)
+
+    /**
+     * Quotes pattern (% and _) characters in a string)
+     *
+     * @param   string  the input string to quote
+     *
+     * @return  string  quoted string
+     *
+     * @access  public
+     */
+    function escapePattern($text)
+    {
+        if ($this->string_quoting['escape_pattern']) {
+            $text = str_replace($this->string_quoting['escape_pattern'], $this->string_quoting['escape_pattern'] . $this->string_quoting['escape_pattern'], $text);
+            foreach ($this->wildcards as $wildcard) {
+                $text = str_replace($wildcard, $this->string_quoting['escape_pattern'] . $wildcard, $text);
+            }
+        }
+        return $text;
+    }
+
+    // }}}
+    // {{{ function quoteIdentifier($str, $check_option = false)
+
+    /**
+     * Quote a string so it can be safely used as a table or column name
+     *
+     * Delimiting style depends on which database driver is being used.
+     *
+     * NOTE: just because you CAN use delimited identifiers doesn't mean
+     * you SHOULD use them.  In general, they end up causing way more
+     * problems than they solve.
+     *
+     * NOTE: if you have table names containing periods, don't use this method
+     * (@see bug #11906)
+     *
+     * Portability is broken by using the following characters inside
+     * delimited identifiers:
+     *   + backtick (<kbd>`</kbd>) -- due to MySQL
+     *   + double quote (<kbd>"</kbd>) -- due to Oracle
+     *   + brackets (<kbd>[</kbd> or <kbd>]</kbd>) -- due to Access
+     *
+     * Delimited identifiers are known to generally work correctly under
+     * the following drivers:
+     *   + mssql
+     *   + mysql
+     *   + mysqli
+     *   + oci8
+     *   + pgsql
+     *   + sqlite
+     *
+     * InterBase doesn't seem to be able to use delimited identifiers
+     * via PHP 4.  They work fine under PHP 5.
+     *
+     * @param   string  identifier name to be quoted
+     * @param   bool    check the 'quote_identifier' option
+     *
+     * @return  string  quoted identifier string
+     *
+     * @access  public
+     */
+    function quoteIdentifier($str, $check_option = false)
+    {
+        if ($check_option && !$this->options['quote_identifier']) {
+            return $str;
+        }
+        $str = str_replace($this->identifier_quoting['end'], $this->identifier_quoting['escape'] . $this->identifier_quoting['end'], $str);
+        $parts = explode('.', $str);
+        foreach (array_keys($parts) as $k) {
+            $parts[$k] = $this->identifier_quoting['start'] . $parts[$k] . $this->identifier_quoting['end'];
+        }
+        return implode('.', $parts);
+    }
+
+    // }}}
+    // {{{ function getAsKeyword()
+
+    /**
+     * Gets the string to alias column
+     *
+     * @return string to use when aliasing a column
+     */
+    function getAsKeyword()
+    {
+        return $this->as_keyword;
+    }
+
+    // }}}
+    // {{{ function getConnection()
+
+    /**
+     * Returns a native connection
+     *
+     * @return  mixed   a valid MDB2 connection object,
+     *                  or a MDB2 error object on error
+     *
+     * @access  public
+     */
+    function getConnection()
+    {
+        $result = $this->connect();
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        return $this->connection;
+    }
+
+     // }}}
+    // {{{ function _fixResultArrayValues(&$row, $mode)
+
+    /**
+     * Do all necessary conversions on result arrays to fix DBMS quirks
+     *
+     * @param   array   the array to be fixed (passed by reference)
+     * @param   array   bit-wise addition of the required portability modes
+     *
+     * @return  void
+     *
+     * @access  protected
+     */
+    function _fixResultArrayValues(&$row, $mode)
+    {
+        switch ($mode) {
+        case MDB2_PORTABILITY_EMPTY_TO_NULL:
+            foreach ($row as $key => $value) {
+                if ($value === '') {
+                    $row[$key] = null;
+                }
+            }
+            break;
+        case MDB2_PORTABILITY_RTRIM:
+            foreach ($row as $key => $value) {
+                if (is_string($value)) {
+                    $row[$key] = rtrim($value);
+                }
+            }
+            break;
+        case MDB2_PORTABILITY_FIX_ASSOC_FIELD_NAMES:
+            $tmp_row = array();
+            foreach ($row as $key => $value) {
+                $tmp_row[preg_replace('/^(?:.*\.)?([^.]+)$/', '\\1', $key)] = $value;
+            }
+            $row = $tmp_row;
+            break;
+        case (MDB2_PORTABILITY_RTRIM + MDB2_PORTABILITY_EMPTY_TO_NULL):
+            foreach ($row as $key => $value) {
+                if ($value === '') {
+                    $row[$key] = null;
+                } elseif (is_string($value)) {
+                    $row[$key] = rtrim($value);
+                }
+            }
+            break;
+        case (MDB2_PORTABILITY_RTRIM + MDB2_PORTABILITY_FIX_ASSOC_FIELD_NAMES):
+            $tmp_row = array();
+            foreach ($row as $key => $value) {
+                if (is_string($value)) {
+                    $value = rtrim($value);
+                }
+                $tmp_row[preg_replace('/^(?:.*\.)?([^.]+)$/', '\\1', $key)] = $value;
+            }
+            $row = $tmp_row;
+            break;
+        case (MDB2_PORTABILITY_EMPTY_TO_NULL + MDB2_PORTABILITY_FIX_ASSOC_FIELD_NAMES):
+            $tmp_row = array();
+            foreach ($row as $key => $value) {
+                if ($value === '') {
+                    $value = null;
+                }
+                $tmp_row[preg_replace('/^(?:.*\.)?([^.]+)$/', '\\1', $key)] = $value;
+            }
+            $row = $tmp_row;
+            break;
+        case (MDB2_PORTABILITY_RTRIM + MDB2_PORTABILITY_EMPTY_TO_NULL + MDB2_PORTABILITY_FIX_ASSOC_FIELD_NAMES):
+            $tmp_row = array();
+            foreach ($row as $key => $value) {
+                if ($value === '') {
+                    $value = null;
+                } elseif (is_string($value)) {
+                    $value = rtrim($value);
+                }
+                $tmp_row[preg_replace('/^(?:.*\.)?([^.]+)$/', '\\1', $key)] = $value;
+            }
+            $row = $tmp_row;
+            break;
+        }
+    }
+
+    // }}}
+    // {{{ function loadModule($module, $property = null, $phptype_specific = null)
+
+    /**
+     * loads a module
+     *
+     * @param   string  name of the module that should be loaded
+     *                  (only used for error messages)
+     * @param   string  name of the property into which the class will be loaded
+     * @param   bool    if the class to load for the module is specific to the
+     *                  phptype
+     *
+     * @return  object  on success a reference to the given module is returned
+     *                  and on failure a PEAR error
+     *
+     * @access  public
+     */
+    function loadModule($module, $property = null, $phptype_specific = null)
+    {
+        if (!$property) {
+            $property = strtolower($module);
+        }
+
+        if (!isset($this->{$property})) {
+            $version = $phptype_specific;
+            if ($phptype_specific !== false) {
+                $version = true;
+                $class_name = 'MDB2_Driver_'.$module.'_'.$this->phptype;
+                $file_name = str_replace('_', DIRECTORY_SEPARATOR, $class_name).'.php';
+            }
+            if ($phptype_specific === false
+                || (!MDB2::classExists($class_name) && !MDB2::fileExists($file_name))
+            ) {
+                $version = false;
+                $class_name = 'MDB2_'.$module;
+                $file_name = str_replace('_', DIRECTORY_SEPARATOR, $class_name).'.php';
+            }
+
+            $err = MDB2::loadClass($class_name, $this->getOption('debug'));
+            if (PEAR::isError($err)) {
+                return $err;
+            }
+
+            // load module in a specific version
+            if ($version) {
+                if (method_exists($class_name, 'getClassName')) {
+                    $class_name_new = call_user_func(array($class_name, 'getClassName'), $this->db_index);
+                    if ($class_name != $class_name_new) {
+                        $class_name = $class_name_new;
+                        $err = MDB2::loadClass($class_name, $this->getOption('debug'));
+                        if (PEAR::isError($err)) {
+                            return $err;
+                        }
+                    }
+                }
+            }
+
+            if (!MDB2::classExists($class_name)) {
+                $err = $this->raiseError(MDB2_ERROR_LOADMODULE, null, null,
+                    "unable to load module '$module' into property '$property'", __FUNCTION__);
+                return $err;
+            }
+            $this->{$property} = new $class_name($this->db_index);
+            $this->modules[$module] = $this->{$property};
+            if ($version) {
+                // this will be used in the connect method to determine if the module
+                // needs to be loaded with a different version if the server
+                // version changed in between connects
+                $this->loaded_version_modules[] = $property;
+            }
+        }
+
+        return $this->{$property};
+    }
+
+    // }}}
+    // {{{ function __call($method, $params)
+
+    /**
+     * Calls a module method using the __call magic method
+     *
+     * @param   string  Method name.
+     * @param   array   Arguments.
+     *
+     * @return  mixed   Returned value.
+     */
+    function __call($method, $params)
+    {
+        $module = null;
+        if (preg_match('/^([a-z]+)([A-Z])(.*)$/', $method, $match)
+            && isset($this->options['modules'][$match[1]])
+        ) {
+            $module = $this->options['modules'][$match[1]];
+            $method = strtolower($match[2]).$match[3];
+            if (!isset($this->modules[$module]) || !is_object($this->modules[$module])) {
+                $result = $this->loadModule($module);
+                if (PEAR::isError($result)) {
+                    return $result;
+                }
+            }
+        } else {
+            foreach ($this->modules as $key => $foo) {
+                if (is_object($this->modules[$key])
+                    && method_exists($this->modules[$key], $method)
+                ) {
+                    $module = $key;
+                    break;
+                }
+            }
+        }
+        if (null !== $module) {
+            return call_user_func_array(array(&$this->modules[$module], $method), $params);
+        }
+        trigger_error(sprintf('Call to undefined function: %s::%s().', get_class($this), $method), E_USER_ERROR);
+    }
+
+    // }}}
+    // {{{ function beginTransaction($savepoint = null)
+
+    /**
+     * Start a transaction or set a savepoint.
+     *
+     * @param   string  name of a savepoint to set
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  public
+     */
+    function beginTransaction($savepoint = null)
+    {
+        $this->debug('Starting transaction', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint));
+        return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'transactions are not supported', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ function commit($savepoint = null)
+
+    /**
+     * Commit the database changes done during a transaction that is in
+     * progress or release a savepoint. This function may only be called when
+     * auto-committing is disabled, otherwise it will fail. Therefore, a new
+     * transaction is implicitly started after committing the pending changes.
+     *
+     * @param   string  name of a savepoint to release
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  public
+     */
+    function commit($savepoint = null)
+    {
+        $this->debug('Committing transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint));
+        return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'commiting transactions is not supported', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ function rollback($savepoint = null)
+
+    /**
+     * Cancel any database changes done during a transaction or since a specific
+     * savepoint that is in progress. This function may only be called when
+     * auto-committing is disabled, otherwise it will fail. Therefore, a new
+     * transaction is implicitly started after canceling the pending changes.
+     *
+     * @param   string  name of a savepoint to rollback to
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  public
+     */
+    function rollback($savepoint = null)
+    {
+        $this->debug('Rolling back transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint));
+        return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'rolling back transactions is not supported', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ function inTransaction($ignore_nested = false)
+
+    /**
+     * If a transaction is currently open.
+     *
+     * @param   bool    if the nested transaction count should be ignored
+     * @return  int|bool    - an integer with the nesting depth is returned if a
+     *                      nested transaction is open
+     *                      - true is returned for a normal open transaction
+     *                      - false is returned if no transaction is open
+     *
+     * @access  public
+     */
+    function inTransaction($ignore_nested = false)
+    {
+        if (!$ignore_nested && isset($this->nested_transaction_counter)) {
+            return $this->nested_transaction_counter;
+        }
+        return $this->in_transaction;
+    }
+
+    // }}}
+    // {{{ function setTransactionIsolation($isolation)
+
+    /**
+     * Set the transacton isolation level.
+     *
+     * @param   string  standard isolation level
+     *                  READ UNCOMMITTED (allows dirty reads)
+     *                  READ COMMITTED (prevents dirty reads)
+     *                  REPEATABLE READ (prevents nonrepeatable reads)
+     *                  SERIALIZABLE (prevents phantom reads)
+     * @param   array some transaction options:
+     *                  'wait' => 'WAIT' | 'NO WAIT'
+     *                  'rw'   => 'READ WRITE' | 'READ ONLY'
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  public
+     * @since   2.1.1
+     */
+    function setTransactionIsolation($isolation, $options = array())
+    {
+        $this->debug('Setting transaction isolation level', __FUNCTION__, array('is_manip' => true));
+        return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'isolation level setting is not supported', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ function beginNestedTransaction($savepoint = false)
+
+    /**
+     * Start a nested transaction.
+     *
+     * @return  mixed   MDB2_OK on success/savepoint name, a MDB2 error on failure
+     *
+     * @access  public
+     * @since   2.1.1
+     */
+    function beginNestedTransaction()
+    {
+        if ($this->in_transaction) {
+            ++$this->nested_transaction_counter;
+            $savepoint = sprintf($this->options['savepoint_format'], $this->nested_transaction_counter);
+            if ($this->supports('savepoints') && $savepoint) {
+                return $this->beginTransaction($savepoint);
+            }
+            return MDB2_OK;
+        }
+        $this->has_transaction_error = false;
+        $result = $this->beginTransaction();
+        $this->nested_transaction_counter = 1;
+        return $result;
+    }
+
+    // }}}
+    // {{{ function completeNestedTransaction($force_rollback = false, $release = false)
+
+    /**
+     * Finish a nested transaction by rolling back if an error occured or
+     * committing otherwise.
+     *
+     * @param   bool    if the transaction should be rolled back regardless
+     *                  even if no error was set within the nested transaction
+     * @return  mixed   MDB_OK on commit/counter decrementing, false on rollback
+     *                  and a MDB2 error on failure
+     *
+     * @access  public
+     * @since   2.1.1
+     */
+    function completeNestedTransaction($force_rollback = false)
+    {
+        if ($this->nested_transaction_counter > 1) {
+            $savepoint = sprintf($this->options['savepoint_format'], $this->nested_transaction_counter);
+            if ($this->supports('savepoints') && $savepoint) {
+                if ($force_rollback || $this->has_transaction_error) {
+                    $result = $this->rollback($savepoint);
+                    if (!PEAR::isError($result)) {
+                        $result = false;
+                        $this->has_transaction_error = false;
+                    }
+                } else {
+                    $result = $this->commit($savepoint);
+                }
+            } else {
+                $result = MDB2_OK;
+            }
+            --$this->nested_transaction_counter;
+            return $result;
+        }
+
+        $this->nested_transaction_counter = null;
+        $result = MDB2_OK;
+
+        // transaction has not yet been rolled back
+        if ($this->in_transaction) {
+            if ($force_rollback || $this->has_transaction_error) {
+                $result = $this->rollback();
+                if (!PEAR::isError($result)) {
+                    $result = false;
+                }
+            } else {
+                $result = $this->commit();
+            }
+        }
+        $this->has_transaction_error = false;
+        return $result;
+    }
+
+    // }}}
+    // {{{ function failNestedTransaction($error = null, $immediately = false)
+
+    /**
+     * Force setting nested transaction to failed.
+     *
+     * @param   mixed   value to return in getNestededTransactionError()
+     * @param   bool    if the transaction should be rolled back immediately
+     * @return  bool    MDB2_OK
+     *
+     * @access  public
+     * @since   2.1.1
+     */
+    function failNestedTransaction($error = null, $immediately = false)
+    {
+        if (null !== $error) {
+            $error = $this->has_transaction_error ? $this->has_transaction_error : true;
+        } elseif (!$error) {
+            $error = true;
+        }
+        $this->has_transaction_error = $error;
+        if (!$immediately) {
+            return MDB2_OK;
+        }
+        return $this->rollback();
+    }
+
+    // }}}
+    // {{{ function getNestedTransactionError()
+
+    /**
+     * The first error that occured since the transaction start.
+     *
+     * @return  MDB2_Error|bool     MDB2 error object if an error occured or false.
+     *
+     * @access  public
+     * @since   2.1.1
+     */
+    function getNestedTransactionError()
+    {
+        return $this->has_transaction_error;
+    }
+
+    // }}}
+    // {{{ connect()
+
+    /**
+     * Connect to the database
+     *
+     * @return true on success, MDB2 Error Object on failure
+     */
+    function connect()
+    {
+        return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ databaseExists()
+
+    /**
+     * check if given database name is exists?
+     *
+     * @param string $name    name of the database that should be checked
+     *
+     * @return mixed true/false on success, a MDB2 error on failure
+     * @access public
+     */
+    function databaseExists($name)
+    {
+        return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ setCharset($charset, $connection = null)
+
+    /**
+     * Set the charset on the current connection
+     *
+     * @param string    charset
+     * @param resource  connection handle
+     *
+     * @return true on success, MDB2 Error Object on failure
+     */
+    function setCharset($charset, $connection = null)
+    {
+        return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ function disconnect($force = true)
+
+    /**
+     * Log out and disconnect from the database.
+     *
+     * @param boolean $force whether the disconnect should be forced even if the
+     *                       connection is opened persistently
+     *
+     * @return mixed true on success, false if not connected and error object on error
+     *
+     * @access  public
+     */
+    function disconnect($force = true)
+    {
+        $this->connection = 0;
+        $this->connected_dsn = array();
+        $this->connected_database_name = '';
+        $this->opened_persistent = null;
+        $this->connected_server_info = '';
+        $this->in_transaction = null;
+        $this->nested_transaction_counter = null;
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ function setDatabase($name)
+
+    /**
+     * Select a different database
+     *
+     * @param   string  name of the database that should be selected
+     *
+     * @return  string  name of the database previously connected to
+     *
+     * @access  public
+     */
+    function setDatabase($name)
+    {
+        $previous_database_name = (isset($this->database_name)) ? $this->database_name : '';
+        $this->database_name = $name;
+        if (!empty($this->connected_database_name) && ($this->connected_database_name != $this->database_name)) {
+            $this->disconnect(false);
+        }
+        return $previous_database_name;
+    }
+
+    // }}}
+    // {{{ function getDatabase()
+
+    /**
+     * Get the current database
+     *
+     * @return  string  name of the database
+     *
+     * @access  public
+     */
+    function getDatabase()
+    {
+        return $this->database_name;
+    }
+
+    // }}}
+    // {{{ function setDSN($dsn)
+
+    /**
+     * set the DSN
+     *
+     * @param   mixed   DSN string or array
+     *
+     * @return  MDB2_OK
+     *
+     * @access  public
+     */
+    function setDSN($dsn)
+    {
+        $dsn_default = $GLOBALS['_MDB2_dsninfo_default'];
+        $dsn = MDB2::parseDSN($dsn);
+        if (array_key_exists('database', $dsn)) {
+            $this->database_name = $dsn['database'];
+            unset($dsn['database']);
+        }
+        $this->dsn = array_merge($dsn_default, $dsn);
+        return $this->disconnect(false);
+    }
+
+    // }}}
+    // {{{ function getDSN($type = 'string', $hidepw = false)
+
+    /**
+     * return the DSN as a string
+     *
+     * @param   string  format to return ("array", "string")
+     * @param   string  string to hide the password with
+     *
+     * @return  mixed   DSN in the chosen type
+     *
+     * @access  public
+     */
+    function getDSN($type = 'string', $hidepw = false)
+    {
+        $dsn = array_merge($GLOBALS['_MDB2_dsninfo_default'], $this->dsn);
+        $dsn['phptype'] = $this->phptype;
+        $dsn['database'] = $this->database_name;
+        if ($hidepw) {
+            $dsn['password'] = $hidepw;
+        }
+        switch ($type) {
+        // expand to include all possible options
+        case 'string':
+           $dsn = $dsn['phptype'].
+               ($dsn['dbsyntax'] ? ('('.$dsn['dbsyntax'].')') : '').
+               '://'.$dsn['username'].':'.
+                $dsn['password'].'@'.$dsn['hostspec'].
+                ($dsn['port'] ? (':'.$dsn['port']) : '').
+                '/'.$dsn['database'];
+            break;
+        case 'array':
+        default:
+            break;
+        }
+        return $dsn;
+    }
+
+    // }}}
+    // {{{ _isNewLinkSet()
+
+    /**
+     * Check if the 'new_link' option is set
+     *
+     * @return boolean
+     *
+     * @access protected
+     */
+    function _isNewLinkSet()
+    {
+        return (isset($this->dsn['new_link'])
+            && ($this->dsn['new_link'] === true
+             || (is_string($this->dsn['new_link']) && preg_match('/^true$/i', $this->dsn['new_link']))
+             || (is_numeric($this->dsn['new_link']) && 0 != (int)$this->dsn['new_link'])
+            )
+        );
+    }
+
+    // }}}
+    // {{{ function &standaloneQuery($query, $types = null, $is_manip = false)
+
+   /**
+     * execute a query as database administrator
+     *
+     * @param   string  the SQL query
+     * @param   mixed   array that contains the types of the columns in
+     *                        the result set
+     * @param   bool    if the query is a manipulation query
+     *
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  public
+     */
+    function standaloneQuery($query, $types = null, $is_manip = false)
+    {
+        $offset = $this->offset;
+        $limit = $this->limit;
+        $this->offset = $this->limit = 0;
+        $query = $this->_modifyQuery($query, $is_manip, $limit, $offset);
+
+        $connection = $this->getConnection();
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+
+        $result = $this->_doQuery($query, $is_manip, $connection, false);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+
+        if ($is_manip) {
+            $affected_rows =  $this->_affectedRows($connection, $result);
+            return $affected_rows;
+        }
+        $result = $this->_wrapResult($result, $types, true, false, $limit, $offset);
+        return $result;
+    }
+
+    // }}}
+    // {{{ function _modifyQuery($query, $is_manip, $limit, $offset)
+
+    /**
+     * Changes a query string for various DBMS specific reasons
+     *
+     * @param   string  query to modify
+     * @param   bool    if it is a DML query
+     * @param   int  limit the number of rows
+     * @param   int  start reading from given offset
+     *
+     * @return  string  modified query
+     *
+     * @access  protected
+     */
+    function _modifyQuery($query, $is_manip, $limit, $offset)
+    {
+        return $query;
+    }
+
+    // }}}
+    // {{{ function &_doQuery($query, $is_manip = false, $connection = null, $database_name = null)
+
+    /**
+     * Execute a query
+     * @param   string  query
+     * @param   bool    if the query is a manipulation query
+     * @param   resource connection handle
+     * @param   string  database name
+     *
+     * @return  result or error object
+     *
+     * @access  protected
+     */
+    function _doQuery($query, $is_manip = false, $connection = null, $database_name = null)
+    {
+        $this->last_query = $query;
+        $result = $this->debug($query, 'query', array('is_manip' => $is_manip, 'when' => 'pre'));
+        if ($result) {
+            if (PEAR::isError($result)) {
+                return $result;
+            }
+            $query = $result;
+        }
+        $err = $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+        return $err;
+    }
+
+    // }}}
+    // {{{ function _affectedRows($connection, $result = null)
+
+    /**
+     * Returns the number of rows affected
+     *
+     * @param   resource result handle
+     * @param   resource connection handle
+     *
+     * @return  mixed   MDB2 Error Object or the number of rows affected
+     *
+     * @access  private
+     */
+    function _affectedRows($connection, $result = null)
+    {
+        return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ function &exec($query)
+
+    /**
+     * Execute a manipulation query to the database and return the number of affected rows
+     *
+     * @param   string  the SQL query
+     *
+     * @return  mixed   number of affected rows on success, a MDB2 error on failure
+     *
+     * @access  public
+     */
+    function exec($query)
+    {
+        $offset = $this->offset;
+        $limit = $this->limit;
+        $this->offset = $this->limit = 0;
+        $query = $this->_modifyQuery($query, true, $limit, $offset);
+
+        $connection = $this->getConnection();
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+
+        $result = $this->_doQuery($query, true, $connection, $this->database_name);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+
+        $affectedRows = $this->_affectedRows($connection, $result);
+        return $affectedRows;
+    }
+
+    // }}}
+    // {{{ function &query($query, $types = null, $result_class = true, $result_wrap_class = false)
+
+    /**
+     * Send a query to the database and return any results
+     *
+     * @param   string  the SQL query
+     * @param   mixed   array that contains the types of the columns in
+     *                        the result set
+     * @param   mixed   string which specifies which result class to use
+     * @param   mixed   string which specifies which class to wrap results in
+     *
+     * @return mixed   an MDB2_Result handle on success, a MDB2 error on failure
+     *
+     * @access  public
+     */
+    function query($query, $types = null, $result_class = true, $result_wrap_class = false)
+    {
+        $offset = $this->offset;
+        $limit = $this->limit;
+        $this->offset = $this->limit = 0;
+        $query = $this->_modifyQuery($query, false, $limit, $offset);
+
+        $connection = $this->getConnection();
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+
+        $result = $this->_doQuery($query, false, $connection, $this->database_name);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+
+        $result = $this->_wrapResult($result, $types, $result_class, $result_wrap_class, $limit, $offset);
+        return $result;
+    }
+
+    // }}}
+    // {{{ function _wrapResult($result_resource, $types = array(), $result_class = true, $result_wrap_class = false, $limit = null, $offset = null)
+
+    /**
+     * wrap a result set into the correct class
+     *
+     * @param   resource result handle
+     * @param   mixed   array that contains the types of the columns in
+     *                        the result set
+     * @param   mixed   string which specifies which result class to use
+     * @param   mixed   string which specifies which class to wrap results in
+     * @param   string  number of rows to select
+     * @param   string  first row to select
+     *
+     * @return mixed   an MDB2_Result, a MDB2 error on failure
+     *
+     * @access  protected
+     */
+    function _wrapResult($result_resource, $types = array(), $result_class = true,
+        $result_wrap_class = false, $limit = null, $offset = null)
+    {
+        if ($types === true) {
+            if ($this->supports('result_introspection')) {
+                $this->loadModule('Reverse', null, true);
+                $tableInfo = $this->reverse->tableInfo($result_resource);
+                if (PEAR::isError($tableInfo)) {
+                    return $tableInfo;
+                }
+                $types = array();
+                foreach ($tableInfo as $field) {
+                    $types[] = $field['mdb2type'];
+                }
+            } else {
+                $types = null;
+            }
+        }
+
+        if ($result_class === true) {
+            $result_class = $this->options['result_buffering']
+                ? $this->options['buffered_result_class'] : $this->options['result_class'];
+        }
+
+        if ($result_class) {
+            $class_name = sprintf($result_class, $this->phptype);
+            if (!MDB2::classExists($class_name)) {
+                $err = $this->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                    'result class does not exist '.$class_name, __FUNCTION__);
+                return $err;
+            }
+            $result = new $class_name($this, $result_resource, $limit, $offset);
+            if (!MDB2::isResultCommon($result)) {
+                $err = $this->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                    'result class is not extended from MDB2_Result_Common', __FUNCTION__);
+                return $err;
+            }
+            if (!empty($types)) {
+                $err = $result->setResultTypes($types);
+                if (PEAR::isError($err)) {
+                    $result->free();
+                    return $err;
+                }
+            }
+        }
+        if ($result_wrap_class === true) {
+            $result_wrap_class = $this->options['result_wrap_class'];
+        }
+        if ($result_wrap_class) {
+            if (!MDB2::classExists($result_wrap_class)) {
+                $err = $this->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                    'result wrap class does not exist '.$result_wrap_class, __FUNCTION__);
+                return $err;
+            }
+            $result = new $result_wrap_class($result_resource, $this->fetchmode);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ function getServerVersion($native = false)
+
+    /**
+     * return version information about the server
+     *
+     * @param   bool    determines if the raw version string should be returned
+     *
+     * @return  mixed   array with version information or row string
+     *
+     * @access  public
+     */
+    function getServerVersion($native = false)
+    {
+        return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ function setLimit($limit, $offset = null)
+
+    /**
+     * set the range of the next query
+     *
+     * @param   string  number of rows to select
+     * @param   string  first row to select
+     *
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  public
+     */
+    function setLimit($limit, $offset = null)
+    {
+        if (!$this->supports('limit_queries')) {
+            return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                'limit is not supported by this driver', __FUNCTION__);
+        }
+        $limit = (int)$limit;
+        if ($limit < 0) {
+            return $this->raiseError(MDB2_ERROR_SYNTAX, null, null,
+                'it was not specified a valid selected range row limit', __FUNCTION__);
+        }
+        $this->limit = $limit;
+        if (null !== $offset) {
+            $offset = (int)$offset;
+            if ($offset < 0) {
+                return $this->raiseError(MDB2_ERROR_SYNTAX, null, null,
+                    'it was not specified a valid first selected range row', __FUNCTION__);
+            }
+            $this->offset = $offset;
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ function subSelect($query, $type = false)
+
+    /**
+     * simple subselect emulation: leaves the query untouched for all RDBMS
+     * that support subselects
+     *
+     * @param   string  the SQL query for the subselect that may only
+     *                      return a column
+     * @param   string  determines type of the field
+     *
+     * @return  string  the query
+     *
+     * @access  public
+     */
+    function subSelect($query, $type = false)
+    {
+        if ($this->supports('sub_selects') === true) {
+            return $query;
+        }
+
+        if (!$this->supports('sub_selects')) {
+            return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                'method not implemented', __FUNCTION__);
+        }
+
+        $col = $this->queryCol($query, $type);
+        if (PEAR::isError($col)) {
+            return $col;
+        }
+        if (!is_array($col) || count($col) == 0) {
+            return 'NULL';
+        }
+        if ($type) {
+            $this->loadModule('Datatype', null, true);
+            return $this->datatype->implodeArray($col, $type);
+        }
+        return implode(', ', $col);
+    }
+
+    // }}}
+    // {{{ function replace($table, $fields)
+
+    /**
+     * Execute a SQL REPLACE query. A REPLACE query is identical to a INSERT
+     * query, except that if there is already a row in the table with the same
+     * key field values, the old row is deleted before the new row is inserted.
+     *
+     * The REPLACE type of query does not make part of the SQL standards. Since
+     * practically only MySQL and SQLite implement it natively, this type of
+     * query isemulated through this method for other DBMS using standard types
+     * of queries inside a transaction to assure the atomicity of the operation.
+     *
+     * @param   string  name of the table on which the REPLACE query will
+     *       be executed.
+     * @param   array   associative array   that describes the fields and the
+     *       values that will be inserted or updated in the specified table. The
+     *       indexes of the array are the names of all the fields of the table.
+     *       The values of the array are also associative arrays that describe
+     *       the values and other properties of the table fields.
+     *
+     *       Here follows a list of field properties that need to be specified:
+     *
+     *       value
+     *           Value to be assigned to the specified field. This value may be
+     *           of specified in database independent type format as this
+     *           function can perform the necessary datatype conversions.
+     *
+     *           Default: this property is required unless the Null property is
+     *           set to 1.
+     *
+     *       type
+     *           Name of the type of the field. Currently, all types MDB2
+     *           are supported except for clob and blob.
+     *
+     *           Default: no type conversion
+     *
+     *       null
+     *           bool    property that indicates that the value for this field
+     *           should be set to null.
+     *
+     *           The default value for fields missing in INSERT queries may be
+     *           specified the definition of a table. Often, the default value
+     *           is already null, but since the REPLACE may be emulated using
+     *           an UPDATE query, make sure that all fields of the table are
+     *           listed in this function argument array.
+     *
+     *           Default: 0
+     *
+     *       key
+     *           bool    property that indicates that this field should be
+     *           handled as a primary key or at least as part of the compound
+     *           unique index of the table that will determine the row that will
+     *           updated if it exists or inserted a new row otherwise.
+     *
+     *           This function will fail if no key field is specified or if the
+     *           value of a key field is set to null because fields that are
+     *           part of unique index they may not be null.
+     *
+     *           Default: 0
+     *
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  public
+     */
+    function replace($table, $fields)
+    {
+        if (!$this->supports('replace')) {
+            return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                'replace query is not supported', __FUNCTION__);
+        }
+        $count = count($fields);
+        $condition = $values = array();
+        for ($colnum = 0, reset($fields); $colnum < $count; next($fields), $colnum++) {
+            $name = key($fields);
+            if (isset($fields[$name]['null']) && $fields[$name]['null']) {
+                $value = 'NULL';
+            } else {
+                $type = isset($fields[$name]['type']) ? $fields[$name]['type'] : null;
+                $value = $this->quote($fields[$name]['value'], $type);
+            }
+            $values[$name] = $value;
+            if (isset($fields[$name]['key']) && $fields[$name]['key']) {
+                if ($value === 'NULL') {
+                    return $this->raiseError(MDB2_ERROR_CANNOT_REPLACE, null, null,
+                        'key value '.$name.' may not be NULL', __FUNCTION__);
+                }
+                $condition[] = $this->quoteIdentifier($name, true) . '=' . $value;
+            }
+        }
+        if (empty($condition)) {
+            return $this->raiseError(MDB2_ERROR_CANNOT_REPLACE, null, null,
+                'not specified which fields are keys', __FUNCTION__);
+        }
+
+        $result = null;
+        $in_transaction = $this->in_transaction;
+        if (!$in_transaction && PEAR::isError($result = $this->beginTransaction())) {
+            return $result;
+        }
+
+        $connection = $this->getConnection();
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+
+        $condition = ' WHERE '.implode(' AND ', $condition);
+        $query = 'DELETE FROM ' . $this->quoteIdentifier($table, true) . $condition;
+        $result = $this->_doQuery($query, true, $connection);
+        if (!PEAR::isError($result)) {
+            $affected_rows = $this->_affectedRows($connection, $result);
+            $insert = '';
+            foreach ($values as $key => $value) {
+                $insert .= ($insert?', ':'') . $this->quoteIdentifier($key, true);
+            }
+            $values = implode(', ', $values);
+            $query = 'INSERT INTO '. $this->quoteIdentifier($table, true) . "($insert) VALUES ($values)";
+            $result = $this->_doQuery($query, true, $connection);
+            if (!PEAR::isError($result)) {
+                $affected_rows += $this->_affectedRows($connection, $result);;
+            }
+        }
+
+        if (!$in_transaction) {
+            if (PEAR::isError($result)) {
+                $this->rollback();
+            } else {
+                $result = $this->commit();
+            }
+        }
+
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+
+        return $affected_rows;
+    }
+
+    // }}}
+    // {{{ function &prepare($query, $types = null, $result_types = null, $lobs = array())
+
+    /**
+     * Prepares a query for multiple execution with execute().
+     * With some database backends, this is emulated.
+     * prepare() requires a generic query as string like
+     * 'INSERT INTO numbers VALUES(?,?)' or
+     * 'INSERT INTO numbers VALUES(:foo,:bar)'.
+     * The ? and :name and are placeholders which can be set using
+     * bindParam() and the query can be sent off using the execute() method.
+     * The allowed format for :name can be set with the 'bindname_format' option.
+     *
+     * @param   string  the query to prepare
+     * @param   mixed   array that contains the types of the placeholders
+     * @param   mixed   array that contains the types of the columns in
+     *                        the result set or MDB2_PREPARE_RESULT, if set to
+     *                        MDB2_PREPARE_MANIP the query is handled as a manipulation query
+     * @param   mixed   key (field) value (parameter) pair for all lob placeholders
+     *
+     * @return  mixed   resource handle for the prepared query on success, 
+     *                  a MDB2 error on failure
+     *
+     * @access  public
+     * @see     bindParam, execute
+     */
+    function prepare($query, $types = null, $result_types = null, $lobs = array())
+    {
+        $is_manip = ($result_types === MDB2_PREPARE_MANIP);
+        $offset = $this->offset;
+        $limit = $this->limit;
+        $this->offset = $this->limit = 0;
+        $result = $this->debug($query, __FUNCTION__, array('is_manip' => $is_manip, 'when' => 'pre'));
+        if ($result) {
+            if (PEAR::isError($result)) {
+                return $result;
+            }
+            $query = $result;
+        }
+        $placeholder_type_guess = $placeholder_type = null;
+        $question  = '?';
+        $colon     = ':';
+        $positions = array();
+        $position  = 0;
+        while ($position < strlen($query)) {
+            $q_position = strpos($query, $question, $position);
+            $c_position = strpos($query, $colon, $position);
+            if ($q_position && $c_position) {
+                $p_position = min($q_position, $c_position);
+            } elseif ($q_position) {
+                $p_position = $q_position;
+            } elseif ($c_position) {
+                $p_position = $c_position;
+            } else {
+                break;
+            }
+            if (null === $placeholder_type) {
+                $placeholder_type_guess = $query[$p_position];
+            }
+
+            $new_pos = $this->_skipDelimitedStrings($query, $position, $p_position);
+            if (PEAR::isError($new_pos)) {
+                return $new_pos;
+            }
+            if ($new_pos != $position) {
+                $position = $new_pos;
+                continue; //evaluate again starting from the new position
+            }
+
+            if ($query[$position] == $placeholder_type_guess) {
+                if (null === $placeholder_type) {
+                    $placeholder_type = $query[$p_position];
+                    $question = $colon = $placeholder_type;
+                    if (!empty($types) && is_array($types)) {
+                        if ($placeholder_type == ':') {
+                            if (is_int(key($types))) {
+                                $types_tmp = $types;
+                                $types = array();
+                                $count = -1;
+                            }
+                        } else {
+                            $types = array_values($types);
+                        }
+                    }
+                }
+                if ($placeholder_type == ':') {
+                    $regexp = '/^.{'.($position+1).'}('.$this->options['bindname_format'].').*$/s';
+                    $parameter = preg_replace($regexp, '\\1', $query);
+                    if ($parameter === '') {
+                        $err = $this->raiseError(MDB2_ERROR_SYNTAX, null, null,
+                            'named parameter name must match "bindname_format" option', __FUNCTION__);
+                        return $err;
+                    }
+                    $positions[$p_position] = $parameter;
+                    $query = substr_replace($query, '?', $position, strlen($parameter)+1);
+                    // use parameter name in type array
+                    if (isset($count) && isset($types_tmp[++$count])) {
+                        $types[$parameter] = $types_tmp[$count];
+                    }
+                } else {
+                    $positions[$p_position] = count($positions);
+                }
+                $position = $p_position + 1;
+            } else {
+                $position = $p_position;
+            }
+        }
+        $class_name = 'MDB2_Statement_'.$this->phptype;
+        $statement = null;
+        $obj = new $class_name($this, $statement, $positions, $query, $types, $result_types, $is_manip, $limit, $offset);
+        $this->debug($query, __FUNCTION__, array('is_manip' => $is_manip, 'when' => 'post', 'result' => $obj));
+        return $obj;
+    }
+
+    // }}}
+    // {{{ function _skipDelimitedStrings($query, $position, $p_position)
+    
+    /**
+     * Utility method, used by prepare() to avoid replacing placeholders within delimited strings.
+     * Check if the placeholder is contained within a delimited string.
+     * If so, skip it and advance the position, otherwise return the current position,
+     * which is valid
+     *
+     * @param string $query
+     * @param integer $position current string cursor position
+     * @param integer $p_position placeholder position
+     *
+     * @return mixed integer $new_position on success
+     *               MDB2_Error on failure
+     *
+     * @access  protected
+     */
+    function _skipDelimitedStrings($query, $position, $p_position)
+    {
+        $ignores = array();
+        $ignores[] = $this->string_quoting;
+        $ignores[] = $this->identifier_quoting;
+        $ignores = array_merge($ignores, $this->sql_comments);
+        
+        foreach ($ignores as $ignore) {
+            if (!empty($ignore['start'])) {
+                if (is_int($start_quote = strpos($query, $ignore['start'], $position)) && $start_quote < $p_position) {
+                    $end_quote = $start_quote;
+                    do {
+                        if (!is_int($end_quote = strpos($query, $ignore['end'], $end_quote + 1))) {
+                            if ($ignore['end'] === "\n") {
+                                $end_quote = strlen($query) - 1;
+                            } else {
+                                $err = $this->raiseError(MDB2_ERROR_SYNTAX, null, null,
+                                    'query with an unterminated text string specified', __FUNCTION__);
+                                return $err;
+                            }
+                        }
+                    } while ($ignore['escape']
+                        && $end_quote-1 != $start_quote
+                        && $query[($end_quote - 1)] == $ignore['escape']
+                        && (   $ignore['escape_pattern'] !== $ignore['escape']
+                            || $query[($end_quote - 2)] != $ignore['escape'])
+                    );
+
+                    $position = $end_quote + 1;
+                    return $position;
+                }
+            }
+        }
+        return $position;
+    }
+    
+    // }}}
+    // {{{ function quote($value, $type = null, $quote = true)
+
+    /**
+     * Convert a text value into a DBMS specific format that is suitable to
+     * compose query statements.
+     *
+     * @param   string  text string value that is intended to be converted.
+     * @param   string  type to which the value should be converted to
+     * @param   bool    quote
+     * @param   bool    escape wildcards
+     *
+     * @return  string  text string that represents the given argument value in
+     *       a DBMS specific format.
+     *
+     * @access  public
+     */
+    function quote($value, $type = null, $quote = true, $escape_wildcards = false)
+    {
+        $result = $this->loadModule('Datatype', null, true);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+
+        return $this->datatype->quote($value, $type, $quote, $escape_wildcards);
+    }
+
+    // }}}
+    // {{{ function getDeclaration($type, $name, $field)
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare
+     * of the given type
+     *
+     * @param   string  type to which the value should be converted to
+     * @param   string  name the field to be declared.
+     * @param   string  definition of the field
+     *
+     * @return  string  DBMS specific SQL code portion that should be used to
+     *                 declare the specified field.
+     *
+     * @access  public
+     */
+    function getDeclaration($type, $name, $field)
+    {
+        $result = $this->loadModule('Datatype', null, true);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        return $this->datatype->getDeclaration($type, $name, $field);
+    }
+
+    // }}}
+    // {{{ function compareDefinition($current, $previous)
+
+    /**
+     * Obtain an array of changes that may need to applied
+     *
+     * @param   array   new definition
+     * @param   array   old definition
+     *
+     * @return  array   containing all changes that will need to be applied
+     *
+     * @access  public
+     */
+    function compareDefinition($current, $previous)
+    {
+        $result = $this->loadModule('Datatype', null, true);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        return $this->datatype->compareDefinition($current, $previous);
+    }
+
+    // }}}
+    // {{{ function supports($feature)
+
+    /**
+     * Tell whether a DB implementation or its backend extension
+     * supports a given feature.
+     *
+     * @param   string  name of the feature (see the MDB2 class doc)
+     *
+     * @return  bool|string if this DB implementation supports a given feature
+     *                      false means no, true means native,
+     *                      'emulated' means emulated
+     *
+     * @access  public
+     */
+    function supports($feature)
+    {
+        if (array_key_exists($feature, $this->supported)) {
+            return $this->supported[$feature];
+        }
+        return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            "unknown support feature $feature", __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ function getSequenceName($sqn)
+
+    /**
+     * adds sequence name formatting to a sequence name
+     *
+     * @param   string  name of the sequence
+     *
+     * @return  string  formatted sequence name
+     *
+     * @access  public
+     */
+    function getSequenceName($sqn)
+    {
+        return sprintf($this->options['seqname_format'],
+            preg_replace('/[^a-z0-9_\-\$.]/i', '_', $sqn));
+    }
+
+    // }}}
+    // {{{ function getIndexName($idx)
+
+    /**
+     * adds index name formatting to a index name
+     *
+     * @param   string  name of the index
+     *
+     * @return  string  formatted index name
+     *
+     * @access  public
+     */
+    function getIndexName($idx)
+    {
+        return sprintf($this->options['idxname_format'],
+            preg_replace('/[^a-z0-9_\-\$.]/i', '_', $idx));
+    }
+
+    // }}}
+    // {{{ function nextID($seq_name, $ondemand = true)
+
+    /**
+     * Returns the next free id of a sequence
+     *
+     * @param   string  name of the sequence
+     * @param   bool    when true missing sequences are automatic created
+     *
+     * @return  mixed   MDB2 Error Object or id
+     *
+     * @access  public
+     */
+    function nextID($seq_name, $ondemand = true)
+    {
+        return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ function lastInsertID($table = null, $field = null)
+
+    /**
+     * Returns the autoincrement ID if supported or $id or fetches the current
+     * ID in a sequence called: $table.(empty($field) ? '' : '_'.$field)
+     *
+     * @param   string  name of the table into which a new row was inserted
+     * @param   string  name of the field into which a new row was inserted
+     *
+     * @return  mixed   MDB2 Error Object or id
+     *
+     * @access  public
+     */
+    function lastInsertID($table = null, $field = null)
+    {
+        return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ function currID($seq_name)
+
+    /**
+     * Returns the current id of a sequence
+     *
+     * @param   string  name of the sequence
+     *
+     * @return  mixed   MDB2 Error Object or id
+     *
+     * @access  public
+     */
+    function currID($seq_name)
+    {
+        $this->warnings[] = 'database does not support getting current
+            sequence value, the sequence value was incremented';
+        return $this->nextID($seq_name);
+    }
+
+    // }}}
+    // {{{ function queryOne($query, $type = null, $colnum = 0)
+
+    /**
+     * Execute the specified query, fetch the value from the first column of
+     * the first row of the result set and then frees
+     * the result set.
+     *
+     * @param string $query  the SELECT query statement to be executed.
+     * @param string $type   optional argument that specifies the expected
+     *                       datatype of the result set field, so that an eventual
+     *                       conversion may be performed. The default datatype is
+     *                       text, meaning that no conversion is performed
+     * @param mixed  $colnum the column number (or name) to fetch
+     *
+     * @return  mixed   MDB2_OK or field value on success, a MDB2 error on failure
+     *
+     * @access  public
+     */
+    function queryOne($query, $type = null, $colnum = 0)
+    {
+        $result = $this->query($query, $type);
+        if (!MDB2::isResultCommon($result)) {
+            return $result;
+        }
+
+        $one = $result->fetchOne($colnum);
+        $result->free();
+        return $one;
+    }
+
+    // }}}
+    // {{{ function queryRow($query, $types = null, $fetchmode = MDB2_FETCHMODE_DEFAULT)
+
+    /**
+     * Execute the specified query, fetch the values from the first
+     * row of the result set into an array and then frees
+     * the result set.
+     *
+     * @param   string  the SELECT query statement to be executed.
+     * @param   array   optional array argument that specifies a list of
+     *       expected datatypes of the result set columns, so that the eventual
+     *       conversions may be performed. The default list of datatypes is
+     *       empty, meaning that no conversion is performed.
+     * @param   int     how the array data should be indexed
+     *
+     * @return  mixed   MDB2_OK or data array on success, a MDB2 error on failure
+     *
+     * @access  public
+     */
+    function queryRow($query, $types = null, $fetchmode = MDB2_FETCHMODE_DEFAULT)
+    {
+        $result = $this->query($query, $types);
+        if (!MDB2::isResultCommon($result)) {
+            return $result;
+        }
+
+        $row = $result->fetchRow($fetchmode);
+        $result->free();
+        return $row;
+    }
+
+    // }}}
+    // {{{ function queryCol($query, $type = null, $colnum = 0)
+
+    /**
+     * Execute the specified query, fetch the value from the first column of
+     * each row of the result set into an array and then frees the result set.
+     *
+     * @param string $query  the SELECT query statement to be executed.
+     * @param string $type   optional argument that specifies the expected
+     *                       datatype of the result set field, so that an eventual
+     *                       conversion may be performed. The default datatype is text,
+     *                       meaning that no conversion is performed
+     * @param mixed  $colnum the column number (or name) to fetch
+     *
+     * @return  mixed   MDB2_OK or data array on success, a MDB2 error on failure
+     * @access  public
+     */
+    function queryCol($query, $type = null, $colnum = 0)
+    {
+        $result = $this->query($query, $type);
+        if (!MDB2::isResultCommon($result)) {
+            return $result;
+        }
+
+        $col = $result->fetchCol($colnum);
+        $result->free();
+        return $col;
+    }
+
+    // }}}
+    // {{{ function queryAll($query, $types = null, $fetchmode = MDB2_FETCHMODE_DEFAULT, $rekey = false, $force_array = false, $group = false)
+
+    /**
+     * Execute the specified query, fetch all the rows of the result set into
+     * a two dimensional array and then frees the result set.
+     *
+     * @param   string  the SELECT query statement to be executed.
+     * @param   array   optional array argument that specifies a list of
+     *       expected datatypes of the result set columns, so that the eventual
+     *       conversions may be performed. The default list of datatypes is
+     *       empty, meaning that no conversion is performed.
+     * @param   int     how the array data should be indexed
+     * @param   bool    if set to true, the $all will have the first
+     *       column as its first dimension
+     * @param   bool    used only when the query returns exactly
+     *       two columns. If true, the values of the returned array will be
+     *       one-element arrays instead of scalars.
+     * @param   bool    if true, the values of the returned array is
+     *       wrapped in another array.  If the same key value (in the first
+     *       column) repeats itself, the values will be appended to this array
+     *       instead of overwriting the existing values.
+     *
+     * @return  mixed   MDB2_OK or data array on success, a MDB2 error on failure
+     *
+     * @access  public
+     */
+    function queryAll($query, $types = null, $fetchmode = MDB2_FETCHMODE_DEFAULT,
+        $rekey = false, $force_array = false, $group = false)
+    {
+        $result = $this->query($query, $types);
+        if (!MDB2::isResultCommon($result)) {
+            return $result;
+        }
+
+        $all = $result->fetchAll($fetchmode, $rekey, $force_array, $group);
+        $result->free();
+        return $all;
+    }
+
+    // }}}
+}
+
+// }}}
+// {{{ class MDB2_Result
+
+/**
+ * The dummy class that all user space result classes should extend from
+ *
+ * @package     MDB2
+ * @category    Database
+ * @author      Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Result
+{
+}
+
+// }}}
+// {{{ class MDB2_Result_Common extends MDB2_Result
+
+/**
+ * The common result class for MDB2 result objects
+ *
+ * @package     MDB2
+ * @category    Database
+ * @author      Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Result_Common extends MDB2_Result
+{
+    // {{{ Variables (Properties)
+
+    var $db;
+    var $result;
+    var $rownum = -1;
+    var $types = array();
+    var $values = array();
+    var $offset;
+    var $offset_count = 0;
+    var $limit;
+    var $column_names;
+
+    // }}}
+    // {{{ constructor: function __construct($db, &$result, $limit = 0, $offset = 0)
+
+    /**
+     * Constructor
+     */
+    function __construct($db, &$result, $limit = 0, $offset = 0)
+    {
+        $this->db = $db;
+        $this->result = $result;
+        $this->offset = $offset;
+        $this->limit = max(0, $limit - 1);
+    }
+
+    // }}}
+    // {{{ function setResultTypes($types)
+
+    /**
+     * Define the list of types to be associated with the columns of a given
+     * result set.
+     *
+     * This function may be called before invoking fetchRow(), fetchOne(),
+     * fetchCol() and fetchAll() so that the necessary data type
+     * conversions are performed on the data to be retrieved by them. If this
+     * function is not called, the type of all result set columns is assumed
+     * to be text, thus leading to not perform any conversions.
+     *
+     * @param   array   variable that lists the
+     *       data types to be expected in the result set columns. If this array
+     *       contains less types than the number of columns that are returned
+     *       in the result set, the remaining columns are assumed to be of the
+     *       type text. Currently, the types clob and blob are not fully
+     *       supported.
+     *
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  public
+     */
+    function setResultTypes($types)
+    {
+        $load = $this->db->loadModule('Datatype', null, true);
+        if (PEAR::isError($load)) {
+            return $load;
+        }
+        $types = $this->db->datatype->checkResultTypes($types);
+        if (PEAR::isError($types)) {
+            return $types;
+        }
+        $this->types = $types;
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ function seek($rownum = 0)
+
+    /**
+     * Seek to a specific row in a result set
+     *
+     * @param   int     number of the row where the data can be found
+     *
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  public
+     */
+    function seek($rownum = 0)
+    {
+        $target_rownum = $rownum - 1;
+        if ($this->rownum > $target_rownum) {
+            return $this->db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                'seeking to previous rows not implemented', __FUNCTION__);
+        }
+        while ($this->rownum < $target_rownum) {
+            $this->fetchRow();
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ function &fetchRow($fetchmode = MDB2_FETCHMODE_DEFAULT, $rownum = null)
+
+    /**
+     * Fetch and return a row of data
+     *
+     * @param   int     how the array data should be indexed
+     * @param   int     number of the row where the data can be found
+     *
+     * @return  int     data array on success, a MDB2 error on failure
+     *
+     * @access  public
+     */
+    function fetchRow($fetchmode = MDB2_FETCHMODE_DEFAULT, $rownum = null)
+    {
+        $err = $this->db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+        return $err;
+    }
+
+    // }}}
+    // {{{ function fetchOne($colnum = 0)
+
+    /**
+     * fetch single column from the next row from a result set
+     *
+     * @param int|string the column number (or name) to fetch
+     * @param int        number of the row where the data can be found
+     *
+     * @return string data on success, a MDB2 error on failure
+     * @access  public
+     */
+    function fetchOne($colnum = 0, $rownum = null)
+    {
+        $fetchmode = is_numeric($colnum) ? MDB2_FETCHMODE_ORDERED : MDB2_FETCHMODE_ASSOC;
+        $row = $this->fetchRow($fetchmode, $rownum);
+        if (!is_array($row) || PEAR::isError($row)) {
+            return $row;
+        }
+        if (!array_key_exists($colnum, $row)) {
+            return $this->db->raiseError(MDB2_ERROR_TRUNCATED, null, null,
+                'column is not defined in the result set: '.$colnum, __FUNCTION__);
+        }
+        return $row[$colnum];
+    }
+
+    // }}}
+    // {{{ function fetchCol($colnum = 0)
+
+    /**
+     * Fetch and return a column from the current row pointer position
+     *
+     * @param int|string the column number (or name) to fetch
+     *
+     * @return  mixed data array on success, a MDB2 error on failure
+     * @access  public
+     */
+    function fetchCol($colnum = 0)
+    {
+        $column = array();
+        $fetchmode = is_numeric($colnum) ? MDB2_FETCHMODE_ORDERED : MDB2_FETCHMODE_ASSOC;
+        $row = $this->fetchRow($fetchmode);
+        if (is_array($row)) {
+            if (!array_key_exists($colnum, $row)) {
+                return $this->db->raiseError(MDB2_ERROR_TRUNCATED, null, null,
+                    'column is not defined in the result set: '.$colnum, __FUNCTION__);
+            }
+            do {
+                $column[] = $row[$colnum];
+            } while (is_array($row = $this->fetchRow($fetchmode)));
+        }
+        if (PEAR::isError($row)) {
+            return $row;
+        }
+        return $column;
+    }
+
+    // }}}
+    // {{{ function fetchAll($fetchmode = MDB2_FETCHMODE_DEFAULT, $rekey = false, $force_array = false, $group = false)
+
+    /**
+     * Fetch and return all rows from the current row pointer position
+     *
+     * @param   int     $fetchmode  the fetch mode to use:
+     *                            + MDB2_FETCHMODE_ORDERED
+     *                            + MDB2_FETCHMODE_ASSOC
+     *                            + MDB2_FETCHMODE_ORDERED | MDB2_FETCHMODE_FLIPPED
+     *                            + MDB2_FETCHMODE_ASSOC | MDB2_FETCHMODE_FLIPPED
+     * @param   bool    if set to true, the $all will have the first
+     *       column as its first dimension
+     * @param   bool    used only when the query returns exactly
+     *       two columns. If true, the values of the returned array will be
+     *       one-element arrays instead of scalars.
+     * @param   bool    if true, the values of the returned array is
+     *       wrapped in another array.  If the same key value (in the first
+     *       column) repeats itself, the values will be appended to this array
+     *       instead of overwriting the existing values.
+     *
+     * @return  mixed   data array on success, a MDB2 error on failure
+     *
+     * @access  public
+     * @see     getAssoc()
+     */
+    function fetchAll($fetchmode = MDB2_FETCHMODE_DEFAULT, $rekey = false,
+        $force_array = false, $group = false)
+    {
+        $all = array();
+        $row = $this->fetchRow($fetchmode);
+        if (PEAR::isError($row)) {
+            return $row;
+        } elseif (!$row) {
+            return $all;
+        }
+
+        $shift_array = $rekey ? false : null;
+        if (null !== $shift_array) {
+            if (is_object($row)) {
+                $colnum = count(get_object_vars($row));
+            } else {
+                $colnum = count($row);
+            }
+            if ($colnum < 2) {
+                return $this->db->raiseError(MDB2_ERROR_TRUNCATED, null, null,
+                    'rekey feature requires atleast 2 column', __FUNCTION__);
+            }
+            $shift_array = (!$force_array && $colnum == 2);
+        }
+
+        if ($rekey) {
+            do {
+                if (is_object($row)) {
+                    $arr = get_object_vars($row);
+                    $key = reset($arr);
+                    unset($row->{$key});
+                } else {
+                    if ($fetchmode & MDB2_FETCHMODE_ASSOC) {
+                        $key = reset($row);
+                        unset($row[key($row)]);
+                    } else {
+                        $key = array_shift($row);
+                    }
+                    if ($shift_array) {
+                        $row = array_shift($row);
+                    }
+                }
+                if ($group) {
+                    $all[$key][] = $row;
+                } else {
+                    $all[$key] = $row;
+                }
+            } while (($row = $this->fetchRow($fetchmode)));
+        } elseif ($fetchmode & MDB2_FETCHMODE_FLIPPED) {
+            do {
+                foreach ($row as $key => $val) {
+                    $all[$key][] = $val;
+                }
+            } while (($row = $this->fetchRow($fetchmode)));
+        } else {
+            do {
+                $all[] = $row;
+            } while (($row = $this->fetchRow($fetchmode)));
+        }
+
+        return $all;
+    }
+
+    // }}}
+    // {{{ function rowCount()
+    /**
+     * Returns the actual row number that was last fetched (count from 0)
+     * @return  int
+     *
+     * @access  public
+     */
+    function rowCount()
+    {
+        return $this->rownum + 1;
+    }
+
+    // }}}
+    // {{{ function numRows()
+
+    /**
+     * Returns the number of rows in a result object
+     *
+     * @return  mixed   MDB2 Error Object or the number of rows
+     *
+     * @access  public
+     */
+    function numRows()
+    {
+        return $this->db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ function nextResult()
+
+    /**
+     * Move the internal result pointer to the next available result
+     *
+     * @return  true on success, false if there is no more result set or an error object on failure
+     *
+     * @access  public
+     */
+    function nextResult()
+    {
+        return $this->db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ function getColumnNames()
+
+    /**
+     * Retrieve the names of columns returned by the DBMS in a query result or
+     * from the cache.
+     *
+     * @param   bool    If set to true the values are the column names,
+     *                  otherwise the names of the columns are the keys.
+     * @return  mixed   Array variable that holds the names of columns or an
+     *                  MDB2 error on failure.
+     *                  Some DBMS may not return any columns when the result set
+     *                  does not contain any rows.
+     *
+     * @access  public
+     */
+    function getColumnNames($flip = false)
+    {
+        if (!isset($this->column_names)) {
+            $result = $this->_getColumnNames();
+            if (PEAR::isError($result)) {
+                return $result;
+            }
+            $this->column_names = $result;
+        }
+        if ($flip) {
+            return array_flip($this->column_names);
+        }
+        return $this->column_names;
+    }
+
+    // }}}
+    // {{{ function _getColumnNames()
+
+    /**
+     * Retrieve the names of columns returned by the DBMS in a query result.
+     *
+     * @return  mixed   Array variable that holds the names of columns as keys
+     *                  or an MDB2 error on failure.
+     *                  Some DBMS may not return any columns when the result set
+     *                  does not contain any rows.
+     *
+     * @access  private
+     */
+    function _getColumnNames()
+    {
+        return $this->db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ function numCols()
+
+    /**
+     * Count the number of columns returned by the DBMS in a query result.
+     *
+     * @return  mixed   integer value with the number of columns, a MDB2 error
+     *       on failure
+     *
+     * @access  public
+     */
+    function numCols()
+    {
+        return $this->db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ function getResource()
+
+    /**
+     * return the resource associated with the result object
+     *
+     * @return  resource
+     *
+     * @access  public
+     */
+    function getResource()
+    {
+        return $this->result;
+    }
+
+    // }}}
+    // {{{ function bindColumn($column, &$value, $type = null)
+
+    /**
+     * Set bind variable to a column.
+     *
+     * @param   int     column number or name
+     * @param   mixed   variable reference
+     * @param   string  specifies the type of the field
+     *
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  public
+     */
+    function bindColumn($column, &$value, $type = null)
+    {
+        if (!is_numeric($column)) {
+            $column_names = $this->getColumnNames();
+            if ($this->db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+                if ($this->db->options['field_case'] == CASE_LOWER) {
+                    $column = strtolower($column);
+                } else {
+                    $column = strtoupper($column);
+                }
+            }
+            $column = $column_names[$column];
+        }
+        $this->values[$column] =& $value;
+        if (null !== $type) {
+            $this->types[$column] = $type;
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ function _assignBindColumns($row)
+
+    /**
+     * Bind a variable to a value in the result row.
+     *
+     * @param   array   row data
+     *
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  private
+     */
+    function _assignBindColumns($row)
+    {
+        $row = array_values($row);
+        foreach ($row as $column => $value) {
+            if (array_key_exists($column, $this->values)) {
+                $this->values[$column] = $value;
+            }
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ function free()
+
+    /**
+     * Free the internal resources associated with result.
+     *
+     * @return  bool    true on success, false if result is invalid
+     *
+     * @access  public
+     */
+    function free()
+    {
+        $this->result = false;
+        return MDB2_OK;
+    }
+
+    // }}}
+}
+
+// }}}
+// {{{ class MDB2_Row
+
+/**
+ * The simple class that accepts row data as an array
+ *
+ * @package     MDB2
+ * @category    Database
+ * @author      Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Row
+{
+    // {{{ constructor: function __construct(&$row)
+
+    /**
+     * constructor
+     *
+     * @param   resource    row data as array
+     */
+    function __construct(&$row)
+    {
+        foreach ($row as $key => $value) {
+            $this->$key = &$row[$key];
+        }
+    }
+
+    // }}}
+}
+
+// }}}
+// {{{ class MDB2_Statement_Common
+
+/**
+ * The common statement class for MDB2 statement objects
+ *
+ * @package     MDB2
+ * @category    Database
+ * @author      Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Statement_Common
+{
+    // {{{ Variables (Properties)
+
+    var $db;
+    var $statement;
+    var $query;
+    var $result_types;
+    var $types;
+    var $values = array();
+    var $limit;
+    var $offset;
+    var $is_manip;
+
+    // }}}
+    // {{{ constructor: function __construct($db, $statement, $positions, $query, $types, $result_types, $is_manip = false, $limit = null, $offset = null)
+
+    /**
+     * Constructor
+     */
+    function __construct($db, $statement, $positions, $query, $types, $result_types, $is_manip = false, $limit = null, $offset = null)
+    {
+        $this->db = $db;
+        $this->statement = $statement;
+        $this->positions = $positions;
+        $this->query = $query;
+        $this->types = (array)$types;
+        $this->result_types = (array)$result_types;
+        $this->limit = $limit;
+        $this->is_manip = $is_manip;
+        $this->offset = $offset;
+    }
+
+    // }}}
+    // {{{ function bindValue($parameter, &$value, $type = null)
+
+    /**
+     * Set the value of a parameter of a prepared query.
+     *
+     * @param   int     the order number of the parameter in the query
+     *       statement. The order number of the first parameter is 1.
+     * @param   mixed   value that is meant to be assigned to specified
+     *       parameter. The type of the value depends on the $type argument.
+     * @param   string  specifies the type of the field
+     *
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  public
+     */
+    function bindValue($parameter, $value, $type = null)
+    {
+        if (!is_numeric($parameter)) {
+            $parameter = preg_replace('/^:(.*)$/', '\\1', $parameter);
+        }
+        if (!in_array($parameter, $this->positions)) {
+            return $this->db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                'Unable to bind to missing placeholder: '.$parameter, __FUNCTION__);
+        }
+        $this->values[$parameter] = $value;
+        if (null !== $type) {
+            $this->types[$parameter] = $type;
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ function bindValueArray($values, $types = null)
+
+    /**
+     * Set the values of multiple a parameter of a prepared query in bulk.
+     *
+     * @param   array   specifies all necessary information
+     *       for bindValue() the array elements must use keys corresponding to
+     *       the number of the position of the parameter.
+     * @param   array   specifies the types of the fields
+     *
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  public
+     * @see     bindParam()
+     */
+    function bindValueArray($values, $types = null)
+    {
+        $types = is_array($types) ? array_values($types) : array_fill(0, count($values), null);
+        $parameters = array_keys($values);
+        foreach ($parameters as $key => $parameter) {
+            $this->db->pushErrorHandling(PEAR_ERROR_RETURN);
+            $this->db->expectError(MDB2_ERROR_NOT_FOUND);
+            $err = $this->bindValue($parameter, $values[$parameter], $types[$key]);
+            $this->db->popExpect();
+            $this->db->popErrorHandling();
+            if (PEAR::isError($err)) {
+                if ($err->getCode() == MDB2_ERROR_NOT_FOUND) {
+                    //ignore (extra value for missing placeholder)
+                    continue;
+                }
+                return $err;
+            }
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ function bindParam($parameter, &$value, $type = null)
+
+    /**
+     * Bind a variable to a parameter of a prepared query.
+     *
+     * @param   int     the order number of the parameter in the query
+     *       statement. The order number of the first parameter is 1.
+     * @param   mixed   variable that is meant to be bound to specified
+     *       parameter. The type of the value depends on the $type argument.
+     * @param   string  specifies the type of the field
+     *
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  public
+     */
+    function bindParam($parameter, &$value, $type = null)
+    {
+        if (!is_numeric($parameter)) {
+            $parameter = preg_replace('/^:(.*)$/', '\\1', $parameter);
+        }
+        if (!in_array($parameter, $this->positions)) {
+            return $this->db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                'Unable to bind to missing placeholder: '.$parameter, __FUNCTION__);
+        }
+        $this->values[$parameter] =& $value;
+        if (null !== $type) {
+            $this->types[$parameter] = $type;
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ function bindParamArray(&$values, $types = null)
+
+    /**
+     * Bind the variables of multiple a parameter of a prepared query in bulk.
+     *
+     * @param   array   specifies all necessary information
+     *       for bindParam() the array elements must use keys corresponding to
+     *       the number of the position of the parameter.
+     * @param   array   specifies the types of the fields
+     *
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  public
+     * @see     bindParam()
+     */
+    function bindParamArray(&$values, $types = null)
+    {
+        $types = is_array($types) ? array_values($types) : array_fill(0, count($values), null);
+        $parameters = array_keys($values);
+        foreach ($parameters as $key => $parameter) {
+            $err = $this->bindParam($parameter, $values[$parameter], $types[$key]);
+            if (PEAR::isError($err)) {
+                return $err;
+            }
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ function &execute($values = null, $result_class = true, $result_wrap_class = false)
+
+    /**
+     * Execute a prepared query statement.
+     *
+     * @param array specifies all necessary information
+     *              for bindParam() the array elements must use keys corresponding
+     *              to the number of the position of the parameter.
+     * @param mixed specifies which result class to use
+     * @param mixed specifies which class to wrap results in
+     *
+     * @return mixed MDB2_Result or integer (affected rows) on success,
+     *               a MDB2 error on failure
+     * @access public
+     */
+    function execute($values = null, $result_class = true, $result_wrap_class = false)
+    {
+        if (null === $this->positions) {
+            return $this->db->raiseError(MDB2_ERROR, null, null,
+                'Prepared statement has already been freed', __FUNCTION__);
+        }
+
+        $values = (array)$values;
+        if (!empty($values)) {
+            $err = $this->bindValueArray($values);
+            if (PEAR::isError($err)) {
+                return $this->db->raiseError(MDB2_ERROR, null, null,
+                                            'Binding Values failed with message: ' . $err->getMessage(), __FUNCTION__);
+            }
+        }
+        $result = $this->_execute($result_class, $result_wrap_class);
+        return $result;
+    }
+
+    // }}}
+    // {{{ function _execute($result_class = true, $result_wrap_class = false)
+
+    /**
+     * Execute a prepared query statement helper method.
+     *
+     * @param   mixed   specifies which result class to use
+     * @param   mixed   specifies which class to wrap results in
+     *
+     * @return mixed MDB2_Result or integer (affected rows) on success,
+     *               a MDB2 error on failure
+     * @access  private
+     */
+    function _execute($result_class = true, $result_wrap_class = false)
+    {
+        $this->last_query = $this->query;
+        $query = '';
+        $last_position = 0;
+        foreach ($this->positions as $current_position => $parameter) {
+            if (!array_key_exists($parameter, $this->values)) {
+                return $this->db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                    'Unable to bind to missing placeholder: '.$parameter, __FUNCTION__);
+            }
+            $value = $this->values[$parameter];
+            $query.= substr($this->query, $last_position, $current_position - $last_position);
+            if (!isset($value)) {
+                $value_quoted = 'NULL';
+            } else {
+                $type = !empty($this->types[$parameter]) ? $this->types[$parameter] : null;
+                $value_quoted = $this->db->quote($value, $type);
+                if (PEAR::isError($value_quoted)) {
+                    return $value_quoted;
+                }
+            }
+            $query.= $value_quoted;
+            $last_position = $current_position + 1;
+        }
+        $query.= substr($this->query, $last_position);
+
+        $this->db->offset = $this->offset;
+        $this->db->limit = $this->limit;
+        if ($this->is_manip) {
+            $result = $this->db->exec($query);
+        } else {
+            $result = $this->db->query($query, $this->result_types, $result_class, $result_wrap_class);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ function free()
+
+    /**
+     * Release resources allocated for the specified prepared query.
+     *
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  public
+     */
+    function free()
+    {
+        if (null === $this->positions) {
+            return $this->db->raiseError(MDB2_ERROR, null, null,
+                'Prepared statement has already been freed', __FUNCTION__);
+        }
+
+        $this->statement = null;
+        $this->positions = null;
+        $this->query = null;
+        $this->types = null;
+        $this->result_types = null;
+        $this->limit = null;
+        $this->is_manip = null;
+        $this->offset = null;
+        $this->values = null;
+
+        return MDB2_OK;
+    }
+
+    // }}}
+}
+
+// }}}
+// {{{ class MDB2_Module_Common
+
+/**
+ * The common modules class for MDB2 module objects
+ *
+ * @package     MDB2
+ * @category    Database
+ * @author      Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Module_Common
+{
+    // {{{ Variables (Properties)
+
+    /**
+     * contains the key to the global MDB2 instance array of the associated
+     * MDB2 instance
+     *
+     * @var     int
+     * @access  protected
+     */
+    var $db_index;
+
+    // }}}
+    // {{{ constructor: function __construct($db_index)
+
+    /**
+     * Constructor
+     */
+    function __construct($db_index)
+    {
+        $this->db_index = $db_index;
+    }
+
+    // }}}
+    // {{{ function getDBInstance()
+
+    /**
+     * Get the instance of MDB2 associated with the module instance
+     *
+     * @return  object  MDB2 instance or a MDB2 error on failure
+     *
+     * @access  public
+     */
+    function getDBInstance()
+    {
+        if (isset($GLOBALS['_MDB2_databases'][$this->db_index])) {
+            $result = $GLOBALS['_MDB2_databases'][$this->db_index];
+        } else {
+            $result = MDB2::raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                'could not find MDB2 instance');
+        }
+        return $result;
+    }
+
+    // }}}
+}
+
+// }}}
+// {{{ function MDB2_closeOpenTransactions()
+
+/**
+ * Close any open transactions form persistent connections
+ *
+ * @return  void
+ *
+ * @access  public
+ */
+
+function MDB2_closeOpenTransactions()
+{
+    reset($GLOBALS['_MDB2_databases']);
+    while (next($GLOBALS['_MDB2_databases'])) {
+        $key = key($GLOBALS['_MDB2_databases']);
+        if ($GLOBALS['_MDB2_databases'][$key]->opened_persistent
+            && $GLOBALS['_MDB2_databases'][$key]->in_transaction
+        ) {
+            $GLOBALS['_MDB2_databases'][$key]->rollback();
+        }
+    }
+}
+
+// }}}
+// {{{ function MDB2_defaultDebugOutput(&$db, $scope, $message, $is_manip = null)
+
+/**
+ * default debug output handler
+ *
+ * @param   object  reference to an MDB2 database object
+ * @param   string  usually the method name that triggered the debug call:
+ *                  for example 'query', 'prepare', 'execute', 'parameters',
+ *                  'beginTransaction', 'commit', 'rollback'
+ * @param   string  message that should be appended to the debug variable
+ * @param   array   contains context information about the debug() call
+ *                  common keys are: is_manip, time, result etc.
+ *
+ * @return  void|string optionally return a modified message, this allows
+ *                      rewriting a query before being issued or prepared
+ *
+ * @access  public
+ */
+function MDB2_defaultDebugOutput(&$db, $scope, $message, $context = array())
+{
+    $db->debug_output.= $scope.'('.$db->db_index.'): ';
+    $db->debug_output.= $message.$db->getOption('log_line_break');
+    return $message;
+}
+
+// }}}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Date.php b/program/lib/MDB2/Date.php
new file mode 100644 (file)
index 0000000..6ec60b8
--- /dev/null
@@ -0,0 +1,183 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2006 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Lukas Smith <smith@pooteeweet.org>                           |
+// +----------------------------------------------------------------------+
+//
+// $Id: Date.php 208329 2006-03-01 12:15:38Z lsmith $
+//
+
+/**
+ * @package  MDB2
+ * @category Database
+ * @author   Lukas Smith <smith@pooteeweet.org>
+ */
+
+/**
+ * Several methods to convert the MDB2 native timestamp format (ISO based)
+ * to and from data structures that are convenient to worth with in side of php.
+ * For more complex date arithmetic please take a look at the Date package in PEAR
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Date
+{
+    // {{{ mdbNow()
+
+    /**
+     * return the current datetime
+     *
+     * @return string current datetime in the MDB2 format
+     * @access public
+     */
+    function mdbNow()
+    {
+        return date('Y-m-d H:i:s');
+    }
+    // }}}
+
+    // {{{ mdbToday()
+
+    /**
+     * return the current date
+     *
+     * @return string current date in the MDB2 format
+     * @access public
+     */
+    function mdbToday()
+    {
+        return date('Y-m-d');
+    }
+    // }}}
+
+    // {{{ mdbTime()
+
+    /**
+     * return the current time
+     *
+     * @return string current time in the MDB2 format
+     * @access public
+     */
+    function mdbTime()
+    {
+        return date('H:i:s');
+    }
+    // }}}
+
+    // {{{ date2Mdbstamp()
+
+    /**
+     * convert a date into a MDB2 timestamp
+     *
+     * @param int hour of the date
+     * @param int minute of the date
+     * @param int second of the date
+     * @param int month of the date
+     * @param int day of the date
+     * @param int year of the date
+     *
+     * @return string a valid MDB2 timestamp
+     * @access public
+     */
+    function date2Mdbstamp($hour = null, $minute = null, $second = null,
+        $month = null, $day = null, $year = null)
+    {
+        return MDB2_Date::unix2Mdbstamp(mktime($hour, $minute, $second, $month, $day, $year, -1));
+    }
+    // }}}
+
+    // {{{ unix2Mdbstamp()
+
+    /**
+     * convert a unix timestamp into a MDB2 timestamp
+     *
+     * @param int a valid unix timestamp
+     *
+     * @return string a valid MDB2 timestamp
+     * @access public
+     */
+    function unix2Mdbstamp($unix_timestamp)
+    {
+        return date('Y-m-d H:i:s', $unix_timestamp);
+    }
+    // }}}
+
+    // {{{ mdbstamp2Unix()
+
+    /**
+     * convert a MDB2 timestamp into a unix timestamp
+     *
+     * @param int a valid MDB2 timestamp
+     * @return string unix timestamp with the time stored in the MDB2 format
+     *
+     * @access public
+     */
+    function mdbstamp2Unix($mdb_timestamp)
+    {
+        $arr = MDB2_Date::mdbstamp2Date($mdb_timestamp);
+
+        return mktime($arr['hour'], $arr['minute'], $arr['second'], $arr['month'], $arr['day'], $arr['year'], -1);
+    }
+    // }}}
+
+    // {{{ mdbstamp2Date()
+
+    /**
+     * convert a MDB2 timestamp into an array containing all
+     * values necessary to pass to php's date() function
+     *
+     * @param int a valid MDB2 timestamp
+     *
+     * @return array with the time split
+     * @access public
+     */
+    function mdbstamp2Date($mdb_timestamp)
+    {
+        list($arr['year'], $arr['month'], $arr['day'], $arr['hour'], $arr['minute'], $arr['second']) =
+            sscanf($mdb_timestamp, "%04u-%02u-%02u %02u:%02u:%02u");
+        return $arr;
+    }
+    // }}}
+}
+
+?>
diff --git a/program/lib/MDB2/Driver/Datatype/Common.php b/program/lib/MDB2/Driver/Datatype/Common.php
new file mode 100644 (file)
index 0000000..2083d75
--- /dev/null
@@ -0,0 +1,1838 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2007 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Lukas Smith <smith@pooteeweet.org>                           |
+// +----------------------------------------------------------------------+
+//
+// $Id: Common.php 292715 2009-12-28 14:06:34Z quipo $
+
+require_once 'MDB2/LOB.php';
+
+/**
+ * @package  MDB2
+ * @category Database
+ * @author   Lukas Smith <smith@pooteeweet.org>
+ */
+
+/**
+ * MDB2_Driver_Common: Base class that is extended by each MDB2 driver
+ *
+ * To load this module in the MDB2 object:
+ * $mdb->loadModule('Datatype');
+ *
+ * @package MDB2
+ * @category Database
+ * @author Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Driver_Datatype_Common extends MDB2_Module_Common
+{
+    var $valid_default_values = array(
+        'text'      => '',
+        'boolean'   => true,
+        'integer'   => 0,
+        'decimal'   => 0.0,
+        'float'     => 0.0,
+        'timestamp' => '1970-01-01 00:00:00',
+        'time'      => '00:00:00',
+        'date'      => '1970-01-01',
+        'clob'      => '',
+        'blob'      => '',
+    );
+
+    /**
+     * contains all LOB objects created with this MDB2 instance
+     * @var array
+     * @access protected
+     */
+    var $lobs = array();
+
+    // }}}
+    // {{{ getValidTypes()
+
+    /**
+     * Get the list of valid types
+     *
+     * This function returns an array of valid types as keys with the values
+     * being possible default values for all native datatypes and mapped types
+     * for custom datatypes.
+     *
+     * @return mixed array on success, a MDB2 error on failure
+     * @access public
+     */
+    function getValidTypes()
+    {
+        $types = $this->valid_default_values;
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+        if (!empty($db->options['datatype_map'])) {
+            foreach ($db->options['datatype_map'] as $type => $mapped_type) {
+                if (array_key_exists($mapped_type, $types)) {
+                    $types[$type] = $types[$mapped_type];
+                } elseif (!empty($db->options['datatype_map_callback'][$type])) {
+                    $parameter = array('type' => $type, 'mapped_type' => $mapped_type);
+                    $default =  call_user_func_array($db->options['datatype_map_callback'][$type], array(&$db, __FUNCTION__, $parameter));
+                    $types[$type] = $default;
+                }
+            }
+        }
+        return $types;
+    }
+
+    // }}}
+    // {{{ checkResultTypes()
+
+    /**
+     * Define the list of types to be associated with the columns of a given
+     * result set.
+     *
+     * This function may be called before invoking fetchRow(), fetchOne()
+     * fetchCole() and fetchAll() so that the necessary data type
+     * conversions are performed on the data to be retrieved by them. If this
+     * function is not called, the type of all result set columns is assumed
+     * to be text, thus leading to not perform any conversions.
+     *
+     * @param array $types array variable that lists the
+     *       data types to be expected in the result set columns. If this array
+     *       contains less types than the number of columns that are returned
+     *       in the result set, the remaining columns are assumed to be of the
+     *       type text. Currently, the types clob and blob are not fully
+     *       supported.
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function checkResultTypes($types)
+    {
+        $types = is_array($types) ? $types : array($types);
+        foreach ($types as $key => $type) {
+            if (!isset($this->valid_default_values[$type])) {
+                $db =& $this->getDBInstance();
+                if (PEAR::isError($db)) {
+                    return $db;
+                }
+                if (empty($db->options['datatype_map'][$type])) {
+                    return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                        $type.' for '.$key.' is not a supported column type', __FUNCTION__);
+                }
+            }
+        }
+        return $types;
+    }
+
+    // }}}
+    // {{{ _baseConvertResult()
+
+    /**
+     * General type conversion method
+     *
+     * @param mixed   $value reference to a value to be converted
+     * @param string  $type  specifies which type to convert to
+     * @param boolean $rtrim [optional] when TRUE [default], apply rtrim() to text
+     * @return object an MDB2 error on failure
+     * @access protected
+     */
+    function _baseConvertResult($value, $type, $rtrim = true)
+    {
+        switch ($type) {
+        case 'text':
+            if ($rtrim) {
+                $value = rtrim($value);
+            }
+            return $value;
+        case 'integer':
+            return intval($value);
+        case 'boolean':
+            return !empty($value);
+        case 'decimal':
+            return $value;
+        case 'float':
+            return doubleval($value);
+        case 'date':
+            return $value;
+        case 'time':
+            return $value;
+        case 'timestamp':
+            return $value;
+        case 'clob':
+        case 'blob':
+            $this->lobs[] = array(
+                'buffer' => null,
+                'position' => 0,
+                'lob_index' => null,
+                'endOfLOB' => false,
+                'resource' => $value,
+                'value' => null,
+                'loaded' => false,
+            );
+            end($this->lobs);
+            $lob_index = key($this->lobs);
+            $this->lobs[$lob_index]['lob_index'] = $lob_index;
+            return fopen('MDB2LOB://'.$lob_index.'@'.$this->db_index, 'r+');
+        }
+
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        return $db->raiseError(MDB2_ERROR_INVALID, null, null,
+            'attempt to convert result value to an unknown type :' . $type, __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ convertResult()
+
+    /**
+     * Convert a value to a RDBMS indipendent MDB2 type
+     *
+     * @param mixed   $value value to be converted
+     * @param string  $type  specifies which type to convert to
+     * @param boolean $rtrim [optional] when TRUE [default], apply rtrim() to text
+     * @return mixed converted value
+     * @access public
+     */
+    function convertResult($value, $type, $rtrim = true)
+    {
+        if (null === $value) {
+            return null;
+        }
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+        if (!empty($db->options['datatype_map'][$type])) {
+            $type = $db->options['datatype_map'][$type];
+            if (!empty($db->options['datatype_map_callback'][$type])) {
+                $parameter = array('type' => $type, 'value' => $value, 'rtrim' => $rtrim);
+                return call_user_func_array($db->options['datatype_map_callback'][$type], array(&$db, __FUNCTION__, $parameter));
+            }
+        }
+        return $this->_baseConvertResult($value, $type, $rtrim);
+    }
+
+    // }}}
+    // {{{ convertResultRow()
+
+    /**
+     * Convert a result row
+     *
+     * @param array   $types
+     * @param array   $row   specifies the types to convert to
+     * @param boolean $rtrim [optional] when TRUE [default], apply rtrim() to text
+     * @return mixed MDB2_OK on success, an MDB2 error on failure
+     * @access public
+     */
+    function convertResultRow($types, $row, $rtrim = true)
+    {
+        $types = $this->_sortResultFieldTypes(array_keys($row), $types);
+        foreach ($row as $key => $value) {
+            if (empty($types[$key])) {
+                continue;
+            }
+            $value = $this->convertResult($row[$key], $types[$key], $rtrim);
+            if (PEAR::isError($value)) {
+                return $value;
+            }
+            $row[$key] = $value;
+        }
+        return $row;
+    }
+
+    // }}}
+    // {{{ _sortResultFieldTypes()
+
+    /**
+     * convert a result row
+     *
+     * @param array $types
+     * @param array $row specifies the types to convert to
+     * @param bool   $rtrim   if to rtrim text values or not
+     * @return mixed MDB2_OK on success,  a MDB2 error on failure
+     * @access public
+     */
+    function _sortResultFieldTypes($columns, $types)
+    {
+        $n_cols = count($columns);
+        $n_types = count($types);
+        if ($n_cols > $n_types) {
+            for ($i= $n_cols - $n_types; $i >= 0; $i--) {
+                $types[] = null;
+            }
+        }
+        $sorted_types = array();
+        foreach ($columns as $col) {
+            $sorted_types[$col] = null;
+        }
+        foreach ($types as $name => $type) {
+            if (array_key_exists($name, $sorted_types)) {
+                $sorted_types[$name] = $type;
+                unset($types[$name]);
+            }
+        }
+        // if there are left types in the array, fill the null values of the
+        // sorted array with them, in order.
+        if (count($types)) {
+            reset($types);
+            foreach (array_keys($sorted_types) as $k) {
+                if (null === $sorted_types[$k]) {
+                    $sorted_types[$k] = current($types);
+                    next($types);
+                }
+            }
+        }
+        return $sorted_types;
+    }
+
+    // }}}
+    // {{{ getDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare
+     * of the given type
+     *
+     * @param string $type type to which the value should be converted to
+     * @param string  $name   name the field to be declared.
+     * @param string  $field  definition of the field
+     * @return string  DBMS specific SQL code portion that should be used to
+     *                 declare the specified field.
+     * @access public
+     */
+    function getDeclaration($type, $name, $field)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        if (!empty($db->options['datatype_map'][$type])) {
+            $type = $db->options['datatype_map'][$type];
+            if (!empty($db->options['datatype_map_callback'][$type])) {
+                $parameter = array('type' => $type, 'name' => $name, 'field' => $field);
+                return call_user_func_array($db->options['datatype_map_callback'][$type], array(&$db, __FUNCTION__, $parameter));
+            }
+            $field['type'] = $type;
+        }
+
+        if (!method_exists($this, "_get{$type}Declaration")) {
+            return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                'type not defined: '.$type, __FUNCTION__);
+        }
+        return $this->{"_get{$type}Declaration"}($name, $field);
+    }
+
+    // }}}
+    // {{{ getTypeDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare an text type
+     * field to be used in statements like CREATE TABLE.
+     *
+     * @param array $field  associative array with the name of the properties
+     *      of the field being declared as array indexes. Currently, the types
+     *      of supported field properties are as follows:
+     *
+     *      length
+     *          Integer value that determines the maximum length of the text
+     *          field. If this argument is missing the field should be
+     *          declared to have the longest length allowed by the DBMS.
+     *
+     *      default
+     *          Text value to be used as default for this field.
+     *
+     *      notnull
+     *          Boolean flag that indicates whether this field is constrained
+     *          to not be set to null.
+     * @return string  DBMS specific SQL code portion that should be used to
+     *      declare the specified field.
+     * @access public
+     */
+    function getTypeDeclaration($field)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        switch ($field['type']) {
+        case 'text':
+            $length = !empty($field['length']) ? $field['length'] : $db->options['default_text_field_length'];
+            $fixed = !empty($field['fixed']) ? $field['fixed'] : false;
+            return $fixed ? ($length ? 'CHAR('.$length.')' : 'CHAR('.$db->options['default_text_field_length'].')')
+                : ($length ? 'VARCHAR('.$length.')' : 'TEXT');
+        case 'clob':
+            return 'TEXT';
+        case 'blob':
+            return 'TEXT';
+        case 'integer':
+            return 'INT';
+        case 'boolean':
+            return 'INT';
+        case 'date':
+            return 'CHAR ('.strlen('YYYY-MM-DD').')';
+        case 'time':
+            return 'CHAR ('.strlen('HH:MM:SS').')';
+        case 'timestamp':
+            return 'CHAR ('.strlen('YYYY-MM-DD HH:MM:SS').')';
+        case 'float':
+            return 'TEXT';
+        case 'decimal':
+            return 'TEXT';
+        }
+        return '';
+    }
+
+    // }}}
+    // {{{ _getDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare a generic type
+     * field to be used in statements like CREATE TABLE.
+     *
+     * @param string $name   name the field to be declared.
+     * @param array  $field  associative array with the name of the properties
+     *      of the field being declared as array indexes. Currently, the types
+     *      of supported field properties are as follows:
+     *
+     *      length
+     *          Integer value that determines the maximum length of the text
+     *          field. If this argument is missing the field should be
+     *          declared to have the longest length allowed by the DBMS.
+     *
+     *      default
+     *          Text value to be used as default for this field.
+     *
+     *      notnull
+     *          Boolean flag that indicates whether this field is constrained
+     *          to not be set to null.
+     *      charset
+     *          Text value with the default CHARACTER SET for this field.
+     *      collation
+     *          Text value with the default COLLATION for this field.
+     * @return string  DBMS specific SQL code portion that should be used to
+     *      declare the specified field, or a MDB2_Error on failure
+     * @access protected
+     */
+    function _getDeclaration($name, $field)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $name = $db->quoteIdentifier($name, true);
+        $declaration_options = $db->datatype->_getDeclarationOptions($field);
+        if (PEAR::isError($declaration_options)) {
+            return $declaration_options;
+        }
+        return $name.' '.$this->getTypeDeclaration($field).$declaration_options;
+    }
+
+    // }}}
+    // {{{ _getDeclarationOptions()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare a generic type
+     * field to be used in statement like CREATE TABLE, without the field name
+     * and type values (ie. just the character set, default value, if the
+     * field is permitted to be NULL or not, and the collation options).
+     *
+     * @param array  $field  associative array with the name of the properties
+     *      of the field being declared as array indexes. Currently, the types
+     *      of supported field properties are as follows:
+     *
+     *      default
+     *          Text value to be used as default for this field.
+     *      notnull
+     *          Boolean flag that indicates whether this field is constrained
+     *          to not be set to null.
+     *      charset
+     *          Text value with the default CHARACTER SET for this field.
+     *      collation
+     *          Text value with the default COLLATION for this field.
+     * @return string  DBMS specific SQL code portion that should be used to
+     *      declare the specified field's options.
+     * @access protected
+     */
+    function _getDeclarationOptions($field)
+    {
+        $charset = empty($field['charset']) ? '' :
+            ' '.$this->_getCharsetFieldDeclaration($field['charset']);
+
+        $notnull = empty($field['notnull']) ? '' : ' NOT NULL';
+        $default = '';
+        if (array_key_exists('default', $field)) {
+            if ($field['default'] === '') {
+                $db =& $this->getDBInstance();
+                if (PEAR::isError($db)) {
+                    return $db;
+                }
+                $valid_default_values = $this->getValidTypes();
+                $field['default'] = $valid_default_values[$field['type']];
+                if ($field['default'] === ''&& ($db->options['portability'] & MDB2_PORTABILITY_EMPTY_TO_NULL)) {
+                    $field['default'] = ' ';
+                }
+            }
+            if (null !== $field['default']) {
+                $default = ' DEFAULT ' . $this->quote($field['default'], $field['type']);
+            }
+        }
+
+        $collation = empty($field['collation']) ? '' :
+            ' '.$this->_getCollationFieldDeclaration($field['collation']);
+
+        return $charset.$default.$notnull.$collation;
+    }
+
+    // }}}
+    // {{{ _getCharsetFieldDeclaration()
+    
+    /**
+     * Obtain DBMS specific SQL code portion needed to set the CHARACTER SET
+     * of a field declaration to be used in statements like CREATE TABLE.
+     *
+     * @param string $charset   name of the charset
+     * @return string  DBMS specific SQL code portion needed to set the CHARACTER SET
+     *                 of a field declaration.
+     */
+    function _getCharsetFieldDeclaration($charset)
+    {
+        return '';
+    }
+
+    // }}}
+    // {{{ _getCollationFieldDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to set the COLLATION
+     * of a field declaration to be used in statements like CREATE TABLE.
+     *
+     * @param string $collation   name of the collation
+     * @return string  DBMS specific SQL code portion needed to set the COLLATION
+     *                 of a field declaration.
+     */
+    function _getCollationFieldDeclaration($collation)
+    {
+        return '';
+    }
+
+    // }}}
+    // {{{ _getIntegerDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare an integer type
+     * field to be used in statements like CREATE TABLE.
+     *
+     * @param string $name name the field to be declared.
+     * @param array $field associative array with the name of the properties
+     *       of the field being declared as array indexes. Currently, the types
+     *       of supported field properties are as follows:
+     *
+     *       unsigned
+     *           Boolean flag that indicates whether the field should be
+     *           declared as unsigned integer if possible.
+     *
+     *       default
+     *           Integer value to be used as default for this field.
+     *
+     *       notnull
+     *           Boolean flag that indicates whether this field is constrained
+     *           to not be set to null.
+     * @return string DBMS specific SQL code portion that should be used to
+     *       declare the specified field.
+     * @access protected
+     */
+    function _getIntegerDeclaration($name, $field)
+    {
+        if (!empty($field['unsigned'])) {
+            $db =& $this->getDBInstance();
+            if (PEAR::isError($db)) {
+                return $db;
+            }
+
+            $db->warnings[] = "unsigned integer field \"$name\" is being declared as signed integer";
+        }
+        return $this->_getDeclaration($name, $field);
+    }
+
+    // }}}
+    // {{{ _getTextDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare an text type
+     * field to be used in statements like CREATE TABLE.
+     *
+     * @param string $name name the field to be declared.
+     * @param array $field associative array with the name of the properties
+     *       of the field being declared as array indexes. Currently, the types
+     *       of supported field properties are as follows:
+     *
+     *       length
+     *           Integer value that determines the maximum length of the text
+     *           field. If this argument is missing the field should be
+     *           declared to have the longest length allowed by the DBMS.
+     *
+     *       default
+     *           Text value to be used as default for this field.
+     *
+     *       notnull
+     *           Boolean flag that indicates whether this field is constrained
+     *           to not be set to null.
+     * @return string DBMS specific SQL code portion that should be used to
+     *       declare the specified field.
+     * @access protected
+     */
+    function _getTextDeclaration($name, $field)
+    {
+        return $this->_getDeclaration($name, $field);
+    }
+
+    // }}}
+    // {{{ _getCLOBDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare an character
+     * large object type field to be used in statements like CREATE TABLE.
+     *
+     * @param string $name name the field to be declared.
+     * @param array $field associative array with the name of the properties
+     *        of the field being declared as array indexes. Currently, the types
+     *        of supported field properties are as follows:
+     *
+     *        length
+     *            Integer value that determines the maximum length of the large
+     *            object field. If this argument is missing the field should be
+     *            declared to have the longest length allowed by the DBMS.
+     *
+     *        notnull
+     *            Boolean flag that indicates whether this field is constrained
+     *            to not be set to null.
+     * @return string DBMS specific SQL code portion that should be used to
+     *        declare the specified field.
+     * @access public
+     */
+    function _getCLOBDeclaration($name, $field)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $notnull = empty($field['notnull']) ? '' : ' NOT NULL';
+        $name = $db->quoteIdentifier($name, true);
+        return $name.' '.$this->getTypeDeclaration($field).$notnull;
+    }
+
+    // }}}
+    // {{{ _getBLOBDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare an binary large
+     * object type field to be used in statements like CREATE TABLE.
+     *
+     * @param string $name name the field to be declared.
+     * @param array $field associative array with the name of the properties
+     *        of the field being declared as array indexes. Currently, the types
+     *        of supported field properties are as follows:
+     *
+     *        length
+     *            Integer value that determines the maximum length of the large
+     *            object field. If this argument is missing the field should be
+     *            declared to have the longest length allowed by the DBMS.
+     *
+     *        notnull
+     *            Boolean flag that indicates whether this field is constrained
+     *            to not be set to null.
+     * @return string DBMS specific SQL code portion that should be used to
+     *        declare the specified field.
+     * @access protected
+     */
+    function _getBLOBDeclaration($name, $field)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $notnull = empty($field['notnull']) ? '' : ' NOT NULL';
+        $name = $db->quoteIdentifier($name, true);
+        return $name.' '.$this->getTypeDeclaration($field).$notnull;
+    }
+
+    // }}}
+    // {{{ _getBooleanDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare a boolean type
+     * field to be used in statements like CREATE TABLE.
+     *
+     * @param string $name name the field to be declared.
+     * @param array $field associative array with the name of the properties
+     *       of the field being declared as array indexes. Currently, the types
+     *       of supported field properties are as follows:
+     *
+     *       default
+     *           Boolean value to be used as default for this field.
+     *
+     *       notnullL
+     *           Boolean flag that indicates whether this field is constrained
+     *           to not be set to null.
+     * @return string DBMS specific SQL code portion that should be used to
+     *       declare the specified field.
+     * @access protected
+     */
+    function _getBooleanDeclaration($name, $field)
+    {
+        return $this->_getDeclaration($name, $field);
+    }
+
+    // }}}
+    // {{{ _getDateDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare a date type
+     * field to be used in statements like CREATE TABLE.
+     *
+     * @param string $name name the field to be declared.
+     * @param array $field associative array with the name of the properties
+     *       of the field being declared as array indexes. Currently, the types
+     *       of supported field properties are as follows:
+     *
+     *       default
+     *           Date value to be used as default for this field.
+     *
+     *       notnull
+     *           Boolean flag that indicates whether this field is constrained
+     *           to not be set to null.
+     * @return string DBMS specific SQL code portion that should be used to
+     *       declare the specified field.
+     * @access protected
+     */
+    function _getDateDeclaration($name, $field)
+    {
+        return $this->_getDeclaration($name, $field);
+    }
+
+    // }}}
+    // {{{ _getTimestampDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare a timestamp
+     * field to be used in statements like CREATE TABLE.
+     *
+     * @param string $name name the field to be declared.
+     * @param array $field associative array with the name of the properties
+     *       of the field being declared as array indexes. Currently, the types
+     *       of supported field properties are as follows:
+     *
+     *       default
+     *           Timestamp value to be used as default for this field.
+     *
+     *       notnull
+     *           Boolean flag that indicates whether this field is constrained
+     *           to not be set to null.
+     * @return string DBMS specific SQL code portion that should be used to
+     *       declare the specified field.
+     * @access protected
+     */
+    function _getTimestampDeclaration($name, $field)
+    {
+        return $this->_getDeclaration($name, $field);
+    }
+
+    // }}}
+    // {{{ _getTimeDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare a time
+     * field to be used in statements like CREATE TABLE.
+     *
+     * @param string $name name the field to be declared.
+     * @param array $field associative array with the name of the properties
+     *       of the field being declared as array indexes. Currently, the types
+     *       of supported field properties are as follows:
+     *
+     *       default
+     *           Time value to be used as default for this field.
+     *
+     *       notnull
+     *           Boolean flag that indicates whether this field is constrained
+     *           to not be set to null.
+     * @return string DBMS specific SQL code portion that should be used to
+     *       declare the specified field.
+     * @access protected
+     */
+    function _getTimeDeclaration($name, $field)
+    {
+        return $this->_getDeclaration($name, $field);
+    }
+
+    // }}}
+    // {{{ _getFloatDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare a float type
+     * field to be used in statements like CREATE TABLE.
+     *
+     * @param string $name name the field to be declared.
+     * @param array $field associative array with the name of the properties
+     *       of the field being declared as array indexes. Currently, the types
+     *       of supported field properties are as follows:
+     *
+     *       default
+     *           Float value to be used as default for this field.
+     *
+     *       notnull
+     *           Boolean flag that indicates whether this field is constrained
+     *           to not be set to null.
+     * @return string DBMS specific SQL code portion that should be used to
+     *       declare the specified field.
+     * @access protected
+     */
+    function _getFloatDeclaration($name, $field)
+    {
+        return $this->_getDeclaration($name, $field);
+    }
+
+    // }}}
+    // {{{ _getDecimalDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare a decimal type
+     * field to be used in statements like CREATE TABLE.
+     *
+     * @param string $name name the field to be declared.
+     * @param array $field associative array with the name of the properties
+     *       of the field being declared as array indexes. Currently, the types
+     *       of supported field properties are as follows:
+     *
+     *       default
+     *           Decimal value to be used as default for this field.
+     *
+     *       notnull
+     *           Boolean flag that indicates whether this field is constrained
+     *           to not be set to null.
+     * @return string DBMS specific SQL code portion that should be used to
+     *       declare the specified field.
+     * @access protected
+     */
+    function _getDecimalDeclaration($name, $field)
+    {
+        return $this->_getDeclaration($name, $field);
+    }
+
+    // }}}
+    // {{{ compareDefinition()
+
+    /**
+     * Obtain an array of changes that may need to applied
+     *
+     * @param array $current new definition
+     * @param array  $previous old definition
+     * @return array  containing all changes that will need to be applied
+     * @access public
+     */
+    function compareDefinition($current, $previous)
+    {
+        $type = !empty($current['type']) ? $current['type'] : null;
+
+        if (!method_exists($this, "_compare{$type}Definition")) {
+            $db =& $this->getDBInstance();
+            if (PEAR::isError($db)) {
+                return $db;
+            }
+            if (!empty($db->options['datatype_map_callback'][$type])) {
+                $parameter = array('current' => $current, 'previous' => $previous);
+                $change =  call_user_func_array($db->options['datatype_map_callback'][$type], array(&$db, __FUNCTION__, $parameter));
+                return $change;
+            }
+            return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                'type "'.$current['type'].'" is not yet supported', __FUNCTION__);
+        }
+
+        if (empty($previous['type']) || $previous['type'] != $type) {
+            return $current;
+        }
+
+        $change = $this->{"_compare{$type}Definition"}($current, $previous);
+
+        if ($previous['type'] != $type) {
+            $change['type'] = true;
+        }
+
+        $previous_notnull = !empty($previous['notnull']) ? $previous['notnull'] : false;
+        $notnull = !empty($current['notnull']) ? $current['notnull'] : false;
+        if ($previous_notnull != $notnull) {
+            $change['notnull'] = true;
+        }
+
+        $previous_default = array_key_exists('default', $previous) ? $previous['default'] :
+            ($previous_notnull ? '' : null);
+        $default = array_key_exists('default', $current) ? $current['default'] :
+            ($notnull ? '' : null);
+        if ($previous_default !== $default) {
+            $change['default'] = true;
+        }
+
+        return $change;
+    }
+
+    // }}}
+    // {{{ _compareIntegerDefinition()
+
+    /**
+     * Obtain an array of changes that may need to applied to an integer field
+     *
+     * @param array $current new definition
+     * @param array  $previous old definition
+     * @return array  containing all changes that will need to be applied
+     * @access protected
+     */
+    function _compareIntegerDefinition($current, $previous)
+    {
+        $change = array();
+        $previous_unsigned = !empty($previous['unsigned']) ? $previous['unsigned'] : false;
+        $unsigned = !empty($current['unsigned']) ? $current['unsigned'] : false;
+        if ($previous_unsigned != $unsigned) {
+            $change['unsigned'] = true;
+        }
+        $previous_autoincrement = !empty($previous['autoincrement']) ? $previous['autoincrement'] : false;
+        $autoincrement = !empty($current['autoincrement']) ? $current['autoincrement'] : false;
+        if ($previous_autoincrement != $autoincrement) {
+            $change['autoincrement'] = true;
+        }
+        return $change;
+    }
+
+    // }}}
+    // {{{ _compareTextDefinition()
+
+    /**
+     * Obtain an array of changes that may need to applied to an text field
+     *
+     * @param array $current new definition
+     * @param array  $previous old definition
+     * @return array  containing all changes that will need to be applied
+     * @access protected
+     */
+    function _compareTextDefinition($current, $previous)
+    {
+        $change = array();
+        $previous_length = !empty($previous['length']) ? $previous['length'] : 0;
+        $length = !empty($current['length']) ? $current['length'] : 0;
+        if ($previous_length != $length) {
+            $change['length'] = true;
+        }
+        $previous_fixed = !empty($previous['fixed']) ? $previous['fixed'] : 0;
+        $fixed = !empty($current['fixed']) ? $current['fixed'] : 0;
+        if ($previous_fixed != $fixed) {
+            $change['fixed'] = true;
+        }
+        return $change;
+    }
+
+    // }}}
+    // {{{ _compareCLOBDefinition()
+
+    /**
+     * Obtain an array of changes that may need to applied to an CLOB field
+     *
+     * @param array $current new definition
+     * @param array  $previous old definition
+     * @return array  containing all changes that will need to be applied
+     * @access protected
+     */
+    function _compareCLOBDefinition($current, $previous)
+    {
+        return $this->_compareTextDefinition($current, $previous);
+    }
+
+    // }}}
+    // {{{ _compareBLOBDefinition()
+
+    /**
+     * Obtain an array of changes that may need to applied to an BLOB field
+     *
+     * @param array $current new definition
+     * @param array  $previous old definition
+     * @return array  containing all changes that will need to be applied
+     * @access protected
+     */
+    function _compareBLOBDefinition($current, $previous)
+    {
+        return $this->_compareTextDefinition($current, $previous);
+    }
+
+    // }}}
+    // {{{ _compareDateDefinition()
+
+    /**
+     * Obtain an array of changes that may need to applied to an date field
+     *
+     * @param array $current new definition
+     * @param array  $previous old definition
+     * @return array  containing all changes that will need to be applied
+     * @access protected
+     */
+    function _compareDateDefinition($current, $previous)
+    {
+        return array();
+    }
+
+    // }}}
+    // {{{ _compareTimeDefinition()
+
+    /**
+     * Obtain an array of changes that may need to applied to an time field
+     *
+     * @param array $current new definition
+     * @param array  $previous old definition
+     * @return array  containing all changes that will need to be applied
+     * @access protected
+     */
+    function _compareTimeDefinition($current, $previous)
+    {
+        return array();
+    }
+
+    // }}}
+    // {{{ _compareTimestampDefinition()
+
+    /**
+     * Obtain an array of changes that may need to applied to an timestamp field
+     *
+     * @param array $current new definition
+     * @param array  $previous old definition
+     * @return array  containing all changes that will need to be applied
+     * @access protected
+     */
+    function _compareTimestampDefinition($current, $previous)
+    {
+        return array();
+    }
+
+    // }}}
+    // {{{ _compareBooleanDefinition()
+
+    /**
+     * Obtain an array of changes that may need to applied to an boolean field
+     *
+     * @param array $current new definition
+     * @param array  $previous old definition
+     * @return array  containing all changes that will need to be applied
+     * @access protected
+     */
+    function _compareBooleanDefinition($current, $previous)
+    {
+        return array();
+    }
+
+    // }}}
+    // {{{ _compareFloatDefinition()
+
+    /**
+     * Obtain an array of changes that may need to applied to an float field
+     *
+     * @param array $current new definition
+     * @param array  $previous old definition
+     * @return array  containing all changes that will need to be applied
+     * @access protected
+     */
+    function _compareFloatDefinition($current, $previous)
+    {
+        return array();
+    }
+
+    // }}}
+    // {{{ _compareDecimalDefinition()
+
+    /**
+     * Obtain an array of changes that may need to applied to an decimal field
+     *
+     * @param array $current new definition
+     * @param array  $previous old definition
+     * @return array  containing all changes that will need to be applied
+     * @access protected
+     */
+    function _compareDecimalDefinition($current, $previous)
+    {
+        return array();
+    }
+
+    // }}}
+    // {{{ quote()
+
+    /**
+     * Convert a text value into a DBMS specific format that is suitable to
+     * compose query statements.
+     *
+     * @param string $value text string value that is intended to be converted.
+     * @param string $type type to which the value should be converted to
+     * @param bool $quote determines if the value should be quoted and escaped
+     * @param bool $escape_wildcards if to escape escape wildcards
+     * @return string text string that represents the given argument value in
+     *       a DBMS specific format.
+     * @access public
+     */
+    function quote($value, $type = null, $quote = true, $escape_wildcards = false)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        if ((null === $value)
+            || ($value === '' && $db->options['portability'] & MDB2_PORTABILITY_EMPTY_TO_NULL)
+        ) {
+            if (!$quote) {
+                return null;
+            }
+            return 'NULL';
+        }
+
+        if (null === $type) {
+            switch (gettype($value)) {
+            case 'integer':
+                $type = 'integer';
+                break;
+            case 'double':
+                // todo: default to decimal as float is quite unusual
+                // $type = 'float';
+                $type = 'decimal';
+                break;
+            case 'boolean':
+                $type = 'boolean';
+                break;
+            case 'array':
+                 $value = serialize($value);
+            case 'object':
+                 $type = 'text';
+                break;
+            default:
+                if (preg_match('/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}$/', $value)) {
+                    $type = 'timestamp';
+                } elseif (preg_match('/^\d{2}:\d{2}$/', $value)) {
+                    $type = 'time';
+                } elseif (preg_match('/^\d{4}-\d{2}-\d{2}$/', $value)) {
+                    $type = 'date';
+                } else {
+                    $type = 'text';
+                }
+                break;
+            }
+        } elseif (!empty($db->options['datatype_map'][$type])) {
+            $type = $db->options['datatype_map'][$type];
+            if (!empty($db->options['datatype_map_callback'][$type])) {
+                $parameter = array('type' => $type, 'value' => $value, 'quote' => $quote, 'escape_wildcards' => $escape_wildcards);
+                return call_user_func_array($db->options['datatype_map_callback'][$type], array(&$db, __FUNCTION__, $parameter));
+            }
+        }
+
+        if (!method_exists($this, "_quote{$type}")) {
+            return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                'type not defined: '.$type, __FUNCTION__);
+        }
+        $value = $this->{"_quote{$type}"}($value, $quote, $escape_wildcards);
+        if ($quote && $escape_wildcards && $db->string_quoting['escape_pattern']
+            && $db->string_quoting['escape'] !== $db->string_quoting['escape_pattern']
+        ) {
+            $value.= $this->patternEscapeString();
+        }
+        return $value;
+    }
+
+    // }}}
+    // {{{ _quoteInteger()
+
+    /**
+     * Convert a text value into a DBMS specific format that is suitable to
+     * compose query statements.
+     *
+     * @param string $value text string value that is intended to be converted.
+     * @param bool $quote determines if the value should be quoted and escaped
+     * @param bool $escape_wildcards if to escape escape wildcards
+     * @return string text string that represents the given argument value in
+     *       a DBMS specific format.
+     * @access protected
+     */
+    function _quoteInteger($value, $quote, $escape_wildcards)
+    {
+        return (int)$value;
+    }
+
+    // }}}
+    // {{{ _quoteText()
+
+    /**
+     * Convert a text value into a DBMS specific format that is suitable to
+     * compose query statements.
+     *
+     * @param string $value text string value that is intended to be converted.
+     * @param bool $quote determines if the value should be quoted and escaped
+     * @param bool $escape_wildcards if to escape escape wildcards
+     * @return string text string that already contains any DBMS specific
+     *       escaped character sequences.
+     * @access protected
+     */
+    function _quoteText($value, $quote, $escape_wildcards)
+    {
+        if (!$quote) {
+            return $value;
+        }
+
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $value = $db->escape($value, $escape_wildcards);
+        if (PEAR::isError($value)) {
+            return $value;
+        }
+        return "'".$value."'";
+    }
+
+    // }}}
+    // {{{ _readFile()
+
+    /**
+     * Convert a text value into a DBMS specific format that is suitable to
+     * compose query statements.
+     *
+     * @param string $value text string value that is intended to be converted.
+     * @return string text string that represents the given argument value in
+     *       a DBMS specific format.
+     * @access protected
+     */
+    function _readFile($value)
+    {
+        $close = false;
+        if (preg_match('/^(\w+:\/\/)(.*)$/', $value, $match)) {
+            $close = true;
+            if ($match[1] == 'file://') {
+                $value = $match[2];
+            }
+            $value = @fopen($value, 'r');
+        }
+
+        if (is_resource($value)) {
+            $db =& $this->getDBInstance();
+            if (PEAR::isError($db)) {
+                return $db;
+            }
+
+            $fp = $value;
+            $value = '';
+            while (!@feof($fp)) {
+                $value.= @fread($fp, $db->options['lob_buffer_length']);
+            }
+            if ($close) {
+                @fclose($fp);
+            }
+        }
+
+        return $value;
+    }
+
+    // }}}
+    // {{{ _quoteLOB()
+
+    /**
+     * Convert a text value into a DBMS specific format that is suitable to
+     * compose query statements.
+     *
+     * @param string $value text string value that is intended to be converted.
+     * @param bool $quote determines if the value should be quoted and escaped
+     * @param bool $escape_wildcards if to escape escape wildcards
+     * @return string text string that represents the given argument value in
+     *       a DBMS specific format.
+     * @access protected
+     */
+    function _quoteLOB($value, $quote, $escape_wildcards)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+        if ($db->options['lob_allow_url_include']) {
+            $value = $this->_readFile($value);
+            if (PEAR::isError($value)) {
+                return $value;
+            }
+        }
+        return $this->_quoteText($value, $quote, $escape_wildcards);
+    }
+
+    // }}}
+    // {{{ _quoteCLOB()
+
+    /**
+     * Convert a text value into a DBMS specific format that is suitable to
+     * compose query statements.
+     *
+     * @param string $value text string value that is intended to be converted.
+     * @param bool $quote determines if the value should be quoted and escaped
+     * @param bool $escape_wildcards if to escape escape wildcards
+     * @return string text string that represents the given argument value in
+     *       a DBMS specific format.
+     * @access protected
+     */
+    function _quoteCLOB($value, $quote, $escape_wildcards)
+    {
+        return $this->_quoteLOB($value, $quote, $escape_wildcards);
+    }
+
+    // }}}
+    // {{{ _quoteBLOB()
+
+    /**
+     * Convert a text value into a DBMS specific format that is suitable to
+     * compose query statements.
+     *
+     * @param string $value text string value that is intended to be converted.
+     * @param bool $quote determines if the value should be quoted and escaped
+     * @param bool $escape_wildcards if to escape escape wildcards
+     * @return string text string that represents the given argument value in
+     *       a DBMS specific format.
+     * @access protected
+     */
+    function _quoteBLOB($value, $quote, $escape_wildcards)
+    {
+        return $this->_quoteLOB($value, $quote, $escape_wildcards);
+    }
+
+    // }}}
+    // {{{ _quoteBoolean()
+
+    /**
+     * Convert a text value into a DBMS specific format that is suitable to
+     * compose query statements.
+     *
+     * @param string $value text string value that is intended to be converted.
+     * @param bool $quote determines if the value should be quoted and escaped
+     * @param bool $escape_wildcards if to escape escape wildcards
+     * @return string text string that represents the given argument value in
+     *       a DBMS specific format.
+     * @access protected
+     */
+    function _quoteBoolean($value, $quote, $escape_wildcards)
+    {
+        return ($value ? 1 : 0);
+    }
+
+    // }}}
+    // {{{ _quoteDate()
+
+    /**
+     * Convert a text value into a DBMS specific format that is suitable to
+     * compose query statements.
+     *
+     * @param string $value text string value that is intended to be converted.
+     * @param bool $quote determines if the value should be quoted and escaped
+     * @param bool $escape_wildcards if to escape escape wildcards
+     * @return string text string that represents the given argument value in
+     *       a DBMS specific format.
+     * @access protected
+     */
+    function _quoteDate($value, $quote, $escape_wildcards)
+    {
+        if ($value === 'CURRENT_DATE') {
+            $db =& $this->getDBInstance();
+            if (PEAR::isError($db)) {
+                return $db;
+            }
+            if (isset($db->function) && is_object($db->function) && is_a($db->function, 'MDB2_Driver_Function_Common')) {
+                return $db->function->now('date');
+            }
+            return 'CURRENT_DATE';
+        }
+        return $this->_quoteText($value, $quote, $escape_wildcards);
+    }
+
+    // }}}
+    // {{{ _quoteTimestamp()
+
+    /**
+     * Convert a text value into a DBMS specific format that is suitable to
+     * compose query statements.
+     *
+     * @param string $value text string value that is intended to be converted.
+     * @param bool $quote determines if the value should be quoted and escaped
+     * @param bool $escape_wildcards if to escape escape wildcards
+     * @return string text string that represents the given argument value in
+     *       a DBMS specific format.
+     * @access protected
+     */
+    function _quoteTimestamp($value, $quote, $escape_wildcards)
+    {
+        if ($value === 'CURRENT_TIMESTAMP') {
+            $db =& $this->getDBInstance();
+            if (PEAR::isError($db)) {
+                return $db;
+            }
+            if (isset($db->function) && is_object($db->function) && is_a($db->function, 'MDB2_Driver_Function_Common')) {
+                return $db->function->now('timestamp');
+            }
+            return 'CURRENT_TIMESTAMP';
+        }
+        return $this->_quoteText($value, $quote, $escape_wildcards);
+    }
+
+    // }}}
+    // {{{ _quoteTime()
+
+    /**
+     * Convert a text value into a DBMS specific format that is suitable to
+     *       compose query statements.
+     *
+     * @param string $value text string value that is intended to be converted.
+     * @param bool $quote determines if the value should be quoted and escaped
+     * @param bool $escape_wildcards if to escape escape wildcards
+     * @return string text string that represents the given argument value in
+     *       a DBMS specific format.
+     * @access protected
+     */
+    function _quoteTime($value, $quote, $escape_wildcards)
+    {
+        if ($value === 'CURRENT_TIME') {
+            $db =& $this->getDBInstance();
+            if (PEAR::isError($db)) {
+                return $db;
+            }
+            if (isset($db->function) && is_object($db->function) && is_a($db->function, 'MDB2_Driver_Function_Common')) {
+                return $db->function->now('time');
+            }
+            return 'CURRENT_TIME';
+        }
+        return $this->_quoteText($value, $quote, $escape_wildcards);
+    }
+
+    // }}}
+    // {{{ _quoteFloat()
+
+    /**
+     * Convert a text value into a DBMS specific format that is suitable to
+     * compose query statements.
+     *
+     * @param string $value text string value that is intended to be converted.
+     * @param bool $quote determines if the value should be quoted and escaped
+     * @param bool $escape_wildcards if to escape escape wildcards
+     * @return string text string that represents the given argument value in
+     *       a DBMS specific format.
+     * @access protected
+     */
+    function _quoteFloat($value, $quote, $escape_wildcards)
+    {
+        if (preg_match('/^(.*)e([-+])(\d+)$/i', $value, $matches)) {
+            $decimal = $this->_quoteDecimal($matches[1], $quote, $escape_wildcards);
+            $sign = $matches[2];
+            $exponent = str_pad($matches[3], 2, '0', STR_PAD_LEFT);
+            $value = $decimal.'E'.$sign.$exponent;
+        } else {
+            $value = $this->_quoteDecimal($value, $quote, $escape_wildcards);
+        }
+        return $value;
+    }
+
+    // }}}
+    // {{{ _quoteDecimal()
+
+    /**
+     * Convert a text value into a DBMS specific format that is suitable to
+     * compose query statements.
+     *
+     * @param string $value text string value that is intended to be converted.
+     * @param bool $quote determines if the value should be quoted and escaped
+     * @param bool $escape_wildcards if to escape escape wildcards
+     * @return string text string that represents the given argument value in
+     *       a DBMS specific format.
+     * @access protected
+     */
+    function _quoteDecimal($value, $quote, $escape_wildcards)
+    {
+        $value = (string)$value;
+        $value = preg_replace('/[^\d\.,\-+eE]/', '', $value);
+        if (preg_match('/[^\.\d]/', $value)) {
+            if (strpos($value, ',')) {
+                // 1000,00
+                if (!strpos($value, '.')) {
+                    // convert the last "," to a "."
+                    $value = strrev(str_replace(',', '.', strrev($value)));
+                // 1.000,00
+                } elseif (strpos($value, '.') && strpos($value, '.') < strpos($value, ',')) {
+                    $value = str_replace('.', '', $value);
+                    // convert the last "," to a "."
+                    $value = strrev(str_replace(',', '.', strrev($value)));
+                // 1,000.00
+                } else {
+                    $value = str_replace(',', '', $value);
+                }
+            }
+        }
+        return $value;
+    }
+
+    // }}}
+    // {{{ writeLOBToFile()
+
+    /**
+     * retrieve LOB from the database
+     *
+     * @param resource $lob stream handle
+     * @param string $file name of the file into which the LOb should be fetched
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access protected
+     */
+    function writeLOBToFile($lob, $file)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        if (preg_match('/^(\w+:\/\/)(.*)$/', $file, $match)) {
+            if ($match[1] == 'file://') {
+                $file = $match[2];
+            }
+        }
+
+        $fp = @fopen($file, 'wb');
+        while (!@feof($lob)) {
+            $result = @fread($lob, $db->options['lob_buffer_length']);
+            $read = strlen($result);
+            if (@fwrite($fp, $result, $read) != $read) {
+                @fclose($fp);
+                return $db->raiseError(MDB2_ERROR, null, null,
+                    'could not write to the output file', __FUNCTION__);
+            }
+        }
+        @fclose($fp);
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ _retrieveLOB()
+
+    /**
+     * retrieve LOB from the database
+     *
+     * @param array $lob array
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access protected
+     */
+    function _retrieveLOB(&$lob)
+    {
+        if (null === $lob['value']) {
+            $lob['value'] = $lob['resource'];
+        }
+        $lob['loaded'] = true;
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ readLOB()
+
+    /**
+     * Read data from large object input stream.
+     *
+     * @param resource $lob stream handle
+     * @param string $data reference to a variable that will hold data
+     *                          to be read from the large object input stream
+     * @param integer $length    value that indicates the largest ammount ofdata
+     *                          to be read from the large object input stream.
+     * @return mixed the effective number of bytes read from the large object
+     *                      input stream on sucess or an MDB2 error object.
+     * @access public
+     * @see endOfLOB()
+     */
+    function _readLOB($lob, $length)
+    {
+        return substr($lob['value'], $lob['position'], $length);
+    }
+
+    // }}}
+    // {{{ _endOfLOB()
+
+    /**
+     * Determine whether it was reached the end of the large object and
+     * therefore there is no more data to be read for the its input stream.
+     *
+     * @param array $lob array
+     * @return mixed true or false on success, a MDB2 error on failure
+     * @access protected
+     */
+    function _endOfLOB($lob)
+    {
+        return $lob['endOfLOB'];
+    }
+
+    // }}}
+    // {{{ destroyLOB()
+
+    /**
+     * Free any resources allocated during the lifetime of the large object
+     * handler object.
+     *
+     * @param resource $lob stream handle
+     * @access public
+     */
+    function destroyLOB($lob)
+    {
+        $lob_data = stream_get_meta_data($lob);
+        $lob_index = $lob_data['wrapper_data']->lob_index;
+        fclose($lob);
+        if (isset($this->lobs[$lob_index])) {
+            $this->_destroyLOB($this->lobs[$lob_index]);
+            unset($this->lobs[$lob_index]);
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ _destroyLOB()
+
+    /**
+     * Free any resources allocated during the lifetime of the large object
+     * handler object.
+     *
+     * @param array $lob array
+     * @access private
+     */
+    function _destroyLOB(&$lob)
+    {
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ implodeArray()
+
+    /**
+     * apply a type to all values of an array and return as a comma seperated string
+     * useful for generating IN statements
+     *
+     * @access public
+     *
+     * @param array $array data array
+     * @param string $type determines type of the field
+     *
+     * @return string comma seperated values
+     */
+    function implodeArray($array, $type = false)
+    {
+        if (!is_array($array) || empty($array)) {
+            return 'NULL';
+        }
+        if ($type) {
+            foreach ($array as $value) {
+                $return[] = $this->quote($value, $type);
+            }
+        } else {
+            $return = $array;
+        }
+        return implode(', ', $return);
+    }
+
+    // }}}
+    // {{{ matchPattern()
+
+    /**
+     * build a pattern matching string
+     *
+     * @access public
+     *
+     * @param array $pattern even keys are strings, odd are patterns (% and _)
+     * @param string $operator optional pattern operator (LIKE, ILIKE and maybe others in the future)
+     * @param string $field optional field name that is being matched against
+     *                  (might be required when emulating ILIKE)
+     *
+     * @return string SQL pattern
+     */
+    function matchPattern($pattern, $operator = null, $field = null)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $match = '';
+        if (null !== $operator) {
+            $operator = strtoupper($operator);
+            switch ($operator) {
+            // case insensitive
+            case 'ILIKE':
+                if (null === $field) {
+                    return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                        'case insensitive LIKE matching requires passing the field name', __FUNCTION__);
+                }
+                $db->loadModule('Function', null, true);
+                $match = $db->function->lower($field).' LIKE ';
+                break;
+            case 'NOT ILIKE':
+                if (null === $field) {
+                    return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                        'case insensitive NOT ILIKE matching requires passing the field name', __FUNCTION__);
+                }
+                $db->loadModule('Function', null, true);
+                $match = $db->function->lower($field).' NOT LIKE ';
+                break;
+            // case sensitive
+            case 'LIKE':
+                $match = (null === $field) ? 'LIKE ' : ($field.' LIKE ');
+                break;
+            case 'NOT LIKE':
+                $match = (null === $field) ? 'NOT LIKE ' : ($field.' NOT LIKE ');
+                break;
+            default:
+                return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                    'not a supported operator type:'. $operator, __FUNCTION__);
+            }
+        }
+        $match.= "'";
+        foreach ($pattern as $key => $value) {
+            if ($key % 2) {
+                $match.= $value;
+            } else {
+                $escaped = $db->escape($value);
+                if (PEAR::isError($escaped)) {
+                    return $escaped;
+                }
+                $match.= $db->escapePattern($escaped);
+            }
+        }
+        $match.= "'";
+        $match.= $this->patternEscapeString();
+        return $match;
+    }
+
+    // }}}
+    // {{{ patternEscapeString()
+
+    /**
+     * build string to define pattern escape character
+     *
+     * @access public
+     *
+     * @return string define pattern escape character
+     */
+    function patternEscapeString()
+    {
+        return '';
+    }
+
+    // }}}
+    // {{{ mapNativeDatatype()
+
+    /**
+     * Maps a native array description of a field to a MDB2 datatype and length
+     *
+     * @param array  $field native field description
+     * @return array containing the various possible types, length, sign, fixed
+     * @access public
+     */
+    function mapNativeDatatype($field)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        // If the user has specified an option to map the native field
+        // type to a custom MDB2 datatype...
+        $db_type = strtok($field['type'], '(), ');
+        if (!empty($db->options['nativetype_map_callback'][$db_type])) {
+            return call_user_func_array($db->options['nativetype_map_callback'][$db_type], array($db, $field));
+        }
+
+        // Otherwise perform the built-in (i.e. normal) MDB2 native type to
+        // MDB2 datatype conversion
+        return $this->_mapNativeDatatype($field);
+    }
+
+    // }}}
+    // {{{ _mapNativeDatatype()
+
+    /**
+     * Maps a native array description of a field to a MDB2 datatype and length
+     *
+     * @param array  $field native field description
+     * @return array containing the various possible types, length, sign, fixed
+     * @access public
+     */
+    function _mapNativeDatatype($field)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ mapPrepareDatatype()
+
+    /**
+     * Maps an mdb2 datatype to mysqli prepare type
+     *
+     * @param string $type
+     * @return string
+     * @access public
+     */
+    function mapPrepareDatatype($type)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        if (!empty($db->options['datatype_map'][$type])) {
+            $type = $db->options['datatype_map'][$type];
+            if (!empty($db->options['datatype_map_callback'][$type])) {
+                $parameter = array('type' => $type);
+                return call_user_func_array($db->options['datatype_map_callback'][$type], array(&$db, __FUNCTION__, $parameter));
+            }
+        }
+
+        return $type;
+    }
+}
+?>
diff --git a/program/lib/MDB2/Driver/Datatype/mssql.php b/program/lib/MDB2/Driver/Datatype/mssql.php
new file mode 100644 (file)
index 0000000..b0db705
--- /dev/null
@@ -0,0 +1,496 @@
+<?php
+// vim: set et ts=4 sw=4 fdm=marker:
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2007 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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.                                          |
+// +----------------------------------------------------------------------+
+// | Authors: Lukas Smith <smith@pooteeweet.org>                          |
+// |          Daniel Convissor <danielc@php.net>                          |
+// +----------------------------------------------------------------------+
+//
+// $Id: mssql.php 295587 2010-02-28 17:16:38Z quipo $
+//
+
+require_once 'MDB2/Driver/Datatype/Common.php';
+
+/**
+ * MDB2 MS SQL driver
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Driver_Datatype_mssql extends MDB2_Driver_Datatype_Common
+{
+    // {{{ _baseConvertResult()
+
+    /**
+     * general type conversion method
+     *
+     * @param mixed   $value refernce to a value to be converted
+     * @param string  $type  specifies which type to convert to
+     * @param boolean $rtrim [optional] when TRUE [default], apply rtrim() to text
+     * @return object a MDB2 error on failure
+     * @access protected
+     */
+    function _baseConvertResult($value, $type, $rtrim = true)
+    {
+        if (null === $value) {
+            return null;
+        }
+        switch ($type) {
+        case 'boolean':
+            return $value == '1';
+        case 'date':
+            if (strlen($value) > 10) {
+                $value = substr($value,0,10);
+            }
+            return $value;
+        case 'time':
+            if (strlen($value) > 8) {
+                $value = substr($value,11,8);
+            }
+            return $value;
+        }
+        return parent::_baseConvertResult($value, $type, $rtrim);
+    }
+
+    // }}}
+    // {{{ _getCollationFieldDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to set the COLLATION
+     * of a field declaration to be used in statements like CREATE TABLE.
+     *
+     * @param string $collation name of the collation
+     *
+     * @return string DBMS specific SQL code portion needed to set the COLLATION
+     *                of a field declaration.
+     */
+    function _getCollationFieldDeclaration($collation)
+    {
+        return 'COLLATE '.$collation;
+    }
+
+    // }}}
+    // {{{ getTypeDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare an text type
+     * field to be used in statements like CREATE TABLE.
+     *
+     * @param array $field  associative array with the name of the properties
+     *      of the field being declared as array indexes. Currently, the types
+     *      of supported field properties are as follows:
+     *
+     *      length
+     *          Integer value that determines the maximum length of the text
+     *          field. If this argument is missing the field should be
+     *          declared to have the longest length allowed by the DBMS.
+     *
+     *      default
+     *          Text value to be used as default for this field.
+     *
+     *      notnull
+     *          Boolean flag that indicates whether this field is constrained
+     *          to not be set to null.
+     * @return string  DBMS specific SQL code portion that should be used to
+     *      declare the specified field.
+     * @access public
+     */
+    function getTypeDeclaration($field)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        switch ($field['type']) {
+        case 'text':
+            $length = !empty($field['length'])
+                ? $field['length'] : false;
+            $fixed = !empty($field['fixed']) ? $field['fixed'] : false;
+            return $fixed ? ($length ? 'CHAR('.$length.')' : 'CHAR('.$db->options['default_text_field_length'].')')
+                : ($length ? 'VARCHAR('.$length.')' : 'TEXT');
+        case 'clob':
+            if (!empty($field['length'])) {
+                $length = $field['length'];
+                if ($length <= 8000) {
+                    return 'VARCHAR('.$length.')';
+                }
+             }
+             return 'TEXT';
+        case 'blob':
+            if (!empty($field['length'])) {
+                $length = $field['length'];
+                if ($length <= 8000) {
+                    return "VARBINARY($length)";
+                }
+            }
+            return 'IMAGE';
+        case 'integer':
+            return 'INT';
+        case 'boolean':
+            return 'BIT';
+        case 'date':
+            return 'CHAR ('.strlen('YYYY-MM-DD').')';
+        case 'time':
+            return 'CHAR ('.strlen('HH:MM:SS').')';
+        case 'timestamp':
+            return 'CHAR ('.strlen('YYYY-MM-DD HH:MM:SS').')';
+        case 'float':
+            return 'FLOAT';
+        case 'decimal':
+            $length = !empty($field['length']) ? $field['length'] : 18;
+            $scale = !empty($field['scale']) ? $field['scale'] : $db->options['decimal_places'];
+            return 'DECIMAL('.$length.','.$scale.')';
+        }
+        return '';
+    }
+
+    // }}}
+    // {{{ _getIntegerDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare an integer type
+     * field to be used in statements like CREATE TABLE.
+     *
+     * @param string  $name   name the field to be declared.
+     * @param string  $field  associative array with the name of the properties
+     *                        of the field being declared as array indexes.
+     *                        Currently, the types of supported field
+     *                        properties are as follows:
+     *
+     *                       unsigned
+     *                        Boolean flag that indicates whether the field
+     *                        should be declared as unsigned integer if
+     *                        possible.
+     *
+     *                       default
+     *                        Integer value to be used as default for this
+     *                        field.
+     *
+     *                       notnull
+     *                        Boolean flag that indicates whether this field is
+     *                        constrained to not be set to null.
+     * @return string  DBMS specific SQL code portion that should be used to
+     *                 declare the specified field.
+     * @access protected
+     */
+    function _getIntegerDeclaration($name, $field)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $notnull = empty($field['notnull']) ? ' NULL' : ' NOT NULL';
+        $default = $autoinc = '';
+        if (!empty($field['autoincrement'])) {
+            $autoinc = ' IDENTITY PRIMARY KEY';
+        } elseif (array_key_exists('default', $field)) {
+            if ($field['default'] === '') {
+                $field['default'] = 0;
+            }
+            if (null === $field['default']) {
+                $default = ' DEFAULT (null)';
+            } else {
+                $default = ' DEFAULT (' . $this->quote($field['default'], 'integer') . ')';
+            }
+        }
+
+        if (!empty($field['unsigned'])) {
+            $db->warnings[] = "unsigned integer field \"$name\" is being declared as signed integer";
+        }
+
+        $name = $db->quoteIdentifier($name, true);
+        return $name.' '.$this->getTypeDeclaration($field).$notnull.$default.$autoinc;
+    }
+
+    // }}}
+    // {{{ _getCLOBDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare an character
+     * large object type field to be used in statements like CREATE TABLE.
+     *
+     * @param string $name name the field to be declared.
+     * @param array $field associative array with the name of the properties
+     *        of the field being declared as array indexes. Currently, the types
+     *        of supported field properties are as follows:
+     *
+     *        length
+     *            Integer value that determines the maximum length of the large
+     *            object field. If this argument is missing the field should be
+     *            declared to have the longest length allowed by the DBMS.
+     *
+     *        notnull
+     *            Boolean flag that indicates whether this field is constrained
+     *            to not be set to null.
+     * @return string DBMS specific SQL code portion that should be used to
+     *        declare the specified field.
+     * @access public
+     */
+    function _getCLOBDeclaration($name, $field)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $notnull = empty($field['notnull']) ? ' NULL' : ' NOT NULL';
+        $name = $db->quoteIdentifier($name, true);
+        return $name.' '.$this->getTypeDeclaration($field).$notnull;
+    }
+
+    // }}}
+    // {{{ _getBLOBDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare an binary large
+     * object type field to be used in statements like CREATE TABLE.
+     *
+     * @param string $name name the field to be declared.
+     * @param array $field associative array with the name of the properties
+     *        of the field being declared as array indexes. Currently, the types
+     *        of supported field properties are as follows:
+     *
+     *        length
+     *            Integer value that determines the maximum length of the large
+     *            object field. If this argument is missing the field should be
+     *            declared to have the longest length allowed by the DBMS.
+     *
+     *        notnull
+     *            Boolean flag that indicates whether this field is constrained
+     *            to not be set to null.
+     * @return string DBMS specific SQL code portion that should be used to
+     *        declare the specified field.
+     * @access protected
+     */
+    function _getBLOBDeclaration($name, $field)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $notnull = empty($field['notnull']) ? ' NULL' : ' NOT NULL';
+        $name = $db->quoteIdentifier($name, true);
+        return $name.' '.$this->getTypeDeclaration($field).$notnull;
+    }
+
+    // }}}
+    // {{{ _quoteBLOB()
+
+    /**
+     * Convert a text value into a DBMS specific format that is suitable to
+     * compose query statements.
+     *
+     * @param string $value text string value that is intended to be converted.
+     * @param bool $quote determines if the value should be quoted and escaped
+     * @param bool $escape_wildcards if to escape escape wildcards
+     * @return string  text string that represents the given argument value in
+     *                 a DBMS specific format.
+     * @access protected
+     */
+    function _quoteBLOB($value, $quote, $escape_wildcards)
+    {
+        if (!$quote) {
+            return $value;
+        }
+        $value = '0x'.bin2hex($this->_readFile($value));
+        return $value;
+    }
+
+    // }}}
+    // {{{ matchPattern()
+
+    /**
+     * build a pattern matching string
+     *
+     * @access public
+     *
+     * @param array $pattern even keys are strings, odd are patterns (% and _)
+     * @param string $operator optional pattern operator (LIKE, ILIKE and maybe others in the future)
+     * @param string $field optional field name that is being matched against
+     *                  (might be required when emulating ILIKE)
+     *
+     * @return string SQL pattern
+     */
+    function matchPattern($pattern, $operator = null, $field = null)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $match = '';
+        if (null !== $operator) {
+            $field = (null === $field) ? '' : $field.' ';
+            $operator = strtoupper($operator);
+            switch ($operator) {
+            // case insensitive
+            case 'ILIKE':
+                $match = $field.'LIKE ';
+                break;
+            case 'NOT ILIKE':
+                $match = $field.'NOT LIKE ';
+                break;
+            // case sensitive
+            case 'LIKE':
+                $match = $field.'LIKE ';
+                break;
+            case 'NOT LIKE':
+                $match = $field.'NOT LIKE ';
+                break;
+            default:
+                return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                    'not a supported operator type:'. $operator, __FUNCTION__);
+            }
+        }
+        $match.= "'";
+        foreach ($pattern as $key => $value) {
+            if ($key % 2) {
+                $match.= $value;
+            } else {
+                $match.= $db->escapePattern($db->escape($value));
+            }
+        }
+        $match.= "'";
+        $match.= $this->patternEscapeString();
+        return $match;
+    }
+
+    // }}}
+    // {{{ _mapNativeDatatype()
+
+    /**
+     * Maps a native array description of a field to a MDB2 datatype and length
+     *
+     * @param array  $field native field description
+     * @return array containing the various possible types, length, sign, fixed
+     * @access public
+     */
+    function _mapNativeDatatype($field)
+    {
+        // todo: handle length of various int variations
+        $db_type = preg_replace('/\d/', '', strtolower($field['type']));
+        $length = $field['length'];
+        $type = array();
+        // todo: unsigned handling seems to be missing
+        $unsigned = $fixed = null;
+        switch ($db_type) {
+        case 'bit':
+            $type[0] = 'boolean';
+            break;
+        case 'tinyint':
+            $type[0] = 'integer';
+            $length = 1;
+            break;
+        case 'smallint':
+            $type[0] = 'integer';
+            $length = 2;
+            break;
+        case 'int':
+            $type[0] = 'integer';
+            $length = 4;
+            break;
+        case 'bigint':
+            $type[0] = 'integer';
+            $length = 8;
+            break;
+        case 'smalldatetime':
+        case 'datetime':
+            $type[0] = 'timestamp';
+            break;
+        case 'float':
+        case 'real':
+        case 'numeric':
+            $type[0] = 'float';
+            break;
+        case 'decimal':
+        case 'money':
+            $type[0] = 'decimal';
+            $length = $field['numeric_precision'].','.$field['numeric_scale'];
+            break;
+        case 'text':
+        case 'ntext':
+        case 'varchar':
+        case 'nvarchar':
+            $fixed = false;
+        case 'char':
+        case 'nchar':
+            $type[0] = 'text';
+            if ($length == '1') {
+                $type[] = 'boolean';
+                if (preg_match('/^(is|has)/', $field['name'])) {
+                    $type = array_reverse($type);
+                }
+            } elseif (strstr($db_type, 'text')) {
+                $type[] = 'clob';
+                $type = array_reverse($type);
+            }
+            if ($fixed !== false) {
+                $fixed = true;
+            }
+            break;
+        case 'image':
+        case 'varbinary':
+            $type[] = 'blob';
+            $length = null;
+            break;
+        default:
+            $db = $this->getDBInstance();
+            if (PEAR::isError($db)) {
+                return $db;
+            }
+            return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                'unknown database attribute type: '.$db_type, __FUNCTION__);
+        }
+
+        if ((int)$length <= 0) {
+            $length = null;
+        }
+
+        return array($type, $length, $unsigned, $fixed);
+    }
+    // }}}
+}
+
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Datatype/mysql.php b/program/lib/MDB2/Driver/Datatype/mysql.php
new file mode 100644 (file)
index 0000000..055e010
--- /dev/null
@@ -0,0 +1,562 @@
+<?php
+// vim: set et ts=4 sw=4 fdm=marker:
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2008 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Lukas Smith <smith@pooteeweet.org>                           |
+// +----------------------------------------------------------------------+
+//
+// $Id: mysql.php 295587 2010-02-28 17:16:38Z quipo $
+//
+
+require_once 'MDB2/Driver/Datatype/Common.php';
+
+/**
+ * MDB2 MySQL driver
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Driver_Datatype_mysql extends MDB2_Driver_Datatype_Common
+{
+    // {{{ _getCharsetFieldDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to set the CHARACTER SET
+     * of a field declaration to be used in statements like CREATE TABLE.
+     *
+     * @param string $charset   name of the charset
+     * @return string  DBMS specific SQL code portion needed to set the CHARACTER SET
+     *                 of a field declaration.
+     */
+    function _getCharsetFieldDeclaration($charset)
+    {
+        return 'CHARACTER SET '.$charset;
+    }
+
+    // }}}
+    // {{{ _getCollationFieldDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to set the COLLATION
+     * of a field declaration to be used in statements like CREATE TABLE.
+     *
+     * @param string $collation   name of the collation
+     * @return string  DBMS specific SQL code portion needed to set the COLLATION
+     *                 of a field declaration.
+     */
+    function _getCollationFieldDeclaration($collation)
+    {
+        return 'COLLATE '.$collation;
+    }
+
+    // }}}
+    // {{{ getTypeDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare an text type
+     * field to be used in statements like CREATE TABLE.
+     *
+     * @param array $field  associative array with the name of the properties
+     *      of the field being declared as array indexes. Currently, the types
+     *      of supported field properties are as follows:
+     *
+     *      length
+     *          Integer value that determines the maximum length of the text
+     *          field. If this argument is missing the field should be
+     *          declared to have the longest length allowed by the DBMS.
+     *
+     *      default
+     *          Text value to be used as default for this field.
+     *
+     *      notnull
+     *          Boolean flag that indicates whether this field is constrained
+     *          to not be set to null.
+     * @return string  DBMS specific SQL code portion that should be used to
+     *      declare the specified field.
+     * @access public
+     */
+    function getTypeDeclaration($field)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        switch ($field['type']) {
+        case 'text':
+            if (empty($field['length']) && array_key_exists('default', $field)) {
+                $field['length'] = $db->varchar_max_length;
+            }
+            $length = !empty($field['length']) ? $field['length'] : false;
+            $fixed = !empty($field['fixed']) ? $field['fixed'] : false;
+            return $fixed ? ($length ? 'CHAR('.$length.')' : 'CHAR(255)')
+                : ($length ? 'VARCHAR('.$length.')' : 'TEXT');
+        case 'clob':
+            if (!empty($field['length'])) {
+                $length = $field['length'];
+                if ($length <= 255) {
+                    return 'TINYTEXT';
+                } elseif ($length <= 65532) {
+                    return 'TEXT';
+                } elseif ($length <= 16777215) {
+                    return 'MEDIUMTEXT';
+                }
+            }
+            return 'LONGTEXT';
+        case 'blob':
+            if (!empty($field['length'])) {
+                $length = $field['length'];
+                if ($length <= 255) {
+                    return 'TINYBLOB';
+                } elseif ($length <= 65532) {
+                    return 'BLOB';
+                } elseif ($length <= 16777215) {
+                    return 'MEDIUMBLOB';
+                }
+            }
+            return 'LONGBLOB';
+        case 'integer':
+            if (!empty($field['length'])) {
+                $length = $field['length'];
+                if ($length <= 1) {
+                    return 'TINYINT';
+                } elseif ($length == 2) {
+                    return 'SMALLINT';
+                } elseif ($length == 3) {
+                    return 'MEDIUMINT';
+                } elseif ($length == 4) {
+                    return 'INT';
+                } elseif ($length > 4) {
+                    return 'BIGINT';
+                }
+            }
+            return 'INT';
+        case 'boolean':
+            return 'TINYINT(1)';
+        case 'date':
+            return 'DATE';
+        case 'time':
+            return 'TIME';
+        case 'timestamp':
+            return 'DATETIME';
+        case 'float':
+            return 'DOUBLE';
+        case 'decimal':
+            $length = !empty($field['length']) ? $field['length'] : 18;
+            $scale = !empty($field['scale']) ? $field['scale'] : $db->options['decimal_places'];
+            return 'DECIMAL('.$length.','.$scale.')';
+        }
+        return '';
+    }
+
+    // }}}
+    // {{{ _getIntegerDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare an integer type
+     * field to be used in statements like CREATE TABLE.
+     *
+     * @param string  $name   name the field to be declared.
+     * @param string  $field  associative array with the name of the properties
+     *                        of the field being declared as array indexes.
+     *                        Currently, the types of supported field
+     *                        properties are as follows:
+     *
+     *                       unsigned
+     *                        Boolean flag that indicates whether the field
+     *                        should be declared as unsigned integer if
+     *                        possible.
+     *
+     *                       default
+     *                        Integer value to be used as default for this
+     *                        field.
+     *
+     *                       notnull
+     *                        Boolean flag that indicates whether this field is
+     *                        constrained to not be set to null.
+     * @return string  DBMS specific SQL code portion that should be used to
+     *                 declare the specified field.
+     * @access protected
+     */
+    function _getIntegerDeclaration($name, $field)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $default = $autoinc = '';
+        if (!empty($field['autoincrement'])) {
+            $autoinc = ' AUTO_INCREMENT PRIMARY KEY';
+        } elseif (array_key_exists('default', $field)) {
+            if ($field['default'] === '') {
+                $field['default'] = empty($field['notnull']) ? null : 0;
+            }
+            $default = ' DEFAULT '.$this->quote($field['default'], 'integer');
+        }
+
+        $notnull = empty($field['notnull']) ? '' : ' NOT NULL';
+        $unsigned = empty($field['unsigned']) ? '' : ' UNSIGNED';
+        if (empty($default) && empty($notnull)) {
+            $default = ' DEFAULT NULL';
+        }
+        $name = $db->quoteIdentifier($name, true);
+        return $name.' '.$this->getTypeDeclaration($field).$unsigned.$default.$notnull.$autoinc;
+    }
+
+    // }}}
+    // {{{ _getFloatDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare an float type
+     * field to be used in statements like CREATE TABLE.
+     *
+     * @param string  $name   name the field to be declared.
+     * @param string  $field  associative array with the name of the properties
+     *                        of the field being declared as array indexes.
+     *                        Currently, the types of supported field
+     *                        properties are as follows:
+     *
+     *                       unsigned
+     *                        Boolean flag that indicates whether the field
+     *                        should be declared as unsigned float if
+     *                        possible.
+     *
+     *                       default
+     *                        float value to be used as default for this
+     *                        field.
+     *
+     *                       notnull
+     *                        Boolean flag that indicates whether this field is
+     *                        constrained to not be set to null.
+     * @return string  DBMS specific SQL code portion that should be used to
+     *                 declare the specified field.
+     * @access protected
+     */
+    function _getFloatDeclaration($name, $field)
+    {
+        // Since AUTO_INCREMENT can be used for integer or floating-point types,
+        // reuse the INTEGER declaration
+        // @see http://bugs.mysql.com/bug.php?id=31032
+        return $this->_getIntegerDeclaration($name, $field);
+    }
+
+    // }}}
+    // {{{ _getDecimalDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare an decimal type
+     * field to be used in statements like CREATE TABLE.
+     *
+     * @param string  $name   name the field to be declared.
+     * @param string  $field  associative array with the name of the properties
+     *                        of the field being declared as array indexes.
+     *                        Currently, the types of supported field
+     *                        properties are as follows:
+     *
+     *                       unsigned
+     *                        Boolean flag that indicates whether the field
+     *                        should be declared as unsigned integer if
+     *                        possible.
+     *
+     *                       default
+     *                        Decimal value to be used as default for this
+     *                        field.
+     *
+     *                       notnull
+     *                        Boolean flag that indicates whether this field is
+     *                        constrained to not be set to null.
+     * @return string  DBMS specific SQL code portion that should be used to
+     *                 declare the specified field.
+     * @access protected
+     */
+    function _getDecimalDeclaration($name, $field)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $default = '';
+        if (array_key_exists('default', $field)) {
+            if ($field['default'] === '') {
+                $field['default'] = empty($field['notnull']) ? null : 0;
+            }
+            $default = ' DEFAULT '.$this->quote($field['default'], 'integer');
+        } elseif (empty($field['notnull'])) {
+            $default = ' DEFAULT NULL';
+        }
+
+        $notnull = empty($field['notnull']) ? '' : ' NOT NULL';
+        $unsigned = empty($field['unsigned']) ? '' : ' UNSIGNED';
+        $name = $db->quoteIdentifier($name, true);
+        return $name.' '.$this->getTypeDeclaration($field).$unsigned.$default.$notnull;
+    }
+
+    // }}}
+    // {{{ matchPattern()
+
+    /**
+     * build a pattern matching string
+     *
+     * @access public
+     *
+     * @param array $pattern even keys are strings, odd are patterns (% and _)
+     * @param string $operator optional pattern operator (LIKE, ILIKE and maybe others in the future)
+     * @param string $field optional field name that is being matched against
+     *                  (might be required when emulating ILIKE)
+     *
+     * @return string SQL pattern
+     */
+    function matchPattern($pattern, $operator = null, $field = null)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $match = '';
+        if (null !== $operator) {
+            $field = (null === $field) ? '' : $field.' ';
+            $operator = strtoupper($operator);
+            switch ($operator) {
+            // case insensitive
+            case 'ILIKE':
+                $match = $field.'LIKE ';
+                break;
+            case 'NOT ILIKE':
+                $match = $field.'NOT LIKE ';
+                break;
+            // case sensitive
+            case 'LIKE':
+                $match = $field.'LIKE BINARY ';
+                break;
+            case 'NOT LIKE':
+                $match = $field.'NOT LIKE BINARY ';
+                break;
+            default:
+                return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                    'not a supported operator type:'. $operator, __FUNCTION__);
+            }
+        }
+        $match.= "'";
+        foreach ($pattern as $key => $value) {
+            if ($key % 2) {
+                $match.= $value;
+            } else {
+                $match.= $db->escapePattern($db->escape($value));
+            }
+        }
+        $match.= "'";
+        $match.= $this->patternEscapeString();
+        return $match;
+    }
+
+    // }}}
+    // {{{ _mapNativeDatatype()
+
+    /**
+     * Maps a native array description of a field to a MDB2 datatype and length
+     *
+     * @param array  $field native field description
+     * @return array containing the various possible types, length, sign, fixed
+     * @access public
+     */
+    function _mapNativeDatatype($field)
+    {
+        $db_type = strtolower($field['type']);
+        $db_type = strtok($db_type, '(), ');
+        if ($db_type == 'national') {
+            $db_type = strtok('(), ');
+        }
+        if (!empty($field['length'])) {
+            $length = strtok($field['length'], ', ');
+            $decimal = strtok(', ');
+        } else {
+            $length = strtok('(), ');
+            $decimal = strtok('(), ');
+        }
+        $type = array();
+        $unsigned = $fixed = null;
+        switch ($db_type) {
+        case 'tinyint':
+            $type[] = 'integer';
+            $type[] = 'boolean';
+            if (preg_match('/^(is|has)/', $field['name'])) {
+                $type = array_reverse($type);
+            }
+            $unsigned = preg_match('/ unsigned/i', $field['type']);
+            $length = 1;
+            break;
+        case 'smallint':
+            $type[] = 'integer';
+            $unsigned = preg_match('/ unsigned/i', $field['type']);
+            $length = 2;
+            break;
+        case 'mediumint':
+            $type[] = 'integer';
+            $unsigned = preg_match('/ unsigned/i', $field['type']);
+            $length = 3;
+            break;
+        case 'int':
+        case 'integer':
+            $type[] = 'integer';
+            $unsigned = preg_match('/ unsigned/i', $field['type']);
+            $length = 4;
+            break;
+        case 'bigint':
+            $type[] = 'integer';
+            $unsigned = preg_match('/ unsigned/i', $field['type']);
+            $length = 8;
+            break;
+        case 'tinytext':
+        case 'mediumtext':
+        case 'longtext':
+        case 'text':
+        case 'varchar':
+            $fixed = false;
+        case 'string':
+        case 'char':
+            $type[] = 'text';
+            if ($length == '1') {
+                $type[] = 'boolean';
+                if (preg_match('/^(is|has)/', $field['name'])) {
+                    $type = array_reverse($type);
+                }
+            } elseif (strstr($db_type, 'text')) {
+                $type[] = 'clob';
+                if ($decimal == 'binary') {
+                    $type[] = 'blob';
+                }
+                $type = array_reverse($type);
+            }
+            if ($fixed !== false) {
+                $fixed = true;
+            }
+            break;
+        case 'enum':
+            $type[] = 'text';
+            preg_match_all('/\'.+\'/U', $field['type'], $matches);
+            $length = 0;
+            $fixed = false;
+            if (is_array($matches)) {
+                foreach ($matches[0] as $value) {
+                    $length = max($length, strlen($value)-2);
+                }
+                if ($length == '1' && count($matches[0]) == 2) {
+                    $type[] = 'boolean';
+                    if (preg_match('/^(is|has)/', $field['name'])) {
+                        $type = array_reverse($type);
+                    }
+                }
+            }
+            $type[] = 'integer';
+        case 'set':
+            $fixed = false;
+            $type[] = 'text';
+            $type[] = 'integer';
+            break;
+        case 'date':
+            $type[] = 'date';
+            $length = null;
+            break;
+        case 'datetime':
+        case 'timestamp':
+            $type[] = 'timestamp';
+            $length = null;
+            break;
+        case 'time':
+            $type[] = 'time';
+            $length = null;
+            break;
+        case 'float':
+        case 'double':
+        case 'real':
+            $type[] = 'float';
+            $unsigned = preg_match('/ unsigned/i', $field['type']);
+            break;
+        case 'unknown':
+        case 'decimal':
+        case 'numeric':
+            $type[] = 'decimal';
+            $unsigned = preg_match('/ unsigned/i', $field['type']);
+            if ($decimal !== false) {
+                $length = $length.','.$decimal;
+            }
+            break;
+        case 'tinyblob':
+        case 'mediumblob':
+        case 'longblob':
+        case 'blob':
+            $type[] = 'blob';
+            $length = null;
+            break;
+        case 'binary':
+        case 'varbinary':
+            $type[] = 'blob';
+            break;
+        case 'year':
+            $type[] = 'integer';
+            $type[] = 'date';
+            $length = null;
+            break;
+        default:
+            $db = $this->getDBInstance();
+            if (PEAR::isError($db)) {
+                return $db;
+            }
+
+            return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                'unknown database attribute type: '.$db_type, __FUNCTION__);
+        }
+
+        if ((int)$length <= 0) {
+            $length = null;
+        }
+
+        return array($type, $length, $unsigned, $fixed);
+    }
+
+    // }}}
+}
+
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Datatype/mysqli.php b/program/lib/MDB2/Driver/Datatype/mysqli.php
new file mode 100644 (file)
index 0000000..9db4fa4
--- /dev/null
@@ -0,0 +1,599 @@
+<?php
+// vim: set et ts=4 sw=4 fdm=marker:
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2007 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Lukas Smith <smith@pooteeweet.org>                           |
+// +----------------------------------------------------------------------+
+//
+// $Id: mysqli.php 295587 2010-02-28 17:16:38Z quipo $
+//
+
+require_once 'MDB2/Driver/Datatype/Common.php';
+
+/**
+ * MDB2 MySQLi driver
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Driver_Datatype_mysqli extends MDB2_Driver_Datatype_Common
+{
+    // {{{ _getCharsetFieldDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to set the CHARACTER SET
+     * of a field declaration to be used in statements like CREATE TABLE.
+     *
+     * @param string $charset   name of the charset
+     * @return string  DBMS specific SQL code portion needed to set the CHARACTER SET
+     *                 of a field declaration.
+     */
+    function _getCharsetFieldDeclaration($charset)
+    {
+        return 'CHARACTER SET '.$charset;
+    }
+
+    // }}}
+    // {{{ _getCollationFieldDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to set the COLLATION
+     * of a field declaration to be used in statements like CREATE TABLE.
+     *
+     * @param string $collation   name of the collation
+     * @return string  DBMS specific SQL code portion needed to set the COLLATION
+     *                 of a field declaration.
+     */
+    function _getCollationFieldDeclaration($collation)
+    {
+        return 'COLLATE '.$collation;
+    }
+
+    // }}}
+    // {{{ getTypeDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare an text type
+     * field to be used in statements like CREATE TABLE.
+     *
+     * @param array $field  associative array with the name of the properties
+     *      of the field being declared as array indexes. Currently, the types
+     *      of supported field properties are as follows:
+     *
+     *      length
+     *          Integer value that determines the maximum length of the text
+     *          field. If this argument is missing the field should be
+     *          declared to have the longest length allowed by the DBMS.
+     *
+     *      default
+     *          Text value to be used as default for this field.
+     *
+     *      notnull
+     *          Boolean flag that indicates whether this field is constrained
+     *          to not be set to null.
+     * @return string  DBMS specific SQL code portion that should be used to
+     *      declare the specified field.
+     * @access public
+     */
+    function getTypeDeclaration($field)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        switch ($field['type']) {
+        case 'text':
+            if (empty($field['length']) && array_key_exists('default', $field)) {
+                $field['length'] = $db->varchar_max_length;
+            }
+            $length = !empty($field['length']) ? $field['length'] : false;
+            $fixed = !empty($field['fixed']) ? $field['fixed'] : false;
+            return $fixed ? ($length ? 'CHAR('.$length.')' : 'CHAR(255)')
+                : ($length ? 'VARCHAR('.$length.')' : 'TEXT');
+        case 'clob':
+            if (!empty($field['length'])) {
+                $length = $field['length'];
+                if ($length <= 255) {
+                    return 'TINYTEXT';
+                } elseif ($length <= 65532) {
+                    return 'TEXT';
+                } elseif ($length <= 16777215) {
+                    return 'MEDIUMTEXT';
+                }
+            }
+            return 'LONGTEXT';
+        case 'blob':
+            if (!empty($field['length'])) {
+                $length = $field['length'];
+                if ($length <= 255) {
+                    return 'TINYBLOB';
+                } elseif ($length <= 65532) {
+                    return 'BLOB';
+                } elseif ($length <= 16777215) {
+                    return 'MEDIUMBLOB';
+                }
+            }
+            return 'LONGBLOB';
+        case 'integer':
+            if (!empty($field['length'])) {
+                $length = $field['length'];
+                if ($length <= 1) {
+                    return 'TINYINT';
+                } elseif ($length == 2) {
+                    return 'SMALLINT';
+                } elseif ($length == 3) {
+                    return 'MEDIUMINT';
+                } elseif ($length == 4) {
+                    return 'INT';
+                } elseif ($length > 4) {
+                    return 'BIGINT';
+                }
+            }
+            return 'INT';
+        case 'boolean':
+            return 'TINYINT(1)';
+        case 'date':
+            return 'DATE';
+        case 'time':
+            return 'TIME';
+        case 'timestamp':
+            return 'DATETIME';
+        case 'float':
+            return 'DOUBLE';
+        case 'decimal':
+            $length = !empty($field['length']) ? $field['length'] : 18;
+            $scale = !empty($field['scale']) ? $field['scale'] : $db->options['decimal_places'];
+            return 'DECIMAL('.$length.','.$scale.')';
+        }
+        return '';
+    }
+
+    // }}}
+    // {{{ _getIntegerDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare an integer type
+     * field to be used in statements like CREATE TABLE.
+     *
+     * @param string  $name   name the field to be declared.
+     * @param string  $field  associative array with the name of the properties
+     *                        of the field being declared as array indexes.
+     *                        Currently, the types of supported field
+     *                        properties are as follows:
+     *
+     *                       unsigned
+     *                        Boolean flag that indicates whether the field
+     *                        should be declared as unsigned integer if
+     *                        possible.
+     *
+     *                       default
+     *                        Integer value to be used as default for this
+     *                        field.
+     *
+     *                       notnull
+     *                        Boolean flag that indicates whether this field is
+     *                        constrained to not be set to null.
+     * @return string  DBMS specific SQL code portion that should be used to
+     *                 declare the specified field.
+     * @access protected
+     */
+    function _getIntegerDeclaration($name, $field)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $default = $autoinc = '';
+        if (!empty($field['autoincrement'])) {
+            $autoinc = ' AUTO_INCREMENT PRIMARY KEY';
+        } elseif (array_key_exists('default', $field)) {
+            if ($field['default'] === '') {
+                $field['default'] = empty($field['notnull']) ? null : 0;
+            }
+            $default = ' DEFAULT '.$this->quote($field['default'], 'integer');
+        }
+
+        $notnull = empty($field['notnull']) ? '' : ' NOT NULL';
+        $unsigned = empty($field['unsigned']) ? '' : ' UNSIGNED';
+        if (empty($default) && empty($notnull)) {
+            $default = ' DEFAULT NULL';
+        }
+        $name = $db->quoteIdentifier($name, true);
+        return $name.' '.$this->getTypeDeclaration($field).$unsigned.$default.$notnull.$autoinc;
+    }
+
+    // }}}
+    // {{{ _getFloatDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare an float type
+     * field to be used in statements like CREATE TABLE.
+     *
+     * @param string  $name   name the field to be declared.
+     * @param string  $field  associative array with the name of the properties
+     *                        of the field being declared as array indexes.
+     *                        Currently, the types of supported field
+     *                        properties are as follows:
+     *
+     *                       unsigned
+     *                        Boolean flag that indicates whether the field
+     *                        should be declared as unsigned float if
+     *                        possible.
+     *
+     *                       default
+     *                        float value to be used as default for this
+     *                        field.
+     *
+     *                       notnull
+     *                        Boolean flag that indicates whether this field is
+     *                        constrained to not be set to null.
+     * @return string  DBMS specific SQL code portion that should be used to
+     *                 declare the specified field.
+     * @access protected
+     */
+    function _getFloatDeclaration($name, $field)
+    {
+        // Since AUTO_INCREMENT can be used for integer or floating-point types,
+        // reuse the INTEGER declaration
+        // @see http://bugs.mysql.com/bug.php?id=31032
+        return $this->_getIntegerDeclaration($name, $field);
+    }
+
+    // }}}
+    // {{{ _getDecimalDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare an decimal type
+     * field to be used in statements like CREATE TABLE.
+     *
+     * @param string  $name   name the field to be declared.
+     * @param string  $field  associative array with the name of the properties
+     *                        of the field being declared as array indexes.
+     *                        Currently, the types of supported field
+     *                        properties are as follows:
+     *
+     *                       unsigned
+     *                        Boolean flag that indicates whether the field
+     *                        should be declared as unsigned integer if
+     *                        possible.
+     *
+     *                       default
+     *                        Decimal value to be used as default for this
+     *                        field.
+     *
+     *                       notnull
+     *                        Boolean flag that indicates whether this field is
+     *                        constrained to not be set to null.
+     * @return string  DBMS specific SQL code portion that should be used to
+     *                 declare the specified field.
+     * @access protected
+     */
+    function _getDecimalDeclaration($name, $field)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $default = '';
+        if (array_key_exists('default', $field)) {
+            if ($field['default'] === '') {
+                $field['default'] = empty($field['notnull']) ? null : 0;
+            }
+            $default = ' DEFAULT '.$this->quote($field['default'], 'integer');
+        } elseif (empty($field['notnull'])) {
+            $default = ' DEFAULT NULL';
+        }
+
+        $notnull = empty($field['notnull']) ? '' : ' NOT NULL';
+        $unsigned = empty($field['unsigned']) ? '' : ' UNSIGNED';
+        $name = $db->quoteIdentifier($name, true);
+        return $name.' '.$this->getTypeDeclaration($field).$unsigned.$default.$notnull;
+    }
+
+    // }}}
+    // {{{ matchPattern()
+
+    /**
+     * build a pattern matching string
+     *
+     * @access public
+     *
+     * @param array $pattern even keys are strings, odd are patterns (% and _)
+     * @param string $operator optional pattern operator (LIKE, ILIKE and maybe others in the future)
+     * @param string $field optional field name that is being matched against
+     *                  (might be required when emulating ILIKE)
+     *
+     * @return string SQL pattern
+     */
+    function matchPattern($pattern, $operator = null, $field = null)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $match = '';
+        if (null !== $operator) {
+            $field = (null === $field) ? '' : $field.' ';
+            $operator = strtoupper($operator);
+            switch ($operator) {
+            // case insensitive
+            case 'ILIKE':
+                $match = $field.'LIKE ';
+                break;
+            case 'NOT ILIKE':
+                $match = $field.'NOT LIKE ';
+                break;
+            // case sensitive
+            case 'LIKE':
+                $match = $field.'LIKE BINARY ';
+                break;
+            case 'NOT LIKE':
+                $match = $field.'NOT LIKE BINARY ';
+                break;
+            default:
+                return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                    'not a supported operator type:'. $operator, __FUNCTION__);
+            }
+        }
+        $match.= "'";
+        foreach ($pattern as $key => $value) {
+            if ($key % 2) {
+                $match.= $value;
+            } else {
+                $match.= $db->escapePattern($db->escape($value));
+            }
+        }
+        $match.= "'";
+        $match.= $this->patternEscapeString();
+        return $match;
+    }
+
+    // }}}
+    // {{{ _mapNativeDatatype()
+
+    /**
+     * Maps a native array description of a field to a MDB2 datatype and length
+     *
+     * @param array  $field native field description
+     * @return array containing the various possible types, length, sign, fixed
+     * @access public
+     */
+    function _mapNativeDatatype($field)
+    {
+        $db_type = strtolower($field['type']);
+        $db_type = strtok($db_type, '(), ');
+        if ($db_type == 'national') {
+            $db_type = strtok('(), ');
+        }
+        if (!empty($field['length'])) {
+            $length = strtok($field['length'], ', ');
+            $decimal = strtok(', ');
+        } else {
+            $length = strtok('(), ');
+            $decimal = strtok('(), ');
+        }
+        $type = array();
+        $unsigned = $fixed = null;
+        switch ($db_type) {
+        case 'tinyint':
+            $type[] = 'integer';
+            $type[] = 'boolean';
+            if (preg_match('/^(is|has)/', $field['name'])) {
+                $type = array_reverse($type);
+            }
+            $unsigned = preg_match('/ unsigned/i', $field['type']);
+            $length = 1;
+            break;
+        case 'smallint':
+            $type[] = 'integer';
+            $unsigned = preg_match('/ unsigned/i', $field['type']);
+            $length = 2;
+            break;
+        case 'mediumint':
+            $type[] = 'integer';
+            $unsigned = preg_match('/ unsigned/i', $field['type']);
+            $length = 3;
+            break;
+        case 'int':
+        case 'integer':
+            $type[] = 'integer';
+            $unsigned = preg_match('/ unsigned/i', $field['type']);
+            $length = 4;
+            break;
+        case 'bigint':
+            $type[] = 'integer';
+            $unsigned = preg_match('/ unsigned/i', $field['type']);
+            $length = 8;
+            break;
+        case 'tinytext':
+        case 'mediumtext':
+        case 'longtext':
+        case 'text':
+        case 'varchar':
+            $fixed = false;
+        case 'string':
+        case 'char':
+            $type[] = 'text';
+            if ($length == '1') {
+                $type[] = 'boolean';
+                if (preg_match('/^(is|has)/', $field['name'])) {
+                    $type = array_reverse($type);
+                }
+            } elseif (strstr($db_type, 'text')) {
+                $type[] = 'clob';
+                if ($decimal == 'binary') {
+                    $type[] = 'blob';
+                }
+                $type = array_reverse($type);
+            }
+            if ($fixed !== false) {
+                $fixed = true;
+            }
+            break;
+        case 'enum':
+            $type[] = 'text';
+            preg_match_all('/\'.+\'/U', $field['type'], $matches);
+            $length = 0;
+            $fixed = false;
+            if (is_array($matches)) {
+                foreach ($matches[0] as $value) {
+                    $length = max($length, strlen($value)-2);
+                }
+                if ($length == '1' && count($matches[0]) == 2) {
+                    $type[] = 'boolean';
+                    if (preg_match('/^(is|has)/', $field['name'])) {
+                        $type = array_reverse($type);
+                    }
+                }
+            }
+            $type[] = 'integer';
+        case 'set':
+            $fixed = false;
+            $type[] = 'text';
+            $type[] = 'integer';
+            break;
+        case 'date':
+            $type[] = 'date';
+            $length = null;
+            break;
+        case 'datetime':
+        case 'timestamp':
+            $type[] = 'timestamp';
+            $length = null;
+            break;
+        case 'time':
+            $type[] = 'time';
+            $length = null;
+            break;
+        case 'float':
+        case 'double':
+        case 'real':
+            $type[] = 'float';
+            $unsigned = preg_match('/ unsigned/i', $field['type']);
+            break;
+        case 'unknown':
+        case 'decimal':
+        case 'numeric':
+            $type[] = 'decimal';
+            $unsigned = preg_match('/ unsigned/i', $field['type']);
+            if ($decimal !== false) {
+                $length = $length.','.$decimal;
+            }
+            break;
+        case 'tinyblob':
+        case 'mediumblob':
+        case 'longblob':
+        case 'blob':
+            $type[] = 'blob';
+            $length = null;
+            break;
+        case 'binary':
+        case 'varbinary':
+            $type[] = 'blob';
+            break;
+        case 'year':
+            $type[] = 'integer';
+            $type[] = 'date';
+            $length = null;
+            break;
+        default:
+            $db = $this->getDBInstance();
+            if (PEAR::isError($db)) {
+                return $db;
+            }
+
+            return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                'unknown database attribute type: '.$db_type, __FUNCTION__);
+        }
+
+        if ((int)$length <= 0) {
+            $length = null;
+        }
+
+        return array($type, $length, $unsigned, $fixed);
+    }
+
+    // }}}
+    // {{{ mapPrepareDatatype()
+
+    /**
+     * Maps an MDB2 datatype to native prepare type
+     *
+     * @param string $type
+     * @return string
+     * @access public
+     */
+    function mapPrepareDatatype($type)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        if (!empty($db->options['datatype_map'][$type])) {
+            $type = $db->options['datatype_map'][$type];
+            if (!empty($db->options['datatype_map_callback'][$type])) {
+                $parameter = array('type' => $type);
+                return call_user_func_array($db->options['datatype_map_callback'][$type], array(&$db, __FUNCTION__, $parameter));
+            }
+        }
+
+        switch ($type) {
+            case 'integer':
+                return 'i';
+            case 'float':
+                return 'd';
+            case 'blob':
+                return 'b';
+            default:
+                break;
+        }
+        return 's';
+    }
+    
+    // }}}
+}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Datatype/pgsql.php b/program/lib/MDB2/Driver/Datatype/pgsql.php
new file mode 100644 (file)
index 0000000..f036886
--- /dev/null
@@ -0,0 +1,579 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2007 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Paul Cooper <pgc@ucecom.com>                                 |
+// +----------------------------------------------------------------------+
+//
+// $Id: pgsql.php 295587 2010-02-28 17:16:38Z quipo $
+
+require_once 'MDB2/Driver/Datatype/Common.php';
+
+/**
+ * MDB2 PostGreSQL driver
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Paul Cooper <pgc@ucecom.com>
+ */
+class MDB2_Driver_Datatype_pgsql extends MDB2_Driver_Datatype_Common
+{
+    // {{{ _baseConvertResult()
+
+    /**
+     * General type conversion method
+     *
+     * @param mixed   $value refernce to a value to be converted
+     * @param string  $type  specifies which type to convert to
+     * @param boolean $rtrim [optional] when TRUE [default], apply rtrim() to text
+     * @return object a MDB2 error on failure
+     * @access protected
+     */
+    function _baseConvertResult($value, $type, $rtrim = true)
+    {
+        if (null === $value) {
+            return null;
+        }
+        switch ($type) {
+        case 'boolean':
+            return $value == 't';
+        case 'float':
+            return doubleval($value);
+        case 'date':
+            return $value;
+        case 'time':
+            return substr($value, 0, strlen('HH:MM:SS'));
+        case 'timestamp':
+            return substr($value, 0, strlen('YYYY-MM-DD HH:MM:SS'));
+        case 'blob':
+            $value = pg_unescape_bytea($value);
+            return parent::_baseConvertResult($value, $type, $rtrim);
+        }
+        return parent::_baseConvertResult($value, $type, $rtrim);
+    }
+
+    // }}}
+    // {{{ getTypeDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare an text type
+     * field to be used in statements like CREATE TABLE.
+     *
+     * @param array $field  associative array with the name of the properties
+     *      of the field being declared as array indexes. Currently, the types
+     *      of supported field properties are as follows:
+     *
+     *      length
+     *          Integer value that determines the maximum length of the text
+     *          field. If this argument is missing the field should be
+     *          declared to have the longest length allowed by the DBMS.
+     *
+     *      default
+     *          Text value to be used as default for this field.
+     *
+     *      notnull
+     *          Boolean flag that indicates whether this field is constrained
+     *          to not be set to null.
+     * @return string  DBMS specific SQL code portion that should be used to
+     *      declare the specified field.
+     * @access public
+     */
+    function getTypeDeclaration($field)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        switch ($field['type']) {
+        case 'text':
+            $length = !empty($field['length']) ? $field['length'] : false;
+            $fixed = !empty($field['fixed']) ? $field['fixed'] : false;
+            return $fixed ? ($length ? 'CHAR('.$length.')' : 'CHAR('.$db->options['default_text_field_length'].')')
+                : ($length ? 'VARCHAR('.$length.')' : 'TEXT');
+        case 'clob':
+            return 'TEXT';
+        case 'blob':
+            return 'BYTEA';
+        case 'integer':
+            if (!empty($field['autoincrement'])) {
+                if (!empty($field['length'])) {
+                    $length = $field['length'];
+                    if ($length > 4) {
+                        return 'BIGSERIAL PRIMARY KEY';
+                    }
+                }
+                return 'SERIAL PRIMARY KEY';
+            }
+            if (!empty($field['length'])) {
+                $length = $field['length'];
+                if ($length <= 2) {
+                    return 'SMALLINT';
+                } elseif ($length == 3 || $length == 4) {
+                    return 'INT';
+                } elseif ($length > 4) {
+                    return 'BIGINT';
+                }
+            }
+            return 'INT';
+        case 'boolean':
+            return 'BOOLEAN';
+        case 'date':
+            return 'DATE';
+        case 'time':
+            return 'TIME without time zone';
+        case 'timestamp':
+            return 'TIMESTAMP without time zone';
+        case 'float':
+            return 'FLOAT8';
+        case 'decimal':
+            $length = !empty($field['length']) ? $field['length'] : 18;
+            $scale = !empty($field['scale']) ? $field['scale'] : $db->options['decimal_places'];
+            return 'NUMERIC('.$length.','.$scale.')';
+        }
+    }
+
+    // }}}
+    // {{{ _getIntegerDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare an integer type
+     * field to be used in statements like CREATE TABLE.
+     *
+     * @param string $name name the field to be declared.
+     * @param array $field associative array with the name of the properties
+     *       of the field being declared as array indexes. Currently, the types
+     *       of supported field properties are as follows:
+     *
+     *       unsigned
+     *           Boolean flag that indicates whether the field should be
+     *           declared as unsigned integer if possible.
+     *
+     *       default
+     *           Integer value to be used as default for this field.
+     *
+     *       notnull
+     *           Boolean flag that indicates whether this field is constrained
+     *           to not be set to null.
+     * @return string DBMS specific SQL code portion that should be used to
+     *       declare the specified field.
+     * @access protected
+     */
+    function _getIntegerDeclaration($name, $field)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        if (!empty($field['unsigned'])) {
+            $db->warnings[] = "unsigned integer field \"$name\" is being declared as signed integer";
+        }
+        if (!empty($field['autoincrement'])) {
+            $name = $db->quoteIdentifier($name, true);
+            return $name.' '.$this->getTypeDeclaration($field);
+        }
+        $default = '';
+        if (array_key_exists('default', $field)) {
+            if ($field['default'] === '') {
+                $field['default'] = empty($field['notnull']) ? null : 0;
+            }
+            $default = ' DEFAULT '.$this->quote($field['default'], 'integer');
+        }
+
+        $notnull = empty($field['notnull']) ? '' : ' NOT NULL';
+        if (empty($default) && empty($notnull)) {
+            $default = ' DEFAULT NULL';
+        }
+        $name = $db->quoteIdentifier($name, true);
+        return $name.' '.$this->getTypeDeclaration($field).$default.$notnull;
+    }
+
+    // }}}
+    // {{{ _quoteCLOB()
+
+    /**
+     * Convert a text value into a DBMS specific format that is suitable to
+     * compose query statements.
+     *
+     * @param string $value text string value that is intended to be converted.
+     * @param bool $quote determines if the value should be quoted and escaped
+     * @param bool $escape_wildcards if to escape escape wildcards
+     * @return string text string that represents the given argument value in
+     *      a DBMS specific format.
+     * @access protected
+     */
+    function _quoteCLOB($value, $quote, $escape_wildcards)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+        if ($db->options['lob_allow_url_include']) {
+            $value = $this->_readFile($value);
+            if (PEAR::isError($value)) {
+                return $value;
+            }
+        }
+        return $this->_quoteText($value, $quote, $escape_wildcards);
+    }
+
+    // }}}
+    // {{{ _quoteBLOB()
+
+    /**
+     * Convert a text value into a DBMS specific format that is suitable to
+     * compose query statements.
+     *
+     * @param string $value text string value that is intended to be converted.
+     * @param bool $quote determines if the value should be quoted and escaped
+     * @param bool $escape_wildcards if to escape escape wildcards
+     * @return string text string that represents the given argument value in
+     *      a DBMS specific format.
+     * @access protected
+     */
+    function _quoteBLOB($value, $quote, $escape_wildcards)
+    {
+        if (!$quote) {
+            return $value;
+        }
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+        if ($db->options['lob_allow_url_include']) {
+            $value = $this->_readFile($value);
+            if (PEAR::isError($value)) {
+                return $value;
+            }
+        }
+        if (version_compare(PHP_VERSION, '5.2.0RC6', '>=')) {
+            $connection = $db->getConnection();
+            if (PEAR::isError($connection)) {
+                return $connection;
+            }
+            $value = @pg_escape_bytea($connection, $value);
+        } else {
+            $value = @pg_escape_bytea($value);
+        }
+        return "'".$value."'";
+    }
+
+    // }}}
+    // {{{ _quoteBoolean()
+
+    /**
+     * Convert a text value into a DBMS specific format that is suitable to
+     * compose query statements.
+     *
+     * @param string $value text string value that is intended to be converted.
+     * @param bool $quote determines if the value should be quoted and escaped
+     * @param bool $escape_wildcards if to escape escape wildcards
+     * @return string text string that represents the given argument value in
+     *       a DBMS specific format.
+     * @access protected
+     */
+    function _quoteBoolean($value, $quote, $escape_wildcards)
+    {
+        $value = $value ? 't' : 'f';
+        if (!$quote) {
+            return $value;
+        }
+        return "'".$value."'";
+    }
+
+    // }}}
+    // {{{ matchPattern()
+
+    /**
+     * build a pattern matching string
+     *
+     * @access public
+     *
+     * @param array $pattern even keys are strings, odd are patterns (% and _)
+     * @param string $operator optional pattern operator (LIKE, ILIKE and maybe others in the future)
+     * @param string $field optional field name that is being matched against
+     *                  (might be required when emulating ILIKE)
+     *
+     * @return string SQL pattern
+     */
+    function matchPattern($pattern, $operator = null, $field = null)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $match = '';
+        if (null !== $operator) {
+            $field = (null === $field) ? '' : $field.' ';
+            $operator = strtoupper($operator);
+            switch ($operator) {
+            // case insensitive
+            case 'ILIKE':
+                $match = $field.'ILIKE ';
+                break;
+            case 'NOT ILIKE':
+                $match = $field.'NOT ILIKE ';
+                break;
+            // case sensitive
+            case 'LIKE':
+                $match = $field.'LIKE ';
+                break;
+            case 'NOT LIKE':
+                $match = $field.'NOT LIKE ';
+                break;
+            default:
+                return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                    'not a supported operator type:'. $operator, __FUNCTION__);
+            }
+        }
+        $match.= "'";
+        foreach ($pattern as $key => $value) {
+            if ($key % 2) {
+                $match.= $value;
+            } else {
+                $match.= $db->escapePattern($db->escape($value));
+            }
+        }
+        $match.= "'";
+        $match.= $this->patternEscapeString();
+        return $match;
+    }
+
+    // }}}
+    // {{{ patternEscapeString()
+
+    /**
+     * build string to define escape pattern string
+     *
+     * @access public
+     *
+     *
+     * @return string define escape pattern
+     */
+    function patternEscapeString()
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+        return ' ESCAPE '.$this->quote($db->string_quoting['escape_pattern']);
+    }
+
+    // }}}
+    // {{{ _mapNativeDatatype()
+
+    /**
+     * Maps a native array description of a field to a MDB2 datatype and length
+     *
+     * @param array  $field native field description
+     * @return array containing the various possible types, length, sign, fixed
+     * @access public
+     */
+    function _mapNativeDatatype($field)
+    {
+        $db_type = strtolower($field['type']);
+        $length = $field['length'];
+        $type = array();
+        $unsigned = $fixed = null;
+        switch ($db_type) {
+        case 'smallint':
+        case 'int2':
+            $type[] = 'integer';
+            $unsigned = false;
+            $length = 2;
+            if ($length == '2') {
+                $type[] = 'boolean';
+                if (preg_match('/^(is|has)/', $field['name'])) {
+                    $type = array_reverse($type);
+                }
+            }
+            break;
+        case 'int':
+        case 'int4':
+        case 'integer':
+        case 'serial':
+        case 'serial4':
+            $type[] = 'integer';
+            $unsigned = false;
+            $length = 4;
+            break;
+        case 'bigint':
+        case 'int8':
+        case 'bigserial':
+        case 'serial8':
+            $type[] = 'integer';
+            $unsigned = false;
+            $length = 8;
+            break;
+        case 'bool':
+        case 'boolean':
+            $type[] = 'boolean';
+            $length = null;
+            break;
+        case 'text':
+        case 'varchar':
+            $fixed = false;
+        case 'unknown':
+        case 'char':
+        case 'bpchar':
+            $type[] = 'text';
+            if ($length == '1') {
+                $type[] = 'boolean';
+                if (preg_match('/^(is|has)/', $field['name'])) {
+                    $type = array_reverse($type);
+                }
+            } elseif (strstr($db_type, 'text')) {
+                $type[] = 'clob';
+                $type = array_reverse($type);
+            }
+            if ($fixed !== false) {
+                $fixed = true;
+            }
+            break;
+        case 'date':
+            $type[] = 'date';
+            $length = null;
+            break;
+        case 'datetime':
+        case 'timestamp':
+        case 'timestamptz':
+            $type[] = 'timestamp';
+            $length = null;
+            break;
+        case 'time':
+            $type[] = 'time';
+            $length = null;
+            break;
+        case 'float':
+        case 'float4':
+        case 'float8':
+        case 'double':
+        case 'real':
+            $type[] = 'float';
+            break;
+        case 'decimal':
+        case 'money':
+        case 'numeric':
+            $type[] = 'decimal';
+            if (isset($field['scale'])) {
+                $length = $length.','.$field['scale'];
+            }
+            break;
+        case 'tinyblob':
+        case 'mediumblob':
+        case 'longblob':
+        case 'blob':
+        case 'bytea':
+            $type[] = 'blob';
+            $length = null;
+            break;
+        case 'oid':
+            $type[] = 'blob';
+            $type[] = 'clob';
+            $length = null;
+            break;
+        case 'year':
+            $type[] = 'integer';
+            $type[] = 'date';
+            $length = null;
+            break;
+        default:
+            $db = $this->getDBInstance();
+            if (PEAR::isError($db)) {
+                return $db;
+            }
+            return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                'unknown database attribute type: '.$db_type, __FUNCTION__);
+        }
+
+        if ((int)$length <= 0) {
+            $length = null;
+        }
+
+        return array($type, $length, $unsigned, $fixed);
+    }
+
+    // }}}
+    // {{{ mapPrepareDatatype()
+
+    /**
+     * Maps an mdb2 datatype to native prepare type
+     *
+     * @param string $type
+     * @return string
+     * @access public
+     */
+    function mapPrepareDatatype($type)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        if (!empty($db->options['datatype_map'][$type])) {
+            $type = $db->options['datatype_map'][$type];
+            if (!empty($db->options['datatype_map_callback'][$type])) {
+                $parameter = array('type' => $type);
+                return call_user_func_array($db->options['datatype_map_callback'][$type], array(&$db, __FUNCTION__, $parameter));
+            }
+        }
+
+        switch ($type) {
+            case 'integer':
+                return 'int';
+            case 'boolean':
+                return 'bool';
+            case 'decimal':
+            case 'float':
+                return 'numeric';
+            case 'clob':
+                return 'text';
+            case 'blob':
+                return 'bytea';
+            default:
+                break;
+        }
+        return $type;
+    }
+    // }}}
+}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Datatype/sqlite.php b/program/lib/MDB2/Driver/Datatype/sqlite.php
new file mode 100644 (file)
index 0000000..3afa78a
--- /dev/null
@@ -0,0 +1,418 @@
+<?php
+// vim: set et ts=4 sw=4 fdm=marker:
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2007 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Lukas Smith <smith@pooteeweet.org>                           |
+// +----------------------------------------------------------------------+
+//
+// $Id: sqlite.php 295587 2010-02-28 17:16:38Z quipo $
+//
+
+require_once 'MDB2/Driver/Datatype/Common.php';
+
+/**
+ * MDB2 SQLite driver
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Driver_Datatype_sqlite extends MDB2_Driver_Datatype_Common
+{
+    // {{{ _getCollationFieldDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to set the COLLATION
+     * of a field declaration to be used in statements like CREATE TABLE.
+     *
+     * @param string $collation name of the collation
+     *
+     * @return string DBMS specific SQL code portion needed to set the COLLATION
+     *                of a field declaration.
+     */
+    function _getCollationFieldDeclaration($collation)
+    {
+        return 'COLLATE '.$collation;
+    }
+
+    // }}}
+    // {{{ getTypeDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare an text type
+     * field to be used in statements like CREATE TABLE.
+     *
+     * @param array $field  associative array with the name of the properties
+     *      of the field being declared as array indexes. Currently, the types
+     *      of supported field properties are as follows:
+     *
+     *      length
+     *          Integer value that determines the maximum length of the text
+     *          field. If this argument is missing the field should be
+     *          declared to have the longest length allowed by the DBMS.
+     *
+     *      default
+     *          Text value to be used as default for this field.
+     *
+     *      notnull
+     *          Boolean flag that indicates whether this field is constrained
+     *          to not be set to null.
+     * @return string  DBMS specific SQL code portion that should be used to
+     *      declare the specified field.
+     * @access public
+     */
+    function getTypeDeclaration($field)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        switch ($field['type']) {
+        case 'text':
+            $length = !empty($field['length'])
+                ? $field['length'] : false;
+            $fixed = !empty($field['fixed']) ? $field['fixed'] : false;
+            return $fixed ? ($length ? 'CHAR('.$length.')' : 'CHAR('.$db->options['default_text_field_length'].')')
+                : ($length ? 'VARCHAR('.$length.')' : 'TEXT');
+        case 'clob':
+            if (!empty($field['length'])) {
+                $length = $field['length'];
+                if ($length <= 255) {
+                    return 'TINYTEXT';
+                } elseif ($length <= 65532) {
+                    return 'TEXT';
+                } elseif ($length <= 16777215) {
+                    return 'MEDIUMTEXT';
+                }
+            }
+            return 'LONGTEXT';
+        case 'blob':
+            if (!empty($field['length'])) {
+                $length = $field['length'];
+                if ($length <= 255) {
+                    return 'TINYBLOB';
+                } elseif ($length <= 65532) {
+                    return 'BLOB';
+                } elseif ($length <= 16777215) {
+                    return 'MEDIUMBLOB';
+                }
+            }
+            return 'LONGBLOB';
+        case 'integer':
+            if (!empty($field['length'])) {
+                $length = $field['length'];
+                if ($length <= 2) {
+                    return 'SMALLINT';
+                } elseif ($length == 3 || $length == 4) {
+                    return 'INTEGER';
+                } elseif ($length > 4) {
+                    return 'BIGINT';
+                }
+            }
+            return 'INTEGER';
+        case 'boolean':
+            return 'BOOLEAN';
+        case 'date':
+            return 'DATE';
+        case 'time':
+            return 'TIME';
+        case 'timestamp':
+            return 'DATETIME';
+        case 'float':
+            return 'DOUBLE'.($db->options['fixed_float'] ? '('.
+                ($db->options['fixed_float']+2).','.$db->options['fixed_float'].')' : '');
+        case 'decimal':
+            $length = !empty($field['length']) ? $field['length'] : 18;
+            $scale = !empty($field['scale']) ? $field['scale'] : $db->options['decimal_places'];
+            return 'DECIMAL('.$length.','.$scale.')';
+        }
+        return '';
+    }
+
+    // }}}
+    // {{{ _getIntegerDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare an integer type
+     * field to be used in statements like CREATE TABLE.
+     *
+     * @param string  $name   name the field to be declared.
+     * @param string  $field  associative array with the name of the properties
+     *                        of the field being declared as array indexes.
+     *                        Currently, the types of supported field
+     *                        properties are as follows:
+     *
+     *                       unsigned
+     *                        Boolean flag that indicates whether the field
+     *                        should be declared as unsigned integer if
+     *                        possible.
+     *
+     *                       default
+     *                        Integer value to be used as default for this
+     *                        field.
+     *
+     *                       notnull
+     *                        Boolean flag that indicates whether this field is
+     *                        constrained to not be set to null.
+     * @return string  DBMS specific SQL code portion that should be used to
+     *                 declare the specified field.
+     * @access protected
+     */
+    function _getIntegerDeclaration($name, $field)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $default = $autoinc = '';
+        if (!empty($field['autoincrement'])) {
+            $autoinc = ' PRIMARY KEY';
+        } elseif (array_key_exists('default', $field)) {
+            if ($field['default'] === '') {
+                $field['default'] = empty($field['notnull']) ? null : 0;
+            }
+            $default = ' DEFAULT '.$this->quote($field['default'], 'integer');
+        }
+
+        $notnull = empty($field['notnull']) ? '' : ' NOT NULL';
+        $unsigned = empty($field['unsigned']) ? '' : ' UNSIGNED';
+        if (empty($default) && empty($notnull)) {
+            $default = ' DEFAULT NULL';
+        }
+        $name = $db->quoteIdentifier($name, true);
+        return $name.' '.$this->getTypeDeclaration($field).$unsigned.$default.$notnull.$autoinc;
+    }
+
+    // }}}
+    // {{{ matchPattern()
+
+    /**
+     * build a pattern matching string
+     *
+     * @access public
+     *
+     * @param array $pattern even keys are strings, odd are patterns (% and _)
+     * @param string $operator optional pattern operator (LIKE, ILIKE and maybe others in the future)
+     * @param string $field optional field name that is being matched against
+     *                  (might be required when emulating ILIKE)
+     *
+     * @return string SQL pattern
+     */
+    function matchPattern($pattern, $operator = null, $field = null)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $match = '';
+        if (null !== $operator) {
+            $field = (null === $field) ? '' : $field.' ';
+            $operator = strtoupper($operator);
+            switch ($operator) {
+            // case insensitive
+            case 'ILIKE':
+                $match = $field.'LIKE ';
+                break;
+            case 'NOT ILIKE':
+                $match = $field.'NOT LIKE ';
+                break;
+            // case sensitive
+            case 'LIKE':
+                $match = $field.'LIKE ';
+                break;
+            case 'NOT LIKE':
+                $match = $field.'NOT LIKE ';
+                break;
+            default:
+                return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                    'not a supported operator type:'. $operator, __FUNCTION__);
+            }
+        }
+        $match.= "'";
+        foreach ($pattern as $key => $value) {
+            if ($key % 2) {
+                $match.= $value;
+            } else {
+                $match.= $db->escapePattern($db->escape($value));
+            }
+        }
+        $match.= "'";
+        $match.= $this->patternEscapeString();
+        return $match;
+    }
+
+    // }}}
+    // {{{ _mapNativeDatatype()
+
+    /**
+     * Maps a native array description of a field to a MDB2 datatype and length
+     *
+     * @param array  $field native field description
+     * @return array containing the various possible types, length, sign, fixed
+     * @access public
+     */
+    function _mapNativeDatatype($field)
+    {
+        $db_type = strtolower($field['type']);
+        $length = !empty($field['length']) ? $field['length'] : null;
+        $unsigned = !empty($field['unsigned']) ? $field['unsigned'] : null;
+        $fixed = null;
+        $type = array();
+        switch ($db_type) {
+        case 'boolean':
+            $type[] = 'boolean';
+            break;
+        case 'tinyint':
+            $type[] = 'integer';
+            $type[] = 'boolean';
+            if (preg_match('/^(is|has)/', $field['name'])) {
+                $type = array_reverse($type);
+            }
+            $unsigned = preg_match('/ unsigned/i', $field['type']);
+            $length = 1;
+            break;
+        case 'smallint':
+            $type[] = 'integer';
+            $unsigned = preg_match('/ unsigned/i', $field['type']);
+            $length = 2;
+            break;
+        case 'mediumint':
+            $type[] = 'integer';
+            $unsigned = preg_match('/ unsigned/i', $field['type']);
+            $length = 3;
+            break;
+        case 'int':
+        case 'integer':
+        case 'serial':
+            $type[] = 'integer';
+            $unsigned = preg_match('/ unsigned/i', $field['type']);
+            $length = 4;
+            break;
+        case 'bigint':
+        case 'bigserial':
+            $type[] = 'integer';
+            $unsigned = preg_match('/ unsigned/i', $field['type']);
+            $length = 8;
+            break;
+        case 'clob':
+            $type[] = 'clob';
+            $fixed  = false;
+            break;
+        case 'tinytext':
+        case 'mediumtext':
+        case 'longtext':
+        case 'text':
+        case 'varchar':
+        case 'varchar2':
+            $fixed = false;
+        case 'char':
+            $type[] = 'text';
+            if ($length == '1') {
+                $type[] = 'boolean';
+                if (preg_match('/^(is|has)/', $field['name'])) {
+                    $type = array_reverse($type);
+                }
+            } elseif (strstr($db_type, 'text')) {
+                $type[] = 'clob';
+                $type = array_reverse($type);
+            }
+            if ($fixed !== false) {
+                $fixed = true;
+            }
+            break;
+        case 'date':
+            $type[] = 'date';
+            $length = null;
+            break;
+        case 'datetime':
+        case 'timestamp':
+            $type[] = 'timestamp';
+            $length = null;
+            break;
+        case 'time':
+            $type[] = 'time';
+            $length = null;
+            break;
+        case 'float':
+        case 'double':
+        case 'real':
+            $type[] = 'float';
+            break;
+        case 'decimal':
+        case 'numeric':
+            $type[] = 'decimal';
+            $length = $length.','.$field['decimal'];
+            break;
+        case 'tinyblob':
+        case 'mediumblob':
+        case 'longblob':
+        case 'blob':
+            $type[] = 'blob';
+            $length = null;
+            break;
+        case 'year':
+            $type[] = 'integer';
+            $type[] = 'date';
+            $length = null;
+            break;
+        default:
+            $db = $this->getDBInstance();
+            if (PEAR::isError($db)) {
+                return $db;
+            }
+            return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                'unknown database attribute type: '.$db_type, __FUNCTION__);
+        }
+
+        if ((int)$length <= 0) {
+            $length = null;
+        }
+
+        return array($type, $length, $unsigned, $fixed);
+    }
+
+    // }}}
+}
+
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Datatype/sqlsrv.php b/program/lib/MDB2/Driver/Datatype/sqlsrv.php
new file mode 100644 (file)
index 0000000..53a7c09
--- /dev/null
@@ -0,0 +1,451 @@
+<?php
+// vim: set et ts=4 sw=4 fdm=marker:
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2007 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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.                                          |
+// +----------------------------------------------------------------------+
+// | Authors: Lukas Smith <smith@pooteeweet.org>                          |
+// |          Daniel Convissor <danielc@php.net>                          |
+// +----------------------------------------------------------------------+
+
+require_once 'MDB2/Driver/Datatype/Common.php';
+
+/**
+ * MDB2 MS SQL driver
+ *
+ * @package MDB2
+ * @category Database
+ */
+class MDB2_Driver_Datatype_sqlsrv extends MDB2_Driver_Datatype_Common
+{
+    // {{{ _baseConvertResult()
+
+    /**
+     * general type conversion method
+     *
+     * @param mixed   $value refernce to a value to be converted
+     * @param string  $type  specifies which type to convert to
+     * @param boolean $rtrim [optional] when TRUE [default], apply rtrim() to text
+     * @return object a MDB2 error on failure
+     * @access protected
+     */
+    function _baseConvertResult($value, $type, $rtrim = true)
+    {
+        if (null === $value) {
+            return null;
+        }
+        switch ($type) {
+        case 'boolean':
+            return $value == '1';
+        case 'date':
+            if (strlen($value) > 10) {
+                $value = substr($value,0,10);
+            }
+            return $value;
+        case 'time':
+            if (strlen($value) > 8) {
+                $value = substr($value,11,8);
+            }
+            return $value;
+        }
+        return parent::_baseConvertResult($value, $type, $rtrim);
+    }
+
+    // }}}
+    // {{{ _getCollationFieldDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to set the COLLATION
+     * of a field declaration to be used in statements like CREATE TABLE.
+     *
+     * @param string $collation name of the collation
+     *
+     * @return string DBMS specific SQL code portion needed to set the COLLATION
+     *                of a field declaration.
+     */
+    function _getCollationFieldDeclaration($collation)
+    {
+        return 'COLLATE '.$collation;
+    }
+
+    // }}}
+    // {{{ getTypeDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare an text type
+     * field to be used in statements like CREATE TABLE.
+     *
+     * @param array $field  associative array with the name of the properties
+     *      of the field being declared as array indexes. Currently, the types
+     *      of supported field properties are as follows:
+     *
+     *      length
+     *          Integer value that determines the maximum length of the text
+     *          field. If this argument is missing the field should be
+     *          declared to have the longest length allowed by the DBMS.
+     *
+     *      default
+     *          Text value to be used as default for this field.
+     *
+     *      notnull
+     *          Boolean flag that indicates whether this field is constrained
+     *          to not be set to null.
+     * @return string  DBMS specific SQL code portion that should be used to
+     *      declare the specified field.
+     * @access public
+     */
+    function getTypeDeclaration($field)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        switch ($field['type']) {
+        case 'text':
+            $length = !empty($field['length'])
+                ? $field['length'] : false;
+            $fixed = !empty($field['fixed']) ? $field['fixed'] : false;
+            return $fixed ? ($length ? 'CHAR('.$length.')' : 'CHAR('.$db->options['default_text_field_length'].')')
+                : ($length ? 'VARCHAR('.$length.')' : 'VARCHAR(MAX)');
+        case 'clob':
+            if (!empty($field['length'])) {
+                $length = $field['length'];
+                if ($length <= 8000) {
+                    return 'VARCHAR('.$length.')';
+                }
+             }
+             return 'VARCHAR(MAX)';
+        case 'blob':
+            if (!empty($field['length'])) {
+                $length = $field['length'];
+                if ($length <= 8000) {
+                    return "VARBINARY($length)";
+                }
+            }
+            return 'IMAGE';
+        case 'integer':
+            return 'INT';
+        case 'boolean':
+            return 'BIT';
+        case 'date':
+            return 'CHAR ('.strlen('YYYY-MM-DD').')';
+        case 'time':
+            return 'CHAR ('.strlen('HH:MM:SS').')';
+        case 'timestamp':
+            return 'CHAR ('.strlen('YYYY-MM-DD HH:MM:SS').')';
+        case 'float':
+            return 'FLOAT';
+        case 'decimal':
+            $length = !empty($field['length']) ? $field['length'] : 18;
+            $scale = !empty($field['scale']) ? $field['scale'] : $db->options['decimal_places'];
+            return 'DECIMAL('.$length.','.$scale.')';
+        }
+        return '';
+    }
+
+    // }}}
+    // {{{ _getIntegerDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare an integer type
+     * field to be used in statements like CREATE TABLE.
+     *
+     * @param string  $name   name the field to be declared.
+     * @param string  $field  associative array with the name of the properties
+     *                        of the field being declared as array indexes.
+     *                        Currently, the types of supported field
+     *                        properties are as follows:
+     *
+     *                       unsigned
+     *                        Boolean flag that indicates whether the field
+     *                        should be declared as unsigned integer if
+     *                        possible.
+     *
+     *                       default
+     *                        Integer value to be used as default for this
+     *                        field.
+     *
+     *                       notnull
+     *                        Boolean flag that indicates whether this field is
+     *                        constrained to not be set to null.
+     * @return string  DBMS specific SQL code portion that should be used to
+     *                 declare the specified field.
+     * @access protected
+     */
+    function _getIntegerDeclaration($name, $field)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $notnull = empty($field['notnull']) ? ' NULL' : ' NOT NULL';
+        $default = $autoinc = '';
+        if (!empty($field['autoincrement'])) {
+            $autoinc = ' IDENTITY PRIMARY KEY';
+        } elseif (array_key_exists('default', $field)) {
+            if ($field['default'] === '') {
+                $field['default'] = 0;
+            }
+            if (null === $field['default']) {
+                $default = ' DEFAULT (NULL)';
+            } else {
+                $default = ' DEFAULT (' . $this->quote($field['default'], 'integer') . ')';
+            }
+        }
+
+        if (!empty($field['unsigned'])) {
+            $db->warnings[] = "unsigned integer field \"$name\" is being declared as signed integer";
+        }
+
+        $name = $db->quoteIdentifier($name, true);
+        return $name.' '.$this->getTypeDeclaration($field).$notnull.$default.$autoinc;
+    }
+
+    // }}}
+    // {{{ _getCLOBDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare an character
+     * large object type field to be used in statements like CREATE TABLE.
+     *
+     * @param string $name name the field to be declared.
+     * @param array $field associative array with the name of the properties
+     *        of the field being declared as array indexes. Currently, the types
+     *        of supported field properties are as follows:
+     *
+     *        length
+     *            Integer value that determines the maximum length of the large
+     *            object field. If this argument is missing the field should be
+     *            declared to have the longest length allowed by the DBMS.
+     *
+     *        notnull
+     *            Boolean flag that indicates whether this field is constrained
+     *            to not be set to null.
+     * @return string DBMS specific SQL code portion that should be used to
+     *        declare the specified field.
+     * @access public
+     */
+    function _getCLOBDeclaration($name, $field)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $notnull = empty($field['notnull']) ? ' NULL' : ' NOT NULL';
+        $name = $db->quoteIdentifier($name, true);
+        return $name.' '.$this->getTypeDeclaration($field).$notnull;
+    }
+
+    // }}}
+    // {{{ _getBLOBDeclaration()
+
+    /**
+     * Obtain DBMS specific SQL code portion needed to declare an binary large
+     * object type field to be used in statements like CREATE TABLE.
+     *
+     * @param string $name name the field to be declared.
+     * @param array $field associative array with the name of the properties
+     *        of the field being declared as array indexes. Currently, the types
+     *        of supported field properties are as follows:
+     *
+     *        length
+     *            Integer value that determines the maximum length of the large
+     *            object field. If this argument is missing the field should be
+     *            declared to have the longest length allowed by the DBMS.
+     *
+     *        notnull
+     *            Boolean flag that indicates whether this field is constrained
+     *            to not be set to null.
+     * @return string DBMS specific SQL code portion that should be used to
+     *        declare the specified field.
+     * @access protected
+     */
+    function _getBLOBDeclaration($name, $field)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $notnull = empty($field['notnull']) ? ' NULL' : ' NOT NULL';
+        $name = $db->quoteIdentifier($name, true);
+        return $name.' '.$this->getTypeDeclaration($field).$notnull;
+    }
+
+    // }}}
+    // {{{ _quoteBLOB()
+
+    /**
+     * Convert a text value into a DBMS specific format that is suitable to
+     * compose query statements.
+     *
+     * @param string $value text string value that is intended to be converted.
+     * @param bool $quote determines if the value should be quoted and escaped
+     * @param bool $escape_wildcards if to escape escape wildcards
+     * @return string  text string that represents the given argument value in
+     *                 a DBMS specific format.
+     * @access protected
+     */
+    function _quoteBLOB($value, $quote, $escape_wildcards)
+    {
+        if (!$quote) {
+            return $value;
+        }
+        $value = '0x'.bin2hex($this->_readFile($value));
+        return $value;
+    }
+
+    // }}}
+    // {{{ _mapNativeDatatype()
+
+    /**
+     * Maps a native array description of a field to a MDB2 datatype and length
+     *
+     * @param array  $field native field description
+     * @return array containing the various possible types, length, sign, fixed
+     * @access public
+     */
+    function _mapNativeDatatype($field)
+    {
+        // todo: handle length of various int variations
+        $db_type = $field['type'];
+        $length = $field['length'];
+        $type = array();
+        // todo: unsigned handling seems to be missing
+        $unsigned = $fixed = null;
+        switch ($db_type) {
+        case 'bit':
+        case SQLSRV_SQLTYPE_BIT:
+            $type[0] = 'boolean';
+            break;
+        case 'tinyint':
+        case SQLSRV_SQLTYPE_TINYINT:
+            $type[0] = 'integer';
+            $length = 1;
+            break;
+        case 'smallint':
+        case SQLSRV_SQLTYPE_SMALLINT:
+            $type[0] = 'integer';
+            $length = 2;
+            break;
+        case 'int':
+        case SQLSRV_SQLTYPE_INT:
+            $type[0] = 'integer';
+            $length = 4;
+            break;
+        case 'bigint':
+        case SQLSRV_SQLTYPE_BIGINT:
+            $type[0] = 'integer';
+            $length = 8;
+            break;
+        case 'datetime':
+        case SQLSRV_SQLTYPE_DATETIME:
+            $type[0] = 'timestamp';
+            break;
+        case 'float':
+        case SQLSRV_SQLTYPE_FLOAT:
+        case 'real':
+        case SQLSRV_SQLTYPE_REAL:
+            $type[0] = 'float';
+            break;
+        case 'numeric':
+        case SQLSRV_SQLTYPE_NUMERIC:
+        case 'decimal':
+        case SQLSRV_SQLTYPE_DECIMAL:
+        case 'money':
+        case SQLSRV_SQLTYPE_MONEY:
+            $type[0] = 'decimal';
+            $length = $field['numeric_precision'].','.$field['numeric_scale'];
+            break;
+        case 'text':
+        case SQLSRV_SQLTYPE_TEXT:
+        case 'ntext':
+        case SQLSRV_SQLTYPE_NTEXT:
+        case 'varchar':
+        case SQLSRV_SQLTYPE_VARCHAR:
+        case 'nvarchar':
+        case SQLSRV_SQLTYPE_NVARCHAR:
+            $fixed = false;
+        case 'char':
+        case SQLSRV_SQLTYPE_CHAR:
+        case 'nchar':
+        case SQLSRV_SQLTYPE_NCHAR:
+            $type[0] = 'text';
+            if ($length == '1') {
+                $type[] = 'boolean';
+                if (preg_match('/^(is|has)/', $field['name'])) {
+                    $type = array_reverse($type);
+                }
+            } elseif (strstr($db_type, 'text') || strstr($db_type, SQLSRV_SQLTYPE_TEXT)) {
+                $type[] = 'clob';
+                $type = array_reverse($type);
+            }
+            if ($fixed !== false) {
+                $fixed = true;
+            }
+            break;
+        case 'image':
+        case SQLSRV_SQLTYPE_IMAGE:
+        case 'varbinary':
+        case SQLSRV_SQLTYPE_VARBINARY:
+            $type[] = 'blob';
+            $length = null;
+            break;
+        default:
+            $db = $this->getDBInstance();
+            if (PEAR::isError($db)) {
+                return $db;
+            }
+            return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                'unknown database attribute type: '.$db_type, __FUNCTION__);
+        }
+
+        if ((int)$length <= 0) {
+            $length = null;
+        }
+
+        return array($type, $length, $unsigned, $fixed);
+    }
+    // }}}
+}
+
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Function/Common.php b/program/lib/MDB2/Driver/Function/Common.php
new file mode 100644 (file)
index 0000000..7892255
--- /dev/null
@@ -0,0 +1,293 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2006 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Lukas Smith <smith@pooteeweet.org>                           |
+// +----------------------------------------------------------------------+
+//
+// $Id: Common.php 292715 2009-12-28 14:06:34Z quipo $
+//
+
+/**
+ * @package  MDB2
+ * @category Database
+ * @author   Lukas Smith <smith@pooteeweet.org>
+ */
+
+/**
+ * Base class for the function modules that is extended by each MDB2 driver
+ *
+ * To load this module in the MDB2 object:
+ * $mdb->loadModule('Function');
+ *
+ * @package  MDB2
+ * @category Database
+ * @author   Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Driver_Function_Common extends MDB2_Module_Common
+{
+    // {{{ executeStoredProc()
+
+    /**
+     * Execute a stored procedure and return any results
+     *
+     * @param string $name string that identifies the function to execute
+     * @param mixed  $params  array that contains the paramaters to pass the stored proc
+     * @param mixed   $types  array that contains the types of the columns in
+     *                        the result set
+     * @param mixed $result_class string which specifies which result class to use
+     * @param mixed $result_wrap_class string which specifies which class to wrap results in
+     *
+     * @return mixed a result handle or MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function &executeStoredProc($name, $params = null, $types = null, $result_class = true, $result_wrap_class = false)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $error =& $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+        return $error;
+    }
+
+    // }}}
+    // {{{ functionTable()
+
+    /**
+     * return string for internal table used when calling only a function
+     *
+     * @return string for internal table used when calling only a function
+     * @access public
+     */
+    function functionTable()
+    {
+        return '';
+    }
+
+    // }}}
+    // {{{ now()
+
+    /**
+     * Return string to call a variable with the current timestamp inside an SQL statement
+     * There are three special variables for current date and time:
+     * - CURRENT_TIMESTAMP (date and time, TIMESTAMP type)
+     * - CURRENT_DATE (date, DATE type)
+     * - CURRENT_TIME (time, TIME type)
+     *
+     * @param string $type 'timestamp' | 'time' | 'date'
+     *
+     * @return string to call a variable with the current timestamp
+     * @access public
+     */
+    function now($type = 'timestamp')
+    {
+        switch ($type) {
+        case 'time':
+            return 'CURRENT_TIME';
+        case 'date':
+            return 'CURRENT_DATE';
+        case 'timestamp':
+        default:
+            return 'CURRENT_TIMESTAMP';
+        }
+    }
+
+    // }}}
+    // {{{ unixtimestamp()
+
+    /**
+     * return string to call a function to get the unix timestamp from a iso timestamp
+     *
+     * @param string $expression
+     *
+     * @return string to call a variable with the timestamp
+     * @access public
+     */
+    function unixtimestamp($expression)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $error =& $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+        return $error;
+    }
+
+    // }}}
+    // {{{ substring()
+
+    /**
+     * return string to call a function to get a substring inside an SQL statement
+     *
+     * @return string to call a function to get a substring
+     * @access public
+     */
+    function substring($value, $position = 1, $length = null)
+    {
+        if (null !== $length) {
+            return "SUBSTRING($value FROM $position FOR $length)";
+        }
+        return "SUBSTRING($value FROM $position)";
+    }
+
+    // }}}
+    // {{{ replace()
+
+    /**
+     * return string to call a function to get replace inside an SQL statement.
+     *
+     * @return string to call a function to get a replace
+     * @access public
+     */
+    function replace($str, $from_str, $to_str)
+    {
+        return "REPLACE($str, $from_str , $to_str)";
+    }
+
+    // }}}
+    // {{{ concat()
+
+    /**
+     * Returns string to concatenate two or more string parameters
+     *
+     * @param string $value1
+     * @param string $value2
+     * @param string $values...
+     *
+     * @return string to concatenate two strings
+     * @access public
+     */
+    function concat($value1, $value2)
+    {
+        $args = func_get_args();
+        return "(".implode(' || ', $args).")";
+    }
+
+    // }}}
+    // {{{ random()
+
+    /**
+     * return string to call a function to get random value inside an SQL statement
+     *
+     * @return return string to generate float between 0 and 1
+     * @access public
+     */
+    function random()
+    {
+        return 'RAND()';
+    }
+
+    // }}}
+    // {{{ lower()
+
+    /**
+     * return string to call a function to lower the case of an expression
+     *
+     * @param string $expression
+     *
+     * @return return string to lower case of an expression
+     * @access public
+     */
+    function lower($expression)
+    {
+        return "LOWER($expression)";
+    }
+
+    // }}}
+    // {{{ upper()
+
+    /**
+     * return string to call a function to upper the case of an expression
+     *
+     * @param string $expression
+     *
+     * @return return string to upper case of an expression
+     * @access public
+     */
+    function upper($expression)
+    {
+        return "UPPER($expression)";
+    }
+
+    // }}}
+    // {{{ length()
+
+    /**
+     * return string to call a function to get the length of a string expression
+     *
+     * @param string $expression
+     *
+     * @return return string to get the string expression length
+     * @access public
+     */
+    function length($expression)
+    {
+        return "LENGTH($expression)";
+    }
+
+    // }}}
+    // {{{ guid()
+
+    /**
+     * Returns global unique identifier
+     *
+     * @return string to get global unique identifier
+     * @access public
+     */
+    function guid()
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $error =& $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+        return $error;
+    }
+
+    // }}}
+}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Function/mssql.php b/program/lib/MDB2/Driver/Function/mssql.php
new file mode 100644 (file)
index 0000000..69a002f
--- /dev/null
@@ -0,0 +1,193 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2008 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Frank M. Kromann <frank@kromann.info>                        |
+// +----------------------------------------------------------------------+
+//
+// $Id: mssql.php 295587 2010-02-28 17:16:38Z quipo $
+//
+
+require_once 'MDB2/Driver/Function/Common.php';
+
+// {{{ class MDB2_Driver_Function_mssql
+/**
+ * MDB2 MSSQL driver for the function modules
+ *
+ * @package MDB2
+ * @category Database
+ * @author Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Driver_Function_mssql extends MDB2_Driver_Function_Common
+{
+    // {{{ executeStoredProc()
+
+    /**
+     * Execute a stored procedure and return any results
+     *
+     * @param string $name string that identifies the function to execute
+     * @param mixed  $params  array that contains the paramaters to pass the stored proc
+     * @param mixed   $types  array that contains the types of the columns in
+     *                        the result set
+     * @param mixed $result_class string which specifies which result class to use
+     * @param mixed $result_wrap_class string which specifies which class to wrap results in
+     * @return mixed a result handle or MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function executeStoredProc($name, $params = null, $types = null, $result_class = true, $result_wrap_class = false)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = 'EXECUTE '.$name;
+        $query .= $params ? ' '.implode(', ', $params) : '';
+        return $db->query($query, $types, $result_class, $result_wrap_class);
+    }
+
+    // }}}
+    // {{{ now()
+
+    /**
+     * Return string to call a variable with the current timestamp inside an SQL statement
+     * There are three special variables for current date and time:
+     * - CURRENT_TIMESTAMP (date and time, TIMESTAMP type)
+     * - CURRENT_DATE (date, DATE type)
+     * - CURRENT_TIME (time, TIME type)
+     *
+     * @return string to call a variable with the current timestamp
+     * @access public
+     */
+    function now($type = 'timestamp')
+    {
+        switch ($type) {
+        case 'time':
+        case 'date':
+        case 'timestamp':
+        default:
+            return 'GETDATE()';
+        }
+    }
+
+    // }}}
+    // {{{ unixtimestamp()
+
+    /**
+     * return string to call a function to get the unix timestamp from a iso timestamp
+     *
+     * @param string $expression
+     *
+     * @return string to call a variable with the timestamp
+     * @access public
+     */
+    function unixtimestamp($expression)
+    {
+        return 'DATEDIFF(second, \'19700101\', '. $expression.') + DATEDIFF(second, GETDATE(), GETUTCDATE())';
+    }
+
+    // }}}
+    // {{{ substring()
+
+    /**
+     * return string to call a function to get a substring inside an SQL statement
+     *
+     * @return string to call a function to get a substring
+     * @access public
+     */
+    function substring($value, $position = 1, $length = null)
+    {
+        if (null !== $length) {
+            return "SUBSTRING($value, $position, $length)";
+        }
+        return "SUBSTRING($value, $position, LEN($value) - $position + 1)";
+    }
+
+    // }}}
+    // {{{ concat()
+
+    /**
+     * Returns string to concatenate two or more string parameters
+     *
+     * @param string $value1
+     * @param string $value2
+     * @param string $values...
+     * @return string to concatenate two strings
+     * @access public
+     **/
+    function concat($value1, $value2)
+    {
+        $args = func_get_args();
+        return "(".implode(' + ', $args).")";
+    }
+
+    // }}}
+    // {{{ length()
+
+    /**
+     * return string to call a function to get the length of a string expression
+     *
+     * @param string $expression
+     * @return return string to get the string expression length
+     * @access public
+     */
+    function length($expression)
+    {
+        return "LEN($expression)";
+    }
+
+    // }}}
+    // {{{ guid()
+
+    /**
+     * Returns global unique identifier
+     *
+     * @return string to get global unique identifier
+     * @access public
+     */
+    function guid()
+    {
+        return 'NEWID()';
+    }
+
+    // }}}
+}
+// }}}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Function/mysql.php b/program/lib/MDB2/Driver/Function/mysql.php
new file mode 100644 (file)
index 0000000..f34bed6
--- /dev/null
@@ -0,0 +1,136 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2008 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Lukas Smith <smith@pooteeweet.org>                           |
+// +----------------------------------------------------------------------+
+//
+// $Id: mysql.php 295587 2010-02-28 17:16:38Z quipo $
+//
+
+require_once 'MDB2/Driver/Function/Common.php';
+
+/**
+ * MDB2 MySQL driver for the function modules
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Driver_Function_mysql extends MDB2_Driver_Function_Common
+{
+     // }}}
+    // {{{ executeStoredProc()
+
+    /**
+     * Execute a stored procedure and return any results
+     *
+     * @param string $name string that identifies the function to execute
+     * @param mixed  $params  array that contains the paramaters to pass the stored proc
+     * @param mixed   $types  array that contains the types of the columns in
+     *                        the result set
+     * @param mixed $result_class string which specifies which result class to use
+     * @param mixed $result_wrap_class string which specifies which class to wrap results in
+     * @return mixed a result handle or MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function executeStoredProc($name, $params = null, $types = null, $result_class = true, $result_wrap_class = false)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = 'CALL '.$name;
+        $query .= $params ? '('.implode(', ', $params).')' : '()';
+        return $db->query($query, $types, $result_class, $result_wrap_class);
+    }
+
+    // }}}
+    // {{{ unixtimestamp()
+
+    /**
+     * return string to call a function to get the unix timestamp from a iso timestamp
+     *
+     * @param string $expression
+     *
+     * @return string to call a variable with the timestamp
+     * @access public
+     */
+    function unixtimestamp($expression)
+    {
+        return 'UNIX_TIMESTAMP('. $expression.')';
+    }
+
+    // }}}
+    // {{{ concat()
+
+    /**
+     * Returns string to concatenate two or more string parameters
+     *
+     * @param string $value1
+     * @param string $value2
+     * @param string $values...
+     * @return string to concatenate two strings
+     * @access public
+     **/
+    function concat($value1, $value2)
+    {
+        $args = func_get_args();
+        return "CONCAT(".implode(', ', $args).")";
+    }
+
+    // }}}
+    // {{{ guid()
+
+    /**
+     * Returns global unique identifier
+     *
+     * @return string to get global unique identifier
+     * @access public
+     */
+    function guid()
+    {
+        return 'UUID()';
+    }
+
+    // }}}
+}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Function/mysqli.php b/program/lib/MDB2/Driver/Function/mysqli.php
new file mode 100644 (file)
index 0000000..86a6932
--- /dev/null
@@ -0,0 +1,144 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2008 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Lukas Smith <smith@pooteeweet.org>                           |
+// +----------------------------------------------------------------------+
+//
+// $Id: mysqli.php 295587 2010-02-28 17:16:38Z quipo $
+//
+
+require_once 'MDB2/Driver/Function/Common.php';
+
+/**
+ * MDB2 MySQLi driver for the function modules
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Driver_Function_mysqli extends MDB2_Driver_Function_Common
+{
+     // }}}
+    // {{{ executeStoredProc()
+
+    /**
+     * Execute a stored procedure and return any results
+     *
+     * @param string $name string that identifies the function to execute
+     * @param mixed  $params  array that contains the paramaters to pass the stored proc
+     * @param mixed   $types  array that contains the types of the columns in
+     *                        the result set
+     * @param mixed $result_class string which specifies which result class to use
+     * @param mixed $result_wrap_class string which specifies which class to wrap results in
+     * @return mixed a result handle or MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function executeStoredProc($name, $params = null, $types = null, $result_class = true, $result_wrap_class = false)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $multi_query = $db->getOption('multi_query');
+        if (!$multi_query) {
+            $db->setOption('multi_query', true);
+        }
+        $query = 'CALL '.$name;
+        $query .= $params ? '('.implode(', ', $params).')' : '()';
+        $result = $db->query($query, $types, $result_class, $result_wrap_class);
+        if (!$multi_query) {
+            $db->setOption('multi_query', false);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ unixtimestamp()
+
+    /**
+     * return string to call a function to get the unix timestamp from a iso timestamp
+     *
+     * @param string $expression
+     *
+     * @return string to call a variable with the timestamp
+     * @access public
+     */
+    function unixtimestamp($expression)
+    {
+        return 'UNIX_TIMESTAMP('. $expression.')';
+    }
+
+    // }}}
+    // {{{ concat()
+
+    /**
+     * Returns string to concatenate two or more string parameters
+     *
+     * @param string $value1
+     * @param string $value2
+     * @param string $values...
+     * @return string to concatenate two strings
+     * @access public
+     **/
+    function concat($value1, $value2)
+    {
+        $args = func_get_args();
+        return "CONCAT(".implode(', ', $args).")";
+    }
+
+    // }}}
+    // {{{ guid()
+
+    /**
+     * Returns global unique identifier
+     *
+     * @return string to get global unique identifier
+     * @access public
+     */
+    function guid()
+    {
+        return 'UUID()';
+    }
+
+    // }}}
+}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Function/pgsql.php b/program/lib/MDB2/Driver/Function/pgsql.php
new file mode 100644 (file)
index 0000000..ae95190
--- /dev/null
@@ -0,0 +1,115 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2008 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Paul Cooper <pgc@ucecom.com>                                 |
+// +----------------------------------------------------------------------+
+//
+// $Id: pgsql.php 295587 2010-02-28 17:16:38Z quipo $
+
+require_once 'MDB2/Driver/Function/Common.php';
+
+/**
+ * MDB2 MySQL driver for the function modules
+ *
+ * @package MDB2
+ * @category Database
+ * @author Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Driver_Function_pgsql extends MDB2_Driver_Function_Common
+{
+    // {{{ executeStoredProc()
+
+    /**
+     * Execute a stored procedure and return any results
+     *
+     * @param string $name string that identifies the function to execute
+     * @param mixed  $params  array that contains the paramaters to pass the stored proc
+     * @param mixed   $types  array that contains the types of the columns in
+     *                        the result set
+     * @param mixed $result_class string which specifies which result class to use
+     * @param mixed $result_wrap_class string which specifies which class to wrap results in
+     * @return mixed a result handle or MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function executeStoredProc($name, $params = null, $types = null, $result_class = true, $result_wrap_class = false)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = 'SELECT * FROM '.$name;
+        $query .= $params ? '('.implode(', ', $params).')' : '()';
+        return $db->query($query, $types, $result_class, $result_wrap_class);
+    }
+    // }}}
+    // {{{ unixtimestamp()
+
+    /**
+     * return string to call a function to get the unix timestamp from a iso timestamp
+     *
+     * @param string $expression
+     *
+     * @return string to call a variable with the timestamp
+     * @access public
+     */
+    function unixtimestamp($expression)
+    {
+        return 'EXTRACT(EPOCH FROM DATE_TRUNC(\'seconds\', CAST ((' . $expression . ') AS TIMESTAMP)))';
+    }
+
+    // }}}
+    // {{{ random()
+
+    /**
+     * return string to call a function to get random value inside an SQL statement
+     *
+     * @return return string to generate float between 0 and 1
+     * @access public
+     */
+    function random()
+    {
+        return 'RANDOM()';
+    }
+
+    // }}}
+}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Function/sqlite.php b/program/lib/MDB2/Driver/Function/sqlite.php
new file mode 100644 (file)
index 0000000..34e4fcb
--- /dev/null
@@ -0,0 +1,162 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2008 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Lukas Smith <smith@pooteeweet.org>                           |
+// +----------------------------------------------------------------------+
+//
+// $Id: sqlite.php 295587 2010-02-28 17:16:38Z quipo $
+//
+
+require_once 'MDB2/Driver/Function/Common.php';
+
+/**
+ * MDB2 SQLite driver for the function modules
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Driver_Function_sqlite extends MDB2_Driver_Function_Common
+{
+    // {{{ constructor
+
+    /**
+     * Constructor
+     */
+    function __construct($db_index)
+    {
+        parent::__construct($db_index);
+        // create all sorts of UDFs
+    }
+
+    // {{{ now()
+
+    /**
+     * Return string to call a variable with the current timestamp inside an SQL statement
+     * There are three special variables for current date and time.
+     *
+     * @return string to call a variable with the current timestamp
+     * @access public
+     */
+    function now($type = 'timestamp')
+    {
+        switch ($type) {
+        case 'time':
+            return 'time(\'now\')';
+        case 'date':
+            return 'date(\'now\')';
+        case 'timestamp':
+        default:
+            return 'datetime(\'now\')';
+        }
+    }
+
+    // }}}
+    // {{{ unixtimestamp()
+
+    /**
+     * return string to call a function to get the unix timestamp from a iso timestamp
+     *
+     * @param string $expression
+     *
+     * @return string to call a variable with the timestamp
+     * @access public
+     */
+    function unixtimestamp($expression)
+    {
+        return 'strftime("%s",'. $expression.', "utc")';
+    }
+
+    // }}}
+    // {{{ substring()
+
+    /**
+     * return string to call a function to get a substring inside an SQL statement
+     *
+     * @return string to call a function to get a substring
+     * @access public
+     */
+    function substring($value, $position = 1, $length = null)
+    {
+        if (null !== $length) {
+            return "substr($value, $position, $length)";
+        }
+        return "substr($value, $position, length($value))";
+    }
+
+    // }}}
+    // {{{ random()
+
+    /**
+     * return string to call a function to get random value inside an SQL statement
+     *
+     * @return return string to generate float between 0 and 1
+     * @access public
+     */
+    function random()
+    {
+        return '((RANDOM()+2147483648)/4294967296)';
+    }
+
+    // }}}
+    // {{{ replace()
+
+    /**
+     * return string to call a function to get a replacement inside an SQL statement.
+     *
+     * @return string to call a function to get a replace
+     * @access public
+     */
+    function replace($str, $from_str, $to_str)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $error = $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+        return $error;
+    }
+
+    // }}}
+}
+?>
diff --git a/program/lib/MDB2/Driver/Function/sqlsrv.php b/program/lib/MDB2/Driver/Function/sqlsrv.php
new file mode 100644 (file)
index 0000000..055dc9d
--- /dev/null
@@ -0,0 +1,189 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2008 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Frank M. Kromann <frank@kromann.info>                        |
+// +----------------------------------------------------------------------+
+
+require_once 'MDB2/Driver/Function/Common.php';
+
+// {{{ class MDB2_Driver_Function_sqlsrv
+/**
+ * MDB2 MSSQL driver for the function modules
+ *
+ * @package MDB2
+ * @category Database
+ */
+class MDB2_Driver_Function_sqlsrv extends MDB2_Driver_Function_Common
+{
+    // {{{ executeStoredProc()
+
+    /**
+     * Execute a stored procedure and return any results
+     *
+     * @param string $name string that identifies the function to execute
+     * @param mixed  $params  array that contains the paramaters to pass the stored proc
+     * @param mixed   $types  array that contains the types of the columns in
+     *                        the result set
+     * @param mixed $result_class string which specifies which result class to use
+     * @param mixed $result_wrap_class string which specifies which class to wrap results in
+     * @return mixed a result handle or MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function executeStoredProc($name, $params = null, $types = null, $result_class = true, $result_wrap_class = false)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = 'EXECUTE '.$name;
+        $query .= $params ? ' '.implode(', ', $params) : '';
+        return $db->query($query, $types, $result_class, $result_wrap_class);
+    }
+
+    // }}}
+    // {{{ now()
+
+    /**
+     * Return string to call a variable with the current timestamp inside an SQL statement
+     * There are three special variables for current date and time:
+     * - CURRENT_TIMESTAMP (date and time, TIMESTAMP type)
+     * - CURRENT_DATE (date, DATE type)
+     * - CURRENT_TIME (time, TIME type)
+     *
+     * @return string to call a variable with the current timestamp
+     * @access public
+     */
+    function now($type = 'timestamp')
+    {
+        switch ($type) {
+        case 'time':
+        case 'date':
+        case 'timestamp':
+        default:
+            return 'GETDATE()';
+        }
+    }
+
+    // }}}
+    // {{{ unixtimestamp()
+
+    /**
+     * return string to call a function to get the unix timestamp from a iso timestamp
+     *
+     * @param string $expression
+     *
+     * @return string to call a variable with the timestamp
+     * @access public
+     */
+    function unixtimestamp($expression)
+    {
+        return 'DATEDIFF(second, \'19700101\', '. $expression.') + DATEDIFF(second, GETDATE(), GETUTCDATE())';
+    }
+
+    // }}}
+    // {{{ substring()
+
+    /**
+     * return string to call a function to get a substring inside an SQL statement
+     *
+     * @return string to call a function to get a substring
+     * @access public
+     */
+    function substring($value, $position = 1, $length = null)
+    {
+        if (null !== $length) {
+            return "SUBSTRING($value, $position, $length)";
+        }
+        return "SUBSTRING($value, $position, LEN($value) - $position + 1)";
+    }
+
+    // }}}
+    // {{{ concat()
+
+    /**
+     * Returns string to concatenate two or more string parameters
+     *
+     * @param string $value1
+     * @param string $value2
+     * @param string $values...
+     * @return string to concatenate two strings
+     * @access public
+     **/
+    function concat($value1, $value2)
+    {
+        $args = func_get_args();
+        return "(".implode(' + ', $args).")";
+    }
+
+    // }}}
+    // {{{ length()
+
+    /**
+     * return string to call a function to get the length of a string expression
+     *
+     * @param string $expression
+     * @return return string to get the string expression length
+     * @access public
+     */
+    function length($expression)
+    {
+        return "LEN($expression)";
+    }
+
+    // }}}
+    // {{{ guid()
+
+    /**
+     * Returns global unique identifier
+     *
+     * @return string to get global unique identifier
+     * @access public
+     */
+    function guid()
+    {
+        return 'NEWID()';
+    }
+
+    // }}}
+}
+// }}}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Manager/Common.php b/program/lib/MDB2/Driver/Manager/Common.php
new file mode 100644 (file)
index 0000000..f7f07d9
--- /dev/null
@@ -0,0 +1,1014 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2008 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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.                                          |
+// +----------------------------------------------------------------------+
+// | Authors: Lukas Smith <smith@pooteeweet.org>                          |
+// |          Lorenzo Alberton <l.alberton@quipo.it>                      |
+// +----------------------------------------------------------------------+
+//
+// $Id: Common.php 273526 2009-01-14 15:01:21Z quipo $
+//
+
+/**
+ * @package  MDB2
+ * @category Database
+ * @author   Lukas Smith <smith@pooteeweet.org>
+ * @author   Lorenzo Alberton <l.alberton@quipo.it>
+ */
+
+/**
+ * Base class for the management modules that is extended by each MDB2 driver
+ *
+ * To load this module in the MDB2 object:
+ * $mdb->loadModule('Manager');
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Driver_Manager_Common extends MDB2_Module_Common
+{
+    // {{{ splitTableSchema()
+
+    /**
+     * Split the "[owner|schema].table" notation into an array
+     *
+     * @param string $table [schema and] table name
+     *
+     * @return array array(schema, table)
+     * @access private
+     */
+    function splitTableSchema($table)
+    {
+        $ret = array();
+        if (strpos($table, '.') !== false) {
+            return explode('.', $table);
+        }
+        return array(null, $table);
+    }
+
+    // }}}
+    // {{{ getFieldDeclarationList()
+
+    /**
+     * Get declaration of a number of field in bulk
+     *
+     * @param array $fields  a multidimensional associative array.
+     *      The first dimension determines the field name, while the second
+     *      dimension is keyed with the name of the properties
+     *      of the field being declared as array indexes. Currently, the types
+     *      of supported field properties are as follows:
+     *
+     *      default
+     *          Boolean value to be used as default for this field.
+     *
+     *      notnull
+     *          Boolean flag that indicates whether this field is constrained
+     *          to not be set to null.
+     *
+     * @return mixed string on success, a MDB2 error on failure
+     * @access public
+     */
+    function getFieldDeclarationList($fields)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        if (!is_array($fields) || empty($fields)) {
+            return $db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
+                'missing any fields', __FUNCTION__);
+        }
+        foreach ($fields as $field_name => $field) {
+            $query = $db->getDeclaration($field['type'], $field_name, $field);
+            if (PEAR::isError($query)) {
+                return $query;
+            }
+            $query_fields[] = $query;
+        }
+        return implode(', ', $query_fields);
+    }
+
+    // }}}
+    // {{{ _fixSequenceName()
+
+    /**
+     * Removes any formatting in an sequence name using the 'seqname_format' option
+     *
+     * @param string $sqn string that containts name of a potential sequence
+     * @param bool $check if only formatted sequences should be returned
+     * @return string name of the sequence with possible formatting removed
+     * @access protected
+     */
+    function _fixSequenceName($sqn, $check = false)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $seq_pattern = '/^'.preg_replace('/%s/', '([a-z0-9_]+)', $db->options['seqname_format']).'$/i';
+        $seq_name = preg_replace($seq_pattern, '\\1', $sqn);
+        if ($seq_name && !strcasecmp($sqn, $db->getSequenceName($seq_name))) {
+            return $seq_name;
+        }
+        if ($check) {
+            return false;
+        }
+        return $sqn;
+    }
+
+    // }}}
+    // {{{ _fixIndexName()
+
+    /**
+     * Removes any formatting in an index name using the 'idxname_format' option
+     *
+     * @param string $idx string that containts name of anl index
+     * @return string name of the index with eventual formatting removed
+     * @access protected
+     */
+    function _fixIndexName($idx)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $idx_pattern = '/^'.preg_replace('/%s/', '([a-z0-9_]+)', $db->options['idxname_format']).'$/i';
+        $idx_name = preg_replace($idx_pattern, '\\1', $idx);
+        if ($idx_name && !strcasecmp($idx, $db->getIndexName($idx_name))) {
+            return $idx_name;
+        }
+        return $idx;
+    }
+
+    // }}}
+    // {{{ createDatabase()
+
+    /**
+     * create a new database
+     *
+     * @param string $name    name of the database that should be created
+     * @param array  $options array with charset, collation info
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function createDatabase($database, $options = array())
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ alterDatabase()
+
+    /**
+     * alter an existing database
+     *
+     * @param string $name    name of the database that should be created
+     * @param array  $options array with charset, collation info
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function alterDatabase($database, $options = array())
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ dropDatabase()
+
+    /**
+     * drop an existing database
+     *
+     * @param string $name name of the database that should be dropped
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function dropDatabase($database)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ _getCreateTableQuery()
+
+    /**
+     * Create a basic SQL query for a new table creation
+     *
+     * @param string $name    Name of the database that should be created
+     * @param array  $fields  Associative array that contains the definition of each field of the new table
+     * @param array  $options An associative array of table options
+     *
+     * @return mixed string (the SQL query) on success, a MDB2 error on failure
+     * @see createTable()
+     */
+    function _getCreateTableQuery($name, $fields, $options = array())
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        if (!$name) {
+            return $db->raiseError(MDB2_ERROR_CANNOT_CREATE, null, null,
+                'no valid table name specified', __FUNCTION__);
+        }
+        if (empty($fields)) {
+            return $db->raiseError(MDB2_ERROR_CANNOT_CREATE, null, null,
+                'no fields specified for table "'.$name.'"', __FUNCTION__);
+        }
+        $query_fields = $this->getFieldDeclarationList($fields);
+        if (PEAR::isError($query_fields)) {
+            return $query_fields;
+        }
+        if (!empty($options['primary'])) {
+            $query_fields.= ', PRIMARY KEY ('.implode(', ', array_keys($options['primary'])).')';
+        }
+
+        $name = $db->quoteIdentifier($name, true);
+        $result = 'CREATE ';
+        if (!empty($options['temporary'])) {
+            $result .= $this->_getTemporaryTableQuery();
+        }
+        $result .= " TABLE $name ($query_fields)";
+        return $result;
+    }
+
+    // }}}
+    // {{{ _getTemporaryTableQuery()
+
+    /**
+     * A method to return the required SQL string that fits between CREATE ... TABLE
+     * to create the table as a temporary table.
+     *
+     * Should be overridden in driver classes to return the correct string for the
+     * specific database type.
+     *
+     * The default is to return the string "TEMPORARY" - this will result in a
+     * SQL error for any database that does not support temporary tables, or that
+     * requires a different SQL command from "CREATE TEMPORARY TABLE".
+     *
+     * @return string The string required to be placed between "CREATE" and "TABLE"
+     *                to generate a temporary table, if possible.
+     */
+    function _getTemporaryTableQuery()
+    {
+        return 'TEMPORARY';
+    }
+
+    // }}}
+    // {{{ createTable()
+
+    /**
+     * create a new table
+     *
+     * @param string $name   Name of the database that should be created
+     * @param array $fields  Associative array that contains the definition of each field of the new table
+     *                       The indexes of the array entries are the names of the fields of the table an
+     *                       the array entry values are associative arrays like those that are meant to be
+     *                       passed with the field definitions to get[Type]Declaration() functions.
+     *                          array(
+     *                              'id' => array(
+     *                                  'type' => 'integer',
+     *                                  'unsigned' => 1
+     *                                  'notnull' => 1
+     *                                  'default' => 0
+     *                              ),
+     *                              'name' => array(
+     *                                  'type' => 'text',
+     *                                  'length' => 12
+     *                              ),
+     *                              'password' => array(
+     *                                  'type' => 'text',
+     *                                  'length' => 12
+     *                              )
+     *                          );
+     * @param array $options  An associative array of table options:
+     *                          array(
+     *                              'comment' => 'Foo',
+     *                              'temporary' => true|false,
+     *                          );
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function createTable($name, $fields, $options = array())
+    {
+        $query = $this->_getCreateTableQuery($name, $fields, $options);
+        if (PEAR::isError($query)) {
+            return $query;
+        }
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+        $result = $db->exec($query);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ dropTable()
+
+    /**
+     * drop an existing table
+     *
+     * @param string $name name of the table that should be dropped
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function dropTable($name)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $name = $db->quoteIdentifier($name, true);
+        return $db->exec("DROP TABLE $name");
+    }
+
+    // }}}
+    // {{{ truncateTable()
+
+    /**
+     * Truncate an existing table (if the TRUNCATE TABLE syntax is not supported,
+     * it falls back to a DELETE FROM TABLE query)
+     *
+     * @param string $name name of the table that should be truncated
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function truncateTable($name)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $name = $db->quoteIdentifier($name, true);
+        return $db->exec("DELETE FROM $name");
+    }
+
+    // }}}
+    // {{{ vacuum()
+
+    /**
+     * Optimize (vacuum) all the tables in the db (or only the specified table)
+     * and optionally run ANALYZE.
+     *
+     * @param string $table table name (all the tables if empty)
+     * @param array  $options an array with driver-specific options:
+     *               - timeout [int] (in seconds) [mssql-only]
+     *               - analyze [boolean] [pgsql and mysql]
+     *               - full [boolean] [pgsql-only]
+     *               - freeze [boolean] [pgsql-only]
+     *
+     * @return mixed MDB2_OK success, a MDB2 error on failure
+     * @access public
+     */
+    function vacuum($table = null, $options = array())
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ alterTable()
+
+    /**
+     * alter an existing table
+     *
+     * @param string $name         name of the table that is intended to be changed.
+     * @param array $changes     associative array that contains the details of each type
+     *                             of change that is intended to be performed. The types of
+     *                             changes that are currently supported are defined as follows:
+     *
+     *                             name
+     *
+     *                                New name for the table.
+     *
+     *                            add
+     *
+     *                                Associative array with the names of fields to be added as
+     *                                 indexes of the array. The value of each entry of the array
+     *                                 should be set to another associative array with the properties
+     *                                 of the fields to be added. The properties of the fields should
+     *                                 be the same as defined by the MDB2 parser.
+     *
+     *
+     *                            remove
+     *
+     *                                Associative array with the names of fields to be removed as indexes
+     *                                 of the array. Currently the values assigned to each entry are ignored.
+     *                                 An empty array should be used for future compatibility.
+     *
+     *                            rename
+     *
+     *                                Associative array with the names of fields to be renamed as indexes
+     *                                 of the array. The value of each entry of the array should be set to
+     *                                 another associative array with the entry named name with the new
+     *                                 field name and the entry named Declaration that is expected to contain
+     *                                 the portion of the field declaration already in DBMS specific SQL code
+     *                                 as it is used in the CREATE TABLE statement.
+     *
+     *                            change
+     *
+     *                                Associative array with the names of the fields to be changed as indexes
+     *                                 of the array. Keep in mind that if it is intended to change either the
+     *                                 name of a field and any other properties, the change array entries
+     *                                 should have the new names of the fields as array indexes.
+     *
+     *                                The value of each entry of the array should be set to another associative
+     *                                 array with the properties of the fields to that are meant to be changed as
+     *                                 array entries. These entries should be assigned to the new values of the
+     *                                 respective properties. The properties of the fields should be the same
+     *                                 as defined by the MDB2 parser.
+     *
+     *                            Example
+     *                                array(
+     *                                    'name' => 'userlist',
+     *                                    'add' => array(
+     *                                        'quota' => array(
+     *                                            'type' => 'integer',
+     *                                            'unsigned' => 1
+     *                                        )
+     *                                    ),
+     *                                    'remove' => array(
+     *                                        'file_limit' => array(),
+     *                                        'time_limit' => array()
+     *                                    ),
+     *                                    'change' => array(
+     *                                        'name' => array(
+     *                                            'length' => '20',
+     *                                            'definition' => array(
+     *                                                'type' => 'text',
+     *                                                'length' => 20,
+     *                                            ),
+     *                                        )
+     *                                    ),
+     *                                    'rename' => array(
+     *                                        'sex' => array(
+     *                                            'name' => 'gender',
+     *                                            'definition' => array(
+     *                                                'type' => 'text',
+     *                                                'length' => 1,
+     *                                                'default' => 'M',
+     *                                            ),
+     *                                        )
+     *                                    )
+     *                                )
+     *
+     * @param boolean $check     indicates whether the function should just check if the DBMS driver
+     *                             can perform the requested table alterations if the value is true or
+     *                             actually perform them otherwise.
+     * @access public
+     *
+      * @return mixed MDB2_OK on success, a MDB2 error on failure
+     */
+    function alterTable($name, $changes, $check)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ listDatabases()
+
+    /**
+     * list all databases
+     *
+     * @return mixed array of database names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listDatabases()
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implementedd', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ listUsers()
+
+    /**
+     * list all users
+     *
+     * @return mixed array of user names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listUsers()
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ listViews()
+
+    /**
+     * list all views in the current database
+     *
+     * @param string database, the current is default
+     *               NB: not all the drivers can get the view names from
+     *               a database other than the current one
+     * @return mixed array of view names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listViews($database = null)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ listTableViews()
+
+    /**
+     * list the views in the database that reference a given table
+     *
+     * @param string table for which all referenced views should be found
+     * @return mixed array of view names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTableViews($table)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ listTableTriggers()
+
+    /**
+     * list all triggers in the database that reference a given table
+     *
+     * @param string table for which all referenced triggers should be found
+     * @return mixed array of trigger names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTableTriggers($table = null)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ listFunctions()
+
+    /**
+     * list all functions in the current database
+     *
+     * @return mixed array of function names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listFunctions()
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ listTables()
+
+    /**
+     * list all tables in the current database
+     *
+     * @param string database, the current is default.
+     *               NB: not all the drivers can get the table names from
+     *               a database other than the current one
+     * @return mixed array of table names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTables($database = null)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ listTableFields()
+
+    /**
+     * list all fields in a table in the current database
+     *
+     * @param string $table name of table that should be used in method
+     * @return mixed array of field names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTableFields($table)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ createIndex()
+
+    /**
+     * Get the stucture of a field into an array
+     *
+     * @param string    $table         name of the table on which the index is to be created
+     * @param string    $name         name of the index to be created
+     * @param array     $definition        associative array that defines properties of the index to be created.
+     *                                 Currently, only one property named FIELDS is supported. This property
+     *                                 is also an associative with the names of the index fields as array
+     *                                 indexes. Each entry of this array is set to another type of associative
+     *                                 array that specifies properties of the index that are specific to
+     *                                 each field.
+     *
+     *                                Currently, only the sorting property is supported. It should be used
+     *                                 to define the sorting direction of the index. It may be set to either
+     *                                 ascending or descending.
+     *
+     *                                Not all DBMS support index sorting direction configuration. The DBMS
+     *                                 drivers of those that do not support it ignore this property. Use the
+     *                                 function supports() to determine whether the DBMS driver can manage indexes.
+     *
+     *                                 Example
+     *                                    array(
+     *                                        'fields' => array(
+     *                                            'user_name' => array(
+     *                                                'sorting' => 'ascending'
+     *                                            ),
+     *                                            'last_login' => array()
+     *                                        )
+     *                                    )
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function createIndex($table, $name, $definition)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $table = $db->quoteIdentifier($table, true);
+        $name = $db->quoteIdentifier($db->getIndexName($name), true);
+        $query = "CREATE INDEX $name ON $table";
+        $fields = array();
+        foreach (array_keys($definition['fields']) as $field) {
+            $fields[] = $db->quoteIdentifier($field, true);
+        }
+        $query .= ' ('. implode(', ', $fields) . ')';
+        return $db->exec($query);
+    }
+
+    // }}}
+    // {{{ dropIndex()
+
+    /**
+     * drop existing index
+     *
+     * @param string    $table         name of table that should be used in method
+     * @param string    $name         name of the index to be dropped
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function dropIndex($table, $name)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $name = $db->quoteIdentifier($db->getIndexName($name), true);
+        return $db->exec("DROP INDEX $name");
+    }
+
+    // }}}
+    // {{{ listTableIndexes()
+
+    /**
+     * list all indexes in a table
+     *
+     * @param string $table name of table that should be used in method
+     * @return mixed array of index names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTableIndexes($table)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ _getAdvancedFKOptions()
+
+    /**
+     * Return the FOREIGN KEY query section dealing with non-standard options
+     * as MATCH, INITIALLY DEFERRED, ON UPDATE, ...
+     *
+     * @param array $definition
+     * @return string
+     * @access protected
+     */
+    function _getAdvancedFKOptions($definition)
+    {
+        return '';
+    }
+
+    // }}}
+    // {{{ createConstraint()
+
+    /**
+     * create a constraint on a table
+     *
+     * @param string    $table       name of the table on which the constraint is to be created
+     * @param string    $name        name of the constraint to be created
+     * @param array     $definition  associative array that defines properties of the constraint to be created.
+     *                               The full structure of the array looks like this:
+     *          <pre>
+     *          array (
+     *              [primary] => 0
+     *              [unique]  => 0
+     *              [foreign] => 1
+     *              [check]   => 0
+     *              [fields] => array (
+     *                  [field1name] => array() // one entry per each field covered
+     *                  [field2name] => array() // by the index
+     *                  [field3name] => array(
+     *                      [sorting]  => ascending
+     *                      [position] => 3
+     *                  )
+     *              )
+     *              [references] => array(
+     *                  [table] => name
+     *                  [fields] => array(
+     *                      [field1name] => array(  //one entry per each referenced field
+     *                           [position] => 1
+     *                      )
+     *                  )
+     *              )
+     *              [deferrable] => 0
+     *              [initiallydeferred] => 0
+     *              [onupdate] => CASCADE|RESTRICT|SET NULL|SET DEFAULT|NO ACTION
+     *              [ondelete] => CASCADE|RESTRICT|SET NULL|SET DEFAULT|NO ACTION
+     *              [match] => SIMPLE|PARTIAL|FULL
+     *          );
+     *          </pre>
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function createConstraint($table, $name, $definition)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+        $table = $db->quoteIdentifier($table, true);
+        $name = $db->quoteIdentifier($db->getIndexName($name), true);
+        $query = "ALTER TABLE $table ADD CONSTRAINT $name";
+        if (!empty($definition['primary'])) {
+            $query.= ' PRIMARY KEY';
+        } elseif (!empty($definition['unique'])) {
+            $query.= ' UNIQUE';
+        } elseif (!empty($definition['foreign'])) {
+            $query.= ' FOREIGN KEY';
+        }
+        $fields = array();
+        foreach (array_keys($definition['fields']) as $field) {
+            $fields[] = $db->quoteIdentifier($field, true);
+        }
+        $query .= ' ('. implode(', ', $fields) . ')';
+        if (!empty($definition['foreign'])) {
+            $query.= ' REFERENCES ' . $db->quoteIdentifier($definition['references']['table'], true);
+            $referenced_fields = array();
+            foreach (array_keys($definition['references']['fields']) as $field) {
+                $referenced_fields[] = $db->quoteIdentifier($field, true);
+            }
+            $query .= ' ('. implode(', ', $referenced_fields) . ')';
+            $query .= $this->_getAdvancedFKOptions($definition);
+        }
+        return $db->exec($query);
+    }
+
+    // }}}
+    // {{{ dropConstraint()
+
+    /**
+     * drop existing constraint
+     *
+     * @param string    $table        name of table that should be used in method
+     * @param string    $name         name of the constraint to be dropped
+     * @param string    $primary      hint if the constraint is primary
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function dropConstraint($table, $name, $primary = false)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $table = $db->quoteIdentifier($table, true);
+        $name = $db->quoteIdentifier($db->getIndexName($name), true);
+        return $db->exec("ALTER TABLE $table DROP CONSTRAINT $name");
+    }
+
+    // }}}
+    // {{{ listTableConstraints()
+
+    /**
+     * list all constraints in a table
+     *
+     * @param string $table name of table that should be used in method
+     * @return mixed array of constraint names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTableConstraints($table)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ createSequence()
+
+    /**
+     * create sequence
+     *
+     * @param string    $seq_name     name of the sequence to be created
+     * @param string    $start         start value of the sequence; default is 1
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function createSequence($seq_name, $start = 1)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ dropSequence()
+
+    /**
+     * drop existing sequence
+     *
+     * @param string    $seq_name     name of the sequence to be dropped
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function dropSequence($name)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ listSequences()
+
+    /**
+     * list all sequences in the current database
+     *
+     * @param string database, the current is default
+     *               NB: not all the drivers can get the sequence names from
+     *               a database other than the current one
+     * @return mixed array of sequence names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listSequences($database = null)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Manager/mssql.php b/program/lib/MDB2/Driver/Manager/mssql.php
new file mode 100644 (file)
index 0000000..22a4054
--- /dev/null
@@ -0,0 +1,1129 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2008 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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.                                          |
+// +----------------------------------------------------------------------+
+// | Authors: Frank M. Kromann <frank@kromann.info>                       |
+// |          David Coallier <davidc@php.net>                             |
+// |          Lorenzo Alberton <l.alberton@quipo.it>                      |
+// +----------------------------------------------------------------------+
+//
+// $Id: mssql.php 295587 2010-02-28 17:16:38Z quipo $
+//
+
+require_once 'MDB2/Driver/Manager/Common.php';
+
+// {{{ class MDB2_Driver_Manager_mssql
+
+/**
+ * MDB2 MSSQL driver for the management modules
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Frank M. Kromann <frank@kromann.info>
+ * @author  David Coallier <davidc@php.net>
+ * @author  Lorenzo Alberton <l.alberton@quipo.it>
+ */
+class MDB2_Driver_Manager_mssql extends MDB2_Driver_Manager_Common
+{
+    // {{{ createDatabase()
+    /**
+     * create a new database
+     *
+     * @param string $name    name of the database that should be created
+     * @param array  $options array with collation info
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function createDatabase($name, $options = array())
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $name = $db->quoteIdentifier($name, true);
+        $query = "CREATE DATABASE $name";
+        if ($db->options['database_device']) {
+            $query.= ' ON '.$db->options['database_device'];
+            $query.= $db->options['database_size'] ? '=' .
+                     $db->options['database_size'] : '';
+        }
+        if (!empty($options['collation'])) {
+            $query .= ' COLLATE ' . $options['collation'];
+        }
+        return $db->standaloneQuery($query, null, true);
+    }
+
+    // }}}
+    // {{{ alterDatabase()
+
+    /**
+     * alter an existing database
+     *
+     * @param string $name    name of the database that is intended to be changed
+     * @param array  $options array with name, collation info
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function alterDatabase($name, $options = array())
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = '';
+        if (!empty($options['name'])) {
+            $query .= ' MODIFY NAME = ' .$db->quoteIdentifier($options['name'], true);
+        }
+        if (!empty($options['collation'])) {
+            $query .= ' COLLATE ' . $options['collation'];
+        }
+        if (!empty($query)) {
+            $query = 'ALTER DATABASE '. $db->quoteIdentifier($name, true) . $query;
+            return $db->standaloneQuery($query, null, true);
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ dropDatabase()
+
+    /**
+     * drop an existing database
+     *
+     * @param string $name name of the database that should be dropped
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function dropDatabase($name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $name = $db->quoteIdentifier($name, true);
+        return $db->standaloneQuery("DROP DATABASE $name", null, true);
+    }
+
+    // }}}
+    // {{{ _getTemporaryTableQuery()
+
+    /**
+     * Override the parent method.
+     *
+     * @return string The string required to be placed between "CREATE" and "TABLE"
+     *                to generate a temporary table, if possible.
+     */
+    function _getTemporaryTableQuery()
+    {
+        return '';
+    }
+
+    // }}}
+    // {{{ _getAdvancedFKOptions()
+
+    /**
+     * Return the FOREIGN KEY query section dealing with non-standard options
+     * as MATCH, INITIALLY DEFERRED, ON UPDATE, ...
+     *
+     * @param array $definition
+     *
+     * @return string
+     * @access protected
+     */
+    function _getAdvancedFKOptions($definition)
+    {
+        $query = '';
+        if (!empty($definition['onupdate'])) {
+            $query .= ' ON UPDATE '.$definition['onupdate'];
+        }
+        if (!empty($definition['ondelete'])) {
+            $query .= ' ON DELETE '.$definition['ondelete'];
+        }
+        return $query;
+    }
+
+    // }}}
+    // {{{ createTable()
+
+    /**
+     * create a new table
+     *
+     * @param string $name   Name of the database that should be created
+     * @param array  $fields Associative array that contains the definition of each field of the new table
+     *                       The indexes of the array entries are the names of the fields of the table an
+     *                       the array entry values are associative arrays like those that are meant to be
+     *                       passed with the field definitions to get[Type]Declaration() functions.
+     *
+     *                      Example
+     *                        array(
+     *
+     *                            'id' => array(
+     *                                'type' => 'integer',
+     *                                'unsigned' => 1,
+     *                                'notnull' => 1,
+     *                                'default' => 0,
+     *                            ),
+     *                            'name' => array(
+     *                                'type' => 'text',
+     *                                'length' => 12,
+     *                            ),
+     *                            'description' => array(
+     *                                'type' => 'text',
+     *                                'length' => 12,
+     *                            )
+     *                        );
+     * @param array $options An associative array of table options:
+     *                          array(
+     *                              'comment' => 'Foo',
+     *                              'temporary' => true|false,
+     *                          );
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function createTable($name, $fields, $options = array())
+    {
+        if (!empty($options['temporary'])) {
+            $name = '#'.$name;
+        }
+        return parent::createTable($name, $fields, $options);
+    }
+
+    // }}}
+    // {{{ truncateTable()
+
+    /**
+     * Truncate an existing table (if the TRUNCATE TABLE syntax is not supported,
+     * it falls back to a DELETE FROM TABLE query)
+     *
+     * @param string $name name of the table that should be truncated
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function truncateTable($name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $name = $db->quoteIdentifier($name, true);
+        return $db->exec("TRUNCATE TABLE $name");
+    }
+
+    // }}}
+    // {{{ vacuum()
+
+    /**
+     * Optimize (vacuum) all the tables in the db (or only the specified table)
+     * and optionally run ANALYZE.
+     *
+     * @param string $table table name (all the tables if empty)
+     * @param array  $options an array with driver-specific options:
+     *               - timeout [int] (in seconds) [mssql-only]
+     *               - analyze [boolean] [pgsql and mysql]
+     *               - full [boolean] [pgsql-only]
+     *               - freeze [boolean] [pgsql-only]
+     *
+     * NB: you have to run the NSControl Create utility to enable VACUUM
+     *
+     * @return mixed MDB2_OK success, a MDB2 error on failure
+     * @access public
+     */
+    function vacuum($table = null, $options = array())
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+        $timeout = isset($options['timeout']) ? (int)$options['timeout'] : 300;
+
+        $query = 'NSControl Create';
+        $result = $db->exec($query);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+
+        return $db->exec('EXEC NSVacuum '.$timeout);
+    }
+
+    // }}}
+    // {{{ alterTable()
+
+    /**
+     * alter an existing table
+     *
+     * @param string  $name    name of the table that is intended to be changed.
+     * @param array   $changes associative array that contains the details of each type
+     *                         of change that is intended to be performed. The types of
+     *                         changes that are currently supported are defined as follows:
+     *
+     *                             name
+     *
+     *                                New name for the table.
+     *
+     *                            add
+     *
+     *                                Associative array with the names of fields to be added as
+     *                                 indexes of the array. The value of each entry of the array
+     *                                 should be set to another associative array with the properties
+     *                                 of the fields to be added. The properties of the fields should
+     *                                 be the same as defined by the MDB2 parser.
+     *
+     *
+     *                            remove
+     *
+     *                                Associative array with the names of fields to be removed as indexes
+     *                                 of the array. Currently the values assigned to each entry are ignored.
+     *                                 An empty array should be used for future compatibility.
+     *
+     *                            rename
+     *
+     *                                Associative array with the names of fields to be renamed as indexes
+     *                                 of the array. The value of each entry of the array should be set to
+     *                                 another associative array with the entry named name with the new
+     *                                 field name and the entry named Declaration that is expected to contain
+     *                                 the portion of the field declaration already in DBMS specific SQL code
+     *                                 as it is used in the CREATE TABLE statement.
+     *
+     *                            change
+     *
+     *                                Associative array with the names of the fields to be changed as indexes
+     *                                 of the array. Keep in mind that if it is intended to change either the
+     *                                 name of a field and any other properties, the change array entries
+     *                                 should have the new names of the fields as array indexes.
+     *
+     *                                The value of each entry of the array should be set to another associative
+     *                                 array with the properties of the fields to that are meant to be changed as
+     *                                 array entries. These entries should be assigned to the new values of the
+     *                                 respective properties. The properties of the fields should be the same
+     *                                 as defined by the MDB2 parser.
+     *
+     *                            Example
+     *                                array(
+     *                                    'name' => 'userlist',
+     *                                    'add' => array(
+     *                                        'quota' => array(
+     *                                            'type' => 'integer',
+     *                                            'unsigned' => 1
+     *                                        )
+     *                                    ),
+     *                                    'remove' => array(
+     *                                        'file_limit' => array(),
+     *                                        'time_limit' => array()
+     *                                    ),
+     *                                    'change' => array(
+     *                                        'name' => array(
+     *                                            'length' => '20',
+     *                                            'definition' => array(
+     *                                                'type' => 'text',
+     *                                                'length' => 20,
+     *                                            ),
+     *                                        )
+     *                                    ),
+     *                                    'rename' => array(
+     *                                        'sex' => array(
+     *                                            'name' => 'gender',
+     *                                            'definition' => array(
+     *                                                'type' => 'text',
+     *                                                'length' => 1,
+     *                                                'default' => 'M',
+     *                                            ),
+     *                                        )
+     *                                    )
+     *                                )
+     *
+     * @param boolean $check   indicates whether the function should just check if the DBMS driver
+     *                         can perform the requested table alterations if the value is true or
+     *                         actually perform them otherwise.
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function alterTable($name, $changes, $check)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+        $name_quoted = $db->quoteIdentifier($name, true);
+
+        foreach ($changes as $change_name => $change) {
+            switch ($change_name) {
+            case 'remove':
+            case 'rename':
+            case 'add':
+            case 'change':
+            case 'name':
+                break;
+            default:
+                return $db->raiseError(MDB2_ERROR_CANNOT_ALTER, null, null,
+                    'change type "'.$change_name.'" not yet supported', __FUNCTION__);
+            }
+        }
+
+        if ($check) {
+            return MDB2_OK;
+        }
+
+        $idxname_format = $db->getOption('idxname_format');
+        $db->setOption('idxname_format', '%s');
+
+        if (!empty($changes['remove']) && is_array($changes['remove'])) {
+            $result = $this->_dropConflictingIndices($name, array_keys($changes['remove']));
+            if (PEAR::isError($result)) {
+                $db->setOption('idxname_format', $idxname_format);
+                return $result;
+            }
+            $result = $this->_dropConflictingConstraints($name, array_keys($changes['remove']));
+            if (PEAR::isError($result)) {
+                $db->setOption('idxname_format', $idxname_format);
+                return $result;
+            }
+
+            $query = '';
+            foreach ($changes['remove'] as $field_name => $field) {
+                if ($query) {
+                    $query.= ', ';
+                }
+                $field_name = $db->quoteIdentifier($field_name, true);
+                $query.= 'COLUMN ' . $field_name;
+            }
+
+            $result = $db->exec("ALTER TABLE $name_quoted DROP $query");
+            if (PEAR::isError($result)) {
+                $db->setOption('idxname_format', $idxname_format);
+                return $result;
+            }
+        }
+
+        if (!empty($changes['rename']) && is_array($changes['rename'])) {
+            foreach ($changes['rename'] as $field_name => $field) {
+                $field_name = $db->quoteIdentifier($field_name, true);
+                $result = $db->exec("sp_rename '$name_quoted.$field_name', '".$field['name']."', 'COLUMN'");
+                if (PEAR::isError($result)) {
+                    $db->setOption('idxname_format', $idxname_format);
+                    return $result;
+                }
+            }
+        }
+
+        if (!empty($changes['add']) && is_array($changes['add'])) {
+            $query = '';
+            foreach ($changes['add'] as $field_name => $field) {
+                if ($query) {
+                    $query.= ', ';
+                } else {
+                    $query.= 'ADD ';
+                }
+                $query.= $db->getDeclaration($field['type'], $field_name, $field);
+            }
+
+            $result = $db->exec("ALTER TABLE $name_quoted $query");
+            if (PEAR::isError($result)) {
+                $db->setOption('idxname_format', $idxname_format);
+                return $result;
+            }
+        }
+
+        $dropped_indices     = array();
+        $dropped_constraints = array();
+
+        if (!empty($changes['change']) && is_array($changes['change'])) {
+            $dropped = $this->_dropConflictingIndices($name, array_keys($changes['change']));
+            if (PEAR::isError($dropped)) {
+                $db->setOption('idxname_format', $idxname_format);
+                return $dropped;
+            }
+            $dropped_indices = array_merge($dropped_indices, $dropped);
+            $dropped = $this->_dropConflictingConstraints($name, array_keys($changes['change']));
+            if (PEAR::isError($dropped)) {
+                $db->setOption('idxname_format', $idxname_format);
+                return $dropped;
+            }
+            $dropped_constraints = array_merge($dropped_constraints, $dropped);
+
+            foreach ($changes['change'] as $field_name => $field) {
+                //MSSQL doesn't allow multiple ALTER COLUMNs in one query
+                $query = 'ALTER COLUMN ';
+
+                //MSSQL doesn't allow changing the DEFAULT value of a field in altering mode
+                if (array_key_exists('default', $field['definition'])) {
+                    unset($field['definition']['default']);
+                }
+
+                $query .= $db->getDeclaration($field['definition']['type'], $field_name, $field['definition']);
+                $result = $db->exec("ALTER TABLE $name_quoted $query");
+                if (PEAR::isError($result)) {
+                    $db->setOption('idxname_format', $idxname_format);
+                    return $result;
+                }
+            }
+        }
+
+        // restore the dropped conflicting indices and constraints
+        foreach ($dropped_indices as $index_name => $index) {
+            $result = $this->createIndex($name, $index_name, $index);
+            if (PEAR::isError($result)) {
+                $db->setOption('idxname_format', $idxname_format);
+                return $result;
+            }
+        }
+        foreach ($dropped_constraints as $constraint_name => $constraint) {
+            $result = $this->createConstraint($name, $constraint_name, $constraint);
+            if (PEAR::isError($result)) {
+                $db->setOption('idxname_format', $idxname_format);
+                return $result;
+            }
+        }
+
+        $db->setOption('idxname_format', $idxname_format);
+
+        if (!empty($changes['name'])) {
+            $new_name = $db->quoteIdentifier($changes['name'], true);
+            $result = $db->exec("sp_rename '$name_quoted', '$new_name'");
+            if (PEAR::isError($result)) {
+                return $result;
+            }
+        }
+
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ _dropConflictingIndices()
+
+    /**
+     * Drop the indices that prevent a successful ALTER TABLE action
+     *
+     * @param string $table  table name
+     * @param array  $fields array of names of the fields affected by the change
+     *
+     * @return array dropped indices definitions
+     */
+    function _dropConflictingIndices($table, $fields)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $dropped = array();
+        $index_names = $this->listTableIndexes($table);
+        if (PEAR::isError($index_names)) {
+            return $index_names;
+        }
+        $db->loadModule('Reverse');
+        $indexes = array();
+        foreach ($index_names as $index_name) {
+               $idx_def = $db->reverse->getTableIndexDefinition($table, $index_name);
+            if (!PEAR::isError($idx_def)) {
+                $indexes[$index_name] = $idx_def;
+            }
+        }
+        foreach ($fields as $field_name) {
+            foreach ($indexes as $index_name => $index) {
+                if (!isset($dropped[$index_name]) && array_key_exists($field_name, $index['fields'])) {
+                    $dropped[$index_name] = $index;
+                    $result = $this->dropIndex($table, $index_name);
+                    if (PEAR::isError($result)) {
+                        return $result;
+                    }
+                }
+            }
+        }
+
+        return $dropped;
+    }
+
+    // }}}
+    // {{{ _dropConflictingConstraints()
+
+    /**
+     * Drop the constraints that prevent a successful ALTER TABLE action
+     *
+     * @param string $table  table name
+     * @param array  $fields array of names of the fields affected by the change
+     *
+     * @return array dropped constraints definitions
+     */
+    function _dropConflictingConstraints($table, $fields)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $dropped = array();
+        $constraint_names = $this->listTableConstraints($table);
+        if (PEAR::isError($constraint_names)) {
+            return $constraint_names;
+        }
+        $db->loadModule('Reverse');
+        $constraints = array();
+        foreach ($constraint_names as $constraint_name) {
+               $cons_def = $db->reverse->getTableConstraintDefinition($table, $constraint_name);
+            if (!PEAR::isError($cons_def)) {
+                $constraints[$constraint_name] = $cons_def;
+            }
+        }
+        foreach ($fields as $field_name) {
+            foreach ($constraints as $constraint_name => $constraint) {
+                if (!isset($dropped[$constraint_name]) && array_key_exists($field_name, $constraint['fields'])) {
+                    $dropped[$constraint_name] = $constraint;
+                    $result = $this->dropConstraint($table, $constraint_name);
+                    if (PEAR::isError($result)) {
+                        return $result;
+                    }
+                }
+            }
+            // also drop implicit DEFAULT constraints
+            $default = $this->_getTableFieldDefaultConstraint($table, $field_name);
+            if (!PEAR::isError($default) && !empty($default)) {
+                $result = $this->dropConstraint($table, $default);
+                if (PEAR::isError($result)) {
+                    return $result;
+                }
+            }
+        }
+
+        return $dropped;
+    }
+
+    // }}}
+    // {{{ _getTableFieldDefaultConstraint()
+
+    /**
+     * Get the default constraint for a table field
+     *
+     * @param string $table name of table that should be used in method
+     * @param string $field name of field that should be used in method
+     *
+     * @return mixed name of default constraint on success, a MDB2 error on failure
+     * @access private
+     */
+    function _getTableFieldDefaultConstraint($table, $field)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $table = $db->quoteIdentifier($table, true);
+        $field = $db->quote($field, 'text');
+        $query = "SELECT OBJECT_NAME(syscolumns.cdefault)
+                    FROM syscolumns
+                   WHERE syscolumns.id = object_id('$table')
+                     AND syscolumns.name = $field
+                     AND syscolumns.cdefault <> 0";
+        return $db->queryOne($query);
+    }
+
+    // }}}
+    // {{{ listTables()
+
+    /**
+     * list all tables in the current database
+     *
+     * @return mixed array of table names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTables()
+    {
+        $db = $this->getDBInstance();
+
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = 'EXEC sp_tables @table_type = "\'TABLE\'"';
+        $table_names = $db->queryCol($query, null, 2);
+        if (PEAR::isError($table_names)) {
+            return $table_names;
+        }
+        $result = array();
+        foreach ($table_names as $table_name) {
+            if (!$this->_fixSequenceName($table_name, true)) {
+                $result[] = $table_name;
+            }
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ?
+                        'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ listTableFields()
+
+    /**
+     * list all fields in a table in the current database
+     *
+     * @param string $table name of table that should be used in method
+     *
+     * @return mixed array of field names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTableFields($table)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $table = $db->quote($table, 'text');
+        $columns = $db->queryCol("SELECT c.name
+                                    FROM syscolumns c
+                               LEFT JOIN sysobjects o ON c.id = o.id
+                                   WHERE o.name = $table");
+        if (PEAR::isError($columns)) {
+            return $columns;
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $columns = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $columns);
+        }
+        return $columns;
+    }
+
+    // }}}
+    // {{{ listTableIndexes()
+
+    /**
+     * list all indexes in a table
+     *
+     * @param string $table name of table that should be used in method
+     *
+     * @return mixed array of index names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTableIndexes($table)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $key_name = 'INDEX_NAME';
+        $pk_name = 'PK_NAME';
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            if ($db->options['field_case'] == CASE_LOWER) {
+                $key_name = strtolower($key_name);
+                $pk_name  = strtolower($pk_name);
+            } else {
+                $key_name = strtoupper($key_name);
+                $pk_name  = strtoupper($pk_name);
+            }
+        }
+        $table = $db->quote($table, 'text');
+        $query = "EXEC sp_statistics @table_name=$table";
+        $indexes = $db->queryCol($query, 'text', $key_name);
+        if (PEAR::isError($indexes)) {
+            return $indexes;
+        }
+        $query = "EXEC sp_pkeys @table_name=$table";
+        $pk_all = $db->queryCol($query, 'text', $pk_name);
+        $result = array();
+        foreach ($indexes as $index) {
+            if (!in_array($index, $pk_all) && ($index = $this->_fixIndexName($index))) {
+                $result[$index] = true;
+            }
+        }
+
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_change_key_case($result, $db->options['field_case']);
+        }
+        return array_keys($result);
+    }
+
+    // }}}
+    // {{{ listDatabases()
+
+    /**
+     * list all databases
+     *
+     * @return mixed array of database names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listDatabases()
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $result = $db->queryCol('SELECT name FROM sys.databases');
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ listUsers()
+
+    /**
+     * list all users
+     *
+     * @return mixed array of user names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listUsers()
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $result = $db->queryCol('SELECT DISTINCT loginame FROM master..sysprocesses');
+        if (PEAR::isError($result) || empty($result)) {
+            return $result;
+        }
+        foreach (array_keys($result) as $k) {
+            $result[$k] = trim($result[$k]);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ listFunctions()
+
+    /**
+     * list all functions in the current database
+     *
+     * @return mixed array of function names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listFunctions()
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = "SELECT name
+                    FROM sysobjects
+                   WHERE objectproperty(id, N'IsMSShipped') = 0
+                    AND (objectproperty(id, N'IsTableFunction') = 1
+                     OR objectproperty(id, N'IsScalarFunction') = 1)";
+        /*
+        SELECT ROUTINE_NAME
+          FROM INFORMATION_SCHEMA.ROUTINES
+         WHERE ROUTINE_TYPE = 'FUNCTION'
+        */
+        $result = $db->queryCol($query);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ listTableTriggers()
+
+    /**
+     * list all triggers in the database that reference a given table
+     *
+     * @param string table for which all referenced triggers should be found
+     *
+     * @return mixed array of trigger names on success,  otherwise, false which
+     *               could be a db error if the db is not instantiated or could
+     *               be the results of the error that occured during the
+     *               querying of the sysobject module.
+     * @access public
+     */
+    function listTableTriggers($table = null)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $table = $db->quote($table, 'text');
+        $query = "SELECT o.name
+                    FROM sysobjects o
+                   WHERE xtype = 'TR'
+                     AND OBJECTPROPERTY(o.id, 'IsMSShipped') = 0";
+        if (null !== $table) {
+            $query .= " AND object_name(parent_obj) = $table";
+        }
+
+        $result = $db->queryCol($query);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE &&
+            $db->options['field_case'] == CASE_LOWER)
+        {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ?
+                'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ listViews()
+
+    /**
+     * list all views in the current database
+     *
+     * @param string database, the current is default
+     *
+     * @return mixed array of view names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listViews()
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = "SELECT name
+                    FROM sysobjects
+                   WHERE xtype = 'V'";
+        /*
+        SELECT *
+          FROM sysobjects
+         WHERE objectproperty(id, N'IsMSShipped') = 0
+           AND objectproperty(id, N'IsView') = 1
+        */
+
+        $result = $db->queryCol($query);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE &&
+            $db->options['field_case'] == CASE_LOWER)
+        {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ?
+                          'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ dropIndex()
+
+    /**
+     * drop existing index
+     *
+     * @param string $table name of table that should be used in method
+     * @param string $name  name of the index to be dropped
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function dropIndex($table, $name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $table = $db->quoteIdentifier($table, true);
+        $name = $db->quoteIdentifier($db->getIndexName($name), true);
+        return $db->exec("DROP INDEX $table.$name");
+    }
+
+    // }}}
+    // {{{ listTableConstraints()
+
+    /**
+     * list all constraints in a table
+     *
+     * @param string $table name of table that should be used in method
+     *
+     * @return mixed array of constraint names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTableConstraints($table)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+        $table = $db->quote($table, 'text');
+
+        $query = "SELECT c.constraint_name
+                    FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS c
+                   WHERE c.constraint_catalog = DB_NAME()
+                     AND c.table_name = $table";
+        $constraints = $db->queryCol($query);
+        if (PEAR::isError($constraints)) {
+            return $constraints;
+        }
+
+        $result = array();
+        foreach ($constraints as $constraint) {
+            $constraint = $this->_fixIndexName($constraint);
+            if (!empty($constraint)) {
+                $result[$constraint] = true;
+            }
+        }
+
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_change_key_case($result, $db->options['field_case']);
+        }
+        return array_keys($result);
+    }
+
+    // }}}
+    // {{{ createSequence()
+
+    /**
+     * create sequence
+     *
+     * @param string $seq_name name of the sequence to be created
+     * @param string $start    start value of the sequence; default is 1
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function createSequence($seq_name, $start = 1)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $sequence_name = $db->quoteIdentifier($db->getSequenceName($seq_name), true);
+        $seqcol_name = $db->quoteIdentifier($db->options['seqcol_name'], true);
+        $query = "CREATE TABLE $sequence_name ($seqcol_name " .
+                 "INT PRIMARY KEY CLUSTERED IDENTITY($start,1) NOT NULL)";
+
+        $res = $db->exec($query);
+        if (PEAR::isError($res)) {
+            return $res;
+        }
+
+        $query = "SET IDENTITY_INSERT $sequence_name ON ".
+                 "INSERT INTO $sequence_name ($seqcol_name) VALUES ($start)";
+        $res = $db->exec($query);
+
+        if (!PEAR::isError($res)) {
+            return MDB2_OK;
+        }
+
+        $result = $db->exec("DROP TABLE $sequence_name");
+        if (PEAR::isError($result)) {
+            return $db->raiseError($result, null, null,
+                'could not drop inconsistent sequence table', __FUNCTION__);
+        }
+
+        return $db->raiseError($res, null, null,
+            'could not create sequence table', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ dropSequence()
+
+    /**
+     * This function drops an existing sequence
+     *
+     * @param string $seq_name name of the sequence to be dropped
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function dropSequence($seq_name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $sequence_name = $db->quoteIdentifier($db->getSequenceName($seq_name), true);
+        return $db->exec("DROP TABLE $sequence_name");
+    }
+
+    // }}}
+    // {{{ listSequences()
+
+    /**
+     * list all sequences in the current database
+     *
+     * @return mixed array of sequence names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listSequences()
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = "SELECT name FROM sysobjects WHERE xtype = 'U'";
+        $table_names = $db->queryCol($query);
+        if (PEAR::isError($table_names)) {
+            return $table_names;
+        }
+        $result = array();
+        foreach ($table_names as $table_name) {
+            if ($sqn = $this->_fixSequenceName($table_name, true)) {
+                $result[] = $sqn;
+            }
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ?
+                          'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+}
+
+// }}}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Manager/mysql.php b/program/lib/MDB2/Driver/Manager/mysql.php
new file mode 100644 (file)
index 0000000..a7afa76
--- /dev/null
@@ -0,0 +1,1438 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2008 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Lukas Smith <smith@pooteeweet.org>                           |
+// +----------------------------------------------------------------------+
+//
+// $Id: mysql.php 295587 2010-02-28 17:16:38Z quipo $
+//
+
+require_once 'MDB2/Driver/Manager/Common.php';
+
+/**
+ * MDB2 MySQL driver for the management modules
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Driver_Manager_mysql extends MDB2_Driver_Manager_Common
+{
+
+    // }}}
+    // {{{ createDatabase()
+
+    /**
+     * create a new database
+     *
+     * @param string $name    name of the database that should be created
+     * @param array  $options array with charset, collation info
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function createDatabase($name, $options = array())
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $name  = $db->quoteIdentifier($name, true);
+        $query = 'CREATE DATABASE ' . $name;
+        if (!empty($options['charset'])) {
+            $query .= ' DEFAULT CHARACTER SET ' . $db->quote($options['charset'], 'text');
+        }
+        if (!empty($options['collation'])) {
+            $query .= ' COLLATE ' . $db->quote($options['collation'], 'text');
+        }
+        return $db->standaloneQuery($query, null, true);
+    }
+
+    // }}}
+    // {{{ alterDatabase()
+
+    /**
+     * alter an existing database
+     *
+     * @param string $name    name of the database that is intended to be changed
+     * @param array  $options array with charset, collation info
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function alterDatabase($name, $options = array())
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = 'ALTER DATABASE '. $db->quoteIdentifier($name, true);
+        if (!empty($options['charset'])) {
+            $query .= ' DEFAULT CHARACTER SET ' . $db->quote($options['charset'], 'text');
+        }
+        if (!empty($options['collation'])) {
+            $query .= ' COLLATE ' . $db->quote($options['collation'], 'text');
+        }
+        return $db->standaloneQuery($query, null, true);
+    }
+
+    // }}}
+    // {{{ dropDatabase()
+
+    /**
+     * drop an existing database
+     *
+     * @param string $name name of the database that should be dropped
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function dropDatabase($name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $name = $db->quoteIdentifier($name, true);
+        $query = "DROP DATABASE $name";
+        return $db->standaloneQuery($query, null, true);
+    }
+
+    // }}}
+    // {{{ _getAdvancedFKOptions()
+
+    /**
+     * Return the FOREIGN KEY query section dealing with non-standard options
+     * as MATCH, INITIALLY DEFERRED, ON UPDATE, ...
+     *
+     * @param array $definition
+     * @return string
+     * @access protected
+     */
+    function _getAdvancedFKOptions($definition)
+    {
+        $query = '';
+        if (!empty($definition['match'])) {
+            $query .= ' MATCH '.$definition['match'];
+        }
+        if (!empty($definition['onupdate'])) {
+            $query .= ' ON UPDATE '.$definition['onupdate'];
+        }
+        if (!empty($definition['ondelete'])) {
+            $query .= ' ON DELETE '.$definition['ondelete'];
+        }
+        return $query;
+    }
+
+    // }}}
+    // {{{ createTable()
+
+    /**
+     * create a new table
+     *
+     * @param string $name   Name of the database that should be created
+     * @param array $fields  Associative array that contains the definition of each field of the new table
+     *                       The indexes of the array entries are the names of the fields of the table an
+     *                       the array entry values are associative arrays like those that are meant to be
+     *                       passed with the field definitions to get[Type]Declaration() functions.
+     *                          array(
+     *                              'id' => array(
+     *                                  'type' => 'integer',
+     *                                  'unsigned' => 1
+     *                                  'notnull' => 1
+     *                                  'default' => 0
+     *                              ),
+     *                              'name' => array(
+     *                                  'type' => 'text',
+     *                                  'length' => 12
+     *                              ),
+     *                              'password' => array(
+     *                                  'type' => 'text',
+     *                                  'length' => 12
+     *                              )
+     *                          );
+     * @param array $options  An associative array of table options:
+     *                          array(
+     *                              'comment' => 'Foo',
+     *                              'charset' => 'utf8',
+     *                              'collate' => 'utf8_unicode_ci',
+     *                              'type'    => 'innodb',
+     *                          );
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function createTable($name, $fields, $options = array())
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        // if we have an AUTO_INCREMENT column and a PK on more than one field,
+        // we have to handle it differently...
+        $autoincrement = null;
+        if (empty($options['primary'])) {
+            $pk_fields = array();
+            foreach ($fields as $fieldname => $def) {
+                if (!empty($def['primary'])) {
+                    $pk_fields[$fieldname] = true;
+                }
+                if (!empty($def['autoincrement'])) {
+                    $autoincrement = $fieldname;
+                }
+            }
+            if ((null !== $autoincrement) && count($pk_fields) > 1) {
+                $options['primary'] = $pk_fields;
+            } else {
+                // the PK constraint is on max one field => OK
+                $autoincrement = null;
+            }
+        }
+
+        $query = $this->_getCreateTableQuery($name, $fields, $options);
+        if (PEAR::isError($query)) {
+            return $query;
+        }
+
+        if (null !== $autoincrement) {
+            // we have to remove the PK clause added by _getIntegerDeclaration()
+            $query = str_replace('AUTO_INCREMENT PRIMARY KEY', 'AUTO_INCREMENT', $query);
+        }
+
+        $options_strings = array();
+
+        if (!empty($options['comment'])) {
+            $options_strings['comment'] = 'COMMENT = '.$db->quote($options['comment'], 'text');
+        }
+
+        if (!empty($options['charset'])) {
+            $options_strings['charset'] = 'DEFAULT CHARACTER SET '.$options['charset'];
+            if (!empty($options['collate'])) {
+                $options_strings['charset'].= ' COLLATE '.$options['collate'];
+            }
+        }
+
+        $type = false;
+        if (!empty($options['type'])) {
+            $type = $options['type'];
+        } elseif ($db->options['default_table_type']) {
+            $type = $db->options['default_table_type'];
+        }
+        if ($type) {
+            $options_strings[] = "ENGINE = $type";
+        }
+
+        if (!empty($options_strings)) {
+            $query .= ' '.implode(' ', $options_strings);
+        }
+        $result = $db->exec($query);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ dropTable()
+
+    /**
+     * drop an existing table
+     *
+     * @param string $name name of the table that should be dropped
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function dropTable($name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        //delete the triggers associated to existing FK constraints
+        $constraints = $this->listTableConstraints($name);
+        if (!PEAR::isError($constraints) && !empty($constraints)) {
+            $db->loadModule('Reverse', null, true);
+            foreach ($constraints as $constraint) {
+                $definition = $db->reverse->getTableConstraintDefinition($name, $constraint);
+                if (!PEAR::isError($definition) && !empty($definition['foreign'])) {
+                    $result = $this->_dropFKTriggers($name, $constraint, $definition['references']['table']);
+                    if (PEAR::isError($result)) {
+                        return $result;
+                    }
+                }
+            }
+        }
+
+        return parent::dropTable($name);
+    }
+
+    // }}}
+    // {{{ truncateTable()
+
+    /**
+     * Truncate an existing table (if the TRUNCATE TABLE syntax is not supported,
+     * it falls back to a DELETE FROM TABLE query)
+     *
+     * @param string $name name of the table that should be truncated
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function truncateTable($name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $name = $db->quoteIdentifier($name, true);
+        return $db->exec("TRUNCATE TABLE $name");
+    }
+
+    // }}}
+    // {{{ vacuum()
+
+    /**
+     * Optimize (vacuum) all the tables in the db (or only the specified table)
+     * and optionally run ANALYZE.
+     *
+     * @param string $table table name (all the tables if empty)
+     * @param array  $options an array with driver-specific options:
+     *               - timeout [int] (in seconds) [mssql-only]
+     *               - analyze [boolean] [pgsql and mysql]
+     *               - full [boolean] [pgsql-only]
+     *               - freeze [boolean] [pgsql-only]
+     *
+     * @return mixed MDB2_OK success, a MDB2 error on failure
+     * @access public
+     */
+    function vacuum($table = null, $options = array())
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        if (empty($table)) {
+            $table = $this->listTables();
+            if (PEAR::isError($table)) {
+                return $table;
+            }
+        }
+        if (is_array($table)) {
+            foreach (array_keys($table) as $k) {
+               $table[$k] = $db->quoteIdentifier($table[$k], true);
+            }
+            $table = implode(', ', $table);
+        } else {
+            $table = $db->quoteIdentifier($table, true);
+        }
+        
+        $result = $db->exec('OPTIMIZE TABLE '.$table);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        if (!empty($options['analyze'])) {
+            return $db->exec('ANALYZE TABLE '.$table);
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ alterTable()
+
+    /**
+     * alter an existing table
+     *
+     * @param string $name         name of the table that is intended to be changed.
+     * @param array $changes     associative array that contains the details of each type
+     *                             of change that is intended to be performed. The types of
+     *                             changes that are currently supported are defined as follows:
+     *
+     *                             name
+     *
+     *                                New name for the table.
+     *
+     *                            add
+     *
+     *                                Associative array with the names of fields to be added as
+     *                                 indexes of the array. The value of each entry of the array
+     *                                 should be set to another associative array with the properties
+     *                                 of the fields to be added. The properties of the fields should
+     *                                 be the same as defined by the MDB2 parser.
+     *
+     *
+     *                            remove
+     *
+     *                                Associative array with the names of fields to be removed as indexes
+     *                                 of the array. Currently the values assigned to each entry are ignored.
+     *                                 An empty array should be used for future compatibility.
+     *
+     *                            rename
+     *
+     *                                Associative array with the names of fields to be renamed as indexes
+     *                                 of the array. The value of each entry of the array should be set to
+     *                                 another associative array with the entry named name with the new
+     *                                 field name and the entry named Declaration that is expected to contain
+     *                                 the portion of the field declaration already in DBMS specific SQL code
+     *                                 as it is used in the CREATE TABLE statement.
+     *
+     *                            change
+     *
+     *                                Associative array with the names of the fields to be changed as indexes
+     *                                 of the array. Keep in mind that if it is intended to change either the
+     *                                 name of a field and any other properties, the change array entries
+     *                                 should have the new names of the fields as array indexes.
+     *
+     *                                The value of each entry of the array should be set to another associative
+     *                                 array with the properties of the fields to that are meant to be changed as
+     *                                 array entries. These entries should be assigned to the new values of the
+     *                                 respective properties. The properties of the fields should be the same
+     *                                 as defined by the MDB2 parser.
+     *
+     *                            Example
+     *                                array(
+     *                                    'name' => 'userlist',
+     *                                    'add' => array(
+     *                                        'quota' => array(
+     *                                            'type' => 'integer',
+     *                                            'unsigned' => 1
+     *                                        )
+     *                                    ),
+     *                                    'remove' => array(
+     *                                        'file_limit' => array(),
+     *                                        'time_limit' => array()
+     *                                    ),
+     *                                    'change' => array(
+     *                                        'name' => array(
+     *                                            'length' => '20',
+     *                                            'definition' => array(
+     *                                                'type' => 'text',
+     *                                                'length' => 20,
+     *                                            ),
+     *                                        )
+     *                                    ),
+     *                                    'rename' => array(
+     *                                        'sex' => array(
+     *                                            'name' => 'gender',
+     *                                            'definition' => array(
+     *                                                'type' => 'text',
+     *                                                'length' => 1,
+     *                                                'default' => 'M',
+     *                                            ),
+     *                                        )
+     *                                    )
+     *                                )
+     *
+     * @param boolean $check     indicates whether the function should just check if the DBMS driver
+     *                             can perform the requested table alterations if the value is true or
+     *                             actually perform them otherwise.
+     * @access public
+     *
+      * @return mixed MDB2_OK on success, a MDB2 error on failure
+     */
+    function alterTable($name, $changes, $check)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        foreach ($changes as $change_name => $change) {
+            switch ($change_name) {
+            case 'add':
+            case 'remove':
+            case 'change':
+            case 'rename':
+            case 'name':
+                break;
+            default:
+                return $db->raiseError(MDB2_ERROR_CANNOT_ALTER, null, null,
+                    'change type "'.$change_name.'" not yet supported', __FUNCTION__);
+            }
+        }
+
+        if ($check) {
+            return MDB2_OK;
+        }
+
+        $query = '';
+        if (!empty($changes['name'])) {
+            $change_name = $db->quoteIdentifier($changes['name'], true);
+            $query .= 'RENAME TO ' . $change_name;
+        }
+
+        if (!empty($changes['add']) && is_array($changes['add'])) {
+            foreach ($changes['add'] as $field_name => $field) {
+                if ($query) {
+                    $query.= ', ';
+                }
+                $query.= 'ADD ' . $db->getDeclaration($field['type'], $field_name, $field);
+            }
+        }
+
+        if (!empty($changes['remove']) && is_array($changes['remove'])) {
+            foreach ($changes['remove'] as $field_name => $field) {
+                if ($query) {
+                    $query.= ', ';
+                }
+                $field_name = $db->quoteIdentifier($field_name, true);
+                $query.= 'DROP ' . $field_name;
+            }
+        }
+
+        $rename = array();
+        if (!empty($changes['rename']) && is_array($changes['rename'])) {
+            foreach ($changes['rename'] as $field_name => $field) {
+                $rename[$field['name']] = $field_name;
+            }
+        }
+
+        if (!empty($changes['change']) && is_array($changes['change'])) {
+            foreach ($changes['change'] as $field_name => $field) {
+                if ($query) {
+                    $query.= ', ';
+                }
+                if (isset($rename[$field_name])) {
+                    $old_field_name = $rename[$field_name];
+                    unset($rename[$field_name]);
+                } else {
+                    $old_field_name = $field_name;
+                }
+                $old_field_name = $db->quoteIdentifier($old_field_name, true);
+                $query.= "CHANGE $old_field_name " . $db->getDeclaration($field['definition']['type'], $field_name, $field['definition']);
+            }
+        }
+
+        if (!empty($rename) && is_array($rename)) {
+            foreach ($rename as $rename_name => $renamed_field) {
+                if ($query) {
+                    $query.= ', ';
+                }
+                $field = $changes['rename'][$renamed_field];
+                $renamed_field = $db->quoteIdentifier($renamed_field, true);
+                $query.= 'CHANGE ' . $renamed_field . ' ' . $db->getDeclaration($field['definition']['type'], $field['name'], $field['definition']);
+            }
+        }
+
+        if (!$query) {
+            return MDB2_OK;
+        }
+
+        $name = $db->quoteIdentifier($name, true);
+        return $db->exec("ALTER TABLE $name $query");
+    }
+
+    // }}}
+    // {{{ listDatabases()
+
+    /**
+     * list all databases
+     *
+     * @return mixed array of database names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listDatabases()
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $result = $db->queryCol('SHOW DATABASES');
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ listUsers()
+
+    /**
+     * list all users
+     *
+     * @return mixed array of user names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listUsers()
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        return $db->queryCol('SELECT DISTINCT USER FROM mysql.USER');
+    }
+
+    // }}}
+    // {{{ listFunctions()
+
+    /**
+     * list all functions in the current database
+     *
+     * @return mixed array of function names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listFunctions()
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = "SELECT name FROM mysql.proc";
+        /*
+        SELECT ROUTINE_NAME
+          FROM INFORMATION_SCHEMA.ROUTINES
+         WHERE ROUTINE_TYPE = 'FUNCTION'
+        */
+        $result = $db->queryCol($query);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ listTableTriggers()
+
+    /**
+     * list all triggers in the database that reference a given table
+     *
+     * @param string table for which all referenced triggers should be found
+     * @return mixed array of trigger names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTableTriggers($table = null)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = 'SHOW TRIGGERS';
+        if (null !== $table) {
+            $table = $db->quote($table, 'text');
+            $query .= " LIKE $table";
+        }
+        $result = $db->queryCol($query);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ listTables()
+
+    /**
+     * list all tables in the current database
+     *
+     * @param string database, the current is default
+     * @return mixed array of table names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTables($database = null)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = "SHOW /*!50002 FULL*/ TABLES";
+        if (null !== $database) {
+            $query .= " FROM $database";
+        }
+        $query.= "/*!50002  WHERE Table_type = 'BASE TABLE'*/";
+
+        $table_names = $db->queryAll($query, null, MDB2_FETCHMODE_ORDERED);
+        if (PEAR::isError($table_names)) {
+            return $table_names;
+        }
+
+        $result = array();
+        foreach ($table_names as $table) {
+            if (!$this->_fixSequenceName($table[0], true)) {
+                $result[] = $table[0];
+            }
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ listViews()
+
+    /**
+     * list all views in the current database
+     *
+     * @param string database, the current is default
+     * @return mixed array of view names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listViews($database = null)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = 'SHOW FULL TABLES';
+        if (null !== $database) {
+            $query.= " FROM $database";
+        }
+        $query.= " WHERE Table_type = 'VIEW'";
+
+        $result = $db->queryCol($query);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ listTableFields()
+
+    /**
+     * list all fields in a table in the current database
+     *
+     * @param string $table name of table that should be used in method
+     * @return mixed array of field names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTableFields($table)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $table = $db->quoteIdentifier($table, true);
+        $result = $db->queryCol("SHOW COLUMNS FROM $table");
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ createIndex()
+
+    /**
+     * Get the stucture of a field into an array
+     *
+     * @author Leoncx
+     * @param string $table      name of the table on which the index is to be created
+     * @param string $name       name of the index to be created
+     * @param array  $definition associative array that defines properties of the index to be created.
+     *                           Currently, only one property named FIELDS is supported. This property
+     *                           is also an associative with the names of the index fields as array
+     *                           indexes. Each entry of this array is set to another type of associative
+     *                           array that specifies properties of the index that are specific to
+     *                           each field.
+     *
+     *                           Currently, only the sorting property is supported. It should be used
+     *                           to define the sorting direction of the index. It may be set to either
+     *                           ascending or descending.
+     *
+     *                           Not all DBMS support index sorting direction configuration. The DBMS
+     *                           drivers of those that do not support it ignore this property. Use the
+     *                           function supports() to determine whether the DBMS driver can manage indexes.
+     *
+     *                           Example
+     *                               array(
+     *                                   'fields' => array(
+     *                                       'user_name' => array(
+     *                                           'sorting' => 'ascending'
+     *                                           'length' => 10
+     *                                       ),
+     *                                       'last_login' => array()
+     *                                    )
+     *                                )
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function createIndex($table, $name, $definition)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $table = $db->quoteIdentifier($table, true);
+        $name = $db->quoteIdentifier($db->getIndexName($name), true);
+        $query = "CREATE INDEX $name ON $table";
+        $fields = array();
+        foreach ($definition['fields'] as $field => $fieldinfo) {
+            if (!empty($fieldinfo['length'])) {
+                $fields[] = $db->quoteIdentifier($field, true) . '(' . $fieldinfo['length'] . ')';
+            } else {
+                $fields[] = $db->quoteIdentifier($field, true);
+            }
+        }
+        $query .= ' ('. implode(', ', $fields) . ')';
+        return $db->exec($query);
+    }
+
+    // }}}
+    // {{{ dropIndex()
+
+    /**
+     * drop existing index
+     *
+     * @param string    $table         name of table that should be used in method
+     * @param string    $name         name of the index to be dropped
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function dropIndex($table, $name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $table = $db->quoteIdentifier($table, true);
+        $name = $db->quoteIdentifier($db->getIndexName($name), true);
+        return $db->exec("DROP INDEX $name ON $table");
+    }
+
+    // }}}
+    // {{{ listTableIndexes()
+
+    /**
+     * list all indexes in a table
+     *
+     * @param string $table name of table that should be used in method
+     * @return mixed array of index names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTableIndexes($table)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $key_name = 'Key_name';
+        $non_unique = 'Non_unique';
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            if ($db->options['field_case'] == CASE_LOWER) {
+                $key_name = strtolower($key_name);
+                $non_unique = strtolower($non_unique);
+            } else {
+                $key_name = strtoupper($key_name);
+                $non_unique = strtoupper($non_unique);
+            }
+        }
+
+        $table = $db->quoteIdentifier($table, true);
+        $query = "SHOW INDEX FROM $table";
+        $indexes = $db->queryAll($query, null, MDB2_FETCHMODE_ASSOC);
+        if (PEAR::isError($indexes)) {
+            return $indexes;
+        }
+
+        $result = array();
+        foreach ($indexes as $index_data) {
+            if ($index_data[$non_unique] && ($index = $this->_fixIndexName($index_data[$key_name]))) {
+                $result[$index] = true;
+            }
+        }
+
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_change_key_case($result, $db->options['field_case']);
+        }
+        return array_keys($result);
+    }
+
+    // }}}
+    // {{{ createConstraint()
+
+    /**
+     * create a constraint on a table
+     *
+     * @param string    $table        name of the table on which the constraint is to be created
+     * @param string    $name         name of the constraint to be created
+     * @param array     $definition   associative array that defines properties of the constraint to be created.
+     *                                Currently, only one property named FIELDS is supported. This property
+     *                                is also an associative with the names of the constraint fields as array
+     *                                constraints. Each entry of this array is set to another type of associative
+     *                                array that specifies properties of the constraint that are specific to
+     *                                each field.
+     *
+     *                                Example
+     *                                   array(
+     *                                       'fields' => array(
+     *                                           'user_name' => array(),
+     *                                           'last_login' => array()
+     *                                       )
+     *                                   )
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function createConstraint($table, $name, $definition)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $type = '';
+        $idx_name = $db->quoteIdentifier($db->getIndexName($name), true);
+        if (!empty($definition['primary'])) {
+            $type = 'PRIMARY';
+            $idx_name = 'KEY';
+        } elseif (!empty($definition['unique'])) {
+            $type = 'UNIQUE';
+        } elseif (!empty($definition['foreign'])) {
+            $type = 'CONSTRAINT';
+        }
+        if (empty($type)) {
+            return $db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
+                'invalid definition, could not create constraint', __FUNCTION__);
+        }
+
+        $table_quoted = $db->quoteIdentifier($table, true);
+        $query = "ALTER TABLE $table_quoted ADD $type $idx_name";
+        if (!empty($definition['foreign'])) {
+            $query .= ' FOREIGN KEY';
+        }
+        $fields = array();
+        foreach ($definition['fields'] as $field => $fieldinfo) {
+            $quoted = $db->quoteIdentifier($field, true);
+            if (!empty($fieldinfo['length'])) {
+                $quoted .= '(' . $fieldinfo['length'] . ')';
+            }
+            $fields[] = $quoted;
+        }
+        $query .= ' ('. implode(', ', $fields) . ')';
+        if (!empty($definition['foreign'])) {
+            $query.= ' REFERENCES ' . $db->quoteIdentifier($definition['references']['table'], true);
+            $referenced_fields = array();
+            foreach (array_keys($definition['references']['fields']) as $field) {
+                $referenced_fields[] = $db->quoteIdentifier($field, true);
+            }
+            $query .= ' ('. implode(', ', $referenced_fields) . ')';
+            $query .= $this->_getAdvancedFKOptions($definition);
+
+            // add index on FK column(s) or we can't add a FK constraint
+            // @see http://forums.mysql.com/read.php?22,19755,226009
+            $result = $this->createIndex($table, $name.'_fkidx', $definition);
+            if (PEAR::isError($result)) {
+                return $result;
+            }
+        }
+        $res = $db->exec($query);
+        if (PEAR::isError($res)) {
+            return $res;
+        }
+        if (!empty($definition['foreign'])) {
+            return $this->_createFKTriggers($table, array($name => $definition));
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ dropConstraint()
+
+    /**
+     * drop existing constraint
+     *
+     * @param string    $table        name of table that should be used in method
+     * @param string    $name         name of the constraint to be dropped
+     * @param string    $primary      hint if the constraint is primary
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function dropConstraint($table, $name, $primary = false)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        if ($primary || strtolower($name) == 'primary') {
+            $query = 'ALTER TABLE '. $db->quoteIdentifier($table, true) .' DROP PRIMARY KEY';
+            return $db->exec($query);
+        }
+
+        //is it a FK constraint? If so, also delete the associated triggers
+        $db->loadModule('Reverse', null, true);
+        $definition = $db->reverse->getTableConstraintDefinition($table, $name);
+        if (!PEAR::isError($definition) && !empty($definition['foreign'])) {
+            //first drop the FK enforcing triggers
+            $result = $this->_dropFKTriggers($table, $name, $definition['references']['table']);
+            if (PEAR::isError($result)) {
+                return $result;
+            }
+            //then drop the constraint itself
+            $table = $db->quoteIdentifier($table, true);
+            $name = $db->quoteIdentifier($db->getIndexName($name), true);
+            $query = "ALTER TABLE $table DROP FOREIGN KEY $name";
+            return $db->exec($query);
+        }
+
+        $table = $db->quoteIdentifier($table, true);
+        $name = $db->quoteIdentifier($db->getIndexName($name), true);
+        $query = "ALTER TABLE $table DROP INDEX $name";
+        return $db->exec($query);
+    }
+
+    // }}}
+    // {{{ _createFKTriggers()
+
+    /**
+     * Create triggers to enforce the FOREIGN KEY constraint on the table
+     *
+     * NB: since there's no RAISE_APPLICATION_ERROR facility in mysql,
+     * we call a non-existent procedure to raise the FK violation message.
+     * @see http://forums.mysql.com/read.php?99,55108,71877#msg-71877
+     *
+     * @param string $table        table name
+     * @param array  $foreign_keys FOREIGN KEY definitions
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access private
+     */
+    function _createFKTriggers($table, $foreign_keys)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+        // create triggers to enforce FOREIGN KEY constraints
+        if ($db->supports('triggers') && !empty($foreign_keys)) {
+            $table_quoted = $db->quoteIdentifier($table, true);
+            foreach ($foreign_keys as $fkname => $fkdef) {
+                if (empty($fkdef)) {
+                    continue;
+                }
+                //set actions to default if not set
+                $fkdef['onupdate'] = empty($fkdef['onupdate']) ? $db->options['default_fk_action_onupdate'] : strtoupper($fkdef['onupdate']);
+                $fkdef['ondelete'] = empty($fkdef['ondelete']) ? $db->options['default_fk_action_ondelete'] : strtoupper($fkdef['ondelete']);
+
+                $trigger_names = array(
+                    'insert'    => $fkname.'_insert_trg',
+                    'update'    => $fkname.'_update_trg',
+                    'pk_update' => $fkname.'_pk_update_trg',
+                    'pk_delete' => $fkname.'_pk_delete_trg',
+                );
+                $table_fields = array_keys($fkdef['fields']);
+                $referenced_fields = array_keys($fkdef['references']['fields']);
+
+                //create the ON [UPDATE|DELETE] triggers on the primary table
+                $restrict_action = ' IF (SELECT ';
+                $aliased_fields = array();
+                foreach ($table_fields as $field) {
+                    $aliased_fields[] = $table_quoted .'.'.$field .' AS '.$field;
+                }
+                $restrict_action .= implode(',', $aliased_fields)
+                       .' FROM '.$table_quoted
+                       .' WHERE ';
+                $conditions  = array();
+                $new_values  = array();
+                $null_values = array();
+                for ($i=0; $i<count($table_fields); $i++) {
+                    $conditions[]  = $table_fields[$i] .' = OLD.'.$referenced_fields[$i];
+                    $new_values[]  = $table_fields[$i] .' = NEW.'.$referenced_fields[$i];
+                    $null_values[] = $table_fields[$i] .' = NULL';
+                }
+                $conditions2 = array();
+                if ('NO ACTION' != $fkdef['ondelete']) {
+                    // There is no NEW row in on DELETE trigger
+                    for ($i=0; $i<count($referenced_fields); $i++) {
+                        $conditions2[]  = 'NEW.'.$referenced_fields[$i] .' <> OLD.'.$referenced_fields[$i];
+                    }
+                }
+
+                $restrict_action .= implode(' AND ', $conditions).') IS NOT NULL';
+                if (!empty($conditions2)) {
+                    $restrict_action .= ' AND (' .implode(' OR ', $conditions2) .')';
+                }
+                $restrict_action .= ' THEN CALL %s_ON_TABLE_'.$table.'_VIOLATES_FOREIGN_KEY_CONSTRAINT();'
+                                   .' END IF;';
+
+                $cascade_action_update = 'UPDATE '.$table_quoted.' SET '.implode(', ', $new_values) .' WHERE '.implode(' AND ', $conditions). ';';
+                $cascade_action_delete = 'DELETE FROM '.$table_quoted.' WHERE '.implode(' AND ', $conditions). ';';
+                $setnull_action        = 'UPDATE '.$table_quoted.' SET '.implode(', ', $null_values).' WHERE '.implode(' AND ', $conditions). ';';
+
+                if ('SET DEFAULT' == $fkdef['onupdate'] || 'SET DEFAULT' == $fkdef['ondelete']) {
+                    $db->loadModule('Reverse', null, true);
+                    $default_values = array();
+                    foreach ($table_fields as $table_field) {
+                        $field_definition = $db->reverse->getTableFieldDefinition($table, $field);
+                        if (PEAR::isError($field_definition)) {
+                            return $field_definition;
+                        }
+                        $default_values[] = $table_field .' = '. $field_definition[0]['default'];
+                    }
+                    $setdefault_action = 'UPDATE '.$table_quoted.' SET '.implode(', ', $default_values).' WHERE '.implode(' AND ', $conditions). ';';
+                }
+
+                $query = 'CREATE TRIGGER %s'
+                        .' %s ON '.$fkdef['references']['table']
+                        .' FOR EACH ROW BEGIN '
+                        .' SET FOREIGN_KEY_CHECKS = 0; ';  //only really needed for ON UPDATE CASCADE
+
+                if ('CASCADE' == $fkdef['onupdate']) {
+                    $sql_update = sprintf($query, $trigger_names['pk_update'], 'BEFORE UPDATE',  'update') . $cascade_action_update;
+                } elseif ('SET NULL' == $fkdef['onupdate']) {
+                    $sql_update = sprintf($query, $trigger_names['pk_update'], 'BEFORE UPDATE', 'update') . $setnull_action;
+                } elseif ('SET DEFAULT' == $fkdef['onupdate']) {
+                    $sql_update = sprintf($query, $trigger_names['pk_update'], 'BEFORE UPDATE', 'update') . $setdefault_action;
+                } elseif ('NO ACTION' == $fkdef['onupdate']) {
+                    $sql_update = sprintf($query.$restrict_action, $trigger_names['pk_update'], 'AFTER UPDATE', 'update');
+                } elseif ('RESTRICT' == $fkdef['onupdate']) {
+                    $sql_update = sprintf($query.$restrict_action, $trigger_names['pk_update'], 'BEFORE UPDATE', 'update');
+                }
+                if ('CASCADE' == $fkdef['ondelete']) {
+                    $sql_delete = sprintf($query, $trigger_names['pk_delete'], 'BEFORE DELETE',  'delete') . $cascade_action_delete;
+                } elseif ('SET NULL' == $fkdef['ondelete']) {
+                    $sql_delete = sprintf($query, $trigger_names['pk_delete'], 'BEFORE DELETE', 'delete') . $setnull_action;
+                } elseif ('SET DEFAULT' == $fkdef['ondelete']) {
+                    $sql_delete = sprintf($query, $trigger_names['pk_delete'], 'BEFORE DELETE', 'delete') . $setdefault_action;
+                } elseif ('NO ACTION' == $fkdef['ondelete']) {
+                    $sql_delete = sprintf($query.$restrict_action, $trigger_names['pk_delete'], 'AFTER DELETE', 'delete');
+                } elseif ('RESTRICT' == $fkdef['ondelete']) {
+                    $sql_delete = sprintf($query.$restrict_action, $trigger_names['pk_delete'], 'BEFORE DELETE', 'delete');
+                }
+                $sql_update .= ' SET FOREIGN_KEY_CHECKS = 1; END;';
+                $sql_delete .= ' SET FOREIGN_KEY_CHECKS = 1; END;';
+
+                $db->pushErrorHandling(PEAR_ERROR_RETURN);
+                $db->expectError(MDB2_ERROR_CANNOT_CREATE);
+                $result = $db->exec($sql_delete);
+                $expected_errmsg = 'This MySQL version doesn\'t support multiple triggers with the same action time and event for one table';
+                $db->popExpect();
+                $db->popErrorHandling();
+                if (PEAR::isError($result)) {
+                    if ($result->getCode() != MDB2_ERROR_CANNOT_CREATE) {
+                        return $result;
+                    }
+                    $db->warnings[] = $expected_errmsg;
+                }
+                $db->pushErrorHandling(PEAR_ERROR_RETURN);
+                $db->expectError(MDB2_ERROR_CANNOT_CREATE);
+                $result = $db->exec($sql_update);
+                $db->popExpect();
+                $db->popErrorHandling();
+                if (PEAR::isError($result) && $result->getCode() != MDB2_ERROR_CANNOT_CREATE) {
+                    if ($result->getCode() != MDB2_ERROR_CANNOT_CREATE) {
+                        return $result;
+                    }
+                    $db->warnings[] = $expected_errmsg;
+                }
+            }
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ _dropFKTriggers()
+
+    /**
+     * Drop the triggers created to enforce the FOREIGN KEY constraint on the table
+     *
+     * @param string $table            table name
+     * @param string $fkname           FOREIGN KEY constraint name
+     * @param string $referenced_table referenced table name
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access private
+     */
+    function _dropFKTriggers($table, $fkname, $referenced_table)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $triggers  = $this->listTableTriggers($table);
+        $triggers2 = $this->listTableTriggers($referenced_table);
+        if (!PEAR::isError($triggers2) && !PEAR::isError($triggers)) {
+            $triggers = array_merge($triggers, $triggers2);
+            $pattern = '/^'.$fkname.'(_pk)?_(insert|update|delete)_trg$/i';
+            foreach ($triggers as $trigger) {
+                if (preg_match($pattern, $trigger)) {
+                    $result = $db->exec('DROP TRIGGER '.$trigger);
+                    if (PEAR::isError($result)) {
+                        return $result;
+                    }
+                }
+            }
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ listTableConstraints()
+
+    /**
+     * list all constraints in a table
+     *
+     * @param string $table name of table that should be used in method
+     * @return mixed array of constraint names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTableConstraints($table)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $key_name = 'Key_name';
+        $non_unique = 'Non_unique';
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            if ($db->options['field_case'] == CASE_LOWER) {
+                $key_name = strtolower($key_name);
+                $non_unique = strtolower($non_unique);
+            } else {
+                $key_name = strtoupper($key_name);
+                $non_unique = strtoupper($non_unique);
+            }
+        }
+
+        $query = 'SHOW INDEX FROM ' . $db->quoteIdentifier($table, true);
+        $indexes = $db->queryAll($query, null, MDB2_FETCHMODE_ASSOC);
+        if (PEAR::isError($indexes)) {
+            return $indexes;
+        }
+
+        $result = array();
+        foreach ($indexes as $index_data) {
+            if (!$index_data[$non_unique]) {
+                if ($index_data[$key_name] !== 'PRIMARY') {
+                    $index = $this->_fixIndexName($index_data[$key_name]);
+                } else {
+                    $index = 'PRIMARY';
+                }
+                if (!empty($index)) {
+                    $result[$index] = true;
+                }
+            }
+        }
+        
+        //list FOREIGN KEY constraints...
+        $query = 'SHOW CREATE TABLE '. $db->escape($table);
+        $definition = $db->queryOne($query, 'text', 1);
+        if (!PEAR::isError($definition) && !empty($definition)) {
+            $pattern = '/\bCONSTRAINT\b\s+([^\s]+)\s+\bFOREIGN KEY\b/Uims';
+            if (preg_match_all($pattern, str_replace('`', '', $definition), $matches) > 0) {
+                foreach ($matches[1] as $constraint) {
+                    $result[$constraint] = true;
+                }
+            }
+        }
+
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_change_key_case($result, $db->options['field_case']);
+        }
+        return array_keys($result);
+    }
+
+    // }}}
+    // {{{ createSequence()
+
+    /**
+     * create sequence
+     *
+     * @param string    $seq_name name of the sequence to be created
+     * @param string    $start    start value of the sequence; default is 1
+     * @param array     $options  An associative array of table options:
+     *                          array(
+     *                              'comment' => 'Foo',
+     *                              'charset' => 'utf8',
+     *                              'collate' => 'utf8_unicode_ci',
+     *                              'type'    => 'innodb',
+     *                          );
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function createSequence($seq_name, $start = 1, $options = array())
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $sequence_name = $db->quoteIdentifier($db->getSequenceName($seq_name), true);
+        $seqcol_name = $db->quoteIdentifier($db->options['seqcol_name'], true);
+        
+        $options_strings = array();
+
+        if (!empty($options['comment'])) {
+            $options_strings['comment'] = 'COMMENT = '.$db->quote($options['comment'], 'text');
+        }
+
+        if (!empty($options['charset'])) {
+            $options_strings['charset'] = 'DEFAULT CHARACTER SET '.$options['charset'];
+            if (!empty($options['collate'])) {
+                $options_strings['charset'].= ' COLLATE '.$options['collate'];
+            }
+        }
+
+        $type = false;
+        if (!empty($options['type'])) {
+            $type = $options['type'];
+        } elseif ($db->options['default_table_type']) {
+            $type = $db->options['default_table_type'];
+        }
+        if ($type) {
+            $options_strings[] = "ENGINE = $type";
+        }
+
+        $query = "CREATE TABLE $sequence_name ($seqcol_name INT NOT NULL AUTO_INCREMENT, PRIMARY KEY ($seqcol_name))";
+        if (!empty($options_strings)) {
+            $query .= ' '.implode(' ', $options_strings);
+        }
+        $res = $db->exec($query);
+        if (PEAR::isError($res)) {
+            return $res;
+        }
+
+        if ($start == 1) {
+            return MDB2_OK;
+        }
+
+        $query = "INSERT INTO $sequence_name ($seqcol_name) VALUES (".($start-1).')';
+        $res = $db->exec($query);
+        if (!PEAR::isError($res)) {
+            return MDB2_OK;
+        }
+
+        // Handle error
+        $result = $db->exec("DROP TABLE $sequence_name");
+        if (PEAR::isError($result)) {
+            return $db->raiseError($result, null, null,
+                'could not drop inconsistent sequence table', __FUNCTION__);
+        }
+
+        return $db->raiseError($res, null, null,
+            'could not create sequence table', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ dropSequence()
+
+    /**
+     * drop existing sequence
+     *
+     * @param string    $seq_name     name of the sequence to be dropped
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function dropSequence($seq_name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $sequence_name = $db->quoteIdentifier($db->getSequenceName($seq_name), true);
+        return $db->exec("DROP TABLE $sequence_name");
+    }
+
+    // }}}
+    // {{{ listSequences()
+
+    /**
+     * list all sequences in the current database
+     *
+     * @param string database, the current is default
+     * @return mixed array of sequence names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listSequences($database = null)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = "SHOW TABLES";
+        if (null !== $database) {
+            $query .= " FROM $database";
+        }
+        $table_names = $db->queryCol($query);
+        if (PEAR::isError($table_names)) {
+            return $table_names;
+        }
+
+        $result = array();
+        foreach ($table_names as $table_name) {
+            if ($sqn = $this->_fixSequenceName($table_name, true)) {
+                $result[] = $sqn;
+            }
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Manager/mysqli.php b/program/lib/MDB2/Driver/Manager/mysqli.php
new file mode 100644 (file)
index 0000000..f01747a
--- /dev/null
@@ -0,0 +1,1438 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2008 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Lukas Smith <smith@pooteeweet.org>                           |
+// +----------------------------------------------------------------------+
+//
+// $Id: mysqli.php 295587 2010-02-28 17:16:38Z quipo $
+//
+
+require_once 'MDB2/Driver/Manager/Common.php';
+
+/**
+ * MDB2 MySQLi driver for the management modules
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Driver_Manager_mysqli extends MDB2_Driver_Manager_Common
+{
+
+    // }}}
+    // {{{ createDatabase()
+
+    /**
+     * create a new database
+     *
+     * @param string $name    name of the database that should be created
+     * @param array  $options array with charset, collation info
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function createDatabase($name, $options = array())
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $name  = $db->quoteIdentifier($name, true);
+        $query = 'CREATE DATABASE ' . $name;
+        if (!empty($options['charset'])) {
+            $query .= ' DEFAULT CHARACTER SET ' . $db->quote($options['charset'], 'text');
+        }
+        if (!empty($options['collation'])) {
+            $query .= ' COLLATE ' . $db->quote($options['collation'], 'text');
+        }
+        return $db->standaloneQuery($query, null, true);
+    }
+
+    // }}}
+    // {{{ alterDatabase()
+
+    /**
+     * alter an existing database
+     *
+     * @param string $name    name of the database that is intended to be changed
+     * @param array  $options array with charset, collation info
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function alterDatabase($name, $options = array())
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = 'ALTER DATABASE '. $db->quoteIdentifier($name, true);
+        if (!empty($options['charset'])) {
+            $query .= ' DEFAULT CHARACTER SET ' . $db->quote($options['charset'], 'text');
+        }
+        if (!empty($options['collation'])) {
+            $query .= ' COLLATE ' . $db->quote($options['collation'], 'text');
+        }
+        return $db->standaloneQuery($query, null, true);
+    }
+
+    // }}}
+    // {{{ dropDatabase()
+
+    /**
+     * drop an existing database
+     *
+     * @param string $name name of the database that should be dropped
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function dropDatabase($name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $name = $db->quoteIdentifier($name, true);
+        $query = "DROP DATABASE $name";
+        return $db->standaloneQuery($query, null, true);
+    }
+
+    // }}}
+    // {{{ _getAdvancedFKOptions()
+
+    /**
+     * Return the FOREIGN KEY query section dealing with non-standard options
+     * as MATCH, INITIALLY DEFERRED, ON UPDATE, ...
+     *
+     * @param array $definition
+     * @return string
+     * @access protected
+     */
+    function _getAdvancedFKOptions($definition)
+    {
+        $query = '';
+        if (!empty($definition['match'])) {
+            $query .= ' MATCH '.$definition['match'];
+        }
+        if (!empty($definition['onupdate'])) {
+            $query .= ' ON UPDATE '.$definition['onupdate'];
+        }
+        if (!empty($definition['ondelete'])) {
+            $query .= ' ON DELETE '.$definition['ondelete'];
+        }
+        return $query;
+    }
+
+    // }}}
+    // {{{ createTable()
+
+    /**
+     * create a new table
+     *
+     * @param string $name   Name of the database that should be created
+     * @param array $fields  Associative array that contains the definition of each field of the new table
+     *                       The indexes of the array entries are the names of the fields of the table an
+     *                       the array entry values are associative arrays like those that are meant to be
+     *                       passed with the field definitions to get[Type]Declaration() functions.
+     *                          array(
+     *                              'id' => array(
+     *                                  'type' => 'integer',
+     *                                  'unsigned' => 1
+     *                                  'notnull' => 1
+     *                                  'default' => 0
+     *                              ),
+     *                              'name' => array(
+     *                                  'type' => 'text',
+     *                                  'length' => 12
+     *                              ),
+     *                              'password' => array(
+     *                                  'type' => 'text',
+     *                                  'length' => 12
+     *                              )
+     *                          );
+     * @param array $options  An associative array of table options:
+     *                          array(
+     *                              'comment' => 'Foo',
+     *                              'charset' => 'utf8',
+     *                              'collate' => 'utf8_unicode_ci',
+     *                              'type'    => 'innodb',
+     *                          );
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function createTable($name, $fields, $options = array())
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        // if we have an AUTO_INCREMENT column and a PK on more than one field,
+        // we have to handle it differently...
+        $autoincrement = null;
+        if (empty($options['primary'])) {
+            $pk_fields = array();
+            foreach ($fields as $fieldname => $def) {
+                if (!empty($def['primary'])) {
+                    $pk_fields[$fieldname] = true;
+                }
+                if (!empty($def['autoincrement'])) {
+                    $autoincrement = $fieldname;
+                }
+            }
+            if ((null !== $autoincrement) && count($pk_fields) > 1) {
+                $options['primary'] = $pk_fields;
+            } else {
+                // the PK constraint is on max one field => OK
+                $autoincrement = null;
+            }
+        }
+
+        $query = $this->_getCreateTableQuery($name, $fields, $options);
+        if (PEAR::isError($query)) {
+            return $query;
+        }
+
+        if (null !== $autoincrement) {
+            // we have to remove the PK clause added by _getIntegerDeclaration()
+            $query = str_replace('AUTO_INCREMENT PRIMARY KEY', 'AUTO_INCREMENT', $query);
+        }
+
+        $options_strings = array();
+
+        if (!empty($options['comment'])) {
+            $options_strings['comment'] = 'COMMENT = '.$db->quote($options['comment'], 'text');
+        }
+
+        if (!empty($options['charset'])) {
+            $options_strings['charset'] = 'DEFAULT CHARACTER SET '.$options['charset'];
+            if (!empty($options['collate'])) {
+                $options_strings['charset'].= ' COLLATE '.$options['collate'];
+            }
+        }
+
+        $type = false;
+        if (!empty($options['type'])) {
+            $type = $options['type'];
+        } elseif ($db->options['default_table_type']) {
+            $type = $db->options['default_table_type'];
+        }
+        if ($type) {
+            $options_strings[] = "ENGINE = $type";
+        }
+
+        if (!empty($options_strings)) {
+            $query .= ' '.implode(' ', $options_strings);
+        }
+        $result = $db->exec($query);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ dropTable()
+
+    /**
+     * drop an existing table
+     *
+     * @param string $name name of the table that should be dropped
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function dropTable($name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        //delete the triggers associated to existing FK constraints
+        $constraints = $this->listTableConstraints($name);
+        if (!PEAR::isError($constraints) && !empty($constraints)) {
+            $db->loadModule('Reverse', null, true);
+            foreach ($constraints as $constraint) {
+                $definition = $db->reverse->getTableConstraintDefinition($name, $constraint);
+                if (!PEAR::isError($definition) && !empty($definition['foreign'])) {
+                    $result = $this->_dropFKTriggers($name, $constraint, $definition['references']['table']);
+                    if (PEAR::isError($result)) {
+                        return $result;
+                    }
+                }
+            }
+        }
+
+        return parent::dropTable($name);
+    }
+
+    // }}}
+    // {{{ truncateTable()
+
+    /**
+     * Truncate an existing table (if the TRUNCATE TABLE syntax is not supported,
+     * it falls back to a DELETE FROM TABLE query)
+     *
+     * @param string $name name of the table that should be truncated
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function truncateTable($name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $name = $db->quoteIdentifier($name, true);
+        return $db->exec("TRUNCATE TABLE $name");
+    }
+
+    // }}}
+    // {{{ vacuum()
+
+    /**
+     * Optimize (vacuum) all the tables in the db (or only the specified table)
+     * and optionally run ANALYZE.
+     *
+     * @param string $table table name (all the tables if empty)
+     * @param array  $options an array with driver-specific options:
+     *               - timeout [int] (in seconds) [mssql-only]
+     *               - analyze [boolean] [pgsql and mysql]
+     *               - full [boolean] [pgsql-only]
+     *               - freeze [boolean] [pgsql-only]
+     *
+     * @return mixed MDB2_OK success, a MDB2 error on failure
+     * @access public
+     */
+    function vacuum($table = null, $options = array())
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        if (empty($table)) {
+            $table = $this->listTables();
+            if (PEAR::isError($table)) {
+                return $table;
+            }
+        }
+        if (is_array($table)) {
+            foreach (array_keys($table) as $k) {
+               $table[$k] = $db->quoteIdentifier($table[$k], true);
+            }
+            $table = implode(', ', $table);
+        } else {
+            $table = $db->quoteIdentifier($table, true);
+        }
+
+        $result = $db->exec('OPTIMIZE TABLE '.$table);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        if (!empty($options['analyze'])) {
+            return $db->exec('ANALYZE TABLE '.$table);
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ alterTable()
+
+    /**
+     * alter an existing table
+     *
+     * @param string $name         name of the table that is intended to be changed.
+     * @param array $changes     associative array that contains the details of each type
+     *                             of change that is intended to be performed. The types of
+     *                             changes that are currently supported are defined as follows:
+     *
+     *                             name
+     *
+     *                                New name for the table.
+     *
+     *                            add
+     *
+     *                                Associative array with the names of fields to be added as
+     *                                 indexes of the array. The value of each entry of the array
+     *                                 should be set to another associative array with the properties
+     *                                 of the fields to be added. The properties of the fields should
+     *                                 be the same as defined by the MDB2 parser.
+     *
+     *
+     *                            remove
+     *
+     *                                Associative array with the names of fields to be removed as indexes
+     *                                 of the array. Currently the values assigned to each entry are ignored.
+     *                                 An empty array should be used for future compatibility.
+     *
+     *                            rename
+     *
+     *                                Associative array with the names of fields to be renamed as indexes
+     *                                 of the array. The value of each entry of the array should be set to
+     *                                 another associative array with the entry named name with the new
+     *                                 field name and the entry named Declaration that is expected to contain
+     *                                 the portion of the field declaration already in DBMS specific SQL code
+     *                                 as it is used in the CREATE TABLE statement.
+     *
+     *                            change
+     *
+     *                                Associative array with the names of the fields to be changed as indexes
+     *                                 of the array. Keep in mind that if it is intended to change either the
+     *                                 name of a field and any other properties, the change array entries
+     *                                 should have the new names of the fields as array indexes.
+     *
+     *                                The value of each entry of the array should be set to another associative
+     *                                 array with the properties of the fields to that are meant to be changed as
+     *                                 array entries. These entries should be assigned to the new values of the
+     *                                 respective properties. The properties of the fields should be the same
+     *                                 as defined by the MDB2 parser.
+     *
+     *                            Example
+     *                                array(
+     *                                    'name' => 'userlist',
+     *                                    'add' => array(
+     *                                        'quota' => array(
+     *                                            'type' => 'integer',
+     *                                            'unsigned' => 1
+     *                                        )
+     *                                    ),
+     *                                    'remove' => array(
+     *                                        'file_limit' => array(),
+     *                                        'time_limit' => array()
+     *                                    ),
+     *                                    'change' => array(
+     *                                        'name' => array(
+     *                                            'length' => '20',
+     *                                            'definition' => array(
+     *                                                'type' => 'text',
+     *                                                'length' => 20,
+     *                                            ),
+     *                                        )
+     *                                    ),
+     *                                    'rename' => array(
+     *                                        'sex' => array(
+     *                                            'name' => 'gender',
+     *                                            'definition' => array(
+     *                                                'type' => 'text',
+     *                                                'length' => 1,
+     *                                                'default' => 'M',
+     *                                            ),
+     *                                        )
+     *                                    )
+     *                                )
+     *
+     * @param boolean $check     indicates whether the function should just check if the DBMS driver
+     *                             can perform the requested table alterations if the value is true or
+     *                             actually perform them otherwise.
+     * @access public
+     *
+      * @return mixed MDB2_OK on success, a MDB2 error on failure
+     */
+    function alterTable($name, $changes, $check)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        foreach ($changes as $change_name => $change) {
+            switch ($change_name) {
+            case 'add':
+            case 'remove':
+            case 'change':
+            case 'rename':
+            case 'name':
+                break;
+            default:
+                return $db->raiseError(MDB2_ERROR_CANNOT_ALTER, null, null,
+                    'change type "'.$change_name.'" not yet supported', __FUNCTION__);
+            }
+        }
+
+        if ($check) {
+            return MDB2_OK;
+        }
+
+        $query = '';
+        if (!empty($changes['name'])) {
+            $change_name = $db->quoteIdentifier($changes['name'], true);
+            $query .= 'RENAME TO ' . $change_name;
+        }
+
+        if (!empty($changes['add']) && is_array($changes['add'])) {
+            foreach ($changes['add'] as $field_name => $field) {
+                if ($query) {
+                    $query.= ', ';
+                }
+                $query.= 'ADD ' . $db->getDeclaration($field['type'], $field_name, $field);
+            }
+        }
+
+        if (!empty($changes['remove']) && is_array($changes['remove'])) {
+            foreach ($changes['remove'] as $field_name => $field) {
+                if ($query) {
+                    $query.= ', ';
+                }
+                $field_name = $db->quoteIdentifier($field_name, true);
+                $query.= 'DROP ' . $field_name;
+            }
+        }
+
+        $rename = array();
+        if (!empty($changes['rename']) && is_array($changes['rename'])) {
+            foreach ($changes['rename'] as $field_name => $field) {
+                $rename[$field['name']] = $field_name;
+            }
+        }
+
+        if (!empty($changes['change']) && is_array($changes['change'])) {
+            foreach ($changes['change'] as $field_name => $field) {
+                if ($query) {
+                    $query.= ', ';
+                }
+                if (isset($rename[$field_name])) {
+                    $old_field_name = $rename[$field_name];
+                    unset($rename[$field_name]);
+                } else {
+                    $old_field_name = $field_name;
+                }
+                $old_field_name = $db->quoteIdentifier($old_field_name, true);
+                $query.= "CHANGE $old_field_name " . $db->getDeclaration($field['definition']['type'], $field_name, $field['definition']);
+            }
+        }
+
+        if (!empty($rename) && is_array($rename)) {
+            foreach ($rename as $rename_name => $renamed_field) {
+                if ($query) {
+                    $query.= ', ';
+                }
+                $field = $changes['rename'][$renamed_field];
+                $renamed_field = $db->quoteIdentifier($renamed_field, true);
+                $query.= 'CHANGE ' . $renamed_field . ' ' . $db->getDeclaration($field['definition']['type'], $field['name'], $field['definition']);
+            }
+        }
+
+        if (!$query) {
+            return MDB2_OK;
+        }
+
+        $name = $db->quoteIdentifier($name, true);
+        return $db->exec("ALTER TABLE $name $query");
+    }
+
+    // }}}
+    // {{{ listDatabases()
+
+    /**
+     * list all databases
+     *
+     * @return mixed array of database names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listDatabases()
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $result = $db->queryCol('SHOW DATABASES');
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ listUsers()
+
+    /**
+     * list all users
+     *
+     * @return mixed array of user names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listUsers()
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        return $db->queryCol('SELECT DISTINCT USER FROM mysql.USER');
+    }
+
+    // }}}
+    // {{{ listFunctions()
+
+    /**
+     * list all functions in the current database
+     *
+     * @return mixed array of function names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listFunctions()
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = "SELECT name FROM mysql.proc";
+        /*
+        SELECT ROUTINE_NAME
+          FROM INFORMATION_SCHEMA.ROUTINES
+         WHERE ROUTINE_TYPE = 'FUNCTION'
+        */
+        $result = $db->queryCol($query);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ listTableTriggers()
+
+    /**
+     * list all triggers in the database that reference a given table
+     *
+     * @param string table for which all referenced triggers should be found
+     * @return mixed array of trigger names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTableTriggers($table = null)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = 'SHOW TRIGGERS';
+        if (null !== $table) {
+            $table = $db->quote($table, 'text');
+            $query .= " LIKE $table";
+        }
+        $result = $db->queryCol($query);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ listTables()
+
+    /**
+     * list all tables in the current database
+     *
+     * @param string database, the current is default
+     * @return mixed array of table names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTables($database = null)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = "SHOW /*!50002 FULL*/ TABLES";
+        if (null !== $database) {
+            $query .= " FROM $database";
+        }
+        $query.= "/*!50002  WHERE Table_type = 'BASE TABLE'*/";
+
+        $table_names = $db->queryAll($query, null, MDB2_FETCHMODE_ORDERED);
+        if (PEAR::isError($table_names)) {
+            return $table_names;
+        }
+
+        $result = array();
+        foreach ($table_names as $table) {
+            if (!$this->_fixSequenceName($table[0], true)) {
+                $result[] = $table[0];
+            }
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ listViews()
+
+    /**
+     * list all views in the current database
+     *
+     * @param string database, the current is default
+     * @return mixed array of view names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listViews($database = null)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = 'SHOW FULL TABLES';
+        if (null !== $database) {
+            $query.= " FROM $database";
+        }
+        $query.= " WHERE Table_type = 'VIEW'";
+
+        $result = $db->queryCol($query);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ listTableFields()
+
+    /**
+     * list all fields in a table in the current database
+     *
+     * @param string $table name of table that should be used in method
+     * @return mixed array of field names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTableFields($table)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $table = $db->quoteIdentifier($table, true);
+        $result = $db->queryCol("SHOW COLUMNS FROM $table");
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ createIndex()
+
+    /**
+     * Get the stucture of a field into an array
+     *
+     * @author Leoncx
+     * @param string    $table         name of the table on which the index is to be created
+     * @param string    $name         name of the index to be created
+     * @param array     $definition        associative array that defines properties of the index to be created.
+     *                                 Currently, only one property named FIELDS is supported. This property
+     *                                 is also an associative with the names of the index fields as array
+     *                                 indexes. Each entry of this array is set to another type of associative
+     *                                 array that specifies properties of the index that are specific to
+     *                                 each field.
+     *
+     *                                Currently, only the sorting property is supported. It should be used
+     *                                 to define the sorting direction of the index. It may be set to either
+     *                                 ascending or descending.
+     *
+     *                                Not all DBMS support index sorting direction configuration. The DBMS
+     *                                 drivers of those that do not support it ignore this property. Use the
+     *                                 function supports() to determine whether the DBMS driver can manage indexes.
+     *
+     *                                 Example
+     *                                    array(
+     *                                        'fields' => array(
+     *                                            'user_name' => array(
+     *                                                'sorting' => 'ascending'
+     *                                                'length' => 10
+     *                                            ),
+     *                                            'last_login' => array()
+     *                                        )
+     *                                    )
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function createIndex($table, $name, $definition)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $table = $db->quoteIdentifier($table, true);
+        $name = $db->quoteIdentifier($db->getIndexName($name), true);
+        $query = "CREATE INDEX $name ON $table";
+        $fields = array();
+        foreach ($definition['fields'] as $field => $fieldinfo) {
+            if (!empty($fieldinfo['length'])) {
+                $fields[] = $db->quoteIdentifier($field, true) . '(' . $fieldinfo['length'] . ')';
+            } else {
+                $fields[] = $db->quoteIdentifier($field, true);
+            }
+        }
+        $query .= ' ('. implode(', ', $fields) . ')';
+        return $db->exec($query);
+    }
+
+    // }}}
+    // {{{ dropIndex()
+
+    /**
+     * drop existing index
+     *
+     * @param string    $table         name of table that should be used in method
+     * @param string    $name         name of the index to be dropped
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function dropIndex($table, $name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $table = $db->quoteIdentifier($table, true);
+        $name = $db->quoteIdentifier($db->getIndexName($name), true);
+        return $db->exec("DROP INDEX $name ON $table");
+    }
+
+    // }}}
+    // {{{ listTableIndexes()
+
+    /**
+     * list all indexes in a table
+     *
+     * @param string $table name of table that should be used in method
+     * @return mixed array of index names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTableIndexes($table)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $key_name = 'Key_name';
+        $non_unique = 'Non_unique';
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            if ($db->options['field_case'] == CASE_LOWER) {
+                $key_name = strtolower($key_name);
+                $non_unique = strtolower($non_unique);
+            } else {
+                $key_name = strtoupper($key_name);
+                $non_unique = strtoupper($non_unique);
+            }
+        }
+
+        $table = $db->quoteIdentifier($table, true);
+        $query = "SHOW INDEX FROM $table";
+        $indexes = $db->queryAll($query, null, MDB2_FETCHMODE_ASSOC);
+        if (PEAR::isError($indexes)) {
+            return $indexes;
+        }
+
+        $result = array();
+        foreach ($indexes as $index_data) {
+            if ($index_data[$non_unique] && ($index = $this->_fixIndexName($index_data[$key_name]))) {
+                $result[$index] = true;
+            }
+        }
+
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_change_key_case($result, $db->options['field_case']);
+        }
+        return array_keys($result);
+    }
+
+    // }}}
+    // {{{ createConstraint()
+
+    /**
+     * create a constraint on a table
+     *
+     * @param string    $table         name of the table on which the constraint is to be created
+     * @param string    $name         name of the constraint to be created
+     * @param array     $definition        associative array that defines properties of the constraint to be created.
+     *                                 Currently, only one property named FIELDS is supported. This property
+     *                                 is also an associative with the names of the constraint fields as array
+     *                                 constraints. Each entry of this array is set to another type of associative
+     *                                 array that specifies properties of the constraint that are specific to
+     *                                 each field.
+     *
+     *                                 Example
+     *                                    array(
+     *                                        'fields' => array(
+     *                                            'user_name' => array(),
+     *                                            'last_login' => array()
+     *                                        )
+     *                                    )
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function createConstraint($table, $name, $definition)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $type = '';
+        $idx_name = $db->quoteIdentifier($db->getIndexName($name), true);
+        if (!empty($definition['primary'])) {
+            $type = 'PRIMARY';
+            $idx_name = 'KEY';
+        } elseif (!empty($definition['unique'])) {
+            $type = 'UNIQUE';
+        } elseif (!empty($definition['foreign'])) {
+            $type = 'CONSTRAINT';
+        }
+        if (empty($type)) {
+            return $db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
+                'invalid definition, could not create constraint', __FUNCTION__);
+        }
+
+        $table_quoted = $db->quoteIdentifier($table, true);
+        $query = "ALTER TABLE $table_quoted ADD $type $idx_name";
+        if (!empty($definition['foreign'])) {
+            $query .= ' FOREIGN KEY';
+        }
+        $fields = array();
+        foreach ($definition['fields'] as $field => $fieldinfo) {
+            $quoted = $db->quoteIdentifier($field, true);
+            if (!empty($fieldinfo['length'])) {
+                $quoted .= '(' . $fieldinfo['length'] . ')';
+            }
+            $fields[] = $quoted;
+        }
+        $query .= ' ('. implode(', ', $fields) . ')';
+        if (!empty($definition['foreign'])) {
+            $query.= ' REFERENCES ' . $db->quoteIdentifier($definition['references']['table'], true);
+            $referenced_fields = array();
+            foreach (array_keys($definition['references']['fields']) as $field) {
+                $referenced_fields[] = $db->quoteIdentifier($field, true);
+            }
+            $query .= ' ('. implode(', ', $referenced_fields) . ')';
+            $query .= $this->_getAdvancedFKOptions($definition);
+
+            // add index on FK column(s) or we can't add a FK constraint
+            // @see http://forums.mysql.com/read.php?22,19755,226009
+            $result = $this->createIndex($table, $name.'_fkidx', $definition);
+            if (PEAR::isError($result)) {
+                return $result;
+            }
+        }
+        $res = $db->exec($query);
+        if (PEAR::isError($res)) {
+            return $res;
+        }
+        if (!empty($definition['foreign'])) {
+            return $this->_createFKTriggers($table, array($name => $definition));
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ dropConstraint()
+
+    /**
+     * drop existing constraint
+     *
+     * @param string    $table        name of table that should be used in method
+     * @param string    $name         name of the constraint to be dropped
+     * @param string    $primary      hint if the constraint is primary
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function dropConstraint($table, $name, $primary = false)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+        
+        if ($primary || strtolower($name) == 'primary') {
+            $query = 'ALTER TABLE '. $db->quoteIdentifier($table, true) .' DROP PRIMARY KEY';
+            return $db->exec($query);
+        }
+        
+        //is it a FK constraint? If so, also delete the associated triggers
+        $db->loadModule('Reverse', null, true);
+        $definition = $db->reverse->getTableConstraintDefinition($table, $name);
+        if (!PEAR::isError($definition) && !empty($definition['foreign'])) {
+            //first drop the FK enforcing triggers
+            $result = $this->_dropFKTriggers($table, $name, $definition['references']['table']);
+            if (PEAR::isError($result)) {
+                return $result;
+            }
+            //then drop the constraint itself
+            $table = $db->quoteIdentifier($table, true);
+            $name = $db->quoteIdentifier($db->getIndexName($name), true);
+            $query = "ALTER TABLE $table DROP FOREIGN KEY $name";
+            return $db->exec($query);
+        }
+
+        $table = $db->quoteIdentifier($table, true);
+        $name = $db->quoteIdentifier($db->getIndexName($name), true);
+        $query = "ALTER TABLE $table DROP INDEX $name";
+        return $db->exec($query);
+    }
+
+    // }}}
+    // {{{ _createFKTriggers()
+
+    /**
+     * Create triggers to enforce the FOREIGN KEY constraint on the table
+     *
+     * NB: since there's no RAISE_APPLICATION_ERROR facility in mysql,
+     * we call a non-existent procedure to raise the FK violation message.
+     * @see http://forums.mysql.com/read.php?99,55108,71877#msg-71877
+     *
+     * @param string $table        table name
+     * @param array  $foreign_keys FOREIGN KEY definitions
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access private
+     */
+    function _createFKTriggers($table, $foreign_keys)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+        // create triggers to enforce FOREIGN KEY constraints
+        if ($db->supports('triggers') && !empty($foreign_keys)) {
+            $table_quoted = $db->quoteIdentifier($table, true);
+            foreach ($foreign_keys as $fkname => $fkdef) {
+                if (empty($fkdef)) {
+                    continue;
+                }
+                //set actions to default if not set
+                $fkdef['onupdate'] = empty($fkdef['onupdate']) ? $db->options['default_fk_action_onupdate'] : strtoupper($fkdef['onupdate']);
+                $fkdef['ondelete'] = empty($fkdef['ondelete']) ? $db->options['default_fk_action_ondelete'] : strtoupper($fkdef['ondelete']);
+
+                $trigger_names = array(
+                    'insert'    => $fkname.'_insert_trg',
+                    'update'    => $fkname.'_update_trg',
+                    'pk_update' => $fkname.'_pk_update_trg',
+                    'pk_delete' => $fkname.'_pk_delete_trg',
+                );
+                $table_fields = array_keys($fkdef['fields']);
+                $referenced_fields = array_keys($fkdef['references']['fields']);
+
+                //create the ON [UPDATE|DELETE] triggers on the primary table
+                $restrict_action = ' IF (SELECT ';
+                $aliased_fields = array();
+                foreach ($table_fields as $field) {
+                    $aliased_fields[] = $table_quoted .'.'.$field .' AS '.$field;
+                }
+                $restrict_action .= implode(',', $aliased_fields)
+                       .' FROM '.$table_quoted
+                       .' WHERE ';
+                $conditions  = array();
+                $new_values  = array();
+                $null_values = array();
+                for ($i=0; $i<count($table_fields); $i++) {
+                    $conditions[]  = $table_fields[$i] .' = OLD.'.$referenced_fields[$i];
+                    $new_values[]  = $table_fields[$i] .' = NEW.'.$referenced_fields[$i];
+                    $null_values[] = $table_fields[$i] .' = NULL';
+                }
+                $conditions2 = array();
+                if ('NO ACTION' != $fkdef['ondelete']) {
+                    // There is no NEW row in on DELETE trigger
+                    for ($i=0; $i<count($referenced_fields); $i++) {
+                        $conditions2[]  = 'NEW.'.$referenced_fields[$i] .' <> OLD.'.$referenced_fields[$i];
+                    }
+                }
+
+                $restrict_action .= implode(' AND ', $conditions).') IS NOT NULL';
+                if (!empty($conditions2)) {
+                    $restrict_action .= ' AND (' .implode(' OR ', $conditions2) .')';
+                }
+                $restrict_action .= ' THEN CALL %s_ON_TABLE_'.$table.'_VIOLATES_FOREIGN_KEY_CONSTRAINT();'
+                                   .' END IF;';
+
+                $cascade_action_update = 'UPDATE '.$table_quoted.' SET '.implode(', ', $new_values) .' WHERE '.implode(' AND ', $conditions). ';';
+                $cascade_action_delete = 'DELETE FROM '.$table_quoted.' WHERE '.implode(' AND ', $conditions). ';';
+                $setnull_action        = 'UPDATE '.$table_quoted.' SET '.implode(', ', $null_values).' WHERE '.implode(' AND ', $conditions). ';';
+
+                if ('SET DEFAULT' == $fkdef['onupdate'] || 'SET DEFAULT' == $fkdef['ondelete']) {
+                    $db->loadModule('Reverse', null, true);
+                    $default_values = array();
+                    foreach ($table_fields as $table_field) {
+                        $field_definition = $db->reverse->getTableFieldDefinition($table, $field);
+                        if (PEAR::isError($field_definition)) {
+                            return $field_definition;
+                        }
+                        $default_values[] = $table_field .' = '. $field_definition[0]['default'];
+                    }
+                    $setdefault_action = 'UPDATE '.$table_quoted.' SET '.implode(', ', $default_values).' WHERE '.implode(' AND ', $conditions). ';';
+                }
+
+                $query = 'CREATE TRIGGER %s'
+                        .' %s ON '.$fkdef['references']['table']
+                        .' FOR EACH ROW BEGIN '
+                        .' SET FOREIGN_KEY_CHECKS = 0; ';  //only really needed for ON UPDATE CASCADE
+
+                if ('CASCADE' == $fkdef['onupdate']) {
+                    $sql_update = sprintf($query, $trigger_names['pk_update'], 'BEFORE UPDATE',  'update') . $cascade_action_update;
+                } elseif ('SET NULL' == $fkdef['onupdate']) {
+                    $sql_update = sprintf($query, $trigger_names['pk_update'], 'BEFORE UPDATE', 'update') . $setnull_action;
+                } elseif ('SET DEFAULT' == $fkdef['onupdate']) {
+                    $sql_update = sprintf($query, $trigger_names['pk_update'], 'BEFORE UPDATE', 'update') . $setdefault_action;
+                } elseif ('NO ACTION' == $fkdef['onupdate']) {
+                    $sql_update = sprintf($query.$restrict_action, $trigger_names['pk_update'], 'AFTER UPDATE', 'update');
+                } elseif ('RESTRICT' == $fkdef['onupdate']) {
+                    $sql_update = sprintf($query.$restrict_action, $trigger_names['pk_update'], 'BEFORE UPDATE', 'update');
+                }
+                if ('CASCADE' == $fkdef['ondelete']) {
+                    $sql_delete = sprintf($query, $trigger_names['pk_delete'], 'BEFORE DELETE',  'delete') . $cascade_action_delete;
+                } elseif ('SET NULL' == $fkdef['ondelete']) {
+                    $sql_delete = sprintf($query, $trigger_names['pk_delete'], 'BEFORE DELETE', 'delete') . $setnull_action;
+                } elseif ('SET DEFAULT' == $fkdef['ondelete']) {
+                    $sql_delete = sprintf($query, $trigger_names['pk_delete'], 'BEFORE DELETE', 'delete') . $setdefault_action;
+                } elseif ('NO ACTION' == $fkdef['ondelete']) {
+                    $sql_delete = sprintf($query.$restrict_action, $trigger_names['pk_delete'], 'AFTER DELETE', 'delete');
+                } elseif ('RESTRICT' == $fkdef['ondelete']) {
+                    $sql_delete = sprintf($query.$restrict_action, $trigger_names['pk_delete'], 'BEFORE DELETE', 'delete');
+                }
+                $sql_update .= ' SET FOREIGN_KEY_CHECKS = 1; END;';
+                $sql_delete .= ' SET FOREIGN_KEY_CHECKS = 1; END;';
+
+                $db->pushErrorHandling(PEAR_ERROR_RETURN);
+                $db->expectError(MDB2_ERROR_CANNOT_CREATE); 
+                $result = $db->exec($sql_delete);
+                $expected_errmsg = 'This MySQL version doesn\'t support multiple triggers with the same action time and event for one table';
+                $db->popExpect();
+                $db->popErrorHandling();
+                if (PEAR::isError($result)) {
+                    if ($result->getCode() != MDB2_ERROR_CANNOT_CREATE) {
+                        return $result;
+                    }
+                    $db->warnings[] = $expected_errmsg;
+                }
+                $db->pushErrorHandling(PEAR_ERROR_RETURN);
+                $db->expectError(MDB2_ERROR_CANNOT_CREATE);
+                $result = $db->exec($sql_update);
+                $db->popExpect();
+                $db->popErrorHandling();
+                if (PEAR::isError($result) && $result->getCode() != MDB2_ERROR_CANNOT_CREATE) {
+                    if ($result->getCode() != MDB2_ERROR_CANNOT_CREATE) {
+                        return $result;
+                    }
+                    $db->warnings[] = $expected_errmsg;
+                }
+            }
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ _dropFKTriggers()
+
+    /**
+     * Drop the triggers created to enforce the FOREIGN KEY constraint on the table
+     *
+     * @param string $table            table name
+     * @param string $fkname           FOREIGN KEY constraint name
+     * @param string $referenced_table referenced table name
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access private
+     */
+    function _dropFKTriggers($table, $fkname, $referenced_table)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $triggers  = $this->listTableTriggers($table);
+        $triggers2 = $this->listTableTriggers($referenced_table);
+        if (!PEAR::isError($triggers2) && !PEAR::isError($triggers)) {
+            $triggers = array_merge($triggers, $triggers2);
+            $pattern = '/^'.$fkname.'(_pk)?_(insert|update|delete)_trg$/i';
+            foreach ($triggers as $trigger) {
+                if (preg_match($pattern, $trigger)) {
+                    $result = $db->exec('DROP TRIGGER '.$trigger);
+                    if (PEAR::isError($result)) {
+                        return $result;
+                    }
+                }
+            }
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ listTableConstraints()
+
+    /**
+     * list all constraints in a table
+     *
+     * @param string $table name of table that should be used in method
+     * @return mixed array of constraint names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTableConstraints($table)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $key_name = 'Key_name';
+        $non_unique = 'Non_unique';
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            if ($db->options['field_case'] == CASE_LOWER) {
+                $key_name = strtolower($key_name);
+                $non_unique = strtolower($non_unique);
+            } else {
+                $key_name = strtoupper($key_name);
+                $non_unique = strtoupper($non_unique);
+            }
+        }
+
+        $query = 'SHOW INDEX FROM ' . $db->quoteIdentifier($table, true);
+        $indexes = $db->queryAll($query, null, MDB2_FETCHMODE_ASSOC);
+        if (PEAR::isError($indexes)) {
+            return $indexes;
+        }
+
+        $result = array();
+        foreach ($indexes as $index_data) {
+            if (!$index_data[$non_unique]) {
+                if ($index_data[$key_name] !== 'PRIMARY') {
+                    $index = $this->_fixIndexName($index_data[$key_name]);
+                } else {
+                    $index = 'PRIMARY';
+                }
+                if (!empty($index)) {
+                    $result[$index] = true;
+                }
+            }
+        }
+
+        //list FOREIGN KEY constraints...
+        $query = 'SHOW CREATE TABLE '. $db->escape($table);
+        $definition = $db->queryOne($query, 'text', 1);
+        if (!PEAR::isError($definition) && !empty($definition)) {
+            $pattern = '/\bCONSTRAINT\b\s+([^\s]+)\s+\bFOREIGN KEY\b/Uims';
+            if (preg_match_all($pattern, str_replace('`', '', $definition), $matches) > 0) {
+                foreach ($matches[1] as $constraint) {
+                    $result[$constraint] = true;
+                }
+            }
+        }
+
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_change_key_case($result, $db->options['field_case']);
+        }
+        return array_keys($result);
+    }
+
+    // }}}
+    // {{{ createSequence()
+
+    /**
+     * create sequence
+     *
+     * @param string    $seq_name name of the sequence to be created
+     * @param string    $start    start value of the sequence; default is 1
+     * @param array     $options  An associative array of table options:
+     *                          array(
+     *                              'comment' => 'Foo',
+     *                              'charset' => 'utf8',
+     *                              'collate' => 'utf8_unicode_ci',
+     *                              'type'    => 'innodb',
+     *                          );
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function createSequence($seq_name, $start = 1, $options = array())
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $sequence_name = $db->quoteIdentifier($db->getSequenceName($seq_name), true);
+        $seqcol_name = $db->quoteIdentifier($db->options['seqcol_name'], true);
+        
+        $options_strings = array();
+
+        if (!empty($options['comment'])) {
+            $options_strings['comment'] = 'COMMENT = '.$db->quote($options['comment'], 'text');
+        }
+
+        if (!empty($options['charset'])) {
+            $options_strings['charset'] = 'DEFAULT CHARACTER SET '.$options['charset'];
+            if (!empty($options['collate'])) {
+                $options_strings['charset'].= ' COLLATE '.$options['collate'];
+            }
+        }
+
+        $type = false;
+        if (!empty($options['type'])) {
+            $type = $options['type'];
+        } elseif ($db->options['default_table_type']) {
+            $type = $db->options['default_table_type'];
+        }
+        if ($type) {
+            $options_strings[] = "ENGINE = $type";
+        }
+
+        $query = "CREATE TABLE $sequence_name ($seqcol_name INT NOT NULL AUTO_INCREMENT, PRIMARY KEY ($seqcol_name))";
+        if (!empty($options_strings)) {
+            $query .= ' '.implode(' ', $options_strings);
+        }
+        $res = $db->exec($query);
+        if (PEAR::isError($res)) {
+            return $res;
+        }
+
+        if ($start == 1) {
+            return MDB2_OK;
+        }
+
+        $query = "INSERT INTO $sequence_name ($seqcol_name) VALUES (".($start-1).')';
+        $res = $db->exec($query);
+        if (!PEAR::isError($res)) {
+            return MDB2_OK;
+        }
+
+        // Handle error
+        $result = $db->exec("DROP TABLE $sequence_name");
+        if (PEAR::isError($result)) {
+            return $db->raiseError($result, null, null,
+                'could not drop inconsistent sequence table', __FUNCTION__);
+        }
+
+        return $db->raiseError($res, null, null,
+            'could not create sequence table', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ dropSequence()
+
+    /**
+     * drop existing sequence
+     *
+     * @param string    $seq_name     name of the sequence to be dropped
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function dropSequence($seq_name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $sequence_name = $db->quoteIdentifier($db->getSequenceName($seq_name), true);
+        return $db->exec("DROP TABLE $sequence_name");
+    }
+
+    // }}}
+    // {{{ listSequences()
+
+    /**
+     * list all sequences in the current database
+     *
+     * @param string database, the current is default
+     * @return mixed array of sequence names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listSequences($database = null)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = "SHOW TABLES";
+        if (null !== $database) {
+            $query .= " FROM $database";
+        }
+        $table_names = $db->queryCol($query);
+        if (PEAR::isError($table_names)) {
+            return $table_names;
+        }
+
+        $result = array();
+        foreach ($table_names as $table_name) {
+            if ($sqn = $this->_fixSequenceName($table_name, true)) {
+                $result[] = $sqn;
+            }
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Manager/pgsql.php b/program/lib/MDB2/Driver/Manager/pgsql.php
new file mode 100644 (file)
index 0000000..7d35627
--- /dev/null
@@ -0,0 +1,948 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2008 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Paul Cooper <pgc@ucecom.com>                                 |
+// +----------------------------------------------------------------------+
+//
+// $Id: pgsql.php 295587 2010-02-28 17:16:38Z quipo $
+
+require_once 'MDB2/Driver/Manager/Common.php';
+
+/**
+ * MDB2 MySQL driver for the management modules
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Paul Cooper <pgc@ucecom.com>
+ */
+class MDB2_Driver_Manager_pgsql extends MDB2_Driver_Manager_Common
+{
+    // {{{ createDatabase()
+
+    /**
+     * create a new database
+     *
+     * @param string $name    name of the database that should be created
+     * @param array  $options array with charset info
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function createDatabase($name, $options = array())
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $name  = $db->quoteIdentifier($name, true);
+        $query = 'CREATE DATABASE ' . $name;
+        if (!empty($options['charset'])) {
+            $query .= ' WITH ENCODING ' . $db->quote($options['charset'], 'text');
+        }
+        return $db->standaloneQuery($query, null, true);
+    }
+
+    // }}}
+    // {{{ alterDatabase()
+
+    /**
+     * alter an existing database
+     *
+     * @param string $name    name of the database that is intended to be changed
+     * @param array  $options array with name, owner info
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function alterDatabase($name, $options = array())
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = 'ALTER DATABASE '. $db->quoteIdentifier($name, true);
+        if (!empty($options['name'])) {
+            $query .= ' RENAME TO ' . $options['name'];
+        }
+        if (!empty($options['owner'])) {
+            $query .= ' OWNER TO ' . $options['owner'];
+        }
+        return $db->standaloneQuery($query, null, true);
+    }
+
+    // }}}
+    // {{{ dropDatabase()
+
+    /**
+     * drop an existing database
+     *
+     * @param string $name name of the database that should be dropped
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function dropDatabase($name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $name = $db->quoteIdentifier($name, true);
+        $query = "DROP DATABASE $name";
+        return $db->standaloneQuery($query, null, true);
+    }
+
+    // }}}
+    // {{{ _getAdvancedFKOptions()
+
+    /**
+     * Return the FOREIGN KEY query section dealing with non-standard options
+     * as MATCH, INITIALLY DEFERRED, ON UPDATE, ...
+     *
+     * @param array $definition
+     * @return string
+     * @access protected
+     */
+    function _getAdvancedFKOptions($definition)
+    {
+        $query = '';
+        if (!empty($definition['match'])) {
+            $query .= ' MATCH '.$definition['match'];
+        }
+        if (!empty($definition['onupdate'])) {
+            $query .= ' ON UPDATE '.$definition['onupdate'];
+        }
+        if (!empty($definition['ondelete'])) {
+            $query .= ' ON DELETE '.$definition['ondelete'];
+        }
+        if (!empty($definition['deferrable'])) {
+            $query .= ' DEFERRABLE';
+        } else {
+            $query .= ' NOT DEFERRABLE';
+        }
+        if (!empty($definition['initiallydeferred'])) {
+            $query .= ' INITIALLY DEFERRED';
+        } else {
+            $query .= ' INITIALLY IMMEDIATE';
+        }
+        return $query;
+    }
+
+    // }}}
+    // {{{ truncateTable()
+
+    /**
+     * Truncate an existing table (if the TRUNCATE TABLE syntax is not supported,
+     * it falls back to a DELETE FROM TABLE query)
+     *
+     * @param string $name name of the table that should be truncated
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function truncateTable($name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $name = $db->quoteIdentifier($name, true);
+        return $db->exec("TRUNCATE TABLE $name");
+    }
+
+    // }}}
+    // {{{ vacuum()
+
+    /**
+     * Optimize (vacuum) all the tables in the db (or only the specified table)
+     * and optionally run ANALYZE.
+     *
+     * @param string $table table name (all the tables if empty)
+     * @param array  $options an array with driver-specific options:
+     *               - timeout [int] (in seconds) [mssql-only]
+     *               - analyze [boolean] [pgsql and mysql]
+     *               - full [boolean] [pgsql-only]
+     *               - freeze [boolean] [pgsql-only]
+     *
+     * @return mixed MDB2_OK success, a MDB2 error on failure
+     * @access public
+     */
+    function vacuum($table = null, $options = array())
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+        $query = 'VACUUM';
+
+        if (!empty($options['full'])) {
+            $query .= ' FULL';
+        }
+        if (!empty($options['freeze'])) {
+            $query .= ' FREEZE';
+        }
+        if (!empty($options['analyze'])) {
+            $query .= ' ANALYZE';
+        }
+
+        if (!empty($table)) {
+            $query .= ' '.$db->quoteIdentifier($table, true);
+        }
+        return $db->exec($query);
+    }
+
+    // }}}
+    // {{{ alterTable()
+
+    /**
+     * alter an existing table
+     *
+     * @param string $name         name of the table that is intended to be changed.
+     * @param array $changes     associative array that contains the details of each type
+     *                             of change that is intended to be performed. The types of
+     *                             changes that are currently supported are defined as follows:
+     *
+     *                             name
+     *
+     *                                New name for the table.
+     *
+     *                            add
+     *
+     *                                Associative array with the names of fields to be added as
+     *                                 indexes of the array. The value of each entry of the array
+     *                                 should be set to another associative array with the properties
+     *                                 of the fields to be added. The properties of the fields should
+     *                                 be the same as defined by the MDB2 parser.
+     *
+     *
+     *                            remove
+     *
+     *                                Associative array with the names of fields to be removed as indexes
+     *                                 of the array. Currently the values assigned to each entry are ignored.
+     *                                 An empty array should be used for future compatibility.
+     *
+     *                            rename
+     *
+     *                                Associative array with the names of fields to be renamed as indexes
+     *                                 of the array. The value of each entry of the array should be set to
+     *                                 another associative array with the entry named name with the new
+     *                                 field name and the entry named Declaration that is expected to contain
+     *                                 the portion of the field declaration already in DBMS specific SQL code
+     *                                 as it is used in the CREATE TABLE statement.
+     *
+     *                            change
+     *
+     *                                Associative array with the names of the fields to be changed as indexes
+     *                                 of the array. Keep in mind that if it is intended to change either the
+     *                                 name of a field and any other properties, the change array entries
+     *                                 should have the new names of the fields as array indexes.
+     *
+     *                                The value of each entry of the array should be set to another associative
+     *                                 array with the properties of the fields to that are meant to be changed as
+     *                                 array entries. These entries should be assigned to the new values of the
+     *                                 respective properties. The properties of the fields should be the same
+     *                                 as defined by the MDB2 parser.
+     *
+     *                            Example
+     *                                array(
+     *                                    'name' => 'userlist',
+     *                                    'add' => array(
+     *                                        'quota' => array(
+     *                                            'type' => 'integer',
+     *                                            'unsigned' => 1
+     *                                        )
+     *                                    ),
+     *                                    'remove' => array(
+     *                                        'file_limit' => array(),
+     *                                        'time_limit' => array()
+     *                                    ),
+     *                                    'change' => array(
+     *                                        'name' => array(
+     *                                            'length' => '20',
+     *                                            'definition' => array(
+     *                                                'type' => 'text',
+     *                                                'length' => 20,
+     *                                            ),
+     *                                        )
+     *                                    ),
+     *                                    'rename' => array(
+     *                                        'sex' => array(
+     *                                            'name' => 'gender',
+     *                                            'definition' => array(
+     *                                                'type' => 'text',
+     *                                                'length' => 1,
+     *                                                'default' => 'M',
+     *                                            ),
+     *                                        )
+     *                                    )
+     *                                )
+     *
+     * @param boolean $check     indicates whether the function should just check if the DBMS driver
+     *                             can perform the requested table alterations if the value is true or
+     *                             actually perform them otherwise.
+     * @access public
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     */
+    function alterTable($name, $changes, $check)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        foreach ($changes as $change_name => $change) {
+            switch ($change_name) {
+            case 'add':
+            case 'remove':
+            case 'change':
+            case 'name':
+            case 'rename':
+                break;
+            default:
+                return $db->raiseError(MDB2_ERROR_CANNOT_ALTER, null, null,
+                    'change type "'.$change_name.'\" not yet supported', __FUNCTION__);
+            }
+        }
+
+        if ($check) {
+            return MDB2_OK;
+        }
+
+        $name = $db->quoteIdentifier($name, true);
+
+        if (!empty($changes['remove']) && is_array($changes['remove'])) {
+            foreach ($changes['remove'] as $field_name => $field) {
+                $field_name = $db->quoteIdentifier($field_name, true);
+                $query = 'DROP ' . $field_name;
+                $result = $db->exec("ALTER TABLE $name $query");
+                if (PEAR::isError($result)) {
+                    return $result;
+                }
+            }
+        }
+
+        if (!empty($changes['rename']) && is_array($changes['rename'])) {
+            foreach ($changes['rename'] as $field_name => $field) {
+                $field_name = $db->quoteIdentifier($field_name, true);
+                $result = $db->exec("ALTER TABLE $name RENAME COLUMN $field_name TO ".$db->quoteIdentifier($field['name'], true));
+                if (PEAR::isError($result)) {
+                    return $result;
+                }
+            }
+        }
+
+        if (!empty($changes['add']) && is_array($changes['add'])) {
+            foreach ($changes['add'] as $field_name => $field) {
+                $query = 'ADD ' . $db->getDeclaration($field['type'], $field_name, $field);
+                $result = $db->exec("ALTER TABLE $name $query");
+                if (PEAR::isError($result)) {
+                    return $result;
+                }
+            }
+        }
+
+        if (!empty($changes['change']) && is_array($changes['change'])) {
+            foreach ($changes['change'] as $field_name => $field) {
+                $field_name = $db->quoteIdentifier($field_name, true);
+                if (!empty($field['definition']['type'])) {
+                    $server_info = $db->getServerVersion();
+                    if (PEAR::isError($server_info)) {
+                        return $server_info;
+                    }
+                    if (is_array($server_info) && $server_info['major'] < 8) {
+                        return $db->raiseError(MDB2_ERROR_CANNOT_ALTER, null, null,
+                            'changing column type for "'.$change_name.'\" requires PostgreSQL 8.0 or above', __FUNCTION__);
+                    }
+                    $db->loadModule('Datatype', null, true);
+                    $type = $db->datatype->getTypeDeclaration($field['definition']);
+                    $query = "ALTER $field_name TYPE $type USING CAST($field_name AS $type)";
+                    $result = $db->exec("ALTER TABLE $name $query");
+                    if (PEAR::isError($result)) {
+                        return $result;
+                    }
+                }
+                if (array_key_exists('default', $field['definition'])) {
+                    $query = "ALTER $field_name SET DEFAULT ".$db->quote($field['definition']['default'], $field['definition']['type']);
+                    $result = $db->exec("ALTER TABLE $name $query");
+                    if (PEAR::isError($result)) {
+                        return $result;
+                    }
+                }
+                if (array_key_exists('notnull', $field['definition'])) {
+                    $query = "ALTER $field_name ".($field['definition']['notnull'] ? 'SET' : 'DROP').' NOT NULL';
+                    $result = $db->exec("ALTER TABLE $name $query");
+                    if (PEAR::isError($result)) {
+                        return $result;
+                    }
+                }
+            }
+        }
+
+        if (!empty($changes['name'])) {
+            $change_name = $db->quoteIdentifier($changes['name'], true);
+            $result = $db->exec("ALTER TABLE $name RENAME TO ".$change_name);
+            if (PEAR::isError($result)) {
+                return $result;
+            }
+        }
+
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ listDatabases()
+
+    /**
+     * list all databases
+     *
+     * @return mixed array of database names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listDatabases()
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = 'SELECT datname FROM pg_database';
+        $result2 = $db->standaloneQuery($query, array('text'), false);
+        if (!MDB2::isResultCommon($result2)) {
+            return $result2;
+        }
+
+        $result = $result2->fetchCol();
+        $result2->free();
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ listUsers()
+
+    /**
+     * list all users
+     *
+     * @return mixed array of user names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listUsers()
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = 'SELECT usename FROM pg_user';
+        $result2 = $db->standaloneQuery($query, array('text'), false);
+        if (!MDB2::isResultCommon($result2)) {
+            return $result2;
+        }
+
+        $result = $result2->fetchCol();
+        $result2->free();
+        return $result;
+    }
+
+    // }}}
+    // {{{ listViews()
+
+    /**
+     * list all views in the current database
+     *
+     * @return mixed array of view names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listViews()
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = "SELECT viewname
+                    FROM pg_views
+                   WHERE schemaname NOT IN ('pg_catalog', 'information_schema')
+                     AND viewname !~ '^pg_'";
+        $result = $db->queryCol($query);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ listTableViews()
+
+    /**
+     * list the views in the database that reference a given table
+     *
+     * @param string table for which all referenced views should be found
+     * @return mixed array of view names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTableViews($table)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = 'SELECT viewname FROM pg_views NATURAL JOIN pg_tables';
+        $query.= ' WHERE tablename ='.$db->quote($table, 'text');
+        $result = $db->queryCol($query);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ listFunctions()
+
+    /**
+     * list all functions in the current database
+     *
+     * @return mixed array of function names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listFunctions()
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = "
+            SELECT
+                proname
+            FROM
+                pg_proc pr,
+                pg_type tp
+            WHERE
+                tp.oid = pr.prorettype
+                AND pr.proisagg = FALSE
+                AND tp.typname <> 'trigger'
+                AND pr.pronamespace IN
+                    (SELECT oid FROM pg_namespace WHERE nspname NOT LIKE 'pg_%' AND nspname != 'information_schema')";
+        $result = $db->queryCol($query);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ listTableTriggers()
+
+    /**
+     * list all triggers in the database that reference a given table
+     *
+     * @param string table for which all referenced triggers should be found
+     * @return mixed array of trigger names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTableTriggers($table = null)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = 'SELECT trg.tgname AS trigger_name
+                    FROM pg_trigger trg,
+                         pg_class tbl
+                   WHERE trg.tgrelid = tbl.oid';
+        if (null !== $table) {
+            $table = $db->quote(strtoupper($table), 'text');
+            $query .= " AND UPPER(tbl.relname) = $table";
+        }
+        $result = $db->queryCol($query);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ listTables()
+
+    /**
+     * list all tables in the current database
+     *
+     * @return mixed array of table names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTables()
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        // gratuitously stolen from PEAR DB _getSpecialQuery in pgsql.php
+        $query = 'SELECT c.relname AS "Name"'
+            . ' FROM pg_class c, pg_user u'
+            . ' WHERE c.relowner = u.usesysid'
+            . " AND c.relkind = 'r'"
+            . ' AND NOT EXISTS'
+            . ' (SELECT 1 FROM pg_views'
+            . '  WHERE viewname = c.relname)'
+            . " AND c.relname !~ '^(pg_|sql_)'"
+            . ' UNION'
+            . ' SELECT c.relname AS "Name"'
+            . ' FROM pg_class c'
+            . " WHERE c.relkind = 'r'"
+            . ' AND NOT EXISTS'
+            . ' (SELECT 1 FROM pg_views'
+            . '  WHERE viewname = c.relname)'
+            . ' AND NOT EXISTS'
+            . ' (SELECT 1 FROM pg_user'
+            . '  WHERE usesysid = c.relowner)'
+            . " AND c.relname !~ '^pg_'";
+        $result = $db->queryCol($query);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ listTableFields()
+
+    /**
+     * list all fields in a table in the current database
+     *
+     * @param string $table name of table that should be used in method
+     * @return mixed array of field names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTableFields($table)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        list($schema, $table) = $this->splitTableSchema($table);
+
+        $table = $db->quoteIdentifier($table, true);
+        if (!empty($schema)) {
+            $table = $db->quoteIdentifier($schema, true) . '.' .$table;
+        }
+        $db->setLimit(1);
+        $result2 = $db->query("SELECT * FROM $table");
+        if (PEAR::isError($result2)) {
+            return $result2;
+        }
+        $result = $result2->getColumnNames();
+        $result2->free();
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        return array_flip($result);
+    }
+
+    // }}}
+    // {{{ listTableIndexes()
+
+    /**
+     * list all indexes in a table
+     *
+     * @param string $table name of table that should be used in method
+     * @return mixed array of index names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTableIndexes($table)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        list($schema, $table) = $this->splitTableSchema($table);
+
+        $table = $db->quote($table, 'text');
+        $subquery = "SELECT indexrelid
+                       FROM pg_index
+                  LEFT JOIN pg_class ON pg_class.oid = pg_index.indrelid
+                  LEFT JOIN pg_namespace ON pg_class.relnamespace = pg_namespace.oid
+                      WHERE pg_class.relname = $table
+                        AND indisunique != 't'
+                        AND indisprimary != 't'";
+        if (!empty($schema)) {
+            $subquery .= ' AND pg_namespace.nspname = '.$db->quote($schema, 'text');
+        }
+        $query = "SELECT relname FROM pg_class WHERE oid IN ($subquery)";
+        $indexes = $db->queryCol($query, 'text');
+        if (PEAR::isError($indexes)) {
+            return $indexes;
+        }
+
+        $result = array();
+        foreach ($indexes as $index) {
+            $index = $this->_fixIndexName($index);
+            if (!empty($index)) {
+                $result[$index] = true;
+            }
+        }
+
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_change_key_case($result, $db->options['field_case']);
+        }
+        return array_keys($result);
+    }
+
+    // }}}
+    // {{{ dropConstraint()
+
+    /**
+     * drop existing constraint
+     *
+     * @param string $table   name of table that should be used in method
+     * @param string $name    name of the constraint to be dropped
+     * @param string $primary hint if the constraint is primary
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function dropConstraint($table, $name, $primary = false)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        // is it an UNIQUE index?
+        $query = 'SELECT relname
+                    FROM pg_class
+                   WHERE oid IN (
+                         SELECT indexrelid
+                           FROM pg_index, pg_class
+                          WHERE pg_class.relname = '.$db->quote($table, 'text').'
+                            AND pg_class.oid = pg_index.indrelid
+                            AND indisunique = \'t\')
+                  EXCEPT
+                  SELECT conname
+                   FROM pg_constraint, pg_class
+                  WHERE pg_constraint.conrelid = pg_class.oid
+                    AND relname = '. $db->quote($table, 'text');
+        $unique = $db->queryCol($query, 'text');
+        if (PEAR::isError($unique) || empty($unique)) {
+            // not an UNIQUE index, maybe a CONSTRAINT
+            return parent::dropConstraint($table, $name, $primary);
+        }
+
+        if (in_array($name, $unique)) {
+            return $db->exec('DROP INDEX '.$db->quoteIdentifier($name, true));
+        }
+        $idxname = $db->getIndexName($name);
+        if (in_array($idxname, $unique)) {
+            return $db->exec('DROP INDEX '.$db->quoteIdentifier($idxname, true));
+        }
+        return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+            $name . ' is not an existing constraint for table ' . $table, __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ listTableConstraints()
+
+    /**
+     * list all constraints in a table
+     *
+     * @param string $table name of table that should be used in method
+     * @return mixed array of constraint names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTableConstraints($table)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        list($schema, $table) = $this->splitTableSchema($table);
+
+        $table = $db->quote($table, 'text');
+        $query = 'SELECT conname
+                    FROM pg_constraint
+               LEFT JOIN pg_class ON pg_constraint.conrelid = pg_class.oid
+               LEFT JOIN pg_namespace ON pg_class.relnamespace = pg_namespace.oid
+                   WHERE relname = ' .$table;
+        if (!empty($schema)) {
+            $query .= ' AND pg_namespace.nspname = ' . $db->quote($schema, 'text');
+        }
+        $query .= '
+                   UNION DISTINCT
+                  SELECT relname
+                    FROM pg_class
+                   WHERE oid IN (
+                         SELECT indexrelid
+                           FROM pg_index
+                      LEFT JOIN pg_class ON pg_class.oid = pg_index.indrelid
+                      LEFT JOIN pg_namespace ON pg_class.relnamespace = pg_namespace.oid
+                          WHERE pg_class.relname = '.$table.'
+                            AND indisunique = \'t\'';
+        if (!empty($schema)) {
+            $query .= ' AND pg_namespace.nspname = ' . $db->quote($schema, 'text');
+        }
+        $query .= ')';
+        $constraints = $db->queryCol($query);
+        if (PEAR::isError($constraints)) {
+            return $constraints;
+        }
+
+        $result = array();
+        foreach ($constraints as $constraint) {
+            $constraint = $this->_fixIndexName($constraint);
+            if (!empty($constraint)) {
+                $result[$constraint] = true;
+            }
+        }
+
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE
+            && $db->options['field_case'] == CASE_LOWER
+        ) {
+            $result = array_change_key_case($result, $db->options['field_case']);
+        }
+        return array_keys($result);
+    }
+
+    // }}}
+    // {{{ createSequence()
+
+    /**
+     * create sequence
+     *
+     * @param string $seq_name name of the sequence to be created
+     * @param string $start start value of the sequence; default is 1
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function createSequence($seq_name, $start = 1)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $sequence_name = $db->quoteIdentifier($db->getSequenceName($seq_name), true);
+        return $db->exec("CREATE SEQUENCE $sequence_name INCREMENT 1".
+            ($start < 1 ? " MINVALUE $start" : '')." START $start");
+    }
+
+    // }}}
+    // {{{ dropSequence()
+
+    /**
+     * drop existing sequence
+     *
+     * @param string $seq_name name of the sequence to be dropped
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function dropSequence($seq_name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $sequence_name = $db->quoteIdentifier($db->getSequenceName($seq_name), true);
+        return $db->exec("DROP SEQUENCE $sequence_name");
+    }
+
+    // }}}
+    // {{{ listSequences()
+
+    /**
+     * list all sequences in the current database
+     *
+     * @return mixed array of sequence names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listSequences()
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = "SELECT relname FROM pg_class WHERE relkind = 'S' AND relnamespace IN";
+        $query.= "(SELECT oid FROM pg_namespace WHERE nspname NOT LIKE 'pg_%' AND nspname != 'information_schema')";
+        $table_names = $db->queryCol($query);
+        if (PEAR::isError($table_names)) {
+            return $table_names;
+        }
+        $result = array();
+        foreach ($table_names as $table_name) {
+            $result[] = $this->_fixSequenceName($table_name);
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Manager/sqlite.php b/program/lib/MDB2/Driver/Manager/sqlite.php
new file mode 100644 (file)
index 0000000..aa01caf
--- /dev/null
@@ -0,0 +1,1362 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2008 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith, Lorenzo Alberton                       |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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.                                          |
+// +----------------------------------------------------------------------+
+// | Authors: Lukas Smith <smith@pooteeweet.org>                          |
+// |          Lorenzo Alberton <l.alberton@quipo.it>                      |
+// +----------------------------------------------------------------------+
+//
+// $Id: sqlite.php 295587 2010-02-28 17:16:38Z quipo $
+//
+
+require_once 'MDB2/Driver/Manager/Common.php';
+
+/**
+ * MDB2 SQLite driver for the management modules
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ * @author  Lorenzo Alberton <l.alberton@quipo.it>
+ */
+class MDB2_Driver_Manager_sqlite extends MDB2_Driver_Manager_Common
+{
+    // {{{ createDatabase()
+
+    /**
+     * create a new database
+     *
+     * @param string $name    name of the database that should be created
+     * @param array  $options array with charset info
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function createDatabase($name, $options = array())
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $database_file = $db->_getDatabaseFile($name);
+        if (file_exists($database_file)) {
+            return $db->raiseError(MDB2_ERROR_ALREADY_EXISTS, null, null,
+                'database already exists', __FUNCTION__);
+        }
+        $php_errormsg = '';
+        $handle = @sqlite_open($database_file, $db->dsn['mode'], $php_errormsg);
+        if (!$handle) {
+            return $db->raiseError(MDB2_ERROR_CANNOT_CREATE, null, null,
+                (isset($php_errormsg) ? $php_errormsg : 'could not create the database file'), __FUNCTION__);
+        }
+        if (!empty($options['charset'])) {
+            $query = 'PRAGMA encoding = ' . $db->quote($options['charset'], 'text');
+            @sqlite_query($query, $handle);
+        }
+        @sqlite_close($handle);
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ dropDatabase()
+
+    /**
+     * drop an existing database
+     *
+     * @param string $name name of the database that should be dropped
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function dropDatabase($name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $database_file = $db->_getDatabaseFile($name);
+        if (!@file_exists($database_file)) {
+            return $db->raiseError(MDB2_ERROR_CANNOT_DROP, null, null,
+                'database does not exist', __FUNCTION__);
+        }
+        $result = @unlink($database_file);
+        if (!$result) {
+            return $db->raiseError(MDB2_ERROR_CANNOT_DROP, null, null,
+                (isset($php_errormsg) ? $php_errormsg : 'could not remove the database file'), __FUNCTION__);
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ _getAdvancedFKOptions()
+
+    /**
+     * Return the FOREIGN KEY query section dealing with non-standard options
+     * as MATCH, INITIALLY DEFERRED, ON UPDATE, ...
+     *
+     * @param array $definition
+     * @return string
+     * @access protected
+     */
+    function _getAdvancedFKOptions($definition)
+    {
+        $query = '';
+        if (!empty($definition['match'])) {
+            $query .= ' MATCH '.$definition['match'];
+        }
+        if (!empty($definition['onupdate']) && (strtoupper($definition['onupdate']) != 'NO ACTION')) {
+            $query .= ' ON UPDATE '.$definition['onupdate'];
+        }
+        if (!empty($definition['ondelete']) && (strtoupper($definition['ondelete']) != 'NO ACTION')) {
+            $query .= ' ON DELETE '.$definition['ondelete'];
+        }
+        if (!empty($definition['deferrable'])) {
+            $query .= ' DEFERRABLE';
+        } else {
+            $query .= ' NOT DEFERRABLE';
+        }
+        if (!empty($definition['initiallydeferred'])) {
+            $query .= ' INITIALLY DEFERRED';
+        } else {
+            $query .= ' INITIALLY IMMEDIATE';
+        }
+        return $query;
+    }
+
+    // }}}
+    // {{{ _getCreateTableQuery()
+
+    /**
+     * Create a basic SQL query for a new table creation
+     * @param string $name   Name of the database that should be created
+     * @param array $fields  Associative array that contains the definition of each field of the new table
+     * @param array $options  An associative array of table options
+     * @return mixed string (the SQL query) on success, a MDB2 error on failure
+     * @see createTable()
+     */
+    function _getCreateTableQuery($name, $fields, $options = array())
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        if (!$name) {
+            return $db->raiseError(MDB2_ERROR_CANNOT_CREATE, null, null,
+                'no valid table name specified', __FUNCTION__);
+        }
+        if (empty($fields)) {
+            return $db->raiseError(MDB2_ERROR_CANNOT_CREATE, null, null,
+                'no fields specified for table "'.$name.'"', __FUNCTION__);
+        }
+        $query_fields = $this->getFieldDeclarationList($fields);
+        if (PEAR::isError($query_fields)) {
+            return $query_fields;
+        }
+        if (!empty($options['primary'])) {
+            $query_fields.= ', PRIMARY KEY ('.implode(', ', array_keys($options['primary'])).')';
+        }
+        if (!empty($options['foreign_keys'])) {
+            foreach ($options['foreign_keys'] as $fkname => $fkdef) {
+                if (empty($fkdef)) {
+                    continue;
+                }
+                $query_fields.= ', CONSTRAINT '.$fkname.' FOREIGN KEY ('.implode(', ', array_keys($fkdef['fields'])).')';
+                $query_fields.= ' REFERENCES '.$fkdef['references']['table'].' ('.implode(', ', array_keys($fkdef['references']['fields'])).')';
+                $query_fields.= $this->_getAdvancedFKOptions($fkdef);
+            }
+        }
+
+        $name = $db->quoteIdentifier($name, true);
+        $result = 'CREATE ';
+        if (!empty($options['temporary'])) {
+            $result .= $this->_getTemporaryTableQuery();
+        }
+        $result .= " TABLE $name ($query_fields)";
+        return $result;
+    }
+
+    // }}}
+    // {{{ createTable()
+
+    /**
+     * create a new table
+     *
+     * @param string $name    Name of the database that should be created
+     * @param array  $fields  Associative array that contains the definition
+     *                        of each field of the new table
+     * @param array  $options An associative array of table options
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function createTable($name, $fields, $options = array())
+    {
+        $result = parent::createTable($name, $fields, $options);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        // create triggers to enforce FOREIGN KEY constraints
+        if (!empty($options['foreign_keys'])) {
+            $db = $this->getDBInstance();
+            if (PEAR::isError($db)) {
+                return $db;
+            }
+            foreach ($options['foreign_keys'] as $fkname => $fkdef) {
+                if (empty($fkdef)) {
+                    continue;
+                }
+                //set actions to default if not set
+                $fkdef['onupdate'] = empty($fkdef['onupdate']) ? $db->options['default_fk_action_onupdate'] : strtoupper($fkdef['onupdate']);
+                $fkdef['ondelete'] = empty($fkdef['ondelete']) ? $db->options['default_fk_action_ondelete'] : strtoupper($fkdef['ondelete']);
+
+                $trigger_names = array(
+                    'insert'    => $fkname.'_insert_trg',
+                    'update'    => $fkname.'_update_trg',
+                    'pk_update' => $fkname.'_pk_update_trg',
+                    'pk_delete' => $fkname.'_pk_delete_trg',
+                );
+                
+                //create the [insert|update] triggers on the FK table
+                $table_fields = array_keys($fkdef['fields']);
+                $referenced_fields = array_keys($fkdef['references']['fields']);
+                $query = 'CREATE TRIGGER %s BEFORE %s ON '.$name
+                        .' FOR EACH ROW BEGIN'
+                        .' SELECT RAISE(ROLLBACK, \'%s on table "'.$name.'" violates FOREIGN KEY constraint "'.$fkname.'"\')'
+                        .' WHERE  (SELECT ';
+                $aliased_fields = array();
+                foreach ($referenced_fields as $field) {
+                    $aliased_fields[] = $fkdef['references']['table'] .'.'.$field .' AS '.$field;
+                }
+                $query .= implode(',', $aliased_fields)
+                       .' FROM '.$fkdef['references']['table']
+                       .' WHERE ';
+                $conditions = array();
+                for ($i=0; $i<count($table_fields); $i++) {
+                    $conditions[] = $referenced_fields[$i] .' = NEW.'.$table_fields[$i];
+                }
+                $query .= implode(' AND ', $conditions).') IS NULL; END;';
+                $result = $db->exec(sprintf($query, $trigger_names['insert'], 'INSERT', 'insert'));
+                if (PEAR::isError($result)) {
+                    return $result;
+                }
+
+                $result = $db->exec(sprintf($query, $trigger_names['update'], 'UPDATE', 'update'));
+                if (PEAR::isError($result)) {
+                    return $result;
+                }
+                
+                //create the ON [UPDATE|DELETE] triggers on the primary table
+                $restrict_action = 'SELECT RAISE(ROLLBACK, \'%s on table "'.$name.'" violates FOREIGN KEY constraint "'.$fkname.'"\')'
+                                  .' WHERE  (SELECT ';
+                $aliased_fields = array();
+                foreach ($table_fields as $field) {
+                    $aliased_fields[] = $name .'.'.$field .' AS '.$field;
+                }
+                $restrict_action .= implode(',', $aliased_fields)
+                       .' FROM '.$name
+                       .' WHERE ';
+                $conditions  = array();
+                $new_values  = array();
+                $null_values = array();
+                for ($i=0; $i<count($table_fields); $i++) {
+                    $conditions[]  = $table_fields[$i] .' = OLD.'.$referenced_fields[$i];
+                    $new_values[]  = $table_fields[$i] .' = NEW.'.$referenced_fields[$i];
+                    $null_values[] = $table_fields[$i] .' = NULL';
+                }
+                $conditions2 = array();
+                for ($i=0; $i<count($referenced_fields); $i++) {
+                    $conditions2[]  = 'NEW.'.$referenced_fields[$i] .' <> OLD.'.$referenced_fields[$i];
+                }
+                $restrict_action .= implode(' AND ', $conditions).') IS NOT NULL'
+                                 .' AND (' .implode(' OR ', $conditions2) .')';
+
+                $cascade_action_update = 'UPDATE '.$name.' SET '.implode(', ', $new_values) .' WHERE '.implode(' AND ', $conditions);
+                $cascade_action_delete = 'DELETE FROM '.$name.' WHERE '.implode(' AND ', $conditions);
+                $setnull_action        = 'UPDATE '.$name.' SET '.implode(', ', $null_values).' WHERE '.implode(' AND ', $conditions);
+
+                if ('SET DEFAULT' == $fkdef['onupdate'] || 'SET DEFAULT' == $fkdef['ondelete']) {
+                    $db->loadModule('Reverse', null, true);
+                    $default_values = array();
+                    foreach ($table_fields as $table_field) {
+                        $field_definition = $db->reverse->getTableFieldDefinition($name, $field);
+                        if (PEAR::isError($field_definition)) {
+                            return $field_definition;
+                        }
+                        $default_values[] = $table_field .' = '. $field_definition[0]['default'];
+                    }
+                    $setdefault_action = 'UPDATE '.$name.' SET '.implode(', ', $default_values).' WHERE '.implode(' AND ', $conditions);
+                }
+
+                $query = 'CREATE TRIGGER %s'
+                        .' %s ON '.$fkdef['references']['table']
+                        .' FOR EACH ROW BEGIN ';
+
+                if ('CASCADE' == $fkdef['onupdate']) {
+                    $sql_update = sprintf($query, $trigger_names['pk_update'], 'AFTER UPDATE',  'update') . $cascade_action_update. '; END;';
+                } elseif ('SET NULL' == $fkdef['onupdate']) {
+                    $sql_update = sprintf($query, $trigger_names['pk_update'], 'BEFORE UPDATE', 'update') . $setnull_action. '; END;';
+                } elseif ('SET DEFAULT' == $fkdef['onupdate']) {
+                    $sql_update = sprintf($query, $trigger_names['pk_update'], 'BEFORE UPDATE', 'update') . $setdefault_action. '; END;';
+                } elseif ('NO ACTION' == $fkdef['onupdate']) {
+                    $sql_update = sprintf($query.$restrict_action, $trigger_names['pk_update'], 'AFTER UPDATE', 'update') . '; END;';
+                } elseif ('RESTRICT' == $fkdef['onupdate']) {
+                    $sql_update = sprintf($query.$restrict_action, $trigger_names['pk_update'], 'BEFORE UPDATE', 'update') . '; END;';
+                }
+                if ('CASCADE' == $fkdef['ondelete']) {
+                    $sql_delete = sprintf($query, $trigger_names['pk_delete'], 'AFTER DELETE',  'delete') . $cascade_action_delete. '; END;';
+                } elseif ('SET NULL' == $fkdef['ondelete']) {
+                    $sql_delete = sprintf($query, $trigger_names['pk_delete'], 'BEFORE DELETE', 'delete') . $setnull_action. '; END;';
+                } elseif ('SET DEFAULT' == $fkdef['ondelete']) {
+                    $sql_delete = sprintf($query, $trigger_names['pk_delete'], 'BEFORE DELETE', 'delete') . $setdefault_action. '; END;';
+                } elseif ('NO ACTION' == $fkdef['ondelete']) {
+                    $sql_delete = sprintf($query.$restrict_action, $trigger_names['pk_delete'], 'AFTER DELETE', 'delete')  . '; END;';
+                } elseif ('RESTRICT' == $fkdef['ondelete']) {
+                    $sql_delete = sprintf($query.$restrict_action, $trigger_names['pk_delete'], 'BEFORE DELETE', 'delete') . '; END;';
+                }
+
+                if (PEAR::isError($result)) {
+                    return $result;
+                }
+                $result = $db->exec($sql_delete);
+                if (PEAR::isError($result)) {
+                    return $result;
+                }
+                $result = $db->exec($sql_update);
+                if (PEAR::isError($result)) {
+                    return $result;
+                }
+            }
+        }
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ dropTable()
+
+    /**
+     * drop an existing table
+     *
+     * @param string $name name of the table that should be dropped
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function dropTable($name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+        
+        //delete the triggers associated to existing FK constraints
+        $constraints = $this->listTableConstraints($name);
+        if (!PEAR::isError($constraints) && !empty($constraints)) {
+            $db->loadModule('Reverse', null, true);
+            foreach ($constraints as $constraint) {
+                $definition = $db->reverse->getTableConstraintDefinition($name, $constraint);
+                if (!PEAR::isError($definition) && !empty($definition['foreign'])) {
+                    $result = $this->_dropFKTriggers($name, $constraint, $definition['references']['table']);
+                    if (PEAR::isError($result)) {
+                        return $result;
+                    }
+                }
+            }
+        }
+
+        $name = $db->quoteIdentifier($name, true);
+        return $db->exec("DROP TABLE $name");
+    }
+
+    // }}}
+    // {{{ vacuum()
+
+    /**
+     * Optimize (vacuum) all the tables in the db (or only the specified table)
+     * and optionally run ANALYZE.
+     *
+     * @param string $table table name (all the tables if empty)
+     * @param array  $options an array with driver-specific options:
+     *               - timeout [int] (in seconds) [mssql-only]
+     *               - analyze [boolean] [pgsql and mysql]
+     *               - full [boolean] [pgsql-only]
+     *               - freeze [boolean] [pgsql-only]
+     *
+     * @return mixed MDB2_OK success, a MDB2 error on failure
+     * @access public
+     */
+    function vacuum($table = null, $options = array())
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = 'VACUUM';
+        if (!empty($table)) {
+            $query .= ' '.$db->quoteIdentifier($table, true);
+        }
+        return $db->exec($query);
+    }
+
+    // }}}
+    // {{{ alterTable()
+
+    /**
+     * alter an existing table
+     *
+     * @param string $name         name of the table that is intended to be changed.
+     * @param array $changes     associative array that contains the details of each type
+     *                             of change that is intended to be performed. The types of
+     *                             changes that are currently supported are defined as follows:
+     *
+     *                             name
+     *
+     *                                New name for the table.
+     *
+     *                            add
+     *
+     *                                Associative array with the names of fields to be added as
+     *                                 indexes of the array. The value of each entry of the array
+     *                                 should be set to another associative array with the properties
+     *                                 of the fields to be added. The properties of the fields should
+     *                                 be the same as defined by the MDB2 parser.
+     *
+     *
+     *                            remove
+     *
+     *                                Associative array with the names of fields to be removed as indexes
+     *                                 of the array. Currently the values assigned to each entry are ignored.
+     *                                 An empty array should be used for future compatibility.
+     *
+     *                            rename
+     *
+     *                                Associative array with the names of fields to be renamed as indexes
+     *                                 of the array. The value of each entry of the array should be set to
+     *                                 another associative array with the entry named name with the new
+     *                                 field name and the entry named Declaration that is expected to contain
+     *                                 the portion of the field declaration already in DBMS specific SQL code
+     *                                 as it is used in the CREATE TABLE statement.
+     *
+     *                            change
+     *
+     *                                Associative array with the names of the fields to be changed as indexes
+     *                                 of the array. Keep in mind that if it is intended to change either the
+     *                                 name of a field and any other properties, the change array entries
+     *                                 should have the new names of the fields as array indexes.
+     *
+     *                                The value of each entry of the array should be set to another associative
+     *                                 array with the properties of the fields to that are meant to be changed as
+     *                                 array entries. These entries should be assigned to the new values of the
+     *                                 respective properties. The properties of the fields should be the same
+     *                                 as defined by the MDB2 parser.
+     *
+     *                            Example
+     *                                array(
+     *                                    'name' => 'userlist',
+     *                                    'add' => array(
+     *                                        'quota' => array(
+     *                                            'type' => 'integer',
+     *                                            'unsigned' => 1
+     *                                        )
+     *                                    ),
+     *                                    'remove' => array(
+     *                                        'file_limit' => array(),
+     *                                        'time_limit' => array()
+     *                                    ),
+     *                                    'change' => array(
+     *                                        'name' => array(
+     *                                            'length' => '20',
+     *                                            'definition' => array(
+     *                                                'type' => 'text',
+     *                                                'length' => 20,
+     *                                            ),
+     *                                        )
+     *                                    ),
+     *                                    'rename' => array(
+     *                                        'sex' => array(
+     *                                            'name' => 'gender',
+     *                                            'definition' => array(
+     *                                                'type' => 'text',
+     *                                                'length' => 1,
+     *                                                'default' => 'M',
+     *                                            ),
+     *                                        )
+     *                                    )
+     *                                )
+     *
+     * @param boolean $check     indicates whether the function should just check if the DBMS driver
+     *                             can perform the requested table alterations if the value is true or
+     *                             actually perform them otherwise.
+     * @access public
+     *
+      * @return mixed MDB2_OK on success, a MDB2 error on failure
+     */
+    function alterTable($name, $changes, $check, $options = array())
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        foreach ($changes as $change_name => $change) {
+            switch ($change_name) {
+            case 'add':
+            case 'remove':
+            case 'change':
+            case 'name':
+            case 'rename':
+                break;
+            default:
+                return $db->raiseError(MDB2_ERROR_CANNOT_ALTER, null, null,
+                    'change type "'.$change_name.'" not yet supported', __FUNCTION__);
+            }
+        }
+
+        if ($check) {
+            return MDB2_OK;
+        }
+
+        $db->loadModule('Reverse', null, true);
+
+        // actually sqlite 2.x supports no ALTER TABLE at all .. so we emulate it
+        $fields = $db->manager->listTableFields($name);
+        if (PEAR::isError($fields)) {
+            return $fields;
+        }
+
+        $fields = array_flip($fields);
+        foreach ($fields as $field => $value) {
+            $definition = $db->reverse->getTableFieldDefinition($name, $field);
+            if (PEAR::isError($definition)) {
+                return $definition;
+            }
+            $fields[$field] = $definition[0];
+        }
+
+        $indexes = $db->manager->listTableIndexes($name);
+        if (PEAR::isError($indexes)) {
+            return $indexes;
+        }
+
+        $indexes = array_flip($indexes);
+        foreach ($indexes as $index => $value) {
+            $definition = $db->reverse->getTableIndexDefinition($name, $index);
+            if (PEAR::isError($definition)) {
+                return $definition;
+            }
+            $indexes[$index] = $definition;
+        }
+
+        $constraints = $db->manager->listTableConstraints($name);
+        if (PEAR::isError($constraints)) {
+            return $constraints;
+        }
+
+        if (!array_key_exists('foreign_keys', $options)) {
+            $options['foreign_keys'] = array();
+        }
+        $constraints = array_flip($constraints);
+        foreach ($constraints as $constraint => $value) {
+            if (!empty($definition['primary'])) {
+                if (!array_key_exists('primary', $options)) {
+                    $options['primary'] = $definition['fields'];
+                    //remove from the $constraint array, it's already handled by createTable()
+                    unset($constraints[$constraint]);
+                }
+            } else {
+                $c_definition = $db->reverse->getTableConstraintDefinition($name, $constraint);
+                if (PEAR::isError($c_definition)) {
+                    return $c_definition;
+                }
+                if (!empty($c_definition['foreign'])) {
+                    if (!array_key_exists($constraint, $options['foreign_keys'])) {
+                        $options['foreign_keys'][$constraint] = $c_definition;
+                    }
+                    //remove from the $constraint array, it's already handled by createTable()
+                    unset($constraints[$constraint]);
+                } else {
+                    $constraints[$constraint] = $c_definition;
+                }
+            }
+        }
+
+        $name_new = $name;
+        $create_order = $select_fields = array_keys($fields);
+        foreach ($changes as $change_name => $change) {
+            switch ($change_name) {
+            case 'add':
+                foreach ($change as $field_name => $field) {
+                    $fields[$field_name] = $field;
+                    $create_order[] = $field_name;
+                }
+                break;
+            case 'remove':
+                foreach ($change as $field_name => $field) {
+                    unset($fields[$field_name]);
+                    $select_fields = array_diff($select_fields, array($field_name));
+                    $create_order = array_diff($create_order, array($field_name));
+                }
+                break;
+            case 'change':
+                foreach ($change as $field_name => $field) {
+                    $fields[$field_name] = $field['definition'];
+                }
+                break;
+            case 'name':
+                $name_new = $change;
+                break;
+            case 'rename':
+                foreach ($change as $field_name => $field) {
+                    unset($fields[$field_name]);
+                    $fields[$field['name']] = $field['definition'];
+                    $create_order[array_search($field_name, $create_order)] = $field['name'];
+                }
+                break;
+            default:
+                return $db->raiseError(MDB2_ERROR_CANNOT_ALTER, null, null,
+                    'change type "'.$change_name.'" not yet supported', __FUNCTION__);
+            }
+        }
+
+        $data = null;
+        if (!empty($select_fields)) {
+            $query = 'SELECT '.implode(', ', $select_fields).' FROM '.$db->quoteIdentifier($name, true);
+            $data = $db->queryAll($query, null, MDB2_FETCHMODE_ORDERED);
+        }
+
+        $result = $this->dropTable($name);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+
+        $result = $this->createTable($name_new, $fields, $options);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+
+        foreach ($indexes as $index => $definition) {
+            $this->createIndex($name_new, $index, $definition);
+        }
+
+        foreach ($constraints as $constraint => $definition) {
+            $this->createConstraint($name_new, $constraint, $definition);
+        }
+
+        if (!empty($select_fields) && !empty($data)) {
+            $query = 'INSERT INTO '.$db->quoteIdentifier($name_new, true);
+            $query.= '('.implode(', ', array_slice(array_keys($fields), 0, count($select_fields))).')';
+            $query.=' VALUES (?'.str_repeat(', ?', (count($select_fields) - 1)).')';
+            $stmt = $db->prepare($query, null, MDB2_PREPARE_MANIP);
+            if (PEAR::isError($stmt)) {
+                return $stmt;
+            }
+            foreach ($data as $row) {
+                $result = $stmt->execute($row);
+                if (PEAR::isError($result)) {
+                    return $result;
+                }
+            }
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ listDatabases()
+
+    /**
+     * list all databases
+     *
+     * @return mixed array of database names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listDatabases()
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'list databases is not supported', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ listUsers()
+
+    /**
+     * list all users
+     *
+     * @return mixed array of user names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listUsers()
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'list databases is not supported', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ listViews()
+
+    /**
+     * list all views in the current database
+     *
+     * @return mixed array of view names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listViews()
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = "SELECT name FROM sqlite_master WHERE type='view' AND sql NOT NULL";
+        $result = $db->queryCol($query);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ listTableViews()
+
+    /**
+     * list the views in the database that reference a given table
+     *
+     * @param string table for which all referenced views should be found
+     * @return mixed array of view names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTableViews($table)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = "SELECT name, sql FROM sqlite_master WHERE type='view' AND sql NOT NULL";
+        $views = $db->queryAll($query, array('text', 'text'), MDB2_FETCHMODE_ASSOC);
+        if (PEAR::isError($views)) {
+            return $views;
+        }
+        $result = array();
+        foreach ($views as $row) {
+            if (preg_match("/^create view .* \bfrom\b\s+\b{$table}\b /i", $row['sql'])) {
+                if (!empty($row['name'])) {
+                    $result[$row['name']] = true;
+                }
+            }
+        }
+
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_change_key_case($result, $db->options['field_case']);
+        }
+        return array_keys($result);
+    }
+
+    // }}}
+    // {{{ listTables()
+
+    /**
+     * list all tables in the current database
+     *
+     * @return mixed array of table names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTables()
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = "SELECT name FROM sqlite_master WHERE type='table' AND sql NOT NULL ORDER BY name";
+        $table_names = $db->queryCol($query);
+        if (PEAR::isError($table_names)) {
+            return $table_names;
+        }
+        $result = array();
+        foreach ($table_names as $table_name) {
+            if (!$this->_fixSequenceName($table_name, true)) {
+                $result[] = $table_name;
+            }
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ listTableFields()
+
+    /**
+     * list all fields in a table in the current database
+     *
+     * @param string $table name of table that should be used in method
+     * @return mixed array of field names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTableFields($table)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $result = $db->loadModule('Reverse', null, true);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        $query = "SELECT sql FROM sqlite_master WHERE type='table' AND ";
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $query.= 'LOWER(name)='.$db->quote(strtolower($table), 'text');
+        } else {
+            $query.= 'name='.$db->quote($table, 'text');
+        }
+        $sql = $db->queryOne($query);
+        if (PEAR::isError($sql)) {
+            return $sql;
+        }
+        $columns = $db->reverse->_getTableColumns($sql);
+        $fields = array();
+        foreach ($columns as $column) {
+            if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+                if ($db->options['field_case'] == CASE_LOWER) {
+                    $column['name'] = strtolower($column['name']);
+                } else {
+                    $column['name'] = strtoupper($column['name']);
+                }
+            } else {
+                $column = array_change_key_case($column, $db->options['field_case']);
+            }
+            $fields[] = $column['name'];
+        }
+        return $fields;
+    }
+
+    // }}}
+    // {{{ listTableTriggers()
+
+    /**
+     * list all triggers in the database that reference a given table
+     *
+     * @param string table for which all referenced triggers should be found
+     * @return mixed array of trigger names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTableTriggers($table = null)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = "SELECT name FROM sqlite_master WHERE type='trigger' AND sql NOT NULL";
+        if (null !== $table) {
+            if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+                $query.= ' AND LOWER(tbl_name)='.$db->quote(strtolower($table), 'text');
+            } else {
+                $query.= ' AND tbl_name='.$db->quote($table, 'text');
+            }
+        }
+        $result = $db->queryCol($query);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ createIndex()
+
+    /**
+     * Get the stucture of a field into an array
+     *
+     * @param string    $table         name of the table on which the index is to be created
+     * @param string    $name         name of the index to be created
+     * @param array     $definition        associative array that defines properties of the index to be created.
+     *                                 Currently, only one property named FIELDS is supported. This property
+     *                                 is also an associative with the names of the index fields as array
+     *                                 indexes. Each entry of this array is set to another type of associative
+     *                                 array that specifies properties of the index that are specific to
+     *                                 each field.
+     *
+     *                                Currently, only the sorting property is supported. It should be used
+     *                                 to define the sorting direction of the index. It may be set to either
+     *                                 ascending or descending.
+     *
+     *                                Not all DBMS support index sorting direction configuration. The DBMS
+     *                                 drivers of those that do not support it ignore this property. Use the
+     *                                 function support() to determine whether the DBMS driver can manage indexes.
+
+     *                                 Example
+     *                                    array(
+     *                                        'fields' => array(
+     *                                            'user_name' => array(
+     *                                                'sorting' => 'ascending'
+     *                                            ),
+     *                                            'last_login' => array()
+     *                                        )
+     *                                    )
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function createIndex($table, $name, $definition)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $table = $db->quoteIdentifier($table, true);
+        $name  = $db->getIndexName($name);
+        $query = "CREATE INDEX $name ON $table";
+        $fields = array();
+        foreach ($definition['fields'] as $field_name => $field) {
+            $field_string = $field_name;
+            if (!empty($field['sorting'])) {
+                switch ($field['sorting']) {
+                case 'ascending':
+                    $field_string.= ' ASC';
+                    break;
+                case 'descending':
+                    $field_string.= ' DESC';
+                    break;
+                }
+            }
+            $fields[] = $field_string;
+        }
+        $query .= ' ('.implode(', ', $fields) . ')';
+        return $db->exec($query);
+    }
+
+    // }}}
+    // {{{ dropIndex()
+
+    /**
+     * drop existing index
+     *
+     * @param string    $table         name of table that should be used in method
+     * @param string    $name         name of the index to be dropped
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function dropIndex($table, $name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $name = $db->getIndexName($name);
+        return $db->exec("DROP INDEX $name");
+    }
+
+    // }}}
+    // {{{ listTableIndexes()
+
+    /**
+     * list all indexes in a table
+     *
+     * @param string $table name of table that should be used in method
+     * @return mixed array of index names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTableIndexes($table)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $table = $db->quote($table, 'text');
+        $query = "SELECT sql FROM sqlite_master WHERE type='index' AND ";
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $query.= 'LOWER(tbl_name)='.strtolower($table);
+        } else {
+            $query.= "tbl_name=$table";
+        }
+        $query.= " AND sql NOT NULL ORDER BY name";
+        $indexes = $db->queryCol($query, 'text');
+        if (PEAR::isError($indexes)) {
+            return $indexes;
+        }
+
+        $result = array();
+        foreach ($indexes as $sql) {
+            if (preg_match("/^create index ([^ ]+) on /i", $sql, $tmp)) {
+                $index = $this->_fixIndexName($tmp[1]);
+                if (!empty($index)) {
+                    $result[$index] = true;
+                }
+            }
+        }
+
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_change_key_case($result, $db->options['field_case']);
+        }
+        return array_keys($result);
+    }
+
+    // }}}
+    // {{{ createConstraint()
+
+    /**
+     * create a constraint on a table
+     *
+     * @param string $table      name of the table on which the constraint is to be created
+     * @param string $name       name of the constraint to be created
+     * @param array  $definition associative array that defines properties of the constraint to be created.
+     *                           Currently, only one property named FIELDS is supported. This property
+     *                           is also an associative with the names of the constraint fields as array
+     *                           constraints. Each entry of this array is set to another type of associative
+     *                           array that specifies properties of the constraint that are specific to
+     *                           each field.
+     *
+     *                           Example
+     *                              array(
+     *                                  'fields' => array(
+     *                                      'user_name' => array(),
+     *                                      'last_login' => array()
+     *                                  )
+     *                              )
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function createConstraint($table, $name, $definition)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        if (!empty($definition['primary'])) {
+            return $db->manager->alterTable($table, array(), false, array('primary' => $definition['fields']));
+        }
+        
+        if (!empty($definition['foreign'])) {
+            return $db->manager->alterTable($table, array(), false, array('foreign_keys' => array($name => $definition)));
+        }
+
+        $table = $db->quoteIdentifier($table, true);
+        $name  = $db->getIndexName($name);
+        $query = "CREATE UNIQUE INDEX $name ON $table";
+        $fields = array();
+        foreach ($definition['fields'] as $field_name => $field) {
+            $field_string = $field_name;
+            if (!empty($field['sorting'])) {
+                switch ($field['sorting']) {
+                case 'ascending':
+                    $field_string.= ' ASC';
+                    break;
+                case 'descending':
+                    $field_string.= ' DESC';
+                    break;
+                }
+            }
+            $fields[] = $field_string;
+        }
+        $query .= ' ('.implode(', ', $fields) . ')';
+        return $db->exec($query);
+    }
+
+    // }}}
+    // {{{ dropConstraint()
+
+    /**
+     * drop existing constraint
+     *
+     * @param string    $table        name of table that should be used in method
+     * @param string    $name         name of the constraint to be dropped
+     * @param string    $primary      hint if the constraint is primary
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function dropConstraint($table, $name, $primary = false)
+    {
+        if ($primary || $name == 'PRIMARY') {
+            return $this->alterTable($table, array(), false, array('primary' => null));
+        }
+
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        //is it a FK constraint? If so, also delete the associated triggers
+        $db->loadModule('Reverse', null, true);
+        $definition = $db->reverse->getTableConstraintDefinition($table, $name);
+        if (!PEAR::isError($definition) && !empty($definition['foreign'])) {
+            //first drop the FK enforcing triggers
+            $result = $this->_dropFKTriggers($table, $name, $definition['references']['table']);
+            if (PEAR::isError($result)) {
+                return $result;
+            }
+            //then drop the constraint itself
+            return $this->alterTable($table, array(), false, array('foreign_keys' => array($name => null)));
+        }
+
+        $name = $db->getIndexName($name);
+        return $db->exec("DROP INDEX $name");
+    }
+
+    // }}}
+    // {{{ _dropFKTriggers()
+    
+    /**
+     * Drop the triggers created to enforce the FOREIGN KEY constraint on the table
+     *
+     * @param string $table  table name
+     * @param string $fkname FOREIGN KEY constraint name
+     * @param string $referenced_table  referenced table name
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access private
+     */
+    function _dropFKTriggers($table, $fkname, $referenced_table)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $triggers  = $this->listTableTriggers($table);
+        $triggers2 = $this->listTableTriggers($referenced_table);
+        if (!PEAR::isError($triggers2) && !PEAR::isError($triggers)) {
+            $triggers = array_merge($triggers, $triggers2);
+            $pattern = '/^'.$fkname.'(_pk)?_(insert|update|delete)_trg$/i';
+            foreach ($triggers as $trigger) {
+                if (preg_match($pattern, $trigger)) {
+                    $result = $db->exec('DROP TRIGGER '.$trigger);
+                    if (PEAR::isError($result)) {
+                        return $result;
+                    }
+                }
+            }
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ listTableConstraints()
+
+    /**
+     * list all constraints in a table
+     *
+     * @param string $table name of table that should be used in method
+     * @return mixed array of constraint names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTableConstraints($table)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $table = $db->quote($table, 'text');
+        $query = "SELECT sql FROM sqlite_master WHERE type='index' AND ";
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $query.= 'LOWER(tbl_name)='.strtolower($table);
+        } else {
+            $query.= "tbl_name=$table";
+        }
+        $query.= " AND sql NOT NULL ORDER BY name";
+        $indexes = $db->queryCol($query, 'text');
+        if (PEAR::isError($indexes)) {
+            return $indexes;
+        }
+
+        $result = array();
+        foreach ($indexes as $sql) {
+            if (preg_match("/^create unique index ([^ ]+) on /i", $sql, $tmp)) {
+                $index = $this->_fixIndexName($tmp[1]);
+                if (!empty($index)) {
+                    $result[$index] = true;
+                }
+            }
+        }
+        
+        // also search in table definition for PRIMARY KEYs...
+        $query = "SELECT sql FROM sqlite_master WHERE type='table' AND ";
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $query.= 'LOWER(name)='.strtolower($table);
+        } else {
+            $query.= "name=$table";
+        }
+        $query.= " AND sql NOT NULL ORDER BY name";
+        $table_def = $db->queryOne($query, 'text');
+        if (PEAR::isError($table_def)) {
+            return $table_def;
+        }
+        if (preg_match("/\bPRIMARY\s+KEY\b/i", $table_def, $tmp)) {
+            $result['primary'] = true;
+        }
+
+        // ...and for FOREIGN KEYs
+        if (preg_match_all("/\bCONSTRAINT\b\s+([^\s]+)\s+\bFOREIGN\s+KEY/imsx", $table_def, $tmp)) {
+            foreach ($tmp[1] as $fk) {
+                $result[$fk] = true;
+            }
+        }
+
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_change_key_case($result, $db->options['field_case']);
+        }
+        return array_keys($result);
+    }
+
+    // }}}
+    // {{{ createSequence()
+
+    /**
+     * create sequence
+     *
+     * @param string    $seq_name     name of the sequence to be created
+     * @param string    $start         start value of the sequence; default is 1
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function createSequence($seq_name, $start = 1)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $sequence_name = $db->quoteIdentifier($db->getSequenceName($seq_name), true);
+        $seqcol_name = $db->quoteIdentifier($db->options['seqcol_name'], true);
+        $query = "CREATE TABLE $sequence_name ($seqcol_name INTEGER PRIMARY KEY DEFAULT 0 NOT NULL)";
+        $res = $db->exec($query);
+        if (PEAR::isError($res)) {
+            return $res;
+        }
+        if ($start == 1) {
+            return MDB2_OK;
+        }
+        $res = $db->exec("INSERT INTO $sequence_name ($seqcol_name) VALUES (".($start-1).')');
+        if (!PEAR::isError($res)) {
+            return MDB2_OK;
+        }
+        // Handle error
+        $result = $db->exec("DROP TABLE $sequence_name");
+        if (PEAR::isError($result)) {
+            return $db->raiseError($result, null, null,
+                'could not drop inconsistent sequence table', __FUNCTION__);
+        }
+        return $db->raiseError($res, null, null,
+            'could not create sequence table', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ dropSequence()
+
+    /**
+     * drop existing sequence
+     *
+     * @param string    $seq_name     name of the sequence to be dropped
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function dropSequence($seq_name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $sequence_name = $db->quoteIdentifier($db->getSequenceName($seq_name), true);
+        return $db->exec("DROP TABLE $sequence_name");
+    }
+
+    // }}}
+    // {{{ listSequences()
+
+    /**
+     * list all sequences in the current database
+     *
+     * @return mixed array of sequence names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listSequences()
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = "SELECT name FROM sqlite_master WHERE type='table' AND sql NOT NULL ORDER BY name";
+        $table_names = $db->queryCol($query);
+        if (PEAR::isError($table_names)) {
+            return $table_names;
+        }
+        $result = array();
+        foreach ($table_names as $table_name) {
+            if ($sqn = $this->_fixSequenceName($table_name, true)) {
+                $result[] = $sqn;
+            }
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Manager/sqlsrv.php b/program/lib/MDB2/Driver/Manager/sqlsrv.php
new file mode 100644 (file)
index 0000000..256e000
--- /dev/null
@@ -0,0 +1,1383 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2008 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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.                                          |
+// +----------------------------------------------------------------------+
+// | Authors: Frank M. Kromann <frank@kromann.info>                       |
+// |          David Coallier <davidc@php.net>                             |
+// |          Lorenzo Alberton <l.alberton@quipo.it>                      |
+// +----------------------------------------------------------------------+
+
+require_once 'MDB2/Driver/Manager/Common.php';
+
+// {{{ class MDB2_Driver_Manager_sqlsrv
+
+/**
+ * MDB2 MSSQL driver for the management modules
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Frank M. Kromann <frank@kromann.info>
+ * @author  David Coallier <davidc@php.net>
+ * @author  Lorenzo Alberton <l.alberton@quipo.it>
+ */
+class MDB2_Driver_Manager_sqlsrv extends MDB2_Driver_Manager_Common
+{
+    // {{{ createDatabase()
+    /**
+     * create a new database
+     *
+     * @param string $name    name of the database that should be created
+     * @param array  $options array with collation info
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function createDatabase($name, $options = array())
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $name = $db->quoteIdentifier($name, true);
+        $query = "CREATE DATABASE $name";
+        if ($db->options['database_device']) {
+            $query.= ' ON '.$db->options['database_device'];
+            $query.= $db->options['database_size'] ? '=' .
+                     $db->options['database_size'] : '';
+        }
+        if (!empty($options['collation'])) {
+            $query .= ' COLLATE ' . $options['collation'];
+        }
+        return $db->standaloneQuery($query, null, true);
+    }
+
+    // }}}
+    // {{{ alterDatabase()
+
+    /**
+     * alter an existing database
+     *
+     * @param string $name    name of the database that is intended to be changed
+     * @param array  $options array with name, collation info
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function alterDatabase($name, $options = array())
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = '';
+        if (!empty($options['name'])) {
+            $query .= ' MODIFY NAME = ' .$db->quoteIdentifier($options['name'], true);
+        }
+        if (!empty($options['collation'])) {
+            $query .= ' COLLATE ' . $options['collation'];
+        }
+        if (!empty($query)) {
+            $query = 'ALTER DATABASE '. $db->quoteIdentifier($name, true) . $query;
+            return $db->standaloneQuery($query, null, true);
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ dropDatabase()
+
+    /**
+     * drop an existing database
+     *
+     * @param string $name name of the database that should be dropped
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function dropDatabase($name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $name = $db->quoteIdentifier($name, true);
+        return $db->standaloneQuery("DROP DATABASE $name", null, true);
+    }
+
+    // }}}
+    // {{{ dropTable()
+
+    /**
+     * drop an existing table
+     *
+     * @param string $name name of the table that should be dropped
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function dropTable($name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+        $name = $db->quoteIdentifier($name, true);
+        return $db->exec("IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='$name') DROP TABLE $name");
+    }
+
+    // }}}     
+    // {{{ _getTemporaryTableQuery()
+
+    /**
+     * Override the parent method.
+     *
+     * @return string The string required to be placed between "CREATE" and "TABLE"
+     *                to generate a temporary table, if possible.
+     */
+    function _getTemporaryTableQuery()
+    {
+        return '';
+    }
+
+    // }}}
+    // {{{ _getAdvancedFKOptions()
+
+    /**
+     * Return the FOREIGN KEY query section dealing with non-standard options
+     * as MATCH, INITIALLY DEFERRED, ON UPDATE, ...
+     *
+     * @param array $definition
+     *
+     * @return string
+     * @access protected
+     */
+    function _getAdvancedFKOptions($definition)
+    {
+        $query = '';
+        if (!empty($definition['onupdate'])) {
+            $query .= ' ON UPDATE '.$definition['onupdate'];
+        }
+        if (!empty($definition['ondelete'])) {
+            $query .= ' ON DELETE '.$definition['ondelete'];
+        }
+        return $query;
+    }
+
+    // }}}
+    // {{{ createTable()
+
+    /**
+     * create a new table
+     *
+     * @param string $name   Name of the database that should be created
+     * @param array  $fields Associative array that contains the definition of each field of the new table
+     *                       The indexes of the array entries are the names of the fields of the table an
+     *                       the array entry values are associative arrays like those that are meant to be
+     *                       passed with the field definitions to get[Type]Declaration() functions.
+     *
+     *                      Example
+     *                        array(
+     *
+     *                            'id' => array(
+     *                                'type' => 'integer',
+     *                                'unsigned' => 1,
+     *                                'notnull' => 1,
+     *                                'default' => 0,
+     *                            ),
+     *                            'name' => array(
+     *                                'type' => 'text',
+     *                                'length' => 12,
+     *                            ),
+     *                            'description' => array(
+     *                                'type' => 'text',
+     *                                'length' => 12,
+     *                            )
+     *                        );
+     * @param array $options An associative array of table options:
+     *                          array(
+     *                              'comment' => 'Foo',
+     *                              'temporary' => true|false,
+     *                          );
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function createTable($name, $fields, $options = array())
+    {
+        /*if (!empty($options['temporary'])) {
+            $name = '#'.$name;//would make subsequent calls fail because it would go out ot scope and be destroyed already
+        }*/
+        return parent::createTable($name, $fields, $options);
+    }
+
+    // }}}
+    // {{{ truncateTable()
+
+    /**
+     * Truncate an existing table (if the TRUNCATE TABLE syntax is not supported,
+     * it falls back to a DELETE FROM TABLE query)
+     *
+     * @param string $name name of the table that should be truncated
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function truncateTable($name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $name = $db->quoteIdentifier($name, true);
+        return $db->exec("TRUNCATE TABLE $name");
+    }
+
+    // }}}
+    // {{{ vacuum()
+
+    /**
+     * Optimize (vacuum) all the tables in the db (or only the specified table)
+     * and optionally run ANALYZE.
+     *
+     * @param string $table table name (all the tables if empty)
+     * @param array  $options an array with driver-specific options:
+     *               - timeout [int] (in seconds) [mssql-only]
+     *               - analyze [boolean] [pgsql and mysql]
+     *               - full [boolean] [pgsql-only]
+     *               - freeze [boolean] [pgsql-only]
+     *
+     * NB: you have to run the NSControl Create utility to enable VACUUM
+     *
+     * @return mixed MDB2_OK success, a MDB2 error on failure
+     * @access public
+     */
+    function vacuum($table = null, $options = array())
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+        $timeout = isset($options['timeout']) ? (int)$options['timeout'] : 300;
+
+        $query = 'NSControl Create';
+        $result = $db->exec($query);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+
+        return $db->exec('EXEC NSVacuum '.$timeout);
+    }
+
+    // }}}
+    // {{{ alterTable()
+
+    /**
+     * alter an existing table
+     *
+     * @param string  $name    name of the table that is intended to be changed.
+     * @param array   $changes associative array that contains the details of each type
+     *                         of change that is intended to be performed. The types of
+     *                         changes that are currently supported are defined as follows:
+     *
+     *                             name
+     *
+     *                                New name for the table.
+     *
+     *                            add
+     *
+     *                                Associative array with the names of fields to be added as
+     *                                 indexes of the array. The value of each entry of the array
+     *                                 should be set to another associative array with the properties
+     *                                 of the fields to be added. The properties of the fields should
+     *                                 be the same as defined by the MDB2 parser.
+     *
+     *
+     *                            remove
+     *
+     *                                Associative array with the names of fields to be removed as indexes
+     *                                 of the array. Currently the values assigned to each entry are ignored.
+     *                                 An empty array should be used for future compatibility.
+     *
+     *                            rename
+     *
+     *                                Associative array with the names of fields to be renamed as indexes
+     *                                 of the array. The value of each entry of the array should be set to
+     *                                 another associative array with the entry named name with the new
+     *                                 field name and the entry named Declaration that is expected to contain
+     *                                 the portion of the field declaration already in DBMS specific SQL code
+     *                                 as it is used in the CREATE TABLE statement.
+     *
+     *                            change
+     *
+     *                                Associative array with the names of the fields to be changed as indexes
+     *                                 of the array. Keep in mind that if it is intended to change either the
+     *                                 name of a field and any other properties, the change array entries
+     *                                 should have the new names of the fields as array indexes.
+     *
+     *                                The value of each entry of the array should be set to another associative
+     *                                 array with the properties of the fields to that are meant to be changed as
+     *                                 array entries. These entries should be assigned to the new values of the
+     *                                 respective properties. The properties of the fields should be the same
+     *                                 as defined by the MDB2 parser.
+     *
+     *                            Example
+     *                                array(
+     *                                    'name' => 'userlist',
+     *                                    'add' => array(
+     *                                        'quota' => array(
+     *                                            'type' => 'integer',
+     *                                            'unsigned' => 1
+     *                                        )
+     *                                    ),
+     *                                    'remove' => array(
+     *                                        'file_limit' => array(),
+     *                                        'time_limit' => array()
+     *                                    ),
+     *                                    'change' => array(
+     *                                        'name' => array(
+     *                                            'length' => '20',
+     *                                            'definition' => array(
+     *                                                'type' => 'text',
+     *                                                'length' => 20,
+     *                                            ),
+     *                                        )
+     *                                    ),
+     *                                    'rename' => array(
+     *                                        'sex' => array(
+     *                                            'name' => 'gender',
+     *                                            'definition' => array(
+     *                                                'type' => 'text',
+     *                                                'length' => 1,
+     *                                                'default' => 'M',
+     *                                            ),
+     *                                        )
+     *                                    )
+     *                                )
+     *
+     * @param boolean $check   indicates whether the function should just check if the DBMS driver
+     *                         can perform the requested table alterations if the value is true or
+     *                         actually perform them otherwise.
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function alterTable($name, $changes, $check)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+        $name_quoted = $db->quoteIdentifier($name, true);
+
+        foreach ($changes as $change_name => $change) {
+            switch ($change_name) {
+            case 'remove':
+            case 'rename':
+            case 'add':
+            case 'change':
+            case 'name':
+                break;
+            default:
+                return $db->raiseError(MDB2_ERROR_CANNOT_ALTER, null, null,
+                    'change type "'.$change_name.'" not yet supported', __FUNCTION__);
+            }
+        }
+
+        if ($check) {
+            return MDB2_OK;
+        }
+
+        $idxname_format = $db->getOption('idxname_format');
+        $db->setOption('idxname_format', '%s');
+
+        if (!empty($changes['remove']) && is_array($changes['remove'])) {
+            $result = $this->_dropConflictingIndices($name, array_keys($changes['remove']));
+            if (PEAR::isError($result)) {
+                $db->setOption('idxname_format', $idxname_format);
+                return $result;
+            }
+            $result = $this->_dropConflictingConstraints($name, array_keys($changes['remove']));
+            if (PEAR::isError($result)) {
+                $db->setOption('idxname_format', $idxname_format);
+                return $result;
+            }
+
+            $query = '';
+            foreach ($changes['remove'] as $field_name => $field) {
+                if ($query) {
+                    $query.= ', ';
+                }
+                $field_name = $db->quoteIdentifier($field_name, true);
+                $query.= 'COLUMN ' . $field_name;
+            }
+
+            $result = $db->exec("ALTER TABLE $name_quoted DROP $query");
+            if (PEAR::isError($result)) {
+                $db->setOption('idxname_format', $idxname_format);
+                return $result;
+            }
+        }
+
+        if (!empty($changes['rename']) && is_array($changes['rename'])) {
+            foreach ($changes['rename'] as $field_name => $field) {
+                $field_name = $db->quoteIdentifier($field_name, true);
+                $result = $db->exec("sp_rename '$name_quoted.$field_name', '".$field['name']."', 'COLUMN'");
+                if (PEAR::isError($result)) {
+                    $db->setOption('idxname_format', $idxname_format);
+                    return $result;
+                }
+            }
+        }
+
+        if (!empty($changes['add']) && is_array($changes['add'])) {
+            $query = '';
+            foreach ($changes['add'] as $field_name => $field) {
+                if ($query) {
+                    $query.= ', ';
+                } else {
+                    $query.= 'ADD ';
+                }
+                $query.= $db->getDeclaration($field['type'], $field_name, $field);
+            }
+
+            $result = $db->exec("ALTER TABLE $name_quoted $query");
+            if (PEAR::isError($result)) {
+                $db->setOption('idxname_format', $idxname_format);
+                return $result;
+            }
+        }
+
+        $dropped_indices     = array();
+        $dropped_constraints = array();
+
+        if (!empty($changes['change']) && is_array($changes['change'])) {
+            $dropped = $this->_dropConflictingIndices($name, array_keys($changes['change']));
+            if (PEAR::isError($dropped)) {
+                $db->setOption('idxname_format', $idxname_format);
+                return $dropped;
+            }
+            $dropped_indices = array_merge($dropped_indices, $dropped);
+            $dropped = $this->_dropConflictingConstraints($name, array_keys($changes['change']));
+            if (PEAR::isError($dropped)) {
+                $db->setOption('idxname_format', $idxname_format);
+                return $dropped;
+            }
+            $dropped_constraints = array_merge($dropped_constraints, $dropped);
+
+            foreach ($changes['change'] as $field_name => $field) {
+                //MSSQL doesn't allow multiple ALTER COLUMNs in one query
+                $query = 'ALTER COLUMN ';
+
+                //MSSQL doesn't allow changing the DEFAULT value of a field in altering mode
+                if (array_key_exists('default', $field['definition'])) {
+                    unset($field['definition']['default']);
+                }
+
+                $query .= $db->getDeclaration($field['definition']['type'], $field_name, $field['definition']);
+                $result = $db->exec("ALTER TABLE $name_quoted $query");
+                if (PEAR::isError($result)) {
+                    $db->setOption('idxname_format', $idxname_format);
+                    return $result;
+                }
+            }
+        }
+
+        // restore the dropped conflicting indices and constraints
+        foreach ($dropped_indices as $index_name => $index) {
+            $result = $this->createIndex($name, $index_name, $index);
+            if (PEAR::isError($result)) {
+                $db->setOption('idxname_format', $idxname_format);
+                return $result;
+            }
+        }
+        foreach ($dropped_constraints as $constraint_name => $constraint) {
+            $result = $this->createConstraint($name, $constraint_name, $constraint);
+            if (PEAR::isError($result)) {
+                $db->setOption('idxname_format', $idxname_format);
+                return $result;
+            }
+        }
+
+        $db->setOption('idxname_format', $idxname_format);
+
+        if (!empty($changes['name'])) {
+            $new_name = $db->quoteIdentifier($changes['name'], true);
+            $result = $db->exec("sp_rename '$name_quoted', '$new_name'");
+            if (PEAR::isError($result)) {
+                return $result;
+            }
+        }
+
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ _dropConflictingIndices()
+
+    /**
+     * Drop the indices that prevent a successful ALTER TABLE action
+     *
+     * @param string $table  table name
+     * @param array  $fields array of names of the fields affected by the change
+     *
+     * @return array dropped indices definitions
+     */
+    function _dropConflictingIndices($table, $fields)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $dropped = array();
+        $index_names = $this->listTableIndexes($table);
+        if (PEAR::isError($index_names)) {
+            return $index_names;
+        }
+        $db->loadModule('Reverse');
+        $indexes = array();
+        foreach ($index_names as $index_name) {
+               $idx_def = $db->reverse->getTableIndexDefinition($table, $index_name);
+            if (!PEAR::isError($idx_def)) {
+                $indexes[$index_name] = $idx_def;
+            }
+        }
+        foreach ($fields as $field_name) {
+            foreach ($indexes as $index_name => $index) {
+                if (!isset($dropped[$index_name]) && array_key_exists($field_name, $index['fields'])) {
+                    $dropped[$index_name] = $index;
+                    $result = $this->dropIndex($table, $index_name);
+                    if (PEAR::isError($result)) {
+                        return $result;
+                    }
+                }
+            }
+        }
+
+        return $dropped;
+    }
+
+    // }}}
+    // {{{ _dropConflictingConstraints()
+
+    /**
+     * Drop the constraints that prevent a successful ALTER TABLE action
+     *
+     * @param string $table  table name
+     * @param array  $fields array of names of the fields affected by the change
+     *
+     * @return array dropped constraints definitions
+     */
+    function _dropConflictingConstraints($table, $fields)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $dropped = array();
+        $constraint_names = $this->listTableConstraints($table);
+        if (PEAR::isError($constraint_names)) {
+            return $constraint_names;
+        }
+        $db->loadModule('Reverse');
+        $constraints = array();
+        foreach ($constraint_names as $constraint_name) {
+               $cons_def = $db->reverse->getTableConstraintDefinition($table, $constraint_name);
+            if (!PEAR::isError($cons_def)) {
+                $constraints[$constraint_name] = $cons_def;
+            }
+        }
+        foreach ($fields as $field_name) {
+            foreach ($constraints as $constraint_name => $constraint) {
+                if (!isset($dropped[$constraint_name]) && array_key_exists($field_name, $constraint['fields'])) {
+                    $dropped[$constraint_name] = $constraint;
+                    $result = $this->dropConstraint($table, $constraint_name);
+                    if (PEAR::isError($result)) {
+                        return $result;
+                    }
+                }
+            }
+            // also drop implicit DEFAULT constraints
+            $default = $this->_getTableFieldDefaultConstraint($table, $field_name);
+            if (!PEAR::isError($default) && !empty($default)) {
+                $result = $this->dropConstraint($table, $default);
+                if (PEAR::isError($result)) {
+                    return $result;
+                }
+            }
+        }
+
+        return $dropped;
+    }
+
+    // }}}
+    // {{{ _getTableFieldDefaultConstraint()
+
+    /**
+     * Get the default constraint for a table field
+     *
+     * @param string $table name of table that should be used in method
+     * @param string $field name of field that should be used in method
+     *
+     * @return mixed name of default constraint on success, a MDB2 error on failure
+     * @access private
+     */
+    function _getTableFieldDefaultConstraint($table, $field)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $table = $db->quoteIdentifier($table, true);
+        $field = $db->quote($field, 'text');
+        $query = "SELECT OBJECT_NAME(syscolumns.cdefault)
+                    FROM syscolumns
+                   WHERE syscolumns.id = object_id('$table')
+                     AND syscolumns.name = $field
+                     AND syscolumns.cdefault <> 0";
+        return $db->queryOne($query);
+    }
+
+    // }}}
+    // {{{ listTables()
+
+    /**
+     * list all tables in the current database
+     *
+     * @return mixed array of table names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTables()
+    {
+        $db = $this->getDBInstance();
+
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = 'EXEC sp_tables @table_type = "\'TABLE\'"';
+        $table_names = $db->queryCol($query, null, 2);
+        if (PEAR::isError($table_names)) {
+            return $table_names;
+        }
+        $result = array();
+        foreach ($table_names as $table_name) {
+            if (!$this->_fixSequenceName($table_name, true)) {
+                $result[] = $table_name;
+            }
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ?
+                        'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ listTableFields()
+
+    /**
+     * list all fields in a table in the current database
+     *
+     * @param string $table name of table that should be used in method
+     *
+     * @return mixed array of field names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTableFields($table)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $table = $db->quoteIdentifier($table, true);
+        $columns = $db->queryCol("SELECT c.name
+                                    FROM syscolumns c
+                               LEFT JOIN sysobjects o ON c.id = o.id
+                                   WHERE o.name = '$table'");
+        if (PEAR::isError($columns)) {
+            return $columns;
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $columns = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $columns);
+        }
+        return $columns;
+    }
+
+    // }}}
+    // {{{ listTableIndexes()
+
+    /**
+     * list all indexes in a table
+     *
+     * @param string $table name of table that should be used in method
+     *
+     * @return mixed array of index names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTableIndexes($table)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $key_name = 'INDEX_NAME';
+        $pk_name = 'PK_NAME';
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            if ($db->options['field_case'] == CASE_LOWER) {
+                $key_name = strtolower($key_name);
+                $pk_name  = strtolower($pk_name);
+            } else {
+                $key_name = strtoupper($key_name);
+                $pk_name  = strtoupper($pk_name);
+            }
+        }
+        $table = $db->quote($table, 'text');
+        $query = "EXEC sp_statistics @table_name=$table";
+        $indexes = $db->queryCol($query, 'text', $key_name);
+        if (PEAR::isError($indexes)) {
+            return $indexes;
+        }
+        $query = "EXEC sp_pkeys @table_name=$table";
+        $pk_all = $db->queryCol($query, 'text', $pk_name);
+        $result = array();
+        foreach ($indexes as $index) {
+            if (!in_array($index, $pk_all) && ($index = $this->_fixIndexName($index))) {
+                $result[$index] = true;
+            }
+        }
+
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_change_key_case($result, $db->options['field_case']);
+        }
+        return array_keys($result);
+    }
+
+    // }}}
+    // {{{ listDatabases()
+
+    /**
+     * list all databases
+     *
+     * @return mixed array of database names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listDatabases()
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $result = $db->queryCol('SELECT name FROM sys.databases');
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ listUsers()
+
+    /**
+     * list all users
+     *
+     * @return mixed array of user names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listUsers()
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $result = $db->queryCol('SELECT DISTINCT loginame FROM master..sysprocesses');
+        if (PEAR::isError($result) || empty($result)) {
+            return $result;
+        }
+        foreach (array_keys($result) as $k) {
+            $result[$k] = trim($result[$k]);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ listFunctions()
+
+    /**
+     * list all functions in the current database
+     *
+     * @return mixed array of function names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listFunctions()
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = "SELECT name
+                    FROM sysobjects
+                   WHERE objectproperty(id, N'IsMSShipped') = 0
+                    AND (objectproperty(id, N'IsTableFunction') = 1
+                     OR objectproperty(id, N'IsScalarFunction') = 1)";
+        /*
+        SELECT ROUTINE_NAME
+          FROM INFORMATION_SCHEMA.ROUTINES
+         WHERE ROUTINE_TYPE = 'FUNCTION'
+        */
+        $result = $db->queryCol($query);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ? 'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ listTableTriggers()
+
+    /**
+     * list all triggers in the database that reference a given table
+     *
+     * @param string table for which all referenced triggers should be found
+     *
+     * @return mixed array of trigger names on success,  otherwise, false which
+     *               could be a db error if the db is not instantiated or could
+     *               be the results of the error that occured during the
+     *               querying of the sysobject module.
+     * @access public
+     */
+    function listTableTriggers($table = null)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $table = $db->quote($table, 'text');
+        $query = "SELECT o.name
+                    FROM sysobjects o
+                   WHERE xtype = 'TR'
+                     AND OBJECTPROPERTY(o.id, 'IsMSShipped') = 0";
+        if (null !== $table) {
+            $query .= " AND object_name(parent_obj) = $table";
+        }
+
+        $result = $db->queryCol($query);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE &&
+            $db->options['field_case'] == CASE_LOWER)
+        {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ?
+                'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ listViews()
+
+    /**
+     * list all views in the current database
+     *
+     * @param string database, the current is default
+     *
+     * @return mixed array of view names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listViews()
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = "SELECT name
+                    FROM sysobjects
+                   WHERE xtype = 'V'";
+        /*
+        SELECT *
+          FROM sysobjects
+         WHERE objectproperty(id, N'IsMSShipped') = 0
+           AND objectproperty(id, N'IsView') = 1
+        */
+
+        $result = $db->queryCol($query);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE &&
+            $db->options['field_case'] == CASE_LOWER)
+        {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ?
+                          'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ dropIndex()
+
+    /**
+     * drop existing index
+     *
+     * @param string $table name of table that should be used in method
+     * @param string $name  name of the index to be dropped
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function dropIndex($table, $name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $table = $db->quoteIdentifier($table, true);
+        $name = $db->quoteIdentifier($db->getIndexName($name), true);
+        return $db->exec("DROP INDEX $table.$name");
+    }
+
+    // }}}
+    // {{{ listTableConstraints()
+
+    /**
+     * list all constraints in a table
+     *
+     * @param string $table name of table that should be used in method
+     *
+     * @return mixed array of constraint names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listTableConstraints($table)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+        $query = "SELECT c.constraint_name
+                    FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS c
+                   WHERE c.constraint_catalog = DB_NAME()
+                     AND c.table_name = '$table'";
+        $constraints = $db->queryCol($query);
+        if (PEAR::isError($constraints)) {
+            return $constraints;
+        }
+
+        $result = array();
+        foreach ($constraints as $constraint) {
+            $constraint = $this->_fixIndexName($constraint);
+            if (!empty($constraint)) {
+                $result[$constraint] = true;
+            }
+        }
+
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_change_key_case($result, $db->options['field_case']);
+        }
+        return array_keys($result);
+    }
+
+    // }}}
+    // {{{
+
+    /**
+     * Create a basic SQL query for a new table creation
+     *
+     * @param string $name   Name of the database that should be created
+     * @param array $fields  Associative array that contains the definition of each field of the new table
+     * @param array $options An associative array of table options
+     *                          Supported options are:
+     *                          'primary'   An array of column names in the array keys
+     *                                      that form the primary key of the table
+     *                          'temporary' If true, creates the table as a temporary table
+     * @return mixed string  The SQL query on success, or MDB2 error on failure
+     * @see createTable()
+     */
+    function _getCreateTableQuery($name, $fields, $options = array())
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        if (!$name) {
+            return $db->raiseError(MDB2_ERROR_CANNOT_CREATE, null, null,
+                'no valid table name specified', __FUNCTION__);
+        }
+        if (empty($fields)) {
+            return $db->raiseError(MDB2_ERROR_CANNOT_CREATE, null, null,
+                'no fields specified for table "'.$name.'"', __FUNCTION__);
+        }
+        $query_fields = $this->getFieldDeclarationList($fields);
+        if (PEAR::isError($query_fields)) {
+            return $query_fields;
+        }
+        /*Removed since you can't get the PK name from Schema here, will result in a redefinition of PK index error
+               if (!empty($options['primary'])) {
+            $query_fields.= ', PRIMARY KEY ('.implode(', ', array_keys($options['primary'])).')';
+        }*/
+
+        $name = $db->quoteIdentifier($name, true);
+        $result = 'CREATE ';
+        if (!empty($options['temporary']) && $options['temporary']) {
+            $result .= $this->_getTemporaryTableQuery() . ' ';
+        }
+        $result .= "TABLE $name ($query_fields)";
+        return $result;
+    }
+
+    // }}}
+    // {{{ createSequence()
+
+    /**
+     * create sequence
+     *
+     * @param string $seq_name name of the sequence to be created
+     * @param string $start    start value of the sequence; default is 1
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function createSequence($seq_name, $start = 1)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $sequence_name = $db->quoteIdentifier($db->getSequenceName($seq_name), true);
+        $seqcol_name = $db->quoteIdentifier($db->options['seqcol_name'], true);
+        $query = "CREATE TABLE $sequence_name ($seqcol_name " .
+                 "INT PRIMARY KEY CLUSTERED IDENTITY($start,1) NOT NULL)";
+
+        $res = $db->exec($query);
+        if (PEAR::isError($res)) {
+            return $res;
+        }
+
+        $query = "SET IDENTITY_INSERT $sequence_name ON ".
+                 "INSERT INTO $sequence_name ($seqcol_name) VALUES ($start)";
+        $res = $db->exec($query);
+
+        if (!PEAR::isError($res)) {
+            return MDB2_OK;
+        }
+
+        $result = $db->exec("DROP TABLE $sequence_name");
+        if (PEAR::isError($result)) {
+            return $db->raiseError($result, null, null,
+                'could not drop inconsistent sequence table', __FUNCTION__);
+        }
+
+        return $db->raiseError($res, null, null,
+            'could not create sequence table', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ dropSequence()
+
+    /**
+     * This function drops an existing sequence
+     *
+     * @param string $seq_name name of the sequence to be dropped
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function dropSequence($seq_name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $sequence_name = $db->quoteIdentifier($db->getSequenceName($seq_name), true);
+        return $db->exec("DROP TABLE $sequence_name");
+    }
+
+    // }}}
+    // {{{ listSequences()
+
+    /**
+     * list all sequences in the current database
+     *
+     * @return mixed array of sequence names on success, a MDB2 error on failure
+     * @access public
+     */
+    function listSequences()
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = "SELECT name FROM sysobjects WHERE xtype = 'U'";
+        $table_names = $db->queryCol($query);
+        if (PEAR::isError($table_names)) {
+            return $table_names;
+        }
+        $result = array();
+        foreach ($table_names as $table_name) {
+            if ($sqn = $this->_fixSequenceName($table_name, true)) {
+                $result[] = $sqn;
+            }
+        }
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $result = array_map(($db->options['field_case'] == CASE_LOWER ?
+                          'strtolower' : 'strtoupper'), $result);
+        }
+        return $result;
+    }
+
+    // }}}
+    /**
+     * New OPENX method to check table name according to specifications:
+     *  http://msdn.microsoft.com/en-us/library/aa258255(SQL.80).aspx
+     *
+     *  Table names must conform to the rules for identifiers. The combination of owner.table_name 
+     *  must be unique within the database. table_name can contain a maximum of 128 characters, 
+     *  except for local temporary table names (names prefixed with a single number sign (#)) that 
+     *  cannot exceed 116 characters.
+     *
+     * @param string $name table name to check
+     * @return true if name is correct and PEAR error on failure
+     */
+    function validateTableName($name)
+    {
+        // Table name maximum length is 128
+        if (strlen($name) > 128) {
+            return PEAR::raiseError(
+               'SQL Server table names are limited to 128 characters in length');
+        }
+        return true;
+    }
+
+    /**
+     * New OpenX method
+     *
+     * @param string $table
+     * @return array
+     */
+    function getTableStatus($table)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query      = "exec sp_spaceused '{$table}'";
+        $result     = $db->queryAll($query, null, MDB2_FETCHMODE_ASSOC);
+        if (PEAR::isError($result))
+        {
+            return array();
+        }
+               $result[0]['data_length'] = (isset($result[0]['data'])) ? $result[0]['data'] : 0;
+               $result[0]['data_free'] = (isset($result[0]['unused'])) ? $result[0]['unused'] : 0;
+               //data_length,rows,auto_increment,data_free
+        $query      = "SELECT IDENT_CURRENT ('{$table}') + IDENT_INCR ('{$table}') AS auto_increment";
+        $resultIdentity     = $db->queryAll($query, null, MDB2_FETCHMODE_ASSOC);
+               $result[0]['auto_increment'] = (isset($resultIdentity[0]['auto_increment'])) ? $resultIdentity[0]['auto_increment'] : 0;
+        return $result;
+    }
+
+    function checkTable($tableName)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+        $query  = 'CHECK TABLE '.$tableName;
+        $result = $db->queryRow($query, null, MDB2_FETCHMODE_ASSOC);
+        if (PEAR::isError($result))
+        {
+            return array('msg_text' => $result->getUserInfo());
+        }
+        return $result;
+    }
+
+    /**
+     * New OPENX method to check database name according to specifications:
+     *  Mysql specification: http://dev.mysql.com/doc/refman/4.1/en/identifiers.html
+     *  Mysql specification: http://dev.mysql.com/doc/refman/5.0/en/identifiers.html
+     *  For 4.0, 4.1, 5.0 seem to be the same
+     *
+     * @param string $name database name to check
+     * @return true in name is correct and PEAR error on failure
+     */
+    function validateDatabaseName($name)
+    {
+        return $this->_validateEntityName($name, 'Database');
+    }
+
+    /**
+     * New OPENX method to check entity name according to specifications:
+     *  Mysql specification: http://dev.mysql.com/doc/refman/4.1/en/identifiers.html
+     *  Mysql specification: http://dev.mysql.com/doc/refman/5.0/en/identifiers.html
+     *  For 4.0, 4.1, 5.0 seem to be the same
+     *
+     *  There are some restrictions on the characters that may appear in identifiers:
+     *  - No identifier can contain ASCII 0 (0x00) or a byte with a value of 255.
+     *  - Before MySQL 4.1, identifier quote characters should not be used in identifiers.
+     *  - Database, table, and column names should not end with space characters.
+     *  - Database and table names cannot contain \93/\94\93\\94\93.\94, or characters that are not allowed in filenames.
+     *
+     *  Table/Database name maximum length:
+     *  - 64
+     *
+     * @param string $name table name to check
+     * @return true if name is correct and PEAR error on failure
+     *      *
+     * @param unknown_type $name
+     * @param unknown_type $entityType
+     * @return unknown
+     */
+    function _validateEntityName($name, $entityType)
+    {
+        // Table name maximum length is 64
+        if (strlen($name) > 64) {
+            return PEAR::raiseError(
+               $entityType.' names are limited to 64 characters in length');
+        }
+
+        // Database, table, and column names should not end with space characters.
+        // Extended for leading and ending spaces
+        if ($name != trim($name)) {
+            return PEAR::raiseError(
+                $entityType.' names should not start or end with space characters');
+        }
+
+        // No identifier can contain ASCII 0 (0x00) or a byte with a value of 255.
+        if (preg_match( '/([\x00\xff])/', $name)) {
+            return PEAR::raiseError(
+               $entityType.' names cannot contain ASCII 0 (0x00) or a byte with a value of 255');
+        }
+
+        //Before MySQL 4.1, identifier quote characters should not be used in identifiers.
+        //we actually extend that and disallow quoting at all
+        if (preg_match( '/(\\\\|\/|\.|\"|\\\'| |\\(|\\)|\\:|\\;)/', $name)) {
+            return PEAR::raiseError(
+                $entityType.' names cannot contain "/", "\\", ".", or characters that are not allowed in filenames');
+        }
+
+        return true;
+    }
+
+    // {{{ createConstraint()
+
+    /**
+     * create a constraint on a table
+     *
+     * @param string    $table         name of the table on which the constraint is to be created
+     * @param string    $name         name of the constraint to be created
+     * @param array     $definition        associative array that defines properties of the constraint to be created.
+     *                                 Currently, only one property named FIELDS is supported. This property
+     *                                 is also an associative with the names of the constraint fields as array
+     *                                 constraints. Each entry of this array is set to another type of associative
+     *                                 array that specifies properties of the constraint that are specific to
+     *                                 each field.
+     *
+     *                                 Example
+     *                                    array(
+     *                                        'fields' => array(
+     *                                            'user_name' => array(),
+     *                                            'last_login' => array()
+     *                                        )
+     *                                    )
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function createConstraint($table, $name, $definition)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+        $table = $db->quoteIdentifier($table, true);
+        $name = $db->quoteIdentifier($db->getIndexName($name), true);
+        if (!empty($definition['primary']) && empty($definition['unique'])) {
+               $query = "ALTER TABLE $table ADD CONSTRAINT $name";
+               if (!empty($definition['primary'])) {
+                   $query.= ' PRIMARY KEY';
+               } elseif (!empty($definition['unique'])) {
+                   $query.= ' UNIQUE';
+               }
+        } elseif (!empty($definition['unique'])) {
+               $query = "CREATE UNIQUE NONCLUSTERED INDEX $name ON $table";
+        }
+        $fields = array();
+        foreach (array_keys($definition['fields']) as $field) {
+            $fields[] = $db->quoteIdentifier($field, true);
+        }
+        $query .= ' ('. implode(', ', $fields) . ')';
+               //deals with NULL values and UNIQUE indexes, this solution is only available in SQL Server 2008
+               //https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=299229
+               if (!empty($definition['unique']) && empty($definition['primary'])) {
+                       for($i=0;$i<count($fields);$i++) $fields[$i] .= ' is NOT NULL';
+                       $query .= ' WHERE '. implode(' AND ', $fields);
+               }
+        return $db->exec($query);
+    }
+
+    // }}}
+       
+}
+
+// }}}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Native/Common.php b/program/lib/MDB2/Driver/Native/Common.php
new file mode 100644 (file)
index 0000000..20e652e
--- /dev/null
@@ -0,0 +1,61 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2006 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Lukas Smith <smith@pooteeweet.org>                           |
+// +----------------------------------------------------------------------+
+//
+// $Id: Common.php 242348 2007-09-09 13:47:36Z quipo $
+//
+
+/**
+ * Base class for the natuve modules that is extended by each MDB2 driver
+ *
+ * To load this module in the MDB2 object:
+ * $mdb->loadModule('Native');
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Driver_Native_Common extends MDB2_Module_Common
+{
+}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Native/mssql.php b/program/lib/MDB2/Driver/Native/mssql.php
new file mode 100644 (file)
index 0000000..dad6a14
--- /dev/null
@@ -0,0 +1,60 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2006 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith, Frank M. Kromann                       |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Lukas Smith <smith@pooteeweet.org>                           |
+// +----------------------------------------------------------------------+
+//
+// $Id: mssql.php 215004 2006-06-18 21:59:05Z lsmith $
+//
+
+require_once 'MDB2/Driver/Native/Common.php';
+
+/**
+ * MDB2 MSSQL driver for the native module
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@dybnet.de>
+ */
+class MDB2_Driver_Native_mssql extends MDB2_Driver_Native_Common
+{
+}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Native/mysql.php b/program/lib/MDB2/Driver/Native/mysql.php
new file mode 100644 (file)
index 0000000..2d4ffe0
--- /dev/null
@@ -0,0 +1,60 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2006 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Lukas Smith <smith@pooteeweet.org>                           |
+// +----------------------------------------------------------------------+
+//
+// $Id: mysql.php 215004 2006-06-18 21:59:05Z lsmith $
+//
+
+require_once 'MDB2/Driver/Native/Common.php';
+
+/**
+ * MDB2 MySQL driver for the native module
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Driver_Native_mysql extends MDB2_Driver_Native_Common
+{
+}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Native/mysqli.php b/program/lib/MDB2/Driver/Native/mysqli.php
new file mode 100644 (file)
index 0000000..22d8f36
--- /dev/null
@@ -0,0 +1,60 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2006 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Lukas Smith <smith@pooteeweet.org>                           |
+// +----------------------------------------------------------------------+
+//
+// $Id: mysqli.php 215004 2006-06-18 21:59:05Z lsmith $
+//
+
+require_once 'MDB2/Driver/Native/Common.php';
+
+/**
+ * MDB2 MySQLi driver for the native module
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Driver_Native_mysqli extends MDB2_Driver_Native_Common
+{
+}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Native/pgsql.php b/program/lib/MDB2/Driver/Native/pgsql.php
new file mode 100644 (file)
index 0000000..80495c5
--- /dev/null
@@ -0,0 +1,88 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2006 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Paul Cooper <pgc@ucecom.com>                                 |
+// +----------------------------------------------------------------------+
+//
+// $Id: pgsql.php 295587 2010-02-28 17:16:38Z quipo $
+
+require_once 'MDB2/Driver/Native/Common.php';
+
+/**
+ * MDB2 PostGreSQL driver for the native module
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Paul Cooper <pgc@ucecom.com>
+ */
+class MDB2_Driver_Native_pgsql extends MDB2_Driver_Native_Common
+{
+    // }}}
+    // {{{ deleteOID()
+
+    /**
+     * delete an OID
+     *
+     * @param integer    $OID
+     * @return mixed MDB2_OK on success or MDB2 Error Object on failure
+     * @access public
+     */
+    function deleteOID($OID)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $connection = $db->getConnection();
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+
+        if (!@pg_lo_unlink($connection, $OID)) {
+            return $db->raiseError(null, null, null,
+                'Unable to unlink OID: '.$OID, __FUNCTION__);
+        }
+        return MDB2_OK;
+    }
+
+}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Native/sqlite.php b/program/lib/MDB2/Driver/Native/sqlite.php
new file mode 100644 (file)
index 0000000..ee2a54f
--- /dev/null
@@ -0,0 +1,60 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2006 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Lukas Smith <smith@pooteeweet.org>                           |
+// +----------------------------------------------------------------------+
+//
+// $Id: sqlite.php 215004 2006-06-18 21:59:05Z lsmith $
+//
+
+require_once 'MDB2/Driver/Native/Common.php';
+
+/**
+ * MDB2 SQLite driver for the native module
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Driver_Native_sqlite extends MDB2_Driver_Native_Common
+{
+}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Native/sqlsrv.php b/program/lib/MDB2/Driver/Native/sqlsrv.php
new file mode 100644 (file)
index 0000000..f9a811d
--- /dev/null
@@ -0,0 +1,57 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2006 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith, Frank M. Kromann                       |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Lukas Smith <smith@pooteeweet.org>                           |
+// +----------------------------------------------------------------------+
+
+require_once 'MDB2/Driver/Native/Common.php';
+
+/**
+ * MDB2 MSSQL driver for the native module
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@dybnet.de>
+ */
+class MDB2_Driver_Native_sqlsrv extends MDB2_Driver_Native_Common
+{
+}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Reverse/Common.php b/program/lib/MDB2/Driver/Reverse/Common.php
new file mode 100644 (file)
index 0000000..5d9f27c
--- /dev/null
@@ -0,0 +1,517 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2007 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Lukas Smith <smith@pooteeweet.org>                           |
+// +----------------------------------------------------------------------+
+//
+// $Id: Common.php 273526 2009-01-14 15:01:21Z quipo $
+//
+
+/**
+ * @package MDB2
+ * @category Database
+ */
+
+/**
+ * These are constants for the tableInfo-function
+ * they are bitwised or'ed. so if there are more constants to be defined
+ * in the future, adjust MDB2_TABLEINFO_FULL accordingly
+ */
+
+define('MDB2_TABLEINFO_ORDER',      1);
+define('MDB2_TABLEINFO_ORDERTABLE', 2);
+define('MDB2_TABLEINFO_FULL',       3);
+
+/**
+ * Base class for the schema reverse engineering module that is extended by each MDB2 driver
+ *
+ * To load this module in the MDB2 object:
+ * $mdb->loadModule('Reverse');
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Driver_Reverse_Common extends MDB2_Module_Common
+{
+    // {{{ splitTableSchema()
+
+    /**
+     * Split the "[owner|schema].table" notation into an array
+     *
+     * @param string $table [schema and] table name
+     *
+     * @return array array(schema, table)
+     * @access private
+     */
+    function splitTableSchema($table)
+    {
+        $ret = array();
+        if (strpos($table, '.') !== false) {
+            return explode('.', $table);
+        }
+        return array(null, $table);
+    }
+
+    // }}}
+    // {{{ getTableFieldDefinition()
+
+    /**
+     * Get the structure of a field into an array
+     *
+     * @param string    $table     name of table that should be used in method
+     * @param string    $field     name of field that should be used in method
+     * @return mixed data array on success, a MDB2 error on failure.
+     *          The returned array contains an array for each field definition,
+     *          with all or some of these indices, depending on the field data type:
+     *          [notnull] [nativetype] [length] [fixed] [default] [type] [mdb2type]
+     * @access public
+     */
+    function getTableFieldDefinition($table, $field)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ getTableIndexDefinition()
+
+    /**
+     * Get the structure of an index into an array
+     *
+     * @param string    $table      name of table that should be used in method
+     * @param string    $index      name of index that should be used in method
+     * @return mixed data array on success, a MDB2 error on failure
+     *          The returned array has this structure:
+     *          </pre>
+     *          array (
+     *              [fields] => array (
+     *                  [field1name] => array() // one entry per each field covered
+     *                  [field2name] => array() // by the index
+     *                  [field3name] => array(
+     *                      [sorting] => ascending
+     *                  )
+     *              )
+     *          );
+     *          </pre>
+     * @access public
+     */
+    function getTableIndexDefinition($table, $index)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ getTableConstraintDefinition()
+
+    /**
+     * Get the structure of an constraints into an array
+     *
+     * @param string    $table      name of table that should be used in method
+     * @param string    $index      name of index that should be used in method
+     * @return mixed data array on success, a MDB2 error on failure
+     *          The returned array has this structure:
+     *          <pre>
+     *          array (
+     *              [primary] => 0
+     *              [unique]  => 0
+     *              [foreign] => 1
+     *              [check]   => 0
+     *              [fields] => array (
+     *                  [field1name] => array() // one entry per each field covered
+     *                  [field2name] => array() // by the index
+     *                  [field3name] => array(
+     *                      [sorting]  => ascending
+     *                      [position] => 3
+     *                  )
+     *              )
+     *              [references] => array(
+     *                  [table] => name
+     *                  [fields] => array(
+     *                      [field1name] => array(  //one entry per each referenced field
+     *                           [position] => 1
+     *                      )
+     *                  )
+     *              )
+     *              [deferrable] => 0
+     *              [initiallydeferred] => 0
+     *              [onupdate] => CASCADE|RESTRICT|SET NULL|SET DEFAULT|NO ACTION
+     *              [ondelete] => CASCADE|RESTRICT|SET NULL|SET DEFAULT|NO ACTION
+     *              [match] => SIMPLE|PARTIAL|FULL
+     *          );
+     *          </pre>
+     * @access public
+     */
+    function getTableConstraintDefinition($table, $index)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ getSequenceDefinition()
+
+    /**
+     * Get the structure of a sequence into an array
+     *
+     * @param string    $sequence   name of sequence that should be used in method
+     * @return mixed data array on success, a MDB2 error on failure
+     *          The returned array has this structure:
+     *          <pre>
+     *          array (
+     *              [start] => n
+     *          );
+     *          </pre>
+     * @access public
+     */
+    function getSequenceDefinition($sequence)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $start = $db->currId($sequence);
+        if (PEAR::isError($start)) {
+            return $start;
+        }
+        if ($db->supports('current_id')) {
+            $start++;
+        } else {
+            $db->warnings[] = 'database does not support getting current
+                sequence value, the sequence value was incremented';
+        }
+        $definition = array();
+        if ($start != 1) {
+            $definition = array('start' => $start);
+        }
+        return $definition;
+    }
+
+    // }}}
+    // {{{ getTriggerDefinition()
+
+    /**
+     * Get the structure of a trigger into an array
+     *
+     * EXPERIMENTAL
+     *
+     * WARNING: this function is experimental and may change the returned value 
+     * at any time until labelled as non-experimental
+     *
+     * @param string    $trigger    name of trigger that should be used in method
+     * @return mixed data array on success, a MDB2 error on failure
+     *          The returned array has this structure:
+     *          <pre>
+     *          array (
+     *              [trigger_name]    => 'trigger name',
+     *              [table_name]      => 'table name',
+     *              [trigger_body]    => 'trigger body definition',
+     *              [trigger_type]    => 'BEFORE' | 'AFTER',
+     *              [trigger_event]   => 'INSERT' | 'UPDATE' | 'DELETE'
+     *                  //or comma separated list of multiple events, when supported
+     *              [trigger_enabled] => true|false
+     *              [trigger_comment] => 'trigger comment',
+     *          );
+     *          </pre>
+     *          The oci8 driver also returns a [when_clause] index.
+     * @access public
+     */
+    function getTriggerDefinition($trigger)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+            'method not implemented', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ tableInfo()
+
+    /**
+     * Returns information about a table or a result set
+     *
+     * The format of the resulting array depends on which <var>$mode</var>
+     * you select.  The sample output below is based on this query:
+     * <pre>
+     *    SELECT tblFoo.fldID, tblFoo.fldPhone, tblBar.fldId
+     *    FROM tblFoo
+     *    JOIN tblBar ON tblFoo.fldId = tblBar.fldId
+     * </pre>
+     *
+     * <ul>
+     * <li>
+     *
+     * <kbd>null</kbd> (default)
+     *   <pre>
+     *   [0] => Array (
+     *       [table] => tblFoo
+     *       [name] => fldId
+     *       [type] => int
+     *       [len] => 11
+     *       [flags] => primary_key not_null
+     *   )
+     *   [1] => Array (
+     *       [table] => tblFoo
+     *       [name] => fldPhone
+     *       [type] => string
+     *       [len] => 20
+     *       [flags] =>
+     *   )
+     *   [2] => Array (
+     *       [table] => tblBar
+     *       [name] => fldId
+     *       [type] => int
+     *       [len] => 11
+     *       [flags] => primary_key not_null
+     *   )
+     *   </pre>
+     *
+     * </li><li>
+     *
+     * <kbd>MDB2_TABLEINFO_ORDER</kbd>
+     *
+     *   <p>In addition to the information found in the default output,
+     *   a notation of the number of columns is provided by the
+     *   <samp>num_fields</samp> element while the <samp>order</samp>
+     *   element provides an array with the column names as the keys and
+     *   their location index number (corresponding to the keys in the
+     *   the default output) as the values.</p>
+     *
+     *   <p>If a result set has identical field names, the last one is
+     *   used.</p>
+     *
+     *   <pre>
+     *   [num_fields] => 3
+     *   [order] => Array (
+     *       [fldId] => 2
+     *       [fldTrans] => 1
+     *   )
+     *   </pre>
+     *
+     * </li><li>
+     *
+     * <kbd>MDB2_TABLEINFO_ORDERTABLE</kbd>
+     *
+     *   <p>Similar to <kbd>MDB2_TABLEINFO_ORDER</kbd> but adds more
+     *   dimensions to the array in which the table names are keys and
+     *   the field names are sub-keys.  This is helpful for queries that
+     *   join tables which have identical field names.</p>
+     *
+     *   <pre>
+     *   [num_fields] => 3
+     *   [ordertable] => Array (
+     *       [tblFoo] => Array (
+     *           [fldId] => 0
+     *           [fldPhone] => 1
+     *       )
+     *       [tblBar] => Array (
+     *           [fldId] => 2
+     *       )
+     *   )
+     *   </pre>
+     *
+     * </li>
+     * </ul>
+     *
+     * The <samp>flags</samp> element contains a space separated list
+     * of extra information about the field.  This data is inconsistent
+     * between DBMS's due to the way each DBMS works.
+     *   + <samp>primary_key</samp>
+     *   + <samp>unique_key</samp>
+     *   + <samp>multiple_key</samp>
+     *   + <samp>not_null</samp>
+     *
+     * Most DBMS's only provide the <samp>table</samp> and <samp>flags</samp>
+     * elements if <var>$result</var> is a table name.  The following DBMS's
+     * provide full information from queries:
+     *   + fbsql
+     *   + mysql
+     *
+     * If the 'portability' option has <samp>MDB2_PORTABILITY_FIX_CASE</samp>
+     * turned on, the names of tables and fields will be lower or upper cased.
+     *
+     * @param object|string  $result  MDB2_result object from a query or a
+     *                                string containing the name of a table.
+     *                                While this also accepts a query result
+     *                                resource identifier, this behavior is
+     *                                deprecated.
+     * @param int  $mode   either unused or one of the tableInfo modes:
+     *                     <kbd>MDB2_TABLEINFO_ORDERTABLE</kbd>,
+     *                     <kbd>MDB2_TABLEINFO_ORDER</kbd> or
+     *                     <kbd>MDB2_TABLEINFO_FULL</kbd> (which does both).
+     *                     These are bitwise, so the first two can be
+     *                     combined using <kbd>|</kbd>.
+     *
+     * @return array  an associative array with the information requested.
+     *                 A MDB2_Error object on failure.
+     *
+     * @see MDB2_Driver_Common::setOption()
+     */
+    function tableInfo($result, $mode = null)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        if (!is_string($result)) {
+            return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                'method not implemented', __FUNCTION__);
+        }
+
+        $db->loadModule('Manager', null, true);
+        $fields = $db->manager->listTableFields($result);
+        if (PEAR::isError($fields)) {
+            return $fields;
+        }
+
+        $flags = array();
+
+        $idxname_format = $db->getOption('idxname_format');
+        $db->setOption('idxname_format', '%s');
+
+        $indexes = $db->manager->listTableIndexes($result);
+        if (PEAR::isError($indexes)) {
+            $db->setOption('idxname_format', $idxname_format);
+            return $indexes;
+        }
+
+        foreach ($indexes as $index) {
+            $definition = $this->getTableIndexDefinition($result, $index);
+            if (PEAR::isError($definition)) {
+                $db->setOption('idxname_format', $idxname_format);
+                return $definition;
+            }
+            if (count($definition['fields']) > 1) {
+                foreach ($definition['fields'] as $field => $sort) {
+                    $flags[$field] = 'multiple_key';
+                }
+            }
+        }
+
+        $constraints = $db->manager->listTableConstraints($result);
+        if (PEAR::isError($constraints)) {
+            return $constraints;
+        }
+
+        foreach ($constraints as $constraint) {
+            $definition = $this->getTableConstraintDefinition($result, $constraint);
+            if (PEAR::isError($definition)) {
+                $db->setOption('idxname_format', $idxname_format);
+                return $definition;
+            }
+            $flag = !empty($definition['primary'])
+                ? 'primary_key' : (!empty($definition['unique'])
+                    ? 'unique_key' : false);
+            if ($flag) {
+                foreach ($definition['fields'] as $field => $sort) {
+                    if (empty($flags[$field]) || $flags[$field] != 'primary_key') {
+                        $flags[$field] = $flag;
+                    }
+                }
+            }
+        }
+
+        $res = array();
+
+        if ($mode) {
+            $res['num_fields'] = count($fields);
+        }
+
+        foreach ($fields as $i => $field) {
+            $definition = $this->getTableFieldDefinition($result, $field);
+            if (PEAR::isError($definition)) {
+                $db->setOption('idxname_format', $idxname_format);
+                return $definition;
+            }
+            $res[$i] = $definition[0];
+            $res[$i]['name'] = $field;
+            $res[$i]['table'] = $result;
+            $res[$i]['type'] = preg_replace('/^([a-z]+).*$/i', '\\1', trim($definition[0]['nativetype']));
+            // 'primary_key', 'unique_key', 'multiple_key'
+            $res[$i]['flags'] = empty($flags[$field]) ? '' : $flags[$field];
+            // not_null', 'unsigned', 'auto_increment', 'default_[rawencodedvalue]'
+            if (!empty($res[$i]['notnull'])) {
+                $res[$i]['flags'].= ' not_null';
+            }
+            if (!empty($res[$i]['unsigned'])) {
+                $res[$i]['flags'].= ' unsigned';
+            }
+            if (!empty($res[$i]['auto_increment'])) {
+                $res[$i]['flags'].= ' autoincrement';
+            }
+            if (!empty($res[$i]['default'])) {
+                $res[$i]['flags'].= ' default_'.rawurlencode($res[$i]['default']);
+            }
+
+            if ($mode & MDB2_TABLEINFO_ORDER) {
+                $res['order'][$res[$i]['name']] = $i;
+            }
+            if ($mode & MDB2_TABLEINFO_ORDERTABLE) {
+                $res['ordertable'][$res[$i]['table']][$res[$i]['name']] = $i;
+            }
+        }
+
+        $db->setOption('idxname_format', $idxname_format);
+        return $res;
+    }
+}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Reverse/mssql.php b/program/lib/MDB2/Driver/Reverse/mssql.php
new file mode 100644 (file)
index 0000000..e83ab6f
--- /dev/null
@@ -0,0 +1,653 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2007 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith, Frank M. Kromann, Lorenzo Alberton     |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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.                                          |
+// +----------------------------------------------------------------------+
+// | Authors: Lukas Smith <smith@pooteeweet.org>                          |
+// |          Lorenzo Alberton <l.alberton@quipo.it>                      |
+// +----------------------------------------------------------------------+
+//
+// $Id: mssql.php 295587 2010-02-28 17:16:38Z quipo $
+//
+
+require_once 'MDB2/Driver/Reverse/Common.php';
+
+/**
+ * MDB2 MSSQL driver for the schema reverse engineering module
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@dybnet.de>
+ * @author  Lorenzo Alberton <l.alberton@quipo.it>
+ */
+class MDB2_Driver_Reverse_mssql extends MDB2_Driver_Reverse_Common
+{
+    // {{{ getTableFieldDefinition()
+
+    /**
+     * Get the structure of a field into an array
+     *
+     * @param string $table_name name of table that should be used in method
+     * @param string $field_name name of field that should be used in method
+     * @return mixed data array on success, a MDB2 error on failure
+     * @access public
+     */
+    function getTableFieldDefinition($table_name, $field_name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $result = $db->loadModule('Datatype', null, true);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+
+        list($schema, $table) = $this->splitTableSchema($table_name);
+
+        $table = $db->quoteIdentifier($table, true);
+        $fldname = $db->quoteIdentifier($field_name, true);
+
+        $query = "SELECT t.table_name,
+                         c.column_name 'name',
+                         c.data_type 'type',
+                         CASE c.is_nullable WHEN 'YES' THEN 1 ELSE 0 END AS 'is_nullable',
+                         c.column_default,
+                         c.character_maximum_length 'length',
+                         c.numeric_precision,
+                         c.numeric_scale,
+                         c.character_set_name,
+                         c.collation_name
+                    FROM INFORMATION_SCHEMA.TABLES t,
+                         INFORMATION_SCHEMA.COLUMNS c
+                   WHERE t.table_name = c.table_name
+                     AND t.table_name = '$table'
+                     AND c.column_name = '$fldname'";
+        if (!empty($schema)) {
+            $query .= " AND t.table_schema = '" .$db->quoteIdentifier($schema, true) ."'";
+        }
+        $query .= ' ORDER BY t.table_name';
+        $column = $db->queryRow($query, null, MDB2_FETCHMODE_ASSOC);
+        if (PEAR::isError($column)) {
+            return $column;
+        }
+        if (empty($column)) {
+            return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                'it was not specified an existing table column', __FUNCTION__);
+        }
+
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            if ($db->options['field_case'] == CASE_LOWER) {
+                $column['name'] = strtolower($column['name']);
+            } else {
+                $column['name'] = strtoupper($column['name']);
+            }
+        } else {
+            $column = array_change_key_case($column, $db->options['field_case']);
+        }
+        $mapped_datatype = $db->datatype->mapNativeDatatype($column);
+        if (PEAR::isError($mapped_datatype)) {
+            return $mapped_datatype;
+        }
+        list($types, $length, $unsigned, $fixed) = $mapped_datatype;
+        $notnull = true;
+        if ($column['is_nullable']) {
+            $notnull = false;
+        }
+        $default = false;
+        if (array_key_exists('column_default', $column)) {
+            $default = $column['column_default'];
+            if ((null === $default) && $notnull) {
+                $default = '';
+            } elseif (strlen($default) > 4
+                   && substr($default, 0, 1) == '('
+                   &&  substr($default, -1, 1) == ')'
+            ) {
+                //mssql wraps the default value in parentheses: "((1234))", "(NULL)"
+                $default = trim($default, '()');
+                if ($default == 'NULL') {
+                    $default = null;
+                }
+            }
+        }
+        $definition[0] = array(
+            'notnull' => $notnull,
+            'nativetype' => preg_replace('/^([a-z]+)[^a-z].*/i', '\\1', $column['type'])
+        );
+        if (null !== $length) {
+            $definition[0]['length'] = $length;
+        }
+        if (null !== $unsigned) {
+            $definition[0]['unsigned'] = $unsigned;
+        }
+        if (null !== $fixed) {
+            $definition[0]['fixed'] = $fixed;
+        }
+        if (false !== $default) {
+            $definition[0]['default'] = $default;
+        }
+        foreach ($types as $key => $type) {
+            $definition[$key] = $definition[0];
+            if ($type == 'clob' || $type == 'blob') {
+                unset($definition[$key]['default']);
+            }
+            $definition[$key]['type'] = $type;
+            $definition[$key]['mdb2type'] = $type;
+        }
+        return $definition;
+    }
+
+    // }}}
+    // {{{ getTableIndexDefinition()
+
+    /**
+     * Get the structure of an index into an array
+     *
+     * @param string $table_name name of table that should be used in method
+     * @param string $index_name name of index that should be used in method
+     * @return mixed data array on success, a MDB2 error on failure
+     * @access public
+     */
+    function getTableIndexDefinition($table_name, $index_name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        list($schema, $table) = $this->splitTableSchema($table_name);
+
+        $table = $db->quoteIdentifier($table, true);
+        //$idxname = $db->quoteIdentifier($index_name, true);
+
+        $query = "SELECT OBJECT_NAME(i.id) tablename,
+                         i.name indexname,
+                         c.name field_name,
+                         CASE INDEXKEY_PROPERTY(i.id, i.indid, ik.keyno, 'IsDescending')
+                           WHEN 1 THEN 'DESC' ELSE 'ASC'
+                         END 'collation',
+                         ik.keyno 'position'
+                    FROM sysindexes i
+                    JOIN sysindexkeys ik ON ik.id = i.id AND ik.indid = i.indid
+                    JOIN syscolumns c ON c.id = ik.id AND c.colid = ik.colid
+                   WHERE OBJECT_NAME(i.id) = '$table'
+                     AND i.name = '%s'
+                     AND NOT EXISTS (
+                            SELECT *
+                              FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE k
+                             WHERE k.table_name = OBJECT_NAME(i.id)
+                               AND k.constraint_name = i.name";
+        if (!empty($schema)) {
+            $query .= " AND k.table_schema = '" .$db->quoteIdentifier($schema, true) ."'";
+        }
+        $query .= ')
+                ORDER BY tablename, indexname, ik.keyno';
+
+        $index_name_mdb2 = $db->getIndexName($index_name);
+        $result = $db->queryRow(sprintf($query, $index_name_mdb2));
+        if (!PEAR::isError($result) && (null !== $result)) {
+            // apply 'idxname_format' only if the query succeeded, otherwise
+            // fallback to the given $index_name, without transformation
+            $index_name = $index_name_mdb2;
+        }
+        $result = $db->query(sprintf($query, $index_name));
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+
+        $definition = array();
+        while (is_array($row = $result->fetchRow(MDB2_FETCHMODE_ASSOC))) {
+            $column_name = $row['field_name'];
+            if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+                if ($db->options['field_case'] == CASE_LOWER) {
+                    $column_name = strtolower($column_name);
+                } else {
+                    $column_name = strtoupper($column_name);
+                }
+            }
+            $definition['fields'][$column_name] = array(
+                'position' => (int)$row['position'],
+            );
+            if (!empty($row['collation'])) {
+                $definition['fields'][$column_name]['sorting'] = ($row['collation'] == 'ASC'
+                    ? 'ascending' : 'descending');
+            }
+        }
+        $result->free();
+        if (empty($definition['fields'])) {
+            return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                'it was not specified an existing table index', __FUNCTION__);
+        }
+        return $definition;
+    }
+
+    // }}}
+    // {{{ getTableConstraintDefinition()
+
+    /**
+     * Get the structure of a constraint into an array
+     *
+     * @param string $table_name      name of table that should be used in method
+     * @param string $constraint_name name of constraint that should be used in method
+     * @return mixed data array on success, a MDB2 error on failure
+     * @access public
+     */
+    function getTableConstraintDefinition($table_name, $constraint_name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        list($schema, $table) = $this->splitTableSchema($table_name);
+
+        $table = $db->quoteIdentifier($table, true);
+        $query = "SELECT k.table_name,
+                         k.column_name field_name,
+                         CASE c.constraint_type WHEN 'PRIMARY KEY' THEN 1 ELSE 0 END 'primary',
+                         CASE c.constraint_type WHEN 'UNIQUE' THEN 1 ELSE 0 END 'unique',
+                         CASE c.constraint_type WHEN 'FOREIGN KEY' THEN 1 ELSE 0 END 'foreign',
+                         CASE c.constraint_type WHEN 'CHECK' THEN 1 ELSE 0 END 'check',
+                         CASE c.is_deferrable WHEN 'NO' THEN 0 ELSE 1 END 'deferrable',
+                         CASE c.initially_deferred WHEN 'NO' THEN 0 ELSE 1 END 'initiallydeferred',
+                         rc.match_option 'match',
+                                rc.update_rule 'onupdate',
+                         rc.delete_rule 'ondelete',
+                         kcu.table_name 'references_table',
+                         kcu.column_name 'references_field',
+                         k.ordinal_position 'field_position'
+                    FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE k
+                    LEFT JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS c
+                      ON k.table_name = c.table_name
+                     AND k.table_schema = c.table_schema
+                     AND k.table_catalog = c.table_catalog
+                     AND k.constraint_catalog = c.constraint_catalog
+                     AND k.constraint_name = c.constraint_name
+               LEFT JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc
+                      ON rc.constraint_schema = c.constraint_schema
+                     AND rc.constraint_catalog = c.constraint_catalog
+                     AND rc.constraint_name = c.constraint_name
+               LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE kcu
+                      ON rc.unique_constraint_schema = kcu.constraint_schema
+                     AND rc.unique_constraint_catalog = kcu.constraint_catalog
+                     AND rc.unique_constraint_name = kcu.constraint_name
+                                        AND k.ordinal_position = kcu.ordinal_position
+                   WHERE k.constraint_catalog = DB_NAME()
+                     AND k.table_name = '$table'
+                     AND k.constraint_name = '%s'";
+        if (!empty($schema)) {
+            $query .= " AND k.table_schema = '" .$db->quoteIdentifier($schema, true) ."'";
+        }
+        $query .= ' ORDER BY k.constraint_name,
+                             k.ordinal_position';
+
+        $constraint_name_mdb2 = $db->getIndexName($constraint_name);
+        $result = $db->queryRow(sprintf($query, $constraint_name_mdb2));
+        if (!PEAR::isError($result) && (null !== $result)) {
+            // apply 'idxname_format' only if the query succeeded, otherwise
+            // fallback to the given $index_name, without transformation
+            $constraint_name = $constraint_name_mdb2;
+        }
+        $result = $db->query(sprintf($query, $constraint_name));
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+
+        $definition = array(
+            'fields' => array()
+        );
+        while (is_array($row = $result->fetchRow(MDB2_FETCHMODE_ASSOC))) {
+            $row = array_change_key_case($row, CASE_LOWER);
+            $column_name = $row['field_name'];
+            if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+                if ($db->options['field_case'] == CASE_LOWER) {
+                    $column_name = strtolower($column_name);
+                } else {
+                    $column_name = strtoupper($column_name);
+                }
+            }
+            $definition['fields'][$column_name] = array(
+                'position' => (int)$row['field_position']
+            );
+            if ($row['foreign']) {
+                $ref_column_name = $row['references_field'];
+                if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+                    if ($db->options['field_case'] == CASE_LOWER) {
+                        $ref_column_name = strtolower($ref_column_name);
+                    } else {
+                        $ref_column_name = strtoupper($ref_column_name);
+                    }
+                }
+                $definition['references']['table'] = $row['references_table'];
+                $definition['references']['fields'][$ref_column_name] = array(
+                    'position' => (int)$row['field_position']
+                );
+            }
+            //collation?!?
+            /*
+            if (!empty($row['collation'])) {
+                $definition['fields'][$column_name]['sorting'] = ($row['collation'] == 'ASC'
+                    ? 'ascending' : 'descending');
+            }
+            */
+            $lastrow = $row;
+            // otherwise $row is no longer usable on exit from loop
+        }
+        $result->free();
+        if (empty($definition['fields'])) {
+            return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                $constraint_name . ' is not an existing table constraint', __FUNCTION__);
+        }
+
+        $definition['primary'] = (boolean)$lastrow['primary'];
+        $definition['unique']  = (boolean)$lastrow['unique'];
+        $definition['foreign'] = (boolean)$lastrow['foreign'];
+        $definition['check']   = (boolean)$lastrow['check'];
+        $definition['deferrable'] = (boolean)$lastrow['deferrable'];
+        $definition['initiallydeferred'] = (boolean)$lastrow['initiallydeferred'];
+        $definition['onupdate'] = $lastrow['onupdate'];
+        $definition['ondelete'] = $lastrow['ondelete'];
+        $definition['match']    = $lastrow['match'];
+
+        return $definition;
+    }
+
+    // }}}
+    // {{{ getTriggerDefinition()
+
+    /**
+     * Get the structure of a trigger into an array
+     *
+     * EXPERIMENTAL
+     *
+     * WARNING: this function is experimental and may change the returned value
+     * at any time until labelled as non-experimental
+     *
+     * @param string    $trigger    name of trigger that should be used in method
+     * @return mixed data array on success, a MDB2 error on failure
+     * @access public
+     */
+    function getTriggerDefinition($trigger)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = "SELECT sys1.name trigger_name,
+                         sys2.name table_name,
+                         c.text trigger_body,
+                         c.encrypted is_encripted,
+                         CASE
+                           WHEN OBJECTPROPERTY(sys1.id, 'ExecIsTriggerDisabled') = 1
+                           THEN 0 ELSE 1
+                         END trigger_enabled,
+                         CASE
+                           WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsertTrigger') = 1
+                           THEN 'INSERT'
+                           WHEN OBJECTPROPERTY(sys1.id, 'ExecIsUpdateTrigger') = 1
+                           THEN 'UPDATE'
+                           WHEN OBJECTPROPERTY(sys1.id, 'ExecIsDeleteTrigger') = 1
+                           THEN 'DELETE'
+                         END trigger_event,
+                         CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsteadOfTrigger') = 1
+                           THEN 'INSTEAD OF' ELSE 'AFTER'
+                         END trigger_type,
+                         '' trigger_comment
+                    FROM sysobjects sys1
+                    JOIN sysobjects sys2 ON sys1.parent_obj = sys2.id
+                    JOIN syscomments c ON sys1.id = c.id
+                   WHERE sys1.xtype = 'TR'
+                     AND sys1.name = ". $db->quote($trigger, 'text');
+
+        $types = array(
+            'trigger_name'    => 'text',
+            'table_name'      => 'text',
+            'trigger_body'    => 'text',
+            'trigger_type'    => 'text',
+            'trigger_event'   => 'text',
+            'trigger_comment' => 'text',
+            'trigger_enabled' => 'boolean',
+            'is_encripted'    => 'boolean',
+        );
+
+        $def = $db->queryRow($query, $types, MDB2_FETCHMODE_ASSOC);
+        if (PEAR::isError($def)) {
+            return $def;
+        }
+        $trg_body = $db->queryCol('EXEC sp_helptext '. $db->quote($trigger, 'text'), 'text');
+        if (!PEAR::isError($trg_body)) {
+            $def['trigger_body'] = implode(' ', $trg_body);
+        }
+        return $def;
+    }
+
+    // }}}
+    // {{{ tableInfo()
+
+    /**
+     * Returns information about a table or a result set
+     *
+     * NOTE: only supports 'table' and 'flags' if <var>$result</var>
+     * is a table name.
+     *
+     * @param object|string  $result  MDB2_result object from a query or a
+     *                                 string containing the name of a table.
+     *                                 While this also accepts a query result
+     *                                 resource identifier, this behavior is
+     *                                 deprecated.
+     * @param int            $mode    a valid tableInfo mode
+     *
+     * @return array  an associative array with the information requested.
+     *                 A MDB2_Error object on failure.
+     *
+     * @see MDB2_Driver_Common::tableInfo()
+     */
+    function tableInfo($result, $mode = null)
+    {
+        if (is_string($result)) {
+           return parent::tableInfo($result, $mode);
+        }
+
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $resource = MDB2::isResultCommon($result) ? $result->getResource() : $result;
+        if (!is_resource($resource)) {
+            return $db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
+                'Could not generate result resource', __FUNCTION__);
+        }
+
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            if ($db->options['field_case'] == CASE_LOWER) {
+                $case_func = 'strtolower';
+            } else {
+                $case_func = 'strtoupper';
+            }
+        } else {
+            $case_func = 'strval';
+        }
+
+        $count = @mssql_num_fields($resource);
+        $res   = array();
+
+        if ($mode) {
+            $res['num_fields'] = $count;
+        }
+
+        $db->loadModule('Datatype', null, true);
+        for ($i = 0; $i < $count; $i++) {
+            $res[$i] = array(
+                'table' => '',
+                'name'  => $case_func(@mssql_field_name($resource, $i)),
+                'type'  => @mssql_field_type($resource, $i),
+                'length'   => @mssql_field_length($resource, $i),
+                'flags' => '',
+            );
+            $mdb2type_info = $db->datatype->mapNativeDatatype($res[$i]);
+            if (PEAR::isError($mdb2type_info)) {
+               return $mdb2type_info;
+            }
+            $res[$i]['mdb2type'] = $mdb2type_info[0][0];
+            if ($mode & MDB2_TABLEINFO_ORDER) {
+                $res['order'][$res[$i]['name']] = $i;
+            }
+            if ($mode & MDB2_TABLEINFO_ORDERTABLE) {
+                $res['ordertable'][$res[$i]['table']][$res[$i]['name']] = $i;
+            }
+        }
+
+        return $res;
+    }
+
+    // }}}
+    // {{{ _mssql_field_flags()
+
+    /**
+     * Get a column's flags
+     *
+     * Supports "not_null", "primary_key",
+     * "auto_increment" (mssql identity), "timestamp" (mssql timestamp),
+     * "unique_key" (mssql unique index, unique check or primary_key) and
+     * "multiple_key" (multikey index)
+     *
+     * mssql timestamp is NOT similar to the mysql timestamp so this is maybe
+     * not useful at all - is the behaviour of mysql_field_flags that primary
+     * keys are alway unique? is the interpretation of multiple_key correct?
+     *
+     * @param string $table   the table name
+     * @param string $column  the field name
+     *
+     * @return string  the flags
+     *
+     * @access protected
+     * @author Joern Barthel <j_barthel@web.de>
+     */
+    function _mssql_field_flags($table, $column)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        static $tableName = null;
+        static $flags = array();
+
+        if ($table != $tableName) {
+
+            $flags = array();
+            $tableName = $table;
+
+            // get unique and primary keys
+            $res = $db->queryAll("EXEC SP_HELPINDEX[$table]", null, MDB2_FETCHMODE_ASSOC);
+
+            foreach ($res as $val) {
+                $val = array_change_key_case($val, CASE_LOWER);
+                $keys = explode(', ', $val['index_keys']);
+
+                if (sizeof($keys) > 1) {
+                    foreach ($keys as $key) {
+                        $this->_add_flag($flags[$key], 'multiple_key');
+                    }
+                }
+
+                if (strpos($val['index_description'], 'primary key')) {
+                    foreach ($keys as $key) {
+                        $this->_add_flag($flags[$key], 'primary_key');
+                    }
+                } elseif (strpos($val['index_description'], 'unique')) {
+                    foreach ($keys as $key) {
+                        $this->_add_flag($flags[$key], 'unique_key');
+                    }
+                }
+            }
+
+            // get auto_increment, not_null and timestamp
+            $res = $db->queryAll("EXEC SP_COLUMNS[$table]", null, MDB2_FETCHMODE_ASSOC);
+
+            foreach ($res as $val) {
+                $val = array_change_key_case($val, CASE_LOWER);
+                if ($val['nullable'] == '0') {
+                    $this->_add_flag($flags[$val['column_name']], 'not_null');
+                }
+                if (strpos($val['type_name'], 'identity')) {
+                    $this->_add_flag($flags[$val['column_name']], 'auto_increment');
+                }
+                if (strpos($val['type_name'], 'timestamp')) {
+                    $this->_add_flag($flags[$val['column_name']], 'timestamp');
+                }
+            }
+        }
+
+        if (!empty($flags[$column])) {
+            return(implode(' ', $flags[$column]));
+        }
+        return '';
+    }
+
+    // }}}
+    // {{{ _add_flag()
+
+    /**
+     * Adds a string to the flags array if the flag is not yet in there
+     * - if there is no flag present the array is created
+     *
+     * @param array  &$array  the reference to the flag-array
+     * @param string $value   the flag value
+     *
+     * @return void
+     *
+     * @access protected
+     * @author Joern Barthel <j_barthel@web.de>
+     */
+    function _add_flag(&$array, $value)
+    {
+        if (!is_array($array)) {
+            $array = array($value);
+        } elseif (!in_array($value, $array)) {
+            array_push($array, $value);
+        }
+    }
+
+    // }}}
+}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Reverse/mysql.php b/program/lib/MDB2/Driver/Reverse/mysql.php
new file mode 100644 (file)
index 0000000..1cd2ad9
--- /dev/null
@@ -0,0 +1,546 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2007 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Lukas Smith <smith@pooteeweet.org>                           |
+// +----------------------------------------------------------------------+
+//
+// $Id: mysql.php 295587 2010-02-28 17:16:38Z quipo $
+//
+
+require_once 'MDB2/Driver/Reverse/Common.php';
+
+/**
+ * MDB2 MySQL driver for the schema reverse engineering module
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ * @author  Lorenzo Alberton <l.alberton@quipo.it>
+ */
+class MDB2_Driver_Reverse_mysql extends MDB2_Driver_Reverse_Common
+{
+    // {{{ getTableFieldDefinition()
+
+    /**
+     * Get the structure of a field into an array
+     *
+     * @param string $table_name name of table that should be used in method
+     * @param string $field_name name of field that should be used in method
+     * @return mixed data array on success, a MDB2 error on failure
+     * @access public
+     */
+    function getTableFieldDefinition($table_name, $field_name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $result = $db->loadModule('Datatype', null, true);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+
+        list($schema, $table) = $this->splitTableSchema($table_name);
+
+        $table = $db->quoteIdentifier($table, true);
+        $query = "SHOW FULL COLUMNS FROM $table LIKE ".$db->quote($field_name);
+        $columns = $db->queryAll($query, null, MDB2_FETCHMODE_ASSOC);
+        if (PEAR::isError($columns)) {
+            return $columns;
+        }
+        foreach ($columns as $column) {
+            $column = array_change_key_case($column, CASE_LOWER);
+            $column['name'] = $column['field'];
+            unset($column['field']);
+            if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+                if ($db->options['field_case'] == CASE_LOWER) {
+                    $column['name'] = strtolower($column['name']);
+                } else {
+                    $column['name'] = strtoupper($column['name']);
+                }
+            } else {
+                $column = array_change_key_case($column, $db->options['field_case']);
+            }
+            if ($field_name == $column['name']) {
+                $mapped_datatype = $db->datatype->mapNativeDatatype($column);
+                if (PEAR::isError($mapped_datatype)) {
+                    return $mapped_datatype;
+                }
+                list($types, $length, $unsigned, $fixed) = $mapped_datatype;
+                $notnull = false;
+                if (empty($column['null']) || $column['null'] !== 'YES') {
+                    $notnull = true;
+                }
+                $default = false;
+                if (array_key_exists('default', $column)) {
+                    $default = $column['default'];
+                    if ((null === $default) && $notnull) {
+                        $default = '';
+                    }
+                }
+                $definition[0] = array(
+                    'notnull' => $notnull,
+                    'nativetype' => preg_replace('/^([a-z]+)[^a-z].*/i', '\\1', $column['type'])
+                );
+                $autoincrement = false;
+                if (!empty($column['extra'])) {
+                    if ($column['extra'] == 'auto_increment') {
+                        $autoincrement = true;
+                    } else {
+                        $definition[0]['extra'] = $column['extra'];
+                    }
+                }
+                $collate = null;
+                if (!empty($column['collation'])) {
+                    $collate = $column['collation'];
+                    $charset = preg_replace('/(.+?)(_.+)?/', '$1', $collate);
+                }
+
+                if (null !== $length) {
+                    $definition[0]['length'] = $length;
+                }
+                if (null !== $unsigned) {
+                    $definition[0]['unsigned'] = $unsigned;
+                }
+                if (null !== $fixed) {
+                    $definition[0]['fixed'] = $fixed;
+                }
+                if ($default !== false) {
+                    $definition[0]['default'] = $default;
+                }
+                if ($autoincrement !== false) {
+                    $definition[0]['autoincrement'] = $autoincrement;
+                }
+                if (null !== $collate) {
+                    $definition[0]['collate'] = $collate;
+                    $definition[0]['charset'] = $charset;
+                }
+                foreach ($types as $key => $type) {
+                    $definition[$key] = $definition[0];
+                    if ($type == 'clob' || $type == 'blob') {
+                        unset($definition[$key]['default']);
+                    } elseif ($type == 'timestamp' && $notnull && empty($definition[$key]['default'])) {
+                        $definition[$key]['default'] = '0000-00-00 00:00:00';
+                    }
+                    $definition[$key]['type'] = $type;
+                    $definition[$key]['mdb2type'] = $type;
+                }
+                return $definition;
+            }
+        }
+
+        return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+            'it was not specified an existing table column', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ getTableIndexDefinition()
+
+    /**
+     * Get the structure of an index into an array
+     *
+     * @param string $table_name name of table that should be used in method
+     * @param string $index_name name of index that should be used in method
+     * @return mixed data array on success, a MDB2 error on failure
+     * @access public
+     */
+    function getTableIndexDefinition($table_name, $index_name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        list($schema, $table) = $this->splitTableSchema($table_name);
+
+        $table = $db->quoteIdentifier($table, true);
+        $query = "SHOW INDEX FROM $table /*!50002 WHERE Key_name = %s */";
+        $index_name_mdb2 = $db->getIndexName($index_name);
+        $result = $db->queryRow(sprintf($query, $db->quote($index_name_mdb2)));
+        if (!PEAR::isError($result) && (null !== $result)) {
+            // apply 'idxname_format' only if the query succeeded, otherwise
+            // fallback to the given $index_name, without transformation
+            $index_name = $index_name_mdb2;
+        }
+        $result = $db->query(sprintf($query, $db->quote($index_name)));
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        $colpos = 1;
+        $definition = array();
+        while (is_array($row = $result->fetchRow(MDB2_FETCHMODE_ASSOC))) {
+            $row = array_change_key_case($row, CASE_LOWER);
+            $key_name = $row['key_name'];
+            if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+                if ($db->options['field_case'] == CASE_LOWER) {
+                    $key_name = strtolower($key_name);
+                } else {
+                    $key_name = strtoupper($key_name);
+                }
+            }
+            if ($index_name == $key_name) {
+                if (!$row['non_unique']) {
+                    return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                        $index_name . ' is not an existing table index', __FUNCTION__);
+                }
+                $column_name = $row['column_name'];
+                if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+                    if ($db->options['field_case'] == CASE_LOWER) {
+                        $column_name = strtolower($column_name);
+                    } else {
+                        $column_name = strtoupper($column_name);
+                    }
+                }
+                $definition['fields'][$column_name] = array(
+                    'position' => $colpos++
+                );
+                if (!empty($row['collation'])) {
+                    $definition['fields'][$column_name]['sorting'] = ($row['collation'] == 'A'
+                        ? 'ascending' : 'descending');
+                }
+            }
+        }
+        $result->free();
+        if (empty($definition['fields'])) {
+            return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                $index_name . ' is not an existing table index', __FUNCTION__);
+        }
+        return $definition;
+    }
+
+    // }}}
+    // {{{ getTableConstraintDefinition()
+
+    /**
+     * Get the structure of a constraint into an array
+     *
+     * @param string $table_name      name of table that should be used in method
+     * @param string $constraint_name name of constraint that should be used in method
+     * @return mixed data array on success, a MDB2 error on failure
+     * @access public
+     */
+    function getTableConstraintDefinition($table_name, $constraint_name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        list($schema, $table) = $this->splitTableSchema($table_name);
+        $constraint_name_original = $constraint_name;
+
+        $table = $db->quoteIdentifier($table, true);
+        $query = "SHOW INDEX FROM $table /*!50002 WHERE Key_name = %s */";
+        if (strtolower($constraint_name) != 'primary') {
+            $constraint_name_mdb2 = $db->getIndexName($constraint_name);
+            $result = $db->queryRow(sprintf($query, $db->quote($constraint_name_mdb2)));
+            if (!PEAR::isError($result) && (null !== $result)) {
+                // apply 'idxname_format' only if the query succeeded, otherwise
+                // fallback to the given $index_name, without transformation
+                $constraint_name = $constraint_name_mdb2;
+            }
+        }
+        $result = $db->query(sprintf($query, $db->quote($constraint_name)));
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        $colpos = 1;
+        //default values, eventually overridden
+        $definition = array(
+            'primary' => false,
+            'unique'  => false,
+            'foreign' => false,
+            'check'   => false,
+            'fields'  => array(),
+            'references' => array(
+                'table'  => '',
+                'fields' => array(),
+            ),
+            'onupdate'  => '',
+            'ondelete'  => '',
+            'match'     => '',
+            'deferrable'        => false,
+            'initiallydeferred' => false,
+        );
+        while (is_array($row = $result->fetchRow(MDB2_FETCHMODE_ASSOC))) {
+            $row = array_change_key_case($row, CASE_LOWER);
+            $key_name = $row['key_name'];
+            if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+                if ($db->options['field_case'] == CASE_LOWER) {
+                    $key_name = strtolower($key_name);
+                } else {
+                    $key_name = strtoupper($key_name);
+                }
+            }
+            if ($constraint_name == $key_name) {
+                if ($row['non_unique']) {
+                    //FOREIGN KEY?
+                    return $this->_getTableFKConstraintDefinition($table, $constraint_name_original, $definition);
+                }
+                if ($row['key_name'] == 'PRIMARY') {
+                    $definition['primary'] = true;
+                } elseif (!$row['non_unique']) {
+                    $definition['unique'] = true;
+                }
+                $column_name = $row['column_name'];
+                if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+                    if ($db->options['field_case'] == CASE_LOWER) {
+                        $column_name = strtolower($column_name);
+                    } else {
+                        $column_name = strtoupper($column_name);
+                    }
+                }
+                $definition['fields'][$column_name] = array(
+                    'position' => $colpos++
+                );
+                if (!empty($row['collation'])) {
+                    $definition['fields'][$column_name]['sorting'] = ($row['collation'] == 'A'
+                        ? 'ascending' : 'descending');
+                }
+            }
+        }
+        $result->free();
+        if (empty($definition['fields'])) {
+            return $this->_getTableFKConstraintDefinition($table, $constraint_name_original, $definition);
+        }
+        return $definition;
+    }
+
+    // }}}
+    // {{{ _getTableFKConstraintDefinition()
+    
+    /**
+     * Get the FK definition from the CREATE TABLE statement
+     *
+     * @param string $table           table name
+     * @param string $constraint_name constraint name
+     * @param array  $definition      default values for constraint definition
+     *
+     * @return array|PEAR_Error
+     * @access private
+     */
+    function _getTableFKConstraintDefinition($table, $constraint_name, $definition)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+        //Use INFORMATION_SCHEMA instead?
+        //SELECT *
+        //  FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
+        // WHERE CONSTRAINT_SCHEMA = '$dbname'
+        //   AND TABLE_NAME = '$table'
+        //   AND CONSTRAINT_NAME = '$constraint_name';
+        $query = 'SHOW CREATE TABLE '. $db->escape($table);
+        $constraint = $db->queryOne($query, 'text', 1);
+        if (!PEAR::isError($constraint) && !empty($constraint)) {
+            if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+                if ($db->options['field_case'] == CASE_LOWER) {
+                    $constraint = strtolower($constraint);
+                } else {
+                    $constraint = strtoupper($constraint);
+                }
+            }
+            $constraint_name_original = $constraint_name;
+            $constraint_name = $db->getIndexName($constraint_name);
+            $pattern = '/\bCONSTRAINT\s+'.$constraint_name.'\s+FOREIGN KEY\s+\(([^\)]+)\) \bREFERENCES\b ([^\s]+) \(([^\)]+)\)(?: ON DELETE ([^\s]+))?(?: ON UPDATE ([^\s]+))?/i';
+            if (!preg_match($pattern, str_replace('`', '', $constraint), $matches)) {
+                //fallback to original constraint name
+                $pattern = '/\bCONSTRAINT\s+'.$constraint_name_original.'\s+FOREIGN KEY\s+\(([^\)]+)\) \bREFERENCES\b ([^\s]+) \(([^\)]+)\)(?: ON DELETE ([^\s]+))?(?: ON UPDATE ([^\s]+))?/i';
+            }
+            if (preg_match($pattern, str_replace('`', '', $constraint), $matches)) {
+                $definition['foreign'] = true;
+                $column_names = explode(',', $matches[1]);
+                $referenced_cols = explode(',', $matches[3]);
+                $definition['references'] = array(
+                    'table'  => $matches[2],
+                    'fields' => array(),
+                );
+                $colpos = 1;
+                foreach ($column_names as $column_name) {
+                    $definition['fields'][trim($column_name)] = array(
+                        'position' => $colpos++
+                    );
+                }
+                $colpos = 1;
+                foreach ($referenced_cols as $column_name) {
+                    $definition['references']['fields'][trim($column_name)] = array(
+                        'position' => $colpos++
+                    );
+                }
+                $definition['ondelete'] = empty($matches[4]) ? 'RESTRICT' : strtoupper($matches[4]);
+                $definition['onupdate'] = empty($matches[5]) ? 'RESTRICT' : strtoupper($matches[5]);
+                $definition['match']    = 'SIMPLE';
+                return $definition;
+            }
+        }
+        return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                $constraint_name . ' is not an existing table constraint', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ getTriggerDefinition()
+
+    /**
+     * Get the structure of a trigger into an array
+     *
+     * EXPERIMENTAL
+     *
+     * WARNING: this function is experimental and may change the returned value
+     * at any time until labelled as non-experimental
+     *
+     * @param string    $trigger    name of trigger that should be used in method
+     * @return mixed data array on success, a MDB2 error on failure
+     * @access public
+     */
+    function getTriggerDefinition($trigger)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = 'SELECT trigger_name,
+                         event_object_table AS table_name,
+                         action_statement AS trigger_body,
+                         action_timing AS trigger_type,
+                         event_manipulation AS trigger_event
+                    FROM information_schema.triggers
+                   WHERE trigger_name = '. $db->quote($trigger, 'text');
+        $types = array(
+            'trigger_name'    => 'text',
+            'table_name'      => 'text',
+            'trigger_body'    => 'text',
+            'trigger_type'    => 'text',
+            'trigger_event'   => 'text',
+        );
+        $def = $db->queryRow($query, $types, MDB2_FETCHMODE_ASSOC);
+        if (PEAR::isError($def)) {
+            return $def;
+        }
+        $def['trigger_comment'] = '';
+        $def['trigger_enabled'] = true;
+        return $def;
+    }
+
+    // }}}
+    // {{{ tableInfo()
+
+    /**
+     * Returns information about a table or a result set
+     *
+     * @param object|string  $result  MDB2_result object from a query or a
+     *                                 string containing the name of a table.
+     *                                 While this also accepts a query result
+     *                                 resource identifier, this behavior is
+     *                                 deprecated.
+     * @param int            $mode    a valid tableInfo mode
+     *
+     * @return array  an associative array with the information requested.
+     *                 A MDB2_Error object on failure.
+     *
+     * @see MDB2_Driver_Common::setOption()
+     */
+    function tableInfo($result, $mode = null)
+    {
+        if (is_string($result)) {
+           return parent::tableInfo($result, $mode);
+        }
+
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $resource = MDB2::isResultCommon($result) ? $result->getResource() : $result;
+        if (!is_resource($resource)) {
+            return $db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
+                'Could not generate result resource', __FUNCTION__);
+        }
+
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            if ($db->options['field_case'] == CASE_LOWER) {
+                $case_func = 'strtolower';
+            } else {
+                $case_func = 'strtoupper';
+            }
+        } else {
+            $case_func = 'strval';
+        }
+
+        $count = @mysql_num_fields($resource);
+        $res   = array();
+        if ($mode) {
+            $res['num_fields'] = $count;
+        }
+
+        $db->loadModule('Datatype', null, true);
+        for ($i = 0; $i < $count; $i++) {
+            $res[$i] = array(
+                'table'  => $case_func(@mysql_field_table($resource, $i)),
+                'name'   => $case_func(@mysql_field_name($resource, $i)),
+                'type'   => @mysql_field_type($resource, $i),
+                'length' => @mysql_field_len($resource, $i),
+                'flags'  => @mysql_field_flags($resource, $i),
+            );
+            if ($res[$i]['type'] == 'string') {
+                $res[$i]['type'] = 'char';
+            } elseif ($res[$i]['type'] == 'unknown') {
+                $res[$i]['type'] = 'decimal';
+            }
+            $mdb2type_info = $db->datatype->mapNativeDatatype($res[$i]);
+            if (PEAR::isError($mdb2type_info)) {
+               return $mdb2type_info;
+            }
+            $res[$i]['mdb2type'] = $mdb2type_info[0][0];
+            if ($mode & MDB2_TABLEINFO_ORDER) {
+                $res['order'][$res[$i]['name']] = $i;
+            }
+            if ($mode & MDB2_TABLEINFO_ORDERTABLE) {
+                $res['ordertable'][$res[$i]['table']][$res[$i]['name']] = $i;
+            }
+        }
+
+        return $res;
+    }
+}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Reverse/mysqli.php b/program/lib/MDB2/Driver/Reverse/mysqli.php
new file mode 100644 (file)
index 0000000..10e9183
--- /dev/null
@@ -0,0 +1,610 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2007 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Lukas Smith <smith@pooteeweet.org>                           |
+// +----------------------------------------------------------------------+
+//
+// $Id: mysqli.php 295587 2010-02-28 17:16:38Z quipo $
+//
+
+require_once 'MDB2/Driver/Reverse/Common.php';
+
+/**
+ * MDB2 MySQLi driver for the schema reverse engineering module
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ * @author  Lorenzo Alberton <l.alberton@quipo.it>
+ */
+class MDB2_Driver_Reverse_mysqli extends MDB2_Driver_Reverse_Common
+{
+    /**
+     * Array for converting MYSQLI_*_FLAG constants to text values
+     * @var    array
+     * @access public
+     */
+    var $flags = array(
+        MYSQLI_NOT_NULL_FLAG        => 'not_null',
+        MYSQLI_PRI_KEY_FLAG         => 'primary_key',
+        MYSQLI_UNIQUE_KEY_FLAG      => 'unique_key',
+        MYSQLI_MULTIPLE_KEY_FLAG    => 'multiple_key',
+        MYSQLI_BLOB_FLAG            => 'blob',
+        MYSQLI_UNSIGNED_FLAG        => 'unsigned',
+        MYSQLI_ZEROFILL_FLAG        => 'zerofill',
+        MYSQLI_AUTO_INCREMENT_FLAG  => 'auto_increment',
+        MYSQLI_TIMESTAMP_FLAG       => 'timestamp',
+        MYSQLI_SET_FLAG             => 'set',
+        // MYSQLI_NUM_FLAG             => 'numeric',  // unnecessary
+        // MYSQLI_PART_KEY_FLAG        => 'multiple_key',  // duplicatvie
+        MYSQLI_GROUP_FLAG           => 'group_by'
+    );
+
+    /**
+     * Array for converting MYSQLI_TYPE_* constants to text values
+     * @var    array
+     * @access public
+     */
+    var $types = array(
+        MYSQLI_TYPE_DECIMAL     => 'decimal',
+        246                     => 'decimal',
+        MYSQLI_TYPE_TINY        => 'tinyint',
+        MYSQLI_TYPE_SHORT       => 'int',
+        MYSQLI_TYPE_LONG        => 'int',
+        MYSQLI_TYPE_FLOAT       => 'float',
+        MYSQLI_TYPE_DOUBLE      => 'double',
+        // MYSQLI_TYPE_NULL        => 'DEFAULT NULL',  // let flags handle it
+        MYSQLI_TYPE_TIMESTAMP   => 'timestamp',
+        MYSQLI_TYPE_LONGLONG    => 'bigint',
+        MYSQLI_TYPE_INT24       => 'mediumint',
+        MYSQLI_TYPE_DATE        => 'date',
+        MYSQLI_TYPE_TIME        => 'time',
+        MYSQLI_TYPE_DATETIME    => 'datetime',
+        MYSQLI_TYPE_YEAR        => 'year',
+        MYSQLI_TYPE_NEWDATE     => 'date',
+        MYSQLI_TYPE_ENUM        => 'enum',
+        MYSQLI_TYPE_SET         => 'set',
+        MYSQLI_TYPE_TINY_BLOB   => 'tinyblob',
+        MYSQLI_TYPE_MEDIUM_BLOB => 'mediumblob',
+        MYSQLI_TYPE_LONG_BLOB   => 'longblob',
+        MYSQLI_TYPE_BLOB        => 'blob',
+        MYSQLI_TYPE_VAR_STRING  => 'varchar',
+        MYSQLI_TYPE_STRING      => 'char',
+        MYSQLI_TYPE_GEOMETRY    => 'geometry',
+    );
+
+    // {{{ getTableFieldDefinition()
+
+    /**
+     * Get the structure of a field into an array
+     *
+     * @param string $table_name name of table that should be used in method
+     * @param string $field_name name of field that should be used in method
+     * @return mixed data array on success, a MDB2 error on failure
+     * @access public
+     */
+    function getTableFieldDefinition($table_name, $field_name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $result = $db->loadModule('Datatype', null, true);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+
+        list($schema, $table) = $this->splitTableSchema($table_name);
+
+        $table = $db->quoteIdentifier($table, true);
+        $query = "SHOW FULL COLUMNS FROM $table LIKE ".$db->quote($field_name);
+        $columns = $db->queryAll($query, null, MDB2_FETCHMODE_ASSOC);
+        if (PEAR::isError($columns)) {
+            return $columns;
+        }
+        foreach ($columns as $column) {
+            $column = array_change_key_case($column, CASE_LOWER);
+            $column['name'] = $column['field'];
+            unset($column['field']);
+            if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+                if ($db->options['field_case'] == CASE_LOWER) {
+                    $column['name'] = strtolower($column['name']);
+                } else {
+                    $column['name'] = strtoupper($column['name']);
+                }
+            } else {
+                $column = array_change_key_case($column, $db->options['field_case']);
+            }
+            if ($field_name == $column['name']) {
+                $mapped_datatype = $db->datatype->mapNativeDatatype($column);
+                if (PEAR::isError($mapped_datatype)) {
+                    return $mapped_datatype;
+                }
+                list($types, $length, $unsigned, $fixed) = $mapped_datatype;
+                $notnull = false;
+                if (empty($column['null']) || $column['null'] !== 'YES') {
+                    $notnull = true;
+                }
+                $default = false;
+                if (array_key_exists('default', $column)) {
+                    $default = $column['default'];
+                    if ((null === $default) && $notnull) {
+                        $default = '';
+                    }
+                }
+                $definition[0] = array(
+                    'notnull' => $notnull,
+                    'nativetype' => preg_replace('/^([a-z]+)[^a-z].*/i', '\\1', $column['type'])
+                );
+                $autoincrement = false;
+                if (!empty($column['extra'])) {
+                    if ($column['extra'] == 'auto_increment') {
+                        $autoincrement = true;
+                    } else {
+                        $definition[0]['extra'] = $column['extra'];
+                    }
+                }
+                $collate = null;
+                if (!empty($column['collation'])) {
+                    $collate = $column['collation'];
+                    $charset = preg_replace('/(.+?)(_.+)?/', '$1', $collate);
+                }
+
+                if (null !== $length) {
+                    $definition[0]['length'] = $length;
+                }
+                if (null !== $unsigned) {
+                    $definition[0]['unsigned'] = $unsigned;
+                }
+                if (null !== $fixed) {
+                    $definition[0]['fixed'] = $fixed;
+                }
+                if ($default !== false) {
+                    $definition[0]['default'] = $default;
+                }
+                if ($autoincrement !== false) {
+                    $definition[0]['autoincrement'] = $autoincrement;
+                }
+                if (null !== $collate) {
+                    $definition[0]['collate'] = $collate;
+                    $definition[0]['charset'] = $charset;
+                }
+                foreach ($types as $key => $type) {
+                    $definition[$key] = $definition[0];
+                    if ($type == 'clob' || $type == 'blob') {
+                        unset($definition[$key]['default']);
+                    } elseif ($type == 'timestamp' && $notnull && empty($definition[$key]['default'])) {
+                        $definition[$key]['default'] = '0000-00-00 00:00:00';
+                    }
+                    $definition[$key]['type'] = $type;
+                    $definition[$key]['mdb2type'] = $type;
+                }
+                return $definition;
+            }
+        }
+
+        return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+            'it was not specified an existing table column', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ getTableIndexDefinition()
+
+    /**
+     * Get the structure of an index into an array
+     *
+     * @param string $table_name name of table that should be used in method
+     * @param string $index_name name of index that should be used in method
+     * @return mixed data array on success, a MDB2 error on failure
+     * @access public
+     */
+    function getTableIndexDefinition($table_name, $index_name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        list($schema, $table) = $this->splitTableSchema($table_name);
+
+        $table = $db->quoteIdentifier($table, true);
+        $query = "SHOW INDEX FROM $table /*!50002 WHERE Key_name = %s */";
+        $index_name_mdb2 = $db->getIndexName($index_name);
+        $result = $db->queryRow(sprintf($query, $db->quote($index_name_mdb2)));
+        if (!PEAR::isError($result) && (null !== $result)) {
+            // apply 'idxname_format' only if the query succeeded, otherwise
+            // fallback to the given $index_name, without transformation
+            $index_name = $index_name_mdb2;
+        }
+        $result = $db->query(sprintf($query, $db->quote($index_name)));
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        $colpos = 1;
+        $definition = array();
+        while (is_array($row = $result->fetchRow(MDB2_FETCHMODE_ASSOC))) {
+            $row = array_change_key_case($row, CASE_LOWER);
+            $key_name = $row['key_name'];
+            if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+                if ($db->options['field_case'] == CASE_LOWER) {
+                    $key_name = strtolower($key_name);
+                } else {
+                    $key_name = strtoupper($key_name);
+                }
+            }
+            if ($index_name == $key_name) {
+                if (!$row['non_unique']) {
+                    return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                        $index_name . ' is not an existing table index', __FUNCTION__);
+                }
+                $column_name = $row['column_name'];
+                if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+                    if ($db->options['field_case'] == CASE_LOWER) {
+                        $column_name = strtolower($column_name);
+                    } else {
+                        $column_name = strtoupper($column_name);
+                    }
+                }
+                $definition['fields'][$column_name] = array(
+                    'position' => $colpos++
+                );
+                if (!empty($row['collation'])) {
+                    $definition['fields'][$column_name]['sorting'] = ($row['collation'] == 'A'
+                        ? 'ascending' : 'descending');
+                }
+            }
+        }
+        $result->free();
+        if (empty($definition['fields'])) {
+            return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                $index_name . ' is not an existing table index', __FUNCTION__);
+        }
+        return $definition;
+    }
+
+    // }}}
+    // {{{ getTableConstraintDefinition()
+
+    /**
+     * Get the structure of a constraint into an array
+     *
+     * @param string $table_name      name of table that should be used in method
+     * @param string $constraint_name name of constraint that should be used in method
+     * @return mixed data array on success, a MDB2 error on failure
+     * @access public
+     */
+    function getTableConstraintDefinition($table_name, $constraint_name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        list($schema, $table) = $this->splitTableSchema($table_name);
+        $constraint_name_original = $constraint_name;
+
+        $table = $db->quoteIdentifier($table, true);
+        $query = "SHOW INDEX FROM $table /*!50002 WHERE Key_name = %s */";
+        if (strtolower($constraint_name) != 'primary') {
+            $constraint_name_mdb2 = $db->getIndexName($constraint_name);
+            $result = $db->queryRow(sprintf($query, $db->quote($constraint_name_mdb2)));
+            if (!PEAR::isError($result) && (null !== $result)) {
+                // apply 'idxname_format' only if the query succeeded, otherwise
+                // fallback to the given $index_name, without transformation
+                $constraint_name = $constraint_name_mdb2;
+            }
+        }
+        $result = $db->query(sprintf($query, $db->quote($constraint_name)));
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        $colpos = 1;
+        //default values, eventually overridden
+        $definition = array(
+            'primary' => false,
+            'unique'  => false,
+            'foreign' => false,
+            'check'   => false,
+            'fields'  => array(),
+            'references' => array(
+                'table'  => '',
+                'fields' => array(),
+            ),
+            'onupdate'  => '',
+            'ondelete'  => '',
+            'match'     => '',
+            'deferrable'        => false,
+            'initiallydeferred' => false,
+        );
+        while (is_array($row = $result->fetchRow(MDB2_FETCHMODE_ASSOC))) {
+            $row = array_change_key_case($row, CASE_LOWER);
+            $key_name = $row['key_name'];
+            if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+                if ($db->options['field_case'] == CASE_LOWER) {
+                    $key_name = strtolower($key_name);
+                } else {
+                    $key_name = strtoupper($key_name);
+                }
+            }
+            if ($constraint_name == $key_name) {
+                if ($row['non_unique']) {
+                    //FOREIGN KEY?
+                    return $this->_getTableFKConstraintDefinition($table, $constraint_name_original, $definition);
+                }
+                if ($row['key_name'] == 'PRIMARY') {
+                    $definition['primary'] = true;
+                } elseif (!$row['non_unique']) {
+                    $definition['unique'] = true;
+                }
+                $column_name = $row['column_name'];
+                if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+                    if ($db->options['field_case'] == CASE_LOWER) {
+                        $column_name = strtolower($column_name);
+                    } else {
+                        $column_name = strtoupper($column_name);
+                    }
+                }
+                $definition['fields'][$column_name] = array(
+                    'position' => $colpos++
+                );
+                if (!empty($row['collation'])) {
+                    $definition['fields'][$column_name]['sorting'] = ($row['collation'] == 'A'
+                        ? 'ascending' : 'descending');
+                }
+            }
+        }
+        $result->free();
+        if (empty($definition['fields'])) {
+            return $this->_getTableFKConstraintDefinition($table, $constraint_name_original, $definition);
+        }
+        return $definition;
+    }
+
+    // }}}
+    // {{{ _getTableFKConstraintDefinition()
+
+    /**
+     * Get the FK definition from the CREATE TABLE statement
+     *
+     * @param string $table           table name
+     * @param string $constraint_name constraint name
+     * @param array  $definition      default values for constraint definition
+     *
+     * @return array|PEAR_Error
+     * @access private
+     */
+    function _getTableFKConstraintDefinition($table, $constraint_name, $definition)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+        //Use INFORMATION_SCHEMA instead?
+        //SELECT *
+        //  FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
+        // WHERE CONSTRAINT_SCHEMA = '$dbname'
+        //   AND TABLE_NAME = '$table'
+        //   AND CONSTRAINT_NAME = '$constraint_name';
+        $query = 'SHOW CREATE TABLE '. $db->escape($table);
+        $constraint = $db->queryOne($query, 'text', 1);
+        if (!PEAR::isError($constraint) && !empty($constraint)) {
+            if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+                if ($db->options['field_case'] == CASE_LOWER) {
+                    $constraint = strtolower($constraint);
+                } else {
+                    $constraint = strtoupper($constraint);
+                }
+            }
+            $constraint_name_original = $constraint_name;
+            $constraint_name = $db->getIndexName($constraint_name);
+            $pattern = '/\bCONSTRAINT\s+'.$constraint_name.'\s+FOREIGN KEY\s+\(([^\)]+)\) \bREFERENCES\b ([^\s]+) \(([^\)]+)\)(?: ON DELETE ([^\s]+))?(?: ON UPDATE ([^\s]+))?/i';
+            if (!preg_match($pattern, str_replace('`', '', $constraint), $matches)) {
+                //fallback to original constraint name
+                $pattern = '/\bCONSTRAINT\s+'.$constraint_name_original.'\s+FOREIGN KEY\s+\(([^\)]+)\) \bREFERENCES\b ([^\s]+) \(([^\)]+)\)(?: ON DELETE ([^\s]+))?(?: ON UPDATE ([^\s]+))?/i';
+            }
+            if (preg_match($pattern, str_replace('`', '', $constraint), $matches)) {
+                $definition['foreign'] = true;
+                $column_names = explode(',', $matches[1]);
+                $referenced_cols = explode(',', $matches[3]);
+                $definition['references'] = array(
+                    'table'  => $matches[2],
+                    'fields' => array(),
+                );
+                $colpos = 1;
+                foreach ($column_names as $column_name) {
+                    $definition['fields'][trim($column_name)] = array(
+                        'position' => $colpos++
+                    );
+                }
+                $colpos = 1;
+                foreach ($referenced_cols as $column_name) {
+                    $definition['references']['fields'][trim($column_name)] = array(
+                        'position' => $colpos++
+                    );
+                }
+                $definition['ondelete'] = empty($matches[4]) ? 'RESTRICT' : strtoupper($matches[4]);
+                $definition['onupdate'] = empty($matches[5]) ? 'RESTRICT' : strtoupper($matches[5]);
+                $definition['match']    = 'SIMPLE';
+                return $definition;
+            }
+        }
+        return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                $constraint_name . ' is not an existing table constraint', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ getTriggerDefinition()
+
+    /**
+     * Get the structure of a trigger into an array
+     *
+     * EXPERIMENTAL
+     *
+     * WARNING: this function is experimental and may change the returned value
+     * at any time until labelled as non-experimental
+     *
+     * @param string    $trigger    name of trigger that should be used in method
+     * @return mixed data array on success, a MDB2 error on failure
+     * @access public
+     */
+    function getTriggerDefinition($trigger)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = 'SELECT trigger_name,
+                         event_object_table AS table_name,
+                         action_statement AS trigger_body,
+                         action_timing AS trigger_type,
+                         event_manipulation AS trigger_event
+                    FROM information_schema.triggers
+                   WHERE trigger_name = '. $db->quote($trigger, 'text');
+        $types = array(
+            'trigger_name'    => 'text',
+            'table_name'      => 'text',
+            'trigger_body'    => 'text',
+            'trigger_type'    => 'text',
+            'trigger_event'   => 'text',
+        );
+        $def = $db->queryRow($query, $types, MDB2_FETCHMODE_ASSOC);
+        if (PEAR::isError($def)) {
+            return $def;
+        }
+        $def['trigger_comment'] = '';
+        $def['trigger_enabled'] = true;
+        return $def;
+    }
+
+    // }}}
+    // {{{ tableInfo()
+
+    /**
+     * Returns information about a table or a result set
+     *
+     * @param object|string  $result  MDB2_result object from a query or a
+     *                                 string containing the name of a table.
+     *                                 While this also accepts a query result
+     *                                 resource identifier, this behavior is
+     *                                 deprecated.
+     * @param int            $mode    a valid tableInfo mode
+     *
+     * @return array  an associative array with the information requested.
+     *                 A MDB2_Error object on failure.
+     *
+     * @see MDB2_Driver_Common::setOption()
+     */
+    function tableInfo($result, $mode = null)
+    {
+        if (is_string($result)) {
+           return parent::tableInfo($result, $mode);
+        }
+
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $resource = MDB2::isResultCommon($result) ? $result->getResource() : $result;
+        if (!is_object($resource)) {
+            return $db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
+                'Could not generate result resource', __FUNCTION__);
+        }
+
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            if ($db->options['field_case'] == CASE_LOWER) {
+                $case_func = 'strtolower';
+            } else {
+                $case_func = 'strtoupper';
+            }
+        } else {
+            $case_func = 'strval';
+        }
+
+        $count = @mysqli_num_fields($resource);
+        $res = array();
+        if ($mode) {
+            $res['num_fields'] = $count;
+        }
+
+        $db->loadModule('Datatype', null, true);
+        for ($i = 0; $i < $count; $i++) {
+            $tmp = @mysqli_fetch_field($resource);
+
+            $flags = '';
+            foreach ($this->flags as $const => $means) {
+                if ($tmp->flags & $const) {
+                    $flags.= $means . ' ';
+                }
+            }
+            if ($tmp->def) {
+                $flags.= 'default_' . rawurlencode($tmp->def);
+            }
+            $flags = trim($flags);
+
+            $res[$i] = array(
+                'table'  => $case_func($tmp->table),
+                'name'   => $case_func($tmp->name),
+                'type'   => isset($this->types[$tmp->type])
+                    ? $this->types[$tmp->type] : 'unknown',
+                // http://bugs.php.net/?id=36579
+                'length' => $tmp->length,
+                'flags'  => $flags,
+            );
+            $mdb2type_info = $db->datatype->mapNativeDatatype($res[$i]);
+            if (PEAR::isError($mdb2type_info)) {
+               return $mdb2type_info;
+            }
+            $res[$i]['mdb2type'] = $mdb2type_info[0][0];
+            if ($mode & MDB2_TABLEINFO_ORDER) {
+                $res['order'][$res[$i]['name']] = $i;
+            }
+            if ($mode & MDB2_TABLEINFO_ORDERTABLE) {
+                $res['ordertable'][$res[$i]['table']][$res[$i]['name']] = $i;
+            }
+        }
+
+        return $res;
+    }
+}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Reverse/pgsql.php b/program/lib/MDB2/Driver/Reverse/pgsql.php
new file mode 100644 (file)
index 0000000..a630f30
--- /dev/null
@@ -0,0 +1,574 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2008 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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.                                          |
+// +----------------------------------------------------------------------+
+// | Authors: Paul Cooper <pgc@ucecom.com>                                |
+// |          Lorenzo Alberton <l.alberton@quipo.it>                      |
+// +----------------------------------------------------------------------+
+//
+// $Id: pgsql.php 295587 2010-02-28 17:16:38Z quipo $
+
+require_once 'MDB2/Driver/Reverse/Common.php';
+
+/**
+ * MDB2 PostGreSQL driver for the schema reverse engineering module
+ *
+ * @package  MDB2
+ * @category Database
+ * @author   Paul Cooper <pgc@ucecom.com>
+ * @author   Lorenzo Alberton <l.alberton@quipo.it>
+ */
+class MDB2_Driver_Reverse_pgsql extends MDB2_Driver_Reverse_Common
+{
+    // {{{ getTableFieldDefinition()
+
+    /**
+     * Get the structure of a field into an array
+     *
+     * @param string $table_name name of table that should be used in method
+     * @param string $field_name name of field that should be used in method
+     * @return mixed data array on success, a MDB2 error on failure
+     * @access public
+     */
+    function getTableFieldDefinition($table_name, $field_name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $result = $db->loadModule('Datatype', null, true);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+
+        list($schema, $table) = $this->splitTableSchema($table_name);
+
+        $query = "SELECT a.attname AS name,
+                         t.typname AS type,
+                         CASE a.attlen
+                           WHEN -1 THEN
+                                CASE t.typname
+                                  WHEN 'numeric' THEN (a.atttypmod / 65536)
+                                  WHEN 'decimal' THEN (a.atttypmod / 65536)
+                                  WHEN 'money'   THEN (a.atttypmod / 65536)
+                                  ELSE CASE a.atttypmod
+                                 WHEN -1 THEN NULL
+                                    ELSE a.atttypmod - 4
+                                  END
+                             END
+                              ELSE a.attlen
+                         END AS length,
+                            CASE t.typname
+                              WHEN 'numeric' THEN (a.atttypmod % 65536) - 4
+                              WHEN 'decimal' THEN (a.atttypmod % 65536) - 4
+                              WHEN 'money'   THEN (a.atttypmod % 65536) - 4
+                              ELSE 0
+                         END AS scale,
+                         a.attnotnull,
+                         a.atttypmod,
+                         a.atthasdef,
+                         (SELECT substring(pg_get_expr(d.adbin, d.adrelid) for 128)
+                            FROM pg_attrdef d
+                           WHERE d.adrelid = a.attrelid
+                             AND d.adnum = a.attnum
+                             AND a.atthasdef
+                         ) as default
+                    FROM pg_attribute a,
+                         pg_class c,
+                         pg_type t
+                   WHERE c.relname = ".$db->quote($table, 'text')."
+                     AND a.atttypid = t.oid
+                     AND c.oid = a.attrelid
+                     AND NOT a.attisdropped
+                     AND a.attnum > 0
+                     AND a.attname = ".$db->quote($field_name, 'text')."
+                ORDER BY a.attnum";
+        $column = $db->queryRow($query, null, MDB2_FETCHMODE_ASSOC);
+        if (PEAR::isError($column)) {
+            return $column;
+        }
+
+        if (empty($column)) {
+            return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                'it was not specified an existing table column', __FUNCTION__);
+        }
+
+        $column = array_change_key_case($column, CASE_LOWER);
+        $mapped_datatype = $db->datatype->mapNativeDatatype($column);
+        if (PEAR::isError($mapped_datatype)) {
+            return $mapped_datatype;
+        }
+        list($types, $length, $unsigned, $fixed) = $mapped_datatype;
+        $notnull = false;
+        if (!empty($column['attnotnull']) && $column['attnotnull'] == 't') {
+            $notnull = true;
+        }
+        $default = null;
+        if ($column['atthasdef'] === 't'
+            && strpos($column['default'], 'NULL') !== 0
+            && !preg_match("/nextval\('([^']+)'/", $column['default'])
+        ) {
+            $pattern = '/^\'(.*)\'::[\w ]+$/i';
+            $default = $column['default'];#substr($column['adsrc'], 1, -1);
+            if ((null === $default) && $notnull) {
+                $default = '';
+            } elseif (!empty($default) && preg_match($pattern, $default)) {
+                //remove data type cast
+                $default = preg_replace ($pattern, '\\1', $default);
+            }
+        }
+        $autoincrement = false;
+        if (preg_match("/nextval\('([^']+)'/", $column['default'], $nextvals)) {
+            $autoincrement = true;
+        }
+        $definition[0] = array('notnull' => $notnull, 'nativetype' => $column['type']);
+        if (null !== $length) {
+            $definition[0]['length'] = $length;
+        }
+        if (null !== $unsigned) {
+            $definition[0]['unsigned'] = $unsigned;
+        }
+        if (null !== $fixed) {
+            $definition[0]['fixed'] = $fixed;
+        }
+        if ($default !== false) {
+            $definition[0]['default'] = $default;
+        }
+        if ($autoincrement !== false) {
+            $definition[0]['autoincrement'] = $autoincrement;
+        }
+        foreach ($types as $key => $type) {
+            $definition[$key] = $definition[0];
+            if ($type == 'clob' || $type == 'blob') {
+                unset($definition[$key]['default']);
+            }
+            $definition[$key]['type'] = $type;
+            $definition[$key]['mdb2type'] = $type;
+        }
+        return $definition;
+    }
+
+    // }}}
+    // {{{ getTableIndexDefinition()
+
+    /**
+     * Get the structure of an index into an array
+     *
+     * @param string $table_name name of table that should be used in method
+     * @param string $index_name name of index that should be used in method
+     * @return mixed data array on success, a MDB2 error on failure
+     * @access public
+     */
+    function getTableIndexDefinition($table_name, $index_name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+        
+        list($schema, $table) = $this->splitTableSchema($table_name);
+
+        $query = 'SELECT relname, indkey FROM pg_index, pg_class';
+        $query.= ' WHERE pg_class.oid = pg_index.indexrelid';
+        $query.= " AND indisunique != 't' AND indisprimary != 't'";
+        $query.= ' AND pg_class.relname = %s';
+        $index_name_mdb2 = $db->getIndexName($index_name);
+        $row = $db->queryRow(sprintf($query, $db->quote($index_name_mdb2, 'text')), null, MDB2_FETCHMODE_ASSOC);
+        if (PEAR::isError($row) || empty($row)) {
+            // fallback to the given $index_name, without transformation
+            $row = $db->queryRow(sprintf($query, $db->quote($index_name, 'text')), null, MDB2_FETCHMODE_ASSOC);
+        }
+        if (PEAR::isError($row)) {
+            return $row;
+        }
+
+        if (empty($row)) {
+            return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                'it was not specified an existing table index', __FUNCTION__);
+        }
+
+        $row = array_change_key_case($row, CASE_LOWER);
+
+        $db->loadModule('Manager', null, true);
+        $columns = $db->manager->listTableFields($table_name);
+
+        $definition = array();
+
+        $index_column_numbers = explode(' ', $row['indkey']);
+
+        $colpos = 1;
+        foreach ($index_column_numbers as $number) {
+            $definition['fields'][$columns[($number - 1)]] = array(
+                'position' => $colpos++,
+                'sorting' => 'ascending',
+            );
+        }
+        return $definition;
+    }
+
+    // }}}
+    // {{{ getTableConstraintDefinition()
+
+    /**
+     * Get the structure of a constraint into an array
+     *
+     * @param string $table_name      name of table that should be used in method
+     * @param string $constraint_name name of constraint that should be used in method
+     * @return mixed data array on success, a MDB2 error on failure
+     * @access public
+     */
+    function getTableConstraintDefinition($table_name, $constraint_name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+        
+        list($schema, $table) = $this->splitTableSchema($table_name);
+
+        $query = "SELECT c.oid,
+                         c.conname AS constraint_name,
+                         CASE WHEN c.contype = 'c' THEN 1 ELSE 0 END AS \"check\",
+                         CASE WHEN c.contype = 'f' THEN 1 ELSE 0 END AS \"foreign\",
+                         CASE WHEN c.contype = 'p' THEN 1 ELSE 0 END AS \"primary\",
+                         CASE WHEN c.contype = 'u' THEN 1 ELSE 0 END AS \"unique\",
+                         CASE WHEN c.condeferrable = 'f' THEN 0 ELSE 1 END AS deferrable,
+                         CASE WHEN c.condeferred = 'f' THEN 0 ELSE 1 END AS initiallydeferred,
+                         --array_to_string(c.conkey, ' ') AS constraint_key,
+                         t.relname AS table_name,
+                         t2.relname AS references_table,
+                         CASE confupdtype
+                           WHEN 'a' THEN 'NO ACTION'
+                           WHEN 'r' THEN 'RESTRICT'
+                           WHEN 'c' THEN 'CASCADE'
+                           WHEN 'n' THEN 'SET NULL'
+                           WHEN 'd' THEN 'SET DEFAULT'
+                         END AS onupdate,
+                         CASE confdeltype
+                           WHEN 'a' THEN 'NO ACTION'
+                           WHEN 'r' THEN 'RESTRICT'
+                           WHEN 'c' THEN 'CASCADE'
+                           WHEN 'n' THEN 'SET NULL'
+                           WHEN 'd' THEN 'SET DEFAULT'
+                         END AS ondelete,
+                         CASE confmatchtype
+                           WHEN 'u' THEN 'UNSPECIFIED'
+                           WHEN 'f' THEN 'FULL'
+                           WHEN 'p' THEN 'PARTIAL'
+                         END AS match,
+                         --array_to_string(c.confkey, ' ') AS fk_constraint_key,
+                         consrc
+                    FROM pg_constraint c
+               LEFT JOIN pg_class t  ON c.conrelid  = t.oid
+               LEFT JOIN pg_class t2 ON c.confrelid = t2.oid
+                   WHERE c.conname = %s
+                     AND t.relname = " . $db->quote($table, 'text');
+        $constraint_name_mdb2 = $db->getIndexName($constraint_name);
+        $row = $db->queryRow(sprintf($query, $db->quote($constraint_name_mdb2, 'text')), null, MDB2_FETCHMODE_ASSOC);
+        if (PEAR::isError($row) || empty($row)) {
+            // fallback to the given $index_name, without transformation
+            $constraint_name_mdb2 = $constraint_name;
+            $row = $db->queryRow(sprintf($query, $db->quote($constraint_name_mdb2, 'text')), null, MDB2_FETCHMODE_ASSOC);
+        }
+        if (PEAR::isError($row)) {
+            return $row;
+        }
+        $uniqueIndex = false;
+        if (empty($row)) {
+            // We might be looking for a UNIQUE index that was not created
+            // as a constraint but should be treated as such.
+            $query = 'SELECT relname AS constraint_name,
+                             indkey,
+                             0 AS "check",
+                             0 AS "foreign",
+                             0 AS "primary",
+                             1 AS "unique",
+                             0 AS deferrable,
+                             0 AS initiallydeferred,
+                             NULL AS references_table,
+                             NULL AS onupdate,
+                             NULL AS ondelete,
+                             NULL AS match
+                        FROM pg_index, pg_class
+                       WHERE pg_class.oid = pg_index.indexrelid
+                         AND indisunique = \'t\'
+                         AND pg_class.relname = %s';
+            $constraint_name_mdb2 = $db->getIndexName($constraint_name);
+            $row = $db->queryRow(sprintf($query, $db->quote($constraint_name_mdb2, 'text')), null, MDB2_FETCHMODE_ASSOC);
+            if (PEAR::isError($row) || empty($row)) {
+                // fallback to the given $index_name, without transformation
+                $constraint_name_mdb2 = $constraint_name;
+                $row = $db->queryRow(sprintf($query, $db->quote($constraint_name_mdb2, 'text')), null, MDB2_FETCHMODE_ASSOC);
+            }
+            if (PEAR::isError($row)) {
+                return $row;
+            }
+            if (empty($row)) {
+                return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                    $constraint_name . ' is not an existing table constraint', __FUNCTION__);
+            }
+            $uniqueIndex = true;
+        }
+
+        $row = array_change_key_case($row, CASE_LOWER);
+
+        $definition = array(
+            'primary' => (boolean)$row['primary'],
+            'unique'  => (boolean)$row['unique'],
+            'foreign' => (boolean)$row['foreign'],
+            'check'   => (boolean)$row['check'],
+            'fields'  => array(),
+            'references' => array(
+                'table'  => $row['references_table'],
+                'fields' => array(),
+            ),
+            'deferrable' => (boolean)$row['deferrable'],
+            'initiallydeferred' => (boolean)$row['initiallydeferred'],
+            'onupdate' => $row['onupdate'],
+            'ondelete' => $row['ondelete'],
+            'match'    => $row['match'],
+        );
+
+        if ($uniqueIndex) {
+            $db->loadModule('Manager', null, true);
+            $columns = $db->manager->listTableFields($table_name);
+            $index_column_numbers = explode(' ', $row['indkey']);
+            $colpos = 1;
+            foreach ($index_column_numbers as $number) {
+                $definition['fields'][$columns[($number - 1)]] = array(
+                    'position' => $colpos++,
+                    'sorting'  => 'ascending',
+                );
+            }
+            return $definition;
+        }
+
+        $query = 'SELECT a.attname
+                    FROM pg_constraint c
+               LEFT JOIN pg_class t  ON c.conrelid  = t.oid
+               LEFT JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = ANY(c.conkey)
+                   WHERE c.conname = %s
+                     AND t.relname = ' . $db->quote($table, 'text');
+        $fields = $db->queryCol(sprintf($query, $db->quote($constraint_name_mdb2, 'text')), null);
+        if (PEAR::isError($fields)) {
+            return $fields;
+        }
+        $colpos = 1;
+        foreach ($fields as $field) {
+            $definition['fields'][$field] = array(
+                'position' => $colpos++,
+                'sorting' => 'ascending',
+            );
+        }
+        
+        if ($definition['foreign']) {
+            $query = 'SELECT a.attname
+                        FROM pg_constraint c
+                   LEFT JOIN pg_class t  ON c.confrelid  = t.oid
+                   LEFT JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = ANY(c.confkey)
+                       WHERE c.conname = %s
+                         AND t.relname = ' . $db->quote($definition['references']['table'], 'text');
+            $foreign_fields = $db->queryCol(sprintf($query, $db->quote($constraint_name_mdb2, 'text')), null);
+            if (PEAR::isError($foreign_fields)) {
+                return $foreign_fields;
+            }
+            $colpos = 1;
+            foreach ($foreign_fields as $foreign_field) {
+                $definition['references']['fields'][$foreign_field] = array(
+                    'position' => $colpos++,
+                );
+            }
+        }
+        
+        if ($definition['check']) {
+            $check_def = $db->queryOne("SELECT pg_get_constraintdef(" . $row['oid'] . ", 't')");
+            // ...
+        }
+        return $definition;
+    }
+
+    // }}}
+    // {{{ getTriggerDefinition()
+
+    /**
+     * Get the structure of a trigger into an array
+     *
+     * EXPERIMENTAL
+     *
+     * WARNING: this function is experimental and may change the returned value
+     * at any time until labelled as non-experimental
+     *
+     * @param string $trigger name of trigger that should be used in method
+     * @return mixed data array on success, a MDB2 error on failure
+     * @access public
+     *
+     * @TODO: add support for plsql functions and functions with args
+     */
+    function getTriggerDefinition($trigger)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = "SELECT trg.tgname AS trigger_name,
+                         tbl.relname AS table_name,
+                         CASE
+                            WHEN p.proname IS NOT NULL THEN 'EXECUTE PROCEDURE ' || p.proname || '();'
+                            ELSE ''
+                         END AS trigger_body,
+                         CASE trg.tgtype & cast(2 as int2)
+                            WHEN 0 THEN 'AFTER'
+                            ELSE 'BEFORE'
+                         END AS trigger_type,
+                         CASE trg.tgtype & cast(28 as int2)
+                            WHEN 16 THEN 'UPDATE'
+                            WHEN 8 THEN 'DELETE'
+                            WHEN 4 THEN 'INSERT'
+                            WHEN 20 THEN 'INSERT, UPDATE'
+                            WHEN 28 THEN 'INSERT, UPDATE, DELETE'
+                            WHEN 24 THEN 'UPDATE, DELETE'
+                            WHEN 12 THEN 'INSERT, DELETE'
+                         END AS trigger_event,
+                         CASE trg.tgenabled
+                            WHEN 'O' THEN 't'
+                            ELSE trg.tgenabled
+                         END AS trigger_enabled,
+                         obj_description(trg.oid, 'pg_trigger') AS trigger_comment
+                    FROM pg_trigger trg,
+                         pg_class tbl,
+                         pg_proc p
+                   WHERE trg.tgrelid = tbl.oid
+                     AND trg.tgfoid = p.oid
+                     AND trg.tgname = ". $db->quote($trigger, 'text');
+        $types = array(
+            'trigger_name'    => 'text',
+            'table_name'      => 'text',
+            'trigger_body'    => 'text',
+            'trigger_type'    => 'text',
+            'trigger_event'   => 'text',
+            'trigger_comment' => 'text',
+            'trigger_enabled' => 'boolean',
+        );
+        return $db->queryRow($query, $types, MDB2_FETCHMODE_ASSOC);
+    }
+    
+    // }}}
+    // {{{ tableInfo()
+
+    /**
+     * Returns information about a table or a result set
+     *
+     * NOTE: only supports 'table' and 'flags' if <var>$result</var>
+     * is a table name.
+     *
+     * @param object|string  $result  MDB2_result object from a query or a
+     *                                 string containing the name of a table.
+     *                                 While this also accepts a query result
+     *                                 resource identifier, this behavior is
+     *                                 deprecated.
+     * @param int            $mode    a valid tableInfo mode
+     *
+     * @return array  an associative array with the information requested.
+     *                 A MDB2_Error object on failure.
+     *
+     * @see MDB2_Driver_Common::tableInfo()
+     */
+    function tableInfo($result, $mode = null)
+    {
+        if (is_string($result)) {
+           return parent::tableInfo($result, $mode);
+        }
+
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $resource = MDB2::isResultCommon($result) ? $result->getResource() : $result;
+        if (!is_resource($resource)) {
+            return $db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
+                'Could not generate result resource', __FUNCTION__);
+        }
+
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            if ($db->options['field_case'] == CASE_LOWER) {
+                $case_func = 'strtolower';
+            } else {
+                $case_func = 'strtoupper';
+            }
+        } else {
+            $case_func = 'strval';
+        }
+
+        $count = @pg_num_fields($resource);
+        $res   = array();
+
+        if ($mode) {
+            $res['num_fields'] = $count;
+        }
+
+        $db->loadModule('Datatype', null, true);
+        for ($i = 0; $i < $count; $i++) {
+            $res[$i] = array(
+                'table' => function_exists('pg_field_table') ? @pg_field_table($resource, $i) : '',
+                'name'  => $case_func(@pg_field_name($resource, $i)),
+                'type'  => @pg_field_type($resource, $i),
+                'length' => @pg_field_size($resource, $i),
+                'flags' => '',
+            );
+            $mdb2type_info = $db->datatype->mapNativeDatatype($res[$i]);
+            if (PEAR::isError($mdb2type_info)) {
+               return $mdb2type_info;
+            }
+            $res[$i]['mdb2type'] = $mdb2type_info[0][0];
+            if ($mode & MDB2_TABLEINFO_ORDER) {
+                $res['order'][$res[$i]['name']] = $i;
+            }
+            if ($mode & MDB2_TABLEINFO_ORDERTABLE) {
+                $res['ordertable'][$res[$i]['table']][$res[$i]['name']] = $i;
+            }
+        }
+
+        return $res;
+    }
+}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Reverse/sqlite.php b/program/lib/MDB2/Driver/Reverse/sqlite.php
new file mode 100644 (file)
index 0000000..43cec99
--- /dev/null
@@ -0,0 +1,609 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2007 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith, Lorenzo Alberton                       |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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.                                          |
+// +----------------------------------------------------------------------+
+// | Authors: Lukas Smith <smith@pooteeweet.org>                          |
+// |          Lorenzo Alberton <l.alberton@quipo.it>                      |
+// +----------------------------------------------------------------------+
+//
+// $Id: sqlite.php 295587 2010-02-28 17:16:38Z quipo $
+//
+
+require_once 'MDB2/Driver/Reverse/Common.php';
+
+/**
+ * MDB2 SQlite driver for the schema reverse engineering module
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Driver_Reverse_sqlite extends MDB2_Driver_Reverse_Common
+{
+    /**
+     * Remove SQL comments from the field definition
+     *
+     * @access private
+     */
+    function _removeComments($sql) {
+        $lines = explode("\n", $sql);
+        foreach ($lines as $k => $line) {
+            $pieces = explode('--', $line);
+            if (count($pieces) > 1 && (substr_count($pieces[0], '\'') % 2) == 0) {
+                $lines[$k] = substr($line, 0, strpos($line, '--'));
+            }
+        }
+        return implode("\n", $lines);
+    }
+
+    /**
+     *
+     */
+    function _getTableColumns($sql)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+        $start_pos  = strpos($sql, '(');
+        $end_pos    = strrpos($sql, ')');
+        $column_def = substr($sql, $start_pos+1, $end_pos-$start_pos-1);
+        // replace the decimal length-places-separator with a colon
+        $column_def = preg_replace('/(\d),(\d)/', '\1:\2', $column_def);
+        $column_def = $this->_removeComments($column_def);
+        $column_sql = explode(',', $column_def);
+        $columns    = array();
+        $count      = count($column_sql);
+        if ($count == 0) {
+            return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                'unexpected empty table column definition list', __FUNCTION__);
+        }
+        $regexp = '/^\s*([^\s]+) +(CHAR|VARCHAR|VARCHAR2|TEXT|BOOLEAN|SMALLINT|INT|INTEGER|DECIMAL|TINYINT|BIGINT|DOUBLE|FLOAT|DATETIME|DATE|TIME|LONGTEXT|LONGBLOB)( ?\(([1-9][0-9]*)(:([1-9][0-9]*))?\))?( NULL| NOT NULL)?( UNSIGNED)?( NULL| NOT NULL)?( PRIMARY KEY)?( DEFAULT (\'[^\']*\'|[^ ]+))?( NULL| NOT NULL)?( PRIMARY KEY)?(\s*\-\-.*)?$/i';
+        $regexp2 = '/^\s*([^ ]+) +(PRIMARY|UNIQUE|CHECK)$/i';
+        for ($i=0, $j=0; $i<$count; ++$i) {
+            if (!preg_match($regexp, trim($column_sql[$i]), $matches)) {
+                if (!preg_match($regexp2, trim($column_sql[$i]))) {
+                    continue;
+                }
+                return $db->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                    'unexpected table column SQL definition: "'.$column_sql[$i].'"', __FUNCTION__);
+            }
+            $columns[$j]['name'] = trim($matches[1], implode('', $db->identifier_quoting));
+            $columns[$j]['type'] = strtolower($matches[2]);
+            if (isset($matches[4]) && strlen($matches[4])) {
+                $columns[$j]['length'] = $matches[4];
+            }
+            if (isset($matches[6]) && strlen($matches[6])) {
+                $columns[$j]['decimal'] = $matches[6];
+            }
+            if (isset($matches[8]) && strlen($matches[8])) {
+                $columns[$j]['unsigned'] = true;
+            }
+            if (isset($matches[9]) && strlen($matches[9])) {
+                $columns[$j]['autoincrement'] = true;
+            }
+            if (isset($matches[12]) && strlen($matches[12])) {
+                $default = $matches[12];
+                if (strlen($default) && $default[0]=="'") {
+                    $default = str_replace("''", "'", substr($default, 1, strlen($default)-2));
+                }
+                if ($default === 'NULL') {
+                    $default = null;
+                }
+                $columns[$j]['default'] = $default;
+            }
+            if (isset($matches[7]) && strlen($matches[7])) {
+                $columns[$j]['notnull'] = ($matches[7] === ' NOT NULL');
+            } else if (isset($matches[9]) && strlen($matches[9])) {
+                $columns[$j]['notnull'] = ($matches[9] === ' NOT NULL');
+            } else if (isset($matches[13]) && strlen($matches[13])) {
+                $columns[$j]['notnull'] = ($matches[13] === ' NOT NULL');
+            }
+            ++$j;
+        }
+        return $columns;
+    }
+
+    // {{{ getTableFieldDefinition()
+
+    /**
+     * Get the stucture of a field into an array
+     *
+     * @param string $table_name name of table that should be used in method
+     * @param string $field_name name of field that should be used in method
+     * @return mixed data array on success, a MDB2 error on failure.
+     *          The returned array contains an array for each field definition,
+     *          with (some of) these indices:
+     *          [notnull] [nativetype] [length] [fixed] [default] [type] [mdb2type]
+     * @access public
+     */
+    function getTableFieldDefinition($table_name, $field_name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+        
+        list($schema, $table) = $this->splitTableSchema($table_name);
+
+        $result = $db->loadModule('Datatype', null, true);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        $query = "SELECT sql FROM sqlite_master WHERE type='table' AND ";
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $query.= 'LOWER(name)='.$db->quote(strtolower($table), 'text');
+        } else {
+            $query.= 'name='.$db->quote($table, 'text');
+        }
+        $sql = $db->queryOne($query);
+        if (PEAR::isError($sql)) {
+            return $sql;
+        }
+        $columns = $this->_getTableColumns($sql);
+        foreach ($columns as $column) {
+            if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+                if ($db->options['field_case'] == CASE_LOWER) {
+                    $column['name'] = strtolower($column['name']);
+                } else {
+                    $column['name'] = strtoupper($column['name']);
+                }
+            } else {
+                $column = array_change_key_case($column, $db->options['field_case']);
+            }
+            if ($field_name == $column['name']) {
+                $mapped_datatype = $db->datatype->mapNativeDatatype($column);
+                if (PEAR::isError($mapped_datatype)) {
+                    return $mapped_datatype;
+                }
+                list($types, $length, $unsigned, $fixed) = $mapped_datatype;
+                $notnull = false;
+                if (!empty($column['notnull'])) {
+                    $notnull = $column['notnull'];
+                }
+                $default = false;
+                if (array_key_exists('default', $column)) {
+                    $default = $column['default'];
+                    if ((null === $default) && $notnull) {
+                        $default = '';
+                    }
+                }
+                $autoincrement = false;
+                if (!empty($column['autoincrement'])) {
+                    $autoincrement = true;
+                }
+
+                $definition[0] = array(
+                    'notnull' => $notnull,
+                    'nativetype' => preg_replace('/^([a-z]+)[^a-z].*/i', '\\1', $column['type'])
+                );
+                if (null !== $length) {
+                    $definition[0]['length'] = $length;
+                }
+                if (null !== $unsigned) {
+                    $definition[0]['unsigned'] = $unsigned;
+                }
+                if (null !== $fixed) {
+                    $definition[0]['fixed'] = $fixed;
+                }
+                if ($default !== false) {
+                    $definition[0]['default'] = $default;
+                }
+                if ($autoincrement !== false) {
+                    $definition[0]['autoincrement'] = $autoincrement;
+                }
+                foreach ($types as $key => $type) {
+                    $definition[$key] = $definition[0];
+                    if ($type == 'clob' || $type == 'blob') {
+                        unset($definition[$key]['default']);
+                    }
+                    $definition[$key]['type'] = $type;
+                    $definition[$key]['mdb2type'] = $type;
+                }
+                return $definition;
+            }
+        }
+
+        return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+            'it was not specified an existing table column', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ getTableIndexDefinition()
+
+    /**
+     * Get the stucture of an index into an array
+     *
+     * @param string $table_name name of table that should be used in method
+     * @param string $index_name name of index that should be used in method
+     * @return mixed data array on success, a MDB2 error on failure
+     * @access public
+     */
+    function getTableIndexDefinition($table_name, $index_name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+        
+        list($schema, $table) = $this->splitTableSchema($table_name);
+
+        $query = "SELECT sql FROM sqlite_master WHERE type='index' AND ";
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $query.= 'LOWER(name)=%s AND LOWER(tbl_name)=' . $db->quote(strtolower($table), 'text');
+        } else {
+            $query.= 'name=%s AND tbl_name=' . $db->quote($table, 'text');
+        }
+        $query.= ' AND sql NOT NULL ORDER BY name';
+        $index_name_mdb2 = $db->getIndexName($index_name);
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $qry = sprintf($query, $db->quote(strtolower($index_name_mdb2), 'text'));
+        } else {
+            $qry = sprintf($query, $db->quote($index_name_mdb2, 'text'));
+        }
+        $sql = $db->queryOne($qry, 'text');
+        if (PEAR::isError($sql) || empty($sql)) {
+            // fallback to the given $index_name, without transformation
+            if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+                $qry = sprintf($query, $db->quote(strtolower($index_name), 'text'));
+            } else {
+                $qry = sprintf($query, $db->quote($index_name, 'text'));
+            }
+            $sql = $db->queryOne($qry, 'text');
+        }
+        if (PEAR::isError($sql)) {
+            return $sql;
+        }
+        if (!$sql) {
+            return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                'it was not specified an existing table index', __FUNCTION__);
+        }
+
+        $sql = strtolower($sql);
+        $start_pos = strpos($sql, '(');
+        $end_pos = strrpos($sql, ')');
+        $column_names = substr($sql, $start_pos+1, $end_pos-$start_pos-1);
+        $column_names = explode(',', $column_names);
+
+        if (preg_match("/^create unique/", $sql)) {
+            return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                'it was not specified an existing table index', __FUNCTION__);
+        }
+
+        $definition = array();
+        $count = count($column_names);
+        for ($i=0; $i<$count; ++$i) {
+            $column_name = strtok($column_names[$i], ' ');
+            $collation = strtok(' ');
+            $definition['fields'][$column_name] = array(
+                'position' => $i+1
+            );
+            if (!empty($collation)) {
+                $definition['fields'][$column_name]['sorting'] =
+                    ($collation=='ASC' ? 'ascending' : 'descending');
+            }
+        }
+
+        if (empty($definition['fields'])) {
+            return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                'it was not specified an existing table index', __FUNCTION__);
+        }
+        return $definition;
+    }
+
+    // }}}
+    // {{{ getTableConstraintDefinition()
+
+    /**
+     * Get the stucture of a constraint into an array
+     *
+     * @param string $table_name      name of table that should be used in method
+     * @param string $constraint_name name of constraint that should be used in method
+     * @return mixed data array on success, a MDB2 error on failure
+     * @access public
+     */
+    function getTableConstraintDefinition($table_name, $constraint_name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+        
+        list($schema, $table) = $this->splitTableSchema($table_name);
+
+        $query = "SELECT sql FROM sqlite_master WHERE type='index' AND ";
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $query.= 'LOWER(name)=%s AND LOWER(tbl_name)=' . $db->quote(strtolower($table), 'text');
+        } else {
+            $query.= 'name=%s AND tbl_name=' . $db->quote($table, 'text');
+        }
+        $query.= ' AND sql NOT NULL ORDER BY name';
+        $constraint_name_mdb2 = $db->getIndexName($constraint_name);
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $qry = sprintf($query, $db->quote(strtolower($constraint_name_mdb2), 'text'));
+        } else {
+            $qry = sprintf($query, $db->quote($constraint_name_mdb2, 'text'));
+        }
+        $sql = $db->queryOne($qry, 'text');
+        if (PEAR::isError($sql) || empty($sql)) {
+            // fallback to the given $index_name, without transformation
+            if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+                $qry = sprintf($query, $db->quote(strtolower($constraint_name), 'text'));
+            } else {
+                $qry = sprintf($query, $db->quote($constraint_name, 'text'));
+            }
+            $sql = $db->queryOne($qry, 'text');
+        }
+        if (PEAR::isError($sql)) {
+            return $sql;
+        }
+        //default values, eventually overridden
+        $definition = array(
+            'primary' => false,
+            'unique'  => false,
+            'foreign' => false,
+            'check'   => false,
+            'fields'  => array(),
+            'references' => array(
+                'table'  => '',
+                'fields' => array(),
+            ),
+            'onupdate'  => '',
+            'ondelete'  => '',
+            'match'     => '',
+            'deferrable'        => false,
+            'initiallydeferred' => false,
+        );
+        if (!$sql) {
+            $query = "SELECT sql FROM sqlite_master WHERE type='table' AND ";
+            if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+                $query.= 'LOWER(name)='.$db->quote(strtolower($table), 'text');
+            } else {
+                $query.= 'name='.$db->quote($table, 'text');
+            }
+            $query.= " AND sql NOT NULL ORDER BY name";
+            $sql = $db->queryOne($query, 'text');
+            if (PEAR::isError($sql)) {
+                return $sql;
+            }
+            if ($constraint_name == 'primary') {
+                // search in table definition for PRIMARY KEYs
+                if (preg_match("/\bPRIMARY\s+KEY\b\s*\(([^)]+)/i", $sql, $tmp)) {
+                    $definition['primary'] = true;
+                    $definition['fields'] = array();
+                    $column_names = explode(',', $tmp[1]);
+                    $colpos = 1;
+                    foreach ($column_names as $column_name) {
+                        $definition['fields'][trim($column_name)] = array(
+                            'position' => $colpos++
+                        );
+                    }
+                    return $definition;
+                }
+                if (preg_match("/\"([^\"]+)\"[^\,\"]+\bPRIMARY\s+KEY\b[^\,\)]*/i", $sql, $tmp)) {
+                    $definition['primary'] = true;
+                    $definition['fields'] = array();
+                    $column_names = explode(',', $tmp[1]);
+                    $colpos = 1;
+                    foreach ($column_names as $column_name) {
+                        $definition['fields'][trim($column_name)] = array(
+                            'position' => $colpos++
+                        );
+                    }
+                    return $definition;
+                }
+            } else {
+                // search in table definition for FOREIGN KEYs
+                $pattern = "/\bCONSTRAINT\b\s+%s\s+
+                    \bFOREIGN\s+KEY\b\s*\(([^\)]+)\)\s*
+                    \bREFERENCES\b\s+([^\s]+)\s*\(([^\)]+)\)\s*
+                    (?:\bMATCH\s*([^\s]+))?\s*
+                    (?:\bON\s+UPDATE\s+([^\s,\)]+))?\s*
+                    (?:\bON\s+DELETE\s+([^\s,\)]+))?\s*
+                    /imsx";
+                $found_fk = false;
+                if (preg_match(sprintf($pattern, $constraint_name_mdb2), $sql, $tmp)) {
+                    $found_fk = true;
+                } elseif (preg_match(sprintf($pattern, $constraint_name), $sql, $tmp)) {
+                    $found_fk = true;
+                }
+                if ($found_fk) {
+                    $definition['foreign'] = true;
+                    $definition['match'] = 'SIMPLE';
+                    $definition['onupdate'] = 'NO ACTION';
+                    $definition['ondelete'] = 'NO ACTION';
+                    $definition['references']['table'] = $tmp[2];
+                    $column_names = explode(',', $tmp[1]);
+                    $colpos = 1;
+                    foreach ($column_names as $column_name) {
+                        $definition['fields'][trim($column_name)] = array(
+                            'position' => $colpos++
+                        );
+                    }
+                    $referenced_cols = explode(',', $tmp[3]);
+                    $colpos = 1;
+                    foreach ($referenced_cols as $column_name) {
+                        $definition['references']['fields'][trim($column_name)] = array(
+                            'position' => $colpos++
+                        );
+                    }
+                    if (isset($tmp[4])) {
+                        $definition['match']    = $tmp[4];
+                    }
+                    if (isset($tmp[5])) {
+                        $definition['onupdate'] = $tmp[5];
+                    }
+                    if (isset($tmp[6])) {
+                        $definition['ondelete'] = $tmp[6];
+                    }
+                    return $definition;
+                }
+            }
+            $sql = false;
+        }
+        if (!$sql) {
+            return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                $constraint_name . ' is not an existing table constraint', __FUNCTION__);
+        }
+
+        $sql = strtolower($sql);
+        $start_pos = strpos($sql, '(');
+        $end_pos   = strrpos($sql, ')');
+        $column_names = substr($sql, $start_pos+1, $end_pos-$start_pos-1);
+        $column_names = explode(',', $column_names);
+
+        if (!preg_match("/^create unique/", $sql)) {
+            return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                $constraint_name . ' is not an existing table constraint', __FUNCTION__);
+        }
+
+        $definition['unique'] = true;
+        $count = count($column_names);
+        for ($i=0; $i<$count; ++$i) {
+            $column_name = strtok($column_names[$i]," ");
+            $collation = strtok(" ");
+            $definition['fields'][$column_name] = array(
+                'position' => $i+1
+            );
+            if (!empty($collation)) {
+                $definition['fields'][$column_name]['sorting'] =
+                    ($collation=='ASC' ? 'ascending' : 'descending');
+            }
+        }
+
+        if (empty($definition['fields'])) {
+            return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                $constraint_name . ' is not an existing table constraint', __FUNCTION__);
+        }
+        return $definition;
+    }
+
+    // }}}
+    // {{{ getTriggerDefinition()
+
+    /**
+     * Get the structure of a trigger into an array
+     *
+     * EXPERIMENTAL
+     *
+     * WARNING: this function is experimental and may change the returned value
+     * at any time until labelled as non-experimental
+     *
+     * @param string    $trigger    name of trigger that should be used in method
+     * @return mixed data array on success, a MDB2 error on failure
+     * @access public
+     */
+    function getTriggerDefinition($trigger)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = "SELECT name as trigger_name,
+                         tbl_name AS table_name,
+                         sql AS trigger_body,
+                         NULL AS trigger_type,
+                         NULL AS trigger_event,
+                         NULL AS trigger_comment,
+                         1 AS trigger_enabled
+                    FROM sqlite_master
+                   WHERE type='trigger'";
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $query.= ' AND LOWER(name)='.$db->quote(strtolower($trigger), 'text');
+        } else {
+            $query.= ' AND name='.$db->quote($trigger, 'text');
+        }
+        $types = array(
+            'trigger_name'    => 'text',
+            'table_name'      => 'text',
+            'trigger_body'    => 'text',
+            'trigger_type'    => 'text',
+            'trigger_event'   => 'text',
+            'trigger_comment' => 'text',
+            'trigger_enabled' => 'boolean',
+        );
+        $def = $db->queryRow($query, $types, MDB2_FETCHMODE_ASSOC);
+        if (PEAR::isError($def)) {
+            return $def;
+        }
+        if (empty($def)) {
+            return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                'it was not specified an existing trigger', __FUNCTION__);
+        }
+        if (preg_match("/^create\s+(?:temp|temporary)?trigger\s+(?:if\s+not\s+exists\s+)?.*(before|after)?\s+(insert|update|delete)/Uims", $def['trigger_body'], $tmp)) {
+            $def['trigger_type'] = strtoupper($tmp[1]);
+            $def['trigger_event'] = strtoupper($tmp[2]);
+        }
+        return $def;
+    }
+
+    // }}}
+    // {{{ tableInfo()
+
+    /**
+     * Returns information about a table
+     *
+     * @param string         $result  a string containing the name of a table
+     * @param int            $mode    a valid tableInfo mode
+     *
+     * @return array  an associative array with the information requested.
+     *                 A MDB2_Error object on failure.
+     *
+     * @see MDB2_Driver_Common::tableInfo()
+     * @since Method available since Release 1.7.0
+     */
+    function tableInfo($result, $mode = null)
+    {
+        if (is_string($result)) {
+           return parent::tableInfo($result, $mode);
+        }
+
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        return $db->raiseError(MDB2_ERROR_NOT_CAPABLE, null, null,
+           'This DBMS can not obtain tableInfo from result sets', __FUNCTION__);
+    }
+}
+
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/Reverse/sqlsrv.php b/program/lib/MDB2/Driver/Reverse/sqlsrv.php
new file mode 100644 (file)
index 0000000..d913594
--- /dev/null
@@ -0,0 +1,653 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2007 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith, Frank M. Kromann, Lorenzo Alberton     |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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.                                          |
+// +----------------------------------------------------------------------+
+// | Authors: Lukas Smith <smith@pooteeweet.org>                          |
+// |          Lorenzo Alberton <l.alberton@quipo.it>                      |
+// +----------------------------------------------------------------------+
+
+require_once 'MDB2/Driver/Reverse/Common.php';
+
+/**
+ * MDB2 MSSQL driver for the schema reverse engineering module
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@dybnet.de>
+ * @author  Lorenzo Alberton <l.alberton@quipo.it>
+ */
+class MDB2_Driver_Reverse_sqlsrv extends MDB2_Driver_Reverse_Common
+{
+    // {{{ getTableFieldDefinition()
+
+    /**
+     * Get the structure of a field into an array
+     *
+     * @param string $table_name name of table that should be used in method
+     * @param string $field_name name of field that should be used in method
+     * @return mixed data array on success, a MDB2 error on failure
+     * @access public
+     */
+    function getTableFieldDefinition($table_name, $field_name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $result = $db->loadModule('Datatype', null, true);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+
+        list($schema, $table) = $this->splitTableSchema($table_name);
+
+        $table = $db->quoteIdentifier($table, true);
+        $fldname = $db->quoteIdentifier($field_name, true);
+
+        $query = "SELECT t.table_name,
+                         c.column_name 'name',
+                         c.data_type 'type',
+                         CASE c.is_nullable WHEN 'YES' THEN 1 ELSE 0 END AS 'is_nullable',
+                         c.column_default,
+                         c.character_maximum_length 'length',
+                         c.numeric_precision,
+                         c.numeric_scale,
+                         c.character_set_name,
+                         c.collation_name
+                    FROM INFORMATION_SCHEMA.TABLES t,
+                         INFORMATION_SCHEMA.COLUMNS c
+                   WHERE t.table_name = c.table_name
+                     AND t.table_name = '$table'
+                     AND c.column_name = '$fldname'";
+        if (!empty($schema)) {
+            $query .= " AND t.table_schema = '" .$db->quoteIdentifier($schema, true) ."'";
+        }
+        $query .= ' ORDER BY t.table_name';
+        $column = $db->queryRow($query, null, MDB2_FETCHMODE_ASSOC);
+        if (PEAR::isError($column)) {
+            return $column;
+        }
+        if (empty($column)) {
+            return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                'it was not specified an existing table column', __FUNCTION__);
+        }
+
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            if ($db->options['field_case'] == CASE_LOWER) {
+                $column['name'] = strtolower($column['name']);
+            } else {
+                $column['name'] = strtoupper($column['name']);
+            }
+        } else {
+            $column = array_change_key_case($column, $db->options['field_case']);
+        }
+        $mapped_datatype = $db->datatype->mapNativeDatatype($column);
+        if (PEAR::isError($mapped_datatype)) {
+            return $mapped_datatype;
+        }
+        list($types, $length, $unsigned, $fixed) = $mapped_datatype;
+        $notnull = true;
+        if ($column['is_nullable']) {
+            $notnull = false;
+        }
+        $default = false;
+        if (array_key_exists('column_default', $column)) {
+            $default = $column['column_default'];
+            if ((null === $default) && $notnull) {
+                $default = '';
+            } elseif (strlen($default) > 4
+                   && substr($default, 0, 1) == '('
+                   &&  substr($default, -1, 1) == ')'
+            ) {
+                //mssql wraps the default value in parentheses: "((1234))", "(NULL)"
+                $default = trim($default, '()');
+                if ($default == 'NULL') {
+                    $default = null;
+                }
+            }
+        }
+        $definition[0] = array(
+            'notnull' => $notnull,
+            'nativetype' => preg_replace('/^([a-z]+)[^a-z].*/i', '\\1', $column['type'])
+        );
+        if (null !== $length) {
+            $definition[0]['length'] = $length;
+        }
+        if (null !== $unsigned) {
+            $definition[0]['unsigned'] = $unsigned;
+        }
+        if (null !== $fixed) {
+            $definition[0]['fixed'] = $fixed;
+        }
+        if ($default !== false) {
+            $definition[0]['default'] = $default;
+        }
+        foreach ($types as $key => $type) {
+            $definition[$key] = $definition[0];
+            if ($type == 'clob' || $type == 'blob') {
+                unset($definition[$key]['default']);
+            }
+            $definition[$key]['type'] = $type;
+            $definition[$key]['mdb2type'] = $type;
+        }
+        return $definition;
+    }
+
+    // }}}
+    // {{{ getTableIndexDefinition()
+
+    /**
+     * Get the structure of an index into an array
+     *
+     * @param string $table_name name of table that should be used in method
+     * @param string $index_name name of index that should be used in method
+     * @return mixed data array on success, a MDB2 error on failure
+     * @access public
+     */
+    function getTableIndexDefinition($table_name, $index_name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        list($schema, $table) = $this->splitTableSchema($table_name);
+
+        $table = $db->quoteIdentifier($table, true);
+        //$idxname = $db->quoteIdentifier($index_name, true);
+
+        $query = "SELECT OBJECT_NAME(i.id) tablename,
+                         i.name indexname,
+                         c.name field_name,
+                         CASE INDEXKEY_PROPERTY(i.id, i.indid, ik.keyno, 'IsDescending')
+                           WHEN 1 THEN 'DESC' ELSE 'ASC'
+                         END 'collation',
+                         ik.keyno 'position'
+                    FROM sysindexes i
+                    JOIN sysindexkeys ik ON ik.id = i.id AND ik.indid = i.indid
+                    JOIN syscolumns c ON c.id = ik.id AND c.colid = ik.colid
+                   WHERE OBJECT_NAME(i.id) = '$table'
+                     AND i.name = '%s'
+                     AND NOT EXISTS (
+                            SELECT *
+                              FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE k
+                             WHERE k.table_name = OBJECT_NAME(i.id)
+                               AND k.constraint_name = i.name";
+        if (!empty($schema)) {
+            $query .= " AND k.table_schema = '" .$db->quoteIdentifier($schema, true) ."'";
+        }
+        $query .= ')
+                ORDER BY tablename, indexname, ik.keyno';
+
+        $index_name_mdb2 = $db->getIndexName($index_name);
+        $result = $db->queryRow(sprintf($query, $index_name_mdb2));
+        if (!PEAR::isError($result) && (null !== $result)) {
+            // apply 'idxname_format' only if the query succeeded, otherwise
+            // fallback to the given $index_name, without transformation
+            $index_name = $index_name_mdb2;
+        }
+        $result = $db->query(sprintf($query, $index_name));
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+
+        $definition = array();
+        while (is_array($row = $result->fetchRow(MDB2_FETCHMODE_ASSOC))) {
+            $column_name = $row['field_name'];
+            if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+                if ($db->options['field_case'] == CASE_LOWER) {
+                    $column_name = strtolower($column_name);
+                } else {
+                    $column_name = strtoupper($column_name);
+                }
+            }
+            $definition['fields'][$column_name] = array(
+                'position' => (int)$row['position'],
+            );
+            if (!empty($row['collation'])) {
+                $definition['fields'][$column_name]['sorting'] = ($row['collation'] == 'ASC'
+                    ? 'ascending' : 'descending');
+            }
+        }
+        $result->free();
+        if (empty($definition['fields'])) {
+            return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                'it was not specified an existing table index', __FUNCTION__);
+        }
+        return $definition;
+    }
+
+    // }}}
+    // {{{ getTableConstraintDefinition()
+
+    /**
+     * Get the structure of a constraint into an array
+     *
+     * @param string $table_name      name of table that should be used in method
+     * @param string $constraint_name name of constraint that should be used in method
+     * @return mixed data array on success, a MDB2 error on failure
+     * @access public
+     */
+    function getTableConstraintDefinition($table_name, $constraint_name)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        list($schema, $table) = $this->splitTableSchema($table_name);
+
+        $table = $db->quoteIdentifier($table, true);
+        $query = "SELECT k.table_name,
+                         k.column_name field_name,
+                         CASE c.constraint_type WHEN 'PRIMARY KEY' THEN 1 ELSE 0 END 'primary',
+                         CASE c.constraint_type WHEN 'UNIQUE' THEN 1 ELSE 0 END 'unique',
+                         CASE c.constraint_type WHEN 'FOREIGN KEY' THEN 1 ELSE 0 END 'foreign',
+                         CASE c.constraint_type WHEN 'CHECK' THEN 1 ELSE 0 END 'check',
+                         CASE c.is_deferrable WHEN 'NO' THEN 0 ELSE 1 END 'deferrable',
+                         CASE c.initially_deferred WHEN 'NO' THEN 0 ELSE 1 END 'initiallydeferred',
+                         rc.match_option 'match',
+                                rc.update_rule 'onupdate',
+                         rc.delete_rule 'ondelete',
+                         kcu.table_name 'references_table',
+                         kcu.column_name 'references_field',
+                         k.ordinal_position 'field_position'
+                    FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE k
+                    LEFT JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS c
+                      ON k.table_name = c.table_name
+                     AND k.table_schema = c.table_schema
+                     AND k.table_catalog = c.table_catalog
+                     AND k.constraint_catalog = c.constraint_catalog
+                     AND k.constraint_name = c.constraint_name
+               LEFT JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc
+                      ON rc.constraint_schema = c.constraint_schema
+                     AND rc.constraint_catalog = c.constraint_catalog
+                     AND rc.constraint_name = c.constraint_name
+               LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE kcu
+                      ON rc.unique_constraint_schema = kcu.constraint_schema
+                     AND rc.unique_constraint_catalog = kcu.constraint_catalog
+                     AND rc.unique_constraint_name = kcu.constraint_name
+                                        AND k.ordinal_position = kcu.ordinal_position
+                   WHERE k.constraint_catalog = DB_NAME()
+                     AND k.table_name = '$table'
+                     AND k.constraint_name = '%s'";
+        if (!empty($schema)) {
+            $query .= " AND k.table_schema = '" .$db->quoteIdentifier($schema, true) ."'";
+        }
+        $query .= ' ORDER BY k.constraint_name,
+                             k.ordinal_position';
+
+        $constraint_name_mdb2 = $db->getIndexName($constraint_name);
+        $result = $db->queryRow(sprintf($query, $constraint_name_mdb2));
+        if (!PEAR::isError($result) && (null !== $result)) {
+            // apply 'idxname_format' only if the query succeeded, otherwise
+            // fallback to the given $index_name, without transformation
+            $constraint_name = $constraint_name_mdb2;
+        }
+        $result = $db->query(sprintf($query, $constraint_name));
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+
+        $definition = array(
+            'fields' => array()
+        );
+        while (is_array($row = $result->fetchRow(MDB2_FETCHMODE_ASSOC))) {
+            $row = array_change_key_case($row, CASE_LOWER);
+            $column_name = $row['field_name'];
+            if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+                if ($db->options['field_case'] == CASE_LOWER) {
+                    $column_name = strtolower($column_name);
+                } else {
+                    $column_name = strtoupper($column_name);
+                }
+            }
+            $definition['fields'][$column_name] = array(
+                'position' => (int)$row['field_position']
+            );
+            if ($row['foreign']) {
+                $ref_column_name = $row['references_field'];
+                if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+                    if ($db->options['field_case'] == CASE_LOWER) {
+                        $ref_column_name = strtolower($ref_column_name);
+                    } else {
+                        $ref_column_name = strtoupper($ref_column_name);
+                    }
+                }
+                $definition['references']['table'] = $row['references_table'];
+                $definition['references']['fields'][$ref_column_name] = array(
+                    'position' => (int)$row['field_position']
+                );
+            }
+            //collation?!?
+            /*
+            if (!empty($row['collation'])) {
+                $definition['fields'][$column_name]['sorting'] = ($row['collation'] == 'ASC'
+                    ? 'ascending' : 'descending');
+            }
+            */
+            $lastrow = $row;
+            // otherwise $row is no longer usable on exit from loop
+        }
+        $result->free();
+        if (empty($definition['fields'])) {
+            return $db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                $constraint_name . ' is not an existing table constraint', __FUNCTION__);
+        }
+
+        $definition['primary'] = (boolean)$lastrow['primary'];
+        $definition['unique']  = (boolean)$lastrow['unique'];
+        $definition['foreign'] = (boolean)$lastrow['foreign'];
+        $definition['check']   = (boolean)$lastrow['check'];
+        $definition['deferrable'] = (boolean)$lastrow['deferrable'];
+        $definition['initiallydeferred'] = (boolean)$lastrow['initiallydeferred'];
+        $definition['onupdate'] = $lastrow['onupdate'];
+        $definition['ondelete'] = $lastrow['ondelete'];
+        $definition['match']    = $lastrow['match'];
+
+        return $definition;
+    }
+
+    // }}}
+    // {{{ getTriggerDefinition()
+
+    /**
+     * Get the structure of a trigger into an array
+     *
+     * EXPERIMENTAL
+     *
+     * WARNING: this function is experimental and may change the returned value
+     * at any time until labelled as non-experimental
+     *
+     * @param string    $trigger    name of trigger that should be used in method
+     * @return mixed data array on success, a MDB2 error on failure
+     * @access public
+     */
+    function getTriggerDefinition($trigger)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $query = "SELECT sys1.name trigger_name,
+                         sys2.name table_name,
+                         c.text trigger_body,
+                         c.encrypted is_encripted,
+                         CASE
+                           WHEN OBJECTPROPERTY(sys1.id, 'ExecIsTriggerDisabled') = 1
+                           THEN 0 ELSE 1
+                         END trigger_enabled,
+                         CASE
+                           WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsertTrigger') = 1
+                           THEN 'INSERT'
+                           WHEN OBJECTPROPERTY(sys1.id, 'ExecIsUpdateTrigger') = 1
+                           THEN 'UPDATE'
+                           WHEN OBJECTPROPERTY(sys1.id, 'ExecIsDeleteTrigger') = 1
+                           THEN 'DELETE'
+                         END trigger_event,
+                         CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsteadOfTrigger') = 1
+                           THEN 'INSTEAD OF' ELSE 'AFTER'
+                         END trigger_type,
+                         '' trigger_comment
+                    FROM sysobjects sys1
+                    JOIN sysobjects sys2 ON sys1.parent_obj = sys2.id
+                    JOIN syscomments c ON sys1.id = c.id
+                   WHERE sys1.xtype = 'TR'
+                     AND sys1.name = ". $db->quote($trigger, 'text');
+
+        $types = array(
+            'trigger_name'    => 'text',
+            'table_name'      => 'text',
+            'trigger_body'    => 'text',
+            'trigger_type'    => 'text',
+            'trigger_event'   => 'text',
+            'trigger_comment' => 'text',
+            'trigger_enabled' => 'boolean',
+            'is_encripted'    => 'boolean',
+        );
+
+        $def = $db->queryRow($query, $types, MDB2_FETCHMODE_ASSOC);
+        if (PEAR::isError($def)) {
+            return $def;
+        }
+        $trg_body = $db->queryCol('EXEC sp_helptext '. $db->quote($trigger, 'text'), 'text');
+        if (!PEAR::isError($trg_body)) {
+            $def['trigger_body'] = implode(' ', $trg_body);
+        }
+        return $def;
+    }
+
+    // }}}
+    // {{{ tableInfo()
+
+    /**
+     * Returns information about a table or a result set
+     *
+     * NOTE: only supports 'table' and 'flags' if <var>$result</var>
+     * is a table name.
+     *
+     * @param object|string  $result  MDB2_result object from a query or a
+     *                                 string containing the name of a table.
+     *                                 While this also accepts a query result
+     *                                 resource identifier, this behavior is
+     *                                 deprecated.
+     * @param int            $mode    a valid tableInfo mode
+     *
+     * @return array  an associative array with the information requested.
+     *                 A MDB2_Error object on failure.
+     *
+     * @see MDB2_Driver_Common::tableInfo()
+     */
+    function tableInfo($result, $mode = null)
+    {
+        if (is_string($result)) {
+           return parent::tableInfo($result, $mode);
+        }
+
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $resource = MDB2::isResultCommon($result) ? $result->getResource() : $result;
+        if (!is_resource($resource)) {
+            return $db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
+                'Could not generate result resource', __FUNCTION__);
+        }
+
+        if ($db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            if ($db->options['field_case'] == CASE_LOWER) {
+                $case_func = 'strtolower';
+            } else {
+                $case_func = 'strtoupper';
+            }
+        } else {
+            $case_func = 'strval';
+        }
+
+        $meta = @sqlsrv_field_metadata($resource);
+        $count = count($meta);
+        $res   = array();
+
+        if ($mode) {
+            $res['num_fields'] = $count;
+        }
+
+        $db->loadModule('Datatype', null, true);
+        for ($i = 0; $i < $count; $i++) {
+            $res[$i] = array(
+                'table' => '',
+                'name'              => $case_func($meta[$i]['Name']),
+                'type'              => $meta[$i]['Type'],
+                'length'            => $meta[$i]['Size'],
+                'numeric_precision' => $meta[$i]['Precision'],
+                'numeric_scale'     => $meta[$i]['Scale'],
+                'flags'             => ''
+            );
+            $mdb2type_info = $db->datatype->mapNativeDatatype($res[$i]);
+            if (PEAR::isError($mdb2type_info)) {
+               return $mdb2type_info;
+            }
+            $res[$i]['mdb2type'] = $mdb2type_info[0][0];
+            if ($mode & MDB2_TABLEINFO_ORDER) {
+                $res['order'][$res[$i]['name']] = $i;
+            }
+            if ($mode & MDB2_TABLEINFO_ORDERTABLE) {
+                $res['ordertable'][$res[$i]['table']][$res[$i]['name']] = $i;
+            }
+        }
+
+        return $res;
+    }
+
+    // }}}
+    // {{{ _mssql_field_flags()
+
+    /**
+     * Get a column's flags
+     *
+     * Supports "not_null", "primary_key",
+     * "auto_increment" (mssql identity), "timestamp" (mssql timestamp),
+     * "unique_key" (mssql unique index, unique check or primary_key) and
+     * "multiple_key" (multikey index)
+     *
+     * mssql timestamp is NOT similar to the mysql timestamp so this is maybe
+     * not useful at all - is the behaviour of mysql_field_flags that primary
+     * keys are alway unique? is the interpretation of multiple_key correct?
+     *
+     * @param string $table   the table name
+     * @param string $column  the field name
+     *
+     * @return string  the flags
+     *
+     * @access protected
+     * @author Joern Barthel <j_barthel@web.de>
+     */
+    function _mssql_field_flags($table, $column)
+    {
+        $db = $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        static $tableName = null;
+        static $flags = array();
+
+        if ($table != $tableName) {
+
+            $flags = array();
+            $tableName = $table;
+
+            // get unique and primary keys
+            $res = $db->queryAll("EXEC SP_HELPINDEX[$table]", null, MDB2_FETCHMODE_ASSOC);
+
+            foreach ($res as $val) {
+                $val = array_change_key_case($val, CASE_LOWER);
+                $keys = explode(', ', $val['index_keys']);
+
+                if (sizeof($keys) > 1) {
+                    foreach ($keys as $key) {
+                        $this->_add_flag($flags[$key], 'multiple_key');
+                    }
+                }
+
+                if (strpos($val['index_description'], 'primary key')) {
+                    foreach ($keys as $key) {
+                        $this->_add_flag($flags[$key], 'primary_key');
+                    }
+                } elseif (strpos($val['index_description'], 'unique')) {
+                    foreach ($keys as $key) {
+                        $this->_add_flag($flags[$key], 'unique_key');
+                    }
+                }
+            }
+
+            // get auto_increment, not_null and timestamp
+            $res = $db->queryAll("EXEC SP_COLUMNS[$table]", null, MDB2_FETCHMODE_ASSOC);
+
+            foreach ($res as $val) {
+                $val = array_change_key_case($val, CASE_LOWER);
+                if ($val['nullable'] == '0') {
+                    $this->_add_flag($flags[$val['column_name']], 'not_null');
+                }
+                if (strpos($val['type_name'], 'identity')) {
+                    $this->_add_flag($flags[$val['column_name']], 'auto_increment');
+                }
+                if (strpos($val['type_name'], 'timestamp')) {
+                    $this->_add_flag($flags[$val['column_name']], 'timestamp');
+                }
+            }
+        }
+
+        if (!empty($flags[$column])) {
+            return(implode(' ', $flags[$column]));
+        }
+        return '';
+    }
+
+    // }}}
+    // {{{ _add_flag()
+
+    /**
+     * Adds a string to the flags array if the flag is not yet in there
+     * - if there is no flag present the array is created
+     *
+     * @param array  &$array  the reference to the flag-array
+     * @param string $value   the flag value
+     *
+     * @return void
+     *
+     * @access protected
+     * @author Joern Barthel <j_barthel@web.de>
+     */
+    function _add_flag(&$array, $value)
+    {
+        if (!is_array($array)) {
+            $array = array($value);
+        } elseif (!in_array($value, $array)) {
+            array_push($array, $value);
+        }
+    }
+
+    // }}}
+}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/mssql.php b/program/lib/MDB2/Driver/mssql.php
new file mode 100644 (file)
index 0000000..88d326b
--- /dev/null
@@ -0,0 +1,1172 @@
+<?php
+// vim: set et ts=4 sw=4 fdm=marker:
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2008 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith, Frank M. Kromann                       |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Frank M. Kromann <frank@kromann.info>                        |
+// +----------------------------------------------------------------------+
+//
+// $Id: mssql.php 295587 2010-02-28 17:16:38Z quipo $
+//
+// {{{ Class MDB2_Driver_mssql
+/**
+ * MDB2 MSSQL Server driver
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Frank M. Kromann <frank@kromann.info>
+ */
+class MDB2_Driver_mssql extends MDB2_Driver_Common
+{
+    // {{{ properties
+
+    var $string_quoting = array('start' => "'", 'end' => "'", 'escape' => "'", 'escape_pattern' => false);
+
+    var $identifier_quoting = array('start' => '[', 'end' => ']', 'escape' => ']');
+
+    // }}}
+    // {{{ constructor
+
+    /**
+     * Constructor
+     */
+    function __construct()
+    {
+        parent::__construct();
+
+        $this->phptype = 'mssql';
+        $this->dbsyntax = 'mssql';
+
+        $this->supported['sequences'] = 'emulated';
+        $this->supported['indexes'] = true;
+        $this->supported['affected_rows'] = true;
+        $this->supported['transactions'] = true;
+        $this->supported['savepoints'] = false;
+        $this->supported['summary_functions'] = true;
+        $this->supported['order_by_text'] = true;
+        $this->supported['current_id'] = 'emulated';
+        $this->supported['limit_queries'] = 'emulated';
+        $this->supported['LOBs'] = true;
+        $this->supported['replace'] = 'emulated';
+        $this->supported['sub_selects'] = true;
+        $this->supported['triggers'] = true;
+        $this->supported['auto_increment'] = true;
+        $this->supported['primary_key'] = true;
+        $this->supported['result_introspection'] = true;
+        $this->supported['prepared_statements'] = 'emulated';
+        $this->supported['pattern_escaping'] = true;
+        $this->supported['new_link'] = true;
+
+        $this->options['DBA_username'] = false;
+        $this->options['DBA_password'] = false;
+        $this->options['database_device'] = false;
+        $this->options['database_size'] = false;
+        $this->options['max_identifiers_length'] = 128; // MS Access: 64
+    }
+
+    // }}}
+    // {{{ errorInfo()
+
+    /**
+     * This method is used to collect information about an error
+     *
+     * @param integer $error
+     * @return array
+     * @access public
+     */
+    function errorInfo($error = null, $connection = null)
+    {
+        if (null === $connection) {
+            $connection = $this->connection;
+        }
+
+        $native_code = null;
+        if ($connection) {
+            $result = @mssql_query('select @@ERROR as ErrorCode', $connection);
+            if ($result) {
+                $native_code = @mssql_result($result, 0, 0);
+                @mssql_free_result($result);
+            }
+        }
+        $native_msg = @mssql_get_last_message();
+        if (null === $error) {
+            static $ecode_map;
+            if (empty($ecode_map)) {
+                $ecode_map = array(
+                    102   => MDB2_ERROR_SYNTAX,
+                    110   => MDB2_ERROR_VALUE_COUNT_ON_ROW,
+                    155   => MDB2_ERROR_NOSUCHFIELD,
+                    156   => MDB2_ERROR_SYNTAX,
+                    170   => MDB2_ERROR_SYNTAX,
+                    207   => MDB2_ERROR_NOSUCHFIELD,
+                    208   => MDB2_ERROR_NOSUCHTABLE,
+                    245   => MDB2_ERROR_INVALID_NUMBER,
+                    319   => MDB2_ERROR_SYNTAX,
+                    321   => MDB2_ERROR_NOSUCHFIELD,
+                    325   => MDB2_ERROR_SYNTAX,
+                    336   => MDB2_ERROR_SYNTAX,
+                    515   => MDB2_ERROR_CONSTRAINT_NOT_NULL,
+                    547   => MDB2_ERROR_CONSTRAINT,
+                    911   => MDB2_ERROR_NOT_FOUND,
+                    1018  => MDB2_ERROR_SYNTAX,
+                    1035  => MDB2_ERROR_SYNTAX,
+                    1801  => MDB2_ERROR_ALREADY_EXISTS,
+                    1913  => MDB2_ERROR_ALREADY_EXISTS,
+                    2209  => MDB2_ERROR_SYNTAX,
+                    2223  => MDB2_ERROR_SYNTAX,
+                    2248  => MDB2_ERROR_SYNTAX,
+                    2256  => MDB2_ERROR_SYNTAX,
+                    2257  => MDB2_ERROR_SYNTAX,
+                    2627  => MDB2_ERROR_CONSTRAINT,
+                    2714  => MDB2_ERROR_ALREADY_EXISTS,
+                    3607  => MDB2_ERROR_DIVZERO,
+                    3701  => MDB2_ERROR_NOSUCHTABLE,
+                    7630  => MDB2_ERROR_SYNTAX,
+                    8134  => MDB2_ERROR_DIVZERO,
+                    9303  => MDB2_ERROR_SYNTAX,
+                    9317  => MDB2_ERROR_SYNTAX,
+                    9318  => MDB2_ERROR_SYNTAX,
+                    9331  => MDB2_ERROR_SYNTAX,
+                    9332  => MDB2_ERROR_SYNTAX,
+                    15253 => MDB2_ERROR_SYNTAX,
+                );
+            }
+            if (isset($ecode_map[$native_code])) {
+                if ($native_code == 3701
+                    && preg_match('/Cannot drop the index/i', $native_msg)
+                ) {
+                   $error = MDB2_ERROR_NOT_FOUND;
+                } else {
+                    $error = $ecode_map[$native_code];
+                }
+            }
+        }
+        return array($error, $native_code, $native_msg);
+    }
+
+    // }}}
+    // {{{ function escapePattern($text)
+
+    /**
+     * Quotes pattern (% and _) characters in a string)
+     *
+     * @param   string  the input string to quote
+     *
+     * @return  string  quoted string
+     *
+     * @access  public
+     */
+    function escapePattern($text)
+    {
+        $text = str_replace("[", "[ [ ]", $text);
+        foreach ($this->wildcards as $wildcard) {
+            $text = str_replace($wildcard, '[' . $wildcard . ']', $text);
+        }
+        return $text;
+    }
+
+    // }}}
+    // {{{ escape()
+
+    /**
+     * Quotes a string so it can be safely used in a query. It will quote
+     * the text so it can safely be used within a query.
+     *
+     * @param string $text             the input string to quote
+     * @param bool   $escape_wildcards flag
+     *
+     * @return string  quoted string
+     * @access public
+     */
+    function escape($text, $escape_wildcards = false)
+    {
+        $text = parent::escape($text, $escape_wildcards);
+        // http://pear.php.net/bugs/bug.php?id=16118
+        // http://support.microsoft.com/kb/164291
+        return preg_replace("/\\\\(\r\n|\r|\n)/", '\\\\$1', $text);
+    }
+
+    // }}}
+    // {{{ beginTransaction()
+
+    /**
+     * Start a transaction or set a savepoint.
+     *
+     * @param string $savepoint name of a savepoint to set
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function beginTransaction($savepoint = null)
+    {
+        $this->debug('Starting transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint));
+        if (null !== $savepoint) {
+            if (!$this->in_transaction) {
+                return $this->raiseError(MDB2_ERROR_INVALID, null, null,
+                    'savepoint cannot be released when changes are auto committed', __FUNCTION__);
+            }
+            $query = 'SAVE TRANSACTION '.$savepoint;
+            return $this->_doQuery($query, true);
+        }
+        if ($this->in_transaction) {
+            return MDB2_OK;  //nothing to do
+        }
+        if (!$this->destructor_registered && $this->opened_persistent) {
+            $this->destructor_registered = true;
+            register_shutdown_function('MDB2_closeOpenTransactions');
+        }
+        $result =& $this->_doQuery('BEGIN TRANSACTION', true);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        $this->in_transaction = true;
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ commit()
+
+    /**
+     * Commit the database changes done during a transaction that is in
+     * progress or release a savepoint. This function may only be called when
+     * auto-committing is disabled, otherwise it will fail. Therefore, a new
+     * transaction is implicitly started after committing the pending changes.
+     *
+     * @param string $savepoint name of a savepoint to release
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access  public
+     */
+    function commit($savepoint = null)
+    {
+        $this->debug('Committing transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint));
+        if (!$this->in_transaction) {
+            return $this->raiseError(MDB2_ERROR_INVALID, null, null,
+                'commit/release savepoint cannot be done changes are auto committed', __FUNCTION__);
+        }
+        if (null !== $savepoint) {
+            return MDB2_OK;
+        }
+
+        $result =& $this->_doQuery('COMMIT TRANSACTION', true);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        $this->in_transaction = false;
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ rollback()
+
+    /**
+     * Cancel any database changes done during a transaction or since a specific
+     * savepoint that is in progress. This function may only be called when
+     * auto-committing is disabled, otherwise it will fail. Therefore, a new
+     * transaction is implicitly started after canceling the pending changes.
+     *
+     * @param string $savepoint name of a savepoint to rollback to
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function rollback($savepoint = null)
+    {
+        $this->debug('Rolling back transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint));
+        if (!$this->in_transaction) {
+            return $this->raiseError(MDB2_ERROR_INVALID, null, null,
+                'rollback cannot be done changes are auto committed', __FUNCTION__);
+        }
+        if (null !== $savepoint) {
+            $query = 'ROLLBACK TRANSACTION '.$savepoint;
+            return $this->_doQuery($query, true);
+        }
+
+        $result =& $this->_doQuery('ROLLBACK TRANSACTION', true);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        $this->in_transaction = false;
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ _doConnect()
+
+    /**
+     * do the grunt work of the connect
+     *
+     * @param string  $username
+     * @param string  $password
+     * @param boolean $persistent
+     *
+     * @return connection on success or MDB2 Error Object on failure
+     * @access protected
+     */
+    function _doConnect($username, $password, $persistent = false)
+    {
+        if (   !PEAR::loadExtension($this->phptype)
+            && !PEAR::loadExtension('sybase_ct')
+            && !PEAR::loadExtension('odbtp')
+            && !function_exists('mssql_connect')
+        ) {
+            return $this->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                'extension '.$this->phptype.' is not compiled into PHP', __FUNCTION__);
+        }
+
+        $params = array(
+            $this->dsn['hostspec'] ? $this->dsn['hostspec'] : 'localhost',
+            $username ? $username : null,
+            $password ? $password : null,
+            );
+        if ($this->dsn['port']) {
+            $params[0].= ((substr(PHP_OS, 0, 3) == 'WIN') ? ',' : ':').$this->dsn['port'];
+        }
+        if (!$persistent) {
+            if ($this->_isNewLinkSet()) {
+                $params[] = true;
+            } else {
+                $params[] = false;
+            }
+        }
+
+        $connect_function = $persistent ? 'mssql_pconnect' : 'mssql_connect';
+
+        $connection = @call_user_func_array($connect_function, $params);
+        if ($connection <= 0) {
+            return $this->raiseError(MDB2_ERROR_CONNECT_FAILED, null, null,
+                'unable to establish a connection', __FUNCTION__, __FUNCTION__);
+        }
+
+        @mssql_query('SET ANSI_NULL_DFLT_ON ON', $connection);
+
+        /*
+        if (!empty($this->dsn['charset'])) {
+            $result = $this->setCharset($this->dsn['charset'], $connection);
+            if (PEAR::isError($result)) {
+                return $result;
+            }
+        }
+        */
+
+        if ((bool)ini_get('mssql.datetimeconvert')) {
+            // his isn't the most elegant way of doing it but it prevents from
+            // breaking anything thus preserves BC. Bug #11849
+            if (isset($this->options['datetimeconvert']) && (bool)$this->options['datetimeconvert'] !== false) {
+                @ini_set('mssql.datetimeconvert', '1');
+            } else {
+                @ini_set('mssql.datetimeconvert', '0');
+            }
+        }
+
+        if (empty($this->dsn['disable_iso_date'])) {
+            @mssql_query('SET DATEFORMAT ymd', $connection);
+        }
+
+        return $connection;
+    }
+
+    // }}}
+    // {{{ connect()
+
+    /**
+     * Connect to the database
+     *
+     * @return true on success, MDB2 Error Object on failure
+     */
+    function connect()
+    {
+        if (is_resource($this->connection)) {
+            //if (count(array_diff($this->connected_dsn, $this->dsn)) == 0
+            if (MDB2::areEquals($this->connected_dsn, $this->dsn)
+                && $this->opened_persistent == $this->options['persistent']
+            ) {
+                return MDB2_OK;
+            }
+            $this->disconnect(false);
+        }
+
+        $connection = $this->_doConnect(
+            $this->dsn['username'],
+            $this->dsn['password'],
+            $this->options['persistent']
+        );
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+
+        $this->connection = $connection;
+        $this->connected_dsn = $this->dsn;
+        $this->connected_database_name = '';
+        $this->opened_persistent = $this->options['persistent'];
+        $this->dbsyntax = $this->dsn['dbsyntax'] ? $this->dsn['dbsyntax'] : $this->phptype;
+
+        if ($this->database_name) {
+            if ($this->database_name != $this->connected_database_name) {
+                if (!@mssql_select_db($this->database_name, $connection)) {
+                    $err = $this->raiseError(null, null, null,
+                        'Could not select the database: '.$this->database_name, __FUNCTION__);
+                    return $err;
+                }
+                $this->connected_database_name = $this->database_name;
+            }
+        }
+
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ databaseExists()
+
+    /**
+     * check if given database name is exists?
+     *
+     * @param string $name    name of the database that should be checked
+     *
+     * @return mixed true/false on success, a MDB2 error on failure
+     * @access public
+     */
+    function databaseExists($name)
+    {
+        $connection = $this->_doConnect($this->dsn['username'],
+                                        $this->dsn['password'],
+                                        $this->options['persistent']);
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+
+        $result = @mssql_select_db($name, $connection);
+        $errorInfo = $this->errorInfo(null, $connection);
+        @mssql_close($connection);
+        if (!$result) {
+            if ($errorInfo[0] != MDB2_ERROR_NOT_FOUND) {
+            exit;
+                $result = $this->raiseError($errorInfo[0], null, null, $errorInfo[2], __FUNCTION__);
+                return $result;
+            }
+            $result = false;
+        }
+
+        return $result;
+    }
+
+    // }}}
+    // {{{ disconnect()
+
+    /**
+     * Log out and disconnect from the database.
+     *
+     * @param  boolean $force if the disconnect should be forced even if the
+     *                        connection is opened persistently
+     * @return mixed true on success, false if not connected and error
+     *                object on error
+     * @access public
+     */
+    function disconnect($force = true)
+    {
+        if (is_resource($this->connection)) {
+            if ($this->in_transaction) {
+                $dsn = $this->dsn;
+                $database_name = $this->database_name;
+                $persistent = $this->options['persistent'];
+                $this->dsn = $this->connected_dsn;
+                $this->database_name = $this->connected_database_name;
+                $this->options['persistent'] = $this->opened_persistent;
+                $this->rollback();
+                $this->dsn = $dsn;
+                $this->database_name = $database_name;
+                $this->options['persistent'] = $persistent;
+            }
+
+            if (!$this->opened_persistent || $force) {
+                $ok = @mssql_close($this->connection);
+                if (!$ok) {
+                    return $this->raiseError(MDB2_ERROR_DISCONNECT_FAILED,
+                           null, null, null, __FUNCTION__);
+                }
+            }
+        } else {
+            return false;
+        }
+        return parent::disconnect($force);
+    }
+
+    // }}}
+    // {{{ standaloneQuery()
+
+    /**
+     * execute a query as DBA
+     *
+     * @param string $query the SQL query
+     * @param mixed   $types  array that contains the types of the columns in
+     *                        the result set
+     * @param boolean $is_manip  if the query is a manipulation query
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function standaloneQuery($query, $types = null, $is_manip = false)
+    {
+        $user = $this->options['DBA_username']? $this->options['DBA_username'] : $this->dsn['username'];
+        $pass = $this->options['DBA_password']? $this->options['DBA_password'] : $this->dsn['password'];
+        $connection = $this->_doConnect($user, $pass, $this->options['persistent']);
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+
+        $offset = $this->offset;
+        $limit = $this->limit;
+        $this->offset = $this->limit = 0;
+        $query = $this->_modifyQuery($query, $is_manip, $limit, $offset);
+        
+        $result = $this->_doQuery($query, $is_manip, $connection, $this->database_name);
+        if (!PEAR::isError($result)) {
+            $result = $this->_affectedRows($connection, $result);
+        }
+
+        @mssql_close($connection);
+        return $result;
+    }
+
+    // }}}
+    // {{{ _doQuery()
+
+    /**
+     * Execute a query
+     * @param string $query  query
+     * @param boolean $is_manip  if the query is a manipulation query
+     * @param resource $connection
+     * @param string $database_name
+     * @return result or error object
+     * @access protected
+     */
+    function _doQuery($query, $is_manip = false, $connection = null, $database_name = null)
+    {
+        $this->last_query = $query;
+        $result = $this->debug($query, 'query', array('is_manip' => $is_manip, 'when' => 'pre'));
+        if ($result) {
+            if (PEAR::isError($result)) {
+                return $result;
+            }
+            $query = $result;
+        }
+        if ($this->options['disable_query']) {
+            $result = $is_manip ? 0 : null;
+            return $result;
+        }
+
+        if (null === $connection) {
+            $connection = $this->getConnection();
+            if (PEAR::isError($connection)) {
+                return $connection;
+            }
+        }
+        if (null === $database_name) {
+            $database_name = $this->database_name;
+        }
+
+        if ($database_name) {
+            if ($database_name != $this->connected_database_name) {
+                if (!@mssql_select_db($database_name, $connection)) {
+                    $err = $this->raiseError(null, null, null,
+                        'Could not select the database: '.$database_name, __FUNCTION__);
+                    return $err;
+                }
+                $this->connected_database_name = $database_name;
+            }
+        }
+
+        $result = @mssql_query($query, $connection);
+        if (!$result) {
+            $err = $this->raiseError(null, null, null,
+                'Could not execute statement', __FUNCTION__);
+            return $err;
+        }
+
+        $this->debug($query, 'query', array('is_manip' => $is_manip, 'when' => 'post', 'result' => $result));
+        return $result;
+    }
+
+    // }}}
+    // {{{ _affectedRows()
+
+    /**
+     * Returns the number of rows affected
+     *
+     * @param resource $result
+     * @param resource $connection
+     * @return mixed MDB2 Error Object or the number of rows affected
+     * @access private
+     */
+    function _affectedRows($connection, $result = null)
+    {
+        if (null === $connection) {
+            $connection = $this->getConnection();
+            if (PEAR::isError($connection)) {
+                return $connection;
+            }
+        }
+        return @mssql_rows_affected($connection);
+    }
+
+    // }}}
+    // {{{ _modifyQuery()
+
+    /**
+     * Changes a query string for various DBMS specific reasons
+     *
+     * @param string $query  query to modify
+     * @param boolean $is_manip  if it is a DML query
+     * @param integer $limit  limit the number of rows
+     * @param integer $offset  start reading from given offset
+     * @return string modified query
+     * @access protected
+     */
+    function _modifyQuery($query, $is_manip, $limit, $offset)
+    {
+        if ($limit > 0) {
+            $fetch = $offset + $limit;
+            if (!$is_manip) {
+                return preg_replace('/^([\s(])*SELECT( DISTINCT)?(?!\s*TOP\s*\()/i',
+                    "\\1SELECT\\2 TOP $fetch", $query);
+            }
+        }
+        return $query;
+    }
+
+    // }}}
+    // {{{ getServerVersion()
+
+    /**
+     * return version information about the server
+     *
+     * @param bool   $native  determines if the raw version string should be returned
+     * @return mixed array/string with version information or MDB2 error object
+     * @access public
+     */
+    function getServerVersion($native = false)
+    {
+        if ($this->connected_server_info) {
+            $server_info = $this->connected_server_info;
+        } else {
+            $query = 'SELECT @@VERSION';
+            $server_info = $this->queryOne($query, 'text');
+            if (PEAR::isError($server_info)) {
+                return $server_info;
+            }
+        }
+        // cache server_info
+        $this->connected_server_info = $server_info;
+        if (!$native && !PEAR::isError($server_info)) {
+            if (preg_match('/(\d+)\.(\d+)\.(\d+)/', $server_info, $tmp)) {
+                $server_info = array(
+                    'major' => $tmp[1],
+                    'minor' => $tmp[2],
+                    'patch' => $tmp[3],
+                    'extra' => null,
+                    'native' => $server_info,
+                );
+            } else {
+                $server_info = array(
+                    'major' => null,
+                    'minor' => null,
+                    'patch' => null,
+                    'extra' => null,
+                    'native' => $server_info,
+                );
+            }
+        }
+        return $server_info;
+    }
+
+    // }}}
+    // {{{ _checkSequence
+
+    /**
+     * Checks if there's a sequence that exists.
+     *
+     * @param  string $seq_name    The sequence name to verify.
+     * @return bool   $tableExists The value if the table exists or not
+     * @access private
+     */
+    function _checkSequence($seq_name)
+    {
+        $query = "SELECT * FROM $seq_name";
+        $tableExists = $this->_doQuery($query, true);
+        if (PEAR::isError($tableExists)) {
+            if ($tableExists->getCode() == MDB2_ERROR_NOSUCHTABLE) {
+                return false;
+            }
+            //return $tableExists;
+            return false;
+        }
+        return mssql_result($tableExists, 0, 0);
+    }
+
+    // }}}
+    // {{{ nextID()
+
+    /**
+     * Returns the next free id of a sequence
+     *
+     * @param string $seq_name name of the sequence
+     * @param boolean $ondemand when true the sequence is
+     *                          automatic created, if it
+     *                          not exists
+     *
+     * @return mixed MDB2 Error Object or id
+     * @access public
+     */
+    function nextID($seq_name, $ondemand = true)
+    {
+        $sequence_name = $this->quoteIdentifier($this->getSequenceName($seq_name), true);
+        $seqcol_name = $this->quoteIdentifier($this->options['seqcol_name'], true);
+        $this->pushErrorHandling(PEAR_ERROR_RETURN);
+        $this->expectError(MDB2_ERROR_NOSUCHTABLE);
+        
+        $seq_val = $this->_checkSequence($sequence_name);
+
+        if ($seq_val) {
+            $query = "SET IDENTITY_INSERT $sequence_name OFF ".
+                     "INSERT INTO $sequence_name DEFAULT VALUES";
+        } else {
+            $query = "INSERT INTO $sequence_name ($seqcol_name) VALUES (0)";
+        }
+        $result = $this->_doQuery($query, true);
+        $this->popExpect();
+        $this->popErrorHandling();
+        if (PEAR::isError($result)) {
+            if ($ondemand && !$this->_checkSequence($sequence_name)) {
+                $this->loadModule('Manager', null, true);
+                $result = $this->manager->createSequence($seq_name);
+                if (PEAR::isError($result)) {
+                    return $this->raiseError($result, null, null,
+                        'on demand sequence '.$seq_name.' could not be created', __FUNCTION__);
+                } else {
+                    /**
+                     * Little off-by-one problem with the sequence emulation
+                     * here being fixed, that instead of re-calling nextID
+                     * and forcing an increment by one, we simply check if it
+                     * exists, then we get the last inserted id if it does.
+                     *
+                     * In theory, $seq_name should be created otherwise there would
+                     * have been an error thrown somewhere up there.. 
+                     *
+                     * @todo confirm
+                     */
+                    if ($this->_checkSequence($seq_name)) {
+                        return $this->lastInsertID($seq_name);
+                    }
+
+                    return $this->nextID($seq_name, false);
+                }
+            }
+            return $result;
+        }
+        $value = $this->lastInsertID($sequence_name);
+        if (is_numeric($value)) {
+            $query = "DELETE FROM $sequence_name WHERE $seqcol_name < $value";
+            $result = $this->_doQuery($query, true);
+            if (PEAR::isError($result)) {
+                $this->warnings[] = 'nextID: could not delete previous sequence table values from '.$seq_name;
+            }
+        }
+        return $value;
+    }
+
+    // }}}
+    // {{{ lastInsertID()
+
+    /**
+     * Returns the autoincrement ID if supported or $id or fetches the current
+     * ID in a sequence called: $table.(empty($field) ? '' : '_'.$field)
+     *
+     * @param string $table name of the table into which a new row was inserted
+     * @param string $field name of the field into which a new row was inserted
+     *
+     * @return mixed MDB2 Error Object or id
+     * @access public
+     */
+    function lastInsertID($table = null, $field = null)
+    {
+        $server_info = $this->getServerVersion();
+        if (is_array($server_info) && (null !== $server_info['major'])
+           && $server_info['major'] >= 8
+        ) {
+            $query = "SELECT IDENT_CURRENT('$table')";
+        } else {
+            $query = "SELECT @@IDENTITY";
+            if (null !== $table) {
+                $query .= ' FROM '.$this->quoteIdentifier($table, true);
+            }
+        }
+
+        return $this->queryOne($query, 'integer');
+    }
+
+    // }}}
+}
+
+// }}}
+// {{{ Class MDB2_Result_mssql
+
+/**
+ * MDB2 MSSQL Server result driver
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Frank M. Kromann <frank@kromann.info>
+ */
+class MDB2_Result_mssql extends MDB2_Result_Common
+{
+    // {{{ _skipLimitOffset()
+
+    /**
+     * Skip the first row of a result set.
+     *
+     * @param resource $result
+     * @return mixed a result handle or MDB2_OK on success, a MDB2 error on failure
+     * @access protected
+     */
+    function _skipLimitOffset()
+    {
+        if ($this->limit) {
+            if ($this->rownum >= $this->limit) {
+                return false;
+            }
+        }
+        if ($this->offset) {
+            while ($this->offset_count < $this->offset) {
+                ++$this->offset_count;
+                if (!is_array(@mssql_fetch_row($this->result))) {
+                    $this->offset_count = $this->limit;
+                    return false;
+                }
+            }
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ fetchRow()
+
+    /**
+     * Fetch a row and insert the data into an existing array.
+     *
+     * @param int $fetchmode  how the array data should be indexed
+     * @param int $rownum     number of the row where the data can be found
+     *
+     * @return int data array on success, a MDB2 error on failure
+     * @access public
+     */
+    function fetchRow($fetchmode = MDB2_FETCHMODE_DEFAULT, $rownum = null)
+    {
+        if (!$this->_skipLimitOffset()) {
+            return null;
+        }
+        if (null !== $rownum) {
+            $seek = $this->seek($rownum);
+            if (PEAR::isError($seek)) {
+                return $seek;
+            }
+        }
+        if ($fetchmode == MDB2_FETCHMODE_DEFAULT) {
+            $fetchmode = $this->db->fetchmode;
+        }
+        if ($fetchmode & MDB2_FETCHMODE_ASSOC) {
+            $row = @mssql_fetch_assoc($this->result);
+            if (is_array($row)
+                && $this->db->options['portability'] & MDB2_PORTABILITY_FIX_CASE
+            ) {
+                $row = array_change_key_case($row, $this->db->options['field_case']);
+            }
+        } else {
+            $row = @mssql_fetch_row($this->result);
+        }
+        if (!$row) {
+            if (false === $this->result) {
+                $err = $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
+                    'resultset has already been freed', __FUNCTION__);
+                return $err;
+            }
+            return null;
+        }
+        $mode = $this->db->options['portability'] & MDB2_PORTABILITY_EMPTY_TO_NULL;
+        $rtrim = false;
+        if ($this->db->options['portability'] & MDB2_PORTABILITY_RTRIM) {
+            if (empty($this->types)) {
+                $mode += MDB2_PORTABILITY_RTRIM;
+            } else {
+                $rtrim = true;
+            }
+        }
+        if ($mode) {
+            $this->db->_fixResultArrayValues($row, $mode);
+        }
+        if (!empty($this->types)) {
+            $row = $this->db->datatype->convertResultRow($this->types, $row, $rtrim);
+        }
+        if (!empty($this->values)) {
+            $this->_assignBindColumns($row);
+        }
+        if ($fetchmode === MDB2_FETCHMODE_OBJECT) {
+            $object_class = $this->db->options['fetch_class'];
+            if ($object_class == 'stdClass') {
+                $row = (object) $row;
+            } else {
+                $rowObj = new $object_class($row);
+                $row = $rowObj;
+            }
+        }
+        ++$this->rownum;
+        return $row;
+    }
+
+    // }}}
+    // {{{ _getColumnNames()
+
+    /**
+     * Retrieve the names of columns returned by the DBMS in a query result.
+     *
+     * @return  mixed   Array variable that holds the names of columns as keys
+     *                  or an MDB2 error on failure.
+     *                  Some DBMS may not return any columns when the result set
+     *                  does not contain any rows.
+     * @access private
+     */
+    function _getColumnNames()
+    {
+        $columns = array();
+        $numcols = $this->numCols();
+        if (PEAR::isError($numcols)) {
+            return $numcols;
+        }
+        for ($column = 0; $column < $numcols; $column++) {
+            $column_name = @mssql_field_name($this->result, $column);
+            $columns[$column_name] = $column;
+        }
+        if ($this->db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $columns = array_change_key_case($columns, $this->db->options['field_case']);
+        }
+        return $columns;
+    }
+
+    // }}}
+    // {{{ numCols()
+
+    /**
+     * Count the number of columns returned by the DBMS in a query result.
+     *
+     * @return mixed integer value with the number of columns, a MDB2 error
+     *      on failure
+     * @access public
+     */
+    function numCols()
+    {
+        $cols = @mssql_num_fields($this->result);
+        if (null === $cols) {
+            if (false === $this->result) {
+                return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
+                    'resultset has already been freed', __FUNCTION__);
+            }
+            if (null === $this->result) {
+                return count($this->types);
+            }
+            return $this->db->raiseError(null, null, null,
+                'Could not get column count', __FUNCTION__);
+        }
+        return $cols;
+    }
+
+    // }}}
+    // {{{ nextResult()
+
+    /**
+     * Move the internal result pointer to the next available result
+     *
+     * @return true on success, false if there is no more result set or an error object on failure
+     * @access public
+     */
+    function nextResult()
+    {
+        if (false === $this->result) {
+            return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
+                'resultset has already been freed', __FUNCTION__);
+        }
+        if (null === $this->result) {
+            return false;
+        }
+        return @mssql_next_result($this->result);
+    }
+
+    // }}}
+    // {{{ free()
+
+    /**
+     * Free the internal resources associated with $result.
+     *
+     * @return boolean true on success, false if $result is invalid
+     * @access public
+     */
+    function free()
+    {
+        if (is_resource($this->result) && $this->db->connection) {
+            $free = @mssql_free_result($this->result);
+            if (false === $free) {
+                return $this->db->raiseError(null, null, null,
+                    'Could not free result', __FUNCTION__);
+            }
+        }
+        $this->result = false;
+        return MDB2_OK;
+    }
+
+    // }}}
+}
+
+// }}}
+// {{{ class MDB2_BufferedResult_mssql
+
+/**
+ * MDB2 MSSQL Server buffered result driver
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Frank M. Kromann <frank@kromann.info>
+ */
+class MDB2_BufferedResult_mssql extends MDB2_Result_mssql
+{
+    // {{{ seek()
+
+    /**
+     * Seek to a specific row in a result set
+     *
+     * @param int $rownum number of the row where the data can be found
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function seek($rownum = 0)
+    {
+        if ($this->rownum != ($rownum - 1) && !@mssql_data_seek($this->result, $rownum)) {
+            if (false === $this->result) {
+                return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
+                    'resultset has already been freed', __FUNCTION__);
+            }
+            if (null === $this->result) {
+                return MDB2_OK;
+            }
+            return $this->db->raiseError(MDB2_ERROR_INVALID, null, null,
+                'tried to seek to an invalid row number ('.$rownum.')', __FUNCTION__);
+        }
+        $this->rownum = $rownum - 1;
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ valid()
+
+    /**
+     * Check if the end of the result set has been reached
+     *
+     * @return mixed true or false on sucess, a MDB2 error on failure
+     * @access public
+     */
+    function valid()
+    {
+        $numrows = $this->numRows();
+        if (PEAR::isError($numrows)) {
+            return $numrows;
+        }
+        return $this->rownum < ($numrows - 1);
+    }
+
+    // }}}
+    // {{{ numRows()
+
+    /**
+     * Returns the number of rows in a result object
+     *
+     * @return mixed MDB2 Error Object or the number of rows
+     * @access public
+     */
+    function numRows()
+    {
+        $rows = @mssql_num_rows($this->result);
+        if (null === $rows) {
+            if (false === $this->result) {
+                return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
+                    'resultset has already been freed', __FUNCTION__);
+            }
+            if (null === $this->result) {
+                return 0;
+            }
+            return $this->db->raiseError(null, null, null,
+                'Could not get row count', __FUNCTION__);
+        }
+        if ($this->limit) {
+            $rows -= $this->offset;
+            if ($rows > $this->limit + 1) {
+                $rows = $this->limit + 1;
+            }
+            if ($rows < 0) {
+                $rows = 0;
+            }
+        }
+        return $rows;
+    }
+}
+
+// }}}
+// {{{ MDB2_Statement_mssql
+
+/**
+ * MDB2 MSSQL Server statement driver
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Frank M. Kromann <frank@kromann.info>
+ */
+class MDB2_Statement_mssql extends MDB2_Statement_Common
+{
+
+}
+
+// }}}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/mysql.php b/program/lib/MDB2/Driver/mysql.php
new file mode 100644 (file)
index 0000000..790bb6f
--- /dev/null
@@ -0,0 +1,1709 @@
+<?php
+// vim: set et ts=4 sw=4 fdm=marker:
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2008 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Lukas Smith <smith@pooteeweet.org>                           |
+// +----------------------------------------------------------------------+
+//
+// $Id: mysql.php 295587 2010-02-28 17:16:38Z quipo $
+//
+
+/**
+ * MDB2 MySQL driver
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Driver_mysql extends MDB2_Driver_Common
+{
+    // {{{ properties
+
+    var $string_quoting = array('start' => "'", 'end' => "'", 'escape' => '\\', 'escape_pattern' => '\\');
+
+    var $identifier_quoting = array('start' => '`', 'end' => '`', 'escape' => '`');
+
+    var $sql_comments = array(
+        array('start' => '-- ', 'end' => "\n", 'escape' => false),
+        array('start' => '#', 'end' => "\n", 'escape' => false),
+        array('start' => '/*', 'end' => '*/', 'escape' => false),
+    );
+
+    var $server_capabilities_checked = false;
+
+    var $start_transaction = false;
+
+    var $varchar_max_length = 255;
+
+    // }}}
+    // {{{ constructor
+
+    /**
+     * Constructor
+     */
+    function __construct()
+    {
+        parent::__construct();
+
+        $this->phptype = 'mysql';
+        $this->dbsyntax = 'mysql';
+
+        $this->supported['sequences'] = 'emulated';
+        $this->supported['indexes'] = true;
+        $this->supported['affected_rows'] = true;
+        $this->supported['transactions'] = false;
+        $this->supported['savepoints'] = false;
+        $this->supported['summary_functions'] = true;
+        $this->supported['order_by_text'] = true;
+        $this->supported['current_id'] = 'emulated';
+        $this->supported['limit_queries'] = true;
+        $this->supported['LOBs'] = true;
+        $this->supported['replace'] = true;
+        $this->supported['sub_selects'] = 'emulated';
+        $this->supported['triggers'] = false;
+        $this->supported['auto_increment'] = true;
+        $this->supported['primary_key'] = true;
+        $this->supported['result_introspection'] = true;
+        $this->supported['prepared_statements'] = 'emulated';
+        $this->supported['identifier_quoting'] = true;
+        $this->supported['pattern_escaping'] = true;
+        $this->supported['new_link'] = true;
+
+        $this->options['DBA_username'] = false;
+        $this->options['DBA_password'] = false;
+        $this->options['default_table_type'] = '';
+        $this->options['max_identifiers_length'] = 64;
+
+        $this->_reCheckSupportedOptions();
+    }
+
+    // }}}
+    // {{{ _reCheckSupportedOptions()
+    
+    /**
+     * If the user changes certain options, other capabilities may depend
+     * on the new settings, so we need to check them (again).
+     *
+     * @access private
+     */
+    function _reCheckSupportedOptions()
+    {
+        $this->supported['transactions'] = $this->options['use_transactions'];
+        $this->supported['savepoints']   = $this->options['use_transactions'];
+        if ($this->options['default_table_type']) {
+            switch (strtoupper($this->options['default_table_type'])) {
+            case 'BLACKHOLE':
+            case 'MEMORY':
+            case 'ARCHIVE':
+            case 'CSV':
+            case 'HEAP':
+            case 'ISAM':
+            case 'MERGE':
+            case 'MRG_ISAM':
+            case 'ISAM':
+            case 'MRG_MYISAM':
+            case 'MYISAM':
+                $this->supported['savepoints']   = false;
+                $this->supported['transactions'] = false;
+                $this->warnings[] = $this->options['default_table_type'] .
+                    ' is not a supported default table type';
+                break;
+            }
+        }
+    }
+
+    // }}}
+    // {{{ function setOption($option, $value)
+
+    /**
+     * set the option for the db class
+     *
+     * @param   string  option name
+     * @param   mixed   value for the option
+     *
+     * @return  mixed   MDB2_OK or MDB2 Error Object
+     *
+     * @access  public
+     */
+    function setOption($option, $value)
+    {
+        $res = parent::setOption($option, $value);
+        $this->_reCheckSupportedOptions();
+    }
+
+    // }}}
+    // {{{ errorInfo()
+
+    /**
+     * This method is used to collect information about an error
+     *
+     * @param integer $error
+     * @return array
+     * @access public
+     */
+    function errorInfo($error = null)
+    {
+        if ($this->connection) {
+            $native_code = @mysql_errno($this->connection);
+            $native_msg  = @mysql_error($this->connection);
+        } else {
+            $native_code = @mysql_errno();
+            $native_msg  = @mysql_error();
+        }
+        if (is_null($error)) {
+            static $ecode_map;
+            if (empty($ecode_map)) {
+                $ecode_map = array(
+                    1000 => MDB2_ERROR_INVALID, //hashchk
+                    1001 => MDB2_ERROR_INVALID, //isamchk
+                    1004 => MDB2_ERROR_CANNOT_CREATE,
+                    1005 => MDB2_ERROR_CANNOT_CREATE,
+                    1006 => MDB2_ERROR_CANNOT_CREATE,
+                    1007 => MDB2_ERROR_ALREADY_EXISTS,
+                    1008 => MDB2_ERROR_CANNOT_DROP,
+                    1009 => MDB2_ERROR_CANNOT_DROP,
+                    1010 => MDB2_ERROR_CANNOT_DROP,
+                    1011 => MDB2_ERROR_CANNOT_DELETE,
+                    1022 => MDB2_ERROR_ALREADY_EXISTS,
+                    1029 => MDB2_ERROR_NOT_FOUND,
+                    1032 => MDB2_ERROR_NOT_FOUND,
+                    1044 => MDB2_ERROR_ACCESS_VIOLATION,
+                    1045 => MDB2_ERROR_ACCESS_VIOLATION,
+                    1046 => MDB2_ERROR_NODBSELECTED,
+                    1048 => MDB2_ERROR_CONSTRAINT,
+                    1049 => MDB2_ERROR_NOSUCHDB,
+                    1050 => MDB2_ERROR_ALREADY_EXISTS,
+                    1051 => MDB2_ERROR_NOSUCHTABLE,
+                    1054 => MDB2_ERROR_NOSUCHFIELD,
+                    1060 => MDB2_ERROR_ALREADY_EXISTS,
+                    1061 => MDB2_ERROR_ALREADY_EXISTS,
+                    1062 => MDB2_ERROR_ALREADY_EXISTS,
+                    1064 => MDB2_ERROR_SYNTAX,
+                    1067 => MDB2_ERROR_INVALID,
+                    1072 => MDB2_ERROR_NOT_FOUND,
+                    1086 => MDB2_ERROR_ALREADY_EXISTS,
+                    1091 => MDB2_ERROR_NOT_FOUND,
+                    1100 => MDB2_ERROR_NOT_LOCKED,
+                    1109 => MDB2_ERROR_NOT_FOUND,
+                    1125 => MDB2_ERROR_ALREADY_EXISTS,
+                    1136 => MDB2_ERROR_VALUE_COUNT_ON_ROW,
+                    1138 => MDB2_ERROR_INVALID,
+                    1142 => MDB2_ERROR_ACCESS_VIOLATION,
+                    1143 => MDB2_ERROR_ACCESS_VIOLATION,
+                    1146 => MDB2_ERROR_NOSUCHTABLE,
+                    1149 => MDB2_ERROR_SYNTAX,
+                    1169 => MDB2_ERROR_CONSTRAINT,
+                    1176 => MDB2_ERROR_NOT_FOUND,
+                    1177 => MDB2_ERROR_NOSUCHTABLE,
+                    1213 => MDB2_ERROR_DEADLOCK,
+                    1216 => MDB2_ERROR_CONSTRAINT,
+                    1217 => MDB2_ERROR_CONSTRAINT,
+                    1227 => MDB2_ERROR_ACCESS_VIOLATION,
+                    1235 => MDB2_ERROR_CANNOT_CREATE,
+                    1299 => MDB2_ERROR_INVALID_DATE,
+                    1300 => MDB2_ERROR_INVALID,
+                    1304 => MDB2_ERROR_ALREADY_EXISTS,
+                    1305 => MDB2_ERROR_NOT_FOUND,
+                    1306 => MDB2_ERROR_CANNOT_DROP,
+                    1307 => MDB2_ERROR_CANNOT_CREATE,
+                    1334 => MDB2_ERROR_CANNOT_ALTER,
+                    1339 => MDB2_ERROR_NOT_FOUND,
+                    1356 => MDB2_ERROR_INVALID,
+                    1359 => MDB2_ERROR_ALREADY_EXISTS,
+                    1360 => MDB2_ERROR_NOT_FOUND,
+                    1363 => MDB2_ERROR_NOT_FOUND,
+                    1365 => MDB2_ERROR_DIVZERO,
+                    1451 => MDB2_ERROR_CONSTRAINT,
+                    1452 => MDB2_ERROR_CONSTRAINT,
+                    1542 => MDB2_ERROR_CANNOT_DROP,
+                    1546 => MDB2_ERROR_CONSTRAINT,
+                    1582 => MDB2_ERROR_CONSTRAINT,
+                    2003 => MDB2_ERROR_CONNECT_FAILED,
+                    2019 => MDB2_ERROR_INVALID,
+                );
+            }
+            if ($this->options['portability'] & MDB2_PORTABILITY_ERRORS) {
+                $ecode_map[1022] = MDB2_ERROR_CONSTRAINT;
+                $ecode_map[1048] = MDB2_ERROR_CONSTRAINT_NOT_NULL;
+                $ecode_map[1062] = MDB2_ERROR_CONSTRAINT;
+            } else {
+                // Doing this in case mode changes during runtime.
+                $ecode_map[1022] = MDB2_ERROR_ALREADY_EXISTS;
+                $ecode_map[1048] = MDB2_ERROR_CONSTRAINT;
+                $ecode_map[1062] = MDB2_ERROR_ALREADY_EXISTS;
+            }
+            if (isset($ecode_map[$native_code])) {
+                $error = $ecode_map[$native_code];
+            }
+        }
+        return array($error, $native_code, $native_msg);
+    }
+
+    // }}}
+    // {{{ escape()
+
+    /**
+     * Quotes a string so it can be safely used in a query. It will quote
+     * the text so it can safely be used within a query.
+     *
+     * @param   string  the input string to quote
+     * @param   bool    escape wildcards
+     *
+     * @return  string  quoted string
+     *
+     * @access  public
+     */
+    function escape($text, $escape_wildcards = false)
+    {
+        if ($escape_wildcards) {
+            $text = $this->escapePattern($text);
+        }
+        $connection = $this->getConnection();
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+        $text = @mysql_real_escape_string($text, $connection);
+        return $text;
+    }
+
+    // }}}
+    // {{{ beginTransaction()
+
+    /**
+     * Start a transaction or set a savepoint.
+     *
+     * @param   string  name of a savepoint to set
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  public
+     */
+    function beginTransaction($savepoint = null)
+    {
+        $this->debug('Starting transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint));
+        $this->_getServerCapabilities();
+        if (!is_null($savepoint)) {
+            if (!$this->supports('savepoints')) {
+                return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                    'savepoints are not supported', __FUNCTION__);
+            }
+            if (!$this->in_transaction) {
+                return $this->raiseError(MDB2_ERROR_INVALID, null, null,
+                    'savepoint cannot be released when changes are auto committed', __FUNCTION__);
+            }
+            $query = 'SAVEPOINT '.$savepoint;
+            return $this->_doQuery($query, true);
+        } elseif ($this->in_transaction) {
+            return MDB2_OK;  //nothing to do
+        }
+        if (!$this->destructor_registered && $this->opened_persistent) {
+            $this->destructor_registered = true;
+            register_shutdown_function('MDB2_closeOpenTransactions');
+        }
+        $query = $this->start_transaction ? 'START TRANSACTION' : 'SET AUTOCOMMIT = 0';
+        $result = $this->_doQuery($query, true);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        $this->in_transaction = true;
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ commit()
+
+    /**
+     * Commit the database changes done during a transaction that is in
+     * progress or release a savepoint. This function may only be called when
+     * auto-committing is disabled, otherwise it will fail. Therefore, a new
+     * transaction is implicitly started after committing the pending changes.
+     *
+     * @param   string  name of a savepoint to release
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  public
+     */
+    function commit($savepoint = null)
+    {
+        $this->debug('Committing transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint));
+        if (!$this->in_transaction) {
+            return $this->raiseError(MDB2_ERROR_INVALID, null, null,
+                'commit/release savepoint cannot be done changes are auto committed', __FUNCTION__);
+        }
+        if (!is_null($savepoint)) {
+            if (!$this->supports('savepoints')) {
+                return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                    'savepoints are not supported', __FUNCTION__);
+            }
+            $server_info = $this->getServerVersion();
+            if (version_compare($server_info['major'].'.'.$server_info['minor'].'.'.$server_info['patch'], '5.0.3', '<')) {
+                return MDB2_OK;
+            }
+            $query = 'RELEASE SAVEPOINT '.$savepoint;
+            return $this->_doQuery($query, true);
+        }
+
+        if (!$this->supports('transactions')) {
+            return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                'transactions are not supported', __FUNCTION__);
+        }
+
+        $result = $this->_doQuery('COMMIT', true);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        if (!$this->start_transaction) {
+            $query = 'SET AUTOCOMMIT = 1';
+            $result = $this->_doQuery($query, true);
+            if (PEAR::isError($result)) {
+                return $result;
+            }
+        }
+        $this->in_transaction = false;
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ rollback()
+
+    /**
+     * Cancel any database changes done during a transaction or since a specific
+     * savepoint that is in progress. This function may only be called when
+     * auto-committing is disabled, otherwise it will fail. Therefore, a new
+     * transaction is implicitly started after canceling the pending changes.
+     *
+     * @param   string  name of a savepoint to rollback to
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  public
+     */
+    function rollback($savepoint = null)
+    {
+        $this->debug('Rolling back transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint));
+        if (!$this->in_transaction) {
+            return $this->raiseError(MDB2_ERROR_INVALID, null, null,
+                'rollback cannot be done changes are auto committed', __FUNCTION__);
+        }
+        if (!is_null($savepoint)) {
+            if (!$this->supports('savepoints')) {
+                return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                    'savepoints are not supported', __FUNCTION__);
+            }
+            $query = 'ROLLBACK TO SAVEPOINT '.$savepoint;
+            return $this->_doQuery($query, true);
+        }
+
+        $query = 'ROLLBACK';
+        $result = $this->_doQuery($query, true);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        if (!$this->start_transaction) {
+            $query = 'SET AUTOCOMMIT = 1';
+            $result = $this->_doQuery($query, true);
+            if (PEAR::isError($result)) {
+                return $result;
+            }
+        }
+        $this->in_transaction = false;
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ function setTransactionIsolation()
+
+    /**
+     * Set the transacton isolation level.
+     *
+     * @param   string  standard isolation level
+     *                  READ UNCOMMITTED (allows dirty reads)
+     *                  READ COMMITTED (prevents dirty reads)
+     *                  REPEATABLE READ (prevents nonrepeatable reads)
+     *                  SERIALIZABLE (prevents phantom reads)
+     * @param   array some transaction options:
+     *                  'wait' => 'WAIT' | 'NO WAIT'
+     *                  'rw'   => 'READ WRITE' | 'READ ONLY'
+     *
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  public
+     * @since   2.1.1
+     */
+    function setTransactionIsolation($isolation, $options = array())
+    {
+        $this->debug('Setting transaction isolation level', __FUNCTION__, array('is_manip' => true));
+        if (!$this->supports('transactions')) {
+            return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                'transactions are not supported', __FUNCTION__);
+        }
+        switch ($isolation) {
+        case 'READ UNCOMMITTED':
+        case 'READ COMMITTED':
+        case 'REPEATABLE READ':
+        case 'SERIALIZABLE':
+            break;
+        default:
+            return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                'isolation level is not supported: '.$isolation, __FUNCTION__);
+        }
+
+        $query = "SET SESSION TRANSACTION ISOLATION LEVEL $isolation";
+        return $this->_doQuery($query, true);
+    }
+
+    // }}}
+    // {{{ _doConnect()
+
+    /**
+     * do the grunt work of the connect
+     *
+     * @return connection on success or MDB2 Error Object on failure
+     * @access protected
+     */
+    function _doConnect($username, $password, $persistent = false)
+    {
+        if (!PEAR::loadExtension($this->phptype)) {
+            return $this->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                'extension '.$this->phptype.' is not compiled into PHP', __FUNCTION__);
+        }
+
+        $params = array();
+        $unix = ($this->dsn['protocol'] && $this->dsn['protocol'] == 'unix');
+        if (empty($this->dsn['hostspec'])) {
+            $this->dsn['hostspec'] = $unix ? '' : 'localhost';
+        }
+        if ($this->dsn['hostspec']) {
+            $params[0] = $this->dsn['hostspec'] . ($this->dsn['port'] ? ':' . $this->dsn['port'] : '');
+        } else {
+            $params[0] = ':' . $this->dsn['socket'];
+        }
+        $params[] = $username ? $username : null;
+        $params[] = $password ? $password : null;
+        if (!$persistent) {
+            if ($this->_isNewLinkSet()) {
+                $params[] = true;
+            } else {
+                $params[] = false;
+            }
+        }
+        if (version_compare(phpversion(), '4.3.0', '>=')) {
+            $params[] = isset($this->dsn['client_flags'])
+                ? $this->dsn['client_flags'] : null;
+        }
+        $connect_function = $persistent ? 'mysql_pconnect' : 'mysql_connect';
+
+        $connection = @call_user_func_array($connect_function, $params);
+        if (!$connection) {
+            if (($err = @mysql_error()) != '') {
+                return $this->raiseError(MDB2_ERROR_CONNECT_FAILED, null, null,
+                    $err, __FUNCTION__);
+            } else {
+                return $this->raiseError(MDB2_ERROR_CONNECT_FAILED, null, null,
+                    'unable to establish a connection', __FUNCTION__);
+            }
+        }
+
+        if (!empty($this->dsn['charset'])) {
+            $result = $this->setCharset($this->dsn['charset'], $connection);
+            if (PEAR::isError($result)) {
+                $this->disconnect(false);
+                return $result;
+            }
+        }
+
+        return $connection;
+    }
+
+    // }}}
+    // {{{ connect()
+
+    /**
+     * Connect to the database
+     *
+     * @return MDB2_OK on success, MDB2 Error Object on failure
+     * @access public
+     */
+    function connect()
+    {
+        if (is_resource($this->connection)) {
+            //if (count(array_diff($this->connected_dsn, $this->dsn)) == 0
+            if (MDB2::areEquals($this->connected_dsn, $this->dsn)
+                && $this->opened_persistent == $this->options['persistent']
+            ) {
+                return MDB2_OK;
+            }
+            $this->disconnect(false);
+        }
+
+        $connection = $this->_doConnect(
+            $this->dsn['username'],
+            $this->dsn['password'],
+            $this->options['persistent']
+        );
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+
+        $this->connection = $connection;
+        $this->connected_dsn = $this->dsn;
+        $this->connected_database_name = '';
+        $this->opened_persistent = $this->options['persistent'];
+        $this->dbsyntax = $this->dsn['dbsyntax'] ? $this->dsn['dbsyntax'] : $this->phptype;
+
+        if ($this->database_name) {
+            if ($this->database_name != $this->connected_database_name) {
+                if (!@mysql_select_db($this->database_name, $connection)) {
+                    $err = $this->raiseError(null, null, null,
+                        'Could not select the database: '.$this->database_name, __FUNCTION__);
+                    return $err;
+                }
+                $this->connected_database_name = $this->database_name;
+            }
+        }
+
+        $this->_getServerCapabilities();
+
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ setCharset()
+
+    /**
+     * Set the charset on the current connection
+     *
+     * @param string    charset (or array(charset, collation))
+     * @param resource  connection handle
+     *
+     * @return true on success, MDB2 Error Object on failure
+     */
+    function setCharset($charset, $connection = null)
+    {
+        if (is_null($connection)) {
+            $connection = $this->getConnection();
+            if (PEAR::isError($connection)) {
+                return $connection;
+            }
+        }
+        $collation = null;
+        if (is_array($charset) && 2 == count($charset)) {
+            $collation = array_pop($charset);
+            $charset   = array_pop($charset);
+        }
+        $client_info = mysql_get_client_info();
+        if (function_exists('mysql_set_charset') && version_compare($client_info, '5.0.6')) {
+            if (!$result = mysql_set_charset($charset, $connection)) {
+                $err = $this->raiseError(null, null, null,
+                    'Could not set client character set', __FUNCTION__);
+                return $err;
+            }
+            return $result;
+        }
+        $query = "SET NAMES '".mysql_real_escape_string($charset, $connection)."'";
+        if (!is_null($collation)) {
+            $query .= " COLLATE '".mysql_real_escape_string($collation, $connection)."'";
+        }
+        return $this->_doQuery($query, true, $connection);
+    }
+
+    // }}}
+    // {{{ databaseExists()
+
+    /**
+     * check if given database name is exists?
+     *
+     * @param string $name    name of the database that should be checked
+     *
+     * @return mixed true/false on success, a MDB2 error on failure
+     * @access public
+     */
+    function databaseExists($name)
+    {
+        $connection = $this->_doConnect($this->dsn['username'],
+                                        $this->dsn['password'],
+                                        $this->options['persistent']);
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+
+        $result = @mysql_select_db($name, $connection);
+        @mysql_close($connection);
+
+        return $result;
+    }
+
+    // }}}
+    // {{{ disconnect()
+
+    /**
+     * Log out and disconnect from the database.
+     *
+     * @param  boolean $force if the disconnect should be forced even if the
+     *                        connection is opened persistently
+     * @return mixed true on success, false if not connected and error
+     *                object on error
+     * @access public
+     */
+    function disconnect($force = true)
+    {
+        if (is_resource($this->connection)) {
+            if ($this->in_transaction) {
+                $dsn = $this->dsn;
+                $database_name = $this->database_name;
+                $persistent = $this->options['persistent'];
+                $this->dsn = $this->connected_dsn;
+                $this->database_name = $this->connected_database_name;
+                $this->options['persistent'] = $this->opened_persistent;
+                $this->rollback();
+                $this->dsn = $dsn;
+                $this->database_name = $database_name;
+                $this->options['persistent'] = $persistent;
+            }
+
+            if (!$this->opened_persistent || $force) {
+                $ok = @mysql_close($this->connection);
+                if (!$ok) {
+                    return $this->raiseError(MDB2_ERROR_DISCONNECT_FAILED,
+                           null, null, null, __FUNCTION__);
+                }
+            }
+        } else {
+            return false;
+        }
+        return parent::disconnect($force);
+    }
+
+    // }}}
+    // {{{ standaloneQuery()
+
+    /**
+     * execute a query as DBA
+     *
+     * @param string $query the SQL query
+     * @param mixed   $types  array that contains the types of the columns in
+     *                        the result set
+     * @param boolean $is_manip  if the query is a manipulation query
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function standaloneQuery($query, $types = null, $is_manip = false)
+    {
+        $user = $this->options['DBA_username']? $this->options['DBA_username'] : $this->dsn['username'];
+        $pass = $this->options['DBA_password']? $this->options['DBA_password'] : $this->dsn['password'];
+        $connection = $this->_doConnect($user, $pass, $this->options['persistent']);
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+
+        $offset = $this->offset;
+        $limit = $this->limit;
+        $this->offset = $this->limit = 0;
+        $query = $this->_modifyQuery($query, $is_manip, $limit, $offset);
+        
+        $result = $this->_doQuery($query, $is_manip, $connection, $this->database_name);
+        if (!PEAR::isError($result)) {
+            $result = $this->_affectedRows($connection, $result);
+        }
+
+        @mysql_close($connection);
+        return $result;
+    }
+
+    // }}}
+    // {{{ _doQuery()
+
+    /**
+     * Execute a query
+     * @param string $query  query
+     * @param boolean $is_manip  if the query is a manipulation query
+     * @param resource $connection
+     * @param string $database_name
+     * @return result or error object
+     * @access protected
+     */
+    function _doQuery($query, $is_manip = false, $connection = null, $database_name = null)
+    {
+        $this->last_query = $query;
+        $result = $this->debug($query, 'query', array('is_manip' => $is_manip, 'when' => 'pre'));
+        if ($result) {
+            if (PEAR::isError($result)) {
+                return $result;
+            }
+            $query = $result;
+        }
+        if ($this->options['disable_query']) {
+            $result = $is_manip ? 0 : null;
+            return $result;
+        }
+
+        if (is_null($connection)) {
+            $connection = $this->getConnection();
+            if (PEAR::isError($connection)) {
+                return $connection;
+            }
+        }
+        if (is_null($database_name)) {
+            $database_name = $this->database_name;
+        }
+
+        if ($database_name) {
+            if ($database_name != $this->connected_database_name) {
+                if (!@mysql_select_db($database_name, $connection)) {
+                    $err = $this->raiseError(null, null, null,
+                        'Could not select the database: '.$database_name, __FUNCTION__);
+                    return $err;
+                }
+                $this->connected_database_name = $database_name;
+            }
+        }
+
+        $function = $this->options['result_buffering']
+            ? 'mysql_query' : 'mysql_unbuffered_query';
+        $result = @$function($query, $connection);
+        if (!$result && 0 !== mysql_errno($connection)) {
+            $err = $this->raiseError(null, null, null,
+                'Could not execute statement', __FUNCTION__);
+            return $err;
+        }
+
+        $this->debug($query, 'query', array('is_manip' => $is_manip, 'when' => 'post', 'result' => $result));
+        return $result;
+    }
+
+    // }}}
+    // {{{ _affectedRows()
+
+    /**
+     * Returns the number of rows affected
+     *
+     * @param resource $result
+     * @param resource $connection
+     * @return mixed MDB2 Error Object or the number of rows affected
+     * @access private
+     */
+    function _affectedRows($connection, $result = null)
+    {
+        if (is_null($connection)) {
+            $connection = $this->getConnection();
+            if (PEAR::isError($connection)) {
+                return $connection;
+            }
+        }
+        return @mysql_affected_rows($connection);
+    }
+
+    // }}}
+    // {{{ _modifyQuery()
+
+    /**
+     * Changes a query string for various DBMS specific reasons
+     *
+     * @param string $query  query to modify
+     * @param boolean $is_manip  if it is a DML query
+     * @param integer $limit  limit the number of rows
+     * @param integer $offset  start reading from given offset
+     * @return string modified query
+     * @access protected
+     */
+    function _modifyQuery($query, $is_manip, $limit, $offset)
+    {
+        if ($this->options['portability'] & MDB2_PORTABILITY_DELETE_COUNT) {
+            // "DELETE FROM table" gives 0 affected rows in MySQL.
+            // This little hack lets you know how many rows were deleted.
+            if (preg_match('/^\s*DELETE\s+FROM\s+(\S+)\s*$/i', $query)) {
+                $query = preg_replace('/^\s*DELETE\s+FROM\s+(\S+)\s*$/',
+                                      'DELETE FROM \1 WHERE 1=1', $query);
+            }
+        }
+        if ($limit > 0
+            && !preg_match('/LIMIT\s*\d(?:\s*(?:,|OFFSET)\s*\d+)?(?:[^\)]*)?$/i', $query)
+        ) {
+            $query = rtrim($query);
+            if (substr($query, -1) == ';') {
+                $query = substr($query, 0, -1);
+            }
+
+            // LIMIT doesn't always come last in the query
+            // @see http://dev.mysql.com/doc/refman/5.0/en/select.html
+            $after = '';
+            if (preg_match('/(\s+INTO\s+(?:OUT|DUMP)FILE\s.*)$/ims', $query, $matches)) {
+                $after = $matches[0];
+                $query = preg_replace('/(\s+INTO\s+(?:OUT|DUMP)FILE\s.*)$/ims', '', $query);
+            } elseif (preg_match('/(\s+FOR\s+UPDATE\s*)$/i', $query, $matches)) {
+               $after = $matches[0];
+               $query = preg_replace('/(\s+FOR\s+UPDATE\s*)$/im', '', $query);
+            } elseif (preg_match('/(\s+LOCK\s+IN\s+SHARE\s+MODE\s*)$/im', $query, $matches)) {
+               $after = $matches[0];
+               $query = preg_replace('/(\s+LOCK\s+IN\s+SHARE\s+MODE\s*)$/im', '', $query);
+            }
+
+            if ($is_manip) {
+                return $query . " LIMIT $limit" . $after;
+            } else {
+                return $query . " LIMIT $offset, $limit" . $after;
+            }
+        }
+        return $query;
+    }
+
+    // }}}
+    // {{{ getServerVersion()
+
+    /**
+     * return version information about the server
+     *
+     * @param bool   $native  determines if the raw version string should be returned
+     * @return mixed array/string with version information or MDB2 error object
+     * @access public
+     */
+    function getServerVersion($native = false)
+    {
+        $connection = $this->getConnection();
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+        if ($this->connected_server_info) {
+            $server_info = $this->connected_server_info;
+        } else {
+            $server_info = @mysql_get_server_info($connection);
+        }
+        if (!$server_info) {
+            return $this->raiseError(null, null, null,
+                'Could not get server information', __FUNCTION__);
+        }
+        // cache server_info
+        $this->connected_server_info = $server_info;
+        if (!$native) {
+            $tmp = explode('.', $server_info, 3);
+            if (isset($tmp[2]) && strpos($tmp[2], '-')) {
+                $tmp2 = explode('-', @$tmp[2], 2);
+            } else {
+                $tmp2[0] = isset($tmp[2]) ? $tmp[2] : null;
+                $tmp2[1] = null;
+            }
+            $server_info = array(
+                'major' => isset($tmp[0]) ? $tmp[0] : null,
+                'minor' => isset($tmp[1]) ? $tmp[1] : null,
+                'patch' => $tmp2[0],
+                'extra' => $tmp2[1],
+                'native' => $server_info,
+            );
+        }
+        return $server_info;
+    }
+
+    // }}}
+    // {{{ _getServerCapabilities()
+
+    /**
+     * Fetch some information about the server capabilities
+     * (transactions, subselects, prepared statements, etc).
+     *
+     * @access private
+     */
+    function _getServerCapabilities()
+    {
+        if (!$this->server_capabilities_checked) {
+            $this->server_capabilities_checked = true;
+
+            //set defaults
+            $this->supported['sub_selects'] = 'emulated';
+            $this->supported['prepared_statements'] = 'emulated';
+            $this->supported['triggers'] = false;
+            $this->start_transaction = false;
+            $this->varchar_max_length = 255;
+            
+            $server_info = $this->getServerVersion();
+            if (is_array($server_info)) {
+                $server_version = $server_info['major'].'.'.$server_info['minor'].'.'.$server_info['patch'];
+
+                if (!version_compare($server_version, '4.1.0', '<')) {
+                    $this->supported['sub_selects'] = true;
+                    $this->supported['prepared_statements'] = true;
+                }
+
+                // SAVEPOINTs were introduced in MySQL 4.0.14 and 4.1.1 (InnoDB)
+                if (version_compare($server_version, '4.1.0', '>=')) {
+                    if (version_compare($server_version, '4.1.1', '<')) {
+                        $this->supported['savepoints'] = false;
+                    }
+                } elseif (version_compare($server_version, '4.0.14', '<')) {
+                    $this->supported['savepoints'] = false;
+                }
+
+                if (!version_compare($server_version, '4.0.11', '<')) {
+                    $this->start_transaction = true;
+                }
+
+                if (!version_compare($server_version, '5.0.3', '<')) {
+                    $this->varchar_max_length = 65532;
+                }
+
+                if (!version_compare($server_version, '5.0.2', '<')) {
+                    $this->supported['triggers'] = true;
+                }
+            }
+        }
+    }
+
+    // }}}
+    // {{{ function _skipUserDefinedVariable($query, $position)
+
+    /**
+     * Utility method, used by prepare() to avoid misinterpreting MySQL user 
+     * defined variables (SELECT @x:=5) for placeholders.
+     * Check if the placeholder is a false positive, i.e. if it is an user defined
+     * variable instead. If so, skip it and advance the position, otherwise
+     * return the current position, which is valid
+     *
+     * @param string $query
+     * @param integer $position current string cursor position
+     * @return integer $new_position
+     * @access protected
+     */
+    function _skipUserDefinedVariable($query, $position)
+    {
+        $found = strpos(strrev(substr($query, 0, $position)), '@');
+        if ($found === false) {
+            return $position;
+        }
+        $pos = strlen($query) - strlen(substr($query, $position)) - $found - 1;
+        $substring = substr($query, $pos, $position - $pos + 2);
+        if (preg_match('/^@\w+\s*:=$/', $substring)) {
+            return $position + 1; //found an user defined variable: skip it
+        }
+        return $position;
+    }
+
+    // }}}
+    // {{{ prepare()
+
+    /**
+     * Prepares a query for multiple execution with execute().
+     * With some database backends, this is emulated.
+     * prepare() requires a generic query as string like
+     * 'INSERT INTO numbers VALUES(?,?)' or
+     * 'INSERT INTO numbers VALUES(:foo,:bar)'.
+     * The ? and :name and are placeholders which can be set using
+     * bindParam() and the query can be sent off using the execute() method.
+     * The allowed format for :name can be set with the 'bindname_format' option.
+     *
+     * @param string $query the query to prepare
+     * @param mixed   $types  array that contains the types of the placeholders
+     * @param mixed   $result_types  array that contains the types of the columns in
+     *                        the result set or MDB2_PREPARE_RESULT, if set to
+     *                        MDB2_PREPARE_MANIP the query is handled as a manipulation query
+     * @param mixed   $lobs   key (field) value (parameter) pair for all lob placeholders
+     * @return mixed resource handle for the prepared query on success, a MDB2
+     *        error on failure
+     * @access public
+     * @see bindParam, execute
+     */
+    function prepare($query, $types = null, $result_types = null, $lobs = array())
+    {
+        // connect to get server capabilities (http://pear.php.net/bugs/16147)
+        $connection = $this->getConnection();
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+
+        if ($this->options['emulate_prepared']
+            || $this->supported['prepared_statements'] !== true
+        ) {
+            return parent::prepare($query, $types, $result_types, $lobs);
+        }
+        $is_manip = ($result_types === MDB2_PREPARE_MANIP);
+        $offset = $this->offset;
+        $limit = $this->limit;
+        $this->offset = $this->limit = 0;
+        $query = $this->_modifyQuery($query, $is_manip, $limit, $offset);
+        $result = $this->debug($query, __FUNCTION__, array('is_manip' => $is_manip, 'when' => 'pre'));
+        if ($result) {
+            if (PEAR::isError($result)) {
+                return $result;
+            }
+            $query = $result;
+        }
+        $placeholder_type_guess = $placeholder_type = null;
+        $question = '?';
+        $colon = ':';
+        $positions = array();
+        $position = 0;
+        while ($position < strlen($query)) {
+            $q_position = strpos($query, $question, $position);
+            $c_position = strpos($query, $colon, $position);
+            if ($q_position && $c_position) {
+                $p_position = min($q_position, $c_position);
+            } elseif ($q_position) {
+                $p_position = $q_position;
+            } elseif ($c_position) {
+                $p_position = $c_position;
+            } else {
+                break;
+            }
+            if (is_null($placeholder_type)) {
+                $placeholder_type_guess = $query[$p_position];
+            }
+            
+            $new_pos = $this->_skipDelimitedStrings($query, $position, $p_position);
+            if (PEAR::isError($new_pos)) {
+                return $new_pos;
+            }
+            if ($new_pos != $position) {
+                $position = $new_pos;
+                continue; //evaluate again starting from the new position
+            }
+            
+            //make sure this is not part of an user defined variable
+            $new_pos = $this->_skipUserDefinedVariable($query, $position);
+            if ($new_pos != $position) {
+                $position = $new_pos;
+                continue; //evaluate again starting from the new position
+            }
+
+            if ($query[$position] == $placeholder_type_guess) {
+                if (is_null($placeholder_type)) {
+                    $placeholder_type = $query[$p_position];
+                    $question = $colon = $placeholder_type;
+                }
+                if ($placeholder_type == ':') {
+                    $regexp = '/^.{'.($position+1).'}('.$this->options['bindname_format'].').*$/s';
+                    $parameter = preg_replace($regexp, '\\1', $query);
+                    if ($parameter === '') {
+                        $err = $this->raiseError(MDB2_ERROR_SYNTAX, null, null,
+                            'named parameter name must match "bindname_format" option', __FUNCTION__);
+                        return $err;
+                    }
+                    $positions[$p_position] = $parameter;
+                    $query = substr_replace($query, '?', $position, strlen($parameter)+1);
+                } else {
+                    $positions[$p_position] = count($positions);
+                }
+                $position = $p_position + 1;
+            } else {
+                $position = $p_position;
+            }
+        }
+
+        static $prep_statement_counter = 1;
+        $statement_name = sprintf($this->options['statement_format'], $this->phptype, $prep_statement_counter++ . sha1(microtime() + mt_rand()));
+        $statement_name = substr(strtolower($statement_name), 0, $this->options['max_identifiers_length']);
+        $query = "PREPARE $statement_name FROM ".$this->quote($query, 'text');
+        $statement = $this->_doQuery($query, true, $connection);
+        if (PEAR::isError($statement)) {
+            return $statement;
+        }
+
+        $class_name = 'MDB2_Statement_'.$this->phptype;
+        $obj = new $class_name($this, $statement_name, $positions, $query, $types, $result_types, $is_manip, $limit, $offset);
+        $this->debug($query, __FUNCTION__, array('is_manip' => $is_manip, 'when' => 'post', 'result' => $obj));
+        return $obj;
+    }
+
+    // }}}
+    // {{{ replace()
+
+    /**
+     * Execute a SQL REPLACE query. A REPLACE query is identical to a INSERT
+     * query, except that if there is already a row in the table with the same
+     * key field values, the old row is deleted before the new row is inserted.
+     *
+     * The REPLACE type of query does not make part of the SQL standards. Since
+     * practically only MySQL implements it natively, this type of query is
+     * emulated through this method for other DBMS using standard types of
+     * queries inside a transaction to assure the atomicity of the operation.
+     *
+     * @access public
+     *
+     * @param string $table name of the table on which the REPLACE query will
+     *  be executed.
+     * @param array $fields associative array that describes the fields and the
+     *  values that will be inserted or updated in the specified table. The
+     *  indexes of the array are the names of all the fields of the table. The
+     *  values of the array are also associative arrays that describe the
+     *  values and other properties of the table fields.
+     *
+     *  Here follows a list of field properties that need to be specified:
+     *
+     *    value:
+     *          Value to be assigned to the specified field. This value may be
+     *          of specified in database independent type format as this
+     *          function can perform the necessary datatype conversions.
+     *
+     *    Default:
+     *          this property is required unless the Null property
+     *          is set to 1.
+     *
+     *    type
+     *          Name of the type of the field. Currently, all types Metabase
+     *          are supported except for clob and blob.
+     *
+     *    Default: no type conversion
+     *
+     *    null
+     *          Boolean property that indicates that the value for this field
+     *          should be set to null.
+     *
+     *          The default value for fields missing in INSERT queries may be
+     *          specified the definition of a table. Often, the default value
+     *          is already null, but since the REPLACE may be emulated using
+     *          an UPDATE query, make sure that all fields of the table are
+     *          listed in this function argument array.
+     *
+     *    Default: 0
+     *
+     *    key
+     *          Boolean property that indicates that this field should be
+     *          handled as a primary key or at least as part of the compound
+     *          unique index of the table that will determine the row that will
+     *          updated if it exists or inserted a new row otherwise.
+     *
+     *          This function will fail if no key field is specified or if the
+     *          value of a key field is set to null because fields that are
+     *          part of unique index they may not be null.
+     *
+     *    Default: 0
+     *
+     * @see http://dev.mysql.com/doc/refman/5.0/en/replace.html
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     */
+    function replace($table, $fields)
+    {
+        $count = count($fields);
+        $query = $values = '';
+        $keys = $colnum = 0;
+        for (reset($fields); $colnum < $count; next($fields), $colnum++) {
+            $name = key($fields);
+            if ($colnum > 0) {
+                $query .= ',';
+                $values.= ',';
+            }
+            $query.= $this->quoteIdentifier($name, true);
+            if (isset($fields[$name]['null']) && $fields[$name]['null']) {
+                $value = 'NULL';
+            } else {
+                $type = isset($fields[$name]['type']) ? $fields[$name]['type'] : null;
+                $value = $this->quote($fields[$name]['value'], $type);
+                if (PEAR::isError($value)) {
+                    return $value;
+                }
+            }
+            $values.= $value;
+            if (isset($fields[$name]['key']) && $fields[$name]['key']) {
+                if ($value === 'NULL') {
+                    return $this->raiseError(MDB2_ERROR_CANNOT_REPLACE, null, null,
+                        'key value '.$name.' may not be NULL', __FUNCTION__);
+                }
+                $keys++;
+            }
+        }
+        if ($keys == 0) {
+            return $this->raiseError(MDB2_ERROR_CANNOT_REPLACE, null, null,
+                'not specified which fields are keys', __FUNCTION__);
+        }
+
+        $connection = $this->getConnection();
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+
+        $table = $this->quoteIdentifier($table, true);
+        $query = "REPLACE INTO $table ($query) VALUES ($values)";
+        $result = $this->_doQuery($query, true, $connection);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        return $this->_affectedRows($connection, $result);
+    }
+
+    // }}}
+    // {{{ nextID()
+
+    /**
+     * Returns the next free id of a sequence
+     *
+     * @param string $seq_name name of the sequence
+     * @param boolean $ondemand when true the sequence is
+     *                          automatic created, if it
+     *                          not exists
+     *
+     * @return mixed MDB2 Error Object or id
+     * @access public
+     */
+    function nextID($seq_name, $ondemand = true)
+    {
+        $sequence_name = $this->quoteIdentifier($this->getSequenceName($seq_name), true);
+        $seqcol_name = $this->quoteIdentifier($this->options['seqcol_name'], true);
+        $query = "INSERT INTO $sequence_name ($seqcol_name) VALUES (NULL)";
+        $this->pushErrorHandling(PEAR_ERROR_RETURN);
+        $this->expectError(MDB2_ERROR_NOSUCHTABLE);
+        $result = $this->_doQuery($query, true);
+        $this->popExpect();
+        $this->popErrorHandling();
+        if (PEAR::isError($result)) {
+            if ($ondemand && $result->getCode() == MDB2_ERROR_NOSUCHTABLE) {
+                $this->loadModule('Manager', null, true);
+                $result = $this->manager->createSequence($seq_name);
+                if (PEAR::isError($result)) {
+                    return $this->raiseError($result, null, null,
+                        'on demand sequence '.$seq_name.' could not be created', __FUNCTION__);
+                } else {
+                    return $this->nextID($seq_name, false);
+                }
+            }
+            return $result;
+        }
+        $value = $this->lastInsertID();
+        if (is_numeric($value)) {
+            $query = "DELETE FROM $sequence_name WHERE $seqcol_name < $value";
+            $result = $this->_doQuery($query, true);
+            if (PEAR::isError($result)) {
+                $this->warnings[] = 'nextID: could not delete previous sequence table values from '.$seq_name;
+            }
+        }
+        return $value;
+    }
+
+    // }}}
+    // {{{ lastInsertID()
+
+    /**
+     * Returns the autoincrement ID if supported or $id or fetches the current
+     * ID in a sequence called: $table.(empty($field) ? '' : '_'.$field)
+     *
+     * @param string $table name of the table into which a new row was inserted
+     * @param string $field name of the field into which a new row was inserted
+     * @return mixed MDB2 Error Object or id
+     * @access public
+     */
+    function lastInsertID($table = null, $field = null)
+    {
+        // not using mysql_insert_id() due to http://pear.php.net/bugs/bug.php?id=8051
+        return $this->queryOne('SELECT LAST_INSERT_ID()', 'integer');
+    }
+
+    // }}}
+    // {{{ currID()
+
+    /**
+     * Returns the current id of a sequence
+     *
+     * @param string $seq_name name of the sequence
+     * @return mixed MDB2 Error Object or id
+     * @access public
+     */
+    function currID($seq_name)
+    {
+        $sequence_name = $this->quoteIdentifier($this->getSequenceName($seq_name), true);
+        $seqcol_name = $this->quoteIdentifier($this->options['seqcol_name'], true);
+        $query = "SELECT MAX($seqcol_name) FROM $sequence_name";
+        return $this->queryOne($query, 'integer');
+    }
+}
+
+/**
+ * MDB2 MySQL result driver
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Result_mysql extends MDB2_Result_Common
+{
+    // }}}
+    // {{{ fetchRow()
+
+    /**
+     * Fetch a row and insert the data into an existing array.
+     *
+     * @param int       $fetchmode  how the array data should be indexed
+     * @param int    $rownum    number of the row where the data can be found
+     * @return int data array on success, a MDB2 error on failure
+     * @access public
+     */
+    function fetchRow($fetchmode = MDB2_FETCHMODE_DEFAULT, $rownum = null)
+    {
+        if (!is_null($rownum)) {
+            $seek = $this->seek($rownum);
+            if (PEAR::isError($seek)) {
+                return $seek;
+            }
+        }
+        if ($fetchmode == MDB2_FETCHMODE_DEFAULT) {
+            $fetchmode = $this->db->fetchmode;
+        }
+        if ($fetchmode & MDB2_FETCHMODE_ASSOC) {
+            $row = @mysql_fetch_assoc($this->result);
+            if (is_array($row)
+                && $this->db->options['portability'] & MDB2_PORTABILITY_FIX_CASE
+            ) {
+                $row = array_change_key_case($row, $this->db->options['field_case']);
+            }
+        } else {
+           $row = @mysql_fetch_row($this->result);
+        }
+
+        if (!$row) {
+            if ($this->result === false) {
+                $err = $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
+                    'resultset has already been freed', __FUNCTION__);
+                return $err;
+            }
+            return null;
+        }
+        $mode = $this->db->options['portability'] & MDB2_PORTABILITY_EMPTY_TO_NULL;
+        $rtrim = false;
+        if ($this->db->options['portability'] & MDB2_PORTABILITY_RTRIM) {
+            if (empty($this->types)) {
+                $mode += MDB2_PORTABILITY_RTRIM;
+            } else {
+                $rtrim = true;
+            }
+        }
+        if ($mode) {
+            $this->db->_fixResultArrayValues($row, $mode);
+        }
+        if (!empty($this->types)) {
+            $row = $this->db->datatype->convertResultRow($this->types, $row, $rtrim);
+        }
+        if (!empty($this->values)) {
+            $this->_assignBindColumns($row);
+        }
+        if ($fetchmode === MDB2_FETCHMODE_OBJECT) {
+            $object_class = $this->db->options['fetch_class'];
+            if ($object_class == 'stdClass') {
+                $row = (object) $row;
+            } else {
+                $rowObj = new $object_class($row);
+                $row = $rowObj;
+            }
+        }
+        ++$this->rownum;
+        return $row;
+    }
+
+    // }}}
+    // {{{ _getColumnNames()
+
+    /**
+     * Retrieve the names of columns returned by the DBMS in a query result.
+     *
+     * @return  mixed   Array variable that holds the names of columns as keys
+     *                  or an MDB2 error on failure.
+     *                  Some DBMS may not return any columns when the result set
+     *                  does not contain any rows.
+     * @access private
+     */
+    function _getColumnNames()
+    {
+        $columns = array();
+        $numcols = $this->numCols();
+        if (PEAR::isError($numcols)) {
+            return $numcols;
+        }
+        for ($column = 0; $column < $numcols; $column++) {
+            $column_name = @mysql_field_name($this->result, $column);
+            $columns[$column_name] = $column;
+        }
+        if ($this->db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $columns = array_change_key_case($columns, $this->db->options['field_case']);
+        }
+        return $columns;
+    }
+
+    // }}}
+    // {{{ numCols()
+
+    /**
+     * Count the number of columns returned by the DBMS in a query result.
+     *
+     * @return mixed integer value with the number of columns, a MDB2 error
+     *                       on failure
+     * @access public
+     */
+    function numCols()
+    {
+        $cols = @mysql_num_fields($this->result);
+        if (is_null($cols)) {
+            if ($this->result === false) {
+                return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
+                    'resultset has already been freed', __FUNCTION__);
+            } elseif (is_null($this->result)) {
+                return count($this->types);
+            }
+            return $this->db->raiseError(null, null, null,
+                'Could not get column count', __FUNCTION__);
+        }
+        return $cols;
+    }
+
+    // }}}
+    // {{{ free()
+
+    /**
+     * Free the internal resources associated with result.
+     *
+     * @return boolean true on success, false if result is invalid
+     * @access public
+     */
+    function free()
+    {
+        if (is_resource($this->result) && $this->db->connection) {
+            $free = @mysql_free_result($this->result);
+            if ($free === false) {
+                return $this->db->raiseError(null, null, null,
+                    'Could not free result', __FUNCTION__);
+            }
+        }
+        $this->result = false;
+        return MDB2_OK;
+    }
+}
+
+/**
+ * MDB2 MySQL buffered result driver
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_BufferedResult_mysql extends MDB2_Result_mysql
+{
+    // }}}
+    // {{{ seek()
+
+    /**
+     * Seek to a specific row in a result set
+     *
+     * @param int    $rownum    number of the row where the data can be found
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function seek($rownum = 0)
+    {
+        if ($this->rownum != ($rownum - 1) && !@mysql_data_seek($this->result, $rownum)) {
+            if ($this->result === false) {
+                return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
+                    'resultset has already been freed', __FUNCTION__);
+            } elseif (is_null($this->result)) {
+                return MDB2_OK;
+            }
+            return $this->db->raiseError(MDB2_ERROR_INVALID, null, null,
+                'tried to seek to an invalid row number ('.$rownum.')', __FUNCTION__);
+        }
+        $this->rownum = $rownum - 1;
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ valid()
+
+    /**
+     * Check if the end of the result set has been reached
+     *
+     * @return mixed true or false on sucess, a MDB2 error on failure
+     * @access public
+     */
+    function valid()
+    {
+        $numrows = $this->numRows();
+        if (PEAR::isError($numrows)) {
+            return $numrows;
+        }
+        return $this->rownum < ($numrows - 1);
+    }
+
+    // }}}
+    // {{{ numRows()
+
+    /**
+     * Returns the number of rows in a result object
+     *
+     * @return mixed MDB2 Error Object or the number of rows
+     * @access public
+     */
+    function numRows()
+    {
+        $rows = @mysql_num_rows($this->result);
+        if (false === $rows) {
+            if (false === $this->result) {
+                return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
+                    'resultset has already been freed', __FUNCTION__);
+            } elseif (is_null($this->result)) {
+                return 0;
+            }
+            return $this->db->raiseError(null, null, null,
+                'Could not get row count', __FUNCTION__);
+        }
+        return $rows;
+    }
+    
+    // }}}
+}
+
+/**
+ * MDB2 MySQL statement driver
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Statement_mysql extends MDB2_Statement_Common
+{
+    // {{{ _execute()
+
+    /**
+     * Execute a prepared query statement helper method.
+     *
+     * @param mixed $result_class string which specifies which result class to use
+     * @param mixed $result_wrap_class string which specifies which class to wrap results in
+     *
+     * @return mixed MDB2_Result or integer (affected rows) on success,
+     *               a MDB2 error on failure
+     * @access private
+     */
+    function _execute($result_class = true, $result_wrap_class = false)
+    {
+        if (is_null($this->statement)) {
+            $result = parent::_execute($result_class, $result_wrap_class);
+            return $result;
+        }
+        $this->db->last_query = $this->query;
+        $this->db->debug($this->query, 'execute', array('is_manip' => $this->is_manip, 'when' => 'pre', 'parameters' => $this->values));
+        if ($this->db->getOption('disable_query')) {
+            $result = $this->is_manip ? 0 : null;
+            return $result;
+        }
+
+        $connection = $this->db->getConnection();
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+
+        $query = 'EXECUTE '.$this->statement;
+        if (!empty($this->positions)) {
+            $parameters = array();
+            foreach ($this->positions as $parameter) {
+                if (!array_key_exists($parameter, $this->values)) {
+                    return $this->db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                        'Unable to bind to missing placeholder: '.$parameter, __FUNCTION__);
+                }
+                $close = false;
+                $value = $this->values[$parameter];
+                $type = array_key_exists($parameter, $this->types) ? $this->types[$parameter] : null;
+                if (is_resource($value) || $type == 'clob' || $type == 'blob' && $this->db->options['lob_allow_url_include']) {
+                    if (!is_resource($value) && preg_match('/^(\w+:\/\/)(.*)$/', $value, $match)) {
+                        if ($match[1] == 'file://') {
+                            $value = $match[2];
+                        }
+                        $value = @fopen($value, 'r');
+                        $close = true;
+                    }
+                    if (is_resource($value)) {
+                        $data = '';
+                        while (!@feof($value)) {
+                            $data.= @fread($value, $this->db->options['lob_buffer_length']);
+                        }
+                        if ($close) {
+                            @fclose($value);
+                        }
+                        $value = $data;
+                    }
+                }
+                $quoted = $this->db->quote($value, $type);
+                if (PEAR::isError($quoted)) {
+                    return $quoted;
+                }
+                $param_query = 'SET @'.$parameter.' = '.$quoted;
+                $result = $this->db->_doQuery($param_query, true, $connection);
+                if (PEAR::isError($result)) {
+                    return $result;
+                }
+            }
+            $query.= ' USING @'.implode(', @', array_values($this->positions));
+        }
+
+        $result = $this->db->_doQuery($query, $this->is_manip, $connection);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+
+        if ($this->is_manip) {
+            $affected_rows = $this->db->_affectedRows($connection, $result);
+            return $affected_rows;
+        }
+
+        $result = $this->db->_wrapResult($result, $this->result_types,
+            $result_class, $result_wrap_class, $this->limit, $this->offset);
+        $this->db->debug($this->query, 'execute', array('is_manip' => $this->is_manip, 'when' => 'post', 'result' => $result));
+        return $result;
+    }
+
+    // }}}
+    // {{{ free()
+
+    /**
+     * Release resources allocated for the specified prepared query.
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function free()
+    {
+        if (is_null($this->positions)) {
+            return $this->db->raiseError(MDB2_ERROR, null, null,
+                'Prepared statement has already been freed', __FUNCTION__);
+        }
+        $result = MDB2_OK;
+
+        if (!is_null($this->statement)) {
+            $connection = $this->db->getConnection();
+            if (PEAR::isError($connection)) {
+                return $connection;
+            }
+            $query = 'DEALLOCATE PREPARE '.$this->statement;
+            $result = $this->db->_doQuery($query, true, $connection);
+        }
+
+        parent::free();
+        return $result;
+    }
+}
+?>
diff --git a/program/lib/MDB2/Driver/mysqli.php b/program/lib/MDB2/Driver/mysqli.php
new file mode 100644 (file)
index 0000000..34a27d2
--- /dev/null
@@ -0,0 +1,1866 @@
+<?php
+// vim: set et ts=4 sw=4 fdm=marker:
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2006 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Lukas Smith <smith@pooteeweet.org>                           |
+// +----------------------------------------------------------------------+
+//
+// $Id: mysqli.php 295587 2010-02-28 17:16:38Z quipo $
+//
+
+/**
+ * MDB2 MySQLi driver
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Driver_mysqli extends MDB2_Driver_Common
+{
+    // {{{ properties
+
+    var $string_quoting = array('start' => "'", 'end' => "'", 'escape' => '\\', 'escape_pattern' => '\\');
+
+    var $identifier_quoting = array('start' => '`', 'end' => '`', 'escape' => '`');
+
+    var $sql_comments = array(
+        array('start' => '-- ', 'end' => "\n", 'escape' => false),
+        array('start' => '#', 'end' => "\n", 'escape' => false),
+        array('start' => '/*', 'end' => '*/', 'escape' => false),
+    );
+
+    var $server_capabilities_checked = false;
+
+    var $start_transaction = false;
+
+    var $varchar_max_length = 255;
+
+    // }}}
+    // {{{ constructor
+
+    /**
+     * Constructor
+     */
+    function __construct()
+    {
+        parent::__construct();
+
+        $this->phptype = 'mysqli';
+        $this->dbsyntax = 'mysql';
+
+        $this->supported['sequences'] = 'emulated';
+        $this->supported['indexes'] = true;
+        $this->supported['affected_rows'] = true;
+        $this->supported['transactions'] = false;
+        $this->supported['savepoints'] = false;
+        $this->supported['summary_functions'] = true;
+        $this->supported['order_by_text'] = true;
+        $this->supported['current_id'] = 'emulated';
+        $this->supported['limit_queries'] = true;
+        $this->supported['LOBs'] = true;
+        $this->supported['replace'] = true;
+        $this->supported['sub_selects'] = 'emulated';
+        $this->supported['triggers'] = false;
+        $this->supported['auto_increment'] = true;
+        $this->supported['primary_key'] = true;
+        $this->supported['result_introspection'] = true;
+        $this->supported['prepared_statements'] = 'emulated';
+        $this->supported['identifier_quoting'] = true;
+        $this->supported['pattern_escaping'] = true;
+        $this->supported['new_link'] = true;
+
+        $this->options['DBA_username'] = false;
+        $this->options['DBA_password'] = false;
+        $this->options['default_table_type'] = '';
+        $this->options['multi_query'] = false;
+        $this->options['max_identifiers_length'] = 64;
+
+        $this->_reCheckSupportedOptions();
+    }
+
+    // }}}
+    // {{{ _reCheckSupportedOptions()
+
+    /**
+     * If the user changes certain options, other capabilities may depend
+     * on the new settings, so we need to check them (again).
+     *
+     * @access private
+     */
+    function _reCheckSupportedOptions()
+    {
+        $this->supported['transactions'] = $this->options['use_transactions'];
+        $this->supported['savepoints']   = $this->options['use_transactions'];
+        if ($this->options['default_table_type']) {
+            switch (strtoupper($this->options['default_table_type'])) {
+            case 'BLACKHOLE':
+            case 'MEMORY':
+            case 'ARCHIVE':
+            case 'CSV':
+            case 'HEAP':
+            case 'ISAM':
+            case 'MERGE':
+            case 'MRG_ISAM':
+            case 'ISAM':
+            case 'MRG_MYISAM':
+            case 'MYISAM':
+                $this->supported['savepoints']   = false;
+                $this->supported['transactions'] = false;
+                $this->warnings[] = $this->options['default_table_type'] .
+                    ' is not a supported default table type';
+                break;
+            }
+        }
+    }
+
+    // }}}
+    // {{{ function setOption($option, $value)
+
+    /**
+     * set the option for the db class
+     *
+     * @param   string  option name
+     * @param   mixed   value for the option
+     *
+     * @return  mixed   MDB2_OK or MDB2 Error Object
+     *
+     * @access  public
+     */
+    function setOption($option, $value)
+    {
+        $res = parent::setOption($option, $value);
+        $this->_reCheckSupportedOptions();
+    }
+
+    // }}}
+    // {{{ errorInfo()
+
+    /**
+     * This method is used to collect information about an error
+     *
+     * @param integer $error
+     * @return array
+     * @access public
+     */
+    function errorInfo($error = null)
+    {
+        if ($this->connection) {
+            $native_code = @mysqli_errno($this->connection);
+            $native_msg  = @mysqli_error($this->connection);
+        } else {
+            $native_code = @mysqli_connect_errno();
+            $native_msg  = @mysqli_connect_error();
+        }
+        if (null === $error) {
+            static $ecode_map;
+            if (empty($ecode_map)) {
+                $ecode_map = array(
+                    1000 => MDB2_ERROR_INVALID, //hashchk
+                    1001 => MDB2_ERROR_INVALID, //isamchk
+                    1004 => MDB2_ERROR_CANNOT_CREATE,
+                    1005 => MDB2_ERROR_CANNOT_CREATE,
+                    1006 => MDB2_ERROR_CANNOT_CREATE,
+                    1007 => MDB2_ERROR_ALREADY_EXISTS,
+                    1008 => MDB2_ERROR_CANNOT_DROP,
+                    1009 => MDB2_ERROR_CANNOT_DROP,
+                    1010 => MDB2_ERROR_CANNOT_DROP,
+                    1011 => MDB2_ERROR_CANNOT_DELETE,
+                    1022 => MDB2_ERROR_ALREADY_EXISTS,
+                    1029 => MDB2_ERROR_NOT_FOUND,
+                    1032 => MDB2_ERROR_NOT_FOUND,
+                    1044 => MDB2_ERROR_ACCESS_VIOLATION,
+                    1045 => MDB2_ERROR_ACCESS_VIOLATION,
+                    1046 => MDB2_ERROR_NODBSELECTED,
+                    1048 => MDB2_ERROR_CONSTRAINT,
+                    1049 => MDB2_ERROR_NOSUCHDB,
+                    1050 => MDB2_ERROR_ALREADY_EXISTS,
+                    1051 => MDB2_ERROR_NOSUCHTABLE,
+                    1054 => MDB2_ERROR_NOSUCHFIELD,
+                    1060 => MDB2_ERROR_ALREADY_EXISTS,
+                    1061 => MDB2_ERROR_ALREADY_EXISTS,
+                    1062 => MDB2_ERROR_ALREADY_EXISTS,
+                    1064 => MDB2_ERROR_SYNTAX,
+                    1067 => MDB2_ERROR_INVALID,
+                    1072 => MDB2_ERROR_NOT_FOUND,
+                    1086 => MDB2_ERROR_ALREADY_EXISTS,
+                    1091 => MDB2_ERROR_NOT_FOUND,
+                    1100 => MDB2_ERROR_NOT_LOCKED,
+                    1109 => MDB2_ERROR_NOT_FOUND,
+                    1125 => MDB2_ERROR_ALREADY_EXISTS,
+                    1136 => MDB2_ERROR_VALUE_COUNT_ON_ROW,
+                    1138 => MDB2_ERROR_INVALID,
+                    1142 => MDB2_ERROR_ACCESS_VIOLATION,
+                    1143 => MDB2_ERROR_ACCESS_VIOLATION,
+                    1146 => MDB2_ERROR_NOSUCHTABLE,
+                    1149 => MDB2_ERROR_SYNTAX,
+                    1169 => MDB2_ERROR_CONSTRAINT,
+                    1176 => MDB2_ERROR_NOT_FOUND,
+                    1177 => MDB2_ERROR_NOSUCHTABLE,
+                    1213 => MDB2_ERROR_DEADLOCK,
+                    1216 => MDB2_ERROR_CONSTRAINT,
+                    1217 => MDB2_ERROR_CONSTRAINT,
+                    1227 => MDB2_ERROR_ACCESS_VIOLATION,
+                    1235 => MDB2_ERROR_CANNOT_CREATE,
+                    1299 => MDB2_ERROR_INVALID_DATE,
+                    1300 => MDB2_ERROR_INVALID,
+                    1304 => MDB2_ERROR_ALREADY_EXISTS,
+                    1305 => MDB2_ERROR_NOT_FOUND,
+                    1306 => MDB2_ERROR_CANNOT_DROP,
+                    1307 => MDB2_ERROR_CANNOT_CREATE,
+                    1334 => MDB2_ERROR_CANNOT_ALTER,
+                    1339 => MDB2_ERROR_NOT_FOUND,
+                    1356 => MDB2_ERROR_INVALID,
+                    1359 => MDB2_ERROR_ALREADY_EXISTS,
+                    1360 => MDB2_ERROR_NOT_FOUND,
+                    1363 => MDB2_ERROR_NOT_FOUND,
+                    1365 => MDB2_ERROR_DIVZERO,
+                    1451 => MDB2_ERROR_CONSTRAINT,
+                    1452 => MDB2_ERROR_CONSTRAINT,
+                    1542 => MDB2_ERROR_CANNOT_DROP,
+                    1546 => MDB2_ERROR_CONSTRAINT,
+                    1582 => MDB2_ERROR_CONSTRAINT,
+                    2003 => MDB2_ERROR_CONNECT_FAILED,
+                    2019 => MDB2_ERROR_INVALID,
+                );
+            }
+            if ($this->options['portability'] & MDB2_PORTABILITY_ERRORS) {
+                $ecode_map[1022] = MDB2_ERROR_CONSTRAINT;
+                $ecode_map[1048] = MDB2_ERROR_CONSTRAINT_NOT_NULL;
+                $ecode_map[1062] = MDB2_ERROR_CONSTRAINT;
+            } else {
+                // Doing this in case mode changes during runtime.
+                $ecode_map[1022] = MDB2_ERROR_ALREADY_EXISTS;
+                $ecode_map[1048] = MDB2_ERROR_CONSTRAINT;
+                $ecode_map[1062] = MDB2_ERROR_ALREADY_EXISTS;
+            }
+            if (isset($ecode_map[$native_code])) {
+                $error = $ecode_map[$native_code];
+            }
+        }
+        return array($error, $native_code, $native_msg);
+    }
+
+    // }}}
+    // {{{ escape()
+
+    /**
+     * Quotes a string so it can be safely used in a query. It will quote
+     * the text so it can safely be used within a query.
+     *
+     * @param   string  the input string to quote
+     * @param   bool    escape wildcards
+     *
+     * @return  string  quoted string
+     *
+     * @access  public
+     */
+    function escape($text, $escape_wildcards = false)
+    {
+        if ($escape_wildcards) {
+            $text = $this->escapePattern($text);
+        }
+        $connection = $this->getConnection();
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+        $text = @mysqli_real_escape_string($connection, $text);
+        return $text;
+    }
+
+    // }}}
+    // {{{ beginTransaction()
+
+    /**
+     * Start a transaction or set a savepoint.
+     *
+     * @param   string  name of a savepoint to set
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  public
+     */
+    function beginTransaction($savepoint = null)
+    {
+        $this->debug('Starting transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint));
+        $this->_getServerCapabilities();
+        if (null !== $savepoint) {
+            if (!$this->supports('savepoints')) {
+                return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                    'savepoints are not supported', __FUNCTION__);
+            }
+            if (!$this->in_transaction) {
+                return $this->raiseError(MDB2_ERROR_INVALID, null, null,
+                    'savepoint cannot be released when changes are auto committed', __FUNCTION__);
+            }
+            $query = 'SAVEPOINT '.$savepoint;
+            return $this->_doQuery($query, true);
+        }
+        if ($this->in_transaction) {
+            return MDB2_OK;  //nothing to do
+        }
+        $query = $this->start_transaction ? 'START TRANSACTION' : 'SET AUTOCOMMIT = 0';
+        $result = $this->_doQuery($query, true);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        $this->in_transaction = true;
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ commit()
+
+    /**
+     * Commit the database changes done during a transaction that is in
+     * progress or release a savepoint. This function may only be called when
+     * auto-committing is disabled, otherwise it will fail. Therefore, a new
+     * transaction is implicitly started after committing the pending changes.
+     *
+     * @param   string  name of a savepoint to release
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  public
+     */
+    function commit($savepoint = null)
+    {
+        $this->debug('Committing transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint));
+        if (!$this->in_transaction) {
+            return $this->raiseError(MDB2_ERROR_INVALID, null, null,
+                'commit/release savepoint cannot be done changes are auto committed', __FUNCTION__);
+        }
+        if (null !== $savepoint) {
+            if (!$this->supports('savepoints')) {
+                return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                    'savepoints are not supported', __FUNCTION__);
+            }
+            $server_info = $this->getServerVersion();
+            if (version_compare($server_info['major'].'.'.$server_info['minor'].'.'.$server_info['patch'], '5.0.3', '<')) {
+                return MDB2_OK;
+            }
+            $query = 'RELEASE SAVEPOINT '.$savepoint;
+            return $this->_doQuery($query, true);
+        }
+
+        if (!$this->supports('transactions')) {
+            return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                'transactions are not supported', __FUNCTION__);
+        }
+
+        $result = $this->_doQuery('COMMIT', true);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        if (!$this->start_transaction) {
+            $query = 'SET AUTOCOMMIT = 1';
+            $result = $this->_doQuery($query, true);
+            if (PEAR::isError($result)) {
+                return $result;
+            }
+        }
+        $this->in_transaction = false;
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ rollback()
+
+    /**
+     * Cancel any database changes done during a transaction or since a specific
+     * savepoint that is in progress. This function may only be called when
+     * auto-committing is disabled, otherwise it will fail. Therefore, a new
+     * transaction is implicitly started after canceling the pending changes.
+     *
+     * @param   string  name of a savepoint to rollback to
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  public
+     */
+    function rollback($savepoint = null)
+    {
+        $this->debug('Rolling back transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint));
+        if (!$this->in_transaction) {
+            return $this->raiseError(MDB2_ERROR_INVALID, null, null,
+                'rollback cannot be done changes are auto committed', __FUNCTION__);
+        }
+        if (null !== $savepoint) {
+            if (!$this->supports('savepoints')) {
+                return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                    'savepoints are not supported', __FUNCTION__);
+            }
+            $query = 'ROLLBACK TO SAVEPOINT '.$savepoint;
+            return $this->_doQuery($query, true);
+        }
+
+        $query = 'ROLLBACK';
+        $result = $this->_doQuery($query, true);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        if (!$this->start_transaction) {
+            $query = 'SET AUTOCOMMIT = 1';
+            $result = $this->_doQuery($query, true);
+            if (PEAR::isError($result)) {
+                return $result;
+            }
+        }
+        $this->in_transaction = false;
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ function setTransactionIsolation()
+
+    /**
+     * Set the transacton isolation level.
+     *
+     * @param   string  standard isolation level
+     *                  READ UNCOMMITTED (allows dirty reads)
+     *                  READ COMMITTED (prevents dirty reads)
+     *                  REPEATABLE READ (prevents nonrepeatable reads)
+     *                  SERIALIZABLE (prevents phantom reads)
+     * @param   array some transaction options:
+     *                  'wait' => 'WAIT' | 'NO WAIT'
+     *                  'rw'   => 'READ WRITE' | 'READ ONLY'
+     *
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  public
+     * @since   2.1.1
+     */
+    function setTransactionIsolation($isolation, $options = array())
+    {
+        $this->debug('Setting transaction isolation level', __FUNCTION__, array('is_manip' => true));
+        if (!$this->supports('transactions')) {
+            return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                'transactions are not supported', __FUNCTION__);
+        }
+        switch ($isolation) {
+        case 'READ UNCOMMITTED':
+        case 'READ COMMITTED':
+        case 'REPEATABLE READ':
+        case 'SERIALIZABLE':
+            break;
+        default:
+            return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                'isolation level is not supported: '.$isolation, __FUNCTION__);
+        }
+
+        $query = "SET SESSION TRANSACTION ISOLATION LEVEL $isolation";
+        return $this->_doQuery($query, true);
+    }
+
+    // }}}
+    // {{{ _doConnect()
+
+    /**
+     * do the grunt work of the connect
+     *
+     * @return connection on success or MDB2 Error Object on failure
+     * @access protected
+     */
+    function _doConnect($username, $password, $persistent = false)
+    {
+        if (!PEAR::loadExtension($this->phptype)) {
+            return $this->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                'extension '.$this->phptype.' is not compiled into PHP', __FUNCTION__);
+        }
+
+        $connection = @mysqli_init();
+        if (!empty($this->dsn['charset']) && defined('MYSQLI_SET_CHARSET_NAME')) {
+            @mysqli_options($connection, MYSQLI_SET_CHARSET_NAME, $this->dsn['charset']);
+        }
+
+        if ($this->options['ssl']) {
+            @mysqli_ssl_set(
+                $connection,
+                empty($this->dsn['key'])    ? null : $this->dsn['key'],
+                empty($this->dsn['cert'])   ? null : $this->dsn['cert'],
+                empty($this->dsn['ca'])     ? null : $this->dsn['ca'],
+                empty($this->dsn['capath']) ? null : $this->dsn['capath'],
+                empty($this->dsn['cipher']) ? null : $this->dsn['cipher']
+            );
+        }
+
+        if (!@mysqli_real_connect(
+            $connection,
+            $this->dsn['hostspec'],
+            $username,
+            $password,
+            $this->database_name,
+            $this->dsn['port'],
+            $this->dsn['socket']
+        )) {
+            if (($err = @mysqli_connect_error()) != '') {
+                return $this->raiseError(null,
+                    null, null, $err, __FUNCTION__);
+            } else {
+                return $this->raiseError(MDB2_ERROR_CONNECT_FAILED, null, null,
+                    'unable to establish a connection', __FUNCTION__);
+            }
+        }
+
+        if (!empty($this->dsn['charset']) && !defined('MYSQLI_SET_CHARSET_NAME')) {
+            $result = $this->setCharset($this->dsn['charset'], $connection);
+            if (PEAR::isError($result)) {
+                return $result;
+            }
+        }
+
+        return $connection;
+    }
+
+    // }}}
+    // {{{ connect()
+
+    /**
+     * Connect to the database
+     *
+     * @return true on success, MDB2 Error Object on failure
+     */
+    function connect()
+    {
+        if (is_object($this->connection)) {
+            //if (count(array_diff($this->connected_dsn, $this->dsn)) == 0) {
+            if (MDB2::areEquals($this->connected_dsn, $this->dsn)) {
+                return MDB2_OK;
+            }
+            $this->connection = 0;
+        }
+
+        $connection = $this->_doConnect(
+            $this->dsn['username'],
+            $this->dsn['password']
+        );
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+
+        $this->connection = $connection;
+        $this->connected_dsn = $this->dsn;
+        $this->connected_database_name = $this->database_name;
+        $this->dbsyntax = $this->dsn['dbsyntax'] ? $this->dsn['dbsyntax'] : $this->phptype;
+
+        $this->_getServerCapabilities();
+
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ setCharset()
+
+    /**
+     * Set the charset on the current connection
+     *
+     * @param string    charset (or array(charset, collation))
+     * @param resource  connection handle
+     *
+     * @return true on success, MDB2 Error Object on failure
+     */
+    function setCharset($charset, $connection = null)
+    {
+        if (null === $connection) {
+            $connection = $this->getConnection();
+            if (PEAR::isError($connection)) {
+                return $connection;
+            }
+        }
+        $collation = null;
+        if (is_array($charset) && 2 == count($charset)) {
+            $collation = array_pop($charset);
+            $charset   = array_pop($charset);
+        }
+        $client_info = mysqli_get_client_version();
+        if (OS_WINDOWS && ((40111 > $client_info) ||
+            ((50000 <= $client_info) && (50006 > $client_info)))
+        ) {
+            $query = "SET NAMES '".mysqli_real_escape_string($connection, $charset)."'";
+            if (null !== $collation) {
+                $query .= " COLLATE '".mysqli_real_escape_string($connection, $collation)."'";
+            }
+            return $this->_doQuery($query, true, $connection);
+        }
+        if (!$result = mysqli_set_charset($connection, $charset)) {
+            $err = $this->raiseError(null, null, null,
+                'Could not set client character set', __FUNCTION__);
+            return $err;
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ databaseExists()
+
+    /**
+     * check if given database name is exists?
+     *
+     * @param string $name    name of the database that should be checked
+     *
+     * @return mixed true/false on success, a MDB2 error on failure
+     * @access public
+     */
+    function databaseExists($name)
+    {
+        $connection = $this->_doConnect($this->dsn['username'],
+                                        $this->dsn['password']);
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+
+        $result = @mysqli_select_db($connection, $name);
+        @mysqli_close($connection);
+
+        return $result;
+    }
+
+    // }}}
+    // {{{ disconnect()
+
+    /**
+     * Log out and disconnect from the database.
+     *
+     * @param  boolean $force if the disconnect should be forced even if the
+     *                        connection is opened persistently
+     * @return mixed true on success, false if not connected and error
+     *                object on error
+     * @access public
+     */
+    function disconnect($force = true)
+    {
+        if (is_object($this->connection)) {
+            if ($this->in_transaction) {
+                $dsn = $this->dsn;
+                $database_name = $this->database_name;
+                $persistent = $this->options['persistent'];
+                $this->dsn = $this->connected_dsn;
+                $this->database_name = $this->connected_database_name;
+                $this->options['persistent'] = $this->opened_persistent;
+                $this->rollback();
+                $this->dsn = $dsn;
+                $this->database_name = $database_name;
+                $this->options['persistent'] = $persistent;
+            }
+
+            if ($force) {
+                $ok = @mysqli_close($this->connection);
+                if (!$ok) {
+                    return $this->raiseError(MDB2_ERROR_DISCONNECT_FAILED,
+                           null, null, null, __FUNCTION__);
+                }
+            }
+        } else {
+            return false;
+        }
+        return parent::disconnect($force);
+    }
+
+    // }}}
+    // {{{ standaloneQuery()
+
+   /**
+     * execute a query as DBA
+     *
+     * @param string $query the SQL query
+     * @param mixed   $types  array that contains the types of the columns in
+     *                        the result set
+     * @param boolean $is_manip  if the query is a manipulation query
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function standaloneQuery($query, $types = null, $is_manip = false)
+    {
+        $user = $this->options['DBA_username']? $this->options['DBA_username'] : $this->dsn['username'];
+        $pass = $this->options['DBA_password']? $this->options['DBA_password'] : $this->dsn['password'];
+        $connection = $this->_doConnect($user, $pass);
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+
+        $offset = $this->offset;
+        $limit = $this->limit;
+        $this->offset = $this->limit = 0;
+        $query = $this->_modifyQuery($query, $is_manip, $limit, $offset);
+        
+        $result = $this->_doQuery($query, $is_manip, $connection, $this->database_name);
+        if (!PEAR::isError($result)) {
+            $result = $this->_affectedRows($connection, $result);
+        }
+
+        @mysqli_close($connection);
+        return $result;
+    }
+
+    // }}}
+    // {{{ _doQuery()
+
+    /**
+     * Execute a query
+     * @param string $query  query
+     * @param boolean $is_manip  if the query is a manipulation query
+     * @param resource $connection
+     * @param string $database_name
+     * @return result or error object
+     * @access protected
+     */
+    function _doQuery($query, $is_manip = false, $connection = null, $database_name = null)
+    {
+        $this->last_query = $query;
+        $result = $this->debug($query, 'query', array('is_manip' => $is_manip, 'when' => 'pre'));
+        if ($result) {
+            if (PEAR::isError($result)) {
+                return $result;
+            }
+            $query = $result;
+        }
+        if ($this->options['disable_query']) {
+            $result = $is_manip ? 0 : null;
+            return $result;
+        }
+
+        if (null === $connection) {
+            $connection = $this->getConnection();
+            if (PEAR::isError($connection)) {
+                return $connection;
+            }
+        }
+        if (null === $database_name) {
+            $database_name = $this->database_name;
+        }
+
+        if ($database_name) {
+            if ($database_name != $this->connected_database_name) {
+                if (!@mysqli_select_db($connection, $database_name)) {
+                    $err = $this->raiseError(null, null, null,
+                        'Could not select the database: '.$database_name, __FUNCTION__);
+                    return $err;
+                }
+                $this->connected_database_name = $database_name;
+            }
+        }
+
+        if ($this->options['multi_query']) {
+            $result = mysqli_multi_query($connection, $query);
+        } else {
+            $resultmode = $this->options['result_buffering'] ? MYSQLI_USE_RESULT : MYSQLI_USE_RESULT;
+            $result = mysqli_query($connection, $query);
+        }
+
+        if (!$result && 0 !== mysqli_errno($connection)) {
+            $err = $this->raiseError(null, null, null,
+                'Could not execute statement', __FUNCTION__);
+            return $err;
+        }
+
+        if ($this->options['multi_query']) {
+            if ($this->options['result_buffering']) {
+                if (!($result = @mysqli_store_result($connection))) {
+                    $err = $this->raiseError(null, null, null,
+                        'Could not get the first result from a multi query', __FUNCTION__);
+                    return $err;
+                }
+            } elseif (!($result = @mysqli_use_result($connection))) {
+                $err = $this->raiseError(null, null, null,
+                        'Could not get the first result from a multi query', __FUNCTION__);
+                return $err;
+            }
+        }
+
+        $this->debug($query, 'query', array('is_manip' => $is_manip, 'when' => 'post', 'result' => $result));
+        return $result;
+    }
+
+    // }}}
+    // {{{ _affectedRows()
+
+    /**
+     * Returns the number of rows affected
+     *
+     * @param resource $result
+     * @param resource $connection
+     * @return mixed MDB2 Error Object or the number of rows affected
+     * @access private
+     */
+    function _affectedRows($connection, $result = null)
+    {
+        if (null === $connection) {
+            $connection = $this->getConnection();
+            if (PEAR::isError($connection)) {
+                return $connection;
+            }
+        }
+        return @mysqli_affected_rows($connection);
+    }
+
+    // }}}
+    // {{{ _modifyQuery()
+
+    /**
+     * Changes a query string for various DBMS specific reasons
+     *
+     * @param string $query  query to modify
+     * @param boolean $is_manip  if it is a DML query
+     * @param integer $limit  limit the number of rows
+     * @param integer $offset  start reading from given offset
+     * @return string modified query
+     * @access protected
+     */
+    function _modifyQuery($query, $is_manip, $limit, $offset)
+    {
+        if ($this->options['portability'] & MDB2_PORTABILITY_DELETE_COUNT) {
+            // "DELETE FROM table" gives 0 affected rows in MySQL.
+            // This little hack lets you know how many rows were deleted.
+            if (preg_match('/^\s*DELETE\s+FROM\s+(\S+)\s*$/i', $query)) {
+                $query = preg_replace('/^\s*DELETE\s+FROM\s+(\S+)\s*$/',
+                                      'DELETE FROM \1 WHERE 1=1', $query);
+            }
+        }
+        if ($limit > 0
+            && !preg_match('/LIMIT\s*\d(?:\s*(?:,|OFFSET)\s*\d+)?(?:[^\)]*)?$/i', $query)
+        ) {
+            $query = rtrim($query);
+            if (substr($query, -1) == ';') {
+                $query = substr($query, 0, -1);
+            }
+
+            // LIMIT doesn't always come last in the query
+            // @see http://dev.mysql.com/doc/refman/5.0/en/select.html
+            $after = '';
+            if (preg_match('/(\s+INTO\s+(?:OUT|DUMP)FILE\s.*)$/ims', $query, $matches)) {
+                $after = $matches[0];
+                $query = preg_replace('/(\s+INTO\s+(?:OUT|DUMP)FILE\s.*)$/ims', '', $query);
+            } elseif (preg_match('/(\s+FOR\s+UPDATE\s*)$/i', $query, $matches)) {
+               $after = $matches[0];
+               $query = preg_replace('/(\s+FOR\s+UPDATE\s*)$/im', '', $query);
+            } elseif (preg_match('/(\s+LOCK\s+IN\s+SHARE\s+MODE\s*)$/im', $query, $matches)) {
+               $after = $matches[0];
+               $query = preg_replace('/(\s+LOCK\s+IN\s+SHARE\s+MODE\s*)$/im', '', $query);
+            }
+
+            if ($is_manip) {
+                return $query . " LIMIT $limit" . $after;
+            } else {
+                return $query . " LIMIT $offset, $limit" . $after;
+            }
+        }
+        return $query;
+    }
+
+    // }}}
+    // {{{ getServerVersion()
+
+    /**
+     * return version information about the server
+     *
+     * @param bool   $native  determines if the raw version string should be returned
+     * @return mixed array/string with version information or MDB2 error object
+     * @access public
+     */
+    function getServerVersion($native = false)
+    {
+        $connection = $this->getConnection();
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+        if ($this->connected_server_info) {
+            $server_info = $this->connected_server_info;
+        } else {
+            $server_info = @mysqli_get_server_info($connection);
+        }
+        if (!$server_info) {
+            return $this->raiseError(null, null, null,
+                'Could not get server information', __FUNCTION__);
+        }
+        // cache server_info
+        $this->connected_server_info = $server_info;
+        if (!$native) {
+            $tmp = explode('.', $server_info, 3);
+            if (isset($tmp[2]) && strpos($tmp[2], '-')) {
+                $tmp2 = explode('-', @$tmp[2], 2);
+            } else {
+                $tmp2[0] = isset($tmp[2]) ? $tmp[2] : null;
+                $tmp2[1] = null;
+            }
+            $server_info = array(
+                'major' => isset($tmp[0]) ? $tmp[0] : null,
+                'minor' => isset($tmp[1]) ? $tmp[1] : null,
+                'patch' => $tmp2[0],
+                'extra' => $tmp2[1],
+                'native' => $server_info,
+            );
+        }
+        return $server_info;
+    }
+
+    // }}}
+    // {{{ _getServerCapabilities()
+
+    /**
+     * Fetch some information about the server capabilities
+     * (transactions, subselects, prepared statements, etc).
+     *
+     * @access private
+     */
+    function _getServerCapabilities()
+    {
+        if (!$this->server_capabilities_checked) {
+            $this->server_capabilities_checked = true;
+
+            //set defaults
+            $this->supported['sub_selects'] = 'emulated';
+            $this->supported['prepared_statements'] = 'emulated';
+            $this->supported['triggers'] = false;
+            $this->start_transaction = false;
+            $this->varchar_max_length = 255;
+
+            $server_info = $this->getServerVersion();
+            if (is_array($server_info)) {
+                $server_version = $server_info['major'].'.'.$server_info['minor'].'.'.$server_info['patch'];
+            
+                if (!version_compare($server_version, '4.1.0', '<')) {
+                    $this->supported['sub_selects'] = true;
+                    $this->supported['prepared_statements'] = true;
+                }
+
+                // SAVEPOINTs were introduced in MySQL 4.0.14 and 4.1.1 (InnoDB)
+                if (version_compare($server_version, '4.1.0', '>=')) {
+                    if (version_compare($server_version, '4.1.1', '<')) {
+                        $this->supported['savepoints'] = false;
+                    }
+                } elseif (version_compare($server_version, '4.0.14', '<')) {
+                    $this->supported['savepoints'] = false;
+                }
+
+                if (!version_compare($server_version, '4.0.11', '<')) {
+                    $this->start_transaction = true;
+                }
+
+                if (!version_compare($server_version, '5.0.3', '<')) {
+                    $this->varchar_max_length = 65532;
+                }
+
+                if (!version_compare($server_version, '5.0.2', '<')) {
+                    $this->supported['triggers'] = true;
+                }
+            }
+        }
+    }
+
+    // }}}
+    // {{{ function _skipUserDefinedVariable($query, $position)
+
+    /**
+     * Utility method, used by prepare() to avoid misinterpreting MySQL user
+     * defined variables (SELECT @x:=5) for placeholders.
+     * Check if the placeholder is a false positive, i.e. if it is an user defined
+     * variable instead. If so, skip it and advance the position, otherwise
+     * return the current position, which is valid
+     *
+     * @param string $query
+     * @param integer $position current string cursor position
+     * @return integer $new_position
+     * @access protected
+     */
+    function _skipUserDefinedVariable($query, $position)
+    {
+        $found = strpos(strrev(substr($query, 0, $position)), '@');
+        if (false === $found) {
+            return $position;
+        }
+        $pos = strlen($query) - strlen(substr($query, $position)) - $found - 1;
+        $substring = substr($query, $pos, $position - $pos + 2);
+        if (preg_match('/^@\w+\s*:=$/', $substring)) {
+            return $position + 1; //found an user defined variable: skip it
+        }
+        return $position;
+    }
+
+    // }}}
+    // {{{ prepare()
+
+    /**
+     * Prepares a query for multiple execution with execute().
+     * With some database backends, this is emulated.
+     * prepare() requires a generic query as string like
+     * 'INSERT INTO numbers VALUES(?,?)' or
+     * 'INSERT INTO numbers VALUES(:foo,:bar)'.
+     * The ? and :name and are placeholders which can be set using
+     * bindParam() and the query can be sent off using the execute() method.
+     * The allowed format for :name can be set with the 'bindname_format' option.
+     *
+     * @param string $query the query to prepare
+     * @param mixed   $types  array that contains the types of the placeholders
+     * @param mixed   $result_types  array that contains the types of the columns in
+     *                        the result set or MDB2_PREPARE_RESULT, if set to
+     *                        MDB2_PREPARE_MANIP the query is handled as a manipulation query
+     * @param mixed   $lobs   key (field) value (parameter) pair for all lob placeholders
+     * @return mixed resource handle for the prepared query on success, a MDB2
+     *        error on failure
+     * @access public
+     * @see bindParam, execute
+     */
+    function prepare($query, $types = null, $result_types = null, $lobs = array())
+    {
+        // connect to get server capabilities (http://pear.php.net/bugs/16147)
+        $connection = $this->getConnection();
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+
+        if ($this->options['emulate_prepared']
+            || $this->supported['prepared_statements'] !== true
+        ) {
+            return parent::prepare($query, $types, $result_types, $lobs);
+        }
+        $is_manip = ($result_types === MDB2_PREPARE_MANIP);
+        $offset = $this->offset;
+        $limit = $this->limit;
+        $this->offset = $this->limit = 0;
+        $query = $this->_modifyQuery($query, $is_manip, $limit, $offset);
+        $result = $this->debug($query, __FUNCTION__, array('is_manip' => $is_manip, 'when' => 'pre'));
+        if ($result) {
+            if (PEAR::isError($result)) {
+                return $result;
+            }
+            $query = $result;
+        }
+        $placeholder_type_guess = $placeholder_type = null;
+        $question = '?';
+        $colon = ':';
+        $positions = array();
+        $position = 0;
+        while ($position < strlen($query)) {
+            $q_position = strpos($query, $question, $position);
+            $c_position = strpos($query, $colon, $position);
+            if ($q_position && $c_position) {
+                $p_position = min($q_position, $c_position);
+            } elseif ($q_position) {
+                $p_position = $q_position;
+            } elseif ($c_position) {
+                $p_position = $c_position;
+            } else {
+                break;
+            }
+            if (null === $placeholder_type) {
+                $placeholder_type_guess = $query[$p_position];
+            }
+            
+            $new_pos = $this->_skipDelimitedStrings($query, $position, $p_position);
+            if (PEAR::isError($new_pos)) {
+                return $new_pos;
+            }
+            if ($new_pos != $position) {
+                $position = $new_pos;
+                continue; //evaluate again starting from the new position
+            }
+            
+            //make sure this is not part of an user defined variable
+            $new_pos = $this->_skipUserDefinedVariable($query, $position);
+            if ($new_pos != $position) {
+                $position = $new_pos;
+                continue; //evaluate again starting from the new position
+            }
+
+            if ($query[$position] == $placeholder_type_guess) {
+                if (null === $placeholder_type) {
+                    $placeholder_type = $query[$p_position];
+                    $question = $colon = $placeholder_type;
+                }
+                if ($placeholder_type == ':') {
+                    $regexp = '/^.{'.($position+1).'}('.$this->options['bindname_format'].').*$/s';
+                    $parameter = preg_replace($regexp, '\\1', $query);
+                    if ($parameter === '') {
+                        $err = $this->raiseError(MDB2_ERROR_SYNTAX, null, null,
+                            'named parameter name must match "bindname_format" option', __FUNCTION__);
+                        return $err;
+                    }
+                    $positions[$p_position] = $parameter;
+                    $query = substr_replace($query, '?', $position, strlen($parameter)+1);
+                } else {
+                    $positions[$p_position] = count($positions);
+                }
+                $position = $p_position + 1;
+            } else {
+                $position = $p_position;
+            }
+        }
+
+        if (!$is_manip) {
+            static $prep_statement_counter = 1;
+            $statement_name = sprintf($this->options['statement_format'], $this->phptype, $prep_statement_counter++ . sha1(microtime() + mt_rand()));
+            $statement_name = substr(strtolower($statement_name), 0, $this->options['max_identifiers_length']);
+            $query = "PREPARE $statement_name FROM ".$this->quote($query, 'text');
+
+            $statement = $this->_doQuery($query, true, $connection);
+            if (PEAR::isError($statement)) {
+                return $statement;
+            }
+            $statement = $statement_name;
+        } else {
+            $statement = @mysqli_prepare($connection, $query);
+            if (!$statement) {
+                $err = $this->raiseError(null, null, null,
+                    'Unable to create prepared statement handle', __FUNCTION__);
+                return $err;
+            }
+        }
+
+        $class_name = 'MDB2_Statement_'.$this->phptype;
+        $obj = new $class_name($this, $statement, $positions, $query, $types, $result_types, $is_manip, $limit, $offset);
+        $this->debug($query, __FUNCTION__, array('is_manip' => $is_manip, 'when' => 'post', 'result' => $obj));
+        return $obj;
+    }
+
+    // }}}
+    // {{{ replace()
+
+    /**
+     * Execute a SQL REPLACE query. A REPLACE query is identical to a INSERT
+     * query, except that if there is already a row in the table with the same
+     * key field values, the old row is deleted before the new row is inserted.
+     *
+     * The REPLACE type of query does not make part of the SQL standards. Since
+     * practically only MySQL implements it natively, this type of query is
+     * emulated through this method for other DBMS using standard types of
+     * queries inside a transaction to assure the atomicity of the operation.
+     *
+     * @access public
+     *
+     * @param string $table name of the table on which the REPLACE query will
+     *  be executed.
+     * @param array $fields associative array that describes the fields and the
+     *  values that will be inserted or updated in the specified table. The
+     *  indexes of the array are the names of all the fields of the table. The
+     *  values of the array are also associative arrays that describe the
+     *  values and other properties of the table fields.
+     *
+     *  Here follows a list of field properties that need to be specified:
+     *
+     *    value:
+     *          Value to be assigned to the specified field. This value may be
+     *          of specified in database independent type format as this
+     *          function can perform the necessary datatype conversions.
+     *
+     *    Default:
+     *          this property is required unless the Null property
+     *          is set to 1.
+     *
+     *    type
+     *          Name of the type of the field. Currently, all types Metabase
+     *          are supported except for clob and blob.
+     *
+     *    Default: no type conversion
+     *
+     *    null
+     *          Boolean property that indicates that the value for this field
+     *          should be set to null.
+     *
+     *          The default value for fields missing in INSERT queries may be
+     *          specified the definition of a table. Often, the default value
+     *          is already null, but since the REPLACE may be emulated using
+     *          an UPDATE query, make sure that all fields of the table are
+     *          listed in this function argument array.
+     *
+     *    Default: 0
+     *
+     *    key
+     *          Boolean property that indicates that this field should be
+     *          handled as a primary key or at least as part of the compound
+     *          unique index of the table that will determine the row that will
+     *          updated if it exists or inserted a new row otherwise.
+     *
+     *          This function will fail if no key field is specified or if the
+     *          value of a key field is set to null because fields that are
+     *          part of unique index they may not be null.
+     *
+     *    Default: 0
+     *
+     * @see http://dev.mysql.com/doc/refman/5.0/en/replace.html
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     */
+    function replace($table, $fields)
+    {
+        $count = count($fields);
+        $query = $values = '';
+        $keys = $colnum = 0;
+        for (reset($fields); $colnum < $count; next($fields), $colnum++) {
+            $name = key($fields);
+            if ($colnum > 0) {
+                $query .= ',';
+                $values.= ',';
+            }
+            $query.= $this->quoteIdentifier($name, true);
+            if (isset($fields[$name]['null']) && $fields[$name]['null']) {
+                $value = 'NULL';
+            } else {
+                $type = isset($fields[$name]['type']) ? $fields[$name]['type'] : null;
+                $value = $this->quote($fields[$name]['value'], $type);
+                if (PEAR::isError($value)) {
+                    return $value;
+                }
+            }
+            $values.= $value;
+            if (isset($fields[$name]['key']) && $fields[$name]['key']) {
+                if ($value === 'NULL') {
+                    return $this->raiseError(MDB2_ERROR_CANNOT_REPLACE, null, null,
+                        'key value '.$name.' may not be NULL', __FUNCTION__);
+                }
+                $keys++;
+            }
+        }
+        if ($keys == 0) {
+            return $this->raiseError(MDB2_ERROR_CANNOT_REPLACE, null, null,
+                'not specified which fields are keys', __FUNCTION__);
+        }
+
+        $connection = $this->getConnection();
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+
+        $table = $this->quoteIdentifier($table, true);
+        $query = "REPLACE INTO $table ($query) VALUES ($values)";
+        $result = $this->_doQuery($query, true, $connection);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        return $this->_affectedRows($connection, $result);
+    }
+
+    // }}}
+    // {{{ nextID()
+
+    /**
+     * Returns the next free id of a sequence
+     *
+     * @param string $seq_name name of the sequence
+     * @param boolean $ondemand when true the sequence is
+     *                          automatic created, if it
+     *                          not exists
+     *
+     * @return mixed MDB2 Error Object or id
+     * @access public
+     */
+    function nextID($seq_name, $ondemand = true)
+    {
+        $sequence_name = $this->quoteIdentifier($this->getSequenceName($seq_name), true);
+        $seqcol_name = $this->quoteIdentifier($this->options['seqcol_name'], true);
+        $query = "INSERT INTO $sequence_name ($seqcol_name) VALUES (NULL)";
+        $this->pushErrorHandling(PEAR_ERROR_RETURN);
+        $this->expectError(MDB2_ERROR_NOSUCHTABLE);
+        $result = $this->_doQuery($query, true);
+        $this->popExpect();
+        $this->popErrorHandling();
+        if (PEAR::isError($result)) {
+            if ($ondemand && $result->getCode() == MDB2_ERROR_NOSUCHTABLE) {
+                $this->loadModule('Manager', null, true);
+                $result = $this->manager->createSequence($seq_name);
+                if (PEAR::isError($result)) {
+                    return $this->raiseError($result, null, null,
+                        'on demand sequence '.$seq_name.' could not be created', __FUNCTION__);
+                } else {
+                    return $this->nextID($seq_name, false);
+                }
+            }
+            return $result;
+        }
+        $value = $this->lastInsertID();
+        if (is_numeric($value)) {
+            $query = "DELETE FROM $sequence_name WHERE $seqcol_name < $value";
+            $result = $this->_doQuery($query, true);
+            if (PEAR::isError($result)) {
+                $this->warnings[] = 'nextID: could not delete previous sequence table values from '.$seq_name;
+            }
+        }
+        return $value;
+    }
+
+    // }}}
+    // {{{ lastInsertID()
+
+    /**
+     * Returns the autoincrement ID if supported or $id or fetches the current
+     * ID in a sequence called: $table.(empty($field) ? '' : '_'.$field)
+     *
+     * @param string $table name of the table into which a new row was inserted
+     * @param string $field name of the field into which a new row was inserted
+     * @return mixed MDB2 Error Object or id
+     * @access public
+     */
+    function lastInsertID($table = null, $field = null)
+    {
+        // not using mysql_insert_id() due to http://pear.php.net/bugs/bug.php?id=8051
+        return $this->queryOne('SELECT LAST_INSERT_ID()', 'integer');
+    }
+
+    // }}}
+    // {{{ currID()
+
+    /**
+     * Returns the current id of a sequence
+     *
+     * @param string $seq_name name of the sequence
+     * @return mixed MDB2 Error Object or id
+     * @access public
+     */
+    function currID($seq_name)
+    {
+        $sequence_name = $this->quoteIdentifier($this->getSequenceName($seq_name), true);
+        $seqcol_name = $this->quoteIdentifier($this->options['seqcol_name'], true);
+        $query = "SELECT MAX($seqcol_name) FROM $sequence_name";
+        return $this->queryOne($query, 'integer');
+    }
+}
+
+/**
+ * MDB2 MySQLi result driver
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Result_mysqli extends MDB2_Result_Common
+{
+    // }}}
+    // {{{ fetchRow()
+
+    /**
+     * Fetch a row and insert the data into an existing array.
+     *
+     * @param int       $fetchmode  how the array data should be indexed
+     * @param int    $rownum    number of the row where the data can be found
+     * @return int data array on success, a MDB2 error on failure
+     * @access public
+     */
+    function fetchRow($fetchmode = MDB2_FETCHMODE_DEFAULT, $rownum = null)
+    {
+        if (null !== $rownum) {
+            $seek = $this->seek($rownum);
+            if (PEAR::isError($seek)) {
+                return $seek;
+            }
+        }
+        if ($fetchmode == MDB2_FETCHMODE_DEFAULT) {
+            $fetchmode = $this->db->fetchmode;
+        }
+        if ($fetchmode & MDB2_FETCHMODE_ASSOC) {
+            $row = @mysqli_fetch_assoc($this->result);
+            if (is_array($row)
+                && $this->db->options['portability'] & MDB2_PORTABILITY_FIX_CASE
+            ) {
+                $row = array_change_key_case($row, $this->db->options['field_case']);
+            }
+        } else {
+           $row = @mysqli_fetch_row($this->result);
+        }
+
+        if (!$row) {
+            if (false === $this->result) {
+                $err =& $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
+                    'resultset has already been freed', __FUNCTION__);
+                return $err;
+            }
+            return null;
+        }
+        $mode = $this->db->options['portability'] & MDB2_PORTABILITY_EMPTY_TO_NULL;
+        $rtrim = false;
+        if ($this->db->options['portability'] & MDB2_PORTABILITY_RTRIM) {
+            if (empty($this->types)) {
+                $mode += MDB2_PORTABILITY_RTRIM;
+            } else {
+                $rtrim = true;
+            }
+        }
+        if ($mode) {
+            $this->db->_fixResultArrayValues($row, $mode);
+        }
+        if (!empty($this->types)) {
+            $row = $this->db->datatype->convertResultRow($this->types, $row, $rtrim);
+        }
+        if (!empty($this->values)) {
+            $this->_assignBindColumns($row);
+        }
+        if ($fetchmode === MDB2_FETCHMODE_OBJECT) {
+            $object_class = $this->db->options['fetch_class'];
+            if ($object_class == 'stdClass') {
+                $row = (object) $row;
+            } else {
+                $rowObj = new $object_class($row);
+                $row = $rowObj;
+            }
+        }
+        ++$this->rownum;
+        return $row;
+    }
+
+    // }}}
+    // {{{ _getColumnNames()
+
+    /**
+     * Retrieve the names of columns returned by the DBMS in a query result.
+     *
+     * @return  mixed   Array variable that holds the names of columns as keys
+     *                  or an MDB2 error on failure.
+     *                  Some DBMS may not return any columns when the result set
+     *                  does not contain any rows.
+     * @access private
+     */
+    function _getColumnNames()
+    {
+        $columns = array();
+        $numcols = $this->numCols();
+        if (PEAR::isError($numcols)) {
+            return $numcols;
+        }
+        for ($column = 0; $column < $numcols; $column++) {
+            $column_info = @mysqli_fetch_field_direct($this->result, $column);
+            $columns[$column_info->name] = $column;
+        }
+        if ($this->db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $columns = array_change_key_case($columns, $this->db->options['field_case']);
+        }
+        return $columns;
+    }
+
+    // }}}
+    // {{{ numCols()
+
+    /**
+     * Count the number of columns returned by the DBMS in a query result.
+     *
+     * @return mixed integer value with the number of columns, a MDB2 error
+     *                       on failure
+     * @access public
+     */
+    function numCols()
+    {
+        $cols = @mysqli_num_fields($this->result);
+        if (null === $cols) {
+            if (false === $this->result) {
+                return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
+                    'resultset has already been freed', __FUNCTION__);
+            }
+            if (null === $this->result) {
+                return count($this->types);
+            }
+            return $this->db->raiseError(null, null, null,
+                'Could not get column count', __FUNCTION__);
+        }
+        return $cols;
+    }
+
+    // }}}
+    // {{{ nextResult()
+
+    /**
+     * Move the internal result pointer to the next available result
+     *
+     * @return true on success, false if there is no more result set or an error object on failure
+     * @access public
+     */
+    function nextResult()
+    {
+        $connection = $this->db->getConnection();
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+
+        if (!@mysqli_more_results($connection)) {
+            return false;
+        }
+        if (!@mysqli_next_result($connection)) {
+            return false;
+        }
+        if (!($this->result = @mysqli_use_result($connection))) {
+            return false;
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ free()
+
+    /**
+     * Free the internal resources associated with result.
+     *
+     * @return boolean true on success, false if result is invalid
+     * @access public
+     */
+    function free()
+    {
+        do {
+            if (is_object($this->result) && $this->db->connection) {
+                $free = @mysqli_free_result($this->result);
+                if (false === $free) {
+                    return $this->db->raiseError(null, null, null,
+                        'Could not free result', __FUNCTION__);
+                }
+            }
+        } while ($this->result = $this->nextResult());
+
+        $this->result = false;
+        return MDB2_OK;
+    }
+}
+
+/**
+ * MDB2 MySQLi buffered result driver
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_BufferedResult_mysqli extends MDB2_Result_mysqli
+{
+    // }}}
+    // {{{ seek()
+
+    /**
+     * Seek to a specific row in a result set
+     *
+     * @param int    $rownum    number of the row where the data can be found
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function seek($rownum = 0)
+    {
+        if ($this->rownum != ($rownum - 1) && !@mysqli_data_seek($this->result, $rownum)) {
+            if (false === $this->result) {
+                return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
+                    'resultset has already been freed', __FUNCTION__);
+            }
+            if (null === $this->result) {
+                return MDB2_OK;
+            }
+            return $this->db->raiseError(MDB2_ERROR_INVALID, null, null,
+                'tried to seek to an invalid row number ('.$rownum.')', __FUNCTION__);
+        }
+        $this->rownum = $rownum - 1;
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ valid()
+
+    /**
+     * Check if the end of the result set has been reached
+     *
+     * @return mixed true or false on sucess, a MDB2 error on failure
+     * @access public
+     */
+    function valid()
+    {
+        $numrows = $this->numRows();
+        if (PEAR::isError($numrows)) {
+            return $numrows;
+        }
+        return $this->rownum < ($numrows - 1);
+    }
+
+    // }}}
+    // {{{ numRows()
+
+    /**
+     * Returns the number of rows in a result object
+     *
+     * @return mixed MDB2 Error Object or the number of rows
+     * @access public
+     */
+    function numRows()
+    {
+        $rows = @mysqli_num_rows($this->result);
+        if (null === $rows) {
+            if (false === $this->result) {
+                return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
+                    'resultset has already been freed', __FUNCTION__);
+            }
+            if (null === $this->result) {
+                return 0;
+            }
+            return $this->db->raiseError(null, null, null,
+                'Could not get row count', __FUNCTION__);
+        }
+        return $rows;
+    }
+
+    // }}}
+    // {{{ nextResult()
+
+    /**
+     * Move the internal result pointer to the next available result
+     *
+     * @param a valid result resource
+     * @return true on success, false if there is no more result set or an error object on failure
+     * @access public
+     */
+    function nextResult()
+    {
+        $connection = $this->db->getConnection();
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+
+        if (!@mysqli_more_results($connection)) {
+            return false;
+        }
+        if (!@mysqli_next_result($connection)) {
+            return false;
+        }
+        if (!($this->result = @mysqli_store_result($connection))) {
+            return false;
+        }
+        return MDB2_OK;
+    }
+}
+
+/**
+ * MDB2 MySQLi statement driver
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Statement_mysqli extends MDB2_Statement_Common
+{
+    // {{{ _execute()
+
+    /**
+     * Execute a prepared query statement helper method.
+     *
+     * @param mixed $result_class string which specifies which result class to use
+     * @param mixed $result_wrap_class string which specifies which class to wrap results in
+     *
+     * @return mixed MDB2_Result or integer (affected rows) on success,
+     *               a MDB2 error on failure
+     * @access private
+     */
+    function _execute($result_class = true, $result_wrap_class = false)
+    {
+        if (null === $this->statement) {
+            $result = parent::_execute($result_class, $result_wrap_class);
+            return $result;
+        }
+        $this->db->last_query = $this->query;
+        $this->db->debug($this->query, 'execute', array('is_manip' => $this->is_manip, 'when' => 'pre', 'parameters' => $this->values));
+        if ($this->db->getOption('disable_query')) {
+            $result = $this->is_manip ? 0 : null;
+            return $result;
+        }
+
+        $connection = $this->db->getConnection();
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+
+        if (!is_object($this->statement)) {
+            $query = 'EXECUTE '.$this->statement;
+        }
+        if (!empty($this->positions)) {
+            $paramReferences = array();
+            $parameters = array(0 => $this->statement, 1 => '');
+            $lobs = array();
+            $i = 0;
+            foreach ($this->positions as $parameter) {
+                if (!array_key_exists($parameter, $this->values)) {
+                    return $this->db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                        'Unable to bind to missing placeholder: '.$parameter, __FUNCTION__);
+                }
+                $value = $this->values[$parameter];
+                $type = array_key_exists($parameter, $this->types) ? $this->types[$parameter] : null;
+                if (!is_object($this->statement)) {
+                    if (is_resource($value) || $type == 'clob' || $type == 'blob' && $this->db->options['lob_allow_url_include']) {
+                        if (!is_resource($value) && preg_match('/^(\w+:\/\/)(.*)$/', $value, $match)) {
+                            if ($match[1] == 'file://') {
+                                $value = $match[2];
+                            }
+                            $value = @fopen($value, 'r');
+                            $close = true;
+                        }
+                        if (is_resource($value)) {
+                            $data = '';
+                            while (!@feof($value)) {
+                                $data.= @fread($value, $this->db->options['lob_buffer_length']);
+                            }
+                            if ($close) {
+                                @fclose($value);
+                            }
+                            $value = $data;
+                        }
+                    }
+                    $quoted = $this->db->quote($value, $type);
+                    if (PEAR::isError($quoted)) {
+                        return $quoted;
+                    }
+                    $param_query = 'SET @'.$parameter.' = '.$quoted;
+                    $result = $this->db->_doQuery($param_query, true, $connection);
+                    if (PEAR::isError($result)) {
+                        return $result;
+                    }
+                } else {
+                    if (is_resource($value) || $type == 'clob' || $type == 'blob') {
+                        $paramReferences[$i] = null;
+                        // mysqli_stmt_bind_param() requires parameters to be passed by reference
+                        $parameters[] =& $paramReferences[$i];
+                        $parameters[1].= 'b';
+                        $lobs[$i] = $parameter;
+                    } else {
+                        $paramReferences[$i] = $this->db->quote($value, $type, false);
+                        if (PEAR::isError($paramReferences[$i])) {
+                            return $paramReferences[$i];
+                        }
+                        // mysqli_stmt_bind_param() requires parameters to be passed by reference
+                        $parameters[] =& $paramReferences[$i];
+                        $parameters[1].= $this->db->datatype->mapPrepareDatatype($type);
+                    }
+                    ++$i;
+                }
+            }
+
+            if (!is_object($this->statement)) {
+                $query.= ' USING @'.implode(', @', array_values($this->positions));
+            } else {
+                $result = call_user_func_array('mysqli_stmt_bind_param', $parameters);
+                if (false === $result) {
+                    $err = $this->db->raiseError(null, null, null,
+                        'Unable to bind parameters', __FUNCTION__);
+                    return $err;
+                }
+
+                foreach ($lobs as $i => $parameter) {
+                    $value = $this->values[$parameter];
+                    $close = false;
+                    if (!is_resource($value)) {
+                        $close = true;
+                        if (preg_match('/^(\w+:\/\/)(.*)$/', $value, $match)) {
+                            if ($match[1] == 'file://') {
+                                $value = $match[2];
+                            }
+                            $value = @fopen($value, 'r');
+                        } else {
+                            $fp = @tmpfile();
+                            @fwrite($fp, $value);
+                            @rewind($fp);
+                            $value = $fp;
+                        }
+                    }
+                    while (!@feof($value)) {
+                        $data = @fread($value, $this->db->options['lob_buffer_length']);
+                        @mysqli_stmt_send_long_data($this->statement, $i, $data);
+                    }
+                    if ($close) {
+                        @fclose($value);
+                    }
+                }
+            }
+        }
+
+        if (!is_object($this->statement)) {
+            $result = $this->db->_doQuery($query, $this->is_manip, $connection);
+            if (PEAR::isError($result)) {
+                return $result;
+            }
+
+            if ($this->is_manip) {
+                $affected_rows = $this->db->_affectedRows($connection, $result);
+                return $affected_rows;
+            }
+
+            $result = $this->db->_wrapResult($result, $this->result_types,
+                $result_class, $result_wrap_class, $this->limit, $this->offset);
+        } else {
+
+            if (!mysqli_stmt_execute($this->statement)) {
+                $err = $this->db->raiseError(null, null, null,
+                    'Unable to execute statement', __FUNCTION__);
+                return $err;
+            }
+
+            if ($this->is_manip) {
+                $affected_rows = @mysqli_stmt_affected_rows($this->statement);
+                return $affected_rows;
+            }
+
+            if ($this->db->options['result_buffering']) {
+                @mysqli_stmt_store_result($this->statement);
+            }
+
+            $result = $this->db->_wrapResult($this->statement, $this->result_types,
+                $result_class, $result_wrap_class, $this->limit, $this->offset);
+        }
+
+        $this->db->debug($this->query, 'execute', array('is_manip' => $this->is_manip, 'when' => 'post', 'result' => $result));
+        return $result;
+    }
+
+    // }}}
+    // {{{ free()
+
+    /**
+     * Release resources allocated for the specified prepared query.
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function free()
+    {
+        if (null === $this->positions) {
+            return $this->db->raiseError(MDB2_ERROR, null, null,
+                'Prepared statement has already been freed', __FUNCTION__);
+        }
+        $result = MDB2_OK;
+
+        if (is_object($this->statement)) {
+            if (!@mysqli_stmt_close($this->statement)) {
+                $result = $this->db->raiseError(null, null, null,
+                    'Could not free statement', __FUNCTION__);
+            }
+        } elseif (null !== $this->statement) {
+            $connection = $this->db->getConnection();
+            if (PEAR::isError($connection)) {
+                return $connection;
+            }
+
+            $query = 'DEALLOCATE PREPARE '.$this->statement;
+            $result = $this->db->_doQuery($query, true, $connection);
+        }
+
+        parent::free();
+        return $result;
+   }
+}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/pgsql.php b/program/lib/MDB2/Driver/pgsql.php
new file mode 100644 (file)
index 0000000..73f6a0d
--- /dev/null
@@ -0,0 +1,1548 @@
+<?php
+// vim: set et ts=4 sw=4 fdm=marker:
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2008 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Paul Cooper <pgc@ucecom.com>                                 |
+// +----------------------------------------------------------------------+
+//
+// $Id: pgsql.php 295587 2010-02-28 17:16:38Z quipo $
+
+/**
+ * MDB2 PostGreSQL driver
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Paul Cooper <pgc@ucecom.com>
+ */
+class MDB2_Driver_pgsql extends MDB2_Driver_Common
+{
+    // {{{ properties
+    var $string_quoting = array('start' => "'", 'end' => "'", 'escape' => "'", 'escape_pattern' => '\\');
+
+    var $identifier_quoting = array('start' => '"', 'end' => '"', 'escape' => '"');
+    // }}}
+    // {{{ constructor
+
+    /**
+     * Constructor
+     */
+    function __construct()
+    {
+        parent::__construct();
+
+        $this->phptype = 'pgsql';
+        $this->dbsyntax = 'pgsql';
+
+        $this->supported['sequences'] = true;
+        $this->supported['indexes'] = true;
+        $this->supported['affected_rows'] = true;
+        $this->supported['summary_functions'] = true;
+        $this->supported['order_by_text'] = true;
+        $this->supported['transactions'] = true;
+        $this->supported['savepoints'] = true;
+        $this->supported['current_id'] = true;
+        $this->supported['limit_queries'] = true;
+        $this->supported['LOBs'] = true;
+        $this->supported['replace'] = 'emulated';
+        $this->supported['sub_selects'] = true;
+        $this->supported['triggers'] = true;
+        $this->supported['auto_increment'] = 'emulated';
+        $this->supported['primary_key'] = true;
+        $this->supported['result_introspection'] = true;
+        $this->supported['prepared_statements'] = true;
+        $this->supported['identifier_quoting'] = true;
+        $this->supported['pattern_escaping'] = true;
+        $this->supported['new_link'] = true;
+
+        $this->options['DBA_username'] = false;
+        $this->options['DBA_password'] = false;
+        $this->options['multi_query'] = false;
+        $this->options['disable_smart_seqname'] = true;
+        $this->options['max_identifiers_length'] = 63;
+    }
+
+    // }}}
+    // {{{ errorInfo()
+
+    /**
+     * This method is used to collect information about an error
+     *
+     * @param integer $error
+     * @return array
+     * @access public
+     */
+    function errorInfo($error = null)
+    {
+        // Fall back to MDB2_ERROR if there was no mapping.
+        $error_code = MDB2_ERROR;
+
+        $native_msg = '';
+        if (is_resource($error)) {
+            $native_msg = @pg_result_error($error);
+        } elseif ($this->connection) {
+            $native_msg = @pg_last_error($this->connection);
+            if (!$native_msg && @pg_connection_status($this->connection) === PGSQL_CONNECTION_BAD) {
+                $native_msg = 'Database connection has been lost.';
+                $error_code = MDB2_ERROR_CONNECT_FAILED;
+            }
+        } else {
+            $native_msg = @pg_last_error();
+        }
+
+        static $error_regexps;
+        if (empty($error_regexps)) {
+            $error_regexps = array(
+                '/column .* (of relation .*)?does not exist/i'
+                    => MDB2_ERROR_NOSUCHFIELD,
+                '/(relation|sequence|table).*does not exist|class .* not found/i'
+                    => MDB2_ERROR_NOSUCHTABLE,
+                '/database .* does not exist/'
+                    => MDB2_ERROR_NOT_FOUND,
+                '/constraint .* does not exist/'
+                    => MDB2_ERROR_NOT_FOUND,
+                '/index .* does not exist/'
+                    => MDB2_ERROR_NOT_FOUND,
+                '/database .* already exists/i'
+                    => MDB2_ERROR_ALREADY_EXISTS,
+                '/relation .* already exists/i'
+                    => MDB2_ERROR_ALREADY_EXISTS,
+                '/(divide|division) by zero$/i'
+                    => MDB2_ERROR_DIVZERO,
+                '/pg_atoi: error in .*: can\'t parse /i'
+                    => MDB2_ERROR_INVALID_NUMBER,
+                '/invalid input syntax for( type)? (integer|numeric)/i'
+                    => MDB2_ERROR_INVALID_NUMBER,
+                '/value .* is out of range for type \w*int/i'
+                    => MDB2_ERROR_INVALID_NUMBER,
+                '/integer out of range/i'
+                    => MDB2_ERROR_INVALID_NUMBER,
+                '/value too long for type character/i'
+                    => MDB2_ERROR_INVALID,
+                '/attribute .* not found|relation .* does not have attribute/i'
+                    => MDB2_ERROR_NOSUCHFIELD,
+                '/column .* specified in USING clause does not exist in (left|right) table/i'
+                    => MDB2_ERROR_NOSUCHFIELD,
+                '/parser: parse error at or near/i'
+                    => MDB2_ERROR_SYNTAX,
+                '/syntax error at/'
+                    => MDB2_ERROR_SYNTAX,
+                '/column reference .* is ambiguous/i'
+                    => MDB2_ERROR_SYNTAX,
+                '/permission denied/'
+                    => MDB2_ERROR_ACCESS_VIOLATION,
+                '/violates not-null constraint/'
+                    => MDB2_ERROR_CONSTRAINT_NOT_NULL,
+                '/violates [\w ]+ constraint/'
+                    => MDB2_ERROR_CONSTRAINT,
+                '/referential integrity violation/'
+                    => MDB2_ERROR_CONSTRAINT,
+                '/more expressions than target columns/i'
+                    => MDB2_ERROR_VALUE_COUNT_ON_ROW,
+            );
+        }
+        if (is_numeric($error) && $error < 0) {
+            $error_code = $error;
+        } else {
+            foreach ($error_regexps as $regexp => $code) {
+                if (preg_match($regexp, $native_msg)) {
+                    $error_code = $code;
+                    break;
+                }
+            }
+        }
+        return array($error_code, null, $native_msg);
+    }
+
+    // }}}
+    // {{{ escape()
+
+    /**
+     * Quotes a string so it can be safely used in a query. It will quote
+     * the text so it can safely be used within a query.
+     *
+     * @param   string  the input string to quote
+     * @param   bool    escape wildcards
+     *
+     * @return  string  quoted string
+     *
+     * @access  public
+     */
+    function escape($text, $escape_wildcards = false)
+    {
+        if ($escape_wildcards) {
+            $text = $this->escapePattern($text);
+        }
+        $connection = $this->getConnection();
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+        if (is_resource($connection) && version_compare(PHP_VERSION, '5.2.0RC5', '>=')) {
+            $text = @pg_escape_string($connection, $text);
+        } else {
+            $text = @pg_escape_string($text);
+        }
+        return $text;
+    }
+
+    // }}}
+    // {{{ beginTransaction()
+
+    /**
+     * Start a transaction or set a savepoint.
+     *
+     * @param   string  name of a savepoint to set
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  public
+     */
+    function beginTransaction($savepoint = null)
+    {
+        $this->debug('Starting transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint));
+        if (null !== $savepoint) {
+            if (!$this->in_transaction) {
+                return $this->raiseError(MDB2_ERROR_INVALID, null, null,
+                    'savepoint cannot be released when changes are auto committed', __FUNCTION__);
+            }
+            $query = 'SAVEPOINT '.$savepoint;
+            return $this->_doQuery($query, true);
+        }
+        if ($this->in_transaction) {
+            return MDB2_OK;  //nothing to do
+        }
+        if (!$this->destructor_registered && $this->opened_persistent) {
+            $this->destructor_registered = true;
+            register_shutdown_function('MDB2_closeOpenTransactions');
+        }
+        $result = $this->_doQuery('BEGIN', true);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        $this->in_transaction = true;
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ commit()
+
+    /**
+     * Commit the database changes done during a transaction that is in
+     * progress or release a savepoint. This function may only be called when
+     * auto-committing is disabled, otherwise it will fail. Therefore, a new
+     * transaction is implicitly started after committing the pending changes.
+     *
+     * @param   string  name of a savepoint to release
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  public
+     */
+    function commit($savepoint = null)
+    {
+        $this->debug('Committing transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint));
+        if (!$this->in_transaction) {
+            return $this->raiseError(MDB2_ERROR_INVALID, null, null,
+                'commit/release savepoint cannot be done changes are auto committed', __FUNCTION__);
+        }
+        if (null !== $savepoint) {
+            $query = 'RELEASE SAVEPOINT '.$savepoint;
+            return $this->_doQuery($query, true);
+        }
+
+        $result = $this->_doQuery('COMMIT', true);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        $this->in_transaction = false;
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ rollback()
+
+    /**
+     * Cancel any database changes done during a transaction or since a specific
+     * savepoint that is in progress. This function may only be called when
+     * auto-committing is disabled, otherwise it will fail. Therefore, a new
+     * transaction is implicitly started after canceling the pending changes.
+     *
+     * @param   string  name of a savepoint to rollback to
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  public
+     */
+    function rollback($savepoint = null)
+    {
+        $this->debug('Rolling back transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint));
+        if (!$this->in_transaction) {
+            return $this->raiseError(MDB2_ERROR_INVALID, null, null,
+                'rollback cannot be done changes are auto committed', __FUNCTION__);
+        }
+        if (null !== $savepoint) {
+            $query = 'ROLLBACK TO SAVEPOINT '.$savepoint;
+            return $this->_doQuery($query, true);
+        }
+
+        $query = 'ROLLBACK';
+        $result = $this->_doQuery($query, true);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        $this->in_transaction = false;
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ function setTransactionIsolation()
+
+    /**
+     * Set the transacton isolation level.
+     *
+     * @param   string  standard isolation level
+     *                  READ UNCOMMITTED (allows dirty reads)
+     *                  READ COMMITTED (prevents dirty reads)
+     *                  REPEATABLE READ (prevents nonrepeatable reads)
+     *                  SERIALIZABLE (prevents phantom reads)
+     * @param   array some transaction options:
+     *                  'wait' => 'WAIT' | 'NO WAIT'
+     *                  'rw'   => 'READ WRITE' | 'READ ONLY'
+     *
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  public
+     * @since   2.1.1
+     */
+    function setTransactionIsolation($isolation, $options = array())
+    {
+        $this->debug('Setting transaction isolation level', __FUNCTION__, array('is_manip' => true));
+        switch ($isolation) {
+        case 'READ UNCOMMITTED':
+        case 'READ COMMITTED':
+        case 'REPEATABLE READ':
+        case 'SERIALIZABLE':
+            break;
+        default:
+            return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                'isolation level is not supported: '.$isolation, __FUNCTION__);
+        }
+
+        $query = "SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL $isolation";
+        return $this->_doQuery($query, true);
+    }
+
+    // }}}
+    // {{{ _doConnect()
+
+    /**
+     * Do the grunt work of connecting to the database
+     *
+     * @return mixed connection resource on success, MDB2 Error Object on failure
+     * @access protected
+     */
+    function _doConnect($username, $password, $database_name, $persistent = false)
+    {
+        if (!PEAR::loadExtension($this->phptype)) {
+            return $this->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                'extension '.$this->phptype.' is not compiled into PHP', __FUNCTION__);
+        }
+        
+        if ($database_name == '') {
+            $database_name = 'template1';
+        }
+
+        $protocol = $this->dsn['protocol'] ? $this->dsn['protocol'] : 'tcp';
+
+        $params = array('');
+        if ($protocol == 'tcp') {
+            if ($this->dsn['hostspec']) {
+                $params[0].= 'host=' . $this->dsn['hostspec'];
+            }
+            if ($this->dsn['port']) {
+                $params[0].= ' port=' . $this->dsn['port'];
+            }
+        } elseif ($protocol == 'unix') {
+            // Allow for pg socket in non-standard locations.
+            if ($this->dsn['socket']) {
+                $params[0].= 'host=' . $this->dsn['socket'];
+            }
+            if ($this->dsn['port']) {
+                $params[0].= ' port=' . $this->dsn['port'];
+            }
+        }
+        if ($database_name) {
+            $params[0].= ' dbname=\'' . addslashes($database_name) . '\'';
+        }
+        if ($username) {
+            $params[0].= ' user=\'' . addslashes($username) . '\'';
+        }
+        if ($password) {
+            $params[0].= ' password=\'' . addslashes($password) . '\'';
+        }
+        if (!empty($this->dsn['options'])) {
+            $params[0].= ' options=' . $this->dsn['options'];
+        }
+        if (!empty($this->dsn['tty'])) {
+            $params[0].= ' tty=' . $this->dsn['tty'];
+        }
+        if (!empty($this->dsn['connect_timeout'])) {
+            $params[0].= ' connect_timeout=' . $this->dsn['connect_timeout'];
+        }
+        if (!empty($this->dsn['sslmode'])) {
+            $params[0].= ' sslmode=' . $this->dsn['sslmode'];
+        }
+        if (!empty($this->dsn['service'])) {
+            $params[0].= ' service=' . $this->dsn['service'];
+        }
+
+        if ($this->_isNewLinkSet()) {
+            if (version_compare(phpversion(), '4.3.0', '>=')) {
+                $params[] = PGSQL_CONNECT_FORCE_NEW;
+            }
+        }
+
+        $connect_function = $persistent ? 'pg_pconnect' : 'pg_connect';
+        $connection = @call_user_func_array($connect_function, $params);
+        if (!$connection) {
+            return $this->raiseError(MDB2_ERROR_CONNECT_FAILED, null, null,
+                'unable to establish a connection', __FUNCTION__);
+        }
+
+       if (empty($this->dsn['disable_iso_date'])) {
+            if (!@pg_query($connection, "SET SESSION DATESTYLE = 'ISO'")) {
+                return $this->raiseError(null, null, null,
+                    'Unable to set date style to iso', __FUNCTION__);
+            }
+       }
+
+        if (!empty($this->dsn['charset'])) {
+            $result = $this->setCharset($this->dsn['charset'], $connection);
+            if (PEAR::isError($result)) {
+                return $result;
+            }
+        }
+
+        // Enable extra compatibility settings on 8.2 and later
+        if (function_exists('pg_parameter_status')) {
+            $version = pg_parameter_status($connection, 'server_version');
+            if ($version == false) {
+                return $this->raiseError(null, null, null,
+                  'Unable to retrieve server version', __FUNCTION__);
+            }
+            $version = explode ('.', $version);
+            if (    $version['0'] > 8
+                || ($version['0'] == 8 && $version['1'] >= 2)
+            ) {
+                if (!@pg_query($connection, "SET SESSION STANDARD_CONFORMING_STRINGS = OFF")) {
+                    return $this->raiseError(null, null, null,
+                      'Unable to set standard_conforming_strings to off', __FUNCTION__);
+                }
+
+                if (!@pg_query($connection, "SET SESSION ESCAPE_STRING_WARNING = OFF")) {
+                    return $this->raiseError(null, null, null,
+                      'Unable to set escape_string_warning to off', __FUNCTION__);
+                }
+            }
+        }
+
+        return $connection;
+    }
+
+    // }}}
+    // {{{ connect()
+
+    /**
+     * Connect to the database
+     *
+     * @return true on success, MDB2 Error Object on failure
+     * @access public
+     */
+    function connect()
+    {
+        if (is_resource($this->connection)) {
+            //if (count(array_diff($this->connected_dsn, $this->dsn)) == 0
+            if (MDB2::areEquals($this->connected_dsn, $this->dsn)
+                && $this->connected_database_name == $this->database_name
+                && ($this->opened_persistent == $this->options['persistent'])
+            ) {
+                return MDB2_OK;
+            }
+            $this->disconnect(false);
+        }
+
+        if ($this->database_name) {
+            $connection = $this->_doConnect($this->dsn['username'],
+                                            $this->dsn['password'],
+                                            $this->database_name,
+                                            $this->options['persistent']);
+            if (PEAR::isError($connection)) {
+                return $connection;
+            }
+
+            $this->connection = $connection;
+            $this->connected_dsn = $this->dsn;
+            $this->connected_database_name = $this->database_name;
+            $this->opened_persistent = $this->options['persistent'];
+            $this->dbsyntax = $this->dsn['dbsyntax'] ? $this->dsn['dbsyntax'] : $this->phptype;
+        }
+
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ setCharset()
+
+    /**
+     * Set the charset on the current connection
+     *
+     * @param string    charset
+     * @param resource  connection handle
+     *
+     * @return true on success, MDB2 Error Object on failure
+     */
+    function setCharset($charset, $connection = null)
+    {
+        if (null === $connection) {
+            $connection = $this->getConnection();
+            if (PEAR::isError($connection)) {
+                return $connection;
+            }
+        }
+        if (is_array($charset)) {
+            $charset   = array_shift($charset);
+            $this->warnings[] = 'postgresql does not support setting client collation';
+        }
+        $result = @pg_set_client_encoding($connection, $charset);
+        if ($result == -1) {
+            return $this->raiseError(null, null, null,
+                'Unable to set client charset: '.$charset, __FUNCTION__);
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ databaseExists()
+
+    /**
+     * check if given database name is exists?
+     *
+     * @param string $name    name of the database that should be checked
+     *
+     * @return mixed true/false on success, a MDB2 error on failure
+     * @access public
+     */
+    function databaseExists($name)
+    {
+        $res = $this->_doConnect($this->dsn['username'],
+                                 $this->dsn['password'],
+                                 $this->escape($name),
+                                 $this->options['persistent']);
+        if (!PEAR::isError($res)) {
+            return true;
+        }
+
+        return false;
+    }
+
+    // }}}
+    // {{{ disconnect()
+
+    /**
+     * Log out and disconnect from the database.
+     *
+     * @param  boolean $force if the disconnect should be forced even if the
+     *                        connection is opened persistently
+     * @return mixed true on success, false if not connected and error
+     *                object on error
+     * @access public
+     */
+    function disconnect($force = true)
+    {
+        if (is_resource($this->connection)) {
+            if ($this->in_transaction) {
+                $dsn = $this->dsn;
+                $database_name = $this->database_name;
+                $persistent = $this->options['persistent'];
+                $this->dsn = $this->connected_dsn;
+                $this->database_name = $this->connected_database_name;
+                $this->options['persistent'] = $this->opened_persistent;
+                $this->rollback();
+                $this->dsn = $dsn;
+                $this->database_name = $database_name;
+                $this->options['persistent'] = $persistent;
+            }
+
+            if (!$this->opened_persistent || $force) {
+                $ok = @pg_close($this->connection);
+                if (!$ok) {
+                    return $this->raiseError(MDB2_ERROR_DISCONNECT_FAILED,
+                           null, null, null, __FUNCTION__);
+                }
+            }
+        } else {
+            return false;
+        }
+        return parent::disconnect($force);
+    }
+
+    // }}}
+    // {{{ standaloneQuery()
+
+    /**
+     * execute a query as DBA
+     *
+     * @param string $query the SQL query
+     * @param mixed   $types  array that contains the types of the columns in
+     *                        the result set
+     * @param boolean $is_manip  if the query is a manipulation query
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function standaloneQuery($query, $types = null, $is_manip = false)
+    {
+        $user = $this->options['DBA_username']? $this->options['DBA_username'] : $this->dsn['username'];
+        $pass = $this->options['DBA_password']? $this->options['DBA_password'] : $this->dsn['password'];
+        $connection = $this->_doConnect($user, $pass, $this->database_name, $this->options['persistent']);
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+
+        $offset = $this->offset;
+        $limit = $this->limit;
+        $this->offset = $this->limit = 0;
+        $query = $this->_modifyQuery($query, $is_manip, $limit, $offset);
+
+        $result = $this->_doQuery($query, $is_manip, $connection, $this->database_name);
+        if (!PEAR::isError($result)) {
+            if ($is_manip) {
+                $result =  $this->_affectedRows($connection, $result);
+            } else {
+                $result =& $this->_wrapResult($result, $types, true, false, $limit, $offset);
+            }
+        }
+
+        @pg_close($connection);
+        return $result;
+    }
+
+    // }}}
+    // {{{ _doQuery()
+
+    /**
+     * Execute a query
+     * @param string $query  query
+     * @param boolean $is_manip  if the query is a manipulation query
+     * @param resource $connection
+     * @param string $database_name
+     * @return result or error object
+     * @access protected
+     */
+    function _doQuery($query, $is_manip = false, $connection = null, $database_name = null)
+    {
+        $this->last_query = $query;
+        $result = $this->debug($query, 'query', array('is_manip' => $is_manip, 'when' => 'pre'));
+        if ($result) {
+            if (PEAR::isError($result)) {
+                return $result;
+            }
+            $query = $result;
+        }
+        if ($this->options['disable_query']) {
+            $result = $is_manip ? 0 : null;
+            return $result;
+        }
+
+        if (null === $connection) {
+            $connection = $this->getConnection();
+            if (PEAR::isError($connection)) {
+                return $connection;
+            }
+        }
+
+        $function = $this->options['multi_query'] ? 'pg_send_query' : 'pg_query';
+        $result = @$function($connection, $query);
+        if (!$result) {
+            $err = $this->raiseError(null, null, null,
+                'Could not execute statement', __FUNCTION__);
+            return $err;
+        } elseif ($this->options['multi_query']) {
+            if (!($result = @pg_get_result($connection))) {
+                $err = $this->raiseError(null, null, null,
+                        'Could not get the first result from a multi query', __FUNCTION__);
+                return $err;
+            }
+        }
+
+        $this->debug($query, 'query', array('is_manip' => $is_manip, 'when' => 'post', 'result' => $result));
+        return $result;
+    }
+
+    // }}}
+    // {{{ _affectedRows()
+
+    /**
+     * Returns the number of rows affected
+     *
+     * @param resource $result
+     * @param resource $connection
+     * @return mixed MDB2 Error Object or the number of rows affected
+     * @access private
+     */
+    function _affectedRows($connection, $result = null)
+    {
+        if (null === $connection) {
+            $connection = $this->getConnection();
+            if (PEAR::isError($connection)) {
+                return $connection;
+            }
+        }
+        return @pg_affected_rows($result);
+    }
+
+    // }}}
+    // {{{ _modifyQuery()
+
+    /**
+     * Changes a query string for various DBMS specific reasons
+     *
+     * @param string $query  query to modify
+     * @param boolean $is_manip  if it is a DML query
+     * @param integer $limit  limit the number of rows
+     * @param integer $offset  start reading from given offset
+     * @return string modified query
+     * @access protected
+     */
+    function _modifyQuery($query, $is_manip, $limit, $offset)
+    {
+        if ($limit > 0
+            && !preg_match('/LIMIT\s*\d(?:\s*(?:,|OFFSET)\s*\d+)?(?:[^\)]*)?$/i', $query)
+        ) {
+            $query = rtrim($query);
+            if (substr($query, -1) == ';') {
+                $query = substr($query, 0, -1);
+            }
+            if ($is_manip) {
+                $query = $this->_modifyManipQuery($query, $limit);
+            } else {
+                $query.= " LIMIT $limit OFFSET $offset";
+            }
+        }
+        return $query;
+    }
+    
+    // }}}
+    // {{{ _modifyManipQuery()
+    
+    /**
+     * Changes a manip query string for various DBMS specific reasons
+     *
+     * @param string $query  query to modify
+     * @param integer $limit  limit the number of rows
+     * @return string modified query
+     * @access protected
+     */
+    function _modifyManipQuery($query, $limit)
+    {
+        $pos = strpos(strtolower($query), 'where');
+        $where = $pos ? substr($query, $pos) : '';
+
+        $manip_clause = '(\bDELETE\b\s+(?:\*\s+)?\bFROM\b|\bUPDATE\b)';
+        $from_clause  = '([\w\.]+)';
+        $where_clause = '(?:(.*)\bWHERE\b\s+(.*))|(.*)';
+        $pattern = '/^'. $manip_clause . '\s+' . $from_clause .'(?:\s)*(?:'. $where_clause .')?$/i';
+        $matches = preg_match($pattern, $query, $match);
+        if ($matches) {
+            $manip = $match[1];
+            $from  = $match[2];
+            $what  = (count($matches) == 6) ? $match[5] : $match[3];
+            return $manip.' '.$from.' '.$what.' WHERE ctid=(SELECT ctid FROM '.$from.' '.$where.' LIMIT '.$limit.')';
+        }
+        //return error?
+        return $query;
+    }
+
+    // }}}
+    // {{{ getServerVersion()
+
+    /**
+     * return version information about the server
+     *
+     * @param bool   $native  determines if the raw version string should be returned
+     * @return mixed array/string with version information or MDB2 error object
+     * @access public
+     */
+    function getServerVersion($native = false)
+    {
+        $query = 'SHOW SERVER_VERSION';
+        if ($this->connected_server_info) {
+            $server_info = $this->connected_server_info;
+        } else {
+            $server_info = $this->queryOne($query, 'text');
+            if (PEAR::isError($server_info)) {
+                return $server_info;
+            }
+        }
+        // cache server_info
+        $this->connected_server_info = $server_info;
+        if (!$native && !PEAR::isError($server_info)) {
+            $tmp = explode('.', $server_info, 3);
+            if (empty($tmp[2])
+                && isset($tmp[1])
+                && preg_match('/(\d+)(.*)/', $tmp[1], $tmp2)
+            ) {
+                $server_info = array(
+                    'major' => $tmp[0],
+                    'minor' => $tmp2[1],
+                    'patch' => null,
+                    'extra' => $tmp2[2],
+                    'native' => $server_info,
+                );
+            } else {
+                $server_info = array(
+                    'major' => isset($tmp[0]) ? $tmp[0] : null,
+                    'minor' => isset($tmp[1]) ? $tmp[1] : null,
+                    'patch' => isset($tmp[2]) ? $tmp[2] : null,
+                    'extra' => null,
+                    'native' => $server_info,
+                );
+            }
+        }
+        return $server_info;
+    }
+
+    // }}}
+    // {{{ prepare()
+
+    /**
+     * Prepares a query for multiple execution with execute().
+     * With some database backends, this is emulated.
+     * prepare() requires a generic query as string like
+     * 'INSERT INTO numbers VALUES(?,?)' or
+     * 'INSERT INTO numbers VALUES(:foo,:bar)'.
+     * The ? and :name and are placeholders which can be set using
+     * bindParam() and the query can be sent off using the execute() method.
+     * The allowed format for :name can be set with the 'bindname_format' option.
+     *
+     * @param string $query the query to prepare
+     * @param mixed   $types  array that contains the types of the placeholders
+     * @param mixed   $result_types  array that contains the types of the columns in
+     *                        the result set or MDB2_PREPARE_RESULT, if set to
+     *                        MDB2_PREPARE_MANIP the query is handled as a manipulation query
+     * @param mixed   $lobs   key (field) value (parameter) pair for all lob placeholders
+     * @return mixed resource handle for the prepared query on success, a MDB2
+     *        error on failure
+     * @access public
+     * @see bindParam, execute
+     */
+    function prepare($query, $types = null, $result_types = null, $lobs = array())
+    {
+        if ($this->options['emulate_prepared']) {
+            return parent::prepare($query, $types, $result_types, $lobs);
+        }
+        $is_manip = ($result_types === MDB2_PREPARE_MANIP);
+        $offset = $this->offset;
+        $limit = $this->limit;
+        $this->offset = $this->limit = 0;
+        $result = $this->debug($query, __FUNCTION__, array('is_manip' => $is_manip, 'when' => 'pre'));
+        if ($result) {
+            if (PEAR::isError($result)) {
+                return $result;
+            }
+            $query = $result;
+        }
+        $pgtypes = function_exists('pg_prepare') ? false : array();
+        if ($pgtypes !== false && !empty($types)) {
+            $this->loadModule('Datatype', null, true);
+        }
+        $query = $this->_modifyQuery($query, $is_manip, $limit, $offset);
+        $placeholder_type_guess = $placeholder_type = null;
+        $question = '?';
+        $colon = ':';
+        $positions = array();
+        $position = $parameter = 0;
+        while ($position < strlen($query)) {
+            $q_position = strpos($query, $question, $position);
+            $c_position = strpos($query, $colon, $position);
+            //skip "::type" cast ("select id::varchar(20) from sometable where name=?")
+            $doublecolon_position = strpos($query, '::', $position);
+            if ($doublecolon_position !== false && $doublecolon_position == $c_position) {
+                $c_position = strpos($query, $colon, $position+2);
+            }
+            if ($q_position && $c_position) {
+                $p_position = min($q_position, $c_position);
+            } elseif ($q_position) {
+                $p_position = $q_position;
+            } elseif ($c_position) {
+                $p_position = $c_position;
+            } else {
+                break;
+            }
+            if (null === $placeholder_type) {
+                $placeholder_type_guess = $query[$p_position];
+            }
+            
+            $new_pos = $this->_skipDelimitedStrings($query, $position, $p_position);
+            if (PEAR::isError($new_pos)) {
+                return $new_pos;
+            }
+            if ($new_pos != $position) {
+                $position = $new_pos;
+                continue; //evaluate again starting from the new position
+            }
+
+            if ($query[$position] == $placeholder_type_guess) {
+                if (null === $placeholder_type) {
+                    $placeholder_type = $query[$p_position];
+                    $question = $colon = $placeholder_type;
+                    if (!empty($types) && is_array($types)) {
+                        if ($placeholder_type == ':') {
+                        } else {
+                            $types = array_values($types);
+                        }
+                    }
+                }
+                if ($placeholder_type_guess == '?') {
+                    $length = 1;
+                    $name = $parameter;
+                } else {
+                    $regexp = '/^.{'.($position+1).'}('.$this->options['bindname_format'].').*$/s';
+                    $param = preg_replace($regexp, '\\1', $query);
+                    if ($param === '') {
+                        $err = $this->raiseError(MDB2_ERROR_SYNTAX, null, null,
+                            'named parameter name must match "bindname_format" option', __FUNCTION__);
+                        return $err;
+                    }
+                    $length = strlen($param) + 1;
+                    $name = $param;
+                }
+                if ($pgtypes !== false) {
+                    if (is_array($types) && array_key_exists($name, $types)) {
+                        $pgtypes[] = $this->datatype->mapPrepareDatatype($types[$name]);
+                    } elseif (is_array($types) && array_key_exists($parameter, $types)) {
+                        $pgtypes[] = $this->datatype->mapPrepareDatatype($types[$parameter]);
+                    } else {
+                        $pgtypes[] = 'text';
+                    }
+                }
+                if (($key_parameter = array_search($name, $positions))) {
+                    $next_parameter = 1;
+                    foreach ($positions as $key => $value) {
+                        if ($key_parameter == $key) {
+                            break;
+                        }
+                        ++$next_parameter;
+                    }
+                } else {
+                    ++$parameter;
+                    $next_parameter = $parameter;
+                    $positions[] = $name;
+                }
+                $query = substr_replace($query, '$'.$parameter, $position, $length);
+                $position = $p_position + strlen($parameter);
+            } else {
+                $position = $p_position;
+            }
+        }
+        $connection = $this->getConnection();
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+        static $prep_statement_counter = 1;
+        $statement_name = sprintf($this->options['statement_format'], $this->phptype, $prep_statement_counter++ . sha1(microtime() + mt_rand()));
+        $statement_name = substr(strtolower($statement_name), 0, $this->options['max_identifiers_length']);
+        if (false === $pgtypes) {
+            $result = @pg_prepare($connection, $statement_name, $query);
+            if (!$result) {
+                $err = $this->raiseError(null, null, null,
+                    'Unable to create prepared statement handle', __FUNCTION__);
+                return $err;
+            }
+        } else {
+            $types_string = '';
+            if ($pgtypes) {
+                $types_string = ' ('.implode(', ', $pgtypes).') ';
+            }
+            $query = 'PREPARE '.$statement_name.$types_string.' AS '.$query;
+            $statement = $this->_doQuery($query, true, $connection);
+            if (PEAR::isError($statement)) {
+                return $statement;
+            }
+        }
+
+        $class_name = 'MDB2_Statement_'.$this->phptype;
+        $obj = new $class_name($this, $statement_name, $positions, $query, $types, $result_types, $is_manip, $limit, $offset);
+        $this->debug($query, __FUNCTION__, array('is_manip' => $is_manip, 'when' => 'post', 'result' => $obj));
+        return $obj;
+    }
+
+    // }}}
+    // {{{ function getSequenceName($sqn)
+
+    /**
+     * adds sequence name formatting to a sequence name
+     *
+     * @param   string  name of the sequence
+     *
+     * @return  string  formatted sequence name
+     *
+     * @access  public
+     */
+    function getSequenceName($sqn)
+    {
+        if (false === $this->options['disable_smart_seqname']) {
+            if (strpos($sqn, '_') !== false) {
+                list($table, $field) = explode('_', $sqn, 2);
+            }
+            $schema_list = $this->queryOne("SELECT array_to_string(current_schemas(false), ',')");
+            if (PEAR::isError($schema_list) || empty($schema_list) || count($schema_list) < 2) {
+                $order_by = ' a.attnum';
+                $schema_clause = ' AND n.nspname=current_schema()';
+            } else {
+                $schemas = explode(',', $schema_list);
+                $schema_clause = ' AND n.nspname IN ('.$schema_list.')';
+                $counter = 1;
+                $order_by = ' CASE ';
+                foreach ($schemas as $schema) {
+                    $order_by .= ' WHEN n.nspname='.$schema.' THEN '.$counter++;
+                }
+                $order_by .= ' ELSE '.$counter.' END, a.attnum';
+            }
+
+            $query = "SELECT substring((SELECT substring(pg_get_expr(d.adbin, d.adrelid) for 128)
+                           FROM pg_attrdef d
+                          WHERE d.adrelid = a.attrelid
+                            AND d.adnum = a.attnum
+                            AND a.atthasdef
+                        ) FROM 'nextval[^'']*''([^'']*)')
+                        FROM pg_attribute a
+                    LEFT JOIN pg_class c ON c.oid = a.attrelid
+                    LEFT JOIN pg_attrdef d ON d.adrelid = a.attrelid AND d.adnum = a.attnum AND a.atthasdef
+                    LEFT JOIN pg_namespace n ON c.relnamespace = n.oid
+                       WHERE (c.relname = ".$this->quote($sqn, 'text');
+            if (!empty($field)) {
+                $query .= " OR (c.relname = ".$this->quote($table, 'text')." AND a.attname = ".$this->quote($field, 'text').")";
+            }
+            $query .= "      )"
+                         .$schema_clause."
+                         AND NOT a.attisdropped
+                         AND a.attnum > 0
+                         AND pg_get_expr(d.adbin, d.adrelid) LIKE 'nextval%'
+                    ORDER BY ".$order_by;
+            $seqname = $this->queryOne($query);
+            if (!PEAR::isError($seqname) && !empty($seqname) && is_string($seqname)) {
+                return $seqname;
+            }
+        }
+
+        return parent::getSequenceName($sqn);
+    }
+
+    // }}}
+    // {{{ nextID()
+
+    /**
+     * Returns the next free id of a sequence
+     *
+     * @param string $seq_name name of the sequence
+     * @param boolean $ondemand when true the sequence is
+     *                          automatic created, if it
+     *                          not exists
+     * @return mixed MDB2 Error Object or id
+     * @access public
+     */
+    function nextID($seq_name, $ondemand = true)
+    {
+        $sequence_name = $this->quoteIdentifier($this->getSequenceName($seq_name), true);
+        $query = "SELECT NEXTVAL('$sequence_name')";
+        $this->pushErrorHandling(PEAR_ERROR_RETURN);
+        $this->expectError(MDB2_ERROR_NOSUCHTABLE);
+        $result = $this->queryOne($query, 'integer');
+        $this->popExpect();
+        $this->popErrorHandling();
+        if (PEAR::isError($result)) {
+            if ($ondemand && $result->getCode() == MDB2_ERROR_NOSUCHTABLE) {
+                $this->loadModule('Manager', null, true);
+                $result = $this->manager->createSequence($seq_name);
+                if (PEAR::isError($result)) {
+                    return $this->raiseError($result, null, null,
+                        'on demand sequence could not be created', __FUNCTION__);
+                }
+                return $this->nextId($seq_name, false);
+            }
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ lastInsertID()
+
+    /**
+     * Returns the autoincrement ID if supported or $id or fetches the current
+     * ID in a sequence called: $table.(empty($field) ? '' : '_'.$field)
+     *
+     * @param string $table name of the table into which a new row was inserted
+     * @param string $field name of the field into which a new row was inserted
+     * @return mixed MDB2 Error Object or id
+     * @access public
+     */
+    function lastInsertID($table = null, $field = null)
+    {
+        if (empty($table) && empty($field)) {
+            return $this->queryOne('SELECT lastval()', 'integer');
+        }
+        $seq = $table.(empty($field) ? '' : '_'.$field);
+        $sequence_name = $this->quoteIdentifier($this->getSequenceName($seq), true);
+        return $this->queryOne("SELECT currval('$sequence_name')", 'integer');
+    }
+
+    // }}}
+    // {{{ currID()
+
+    /**
+     * Returns the current id of a sequence
+     *
+     * @param string $seq_name name of the sequence
+     * @return mixed MDB2 Error Object or id
+     * @access public
+     */
+    function currID($seq_name)
+    {
+        $sequence_name = $this->quoteIdentifier($this->getSequenceName($seq_name), true);
+        return $this->queryOne("SELECT last_value FROM $sequence_name", 'integer');
+    }
+}
+
+/**
+ * MDB2 PostGreSQL result driver
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Paul Cooper <pgc@ucecom.com>
+ */
+class MDB2_Result_pgsql extends MDB2_Result_Common
+{
+    // }}}
+    // {{{ fetchRow()
+
+    /**
+     * Fetch a row and insert the data into an existing array.
+     *
+     * @param int       $fetchmode  how the array data should be indexed
+     * @param int    $rownum    number of the row where the data can be found
+     * @return int data array on success, a MDB2 error on failure
+     * @access public
+     */
+    function fetchRow($fetchmode = MDB2_FETCHMODE_DEFAULT, $rownum = null)
+    {
+        if (null !== $rownum) {
+            $seek = $this->seek($rownum);
+            if (PEAR::isError($seek)) {
+                return $seek;
+            }
+        }
+        if ($fetchmode == MDB2_FETCHMODE_DEFAULT) {
+            $fetchmode = $this->db->fetchmode;
+        }
+        if ($fetchmode & MDB2_FETCHMODE_ASSOC) {
+            $row = @pg_fetch_array($this->result, null, PGSQL_ASSOC);
+            if (is_array($row)
+                && $this->db->options['portability'] & MDB2_PORTABILITY_FIX_CASE
+            ) {
+                $row = array_change_key_case($row, $this->db->options['field_case']);
+            }
+        } else {
+            $row = @pg_fetch_row($this->result);
+        }
+        if (!$row) {
+            if (false === $this->result) {
+                $err = $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
+                    'resultset has already been freed', __FUNCTION__);
+                return $err;
+            }
+            return null;
+        }
+        $mode = $this->db->options['portability'] & MDB2_PORTABILITY_EMPTY_TO_NULL;
+        $rtrim = false;
+        if ($this->db->options['portability'] & MDB2_PORTABILITY_RTRIM) {
+            if (empty($this->types)) {
+                $mode += MDB2_PORTABILITY_RTRIM;
+            } else {
+                $rtrim = true;
+            }
+        }
+        if ($mode) {
+            $this->db->_fixResultArrayValues($row, $mode);
+        }
+        if (!empty($this->types)) {
+            $row = $this->db->datatype->convertResultRow($this->types, $row, $rtrim);
+        }
+        if (!empty($this->values)) {
+            $this->_assignBindColumns($row);
+        }
+        if ($fetchmode === MDB2_FETCHMODE_OBJECT) {
+            $object_class = $this->db->options['fetch_class'];
+            if ($object_class == 'stdClass') {
+                $row = (object) $row;
+            } else {
+                $rowObj = new $object_class($row);
+                $row = $rowObj;
+            }
+        }
+        ++$this->rownum;
+        return $row;
+    }
+
+    // }}}
+    // {{{ _getColumnNames()
+
+    /**
+     * Retrieve the names of columns returned by the DBMS in a query result.
+     *
+     * @return  mixed   Array variable that holds the names of columns as keys
+     *                  or an MDB2 error on failure.
+     *                  Some DBMS may not return any columns when the result set
+     *                  does not contain any rows.
+     * @access private
+     */
+    function _getColumnNames()
+    {
+        $columns = array();
+        $numcols = $this->numCols();
+        if (PEAR::isError($numcols)) {
+            return $numcols;
+        }
+        for ($column = 0; $column < $numcols; $column++) {
+            $column_name = @pg_field_name($this->result, $column);
+            $columns[$column_name] = $column;
+        }
+        if ($this->db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $columns = array_change_key_case($columns, $this->db->options['field_case']);
+        }
+        return $columns;
+    }
+
+    // }}}
+    // {{{ numCols()
+
+    /**
+     * Count the number of columns returned by the DBMS in a query result.
+     *
+     * @access public
+     * @return mixed integer value with the number of columns, a MDB2 error
+     *                       on failure
+     */
+    function numCols()
+    {
+        $cols = @pg_num_fields($this->result);
+        if (null === $cols) {
+            if (false === $this->result) {
+                return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
+                    'resultset has already been freed', __FUNCTION__);
+            }
+            if (null === $this->result) {
+                return count($this->types);
+            }
+            return $this->db->raiseError(null, null, null,
+                'Could not get column count', __FUNCTION__);
+        }
+        return $cols;
+    }
+
+    // }}}
+    // {{{ nextResult()
+
+    /**
+     * Move the internal result pointer to the next available result
+     *
+     * @return true on success, false if there is no more result set or an error object on failure
+     * @access public
+     */
+    function nextResult()
+    {
+        $connection = $this->db->getConnection();
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+
+        if (!($this->result = @pg_get_result($connection))) {
+            return false;
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ free()
+
+    /**
+     * Free the internal resources associated with result.
+     *
+     * @return boolean true on success, false if result is invalid
+     * @access public
+     */
+    function free()
+    {
+        if (is_resource($this->result) && $this->db->connection) {
+            $free = @pg_free_result($this->result);
+            if (false === $free) {
+                return $this->db->raiseError(null, null, null,
+                    'Could not free result', __FUNCTION__);
+            }
+        }
+        $this->result = false;
+        return MDB2_OK;
+    }
+}
+
+/**
+ * MDB2 PostGreSQL buffered result driver
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Paul Cooper <pgc@ucecom.com>
+ */
+class MDB2_BufferedResult_pgsql extends MDB2_Result_pgsql
+{
+    // {{{ seek()
+
+    /**
+     * Seek to a specific row in a result set
+     *
+     * @param int    $rownum    number of the row where the data can be found
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function seek($rownum = 0)
+    {
+        if ($this->rownum != ($rownum - 1) && !@pg_result_seek($this->result, $rownum)) {
+            if (false === $this->result) {
+                return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
+                    'resultset has already been freed', __FUNCTION__);
+            }
+            if (null === $this->result) {
+                return MDB2_OK;
+            }
+            return $this->db->raiseError(MDB2_ERROR_INVALID, null, null,
+                'tried to seek to an invalid row number ('.$rownum.')', __FUNCTION__);
+        }
+        $this->rownum = $rownum - 1;
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ valid()
+
+    /**
+     * Check if the end of the result set has been reached
+     *
+     * @return mixed true or false on sucess, a MDB2 error on failure
+     * @access public
+     */
+    function valid()
+    {
+        $numrows = $this->numRows();
+        if (PEAR::isError($numrows)) {
+            return $numrows;
+        }
+        return $this->rownum < ($numrows - 1);
+    }
+
+    // }}}
+    // {{{ numRows()
+
+    /**
+     * Returns the number of rows in a result object
+     *
+     * @return mixed MDB2 Error Object or the number of rows
+     * @access public
+     */
+    function numRows()
+    {
+        $rows = @pg_num_rows($this->result);
+        if (null === $rows) {
+            if (false === $this->result) {
+                return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
+                    'resultset has already been freed', __FUNCTION__);
+            }
+            if (null === $this->result) {
+                return 0;
+            }
+            return $this->db->raiseError(null, null, null,
+                'Could not get row count', __FUNCTION__);
+        }
+        return $rows;
+    }
+}
+
+/**
+ * MDB2 PostGreSQL statement driver
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Paul Cooper <pgc@ucecom.com>
+ */
+class MDB2_Statement_pgsql extends MDB2_Statement_Common
+{
+    // {{{ _execute()
+
+    /**
+     * Execute a prepared query statement helper method.
+     *
+     * @param mixed $result_class string which specifies which result class to use
+     * @param mixed $result_wrap_class string which specifies which class to wrap results in
+     *
+     * @return mixed MDB2_Result or integer (affected rows) on success,
+     *               a MDB2 error on failure
+     * @access private
+     */
+    function _execute($result_class = true, $result_wrap_class = false)
+    {
+        if (null === $this->statement) {
+            return parent::_execute($result_class, $result_wrap_class);
+        }
+        $this->db->last_query = $this->query;
+        $this->db->debug($this->query, 'execute', array('is_manip' => $this->is_manip, 'when' => 'pre', 'parameters' => $this->values));
+        if ($this->db->getOption('disable_query')) {
+            $result = $this->is_manip ? 0 : null;
+            return $result;
+        }
+
+        $connection = $this->db->getConnection();
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+
+        $query = false;
+        $parameters = array();
+        // todo: disabled until pg_execute() bytea issues are cleared up
+        if (true || !function_exists('pg_execute')) {
+            $query = 'EXECUTE '.$this->statement;
+        }
+        if (!empty($this->positions)) {
+            foreach ($this->positions as $parameter) {
+                if (!array_key_exists($parameter, $this->values)) {
+                    return $this->db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                        'Unable to bind to missing placeholder: '.$parameter, __FUNCTION__);
+                }
+                $value = $this->values[$parameter];
+                $type = array_key_exists($parameter, $this->types) ? $this->types[$parameter] : null;
+                if (is_resource($value) || $type == 'clob' || $type == 'blob' || $this->db->options['lob_allow_url_include']) {
+                    if (!is_resource($value) && preg_match('/^(\w+:\/\/)(.*)$/', $value, $match)) {
+                        if ($match[1] == 'file://') {
+                            $value = $match[2];
+                        }
+                        $value = @fopen($value, 'r');
+                        $close = true;
+                    }
+                    if (is_resource($value)) {
+                        $data = '';
+                        while (!@feof($value)) {
+                            $data.= @fread($value, $this->db->options['lob_buffer_length']);
+                        }
+                        if ($close) {
+                            @fclose($value);
+                        }
+                        $value = $data;
+                    }
+                }
+                $quoted = $this->db->quote($value, $type, $query);
+                if (PEAR::isError($quoted)) {
+                    return $quoted;
+                }
+                $parameters[] = $quoted;
+            }
+            if ($query) {
+                $query.= ' ('.implode(', ', $parameters).')';
+            }
+        }
+
+        if (!$query) {
+            $result = @pg_execute($connection, $this->statement, $parameters);
+            if (!$result) {
+                $err = $this->db->raiseError(null, null, null,
+                    'Unable to execute statement', __FUNCTION__);
+                return $err;
+            }
+        } else {
+            $result = $this->db->_doQuery($query, $this->is_manip, $connection);
+            if (PEAR::isError($result)) {
+                return $result;
+            }
+        }
+
+        if ($this->is_manip) {
+            $affected_rows = $this->db->_affectedRows($connection, $result);
+            return $affected_rows;
+        }
+
+        $result = $this->db->_wrapResult($result, $this->result_types,
+            $result_class, $result_wrap_class, $this->limit, $this->offset);
+        $this->db->debug($this->query, 'execute', array('is_manip' => $this->is_manip, 'when' => 'post', 'result' => $result));
+        return $result;
+    }
+
+    // }}}
+    // {{{ free()
+
+    /**
+     * Release resources allocated for the specified prepared query.
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function free()
+    {
+        if (null === $this->positions) {
+            return $this->db->raiseError(MDB2_ERROR, null, null,
+                'Prepared statement has already been freed', __FUNCTION__);
+        }
+        $result = MDB2_OK;
+
+        if (null !== $this->statement) {
+            $connection = $this->db->getConnection();
+            if (PEAR::isError($connection)) {
+                return $connection;
+            }
+            $query = 'DEALLOCATE PREPARE '.$this->statement;
+            $result = $this->db->_doQuery($query, true, $connection);
+        }
+
+        parent::free();
+        return $result;
+    }
+}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/sqlite.php b/program/lib/MDB2/Driver/sqlite.php
new file mode 100644 (file)
index 0000000..e1726b0
--- /dev/null
@@ -0,0 +1,1093 @@
+<?php
+// vim: set et ts=4 sw=4 fdm=marker:
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2008 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Lukas Smith <smith@pooteeweet.org>                           |
+// +----------------------------------------------------------------------+
+//
+// $Id: sqlite.php 295587 2010-02-28 17:16:38Z quipo $
+//
+
+/**
+ * MDB2 SQLite driver
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Driver_sqlite extends MDB2_Driver_Common
+{
+    // {{{ properties
+    var $string_quoting = array('start' => "'", 'end' => "'", 'escape' => "'", 'escape_pattern' => false);
+
+    var $identifier_quoting = array('start' => '"', 'end' => '"', 'escape' => '"');
+
+    var $_lasterror = '';
+
+    var $fix_assoc_fields_names = false;
+
+    // }}}
+    // {{{ constructor
+
+    /**
+     * Constructor
+     */
+    function __construct()
+    {
+        parent::__construct();
+
+        $this->phptype = 'sqlite';
+        $this->dbsyntax = 'sqlite';
+
+        $this->supported['sequences'] = 'emulated';
+        $this->supported['indexes'] = true;
+        $this->supported['affected_rows'] = true;
+        $this->supported['summary_functions'] = true;
+        $this->supported['order_by_text'] = true;
+        $this->supported['current_id'] = 'emulated';
+        $this->supported['limit_queries'] = true;
+        $this->supported['LOBs'] = true;
+        $this->supported['replace'] = true;
+        $this->supported['transactions'] = true;
+        $this->supported['savepoints'] = false;
+        $this->supported['sub_selects'] = true;
+        $this->supported['triggers'] = true;
+        $this->supported['auto_increment'] = true;
+        $this->supported['primary_key'] = false; // requires alter table implementation
+        $this->supported['result_introspection'] = false; // not implemented
+        $this->supported['prepared_statements'] = 'emulated';
+        $this->supported['identifier_quoting'] = true;
+        $this->supported['pattern_escaping'] = false;
+        $this->supported['new_link'] = false;
+
+        $this->options['DBA_username'] = false;
+        $this->options['DBA_password'] = false;
+        $this->options['base_transaction_name'] = '___php_MDB2_sqlite_auto_commit_off';
+        $this->options['fixed_float'] = 0;
+        $this->options['database_path'] = '';
+        $this->options['database_extension'] = '';
+        $this->options['server_version'] = '';
+        $this->options['max_identifiers_length'] = 128; //no real limit
+    }
+
+    // }}}
+    // {{{ errorInfo()
+
+    /**
+     * This method is used to collect information about an error
+     *
+     * @param integer $error
+     * @return array
+     * @access public
+     */
+    function errorInfo($error = null)
+    {
+        $native_code = null;
+        if ($this->connection) {
+            $native_code = @sqlite_last_error($this->connection);
+        }
+        $native_msg = $this->_lasterror
+            ? html_entity_decode($this->_lasterror) : @sqlite_error_string($native_code);
+            
+        // PHP 5.2+ prepends the function name to $php_errormsg, so we need
+        // this hack to work around it, per bug #9599.
+        $native_msg = preg_replace('/^sqlite[a-z_]+\(\)[^:]*: /', '', $native_msg);
+
+        if (null === $error) {
+            static $error_regexps;
+            if (empty($error_regexps)) {
+                $error_regexps = array(
+                    '/^no such table:/' => MDB2_ERROR_NOSUCHTABLE,
+                    '/^no such index:/' => MDB2_ERROR_NOT_FOUND,
+                    '/^(table|index) .* already exists$/' => MDB2_ERROR_ALREADY_EXISTS,
+                    '/PRIMARY KEY must be unique/i' => MDB2_ERROR_CONSTRAINT,
+                    '/is not unique/' => MDB2_ERROR_CONSTRAINT,
+                    '/columns .* are not unique/i' => MDB2_ERROR_CONSTRAINT,
+                    '/uniqueness constraint failed/' => MDB2_ERROR_CONSTRAINT,
+                    '/may not be NULL/' => MDB2_ERROR_CONSTRAINT_NOT_NULL,
+                    '/^no such column:/' => MDB2_ERROR_NOSUCHFIELD,
+                    '/no column named/' => MDB2_ERROR_NOSUCHFIELD,
+                    '/column not present in both tables/i' => MDB2_ERROR_NOSUCHFIELD,
+                    '/^near ".*": syntax error$/' => MDB2_ERROR_SYNTAX,
+                    '/[0-9]+ values for [0-9]+ columns/i' => MDB2_ERROR_VALUE_COUNT_ON_ROW,
+                 );
+            }
+            foreach ($error_regexps as $regexp => $code) {
+                if (preg_match($regexp, $native_msg)) {
+                    $error = $code;
+                    break;
+                }
+            }
+        }
+        return array($error, $native_code, $native_msg);
+    }
+
+    // }}}
+    // {{{ escape()
+
+    /**
+     * Quotes a string so it can be safely used in a query. It will quote
+     * the text so it can safely be used within a query.
+     *
+     * @param   string  the input string to quote
+     * @param   bool    escape wildcards
+     *
+     * @return  string  quoted string
+     *
+     * @access  public
+     */
+    function escape($text, $escape_wildcards = false)
+    {
+        $text = @sqlite_escape_string($text);
+        return $text;
+    }
+
+    // }}}
+    // {{{ beginTransaction()
+
+    /**
+     * Start a transaction or set a savepoint.
+     *
+     * @param   string  name of a savepoint to set
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  public
+     */
+    function beginTransaction($savepoint = null)
+    {
+        $this->debug('Starting transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint));
+        if (null !== $savepoint) {
+            return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                'savepoints are not supported', __FUNCTION__);
+        }
+        if ($this->in_transaction) {
+            return MDB2_OK;  //nothing to do
+        }
+        if (!$this->destructor_registered && $this->opened_persistent) {
+            $this->destructor_registered = true;
+            register_shutdown_function('MDB2_closeOpenTransactions');
+        }
+        $query = 'BEGIN TRANSACTION '.$this->options['base_transaction_name'];
+        $result = $this->_doQuery($query, true);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        $this->in_transaction = true;
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ commit()
+
+    /**
+     * Commit the database changes done during a transaction that is in
+     * progress or release a savepoint. This function may only be called when
+     * auto-committing is disabled, otherwise it will fail. Therefore, a new
+     * transaction is implicitly started after committing the pending changes.
+     *
+     * @param   string  name of a savepoint to release
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  public
+     */
+    function commit($savepoint = null)
+    {
+        $this->debug('Committing transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint));
+        if (!$this->in_transaction) {
+            return $this->raiseError(MDB2_ERROR_INVALID, null, null,
+                'commit/release savepoint cannot be done changes are auto committed', __FUNCTION__);
+        }
+        if (null !== $savepoint) {
+            return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                'savepoints are not supported', __FUNCTION__);
+        }
+
+        $query = 'COMMIT TRANSACTION '.$this->options['base_transaction_name'];
+        $result = $this->_doQuery($query, true);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        $this->in_transaction = false;
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{
+
+    /**
+     * Cancel any database changes done during a transaction or since a specific
+     * savepoint that is in progress. This function may only be called when
+     * auto-committing is disabled, otherwise it will fail. Therefore, a new
+     * transaction is implicitly started after canceling the pending changes.
+     *
+     * @param   string  name of a savepoint to rollback to
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  public
+     */
+    function rollback($savepoint = null)
+    {
+        $this->debug('Rolling back transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint));
+        if (!$this->in_transaction) {
+            return $this->raiseError(MDB2_ERROR_INVALID, null, null,
+                'rollback cannot be done changes are auto committed', __FUNCTION__);
+        }
+        if (null !== $savepoint) {
+            return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                'savepoints are not supported', __FUNCTION__);
+        }
+
+        $query = 'ROLLBACK TRANSACTION '.$this->options['base_transaction_name'];
+        $result = $this->_doQuery($query, true);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        $this->in_transaction = false;
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ function setTransactionIsolation()
+
+    /**
+     * Set the transacton isolation level.
+     *
+     * @param   string  standard isolation level
+     *                  READ UNCOMMITTED (allows dirty reads)
+     *                  READ COMMITTED (prevents dirty reads)
+     *                  REPEATABLE READ (prevents nonrepeatable reads)
+     *                  SERIALIZABLE (prevents phantom reads)
+     * @param   array some transaction options:
+     *                  'wait' => 'WAIT' | 'NO WAIT'
+     *                  'rw'   => 'READ WRITE' | 'READ ONLY'
+     *
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure
+     *
+     * @access  public
+     * @since   2.1.1
+     */
+    function setTransactionIsolation($isolation, $options = array())
+    {
+        $this->debug('Setting transaction isolation level', __FUNCTION__, array('is_manip' => true));
+        switch ($isolation) {
+        case 'READ UNCOMMITTED':
+            $isolation = 0;
+            break;
+        case 'READ COMMITTED':
+        case 'REPEATABLE READ':
+        case 'SERIALIZABLE':
+            $isolation = 1;
+            break;
+        default:
+            return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                'isolation level is not supported: '.$isolation, __FUNCTION__);
+        }
+
+        $query = "PRAGMA read_uncommitted=$isolation";
+        return $this->_doQuery($query, true);
+    }
+
+    // }}}
+    // {{{ getDatabaseFile()
+
+    /**
+     * Builds the string with path+dbname+extension
+     *
+     * @return string full database path+file
+     * @access protected
+     */
+    function _getDatabaseFile($database_name)
+    {
+        if ($database_name === '' || $database_name === ':memory:') {
+            return $database_name;
+        }
+        return $this->options['database_path'].$database_name.$this->options['database_extension'];
+    }
+
+    // }}}
+    // {{{ connect()
+
+    /**
+     * Connect to the database
+     *
+     * @return true on success, MDB2 Error Object on failure
+     **/
+    function connect()
+    {
+        $database_file = $this->_getDatabaseFile($this->database_name);
+        if (is_resource($this->connection)) {
+            //if (count(array_diff($this->connected_dsn, $this->dsn)) == 0
+            if (MDB2::areEquals($this->connected_dsn, $this->dsn)
+                && $this->connected_database_name == $database_file
+                && $this->opened_persistent == $this->options['persistent']
+            ) {
+                return MDB2_OK;
+            }
+            $this->disconnect(false);
+        }
+
+        if (!PEAR::loadExtension($this->phptype)) {
+            return $this->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                'extension '.$this->phptype.' is not compiled into PHP', __FUNCTION__);
+        }
+
+        if (empty($this->database_name)) {
+            return $this->raiseError(MDB2_ERROR_CONNECT_FAILED, null, null,
+            'unable to establish a connection', __FUNCTION__);
+        }
+
+        if ($database_file !== ':memory:') {
+            if (!file_exists($database_file)) {
+                if (!touch($database_file)) {
+                    return $this->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                        'Could not create database file', __FUNCTION__);
+                }
+                if (!isset($this->dsn['mode'])
+                    || !is_numeric($this->dsn['mode'])
+                ) {
+                    $mode = 0644;
+                } else {
+                    $mode = octdec($this->dsn['mode']);
+                }
+                if (!chmod($database_file, $mode)) {
+                    return $this->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                        'Could not be chmodded database file', __FUNCTION__);
+                }
+                if (!file_exists($database_file)) {
+                    return $this->raiseError(MDB2_ERROR_NOT_FOUND, null, null,
+                        'Could not be found database file', __FUNCTION__);
+                }
+            }
+            if (!is_file($database_file)) {
+                return $this->raiseError(MDB2_ERROR_INVALID, null, null,
+                        'Database is a directory name', __FUNCTION__);
+            }
+            if (!is_readable($database_file)) {
+                return $this->raiseError(MDB2_ERROR_ACCESS_VIOLATION, null, null,
+                        'Could not read database file', __FUNCTION__);
+            }
+        }
+
+        $connect_function = ($this->options['persistent'] ? 'sqlite_popen' : 'sqlite_open');
+        $php_errormsg = '';
+        if (version_compare('5.1.0', PHP_VERSION, '>')) {
+            @ini_set('track_errors', true);
+            $connection = @$connect_function($database_file);
+            @ini_restore('track_errors');
+        } else {
+            $connection = @$connect_function($database_file, 0666, $php_errormsg);
+        }
+        $this->_lasterror = $php_errormsg;
+        if (!$connection) {
+            return $this->raiseError(MDB2_ERROR_CONNECT_FAILED, null, null,
+            'unable to establish a connection', __FUNCTION__);
+        }
+
+        if ($this->fix_assoc_fields_names ||
+            $this->options['portability'] & MDB2_PORTABILITY_FIX_ASSOC_FIELD_NAMES)
+        {
+            @sqlite_query("PRAGMA short_column_names = 1", $connection);
+            $this->fix_assoc_fields_names = true;
+        }
+
+        $this->connection = $connection;
+        $this->connected_dsn = $this->dsn;
+        $this->connected_database_name = $database_file;
+        $this->opened_persistent = $this->getoption('persistent');
+        $this->dbsyntax = $this->dsn['dbsyntax'] ? $this->dsn['dbsyntax'] : $this->phptype;
+
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ databaseExists()
+
+    /**
+     * check if given database name is exists?
+     *
+     * @param string $name    name of the database that should be checked
+     *
+     * @return mixed true/false on success, a MDB2 error on failure
+     * @access public
+     */
+    function databaseExists($name)
+    {
+        $database_file = $this->_getDatabaseFile($name);
+        $result = file_exists($database_file);
+        return $result;
+    }
+
+    // }}}
+    // {{{ disconnect()
+
+    /**
+     * Log out and disconnect from the database.
+     *
+     * @param  boolean $force if the disconnect should be forced even if the
+     *                        connection is opened persistently
+     * @return mixed true on success, false if not connected and error
+     *                object on error
+     * @access public
+     */
+    function disconnect($force = true)
+    {
+        if (is_resource($this->connection)) {
+            if ($this->in_transaction) {
+                $dsn = $this->dsn;
+                $database_name = $this->database_name;
+                $persistent = $this->options['persistent'];
+                $this->dsn = $this->connected_dsn;
+                $this->database_name = $this->connected_database_name;
+                $this->options['persistent'] = $this->opened_persistent;
+                $this->rollback();
+                $this->dsn = $dsn;
+                $this->database_name = $database_name;
+                $this->options['persistent'] = $persistent;
+            }
+
+            if (!$this->opened_persistent || $force) {
+                @sqlite_close($this->connection);
+            }
+        } else {
+            return false;
+        }
+        return parent::disconnect($force);
+    }
+
+    // }}}
+    // {{{ _doQuery()
+
+    /**
+     * Execute a query
+     * @param string $query  query
+     * @param boolean $is_manip  if the query is a manipulation query
+     * @param resource $connection
+     * @param string $database_name
+     * @return result or error object
+     * @access protected
+     */
+    function _doQuery($query, $is_manip = false, $connection = null, $database_name = null)
+    {
+        $this->last_query = $query;
+        $result = $this->debug($query, 'query', array('is_manip' => $is_manip, 'when' => 'pre'));
+        if ($result) {
+            if (PEAR::isError($result)) {
+                return $result;
+            }
+            $query = $result;
+        }
+        if ($this->options['disable_query']) {
+            $result = $is_manip ? 0 : null;
+            return $result;
+        }
+
+        if (null === $connection) {
+            $connection = $this->getConnection();
+            if (PEAR::isError($connection)) {
+                return $connection;
+            }
+        }
+
+        $function = $this->options['result_buffering']
+            ? 'sqlite_query' : 'sqlite_unbuffered_query';
+        $php_errormsg = '';
+        if (version_compare('5.1.0', PHP_VERSION, '>')) {
+            @ini_set('track_errors', true);
+            do {
+                $result = @$function($query.';', $connection);
+            } while (sqlite_last_error($connection) == SQLITE_SCHEMA);
+            @ini_restore('track_errors');
+        } else {
+            do {
+                $result = @$function($query.';', $connection, SQLITE_BOTH, $php_errormsg);
+            } while (sqlite_last_error($connection) == SQLITE_SCHEMA);
+        }
+        $this->_lasterror = $php_errormsg;
+
+        if (!$result) {
+            $code = null;
+            if (0 === strpos($this->_lasterror, 'no such table')) {
+                $code = MDB2_ERROR_NOSUCHTABLE;
+            }
+            $err = $this->raiseError($code, null, null,
+                'Could not execute statement', __FUNCTION__);
+            return $err;
+        }
+
+        $this->debug($query, 'query', array('is_manip' => $is_manip, 'when' => 'post', 'result' => $result));
+        return $result;
+    }
+
+    // }}}
+    // {{{ _affectedRows()
+
+    /**
+     * Returns the number of rows affected
+     *
+     * @param resource $result
+     * @param resource $connection
+     * @return mixed MDB2 Error Object or the number of rows affected
+     * @access private
+     */
+    function _affectedRows($connection, $result = null)
+    {
+        if (null === $connection) {
+            $connection = $this->getConnection();
+            if (PEAR::isError($connection)) {
+                return $connection;
+            }
+        }
+        return @sqlite_changes($connection);
+    }
+
+    // }}}
+    // {{{ _modifyQuery()
+
+    /**
+     * Changes a query string for various DBMS specific reasons
+     *
+     * @param string $query  query to modify
+     * @param boolean $is_manip  if it is a DML query
+     * @param integer $limit  limit the number of rows
+     * @param integer $offset  start reading from given offset
+     * @return string modified query
+     * @access protected
+     */
+    function _modifyQuery($query, $is_manip, $limit, $offset)
+    {
+        if ($this->options['portability'] & MDB2_PORTABILITY_DELETE_COUNT) {
+            if (preg_match('/^\s*DELETE\s+FROM\s+(\S+)\s*$/i', $query)) {
+                $query = preg_replace('/^\s*DELETE\s+FROM\s+(\S+)\s*$/',
+                                      'DELETE FROM \1 WHERE 1=1', $query);
+            }
+        }
+        if ($limit > 0
+            && !preg_match('/LIMIT\s*\d(?:\s*(?:,|OFFSET)\s*\d+)?(?:[^\)]*)?$/i', $query)
+        ) {
+            $query = rtrim($query);
+            if (substr($query, -1) == ';') {
+                $query = substr($query, 0, -1);
+            }
+            if ($is_manip) {
+                $query.= " LIMIT $limit";
+            } else {
+                $query.= " LIMIT $offset,$limit";
+            }
+        }
+        return $query;
+    }
+
+    // }}}
+    // {{{ getServerVersion()
+
+    /**
+     * return version information about the server
+     *
+     * @param bool   $native  determines if the raw version string should be returned
+     * @return mixed array/string with version information or MDB2 error object
+     * @access public
+     */
+    function getServerVersion($native = false)
+    {
+        $server_info = false;
+        if ($this->connected_server_info) {
+            $server_info = $this->connected_server_info;
+        } elseif ($this->options['server_version']) {
+            $server_info = $this->options['server_version'];
+        } elseif (function_exists('sqlite_libversion')) {
+            $server_info = @sqlite_libversion();
+        }
+        if (!$server_info) {
+            return $this->raiseError(MDB2_ERROR_UNSUPPORTED, null, null,
+                'Requires either the "server_version" option or the sqlite_libversion() function', __FUNCTION__);
+        }
+        // cache server_info
+        $this->connected_server_info = $server_info;
+        if (!$native) {
+            $tmp = explode('.', $server_info, 3);
+            $server_info = array(
+                'major' => isset($tmp[0]) ? $tmp[0] : null,
+                'minor' => isset($tmp[1]) ? $tmp[1] : null,
+                'patch' => isset($tmp[2]) ? $tmp[2] : null,
+                'extra' => null,
+                'native' => $server_info,
+            );
+        }
+        return $server_info;
+    }
+
+    // }}}
+    // {{{ replace()
+
+    /**
+     * Execute a SQL REPLACE query. A REPLACE query is identical to a INSERT
+     * query, except that if there is already a row in the table with the same
+     * key field values, the old row is deleted before the new row is inserted.
+     *
+     * The REPLACE type of query does not make part of the SQL standards. Since
+     * practically only SQLite implements it natively, this type of query is
+     * emulated through this method for other DBMS using standard types of
+     * queries inside a transaction to assure the atomicity of the operation.
+     *
+     * @access public
+     *
+     * @param string $table name of the table on which the REPLACE query will
+     *  be executed.
+     * @param array $fields associative array that describes the fields and the
+     *  values that will be inserted or updated in the specified table. The
+     *  indexes of the array are the names of all the fields of the table. The
+     *  values of the array are also associative arrays that describe the
+     *  values and other properties of the table fields.
+     *
+     *  Here follows a list of field properties that need to be specified:
+     *
+     *    value:
+     *          Value to be assigned to the specified field. This value may be
+     *          of specified in database independent type format as this
+     *          function can perform the necessary datatype conversions.
+     *
+     *    Default:
+     *          this property is required unless the Null property
+     *          is set to 1.
+     *
+     *    type
+     *          Name of the type of the field. Currently, all types Metabase
+     *          are supported except for clob and blob.
+     *
+     *    Default: no type conversion
+     *
+     *    null
+     *          Boolean property that indicates that the value for this field
+     *          should be set to null.
+     *
+     *          The default value for fields missing in INSERT queries may be
+     *          specified the definition of a table. Often, the default value
+     *          is already null, but since the REPLACE may be emulated using
+     *          an UPDATE query, make sure that all fields of the table are
+     *          listed in this function argument array.
+     *
+     *    Default: 0
+     *
+     *    key
+     *          Boolean property that indicates that this field should be
+     *          handled as a primary key or at least as part of the compound
+     *          unique index of the table that will determine the row that will
+     *          updated if it exists or inserted a new row otherwise.
+     *
+     *          This function will fail if no key field is specified or if the
+     *          value of a key field is set to null because fields that are
+     *          part of unique index they may not be null.
+     *
+     *    Default: 0
+     *
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     */
+    function replace($table, $fields)
+    {
+        $count = count($fields);
+        $query = $values = '';
+        $keys = $colnum = 0;
+        for (reset($fields); $colnum < $count; next($fields), $colnum++) {
+            $name = key($fields);
+            if ($colnum > 0) {
+                $query .= ',';
+                $values.= ',';
+            }
+            $query.= $this->quoteIdentifier($name, true);
+            if (isset($fields[$name]['null']) && $fields[$name]['null']) {
+                $value = 'NULL';
+            } else {
+                $type = isset($fields[$name]['type']) ? $fields[$name]['type'] : null;
+                $value = $this->quote($fields[$name]['value'], $type);
+                if (PEAR::isError($value)) {
+                    return $value;
+                }
+            }
+            $values.= $value;
+            if (isset($fields[$name]['key']) && $fields[$name]['key']) {
+                if ($value === 'NULL') {
+                    return $this->raiseError(MDB2_ERROR_CANNOT_REPLACE, null, null,
+                        'key value '.$name.' may not be NULL', __FUNCTION__);
+                }
+                $keys++;
+            }
+        }
+        if ($keys == 0) {
+            return $this->raiseError(MDB2_ERROR_CANNOT_REPLACE, null, null,
+                'not specified which fields are keys', __FUNCTION__);
+        }
+
+        $connection = $this->getConnection();
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+
+        $table = $this->quoteIdentifier($table, true);
+        $query = "REPLACE INTO $table ($query) VALUES ($values)";
+        $result = $this->_doQuery($query, true, $connection);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        return $this->_affectedRows($connection, $result);
+    }
+
+    // }}}
+    // {{{ nextID()
+
+    /**
+     * Returns the next free id of a sequence
+     *
+     * @param string $seq_name name of the sequence
+     * @param boolean $ondemand when true the sequence is
+     *                          automatic created, if it
+     *                          not exists
+     *
+     * @return mixed MDB2 Error Object or id
+     * @access public
+     */
+    function nextID($seq_name, $ondemand = true)
+    {
+        $sequence_name = $this->quoteIdentifier($this->getSequenceName($seq_name), true);
+        $seqcol_name = $this->options['seqcol_name'];
+        $query = "INSERT INTO $sequence_name ($seqcol_name) VALUES (NULL)";
+        $this->pushErrorHandling(PEAR_ERROR_RETURN);
+        $this->expectError(MDB2_ERROR_NOSUCHTABLE);
+        $result = $this->_doQuery($query, true);
+        $this->popExpect();
+        $this->popErrorHandling();
+        if (PEAR::isError($result)) {
+            if ($ondemand && $result->getCode() == MDB2_ERROR_NOSUCHTABLE) {
+                $this->loadModule('Manager', null, true);
+                $result = $this->manager->createSequence($seq_name);
+                if (PEAR::isError($result)) {
+                    return $this->raiseError($result, null, null,
+                        'on demand sequence '.$seq_name.' could not be created', __FUNCTION__);
+                } else {
+                    return $this->nextID($seq_name, false);
+                }
+            }
+            return $result;
+        }
+        $value = $this->lastInsertID();
+        if (is_numeric($value)) {
+            $query = "DELETE FROM $sequence_name WHERE $seqcol_name < $value";
+            $result = $this->_doQuery($query, true);
+            if (PEAR::isError($result)) {
+                $this->warnings[] = 'nextID: could not delete previous sequence table values from '.$seq_name;
+            }
+        }
+        return $value;
+    }
+
+    // }}}
+    // {{{ lastInsertID()
+
+    /**
+     * Returns the autoincrement ID if supported or $id or fetches the current
+     * ID in a sequence called: $table.(empty($field) ? '' : '_'.$field)
+     *
+     * @param string $table name of the table into which a new row was inserted
+     * @param string $field name of the field into which a new row was inserted
+     * @return mixed MDB2 Error Object or id
+     * @access public
+     */
+    function lastInsertID($table = null, $field = null)
+    {
+        $connection = $this->getConnection();
+        if (PEAR::isError($connection)) {
+            return $connection;
+        }
+        $value = @sqlite_last_insert_rowid($connection);
+        if (!$value) {
+            return $this->raiseError(null, null, null,
+                'Could not get last insert ID', __FUNCTION__);
+        }
+        return $value;
+    }
+
+    // }}}
+    // {{{ currID()
+
+    /**
+     * Returns the current id of a sequence
+     *
+     * @param string $seq_name name of the sequence
+     * @return mixed MDB2 Error Object or id
+     * @access public
+     */
+    function currID($seq_name)
+    {
+        $sequence_name = $this->quoteIdentifier($this->getSequenceName($seq_name), true);
+        $seqcol_name = $this->quoteIdentifier($this->options['seqcol_name'], true);
+        $query = "SELECT MAX($seqcol_name) FROM $sequence_name";
+        return $this->queryOne($query, 'integer');
+    }
+}
+
+/**
+ * MDB2 SQLite result driver
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Result_sqlite extends MDB2_Result_Common
+{
+    // }}}
+    // {{{ fetchRow()
+
+    /**
+     * Fetch a row and insert the data into an existing array.
+     *
+     * @param int       $fetchmode  how the array data should be indexed
+     * @param int    $rownum    number of the row where the data can be found
+     * @return int data array on success, a MDB2 error on failure
+     * @access public
+     */
+    function fetchRow($fetchmode = MDB2_FETCHMODE_DEFAULT, $rownum = null)
+    {
+        if (null !== $rownum) {
+            $seek = $this->seek($rownum);
+            if (PEAR::isError($seek)) {
+                return $seek;
+            }
+        }
+        if ($fetchmode == MDB2_FETCHMODE_DEFAULT) {
+            $fetchmode = $this->db->fetchmode;
+        }
+        if ($fetchmode & MDB2_FETCHMODE_ASSOC) {
+            $row = @sqlite_fetch_array($this->result, SQLITE_ASSOC);
+            if (is_array($row)
+                && $this->db->options['portability'] & MDB2_PORTABILITY_FIX_CASE
+            ) {
+                $row = array_change_key_case($row, $this->db->options['field_case']);
+            }
+        } else {
+           $row = @sqlite_fetch_array($this->result, SQLITE_NUM);
+        }
+        if (!$row) {
+            if (false === $this->result) {
+                $err = $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
+                    'resultset has already been freed', __FUNCTION__);
+                return $err;
+            }
+            return null;
+        }
+        $mode = $this->db->options['portability'] & MDB2_PORTABILITY_EMPTY_TO_NULL;
+        $rtrim = false;
+        if ($this->db->options['portability'] & MDB2_PORTABILITY_RTRIM) {
+            if (empty($this->types)) {
+                $mode += MDB2_PORTABILITY_RTRIM;
+            } else {
+                $rtrim = true;
+            }
+        }
+        if ($mode) {
+            $this->db->_fixResultArrayValues($row, $mode);
+        }
+        if (!empty($this->types)) {
+            $row = $this->db->datatype->convertResultRow($this->types, $row, $rtrim);
+        }
+        if (!empty($this->values)) {
+            $this->_assignBindColumns($row);
+        }
+        if ($fetchmode === MDB2_FETCHMODE_OBJECT) {
+            $object_class = $this->db->options['fetch_class'];
+            if ($object_class == 'stdClass') {
+                $row = (object) $row;
+            } else {
+                $rowObj = new $object_class($row);
+                $row = $rowObj;
+            }
+        }
+        ++$this->rownum;
+        return $row;
+    }
+
+    // }}}
+    // {{{ _getColumnNames()
+
+    /**
+     * Retrieve the names of columns returned by the DBMS in a query result.
+     *
+     * @return  mixed   Array variable that holds the names of columns as keys
+     *                  or an MDB2 error on failure.
+     *                  Some DBMS may not return any columns when the result set
+     *                  does not contain any rows.
+     * @access private
+     */
+    function _getColumnNames()
+    {
+        $columns = array();
+        $numcols = $this->numCols();
+        if (PEAR::isError($numcols)) {
+            return $numcols;
+        }
+        for ($column = 0; $column < $numcols; $column++) {
+            $column_name = @sqlite_field_name($this->result, $column);
+            $columns[$column_name] = $column;
+        }
+        if ($this->db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {
+            $columns = array_change_key_case($columns, $this->db->options['field_case']);
+        }
+        return $columns;
+    }
+
+    // }}}
+    // {{{ numCols()
+
+    /**
+     * Count the number of columns returned by the DBMS in a query result.
+     *
+     * @access public
+     * @return mixed integer value with the number of columns, a MDB2 error
+     *                       on failure
+     */
+    function numCols()
+    {
+        $cols = @sqlite_num_fields($this->result);
+        if (null === $cols) {
+            if (false === $this->result) {
+                return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
+                    'resultset has already been freed', __FUNCTION__);
+            }
+            if (null === $this->result) {
+                return count($this->types);
+            }
+            return $this->db->raiseError(null, null, null,
+                'Could not get column count', __FUNCTION__);
+        }
+        return $cols;
+    }
+}
+
+/**
+ * MDB2 SQLite buffered result driver
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_BufferedResult_sqlite extends MDB2_Result_sqlite
+{
+    // {{{ seek()
+
+    /**
+     * Seek to a specific row in a result set
+     *
+     * @param int    $rownum    number of the row where the data can be found
+     * @return mixed MDB2_OK on success, a MDB2 error on failure
+     * @access public
+     */
+    function seek($rownum = 0)
+    {
+        if (!@sqlite_seek($this->result, $rownum)) {
+            if (false === $this->result) {
+                return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
+                    'resultset has already been freed', __FUNCTION__);
+            }
+            if (null === $this->result) {
+                return MDB2_OK;
+            }
+            return $this->db->raiseError(MDB2_ERROR_INVALID, null, null,
+                'tried to seek to an invalid row number ('.$rownum.')', __FUNCTION__);
+        }
+        $this->rownum = $rownum - 1;
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ valid()
+
+    /**
+     * Check if the end of the result set has been reached
+     *
+     * @return mixed true or false on sucess, a MDB2 error on failure
+     * @access public
+     */
+    function valid()
+    {
+        $numrows = $this->numRows();
+        if (PEAR::isError($numrows)) {
+            return $numrows;
+        }
+        return $this->rownum < ($numrows - 1);
+    }
+
+    // }}}
+    // {{{ numRows()
+
+    /**
+     * Returns the number of rows in a result object
+     *
+     * @return mixed MDB2 Error Object or the number of rows
+     * @access public
+     */
+    function numRows()
+    {
+        $rows = @sqlite_num_rows($this->result);
+        if (null === $rows) {
+            if (false === $this->result) {
+                return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
+                    'resultset has already been freed', __FUNCTION__);
+            }
+            if (null === $this->result) {
+                return 0;
+            }
+            return $this->db->raiseError(null, null, null,
+                'Could not get row count', __FUNCTION__);
+        }
+        return $rows;
+    }
+}
+
+/**
+ * MDB2 SQLite statement driver
+ *
+ * @package MDB2
+ * @category Database
+ * @author  Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Statement_sqlite extends MDB2_Statement_Common
+{
+
+}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Driver/sqlsrv.php b/program/lib/MDB2/Driver/sqlsrv.php
new file mode 100644 (file)
index 0000000..70f9780
--- /dev/null
@@ -0,0 +1,1161 @@
+<?php\r
+// vim: set et ts=4 sw=4 fdm=marker:\r
+// +----------------------------------------------------------------------+\r
+// | PHP versions 4 and 5                                                 |\r
+// +----------------------------------------------------------------------+\r
+// | Copyright (c) 1998-2008 Manuel Lemos, Tomas V.V.Cox,                 |\r
+// | Stig. S. Bakken, Lukas Smith, Frank M. Kromann                       |\r
+// | All rights reserved.                                                 |\r
+// +----------------------------------------------------------------------+\r
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |\r
+// | API as well as database abstraction for PHP applications.            |\r
+// | This LICENSE is in the BSD license style.                            |\r
+// |                                                                      |\r
+// | Redistribution and use in source and binary forms, with or without   |\r
+// | modification, are permitted provided that the following conditions   |\r
+// | are met:                                                             |\r
+// |                                                                      |\r
+// | Redistributions of source code must retain the above copyright       |\r
+// | notice, this list of conditions and the following disclaimer.        |\r
+// |                                                                      |\r
+// | Redistributions in binary form must reproduce the above copyright    |\r
+// | notice, this list of conditions and the following disclaimer in the  |\r
+// | documentation and/or other materials provided with the distribution. |\r
+// |                                                                      |\r
+// | Neither the name of Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |\r
+// | Lukas Smith nor the names of his contributors may be used to endorse |\r
+// | or promote products derived from this software without specific prior|\r
+// | written permission.                                                  |\r
+// |                                                                      |\r
+// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS  |\r
+// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT    |\r
+// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS    |\r
+// | FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE      |\r
+// | REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,          |\r
+// | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, |\r
+// | BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS|\r
+// |  OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED  |\r
+// | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT          |\r
+// | LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY|\r
+// | WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE          |\r
+// | POSSIBILITY OF SUCH DAMAGE.                                          |\r
+// +----------------------------------------------------------------------+\r
+// | Author: Frank M. Kromann <frank@kromann.info>                        |\r
+// +----------------------------------------------------------------------+\r
+// {{{ Class MDB2_Driver_sqlsrv\r
+/**\r
+ * MDB2 MSSQL Server (native) driver\r
+ *\r
+ * @package MDB2\r
+ * @category Database\r
+ */\r
+class MDB2_Driver_sqlsrv extends MDB2_Driver_Common\r
+{\r
+    // {{{ properties\r
+\r
+    var $string_quoting = array('start' => "'", 'end' => "'", 'escape' => "'", 'escape_pattern' => false);\r
+\r
+    var $identifier_quoting = array('start' => '[', 'end' => ']', 'escape' => ']');\r
+       \r
+       var $connection = null;\r
+\r
+    // }}}\r
+    // {{{ constructor\r
+\r
+    /**\r
+     * Constructor\r
+     */\r
+    function __construct()\r
+    {\r
+        parent::__construct();\r
+\r
+        $this->phptype = 'sqlsrv';\r
+        $this->dbsyntax = 'sqlsrv';\r
+\r
+        $this->supported['sequences'] = 'emulated';\r
+        $this->supported['indexes'] = true;\r
+        $this->supported['affected_rows'] = true;\r
+        $this->supported['summary_functions'] = true;\r
+        $this->supported['transactions'] = true;\r
+        $this->supported['order_by_text'] = true;\r
+        $this->supported['savepoints'] = false;\r
+        $this->supported['current_id'] = 'emulated';\r
+        $this->supported['limit_queries'] = 'emulated';\r
+        $this->supported['LOBs'] = true;\r
+        $this->supported['replace'] = 'emulated';\r
+        $this->supported['sub_selects'] = true;\r
+        $this->supported['triggers'] = true;\r
+        $this->supported['auto_increment'] = true;\r
+        $this->supported['primary_key'] = true;\r
+        $this->supported['result_introspection'] = true;\r
+        $this->supported['prepared_statements'] = 'emulated';\r
+        $this->supported['identifier_quoting'] = false;\r
+        $this->supported['pattern_escaping'] = true;\r
+        $this->supported['new_link'] = true;\r
+\r
+        $this->options['DBA_username'] = false;\r
+        $this->options['DBA_password'] = false;\r
+        $this->options['database_device'] = false;\r
+        $this->options['database_size'] = false;\r
+        $this->options['max_identifiers_length'] = 128; // MS Access: 64\r
+    }\r
+\r
+    // }}}\r
+    // {{{ errorInfo()\r
+\r
+    /**\r
+     * This method is used to collect information about an error\r
+     *\r
+     * @param integer $error\r
+     * @return array\r
+     * @access public\r
+     */\r
+    function errorInfo($error = null, $connection = null)\r
+    {\r
+        if (null === $connection) {\r
+            $connection = $this->connection;\r
+        }\r
+\r
+        $native_code = null;\r
+        $native_msg  = null;\r
+        if ($connection) {\r
+                       $retErrors = sqlsrv_errors(SQLSRV_ERR_ALL);  \r
+                       if ($retErrors !== null) {\r
+                               foreach ($retErrors as $arrError) {\r
+                                       $native_msg .= "SQLState: ".$arrError[ 'SQLSTATE']."\n";  \r
+                                       $native_msg .= "Error Code: ".$arrError[ 'code']."\n";  \r
+                                       $native_msg .= "Message: ".$arrError[ 'message']."\n";  \r
+                                       $native_code = $arrError[ 'code'];\r
+                               }  \r
+                       }                       \r
+        }\r
+        if (null === $error) {\r
+            static $ecode_map;\r
+            if (empty($ecode_map)) {\r
+                $ecode_map = array(\r
+                    102   => MDB2_ERROR_SYNTAX,\r
+                    110   => MDB2_ERROR_VALUE_COUNT_ON_ROW,\r
+                    155   => MDB2_ERROR_NOSUCHFIELD,\r
+                    156   => MDB2_ERROR_SYNTAX,\r
+                    170   => MDB2_ERROR_SYNTAX,\r
+                    207   => MDB2_ERROR_NOSUCHFIELD,\r
+                    208   => MDB2_ERROR_NOSUCHTABLE,\r
+                    245   => MDB2_ERROR_INVALID_NUMBER,\r
+                    319   => MDB2_ERROR_SYNTAX,\r
+                    321   => MDB2_ERROR_NOSUCHFIELD,\r
+                    325   => MDB2_ERROR_SYNTAX,\r
+                    336   => MDB2_ERROR_SYNTAX,\r
+                    515   => MDB2_ERROR_CONSTRAINT_NOT_NULL,\r
+                    547   => MDB2_ERROR_CONSTRAINT,\r
+                    911   => MDB2_ERROR_NOT_FOUND,\r
+                    1018  => MDB2_ERROR_SYNTAX,\r
+                    1035  => MDB2_ERROR_SYNTAX,\r
+                    1801  => MDB2_ERROR_ALREADY_EXISTS,\r
+                    1913  => MDB2_ERROR_ALREADY_EXISTS,\r
+                    2209  => MDB2_ERROR_SYNTAX,\r
+                    2223  => MDB2_ERROR_SYNTAX,\r
+                    2248  => MDB2_ERROR_SYNTAX,\r
+                    2256  => MDB2_ERROR_SYNTAX,\r
+                    2257  => MDB2_ERROR_SYNTAX,\r
+                    2627  => MDB2_ERROR_CONSTRAINT,\r
+                    2714  => MDB2_ERROR_ALREADY_EXISTS,\r
+                    3607  => MDB2_ERROR_DIVZERO,\r
+                    3701  => MDB2_ERROR_NOSUCHTABLE,\r
+                    7630  => MDB2_ERROR_SYNTAX,\r
+                    8134  => MDB2_ERROR_DIVZERO,\r
+                    9303  => MDB2_ERROR_SYNTAX,\r
+                    9317  => MDB2_ERROR_SYNTAX,\r
+                    9318  => MDB2_ERROR_SYNTAX,\r
+                    9331  => MDB2_ERROR_SYNTAX,\r
+                    9332  => MDB2_ERROR_SYNTAX,\r
+                    15253 => MDB2_ERROR_SYNTAX,\r
+                );\r
+            }\r
+            if (isset($ecode_map[$native_code])) {\r
+                if ($native_code == 3701\r
+                    && preg_match('/Cannot drop the index/i', $native_msg)\r
+                ) {\r
+                   $error = MDB2_ERROR_NOT_FOUND;\r
+                } else {\r
+                    $error = $ecode_map[$native_code];\r
+                }\r
+            }\r
+        }\r
+        return array($error, $native_code, $native_msg);\r
+    }\r
+\r
+    // }}}\r
+    // {{{ function escapePattern($text)\r
+\r
+    /**\r
+     * Quotes pattern (% and _) characters in a string)\r
+     *\r
+     * @param   string  the input string to quote\r
+     *\r
+     * @return  string  quoted string\r
+     *\r
+     * @access  public\r
+     */\r
+    function escapePattern($text)\r
+    {\r
+        $text = str_replace("[", "[ [ ]", $text);\r
+        foreach ($this->wildcards as $wildcard) {\r
+            $text = str_replace($wildcard, '[' . $wildcard . ']', $text);\r
+        }\r
+        return $text;\r
+    }\r
+\r
+    // }}}\r
+    // {{{ beginTransaction()\r
+\r
+    /**\r
+     * Start a transaction or set a savepoint.\r
+     *\r
+     * @param   string  name of a savepoint to set\r
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure\r
+     *\r
+     * @access  public\r
+     */\r
+    function beginTransaction($savepoint = null)\r
+    {\r
+        $this->debug('Starting transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint));\r
+        if (null !== $savepoint) {\r
+            if (!$this->in_transaction) {\r
+                return $this->raiseError(MDB2_ERROR_INVALID, null, null,\r
+                    'savepoint cannot be released when changes are auto committed', __FUNCTION__);\r
+            }\r
+            $query = 'SAVE TRANSACTION '.$savepoint;\r
+            return $this->_doQuery($query, true);\r
+        }\r
+        if ($this->in_transaction) {\r
+            return MDB2_OK;  //nothing to do\r
+        }\r
+        if (!$this->destructor_registered && $this->opened_persistent) {\r
+            $this->destructor_registered = true;\r
+            register_shutdown_function('MDB2_closeOpenTransactions');\r
+        }\r
+        if (PEAR::isError(sqlsrv_begin_transaction($this->connection))) {\r
+            return MDB2_ERROR;\r
+        }\r
+        $this->in_transaction = true;\r
+        return MDB2_OK;\r
+    }\r
+\r
+    // }}}\r
+    // {{{ commit()\r
+\r
+    /**\r
+     * Commit the database changes done during a transaction that is in\r
+     * progress or release a savepoint. This function may only be called when\r
+     * auto-committing is disabled, otherwise it will fail. Therefore, a new\r
+     * transaction is implicitly started after committing the pending changes.\r
+     *\r
+     * @param   string  name of a savepoint to release\r
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure\r
+     *\r
+     * @access  public\r
+     */\r
+    function commit($savepoint = null)\r
+    {\r
+        $this->debug('Committing transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint));\r
+        if (!$this->in_transaction) {\r
+            return $this->raiseError(MDB2_ERROR_INVALID, null, null,\r
+                'commit/release savepoint cannot be done changes are auto committed', __FUNCTION__);\r
+        }\r
+        if (null !== $savepoint) {\r
+            return MDB2_OK;\r
+        }\r
+\r
+        if (PEAR::isError(sqlsrv_commit($this->connection))) {\r
+            return MDB2_ERROR;\r
+        }\r
+        $this->in_transaction = false;\r
+        return MDB2_OK;\r
+    }\r
+\r
+    // }}}\r
+    // {{{ rollback()\r
+\r
+    /**\r
+     * Cancel any database changes done during a transaction or since a specific\r
+     * savepoint that is in progress. This function may only be called when\r
+     * auto-committing is disabled, otherwise it will fail. Therefore, a new\r
+     * transaction is implicitly started after canceling the pending changes.\r
+     *\r
+     * @param   string  name of a savepoint to rollback to\r
+     * @return  mixed   MDB2_OK on success, a MDB2 error on failure\r
+     *\r
+     * @access  public\r
+     */\r
+    function rollback($savepoint = null)\r
+    {\r
+        $this->debug('Rolling back transaction/savepoint', __FUNCTION__, array('is_manip' => true, 'savepoint' => $savepoint));\r
+        if (!$this->in_transaction) {\r
+            return $this->raiseError(MDB2_ERROR_INVALID, null, null,\r
+                'rollback cannot be done changes are auto committed', __FUNCTION__);\r
+        }\r
+        if (null !== $savepoint) {\r
+            $query = 'ROLLBACK TRANSACTION '.$savepoint;\r
+            return $this->_doQuery($query, true);\r
+        }\r
+\r
+        if (PEAR::isError(sqlsrv_rollback($this->connection))) {\r
+            return MDB2_ERROR;\r
+        }\r
+        $this->in_transaction = false;\r
+        return MDB2_OK;\r
+    }\r
+\r
+    // }}}\r
+    // {{{ _doConnect()\r
+\r
+    /**\r
+     * do the grunt work of the connect\r
+     *\r
+     * @return connection on success or MDB2 Error Object on failure\r
+     * @access protected\r
+     */\r
+    function _doConnect($username, $password, $database=null, $persistent = false)\r
+    {\r
+        if (!PEAR::loadExtension($this->phptype)) {\r
+            return $this->raiseError(MDB2_ERROR_NOT_FOUND, null, null,\r
+                'extension '.$this->phptype.' is not installed PHP', __FUNCTION__);\r
+        }\r
+\r
+        $host = $this->dsn['hostspec'] ? $this->dsn['hostspec'] : '.\\SQLEXPRESS';\r
+        $params = array(\r
+            'UID' => $username ? $username : null,\r
+            'PWD' => $password ? $password : null,\r
+        );\r
+               if ($database) {\r
+            $params['Database'] = $database;\r
+        }\r
+               \r
+        if ($this->dsn['port'] && $this->dsn['port'] != 1433) {\r
+            $host .= ','.$this->dsn['port'];\r
+        }\r
+\r
+        $connection = @sqlsrv_connect($host, $params);\r
+        if (!$connection) {\r
+            return $this->raiseError(MDB2_ERROR_CONNECT_FAILED, null, null,\r
+                'unable to establish a connection', __FUNCTION__, __FUNCTION__);\r
+        }\r
+        if (null !== $database) {\r
+            $this->connected_database_name = $database;\r
+        }\r
+\r
+        if (!empty($this->dsn['charset'])) {\r
+            $result = $this->setCharset($this->dsn['charset'], $connection);\r
+            if (PEAR::isError($result)) {\r
+                return $result;\r
+            }\r
+        }\r
+\r
+       if (empty($this->dsn['disable_iso_date'])) {\r
+           @sqlsrv_query($connection,'SET DATEFORMAT ymd');\r
+       }\r
+\r
+       return $connection;\r
+    }\r
+\r
+    // }}}\r
+    // {{{ connect()\r
+\r
+    /**\r
+     * Connect to the database\r
+     *\r
+     * @return true on success, MDB2 Error Object on failure\r
+     */\r
+    function connect()\r
+    {\r
+        if (is_resource($this->connection)) {\r
+            if (MDB2::areEquals($this->connected_dsn, $this->dsn)) {\r
+                return MDB2_OK;\r
+            }\r
+            $this->disconnect(false);\r
+        }\r
+\r
+        $connection = $this->_doConnect(\r
+            $this->dsn['username'],\r
+            $this->dsn['password'],\r
+            $this->database_name,\r
+            $this->options['persistent']\r
+        );\r
+        if (PEAR::isError($connection)) {\r
+            return $connection;\r
+        }\r
+\r
+        $this->connection = $connection;\r
+        $this->connected_dsn = $this->dsn;\r
+        $this->connected_database_name = $this->database_name;\r
+        $this->opened_persistent = $this->options['persistent'];\r
+        $this->dbsyntax = $this->dsn['dbsyntax'] ? $this->dsn['dbsyntax'] : $this->phptype;\r
+\r
+        return MDB2_OK;\r
+    }\r
+\r
+    // }}}\r
+    // {{{ databaseExists()\r
+\r
+    /**\r
+     * check if given database name exists?\r
+     *\r
+     * @param string $name    name of the database that should be checked\r
+     *\r
+     * @return mixed true/false on success, a MDB2 error on failure\r
+     * @access public\r
+     */\r
+    function databaseExists($name)\r
+    {\r
+        $connection = $this->_doConnect($this->dsn['username'],$this->dsn['password']);\r
+        if (PEAR::isError($connection)) {\r
+            return MDB2_ERROR_CONNECT_FAILED;\r
+        }\r
+               $result = @sqlsrv_query($connection,'select name from master..sysdatabases where name = \''.strtolower($name).'\'');\r
+               if (@sqlsrv_fetch($result)) {\r
+                       return true;\r
+               }\r
+        return MDB2_ERROR_NOT_FOUND;\r
+    }\r
+\r
+    // }}}\r
+    // {{{ disconnect()\r
+\r
+    /**\r
+     * Log out and disconnect from the database.\r
+     *\r
+     * @param  boolean $force if the disconnect should be forced even if the\r
+     *                        connection is opened persistently\r
+     * @return mixed true on success, false if not connected and error\r
+     *                object on error\r
+     * @access public\r
+     */\r
+    function disconnect($force = true)\r
+    {\r
+        if (is_resource($this->connection)) {\r
+            if ($this->in_transaction) {\r
+                $dsn = $this->dsn;\r
+                $database_name = $this->database_name;\r
+                $persistent = $this->options['persistent'];\r
+                $this->dsn = $this->connected_dsn;\r
+                $this->database_name = $this->connected_database_name;\r
+                $this->options['persistent'] = $this->opened_persistent;\r
+                $this->rollback();\r
+                $this->dsn = $dsn;\r
+                $this->database_name = $database_name;\r
+                $this->options['persistent'] = $persistent;\r
+            }\r
+\r
+            @sqlsrv_close($this->connection);\r
+        }\r
+        return parent::disconnect($force);\r
+    }\r
+\r
+    // }}}\r
+    // {{{ standaloneQuery()\r
+\r
+   /**\r
+     * execute a query as DBA\r
+     *\r
+     * @param string $query the SQL query\r
+     * @param mixed   $types  array that contains the types of the columns in\r
+     *                        the result set\r
+     * @param boolean $is_manip  if the query is a manipulation query\r
+     * @return mixed MDB2_OK on success, a MDB2 error on failure\r
+     * @access public\r
+     */\r
+    function &standaloneQuery($query, $types = null, $is_manip = false)\r
+    {\r
+        $user = $this->options['DBA_username']? $this->options['DBA_username'] : $this->dsn['username'];\r
+        $pass = $this->options['DBA_password']? $this->options['DBA_password'] : $this->dsn['password'];\r
+        $connection = $this->_doConnect($user, $pass, $this->database_name, $this->options['persistent']);\r
+        if (PEAR::isError($connection)) {\r
+            return $connection;\r
+        }\r
+\r
+        $query = $this->_modifyQuery($query, $is_manip, $this->limit, $this->offset);\r
+        $this->offset = $this->limit = 0;\r
+        \r
+        $result = $this->_doQuery($query, $is_manip, $connection);\r
+        if (!PEAR::isError($result)) {\r
+            $result = $this->_affectedRows($connection, $result);\r
+        }\r
+\r
+        @sqlsrv_close($connection);\r
+        return $result;\r
+    }\r
+\r
+    // }}}\r
+    // {{{ _doQuery()\r
+\r
+    /**\r
+     * Execute a query\r
+     * @param string $query  query\r
+     * @param boolean $is_manip  if the query is a manipulation query\r
+     * @param resource $connection\r
+     * @param string $database_name\r
+     * @return result or error object\r
+     * @access protected\r
+     */\r
+    function _doQuery($query, $is_manip = false, $connection = null, $database_name = null)\r
+    {\r
+        $this->last_query = $query;\r
+        $result = $this->debug($query, 'query', array('is_manip' => $is_manip, 'when' => 'pre'));\r
+        if ($result) {\r
+            if (PEAR::isError($result)) {\r
+                return $result;\r
+            }\r
+            $query = $result;\r
+        }\r
+        if ($this->options['disable_query']) {\r
+            $result = $is_manip ? 0 : null;\r
+            return $result;\r
+        }\r
+\r
+        if (null === $connection) {\r
+            $connection = $this->getConnection();\r
+            if (PEAR::isError($connection)) {\r
+                return $connection;\r
+            }\r
+        }\r
+        if (null === $database_name) {\r
+            $database_name = $this->database_name;\r
+        }\r
+\r
+        if ($database_name && $database_name != $this->connected_database_name) {\r
+                       $connection = $this->_doConnect($this->dsn['username'],$this->dsn['password'],$database_name);\r
+                       if (PEAR::isError($connection)) {\r
+                               $err = $this->raiseError(null, null, null,\r
+                                       'Could not select the database: '.$database_name, __FUNCTION__);\r
+                               return $err;\r
+                       }\r
+                       $this->connected_database_name = $database_name;\r
+        }\r
+\r
+       $query = preg_replace('/DATE_FORMAT\((MIN\()?([\w|.]*)(\))?\\Q, \'%Y-%m-%d\')\E/i','CONVERT(varchar(10),$1$2$3,120)',$query); \r
+       $query = preg_replace('/DATE_FORMAT\(([\w|.]*)\, \'\%Y\-\%m\-\%d %H\:00\:00\'\)/i','CONVERT(varchar(13),$1,120)+\':00:00\'',$query); \r
+        $result = @sqlsrv_query($connection,$query);\r
+        if (!$result) {\r
+            $err = $this->raiseError(null, null, null,\r
+                'Could not execute statement', __FUNCTION__);\r
+            return $err;\r
+        }\r
+        $this->result = $result;\r
+        $this->debug($query, 'query', array('is_manip' => $is_manip, 'when' => 'post', 'result' => $result));\r
+        return $result;\r
+    }\r
+\r
+    // }}}\r
+    // {{{ _affectedRows()\r
+\r
+    /**\r
+     * Returns the number of rows affected\r
+     *\r
+     * @param resource $result\r
+     * @param resource $connection\r
+     * @return mixed MDB2 Error Object or the number of rows affected\r
+     * @access private\r
+     */\r
+    function _affectedRows($connection, $result = null)\r
+    {\r
+        if (null === $result) {\r
+            $result = $this->result;\r
+        }\r
+        return sqlsrv_rows_affected($this->result);\r
+    }\r
+\r
+    // }}}\r
+    // {{{ _modifyQuery()\r
+\r
+    /**\r
+     * Changes a query string for various DBMS specific reasons\r
+     *\r
+     * @param string $query  query to modify\r
+     * @param boolean $is_manip  if it is a DML query\r
+     * @param integer $limit  limit the number of rows\r
+     * @param integer $offset  start reading from given offset\r
+     * @return string modified query\r
+     * @access protected\r
+     */\r
+    function _modifyQuery($query, $is_manip, $limit, $offset)\r
+    {\r
+        if ($limit > 0) {\r
+            $fetch = $offset + $limit;\r
+            if (!$is_manip) {\r
+                return preg_replace('/^([\s(])*SELECT( DISTINCT)?(?!\s*TOP\s*\()/i',\r
+                    "\\1SELECT\\2 TOP $fetch", $query);\r
+            }\r
+        }\r
+        return $query;\r
+    }\r
+\r
+    // }}}\r
+    // {{{ getServerVersion()\r
+\r
+    /**\r
+     * return version information about the server\r
+     *\r
+     * @param bool   $native  determines if the raw version string should be returned\r
+     * @return mixed array/string with version information or MDB2 error object\r
+     * @access public\r
+     */\r
+    function getServerVersion($native = false)\r
+    {\r
+        if ($this->connected_server_info) {\r
+            $server_info = $this->connected_server_info;\r
+        } else {\r
+            $server_info = sqlsrv_server_info($this->connection);\r
+        }\r
+        // cache server_info\r
+        $this->connected_server_info = $server_info;\r
+               $version = $server_info['SQLServerVersion'];\r
+        if (!$native) {\r
+            if (preg_match('/(\d+)\.(\d+)\.(\d+)/', $version, $tmp)) {\r
+                $version = array(\r
+                    'major' => $tmp[1],\r
+                    'minor' => $tmp[2],\r
+                    'patch' => $tmp[3],\r
+                    'extra' => null,\r
+                    'native' => $version,\r
+                );\r
+            } else {\r
+                $version = array(\r
+                    'major' => null,\r
+                    'minor' => null,\r
+                    'patch' => null,\r
+                    'extra' => null,\r
+                    'native' => $version,\r
+                );\r
+            }\r
+        }\r
+        return $version;\r
+    }\r
+\r
+    // }}}\r
+    // {{{ _checkSequence\r
+\r
+    /**\r
+     * Checks if there's a sequence that exists.\r
+     *\r
+     * @param  string $seq_name    The sequence name to verify.\r
+     * @return bool   $tableExists The value if the table exists or not\r
+     * @access private\r
+     */\r
+    function _checkSequence($seq_name)\r
+    {\r
+        $query = "SELECT * FROM $seq_name";\r
+        $tableExists =& $this->_doQuery($query, true);\r
+        if (PEAR::isError($tableExists)) {\r
+            if ($tableExists->getCode() == MDB2_ERROR_NOSUCHTABLE) {\r
+                return false;\r
+            }\r
+            return false;\r
+        }\r
+               if (@sqlsrv_fetch($tableExits)) {\r
+                       return true;\r
+               }\r
+        return false;\r
+    }\r
+\r
+    // }}}\r
+    // {{{ nextID()\r
+\r
+    /**\r
+     * Returns the next free id of a sequence\r
+     *\r
+     * @param string $seq_name name of the sequence\r
+     * @param boolean $ondemand when true the sequence is\r
+     *                          automatic created, if it\r
+     *                          not exists\r
+     *\r
+     * @return mixed MDB2 Error Object or id\r
+     * @access public\r
+     */\r
+    function nextID($seq_name, $ondemand = true)\r
+    {\r
+        $sequence_name = $this->quoteIdentifier($this->getSequenceName($seq_name), true);\r
+        $seqcol_name = $this->quoteIdentifier($this->options['seqcol_name'], true);\r
+        $this->pushErrorHandling(PEAR_ERROR_RETURN);\r
+        $this->expectError(MDB2_ERROR_NOSUCHTABLE);\r
+        \r
+        $seq_val = $this->_checkSequence($sequence_name);\r
+\r
+        if ($seq_val) {\r
+            $query = "SET IDENTITY_INSERT $sequence_name OFF ".\r
+                     "INSERT INTO $sequence_name DEFAULT VALUES";\r
+        } else {\r
+            $query = "INSERT INTO $sequence_name ($seqcol_name) VALUES (0)";\r
+        }\r
+        $result = $this->_doQuery($query, true);\r
+        $this->popExpect();\r
+        $this->popErrorHandling();\r
+        if (PEAR::isError($result)) {\r
+            if ($ondemand && !$this->_checkSequence($sequence_name)) {\r
+                $this->loadModule('Manager', null, true);\r
+                $result = $this->manager->createSequence($seq_name);\r
+                if (PEAR::isError($result)) {\r
+                    return $this->raiseError($result, null, null,\r
+                        'on demand sequence '.$seq_name.' could not be created', __FUNCTION__);\r
+                } else {\r
+                    /**\r
+                     * Little off-by-one problem with the sequence emulation\r
+                     * here being fixed, that instead of re-calling nextID\r
+                     * and forcing an increment by one, we simply check if it\r
+                     * exists, then we get the last inserted id if it does.\r
+                     *\r
+                     * In theory, $seq_name should be created otherwise there would\r
+                     * have been an error thrown somewhere up there.. \r
+                     *\r
+                     * @todo confirm\r
+                     */\r
+                    if ($this->_checkSequence($seq_name)) {\r
+                        return $this->lastInsertID($seq_name);\r
+                    }\r
+\r
+                    return $this->nextID($seq_name, false);\r
+                }\r
+            }\r
+            return $result;\r
+        }\r
+        $value = $this->lastInsertID($sequence_name);\r
+        if (is_numeric($value)) {\r
+            $query = "DELETE FROM $sequence_name WHERE $seqcol_name < $value";\r
+            $result = $this->_doQuery($query, true);\r
+            if (PEAR::isError($result)) {\r
+                $this->warnings[] = 'nextID: could not delete previous sequence table values from '.$seq_name;\r
+            }\r
+        }\r
+        return $value;\r
+    }\r
+\r
+    // }}}\r
+    // {{{ lastInsertID()\r
+\r
+    /**\r
+     * Returns the autoincrement ID if supported or $id or fetches the current\r
+     * ID in a sequence called: $table.(empty($field) ? '' : '_'.$field)\r
+     *\r
+     * @param string $table name of the table into which a new row was inserted\r
+     * @param string $field name of the field into which a new row was inserted\r
+     *\r
+     * @return mixed MDB2 Error Object or id\r
+     * @access public\r
+     */\r
+    function lastInsertID($table = null, $field = null)\r
+    {\r
+        return $this->queryOne("SELECT IDENT_CURRENT('$table')", 'integer');\r
+    }\r
+\r
+    // }}}\r
+}\r
+\r
+// }}}\r
+// {{{ Class MDB2_Result_mssql\r
+\r
+/**\r
+ * MDB2 MSSQL Server result driver\r
+ *\r
+ * @package MDB2\r
+ * @category Database\r
+ * @author  Frank M. Kromann <frank@kromann.info>\r
+ */\r
+class MDB2_Result_sqlsrv extends MDB2_Result_Common\r
+{\r
+    // {{{ constructor: function __construct($db, $result, $limit = 0, $offset = 0)\r
+\r
+    /**\r
+     * Constructor\r
+     */\r
+    function __construct($db, $result, $limit = 0, $offset = 0)\r
+{\r
+        $this->db = $db;\r
+        $this->result = $result;\r
+        $this->offset = $offset;\r
+        $this->limit = max(0, $limit - 1);\r
+               $this->cursor = 0;\r
+               $this->rows = array();\r
+               $this->numFields = sqlsrv_num_fields($result);\r
+               $this->fieldMeta = sqlsrv_field_metadata($result);\r
+               $this->numRowsAffected = sqlsrv_rows_affected($result);\r
+               while ($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)) {\r
+                       if ($row !== null) {\r
+                               if ($this->offset && $this->offset_count < $this->offset) {\r
+                                       $this->offset_count++;\r
+                                       continue;\r
+                               }\r
+                               foreach ($row as $k => $v) {\r
+                                       if (is_object($v) && method_exists($v, 'format')) {\r
+                        //DateTime Object\r
+                                               $row[$k] = $v->format('Y-m-d H:i:s');\r
+                                       }\r
+                               }\r
+                               $this->rows[] = $row; //read results into memory, cursors are not supported\r
+                       }\r
+               }\r
+               $this->rowcnt = count($this->rows);\r
+    }\r
+\r
+    // }}}\r
+    // {{{ _skipLimitOffset()\r
+\r
+    /**\r
+     * Skip the first row of a result set.\r
+     *\r
+     * @param resource $result\r
+     * @return mixed a result handle or MDB2_OK on success, a MDB2 error on failure\r
+     * @access protected\r
+     */\r
+/*    function _skipLimitOffset()\r
+    {\r
+        if ($this->limit) {\r
+            if ($this->rownum >= $this->limit) {\r
+                return false;\r
+            }\r
+        }\r
+        if ($this->offset) {\r
+            while ($this->offset_count < $this->offset) {\r
+                ++$this->offset_count;\r
+                if (!is_array(@sqlsrv_fetch_array($this->result))) {\r
+                    $this->offset_count = $this->limit;\r
+                    return false;\r
+                }\r
+            }\r
+        }\r
+        return MDB2_OK;\r
+    }*/\r
+\r
+    // }}}\r
+       function array_to_obj($array, &$obj) {\r
+               foreach ($array as $key => $value) {\r
+                       if (is_array($value)) {\r
+                               $obj->$key = new stdClass();\r
+                               array_to_obj($value, $obj->$key);\r
+                       } else {\r
+                               $obj->$key = $value;\r
+                       }\r
+               }\r
+               return $obj;\r
+       } \r
+    // {{{ fetchRow()\r
+\r
+    /**\r
+     * Fetch a row and insert the data into an existing array.\r
+     *\r
+     * @param int       $fetchmode  how the array data should be indexed\r
+     * @param int    $rownum    number of the row where the data can be found\r
+     * @return int data array on success, a MDB2 error on failure\r
+     * @access public\r
+     */\r
+    function fetchRow($fetchmode = MDB2_FETCHMODE_DEFAULT, $rownum = null)\r
+    {\r
+        if (!$this->result) {\r
+            return $this->db->raiseError(MDB2_ERROR_INVALID, null, null, 'no valid statement given', __FUNCTION__);\r
+        }\r
+        if (($this->limit && $this->rownum >= $this->limit) || ($this->cursor >= $this->rowcnt || $this->rowcnt == 0)) {\r
+            return null;\r
+        }\r
+        if (null !== $rownum) {\r
+            $seek = $this->seek($rownum);\r
+            if (PEAR::isError($seek)) {\r
+                return $seek;\r
+            }\r
+        }\r
+               \r
+               $row = false;\r
+               $arrNum = array();\r
+               if ($fetchmode == MDB2_FETCHMODE_ORDERED || $fetchmode == MDB2_FETCHMODE_DEFAULT) {\r
+                       foreach ($this->rows[$this->cursor] as $key=>$value) {\r
+                               $arrNum[] = $value;\r
+                       }\r
+               }\r
+               switch($fetchmode) {\r
+                       case MDB2_FETCHMODE_ASSOC:\r
+                               $row = $this->rows[$this->cursor];      break;\r
+                       case MDB2_FETCHMODE_ORDERED:\r
+                               $row = $arrNum; break;\r
+                       case MDB2_FETCHMODE_OBJECT:\r
+                               $row = $this->array_to_obj($this->rows[$this->cursor],$o = new $this->db->options['fetch_class']); break;\r
+                       case MDB2_FETCHMODE_DEFAULT:\r
+                       default:\r
+                       $row = $this->rows[$this->cursor] + $arrNum; break;\r
+               } \r
+               $this->cursor++;\r
+               \r
+               /*\r
+        if ($fetchmode == MDB2_FETCHMODE_OBJECT) {\r
+                       $row = sqlsrv_fetch_object($this->result,$this->db->options['fetch_class']);\r
+               } else {\r
+               switch($fetchmode) {\r
+                       case MDB2_FETCHMODE_ASSOC: $fetchmode = SQLSRV_FETCH_ASSOC; break;\r
+                       case MDB2_FETCHMODE_ORDERED: $fetchmode = SQLSRV_FETCH_NUMERIC; break;\r
+                       case MDB2_FETCHMODE_DEFAULT: \r
+                       default: \r
+                               $fetchmode = SQLSRV_FETCH_BOTH;\r
+               }\r
+                       $row = sqlsrv_fetch_array($this->result,$fetchmode);\r
+               }\r
+               foreach ($row as $key=>$value) {\r
+                       if (is_object($value) && method_exists($value, 'format')) {//is DateTime object\r
+                               $row[$key] = $value->format("Y-m-d H:i:s");\r
+                       }\r
+               }*/\r
+               \r
+        /*if ($fetchmode == MDB2_FETCHMODE_DEFAULT) {\r
+            $fetchmode = $this->db->fetchmode;\r
+        }*/\r
+        if ($fetchmode == MDB2_FETCHMODE_ASSOC && is_array($row) && $this->db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {\r
+            $row = array_change_key_case($row, $this->db->options['field_case']);\r
+        }\r
+        if (!$row) {\r
+            if (false === $this->result) {\r
+                $err = $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,\r
+                    'resultset has already been freed', __FUNCTION__);\r
+                return $err;\r
+            }\r
+            return null;\r
+        }\r
+        $mode = $this->db->options['portability'] & MDB2_PORTABILITY_EMPTY_TO_NULL;\r
+        $rtrim = false;\r
+        if ($this->db->options['portability'] & MDB2_PORTABILITY_RTRIM) {\r
+            if (empty($this->types)) {\r
+                $mode += MDB2_PORTABILITY_RTRIM;\r
+            } else {\r
+                $rtrim = true;\r
+            }\r
+        }\r
+        if ($mode) {\r
+            $this->db->_fixResultArrayValues($row, $mode);\r
+        }\r
+        if (!empty($this->types)) {\r
+            $row = $this->db->datatype->convertResultRow($this->types, $row, $rtrim);\r
+        }\r
+        if (!empty($this->values)) {\r
+            $this->_assignBindColumns($row);\r
+        }\r
+        ++$this->rownum;\r
+        return $row;\r
+    }\r
+\r
+    // }}}\r
+    // {{{ _getColumnNames()\r
+\r
+    /**\r
+     * Retrieve the names of columns returned by the DBMS in a query result.\r
+     *\r
+     * @return  mixed   Array variable that holds the names of columns as keys\r
+     *                  or an MDB2 error on failure.\r
+     *                  Some DBMS may not return any columns when the result set\r
+     *                  does not contain any rows.\r
+     * @access private\r
+     */\r
+    function _getColumnNames()\r
+    {\r
+               if (!$this->result) {\r
+            return $this->db->raiseError(MDB2_ERROR_INVALID, null, null, 'no valid statement given', __FUNCTION__);\r
+        }\r
+        $columns = array();\r
+               foreach ($this->fieldMeta as $col) {\r
+                       $columns[$col['Name']] = $col['Type'];\r
+               }\r
+        if ($this->db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {\r
+            $columns = array_change_key_case($columns, $this->db->options['field_case']);\r
+        }\r
+        return $columns;\r
+    }\r
+\r
+    // }}}\r
+    // {{{ numCols()\r
+\r
+    /**\r
+     * Count the number of columns returned by the DBMS in a query result.\r
+     *\r
+     * @return mixed integer value with the number of columns, a MDB2 error\r
+     *      on failure\r
+     * @access public\r
+     */\r
+    function numCols()\r
+    {\r
+        if (!$this->result) {\r
+            return $this->db->raiseError(MDB2_ERROR_INVALID, null, null, 'no valid statement given', __FUNCTION__);\r
+        }\r
+        $cols = $this->numFields;\r
+        if (!$cols) {\r
+            if (false === $this->result) {\r
+                return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,\r
+                    'resultset has already been freed', __FUNCTION__);\r
+            }\r
+            if (null === $this->result) {\r
+                return count($this->types);\r
+            }\r
+            return $this->db->raiseError(null, null, null,\r
+                'Could not get column count', __FUNCTION__);\r
+        }\r
+        return $cols;\r
+    }\r
+\r
+    // }}}\r
+    // {{{ nextResult()\r
+\r
+    /**\r
+     * Move the internal result pointer to the next available result\r
+     *\r
+     * @return true on success, false if there is no more result set or an error object on failure\r
+     * @access public\r
+     */\r
+    function nextResult()\r
+    {\r
+        if (false === $this->result) {\r
+            return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,\r
+                'resultset has already been freed', __FUNCTION__);\r
+        }\r
+        if (null === $this->result) {\r
+            return false;\r
+        }\r
+        $ret = sqlsrv_next_result($this->result);\r
+               if ($ret) {\r
+                       $this->cursor = 0;\r
+                       $this->rows = array();\r
+                       $this->numFields = sqlsrv_num_fields($this->result);\r
+                       $this->fieldMeta = sqlsrv_field_metadata($this->result);\r
+                       $this->numRowsAffected = sqlsrv_rows_affected($this->result);\r
+                       while ($row = sqlsrv_fetch_array($this->result, SQLSRV_FETCH_ASSOC)) {\r
+                               if ($row !== null) {\r
+                                       if ($this->offset && $this->offset_count < $this->offset) {\r
+                                               $this->offset_count++;\r
+                                               continue;\r
+                                       }\r
+                                       foreach ($row as $k => $v) {\r
+                                               if (is_object($v) && method_exists($v, 'format')) {//DateTime Object\r
+                                                       //$v->setTimezone(new DateTimeZone('GMT'));//TS_ISO_8601 with a trailing 'Z' is GMT\r
+                                                       $row[$k] = $v->format("Y-m-d H:i:s");\r
+                                               }\r
+                                       }\r
+                                       $this->rows[] = $row;//read results into memory, cursors are not supported\r
+                               }\r
+                       }\r
+                       $this->rowcnt = count($this->rows);             \r
+               }\r
+               return $ret;\r
+    }\r
+\r
+    // }}}\r
+    // {{{ free()\r
+\r
+    /**\r
+     * Free the internal resources associated with $result.\r
+     *\r
+     * @return boolean true on success, false if $result is invalid\r
+     * @access public\r
+     */\r
+    function free()\r
+    {\r
+        if (is_resource($this->result) && $this->db->connection) {\r
+            if (!@sqlsrv_free_stmt($this->result)) {\r
+                return $this->db->raiseError(null, null, null,\r
+                    'Could not free result', __FUNCTION__);\r
+            }\r
+        }\r
+        $this->result = false;\r
+        return MDB2_OK;\r
+    }\r
+\r
+    // }}}\r
+    // {{{ function rowCount()\r
+    /**\r
+     * Returns the actual row number that was last fetched (count from 0)\r
+     * @return  int\r
+     *\r
+     * @access  public\r
+     */\r
+    function rowCount()\r
+    {\r
+        return $this->cursor;\r
+}\r
+\r
+// }}}\r
+    // {{{ function numRows()\r
+\r
+/**\r
+     * Returns the number of rows in a result object\r
+     *\r
+     * @return  mixed   MDB2 Error Object or the number of rows\r
+ *\r
+     * @access  public\r
+ */\r
+    function numRows()\r
+{\r
+        return $this->rowcnt;\r
+    }\r
+\r
+    // }}}\r
+    // {{{ function seek($rownum = 0)\r
+\r
+    /**\r
+     * Seek to a specific row in a result set\r
+     *\r
+     * @param   int     number of the row where the data can be found\r
+     *\r
+     * @return mixed MDB2_OK on success, a MDB2 error on failure\r
+     *\r
+     * @access public\r
+     */\r
+    function seek($rownum = 0)\r
+    {\r
+        $this->cursor = min($rownum, $this->rowcnt);\r
+                return MDB2_OK;\r
+            }\r
+\r
+    // }}}\r
+    }\r
+\r
+    // }}}\r
+// {{{ class MDB2_BufferedResult_mssql\r
+\r
+/**\r
+ * MDB2 MSSQL Server buffered result driver\r
+ *\r
+ * @package MDB2\r
+ * @category Database\r
+ * @author  Frank M. Kromann <frank@kromann.info>\r
+ */\r
+class MDB2_BufferedResult_sqlsrv extends MDB2_Result_sqlsrv\r
+{\r
+    // {{{ valid()\r
+\r
+    /**\r
+     * Check if the end of the result set has been reached\r
+     *\r
+     * @return mixed true or false on sucess, a MDB2 error on failure\r
+     * @access public\r
+     */\r
+    function valid()\r
+    {\r
+        $numrows = $this->numRows();\r
+        if (PEAR::isError($numrows)) {\r
+            return $numrows;\r
+        }\r
+        return $this->rownum < ($numrows - 1);\r
+    }\r
+\r
+    // }}}\r
+\r
+}\r
+\r
+// }}}\r
+// {{{ MDB2_Statement_mssql\r
+\r
+/**\r
+ * MDB2 MSSQL Server statement driver\r
+ *\r
+ * @package MDB2\r
+ * @category Database\r
+ * @author  Frank M. Kromann <frank@kromann.info>\r
+ */\r
+class MDB2_Statement_sqlsrv extends MDB2_Statement_Common\r
+{\r
+\r
+}\r
+\r
+// }}}\r
+\r
+?>\r
diff --git a/program/lib/MDB2/Extended.php b/program/lib/MDB2/Extended.php
new file mode 100644 (file)
index 0000000..29de0a7
--- /dev/null
@@ -0,0 +1,721 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP versions 4 and 5                                                 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2006 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Lukas Smith <smith@pooteeweet.org>                           |
+// +----------------------------------------------------------------------+
+//
+// $Id: Extended.php 292715 2009-12-28 14:06:34Z quipo $
+
+/**
+ * @package  MDB2
+ * @category Database
+ * @author   Lukas Smith <smith@pooteeweet.org>
+ */
+
+/**
+ * Used by autoPrepare()
+ */
+define('MDB2_AUTOQUERY_INSERT', 1);
+define('MDB2_AUTOQUERY_UPDATE', 2);
+define('MDB2_AUTOQUERY_DELETE', 3);
+define('MDB2_AUTOQUERY_SELECT', 4);
+
+/**
+ * MDB2_Extended: class which adds several high level methods to MDB2
+ *
+ * @package MDB2
+ * @category Database
+ * @author Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Extended extends MDB2_Module_Common
+{
+    // {{{ autoPrepare()
+
+    /**
+     * Generate an insert, update or delete query and call prepare() on it
+     *
+     * @param string table
+     * @param array the fields names
+     * @param int type of query to build
+     *                          MDB2_AUTOQUERY_INSERT
+     *                          MDB2_AUTOQUERY_UPDATE
+     *                          MDB2_AUTOQUERY_DELETE
+     *                          MDB2_AUTOQUERY_SELECT
+     * @param string (in case of update and delete queries, this string will be put after the sql WHERE statement)
+     * @param array that contains the types of the placeholders
+     * @param mixed array that contains the types of the columns in
+     *                        the result set or MDB2_PREPARE_RESULT, if set to
+     *                        MDB2_PREPARE_MANIP the query is handled as a manipulation query
+     *
+     * @return resource handle for the query
+     * @see buildManipSQL
+     * @access public
+     */
+    function autoPrepare($table, $table_fields, $mode = MDB2_AUTOQUERY_INSERT,
+        $where = false, $types = null, $result_types = MDB2_PREPARE_MANIP)
+    {
+        $query = $this->buildManipSQL($table, $table_fields, $mode, $where);
+        if (PEAR::isError($query)) {
+            return $query;
+        }
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+        $lobs = array();
+        foreach ((array)$types as $param => $type) {
+            if (($type == 'clob') || ($type == 'blob')) {
+                $lobs[$param] = $table_fields[$param];
+            }
+        }
+        return $db->prepare($query, $types, $result_types, $lobs);
+    }
+
+    // }}}
+    // {{{ autoExecute()
+
+    /**
+     * Generate an insert, update or delete query and call prepare() and execute() on it
+     *
+     * @param string name of the table
+     * @param array assoc ($key=>$value) where $key is a field name and $value its value
+     * @param int type of query to build
+     *                          MDB2_AUTOQUERY_INSERT
+     *                          MDB2_AUTOQUERY_UPDATE
+     *                          MDB2_AUTOQUERY_DELETE
+     *                          MDB2_AUTOQUERY_SELECT
+     * @param string (in case of update and delete queries, this string will be put after the sql WHERE statement)
+     * @param array that contains the types of the placeholders
+     * @param string which specifies which result class to use
+     * @param mixed  array that contains the types of the columns in
+     *                        the result set or MDB2_PREPARE_RESULT, if set to
+     *                        MDB2_PREPARE_MANIP the query is handled as a manipulation query
+     *
+     * @return bool|MDB2_Error true on success, a MDB2 error on failure
+     * @see buildManipSQL
+     * @see autoPrepare
+     * @access public
+    */
+    function &autoExecute($table, $fields_values, $mode = MDB2_AUTOQUERY_INSERT,
+        $where = false, $types = null, $result_class = true, $result_types = MDB2_PREPARE_MANIP)
+    {
+        $fields_values = (array)$fields_values;
+        if ($mode == MDB2_AUTOQUERY_SELECT) {
+            if (is_array($result_types)) {
+                $keys = array_keys($result_types);
+            } elseif (!empty($fields_values)) {
+                $keys = $fields_values;
+            } else {
+                $keys = array();
+            }
+        } else {
+            $keys = array_keys($fields_values);
+        }
+        $params = array_values($fields_values);
+        if (empty($params)) {
+            $query = $this->buildManipSQL($table, $keys, $mode, $where);
+
+            $db =& $this->getDBInstance();
+            if (PEAR::isError($db)) {
+                return $db;
+            }
+            if ($mode == MDB2_AUTOQUERY_SELECT) {
+                $result =& $db->query($query, $result_types, $result_class);
+            } else {
+                $result = $db->exec($query);
+            }
+        } else {
+            $stmt = $this->autoPrepare($table, $keys, $mode, $where, $types, $result_types);
+            if (PEAR::isError($stmt)) {
+                return $stmt;
+            }
+            $result =& $stmt->execute($params, $result_class);
+            $stmt->free();
+        }
+        return $result;
+    }
+
+    // }}}
+    // {{{ buildManipSQL()
+
+    /**
+     * Make automaticaly an sql query for prepare()
+     *
+     * Example : buildManipSQL('table_sql', array('field1', 'field2', 'field3'), MDB2_AUTOQUERY_INSERT)
+     *           will return the string : INSERT INTO table_sql (field1,field2,field3) VALUES (?,?,?)
+     * NB : - This belongs more to a SQL Builder class, but this is a simple facility
+     *      - Be carefull ! If you don't give a $where param with an UPDATE/DELETE query, all
+     *        the records of the table will be updated/deleted !
+     *
+     * @param string name of the table
+     * @param ordered array containing the fields names
+     * @param int type of query to build
+     *                          MDB2_AUTOQUERY_INSERT
+     *                          MDB2_AUTOQUERY_UPDATE
+     *                          MDB2_AUTOQUERY_DELETE
+     *                          MDB2_AUTOQUERY_SELECT
+     * @param string (in case of update and delete queries, this string will be put after the sql WHERE statement)
+     *
+     * @return string sql query for prepare()
+     * @access public
+     */
+    function buildManipSQL($table, $table_fields, $mode, $where = false)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        if ($db->options['quote_identifier']) {
+            $table = $db->quoteIdentifier($table);
+        }
+
+        if (!empty($table_fields) && $db->options['quote_identifier']) {
+            foreach ($table_fields as $key => $field) {
+                $table_fields[$key] = $db->quoteIdentifier($field);
+            }
+        }
+
+        if ((false !== $where) && (null !== $where)) {
+            if (is_array($where)) {
+                $where = implode(' AND ', $where);
+            }
+            $where = ' WHERE '.$where;
+        }
+
+        switch ($mode) {
+        case MDB2_AUTOQUERY_INSERT:
+            if (empty($table_fields)) {
+                return $db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
+                'Insert requires table fields', __FUNCTION__);
+            }
+            $cols = implode(', ', $table_fields);
+            $values = '?'.str_repeat(', ?', (count($table_fields) - 1));
+            return 'INSERT INTO '.$table.' ('.$cols.') VALUES ('.$values.')';
+            break;
+        case MDB2_AUTOQUERY_UPDATE:
+            if (empty($table_fields)) {
+                return $db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,
+                'Update requires table fields', __FUNCTION__);
+            }
+            $set = implode(' = ?, ', $table_fields).' = ?';
+            $sql = 'UPDATE '.$table.' SET '.$set.$where;
+            return $sql;
+            break;
+        case MDB2_AUTOQUERY_DELETE:
+            $sql = 'DELETE FROM '.$table.$where;
+            return $sql;
+            break;
+        case MDB2_AUTOQUERY_SELECT:
+            $cols = !empty($table_fields) ? implode(', ', $table_fields) : '*';
+            $sql = 'SELECT '.$cols.' FROM '.$table.$where;
+            return $sql;
+            break;
+        }
+        return $db->raiseError(MDB2_ERROR_SYNTAX, null, null,
+                'Non existant mode', __FUNCTION__);
+    }
+
+    // }}}
+    // {{{ limitQuery()
+
+    /**
+     * Generates a limited query
+     *
+     * @param string query
+     * @param array that contains the types of the columns in the result set
+     * @param integer the numbers of rows to fetch
+     * @param integer the row to start to fetching
+     * @param string which specifies which result class to use
+     * @param mixed   string which specifies which class to wrap results in
+     *
+     * @return MDB2_Result|MDB2_Error result set on success, a MDB2 error on failure
+     * @access public
+     */
+    function &limitQuery($query, $types, $limit, $offset = 0, $result_class = true,
+        $result_wrap_class = false)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        $result = $db->setLimit($limit, $offset);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+        $result =& $db->query($query, $types, $result_class, $result_wrap_class);
+        return $result;
+    }
+
+    // }}}
+    // {{{ execParam()
+
+    /**
+     * Execute a parameterized DML statement.
+     *
+     * @param string the SQL query
+     * @param array if supplied, prepare/execute will be used
+     *       with this array as execute parameters
+     * @param array that contains the types of the values defined in $params
+     *
+     * @return int|MDB2_Error affected rows on success, a MDB2 error on failure
+     * @access public
+     */
+    function execParam($query, $params = array(), $param_types = null)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        settype($params, 'array');
+        if (empty($params)) {
+            return $db->exec($query);
+        }
+
+        $stmt = $db->prepare($query, $param_types, MDB2_PREPARE_MANIP);
+        if (PEAR::isError($stmt)) {
+            return $stmt;
+        }
+
+        $result = $stmt->execute($params);
+        if (PEAR::isError($result)) {
+            return $result;
+        }
+
+        $stmt->free();
+        return $result;
+    }
+
+    // }}}
+    // {{{ getOne()
+
+    /**
+     * Fetch the first column of the first row of data returned from a query.
+     * Takes care of doing the query and freeing the results when finished.
+     *
+     * @param string the SQL query
+     * @param string that contains the type of the column in the result set
+     * @param array if supplied, prepare/execute will be used
+     *       with this array as execute parameters
+     * @param array that contains the types of the values defined in $params
+     * @param int|string which column to return
+     *
+     * @return scalar|MDB2_Error data on success, a MDB2 error on failure
+     * @access public
+     */
+    function getOne($query, $type = null, $params = array(),
+        $param_types = null, $colnum = 0)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        settype($params, 'array');
+        settype($type, 'array');
+        if (empty($params)) {
+            return $db->queryOne($query, $type, $colnum);
+        }
+
+        $stmt = $db->prepare($query, $param_types, $type);
+        if (PEAR::isError($stmt)) {
+            return $stmt;
+        }
+
+        $result = $stmt->execute($params);
+        if (!MDB2::isResultCommon($result)) {
+            return $result;
+        }
+
+        $one = $result->fetchOne($colnum);
+        $stmt->free();
+        $result->free();
+        return $one;
+    }
+
+    // }}}
+    // {{{ getRow()
+
+    /**
+     * Fetch the first row of data returned from a query.  Takes care
+     * of doing the query and freeing the results when finished.
+     *
+     * @param string the SQL query
+     * @param array that contains the types of the columns in the result set
+     * @param array if supplied, prepare/execute will be used
+     *       with this array as execute parameters
+     * @param array that contains the types of the values defined in $params
+     * @param int the fetch mode to use
+     *
+     * @return array|MDB2_Error data on success, a MDB2 error on failure
+     * @access public
+     */
+    function getRow($query, $types = null, $params = array(),
+        $param_types = null, $fetchmode = MDB2_FETCHMODE_DEFAULT)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        settype($params, 'array');
+        if (empty($params)) {
+            return $db->queryRow($query, $types, $fetchmode);
+        }
+
+        $stmt = $db->prepare($query, $param_types, $types);
+        if (PEAR::isError($stmt)) {
+            return $stmt;
+        }
+
+        $result = $stmt->execute($params);
+        if (!MDB2::isResultCommon($result)) {
+            return $result;
+        }
+
+        $row = $result->fetchRow($fetchmode);
+        $stmt->free();
+        $result->free();
+        return $row;
+    }
+
+    // }}}
+    // {{{ getCol()
+
+    /**
+     * Fetch a single column from a result set and return it as an
+     * indexed array.
+     *
+     * @param string the SQL query
+     * @param string that contains the type of the column in the result set
+     * @param array if supplied, prepare/execute will be used
+     *       with this array as execute parameters
+     * @param array that contains the types of the values defined in $params
+     * @param int|string which column to return
+     *
+     * @return array|MDB2_Error data on success, a MDB2 error on failure
+     * @access public
+     */
+    function getCol($query, $type = null, $params = array(),
+        $param_types = null, $colnum = 0)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        settype($params, 'array');
+        settype($type, 'array');
+        if (empty($params)) {
+            return $db->queryCol($query, $type, $colnum);
+        }
+
+        $stmt = $db->prepare($query, $param_types, $type);
+        if (PEAR::isError($stmt)) {
+            return $stmt;
+        }
+
+        $result = $stmt->execute($params);
+        if (!MDB2::isResultCommon($result)) {
+            return $result;
+        }
+
+        $col = $result->fetchCol($colnum);
+        $stmt->free();
+        $result->free();
+        return $col;
+    }
+
+    // }}}
+    // {{{ getAll()
+
+    /**
+     * Fetch all the rows returned from a query.
+     *
+     * @param string the SQL query
+     * @param array that contains the types of the columns in the result set
+     * @param array if supplied, prepare/execute will be used
+     *       with this array as execute parameters
+     * @param array that contains the types of the values defined in $params
+     * @param int the fetch mode to use
+     * @param bool if set to true, the $all will have the first
+     *       column as its first dimension
+     * @param bool $force_array used only when the query returns exactly
+     *       two columns. If true, the values of the returned array will be
+     *       one-element arrays instead of scalars.
+     * @param bool $group if true, the values of the returned array is
+     *       wrapped in another array.  If the same key value (in the first
+     *       column) repeats itself, the values will be appended to this array
+     *       instead of overwriting the existing values.
+     *
+     * @return array|MDB2_Error data on success, a MDB2 error on failure
+     * @access public
+     */
+    function getAll($query, $types = null, $params = array(),
+        $param_types = null, $fetchmode = MDB2_FETCHMODE_DEFAULT,
+        $rekey = false, $force_array = false, $group = false)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        settype($params, 'array');
+        if (empty($params)) {
+            return $db->queryAll($query, $types, $fetchmode, $rekey, $force_array, $group);
+        }
+
+        $stmt = $db->prepare($query, $param_types, $types);
+        if (PEAR::isError($stmt)) {
+            return $stmt;
+        }
+
+        $result = $stmt->execute($params);
+        if (!MDB2::isResultCommon($result)) {
+            return $result;
+        }
+
+        $all = $result->fetchAll($fetchmode, $rekey, $force_array, $group);
+        $stmt->free();
+        $result->free();
+        return $all;
+    }
+
+    // }}}
+    // {{{ getAssoc()
+
+    /**
+     * Fetch the entire result set of a query and return it as an
+     * associative array using the first column as the key.
+     *
+     * If the result set contains more than two columns, the value
+     * will be an array of the values from column 2-n.  If the result
+     * set contains only two columns, the returned value will be a
+     * scalar with the value of the second column (unless forced to an
+     * array with the $force_array parameter).  A MDB2 error code is
+     * returned on errors.  If the result set contains fewer than two
+     * columns, a MDB2_ERROR_TRUNCATED error is returned.
+     *
+     * For example, if the table 'mytable' contains:
+     * <pre>
+     *   ID      TEXT       DATE
+     * --------------------------------
+     *   1       'one'      944679408
+     *   2       'two'      944679408
+     *   3       'three'    944679408
+     * </pre>
+     * Then the call getAssoc('SELECT id,text FROM mytable') returns:
+     * <pre>
+     *    array(
+     *      '1' => 'one',
+     *      '2' => 'two',
+     *      '3' => 'three',
+     *    )
+     * </pre>
+     * ...while the call getAssoc('SELECT id,text,date FROM mytable') returns:
+     * <pre>
+     *    array(
+     *      '1' => array('one', '944679408'),
+     *      '2' => array('two', '944679408'),
+     *      '3' => array('three', '944679408')
+     *    )
+     * </pre>
+     *
+     * If the more than one row occurs with the same value in the
+     * first column, the last row overwrites all previous ones by
+     * default.  Use the $group parameter if you don't want to
+     * overwrite like this.  Example:
+     * <pre>
+     * getAssoc('SELECT category,id,name FROM mytable', null, null
+     *           MDB2_FETCHMODE_ASSOC, false, true) returns:
+     *    array(
+     *      '1' => array(array('id' => '4', 'name' => 'number four'),
+     *                   array('id' => '6', 'name' => 'number six')
+     *             ),
+     *      '9' => array(array('id' => '4', 'name' => 'number four'),
+     *                   array('id' => '6', 'name' => 'number six')
+     *             )
+     *    )
+     * </pre>
+     *
+     * Keep in mind that database functions in PHP usually return string
+     * values for results regardless of the database's internal type.
+     *
+     * @param string the SQL query
+     * @param array that contains the types of the columns in the result set
+     * @param array if supplied, prepare/execute will be used
+     *       with this array as execute parameters
+     * @param array that contains the types of the values defined in $params
+     * @param bool $force_array used only when the query returns
+     * exactly two columns.  If TRUE, the values of the returned array
+     * will be one-element arrays instead of scalars.
+     * @param bool $group if TRUE, the values of the returned array
+     *       is wrapped in another array.  If the same key value (in the first
+     *       column) repeats itself, the values will be appended to this array
+     *       instead of overwriting the existing values.
+     *
+     * @return array|MDB2_Error data on success, a MDB2 error on failure
+     * @access public
+     */
+    function getAssoc($query, $types = null, $params = array(), $param_types = null,
+        $fetchmode = MDB2_FETCHMODE_DEFAULT, $force_array = false, $group = false)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        settype($params, 'array');
+        if (empty($params)) {
+            return $db->queryAll($query, $types, $fetchmode, true, $force_array, $group);
+        }
+
+        $stmt = $db->prepare($query, $param_types, $types);
+        if (PEAR::isError($stmt)) {
+            return $stmt;
+        }
+
+        $result = $stmt->execute($params);
+        if (!MDB2::isResultCommon($result)) {
+            return $result;
+        }
+
+        $all = $result->fetchAll($fetchmode, true, $force_array, $group);
+        $stmt->free();
+        $result->free();
+        return $all;
+    }
+
+    // }}}
+    // {{{ executeMultiple()
+
+    /**
+     * This function does several execute() calls on the same statement handle.
+     * $params must be an array indexed numerically from 0, one execute call is
+     * done for every 'row' in the array.
+     *
+     * If an error occurs during execute(), executeMultiple() does not execute
+     * the unfinished rows, but rather returns that error.
+     *
+     * @param resource query handle from prepare()
+     * @param array numeric array containing the data to insert into the query
+     *
+     * @return bool|MDB2_Error true on success, a MDB2 error on failure
+     * @access public
+     * @see prepare(), execute()
+     */
+    function executeMultiple(&$stmt, $params = null)
+    {
+        for ($i = 0, $j = count($params); $i < $j; $i++) {
+            $result = $stmt->execute($params[$i]);
+            if (PEAR::isError($result)) {
+                return $result;
+            }
+        }
+        return MDB2_OK;
+    }
+
+    // }}}
+    // {{{ getBeforeID()
+
+    /**
+     * Returns the next free id of a sequence if the RDBMS
+     * does not support auto increment
+     *
+     * @param string name of the table into which a new row was inserted
+     * @param string name of the field into which a new row was inserted
+     * @param bool when true the sequence is automatic created, if it not exists
+     * @param bool if the returned value should be quoted
+     *
+     * @return int|MDB2_Error id on success, a MDB2 error on failure
+     * @access public
+     */
+    function getBeforeID($table, $field = null, $ondemand = true, $quote = true)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        if ($db->supports('auto_increment') !== true) {
+            $seq = $table.(empty($field) ? '' : '_'.$field);
+            $id = $db->nextID($seq, $ondemand);
+            if (!$quote || PEAR::isError($id)) {
+                return $id;
+            }
+            return $db->quote($id, 'integer');
+        } elseif (!$quote) {
+            return null;
+        }
+        return 'NULL';
+    }
+
+    // }}}
+    // {{{ getAfterID()
+
+    /**
+     * Returns the autoincrement ID if supported or $id
+     *
+     * @param mixed value as returned by getBeforeId()
+     * @param string name of the table into which a new row was inserted
+     * @param string name of the field into which a new row was inserted
+     *
+     * @return int|MDB2_Error id on success, a MDB2 error on failure
+     * @access public
+     */
+    function getAfterID($id, $table, $field = null)
+    {
+        $db =& $this->getDBInstance();
+        if (PEAR::isError($db)) {
+            return $db;
+        }
+
+        if ($db->supports('auto_increment') !== true) {
+            return $id;
+        }
+        return $db->lastInsertID($table, $field);
+    }
+
+    // }}}
+}
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/Iterator.php b/program/lib/MDB2/Iterator.php
new file mode 100644 (file)
index 0000000..7f0a65f
--- /dev/null
@@ -0,0 +1,259 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP version 5                                                        |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2006 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Lukas Smith <smith@pooteeweet.org>                           |
+// +----------------------------------------------------------------------+
+//
+// $Id: Iterator.php 295586 2010-02-28 17:04:17Z quipo $
+
+/**
+ * PHP5 Iterator
+ *
+ * @package  MDB2
+ * @category Database
+ * @author   Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_Iterator implements Iterator
+{
+    protected $fetchmode;
+    protected $result;
+    protected $row;
+
+    // {{{ constructor
+
+    /**
+     * Constructor
+     */
+    public function __construct($result, $fetchmode = MDB2_FETCHMODE_DEFAULT)
+    {
+        $this->result = $result;
+        $this->fetchmode = $fetchmode;
+    }
+    // }}}
+
+    // {{{ seek()
+
+    /**
+     * Seek forward to a specific row in a result set
+     *
+     * @param int number of the row where the data can be found
+     *
+     * @return void
+     * @access public
+     */
+    public function seek($rownum)
+    {
+        $this->row = null;
+        if ($this->result) {
+            $this->result->seek($rownum);
+        }
+    }
+    // }}}
+
+    // {{{ next()
+
+    /**
+     * Fetch next row of data
+     *
+     * @return void
+     * @access public
+     */
+    public function next()
+    {
+        $this->row = null;
+    }
+    // }}}
+
+    // {{{ current()
+
+    /**
+     * return a row of data
+     *
+     * @return void
+     * @access public
+     */
+    public function current()
+    {
+        if (null === $this->row) {
+            $row = $this->result->fetchRow($this->fetchmode);
+            if (PEAR::isError($row)) {
+                $row = false;
+            }
+            $this->row = $row;
+        }
+        return $this->row;
+    }
+    // }}}
+
+    // {{{ valid()
+
+    /**
+     * Check if the end of the result set has been reached
+     *
+     * @return bool true/false, false is also returned on failure
+     * @access public
+     */
+    public function valid()
+    {
+        return (bool)$this->current();
+    }
+    // }}}
+
+    // {{{ free()
+
+    /**
+     * Free the internal resources associated with result.
+     *
+     * @return bool|MDB2_Error true on success, false|MDB2_Error if result is invalid
+     * @access public
+     */
+    public function free()
+    {
+        if ($this->result) {
+            return $this->result->free();
+        }
+        $this->result = false;
+        $this->row = null;
+        return false;
+    }
+    // }}}
+
+    // {{{ key()
+
+    /**
+     * Returns the row number
+     *
+     * @return int|bool|MDB2_Error true on success, false|MDB2_Error if result is invalid
+     * @access public
+     */
+    public function key()
+    {
+        if ($this->result) {
+            return $this->result->rowCount();
+        }
+        return false;
+    }
+    // }}}
+
+    // {{{ rewind()
+
+    /**
+     * Seek to the first row in a result set
+     *
+     * @return void
+     * @access public
+     */
+    public function rewind()
+    {
+    }
+    // }}}
+
+    // {{{ destructor
+
+    /**
+     * Destructor
+     */
+    public function __destruct()
+    {
+        $this->free();
+    }
+    // }}}
+}
+
+/**
+ * PHP5 buffered Iterator
+ *
+ * @package  MDB2
+ * @category Database
+ * @author   Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_BufferedIterator extends MDB2_Iterator implements SeekableIterator
+{
+    // {{{ valid()
+
+    /**
+     * Check if the end of the result set has been reached
+     *
+     * @return bool|MDB2_Error true on success, false|MDB2_Error if result is invalid
+     * @access public
+     */
+    public function valid()
+    {
+        if ($this->result) {
+            return $this->result->valid();
+        }
+        return false;
+    }
+    // }}}
+
+    // {{{count()
+
+    /**
+     * Returns the number of rows in a result object
+     *
+     * @return int|MDB2_Error number of rows, false|MDB2_Error if result is invalid
+     * @access public
+     */
+    public function count()
+    {
+        if ($this->result) {
+            return $this->result->numRows();
+        }
+        return false;
+    }
+    // }}}
+
+    // {{{ rewind()
+
+    /**
+     * Seek to the first row in a result set
+     *
+     * @return void
+     * @access public
+     */
+    public function rewind()
+    {
+        $this->seek(0);
+    }
+    // }}}
+}
+
+?>
\ No newline at end of file
diff --git a/program/lib/MDB2/LOB.php b/program/lib/MDB2/LOB.php
new file mode 100644 (file)
index 0000000..ff2342d
--- /dev/null
@@ -0,0 +1,264 @@
+<?php
+// +----------------------------------------------------------------------+
+// | PHP version 5                                                        |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1998-2006 Manuel Lemos, Tomas V.V.Cox,                 |
+// | Stig. S. Bakken, Lukas Smith                                         |
+// | All rights reserved.                                                 |
+// +----------------------------------------------------------------------+
+// | MDB2 is a merge of PEAR DB and Metabases that provides a unified DB  |
+// | API as well as database abstraction for PHP applications.            |
+// | This LICENSE is in the BSD license style.                            |
+// |                                                                      |
+// | 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 Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken,    |
+// | Lukas Smith nor the names of his 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      |
+// | REGENTS 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: Lukas Smith <smith@pooteeweet.org>                           |
+// +----------------------------------------------------------------------+
+//
+// $Id: LOB.php 222350 2006-10-25 11:52:21Z lsmith $
+
+/**
+ * @package  MDB2
+ * @category Database
+ * @author   Lukas Smith <smith@pooteeweet.org>
+ */
+
+require_once 'MDB2.php';
+
+/**
+ * MDB2_LOB: user land stream wrapper implementation for LOB support
+ *
+ * @package MDB2
+ * @category Database
+ * @author Lukas Smith <smith@pooteeweet.org>
+ */
+class MDB2_LOB
+{
+    /**
+     * contains the key to the global MDB2 instance array of the associated
+     * MDB2 instance
+     *
+     * @var integer
+     * @access protected
+     */
+    var $db_index;
+
+    /**
+     * contains the key to the global MDB2_LOB instance array of the associated
+     * MDB2_LOB instance
+     *
+     * @var integer
+     * @access protected
+     */
+    var $lob_index;
+
+    // {{{ stream_open()
+
+    /**
+     * open stream
+     *
+     * @param string specifies the URL that was passed to fopen()
+     * @param string the mode used to open the file
+     * @param int holds additional flags set by the streams API
+     * @param string not used
+     *
+     * @return bool
+     * @access public
+     */
+    function stream_open($path, $mode, $options, &$opened_path)
+    {
+        if (!preg_match('/^rb?\+?$/', $mode)) {
+            return false;
+        }
+        $url = parse_url($path);
+        if (empty($url['host'])) {
+            return false;
+        }
+        $this->db_index = (int)$url['host'];
+        if (!isset($GLOBALS['_MDB2_databases'][$this->db_index])) {
+            return false;
+        }
+        $db =& $GLOBALS['_MDB2_databases'][$this->db_index];
+        $this->lob_index = (int)$url['user'];
+        if (!isset($db->datatype->lobs[$this->lob_index])) {
+            return false;
+        }
+        return true;
+    }
+    // }}}
+
+    // {{{ stream_read()
+
+    /**
+     * read stream
+     *
+     * @param int number of bytes to read
+     *
+     * @return string
+     * @access public
+     */
+    function stream_read($count)
+    {
+        if (isset($GLOBALS['_MDB2_databases'][$this->db_index])) {
+            $db =& $GLOBALS['_MDB2_databases'][$this->db_index];
+            $db->datatype->_retrieveLOB($db->datatype->lobs[$this->lob_index]);
+
+            $data = $db->datatype->_readLOB($db->datatype->lobs[$this->lob_index], $count);
+            $length = strlen($data);
+            if ($length == 0) {
+                $db->datatype->lobs[$this->lob_index]['endOfLOB'] = true;
+            }
+            $db->datatype->lobs[$this->lob_index]['position'] += $length;
+            return $data;
+        }
+    }
+    // }}}
+
+    // {{{ stream_write()
+
+    /**
+     * write stream, note implemented
+     *
+     * @param string data
+     *
+     * @return int
+     * @access public
+     */
+    function stream_write($data)
+    {
+        return 0;
+    }
+    // }}}
+
+    // {{{ stream_tell()
+
+    /**
+     * return the current position
+     *
+     * @return int current position
+     * @access public
+     */
+    function stream_tell()
+    {
+        if (isset($GLOBALS['_MDB2_databases'][$this->db_index])) {
+            $db =& $GLOBALS['_MDB2_databases'][$this->db_index];
+            return $db->datatype->lobs[$this->lob_index]['position'];
+        }
+    }
+    // }}}
+
+    // {{{ stream_eof()
+
+    /**
+     * Check if stream reaches EOF
+     *
+     * @return bool
+     * @access public
+     */
+    function stream_eof()
+    {
+        if (!isset($GLOBALS['_MDB2_databases'][$this->db_index])) {
+            return true;
+        }
+
+        $db =& $GLOBALS['_MDB2_databases'][$this->db_index];
+        $result = $db->datatype->_endOfLOB($db->datatype->lobs[$this->lob_index]);
+        if (version_compare(phpversion(), "5.0", ">=")
+            && version_compare(phpversion(), "5.1", "<")
+        ) {
+            return !$result;
+        }
+        return $result;
+    }
+    // }}}
+
+    // {{{ stream_seek()
+
+    /**
+     * Seek stream, not implemented
+     *
+     * @param int offset
+     * @param int whence
+     *
+     * @return bool
+     * @access public
+     */
+    function stream_seek($offset, $whence)
+    {
+        return false;
+    }
+    // }}}
+
+    // {{{ stream_stat()
+
+    /**
+     * return information about stream
+     *
+     * @access public
+     */
+    function stream_stat()
+    {
+        if (isset($GLOBALS['_MDB2_databases'][$this->db_index])) {
+            $db =& $GLOBALS['_MDB2_databases'][$this->db_index];
+            return array(
+              'db_index' => $this->db_index,
+              'lob_index' => $this->lob_index,
+            );
+        }
+    }
+    // }}}
+
+    // {{{ stream_close()
+
+    /**
+     * close stream
+     *
+     * @access public
+     */
+    function stream_close()
+    {
+        if (isset($GLOBALS['_MDB2_databases'][$this->db_index])) {
+            $db =& $GLOBALS['_MDB2_databases'][$this->db_index];
+            if (isset($db->datatype->lobs[$this->lob_index])) {
+                $db->datatype->_destroyLOB($db->datatype->lobs[$this->lob_index]);
+                unset($db->datatype->lobs[$this->lob_index]);
+            }
+        }
+    }
+    // }}}
+}
+
+// register streams wrapper
+if (!stream_wrapper_register("MDB2LOB", "MDB2_LOB")) {
+    MDB2::raiseError();
+    return false;
+}
+
+?>
diff --git a/program/lib/Mail/mime.php b/program/lib/Mail/mime.php
new file mode 100644 (file)
index 0000000..76c6ec2
--- /dev/null
@@ -0,0 +1,1476 @@
+<?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   1.8.5
+ * @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: 1.8.5
+ * @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 (PEAR::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 (PEAR::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 (PEAR::isError($filedata = $this->_file2str($file))) {
+                    return $filedata;
+                }
+            }
+            $filename = ($name ? $name : $file);
+        } else {
+            $filedata = $file;
+            $filename = $name;
+        }
+
+        if (!$content_id) {
+            $content_id = md5(uniqid(time()));
+        }
+
+        $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 (PEAR::isError($filedata = $this->_file2str($file))) {
+                    return $filedata;
+                }
+            }
+            // Force the name the user supplied, otherwise use $file
+            $filename = ($name ? $name : $file);
+        } else {
+            $filedata = $file;
+            $filename = $name;
+        }
+
+        if (!strlen($filename)) {
+            $msg = "The supplied filename for the attachment can't be empty";
+            $err = PEAR::raiseError($msg);
+            return $err;
+        }
+        $filename = $this->_basename($filename);
+
+        $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)) {
+            $err = PEAR::raiseError('File not found: ' . $file_name);
+            return $err;
+        }
+        if (!is_file($file_name)) {
+            $err = PEAR::raiseError('Not a regular file: ' . $file_name);
+            return $err;
+        }
+        if (!is_readable($file_name)) {
+            $err = PEAR::raiseError('File is not readable: ' . $file_name);
+            return $err;
+        }
+
+        // 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, $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);
+            return $ret;
+        } 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)
+    {
+        $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);
+            return $ret;
+        } 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                 = array();
+        $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)
+    {
+        $params['content_type'] = 'multipart/alternative';
+        $params['eol']          = $this->_build_params['eol'];
+
+        if (is_object($obj)) {
+            return $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)
+    {
+        $params['content_type'] = 'multipart/related';
+        $params['eol']          = $this->_build_params['eol'];
+
+        if (is_object($obj)) {
+            return $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() function.
+     *                           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 (PEAR::isError($body)) {
+            return $body;
+        }
+
+        $head = $this->txtHeaders($headers, $overwrite);
+        $mail = $head . $separation . $body;
+        return $mail;
+    }
+
+    /**
+     * 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() function. 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() function. 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)) {
+            $err = PEAR::raiseError('File is not writable: ' . $filename);
+            return $err;
+        }
+
+        // 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'))) {
+            $err = PEAR::raiseError('Unable to open file: ' . $filename);
+            return $err;
+        }
+
+        // Write message headers into file (skipping Content-* headers)
+        $head = $this->txtHeaders($headers, $overwrite, true);
+        if (fwrite($fh, $head) === false) {
+            $err = PEAR::raiseError('Error writing to file: ' . $filename);
+            return $err;
+        }
+
+        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() function. 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)) {
+            $err = PEAR::raiseError('File is not writable: ' . $filename);
+            return $err;
+        }
+
+        // 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'))) {
+            $err = PEAR::raiseError('Unable to open file: ' . $filename);
+            return $err;
+        }
+
+        // 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)) {
+            $ret = null;
+            return $ret;
+        }
+
+        // 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 (PEAR::isError($headers)) {
+                return $headers;
+            }
+            $this->_headers = array_merge($this->_headers, $headers);
+            $ret = null;
+            return $ret;
+        } else {
+            $output = $message->encode($boundary, $skip_head);
+            if (PEAR::isError($output)) {
+                return $output;
+            }
+            $this->_headers = array_merge($this->_headers, $output['headers']);
+            $body = $output['body'];
+            return $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';
+        }
+    }
+
+} // End of class
diff --git a/program/lib/Mail/mimeDecode.php b/program/lib/Mail/mimeDecode.php
new file mode 100644 (file)
index 0000000..677d245
--- /dev/null
@@ -0,0 +1,1003 @@
+<?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$
+ * @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: @package_version@
+ * @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
new file mode 100644 (file)
index 0000000..4e4170d
--- /dev/null
@@ -0,0 +1,1228 @@
+<?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   1.8.5
+ * @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: 1.8.5
+ * @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 (PEAR::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 (PEAR::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 = PEAR::raiseError('File is not writeable: ' . $filename);
+            return $err;
+        }
+
+        if (!($fh = fopen($filename, 'ab'))) {
+            $err = PEAR::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 PEAR::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 (PEAR::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 (PEAR::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. 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[] = new Mail_mimePart($body, $params);
+        return $this->_subparts[count($this->_subparts) - 1];
+    }
+
+    /**
+     * 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 = PEAR::raiseError('Unable to read file: ' . $filename);
+            return $err;
+        }
+
+        if (!($fd = fopen($filename, 'rb'))) {
+            $err = PEAR::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 paramater 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',
+            '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 seperated 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 seperated 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]));
+    }
+
+} // End of class
diff --git a/program/lib/Net/IDNA2.php b/program/lib/Net/IDNA2.php
new file mode 100644 (file)
index 0000000..8c366fb
--- /dev/null
@@ -0,0 +1,3402 @@
+<?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
new file mode 100644 (file)
index 0000000..72cb1ae
--- /dev/null
@@ -0,0 +1,4 @@
+<?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
new file mode 100644 (file)
index 0000000..44cbd6b
--- /dev/null
@@ -0,0 +1,6 @@
+<?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
new file mode 100644 (file)
index 0000000..2c1ef5c
--- /dev/null
@@ -0,0 +1,1338 @@
+<?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/Socket.php b/program/lib/Net/Socket.php
new file mode 100644 (file)
index 0000000..dd1047c
--- /dev/null
@@ -0,0 +1,653 @@
+<?php
+/**
+ * Net_Socket
+ *
+ * PHP Version 4
+ *
+ * Copyright (c) 1997-2003 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
+ * @version   CVS: $Id$
+ * @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 connections before assuming
+     * there's no more data. Defaults to no timeout.
+     * @var integer $timeout
+     */
+    var $timeout = false;
+
+    /**
+     * 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.
+     * @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) How long to wait for data.
+     * @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');
+        } elseif (strspn($addr, '.0123456789') == strlen($addr) ||
+                  strstr($addr, '/') !== false) {
+            $this->addr = $addr;
+        } else {
+            $this->addr = @gethostbyname($addr);
+        }
+
+        $this->port = $port % 65536;
+
+        if ($persistent !== null) {
+            $this->persistent = $persistent;
+        }
+
+        if ($timeout !== null) {
+            $this->timeout = $timeout;
+        }
+
+        $openfunc = $this->persistent ? 'pfsockopen' : 'fsockopen';
+        $errno    = 0;
+        $errstr   = '';
+
+        $old_track_errors = @ini_set('track_errors', 1);
+
+        if ($options && function_exists('stream_context_create')) {
+            if ($this->timeout) {
+                $timeout = $this->timeout;
+            } else {
+                $timeout = 0;
+            }
+            $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 {
+            if ($this->timeout) {
+                $fp = @$openfunc($this->addr, $this->port, $errno,
+                                 $errstr, $this->timeout);
+            } else {
+                $fp = @$openfunc($this->addr, $this->port, $errno, $errstr);
+            }
+        }
+
+        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;
+
+        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.
+     *
+     * @access public
+     * @return mixed true on success or a PEAR_Error instance otherwise
+     */
+    function setTimeout($seconds, $microseconds)
+    {
+        if (!is_resource($this->fp)) {
+            return $this->raiseError('not connected');
+        }
+
+        return socket_set_timeout($this->fp, $seconds, $microseconds);
+    }
+
+    /**
+     * 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 socket_get_status($this->fp);
+    }
+
+    /**
+     * Get a specified line of data
+     *
+     * @param int $size ??
+     *
+     * @access public
+     * @return $size bytes of data from the socket, or a PEAR_Error if
+     *         not connected.
+     */
+    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.
+     */
+    function write($data, $blocksize = null)
+    {
+        if (!is_resource($this->fp)) {
+            return $this->raiseError('not connected');
+        }
+
+        if (is_null($blocksize) && !OS_WINDOWS) {
+            return @fwrite($this->fp, $data);
+        } else {
+            if (is_null($blocksize)) {
+                $blocksize = 1024;
+            }
+
+            $pos  = 0;
+            $size = strlen($data);
+            while ($pos < $size) {
+                $written = @fwrite($this->fp, substr($data, $pos, $blocksize));
+                if (!$written) {
+                    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 fputs result, or an error
+     */
+    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
new file mode 100644 (file)
index 0000000..f4dfd96
--- /dev/null
@@ -0,0 +1,1137 @@
+<?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
new file mode 100644 (file)
index 0000000..4286067
--- /dev/null
@@ -0,0 +1,33 @@
+<?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/des.inc b/program/lib/des.inc
new file mode 100644 (file)
index 0000000..00ecd68
--- /dev/null
@@ -0,0 +1,218 @@
+<?php
+
+//PHP version
+//Paul Tero, July 2001
+//http://www.shopable.co.uk/des.html
+//
+//Optimised for performance with large blocks by Michael Hayworth, November 2001
+//http://www.netdealing.com
+//
+//Converted from JavaScript to PHP by Jim Gibbs, June 2004
+//
+//THIS SOFTWARE IS PROVIDED "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 AUTHOR 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.
+
+//des
+//this takes the key, the message, and whether to encrypt or decrypt
+function des ($key, $message, $encrypt, $mode, $iv) {
+  //declaring this locally speeds things up a bit
+  $spfunction1 = array (0x1010400,0,0x10000,0x1010404,0x1010004,0x10404,0x4,0x10000,0x400,0x1010400,0x1010404,0x400,0x1000404,0x1010004,0x1000000,0x4,0x404,0x1000400,0x1000400,0x10400,0x10400,0x1010000,0x1010000,0x1000404,0x10004,0x1000004,0x1000004,0x10004,0,0x404,0x10404,0x1000000,0x10000,0x1010404,0x4,0x1010000,0x1010400,0x1000000,0x1000000,0x400,0x1010004,0x10000,0x10400,0x1000004,0x400,0x4,0x1000404,0x10404,0x1010404,0x10004,0x1010000,0x1000404,0x1000004,0x404,0x10404,0x1010400,0x404,0x1000400,0x1000400,0,0x10004,0x10400,0,0x1010004);
+  $spfunction2 = array (-0x7fef7fe0,-0x7fff8000,0x8000,0x108020,0x100000,0x20,-0x7fefffe0,-0x7fff7fe0,-0x7fffffe0,-0x7fef7fe0,-0x7fef8000,-0x80000000,-0x7fff8000,0x100000,0x20,-0x7fefffe0,0x108000,0x100020,-0x7fff7fe0,0,-0x80000000,0x8000,0x108020,-0x7ff00000,0x100020,-0x7fffffe0,0,0x108000,0x8020,-0x7fef8000,-0x7ff00000,0x8020,0,0x108020,-0x7fefffe0,0x100000,-0x7fff7fe0,-0x7ff00000,-0x7fef8000,0x8000,-0x7ff00000,-0x7fff8000,0x20,-0x7fef7fe0,0x108020,0x20,0x8000,-0x80000000,0x8020,-0x7fef8000,0x100000,-0x7fffffe0,0x100020,-0x7fff7fe0,-0x7fffffe0,0x100020,0x108000,0,-0x7fff8000,0x8020,-0x80000000,-0x7fefffe0,-0x7fef7fe0,0x108000);
+  $spfunction3 = array (0x208,0x8020200,0,0x8020008,0x8000200,0,0x20208,0x8000200,0x20008,0x8000008,0x8000008,0x20000,0x8020208,0x20008,0x8020000,0x208,0x8000000,0x8,0x8020200,0x200,0x20200,0x8020000,0x8020008,0x20208,0x8000208,0x20200,0x20000,0x8000208,0x8,0x8020208,0x200,0x8000000,0x8020200,0x8000000,0x20008,0x208,0x20000,0x8020200,0x8000200,0,0x200,0x20008,0x8020208,0x8000200,0x8000008,0x200,0,0x8020008,0x8000208,0x20000,0x8000000,0x8020208,0x8,0x20208,0x20200,0x8000008,0x8020000,0x8000208,0x208,0x8020000,0x20208,0x8,0x8020008,0x20200);
+  $spfunction4 = array (0x802001,0x2081,0x2081,0x80,0x802080,0x800081,0x800001,0x2001,0,0x802000,0x802000,0x802081,0x81,0,0x800080,0x800001,0x1,0x2000,0x800000,0x802001,0x80,0x800000,0x2001,0x2080,0x800081,0x1,0x2080,0x800080,0x2000,0x802080,0x802081,0x81,0x800080,0x800001,0x802000,0x802081,0x81,0,0,0x802000,0x2080,0x800080,0x800081,0x1,0x802001,0x2081,0x2081,0x80,0x802081,0x81,0x1,0x2000,0x800001,0x2001,0x802080,0x800081,0x2001,0x2080,0x800000,0x802001,0x80,0x800000,0x2000,0x802080);
+  $spfunction5 = array (0x100,0x2080100,0x2080000,0x42000100,0x80000,0x100,0x40000000,0x2080000,0x40080100,0x80000,0x2000100,0x40080100,0x42000100,0x42080000,0x80100,0x40000000,0x2000000,0x40080000,0x40080000,0,0x40000100,0x42080100,0x42080100,0x2000100,0x42080000,0x40000100,0,0x42000000,0x2080100,0x2000000,0x42000000,0x80100,0x80000,0x42000100,0x100,0x2000000,0x40000000,0x2080000,0x42000100,0x40080100,0x2000100,0x40000000,0x42080000,0x2080100,0x40080100,0x100,0x2000000,0x42080000,0x42080100,0x80100,0x42000000,0x42080100,0x2080000,0,0x40080000,0x42000000,0x80100,0x2000100,0x40000100,0x80000,0,0x40080000,0x2080100,0x40000100);
+  $spfunction6 = array (0x20000010,0x20400000,0x4000,0x20404010,0x20400000,0x10,0x20404010,0x400000,0x20004000,0x404010,0x400000,0x20000010,0x400010,0x20004000,0x20000000,0x4010,0,0x400010,0x20004010,0x4000,0x404000,0x20004010,0x10,0x20400010,0x20400010,0,0x404010,0x20404000,0x4010,0x404000,0x20404000,0x20000000,0x20004000,0x10,0x20400010,0x404000,0x20404010,0x400000,0x4010,0x20000010,0x400000,0x20004000,0x20000000,0x4010,0x20000010,0x20404010,0x404000,0x20400000,0x404010,0x20404000,0,0x20400010,0x10,0x4000,0x20400000,0x404010,0x4000,0x400010,0x20004010,0,0x20404000,0x20000000,0x400010,0x20004010);
+  $spfunction7 = array (0x200000,0x4200002,0x4000802,0,0x800,0x4000802,0x200802,0x4200800,0x4200802,0x200000,0,0x4000002,0x2,0x4000000,0x4200002,0x802,0x4000800,0x200802,0x200002,0x4000800,0x4000002,0x4200000,0x4200800,0x200002,0x4200000,0x800,0x802,0x4200802,0x200800,0x2,0x4000000,0x200800,0x4000000,0x200800,0x200000,0x4000802,0x4000802,0x4200002,0x4200002,0x2,0x200002,0x4000000,0x4000800,0x200000,0x4200800,0x802,0x200802,0x4200800,0x802,0x4000002,0x4200802,0x4200000,0x200800,0,0x2,0x4200802,0,0x200802,0x4200000,0x800,0x4000002,0x4000800,0x800,0x200002);
+  $spfunction8 = array (0x10001040,0x1000,0x40000,0x10041040,0x10000000,0x10001040,0x40,0x10000000,0x40040,0x10040000,0x10041040,0x41000,0x10041000,0x41040,0x1000,0x40,0x10040000,0x10000040,0x10001000,0x1040,0x41000,0x40040,0x10040040,0x10041000,0x1040,0,0,0x10040040,0x10000040,0x10001000,0x41040,0x40000,0x41040,0x40000,0x10041000,0x1000,0x40,0x10040040,0x1000,0x41040,0x10001000,0x40,0x10000040,0x10040000,0x10040040,0x10000000,0x40000,0x10001040,0,0x10041040,0x40040,0x10000040,0x10040000,0x10001000,0x10001040,0,0x10041040,0x41000,0x41000,0x1040,0x1040,0x40040,0x10000000,0x10041000);
+  $masks = array (4294967295,2147483647,1073741823,536870911,268435455,134217727,67108863,33554431,16777215,8388607,4194303,2097151,1048575,524287,262143,131071,65535,32767,16383,8191,4095,2047,1023,511,255,127,63,31,15,7,3,1,0);
+
+  //create the 16 or 48 subkeys we will need
+  $keys = des_createKeys ($key);
+  $m=0;
+  $len = strlen($message);
+  $chunk = 0;
+  //set up the loops for single and triple des
+  $iterations = ((count($keys) == 32) ? 3 : 9); //single or triple des
+  if ($iterations == 3) {$looping = (($encrypt) ? array (0, 32, 2) : array (30, -2, -2));}
+  else {$looping = (($encrypt) ? array (0, 32, 2, 62, 30, -2, 64, 96, 2) : array (94, 62, -2, 32, 64, 2, 30, -2, -2));}
+
+  $message .= (chr(0) . chr(0) . chr(0) . chr(0) . chr(0) . chr(0) . chr(0) . chr(0)); //pad the message out with null bytes
+  //store the result here
+  $result = "";
+  $tempresult = "";
+
+  if ($mode == 1) { //CBC mode
+    $cbcleft = (ord($iv{$m++}) << 24) | (ord($iv{$m++}) << 16) | (ord($iv{$m++}) << 8) | ord($iv{$m++});
+    $cbcright = (ord($iv{$m++}) << 24) | (ord($iv{$m++}) << 16) | (ord($iv{$m++}) << 8) | ord($iv{$m++});
+    $m=0;
+  }
+
+  //loop through each 64 bit chunk of the message
+  while ($m < $len) {
+    $left = (ord($message{$m++}) << 24) | (ord($message{$m++}) << 16) | (ord($message{$m++}) << 8) | ord($message{$m++});
+    $right = (ord($message{$m++}) << 24) | (ord($message{$m++}) << 16) | (ord($message{$m++}) << 8) | ord($message{$m++});
+
+    //for Cipher Block Chaining mode, xor the message with the previous result
+    if ($mode == 1) {if ($encrypt) {$left ^= $cbcleft; $right ^= $cbcright;} else {$cbcleft2 = $cbcleft; $cbcright2 = $cbcright; $cbcleft = $left; $cbcright = $right;}}
+
+    //first each 64 but chunk of the message must be permuted according to IP
+    $temp = (($left >> 4 & $masks[4]) ^ $right) & 0x0f0f0f0f; $right ^= $temp; $left ^= ($temp << 4);
+    $temp = (($left >> 16 & $masks[16]) ^ $right) & 0x0000ffff; $right ^= $temp; $left ^= ($temp << 16);
+    $temp = (($right >> 2 & $masks[2]) ^ $left) & 0x33333333; $left ^= $temp; $right ^= ($temp << 2);
+    $temp = (($right >> 8 & $masks[8]) ^ $left) & 0x00ff00ff; $left ^= $temp; $right ^= ($temp << 8);
+    $temp = (($left >> 1 & $masks[1]) ^ $right) & 0x55555555; $right ^= $temp; $left ^= ($temp << 1);
+
+    $left = (($left << 1) | ($left >> 31 & $masks[31])); 
+    $right = (($right << 1) | ($right >> 31 & $masks[31])); 
+
+    //do this either 1 or 3 times for each chunk of the message
+    for ($j=0; $j<$iterations; $j+=3) {
+      $endloop = $looping[$j+1];
+      $loopinc = $looping[$j+2];
+      //now go through and perform the encryption or decryption  
+      for ($i=$looping[$j]; $i!=$endloop; $i+=$loopinc) { //for efficiency
+        $right1 = $right ^ $keys[$i]; 
+        $right2 = (($right >> 4 & $masks[4]) | ($right << 28)) ^ $keys[$i+1];
+        //the result is attained by passing these bytes through the S selection functions
+        $temp = $left;
+        $left = $right;
+        $right = $temp ^ ($spfunction2[($right1 >> 24 & $masks[24]) & 0x3f] | $spfunction4[($right1 >> 16 & $masks[16]) & 0x3f]
+              | $spfunction6[($right1 >>  8 & $masks[8]) & 0x3f] | $spfunction8[$right1 & 0x3f]
+              | $spfunction1[($right2 >> 24 & $masks[24]) & 0x3f] | $spfunction3[($right2 >> 16 & $masks[16]) & 0x3f]
+              | $spfunction5[($right2 >>  8 & $masks[8]) & 0x3f] | $spfunction7[$right2 & 0x3f]);
+      }
+      $temp = $left; $left = $right; $right = $temp; //unreverse left and right
+    } //for either 1 or 3 iterations
+
+    //move then each one bit to the right
+    $left = (($left >> 1 & $masks[1]) | ($left << 31)); 
+    $right = (($right >> 1 & $masks[1]) | ($right << 31)); 
+
+    //now perform IP-1, which is IP in the opposite direction
+    $temp = (($left >> 1 & $masks[1]) ^ $right) & 0x55555555; $right ^= $temp; $left ^= ($temp << 1);
+    $temp = (($right >> 8 & $masks[8]) ^ $left) & 0x00ff00ff; $left ^= $temp; $right ^= ($temp << 8);
+    $temp = (($right >> 2 & $masks[2]) ^ $left) & 0x33333333; $left ^= $temp; $right ^= ($temp << 2);
+    $temp = (($left >> 16 & $masks[16]) ^ $right) & 0x0000ffff; $right ^= $temp; $left ^= ($temp << 16);
+    $temp = (($left >> 4 & $masks[4]) ^ $right) & 0x0f0f0f0f; $right ^= $temp; $left ^= ($temp << 4);
+
+    //for Cipher Block Chaining mode, xor the message with the previous result
+    if ($mode == 1) {if ($encrypt) {$cbcleft = $left; $cbcright = $right;} else {$left ^= $cbcleft2; $right ^= $cbcright2;}}
+    $tempresult .= (chr($left>>24 & $masks[24]) . chr(($left>>16 & $masks[16]) & 0xff) . chr(($left>>8 & $masks[8]) & 0xff) . chr($left & 0xff) . chr($right>>24 & $masks[24]) . chr(($right>>16 & $masks[16]) & 0xff) . chr(($right>>8 & $masks[8]) & 0xff) . chr($right & 0xff));
+
+    $chunk += 8;
+    if ($chunk == 512) {$result .= $tempresult; $tempresult = ""; $chunk = 0;}
+  } //for every 8 characters, or 64 bits in the message
+
+  //return the result as an array
+  return ($result . $tempresult);
+} //end of des
+
+//des_createKeys
+//this takes as input a 64 bit key (even though only 56 bits are used)
+//as an array of 2 integers, and returns 16 48 bit keys
+function des_createKeys ($key) {
+  //declaring this locally speeds things up a bit
+  $pc2bytes0  = array (0,0x4,0x20000000,0x20000004,0x10000,0x10004,0x20010000,0x20010004,0x200,0x204,0x20000200,0x20000204,0x10200,0x10204,0x20010200,0x20010204);
+  $pc2bytes1  = array (0,0x1,0x100000,0x100001,0x4000000,0x4000001,0x4100000,0x4100001,0x100,0x101,0x100100,0x100101,0x4000100,0x4000101,0x4100100,0x4100101);
+  $pc2bytes2  = array (0,0x8,0x800,0x808,0x1000000,0x1000008,0x1000800,0x1000808,0,0x8,0x800,0x808,0x1000000,0x1000008,0x1000800,0x1000808);
+  $pc2bytes3  = array (0,0x200000,0x8000000,0x8200000,0x2000,0x202000,0x8002000,0x8202000,0x20000,0x220000,0x8020000,0x8220000,0x22000,0x222000,0x8022000,0x8222000);
+  $pc2bytes4  = array (0,0x40000,0x10,0x40010,0,0x40000,0x10,0x40010,0x1000,0x41000,0x1010,0x41010,0x1000,0x41000,0x1010,0x41010);
+  $pc2bytes5  = array (0,0x400,0x20,0x420,0,0x400,0x20,0x420,0x2000000,0x2000400,0x2000020,0x2000420,0x2000000,0x2000400,0x2000020,0x2000420);
+  $pc2bytes6  = array (0,0x10000000,0x80000,0x10080000,0x2,0x10000002,0x80002,0x10080002,0,0x10000000,0x80000,0x10080000,0x2,0x10000002,0x80002,0x10080002);
+  $pc2bytes7  = array (0,0x10000,0x800,0x10800,0x20000000,0x20010000,0x20000800,0x20010800,0x20000,0x30000,0x20800,0x30800,0x20020000,0x20030000,0x20020800,0x20030800);
+  $pc2bytes8  = array (0,0x40000,0,0x40000,0x2,0x40002,0x2,0x40002,0x2000000,0x2040000,0x2000000,0x2040000,0x2000002,0x2040002,0x2000002,0x2040002);
+  $pc2bytes9  = array (0,0x10000000,0x8,0x10000008,0,0x10000000,0x8,0x10000008,0x400,0x10000400,0x408,0x10000408,0x400,0x10000400,0x408,0x10000408);
+  $pc2bytes10 = array (0,0x20,0,0x20,0x100000,0x100020,0x100000,0x100020,0x2000,0x2020,0x2000,0x2020,0x102000,0x102020,0x102000,0x102020);
+  $pc2bytes11 = array (0,0x1000000,0x200,0x1000200,0x200000,0x1200000,0x200200,0x1200200,0x4000000,0x5000000,0x4000200,0x5000200,0x4200000,0x5200000,0x4200200,0x5200200);
+  $pc2bytes12 = array (0,0x1000,0x8000000,0x8001000,0x80000,0x81000,0x8080000,0x8081000,0x10,0x1010,0x8000010,0x8001010,0x80010,0x81010,0x8080010,0x8081010);
+  $pc2bytes13 = array (0,0x4,0x100,0x104,0,0x4,0x100,0x104,0x1,0x5,0x101,0x105,0x1,0x5,0x101,0x105);
+  $masks = array (4294967295,2147483647,1073741823,536870911,268435455,134217727,67108863,33554431,16777215,8388607,4194303,2097151,1048575,524287,262143,131071,65535,32767,16383,8191,4095,2047,1023,511,255,127,63,31,15,7,3,1,0);
+
+  //how many iterations (1 for des, 3 for triple des)
+  $iterations = ((strlen($key) >= 24) ? 3 : 1);
+  //stores the return keys
+  $keys = array (); // size = 32 * iterations but you don't specify this in php
+  //now define the left shifts which need to be done
+  $shifts = array (0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0);
+  //other variables
+  $m=0;
+  $n=0;
+
+  for ($j=0; $j<$iterations; $j++) { //either 1 or 3 iterations
+    $left = (ord($key{$m++}) << 24) | (ord($key{$m++}) << 16) | (ord($key{$m++}) << 8) | ord($key{$m++});
+    $right = (ord($key{$m++}) << 24) | (ord($key{$m++}) << 16) | (ord($key{$m++}) << 8) | ord($key{$m++});
+
+    $temp = (($left >> 4 & $masks[4]) ^ $right) & 0x0f0f0f0f; $right ^= $temp; $left ^= ($temp << 4);
+    $temp = (($right >> 16 & $masks[16]) ^ $left) & 0x0000ffff; $left ^= $temp; $right ^= ($temp << -16);
+    $temp = (($left >> 2 & $masks[2]) ^ $right) & 0x33333333; $right ^= $temp; $left ^= ($temp << 2);
+    $temp = (($right >> 16 & $masks[16]) ^ $left) & 0x0000ffff; $left ^= $temp; $right ^= ($temp << -16);
+    $temp = (($left >> 1 & $masks[1]) ^ $right) & 0x55555555; $right ^= $temp; $left ^= ($temp << 1);
+    $temp = (($right >> 8 & $masks[8]) ^ $left) & 0x00ff00ff; $left ^= $temp; $right ^= ($temp << 8);
+    $temp = (($left >> 1 & $masks[1]) ^ $right) & 0x55555555; $right ^= $temp; $left ^= ($temp << 1);
+
+    //the right side needs to be shifted and to get the last four bits of the left side
+    $temp = ($left << 8) | (($right >> 20 & $masks[20]) & 0x000000f0);
+    //left needs to be put upside down
+    $left = ($right << 24) | (($right << 8) & 0xff0000) | (($right >> 8 & $masks[8]) & 0xff00) | (($right >> 24 & $masks[24]) & 0xf0);
+    $right = $temp;
+
+    //now go through and perform these shifts on the left and right keys
+    for ($i=0; $i < count($shifts); $i++) {
+      //shift the keys either one or two bits to the left
+      if ($shifts[$i] > 0) {
+         $left = (($left << 2) | ($left >> 26 & $masks[26]));
+         $right = (($right << 2) | ($right >> 26 & $masks[26]));
+      } else {
+         $left = (($left << 1) | ($left >> 27 & $masks[27]));
+         $right = (($right << 1) | ($right >> 27 & $masks[27]));
+      }
+      $left = $left & -0xf;
+      $right = $right & -0xf;
+
+      //now apply PC-2, in such a way that E is easier when encrypting or decrypting
+      //this conversion will look like PC-2 except only the last 6 bits of each byte are used
+      //rather than 48 consecutive bits and the order of lines will be according to 
+      //how the S selection functions will be applied: S2, S4, S6, S8, S1, S3, S5, S7
+      $lefttemp = $pc2bytes0[$left >> 28 & $masks[28]] | $pc2bytes1[($left >> 24 & $masks[24]) & 0xf]
+              | $pc2bytes2[($left >> 20 & $masks[20]) & 0xf] | $pc2bytes3[($left >> 16 & $masks[16]) & 0xf]
+              | $pc2bytes4[($left >> 12 & $masks[12]) & 0xf] | $pc2bytes5[($left >> 8 & $masks[8]) & 0xf]
+              | $pc2bytes6[($left >> 4 & $masks[4]) & 0xf];
+      $righttemp = $pc2bytes7[$right >> 28 & $masks[28]] | $pc2bytes8[($right >> 24 & $masks[24]) & 0xf]
+                | $pc2bytes9[($right >> 20 & $masks[20]) & 0xf] | $pc2bytes10[($right >> 16 & $masks[16]) & 0xf]
+                | $pc2bytes11[($right >> 12 & $masks[12]) & 0xf] | $pc2bytes12[($right >> 8 & $masks[8]) & 0xf]
+                | $pc2bytes13[($right >> 4 & $masks[4]) & 0xf];
+      $temp = (($righttemp >> 16 & $masks[16]) ^ $lefttemp) & 0x0000ffff; 
+      $keys[$n++] = $lefttemp ^ $temp; $keys[$n++] = $righttemp ^ ($temp << 16);
+    }
+  } //for each iterations
+  //return the keys we've created
+  return $keys;
+} //end of des_createKeys
+
+/*
+////////////////////////////// TEST //////////////////////////////
+function stringToHex ($s) {
+  $r = "0x";
+  $hexes = array ("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f");
+  for ($i=0; $i<strlen($s); $i++) {$r .= ($hexes [(ord($s{$i}) >> 4)] . $hexes [(ord($s{$i}) & 0xf)]);}
+  return $r;
+}
+echo "<PRE>";
+$key = "this is a 24 byte key !!";
+$message = "This is a test message";
+$ciphertext = des ($key, $message, 1, 0, null);
+echo "DES Test Encrypted: " . stringToHex ($ciphertext);
+$recovered_message = des ($key, $ciphertext, 0, 0, null);
+echo "\n";
+echo "DES Test Decrypted: " . $recovered_message;
+*/
+?>
\ No newline at end of file
diff --git a/program/lib/encoding/CP1250.map b/program/lib/encoding/CP1250.map
new file mode 100644 (file)
index 0000000..081d776
--- /dev/null
@@ -0,0 +1,274 @@
+#
+#    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
new file mode 100644 (file)
index 0000000..e7d4f2c
--- /dev/null
@@ -0,0 +1,274 @@
+#
+#    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
new file mode 100644 (file)
index 0000000..2ca4486
--- /dev/null
@@ -0,0 +1,274 @@
+#
+#    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
new file mode 100644 (file)
index 0000000..2ba51a0
--- /dev/null
@@ -0,0 +1,274 @@
+#
+#    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
new file mode 100644 (file)
index 0000000..ca1a1eb
--- /dev/null
@@ -0,0 +1,274 @@
+#
+#    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
new file mode 100644 (file)
index 0000000..341517f
--- /dev/null
@@ -0,0 +1,274 @@
+#
+#    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
new file mode 100644 (file)
index 0000000..0edd081
--- /dev/null
@@ -0,0 +1,274 @@
+#
+#    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
new file mode 100644 (file)
index 0000000..97979d9
--- /dev/null
@@ -0,0 +1,274 @@
+#
+#    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
new file mode 100644 (file)
index 0000000..392310a
--- /dev/null
@@ -0,0 +1,274 @@
+#
+#    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
new file mode 100644 (file)
index 0000000..473ecab
--- /dev/null
@@ -0,0 +1,303 @@
+#
+#      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
new file mode 100644 (file)
index 0000000..374a42b
--- /dev/null
@@ -0,0 +1,303 @@
+#
+#      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
new file mode 100644 (file)
index 0000000..192bd9d
--- /dev/null
@@ -0,0 +1,297 @@
+#
+#      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
new file mode 100644 (file)
index 0000000..cd11b53
--- /dev/null
@@ -0,0 +1,299 @@
+#
+#      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
new file mode 100644 (file)
index 0000000..73e9855
--- /dev/null
@@ -0,0 +1,301 @@
+#
+#      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
new file mode 100644 (file)
index 0000000..ab2f32f
--- /dev/null
@@ -0,0 +1,303 @@
+#
+#      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
new file mode 100644 (file)
index 0000000..c0dcf0d
--- /dev/null
@@ -0,0 +1,299 @@
+#
+#      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
new file mode 100644 (file)
index 0000000..e45df25
--- /dev/null
@@ -0,0 +1,303 @@
+#
+#      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
new file mode 100644 (file)
index 0000000..9b6ac69
--- /dev/null
@@ -0,0 +1,296 @@
+#
+#      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
new file mode 100644 (file)
index 0000000..662e698
--- /dev/null
@@ -0,0 +1,303 @@
+#
+#      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
new file mode 100644 (file)
index 0000000..a7ed1ce
--- /dev/null
@@ -0,0 +1,303 @@
+#
+#      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
new file mode 100644 (file)
index 0000000..69ac7f5
--- /dev/null
@@ -0,0 +1,260 @@
+#
+#      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
new file mode 100644 (file)
index 0000000..bc46b74
--- /dev/null
@@ -0,0 +1,308 @@
+#
+#      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
new file mode 100644 (file)
index 0000000..bc8da4c
--- /dev/null
@@ -0,0 +1,270 @@
+#
+#      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
new file mode 100644 (file)
index 0000000..22901f1
--- /dev/null
@@ -0,0 +1,307 @@
+#
+#      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
new file mode 100644 (file)
index 0000000..4a17d18
--- /dev/null
@@ -0,0 +1,302 @@
+#\r
+#      Name:             KOI8-R (RFC1489) to Unicode\r
+#      Unicode version:  3.0\r
+#      Table version:    1.0\r
+#      Table format:     Format A\r
+#      Date:             18 August 1999\r
+#      Authors:          Helmut Richter <richter@lrz.de>\r
+#\r
+#      Copyright (c) 1991-1999 Unicode, Inc.  All Rights reserved.\r
+#\r
+#      This file is provided as-is by Unicode, Inc. (The Unicode Consortium).\r
+#      No claims are made as to fitness for any particular purpose.  No\r
+#      warranties of any kind are expressed or implied.  The recipient\r
+#      agrees to determine applicability of information provided.  If this\r
+#      file has been provided on optical media by Unicode, Inc., the sole\r
+#      remedy for any claim will be exchange of defective media within 90\r
+#      days of receipt.\r
+#\r
+#      Unicode, Inc. hereby grants the right to freely use the information\r
+#      supplied in this file in the creation of products supporting the\r
+#      Unicode Standard, and to make copies of this file in any form for\r
+#      internal or external distribution as long as this notice remains\r
+#      attached.\r
+#\r
+#      General notes:\r
+#\r
+#      This table contains the data the Unicode Consortium has on how\r
+#       KOI8-R characters map into Unicode. The underlying document is the\r
+#      mapping described in RFC 1489. No statements are made as to whether\r
+#      this mapping is the same as the mapping defined as "Code Page 878"\r
+#      with some vendors.\r
+#\r
+#      Format:  Three tab-separated columns\r
+#               Column #1 is the KOI8-R code (in hex as 0xXX)\r
+#               Column #2 is the Unicode (in hex as 0xXXXX)\r
+#               Column #3 the Unicode name (follows a comment sign, '#')\r
+#\r
+#      The entries are in KOI8-R order.\r
+#\r
+#      Version history\r
+#      1.0 version: created.\r
+#\r
+#      Any comments or problems, contact <errata@unicode.org>\r
+#      Please note that <errata@unicode.org> is an archival address;\r
+#      notices will be checked, but do not expect an immediate response.\r
+#\r
+0x00   0x0000  #       NULL\r
+0x01   0x0001  #       START OF HEADING\r
+0x02   0x0002  #       START OF TEXT\r
+0x03   0x0003  #       END OF TEXT\r
+0x04   0x0004  #       END OF TRANSMISSION\r
+0x05   0x0005  #       ENQUIRY\r
+0x06   0x0006  #       ACKNOWLEDGE\r
+0x07   0x0007  #       BELL\r
+0x08   0x0008  #       BACKSPACE\r
+0x09   0x0009  #       HORIZONTAL TABULATION\r
+0x0A   0x000A  #       LINE FEED\r
+0x0B   0x000B  #       VERTICAL TABULATION\r
+0x0C   0x000C  #       FORM FEED\r
+0x0D   0x000D  #       CARRIAGE RETURN\r
+0x0E   0x000E  #       SHIFT OUT\r
+0x0F   0x000F  #       SHIFT IN\r
+0x10   0x0010  #       DATA LINK ESCAPE\r
+0x11   0x0011  #       DEVICE CONTROL ONE\r
+0x12   0x0012  #       DEVICE CONTROL TWO\r
+0x13   0x0013  #       DEVICE CONTROL THREE\r
+0x14   0x0014  #       DEVICE CONTROL FOUR\r
+0x15   0x0015  #       NEGATIVE ACKNOWLEDGE\r
+0x16   0x0016  #       SYNCHRONOUS IDLE\r
+0x17   0x0017  #       END OF TRANSMISSION BLOCK\r
+0x18   0x0018  #       CANCEL\r
+0x19   0x0019  #       END OF MEDIUM\r
+0x1A   0x001A  #       SUBSTITUTE\r
+0x1B   0x001B  #       ESCAPE\r
+0x1C   0x001C  #       FILE SEPARATOR\r
+0x1D   0x001D  #       GROUP SEPARATOR\r
+0x1E   0x001E  #       RECORD SEPARATOR\r
+0x1F   0x001F  #       UNIT SEPARATOR\r
+0x20   0x0020  #       SPACE\r
+0x21   0x0021  #       EXCLAMATION MARK\r
+0x22   0x0022  #       QUOTATION MARK\r
+0x23   0x0023  #       NUMBER SIGN\r
+0x24   0x0024  #       DOLLAR SIGN\r
+0x25   0x0025  #       PERCENT SIGN\r
+0x26   0x0026  #       AMPERSAND\r
+0x27   0x0027  #       APOSTROPHE\r
+0x28   0x0028  #       LEFT PARENTHESIS\r
+0x29   0x0029  #       RIGHT PARENTHESIS\r
+0x2A   0x002A  #       ASTERISK\r
+0x2B   0x002B  #       PLUS SIGN\r
+0x2C   0x002C  #       COMMA\r
+0x2D   0x002D  #       HYPHEN-MINUS\r
+0x2E   0x002E  #       FULL STOP\r
+0x2F   0x002F  #       SOLIDUS\r
+0x30   0x0030  #       DIGIT ZERO\r
+0x31   0x0031  #       DIGIT ONE\r
+0x32   0x0032  #       DIGIT TWO\r
+0x33   0x0033  #       DIGIT THREE\r
+0x34   0x0034  #       DIGIT FOUR\r
+0x35   0x0035  #       DIGIT FIVE\r
+0x36   0x0036  #       DIGIT SIX\r
+0x37   0x0037  #       DIGIT SEVEN\r
+0x38   0x0038  #       DIGIT EIGHT\r
+0x39   0x0039  #       DIGIT NINE\r
+0x3A   0x003A  #       COLON\r
+0x3B   0x003B  #       SEMICOLON\r
+0x3C   0x003C  #       LESS-THAN SIGN\r
+0x3D   0x003D  #       EQUALS SIGN\r
+0x3E   0x003E  #       GREATER-THAN SIGN\r
+0x3F   0x003F  #       QUESTION MARK\r
+0x40   0x0040  #       COMMERCIAL AT\r
+0x41   0x0041  #       LATIN CAPITAL LETTER A\r
+0x42   0x0042  #       LATIN CAPITAL LETTER B\r
+0x43   0x0043  #       LATIN CAPITAL LETTER C\r
+0x44   0x0044  #       LATIN CAPITAL LETTER D\r
+0x45   0x0045  #       LATIN CAPITAL LETTER E\r
+0x46   0x0046  #       LATIN CAPITAL LETTER F\r
+0x47   0x0047  #       LATIN CAPITAL LETTER G\r
+0x48   0x0048  #       LATIN CAPITAL LETTER H\r
+0x49   0x0049  #       LATIN CAPITAL LETTER I\r
+0x4A   0x004A  #       LATIN CAPITAL LETTER J\r
+0x4B   0x004B  #       LATIN CAPITAL LETTER K\r
+0x4C   0x004C  #       LATIN CAPITAL LETTER L\r
+0x4D   0x004D  #       LATIN CAPITAL LETTER M\r
+0x4E   0x004E  #       LATIN CAPITAL LETTER N\r
+0x4F   0x004F  #       LATIN CAPITAL LETTER O\r
+0x50   0x0050  #       LATIN CAPITAL LETTER P\r
+0x51   0x0051  #       LATIN CAPITAL LETTER Q\r
+0x52   0x0052  #       LATIN CAPITAL LETTER R\r
+0x53   0x0053  #       LATIN CAPITAL LETTER S\r
+0x54   0x0054  #       LATIN CAPITAL LETTER T\r
+0x55   0x0055  #       LATIN CAPITAL LETTER U\r
+0x56   0x0056  #       LATIN CAPITAL LETTER V\r
+0x57   0x0057  #       LATIN CAPITAL LETTER W\r
+0x58   0x0058  #       LATIN CAPITAL LETTER X\r
+0x59   0x0059  #       LATIN CAPITAL LETTER Y\r
+0x5A   0x005A  #       LATIN CAPITAL LETTER Z\r
+0x5B   0x005B  #       LEFT SQUARE BRACKET\r
+0x5C   0x005C  #       REVERSE SOLIDUS\r
+0x5D   0x005D  #       RIGHT SQUARE BRACKET\r
+0x5E   0x005E  #       CIRCUMFLEX ACCENT\r
+0x5F   0x005F  #       LOW LINE\r
+0x60   0x0060  #       GRAVE ACCENT\r
+0x61   0x0061  #       LATIN SMALL LETTER A\r
+0x62   0x0062  #       LATIN SMALL LETTER B\r
+0x63   0x0063  #       LATIN SMALL LETTER C\r
+0x64   0x0064  #       LATIN SMALL LETTER D\r
+0x65   0x0065  #       LATIN SMALL LETTER E\r
+0x66   0x0066  #       LATIN SMALL LETTER F\r
+0x67   0x0067  #       LATIN SMALL LETTER G\r
+0x68   0x0068  #       LATIN SMALL LETTER H\r
+0x69   0x0069  #       LATIN SMALL LETTER I\r
+0x6A   0x006A  #       LATIN SMALL LETTER J\r
+0x6B   0x006B  #       LATIN SMALL LETTER K\r
+0x6C   0x006C  #       LATIN SMALL LETTER L\r
+0x6D   0x006D  #       LATIN SMALL LETTER M\r
+0x6E   0x006E  #       LATIN SMALL LETTER N\r
+0x6F   0x006F  #       LATIN SMALL LETTER O\r
+0x70   0x0070  #       LATIN SMALL LETTER P\r
+0x71   0x0071  #       LATIN SMALL LETTER Q\r
+0x72   0x0072  #       LATIN SMALL LETTER R\r
+0x73   0x0073  #       LATIN SMALL LETTER S\r
+0x74   0x0074  #       LATIN SMALL LETTER T\r
+0x75   0x0075  #       LATIN SMALL LETTER U\r
+0x76   0x0076  #       LATIN SMALL LETTER V\r
+0x77   0x0077  #       LATIN SMALL LETTER W\r
+0x78   0x0078  #       LATIN SMALL LETTER X\r
+0x79   0x0079  #       LATIN SMALL LETTER Y\r
+0x7A   0x007A  #       LATIN SMALL LETTER Z\r
+0x7B   0x007B  #       LEFT CURLY BRACKET\r
+0x7C   0x007C  #       VERTICAL LINE\r
+0x7D   0x007D  #       RIGHT CURLY BRACKET\r
+0x7E   0x007E  #       TILDE\r
+0x7F   0x007F  #       DELETE\r
+0x80   0x2500  #       BOX DRAWINGS LIGHT HORIZONTAL\r
+0x81   0x2502  #       BOX DRAWINGS LIGHT VERTICAL\r
+0x82   0x250C  #       BOX DRAWINGS LIGHT DOWN AND RIGHT\r
+0x83   0x2510  #       BOX DRAWINGS LIGHT DOWN AND LEFT\r
+0x84   0x2514  #       BOX DRAWINGS LIGHT UP AND RIGHT\r
+0x85   0x2518  #       BOX DRAWINGS LIGHT UP AND LEFT\r
+0x86   0x251C  #       BOX DRAWINGS LIGHT VERTICAL AND RIGHT\r
+0x87   0x2524  #       BOX DRAWINGS LIGHT VERTICAL AND LEFT\r
+0x88   0x252C  #       BOX DRAWINGS LIGHT DOWN AND HORIZONTAL\r
+0x89   0x2534  #       BOX DRAWINGS LIGHT UP AND HORIZONTAL\r
+0x8A   0x253C  #       BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL\r
+0x8B   0x2580  #       UPPER HALF BLOCK\r
+0x8C   0x2584  #       LOWER HALF BLOCK\r
+0x8D   0x2588  #       FULL BLOCK\r
+0x8E   0x258C  #       LEFT HALF BLOCK\r
+0x8F   0x2590  #       RIGHT HALF BLOCK\r
+0x90   0x2591  #       LIGHT SHADE\r
+0x91   0x2592  #       MEDIUM SHADE\r
+0x92   0x2593  #       DARK SHADE\r
+0x93   0x2320  #       TOP HALF INTEGRAL\r
+0x94   0x25A0  #       BLACK SQUARE\r
+0x95   0x2219  #       BULLET OPERATOR\r
+0x96   0x221A  #       SQUARE ROOT\r
+0x97   0x2248  #       ALMOST EQUAL TO\r
+0x98   0x2264  #       LESS-THAN OR EQUAL TO\r
+0x99   0x2265  #       GREATER-THAN OR EQUAL TO\r
+0x9A   0x00A0  #       NO-BREAK SPACE\r
+0x9B   0x2321  #       BOTTOM HALF INTEGRAL\r
+0x9C   0x00B0  #       DEGREE SIGN\r
+0x9D   0x00B2  #       SUPERSCRIPT TWO\r
+0x9E   0x00B7  #       MIDDLE DOT\r
+0x9F   0x00F7  #       DIVISION SIGN\r
+0xA0   0x2550  #       BOX DRAWINGS DOUBLE HORIZONTAL\r
+0xA1   0x2551  #       BOX DRAWINGS DOUBLE VERTICAL\r
+0xA2   0x2552  #       BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE\r
+0xA3   0x0451  #       CYRILLIC SMALL LETTER IO\r
+0xA4   0x2553  #       BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE\r
+0xA5   0x2554  #       BOX DRAWINGS DOUBLE DOWN AND RIGHT\r
+0xA6   0x2555  #       BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE\r
+0xA7   0x2556  #       BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE\r
+0xA8   0x2557  #       BOX DRAWINGS DOUBLE DOWN AND LEFT\r
+0xA9   0x2558  #       BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE\r
+0xAA   0x2559  #       BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE\r
+0xAB   0x255A  #       BOX DRAWINGS DOUBLE UP AND RIGHT\r
+0xAC   0x255B  #       BOX DRAWINGS UP SINGLE AND LEFT DOUBLE\r
+0xAD   0x255C  #       BOX DRAWINGS UP DOUBLE AND LEFT SINGLE\r
+0xAE   0x255D  #       BOX DRAWINGS DOUBLE UP AND LEFT\r
+0xAF   0x255E  #       BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE\r
+0xB0   0x255F  #       BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE\r
+0xB1   0x2560  #       BOX DRAWINGS DOUBLE VERTICAL AND RIGHT\r
+0xB2   0x2561  #       BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE\r
+0xB3   0x0401  #       CYRILLIC CAPITAL LETTER IO\r
+0xB4   0x2562  #       BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE\r
+0xB5   0x2563  #       BOX DRAWINGS DOUBLE VERTICAL AND LEFT\r
+0xB6   0x2564  #       BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE\r
+0xB7   0x2565  #       BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE\r
+0xB8   0x2566  #       BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL\r
+0xB9   0x2567  #       BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE\r
+0xBA   0x2568  #       BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE\r
+0xBB   0x2569  #       BOX DRAWINGS DOUBLE UP AND HORIZONTAL\r
+0xBC   0x256A  #       BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE\r
+0xBD   0x256B  #       BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE\r
+0xBE   0x256C  #       BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL\r
+0xBF   0x00A9  #       COPYRIGHT SIGN\r
+0xC0   0x044E  #       CYRILLIC SMALL LETTER YU\r
+0xC1   0x0430  #       CYRILLIC SMALL LETTER A\r
+0xC2   0x0431  #       CYRILLIC SMALL LETTER BE\r
+0xC3   0x0446  #       CYRILLIC SMALL LETTER TSE\r
+0xC4   0x0434  #       CYRILLIC SMALL LETTER DE\r
+0xC5   0x0435  #       CYRILLIC SMALL LETTER IE\r
+0xC6   0x0444  #       CYRILLIC SMALL LETTER EF\r
+0xC7   0x0433  #       CYRILLIC SMALL LETTER GHE\r
+0xC8   0x0445  #       CYRILLIC SMALL LETTER HA\r
+0xC9   0x0438  #       CYRILLIC SMALL LETTER I\r
+0xCA   0x0439  #       CYRILLIC SMALL LETTER SHORT I\r
+0xCB   0x043A  #       CYRILLIC SMALL LETTER KA\r
+0xCC   0x043B  #       CYRILLIC SMALL LETTER EL\r
+0xCD   0x043C  #       CYRILLIC SMALL LETTER EM\r
+0xCE   0x043D  #       CYRILLIC SMALL LETTER EN\r
+0xCF   0x043E  #       CYRILLIC SMALL LETTER O\r
+0xD0   0x043F  #       CYRILLIC SMALL LETTER PE\r
+0xD1   0x044F  #       CYRILLIC SMALL LETTER YA\r
+0xD2   0x0440  #       CYRILLIC SMALL LETTER ER\r
+0xD3   0x0441  #       CYRILLIC SMALL LETTER ES\r
+0xD4   0x0442  #       CYRILLIC SMALL LETTER TE\r
+0xD5   0x0443  #       CYRILLIC SMALL LETTER U\r
+0xD6   0x0436  #       CYRILLIC SMALL LETTER ZHE\r
+0xD7   0x0432  #       CYRILLIC SMALL LETTER VE\r
+0xD8   0x044C  #       CYRILLIC SMALL LETTER SOFT SIGN\r
+0xD9   0x044B  #       CYRILLIC SMALL LETTER YERU\r
+0xDA   0x0437  #       CYRILLIC SMALL LETTER ZE\r
+0xDB   0x0448  #       CYRILLIC SMALL LETTER SHA\r
+0xDC   0x044D  #       CYRILLIC SMALL LETTER E\r
+0xDD   0x0449  #       CYRILLIC SMALL LETTER SHCHA\r
+0xDE   0x0447  #       CYRILLIC SMALL LETTER CHE\r
+0xDF   0x044A  #       CYRILLIC SMALL LETTER HARD SIGN\r
+0xE0   0x042E  #       CYRILLIC CAPITAL LETTER YU\r
+0xE1   0x0410  #       CYRILLIC CAPITAL LETTER A\r
+0xE2   0x0411  #       CYRILLIC CAPITAL LETTER BE\r
+0xE3   0x0426  #       CYRILLIC CAPITAL LETTER TSE\r
+0xE4   0x0414  #       CYRILLIC CAPITAL LETTER DE\r
+0xE5   0x0415  #       CYRILLIC CAPITAL LETTER IE\r
+0xE6   0x0424  #       CYRILLIC CAPITAL LETTER EF\r
+0xE7   0x0413  #       CYRILLIC CAPITAL LETTER GHE\r
+0xE8   0x0425  #       CYRILLIC CAPITAL LETTER HA\r
+0xE9   0x0418  #       CYRILLIC CAPITAL LETTER I\r
+0xEA   0x0419  #       CYRILLIC CAPITAL LETTER SHORT I\r
+0xEB   0x041A  #       CYRILLIC CAPITAL LETTER KA\r
+0xEC   0x041B  #       CYRILLIC CAPITAL LETTER EL\r
+0xED   0x041C  #       CYRILLIC CAPITAL LETTER EM\r
+0xEE   0x041D  #       CYRILLIC CAPITAL LETTER EN\r
+0xEF   0x041E  #       CYRILLIC CAPITAL LETTER O\r
+0xF0   0x041F  #       CYRILLIC CAPITAL LETTER PE\r
+0xF1   0x042F  #       CYRILLIC CAPITAL LETTER YA\r
+0xF2   0x0420  #       CYRILLIC CAPITAL LETTER ER\r
+0xF3   0x0421  #       CYRILLIC CAPITAL LETTER ES\r
+0xF4   0x0422  #       CYRILLIC CAPITAL LETTER TE\r
+0xF5   0x0423  #       CYRILLIC CAPITAL LETTER U\r
+0xF6   0x0416  #       CYRILLIC CAPITAL LETTER ZHE\r
+0xF7   0x0412  #       CYRILLIC CAPITAL LETTER VE\r
+0xF8   0x042C  #       CYRILLIC CAPITAL LETTER SOFT SIGN\r
+0xF9   0x042B  #       CYRILLIC CAPITAL LETTER YERU\r
+0xFA   0x0417  #       CYRILLIC CAPITAL LETTER ZE\r
+0xFB   0x0428  #       CYRILLIC CAPITAL LETTER SHA\r
+0xFC   0x042D  #       CYRILLIC CAPITAL LETTER E\r
+0xFD   0x0429  #       CYRILLIC CAPITAL LETTER SHCHA\r
+0xFE   0x0427  #       CYRILLIC CAPITAL LETTER CHE\r
+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
new file mode 100644 (file)
index 0000000..83a5ce7
--- /dev/null
@@ -0,0 +1,17078 @@
+#
+#    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>
+
+\1a
\ No newline at end of file
index 9fc96eac7bb519aeb951639babf4e1e5242d721c..28c5ae059a3bd07ffaf8ea246df82cd693da3295 100644 (file)
@@ -89,7 +89,7 @@
  *  out that extra spaces should be compressed--a problem addressed with
  *  Marcus Bointon's fixes but that I had not yet incorporated.
  *
- *     Thanks to Daniel Schledermann (http://www.typoconsult.dk/) for
+ *  Thanks to Daniel Schledermann (http://www.typoconsult.dk/) for
  *  suggesting a valuable fix with <a> tag handling.
  *
  *  Thanks to Wojciech Bajon (again!) for suggesting fixes and additions,
@@ -200,7 +200,7 @@ class html2text
     var $ent_search = array(
         '/&(nbsp|#160);/i',                      // Non-breaking space
         '/&(quot|rdquo|ldquo|#8220|#8221|#147|#148);/i',
-                                                        // Double quotes
+                                         // Double quotes
         '/&(apos|rsquo|lsquo|#8216|#8217);/i',   // Single quotes
         '/&gt;/i',                               // Greater-than
         '/&lt;/i',                               // Less-than
@@ -249,12 +249,11 @@ class html2text
      *  @access public
      */
     var $callback_search = array(
-        '/<(h)[123456][^>]*>(.*?)<\/h[123456]>/i', // H1 - H3
-        '/<(b)[^>]*>(.*?)<\/b>/i',                 // <b>
-        '/<(strong)[^>]*>(.*?)<\/strong>/i',       // <strong>
-        '/<(a) [^>]*href=("|\')([^"\']+)\2[^>]*>(.*?)<\/a>/i',
-                                                   // <a href="">
-        '/<(th)[^>]*>(.*?)<\/th>/i',               // <th> and </th>
+        '/<(a) [^>]*href=("|\')([^"\']+)\2[^>]*>(.*?)<\/a>/i', // <a href="">
+        '/<(h)[123456]( [^>]*)?>(.*?)<\/h[123456]>/i',         // h1 - h6
+        '/<(b)( [^>]*)?>(.*?)<\/b>/i',                         // <b>
+        '/<(strong)( [^>]*)?>(.*?)<\/strong>/i',               // <strong>
+        '/<(th)( [^>]*)?>(.*?)<\/th>/i',                       // <th> and </th>
     );
 
    /**
@@ -317,21 +316,11 @@ class html2text
     /**
      *  Contains URL addresses from links to be rendered in plain text.
      *
-     *  @var string $_link_list
+     *  @var array $_link_list
      *  @access private
      *  @see _build_link_list()
      */
-    var $_link_list = '';
-
-    /**
-     *  Number of valid links detected in the text, used for plain text
-     *  display (rendered similar to footnotes).
-     *
-     *  @var integer $_link_count
-     *  @access private
-     *  @see _build_link_list()
-     */
-    var $_link_count = 0;
+    var $_link_list = array();
 
     /**
      * Boolean flag, true if a table of link URLs should be listed after the text.
@@ -378,7 +367,7 @@ class html2text
     function set_html( $source, $from_file = false )
     {
         if ( $from_file && file_exists($source) ) {
-            $this->html = file_get_contents($source); 
+            $this->html = file_get_contents($source);
         }
         else
             $this->html = $source;
@@ -448,11 +437,11 @@ class html2text
     function set_base_url( $url = '' )
     {
         if ( empty($url) ) {
-               if ( !empty($_SERVER['HTTP_HOST']) ) {
-                   $this->url = 'http://' . $_SERVER['HTTP_HOST'];
-               } else {
-                   $this->url = '';
-               }
+            if ( !empty($_SERVER['HTTP_HOST']) ) {
+                $this->url = 'http://' . $_SERVER['HTTP_HOST'];
+            } else {
+                $this->url = '';
+            }
         } else {
             // Strip any trailing slashes for consistency (relative
             // URLs may already start with a slash like "/file.html")
@@ -472,8 +461,7 @@ class html2text
     function _convert()
     {
         // Variables used for building the link list
-        $this->_link_count = 0;
-        $this->_link_list = '';
+        $this->_link_list = array();
 
         $text = trim(stripslashes($this->html));
 
@@ -481,8 +469,11 @@ class html2text
         $this->_converter($text);
 
         // Add link list
-        if ( !empty($this->_link_list) ) {
-            $text .= "\n\nLinks:\n------\n" . $this->_link_list;
+        if (!empty($this->_link_list)) {
+            $text .= "\n\nLinks:\n------\n";
+            foreach ($this->_link_list as $idx => $url) {
+                $text .= '[' . ($idx+1) . '] ' . $url . "\n";
+            }
         }
 
         $this->text = $text;
@@ -524,7 +515,7 @@ class html2text
         $text = preg_replace($this->ent_search, $this->ent_replace, $text);
 
         // Replace known html entities
-        $text = html_entity_decode($text, ENT_COMPAT, 'UTF-8');
+        $text = html_entity_decode($text, ENT_QUOTES, 'UTF-8');
 
         // Remove unknown/unhandled entities (this cannot be done in search-and-replace block)
         $text = preg_replace('/&([a-zA-Z0-9]{2,6}|#[0-9]{2,4});/', '', $text);
@@ -544,7 +535,7 @@ class html2text
         // for PHP versions >= 4.0.2. Default width is 75
         // If width is 0 or less, don't wrap the text.
         if ( $this->width > 0 ) {
-               $text = wordwrap($text, $this->width);
+            $text = wordwrap($text, $this->width);
         }
     }
 
@@ -563,28 +554,32 @@ class html2text
      */
     function _build_link_list( $link, $display )
     {
-           if ( !$this->_do_links )
-               return $display;
-
-           if ( preg_match('!^(https?://|mailto:)!', $link) ) {
-            $this->_link_count++;
-            $this->_link_list .= '[' . $this->_link_count . "] $link\n";
-            $additional = ' [' . $this->_link_count . ']';
-           } elseif ( substr($link, 0, 11) == 'javascript:' ) {
-                   // Don't count the link; ignore it
-                   $additional = '';
-               // what about href="#anchor" ?
-        } else {
-            $this->_link_count++;
-            $this->_link_list .= '[' . $this->_link_count . '] ' . $this->url;
-            if ( substr($link, 0, 1) != '/' ) {
-                $this->_link_list .= '/';
+        if (!$this->_do_links || empty($link)) {
+            return $display;
+        }
+
+        // Ignored link types
+        if (preg_match('!^(javascript:|mailto:|#)!i', $link)) {
+            return $display;
+        }
+
+        if (preg_match('!^([a-z][a-z0-9.+-]+:)!i', $link)) {
+            $url = $link;
+        }
+        else {
+            $url = $this->url;
+            if (substr($link, 0, 1) != '/') {
+                $url .= '/';
             }
-            $this->_link_list .= "$link\n";
-            $additional = ' [' . $this->_link_count . ']';
+            $url .= "$link";
+        }
+
+        if (($index = array_search($url, $this->_link_list)) === false) {
+            $index = count($this->_link_list);
+            $this->_link_list[] = $url;
         }
 
-        return $display . $additional;
+        return $display . ' [' . ($index+1) . ']';
     }
 
     /**
@@ -597,12 +592,20 @@ class html2text
     {
         // get the content of PRE element
         while (preg_match('/<pre[^>]*>(.*)<\/pre>/ismU', $text, $matches)) {
+            $this->pre_content = $matches[1];
+
+            // Run our defined tags search-and-replace with callback
+            $this->pre_content = preg_replace_callback($this->callback_search,
+                array('html2text', '_preg_callback'), $this->pre_content);
+
             // convert the content
             $this->pre_content = sprintf('<div><br>%s<br></div>',
-                preg_replace($this->pre_search, $this->pre_replace, $matches[1]));
+                preg_replace($this->pre_search, $this->pre_replace, $this->pre_content));
+
             // replace the content (use callback because content can contain $0 variable)
-            $text = preg_replace_callback('/<pre[^>]*>.*<\/pre>/ismU', 
+            $text = preg_replace_callback('/<pre[^>]*>.*<\/pre>/ismU',
                 array('html2text', '_preg_pre_callback'), $text, 1);
+
             // free memory
             $this->pre_content = '';
         }
@@ -672,14 +675,14 @@ class html2text
      */
     private function _preg_callback($matches)
     {
-        switch($matches[1]) {
+        switch (strtolower($matches[1])) {
         case 'b':
         case 'strong':
-            return $this->_strtoupper($matches[2]);
+            return $this->_toupper($matches[3]);
         case 'th':
-            return $this->_strtoupper("\t\t". $matches[2] ."\n");
+            return $this->_toupper("\t\t". $matches[3] ."\n");
         case 'h':
-            return $this->_strtoupper("\n\n". $matches[2] ."\n\n");
+            return $this->_toupper("\n\n". $matches[3] ."\n\n");
         case 'a':
             // Remove spaces in URL (#1487805)
             $url = str_replace(' ', '', $matches[3]);
@@ -699,16 +702,43 @@ class html2text
     }
 
     /**
-     *  Strtoupper multibyte wrapper function
+     * Strtoupper function with HTML tags and entities handling.
      *
-     *  @param  string
-     *  @return string
+     * @param string $str Text to convert
+     * @return string Converted text
+     */
+    private function _toupper($str)
+    {
+        // string can containg HTML tags
+        $chunks = preg_split('/(<[^>]*>)/', $str, null, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
+
+        // convert toupper only the text between HTML tags
+        foreach ($chunks as $idx => $chunk) {
+            if ($chunk[0] != '<') {
+                $chunks[$idx] = $this->_strtoupper($chunk);
+            }
+        }
+
+        return implode($chunks);
+    }
+
+    /**
+     * Strtoupper multibyte wrapper function with HTML entities handling.
+     *
+     * @param string $str Text to convert
+     * @return string Converted text
      */
     private function _strtoupper($str)
     {
+        $str = html_entity_decode($str, ENT_COMPAT, RCMAIL_CHARSET);
+
         if (function_exists('mb_strtoupper'))
-            return mb_strtoupper($str);
+            $str = mb_strtoupper($str);
         else
-            return strtoupper($str);
+            $str = strtoupper($str);
+
+        $str = htmlspecialchars($str, ENT_COMPAT, RCMAIL_CHARSET);
+
+        return $str;
     }
 }
diff --git a/program/lib/magic b/program/lib/magic
new file mode 100644 (file)
index 0000000..85b5e8b
--- /dev/null
@@ -0,0 +1,10810 @@
+# Magic
+# Magic data for file(1) command.
+# Machine-generated from src/cmd/file/magdir/*; edit there only!
+# Format is described in magic(files), where:
+# files is 5 on V7 and BSD, 4 on SV, and ?? in the SVID.
+
+#------------------------------------------------------------------------------
+# Localstuff:  file(1) magic for locally observed files
+#
+# $Id: Localstuff,v 1.4 2003/03/23 04:17:27 christos Exp $
+# Add any locally observed files here.  Remember:
+# text if readable, executable if runnable binary, data if unreadable.
+
+#------------------------------------------------------------------------------
+# zyxel:  file(1) magic for ZyXEL modems
+#
+# From <rob@pe1chl.ampr.org>
+# These are the /etc/magic entries to decode datafiles as used for the
+# ZyXEL U-1496E DATA/FAX/VOICE modems.  (This header conforms to a
+# ZyXEL-defined standard)
+
+0      string          ZyXEL\002       ZyXEL voice data
+>10    byte            0               - CELP encoding
+>10    byte&0x0B       1               - ADPCM2 encoding
+>10    byte&0x0B       2               - ADPCM3 encoding
+>10    byte&0x0B       3               - ADPCM4 encoding
+>10    byte&0x0B       8               - New ADPCM3 encoding
+>10    byte&0x04       4               with resync
+
+#------------------------------------------------------------------------------
+# file(1) magic(5) data for xdelta  Josh MacDonald <jmacd@CS.Berkeley.EDU>
+#
+0      string  %XDELTA%        XDelta binary patch file 0.14
+0      string  %XDZ000%        XDelta binary patch file 0.18
+0      string  %XDZ001%        XDelta binary patch file 0.20
+0      string  %XDZ002%        XDelta binary patch file 1.0
+0      string  %XDZ003%        XDelta binary patch file 1.0.4
+0      string  %XDZ004%        XDelta binary patch file 1.1
+#------------------------------------------------------------------------
+# sysex: file(1) magic for MIDI sysex files
+#
+# 
+0      byte                    0xF0            SysEx File -
+
+# North American Group
+>1     byte                    0x01            Sequential
+>1     byte                    0x02            IDP
+>1     byte                    0x03            OctavePlateau
+>1     byte                    0x04            Moog
+>1     byte                    0x05            Passport
+>1     byte                    0x06            Lexicon
+>1     byte                    0x07            Kurzweil
+>1     byte                    0x08            Fender
+>1     byte                    0x09            Gulbransen
+>1     byte                    0x0a            AKG
+>1     byte                    0x0b            Voyce
+>1     byte                    0x0c            Waveframe
+>1     byte                    0x0d            ADA
+>1     byte                    0x0e            Garfield
+>1     byte                    0x0f            Ensoniq
+>1     byte                    0x10            Oberheim
+>1     byte                    0x11            Apple
+>1     byte                    0x12            GreyMatter
+>1     byte                    0x14            PalmTree
+>1     byte                    0x15            JLCooper
+>1     byte                    0x16            Lowrey
+>1     byte                    0x17            AdamsSmith
+>1     byte                    0x18            E-mu
+>1     byte                    0x19            Harmony
+>1     byte                    0x1a            ART
+>1     byte                    0x1b            Baldwin
+>1     byte                    0x1c            Eventide
+>1     byte                    0x1d            Inventronics
+>1     byte                    0x1f            Clarity
+
+# European Group
+>1     byte                    0x21            SIEL
+>1     byte                    0x22            Synthaxe
+>1     byte                    0x24            Hohner
+>1     byte                    0x25            Twister
+>1     byte                    0x26            Solton
+>1     byte                    0x27            Jellinghaus
+>1     byte                    0x28            Southworth
+>1     byte                    0x29            PPG
+>1     byte                    0x2a            JEN
+>1     byte                    0x2b            SSL
+>1     byte                    0x2c            AudioVertrieb
+
+>1     byte                    0x2f            ELKA
+>>3    byte                    0x09            EK-44
+
+>1     byte                    0x30            Dynacord
+>1     byte                    0x33            Clavia
+>1     byte                    0x39            Soundcraft
+
+>1     byte                    0x3e            Waldorf
+>>3    byte                    0x7f            Microwave I
+
+# Japanese Group
+>1     byte                    0x40            Kawai
+>>3    byte                    0x20            K1
+>>3    byte                    0x22            K4
+
+>1     byte                    0x41            Roland
+>>3    byte                    0x14            D-50
+>>3    byte                    0x2b            U-220
+>>3    byte                    0x02            TR-707
+
+>1     byte                    0x42            Korg
+>>3    byte                    0x19            M1
+
+>1     byte                    0x43            Yamaha
+>1     byte                    0x44            Casio
+>1     byte                    0x46            Kamiya
+>1     byte                    0x47            Akai
+>1     byte                    0x48            Victor
+>1     byte                    0x49            Mesosha
+>1     byte                    0x4b            Fujitsu
+>1     byte                    0x4c            Sony
+>1     byte                    0x4e            Teac
+>1     byte                    0x50            Matsushita
+>1     byte                    0x51            Fostex
+>1     byte                    0x52            Zoom
+>1     byte                    0x54            Matsushita
+>1     byte                    0x57            Acoustic tech. lab.
+
+>1     belong&0xffffff00       0x00007400      Ta Horng
+>1     belong&0xffffff00       0x00007500      e-Tek
+>1     belong&0xffffff00       0x00007600      E-Voice
+>1     belong&0xffffff00       0x00007700      Midisoft
+>1     belong&0xffffff00       0x00007800      Q-Sound
+>1     belong&0xffffff00       0x00007900      Westrex
+>1     belong&0xffffff00       0x00007a00      Nvidia*
+>1     belong&0xffffff00       0x00007b00      ESS
+>1     belong&0xffffff00       0x00007c00      Mediatrix
+>1     belong&0xffffff00       0x00007d00      Brooktree
+>1     belong&0xffffff00       0x00007e00      Otari
+>1     belong&0xffffff00       0x00007f00      Key Electronics
+>1     belong&0xffffff00       0x00010000      Shure
+>1     belong&0xffffff00       0x00010100      AuraSound
+>1     belong&0xffffff00       0x00010200      Crystal
+>1     belong&0xffffff00       0x00010300      Rockwell
+>1     belong&0xffffff00       0x00010400      Silicon Graphics
+>1     belong&0xffffff00       0x00010500      Midiman
+>1     belong&0xffffff00       0x00010600      PreSonus
+>1     belong&0xffffff00       0x00010800      Topaz
+>1     belong&0xffffff00       0x00010900      Cast Lightning
+>1     belong&0xffffff00       0x00010a00      Microsoft
+>1     belong&0xffffff00       0x00010b00      Sonic Foundry
+>1     belong&0xffffff00       0x00010c00      Line 6
+>1     belong&0xffffff00       0x00010d00      Beatnik Inc.
+>1     belong&0xffffff00       0x00010e00      Van Koerving
+>1     belong&0xffffff00       0x00010f00      Altech Systems
+>1     belong&0xffffff00       0x00011000      S & S Research
+>1     belong&0xffffff00       0x00011100      VLSI Technology
+>1     belong&0xffffff00       0x00011200      Chromatic
+>1     belong&0xffffff00       0x00011300      Sapphire
+>1     belong&0xffffff00       0x00011400      IDRC
+>1     belong&0xffffff00       0x00011500      Justonic Tuning
+>1     belong&0xffffff00       0x00011600      TorComp
+>1     belong&0xffffff00       0x00011700      Newtek Inc.
+>1     belong&0xffffff00       0x00011800      Sound Sculpture
+>1     belong&0xffffff00       0x00011900      Walker Technical
+>1     belong&0xffffff00       0x00011a00      Digital Harmony
+>1     belong&0xffffff00       0x00011b00      InVision
+>1     belong&0xffffff00       0x00011c00      T-Square
+>1     belong&0xffffff00       0x00011d00      Nemesys
+>1     belong&0xffffff00       0x00011e00      DBX
+>1     belong&0xffffff00       0x00011f00      Syndyne
+>1     belong&0xffffff00       0x00012000      Bitheadz        
+>1     belong&0xffffff00       0x00012100      Cakewalk
+>1     belong&0xffffff00       0x00012200      Staccato
+>1     belong&0xffffff00       0x00012300      National Semicon.
+>1     belong&0xffffff00       0x00012400      Boom Theory
+>1     belong&0xffffff00       0x00012500      Virtual DSP Corp
+>1     belong&0xffffff00       0x00012600      Antares
+>1     belong&0xffffff00       0x00012700      Angel Software
+>1     belong&0xffffff00       0x00012800      St Louis Music
+>1     belong&0xffffff00       0x00012900      Lyrrus dba G-VOX
+>1     belong&0xffffff00       0x00012a00      Ashley Audio
+>1     belong&0xffffff00       0x00012b00      Vari-Lite
+>1     belong&0xffffff00       0x00012c00      Summit Audio
+>1     belong&0xffffff00       0x00012d00      Aureal Semicon.
+>1     belong&0xffffff00       0x00012e00      SeaSound
+>1     belong&0xffffff00       0x00012f00      U.S. Robotics
+>1     belong&0xffffff00       0x00013000      Aurisis
+>1     belong&0xffffff00       0x00013100      Nearfield Multimedia
+>1     belong&0xffffff00       0x00013200      FM7 Inc.
+>1     belong&0xffffff00       0x00013300      Swivel Systems
+>1     belong&0xffffff00       0x00013400      Hyperactive
+>1     belong&0xffffff00       0x00013500      MidiLite
+>1     belong&0xffffff00       0x00013600      Radical
+>1     belong&0xffffff00       0x00013700      Roger Linn
+>1     belong&0xffffff00       0x00013800      Helicon
+>1     belong&0xffffff00       0x00013900      Event
+>1     belong&0xffffff00       0x00013a00      Sonic Network
+>1     belong&0xffffff00       0x00013b00      Realtime Music
+>1     belong&0xffffff00       0x00013c00      Apogee Digital
+
+>1     belong&0xffffff00       0x00202b00      Medeli Electronics
+>1     belong&0xffffff00       0x00202c00      Charlie Lab
+>1     belong&0xffffff00       0x00202d00      Blue Chip Music
+>1     belong&0xffffff00       0x00202e00      BEE OH Corp
+>1     belong&0xffffff00       0x00202f00      LG Semicon America
+>1     belong&0xffffff00       0x00203000      TESI
+>1     belong&0xffffff00       0x00203100      EMAGIC
+>1     belong&0xffffff00       0x00203200      Behringer
+>1     belong&0xffffff00       0x00203300      Access Music
+>1     belong&0xffffff00       0x00203400      Synoptic
+>1     belong&0xffffff00       0x00203500      Hanmesoft Corp
+>1     belong&0xffffff00       0x00203600      Terratec
+>1     belong&0xffffff00       0x00203700      Proel SpA
+>1     belong&0xffffff00       0x00203800      IBK MIDI
+>1     belong&0xffffff00       0x00203900      IRCAM
+>1     belong&0xffffff00       0x00203a00      Propellerhead Software
+>1     belong&0xffffff00       0x00203b00      Red Sound Systems
+>1     belong&0xffffff00       0x00203c00      Electron ESI AB
+>1     belong&0xffffff00       0x00203d00      Sintefex Audio
+>1     belong&0xffffff00       0x00203e00      Music and More
+>1     belong&0xffffff00       0x00203f00      Amsaro
+>1     belong&0xffffff00       0x00204000      CDS Advanced Technology
+>1     belong&0xffffff00       0x00204100      Touched by Sound
+>1     belong&0xffffff00       0x00204200      DSP Arts
+>1     belong&0xffffff00       0x00204300      Phil Rees Music
+>1     belong&0xffffff00       0x00204400      Stamer Musikanlagen GmbH
+>1     belong&0xffffff00       0x00204500      Soundart
+>1     belong&0xffffff00       0x00204600      C-Mexx Software
+>1     belong&0xffffff00       0x00204700      Klavis Tech.
+>1     belong&0xffffff00       0x00204800      Noteheads AB
+
+0      string                  T707            Roland TR-707 Data
+
+#------------------------------------------------------------------------------
+# sccs:  file(1) magic for SCCS archives
+#
+# SCCS archive structure:
+# \001h01207
+# \001s 00276/00000/00000
+# \001d D 1.1 87/09/23 08:09:20 ian 1 0
+# \001c date and time created 87/09/23 08:09:20 by ian
+# \001e
+# \001u
+# \001U
+# ... etc.
+# Now '\001h' happens to be the same as the 3B20's a.out magic number (0550).
+# *Sigh*. And these both came from various parts of the USG.
+# Maybe we should just switch everybody from SCCS to RCS!
+# Further, you can't just say '\001h0', because the five-digit number
+# is a checksum that could (presumably) have any leading digit,
+# and we don't have regular expression matching yet. 
+# Hence the following official kludge:
+8      string          \001s\                  SCCS archive data
+#------------------------------------------------------------------------------
+# allegro:  file(1) magic for Allegro datafiles
+# Toby Deshane <hac@shoelace.digivill.net>
+#
+0 belong 0x736C6821   Allegro datafile (packed)
+0 belong 0x736C682E   Allegro datafile (not packed/autodetect)
+0 belong 0x736C682B   Allegro datafile (appended exe data)
+#------------------------------------------------------------------------------
+# file(1) magic for cvs(1) files
+# From Hendrik Scholz <hendrik@scholz.net>
+
+0   string /1\ :pserver:    cvs password text file
+
+
+#------------------------------------------------------------------------------
+# vicar:  file(1) magic for VICAR files.
+#
+# From: Ossama Othman <othman@astrosun.tn.cornell.edu
+# VICAR is JPL's in-house spacecraft image processing program
+# VICAR image
+0      string  LBLSIZE=        VICAR image data
+>32    string  BYTE            \b, 8 bits  = VAX byte
+>32    string  HALF            \b, 16 bits = VAX word     = Fortran INTEGER*2
+>32    string  FULL            \b, 32 bits = VAX longword = Fortran INTEGER*4
+>32    string  REAL            \b, 32 bits = VAX longword = Fortran REAL*4
+>32    string  DOUB            \b, 64 bits = VAX quadword = Fortran REAL*8
+>32    string  COMPLEX         \b, 64 bits = VAX quadword = Fortran COMPLEX*8
+# VICAR label file
+43     string  SFDU_LABEL      VICAR label file
+
+#------------------------------------------------------------------------------
+# varied.out:  file(1) magic for various USG systems
+#
+#      Herewith many of the object file formats used by USG systems.
+#      Most have been moved to files for a particular processor,
+#      and deleted if they duplicate other entries.
+#
+0      short           0610            Perkin-Elmer executable
+# AMD 29K
+0      beshort         0572            amd 29k coff noprebar executable
+0      beshort         01572           amd 29k coff prebar executable
+0      beshort         0160007         amd 29k coff archive
+# Cray
+6      beshort         0407            unicos (cray) executable
+# Ultrix 4.3
+596    string          \130\337\377\377        Ultrix core file
+>600   string          >\0             from '%s'
+# BeOS and MAcOS PEF executables
+# From: hplus@zilker.net (Jon Watte)
+0      string          Joy!peffpwpc    header for PowerPC PEF executable
+#
+# ava assembler/linker Uros Platise <uros.platise@ijs.si>
+0       string          avaobj  AVR assembler object code
+>7      string          >\0     version '%s'
+# gnu gmon magic From: Eugen Dedu <dedu@ese-metz.fr>
+0      string          gmon            GNU prof performance data
+>4     long            x               - version %ld
+# From: Dave Pearson <davep@davep.org>
+# Harbour <URL:http://www.harbour-project.org/> HRB files.
+0      string          \xc0HRB         Harbour HRB file
+>4     short           x               version %d
+
+# From: "Stefan A. Haubenthal" <polluks@web.de>
+0      belong          0x000001EB      Plan 9 executable
+
+#------------------------------------------------------------------------------
+# c64:  file(1) magic for various commodore 64 related files
+#
+# From <doj@cubic.org>
+
+0x16500        belong          0x12014100      D64 Image
+0x16500        belong          0x12014180      D71 Image
+0x61800 belong         0x28034400      D81 Image
+0      string          C64\40CARTRIDGE CCS C64 Emultar Cartridge Image
+0      belong          0x43154164      X64 Image
+
+0      string          GCR-1541        GCR Image
+>8     byte            x               version: $i
+>9     byte            x               tracks: %i
+
+9      string          PSUR            ARC archive (c64)
+2      string          -LH1-           LHA archive (c64)
+
+0      string          C64File         PC64 Emulator file
+>8     string          >\0             "%s"
+0      string          C64Image        PC64 Freezer Image
+
+0      beshort         0x38CD          C64 PCLink Image
+0      string          CBM\144\0\0     Power 64 C64 Emulator Snapshot
+
+0      belong          0xFF424CFF      WRAptor packer (c64)
+#------------------------------------------------------------------------------
+# games:  file(1) for games
+
+# Thomas M. Ott (ThMO)
+1      string  =WAD            DOOM data,
+>0     string  =I              main wad
+>0     string  =P              patch wad
+>0     byte    x               unknown junk
+
+# Fabio Bonelli <fabiobonelli@libero.it>
+# Quake II - III data files
+0       string  IDP2           Quake II 3D Model file,
+>20     long    x               %lu skin(s),
+>8      long    x               (%lu x
+>12     long    x              %lu),
+>40     long    x               %lu frame(s),
+>16     long    x               Frame size %lu bytes,
+>24     long   x               %lu vertices/frame,
+>28     long    x              %lu texture coordinates,
+>32     long    x               %lu triangles/frame
+
+0       string  IBSP            Quake
+>4      long    0x26            II Map file (BSP)
+>4      long    0x2E           III Map file (BSP)
+
+0       string  IDS2            Quake II SP2 sprite file
+
+#---------------------------------------------------------------------------
+# Doom and Quake
+# submitted by Nicolas Patrois
+
+# DOOM
+
+0       string  IWAD    DOOM or DOOM ][ world
+0       string  PWAD    DOOM or DOOM ][ extension world
+
+0       string  \xcb\x1dBoom\xe6\xff\x03\x01    Boom or linuxdoom demo
+# some doom lmp files don't match, I've got one beginning with \x6d\x02\x01\x01
+
+24      string  LxD\ 203        Linuxdoom save
+>0      string  x       , name=%s
+>44     string  x       , world=%s
+
+# Quake
+
+0       string  PACK    Quake I or II world or extension
+
+#0       string  -1\x0a  Quake I demo
+#>30     string  x        version %.4s
+#>61     string  x        level %s       
+
+#0       string  5\x0a   Quake I save
+
+# The levels
+
+# Quake 1
+
+0      string  5\x0aIntroduction             Quake I save: start Introduction
+0      string  5\x0athe_Slipgate_Complex     Quake I save: e1m1 The slipgate complex
+0      string  5\x0aCastle_of_the_Damned     Quake I save: e1m2 Castle of the damned
+0      string  5\x0athe_Necropolis           Quake I save: e1m3 The necropolis
+0      string  5\x0athe_Grisly_Grotto        Quake I save: e1m4 The grisly grotto
+0      string  5\x0aZiggurat_Vertigo         Quake I save: e1m8 Ziggurat vertigo (secret)
+0      string  5\x0aGloom_Keep               Quake I save: e1m5 Gloom keep
+0      string  5\x0aThe_Door_To_Chthon       Quake I save: e1m6 The door to Chthon
+0      string  5\x0aThe_House_of_Chthon      Quake I save: e1m7 The house of Chthon
+0      string  5\x0athe_Installation         Quake I save: e2m1 The installation
+0      string  5\x0athe_Ogre_Citadel         Quake I save: e2m2 The ogre citadel
+0      string  5\x0athe_Crypt_of_Decay       Quake I save: e2m3 The crypt of decay (dopefish lives!)
+0      string  5\x0aUnderearth               Quake I save: e2m7 Underearth (secret)
+0      string  5\x0athe_Ebon_Fortress        Quake I save: e2m4 The ebon fortress
+0      string  5\x0athe_Wizard's_Manse       Quake I save: e2m5 The wizard's manse
+0      string  5\x0athe_Dismal_Oubliette     Quake I save: e2m6 The dismal oubliette
+0      string  5\x0aTermination_Central      Quake I save: e3m1 Termination central
+0      string  5\x0aVaults_of_Zin            Quake I save: e3m2 Vaults of Zin
+0      string  5\x0athe_Tomb_of_Terror       Quake I save: e3m3 The tomb of terror
+0      string  5\x0aSatan's_Dark_Delight     Quake I save: e3m4 Satan's dark delight
+0      string  5\x0athe_Haunted_Halls        Quake I save: e3m7 The haunted halls (secret)
+0      string  5\x0aWind_Tunnels             Quake I save: e3m5 Wind tunnels
+0      string  5\x0aChambers_of_Torment      Quake I save: e3m6 Chambers of torment
+0      string  5\x0athe_Sewage_System        Quake I save: e4m1 The sewage system
+0      string  5\x0aThe_Tower_of_Despair     Quake I save: e4m2 The tower of despair
+0      string  5\x0aThe_Elder_God_Shrine     Quake I save: e4m3 The elder god shrine
+0      string  5\x0athe_Palace_of_Hate       Quake I save: e4m4 The palace of hate
+0      string  5\x0aHell's_Atrium            Quake I save: e4m5 Hell's atrium
+0      string  5\x0athe_Nameless_City        Quake I save: e4m8 The nameless city (secret)
+0      string  5\x0aThe_Pain_Maze            Quake I save: e4m6 The pain maze
+0      string  5\x0aAzure_Agony              Quake I save: e4m7 Azure agony
+0      string  5\x0aShub-Niggurath's_Pit     Quake I save: end Shub-Niggurath's pit
+
+# Quake DeathMatch levels
+
+0      string  5\x0aPlace_of_Two_Deaths         Quake I save: dm1 Place of two deaths
+0      string  5\x0aClaustrophobopolis          Quake I save: dm2 Claustrophobopolis
+0      string  5\x0aThe_Abandoned_Base          Quake I save: dm3 The abandoned base
+0      string  5\x0aThe_Bad_Place               Quake I save: dm4 The bad place
+0      string  5\x0aThe_Cistern                 Quake I save: dm5 The cistern
+0      string  5\x0aThe_Dark_Zone               Quake I save: dm6 The dark zone
+
+# Scourge of Armagon
+
+0      string  5\x0aCommand_HQ               Quake I save: start Command HQ
+0      string  5\x0aThe_Pumping_Station      Quake I save: hip1m1 The pumping station
+0      string  5\x0aStorage_Facility         Quake I save: hip1m2 Storage facility
+0      string  5\x0aMilitary_Complex         Quake I save: hip1m5 Military complex (secret)
+0      string  5\x0athe_Lost_Mine            Quake I save: hip1m3 The lost mine
+0      string  5\x0aResearch_Facility        Quake I save: hip1m4 Research facility
+0      string  5\x0aAncient_Realms           Quake I save: hip2m1 Ancient realms
+0      string  5\x0aThe_Gremlin's_Domain     Quake I save: hip2m6 The gremlin's domain (secret)
+0      string  5\x0aThe_Black_Cathedral      Quake I save: hip2m2 The black cathedral
+0      string  5\x0aThe_Catacombs            Quake I save: hip2m3 The catacombs
+0      string  5\x0athe_Crypt__              Quake I save: hip2m4 The crypt
+0      string  5\x0aMortum's_Keep            Quake I save: hip2m5 Mortum's keep
+0      string  5\x0aTur_Torment              Quake I save: hip3m1 Tur torment
+0      string  5\x0aPandemonium              Quake I save: hip3m2 Pandemonium
+0      string  5\x0aLimbo                    Quake I save: hip3m3 Limbo
+0      string  5\x0athe_Edge_of_Oblivion     Quake I save: hipdm1 The edge of oblivion (secret)
+0      string  5\x0aThe_Gauntlet             Quake I save: hip3m4 The gauntlet
+0      string  5\x0aArmagon's_Lair           Quake I save: hipend Armagon's lair
+
+# Malice
+
+0      string  5\x0aThe_Academy      Quake I save: start The academy
+0      string  5\x0aThe_Lab          Quake I save: d1 The lab
+0      string  5\x0aArea_33          Quake I save: d1b Area 33
+0      string  5\x0aSECRET_MISSIONS  Quake I save: d3b Secret missions
+0      string  5\x0aThe_Hospital     Quake I save: d10 The hospital (secret)
+0      string  5\x0aThe_Genetics_Lab Quake I save: d11 The genetics lab (secret)
+0      string  5\x0aBACK_2_MALICE    Quake I save: d4b Back to Malice
+0      string  5\x0aArea44           Quake I save: d1c Area 44
+0      string  5\x0aTakahiro_Towers  Quake I save: d2 Takahiro towers
+0      string  5\x0aA_Rat's_Life     Quake I save: d3 A rat's life
+0      string  5\x0aInto_The_Flood   Quake I save: d4 Into the flood
+0      string  5\x0aThe_Flood        Quake I save: d5 The flood
+0      string  5\x0aNuclear_Plant    Quake I save: d6 Nuclear plant
+0      string  5\x0aThe_Incinerator_Plant    Quake I save: d7 The incinerator plant
+0      string  5\x0aThe_Foundry              Quake I save: d7b The foundry
+0      string  5\x0aThe_Underwater_Base      Quake I save: d8 The underwater base
+0      string  5\x0aTakahiro_Base            Quake I save: d9 Takahiro base
+0      string  5\x0aTakahiro_Laboratories    Quake I save: d12 Takahiro laboratories
+0      string  5\x0aStayin'_Alive    Quake I save: d13 Stayin' alive
+0      string  5\x0aB.O.S.S._HQ      Quake I save: d14 B.O.S.S. HQ
+0      string  5\x0aSHOWDOWN!        Quake I save: d15 Showdown!
+
+# Malice DeathMatch levels
+
+0      string  5\x0aThe_Seventh_Precinct        Quake I save: ddm1 The seventh precinct
+0      string  5\x0aSub_Station                 Quake I save: ddm2 Sub station
+0      string  5\x0aCrazy_Eights!               Quake I save: ddm3 Crazy eights!
+0      string  5\x0aEast_Side_Invertationa      Quake I save: ddm4 East side invertationa
+0      string  5\x0aSlaughterhouse              Quake I save: ddm5 Slaughterhouse
+0      string  5\x0aDOMINO                      Quake I save: ddm6 Domino
+0      string  5\x0aSANDRA'S_LADDER             Quake I save: ddm7 Sandra's ladder
+
+
+0      string  MComprHD        MAME CHD compressed hard disk image,
+>12    belong  x               version %lu
+#------------------------------------------------------------------------------
+# Mavroyanopoulos Nikos <nmav@hellug.gr>
+# mcrypt:   file(1) magic for mcrypt 2.2.x;
+0      string          \0m\3           mcrypt 2.5 encrypted data,
+>4     string          >\0             algorithm: %s,
+>>&1   leshort         >0              keysize: %d bytes,
+>>>&0  string          >\0             mode: %s,
+
+0      string          \0m\2           mcrypt 2.2 encrypted data,
+>3     byte            0               algorithm: blowfish-448,
+>3     byte            1               algorithm: DES,
+>3     byte            2               algorithm: 3DES,
+>3     byte            3               algorithm: 3-WAY,
+>3     byte            4               algorithm: GOST,
+>3     byte            6               algorithm: SAFER-SK64,
+>3     byte            7               algorithm: SAFER-SK128,
+>3     byte            8               algorithm: CAST-128,
+>3     byte            9               algorithm: xTEA,
+>3     byte            10              algorithm: TWOFISH-128,
+>3     byte            11              algorithm: RC2,
+>3     byte            12              algorithm: TWOFISH-192,
+>3     byte            13              algorithm: TWOFISH-256,
+>3     byte            14              algorithm: blowfish-128,
+>3     byte            15              algorithm: blowfish-192,
+>3     byte            16              algorithm: blowfish-256,
+>3     byte            100             algorithm: RC6,
+>3     byte            101             algorithm: IDEA,
+>4     byte            0               mode: CBC,
+>4     byte            1               mode: ECB,
+>4     byte            2               mode: CFB,
+>4     byte            3               mode: OFB,
+>4     byte            4               mode: nOFB,
+>5     byte            0               keymode: 8bit
+>5     byte            1               keymode: 4bit
+>5     byte            2               keymode: SHA-1 hash
+>5     byte            3               keymode: MD5 hash
+
+#------------------------------------------------------------------------------
+# archive:  file(1) magic for archive formats (see also "msdos" for self-
+#           extracting compressed archives)
+#
+# cpio, ar, arc, arj, hpack, lha/lharc, rar, squish, uc2, zip, zoo, etc.
+# pre-POSIX "tar" archives are handled in the C code.
+
+# POSIX tar archives
+257    string          ustar\0         POSIX tar archive
+257    string          ustar\040\040\0 GNU tar archive
+
+# cpio archives
+#
+# Yes, the top two "cpio archive" formats *are* supposed to just be "short".
+# The idea is to indicate archives produced on machines with the same
+# byte order as the machine running "file" with "cpio archive", and
+# to indicate archives produced on machines with the opposite byte order
+# from the machine running "file" with "byte-swapped cpio archive".
+#
+# The SVR4 "cpio(4)" hints that there are additional formats, but they
+# are defined as "short"s; I think all the new formats are
+# character-header formats and thus are strings, not numbers.
+0      short           070707          cpio archive
+0      short           0143561         byte-swapped cpio archive
+0      string          070707          ASCII cpio archive (pre-SVR4 or odc)
+0      string          070701          ASCII cpio archive (SVR4 with no CRC)
+0      string          070702          ASCII cpio archive (SVR4 with CRC)
+
+# Debian package (needs to go before regular portable archives)
+#
+0      string          !<arch>\ndebian
+>8     string          debian-split    part of multipart Debian package
+>8     string          debian-binary   Debian binary package
+>68    string          >\0             (format %s)
+>81    string          bz2             \b, uses bzip2 compression
+>84    string          gz              \b, uses gzip compression
+#>136  ledate          x               created: %s
+
+# other archives
+0      long            0177555         very old archive
+0      short           0177555         very old PDP-11 archive
+0      long            0177545         old archive
+0      short           0177545         old PDP-11 archive
+0      long            0100554         apl workspace
+0      string          =<ar>           archive
+
+# MIPS archive (needs to go before regular portable archives)
+#
+0      string  !<arch>\n__________E    MIPS archive
+>20    string  U                       with MIPS Ucode members
+>21    string  L                       with MIPSEL members
+>21    string  B                       with MIPSEB members
+>19    string  L                       and an EL hash table
+>19    string  B                       and an EB hash table
+>22    string  X                       -- out of date
+
+0      string          -h-             Software Tools format archive text
+
+#
+# XXX - why are there multiple <ar> thingies?  Note that 0x213c6172 is
+# "!<ar", so, for new-style (4.xBSD/SVR2andup) archives, we have:
+#
+# 0    string          !<arch>         current ar archive
+# 0    long            0x213c6172      archive file
+#
+# and for SVR1 archives, we have:
+#
+# 0    string          \<ar>           System V Release 1 ar archive
+# 0    string          =<ar>           archive
+#
+# XXX - did Aegis really store shared libraries, breakpointed modules,
+# and absolute code program modules in the same format as new-style
+# "ar" archives?
+#
+0      string          !<arch>         current ar archive
+>8     string          __.SYMDEF       random library
+>0     belong          =65538          - pre SR9.5
+>0     belong          =65539          - post SR9.5
+>0     beshort         2               - object archive
+>0     beshort         3               - shared library module
+>0     beshort         4               - debug break-pointed module
+>0     beshort         5               - absolute code program module
+0      string          \<ar>           System V Release 1 ar archive
+0      string          =<ar>           archive
+#
+# XXX - from "vax", which appears to collect a bunch of byte-swapped
+# thingies, to help you recognize VAX files on big-endian machines;
+# with "leshort", "lelong", and "string", that's no longer necessary....
+#
+0      belong          0x65ff0000      VAX 3.0 archive
+0      belong          0x3c61723e      VAX 5.0 archive
+#
+0      long            0x213c6172      archive file
+0      lelong          0177555         very old VAX archive
+0      leshort         0177555         very old PDP-11 archive
+#
+# XXX - "pdp" claims that 0177545 can have an __.SYMDEF member and thus
+# be a random library (it said 0xff65 rather than 0177545).
+#
+0      lelong          0177545         old VAX archive
+>8     string          __.SYMDEF       random library
+0      leshort         0177545         old PDP-11 archive
+>8     string          __.SYMDEF       random library
+#
+# From "pdp" (but why a 4-byte quantity?)
+#
+0      lelong          0x39bed         PDP-11 old archive
+0      lelong          0x39bee         PDP-11 4.0 archive
+
+# ARC archiver, from Daniel Quinlan (quinlan@yggdrasil.com)
+#
+# The first byte is the magic (0x1a), byte 2 is the compression type for
+# the first file (0x01 through 0x09), and bytes 3 to 15 are the MS-DOS
+# filename of the first file (null terminated).  Since some types collide
+# we only test some types on basis of frequency: 0x08 (83%), 0x09 (5%),
+# 0x02 (5%), 0x03 (3%), 0x04 (2%), 0x06 (2%).  0x01 collides with terminfo.
+0      lelong&0x8080ffff       0x0000081a      ARC archive data, dynamic LZW
+0      lelong&0x8080ffff       0x0000091a      ARC archive data, squashed
+0      lelong&0x8080ffff       0x0000021a      ARC archive data, uncompressed
+0      lelong&0x8080ffff       0x0000031a      ARC archive data, packed
+0      lelong&0x8080ffff       0x0000041a      ARC archive data, squeezed
+0      lelong&0x8080ffff       0x0000061a      ARC archive data, crunched
+
+# Acorn archive formats (Disaster prone simpleton, m91dps@ecs.ox.ac.uk)
+# I can't create either SPARK or ArcFS archives so I have not tested this stuff
+# [GRR:  the original entries collide with ARC, above; replaced with combined
+#  version (not tested)]
+#0     byte            0x1a            RISC OS archive
+#>1    string          archive         (ArcFS format)
+#0     string          \032archive     RISC OS archive (ArcFS format)
+0       string          \032            RISC OS archive (spark format)
+0       string          Archive\000     RISC OS archive (ArcFS format)
+
+# ARJ archiver (jason@jarthur.Claremont.EDU)
+0      leshort         0xea60          ARJ archive data
+>5     byte            x               \b, v%d,
+>8     byte            &0x04           multi-volume,
+>8     byte            &0x10           slash-switched,
+>8     byte            &0x20           backup,
+>34    string          x               original name: %s,
+>7     byte            0               os: MS-DOS
+>7     byte            1               os: PRIMOS
+>7     byte            2               os: Unix
+>7     byte            3               os: Amiga
+>7     byte            4               os: Macintosh
+>7     byte            5               os: OS/2
+>7     byte            6               os: Apple ][ GS
+>7     byte            7               os: Atari ST
+>7     byte            8               os: NeXT
+>7     byte            9               os: VAX/VMS
+>3     byte            >0              %d]
+
+# HA archiver (Greg Roelofs, newt@uchicago.edu)
+# This is a really bad format. A file containing HAWAII will match this...
+#0     string          HA              HA archive data,
+#>2    leshort         =1              1 file,
+#>2    leshort         >1              %u files,
+#>4    byte&0x0f       =0              first is type CPY
+#>4    byte&0x0f       =1              first is type ASC
+#>4    byte&0x0f       =2              first is type HSC
+#>4    byte&0x0f       =0x0e           first is type DIR
+#>4    byte&0x0f       =0x0f           first is type SPECIAL
+
+# HPACK archiver (Peter Gutmann, pgut1@cs.aukuni.ac.nz)
+0      string          HPAK            HPACK archive data
+
+# JAM Archive volume format, by Dmitry.Kohmanyuk@UA.net
+0      string          \351,\001JAM\           JAM archive,
+>7     string          >\0                     version %.4s
+>0x26  byte            =0x27                   -
+>>0x2b string          >\0                     label %.11s,
+>>0x27 lelong          x                       serial %08x,
+>>0x36 string          >\0                     fstype %.8s
+
+# LHARC/LHA archiver (Greg Roelofs, newt@uchicago.edu)
+2      string          -lh0-           LHarc 1.x archive data [lh0]
+2      string          -lh1-           LHarc 1.x archive data [lh1]
+2      string          -lz4-           LHarc 1.x archive data [lz4]
+2      string          -lz5-           LHarc 1.x archive data [lz5]
+#      [never seen any but the last; -lh4- reported in comp.compression:]
+2      string          -lzs-           LHa 2.x? archive data [lzs]
+2      string          -lh\40-         LHa 2.x? archive data [lh ]
+2      string          -lhd-           LHa 2.x? archive data [lhd]
+2      string          -lh2-           LHa 2.x? archive data [lh2]
+2      string          -lh3-           LHa 2.x? archive data [lh3]
+2      string          -lh4-           LHa (2.x) archive data [lh4]
+2      string          -lh5-           LHa (2.x) archive data [lh5]
+2      string          -lh6-           LHa (2.x) archive data [lh6]
+2      string          -lh7-           LHa (2.x) archive data [lh7]
+>20    byte            x               - header level %d
+
+# RAR archiver (Greg Roelofs, newt@uchicago.edu)
+0      string          Rar!            RAR archive data,
+>44    byte            x               v%0x,
+>35    byte            0               os: MS-DOS
+>35    byte            1               os: OS/2
+>35    byte            2               os: Win32
+>35    byte            3               os: Unix
+
+# SQUISH archiver (Greg Roelofs, newt@uchicago.edu)
+0      string          SQSH            squished archive data (Acorn RISCOS)
+
+# UC2 archiver (Greg Roelofs, newt@uchicago.edu)
+# I can't figure out the self-extracting form of these buggers...
+0      string          UC2\x1a         UC2 archive data
+
+# ZIP archives (Greg Roelofs, c/o zip-bugs@wkuvx1.wku.edu)
+0      string          PK\003\004      Zip archive data
+>4     byte            0x09            \b, at least v0.9 to extract
+>4     byte            0x0a            \b, at least v1.0 to extract
+>4     byte            0x0b            \b, at least v1.1 to extract
+>4     byte            0x14            \b, at least v2.0 to extract
+
+# Zoo archiver
+20     lelong          0xfdc4a7dc      Zoo archive data
+>4     byte            >48             \b, v%c.
+>>6    byte            >47             \b%c
+>>>7   byte            >47             \b%c
+>32    byte            >0              \b, modify: v%d
+>>33   byte            x               \b.%d+
+>42    lelong          0xfdc4a7dc      \b,
+>>70   byte            >0              extract: v%d
+>>>71  byte            x               \b.%d+
+
+# Shell archives
+10     string          #\ This\ is\ a\ shell\ archive  shell archive text
+
+#
+# LBR. NB: May conflict with the questionable 
+#          "binary Computer Graphics Metafile" format.
+#
+0       string  \0\ \ \ \ \ \ \ \ \ \ \ \0\0    LBR archive data
+#
+# PMA (CP/M derivative of LHA)
+#
+2       string          -pm0-           PMarc archive data [pm0]
+2       string          -pm1-           PMarc archive data [pm1]
+2       string          -pm2-           PMarc archive data [pm2]
+2       string          -pms-           PMarc SFX archive (CP/M, DOS)
+5       string          -pc1-           PopCom compressed executable (CP/M)
+
+# From Rafael Laboissiere <rafael@laboissiere.net>
+# The Project Revision Control System (see
+# http://prcs.sourceforge.net) generates a packaged project
+# file which is recognized by the following entry: 
+0      leshort         0xeb81  PRCS packaged project
+
+# Microsoft cabinets 
+# by David Necas (Yeti) <yeti@physics.muni.cz>
+#0     string  MSCF\0\0\0\0    Microsoft cabinet file data,
+#>25   byte    x               v%d
+#>24   byte    x               \b.%d
+# MPi: All CABs have version 1.3, so this is pointless.
+# Better magic in debian-additions.
+
+# GTKtalog catalogs 
+# by David Necas (Yeti) <yeti@physics.muni.cz>
+4      string  gtktalog\       GTKtalog catalog data,
+>13    string  3               version 3
+>>14   beshort 0x677a          (gzipped)
+>>14   beshort !0x677a         (not gzipped)
+>13    string  >3              version %s
+
+############################################################################
+# Parity archive reconstruction file, the 'par' file format now used on Usenet.
+0       string          PAR\0  PARity archive data
+>48    leshort         =0      - Index file
+>48    leshort         >0      - file number %d
+
+# Felix von Leitner <felix-file@fefe.de>
+0      string  d8:announce     BitTorrent file
+
+# Atari MSA archive - Teemu Hukkanen <tjhukkan@iki.fi>
+0       beshort 0x0e0f          Atari MSA archive data
+>2      beshort x              \b, %d sectors per track
+>4      beshort 0              \b, 1 sided
+>4      beshort 1              \b, 2 sided
+>6      beshort x              \b, starting track: %d
+>8      beshort x              \b, ending track: %d
+
+# Alternate ZIP string (amc@arwen.cs.berkeley.edu)
+0      string  PK00PK\003\004  Zip archive data
+
+# ACE archive (from http://www.wotsit.org/download.asp?f=ace)
+# by Stefan `Sec` Zehl <sec@42.org>
+7      string          **ACE**         ACE compressed archive
+>15    byte    >0              version %d
+>16    byte    =0x00           \b, from MS-DOS
+>16    byte    =0x01           \b, from OS/2
+>16    byte    =0x02           \b, from Win/32
+>16    byte    =0x03           \b, from Unix
+>16    byte    =0x04           \b, from MacOS
+>16    byte    =0x05           \b, from WinNT
+>16    byte    =0x06           \b, from Primos
+>16    byte    =0x07           \b, from AppleGS
+>16    byte    =0x08           \b, from Atari
+>16    byte    =0x09           \b, from Vax/VMS
+>16    byte    =0x0A           \b, from Amiga
+>16    byte    =0x0B           \b, from Next
+>14    byte    x               \b, version %d to extract
+>5     leshort &0x0080         \b, multiple volumes,
+>>17   byte    x               \b (part %d),
+>5     leshort &0x0002         \b, contains comment
+>5     leshort &0x0200         \b, sfx
+>5     leshort &0x0400         \b, small dictionary
+>5     leshort &0x0800         \b, multi-volume
+>5     leshort &0x1000         \b, contains AV-String
+>>30   string\x16*UNREGISTERED\x20VERSION*     (unregistered)
+>5     leshort &0x2000         \b, with recovery record
+>5     leshort &0x4000         \b, locked
+>5     leshort &0x8000         \b, solid
+# Date in MS-DOS format (whatever that is)
+#>18   lelong  x               Created on
+
+# sfArk : compression program for Soundfonts (sf2) by Dirk Jagdmann
+# <doj@cubic.org>
+0x1A   string  sfArk           sfArk compressed Soundfont
+>0x15  string  2
+>>0x1  string  >\0             Version %s
+>>0x2A string  >\0             : %s
+
+#------------------------------------------------------------------------------
+# citrus locale declaration
+#
+
+0      string          RuneCT          Citrus locale declaration for LC_CTYPE
+
+
+#------------------------------------------------------------------------------
+# compress:  file(1) magic for pure-compression formats (no archives)
+#
+# compress, gzip, pack, compact, huf, squeeze, crunch, freeze, yabba, etc.
+#
+# Formats for various forms of compressed data
+# Formats for "compress" proper have been moved into "compress.c",
+# because it tries to uncompress it to figure out what's inside.
+
+# standard unix compress
+0      string          \037\235        compress'd data
+>2     byte&0x80       >0              block compressed
+>2     byte&0x1f       x               %d bits
+
+# gzip (GNU zip, not to be confused with Info-ZIP or PKWARE zip archiver)
+#   Edited by Chris Chittleborough <cchittleborough@yahoo.com.au>, March 2002
+#      * Original filename is only at offset 10 if "extra field" absent
+#      * Produce shorter output - notably, only report compression methods
+#        other than 8 ("deflate", the only method defined in RFC 1952).
+0       string          \037\213        gzip compressed data
+>2     byte            <8              \b, reserved method
+>2     byte            >8              \b, unknown method
+>3     byte            &0x01           \b, ASCII
+>3     byte            &0x02           \b, continuation
+>3     byte            &0x04           \b, extra field
+>3     byte&0xC        =0x08
+>>10   string          x               \b, was "%s"
+>9     byte            =0x00           \b, from MS-DOS
+>9     byte            =0x01           \b, from Amiga
+>9     byte            =0x02           \b, from VMS
+>9     byte            =0x03           \b, from Unix
+>9     byte            =0x05           \b, from Atari
+>9     byte            =0x06           \b, from OS/2
+>9     byte            =0x07           \b, from MacOS
+>9     byte            =0x0A           \b, from Tops/20
+>9     byte            =0x0B           \b, from Win/32
+>3     byte            &0x10           \b, comment
+>3     byte            &0x20           \b, encrypted
+### >4 ledate          x               last modified: %s,
+>8     byte            2               \b, max compression
+>8     byte            4               \b, max speed
+
+# packed data, Huffman (minimum redundancy) codes on a byte-by-byte basis
+0      string          \037\036        packed data
+>2     belong          >1              \b, %d characters originally
+>2     belong          =1              \b, %d character originally
+#
+# This magic number is byte-order-independent.
+0      short           0x1f1f          old packed data
+
+# XXX - why *two* entries for "compacted data", one of which is
+# byte-order independent, and one of which is byte-order dependent?
+#
+0      short           0x1fff          compacted data
+# This string is valid for SunOS (BE) and a matching "short" is listed
+# in the Ultrix (LE) magic file.
+0      string          \377\037        compacted data
+0      short           0145405         huf output
+
+# bzip2
+0      string          BZh             bzip2 compressed data
+>3     byte            >47             \b, block size = %c00k
+
+# squeeze and crunch
+# Michael Haardt <michael@cantor.informatik.rwth-aachen.de>
+0      beshort         0x76FF          squeezed data,
+>4     string          x               original name %s
+0      beshort         0x76FE          crunched data,
+>2     string          x               original name %s
+0      beshort         0x76FD          LZH compressed data,
+>2     string          x               original name %s
+
+# Freeze
+0      string          \037\237        frozen file 2.1
+0      string          \037\236        frozen file 1.0 (or gzip 0.5)
+
+# SCO compress -H (LZH)
+0      string          \037\240        SCO compress -H (LZH) data
+
+# European GSM 06.10 is a provisional standard for full-rate speech
+# transcoding, prI-ETS 300 036, which uses RPE/LTP (residual pulse
+# excitation/long term prediction) coding at 13 kbit/s.
+#
+# There's only a magic nibble (4 bits); that nibble repeats every 33
+# bytes.  This isn't suited for use, but maybe we can use it someday.
+#
+# This will cause very short GSM files to be declared as data and
+# mismatches to be declared as data too!
+#0     byte&0xF0       0xd0            data
+#>33   byte&0xF0       0xd0
+#>66   byte&0xF0       0xd0
+#>99   byte&0xF0       0xd0
+#>132  byte&0xF0       0xd0            GSM 06.10 compressed audio
+
+# bzip a block-sorting file compressor
+#      by Julian Seward <sewardj@cs.man.ac.uk> and others
+#
+0      string          BZ              bzip compressed data
+>2     byte            x               \b, version: %c
+>3     string          =1              \b, compression block size 100k
+>3     string          =2              \b, compression block size 200k
+>3     string          =3              \b, compression block size 300k
+>3     string          =4              \b, compression block size 400k
+>3     string          =5              \b, compression block size 500k
+>3     string          =6              \b, compression block size 600k
+>3     string          =7              \b, compression block size 700k
+>3     string          =8              \b, compression block size 800k
+>3     string          =9              \b, compression block size 900k
+
+# lzop from <markus.oberhumer@jk.uni-linz.ac.at>
+0      string          \x89\x4c\x5a\x4f\x00\x0d\x0a\x1a\x0a    lzop compressed data
+>9     beshort         <0x0940
+>>9    byte&0xf0       =0x00           - version 0.
+>>9    beshort&0x0fff  x               \b%03x,
+>>13   byte            1               LZO1X-1,
+>>13   byte            2               LZO1X-1(15),
+>>13   byte            3               LZO1X-999,
+## >>22        bedate          >0              last modified: %s,
+>>14   byte            =0x00           os: MS-DOS
+>>14   byte            =0x01           os: Amiga
+>>14   byte            =0x02           os: VMS
+>>14   byte            =0x03           os: Unix
+>>14   byte            =0x05           os: Atari
+>>14   byte            =0x06           os: OS/2
+>>14   byte            =0x07           os: MacOS
+>>14   byte            =0x0A           os: Tops/20
+>>14   byte            =0x0B           os: WinNT
+>>14   byte            =0x0E           os: Win32
+>9     beshort         >0x0939
+>>9    byte&0xf0       =0x00           - version 0.
+>>9    byte&0xf0       =0x10           - version 1.
+>>9    byte&0xf0       =0x20           - version 2.
+>>9    beshort&0x0fff  x               \b%03x,
+>>15   byte            1               LZO1X-1,
+>>15   byte            2               LZO1X-1(15),
+>>15   byte            3               LZO1X-999,
+## >>25        bedate          >0              last modified: %s,
+>>17   byte            =0x00           os: MS-DOS
+>>17   byte            =0x01           os: Amiga
+>>17   byte            =0x02           os: VMS
+>>17   byte            =0x03           os: Unix
+>>17   byte            =0x05           os: Atari
+>>17   byte            =0x06           os: OS/2
+>>17   byte            =0x07           os: MacOS
+>>17   byte            =0x0A           os: Tops/20
+>>17   byte            =0x0B           os: WinNT
+>>17   byte            =0x0E           os: Win32
+
+# 4.3BSD-Quasijarus Strong Compression
+# http://minnie.tuhs.org/Quasijarus/compress.html
+0      string          \037\241        Quasijarus strong compressed data
+
+# From: Cory Dikkers <cdikkers@swbell.net>
+0      string          XPKF            Amiga xpkf.library compressed data
+0      string          PP11            Power Packer 1.1 compressed data
+0      string          PP20            Power Packer 2.0 compressed data,
+>4     belong          0x09090909      fast compression
+>4     belong          0x090A0A0A      mediocre compression
+>4     belong          0x090A0B0B      good compression
+>4     belong          0x090A0C0C      very good compression
+>4     belong          0x090A0C0D      best compression
+
+# 7z archiver, from Thomas Klausner (wiz@danbala.tuwien.ac.at)
+# http://www.7-zip.org or DOC/7zFormat.txt 
+#
+0      string          7z\274\257\047\034      7z archive data,
+>6     byte            x                       version %d
+>7     byte            x                       \b.%d
+
+# AFX compressed files (Wolfram Kleff)
+2      string          -afx-           AFX compressed file data
+
+#------------------------------------------------------------------------------
+# fsav:  file(1) magic for datafellows fsav virus definition files
+# Anthon van der Neut (anthon@mnt.org)
+0      beshort         0x1575          fsav (linux) macro virus
+>8     leshort         >0              (%d-
+>11    byte            >0              \b%02d-
+>10    byte            >0              \b%02d)
+
+# comment this out for now because it regognizes every file where
+# the eighth character is \n
+#8     byte            0x0a
+#>12   byte            0x07
+#>11   leshort         >0              fsav (linux) virus (%d-
+#>10   byte            0               \b01-
+#>10   byte            1               \b02-
+#>10   byte            2               \b03-
+#>10   byte            3               \b04-
+#>10   byte            4               \b05-
+#>10   byte            5               \b06-
+#>10   byte            6               \b07-
+#>10   byte            7               \b08-
+#>10   byte            8               \b08-
+#>10   byte            9               \b10-
+#>10   byte            10              \b11-
+#>10   byte            11              \b12-
+#>9    byte            >0              \b%02d)
+
+#------------------------------------------------------------------------------
+# GEOS files (Vidar Madsen, vidar@gimp.org)
+# semi-commonly used in embedded and handheld systems.
+0      belong  0xc745c153      GEOS
+>40    byte    1       executable
+>40    byte    2       VMFile
+>40    byte    3       binary
+>40    byte    4       directory label
+>40    byte    <1      unknown
+>40    byte    >4      unknown
+>4     string  >\0     \b, name "%s"
+#>44   short   x       \b, version %d
+#>46   short   x       \b.%d
+#>48   short   x       \b, rev %d
+#>50   short   x       \b.%d
+#>52   short   x       \b, proto %d
+#>54   short   x       \br%d
+#>168  string  >\0     \b, copyright "%s"
+#------------------------------------------------------------
+# Java ByteCode
+# From Larry Schwimmer (schwim@cs.stanford.edu)
+0      belong          0xcafebabe      compiled Java class data,
+>6     beshort x       version %d.
+>4     beshort x       \b%d
+#------------------------------------------------------------
+# Java serialization
+# From Martin Pool (m.pool@pharos.com.au)
+0      beshort         0xaced          Java serialization data
+>2     beshort         >0x0004         \b, version %d
+
+#------------------------------------------------------------------------------
+# mlssa: file(1) magic for MLSSA datafiles
+#
+0              lelong          0xffffabcd      MLSSA datafile,
+>4             leshort         x               algorithm %d,
+>10            lelong          x               %d samples
+
+#------------------------------------------------------------------------------
+# mmdf:  file(1) magic for MMDF mail files
+#
+0      string  \001\001\001\001        MMDF mailbox
+
+#------------------------------------------------------------------------------
+# msdos:  file(1) magic for MS-DOS files
+#
+
+# .BAT files (Daniel Quinlan, quinlan@yggdrasil.com)
+0      string/c        @echo\ off      MS-DOS batch file text
+
+# XXX - according to Microsoft's spec, at an offset of 0x3c in a
+# PE-format executable is the offset in the file of the PE header;
+# unfortunately, that's a little-endian offset, and there's no way
+# to specify an indirect offset with a specified byte order.
+# So, for now, we assume the standard MS-DOS stub, which puts the
+# PE header at 0x80 = 128.
+#
+# Required OS version and subsystem version were 4.0 on some NT 3.51
+# executables built with Visual C++ 4.0, so it's not clear that
+# they're interesting.  The user version was 0.0, but there's
+# probably some linker directive to set it.  The linker version was
+# 3.0, except for one ".exe" which had it as 4.20 (same damn linker!).
+#
+128    string          PE\0\0  MS Windows PE
+>150   leshort&0x0100  >0      32-bit
+>132   leshort         0x0     unknown processor
+>132   leshort         0x14c   Intel 80386
+>132   leshort         0x166   MIPS R4000
+>132   leshort         0x184   Alpha
+>132   leshort         0x268   Motorola 68000
+>132   leshort         0x1f0   PowerPC
+>132   leshort         0x290   PA-RISC
+>148   leshort         >27
+>>220  leshort         0       unknown subsystem
+>>220  leshort         1       native
+>>220  leshort         2       GUI
+>>220  leshort         3       console
+>>220  leshort         7       POSIX
+>150   leshort&0x2000  =0      executable
+#>>136 ledate          x       stamp %s,
+>>150  leshort&0x0001  >0      not relocatable
+#>>150 leshort&0x0004  =0      with line numbers,
+#>>150 leshort&0x0008  =0      with local symbols,
+#>>150 leshort&0x0200  =0      with debug symbols,
+>>150  leshort&0x1000  >0      system file
+#>>148 leshort         >0
+#>>>154        byte            x       linker %d
+#>>>155        byte            x       \b.%d,
+#>>148 leshort         >27
+#>>>192        leshort         x       requires OS %d
+#>>>194        leshort         x       \b.%d,
+#>>>196        leshort         x       user version %d
+#>>>198        leshort         x       \b.%d,
+#>>>200        leshort         x       subsystem version %d
+#>>>202        leshort         x       \b.%d,
+>150   leshort&0x2000  >0      DLL
+#>>136 ledate          x       stamp %s,
+>>150  leshort&0x0001  >0      not relocatable
+#>>150 leshort&0x0004  =0      with line numbers,
+#>>150 leshort&0x0008  =0      with local symbols,
+#>>150 leshort&0x0200  =0      with debug symbols,
+>>150  leshort&0x1000  >0      system file
+#>>148 leshort         >0
+#>>>154        byte            x       linker %d
+#>>>155        byte            x       \b.%d,
+#>>148 leshort         >27
+#>>>192        leshort         x       requires OS %d
+#>>>194        leshort         x       \b.%d,
+#>>>196        leshort         x       user version %d
+#>>>198        leshort         x       \b.%d,
+#>>>200        leshort         x       subsystem version %d
+#>>>202        leshort         x       \b.%d,
+0      leshort         0x14c   MS Windows COFF Intel 80386 object file
+#>4    ledate          x       stamp %s
+0      leshort         0x166   MS Windows COFF MIPS R4000 object file
+#>4    ledate          x       stamp %s
+0      leshort         0x184   MS Windows COFF Alpha object file
+#>4    ledate          x       stamp %s
+0      leshort         0x268   MS Windows COFF Motorola 68000 object file
+#>4    ledate          x       stamp %s
+0      leshort         0x1f0   MS Windows COFF PowerPC object file
+#>4    ledate          x       stamp %s
+0      leshort         0x290   MS Windows COFF PA-RISC object file
+#>4    ledate          x       stamp %s
+
+# .EXE formats (Greg Roelofs, newt@uchicago.edu)
+#
+0      string  MZ              MS-DOS executable (EXE)
+>24    string  @               \b, OS/2 or MS Windows
+>>0xe7 string  LH/2\ Self-Extract      \b, %s
+>>0xe9 string  PKSFX2          \b, %s
+>>122  string  Windows\ self-extracting\ ZIP   \b, %s
+>0x1c  string  RJSX\xff\xff    \b, ARJ SFX
+>0x1c  string  diet\xf9\x9c    \b, diet compressed
+>0x1c  string  LZ09            \b, LZEXE v0.90 compressed
+>0x1c  string  LZ91            \b, LZEXE v0.91 compressed
+>0x1e  string  Copyright\ 1989-1990\ PKWARE\ Inc.      \b, PKSFX
+# JM: 0x1e "PKLITE Copr. 1990-92 PKWARE Inc. All Rights Reserved\7\0\0\0"
+>0x1e  string  PKLITE\ Copr.   \b, %.6s compressed
+>0x24  string  LHa's\ SFX      \b, %.15s
+>0x24  string  LHA's\ SFX      \b, %.15s
+>1638  string  -lh5-           \b, LHa SFX archive v2.13S
+>7195  string  Rar!            \b, RAR self-extracting archive
+#
+# [GRR 950118:  file 3.15 has a buffer-size limitation; offsets bigger than
+#   8161 bytes are ignored.  To make the following entries work, increase
+#   HOWMANY in file.h to 32K at least, and maybe to 70K or more for OS/2,
+#   NT/Win32 and VMS.]
+# [GRR:  some company sells a self-extractor/displayer for image data(!)]
+#
+>11696 string  PK\003\004      \b, PKZIP SFX archive v1.1
+>13297 string  PK\003\004      \b, PKZIP SFX archive v1.93a
+>15588 string  PK\003\004      \b, PKZIP2 SFX archive v1.09
+>15770 string  PK\003\004      \b, PKZIP SFX archive v2.04g
+>28374 string  PK\003\004      \b, PKZIP2 SFX archive v1.02
+#
+# Info-ZIP self-extractors
+#    these are the DOS versions:
+>25115 string  PK\003\004      \b, Info-ZIP SFX archive v5.12
+>26331 string  PK\003\004      \b, Info-ZIP SFX archive v5.12 w/decryption
+#    these are the OS/2 versions (OS/2 is flagged above):
+>47031 string  PK\003\004      \b, Info-ZIP SFX archive v5.12
+>49845 string  PK\003\004      \b, Info-ZIP SFX archive v5.12 w/decryption
+#    this is the NT/Win32 version:
+>69120 string  PK\003\004      \b, Info-ZIP NT SFX archive v5.12 w/decryption
+#
+# TELVOX Teleinformatica CODEC self-extractor for OS/2:
+>49801 string  \x79\xff\x80\xff\x76\xff        \b, CODEC archive v3.21
+>>49824        leshort         =1                      \b, 1 file
+>>49824        leshort         >1                      \b, %u files
+
+# .COM formats (Daniel Quinlan, quinlan@yggdrasil.com)
+# Uncommenting only the first two lines will cover about 2/3 of COM files,
+# but it isn't feasible to match all COM files since there must be at least
+# two dozen different one-byte "magics".
+#0     byte            0xe9            MS-DOS executable (COM)
+#>6    string  SFX\ of\ LHarc  (%s)
+#0     byte            0x8c            MS-DOS executable (COM)
+# 0xeb conflicts with "sequent" magic
+#0     byte            0xeb            MS-DOS executable (COM)
+#0     byte            0xb8            MS-DOS executable (COM)
+
+# miscellaneous formats
+0      string          LZ              MS-DOS executable (built-in)
+#0     byte            0xf0            MS-DOS program library data
+#
+
+#
+# Windows Registry files.
+#
+0      string          regf            Windows NT registry file
+0      string          CREG            Windows 95 registry file
+
+
+# AAF files:
+# <stuartc@rd.bbc.co.uk> Stuart Cunningham
+0      string  \320\317\021\340\241\261\032\341AAFB\015\000OM\006\016\053\064\001\001\001\377                  AAF legacy file using MS Structured Storage
+>30    byte    9               (512B sectors)
+>30    byte    12              (4kB sectors)
+0      string  \320\317\021\340\241\261\032\341\001\002\001\015\000\002\000\000\006\016\053\064\003\002\001\001                        AAF file using MS Structured Storage
+>30    byte    9               (512B sectors)
+>30    byte    12              (4kB sectors)
+
+# Popular applications
+2080   string  Microsoft\ Word\ 6.0\ Document  %s
+2080   string  Documento\ Microsoft\ Word\ 6 Spanish Microsoft Word 6 document data
+# Pawel Wiecek <coven@i17linuxb.ists.pwr.wroc.pl> (for polish Word)
+2112   string  MSWordDoc                       Microsoft Word document data
+#
+0      belong  0x31be0000                      Microsoft Word Document
+#
+0       string  PO^Q`                          Microsoft Word 6.0 Document
+#
+0      string  \376\067\0\043                  Microsoft Office Document
+0      string  \320\317\021\340\241\261\032\341        Microsoft Office Document
+0      string  \333\245-\0\0\0                 Microsoft Office Document
+#
+2080   string  Microsoft\ Excel\ 5.0\ Worksheet        %s
+2080   string  Foglio\ di\ lavoro\ Microsoft\ Exce     %s
+#
+# Pawel Wiecek <coven@i17linuxb.ists.pwr.wroc.pl> (for polish Excel)
+2114   string  Biff5           Microsoft Excel 5.0 Worksheet
+# Italian MS-Excel
+2121   string  Biff5           Microsoft Excel 5.0 Worksheet
+0      string  \x09\x04\x06\x00\x00\x00\x10\x00        Microsoft Excel Worksheet
+#
+0      belong  0x00001a00      Lotus 1-2-3
+>4     belong  0x00100400      wk3 document data
+>4     belong  0x02100400      wk4 document data
+>4     belong  0x07800100      fm3 or fmb document data
+>4     belong  0x07800000      fm3 or fmb document data
+#
+0      belong  0x00000200      Lotus 1-2-3
+>4     belong  0x06040600      wk1 document data
+>4     belong  0x06800200      fmt document data
+
+# Help files
+0      string  ?_\3\0          MS Windows Help Data
+
+#  DeIsL1.isu what this is I don't know
+0      string  \161\250\000\000\001\002        DeIsL1.isu whatever that is
+
+# Winamp .avs
+#0     string  Nullsoft\ AVS\ Preset\ \060\056\061\032 A plug in for Winamp ms-windows Freeware media player
+0      string  Nullsoft\ AVS\ Preset\  Winamp plug in
+
+# Hyper terminal:
+0      string  HyperTerminal\  hyperterm
+>15    string  1.0\ --\ HyperTerminal\ data\ file      MS-windows Hyperterminal
+
+# Windows Metafont .WMF
+0      string  \327\315\306\232\000\000\000\000\000\000        ms-windows metafont .wmf
+
+#tz3 files whatever that is (MS Works files)
+0      string  \003\001\001\004\070\001\000\000        tz3 ms-works file
+0      string  \003\002\001\004\070\001\000\000        tz3 ms-works file
+0      string  \003\003\001\004\070\001\000\000        tz3 ms-works file
+
+# PGP sig files .sig
+#0 string \211\000\077\003\005\000\063\237\127 065 to  \027\266\151\064\005\045\101\233\021\002 PGP sig
+0 string \211\000\077\003\005\000\063\237\127\065\027\266\151\064\005\045\101\233\021\002 PGP sig
+0 string \211\000\077\003\005\000\063\237\127\066\027\266\151\064\005\045\101\233\021\002 PGP sig
+0 string \211\000\077\003\005\000\063\237\127\067\027\266\151\064\005\045\101\233\021\002 PGP sig
+0 string \211\000\077\003\005\000\063\237\127\070\027\266\151\064\005\045\101\233\021\002 PGP sig
+0 string \211\000\077\003\005\000\063\237\127\071\027\266\151\064\005\045\101\233\021\002 PGP sig
+0 string \211\000\225\003\005\000\062\122\207\304\100\345\042 PGP sig
+
+# windows zips files .dmf
+0      string  MDIF\032\000\010\000\000\000\372\046\100\175\001\000\001\036\001\000 Ms-windows special zipped file
+
+
+# Windows help file FTG FTS
+0      string  \164\146\115\122\012\000\000\000\001\000\000\000        ms-windows help cache
+
+# grp old windows 3.1 group files
+0 string  \120\115\103\103     Ms-windows 3.1 group files
+
+
+# lnk files windows symlinks
+0      string  \114\000\000\000\001\024\002\000\000\000\000\000\300\000\000\000\000\000\000\106        ms-Windows shortcut
+
+#ico files
+0      string  \102\101\050\000\000\000\056\000\000\000\000\000\000\000        Icon for ms-windows
+
+# Windows icons (Ian Springer <ips@fpk.hp.com>)
+0      string  \000\000\001\000        ms-windows icon resource
+>4     byte    1                       - 1 icon
+>4     byte    >1                      - %d icons
+>>6    byte    >0                      \b, %dx
+>>>7   byte    >0                      \b%d
+>>8    byte    0                       \b, 256-colors
+>>8    byte    >0                      \b, %d-colors
+
+
+# .chr files
+0      string  PK\010\010BGI   Borland font 
+>4     string  >\0     %s
+# then there is a copyright notice
+
+
+# .bgi files
+0      string  pk\010\010BGI   Borland device 
+>4     string  >\0     %s
+# then there is a copyright notice
+
+
+# recycled/info the windows trash bin index
+9      string  \000\000\000\030\001\000\000\000 ms-windows recycled bin info
+
+
+##### put in Either Magic/font or Magic/news
+# Acroread or something  files wrongly identified as G3  .pfm
+# these have the form \000 \001 any? \002 \000 \000
+# or \000 \001 any? \022 \000 \000
+#0     string  \000\001 pfm?
+#>3    string  \022\000\000Copyright\  yes
+#>3    string  \002\000\000Copyright\  yes
+#>3    string  >\0     oops, not a font file. Cancel that.
+#it clashes with ttf files so put it lower down.
+
+# From Doug Lee via a FreeBSD pr
+9      string          GERBILDOC       First Choice document
+9      string          GERBILDB        First Choice database
+9      string          GERBILCLIP      First Choice database
+0      string          GERBIL          First Choice device file
+9      string          RABBITGRAPH     RabbitGraph file
+0      string          DCU1            Borland Delphi .DCU file
+0      string          !<spell>        MKS Spell hash list (old format)
+0      string          !<spell2>       MKS Spell hash list
+# Too simple - MPi
+#0     string          AH              Halo(TM) bitmapped font file
+0      lelong          0x08086b70      TurboC BGI file
+0      lelong          0x08084b50      TurboC Font file
+
+# WARNING: below line conflicts with Infocom game data Z-machine 3
+0      byte            0x03            DBase 3 data file
+>0x04  lelong          0               (no records)
+>0x04  lelong          >0              (%ld records)
+0      byte            0x83            DBase 3 data file with memo(s)
+>0x04  lelong          0               (no records)
+>0x04  lelong          >0              (%ld records)
+0      leshort         0x0006          DBase 3 index file
+0      string          PMCC            Windows 3.x .GRP file
+1      string          RDC-meg         MegaDots 
+>8     byte            >0x2F           version %c
+>9     byte            >0x2F           \b.%c file
+0      lelong          0x4C
+>4     lelong          0x00021401      Windows shortcut file
+
+# DOS EPS Binary File Header
+# From: Ed Sznyter <ews@Black.Market.NET>
+0      belong          0xC5D0D3C6      DOS EPS Binary File
+>4     long            >0              Postscript starts at byte %d
+>>8    long            >0              length %d
+>>>12  long            >0              Metafile starts at byte %d
+>>>>16 long            >0              length %d
+>>>20  long            >0              TIFF starts at byte %d
+>>>>24 long            >0              length %d
+
+# TNEF magic From "Joomy" <joomy@se-ed.net> 
+0      leshort         0x223e9f78      TNEF
+
+# HtmlHelp files (.chm)
+0      string  ITSF\003\000\000\000\x60\000\000\000\001\000\000\000    MS Windows HtmlHelp Data
+
+# GFA-BASIC (Wolfram Kleff)
+2      string          GFA-BASIC3      GFA-BASIC 3 data
+
+# DJGPP compiled files
+# v >2, uses DPMI & small(2k) stub (Robert vd Boon, rjvdboon@europe.com)
+0x200  string          go32stub        DOS-executable compiled w/DJGPP
+>0x20c string          >0              (stub v%.4s)
+>>0x8b2        string          djp             [compressed w/%s
+>>>&1  string          >\0             %.4s]
+>>0x8ad        string          UPX             [compressed w/%s
+>>>&1  string          >\0             %.4s]
+>>0x1c string          pmodedj         stubbed with %s
+
+# QDOS
+4      belong          0x4AFB          QDOS executable
+>9     pstring         x               '%s'
+0      beshort         0xFB01          QDOS object
+>2     pstring         x               '%s'
+
+#------------------------------------------------------------------------------
+# From Stuart Caie <kyzer@4u.net> (developer of cabextract)
+# Microsoft Cabinet files
+0      string          MSCF\0\0\0\0    Microsoft Cabinet file
+>8     lelong          x               \b, %u bytes
+>28    leshort         1               \b, 1 file
+>28    leshort         >1              \b, %u files
+
+# InstallShield Cabinet files
+0      string          ISc(            InstallShield Cabinet file
+>5     byte&0xf0       =0x60           version 6,
+>5     byte&0xf0       !0x60           version 4/5,
+>(12.l+40)     lelong  x               %u files
+
+# Windows CE package files
+0      string          MSCE\0\0\0\0    Microsoft WinCE install header
+>20    lelong          0               \b, architecture-independent
+>20    lelong          103             \b, Hitachi SH3
+>20    lelong          104             \b, Hitachi SH4
+>20    lelong          0xA11           \b, StrongARM
+>20    lelong          4000            \b, MIPS R4000
+>20    lelong          10003           \b, Hitachi SH3
+>20    lelong          10004           \b, Hitachi SH3E
+>20    lelong          10005           \b, Hitachi SH4
+>20    lelong          70001           \b, ARM 7TDMI
+>52    leshort         1               \b, 1 file
+>52    leshort         >1              \b, %u files
+>56    leshort         1               \b, 1 registry entry
+>56    leshort         >1              \b, %u registry entries
+
+# Outlook Personal Folders
+0      lelong  0x4E444221      Microsoft Outlook binary email folder
+
+# From: Dirk Jagdmann <doj@cubic.org>
+0      lelong  0x00035f3f      Windows 3.x help file
+
+# Christophe Monniez
+0      string  Client\ UrlCache\ MMF   Microsoft Internet Explorer Cache File
+>20    string  >\0                     Version %s
+0      string  \xCF\xAD\x12\xFE        Microsoft Outlook Express DBX File
+>4     byte    =0xC5                   Message database
+>4     byte    =0xC6                   Folder database
+>4     byte    =0xC7                   Accounts informations
+>4     byte    =0x30                   Offline database
+
+
+# Windows Enhanced Metafile (EMF)
+# See msdn.microsoft.com/archive/en-us/dnargdi/html/msdn_enhmeta.asp 
+# for further information. Note that "0 lelong 1" should be true i.e.
+# the first double word in the file should be 1. With the extended
+# syntax available by some file commands you could write:
+# 0 lelong 1
+# &40 ulelong 0x464D4520 Windows Enhanced Metafile (EMF) image data
+40     ulelong 0x464D4520      Windows Enhanced Metafile (EMF) image data
+>44    ulelong x               version 0x%x.
+# If the description has a length greater than zero, it exists and is 
+# found at offset (*64).
+>64    ulelong >0              Description available at offset 0x%x
+>>60   ulelong >0              (length 0x%x)
+# Note it would be better to print out the description, which is found 
+# as below. Unfortunately the following only prints out the first couple
+# of characters instead of all the "description length"
+# number of characters -- indicated by the ulelong at offset 60.
+>>(64.l)  lestring16 >0 Description: %15.15s
+#WordPerfect type files Version 1.6 - PLEASE DO NOT REMOVE THIS LINE
+0      string  \377WPC\020\000\000\000\022\012\001\001\000\000\000\000 (WP) loadable text
+>15    byte    0       Optimized for Intel
+>15    byte    1       Optimized for Non-Intel
+1      string  WPC     (Corel/WP)
+>8     short   257     WordPerfect macro
+>8     short   258     WordPerfect help file
+>8     short   259     WordPerfect keyboard file
+>8     short   266     WordPerfect document
+>8     short   267     WordPerfect dictionary
+>8     short   268     WordPerfect thesaurus
+>8     short   269     WordPerfect block
+>8     short   270     WordPerfect rectangular block
+>8     short   271     WordPerfect column block
+>8     short   272     WordPerfect printer data
+>8     short   275     WordPerfect printer data
+>8     short   276     WordPerfect driver resource data
+>8     short   279     WordPerfect hyphenation code
+>8     short   280     WordPerfect hyphenation data
+>8     short   281     WordPerfect macro resource data
+>8     short   283     WordPerfect hyphenation lex
+>8     short   285     WordPerfect wordlist
+>8     short   286     WordPerfect equation resource data
+>8     short   289     WordPerfect spell rules
+>8     short   290     WordPerfect dictionary rules
+>8     short   295     WordPerfect spell rules (Microlytics)
+>8     short   299     WordPerfect settings file
+>8     short   301     WordPerfect 4.2 document
+>8     short   325     WordPerfect dialog file
+>8     short   332     WordPerfect button bar
+>8     short   513     Shell macro
+>8     short   522     Shell definition
+>8     short   769     Notebook macro
+>8     short   770     Notebook help file
+>8     short   771     Notebook keyboard file
+>8     short   778     Notebook definition
+>8     short   1026    Calculator help file
+>8     short   1538    Calendar help file
+>8     short   1546    Calendar data file
+>8     short   1793    Editor macro
+>8     short   1794    Editor help file
+>8     short   1795    Editor keyboard file
+>8     short   1817    Editor macro resource file
+>8     short   2049    Macro editor macro
+>8     short   2050    Macro editor help file
+>8     short   2051    Macro editor keyboard file
+>8     short   2305    PlanPerfect macro
+>8     short   2306    PlanPerfect help file
+>8     short   2307    PlanPerfect keyboard file
+>8     short   2314    PlanPerfect worksheet
+>8     short   2319    PlanPerfect printer definition
+>8     short   2322    PlanPerfect graphic definition
+>8     short   2323    PlanPerfect data
+>8     short   2324    PlanPerfect temporary printer
+>8     short   2329    PlanPerfect macro resource data
+>8     byte    11      Mail
+>8     short   2818    help file
+>8     short   2821    distribution list
+>8     short   2826    out box
+>8     short   2827    in box
+>8     short   2836    users archived mailbox
+>8     short   2837    archived message database
+>8     short   2838    archived attachments
+>8     short   3083    Printer temporary file
+>8     short   3330    Scheduler help file
+>8     short   3338    Scheduler in file
+>8     short   3339    Scheduler out file
+>8     short   3594    GroupWise settings file
+>8     short   3601    GroupWise directory services
+>8     short   3627    GroupWise settings file
+>8     short   4362    Terminal resource data
+>8     short   4363    Terminal resource data
+>8     short   4395    Terminal resource data
+>8     short   4619    GUI loadable text
+>8     short   4620    graphics resource data
+>8     short   4621    printer settings file
+>8     short   4622    port definition file
+>8     short   4623    print queue parameters
+>8     short   4624    compressed file
+>8     short   5130    Network service msg file
+>8     short   5131    Network service msg file
+>8     short   5132    Async gateway login msg
+>8     short   5134    GroupWise message file
+>8     short   7956    GroupWise admin domain database
+>8     short   7957    GroupWise admin host database
+>8     short   7959    GroupWise admin remote host database
+>8     short   7960    GroupWise admin ADS deferment data file
+>8     short   8458    IntelliTAG (SGML) compiled DTD
+>8     long    18219264        WordPerfect graphic image (1.0)
+>8     long    18219520        WordPerfect graphic image (2.0)
+#end of WordPerfect type files Version 1.6 - PLEASE DO NOT REMOVE THIS LINE
+
+#------------------------------------------------------------------------------
+# rtf: file(1) magic for Rich Text Format (RTF)
+#
+# Duncan P. Simpson, D.P.Simpson@dcs.warwick.ac.uk
+#
+0      string          {\\rtf          Rich Text Format data,
+>5     byte            x               version %c,
+>6     string          \\ansi          ANSI
+>6     string          \\mac           Apple Macintosh
+>6     string          \\pc            IBM PC, code page 437
+>6     string          \\pca           IBM PS/2, code page 850
+
+#------------------------------------------------------------------------------
+# animation:  file(1) magic for animation/movie formats
+#
+# animation formats
+# MPEG, FLI, DL originally from vax@ccwf.cc.utexas.edu (VaX#n8)
+# FLC, SGI, Apple originally from Daniel Quinlan (quinlan@yggdrasil.com)
+
+# MPEG sequences
+# Scans for all common MPEG header start codes
+0        belong&0xFFFFFF00  0x00000100     MPEG sequence
+>3       byte               0xBA
+>>4      byte               &0x40          \b, v2, program multiplex
+>>4      byte               ^0x40          \b, v1, system multiplex
+>3       byte               0xBB           \b, v1/2, multiplex (missing pack header)
+>3       byte               0xB0           \b, v4
+>>5      belong             0x000001B5
+>>>9     byte               &0x80
+>>>>10   byte&0xF0          16             \b, video
+>>>>10   byte&0xF0          32             \b, still texture
+>>>>10   byte&0xF0          48             \b, mesh
+>>>>10   byte&0xF0          64             \b, face
+>>>9     byte               ^0x80
+>>>>9    byte&0xF8          8              \b, video
+>>>>9    byte&0xF8          16             \b, still texture
+>>>>9    byte&0xF8          24             \b, mesh
+>>>>9    byte&0xF8          32             \b, face
+>>4      byte               1              \b, simple @ L1
+>>4      byte               2              \b, simple @ L2
+>>4      byte               3              \b, simple @ L3
+>>4      byte               4              \b, simple @ L0
+>>4      byte               17             \b, simple scalable @ L1
+>>4      byte               18             \b, simple scalable @ L2
+>>4      byte               33             \b, core @ L1
+>>4      byte               34             \b, core @ L2
+>>4      byte               50             \b, main @ L2
+>>4      byte               51             \b, main @ L3
+>>4      byte               53             \b, main @ L4
+>>4      byte               66             \b, n-bit @ L2
+>>4      byte               81             \b, scalable texture @ L1
+>>4      byte               97             \b, simple face animation @ L1
+>>4      byte               98             \b, simple face animation @ L2
+>>4      byte               99             \b, simple face basic animation @ L1
+>>4      byte               100            \b, simple face basic animation @ L2
+>>4      byte               113            \b, basic animation text @ L1
+>>4      byte               114            \b, basic animation text @ L2
+>>4      byte               129            \b, hybrid @ L1
+>>4      byte               130            \b, hybrid @ L2
+>>4      byte               145            \b, advanced RT simple @ L!
+>>4      byte               146            \b, advanced RT simple @ L2
+>>4      byte               147            \b, advanced RT simple @ L3
+>>4      byte               148            \b, advanced RT simple @ L4
+>>4      byte               161            \b, core scalable @ L1
+>>4      byte               162            \b, core scalable @ L2
+>>4      byte               163            \b, core scalable @ L3
+>>4      byte               177            \b, advanced coding efficiency @ L1
+>>4      byte               178            \b, advanced coding efficiency @ L2
+>>4      byte               179            \b, advanced coding efficiency @ L3
+>>4      byte               180            \b, advanced coding efficiency @ L4
+>>4      byte               193            \b, advanced core @ L1
+>>4      byte               194            \b, advanced core @ L2
+>>4      byte               209            \b, advanced scalable texture @ L1
+>>4      byte               210            \b, advanced scalable texture @ L2
+>>4      byte               211            \b, advanced scalable texture @ L3
+>>4      byte               225            \b, simple studio @ L1
+>>4      byte               226            \b, simple studio @ L2
+>>4      byte               227            \b, simple studio @ L3
+>>4      byte               228            \b, simple studio @ L4
+>>4      byte               229            \b, core studio @ L1
+>>4      byte               230            \b, core studio @ L2
+>>4      byte               231            \b, core studio @ L3
+>>4      byte               232            \b, core studio @ L4
+>>4      byte               240            \b, advanced simple @ L0
+>>4      byte               241            \b, advanced simple @ L1
+>>4      byte               242            \b, advanced simple @ L2
+>>4      byte               243            \b, advanced simple @ L3
+>>4      byte               244            \b, advanced simple @ L4
+>>4      byte               245            \b, advanced simple @ L5
+>>4      byte               247            \b, advanced simple @ L3b
+>>4      byte               248            \b, FGS @ L0
+>>4      byte               249            \b, FGS @ L1
+>>4      byte               250            \b, FGS @ L2
+>>4      byte               251            \b, FGS @ L3
+>>4      byte               252            \b, FGS @ L4
+>>4      byte               253            \b, FGS @ L5
+>3       byte               0xB5           \b, v4
+>>4      byte               &0x80
+>>>5     byte&0xF0          16             \b, video (missing profile header)
+>>>5     byte&0xF0          32             \b, still texture (missing profile header)
+>>>5     byte&0xF0          48             \b, mesh (missing profile header)
+>>>5     byte&0xF0          64             \b, face (missing profile header)
+>>4      byte               ^0x80
+>>>4     byte&0xF8          8              \b, video (missing profile header)
+>>>4     byte&0xF8          16             \b, still texture (missing profile header)
+>>>4     byte&0xF8          24             \b, mesh (missing profile header)
+>>>4     byte&0xF8          32             \b, face (missing profile header)
+>3       byte               0xB3
+>>12     belong             0x000001B8     \b, v1, progressive Y'CbCr 4:2:0 video
+>>12     belong             0x000001B2     \b, v1, progressive Y'CbCr 4:2:0 video
+>>12     belong             0x000001B5     \b, v2,
+>>>16    byte&0x0F          1              \b HP
+>>>16    byte&0x0F          2              \b Spt
+>>>16    byte&0x0F          3              \b SNR
+>>>16    byte&0x0F          4              \b MP
+>>>16    byte&0x0F          5              \b SP
+>>>17    byte&0xF0          64             \b@HL
+>>>17    byte&0xF0          96             \b@H-14
+>>>17    byte&0xF0          128            \b@ML
+>>>17    byte&0xF0          160            \b@LL
+>>>17    byte               &0x08          \b progressive
+>>>17    byte               ^0x08          \b interlaced
+>>>17    byte&0x06          2              \b Y'CbCr 4:2:0 video
+>>>17    byte&0x06          4              \b Y'CbCr 4:2:2 video
+>>>17    byte&0x06          6              \b Y'CbCr 4:4:4 video
+>>11     byte               &0x02
+>>>75    byte               &0x01
+>>>>140  belong             0x000001B8     \b, v1, progressive Y'CbCr 4:2:0 video
+>>>>140  belong             0x000001B2     \b, v1, progressive Y'CbCr 4:2:0 video
+>>>>140  belong             0x000001B5     \b, v2,
+>>>>>144 byte&0x0F          1              \b HP
+>>>>>144 byte&0x0F          2              \b Spt
+>>>>>144 byte&0x0F          3              \b SNR
+>>>>>144 byte&0x0F          4              \b MP
+>>>>>144 byte&0x0F          5              \b SP
+>>>>>145 byte&0xF0          64             \b@HL
+>>>>>145 byte&0xF0          96             \b@H-14
+>>>>>145 byte&0xF0          128            \b@ML
+>>>>>145 byte&0xF0          160            \b@LL
+>>>>>145 byte               &0x08          \b progressive
+>>>>>145 byte               ^0x08          \b interlaced
+>>>>>145 byte&0x06          2              \b Y'CbCr 4:2:0 video
+>>>>>145 byte&0x06          4              \b Y'CbCr 4:2:2 video
+>>>>>145 byte&0x06          6              \b Y'CbCr 4:4:4 video
+>>>76    belong             0x000001B8     \b, v1, progressive Y'CbCr 4:2:0 video
+>>>76    belong             0x000001B2     \b, v1, progressive Y'CbCr 4:2:0 video
+>>>76    belong             0x000001B5     \b, v2,
+>>>80    byte&0x0F          1              \b HP
+>>>80    byte&0x0F          2              \b Spt
+>>>80    byte&0x0F          3              \b SNR
+>>>80    byte&0x0F          4              \b MP
+>>>80    byte&0x0F          5              \b SP
+>>>81    byte&0xF0          64             \b@HL
+>>>81    byte&0xF0          96             \b@H-14
+>>>81    byte&0xF0          128            \b@ML
+>>>81    byte&0xF0          160            \b@LL
+>>>81    byte               &0x08          \b progressive
+>>>81    byte               ^0x08          \b interlaced
+>>>81    byte&0x06          2              \b Y'CbCr 4:2:0 video
+>>>81    byte&0x06          4              \b Y'CbCr 4:2:2 video
+>>>81    byte&0x06          6              \b Y'CbCr 4:4:4 video
+>>4      belong&0xFFFFFF00  0x78043800     \b, HD-TV 1920P
+>>>7     byte&0xF0          0x10           \b, 16:9
+>>4      belong&0xFFFFFF00  0x50002D00     \b, SD-TV 1280I
+>>>7     byte&0xF0          0x10           \b, 16:9
+>>4      belong&0xFFFFFF00  0x30024000     \b, PAL Capture
+>>>7     byte&0xF0          0x10           \b, 4:3
+>>4      beshort&0xFFF0     0x2C00         \b, 4CIF
+>>>5     beshort&0x0FFF     0x01E0         \b NTSC
+>>>5     beshort&0x0FFF     0x0240         \b PAL
+>>>7     byte&0xF0          0x20           \b, 4:3
+>>>7     byte&0xF0          0x30           \b, 16:9
+>>>7     byte&0xF0          0x40           \b, 11:5
+>>>7     byte&0xF0          0x80           \b, PAL 4:3
+>>>7     byte&0xF0          0xC0           \b, NTSC 4:3
+>>4      belong&0xFFFFFF00  0x2801E000     \b, LD-TV 640P
+>>>7     byte&0xF0          0x10           \b, 4:3
+>>4      belong&0xFFFFFF00  0x1400F000     \b, 320x240
+>>>7     byte&0xF0          0x10           \b, 4:3
+>>4      belong&0xFFFFFF00  0x0F00A000     \b, 240x160
+>>>7     byte&0xF0          0x10           \b, 4:3
+>>4      belong&0xFFFFFF00  0x0A007800     \b, 160x120
+>>>7     byte&0xF0          0x10           \b, 4:3
+>>4      beshort&0xFFF0     0x1600         \b, CIF
+>>>5     beshort&0x0FFF     0x00F0         \b NTSC
+>>>5     beshort&0x0FFF     0x0120         \b PAL
+>>>7     byte&0xF0          0x20           \b, 4:3
+>>>7     byte&0xF0          0x30           \b, 16:9
+>>>7     byte&0xF0          0x40           \b, 11:5
+>>>7     byte&0xF0          0x80           \b, PAL 4:3
+>>>7     byte&0xF0          0xC0           \b, NTSC 4:3
+>>>5     beshort&0x0FFF     0x0240         \b PAL 625
+>>>>7    byte&0xF0          0x20           \b, 4:3
+>>>>7    byte&0xF0          0x30           \b, 16:9
+>>>>7    byte&0xF0          0x40           \b, 11:5
+>>4      beshort&0xFFF0     0x2D00         \b, CCIR/ITU
+>>>5     beshort&0x0FFF     0x01E0         \b NTSC 525
+>>>5     beshort&0x0FFF     0x0240         \b PAL 625
+>>>7     byte&0xF0          0x20           \b, 4:3
+>>>7     byte&0xF0          0x30           \b, 16:9
+>>>7     byte&0xF0          0x40           \b, 11:5
+>>4      beshort&0xFFF0     0x1E00         \b, SVCD
+>>>5     beshort&0x0FFF     0x01E0         \b NTSC 525
+>>>5     beshort&0x0FFF     0x0240         \b PAL 625
+>>>7     byte&0xF0          0x20           \b, 4:3
+>>>7     byte&0xF0          0x30           \b, 16:9
+>>>7     byte&0xF0          0x40           \b, 11:5
+>>7      byte&0x0F          1              \b, 23.976 fps
+>>7      byte&0x0F          2              \b, 24 fps
+>>7      byte&0x0F          3              \b, 25 fps
+>>7      byte&0x0F          4              \b, 29.97 fps
+>>7      byte&0x0F          5              \b, 30 fps
+>>7      byte&0x0F          6              \b, 50 fps
+>>7      byte&0x0F          7              \b, 59.94 fps
+>>7      byte&0x0F          8              \b, 60 fps
+>>11     byte               &0x04          \b, Constrained
+
+# MPEG ADTS Audio (*.mpx/mxa/aac)
+# from dreesen@math.fu-berlin.de
+# modified to fully support MPEG ADTS
+
+# MP3, M1A
+0       beshort&0xFFFE  0xFFFA         MPEG ADTS, layer III, v1
+# rates
+>2      byte&0xF0       0x10           \b,  32 kBits
+>2      byte&0xF0       0x20           \b,  40 kBits
+>2      byte&0xF0       0x30           \b,  48 kBits
+>2      byte&0xF0       0x40           \b,  56 kBits
+>2      byte&0xF0       0x50           \b,  64 kBits
+>2      byte&0xF0       0x60           \b,  80 kBits
+>2      byte&0xF0       0x70           \b,  96 kBits
+>2      byte&0xF0       0x80           \b, 112 kBits
+>2      byte&0xF0       0x90           \b, 128 kBits
+>2      byte&0xF0       0xA0           \b, 160 kBits
+>2      byte&0xF0       0xB0           \b, 192 kBits
+>2      byte&0xF0       0xC0           \b, 224 kBits
+>2      byte&0xF0       0xD0           \b, 256 kBits
+>2      byte&0xF0       0xE0           \b, 320 kBits
+# timing
+>2      byte&0x0C       0x00           \b, 44.1 kHz
+>2      byte&0x0C       0x04           \b, 48 kHz
+>2      byte&0x0C       0x08           \b, 32 kHz
+# channels/options
+>3      byte&0xC0       0x00           \b, Stereo
+>3      byte&0xC0       0x40           \b, JntStereo
+>3      byte&0xC0       0x80           \b, 2x Monaural
+>3      byte&0xC0       0xC0           \b, Monaural
+#>1     byte            ^0x01           \b, Data Verify
+#>2     byte            &0x02           \b, Packet Pad
+#>2     byte            &0x01           \b, Custom Flag
+#>3     byte            &0x08           \b, Copyrighted
+#>3     byte            &0x04           \b, Original Source
+#>3     byte&0x03       1               \b, NR: 50/15 ms
+#>3     byte&0x03       3               \b, NR: CCIT J.17
+
+# MP2, M1A
+0       beshort&0xFFFE  0xFFFC         MPEG ADTS, layer II, v1
+# rates
+>2      byte&0xF0       0x10           \b,  32 kBits
+>2      byte&0xF0       0x20           \b,  48 kBits
+>2      byte&0xF0       0x30           \b,  56 kBits
+>2      byte&0xF0       0x40           \b,  64 kBits
+>2      byte&0xF0       0x50           \b,  80 kBits
+>2      byte&0xF0       0x60           \b,  96 kBits
+>2      byte&0xF0       0x70           \b, 112 kBits
+>2      byte&0xF0       0x80           \b, 128 kBits
+>2      byte&0xF0       0x90           \b, 160 kBits
+>2      byte&0xF0       0xA0           \b, 192 kBits
+>2      byte&0xF0       0xB0           \b, 224 kBits
+>2      byte&0xF0       0xC0           \b, 256 kBits
+>2      byte&0xF0       0xD0           \b, 320 kBits
+>2      byte&0xF0       0xE0           \b, 384 kBits
+# timing
+>2      byte&0x0C       0x00           \b, 44.1 kHz
+>2      byte&0x0C       0x04           \b, 48 kHz
+>2      byte&0x0C       0x08           \b, 32 kHz
+# channels/options
+>3      byte&0xC0       0x00           \b, Stereo
+>3      byte&0xC0       0x40           \b, JntStereo
+>3      byte&0xC0       0x80           \b, 2x Monaural
+>3      byte&0xC0       0xC0           \b, Monaural
+#>1     byte            ^0x01           \b, Data Verify
+#>2     byte            &0x02           \b, Packet Pad
+#>2     byte            &0x01           \b, Custom Flag
+#>3     byte            &0x08           \b, Copyrighted
+#>3     byte            &0x04           \b, Original Source
+#>3     byte&0x03       1               \b, NR: 50/15 ms
+#>3     byte&0x03       3               \b, NR: CCIT J.17
+
+# MPA, M1A
+0       beshort&0xFFFE  0xFFFE         MPEG ADTS, layer I, v1
+# rate
+>2      byte&0xF0       0x10           \b,  32 kBits
+>2      byte&0xF0       0x20           \b,  64 kBits
+>2      byte&0xF0       0x30           \b,  96 kBits
+>2      byte&0xF0       0x40           \b, 128 kBits
+>2      byte&0xF0       0x50           \b, 160 kBits
+>2      byte&0xF0       0x60           \b, 192 kBits
+>2      byte&0xF0       0x70           \b, 224 kBits
+>2      byte&0xF0       0x80           \b, 256 kBits
+>2      byte&0xF0       0x90           \b, 288 kBits
+>2      byte&0xF0       0xA0           \b, 320 kBits
+>2      byte&0xF0       0xB0           \b, 352 kBits
+>2      byte&0xF0       0xC0           \b, 384 kBits
+>2      byte&0xF0       0xD0           \b, 416 kBits
+>2      byte&0xF0       0xE0           \b, 448 kBits
+# timing
+>2      byte&0x0C       0x00           \b, 44.1 kHz
+>2      byte&0x0C       0x04           \b, 48 kHz
+>2      byte&0x0C       0x08           \b, 32 kHz
+# channels/options
+>3      byte&0xC0       0x00           \b, Stereo
+>3      byte&0xC0       0x40           \b, JntStereo
+>3      byte&0xC0       0x80           \b, 2x Monaural
+>3      byte&0xC0       0xC0           \b, Monaural
+#>1     byte            ^0x01           \b, Data Verify
+#>2     byte            &0x02           \b, Packet Pad
+#>2     byte            &0x01           \b, Custom Flag
+#>3     byte            &0x08           \b, Copyrighted
+#>3     byte            &0x04           \b, Original Source
+#>3     byte&0x03       1               \b, NR: 50/15 ms
+#>3     byte&0x03       3               \b, NR: CCIT J.17
+
+# MP3, M2A
+0       beshort&0xFFFE  0xFFF2         MPEG ADTS, layer III, v2
+# rate
+>2      byte&0xF0       0x10           \b,   8 kBits
+>2      byte&0xF0       0x20           \b,  16 kBits
+>2      byte&0xF0       0x30           \b,  24 kBits
+>2      byte&0xF0       0x40           \b,  32 kBits
+>2      byte&0xF0       0x50           \b,  40 kBits
+>2      byte&0xF0       0x60           \b,  48 kBits
+>2      byte&0xF0       0x70           \b,  56 kBits
+>2      byte&0xF0       0x80           \b,  64 kBits
+>2      byte&0xF0       0x90           \b,  80 kBits
+>2      byte&0xF0       0xA0           \b,  96 kBits
+>2      byte&0xF0       0xB0           \b, 112 kBits
+>2      byte&0xF0       0xC0           \b, 128 kBits
+>2      byte&0xF0       0xD0           \b, 144 kBits
+>2      byte&0xF0       0xE0           \b, 160 kBits
+# timing
+>2      byte&0x0C       0x00           \b, 22.05 kHz
+>2      byte&0x0C       0x04           \b, 24 kHz
+>2      byte&0x0C       0x08           \b, 16 kHz
+# channels/options
+>3      byte&0xC0       0x00           \b, Stereo
+>3      byte&0xC0       0x40           \b, JntStereo
+>3      byte&0xC0       0x80           \b, 2x Monaural
+>3      byte&0xC0       0xC0           \b, Monaural
+#>1     byte            ^0x01           \b, Data Verify
+#>2     byte            &0x02           \b, Packet Pad
+#>2     byte            &0x01           \b, Custom Flag
+#>3     byte            &0x08           \b, Copyrighted
+#>3     byte            &0x04           \b, Original Source
+#>3     byte&0x03       1               \b, NR: 50/15 ms
+#>3     byte&0x03       3               \b, NR: CCIT J.17
+
+# MP2, M2A
+0       beshort&0xFFFE  0xFFF4         MPEG ADTS, layer II, v2
+# rate 
+>2      byte&0xF0       0x10           \b,   8 kBits
+>2      byte&0xF0       0x20           \b,  16 kBits 
+>2      byte&0xF0       0x30           \b,  24 kBits
+>2      byte&0xF0       0x40           \b,  32 kBits
+>2      byte&0xF0       0x50           \b,  40 kBits
+>2      byte&0xF0       0x60           \b,  48 kBits
+>2      byte&0xF0       0x70           \b,  56 kBits
+>2      byte&0xF0       0x80           \b,  64 kBits
+>2      byte&0xF0       0x90           \b,  80 kBits
+>2      byte&0xF0       0xA0           \b,  96 kBits
+>2      byte&0xF0       0xB0           \b, 112 kBits
+>2      byte&0xF0       0xC0           \b, 128 kBits
+>2      byte&0xF0       0xD0           \b, 144 kBits
+>2      byte&0xF0       0xE0           \b, 160 kBits
+# timing
+>2      byte&0x0C       0x00           \b, 22.05 kHz
+>2      byte&0x0C       0x04           \b, 24 kHz
+>2      byte&0x0C       0x08           \b, 16 kHz
+# channels/options
+>3      byte&0xC0       0x00           \b, Stereo
+>3      byte&0xC0       0x40           \b, JntStereo
+>3      byte&0xC0       0x80           \b, 2x Monaural
+>3      byte&0xC0       0xC0           \b, Monaural
+#>1     byte            ^0x01           \b, Data Verify
+#>2     byte            &0x02           \b, Packet Pad
+#>2     byte            &0x01           \b, Custom Flag
+#>3     byte            &0x08           \b, Copyrighted
+#>3     byte            &0x04           \b, Original Source
+#>3     byte&0x03       1               \b, NR: 50/15 ms
+#>3     byte&0x03       3               \b, NR: CCIT J.17
+
+# MPA, M2A
+0       beshort&0xFFFE  0xFFF6         MPEG ADTS, layer I, v2
+# rate
+>2      byte&0xF0       0x10           \b,  32 kBits
+>2      byte&0xF0       0x20           \b,  48 kBits
+>2      byte&0xF0       0x30           \b,  56 kBits
+>2      byte&0xF0       0x40           \b,  64 kBits
+>2      byte&0xF0       0x50           \b,  80 kBits
+>2      byte&0xF0       0x60           \b,  96 kBits
+>2      byte&0xF0       0x70           \b, 112 kBits
+>2      byte&0xF0       0x80           \b, 128 kBits
+>2      byte&0xF0       0x90           \b, 144 kBits
+>2      byte&0xF0       0xA0           \b, 160 kBits
+>2      byte&0xF0       0xB0           \b, 176 kBits
+>2      byte&0xF0       0xC0           \b, 192 kBits
+>2      byte&0xF0       0xD0           \b, 224 kBits
+>2      byte&0xF0       0xE0           \b, 256 kBits
+# timing
+>2      byte&0x0C       0x00           \b, 22.05 kHz
+>2      byte&0x0C       0x04           \b, 24 kHz
+>2      byte&0x0C       0x08           \b, 16 kHz
+# channels/options
+>3      byte&0xC0       0x00           \b, Stereo
+>3      byte&0xC0       0x40           \b, JntStereo
+>3      byte&0xC0       0x80           \b, 2x Monaural
+>3      byte&0xC0       0xC0           \b, Monaural
+#>1     byte            ^0x01           \b, Data Verify
+#>2     byte            &0x02           \b, Packet Pad
+#>2     byte            &0x01           \b, Custom Flag
+#>3     byte            &0x08           \b, Copyrighted
+#>3     byte            &0x04           \b, Original Source
+#>3     byte&0x03       1               \b, NR: 50/15 ms
+#>3     byte&0x03       3               \b, NR: CCIT J.17
+
+# MP3, M25A
+0       beshort&0xFFFE  0xFFE2         MPEG ADTS, layer III,  v2.5
+# rate  
+>2      byte&0xF0       0x10           \b,   8 kBits
+>2      byte&0xF0       0x20           \b,  16 kBits
+>2      byte&0xF0       0x30           \b,  24 kBits
+>2      byte&0xF0       0x40           \b,  32 kBits
+>2      byte&0xF0       0x50           \b,  40 kBits
+>2      byte&0xF0       0x60           \b,  48 kBits
+>2      byte&0xF0       0x70           \b,  56 kBits
+>2      byte&0xF0       0x80           \b,  64 kBits
+>2      byte&0xF0       0x90           \b,  80 kBits
+>2      byte&0xF0       0xA0           \b,  96 kBits
+>2      byte&0xF0       0xB0           \b, 112 kBits
+>2      byte&0xF0       0xC0           \b, 128 kBits
+>2      byte&0xF0       0xD0           \b, 144 kBits
+>2      byte&0xF0       0xE0           \b, 160 kBits
+# timing
+>2      byte&0x0C       0x00           \b, 11.025 kHz
+>2      byte&0x0C       0x04           \b, 12 kHz
+>2      byte&0x0C       0x08           \b, 8 kHz
+# channels/options
+>3      byte&0xC0       0x00           \b, Stereo
+>3      byte&0xC0       0x40           \b, JntStereo
+>3      byte&0xC0       0x80           \b, 2x Monaural
+>3      byte&0xC0       0xC0           \b, Monaural
+#>1     byte            ^0x01           \b, Data Verify
+#>2     byte            &0x02           \b, Packet Pad
+#>2     byte            &0x01           \b, Custom Flag
+#>3     byte            &0x08           \b, Copyrighted
+#>3     byte            &0x04           \b, Original Source
+#>3     byte&0x03       1               \b, NR: 50/15 ms
+#>3     byte&0x03       3               \b, NR: CCIT J.17
+
+# AAC (aka MPEG-2 NBC audio) and MPEG-4 audio
+
+# Stored AAC streams (instead of the MP4 format)
+0       string          ADIF           MPEG ADIF, AAC
+>4      byte            &0x80
+>>13    byte            &0x10          \b, VBR
+>>13    byte            ^0x10          \b, CBR
+>>16    byte&0x1E       0x02           \b, single stream
+>>16    byte&0x1E       0x04           \b, 2 streams
+>>16    byte&0x1E       0x06           \b, 3 streams
+>>16    byte            &0x08          \b, 4 or more streams
+>>16    byte            &0x10          \b, 8 or more streams
+>>4    byte            &0x80          \b, Copyrighted
+>>13   byte            &0x40          \b, Original Source
+>>13   byte            &0x20          \b, Home Flag
+>4      byte            ^0x80
+>>4     byte            &0x10          \b, VBR
+>>4     byte            ^0x10          \b, CBR
+>>7     byte&0x1E       0x02           \b, single stream
+>>7     byte&0x1E       0x04           \b, 2 streams
+>>7     byte&0x1E       0x06           \b, 3 streams
+>>7     byte            &0x08          \b, 4 or more streams
+>>7     byte            &0x10          \b, 8 or more streams
+>>4    byte            &0x40          \b, Original Stream(s)
+>>4    byte            &0x20          \b, Home Source
+
+# Live or stored single AAC stream (used with MPEG-2 systems)
+0       beshort&0xFFF6  0xFFF0         MPEG ADTS, AAC
+>1      byte            ^0x08          \b, v2
+>1      byte            &0x08          \b, v4
+# profile
+>>2     byte            &0xC0          \b LTP
+>2      byte&0xc0       0x00           \b, Main
+>2      byte&0xc0       0x40           \b, LC
+>2      byte&0xc0       0x80           \b, SSR
+# timing
+>2      byte&0x3c       0x00           \b, 96 kHz
+>2      byte&0x3c       0x04           \b, 88.2 kHz
+>2      byte&0x3c       0x08           \b, 64 kHz
+>2      byte&0x3c       0x0c           \b, 48 kHz
+>2      byte&0x3c       0x10           \b, 44.1 kHz
+>2      byte&0x3c       0x14           \b, 32 kHz
+>2      byte&0x3c       0x18           \b, 24 kHz
+>2      byte&0x3c       0x1c           \b, 22.05 kHz
+>2      byte&0x3c       0x20           \b, 16 kHz
+>2      byte&0x3c       0x24           \b, 12 kHz
+>2      byte&0x3c       0x28           \b, 11.025 kHz
+>2      byte&0x3c       0x2c           \b, 8 kHz
+# channels/options
+>2      beshort&0x01c0  0x0040         \b, monaural
+>2      beshort&0x01c0  0x0080         \b, stereo
+>2      beshort&0x01c0  0x00c0         \b, stereo + center
+>2      beshort&0x01c0  0x0100         \b, stereo+center+LFE
+>2      beshort&0x01c0  0x0140         \b, surround
+>2      beshort&0x01c0  0x0180         \b, surround + LFE
+>2      beshort         &0x01C0        \b, surround + side
+#>1     byte            ^0x01           \b, Data Verify
+#>2     byte            &0x02           \b, Custom Flag
+#>3     byte            &0x20           \b, Original Stream
+#>3     byte            &0x10           \b, Home Source
+#>3     byte            &0x08           \b, Copyrighted
+
+# Live MPEG-4 audio streams (instead of RTP FlexMux)
+0       beshort&0xFFE0  0x56E0         MPEG-4 LOAS
+#>1     beshort&0x1FFF  x              \b, %u byte packet
+>3      byte&0xE0       0x40
+>>4     byte&0x3C       0x04           \b, single stream
+>>4     byte&0x3C       0x08           \b, 2 streams
+>>4     byte&0x3C       0x0C           \b, 3 streams
+>>4     byte            &0x08          \b, 4 or more streams
+>>4     byte            &0x20          \b, 8 or more streams
+>3      byte&0xC0       0
+>>4     byte&0x78       0x08           \b, single stream
+>>4     byte&0x78       0x10           \b, 2 streams
+>>4     byte&0x78       0x18           \b, 3 streams
+>>4     byte            &0x20          \b, 4 or more streams
+>>4     byte            &0x40          \b, 8 or more streams
+0       beshort         0x4DE1         MPEG-4 LO-EP audio stream
+
+# FLI animation format
+4      leshort         0xAF11                  FLI file
+>6     leshort         x                       - %d frames,
+>8     leshort         x                       width=%d pixels,
+>10    leshort         x                       height=%d pixels,
+>12    leshort         x                       depth=%d,
+>16    leshort         x                       ticks/frame=%d
+# FLC animation format
+4      leshort         0xAF12                  FLC file
+>6     leshort         x                       - %d frames
+>8     leshort         x                       width=%d pixels,
+>10    leshort         x                       height=%d pixels,
+>12    leshort         x                       depth=%d,
+>16    leshort         x                       ticks/frame=%d
+
+# DL animation format
+# XXX - collision with most `mips' magic
+#
+# I couldn't find a real magic number for these, however, this
+# -appears- to work.  Note that it might catch other files, too, so be
+# careful!
+#
+# Note that title and author appear in the two 20-byte chunks
+# at decimal offsets 2 and 22, respectively, but they are XOR'ed with
+# 255 (hex FF)!  The DL format is really bad.
+#
+#0     byte    1       DL version 1, medium format (160x100, 4 images/screen)
+#>42   byte    x       - %d screens,
+#>43   byte    x       %d commands
+#0     byte    2       DL version 2
+#>1    byte    1       - large format (320x200,1 image/screen),
+#>1    byte    2       - medium format (160x100,4 images/screen),
+#>1    byte    >2      - unknown format,
+#>42   byte    x       %d screens,
+#>43   byte    x       %d commands
+# Based on empirical evidence, DL version 3 have several nulls following the
+# \003.  Most of them start with non-null values at hex offset 0x34 or so.
+#0     string  \3\0\0\0\0\0\0\0\0\0\0\0        DL version 3
+
+# SGI formats
+0      string          MOVI            Silicon Graphics movie file
+
+# Apple Quicktime and ISO types
+4       string          moov            Apple QuickTime
+>12     string          mvhd            \b movie (fast start)
+>12     string          mdra            \b URL
+>12     string          cmov            \b movie (fast start, compressed header)
+>12     string          rmra            \b multiple URLs
+4       string          mdat            Apple QuickTime movie (unoptimized)
+4       string          wide            Apple QuickTime movie (unoptimized)
+4       string          skip            Apple QuickTime movie (modified)
+4       string          free            Apple QuickTime movie (modified)
+4       string          idsc            Apple QuickTime image (fast start)
+4       string          idat            Apple QuickTime image (unoptimized)
+4       string          pckg            Apple QuickTime compressed archive
+4       string/B        jP              JPEG 2000 image
+4       string          ftyp            ISO Media
+>8      string          isom            \b, MPEG v4 system
+>8      string          mp41            \b, MPEG v4 system, version 1
+>8      string          mp42            \b, MPEG v4 system, version 2
+>8      string/B        jp2             \b, JPEG 2000 image
+>8      string          3gp             \b, MPEG v4 system, 3GPP (H.263/AMR)
+>8      string          mmp4            \b, MPEG v4 system, Mobile
+>8      string/B        M4A             \b, MPEG v4 system, iTunes AAC-LC
+>8      string/B        M4P             \b, MPEG v4 system, ISMA encrypted AAC-LC
+>8      string/B        M4B             \b, MPEG v4 system, iTunes AAC-LC/AMR
+>8      string/B        qt              \b, Apple QuickTime movie
+
+# iso 13818 transport stream
+#
+# from Oskar Schirmer <schirmer@scara.com> Feb 3, 2001 (ISO 13818.1)
+# (the following is a little bit restrictive and works fine for a stream
+#  that starts with PAT properly. it won't work for stream data, that is
+#  cut from an input device data right in the middle, but this shouldn't
+#  disturb)
+# syncbyte      8 bit  0x47
+# error_ind     1 bit  -
+# payload_start 1 bit  1
+# priority      1 bit  -
+# PID          13 bit  0x0000
+# scrambling    2 bit  -
+# adaptfld_ctrl 2 bit  1 or 3
+# conti_count   4 bit  0
+0      belong&0xFF5FFF1F       0x47400010      MPEG transport stream data
+>188   byte                    !0x47           CORRUPTED
+
+# DIF digital video file format <mpruett@sgi.com>
+0      belong&0xffffff00       0x1f070000      DIF
+>4     byte                    &0x01           (DVCPRO) movie file
+>4     byte                    ^0x01           (DV) movie file
+>3     byte                    &0x80           (PAL)
+>3     byte                    ^0x80           (NTSC)
+
+# Microsoft Advanced Streaming Format (ASF) <mpruett@sgi.com>
+0      belong                  0x3026b275      Microsoft ASF
+
+# MNG Video Format, <URL:http://www.libpng.org/pub/mng/spec/>
+0      string                  \x8aMNG         MNG video data,
+>4     belong                  !0x0d0a1a0a     CORRUPTED,
+>4     belong                  0x0d0a1a0a
+>>16    belong x                               %ld x
+>>20    belong x                               %ld
+
+# JNG Video Format, <URL:http://www.libpng.org/pub/mng/spec/>
+0      string                  \x8bJNG         JNG video data,
+>4     belong                  !0x0d0a1a0a     CORRUPTED,
+>4     belong                  0x0d0a1a0a
+>>16    belong x                               %ld x
+>>20    belong x                               %ld
+
+# Vivo video (Wolfram Kleff)
+3      string          \x0D\x0AVersion:Vivo    Vivo video data
+
+# VRML (Virtual Reality Modelling Language)
+0       string/b        #VRML\ V1.0\ ascii     VRML 1 file
+0      string/b        #VRML\ V2.0\ utf8       ISO/IEC 14772 VRML 97 file
+
+#---------------------------------------------------------------------------
+# HVQM4: compressed movie format designed by Hudson for Nintendo GameCube
+# From Mark Sheppard <msheppard@climax.co.uk>, 2002-10-03
+#
+0      string          HVQM4           %s
+>6     string          >\0             v%s
+>0     byte            x               GameCube movie,
+>0x34  ubeshort        x               %d x
+>0x36  ubeshort        x               %d,
+>0x26  ubeshort        x               %dµs,
+>0x42  ubeshort        0               no audio
+>0x42  ubeshort        >0              %dHz audio
+
+#------------------------------------------------------------------------------
+# chi:  file(1) magic for ChiWriter files
+#
+0       string          \\1cw\          ChiWriter file
+>5      string          >\0             version %s
+0       string          \\1cw           ChiWriter file
+
+#------------------------------------------------------------------------------
+# claris:  file(1) magic for claris
+# "H. Nanosecond" <aldomel@ix.netcom.com>
+# Claris Works a word processor, etc.
+# Version 3.0
+
+# .pct claris works clip art files
+#0000000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000
+#*
+#0001000 #010 250 377 377 377 377 000 213 000 230 000 021 002 377 014 000
+#null to byte 1000 octal
+514    string  \377\377\377\377\000    Claris clip art?
+>0     string  \0\0\0\0\0\0\0\0\0\0\0\0\0      yes.
+514    string  \377\377\377\377\001    Claris clip art?
+>0     string  \0\0\0\0\0\0\0\0\0\0\0\0\0      yes.
+
+# Claris works files
+# .cwk
+0      string  \002\000\210\003\102\117\102\117\000\001\206 Claris works document
+# .plt
+0      string  \020\341\000\000\010\010        Claris Works pallete files .plt
+
+# .msp a dictionary file I am not sure about this I have only one .msp file
+0      string  \002\271\262\000\040\002\000\164        Claris works dictionary
+
+# .usp are user dictionary bits
+# I am not sure about a magic header:
+#0000000 001 123 160 146 070 125 104 040 136 123 015 012 160 157 144 151
+#        soh   S   p   f   8   U   D  sp   ^   S  cr  nl   p   o   d   i
+#0000020 141 164 162 151 163 164 040 136 123 015 012 144 151 166 040 043
+#          a   t   r   i   s   t  sp   ^   S  cr  nl   d   i   v  sp   #
+
+# .mth Thesaurus
+# starts with \0 but no magic header
+
+# .chy Hyphenation file
+# I am not sure: 000 210 034 000 000
+
+# other claris files
+#./windows/claris/useng.ndx: data
+#./windows/claris/xtndtran.l32: data
+#./windows/claris/xtndtran.lst: data
+#./windows/claris/clworks.lbl: data
+#./windows/claris/clworks.prf: data
+#./windows/claris/userd.spl: data
+
+#------------------------------------------------------------------------------
+# fonts:  file(1) magic for font data
+#
+0      string          FONT            ASCII vfont text
+0      short           0436            Berkeley vfont data
+0      short           017001          byte-swapped Berkeley vfont data
+
+# PostScript fonts (must precede "printer" entries), quinlan@yggdrasil.com
+0      string          %!PS-AdobeFont-1.       PostScript Type 1 font text
+>20    string          >\0                     (%s)
+6      string          %!PS-AdobeFont-1.       PostScript Type 1 font program data
+
+# X11 font files in SNF (Server Natural Format) format
+0      belong          00000004                X11 SNF font data, MSB first
+0      lelong          00000004                X11 SNF font data, LSB first
+
+# X11 Bitmap Distribution Format, from Daniel Quinlan (quinlan@yggdrasil.com)
+0      string          STARTFONT\040           X11 BDF font text
+
+# X11 fonts, from Daniel Quinlan (quinlan@yggdrasil.com)
+# PCF must come before SGI additions ("MIPSEL MIPS-II COFF" collides)
+0      string          \001fcp                 X11 Portable Compiled Font data
+>12    byte            0x02                    \b, LSB first
+>12    byte            0x0a                    \b, MSB first
+0      string          D1.0\015                X11 Speedo font data
+
+#------------------------------------------------------------------------------
+# FIGlet fonts and controlfiles
+# From figmagic supplied with Figlet version 2.2
+# "David E. O'Brien" <obrien@FreeBSD.ORG>
+0      string          flf             FIGlet font
+>3     string          >2a             version %-2.2s
+0      string          flc             FIGlet controlfile
+>3     string          >2a             version %-2.2s
+
+# libGrx graphics lib fonts, from Albert Cahalan (acahalan@cs.uml.edu)
+# Used with djgpp (DOS Gnu C++), sometimes Linux or Turbo C++
+0      belong          0x14025919      libGrx font data,
+>8     leshort         x               %dx
+>10    leshort         x               \b%d
+>40    string          x               %s
+# Misc. DOS VGA fonts, from Albert Cahalan (acahalan@cs.uml.edu)
+0      belong          0xff464f4e      DOS code page font data collection
+7      belong          0x00454741      DOS code page font data
+7      belong          0x00564944      DOS code page font data (from Linux?)
+4098   string          DOSFONT         DOSFONT2 encrypted font data
+
+# downloadable fonts for browser (prints type) anthon@mnt.org
+0      string          PFR1            PFR1 font
+>102   string          >0              \b: %s
+
+# True Type fonts
+0      string  \000\001\000\000\000    TrueType font data
+
+0      string          \007\001\001\000Copyright\ (c)\ 199     Adobe Multiple Master font
+0      string          \012\001\001\000Copyright\ (c)\ 199     Adobe Multiple Master font
+
+# Opentype font data from Avi Bercovich
+0      string          OTTO            OpenType font data 
+
+
+#------------------------------------------------------------------------------
+# macintosh description
+#
+# BinHex is the Macintosh ASCII-encoded file format (see also "apple")
+# Daniel Quinlan, quinlan@yggdrasil.com
+11     string  must\ be\ converted\ with\ BinHex       BinHex binary text
+>41    string  x                                       \b, version %.3s
+
+# Stuffit archives are the de facto standard of compression for Macintosh
+# files obtained from most archives. (franklsm@tuns.ca)
+0      string          SIT!                    StuffIt Archive (data)
+>2     string          x                       : %s
+0      string          SITD                    StuffIt Deluxe (data)
+>2     string          x                       : %s
+0      string          Seg                     StuffIt Deluxe Segment (data)
+>2     string          x                       : %s
+
+# Newer StuffIt archives (grant@netbsd.org)
+0      string          StuffIt                 StuffIt Archive
+>162   string          >0                      : %s
+
+# Macintosh Applications and Installation binaries (franklsm@tuns.ca)
+0      string          APPL                    Macintosh Application (data)
+>2     string          x                       \b: %s
+
+# Macintosh System files (franklsm@tuns.ca)
+0      string          zsys                    Macintosh System File (data)
+0      string          FNDR                    Macintosh Finder (data)
+0      string          libr                    Macintosh Library (data)
+>2     string          x                       : %s
+0      string          shlb                    Macintosh Shared Library (data)
+>2     string          x                       : %s
+0      string          cdev                    Macintosh Control Panel (data)
+>2     string          x                       : %s
+0      string          INIT                    Macintosh Extension (data)
+>2     string          x                       : %s
+0      string          FFIL                    Macintosh Truetype Font (data)
+>2     string          x                       : %s
+0      string          LWFN                    Macintosh Postscript Font (data)
+>2     string          x                       : %s
+
+# Additional Macintosh Files (franklsm@tuns.ca)
+0      string          PACT                    Macintosh Compact Pro Archive (data)
+>2     string          x                       : %s
+0      string          ttro                    Macintosh TeachText File (data)
+>2     string          x                       : %s
+0      string          TEXT                    Macintosh TeachText File (data)
+>2     string          x                       : %s
+0      string          PDF                     Macintosh PDF File (data)
+>2     string          x                       : %s
+
+# MacBinary format (Eric Fischer, enf@pobox.com)
+#
+# Unfortunately MacBinary doesn't really have a magic number prior
+# to the MacBinary III format.  The checksum is really the way to
+# do it, but the magic file format isn't up to the challenge.
+#
+# 0    byte            0
+# 1    byte                            # filename length
+# 2    string                          # filename
+# 65    string                         # file type
+# 69   string                          # file creator
+# 73   byte                            # Finder flags
+# 74   byte            0
+# 75   beshort                         # vertical posn in window
+# 77   beshort                         # horiz posn in window
+# 79   beshort                         # window or folder ID
+# 81    byte                           # protected?
+# 82   byte            0
+# 83   belong                          # length of data segment
+# 87   belong                          # length of resource segment
+# 91   belong                          # file creation date
+# 95   belong                          # file modification date
+# 99   beshort                         # length of comment after resource
+# 101  byte                            # new Finder flags
+# 102  string          mBIN            # (only in MacBinary III)
+# 106  byte                            # char. code of file name
+# 107  byte                            # still more Finder flags
+# 116  belong                          # total file length
+# 120  beshort                         # length of add'l header
+# 122  byte            129             # for MacBinary II
+# 122  byte            130             # for MacBinary III
+# 123  byte            129             # minimum version that can read fmt
+# 124  beshort                         # checksum
+#
+# This attempts to use the version numbers as a magic number, requiring
+# that the first one be 0x80, 0x81, 0x82, or 0x83, and that the second
+# be 0x81.  This works for the files I have, but maybe not for everyone's.
+
+# Unfortunately, this magic is quite weak - MPi
+#122   beshort&0xFCFF  0x8081          Macintosh MacBinary data
+
+# MacBinary I doesn't have the version number field at all, but MacBinary II
+# has been in use since 1987 so I hope there aren't many really old files
+# floating around that this will miss.  The original spec calls for using
+# the nulls in 0, 74, and 82 as the magic number.
+#
+# Another possibility, that would also work for MacBinary I, is to use
+# the assumption that 65-72 will all be ASCII (0x20-0x7F), that 73 will
+# have bits 1 (changed), 2 (busy), 3 (bozo), and 6 (invisible) unset,
+# and that 74 will be 0.  So something like
+# 
+# 71   belong&0x80804EFF 0x00000000    Macintosh MacBinary data
+# 
+# >73  byte&0x01       0x01            \b, inited
+# >73  byte&0x02       0x02            \b, changed
+# >73  byte&0x04       0x04            \b, busy
+# >73  byte&0x08       0x08            \b, bozo
+# >73  byte&0x10       0x10            \b, system
+# >73  byte&0x10       0x20            \b, bundle
+# >73  byte&0x10       0x40            \b, invisible
+# >73  byte&0x10       0x80            \b, locked
+
+#>65   string          x               \b, type "%4.4s"
+
+#>65   string          8BIM            (PhotoShop)
+#>65   string          ALB3            (PageMaker 3)
+#>65   string          ALB4            (PageMaker 4)
+#>65   string          ALT3            (PageMaker 3)
+#>65   string          APPL            (application)
+#>65   string          AWWP            (AppleWorks word processor)
+#>65   string          CIRC            (simulated circuit)
+#>65   string          DRWG            (MacDraw)
+#>65   string          EPSF            (Encapsulated PostScript)
+#>65   string          FFIL            (font suitcase)
+#>65   string          FKEY            (function key)
+#>65   string          FNDR            (Macintosh Finder)
+#>65   string          GIFf            (GIF image)
+#>65   string          Gzip            (GNU gzip)
+#>65   string          INIT            (system extension)
+#>65   string          LIB\            (library)
+#>65   string          LWFN            (PostScript font)
+#>65   string          MSBC            (Microsoft BASIC)
+#>65   string          PACT            (Compact Pro archive)
+#>65   string          PDF\            (Portable Document Format)
+#>65   string          PICT            (picture)
+#>65   string          PNTG            (MacPaint picture)
+#>65   string          PREF            (preferences)
+#>65   string          PROJ            (Think C project)
+#>65   string          QPRJ            (Think Pascal project)
+#>65   string          SCFL            (Defender scores)
+#>65   string          SCRN            (startup screen)
+#>65   string          SITD            (StuffIt Deluxe)
+#>65   string          SPn3            (SuperPaint)
+#>65   string          STAK            (HyperCard stack)
+#>65   string          Seg\            (StuffIt segment)
+#>65   string          TARF            (Unix tar archive)
+#>65   string          TEXT            (ASCII)
+#>65   string          TIFF            (TIFF image)
+#>65   string          TOVF            (Eudora table of contents)
+#>65   string          WDBN            (Microsoft Word word processor)
+#>65   string          WORD            (MacWrite word processor)
+#>65   string          XLS\            (Microsoft Excel)
+#>65   string          ZIVM            (compress (.Z))
+#>65   string          ZSYS            (Pre-System 7 system file)
+#>65   string          acf3            (Aldus FreeHand)
+#>65   string          cdev            (control panel)
+#>65   string          dfil            (Desk Acessory suitcase)
+#>65   string          libr            (library)
+#>65   string          nX^d            (WriteNow word processor)
+#>65   string          nX^w            (WriteNow dictionary)
+#>65   string          rsrc            (resource)
+#>65   string          scbk            (Scrapbook)
+#>65   string          shlb            (shared library)
+#>65   string          ttro            (SimpleText read-only)
+#>65   string          zsys            (system file)
+
+#>69   string          x               \b, creator "%4.4s"
+
+# Somewhere, Apple has a repository of registered Creator IDs.  These are
+# just the ones that I happened to have files from and was able to identify.
+
+#>69   string          8BIM            (Adobe Photoshop)
+#>69   string          ALD3            (PageMaker 3)
+#>69   string          ALD4            (PageMaker 4)
+#>69   string          ALFA            (Alpha editor)
+#>69   string          APLS            (Apple Scanner)
+#>69   string          APSC            (Apple Scanner)
+#>69   string          BRKL            (Brickles)
+#>69   string          BTFT            (BitFont)
+#>69   string          CCL2            (Common Lisp 2)
+#>69   string          CCL\            (Common Lisp)
+#>69   string          CDmo            (The Talking Moose)
+#>69   string          CPCT            (Compact Pro)
+#>69   string          CSOm            (Eudora)
+#>69   string          DMOV            (Font/DA Mover)
+#>69   string          DSIM            (DigSim)
+#>69   string          EDIT            (Macintosh Edit)
+#>69   string          ERIK            (Macintosh Finder)
+#>69   string          EXTR            (self-extracting archive)
+#>69   string          Gzip            (GNU gzip)
+#>69   string          KAHL            (Think C)
+#>69   string          LWFU            (LaserWriter Utility)
+#>69   string          LZIV            (compress)
+#>69   string          MACA            (MacWrite)
+#>69   string          MACS            (Macintosh operating system)
+#>69   string          MAcK            (MacKnowledge terminal emulator)
+#>69   string          MLND            (Defender)
+#>69   string          MPNT            (MacPaint)
+#>69   string          MSBB            (Microsoft BASIC (binary))
+#>69   string          MSWD            (Microsoft Word)
+#>69   string          NCSA            (NCSA Telnet)
+#>69   string          PJMM            (Think Pascal)
+#>69   string          PSAL            (Hunt the Wumpus)
+#>69   string          PSI2            (Apple File Exchange)
+#>69   string          R*ch            (BBEdit)
+#>69   string          RMKR            (Resource Maker)
+#>69   string          RSED            (Resource Editor)
+#>69   string          Rich            (BBEdit)
+#>69   string          SIT!            (StuffIt)
+#>69   string          SPNT            (SuperPaint)
+#>69   string          Unix            (NeXT Mac filesystem)
+#>69   string          VIM!            (Vim editor)
+#>69   string          WILD            (HyperCard)
+#>69   string          XCEL            (Microsoft Excel)
+#>69   string          aCa2            (Fontographer)
+#>69   string          aca3            (Aldus FreeHand)
+#>69   string          dosa            (Macintosh MS-DOS file system)
+#>69   string          movr            (Font/DA Mover)
+#>69   string          nX^n            (WriteNow)
+#>69   string          pdos            (Apple ProDOS file system)
+#>69   string          scbk            (Scrapbook)
+#>69   string          ttxt            (SimpleText)
+#>69   string          ufox            (Foreign File Access)
+
+# Just in case...
+
+102    string          mBIN            MacBinary III data with surprising version number
+
+# sas magic from Bruce Foster (bef@nwu.edu)
+#
+#0     string          SAS             SAS
+#>8    string          x               %s
+0      string          SAS             SAS
+>24    string          DATA            data file
+>24    string          CATALOG         catalog
+>24    string          INDEX           data file index
+>24    string          VIEW            data view
+# sas 7+ magic from Reinhold Koch (reinhold.koch@roche.com)
+#
+0x54    string          SAS             SAS 7+
+>0x9C   string          DATA            data file
+>0x9C   string          CATALOG         catalog
+>0x9C   string          INDEX           data file index
+>0x9C   string          VIEW            data view
+
+# spss magic for SPSS system and portable files, 
+#       from Bruce Foster (bef@nwu.edu).
+
+0      long            0xc1e2c3c9      SPSS Portable File
+>40    string          x               %s
+
+0      string          $FL2            SPSS System File
+>24    string          x               %s
+
+# Macintosh filesystem data
+# From "Tom N Harris" <telliamed@mac.com>
+# Fixed HFS+ and Partition map magic: Ethan Benson <erbenson@alaska.net>
+# The MacOS epoch begins on 1 Jan 1904 instead of 1 Jan 1970, so these
+# entries depend on the data arithmetic added after v.35
+# There's also some Pascal strings in here, ditto...
+
+# The boot block signature, according to IM:Files, is 
+# "for HFS volumes, this field always contains the value 0x4C4B."
+# But if this is true for MFS or HFS+ volumes, I don't know.
+# Alternatively, the boot block is supposed to be zeroed if it's
+# unused, so a simply >0 should suffice.
+
+0x400  beshort                 0xD2D7          Macintosh MFS data
+>0     beshort                 0x4C4B          (bootable)
+>0x40a beshort                 &0x8000         (locked)
+>0x402 beldate-0x7C25B080      x               created: %s,
+>0x406 beldate-0x7C25B080      >0              last backup: %s,
+>0x414 belong                  x               block size: %d,
+>0x412 beshort                 x               number of blocks: %d,
+>0x424 pstring                 x               volume name: %s
+
+# "BD" is has many false positives
+#0x400 beshort                 0x4244          Macintosh HFS data
+#>0    beshort                 0x4C4B          (bootable)
+#>0x40a        beshort                 &0x8000         (locked)
+#>0x40a        beshort                 ^0x0100         (mounted)
+#>0x40a        beshort                 &0x0200         (spared blocks)
+#>0x40a        beshort                 &0x0800         (unclean)
+#>0x47C        beshort                 0x482B          (Embedded HFS+ Volume)
+#>0x402        beldate-0x7C25B080      x               created: %s,
+#>0x406        beldate-0x7C25B080      x               last modified: %s,
+#>0x440        beldate-0x7C25B080      >0              last backup: %s,
+#>0x414        belong                  x               block size: %d,
+#>0x412        beshort                 x               number of blocks: %d,
+#>0x424        pstring                 x               volume name: %s
+
+0x400  beshort                 0x482B          Macintosh HFS Extended
+>&0    beshort                 x               version %d data
+>0     beshort                 0x4C4B          (bootable)
+>0x404 belong                  ^0x00000100     (mounted)
+>&2    belong                  &0x00000200     (spared blocks)
+>&2    belong                  &0x00000800     (unclean)
+>&2    belong                  &0x00008000     (locked)
+>&6    string                  x               last mounted by: '%.4s',
+# really, that should be treated as a belong and we print a string
+# based on the value. TN1150 only mentions '8.10' for "MacOS 8.1"
+>&14   beldate-0x7C25B080      x               created: %s,
+# only the creation date is local time, all other timestamps in HFS+ are UTC.
+>&18   bedate-0x7C25B080       x               last modified: %s,
+>&22   bedate-0x7C25B080       >0              last backup: %s,
+>&26   bedate-0x7C25B080       >0              last checked: %s,
+>&38   belong                  x               block size: %d,
+>&42   belong                  x               number of blocks: %d,
+>&46   belong                  x               free blocks: %d
+
+# I don't think this is really necessary since it doesn't do much and 
+# anything with a valid driver descriptor will also have a valid
+# partition map
+#0             beshort         0x4552          Apple Device Driver data
+#>&24          beshort         =1              \b, MacOS
+
+# Is that the partition type a cstring or a pstring? Well, IM says "strings 
+# shorter than 32 bytes must be terminated with NULL" so I'll treat it as a 
+# cstring. Of course, partitions can contain more than four entries, but 
+# what're you gonna do?
+0x200          beshort         0x504D          Apple Partition data
+>0x2           beshort         x               block size: %d,
+>0x230         string          x               first type: %s,
+>0x210         string          x               name: %s,
+>0x254         belong          x               number of blocks: %d,
+>0x400         beshort         0x504D          
+>>0x430                string          x               second type: %s,
+>>0x410                string          x               name: %s,
+>>0x454                belong          x               number of blocks: %d,
+>>0x800                beshort         0x504D          
+>>>0x830       string          x               third type: %s,
+>>>0x810       string          x               name: %s,
+>>>0x854       belong          x               number of blocks: %d,
+>>>0xa00       beshort         0x504D          
+>>>>0xa30      string          x               fourth type: %s,
+>>>>0xa10      string          x               name: %s,
+>>>>0xa54      belong          x               number of blocks: %d
+# AFAIK, only the signature is different
+0x200          beshort         0x5453          Apple Old Partition data
+>0x2           beshort         x               block size: %d,
+>0x230         string          x               first type: %s,
+>0x210         string          x               name: %s,
+>0x254         belong          x               number of blocks: %d,
+>0x400         beshort         0x504D          
+>>0x430                string          x               second type: %s,
+>>0x410                string          x               name: %s,
+>>0x454                belong          x               number of blocks: %d,
+>>0x800                beshort         0x504D          
+>>>0x830       string          x               third type: %s,
+>>>0x810       string          x               name: %s,
+>>>0x854       belong          x               number of blocks: %d,
+>>>0xa00       beshort         0x504D          
+>>>>0xa30      string          x               fourth type: %s,
+>>>>0xa10      string          x               name: %s,
+>>>>0xa54      belong          x               number of blocks: %d
+
+# From: Remi Mommsen <mommsen@slac.stanford.edu>
+0              string          BOMStore        Mac OS X bill of materials (BOM) fil
+
+#------------------------------------------------------------------------------
+# mathematica:  file(1) magic for mathematica files
+# "H. Nanosecond" <aldomel@ix.netcom.com>
+# Mathematica a multi-purpose math program
+# versions 2.2 and 3.0
+
+#mathematica .mb
+0      string  \064\024\012\000\035\000\000\000        Mathematica version 2 notebook
+0      string  \064\024\011\000\035\000\000\000        Mathematica version 2 notebook
+
+# .ma
+# multiple possibilites:
+
+0      string  (*^\n\n::[\011frontEndVersion\ =\       Mathematica notebook
+#>41   string  >\0     %s
+
+#0     string  (*^\n\n::[\011palette   Mathematica notebook version 2.x
+
+#0     string  (*^\n\n::[\011Information       Mathematica notebook version 2.x
+#>675  string  >\0     %s #doesn't work well
+
+# there may be 'cr' instread of 'nl' in some does this matter?
+
+# generic:
+0      string  (*^\r\r::[\011  Mathematica notebook version 2.x
+0      string  \(\*\^\r\n\r\n\:\:\[\011        Mathematica notebook version 2.x
+0      string  (*^\015                 Mathematica notebook version 2.x
+0      string  (*^\n\r\n\r::[\011      Mathematica notebook version 2.x
+0      string  (*^\r::[\011    Mathematica notebook version 2.x
+0      string  (*^\r\n::[\011  Mathematica notebook version 2.x
+0      string  (*^\n\n::[\011  Mathematica notebook version 2.x
+0      string  (*^\n::[\011    Mathematica notebook version 2.x
+
+
+# Mathematica .mx files
+
+#0     string  (*This\ is\ a\ Mathematica\ binary\ dump\ file.\ It\ can\ be\ loaded\ with\ Get.*)      Mathematica binary file
+0      string  (*This\ is\ a\ Mathematica\ binary\     Mathematica binary file
+#>71   string \000\010\010\010\010\000\000\000\000\000\000\010\100\010\000\000\000     
+# >71... is optional
+>88    string  >\0     from %s
+
+
+# Mathematica files PBF:
+# 115 115 101 120 102 106 000 001 000 000 000 203 000 001 000
+0      string  MMAPBF\000\001\000\000\000\203\000\001\000      Mathematica PBF (fonts I think)
+
+# .ml files  These are menu resources I think
+# these start with "[0-9][0-9][0-9]\ A~[0-9][0-9][0-9]\ 
+# how to put that into a magic rule?
+4      string  \ A~    MAthematica .ml file
+
+# .nb files
+#too long 0    string  (***********************************************************************\n\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Mathematica-Compatible Notebook     Mathematica 3.0 notebook
+0      string  (***********************        Mathematica 3.0 notebook
+
+# other (* matches it is a comment start in these langs
+0      string  (*      Mathematica, or Pascal,  Modula-2 or 3 code text
+
+#########################
+# MatLab v5
+0       string  MATLAB  Matlab v5 mat-file
+>126    short   0x494d  (big endian)
+>>124   beshort x       version 0x%04x
+>126    short   0x4d49  (little endian)
+>>124   leshort x       version 0x%04x
+
+#------------------------------------------------------------------------------
+# teapot:  file(1) magic for "teapot" spreadsheet
+#
+0       string          #!teapot\012xdr      teapot work sheet (XDR format)
+
+#------------------------------------------------------------------------------
+# psion:  file(1) magic for Psion handhelds data
+# from: Peter Breitenlohner <peb@mppmu.mpg.de>
+#
+0      lelong          0x10000037      Psion Series 5
+>4     lelong          0x10000039      font file
+>4     lelong          0x1000003A      printer driver
+>4     lelong          0x1000003B      clipboard
+>4     lelong          0x10000042      multi-bitmap image
+>4     lelong          0x1000006A      application infomation file
+>4     lelong          0x1000006D
+>>8    lelong          0x1000007D      sketch image
+>>8    lelong          0x1000007E      voice note
+>>8    lelong          0x1000007F      word file
+>>8    lelong          0x10000085      OPL program
+>>8    lelong          0x10000088      sheet file
+>>8    lelong          0x100001C4      EasyFax initialisation file
+>4     lelong          0x10000073      OPO module
+>4     lelong          0x10000074      OPL application
+>4     lelong          0x1000008A      exported multi-bitmap image
+
+0      lelong          0x10000041      Psion Series 5 ROM multi-bitmap image
+
+0      lelong          0x10000050      Psion Series 5
+>4     lelong          0x1000006D      database
+>4     lelong          0x100000E4      ini file
+
+0      lelong          0x10000079      Psion Series 5 binary:
+>4     lelong          0x00000000      DLL
+>4     lelong          0x10000049      comms hardware library
+>4     lelong          0x1000004A      comms protocol library
+>4     lelong          0x1000005D      OPX
+>4     lelong          0x1000006C      application
+>4     lelong          0x1000008D      DLL
+>4     lelong          0x100000AC      logical device driver
+>4     lelong          0x100000AD      physical device driver
+>4     lelong          0x100000E5      file transfer protocol
+>4     lelong          0x100000E5      file transfer protocol
+>4     lelong          0x10000140      printer defintion
+>4     lelong          0x10000141      printer defintion
+
+0      lelong          0x1000007A      Psion Series 5 executable
+
+#------------------------------------------------------------------------------
+# diff:  file(1) magic for diff(1) output
+#
+0      string          diff\   'diff' output text
+0      string          ***\            'diff' output text
+0      string          Only\ in\       'diff' output text
+0      string          Common\ subdirectories:\        'diff' output text
+
+#------------------------------------------------------------------------------
+# ESRI Shapefile format (.shp .shx .dbf=DBaseIII)
+# Based on info from
+# <URL:http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf>
+0      belong  9994    ESRI Shapefile
+>4     belong  =0
+>8     belong  =0
+>12    belong  =0
+>16    belong  =0
+>20    belong  =0
+>28    lelong  x       version %d
+>24    belong  x       length %d
+>32    lelong  =0      type Null Shape
+>32    lelong  =1      type Point
+>32    lelong  =3      type PolyLine
+>32    lelong  =5      type Polygon
+>32    lelong  =8      type MultiPoint
+>32    lelong  =11     type PointZ
+>32    lelong  =13     type PolyLineZ
+>32    lelong  =15     type PolygonZ
+>32    lelong  =18     type MultiPointZ
+>32    lelong  =21     type PointM
+>32    lelong  =23     type PolyLineM
+>32    lelong  =25     type PolygonM
+>32    lelong  =28     type MultiPointM
+>32    lelong  =31     type MultiPatch
+#------------------------------------------------------------------------------
+# GIMP Gradient: file(1) magic for the GIMP's gradient data files
+# by Federico Mena <federico@nuclecu.unam.mx>
+
+0       string          GIMP\ Gradient  GIMP gradient data
+
+#------------------------------------------------------------------------------
+# XCF:  file(1) magic for the XCF image format used in the GIMP developed
+#       by Spencer Kimball and Peter Mattis
+#       ('Bucky' LaDieu, nega@vt.edu)
+
+0      string          gimp\ xcf       GIMP XCF image data,
+>9     string          file            version 0,
+>9     string          v               version
+>>10   string          >\0             %s,
+>14    belong          x               %lu x
+>18    belong          x               %lu,
+>22     belong          0               RGB Color
+>22     belong          1               Greyscale
+>22     belong          2               Indexed Color
+>22    belong          >2              Unknown Image Type.
+
+#------------------------------------------------------------------------------
+# XCF:  file(1) magic for the patterns used in the GIMP, developed
+#       by Spencer Kimball and Peter Mattis
+#       ('Bucky' LaDieu, nega@vt.edu)
+
+20      string          GPAT            GIMP pattern data,
+>24     string          x               %s
+
+#------------------------------------------------------------------------------
+# XCF:  file(1) magic for the brushes used in the GIMP, developed
+#       by Spencer Kimball and Peter Mattis
+#       ('Bucky' LaDieu, nega@vt.edu)
+
+20      string          GIMP            GIMP brush data
+
+#------------------------------------------------------------------------------
+# adi: file(1) magic for ADi's objects
+# From Gregory McGarry <g.mcgarry@ieee.org>
+#
+0      leshort         0x521c          COFF DSP21k
+>18    lelong          &02             executable,
+>18    lelong          ^02
+>>18   lelong          &01             static object,
+>>18   lelong          ^01             relocatable object,
+>18    lelong          &010            stripped
+>18    lelong          ^010            not stripped
+
+#------------------------------------------------------------------------------
+# autocad:  file(1) magic for cad files
+#
+
+# AutoCAD DWG versions R13/R14 (www.autodesk.com)
+# Written December 01, 2003 by Lester Hightower
+# Based on the DWG File Format Specifications at http://www.opendwg.org/
+0      string         \101\103\061\060\061                AutoCAD
+>5     string         \062\000\000\000\000                DWG ver. R13
+>5     string         \064\000\000\000\000                DWG ver. R14
+
+# Microstation DGN/CIT Files (www.bentley.com)
+# Written October 30, 2003 by Lester Hightower
+# DGN is the default file extension of Microstation/Intergraph CAD files.
+# CIT is the proprietary raster format (similar to TIFF) used to attach
+# raster underlays to Microstation DGN (vector) drawings.
+# 
+# http://www.wotsit.org/search.asp
+# http://filext.com/detaillist.php?extdetail=DGN
+# http://filext.com/detaillist.php?extdetail=CIT
+#
+# http://www.bentley.com/products/default.cfm?objectid=97F351F5-9C35-4E5E-89C2
+# 3F86C928&method=display&p_objectid=97F351F5-9C35-4E5E-89C280A93F86C928
+# http://www.bentley.com/products/default.cfm?objectid=A5C2FD43-3AC9-4C71-B682
+# 721C479F&method=display&p_objectid=A5C2FD43-3AC9-4C71-B682C7BE721C479F
+0      string         \010\011\376                        Microstation
+>3     string         \002
+>>30   string         \372\104                            DGN File
+>>30   string         \172\104                            DGN File
+>>30   string         \026\105                            DGN File
+>4     string         \030\000\000                        CIT File
+
+# AutoCad, from Nahuel Greco
+0      string AC1012   AutoCad (release 12)
+0      string AC1014   AutoCad (release 14)
+
+#------------------------------------------------------------------------------
+# T602 editor documents 
+# by David Necas <yeti@physics.muni.cz>
+0      string  @CT\    T602 document data,
+>4     string  0       Kamenicky
+>4     string  1       CP 852
+>4     string  2       KOI8-CS
+>4     string  >2      unknown encoding
+
+# Vi IMproved Encrypted file 
+# by David Necas <yeti@physics.muni.cz>
+0      string  VimCrypt~       Vim encrypted file data
+
+#------------------------------------------------------------------------------
+# tex:  file(1) magic for TeX files
+#
+# From <conklin@talisman.kaleida.com>
+
+# Although we may know the offset of certain text fields in TeX DVI
+# and font files, we can't use them reliably because they are not
+# zero terminated. [but we do anyway, christos]
+0      string          \367\002        TeX DVI file
+>16    string          >\0             (%s)
+0      string          \367\203        TeX generic font data
+0      string          \367\131        TeX packed font data
+>3     string          >\0             (%s)
+0      string          \367\312        TeX virtual font data
+0      string          This\ is\ TeX,  TeX transcript text
+0      string          This\ is\ METAFONT,     METAFONT transcript text
+
+# There is no way to detect TeX Font Metric (*.tfm) files without
+# breaking them apart and reading the data.  The following patterns
+# match most *.tfm files generated by METAFONT or afm2tfm.
+2      string          \000\021        TeX font metric data
+>33    string          >\0             (%s)
+2      string          \000\022        TeX font metric data
+>33    string          >\0             (%s)
+
+# Texinfo and GNU Info, from Daniel Quinlan (quinlan@yggdrasil.com)
+0      string          \\input\ texinfo        Texinfo source text
+0      string          This\ is\ Info\ file    GNU Info text
+
+# TeX documents, from Daniel Quinlan (quinlan@yggdrasil.com)
+0      string          \\input         TeX document text
+0      string          \\section       LaTeX document text
+0      string          \\setlength     LaTeX document text
+0      string          \\documentstyle LaTeX document text
+0      string          \\chapter       LaTeX document text
+0      string          \\documentclass LaTeX 2e document text
+0      string          \\relax         LaTeX auxiliary file
+0      string          \\contentsline  LaTeX  table of contents
+0      string          %\ -*-latex-*-  LaTeX document text
+
+# Tex document, from Hendrik Scholz <hendrik@scholz.net>
+0   string      \\ifx       TeX document text
+
+# Index and glossary files
+0      string          \\indexentry    LaTeX raw index file
+0      string          \\begin{theindex}       LaTeX sorted index
+0      string          \\glossaryentry LaTeX raw glossary
+0      string          \\begin{theglossary}    LaTeX sorted glossary
+0      string          This\ is\ makeindex     Makeindex log file
+
+# End of TeX
+
+#------------------------------------------------------------------------------
+# file(1) magic for BibTex text files
+# From Hendrik Scholz <hendrik@scholz.net>
+
+0   string/c @article{        BibTeX text file
+0   string/c @book{           BibTeX text file
+0   string/c @inbook{         BibTeX text file
+0   string/c @incollection{   BibTeX text file
+0   string/c @inproceedings{  BibTeX text file
+0   string/c @manual{         BibTeX text file
+0   string/c @misc{           BibTeX text file
+0   string/c @preamble{       BibTeX text file
+0   string/c @phdthesis{      BibTeX text file
+0   string/c @techreport{     BibTeX text file
+0   string/c @unpublished{    BibTeX text file
+
+73  string %%%\ \ BibTeX-file{ BibTex text file (with full header)
+
+73  string %%%\ \ @BibTeX-style-file{   BibTeX style text file (with full header)
+
+0   string %\ BibTeX\ standard\ bibliography\      BibTeX standard bibliography style text file
+
+0   string %\ BibTeX\ `     BibTeX custom bibliography style text file
+
+0   string  @c\ @mapfile{   TeX font aliases text file
+
+
+#------------------------------------------------------------------------------
+# psdbms:  file(1) magic for psdatabase
+#
+0      belong&0xff00ffff       0x56000000      ps database
+>1     string  >\0     version %s
+>4     string  >\0     from kernel %s
+#------------------------------------------------------------------------------
+# convex:  file(1) magic for Convex boxes
+#
+# Convexes are big-endian.
+#
+# /*\
+#  * Below are the magic numbers and tests added for Convex.
+#  * Added at beginning, because they are expected to be used most.
+# \*/
+0      belong  0507    Convex old-style object
+>16    belong  >0      not stripped
+0      belong  0513    Convex old-style demand paged executable
+>16    belong  >0      not stripped
+0      belong  0515    Convex old-style pre-paged executable
+>16    belong  >0      not stripped
+0      belong  0517    Convex old-style pre-paged, non-swapped executable
+>16    belong  >0      not stripped
+0      belong  0x011257        Core file
+#
+# The following are a series of dump format magic numbers.  Each one
+# corresponds to a drastically different dump format.  The first on is
+# the original dump format on a 4.1 BSD or earlier file system.  The
+# second marks the change between the 4.1 file system and the 4.2 file
+# system.  The Third marks the changing of the block size from 1K
+# to 2K to be compatible with an IDC file system.  The fourth indicates
+# a dump that is dependent on Convex Storage Manager, because data in
+# secondary storage is not physically contained within the dump.
+# The restore program uses these number to determine how the data is
+# to be extracted.
+#
+24     belong  =60011  dump format, 4.1 BSD or earlier
+24     belong  =60012  dump format, 4.2 or 4.3 BSD without IDC
+24     belong  =60013  dump format, 4.2 or 4.3 BSD (IDC compatible)
+24     belong  =60014  dump format, Convex Storage Manager by-reference dump
+#
+# what follows is a bunch of bit-mask checks on the flags field of the opthdr.
+# If there is no `=' sign, assume just checking for whether the bit is set?
+#
+0      belong  0601            Convex SOFF
+>88    belong&0x000f0000       =0x00000000     c1
+>88    belong                  &0x00010000     c2
+>88    belong                  &0x00020000     c2mp
+>88    belong                  &0x00040000     parallel
+>88    belong                  &0x00080000     intrinsic
+>88    belong                  &0x00000001     demand paged
+>88    belong                  &0x00000002     pre-paged
+>88    belong                  &0x00000004     non-swapped
+>88    belong                  &0x00000008     POSIX
+#
+>84    belong                  &0x80000000     executable
+>84    belong                  &0x40000000     object
+>84    belong&0x20000000       =0              not stripped
+>84    belong&0x18000000       =0x00000000     native fpmode
+>84    belong&0x18000000       =0x10000000     ieee fpmode
+>84    belong&0x18000000       =0x18000000     undefined fpmode
+#
+0      belong                  0605            Convex SOFF core
+#
+0      belong                  0607            Convex SOFF checkpoint
+>88    belong&0x000f0000       =0x00000000     c1
+>88    belong                  &0x00010000     c2
+>88    belong                  &0x00020000     c2mp
+>88    belong                  &0x00040000     parallel
+>88    belong                  &0x00080000     intrinsic
+>88    belong                  &0x00000008     POSIX
+#
+>84    belong&0x18000000       =0x00000000     native fpmode
+>84    belong&0x18000000       =0x10000000     ieee fpmode
+>84    belong&0x18000000       =0x18000000     undefined fpmode
+
+#------------------------------------------------------------------------------
+# freebsd:  file(1) magic for FreeBSD objects
+#
+# All new-style FreeBSD magic numbers are in host byte order (i.e.,
+# little-endian on x86).
+#
+# XXX - this comes from the file "freebsd" in a recent FreeBSD version of
+# "file"; it, and the NetBSD stuff in "netbsd", appear to use different
+# schemes for distinguishing between executable images, shared libraries,
+# and object files.
+#
+# FreeBSD says:
+#
+#    Regardless of whether it's pure, demand-paged, or none of the
+#    above:
+#
+#      if the entry point is < 4096, then it's a shared library if
+#      the "has run-time loader information" bit is set, and is
+#      position-independent if the "is position-independent" bit
+#      is set;
+#
+#      if the entry point is >= 4096 (or >4095, same thing), then it's
+#      an executable, and is dynamically-linked if the "has run-time
+#      loader information" bit is set.
+#
+# On x86, NetBSD says:
+#
+#    If it's neither pure nor demand-paged:
+#
+#      if it has the "has run-time loader information" bit set, it's
+#      a dynamically-linked executable;
+#
+#      if it doesn't have that bit set, then:
+#
+#          if it has the "is position-independent" bit set, it's
+#          position-independent;
+#
+#          if the entry point is non-zero, it's an executable, otherwise
+#          it's an object file.
+#
+#    If it's pure:
+#
+#      if it has the "has run-time loader information" bit set, it's
+#      a dynamically-linked executable, otherwise it's just an
+#      executable.
+#
+#    If it's demand-paged:
+#
+#      if it has the "has run-time loader information" bit set,
+#      then:
+#
+#          if the entry point is < 4096, it's a shared library;
+#
+#          if the entry point is = 4096 or > 4096 (i.e., >= 4096),
+#          it's a dynamically-linked executable);
+#
+#      if it doesn't have the "has run-time loader information" bit
+#      set, then it's just an executable.
+#
+# (On non-x86, NetBSD does much the same thing, except that it uses
+# 8192 on 68K - except for "68k4k", which is presumably "68K with 4K
+# pages - SPARC, and MIPS, presumably because Sun-3's and Sun-4's
+# had 8K pages; dunno about MIPS.)
+#
+# I suspect the two will differ only in perverse and uninteresting cases
+# ("shared" libraries that aren't demand-paged and whose pages probably
+# won't actually be shared, executables with entry points <4096).
+#
+# I leave it to those more familiar with FreeBSD and NetBSD to figure out
+# what the right answer is (although using ">4095", FreeBSD-style, is
+# probably better than separately checking for "=4096" and ">4096",
+# NetBSD-style).  (The old "netbsd" file analyzed FreeBSD demand paged
+# executables using the NetBSD technique.)
+#
+0      lelong&0377777777       041400407       FreeBSD/i386
+>20    lelong                  <4096
+>>3    byte&0xC0               &0x80           shared library
+>>3    byte&0xC0               0x40            PIC object
+>>3    byte&0xC0               0x00            object
+>20    lelong                  >4095
+>>3    byte&0x80               0x80            dynamically linked executable
+>>3    byte&0x80               0x00            executable
+>16    lelong                  >0              not stripped
+
+0      lelong&0377777777       041400410       FreeBSD/i386 pure
+>20    lelong                  <4096
+>>3    byte&0xC0               &0x80           shared library
+>>3    byte&0xC0               0x40            PIC object
+>>3    byte&0xC0               0x00            object
+>20    lelong                  >4095
+>>3    byte&0x80               0x80            dynamically linked executable
+>>3    byte&0x80               0x00            executable
+>16    lelong                  >0              not stripped
+
+0      lelong&0377777777       041400413       FreeBSD/i386 demand paged
+>20    lelong                  <4096
+>>3    byte&0xC0               &0x80           shared library
+>>3    byte&0xC0               0x40            PIC object
+>>3    byte&0xC0               0x00            object
+>20    lelong                  >4095
+>>3    byte&0x80               0x80            dynamically linked executable
+>>3    byte&0x80               0x00            executable
+>16    lelong                  >0              not stripped
+
+0      lelong&0377777777       041400314       FreeBSD/i386 compact demand paged
+>20    lelong                  <4096
+>>3    byte&0xC0               &0x80           shared library
+>>3    byte&0xC0               0x40            PIC object
+>>3    byte&0xC0               0x00            object
+>20    lelong                  >4095
+>>3    byte&0x80               0x80            dynamically linked executable
+>>3    byte&0x80               0x00            executable
+>16    lelong                  >0              not stripped
+
+# XXX gross hack to identify core files
+# cores start with a struct tss; we take advantage of the following:
+# byte 7:     highest byte of the kernel stack pointer, always 0xfe
+#      8/9:   kernel (ring 0) ss value, always 0x0010
+#      10 - 27: ring 1 and 2 ss/esp, unused, thus always 0
+#      28:    low order byte of the current PTD entry, always 0 since the
+#             PTD is page-aligned
+#
+7      string  \357\020\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0        FreeBSD/i386 a.out core file
+>1039  string  >\0     from '%s'
+
+# /var/run/ld.so.hints
+# What are you laughing about?
+0      lelong                  011421044151    ld.so hints file (Little Endian
+>4     lelong                  >0              \b, version %d)
+>4     belong                  <=0             \b)
+0      belong                  011421044151    ld.so hints file (Big Endian
+>4     belong                  >0              \b, version %d)
+>4     belong                  <=0             \b)
+
+#
+# Files generated by FreeBSD scrshot(1)/vidcontrol(1) utilities
+#
+0      string  SCRSHOT_        scrshot(1) screenshot,
+>8     byte    x               version %d,
+>9     byte    2               %d bytes in header,
+>>10   byte    x               %d chars wide by
+>>11   byte    x               %d chars high
+
+#------------------------------------------------------------------------------
+# gcc:  file(1) magic for GCC special files
+#
+0      string          gpch            GCC precompiled header
+
+# The version field is annoying.  It's 3 characters, not zero-terminated.
+>5     byte            x                       (version %c
+>6     byte            x                       \b%c
+>7     byte            x                       \b%c)
+
+# 67 = 'C', 111 = 'o', 43 = '+', 79 = 'O'
+>4     byte            67                      for C
+>4     byte            111                     for Objective C
+>4     byte            43                      for C++
+>4     byte            79                      for Objective C++
+
+#-----------------------------------------------------------------------------
+# natinst:  file(1) magic for National Instruments Code Files
+
+#
+# From <egamez@fcfm.buap.mx> Enrique Gámez-Flores
+# version 1
+# Many formats still missing, we use, for the moment LabVIEW
+# We guess VXI format file. VISA, LabWindowsCVI, BridgeVIEW, etc, are missing
+#
+0       string          RSRC            National Instruments,
+# Check if it's a LabVIEW File
+>8      string          LV              LabVIEW File,
+# Check wich kind of file is
+>>10    string          SB              Code Resource File, data
+>>10    string          IN              Virtual Instrument Program, data
+>>10    string          AR              VI Library, data
+# This is for Menu Libraries
+>8      string          LMNULBVW        Portable File Names, data
+# This is for General Resources
+>8      string          rsc             Resources File, data
+# This is for VXI Package
+0       string          VMAP            National Instruments, VXI File, data
+#------------------------------------------------------------------------------
+# nitpicker:  file(1) magic for Flowfiles.
+# From: Christian Jachmann <C.Jachmann@gmx.net> http://www.nitpicker.de
+0      string  NPFF    NItpicker Flow File 
+>4     byte    x       V%d.
+>5     byte    x       %d
+>6     bedate  x       started: %s
+>10    bedate  x       stopped: %s
+>14    belong  x       Bytes: %u
+>18    belong  x       Bytes1: %u
+>22    belong  x       Flows: %u
+>26    belong  x       Pkts: %u
+
+#------------------------------------------------------------------------------
+# typeset:  file(1) magic for other typesetting
+#
+0      string          Interpress/Xerox        Xerox InterPress data
+>16    string          /                       (version
+>>17   string          >\0                     %s)
+
+#------------------------------------------------------------------------------
+# commands:  file(1) magic for various shells and interpreters
+#
+0      string          :                       shell archive or script for antique kernel text
+0      string/b        #!\ /bin/sh             Bourne shell script text executable
+0      string/b        #!\ /bin/csh            C shell script text executable
+# korn shell magic, sent by George Wu, gwu@clyde.att.com
+0      string/b        #!\ /bin/ksh            Korn shell script text executable
+0      string/b        #!\ /bin/tcsh           Tenex C shell script text executable
+0      string/b        #!\ /usr/local/tcsh     Tenex C shell script text executable
+0      string/b        #!\ /usr/local/bin/tcsh Tenex C shell script text executable
+
+#
+# zsh/ash/ae/nawk/gawk magic from cameron@cs.unsw.oz.au (Cameron Simpson)
+0      string/b        #!\ /bin/zsh            Paul Falstad's zsh script text executable
+0      string/b        #!\ /usr/bin/zsh        Paul Falstad's zsh script text executable
+0      string/b        #!\ /usr/local/bin/zsh  Paul Falstad's zsh script text executable
+0      string/b        #!\ /usr/local/bin/ash  Neil Brown's ash script text executable
+0      string/b        #!\ /usr/local/bin/ae   Neil Brown's ae script text executable
+0      string/b        #!\ /bin/nawk           new awk script text executable
+0      string/b        #!\ /usr/bin/nawk       new awk script text executable
+0      string/b        #!\ /usr/local/bin/nawk new awk script text executable
+0      string/b        #!\ /bin/gawk           GNU awk script text executable
+0      string/b        #!\ /usr/bin/gawk       GNU awk script text executable
+0      string/b        #!\ /usr/local/bin/gawk GNU awk script text executable
+#
+0      string/b        #!\ /bin/awk            awk script text executable
+0      string/b        #!\ /usr/bin/awk        awk script text executable
+0      string          BEGIN                   awk script text
+
+# AT&T Bell Labs' Plan 9 shell
+0      string/b        #!\ /bin/rc     Plan 9 rc shell script text executable
+
+# bash shell magic, from Peter Tobias (tobias@server.et-inf.fho-emden.de)
+0      string/b        #!\ /bin/bash   Bourne-Again shell script text executable
+0      string/b        #!\ /usr/local/bin/bash Bourne-Again shell script text executable
+
+# using env
+0      string          #!/usr/bin/env          a
+>15    string          >\0                     %s script text executable
+0      string          #!\ /usr/bin/env        a
+>16    string          >\0                     %s script text executable
+
+# PHP scripts
+# Ulf Harnhammar <ulfh@update.uu.se>
+0      string/c        =<?php                  PHP script text
+0      string          =<?\n                   PHP script text
+0      string          =<?\r                   PHP script text
+0      string/b        #!\ /usr/local/bin/php  PHP script text executable
+0      string/b        #!\ /usr/bin/php        PHP script text executable
+
+0      string          Zend\x00                PHP script Zend Optimizer data
+
+#------------------------------------------------------------------------------
+# encore:  file(1) magic for Encore machines
+#
+# XXX - needs to have the byte order specified (NS32K was little-endian,
+# dunno whether they run the 88K in little-endian mode or not).
+#
+0      short           0x154           Encore
+>20    short           0x107           executable
+>20    short           0x108           pure executable
+>20    short           0x10b           demand-paged executable
+>20    short           0x10f           unsupported executable
+>12    long            >0              not stripped
+>22    short           >0              - version %ld
+>22    short           0               -
+#>4    date            x               stamp %s
+0      short           0x155           Encore unsupported executable
+>12    long            >0              not stripped
+>22    short           >0              - version %ld
+>22    short           0               -
+#>4    date            x               stamp %s
+
+#------------------------------------------------------------------------------
+# filesystems:  file(1) magic for different filesystems
+#
+0      string  \366\366\366\366        PC formatted floppy with no filesystem
+# Sun disk labels
+# From /usr/include/sun/dklabel.h:
+0774   beshort         0xdabe          Sun disk label
+>0     string          x               '%s
+>>31   string          >\0             \b%s
+>>>63          string          >\0             \b%s
+>>>>95         string          >\0             \b%s
+>0     string          x               \b'
+>0734  short           >0              %d rpm,
+>0736  short           >0              %d phys cys,
+>0740  short           >0              %d alts/cyl,
+>0746  short           >0              %d interleave,
+>0750  short           >0              %d data cyls,
+>0752  short           >0              %d alt cyls,
+>0754  short           >0              %d heads/partition,
+>0756  short           >0              %d sectors/track,
+>0764  long            >0              start cyl %ld,
+>0770  long            x               %ld blocks
+# Is there a boot block written 1 sector in?
+>512    belong&077777777       0600407 \b, boot block present
+0x1FE  leshort 0xAA55                  x86 boot sector
+>2     string  OSBS                    \b, OS/BS MBR
+# J\xf6rg Jenderek <joerg.jenderek@gmx.net>
+>0x8C  string  Invalid\ partition\ table       \b, MS-DOS MBR
+>0x9D  string  Invalid\ partition\ table       \b, DR-DOS MBR, version 7.01 to 7.03
+>0x10F string  Ung\201ltige\ Partitionstabelle \b, MS-DOS MBR, german version 4.10.1998, 4.10.2222
+>0x8B  string  Ung\201ltige\ Partitionstabelle \b, MS-DOS MBR, german version 5.00 to 4.00.950
+>0x145 string  Default:\ F                     \b, FREE-DOS MBR
+>0     string  \0\0\0\0                \b, extended partition table
+# JuMP short     bootcodeoffset NOP assembler instructions will usually be EB xx 90
+# older drives may use E9 xx xx
+>0             lelong&0x009000EB       0x009000EB 
+>0             lelong&0x000000E9       0x000000E9 
+>>1            ubyte                   >37     \b, code offset 0x%x
+# mtools-3.9.8/msdos.h
+# usual values are marked with comments to get only informations of strange FAT systems
+# valid sectorsize are from 32 to 2048
+>>>11          uleshort        <2049   
+>>>>11         uleshort        >31     
+>>>>>3         string          >\0             \b, OEM-ID "%8.8s"
+>>>>>11                uleshort        >512            \b, Bytes/sector %u
+#>>>>>11       uleshort        =512            \b, Bytes/sector %u=512 (usual)
+>>>>>11                uleshort        <512            \b, Bytes/sector %u
+>>>>>13                ubyte           >1              \b, sectors/cluster %u
+#>>>>>13       ubyte           =1              \b, sectors/cluster %u (usual on Floppies)
+>>>>>14                uleshort        >32             \b, reserved sectors %u
+#>>>>>14       uleshort        =32             \b, reserved sectors %u (usual Fat32)
+#>>>>>14       uleshort        >1              \b, reserved sectors %u
+#>>>>>14       uleshort        =1              \b, reserved sectors %u (usual FAT12,FAT16)
+>>>>>14                uleshort        <1              \b, reserved sectors %u
+>>>>>16                ubyte           >2              \b, FATs %u
+#>>>>>16       ubyte           =2              \b, FATs %u (usual)
+>>>>>16                ubyte           =1              \b, FAT  %u
+>>>>>16                ubyte           >0
+>>>>>17                uleshort        >0              \b, root entries %u
+#>>>>>17       uleshort        =0              \b, root entries %u=0 (usual Fat32)
+>>>>>19                uleshort        >0              \b, sectors %u (volumes <=32 MB) 
+#>>>>>19       uleshort        =0              \b, sectors %u=0 (usual Fat32)
+>>>>>21                ubyte           >0xF0           \b, Media descriptor 0x%x
+#>>>>>21       ubyte           =0xF0           \b, Media descriptor 0x%x (usual floppy)
+>>>>>21                ubyte           <0xF0           \b, Media descriptor 0x%x
+>>>>>22                uleshort        >0              \b, sectors/FAT %u
+#>>>>>22       uleshort        =0              \b, sectors/FAT %u=0 (usual Fat32)
+>>>>>26                ubyte           >2              \b, heads %u
+#>>>>>26       ubyte           =2              \b, heads %u (usual floppy)
+>>>>>26                ubyte           =1              \b, heads %u
+>>>>>28                ulelong         >0              \b, hidden sectors %u
+#>>>>>28       ulelong         =0              \b, hidden sectors %u (usual floppy)
+>>>>>32                ulelong         >0              \b, sectors %u (volumes > 32 MB) 
+#>>>>>32       ulelong         =0              \b, sectors %u (volumes > 32 MB) 
+# FAT<32 specific 
+# NOT le FAT3=NOT 3TAF=0xCCABBEB9
+>>>>>82                ulelong&0xCCABBEB9      >0
+>>>>>>36       ubyte           >0x80           \b, physical drive 0x%x
+#>>>>>>36      ubyte           =0x80           \b, physical drive 0x%x=0x80 (usual harddisk)
+>>>>>>36       ubyte&0x7F      >0              \b, physical drive 0x%x
+#>>>>>>36      ubyte           =0              \b, physical drive 0x%x=0 (usual floppy)
+>>>>>>37       ubyte           >0              \b, reserved 0x%x
+#>>>>>>37      ubyte           =0              \b, reserved 0x%x
+>>>>>>38       ubyte           >0x29           \b, dos < 4.0 BootSector (0x%x)
+>>>>>>38       ubyte           <0x29           \b, dos < 4.0 BootSector (0x%x)
+>>>>>>38       ubyte           =0x29
+>>>>>>>39      ulelong         x               \b, serial number 0x%x
+>>>>>>>43      string          <NO\ NAME       \b, label: "%11.11s"
+>>>>>>>43      string          >NO\ NAME       \b, label: "%11.11s"
+>>>>>>>43      string          =NO\ NAME       \b, unlabeled
+>>>>>>54       string          FAT1            \b, FAT
+>>>>>>>54      string          FAT12           \b (12 bit)
+>>>>>>>54      string          FAT16           \b (16 bit)
+# FAT32 specific
+>>>>>82                string          FAT32           \b, FAT (32 bit)
+>>>>>>36       ulelong         x               \b, sectors/FAT %u
+>>>>>>40       uleshort        >0              \b, extension flags %u
+#>>>>>>40      uleshort        =0              \b, extension flags %u
+>>>>>>42       uleshort        >0              \b, fsVersion %u
+#>>>>>>42      uleshort        =0              \b, fsVersion %u (usual)
+>>>>>>44       ulelong         >2              \b, rootdir cluster %u
+#>>>>>>44      ulelong         =2              \b, rootdir cluster %u
+#>>>>>>44      ulelong         =1              \b, rootdir cluster %u
+>>>>>>48       uleshort        >1              \b, infoSector %u
+#>>>>>>48      uleshort        =1              \b, infoSector %u (usual)
+>>>>>>48       uleshort        <1              \b, infoSector %u
+>>>>>>50       uleshort        >6              \b, Backup boot sector %u
+#>>>>>>50      uleshort        =6              \b, Backup boot sector %u (usual) 
+>>>>>>50       uleshort        <6              \b, Backup boot sector %u
+>>>>>>54       ulelong         >0              \b, reserved1 0x%x
+>>>>>>58       ulelong         >0              \b, reserved2 0x%x
+>>>>>>62       ulelong         >0              \b, reserved3 0x%x
+# same structure as FAT1X 
+>>>>>>64       ubyte           >0x80           \b, physical drive 0x%x
+#>>>>>>64      ubyte           =0x80           \b, physical drive 0x%x=80 (usual harddisk)
+>>>>>>64       ubyte&0x7F      >0              \b, physical drive 0x%x
+#>>>>>>64      ubyte           =0              \b, physical drive 0x%x=0 (usual floppy)
+>>>>>>65       ubyte           >0              \b, reserved 0x%x
+>>>>>>66       ubyte           >0x29           \b, dos < 4.0 BootSector (0x%x)
+>>>>>>66       ubyte           <0x29           \b, dos < 4.0 BootSector (0x%x)
+>>>>>>66       ubyte           =0x29
+>>>>>>>67      ulelong         x               \b, serial number 0x%x
+>>>>>>>71      string          <NO\ NAME       \b, label: "%11.11s"
+>>>>>>71       string          >NO\ NAME       \b, label: "%11.11s"
+>>>>>>71       string          =NO\ NAME       \b, unlabeled
+### FATs end
+>0x200 lelong  0x82564557              \b, BSD disklabel
+# FATX 
+0              string          FATX            FATX filesystem data
+
+
+# Minix filesystems - Juan Cespedes <cespedes@debian.org>
+0x410  leshort         0x137f          Minix filesystem
+0x410  beshort         0x137f          Minix filesystem (big endian),
+>0x402 beshort         !0              \b, %d zones
+>0x1e  string          minix           \b, bootable
+0x410  leshort         0x138f          Minix filesystem, 30 char names
+0x410  leshort         0x2468          Minix filesystem, version 2
+0x410  leshort         0x2478          Minix filesystem, version 2, 30 char names
+
+# romfs filesystems - Juan Cespedes <cespedes@debian.org>
+0      string          -rom1fs-\0      romfs filesystem, version 1
+>8     belong  x                       %d bytes,
+>16    string  x                       named %s.
+
+# netboot image - Juan Cespedes <cespedes@debian.org>
+0      lelong          0x1b031336L     Netboot image,
+>4     lelong&0xFFFFFF00       0
+>>4    lelong&0x100    0x000           mode 2
+>>4    lelong&0x100    0x100           mode 3
+>4     lelong&0xFFFFFF00       !0      unknown mode
+
+0x18b  string  OS/2    OS/2 Boot Manager
+
+9564   lelong          0x00011954      Unix Fast File system (little-endian),
+>8404  string          x               last mounted on %s,
+#>9504 ledate          x               last checked at %s,
+>8224  ledate          x               last written at %s,
+>8401  byte            x               clean flag %d,
+>8228  lelong          x               number of blocks %d,
+>8232  lelong          x               number of data blocks %d,
+>8236  lelong          x               number of cylinder groups %d,
+>8240  lelong          x               block size %d,
+>8244  lelong          x               fragment size %d,
+>8252  lelong          x               minimum percentage of free blocks %d,
+>8256  lelong          x               rotational delay %dms,
+>8260  lelong          x               disk rotational speed %drps,
+>8320  lelong          0               TIME optimization
+>8320  lelong          1               SPACE optimization
+
+9564   belong          0x00011954      Unix Fast File system (big-endian),
+>7168   long           0x4c41424c      Apple UFS Volume
+>>7186  string         x               named %s,
+>>7176  belong         x               volume label version %d,
+>>7180  bedate         x               created on %s,
+>8404  string          x               last mounted on %s,
+#>9504 bedate          x               last checked at %s,
+>8224  bedate          x               last written at %s,
+>8401  byte            x               clean flag %d,
+>8228  belong          x               number of blocks %d,
+>8232  belong          x               number of data blocks %d,
+>8236  belong          x               number of cylinder groups %d,
+>8240  belong          x               block size %d,
+>8244  belong          x               fragment size %d,
+>8252  belong          x               minimum percentage of free blocks %d,
+>8256  belong          x               rotational delay %dms,
+>8260  belong          x               disk rotational speed %drps,
+>8320  belong          0               TIME optimization
+>8320  belong          1               SPACE optimization
+
+# ext2/ext3 filesystems - Andreas Dilger <adilger@turbolabs.com>
+0x438  leshort         0xEF53          Linux
+>0x44c lelong          x               rev %d
+>0x43e leshort         x               \b.%d
+>0x45c lelong          ^0x0000004      ext2 filesystem data
+>>0x43a        leshort         ^0x0000001      (mounted or unclean)
+>0x45c lelong          &0x0000004      ext3 filesystem data
+>>0x460        lelong          &0x0000004      (needs journal recovery)
+>0x43a leshort         &0x0000002      (errors)
+>0x460 lelong          &0x0000001      (compressed)
+#>0x460        lelong          &0x0000002      (filetype)
+#>0x464        lelong          &0x0000001      (sparse_super)
+>0x464 lelong          &0x0000002      (large files)
+
+# SGI disk labels - Nathan Scott <nathans@debian.org>
+0      belong          0x0BE5A941      SGI disk label (volume header)
+
+# SGI XFS filesystem - Nathan Scott <nathans@debian.org>
+0      belong          0x58465342      SGI XFS filesystem data
+>0x4   belong          x               (blksz %d,
+>0x68  beshort         x               inosz %d,
+>0x64  beshort         ^0x2004         v1 dirs)
+>0x64  beshort         &0x2004         v2 dirs)
+
+############################################################################
+# Minix-ST kernel floppy
+0x800  belong          0x46fc2700      Atari-ST Minix kernel image
+>19    string          \240\5\371\5\0\011\0\2\0        \b, 720k floppy
+>19    string          \320\2\370\5\0\011\0\1\0        \b, 360k floppy
+
+############################################################################
+# Hmmm, is this a better way of detecting _standard_ floppy images ?
+19     string          \320\2\360\3\0\011\0\1\0        DOS floppy 360k
+>0x1FE leshort         0xAA55          \b, x86 hard disk boot sector
+19     string          \240\5\371\3\0\011\0\2\0        DOS floppy 720k
+>0x1FE leshort         0xAA55          \b, x86 hard disk boot sector
+19     string          \100\013\360\011\0\022\0\2\0    DOS floppy 1440k
+>0x1FE leshort         0xAA55          \b, x86 hard disk boot sector
+
+19     string          \240\5\371\5\0\011\0\2\0        DOS floppy 720k, IBM
+>0x1FE leshort         0xAA55          \b, x86 hard disk boot sector
+19     string          \100\013\371\5\0\011\0\2\0      DOS floppy 1440k, mkdosfs
+>0x1FE leshort         0xAA55          \b, x86 hard disk boot sector
+
+19     string          \320\2\370\5\0\011\0\1\0        Atari-ST floppy 360k
+19     string          \240\5\371\5\0\011\0\2\0        Atari-ST floppy 720k
+
+#  Valid media descriptor bytes for MS-DOS:
+#
+#     Byte   Capacity   Media Size and Type
+#     -------------------------------------------------
+#
+#     F0     2.88 MB    3.5-inch, 2-sided, 36-sector
+#     F0     1.44 MB    3.5-inch, 2-sided, 18-sector
+#     F9     720K       3.5-inch, 2-sided, 9-sector
+#     F9     1.2 MB     5.25-inch, 2-sided, 15-sector
+#     FD     360K       5.25-inch, 2-sided, 9-sector
+#     FF     320K       5.25-inch, 2-sided, 8-sector
+#     FC     180K       5.25-inch, 1-sided, 9-sector
+#     FE     160K       5.25-inch, 1-sided, 8-sector
+#     FE     250K       8-inch, 1-sided, single-density
+#     FD     500K       8-inch, 2-sided, single-density
+#     FE     1.2 MB     8-inch, 2-sided, double-density
+#     F8     -----      Fixed disk 
+#
+#     FC     xxxK       Apricot 70x1x9 boot disk.
+#
+# Originally a bitmap:
+#  xxxxxxx0    Not two sided
+#  xxxxxxx1    Double sided
+#  xxxxxx0x    Not 8 SPT
+#  xxxxxx1x    8 SPT
+#  xxxxx0xx    Not Removable drive
+#  xxxxx1xx    Removable drive
+#  11111xxx    Must be one.
+#
+# But now it's rather random:
+#  111111xx    Low density disk
+#        00    SS, Not 8 SPT
+#        01    DS, Not 8 SPT
+#        10    SS, 8 SPT
+#        11    DS, 8 SPT
+#
+#  11111001    Double density 3½ floppy disk, high density 5¼
+#  11110000    High density 3½ floppy disk
+#  11111000    Hard disk any format
+#
+
+# CDROM Filesystems
+32769    string    CD001     ISO 9660 CD-ROM filesystem data
+# "application id" which appears to be used as a volume label
+>32808  string    >\0       '%s'
+>34816  string    \000CD001\001EL\ TORITO\ SPECIFICATION    (bootable)
+37633    string    CD001     ISO 9660 CD-ROM filesystem data (raw 2352 byte sectors)
+32776    string    CDROM     High Sierra CD-ROM filesystem data
+
+# cramfs filesystem - russell@coker.com.au
+0       lelong    0x28cd3d45      Linux Compressed ROM File System data, little endian
+>4      lelong  x size %d
+>8      lelong  &1 version #2
+>8      lelong  &2 sorted_dirs
+>8      lelong  &4 hole_support
+>32     lelong  x CRC 0x%x,
+>36     lelong  x edition %d,
+>40     lelong  x %d blocks,
+>44     lelong  x %d files
+
+0       belong    0x28cd3d45      Linux Compressed ROM File System data, big endian
+>4      belong  x size %d
+>8      belong  &1 version #2
+>8      belong  &2 sorted_dirs
+>8      belong  &4 hole_support
+>32     belong  x CRC 0x%x,
+>36     belong  x edition %d,
+>40     belong  x %d blocks,
+>44     belong  x %d files
+
+# reiserfs - russell@coker.com.au
+0x10034                string  ReIsErFs        ReiserFS V3.5
+0x10034                string  ReIsEr2Fs       ReiserFS V3.6
+>0x1002c       leshort x               block size %d
+>0x10032       leshort &2              (mounted or unclean)
+>0x10000       lelong  x               num blocks %d
+>0x10040       lelong  1               tea hash
+>0x10040       lelong  2               yura hash
+>0x10040       lelong  3               r5 hash
+
+# JFFS - russell@coker.com.au
+0      lelong  0x34383931      Linux Journalled Flash File system, little endian
+0      belong  0x34383931      Linux Journalled Flash File system, big endian
+
+# EST flat binary format (which isn't, but anyway)
+# From: Mark Brown <broonie@sirena.org.uk>
+0      string  ESTFBINR        EST flat binary
+
+# Aculab VoIP firmware
+# From: Mark Brown <broonie@sirena.org.uk>
+0      string  VoIP\ Startup\ and      Aculab VoIP firmware
+>35    string  x       format %s
+
+# PPCBoot image file
+# From: Mark Brown <broonie@sirena.org.uk>
+0      belong  0x27051956      PPCBoot image
+>4     string  PPCBoot
+>>12   string  x               version %s
+
+# JFFS2 file system
+0       leshort         0x1984                  Linux old jffs2 filesystem data little endian
+0       lelong          0xe0011985              Linux jffs2 filesystem data little endian
+
+#------------------------------------------------------------------------------
+# hp:  file(1) magic for Hewlett Packard machines (see also "printer")
+#
+# XXX - somebody should figure out whether any byte order needs to be
+# applied to the "TML" stuff; I'm assuming the Apollo stuff is
+# big-endian as it was mostly 68K-based.
+#
+# I think the 500 series was the old stack-based machines, running a
+# UNIX environment atop the "SUN kernel"; dunno whether it was
+# big-endian or little-endian.
+#
+# Daniel Quinlan (quinlan@yggdrasil.com): hp200 machines are 68010 based;
+# hp300 are 68020+68881 based; hp400 are also 68k.  The following basic
+# HP magic is useful for reference, but using "long" magic is a better
+# practice in order to avoid collisions.
+#
+# Guy Harris (guy@netapp.com): some additions to this list came from
+# HP-UX 10.0's "/usr/include/sys/unistd.h" (68030, 68040, PA-RISC 1.1,
+# 1.2, and 2.0).  The 1.2 and 2.0 stuff isn't in the HP-UX 10.0
+# "/etc/magic", though, except for the "archive file relocatable library"
+# stuff, and the 68030 and 68040 stuff isn't there at all - are they not
+# used in executables, or have they just not yet updated "/etc/magic"
+# completely?
+#
+# 0    beshort         200             hp200 (68010) BSD binary
+# 0    beshort         300             hp300 (68020+68881) BSD binary
+# 0    beshort         0x20c           hp200/300 HP-UX binary
+# 0    beshort         0x20d           hp400 (68030) HP-UX binary
+# 0    beshort         0x20e           hp400 (68040?) HP-UX binary
+# 0    beshort         0x20b           PA-RISC1.0 HP-UX binary
+# 0    beshort         0x210           PA-RISC1.1 HP-UX binary
+# 0    beshort         0x211           PA-RISC1.2 HP-UX binary
+# 0    beshort         0x214           PA-RISC2.0 HP-UX binary
+
+#
+# The "misc" stuff needs a byte order; the archives look suspiciously
+# like the old 177545 archives (0xff65 = 0177545).
+#
+#### Old Apollo stuff
+0      beshort         0627            Apollo m68k COFF executable
+>18    beshort         ^040000         not stripped
+>22    beshort         >0              - version %ld
+0      beshort         0624            apollo a88k COFF executable
+>18    beshort         ^040000         not stripped
+>22    beshort         >0              - version %ld
+0       long            01203604016     TML 0123 byte-order format
+0       long            01702407010     TML 1032 byte-order format
+0       long            01003405017     TML 2301 byte-order format
+0       long            01602007412     TML 3210 byte-order format
+#### PA-RISC 1.1
+0      belong          0x02100106      PA-RISC1.1 relocatable object
+0      belong          0x02100107      PA-RISC1.1 executable
+>168   belong          &0x00000004     dynamically linked
+>(144) belong          0x054ef630      dynamically linked
+>96    belong          >0              - not stripped
+
+0      belong          0x02100108      PA-RISC1.1 shared executable
+>168   belong&0x4      0x4             dynamically linked
+>(144) belong          0x054ef630      dynamically linked
+>96    belong          >0              - not stripped
+
+0      belong          0x0210010b      PA-RISC1.1 demand-load executable
+>168   belong&0x4      0x4             dynamically linked
+>(144) belong          0x054ef630      dynamically linked
+>96    belong          >0              - not stripped
+
+0      belong          0x0210010e      PA-RISC1.1 shared library
+>96    belong          >0              - not stripped
+
+0      belong          0x0210010d      PA-RISC1.1 dynamic load library
+>96    belong          >0              - not stripped
+
+#### PA-RISC 2.0
+0      belong          0x02140106      PA-RISC2.0 relocatable object
+
+0       belong         0x02140107      PA-RISC2.0 executable
+>168   belong          &0x00000004     dynamically linked
+>(144) belong          0x054ef630      dynamically linked
+>96    belong          >0              - not stripped
+
+0       belong         0x02140108      PA-RISC2.0 shared executable
+>168   belong          &0x00000004     dynamically linked
+>(144) belong          0x054ef630      dynamically linked
+>96    belong          >0              - not stripped
+
+0       belong         0x0214010b      PA-RISC2.0 demand-load executable
+>168   belong          &0x00000004     dynamically linked
+>(144) belong          0x054ef630      dynamically linked
+>96    belong          >0              - not stripped
+
+0       belong         0x0214010e      PA-RISC2.0 shared library
+>96    belong          >0              - not stripped
+
+0       belong         0x0214010d      PA-RISC2.0 dynamic load library
+>96    belong          >0              - not stripped
+
+#### 800
+0      belong          0x020b0106      PA-RISC1.0 relocatable object
+
+0      belong          0x020b0107      PA-RISC1.0 executable
+>168   belong&0x4      0x4             dynamically linked
+>(144) belong          0x054ef630      dynamically linked
+>96    belong          >0              - not stripped
+
+0      belong          0x020b0108      PA-RISC1.0 shared executable
+>168   belong&0x4      0x4             dynamically linked
+>(144) belong          0x054ef630      dynamically linked
+>96    belong          >0              - not stripped
+
+0      belong          0x020b010b      PA-RISC1.0 demand-load executable
+>168   belong&0x4      0x4             dynamically linked
+>(144) belong          0x054ef630      dynamically linked
+>96    belong          >0              - not stripped
+
+0      belong          0x020b010e      PA-RISC1.0 shared library
+>96    belong          >0              - not stripped
+
+0      belong          0x020b010d      PA-RISC1.0 dynamic load library
+>96    belong          >0              - not stripped
+
+0      belong          0x213c6172      archive file
+>68    belong          0x020b0619      - PA-RISC1.0 relocatable library
+>68    belong          0x02100619      - PA-RISC1.1 relocatable library
+>68    belong          0x02110619      - PA-RISC1.2 relocatable library
+>68    belong          0x02140619      - PA-RISC2.0 relocatable library
+
+#### 500
+0      long            0x02080106      HP s500 relocatable executable
+>16    long            >0              - version %ld
+
+0      long            0x02080107      HP s500 executable
+>16    long            >0              - version %ld
+
+0      long            0x02080108      HP s500 pure executable
+>16    long            >0              - version %ld
+
+#### 200
+0      belong          0x020c0108      HP s200 pure executable
+>4     beshort         >0              - version %ld
+>8     belong          &0x80000000     save fp regs
+>8     belong          &0x40000000     dynamically linked
+>8     belong          &0x20000000     debuggable
+>36    belong          >0              not stripped
+
+0      belong          0x020c0107      HP s200 executable
+>4     beshort         >0              - version %ld
+>8     belong          &0x80000000     save fp regs
+>8     belong          &0x40000000     dynamically linked
+>8     belong          &0x20000000     debuggable
+>36    belong          >0              not stripped
+
+0      belong          0x020c010b      HP s200 demand-load executable
+>4     beshort         >0              - version %ld
+>8     belong          &0x80000000     save fp regs
+>8     belong          &0x40000000     dynamically linked
+>8     belong          &0x20000000     debuggable
+>36    belong          >0              not stripped
+
+0      belong          0x020c0106      HP s200 relocatable executable
+>4     beshort         >0              - version %ld
+>6     beshort         >0              - highwater %d
+>8     belong          &0x80000000     save fp regs
+>8     belong          &0x20000000     debuggable
+>8     belong          &0x10000000     PIC
+
+0      belong          0x020a0108      HP s200 (2.x release) pure executable
+>4     beshort         >0              - version %ld
+>36    belong          >0              not stripped
+
+0      belong          0x020a0107      HP s200 (2.x release) executable
+>4     beshort         >0              - version %ld
+>36    belong          >0              not stripped
+
+0      belong          0x020c010e      HP s200 shared library
+>4     beshort         >0              - version %ld
+>6     beshort         >0              - highwater %d
+>36    belong          >0              not stripped
+
+0      belong          0x020c010d      HP s200 dynamic load library
+>4     beshort         >0              - version %ld
+>6     beshort         >0              - highwater %d
+>36    belong          >0              not stripped
+
+#### MISC
+0      long            0x0000ff65      HP old archive
+0      long            0x020aff65      HP s200 old archive
+0      long            0x020cff65      HP s200 old archive
+0      long            0x0208ff65      HP s500 old archive
+
+0      long            0x015821a6      HP core file
+
+0      long            0x4da7eee8      HP-WINDOWS font
+>8     byte            >0              - version %ld
+0      string          Bitmapfile      HP Bitmapfile
+
+0      string          IMGfile CIS     compimg HP Bitmapfile
+# XXX - see "lif"
+#0     short           0x8000          lif file
+0      long            0x020c010c      compiled Lisp
+
+0      string          msgcat01        HP NLS message catalog,
+>8     long            >0              %d messages
+
+# addendum to /etc/magic with HP-48sx file-types by phk@data.fls.dk 1jan92
+0      string          HPHP48-         HP48 binary
+>7     byte            >0              - Rev %c
+>8     beshort         0x1129          (ADR)
+>8     beshort         0x3329          (REAL)
+>8     beshort         0x5529          (LREAL)
+>8     beshort         0x7729          (COMPLX)
+>8     beshort         0x9d29          (LCOMPLX)
+>8     beshort         0xbf29          (CHAR)
+>8     beshort         0xe829          (ARRAY)
+>8     beshort         0x0a2a          (LNKARRAY)
+>8     beshort         0x2c2a          (STRING)
+>8     beshort         0x4e2a          (HXS)
+>8     beshort         0x742a          (LIST)
+>8     beshort         0x962a          (DIR)
+>8     beshort         0xb82a          (ALG)
+>8     beshort         0xda2a          (UNIT)
+>8     beshort         0xfc2a          (TAGGED)
+>8     beshort         0x1e2b          (GROB)
+>8     beshort         0x402b          (LIB)
+>8     beshort         0x622b          (BACKUP)
+>8     beshort         0x882b          (LIBDATA)
+>8     beshort         0x9d2d          (PROG)
+>8     beshort         0xcc2d          (CODE)
+>8     beshort         0x482e          (GNAME)
+>8     beshort         0x6d2e          (LNAME)
+>8     beshort         0x922e          (XLIB)
+0      string          %%HP:           HP48 text
+>6     string          T(0)            - T(0)
+>6     string          T(1)            - T(1)
+>6     string          T(2)            - T(2)
+>6     string          T(3)            - T(3)
+>10    string          A(D)            A(D)
+>10    string          A(R)            A(R)
+>10    string          A(G)            A(G)
+>14    string          F(.)            F(.);
+>14    string          F(,)            F(,);
+
+# hpBSD magic numbers
+0      beshort         200             hp200 (68010) BSD
+>2     beshort         0407            impure binary
+>2     beshort         0410            read-only binary
+>2     beshort         0413            demand paged binary
+0      beshort         300             hp300 (68020+68881) BSD
+>2     beshort         0407            impure binary
+>2     beshort         0410            read-only binary
+>2     beshort         0413            demand paged binary
+#
+# From David Gero <dgero@nortelnetworks.com>
+# HP-UX 10.20 core file format from /usr/include/sys/core.h
+# Unfortunately, HP-UX uses corehead blocks without specifying the order
+# There are four we care about:
+#     CORE_KERNEL, which starts with the string "HP-UX"
+#     CORE_EXEC, which contains the name of the command
+#     CORE_PROC, which contains the signal number that caused the core dump
+#     CORE_FORMAT, which contains the version of the core file format (== 1)
+# The only observed order in real core files is KERNEL, EXEC, FORMAT, PROC
+# but we include all 6 variations of the order of the first 3, and
+# assume that PROC will always be last
+# Order 1: KERNEL, EXEC, FORMAT, PROC
+0x10           string  HP-UX
+>0             belong  2
+>>0xC          belong  0x3C
+>>>0x4C                belong  0x100
+>>>>0x58       belong  0x44
+>>>>>0xA0      belong  1
+>>>>>>0xAC     belong  4
+>>>>>>>0xB0    belong  1
+>>>>>>>>0xB4   belong  4               core file
+>>>>>>>>>0x90  string  >\0             from '%s'
+>>>>>>>>>0xC4  belong  3               - received SIGQUIT
+>>>>>>>>>0xC4  belong  4               - received SIGILL
+>>>>>>>>>0xC4  belong  5               - received SIGTRAP
+>>>>>>>>>0xC4  belong  6               - received SIGABRT
+>>>>>>>>>0xC4  belong  7               - received SIGEMT
+>>>>>>>>>0xC4  belong  8               - received SIGFPE
+>>>>>>>>>0xC4  belong  10              - received SIGBUS
+>>>>>>>>>0xC4  belong  11              - received SIGSEGV
+>>>>>>>>>0xC4  belong  12              - received SIGSYS
+>>>>>>>>>0xC4  belong  33              - received SIGXCPU
+>>>>>>>>>0xC4  belong  34              - received SIGXFSZ
+# Order 2: KERNEL, FORMAT, EXEC, PROC
+>>>0x4C                belong  1
+>>>>0x58       belong  4
+>>>>>0x5C      belong  1
+>>>>>>0x60     belong  0x100
+>>>>>>>0x6C    belong  0x44
+>>>>>>>>0xB4   belong  4               core file
+>>>>>>>>>0xA4  string  >\0             from '%s'
+>>>>>>>>>0xC4  belong  3               - received SIGQUIT
+>>>>>>>>>0xC4  belong  4               - received SIGILL
+>>>>>>>>>0xC4  belong  5               - received SIGTRAP
+>>>>>>>>>0xC4  belong  6               - received SIGABRT
+>>>>>>>>>0xC4  belong  7               - received SIGEMT
+>>>>>>>>>0xC4  belong  8               - received SIGFPE
+>>>>>>>>>0xC4  belong  10              - received SIGBUS
+>>>>>>>>>0xC4  belong  11              - received SIGSEGV
+>>>>>>>>>0xC4  belong  12              - received SIGSYS
+>>>>>>>>>0xC4  belong  33              - received SIGXCPU
+>>>>>>>>>0xC4  belong  34              - received SIGXFSZ
+# Order 3: FORMAT, KERNEL, EXEC, PROC
+0x24           string  HP-UX
+>0             belong  1
+>>0xC          belong  4
+>>>0x10                belong  1
+>>>>0x14       belong  2
+>>>>>0x20      belong  0x3C
+>>>>>>0x60     belong  0x100
+>>>>>>>0x6C    belong  0x44
+>>>>>>>>0xB4   belong  4               core file
+>>>>>>>>>0xA4  string  >\0             from '%s'
+>>>>>>>>>0xC4  belong  3               - received SIGQUIT
+>>>>>>>>>0xC4  belong  4               - received SIGILL
+>>>>>>>>>0xC4  belong  5               - received SIGTRAP
+>>>>>>>>>0xC4  belong  6               - received SIGABRT
+>>>>>>>>>0xC4  belong  7               - received SIGEMT
+>>>>>>>>>0xC4  belong  8               - received SIGFPE
+>>>>>>>>>0xC4  belong  10              - received SIGBUS
+>>>>>>>>>0xC4  belong  11              - received SIGSEGV
+>>>>>>>>>0xC4  belong  12              - received SIGSYS
+>>>>>>>>>0xC4  belong  33              - received SIGXCPU
+>>>>>>>>>0xC4  belong  34              - received SIGXFSZ
+# Order 4: EXEC, KERNEL, FORMAT, PROC
+0x64           string  HP-UX
+>0             belong  0x100
+>>0xC          belong  0x44
+>>>0x54                belong  2
+>>>>0x60       belong  0x3C
+>>>>>0xA0      belong  1
+>>>>>>0xAC     belong  4
+>>>>>>>0xB0    belong  1
+>>>>>>>>0xB4   belong  4               core file
+>>>>>>>>>0x44  string  >\0             from '%s'
+>>>>>>>>>0xC4  belong  3               - received SIGQUIT
+>>>>>>>>>0xC4  belong  4               - received SIGILL
+>>>>>>>>>0xC4  belong  5               - received SIGTRAP
+>>>>>>>>>0xC4  belong  6               - received SIGABRT
+>>>>>>>>>0xC4  belong  7               - received SIGEMT
+>>>>>>>>>0xC4  belong  8               - received SIGFPE
+>>>>>>>>>0xC4  belong  10              - received SIGBUS
+>>>>>>>>>0xC4  belong  11              - received SIGSEGV
+>>>>>>>>>0xC4  belong  12              - received SIGSYS
+>>>>>>>>>0xC4  belong  33              - received SIGXCPU
+>>>>>>>>>0xC4  belong  34              - received SIGXFSZ
+# Order 5: FORMAT, EXEC, KERNEL, PROC
+0x78           string  HP-UX
+>0             belong  1
+>>0xC          belong  4
+>>>0x10                belong  1
+>>>>0x14       belong  0x100
+>>>>>0x20      belong  0x44
+>>>>>>0x68     belong  2
+>>>>>>>0x74    belong  0x3C
+>>>>>>>>0xB4   belong  4               core file
+>>>>>>>>>0x58  string  >\0             from '%s'
+>>>>>>>>>0xC4  belong  3               - received SIGQUIT
+>>>>>>>>>0xC4  belong  4               - received SIGILL
+>>>>>>>>>0xC4  belong  5               - received SIGTRAP
+>>>>>>>>>0xC4  belong  6               - received SIGABRT
+>>>>>>>>>0xC4  belong  7               - received SIGEMT
+>>>>>>>>>0xC4  belong  8               - received SIGFPE
+>>>>>>>>>0xC4  belong  10              - received SIGBUS
+>>>>>>>>>0xC4  belong  11              - received SIGSEGV
+>>>>>>>>>0xC4  belong  12              - received SIGSYS
+>>>>>>>>>0xC4  belong  33              - received SIGXCPU
+>>>>>>>>>0xC4  belong  34              - received SIGXFSZ
+# Order 6: EXEC, FORMAT, KERNEL, PROC
+>0             belong  0x100
+>>0xC          belong  0x44
+>>>0x54                belong  1
+>>>>0x60       belong  4
+>>>>>0x64      belong  1
+>>>>>>0x68     belong  2
+>>>>>>>0x74    belong  0x2C
+>>>>>>>>0xB4   belong  4               core file
+>>>>>>>>>0x44  string  >\0             from '%s'
+>>>>>>>>>0xC4  belong  3               - received SIGQUIT
+>>>>>>>>>0xC4  belong  4               - received SIGILL
+>>>>>>>>>0xC4  belong  5               - received SIGTRAP
+>>>>>>>>>0xC4  belong  6               - received SIGABRT
+>>>>>>>>>0xC4  belong  7               - received SIGEMT
+>>>>>>>>>0xC4  belong  8               - received SIGFPE
+>>>>>>>>>0xC4  belong  10              - received SIGBUS
+>>>>>>>>>0xC4  belong  11              - received SIGSEGV
+>>>>>>>>>0xC4  belong  12              - received SIGSYS
+>>>>>>>>>0xC4  belong  33              - received SIGXCPU
+>>>>>>>>>0xC4  belong  34              - received SIGXFSZ
+
+# From: AMAKAWA Shuhei <sa264@cam.ac.uk>
+0      string  HPHP49-                 HP49 binary
+
+
+#------------------------------------------------------------------------------
+# JPEG images
+# SunOS 5.5.1 had
+#
+#      0       string          \377\330\377\340        JPEG file
+#      0       string          \377\330\377\356        JPG file
+#
+# both of which turn into "JPEG image data" here.
+#
+0      beshort         0xffd8          JPEG image data
+>6     string          JFIF            \b, JFIF standard
+# The following added by Erik Rossen <rossen@freesurf.ch> 1999-09-06
+# in a vain attempt to add image size reporting for JFIF.  Note that these
+# tests are not fool-proof since some perfectly valid JPEGs are currently
+# impossible to specify in magic(4) format.
+# First, a little JFIF version info:
+>>11   byte            x               \b %d.
+>>12   byte            x               \b%02d
+# Next, the resolution or aspect ratio of the image:
+#>>13  byte            0               \b, aspect ratio
+#>>13  byte            1               \b, resolution (DPI)
+#>>13  byte            2               \b, resolution (DPCM)
+#>>4   beshort         x               \b, segment length %d
+# Next, show thumbnail info, if it exists:
+>>18   byte            !0              \b, thumbnail %dx
+>>>19  byte            x               \b%d
+
+# EXIF moved down here to avoid reporting a bogus version number,
+# and EXIF version number printing added.
+#   - Patrik R=E5dman <patrik+file-magic@iki.fi>
+>6     string          Exif            \b, EXIF standard
+# Look for EXIF IFD offset in IFD 0, and then look for EXIF version tag in EXIF IFD.
+# All possible combinations of entries have to be enumerated, since no looping
+# is possible. And both endians are possible...
+# The combinations included below are from real-world JPEGs.
+# Little-endian
+>>12   string          II              
+# IFD 0 Entry #5:
+>>>70  leshort         0x8769          
+# EXIF IFD Entry #1:
+>>>>(78.l+14)  leshort 0x9000          
+>>>>>(78.l+23) byte    x               %c
+>>>>>(78.l+24) byte    x               \b.%c
+>>>>>(78.l+25) byte    !0x30           \b%c
+# IFD 0 Entry #9:
+>>>118 leshort         0x8769          
+# EXIF IFD Entry #3:
+>>>>(126.l+38) leshort 0x9000          
+>>>>>(126.l+47)        byte    x               %c
+>>>>>(126.l+48)        byte    x               \b.%c
+>>>>>(126.l+49)        byte    !0x30           \b%c
+# IFD 0 Entry #10
+>>>130 leshort         0x8769          
+# EXIF IFD Entry #3:
+>>>>(138.l+38) leshort 0x9000          
+>>>>>(138.l+47)        byte    x               %c
+>>>>>(138.l+48)        byte    x               \b.%c
+>>>>>(138.l+49)        byte    !0x30           \b%c
+# EXIF IFD Entry #4:
+>>>>(138.l+50) leshort 0x9000          
+>>>>>(138.l+59)        byte    x               %c
+>>>>>(138.l+60)        byte    x               \b.%c
+>>>>>(138.l+61)        byte    !0x30           \b%c
+# EXIF IFD Entry #5:
+>>>>(138.l+62) leshort 0x9000          
+>>>>>(138.l+71)        byte    x               %c
+>>>>>(138.l+72)        byte    x               \b.%c
+>>>>>(138.l+73)        byte    !0x30           \b%c
+# IFD 0 Entry #11
+>>>142 leshort         0x8769          
+# EXIF IFD Entry #3:
+>>>>(150.l+38) leshort 0x9000          
+>>>>>(150.l+47)        byte    x               %c
+>>>>>(150.l+48)        byte    x               \b.%c
+>>>>>(150.l+49)        byte    !0x30           \b%c
+# EXIF IFD Entry #4:
+>>>>(150.l+50) leshort 0x9000          
+>>>>>(150.l+59)        byte    x               %c
+>>>>>(150.l+60)        byte    x               \b.%c
+>>>>>(150.l+61)        byte    !0x30           \b%c
+# EXIF IFD Entry #5:
+>>>>(150.l+62) leshort 0x9000          
+>>>>>(150.l+71)        byte    x               %c
+>>>>>(150.l+72)        byte    x               \b.%c
+>>>>>(150.l+73)        byte    !0x30           \b%c
+# Big-endian
+>>12   string          MM              
+# IFD 0 Entry #9:
+>>>118 beshort         0x8769          
+# EXIF IFD Entry #1:
+>>>>(126.L+14) beshort 0x9000          
+>>>>>(126.L+23)        byte    x               %c
+>>>>>(126.L+24)        byte    x               \b.%c
+>>>>>(126.L+25)        byte    !0x30           \b%c
+# EXIF IFD Entry #3:
+>>>>(126.L+38) beshort 0x9000          
+>>>>>(126.L+47)        byte    x               %c
+>>>>>(126.L+48)        byte    x               \b.%c
+>>>>>(126.L+49)        byte    !0x30           \b%c
+# IFD 0 Entry #10
+>>>130 beshort         0x8769          
+# EXIF IFD Entry #3:
+>>>>(138.L+38) beshort 0x9000          
+>>>>>(138.L+47)        byte    x               %c
+>>>>>(138.L+48)        byte    x               \b.%c
+>>>>>(138.L+49)        byte    !0x30           \b%c
+# EXIF IFD Entry #5:
+>>>>(138.L+62) beshort 0x9000          
+>>>>>(138.L+71)        byte    x               %c
+>>>>>(138.L+72)        byte    x               \b.%c
+>>>>>(138.L+73)        byte    !0x30           \b%c
+# IFD 0 Entry #11
+>>>142 beshort         0x8769          
+# EXIF IFD Entry #4:
+>>>>(150.L+50) beshort 0x9000          
+>>>>>(150.L+59)        byte    x               %c
+>>>>>(150.L+60)        byte    x               \b.%c
+>>>>>(150.L+61)        byte    !0x30           \b%c
+# Here things get sticky.  We can do ONE MORE marker segment with
+# indirect addressing, and that's all.  It would be great if we could
+# do pointer arithemetic like in an assembler language.  Christos?
+# And if there was some sort of looping construct to do searches, plus a few
+# named accumulators, it would be even more effective...
+# At least we can show a comment if no other segments got inserted before:
+>(4.S+5)       byte            0xFE
+>>(4.S+8)      string          >\0             \b, comment: "%s"
+#>(4.S+5)      byte            0xFE            \b, comment
+#>>(4.S+6)     beshort         x               \b length=%d
+#>>(4.S+8)     string          >\0             \b, "%s"
+# Or, we can show the encoding type (I've included only the three most common)
+# and image dimensions if we are lucky and the SOFn (image segment) is here:
+>(4.S+5)       byte            0xC0            \b, baseline
+>>(4.S+6)      byte            x               \b, precision %d
+>>(4.S+7)      beshort         x               \b, %dx
+>>(4.S+9)      beshort         x               \b%d
+>(4.S+5)       byte            0xC1            \b, extended sequential
+>>(4.S+6)      byte            x               \b, precision %d
+>>(4.S+7)      beshort         x               \b, %dx
+>>(4.S+9)      beshort         x               \b%d
+>(4.S+5)       byte            0xC2            \b, progressive
+>>(4.S+6)      byte            x               \b, precision %d
+>>(4.S+7)      beshort         x               \b, %dx
+>>(4.S+9)      beshort         x               \b%d
+# I've commented-out quantisation table reporting.  I doubt anyone cares yet.
+#>(4.S+5)      byte            0xDB            \b, quantisation table
+#>>(4.S+6)     beshort         x               \b length=%d
+#>14   beshort         x               \b, %d x
+#>16   beshort         x               \b %d
+
+# HSI is Handmade Software's proprietary JPEG encoding scheme
+0      string          hsi1            JPEG image data, HSI proprietary
+
+# From: David Santinoli <david@santinoli.com>
+0      string          \x00\x00\x00\x0C\x6A\x50\x20\x20\x0D\x0A\x87\x0A        JPEG 2000 image data
+
+#------------------------------------------------------------------------------
+# sinclair:  file(1) sinclair QL
+
+# additions to /etc/magic by Thomas M. Ott (ThMO)
+
+# Sinclair QL floppy disk formats (ThMO)
+0      string  =QL5            QL disk dump data,
+>3     string  =A              720 KB,
+>3     string  =B              1.44 MB,
+>3     string  =C              3.2 MB,
+>4     string  >\0             label:%.10s
+
+# Sinclair QL OS dump (ThMO)
+# (NOTE: if `file' would be able to use indirect references in a endian format
+#       differing from the natural host format, this could be written more
+#       reliably and faster...)
+#
+# we *can't* lookup QL OS code dumps, because `file' is UNABLE to read more
+# than the first 8K of a file... #-(
+#
+#0             belong  =0x30000
+#>49124                belong  <47104
+#>>49128               belong  <47104
+#>>>49132      belong  <47104
+#>>>>49136     belong  <47104  QL OS dump data,
+#>>>>>49148    string  >\0     type %.3s,
+#>>>>>49142    string  >\0     version %.4s
+
+# Sinclair QL firmware executables (ThMO)
+0      string  NqNqNq`\004     QL firmware executable (BCPL)
+
+# Sinclair QL libraries (was ThMO)
+0      beshort 0xFB01          QDOS object
+>2     pstring x               '%s'
+
+# Sinclair QL executables (was ThMO)
+4      belong  0x4AFB          QDOS executable
+>9     pstring x               '%s'
+
+# Sinclair QL ROM (ThMO)
+0      belong  =0x4AFB0001     QL plugin-ROM data,
+>9     pstring =\0             un-named
+>9     pstring >\0             named: %s
+#------------------------------------------------------------------------------
+# acorn:  file(1) magic for files found on Acorn systems
+#
+
+# RISC OS Chunk File Format
+# From RISC OS Programmer's Reference Manual, Appendix D
+# We guess the file type from the type of the first chunk.
+0      lelong          0xc3cbc6c5      RISC OS Chunk data
+>12    string          OBJ_            \b, AOF object
+>12    string          LIB_            \b, ALF library
+
+# RISC OS AIF, contains "SWI OS_Exit" at offset 16.
+16     lelong          0xef000011      RISC OS AIF executable
+
+# RISC OS Draw files
+# From RISC OS Programmer's Reference Manual, Appendix E
+0      string          Draw            RISC OS Draw file data
+
+# RISC OS new format font files
+# From RISC OS Programmer's Reference Manual, Appendix E
+0      string          FONT\0          RISC OS outline font data,
+>5     byte            x               version %d
+0      string          FONT\1          RISC OS 1bpp font data,
+>5     byte            x               version %d
+0      string          FONT\4          RISC OS 4bpp font data
+>5     byte            x               version %d
+
+# RISC OS Music files
+# From RISC OS Programmer's Reference Manual, Appendix E
+0      string          Maestro\r       RISC OS music file
+>8     byte            x               version %d
+
+
+#------------------------------------------------------------------------------
+# iff: file(1) magic for Interchange File Format (see also "audio" & "images")
+#
+# Daniel Quinlan (quinlan@yggdrasil.com) -- IFF was designed by Electronic
+# Arts for file interchange.  It has also been used by Apple, SGI, and
+# especially Commodore-Amiga.
+#
+# IFF files begin with an 8 byte FORM header, followed by a 4 character
+# FORM type, which is followed by the first chunk in the FORM.
+
+0      string          FORM            IFF data
+#>4    belong          x               \b, FORM is %d bytes long
+# audio formats
+>8     string          AIFF            \b, AIFF audio
+>8     string          AIFC            \b, AIFF-C compressed audio
+>8     string          8SVX            \b, 8SVX 8-bit sampled sound voice
+>8     string          SAMP            \b, SAMP sampled audio
+>8     string          DTYP            \b, DTYP datatype description
+>8     string          PTCH            \b, PTCH binary patch
+# image formats
+>8     string          ILBMBMHD        \b, ILBM interleaved image
+>>20   beshort         x               \b, %d x
+>>22   beshort         x               %d
+>8     string          RGBN            \b, RGBN 12-bit RGB image
+>8     string          RGB8            \b, RGB8 24-bit RGB image
+>8     string          DR2D            \b, DR2D 2-D object
+>8     string          TDDD            \b, TDDD 3-D rendering
+# other formats
+>8     string          FTXT            \b, FTXT formatted text
+>8     string          CTLG            \b, CTLG message catalog
+>8     string          PREF            \b, PREF preferences
+
+#------------------------------------------------------------------------------
+# lif:  file(1) magic for lif
+#
+# (Daniel Quinlan <quinlan@yggdrasil.com>)
+#
+0      beshort         0x8000          lif file
+
+#------------------------------------------------------------------------------
+# mirage:  file(1) magic for Mirage executables
+#
+# XXX - byte order?
+#
+0      long    31415           Mirage Assembler m.out executable
+
+#------------------------------------------------------------------------------
+# netscape:  file(1) magic for Netscape files
+# "H. Nanosecond" <aldomel@ix.netcom.com>
+# version 3 and 4 I think
+#
+
+# Netscape Address book  .nab
+0      string \000\017\102\104\000\000\000\000\000\000\001\000\000\000\000\002\000\000\000\002\000\000\004\000 Netscape Address book
+
+# Netscape Communicator address book
+0   string   \000\017\102\111 Netscape Communicator address book
+
+# .snm Caches
+0      string          #\ Netscape\ folder\ cache      Netscape folder cache
+0      string  \000\036\204\220\000    Netscape folder cache
+# .n2p 
+# Net 2 Phone 
+#0     string  123\130\071\066\061\071\071\071\060\070\061\060\061\063\060
+0      string  SX961999        Net2phone
+
+#
+#This is files ending in .art, FIXME add more rules
+0       string          JG\004\016\0\0\0\0      ART
+
+#------------------------------------------------------------------------------
+# olf:  file(1) magic for OLF executables
+#
+# We have to check the byte order flag to see what byte order all the
+# other stuff in the header is in.
+#
+# MIPS R3000 may also be for MIPS R2000.
+# What're the correct byte orders for the nCUBE and the Fujitsu VPP500?
+#
+# Created by Erik Theisen <etheisen@openbsd.org>
+# Based on elf from Daniel Quinlan <quinlan@yggdrasil.com>
+0      string          \177OLF         OLF
+>4     byte            0               invalid class
+>4     byte            1               32-bit
+>4     byte            2               64-bit
+>7     byte            0               invalid os
+>7     byte            1               OpenBSD
+>7     byte            2               NetBSD
+>7     byte            3               FreeBSD
+>7     byte            4               4.4BSD
+>7     byte            5               Linux
+>7     byte            6               SVR4
+>7     byte            7               esix
+>7     byte            8               Solaris
+>7     byte            9               Irix
+>7     byte            10              SCO
+>7     byte            11              Dell
+>7     byte            12              NCR
+>5     byte            0               invalid byte order
+>5     byte            1               LSB
+>>16   leshort         0               no file type,
+>>16   leshort         1               relocatable,
+>>16   leshort         2               executable,
+>>16   leshort         3               shared object,
+# Core handling from Peter Tobias <tobias@server.et-inf.fho-emden.de>
+# corrections by Christian 'Dr. Disk' Hechelmann <drdisk@ds9.au.s.shuttle.de>
+>>16   leshort         4               core file
+>>>(0x38+0xcc) string  >\0             of '%s'
+>>>(0x38+0x10) lelong  >0              (signal %d),
+>>16   leshort         &0xff00         processor-specific,
+>>18   leshort         0               no machine,
+>>18   leshort         1               AT&T WE32100 - invalid byte order,
+>>18   leshort         2               SPARC - invalid byte order,
+>>18   leshort         3               Intel 80386,
+>>18   leshort         4               Motorola 68000 - invalid byte order,
+>>18   leshort         5               Motorola 88000 - invalid byte order,
+>>18   leshort         6               Intel 80486,
+>>18   leshort         7               Intel 80860,
+>>18   leshort         8               MIPS R3000_BE - invalid byte order,
+>>18   leshort         9               Amdahl - invalid byte order,
+>>18   leshort         10              MIPS R3000_LE,
+>>18   leshort         11              RS6000 - invalid byte order,
+>>18   leshort         15              PA-RISC - invalid byte order,
+>>18   leshort         16              nCUBE,
+>>18   leshort         17              VPP500,
+>>18   leshort         18              SPARC32PLUS,
+>>18   leshort         20              PowerPC,
+>>18   leshort         0x9026          Alpha,
+>>20   lelong          0               invalid version
+>>20   lelong          1               version 1
+>>36   lelong          1               MathCoPro/FPU/MAU Required
+>8     string          >\0             (%s)
+>5     byte            2               MSB
+>>16   beshort         0               no file type,
+>>16   beshort         1               relocatable,
+>>16   beshort         2               executable,
+>>16   beshort         3               shared object,
+>>16   beshort         4               core file,
+>>>(0x38+0xcc) string  >\0             of '%s'
+>>>(0x38+0x10) belong  >0              (signal %d),
+>>16   beshort         &0xff00         processor-specific,
+>>18   beshort         0               no machine,
+>>18   beshort         1               AT&T WE32100,
+>>18   beshort         2               SPARC,
+>>18   beshort         3               Intel 80386 - invalid byte order,
+>>18   beshort         4               Motorola 68000,
+>>18   beshort         5               Motorola 88000,
+>>18   beshort         6               Intel 80486 - invalid byte order,
+>>18   beshort         7               Intel 80860,
+>>18   beshort         8               MIPS R3000_BE,
+>>18   beshort         9               Amdahl,
+>>18   beshort         10              MIPS R3000_LE - invalid byte order,
+>>18   beshort         11              RS6000,
+>>18   beshort         15              PA-RISC,
+>>18   beshort         16              nCUBE,
+>>18   beshort         17              VPP500,
+>>18   beshort         18              SPARC32PLUS,
+>>18   beshort         20              PowerPC or cisco 4500,
+>>18   beshort         21              cisco 7500,
+>>18   beshort         24              cisco SVIP,
+>>18   beshort         25              cisco 7200,
+>>18   beshort         36              cisco 12000,
+>>18   beshort         0x9026          Alpha,
+>>20   belong          0               invalid version
+>>20   belong          1               version 1
+>>36   belong          1               MathCoPro/FPU/MAU Required
+
+#------------------------------------------------------------------------------
+# VXL: file(1) magic for VXL binary IO data files
+#
+# from Ian Scott <scottim@sf.net>
+#
+# VXL is a collection of C++ libraries for Computer Vision.
+# See the vsl chapter in the VXL Book for more info
+# http://www.isbe.man.ac.uk/public_vxl_doc/books/vxl/book.html
+# http:/vxl.sf.net
+
+2      lelong  0x472b2c4e      VXL data file,
+>0     leshort >0              schema version no %d
+
+#------------------------------------------------------------------------------
+# unknown:  file(1) magic for unknown machines
+#
+# XXX - this probably should be pruned, as it'll match PDP-11 and
+# VAX image formats.
+#
+# 0x107 is 0407; 0x108 is 0410; both are PDP-11 (executable and pure,
+# respectively).
+#
+# 0x109 is 0411; that's PDP-11 split I&D, but the PDP-11 version doesn't
+# have the "version %ld", which may be a bogus COFFism (I don't think
+# there ever was COFF for the PDP-11).
+#
+# 0x10B is 0413; that's VAX demand-paged, but this is a short, not a
+# long, as it would be on a VAX.
+#
+# 0x10C is 0414 and 0x10E is 416; those *are* unknown.
+#
+0      short           0x107           unknown machine executable
+>8     short           >0              not stripped
+>15    byte            >0              - version %ld
+0      short           0x108           unknown pure executable
+>8     short           >0              not stripped
+>15    byte            >0              - version %ld
+0      short           0x109           PDP-11 separate I&D
+>8     short           >0              not stripped
+>15    byte            >0              - version %ld
+0      short           0x10b           unknown pure executable
+>8     short           >0              not stripped
+>15    byte            >0              - version %ld
+0      long            0x10c           unknown demand paged pure executable
+>16    long            >0              not stripped
+0      long            0x10e           unknown readable demand paged pure executable
+
+#------------------------------------------------------------------------------
+# Hierarchical Data Format, used to facilitate scientific data exchange
+# specifications at http://hdf.ncsa.uiuc.edu/
+
+0      belong          0x0e031301      Hierarchical Data Format (version 4) data
+0      string          \211HDF\r\n\032 Hierarchical Data Format (version 5) data
+
+#------------------------------------------------------------------------------
+# mail.news:  file(1) magic for mail and news
+#
+# Unfortunately, saved netnews also has From line added in some news software.
+#0     string          From            mail text
+# There are tests to ascmagic.c to cope with mail and news.
+0      string          Relay-Version:  old news text
+0      string          #!\ rnews       batched news text
+0      string          N#!\ rnews      mailed, batched news text
+0      string          Forward\ to     mail forwarding text
+0      string          Pipe\ to        mail piping text
+0      string          Return-Path:    smtp mail text
+0      string          Path:           news text
+0      string          Xref:           news text
+0      string          From:           news or mail text
+0      string          Article         saved news text
+0      string          BABYL           Emacs RMAIL text
+0      string          Received:       RFC 822 mail text
+0      string          MIME-Version:   MIME entity text
+#0     string          Content-        MIME entity text
+
+# TNEF files...
+0      lelong          0x223E9F78      Transport Neutral Encapsulation Format
+
+# From: Kevin Sullivan <ksulliva@psc.edu>
+0      string          *mbx*           MBX mail folder
+
+# From: Simon Matter <simon.matter@invoca.ch>
+0      string          \241\002\213\015skiplist\ file\0\0\0    Cyrus skiplist DB
+
+# JAM(mbp) Fidonet message area databases
+# JHR file
+0      string  JAM\0                   JAM message area header file
+>12    leshort >0                      (%d messages)
+
+# Squish Fidonet message area databases
+# SQD file (requires at least one message in the area)
+256    leshort 0xAFAE4453              Squish message area data file
+>4     leshort >0                      (%d messages)
+#------------------------------------------------------------------------------
+# modem:  file(1) magic for modem programs
+#
+# From: Florian La Roche <florian@knorke.saar.de>
+4      string          Research,       Digifax-G3-File
+>29    byte            1               , fine resolution
+>29    byte            0               , normal resolution
+
+0      short           0x0100          raw G3 data, byte-padded
+0      short           0x1400          raw G3 data
+#
+# Magic data for vgetty voice formats
+# (Martin Seine & Marc Eberhard)
+
+#
+# raw modem data version 1
+#
+0    string    RMD1      raw modem data
+>4   string    >\0       (%s /
+>20  short     >0        compression type 0x%04x)
+
+#
+# portable voice format 1
+#
+0    string    PVF1\n         portable voice format
+>5   string    >\0       (binary %s)
+
+#
+# portable voice format 2
+#
+0    string    PVF2\n         portable voice format
+>5   string >\0          (ascii %s)
+
+
+#------------------------------------------------------------------------------
+# xwindows:  file(1) magic for various X/Window system file formats.
+
+# Compiled X Keymap 
+# XKM (compiled X keymap) files (including version and byte ordering)
+1      string  mkx                             Compiled XKB Keymap: lsb,
+>0     byte    >0                              version %d
+>0     byte    =0                              obsolete
+0      string  xkm                             Compiled XKB Keymap: msb,
+>3     byte    >0                              version %d
+>0     byte    =0                              obsolete
+
+# xfsdump archive
+0      string  xFSdump0                        xfsdump archive
+>8     long    x       (version %d)
+
+# Jaleo XFS files
+0      long    395726                          Jaleo XFS file
+>4     long    x                               - version %ld
+>8     long    x                               - [%ld -
+>20    long    x                               \b%ldx
+>24    long    x                               \b%ldx
+>28    long    1008                            \bYUV422]
+>28    long    1000                            \bRGB24]
+
+#------------------------------------------------------------------------------
+# wordprocessors:  file(1) magic fo word processors.
+#
+####### PWP file format used on Smith Corona Personal Word Processors:
+2      string  \040\040\040\040\040\040\040\040\040\040\040ML4D\040\'92        Smith Corona PWP
+>24    byte    2       \b, single spaced
+>24    byte    3       \b, 1.5 spaced
+>24    byte    4       \b, double spaced
+>25    byte    0x42    \b, letter
+>25    byte    0x54    \b, legal
+>26    byte    0x46    \b, A4
+
+#WordPerfect type files Version 1.6 - PLEASE DO NOT REMOVE THIS LINE
+0      string  \377WPC\020\000\000\000\022\012\001\001\000\000\000\000 (WP) loadable text
+>15    byte    0       Optimized for Intel
+>15    byte    1       Optimized for Non-Intel
+1      string  WPC     (Corel/WP)
+>8     short   257     WordPerfect macro
+>8     short   258     WordPerfect help file
+>8     short   259     WordPerfect keyboard file
+>8     short   266     WordPerfect document
+>8     short   267     WordPerfect dictionary
+>8     short   268     WordPerfect thesaurus
+>8     short   269     WordPerfect block
+>8     short   270     WordPerfect rectangular block
+>8     short   271     WordPerfect column block
+>8     short   272     WordPerfect printer data
+>8     short   275     WordPerfect printer data
+>8     short   276     WordPerfect driver resource data
+>8     short   279     WordPerfect hyphenation code
+>8     short   280     WordPerfect hyphenation data
+>8     short   281     WordPerfect macro resource data
+>8     short   283     WordPerfect hyphenation lex
+>8     short   285     WordPerfect wordlist
+>8     short   286     WordPerfect equation resource data
+>8     short   289     WordPerfect spell rules
+>8     short   290     WordPerfect dictionary rules
+>8     short   295     WordPerfect spell rules (Microlytics)
+>8     short   299     WordPerfect settings file
+>8     short   301     WordPerfect 4.2 document
+>8     short   325     WordPerfect dialog file
+>8     short   332     WordPerfect button bar
+>8     short   513     Shell macro
+>8     short   522     Shell definition
+>8     short   769     Notebook macro
+>8     short   770     Notebook help file
+>8     short   771     Notebook keyboard file
+>8     short   778     Notebook definition
+>8     short   1026    Calculator help file
+>8     short   1538    Calendar help file
+>8     short   1546    Calendar data file
+>8     short   1793    Editor macro
+>8     short   1794    Editor help file
+>8     short   1795    Editor keyboard file
+>8     short   1817    Editor macro resource file
+>8     short   2049    Macro editor macro
+>8     short   2050    Macro editor help file
+>8     short   2051    Macro editor keyboard file
+>8     short   2305    PlanPerfect macro
+>8     short   2306    PlanPerfect help file
+>8     short   2307    PlanPerfect keyboard file
+>8     short   2314    PlanPerfect worksheet
+>8     short   2319    PlanPerfect printer definition
+>8     short   2322    PlanPerfect graphic definition
+>8     short   2323    PlanPerfect data
+>8     short   2324    PlanPerfect temporary printer
+>8     short   2329    PlanPerfect macro resource data
+>8     byte    11      Mail
+>8     short   2818    help file
+>8     short   2821    distribution list
+>8     short   2826    out box
+>8     short   2827    in box
+>8     short   2836    users archived mailbox
+>8     short   2837    archived message database
+>8     short   2838    archived attachments
+>8     short   3083    Printer temporary file
+>8     short   3330    Scheduler help file
+>8     short   3338    Scheduler in file
+>8     short   3339    Scheduler out file
+>8     short   3594    GroupWise settings file
+>8     short   3601    GroupWise directory services
+>8     short   3627    GroupWise settings file
+>8     short   4362    Terminal resource data
+>8     short   4363    Terminal resource data
+>8     short   4395    Terminal resource data
+>8     short   4619    GUI loadable text
+>8     short   4620    graphics resource data
+>8     short   4621    printer settings file
+>8     short   4622    port definition file
+>8     short   4623    print queue parameters
+>8     short   4624    compressed file
+>8     short   5130    Network service msg file
+>8     short   5131    Network service msg file
+>8     short   5132    Async gateway login msg
+>8     short   5134    GroupWise message file
+>8     short   7956    GroupWise admin domain database
+>8     short   7957    GroupWise admin host database
+>8     short   7959    GroupWise admin remote host database
+>8     short   7960    GroupWise admin ADS deferment data file
+>8     short   8458    IntelliTAG (SGML) compiled DTD
+>8     long    18219264        WordPerfect graphic image (1.0)
+>8     long    18219520        WordPerfect graphic image (2.0)
+#end of WordPerfect type files Version 1.6 - PLEASE DO NOT REMOVE THIS LINE
+
+# Hangul (Korean) Word Processor File
+0      string  HWP\ Document\ File     Hangul (Korean) Word Processor File
+
+# CosmicBook, from Benoît Rouits
+0       string  CSBK    Ted Neslson's CosmicBook hypertext file
+
+
+#------------------------------------------------------------------------------
+# sun:  file(1) magic for Sun machines
+#
+# Values for big-endian Sun (MC680x0, SPARC) binaries on pre-5.x
+# releases.  (5.x uses ELF.)
+#
+0      belong&077777777        0600413         sparc demand paged
+>0     byte            &0x80
+>>20   belong          <4096           shared library
+>>20   belong          =4096           dynamically linked executable
+>>20   belong          >4096           dynamically linked executable
+>0     byte            ^0x80           executable
+>16    belong          >0              not stripped
+0      belong&077777777        0600410         sparc pure
+>0     byte            &0x80           dynamically linked executable
+>0     byte            ^0x80           executable
+>16    belong          >0              not stripped
+0      belong&077777777        0600407         sparc
+>0     byte            &0x80           dynamically linked executable
+>0     byte            ^0x80           executable
+>16    belong          >0              not stripped
+
+0      belong&077777777        0400413         mc68020 demand paged
+>0     byte            &0x80
+>>20   belong          <4096           shared library
+>>20   belong          =4096           dynamically linked executable
+>>20   belong          >4096           dynamically linked executable
+>16    belong          >0              not stripped
+0      belong&077777777        0400410         mc68020 pure
+>0     byte            &0x80           dynamically linked executable
+>0     byte            ^0x80           executable
+>16    belong          >0              not stripped
+0      belong&077777777        0400407         mc68020
+>0     byte            &0x80           dynamically linked executable
+>0     byte            ^0x80           executable
+>16    belong          >0              not stripped
+
+0      belong&077777777        0200413         mc68010 demand paged
+>0     byte            &0x80
+>>20   belong          <4096           shared library
+>>20   belong          =4096           dynamically linked executable
+>>20   belong          >4096           dynamically linked executable
+>16    belong          >0              not stripped
+0      belong&077777777        0200410         mc68010 pure
+>0     byte            &0x80           dynamically linked executable
+>0     byte            ^0x80           executable
+>16    belong          >0              not stripped
+0      belong&077777777        0200407         mc68010
+>0     byte            &0x80           dynamically linked executable
+>0     byte            ^0x80           executable
+>16    belong          >0              not stripped
+
+# reworked these to avoid anything beginning with zero becoming "old sun-2"
+0      belong          0407            old sun-2 executable
+>16    belong          >0              not stripped
+0      belong          0410            old sun-2 pure executable
+>16    belong          >0              not stripped
+0      belong          0413            old sun-2 demand paged executable
+>16    belong          >0              not stripped
+
+#
+# Core files.  "SPARC 4.x BCP" means "core file from a SunOS 4.x SPARC
+# binary executed in compatibility mode under SunOS 5.x".
+#
+0      belong          0x080456        SunOS core file
+>4     belong          432             (SPARC)
+>>132  string          >\0             from '%s'
+>>116  belong          =3              (quit)
+>>116  belong          =4              (illegal instruction)
+>>116  belong          =5              (trace trap)
+>>116  belong          =6              (abort)
+>>116  belong          =7              (emulator trap)
+>>116  belong          =8              (arithmetic exception)
+>>116  belong          =9              (kill)
+>>116  belong          =10             (bus error)
+>>116  belong          =11             (segmentation violation)
+>>116  belong          =12             (bad argument to system call)
+>>116  belong          =29             (resource lost)
+>>120  belong          x               (T=%dK,
+>>124  belong          x               D=%dK,
+>>128  belong          x               S=%dK)
+>4     belong          826             (68K)
+>>128  string          >\0             from '%s'
+>4     belong          456             (SPARC 4.x BCP)
+>>152  string          >\0             from '%s'
+# Sun SunPC
+0      long            0xfa33c08e      SunPC 4.0 Hard Disk
+0      string          #SUNPC_CONFIG   SunPC 4.0 Properties Values
+# Sun snoop (see RFC 1761, which describes the capture file format).
+#
+0      string          snoop           Snoop capture file
+>8     belong          >0              - version %ld
+>12    belong          0               (IEEE 802.3)
+>12    belong          1               (IEEE 802.4)
+>12    belong          2               (IEEE 802.5)
+>12    belong          3               (IEEE 802.6)
+>12    belong          4               (Ethernet)
+>12    belong          5               (HDLC)
+>12    belong          6               (Character synchronous)
+>12    belong          7               (IBM channel-to-channel adapter)
+>12    belong          8               (FDDI)
+>12    belong          9               (Unknown)
+
+# Microsoft ICM color profile
+36     string          acspMSFT        Microsoft ICM Color Profile
+# Sun KCMS
+36     string          acsp            Kodak Color Management System, ICC Profile
+
+#---------------------------------------------------------------------------
+# The following entries have been tested by Duncan Laurie <duncan@sun.com> (a
+# lead Sun/Cobalt developer) who agrees that they are good and worthy of
+# inclusion.
+
+# Boot ROM images for Sun/Cobalt Linux server appliances
+0       string  Cobalt\ Networks\ Inc.\nFirmware\ v     Paged COBALT boot rom
+>38     string x        V%.4s
+
+# New format for Sun/Cobalt boot ROMs is annoying, it stores the version code
+# at the very end where file(1) can't get it.
+0       string CRfs     COBALT boot rom data (Flat boot rom or file system)
+
+
+
+#------------------------------------------------------------------------------
+# Sketch Drawings: http://sketch.sourceforge.net/ 
+# From: Edwin Mons <e@ik.nu>
+0      string  ##Sketch        Sketch document text
+#------------------------------------------------------------------------------
+# bFLT: file(1) magic for BFLT uclinux binary files
+#
+# From Philippe De Muyter <phdm@macqel.be>
+#
+0      string          bFLT            BFLT executable
+>4     belong          x               - version %ld
+>4     belong          4
+>>36   belong&0x1      0x1             ram
+>>36   belong&0x2      0x2             gotpic
+>>36   belong&0x4      0x4             gzip
+>>36   belong&0x8      0x8             gzdata
+#
+# i80960 b.out objects and archives
+#
+0      long            0x10d           i960 b.out relocatable object
+>16    long            >0              not stripped
+#
+# b.out archive (hp-rt on i960)
+0      string          !<bout>         b.out archive
+>8     string          __.SYMDEF       random library
+
+#------------------------------------------------------------------------------
+# hitach-sh: file(1) magic for Hitachi Super-H
+#
+# Super-H COFF
+#
+0      beshort         0x0500          Hitachi SH big-endian COFF
+>18    beshort&0x0002  =0x0000         object
+>18    beshort&0x0002  =0x0002         executable
+>18    beshort&0x0008  =0x0008         \b, stripped
+>18    beshort&0x0008  =0x0000         \b, not stripped
+#
+0      leshort         0x0550          Hitachi SH little-endian COFF
+>18    leshort&0x0002  =0x0000         object
+>18    leshort&0x0002  =0x0002         executable
+>18    leshort&0x0008  =0x0008         \b, stripped
+>18    leshort&0x0008  =0x0000         \b, not stripped
+
+
+#------------------------------------------------------------------------------
+# matroska:  file(1) magic for Matroska files
+#
+# See http://www.matroska.org/
+#
+
+# EBML id:
+0              belong          0x1a45dfa3
+# DocType id:
+>5             beshort         0x4282
+# DocType contents:
+>>8            string          matroska        Matroska data
+
+
+#------------------------------------------------------------------------------
+# ocaml: file(1) magic for Objective Caml files.
+0      string  Caml1999        Objective caml
+>8     string  X               exec file
+>8     string  I               interface file (.cmi)
+>8     string  O               object file (.cmo)
+>8     string  A               library file (.cma)
+>8     string  Y               native object file (.cmx)
+>8     string  Z               native library file (.cmxa)
+>8     string  M               abstract syntax tree implementation file
+>8     string  N               abstract syntax tree interface file
+>9     string  >\0             (Version %3.3s).
+
+#------------------------------------------------------------------------------
+# vax:  file(1) magic for VAX executable/object and APL workspace
+#
+0      lelong          0101557         VAX single precision APL workspace
+0      lelong          0101556         VAX double precision APL workspace
+
+#
+# VAX a.out (32V, BSD)
+#
+0      lelong          0407            VAX executable
+>16    lelong          >0              not stripped
+
+0      lelong          0410            VAX pure executable
+>16    lelong          >0              not stripped
+
+0      lelong          0413            VAX demand paged pure executable
+>16    lelong          >0              not stripped
+
+0      lelong          0420            VAX demand paged (first page unmapped) pure executable
+>16    lelong          >0              not stripped
+
+#
+# VAX COFF
+#
+# The `versions' should be un-commented if they work for you.
+# (Was the problem just one of endianness?)
+#
+0      leshort         0570            VAX COFF executable
+>12    lelong          >0              not stripped
+>22    leshort         >0              - version %ld
+0      leshort         0575            VAX COFF pure executable
+>12    lelong          >0              not stripped
+>22    leshort         >0              - version %ld
+
+#------------------------------------------------------------------------------
+# clipper:  file(1) magic for Intergraph (formerly Fairchild) Clipper.
+#
+# XXX - what byte order does the Clipper use?
+#
+# XXX - what's the "!" stuff:
+#
+# >18  short           !074000,000000  C1 R1 
+# >18  short           !074000,004000  C2 R1
+# >18  short           !074000,010000  C3 R1
+# >18  short           !074000,074000  TEST
+#
+# I shall assume it's ANDing the field with the first value and
+# comparing it with the second, and rewrite it as:
+#
+# >18  short&074000    000000          C1 R1 
+# >18  short&074000    004000          C2 R1
+# >18  short&074000    010000          C3 R1
+# >18  short&074000    074000          TEST
+#
+# as SVR3.1's "file" doesn't support anything of the "!074000,000000"
+# sort, nor does SunOS 4.x, so either it's something Intergraph added
+# in CLIX, or something AT&T added in SVR3.2 or later, or something
+# somebody else thought was a good idea; it's not documented in the
+# man page for this version of "magic", nor does it appear to be
+# implemented (at least not after I blew off the bogus code to turn
+# old-style "&"s into new-style "&"s, which just didn't work at all).
+#
+0      short           0575            CLIPPER COFF executable (VAX #)
+>20    short           0407            (impure)
+>20    short           0410            (5.2 compatible)
+>20    short           0411            (pure)
+>20    short           0413            (demand paged)
+>20    short           0443            (target shared library)
+>12    long            >0              not stripped
+>22    short           >0              - version %ld
+0      short           0577            CLIPPER COFF executable
+>18    short&074000    000000          C1 R1 
+>18    short&074000    004000          C2 R1
+>18    short&074000    010000          C3 R1
+>18    short&074000    074000          TEST
+>20    short           0407            (impure)
+>20    short           0410            (pure)
+>20    short           0411            (separate I&D)
+>20    short           0413            (paged)
+>20    short           0443            (target shared library)
+>12    long            >0              not stripped
+>22    short           >0              - version %ld
+>48    long&01         01              alignment trap enabled
+>52    byte            1               -Ctnc
+>52    byte            2               -Ctsw
+>52    byte            3               -Ctpw
+>52    byte            4               -Ctcb
+>53    byte            1               -Cdnc
+>53    byte            2               -Cdsw
+>53    byte            3               -Cdpw
+>53    byte            4               -Cdcb
+>54    byte            1               -Csnc
+>54    byte            2               -Cssw
+>54    byte            3               -Cspw
+>54    byte            4               -Cscb
+4      string          pipe            CLIPPER instruction trace
+4      string          prof            CLIPPER instruction profile
+
+#------------------------------------------------------------------------------
+# frame:  file(1) magic for FrameMaker files
+#
+# This stuff came on a FrameMaker demo tape, most of which is
+# copyright, but this file is "published" as witness the following:
+#
+0      string          \<MakerFile     FrameMaker document
+>11    string          5.5              (5.5
+>11    string          5.0              (5.0
+>11    string          4.0              (4.0
+>11    string          3.0              (3.0
+>11    string          2.0              (2.0
+>11    string          1.0              (1.0
+>14    byte            x                 %c)
+0      string          \<MIFFile       FrameMaker MIF (ASCII) file
+>9     string          4.0              (4.0)
+>9     string          3.0              (3.0)
+>9     string          2.0              (2.0)
+>9     string          1.0              (1.x)
+0      string          \<MakerDictionary       FrameMaker Dictionary text
+>17    string          3.0              (3.0)
+>17    string          2.0              (2.0)
+>17    string          1.0              (1.x)
+0      string          \<MakerScreenFont       FrameMaker Font file
+>17    string          1.01             (%s)
+0      string          \<MML           FrameMaker MML file
+0      string          \<BookFile      FrameMaker Book file
+>10    string          3.0              (3.0
+>10    string          2.0              (2.0
+>10    string          1.0              (1.0
+>13    byte            x                 %c)
+# XXX - this book entry should be verified, if you find one, uncomment this
+#0     string          \<Book\         FrameMaker Book (ASCII) file
+#>6    string          3.0              (3.0)
+#>6    string          2.0              (2.0)
+#>6    string          1.0              (1.0)
+0      string          \<Maker Intermediate Print File FrameMaker IPL file
+
+#------------------------------------------------------------------------------
+# magic:  file(1) magic for magic files
+#
+0      string          #\ Magic        magic text file for file(1) cmd
+0      lelong          0xF11E041C      magic binary file for file(1) cmd
+>4     lelong          x               (version %d) (little endian)
+0      belong          0xF11E041C      magic binary file for file(1) cmd
+>4     belong          x               (version %d) (big endian)
+
+#------------------------------------------------------------------------------
+# sql:  file(1) magic for SQL files
+#
+# From: "Marty Leisner" <mleisner@eng.mc.xerox.com>
+# Recognize some MySQL files.
+#
+0      beshort                 0xfe01          MySQL table definition file
+>2     byte                    x               Version %d
+0      belong&0xffffff00       0xfefe0300      MySQL MISAM index file
+>3     byte                    x               Version %d
+0      belong&0xffffff00       0xfefe0700      MySQL MISAM compressed data file
+>3     byte                    x               Version %d
+0      belong&0xffffff00       0xfefe0500      MySQL ISAM index file
+>3     byte                    x               Version %d
+0      belong&0xffffff00       0xfefe0600      MySQL ISAM compressed data file
+>3     byte                    x               Version %d
+0      string                  \376bin         MySQL replication log
+
+#------------------------------------------------------------------------------
+# dact:  file(1) magic for DACT compressed files
+#
+0      long            0x444354C3      DACT compressed data
+>4     byte            >-1             (version %i.
+>5     byte            >-1             $BS%i.
+>6     byte            >-1             $BS%i)
+>7     long            >0              $BS, original size: %i bytes
+>15    long            >30             $BS, block size: %i bytes
+#
+# GNU nlsutils message catalog file format
+#
+0      string          \336\22\4\225   GNU message catalog (little endian),
+>4     lelong          x               revision %d,
+>8     lelong          x               %d messages
+0      string          \225\4\22\336   GNU message catalog (big endian),
+>4     belong          x               revision %d,
+>8     belong          x               %d messages
+# message catalogs, from Mitchum DSouza <m.dsouza@mrc-apu.cam.ac.uk>
+0      string          *nazgul*        Nazgul style compiled message catalog
+>8     lelong          >0              \b, version %ld
+# GnuPG
+# The format is very similar to pgp
+0      string          \001gpg                 GPG key trust database
+>4     byte            x                       version %d
+0       beshort         0x9901                  GPG key public ring
+# This magic is not particularly good, as the keyrings don't have true
+# magic. Nevertheless, it covers many keyrings.
+
+# Gnumeric spreadsheet
+# This entry is only semi-helpful, as Gnumeric compresses its files, so
+# they will ordinarily reported as "compressed", but at least -z helps
+39      string          =<gmr:Workbook           Gnumeric spreadsheet
+
+#------------------------------------------------------------------------------
+# ibm6000:  file(1) magic for RS/6000 and the RT PC.
+#
+0      beshort         0x01df          executable (RISC System/6000 V3.1) or obj module
+>12    belong          >0              not stripped
+# Breaks sun4 statically linked execs.
+#0      beshort                0x0103          executable (RT Version 2) or obj module
+#>2    byte            0x50            pure
+#>28   belong          >0              not stripped
+#>6    beshort         >0              - version %ld
+0      beshort         0x0104          shared library
+0      beshort         0x0105          ctab data
+0      beshort         0xfe04          structured file
+0      string          0xabcdef        AIX message catalog
+0      belong          0x000001f9      AIX compiled message catalog
+0      string          \<aiaff>        archive
+0      string          \<bigaf>        archive (big format)
+
+
+#------------------------------------------------------------------------------
+# os2:  file(1) magic for OS/2 files
+#
+
+# Provided 1998/08/22 by
+# David Mediavilla <davidme.news@REMOVEIFNOTSPAMusa.net>
+1      string  InternetShortcut        MS Windows 95 Internet shortcut text
+>24    string  >\                      (URL=<%s>)
+
+# OS/2 URL objects
+# Provided 1998/08/22 by
+# David Mediavilla <davidme.news@REMOVEIFNOTSPAMusa.net>
+#0     string  http:                   OS/2 URL object text
+#>5    string  >\                      (WWW) <http:%s>
+#0     string  mailto:                 OS/2 URL object text
+#>7    string  >\                      (email) <%s>
+#0     string  news:                   OS/2 URL object text
+#>5    string  >\                      (Usenet) <%s>
+#0     string  ftp:                    OS/2 URL object text
+#>4    string  >\                      (FTP) <ftp:%s>
+#0     string  file:                   OS/2 URL object text
+#>5    string  >\                      (Local file) <%s>
+
+# >>>>> OS/2 INF/HLP <<<<<  (source: Daniel Dissett ddissett@netcom.com)
+# Carl Hauser (chauser.parc@xerox.com) and 
+# Marcus Groeber (marcusg@ph-cip.uni-koeln.de)
+# list the following header format in inf02a.doc:
+#
+#  int16 ID;           // ID magic word (5348h = "HS")
+#  int8  unknown1;     // unknown purpose, could be third letter of ID
+#  int8  flags;        // probably a flag word...
+#                      //  bit 0: set if INF style file
+#                      //  bit 4: set if HLP style file
+#                      // patching this byte allows reading HLP files
+#                      // using the VIEW command, while help files 
+#                      // seem to work with INF settings here as well.
+#  int16 hdrsize;      // total size of header
+#  int16 unknown2;     // unknown purpose
+# 
+0   string  HSP\x01\x9b\x00 OS/2 INF
+>107 string >0                      (%s)
+0   string  HSP\x10\x9b\x00     OS/2 HLP
+>107 string >0                      (%s)
+
+# OS/2 INI (this is a guess)
+0  string   \xff\xff\xff\xff\x14\0\0\0  OS/2 INI
+#------------------------------------------------------------------------------
+#
+# RPM: file(1) magic for Red Hat Packages   Erik Troan (ewt@redhat.com)
+#
+0      beshort         0xedab
+>2     beshort         0xeedb          RPM
+>>4    byte            x               v%d
+>>6    beshort         0               bin
+>>6    beshort         1               src
+>>8    beshort         1               i386
+>>8    beshort         2               Alpha
+>>8    beshort         3               Sparc
+>>8    beshort         4               MIPS
+>>8    beshort         5               PowerPC
+>>8    beshort         6               68000
+>>8    beshort         7       SGI
+>>8    beshort         8               RS6000
+>>8    beshort         9               IA64
+>>8    beshort         10              Sparc64
+>>8    beshort         11              MIPSel
+>>8    beshort         12              ARM
+>>10   string          x               %s
+#-----------------------------------------------------------------------------
+# misctools:  file(1) magic for miscelanous UNIX tools.
+#
+0      string          %%!!            X-Post-It-Note text
+0      string          BEGIN:VCALENDAR         vCalendar calendar file
+
+#------------------------------------------------------------------------------
+# motorola:  file(1) magic for Motorola 68K and 88K binaries
+#
+# 68K
+#
+0      beshort         0520            mc68k COFF
+>18    beshort         ^00000020       object
+>18    beshort         &00000020       executable
+>12    belong          >0              not stripped
+>168   string          .lowmem         Apple toolbox
+>20    beshort         0407            (impure)
+>20    beshort         0410            (pure)
+>20    beshort         0413            (demand paged)
+>20    beshort         0421            (standalone)
+0      beshort         0521            mc68k executable (shared)
+>12    belong          >0              not stripped
+0      beshort         0522            mc68k executable (shared demand paged)
+>12    belong          >0              not stripped
+#
+# Motorola/UniSoft 68K Binary Compatibility Standard (BCS)
+#
+0      beshort         0554            68K BCS executable
+#
+# 88K
+#
+# Motorola/88Open BCS
+#
+0      beshort         0555            88K BCS executable
+#
+# Motorola S-Records, from Gerd Truschinski <gt@freebsd.first.gmd.de>
+0   string      S0          Motorola S-Record; binary data in text format
+
+# ATARI ST relocatable PRG
+#
+# from Oskar Schirmer <schirmer@scara.com> Feb 3, 2001
+# (according to Roland Waldi, Oct 21, 1987)
+# besides the magic 0x601a, the text segment size is checked to be
+# not larger than 1 MB (which is a lot on ST).
+# The additional 0x601b distinction I took from Doug Lee's magic.
+0      belong&0xFFFFFFF0       0x601A0000      Atari ST M68K contiguous executable
+>2     belong                  x               (txt=%ld,
+>6     belong                  x               dat=%ld,
+>10    belong                  x               bss=%ld,
+>14    belong                  x               sym=%ld)
+0      belong&0xFFFFFFF0       0x601B0000      Atari ST M68K non-contig executable
+>2     belong                  x               (txt=%ld,
+>6     belong                  x               dat=%ld,
+>10    belong                  x               bss=%ld,
+>14    belong                  x               sym=%ld)
+
+# Atari ST/TT... program format (sent by Wolfram Kleff <kleff@cs.uni-bonn.de>)
+0       beshort         0x601A          Atari 68xxx executable,
+>2      belong          x               text len %lu,
+>6      belong          x               data len %lu,
+>10     belong          x               BSS len %lu,
+>14     belong          x               symboltab len %lu,
+>18     belong          0
+>22     belong          &0x01           fastload flag,
+>22     belong          &0x02           may be loaded to alternate RAM,
+>22     belong          &0x04           malloc may be from alternate RAM,
+>22     belong          x               flags: 0x%lX,
+>26     beshort         0               no relocation tab
+>26     beshort         !0              + relocation tab
+>30     string          SFX             [Self-Extracting LZH SFX archive]
+>38     string          SFX             [Self-Extracting LZH SFX archive]
+>44     string          ZIP!            [Self-Extracting ZIP SFX archive]
+
+0       beshort         0x0064          Atari 68xxx CPX file
+>8      beshort         x               (version %04lx)
+#
+# Mach magic number info
+#
+0      long            0xefbe  OSF/Rose object
+# I386 magic number info
+#
+0      short           0565    i386 COFF object
+
+#------------------------------------------------------------------------------
+# perl:  file(1) magic for Larry Wall's perl language.
+#
+# The ``eval'' line recognizes an outrageously clever hack for USG systems.
+# Keith Waclena <keith@cerberus.uchicago.edu>
+# Send additions to <perl5-porters@perl.org>
+0      string/b        #!\ /bin/perl                   perl script text executable
+0      string          eval\ "exec\ /bin/perl          perl script text
+0      string/b        #!\ /usr/bin/perl               perl script text executable
+0      string          eval\ "exec\ /usr/bin/perl      perl script text
+0      string/b        #!\ /usr/local/bin/perl         perl script text
+0      string          eval\ "exec\ /usr/local/bin/perl        perl script text executable
+0      string          eval\ '(exit\ $?0)'\ &&\ eval\ 'exec    perl script text
+
+# a couple more, by me
+# XXX: christos matches
+#0     regex           package         Perl5 module source text (via regex)
+0      string          package         Perl5 module source text
+
+# Perl Storable data files.
+0      string  perl-store      perl Storable(v0.6) data
+>4     byte    >0      (net-order %d)
+>>4    byte    &01     (network-ordered)
+>>4    byte    =3      (major 1)
+>>4    byte    =2      (major 1)
+
+0      string  pst0    perl Storable(v0.7) data
+>4     byte    >0
+>>4    byte    &01     (network-ordered)
+>>4    byte    =5      (major 2)
+>>4    byte    =4      (major 2)
+>>5    byte    >0      (minor %d)
+
+#------------------------------------------------------------------------------
+# xenix:  file(1) magic for Microsoft Xenix
+#
+# "Middle model" stuff, and "Xenix 8086 relocatable or 80286 small
+# model" lifted from "magic.xenix", with comment "derived empirically;
+# treat as folklore until proven"
+#
+# "small model", "large model", "huge model" stuff lifted from XXX
+#
+# XXX - "x.out" collides with PDP-11 archives
+#
+0      string          core            core file (Xenix)
+0      byte            0x80            8086 relocatable (Microsoft)
+0      leshort         0xff65          x.out
+>2     string          __.SYMDEF        randomized
+>0     byte            x               archive
+0      leshort         0x206           Microsoft a.out
+>8     leshort         1               Middle model
+>0x1e  leshort         &0x10           overlay
+>0x1e  leshort         &0x2            separate
+>0x1e  leshort         &0x4            pure
+>0x1e  leshort         &0x800          segmented
+>0x1e  leshort         &0x400          standalone
+>0x1e  leshort         &0x8            fixed-stack
+>0x1c  byte            &0x80           byte-swapped
+>0x1c  byte            &0x40           word-swapped
+>0x10  lelong          >0              not-stripped
+>0x1e  leshort         ^0xc000         pre-SysV
+>0x1e  leshort         &0x4000         V2.3
+>0x1e  leshort         &0x8000         V3.0
+>0x1c  byte            &0x4            86
+>0x1c  byte            &0xb            186
+>0x1c  byte            &0x9            286
+>0x1c  byte            &0xa            386
+>0x1f  byte            <0x040          small model
+>0x1f  byte            =0x048          large model     
+>0x1f  byte            =0x049          huge model 
+>0x1e  leshort         &0x1            executable
+>0x1e  leshort         ^0x1            object file
+>0x1e  leshort         &0x40           Large Text
+>0x1e  leshort         &0x20           Large Data
+>0x1e  leshort         &0x120          Huge Objects Enabled
+>0x10  lelong          >0              not stripped
+
+0      leshort         0x140           old Microsoft 8086 x.out
+>0x3   byte            &0x4            separate
+>0x3   byte            &0x2            pure
+>0     byte            &0x1            executable
+>0     byte            ^0x1            relocatable
+>0x14  lelong          >0              not stripped
+
+0      lelong          0x206           b.out
+>0x1e  leshort         &0x10           overlay
+>0x1e  leshort         &0x2            separate
+>0x1e  leshort         &0x4            pure
+>0x1e  leshort         &0x800          segmented
+>0x1e  leshort         &0x400          standalone
+>0x1e  leshort         &0x1            executable
+>0x1e  leshort         ^0x1            object file
+>0x1e  leshort         &0x4000         V2.3
+>0x1e  leshort         &0x8000         V3.0
+>0x1c  byte            &0x4            86
+>0x1c  byte            &0xb            186
+>0x1c  byte            &0x9            286
+>0x1c  byte            &0x29           286
+>0x1c  byte            &0xa            386
+>0x1e  leshort         &0x4            Large Text
+>0x1e  leshort         &0x2            Large Data
+>0x1e  leshort         &0x102          Huge Objects Enabled
+
+0      leshort         0x580           XENIX 8086 relocatable or 80286 small model
+#------------------------------------------------------------------------------
+# file(1) magic for tgif(1) files
+# From Hendrik Scholz <hendrik@scholz.net>
+
+0   string  %TGIF\ 4   tgif version 4 object file
+
+
+#------------------------------------------------------------------------------
+# sc:  file(1) magic for "sc" spreadsheet
+#
+38     string          Spreadsheet     sc spreadsheet file
+
+#------------------------------------------------------------------------------
+# pyramid:  file(1) magic for Pyramids
+#
+# XXX - byte order?
+#
+0      long            0x50900107      Pyramid 90x family executable
+0      long            0x50900108      Pyramid 90x family pure executable
+>16    long            >0              not stripped
+0      long            0x5090010b      Pyramid 90x family demand paged pure executable
+>16    long            >0              not stripped
+
+#------------------------------------------------------------------------------
+# adventure: file(1) magic for Adventure game files
+#
+# from Allen Garvin <earendil@faeryland.tamu-commerce.edu>
+# Edited by Dave Chapeskie <dchapes@ddm.on.ca> Jun 28, 1998
+# Edited by Chris Chittleborough <cchittleborough@yahoo.com.au>, March 2002
+#
+# ALAN
+# I assume there are other, lower versions, but these are the only ones I
+# saw in the archive.
+0      beshort 0x0206  ALAN game data
+>2     byte    <10     version 2.6%d
+
+# Conflicts with too much other stuff!
+# Infocom
+# (Note: to avoid false matches Z-machine version 1 and 2 are not
+# recognized since only the oldest Zork I and II used them.  Similarly
+# there are 4 Infocom games that use version 4 that are not recognized.)
+#0     byte    3       Infocom game data (Z-machine 3,
+#>2    beshort <0x7fff Release %3d,
+#>26   beshort >0      Size %d*2
+#>18   string  >\0     Serial %.6s)
+#0     byte    5       Infocom game data (Z-machine 5,
+#>2    beshort <0x7fff Release %3d,
+#>26   beshort >0      Size %d*4
+#>18   string  >\0     Serial %.6s)
+#0     byte    6       Infocom game data (Z-machine 6,
+#>2    beshort <0x7fff Release %3d,
+#>26   beshort >0      Size %d*8
+#>18   string  >\0     Serial %.6s)
+#0     byte    8       Infocom game data (Z-machine 8,
+#>2    beshort <0x7fff Release %3d,
+#>26   beshort >0      Size %d*8
+#>18   string  >\0     Serial %.6s)
+
+# TADS (Text Adventure Development System)
+#  All files are machine-independent (games compile to byte-code) and are tagged
+#  with a version string of the form "V2.<digit>.<digit>\0" (but TADS 3 is
+#  on the way).
+#  Game files start with "TADS2 bin\n\r\032\0" then the compiler version.
+0      string  TADS2\ bin      TADS
+>9     belong  !0x0A0D1A00     game data, CORRUPTED
+>9     belong   0x0A0D1A00
+>>13   string  >\0             %s game data
+#  Resource files start with "TADS2 rsc\n\r\032\0" then the compiler version.
+0      string  TADS2\ rsc      TADS
+>9     belong  !0x0A0D1A00     resource data, CORRUPTED
+>9     belong   0x0A0D1A00
+>>13   string  >\0             %s resource data
+#  Some saved game files start with "TADS2 save/g\n\r\032\0", a little-endian
+#  2-byte length N, the N-char name of the game file *without* a NUL (darn!),
+# "TADS2 save\n\r\032\0" and the interpreter version. 
+0      string  TADS2\ save/g   TADS
+>12    belong  !0x0A0D1A00     saved game data, CORRUPTED
+>12    belong   0x0A0D1A00
+>>(16.s+32) string >\0         %s saved game data
+#  Other saved game files start with "TADS2 save\n\r\032\0" and the interpreter
+#  version.
+0      string  TADS2\ save     TADS
+>10    belong  !0x0A0D1A00     saved game data, CORRUPTED
+>10    belong   0x0A0D1A00
+>>14   string  >\0             %s saved game data
+
+#------------------------------------------------------------------------------
+# att3b:  file(1) magic for AT&T 3B machines
+#
+# The `versions' should be un-commented if they work for you.
+# (Was the problem just one of endianness?)
+#
+# 3B20
+#
+# The 3B20 conflicts with SCCS.
+#0     beshort         0550            3b20 COFF executable
+#>12   belong          >0              not stripped
+#>22   beshort         >0              - version %ld
+#0     beshort         0551            3b20 COFF executable (TV)
+#>12   belong          >0              not stripped
+#>22   beshort         >0              - version %ld
+#
+# WE32K
+#
+0      beshort         0560            WE32000 COFF
+>18    beshort         ^00000020       object
+>18    beshort         &00000020       executable
+>12    belong          >0              not stripped
+>18    beshort         ^00010000       N/A on 3b2/300 w/paging
+>18    beshort         &00020000       32100 required
+>18    beshort         &00040000       and MAU hardware required
+>20    beshort         0407            (impure)
+>20    beshort         0410            (pure)
+>20    beshort         0413            (demand paged)
+>20    beshort         0443            (target shared library)
+>22    beshort         >0              - version %ld
+0      beshort         0561            WE32000 COFF executable (TV)
+>12    belong          >0              not stripped
+#>18   beshort         &00020000       - 32100 required
+#>18   beshort         &00040000       and MAU hardware required
+#>22   beshort         >0              - version %ld
+#
+# core file for 3b2 
+0      string          \000\004\036\212\200    3b2 core file
+>364   string          >\0             of '%s'
+
+#------------------------------------------------------------------------------
+# flash:       file(1) magic for Macromedia Flash file format
+#
+# See
+#
+#      http://www.macromedia.com/software/flash/open/
+#
+0      string          FWS             Macromedia Flash data,
+>3     byte            x               version %d
+0      string          CWS             Macromedia Flash data (compressed),
+>3     byte            x               version %d
+#
+# From Dave Wilson
+0      string AGD4\xbe\xb8\xbb\xcb\x00 Macromedia Freehand 9 Document
+
+#------------------------------------------------------------------------------
+# karma:  file(1) magic for Karma data files
+#
+# From <rgooch@atnf.csiro.au>
+
+0      string          KarmaRHD Version        Karma Data Structure Version
+>16    belong          x               %lu
+#------------------------------------------------------------------------------
+# octave binary data file(1) magic, from Dirk Eddelbuettel <edd@debian.org>
+0      string          Octave-1-L      Octave binary data (little endian)
+0      string          Octave-1-B      Octave binary data (big endian)
+
+#------------------------------------------------------------------------------
+#
+# Parix COFF executables
+# From: Ignatios Souvatzis <ignatios@cs.uni-bonn.de>
+#
+0      beshort&0xfff   0xACE   PARIX
+>0     byte&0xf0       0x80    T800
+>0     byte&0xf0       0x90    T9000
+>19    byte&0x02       0x02    executable
+>19    byte&0x02       0x00    object
+>19    byte&0x0c       0x00    not stripped
+
+#------------------------------------------------------------------------------
+# plan9:  file(1) magic for AT&T Bell Labs' Plan 9 executables
+# From: "Stefan A. Haubenthal" <polluks@web.de>
+#
+0      belong          0x00000107      Plan 9 executable, Motorola 68k
+0      belong          0x000001EB      Plan 9 executable, Intel 386
+0      belong          0x00000247      Plan 9 executable, Intel 960
+0      belong          0x000002AB      Plan 9 executable, SPARC
+0      belong          0x00000407      Plan 9 executable, MIPS R3000
+0      belong          0x0000048B      Plan 9 executable, AT&T DSP 3210
+0      belong          0x00000517      Plan 9 executable, MIPS R4000 BE
+0      belong          0x000005AB      Plan 9 executable, AMD 29000
+0      belong          0x00000647      Plan 9 executable, ARM 7-something
+0      belong          0x000006EB      Plan 9 executable, PowerPC
+0      belong          0x00000797      Plan 9 executable, MIPS R4000 LE
+0      belong          0x0000084B      Plan 9 executable, DEC Alpha
+
+#------------------------------------------------------------------------------
+# troff:  file(1) magic for *roff
+#
+# updated by Daniel Quinlan (quinlan@yggdrasil.com)
+
+# troff input
+0      string          .\\"            troff or preprocessor input text
+0      string          '\\"            troff or preprocessor input text
+0      string          '.\\"           troff or preprocessor input text
+0      string          \\"             troff or preprocessor input text
+0      string          '''             troff or preprocessor input text
+
+# ditroff intermediate output text
+0      string          x\ T            ditroff output text
+>4     string          cat             for the C/A/T phototypesetter
+>4     string          ps              for PostScript
+>4     string          dvi             for DVI
+>4     string          ascii           for ASCII
+>4     string          lj4             for LaserJet 4
+>4     string          latin1          for ISO 8859-1 (Latin 1)
+>4     string          X75             for xditview at 75dpi
+>>7    string          -12             (12pt)
+>4     string          X100            for xditview at 100dpi
+>>8    string          -12             (12pt)
+
+# output data formats
+0      string          \100\357        very old (C/A/T) troff output data
+
+#------------------------------------------------------------------------------
+# spectrum:  file(1) magic for Spectrum emulator files.
+#
+# John Elliott <jce@seasip.demon.co.uk>
+
+#
+# Spectrum +3DOS header
+#
+0       string          PLUS3DOS\032    Spectrum +3 data
+>15     byte            0               - BASIC program
+>15     byte            1               - number array
+>15     byte            2               - character array
+>15     byte            3               - memory block
+>>16    belong          0x001B0040      (screen)
+>15     byte            4               - Tasword document
+>15     string          TAPEFILE        - ZXT tapefile
+#
+# Tape file. This assumes the .TAP starts with a Spectrum-format header,
+# which nearly all will.
+#
+0       string          \023\000\000    Spectrum .TAP data
+>4      string          x               "%-10.10s"
+>3      byte            0               - BASIC program
+>3      byte            1               - number array
+>3      byte            2               - character array
+>3      byte            3               - memory block
+>>14    belong          0x001B0040      (screen)
+
+# The following three blocks are from pak21-spectrum@srcf.ucam.org
+# TZX tape images
+0      string          ZXTape!\x1a     Spectrum .TZX data
+>8     byte            x               version %d
+>9     byte            x               .%d
+
+# RZX input recording files
+0      string          RZX!            Spectrum .RZX data
+>4     byte            x               version %d
+>5     byte            x               .%d
+
+# And three sorts of disk image
+0      string          MV\ -\ CPCEMU\ Disk-Fil Amstrad/Spectrum .DSK data
+0      string          MV\ -\ CPC\ format\ Dis Amstrad/Spectrum DU54 .DSK data
+0      string          EXTENDED\ CPC\ DSK\ Fil Amstrad/Spectrum Extended .DSK data
+
+#------------------------------------------------------------------------------
+# softquad:  file(1) magic for SoftQuad Publishing Software
+#
+# Author/Editor and RulesBuilder
+#
+# XXX - byte order?
+#
+0      string          \<!SQ\ DTD>     Compiled SGML rules file
+>9     string          >\0              Type %s
+0      string          \<!SQ\ A/E>     A/E SGML Document binary
+>9     string          >\0              Type %s
+0      string          \<!SQ\ STS>     A/E SGML binary styles file
+>9     string          >\0              Type %s
+0      short           0xc0de          Compiled PSI (v1) data
+0      short           0xc0da          Compiled PSI (v2) data
+>3     string          >\0             (%s)
+# Binary sqtroff font/desc files...
+0      short           0125252         SoftQuad DESC or font file binary
+>2     short           >0              - version %d
+# Bitmaps...
+0      string          SQ\ BITMAP1     SoftQuad Raster Format text
+#0     string          SQ\ BITMAP2     SoftQuad Raster Format data
+# sqtroff intermediate language (replacement for ditroff int. lang.)
+0      string          X\              SoftQuad troff Context intermediate
+>2     string          495             for AT&T 495 laser printer
+>2     string          hp              for Hewlett-Packard LaserJet
+>2     string          impr            for IMAGEN imPRESS
+>2     string          ps              for PostScript
+
+#------------------------------------------------------------------------------
+# Dyadic: file(1) magic for Dyalog APL.
+#
+0      byte    0xaa
+>1     byte    <4              Dyalog APL
+>>1    byte    0x00            incomplete workspace
+>>1    byte    0x01            component file
+>>1    byte    0x02            external variable
+>>1    byte    0x03            workspace
+>>2    byte    x               version %d
+>>3    byte    x               .%d
+
+#------------------------------------------------------------------------------
+# palm:  file(1) magic for PalmOS {.prc,.pdb}: applications, docfiles, and hacks
+#
+# Brian Lalor <blalor@hcirisc.cs.binghamton.edu>
+
+# appl
+60      belong                  0x6170706c      PalmOS application
+>0      string                  >\0             "%s"
+# TEXt
+60      belong                  0x54455874      AportisDoc file
+>0      string                  >\0             "%s"
+# HACK
+60      belong                  0x4841434b      HackMaster hack
+>0      string                  >\0             "%s"
+
+# Variety of PalmOS document types
+# Michael-John Turner <mj@debian.org>
+# Thanks to Hasan Umit Ezerce <humit@tr-net.net.tr> for his DocType
+60     string                  BVokBDIC        BDicty PalmOS document
+>0     string                  >\0             "%s"
+60     string                  DB99DBOS        DB PalmOS document
+>0     string                  >\0             "%s"
+60     string                  vIMGView        FireViewer/ImageViewer PalmOS document
+>0     string                  >\0             "%s"
+60     string                  PmDBPmDB        HanDBase PalmOS document
+>0     string                  >\0             "%s"
+60     string                  InfoINDB        InfoView PalmOS document
+>0     string                  >\0             "%s"
+60     string                  ToGoToGo        iSilo PalmOS document
+>0     string                  >\0             "%s"
+60     string                  JfDbJBas        JFile PalmOS document
+>0     string                  >\0             "%s"
+60     string                  JfDbJFil        JFile Pro PalmOS document
+>0     string                  >\0             "%s"
+60     string                  DATALSdb        List PalmOS document
+>0     string                  >\0             "%s"
+60     string                  Mdb1Mdb1        MobileDB PalmOS document
+>0     string                  >\0             "%s"
+60     string                  PNRdPPrs        PeanutPress PalmOS document
+>0     string                  >\0             "%s"
+60     string                  DataPlkr        Plucker PalmOS document
+>0     string                  >\0             "%s"
+60     string                  DataSprd        QuickSheet PalmOS document
+>0     string                  >\0             "%s"
+60     string                  SM01SMem        SuperMemo PalmOS document
+>0     string                  >\0             "%s"
+60     string                  DataTlPt        TealDoc PalmOS document
+>0     string                  >\0             "%s"
+60     string                  InfoTlIf        TealInfo PalmOS document
+>0     string                  >\0             "%s"
+60     string                  DataTlMl        TealMeal PalmOS document
+>0     string                  >\0             "%s"
+60     string                  DataTlPt        TealPaint PalmOS document
+>0     string                  >\0             "%s"
+60     string                  dataTDBP        ThinkDB PalmOS document
+>0     string                  >\0             "%s"
+60     string                  TdatTide        Tides PalmOS document
+>0     string                  >\0             "%s"
+60     string                  ToRaTRPW        TomeRaider PalmOS document
+>0     string                  >\0             "%s"
+
+# A GutenPalm zTXT etext for use on Palm Pilots (http://gutenpalm.sf.net)
+# For version 1.xx zTXTs, outputs version and numbers of bookmarks and
+#   annotations.
+# For other versions, just outputs version.
+#
+60             string          zTXT            A GutenPalm zTXT e-book
+>0             string          >\0             "%s"
+>(0x4E.L)      byte            0
+>>(0x4E.L+1)   byte            x               (v0.%02d)
+>(0x4E.L)      byte            1
+>>(0x4E.L+1)   byte            x               (v1.%02d)
+>>>(0x4E.L+10) beshort         >0
+>>>>(0x4E.L+10) beshort                <2              - 1 bookmark
+>>>>(0x4E.L+10) beshort                >1              - %d bookmarks
+>>>(0x4E.L+14) beshort         >0
+>>>>(0x4E.L+14) beshort                <2              - 1 annotation
+>>>>(0x4E.L+14) beshort                >1              - %d annotations
+>(0x4E.L)      byte            >1              (v%d.
+>>(0x4E.L+1)   byte            x               %02d)
+
+# Palm OS .prc file types
+60             string          libr            Palm OS dynamic library data
+>0             string          >\0             "%s"
+60             string          ptch            Palm OS operating system patch data
+>0             string          >\0             "%s"
+
+# Mobipocket (www.mobipocket.com), donated by Carl Witty
+60     string                  BOOKMOBI        Mobipocket E-book
+>0     string                  >\0             "%s"
+#------------------------------------------------------------------------------
+# pdf:  file(1) magic for Portable Document Format
+#
+
+0      string          %PDF-           PDF document
+>5     byte            x               \b, version %c
+>7     byte            x               \b.%c
+
+#------------------------------------------------------------------------------
+# vorbis:  file(1) magic for Ogg/Vorbis files
+#
+# From Felix von Leitner <leitner@fefe.de>
+# Extended by Beni Cherniavsky <cben@crosswinds.net>
+# Further extended by Greg Wooledge <greg@wooledge.org>
+#
+# Most (everything but the number of channels and bitrate) is commented
+# out with `##' as it's not interesting to the average user.  The most
+# probable things advanced users would want to uncomment are probably
+# the number of comments and the encoder version.
+#
+# --- Ogg Framing ---
+0              string          OggS            Ogg data
+>4             byte            !0              UNKNOWN REVISION %u
+##>4           byte            0               revision 0
+>4             byte            0
+##>>14         lelong          x               (Serial %lX)
+# non-Vorbis content: FLAC (Free Lossless Audio Codec, http://flac.sourceforge.net)
+>>28           string          fLaC            \b, FLAC audio
+# non-Vorbis content: Theora
+>>28           string          \x80theora      \b, Theora video
+# non-Vorbis content: Speex
+>>28           string          Speex\ \ \      \b, Speex audio
+# non-Vorbis content: OGM
+>>28           string          \x01video\0\0\0 \b, OGM video
+>>>37          string/c        div3            (DivX 3)
+>>>37          string/c        divx            (DivX 4)
+>>>37          string/c        dx50            (DivX 5)
+>>>37          string/c        xvid            (XviD)
+# --- First vorbis packet - general header ---
+>>28           string          \x01vorbis      \b, Vorbis audio,
+>>>35          lelong          !0              UNKNOWN VERSION %lu,
+##>>>35                lelong          0               version 0,
+>>>35          lelong          0
+>>>>39         ubyte           1               mono,
+>>>>39         ubyte           2               stereo,
+>>>>39         ubyte           >2              %u channels,
+>>>>40         lelong          x               %lu Hz
+# Minimal, nominal and maximal bitrates specified when encoding
+>>>>48         string          <\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff       \b,
+# The above tests if at least one of these is specified:
+>>>>>52                lelong          !-1
+# Vorbis RC2 has a bug which puts -1000 in the min/max bitrate fields
+# instead of -1.
+# Vorbis 1.0 uses 0 instead of -1.
+>>>>>>52       lelong          !0
+>>>>>>>52      lelong          !-1000
+>>>>>>>>52     lelong          x               <%lu
+>>>>>48                lelong          !-1
+>>>>>>48       lelong          x               ~%lu
+>>>>>44                lelong          !-1
+>>>>>>44       lelong          !-1000
+>>>>>>>44      lelong          !0
+>>>>>>>>44     lelong          x               >%lu
+>>>>>48                string          <\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff       bps
+# -- Second vorbis header packet - the comments
+# A kludge to read the vendor string.  It's a counted string, not a
+# zero-terminated one, so file(1) can't read it in a generic way.
+# libVorbis is the only one existing currently, so I detect specifically
+# it.  The interesting value is the cvs date (8 digits decimal).
+# Post-RC1 Ogg files have the second header packet (and thus the version)
+# in a different place, so we must use an indirect offset.
+>>>(84.b+85)           string          \x03vorbis
+>>>>(84.b+96)          string/c        Xiphophorus\ libVorbis\ I       \b, created by: Xiphophorus libVorbis I
+>>>>>(84.b+120)                string          >00000000       
+# Map to beta version numbers:
+>>>>>>(84.b+120)       string          <20000508       (<beta1, prepublic)
+>>>>>>(84.b+120)       string          20000508        (1.0 beta 1 or beta 2)
+>>>>>>(84.b+120)       string          >20000508
+>>>>>>>(84.b+120)      string          <20001031       (beta2-3)
+>>>>>>(84.b+120)       string          20001031        (1.0 beta 3)
+>>>>>>(84.b+120)       string          >20001031
+>>>>>>>(84.b+120)      string          <20010225       (beta3-4)
+>>>>>>(84.b+120)       string          20010225        (1.0 beta 4)
+>>>>>>(84.b+120)       string          >20010225
+>>>>>>>(84.b+120)      string          <20010615       (beta4-RC1)
+>>>>>>(84.b+120)       string          20010615        (1.0 RC1)
+>>>>>>(84.b+120)       string          20010813        (1.0 RC2)
+>>>>>>(84.b+120)       string          20010816        (RC2 - Garf tuned v1)
+>>>>>>(84.b+120)       string          20011014        (RC2 - Garf tuned v2)
+>>>>>>(84.b+120)       string          20011217        (1.0 RC3)
+>>>>>>(84.b+120)       string          20011231        (1.0 RC3)
+# Some pre-1.0 CVS snapshots still had "Xiphphorus"...
+>>>>>>(84.b+120)       string          >20011231       (pre-1.0 CVS)
+# For the 1.0 release, Xiphophorus is replaced by Xiph.Org
+>>>>(84.b+96)          string/c        Xiph.Org\ libVorbis\ I  \b, created by: Xiph.Org libVorbis I
+>>>>>(84.b+117)                string          >00000000       
+>>>>>>(84.b+117)       string          <20020717       (pre-1.0 CVS)
+>>>>>>(84.b+117)       string          20020717        (1.0)
+>>>>>>(84.b+117)       string          20030909        (1.0.1)
+>>>>>>(84.b+117)       string          20040629        (1.1.0 RC1)
+
+#-----------------------------------------------
+# GNU Smalltalk image, starting at version 1.6.2
+# From: catull_us@yahoo.com
+#
+0      string  GSTIm\0\0       GNU SmallTalk
+# little-endian
+>7     byte&1  =0              LE image version
+>>10   byte    x               %d.
+>>9    byte    x               \b%d.
+>>8    byte    x               \b%d
+#>>12  lelong  x               , data: %ld
+#>>16  lelong  x               , table: %ld
+#>>20  lelong  x               , memory: %ld
+# big-endian
+>7     byte&1  =1              BE image version
+>>8    byte    x               %d.
+>>9    byte    x               \b%d.
+>>10   byte    x               \b%d
+#>>12  belong  x               , data: %ld
+#>>16  belong  x               , table: %ld
+#>>20  belong  x               , memory: %ld
+
+
+
+#------------------------------------------------------------------------------
+# sgml:  file(1) magic for Standard Generalized Markup Language
+# HyperText Markup Language (HTML) is an SGML document type,
+# from Daniel Quinlan (quinlan@yggdrasil.com)
+# adapted to string extenstions by Anthon van der Neut <anthon@mnt.org)
+0   string/cB  \<!DOCTYPE\ html        HTML document text
+0   string/cb  \<head                  HTML document text
+0   string/cb  \<title                 HTML document text
+0   string/cb  \<html                  HTML document text
+
+# Extensible markup language (XML), a subset of SGML
+# from Marc Prud'hommeaux (marc@apocalypse.org)
+0      string/cb       \<?xml                  XML document text
+0      string          \<?xml\ version "       XML
+0      string          \<?xml\ version="       XML
+>15    string          >\0                     %.3s document text
+>>23   string          \<xsl:stylesheet        (XSL stylesheet)
+>>24   string          \<xsl:stylesheet        (XSL stylesheet)
+0      string/b        \<?xml                  XML document text
+0      string/cb       \<?xml                  broken XML document text
+
+
+# SGML, mostly from rph@sq
+0   string/cb  \<!doctype              exported SGML document text
+0   string/cb  \<!subdoc               exported SGML subdocument text
+0   string/cb  \<!--                   exported SGML document text
+
+# Web browser cookie files
+# (Mozilla, Galeon, Netscape 4, Konqueror..)
+# Ulf Harnhammar <ulfh@update.uu.se>
+0      string  #\ HTTP\ Cookie\ File   Web browser cookie text
+0      string  #\ Netscape\ HTTP\ Cookie\ File Netscape cookie text
+0      string  #\ KDE\ Cookie\ File    Konqueror cookie text
+
+#------------------------------------------------------------------------------
+# msvc:  file(1) magic for msvc
+# "H. Nanosecond" <aldomel@ix.netcom.com>
+# Microsoft visual C
+# 
+# I have version 1.0
+
+# .aps
+0      string  HWB\000\377\001\000\000\000     Microsoft Visual C .APS file
+
+# .ide
+#too long 0    string  \102\157\162\154\141\156\144\040\103\053\053\040\120\162\157\152\145\143\164\040\106\151\154\145\012\000\032\000\002\000\262\000\272\276\372\316        MSVC .ide
+0      string  \102\157\162\154\141\156\144\040\103\053\053\040\120\162\157    MSVC .ide
+
+# .res
+0      string  \000\000\000\000\040\000\000\000\377    MSVC .res
+0      string  \377\003\000\377\001\000\020\020\350    MSVC .res
+0      string  \377\003\000\377\001\000\060\020\350    MSVC .res
+
+#.lib
+0      string  \360\015\000\000        Microsoft Visual C library
+0      string  \360\075\000\000        Microsoft Visual C library
+0      string  \360\175\000\000        Microsoft Visual C library
+
+#.pch
+0      string  DTJPCH0\000\022\103\006\200     Microsoft Visual C .pch
+
+# .pdb
+# too long 0   string  Microsoft\ C/C++\ program\ database\ 
+0      string  Microsoft\ C/C++\       MSVC program database
+>18    string  program\ database\      
+>33    string  >\0     ver %s
+
+#.sbr
+0      string  \000\002\000\007\000    MSVC .sbr
+>5     string  >\0     %s
+
+#.bsc
+0      string  \002\000\002\001        MSVC .bsc
+
+#.wsp
+0      string  1.00\ .0000.0000\000\003        MSVC .wsp version 1.0000.0000
+# these seem to start with the version and contain menus
+
+#------------------------------------------------------------------------------
+# news:  file(1) magic for SunOS NeWS fonts (not "news" as in "netnews")
+#
+0      string          StartFontMetrics        ASCII font metrics
+0      string          StartFont       ASCII font bits
+0      belong          0x137A2944      NeWS bitmap font
+0      belong          0x137A2947      NeWS font family
+0      belong          0x137A2950      scalable OpenFont binary
+0      belong          0x137A2951      encrypted scalable OpenFont binary
+8      belong          0x137A2B45      X11/NeWS bitmap font
+8      belong          0x137A2B48      X11/NeWS font family
+
+# -----------------------------------------------------------
+# VMware specific files (deducted from version 1.1 and log file entries)
+# Anthon van der Neut (anthon@mnt.org)
+0      belong  0x4d52564e      VMware nvram 
+0      belong  0x434f5744      VMware
+>4     byte    3               virtual disk 
+>>32   lelong  x               (%d/
+>>36   lelong  x               \b%d/
+>>40   lelong  x               \b%d)
+>4     byte    2               undoable disk
+>>32   string  >\0             (%s)
+
+#------------------------------------------------------------------------------
+# diamond:  file(1) magic for Diamond system
+#
+# ... diamond is a multi-media mail and electronic conferencing system....
+#
+# XXX - I think it was either renamed Slate, or replaced by Slate....
+#
+#      The full deal is too long...
+#0     string  <list>\n<protocol\ bbn-multimedia-format>       Diamond Multimedia Document
+0      string  =<list>\n<protocol\ bbn-m       Diamond Multimedia Document
+
+#------------------------------------------------------------------------------
+# dump:  file(1) magic for dump file format--for new and old dump filesystems
+#
+# We specify both byte orders in order to recognize byte-swapped dumps.
+#
+24     belong  60012           new-fs dump file (big endian),
+>4     bedate  x               Previous dump %s,
+>8     bedate  x               This dump %s,
+>12    belong  >0              Volume %ld,
+>692   belong  0               Level zero, type:
+>692   belong  >0              Level %d, type:
+>0     belong  1               tape header,
+>0     belong  2               beginning of file record,
+>0     belong  3               map of inodes on tape,
+>0     belong  4               continuation of file record,
+>0     belong  5               end of volume,
+>0     belong  6               map of inodes deleted,
+>0     belong  7               end of medium (for floppy),
+>676   string  >\0             Label %s,
+>696   string  >\0             Filesystem %s,
+>760   string  >\0             Device %s,
+>824   string  >\0             Host %s,
+>888   belong  >0              Flags %x
+
+24     belong  60011           old-fs dump file (big endian),
+#>4    bedate  x               Previous dump %s,
+#>8    bedate  x               This dump %s,
+>12    belong  >0              Volume %ld,
+>692   belong  0               Level zero, type:
+>692   belong  >0              Level %d, type:
+>0     belong  1               tape header,
+>0     belong  2               beginning of file record,
+>0     belong  3               map of inodes on tape,
+>0     belong  4               continuation of file record,
+>0     belong  5               end of volume,
+>0     belong  6               map of inodes deleted,
+>0     belong  7               end of medium (for floppy),
+>676   string  >\0             Label %s,
+>696   string  >\0             Filesystem %s,
+>760   string  >\0             Device %s,
+>824   string  >\0             Host %s,
+>888   belong  >0              Flags %x
+
+24     lelong  60012           new-fs dump file (little endian),
+>4     ledate  x               This dump %s,
+>8     ledate  x               Previous dump %s,
+>12    lelong  >0              Volume %ld,
+>692   lelong  0               Level zero, type:
+>692   lelong  >0              Level %d, type:
+>0     lelong  1               tape header,
+>0     lelong  2               beginning of file record,
+>0     lelong  3               map of inodes on tape,
+>0     lelong  4               continuation of file record,
+>0     lelong  5               end of volume,
+>0     lelong  6               map of inodes deleted,
+>0     lelong  7               end of medium (for floppy),
+>676   string  >\0             Label %s,
+>696   string  >\0             Filesystem %s,
+>760   string  >\0             Device %s,
+>824   string  >\0             Host %s,
+>888   lelong  >0              Flags %x
+
+24     lelong  60011           old-fs dump file (little endian),
+#>4    ledate  x               Previous dump %s,
+#>8    ledate  x               This dump %s,
+>12    lelong  >0              Volume %ld,
+>692   lelong  0               Level zero, type:
+>692   lelong  >0              Level %d, type:
+>0     lelong  1               tape header,
+>0     lelong  2               beginning of file record,
+>0     lelong  3               map of inodes on tape,
+>0     lelong  4               continuation of file record,
+>0     lelong  5               end of volume,
+>0     lelong  6               map of inodes deleted,
+>0     lelong  7               end of medium (for floppy),
+>676   string  >\0             Label %s,
+>696   string  >\0             Filesystem %s,
+>760   string  >\0             Device %s,
+>824   string  >\0             Host %s,
+>888   lelong  >0              Flags %x
+
+#------------------------------------------------------------------------------
+# linux:  file(1) magic for Linux files
+#
+# Values for Linux/i386 binaries, from Daniel Quinlan <quinlan@yggdrasil.com>
+# The following basic Linux magic is useful for reference, but using
+# "long" magic is a better practice in order to avoid collisions.
+#
+# 2    leshort         100             Linux/i386
+# >0   leshort         0407            impure executable (OMAGIC)
+# >0   leshort         0410            pure executable (NMAGIC)
+# >0   leshort         0413            demand-paged executable (ZMAGIC)
+# >0   leshort         0314            demand-paged executable (QMAGIC)
+#
+0      lelong          0x00640107      Linux/i386 impure executable (OMAGIC)
+>16    lelong          0               \b, stripped
+0      lelong          0x00640108      Linux/i386 pure executable (NMAGIC)
+>16    lelong          0               \b, stripped
+0      lelong          0x0064010b      Linux/i386 demand-paged executable (ZMAGIC)
+>16    lelong          0               \b, stripped
+0      lelong          0x006400cc      Linux/i386 demand-paged executable (QMAGIC)
+>16    lelong          0               \b, stripped
+#
+0      string          \007\001\000    Linux/i386 object file
+>20    lelong          >0x1020         \b, DLL library
+# Linux-8086 stuff:
+0      string          \01\03\020\04   Linux-8086 impure executable
+>28    long            !0              not stripped
+0      string          \01\03\040\04   Linux-8086 executable
+>28    long            !0              not stripped
+#
+0      string          \243\206\001\0  Linux-8086 object file
+#
+0      string          \01\03\020\20   Minix-386 impure executable
+>28    long            !0              not stripped
+0      string          \01\03\040\20   Minix-386 executable
+>28    long            !0              not stripped
+# core dump file, from Bill Reynolds <bill@goshawk.lanl.gov>
+216    lelong          0421            Linux/i386 core file
+>220   string          >\0             of '%s'
+>200   lelong          >0              (signal %d)
+#
+# LILO boot/chain loaders, from Daniel Quinlan <quinlan@yggdrasil.com>
+# this can be overridden by the DOS executable (COM) entry
+2      string          LILO            Linux/i386 LILO boot/chain loader
+#
+# PSF fonts, from H. Peter Anvin <hpa@yggdrasil.com>
+0      leshort         0x0436          Linux/i386 PC Screen Font data,
+>2     byte            0               256 characters, no directory,
+>2     byte            1               512 characters, no directory,
+>2     byte            2               256 characters, Unicode directory,
+>2     byte            3               512 characters, Unicode directory,
+>3     byte            >0              8x%d
+# Linux swap file, from Daniel Quinlan <quinlan@yggdrasil.com>
+4086   string          SWAP-SPACE      Linux/i386 swap file
+# according to man page of mkswap (8) March 1999
+4086   string          SWAPSPACE2      Linux/i386 swap file (new style)
+>0x400 long            x               %d (4K pages)
+>0x404 long            x               size %d pages
+# ECOFF magic for OSF/1 and Linux (only tested under Linux though)
+#
+#      from Erik Troan (ewt@redhat.com) examining od dumps, so this
+#              could be wrong
+#      updated by David Mosberger (davidm@azstarnet.com) based on
+#      GNU BFD and MIPS info found below.
+#
+0      leshort         0x0183          ECOFF alpha
+>24    leshort         0407            executable
+>24    leshort         0410            pure
+>24    leshort         0413            demand paged
+>8     long            >0              not stripped
+>8     long            0               stripped
+>23    leshort         >0              - version %ld.
+#
+# Linux kernel boot images, from Albert Cahalan <acahalan@cs.uml.edu>
+# and others such as Axel Kohlmeyer <akohlmey@rincewind.chemie.uni-ulm.de>
+# and Nicolás Lichtmaier <nick@debian.org>
+# All known start with: b8 c0 07 8e d8 b8 00 90 8e c0 b9 00 01 29 f6 29
+# Linux kernel boot images (i386 arch) (Wolfram Kleff)
+514    string          HdrS            Linux kernel
+>510   leshort         0xAA55          x86 boot executable
+>>518  leshort         >=3D0x200
+>>529  byte            0               zImage,
+>>>529 byte            1               bzImage,
+>>>(526.s+0x200) string        >\0             version %s,
+>>498  leshort         1               RO-rootFS,
+>>498  leshort         0               RW-rootFS,
+>>508  leshort         >0              root_dev 0x%X,
+>>502  leshort         >0              swap_dev 0x%X,
+>>504  leshort         >0              RAMdisksize %u KB,
+>>506  leshort         0xFFFF          Normal VGA
+>>506  leshort         0xFFFE          Extended VGA
+>>506  leshort         0xFFFD          Prompt for Videomode
+>>506  leshort         >0              Video mode %d
+# This also matches new kernels, which were caught above by "HdrS".
+0              belong  0xb8c0078e      Linux kernel
+>0x1e3         string  Loading         version 1.3.79 or older
+>0x1e9         string  Loading         from prehistoric times
+
+# System.map files - Nicolás Lichtmaier <nick@debian.org>
+8      string  \ A\ _text      Linux kernel symbol map text
+
+# LSM entries - Nicolás Lichtmaier <nick@debian.org>
+0      string  Begin3  Linux Software Map entry text
+0      string  Begin4  Linux Software Map entry text (new format)
+
+# From Matt Zimmerman
+0       belong  0x4f4f4f4d      User-mode Linux COW file
+>4      belong  x               \b, version %d
+>8      string  >\0             \b, backing file %s
+
+############################################################################
+# Linux kernel versions
+
+0              string          \xb8\xc0\x07\x8e\xd8\xb8\x00\x90        Linux
+>497           leshort         0               x86 boot sector
+>>514          belong          0x8e    of a kernel from the dawn of time!
+>>514          belong          0x908ed8b4      version 0.99-1.1.42
+>>514          belong          0x908ed8b8      for memtest86
+
+>497           leshort         !0              x86 kernel
+>>504          leshort         >0              RAMdisksize=%u KB
+>>502          leshort         >0              swap=0x%X
+>>508          leshort         >0              root=0x%X
+>>>498         leshort         1               \b-ro
+>>>498         leshort         0               \b-rw
+>>506          leshort         0xFFFF          vga=normal
+>>506          leshort         0xFFFE          vga=extended
+>>506          leshort         0xFFFD          vga=ask
+>>506          leshort         >0              vga=%d
+>>514          belong          0x908ed881      version 1.1.43-1.1.45
+>>514          belong          0x15b281cd
+>>>0xa8e       belong          0x55AA5a5a      version 1.1.46-1.2.13,1.3.0
+>>>0xa99       belong          0x55AA5a5a      version 1.3.1,2
+>>>0xaa3       belong          0x55AA5a5a      version 1.3.3-1.3.30
+>>>0xaa6       belong          0x55AA5a5a      version 1.3.31-1.3.41
+>>>0xb2b       belong          0x55AA5a5a      version 1.3.42-1.3.45
+>>>0xaf7       belong          0x55AA5a5a      version 1.3.46-1.3.72
+>>514          string          HdrS
+>>>518         leshort         >0x1FF
+>>>>529                byte            0               \b, zImage
+>>>>529                byte            1               \b, bzImage
+>>>>(526.s+0x200) string       >\0             \b, version %s
+
+# Linux boot sector thefts.
+0              belong          0xb8c0078e      Linux
+>0x1e6         belong          0x454c4b53      ELKS Kernel
+>0x1e6         belong          !0x454c4b53     style boot sector
+
+############################################################################
+# Linux 8086 executable
+0      lelong&0xFF0000FF 0xC30000E9    Linux-Dev86 executable, headerless
+>5     string          .               
+>>4    string          >\0             \b, libc version %s
+
+0      lelong&0xFF00FFFF 0x4000301     Linux-8086 executable
+>2     byte&0x01       !0              \b, unmapped zero page
+>2     byte&0x20       0               \b, impure
+>2     byte&0x20       !0
+>>2    byte&0x10       !0              \b, A_EXEC
+>2     byte&0x02       !0              \b, A_PAL
+>2     byte&0x04       !0              \b, A_NSYM
+>2     byte&0x08       !0              \b, A_STAND
+>2     byte&0x40       !0              \b, A_PURE
+>2     byte&0x80       !0              \b, A_TOVLY
+>28     long            !0              \b, not stripped
+>37    string          .               
+>>36   string          >\0             \b, libc version %s
+
+# 0    lelong&0xFF00FFFF 0x10000301    ld86 I80386 executable
+# 0    lelong&0xFF00FFFF 0xB000301     ld86 M68K executable
+# 0    lelong&0xFF00FFFF 0xC000301     ld86 NS16K executable
+# 0    lelong&0xFF00FFFF 0x17000301    ld86 SPARC executable
+
+# SYSLINUX boot logo files (from 'ppmtolss16' sources)
+# http://syslinux.zytor.com/
+#
+0      lelong  =0x1413f33d             SYSLINUX' LSS16 image data
+>4     leshort x                       \b, width %d
+>6     leshort x                       \b, height %d
+#------------------------------------------------------------------------------
+# mime:  file(1) magic for MIME encoded files
+#
+0      string          Content-Type:\
+>14    string          >\0             %s
+0      string          Content-Type:
+>13    string          >\0             %s
+
+#------------------------------------------------------------------------------
+# zilog:  file(1) magic for Zilog Z8000.
+#
+# Was it big-endian or little-endian?  My Product Specification doesn't
+# say.
+#
+0      long            0xe807          object file (z8000 a.out)
+0      long            0xe808          pure object file (z8000 a.out)
+0      long            0xe809          separate object file (z8000 a.out)
+0      long            0xe805          overlay object file (z8000 a.out)
+
+#------------------------------------------------------------------------------
+# sgi:  file(1) magic for Silicon Graphics applications
+
+#
+#
+# Performance Co-Pilot file types
+0      string  PmNs                            PCP compiled namespace (V.0)
+0      string  PmN                             PCP compiled namespace
+>3     string  >\0                             (V.%1.1s)
+3      lelong  0x84500526                      PCP archive
+>7     byte    x                               (V.%d)
+>20    lelong  -2                              temporal index
+>20    lelong  -1                              metadata
+>20    lelong  0                               log volume #0
+>20    lelong  >0                              log volume #%ld
+>24    string  >\0                             host: %s
+0      string  PCPFolio                        PCP 
+>9     string  Version:                        Archive Folio
+>18    string  >\0                             (V.%s)
+0      string  #pmchart                        PCP pmchart view
+>9     string  Version
+>17    string  >\0                             (V%-3.3s)
+0      string  pmview                          PCP pmview config
+>7     string  Version
+>15    string  >\0                             (V%-3.3s)
+0      string  #pmlogger                       PCP pmlogger config
+>10    string  Version
+>18    string  >\0                             (V%1.1s)
+0      string  PcPh                            PCP Help 
+>4     string  1                               Index
+>4     string  2                               Text
+>5     string  >\0                             (V.%1.1s)
+0      string  #pmieconf-rules                 PCP pmieconf rules
+>16    string  >\0                             (V.%1.1s)
+3      string  pmieconf-pmie                   PCP pmie config
+>17    string  >\0                             (V.%1.1s)
+
+# SpeedShop data files
+0      lelong  0x13130303                      SpeedShop data file
+
+# mdbm files
+0      lelong  0x01023962                      mdbm file, version 0 (obsolete)
+0      string  mdbm                            mdbm file,
+>5     byte    x                               version %d,
+>6     byte    x                               2^%d pages,
+>7     byte    x                               pagesize 2^%d,
+>17    byte    x                               hash %d,
+>11    byte    x                               dataformat %d
+
+# Alias|Wavefront Maya files
+0      string  //Maya ASCII    Alias|Wavefront Maya Ascii File,
+>13    string  >\0     version %s
+8      string  MAYAFOR4        Alias|Wavefront Maya Binary File,
+>32    string  >\0     version %s scene
+8      string  MayaFOR4        Alias|Wavefront Maya Binary File,
+>32    string  >\0     version %s scene
+8      string  CIMG            Alias|Wavefront Maya Image File
+8      string  DEEP            Alias|Wavefront Maya Image File
+
+#------------------------------------------------------------------------------
+# sequent:  file(1) magic for Sequent machines
+#
+# Sequent information updated by Don Dwiggins <atsun!dwiggins>.
+# For Sequent's multiprocessor systems (incomplete).
+0      lelong  0x00ea          BALANCE NS32000 .o
+>16    lelong  >0              not stripped
+>124   lelong  >0              version %ld
+0      lelong  0x10ea          BALANCE NS32000 executable (0 @ 0)
+>16    lelong  >0              not stripped
+>124   lelong  >0              version %ld
+0      lelong  0x20ea          BALANCE NS32000 executable (invalid @ 0)
+>16    lelong  >0              not stripped
+>124   lelong  >0              version %ld
+0      lelong  0x30ea          BALANCE NS32000 standalone executable
+>16    lelong  >0              not stripped
+>124   lelong  >0              version %ld
+#
+# Symmetry information added by Jason Merrill <jason@jarthur.claremont.edu>.
+# Symmetry magic nums will not be reached if DOS COM comes before them;
+# byte 0xeb is matched before these get a chance.
+0      leshort 0x12eb          SYMMETRY i386 .o
+>16    lelong  >0              not stripped
+>124   lelong  >0              version %ld
+0      leshort 0x22eb          SYMMETRY i386 executable (0 @ 0)
+>16    lelong  >0              not stripped
+>124   lelong  >0              version %ld
+0      leshort 0x32eb          SYMMETRY i386 executable (invalid @ 0)
+>16    lelong  >0              not stripped
+>124   lelong  >0              version %ld
+0      leshort 0x42eb          SYMMETRY i386 standalone executable
+>16    lelong  >0              not stripped
+>124   lelong  >0              version %ld
+
+#------------------------------------------------------------------------------
+# blit:  file(1) magic for 68K Blit stuff as seen from 680x0 machine
+#
+# Note that this 0407 conflicts with several other a.out formats...
+#
+# XXX - should this be redone with "be" and "le", so that it works on
+# little-endian machines as well?  If so, what's the deal with
+# "VAX-order" and "VAX-order2"?
+#
+#0     long            0407            68K Blit (standalone) executable
+#0     short           0407            VAX-order2 68K Blit (standalone) executable
+0      short           03401           VAX-order 68K Blit (standalone) executable
+0      long            0406            68k Blit mpx/mux executable
+0      short           0406            VAX-order2 68k Blit mpx/mux executable
+0      short           03001           VAX-order 68k Blit mpx/mux executable
+# Need more values for WE32 DMD executables.
+# Note that 0520 is the same as COFF
+#0     short           0520            tty630 layers executable
+#------------------------------------------------------------------------------
+# impulse tracker:  file(1) magic for Impulse Tracker data files
+#
+# From <collver1@attbi.com>
+# These are the /etc/magic entries to decode modules, instruments, and
+# samples in Impulse Tracker's native format.
+
+0      string          IMPS            Impulse Tracker Sample
+>18    byte            &2              16 bit
+>18    byte            ^2              8 bit
+>18    byte            &4              stereo
+>18    byte            ^4              mono
+0      string          IMPI            Impulse Tracker Instrument
+>28    leshort         !0              ITv%x
+>30    byte            !0              %d samples
+0      string          IMPM            Impulse Tracker Module
+>40    leshort         !0              compatible w/ITv%x
+>42    leshort         !0              created w/ITv%x
+
+#------------------------------------------------------------------------------
+# island:  file(1) magic for IslandWite/IslandDraw, from SunOS 5.5.1
+# "/etc/magic":
+# From: guy@netapp.com (Guy Harris)
+#
+4      string          pgscriptver     IslandWrite document
+13     string          DrawFile        IslandDraw document
+
+
+#------------------------------------------------------------------------------
+# maple:  file(1) magic for maple files
+# "H. Nanosecond" <aldomel@ix.netcom.com>
+# Maple V release 4, a multi-purpose math program
+#
+
+# maple library .lib
+0      string  \000MVR4\nI     MapleVr4 library
+
+# .ind
+# no magic for these :-(
+# they are compiled indexes for maple files
+
+# .hdb 
+0      string  \000\004\000\000        Maple help database
+
+# .mhp
+# this has the form <PACKAGE=name>
+0      string  \<PACKAGE=      Maple help file
+0      string  \<HELP\ NAME=   Maple help file
+0      string  \n\<HELP\ NAME= Maple help file with extra carriage return at start (yuck)
+#0     string  #\ Newton       Maple help file, old style
+0      string  #\ daub Maple help file, old style
+#0     string  #===========    Maple help file, old style
+
+# .mws
+0      string  \000\000\001\044\000\221        Maple worksheet
+#this is anomalous
+0      string  WriteNow\000\002\000\001\000\000\000\000\100\000\000\000\000\000        Maple worksheet, but weird
+# this has the form {VERSION 2 3 "IBM INTEL NT" "2.3" }\n
+# that is {VERSION major_version miunor_version computer_type version_string}
+0      string  {VERSION\       Maple worksheet
+>9     string  >\0     version %.1s.
+>>10   string
+>>>11  string  >\0     %.1s
+
+# .mps
+0      string  \0\0\001$       Maple something
+# from byte 4 it is either 'nul E' or 'soh R'
+# I think 'nul E' means a file that was saved as  a different name
+# a sort of revision marking
+# 'soh R' means new 
+>4     string  \000\105        An old revision
+>4     string  \001\122        The latest save
+
+# .mpl
+# some of these are the same as .mps above
+#0000000 000 000 001 044 000 105 same as .mps
+#0000000 000 000 001 044 001 122 same as .mps
+
+0      string  #\n##\ <SHAREFILE=      Maple something
+0      string  \n#\n##\ <SHAREFILE=    Maple something
+0      string  ##\ <SHAREFILE= Maple something
+0      string  #\r##\ <SHAREFILE=      Maple something
+0      string  \r#\r##\ <SHAREFILE=    Maple something
+0      string  #\ \r##\ <DESCRIBE>     Maple something anomalous.
+#
+# Copyright (c) 1996 Ignatios Souvatzis. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. 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.
+# 3. All advertising materials mentioning features or use of this software
+#    must display the following acknowledgement:
+#      This product includes software developed by Ignatios Souvatzis for
+#      the NetBSD project.
+# 4. The name of the author may not be used to endorse or promote products
+#    derived from this software without specific prior written permission.
+#
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+#
+#
+#
+# OS9/6809 module descriptions:
+#
+0      beshort         0x87CD  OS9/6809 module:
+#
+>6     byte&0x0f       0x00    non-executable
+>6     byte&0x0f       0x01    machine language
+>6     byte&0x0f       0x02    BASIC I-code
+>6     byte&0x0f       0x03    Pascal P-code
+>6     byte&0x0f       0x04    C I-code
+>6     byte&0x0f       0x05    COBOL I-code
+>6     byte&0x0f       0x06    Fortran I-code
+#
+>6     byte&0xf0       0x10    program executable
+>6     byte&0xf0       0x20    subroutine
+>6     byte&0xf0       0x30    multi-module
+>6     byte&0xf0       0x40    data module
+#
+>6     byte&0xf0       0xC0    system module
+>6     byte&0xf0       0xD0    file manager
+>6     byte&0xf0       0xE0    device driver
+>6     byte&0xf0       0xF0    device descriptor
+#
+# OS9/m68k stuff (to be continued)
+#
+0      beshort         0x4AFC  OS9/68K module:
+#
+# attr
+>0x14  byte&0x80       0x80    re-entrant
+>0x14  byte&0x40       0x40    ghost
+>0x14  byte&0x20       0x20    system-state
+#
+# lang:
+#
+>0x13  byte            1       machine language
+>0x13  byte            2       BASIC I-code
+>0x13  byte            3       Pascal P-code
+>0x13  byte            4       C I-code
+>0x13  byte            5       COBOL I-code
+>0x13  byte            6       Fortran I-code
+#
+#
+# type:
+#
+>0x12  byte            1       program executable
+>0x12  byte            2       subroutine
+>0x12  byte            3       multi-module
+>0x12  byte            4       data module
+>0x12  byte            11      trap library
+>0x12  byte            12      system module
+>0x12  byte            13      file manager
+>0x12  byte            14      device driver
+>0x12  byte            15      device descriptor
+
+#------------------------------------------------------------------------------
+# pkgadd:  file(1) magic for SysV R4 PKG Datastreams
+#
+0       string          #\ PaCkAgE\ DaTaStReAm  pkg Datastream (SVR4)
+
+#------------------------------------------------------------------------------
+# xo65 object files
+# From: "Ullrich von Bassewitz" <uz@cc65.org>
+#
+0      string          \x55\x7A\x6E\x61        xo65 object,
+>4     leshort         x                       version %d,
+>6     leshort&0x0001 =0x0001                  with debug info
+>6     leshort&0x0001 =0x0000                  no debug info
+
+# xo65 library files
+0      string          \x6E\x61\x55\x7A        xo65 library,
+>4     leshort         x                       version %d
+
+# o65 object files
+0      string          \x01\x00\x6F\x36\x35    o65
+>6     leshort&0x1000  =0x0000                 executable,
+>6     leshort&0x1000  =0x1000                 object,
+>5     byte            x                       version %d,
+>6     leshort&0x8000  =0x8000                 65816,
+>6     leshort&0x8000  =0x0000                 6502,
+>6     leshort&0x2000  =0x2000                 32 bit,
+>6     leshort&0x2000  =0x0000                 16 bit,
+>6     leshort&0x4000  =0x4000                 page reloc,
+>6     leshort&0x4000  =0x0000                 byte reloc,
+>6     leshort&0x0003  =0x0000                 alignment 1
+>6     leshort&0x0003  =0x0001                 alignment 2
+>6     leshort&0x0003  =0x0002                 alignment 4
+>6     leshort&0x0003  =0x0003                 alignment 256
+#------------------------------------------------------------------------------
+# Virtutech Compressed Random Access File Format
+#
+# From <gustav@virtutech.com>
+0      string          \211\277\036\203        Virtutech CRAFF
+>4     belong          x               v%d
+>20    belong          0               uncompressed
+>20    belong          1               bzipp2ed
+>20    belong          2               gzipped
+>24    belong          0               not clean
+
+#------------------------------------------------------------------------------
+# uuencode:  file(1) magic for ASCII-encoded files
+#
+
+# GRR:  the first line of xxencoded files is identical to that in uuencoded
+# files, but the first character in most subsequent lines is 'h' instead of
+# 'M'.  (xxencoding uses lowercase letters in place of most of uuencode's
+# punctuation and survives BITNET gateways better.)  If regular expressions
+# were supported, this entry could possibly be split into two with
+# "begin\040\.\*\012M" or "begin\040\.\*\012h" (where \. and \* are REs).
+0      string          begin\040       uuencoded or xxencoded text
+
+# btoa(1) is an alternative to uuencode that requires less space.
+0      string          xbtoa\ Begin    btoa'd text
+
+# ship(1) is another, much cooler alternative to uuencode.
+# Greg Roelofs, newt@uchicago.edu
+0      string          $\012ship       ship'd binary text
+
+# bencode(8) is used to encode compressed news batches (Bnews/Cnews only?)
+# Greg Roelofs, newt@uchicago.edu
+0      string  Decode\ the\ following\ with\ bdeco     bencoded News text
+
+# BinHex is the Macintosh ASCII-encoded file format (see also "apple")
+# Daniel Quinlan, quinlan@yggdrasil.com
+11     string  must\ be\ converted\ with\ BinHex       BinHex binary text
+>41    string  x                                       \b, version %.3s
+
+# GRR:  is MIME BASE64 encoding handled somewhere?
+#------------------------------------------------------------------------------
+# amanda:  file(1) magic for amanda file format
+#
+0      string  AMANDA:\                AMANDA 
+>8     string  TAPESTART\ DATE         tape header file,
+>>23   string  X
+>>>25  string  >\                      Unused %s
+>>23   string  >\                      DATE %s
+>8     string  FILE\                   dump file,
+>>13   string  >\                      DATE %s
+
+#------------------------------------------------------------------------------
+# audio:  file(1) magic for sound formats (see also "iff")
+#
+# Jan Nicolai Langfeldt (janl@ifi.uio.no), Dan Quinlan (quinlan@yggdrasil.com),
+# and others
+#
+
+# Sun/NeXT audio data
+0      string          .snd            Sun/NeXT audio data:
+>12    belong          1               8-bit ISDN mu-law,
+>12    belong          2               8-bit linear PCM [REF-PCM],
+>12    belong          3               16-bit linear PCM,
+>12    belong          4               24-bit linear PCM,
+>12    belong          5               32-bit linear PCM,
+>12    belong          6               32-bit IEEE floating point,
+>12    belong          7               64-bit IEEE floating point,
+>12    belong          8               Fragmented sample data,
+>12    belong          10              DSP program,
+>12    belong          11              8-bit fixed point,
+>12    belong          12              16-bit fixed point,
+>12    belong          13              24-bit fixed point,
+>12    belong          14              32-bit fixed point,
+>12    belong          18              16-bit linear with emphasis,
+>12    belong          19              16-bit linear compressed,
+>12    belong          20              16-bit linear with emphasis and compression,
+>12    belong          21              Music kit DSP commands,
+>12    belong          23              8-bit ISDN mu-law compressed (CCITT G.721 ADPCM voice data encoding),
+>12    belong          24              compressed (8-bit CCITT G.722 ADPCM)
+>12    belong          25              compressed (3-bit CCITT G.723.3 ADPCM),
+>12    belong          26              compressed (5-bit CCITT G.723.5 ADPCM),
+>12    belong          27              8-bit A-law (CCITT G.711),
+>20    belong          1               mono,
+>20    belong          2               stereo,
+>20    belong          4               quad,
+>16    belong          >0              %d Hz
+
+# DEC systems (e.g. DECstation 5000) use a variant of the Sun/NeXT format
+# that uses little-endian encoding and has a different magic number
+0      lelong          0x0064732E      DEC audio data:
+>12    lelong          1               8-bit ISDN mu-law,
+>12    lelong          2               8-bit linear PCM [REF-PCM],
+>12    lelong          3               16-bit linear PCM,
+>12    lelong          4               24-bit linear PCM,
+>12    lelong          5               32-bit linear PCM,
+>12    lelong          6               32-bit IEEE floating point,
+>12    lelong          7               64-bit IEEE floating point,
+>12    belong          8               Fragmented sample data,
+>12    belong          10              DSP program,
+>12    belong          11              8-bit fixed point,
+>12    belong          12              16-bit fixed point,
+>12    belong          13              24-bit fixed point,
+>12    belong          14              32-bit fixed point,
+>12    belong          18              16-bit linear with emphasis,
+>12    belong          19              16-bit linear compressed,
+>12    belong          20              16-bit linear with emphasis and compression,
+>12    belong          21              Music kit DSP commands,
+>12    lelong          23              8-bit ISDN mu-law compressed (CCITT G.721 ADPCM voice data encoding),
+>12    belong          24              compressed (8-bit CCITT G.722 ADPCM)
+>12    belong          25              compressed (3-bit CCITT G.723.3 ADPCM),
+>12    belong          26              compressed (5-bit CCITT G.723.5 ADPCM),
+>12    belong          27              8-bit A-law (CCITT G.711),
+>20    lelong          1               mono,
+>20    lelong          2               stereo,
+>20    lelong          4               quad,
+>16    lelong          >0              %d Hz
+
+# Creative Labs AUDIO stuff
+0      string  MThd                    Standard MIDI data
+>8     beshort x                       (format %d)
+>10    beshort x                       using %d track
+>10    beshort         >1              \bs
+>12    beshort&0x7fff  x               at 1/%d
+>12    beshort&0x8000  >0              SMPTE
+
+0      string  CTMF                    Creative Music (CMF) data
+0      string  SBI                     SoundBlaster instrument data
+0      string  Creative\ Voice\ File   Creative Labs voice data
+# is this next line right?  it came this way...
+>19    byte    0x1A
+>23    byte    >0                      - version %d
+>22    byte    >0                      \b.%d
+
+# first entry is also the string "NTRK"
+0      belong          0x4e54524b      MultiTrack sound data
+>4     belong          x               - version %ld
+
+# Extended MOD format (*.emd) (Greg Roelofs, newt@uchicago.edu); NOT TESTED
+# [based on posting 940824 by "Dirk/Elastik", husberg@lehtori.cc.tut.fi]
+0      string          EMOD            Extended MOD sound data,
+>4     byte&0xf0       x               version %d
+>4     byte&0x0f       x               \b.%d,
+>45    byte            x               %d instruments
+>83    byte            0               (module)
+>83    byte            1               (song)
+
+# Real Audio (Magic .ra\0375)
+0      belong          0x2e7261fd      RealAudio sound file
+0      string          .RMF            RealMedia file
+
+# MTM/669/FAR/S3M/ULT/XM format checking [Aaron Eppert, aeppert@dialin.ind.net]
+# Oct 31, 1995
+# fixed by <doj@cubic.org> 2003-06-24
+# Too short...
+#0     string          MTM             MultiTracker Module sound file
+#0     string          if              Composer 669 Module sound data
+#0     string          JN              Composer 669 Module sound data (extended format)
+0      string          MAS_U           ULT(imate) Module sound data
+
+#0     string          FAR             Module sound data
+#>4    string          >\15            Title: "%s"
+
+0x2c   string          SCRM            ScreamTracker III Module sound data
+>0     string          >\0             Title: "%s"
+
+# Gravis UltraSound patches
+# From <ache@nagual.ru>
+
+0      string          GF1PATCH110\0ID#000002\0        GUS patch
+0      string          GF1PATCH100\0ID#000002\0        Old GUS patch
+
+#
+# Taken from loader code from mikmod version 2.14
+# by Steve McIntyre (stevem@chiark.greenend.org.uk)
+# <doj@cubic.org> added title printing on 2003-06-24
+0      string  MAS_UTrack_V00
+>14    string  >/0             ultratracker V1.%.1s module sound data
+
+0      string  UN05            MikMod UNI format module sound data
+
+0      string  Extended\ Module: Fasttracker II module sound data
+>17    string  >\0             Title: "%s"
+
+21     string/c        !SCREAM!        Screamtracker 2 module sound data
+21     string  BMOD2STM        Screamtracker 2 module sound data
+1080   string  M.K.            4-channel Protracker module sound data
+>0     string  >\0             Title: "%s"
+1080   string  M!K!            4-channel Protracker module sound data
+>0     string  >\0             Title: "%s"
+1080   string  FLT4            4-channel Startracker module sound data
+>0     string  >\0             Title: "%s"
+1080   string  FLT8            8-channel Startracker module sound data
+>0     string  >\0             Title: "%s"
+1080   string  4CHN            4-channel Fasttracker module sound data
+>0     string  >\0             Title: "%s"
+1080   string  6CHN            6-channel Fasttracker module sound data
+>0     string  >\0             Title: "%s"
+1080   string  8CHN            8-channel Fasttracker module sound data
+>0     string  >\0             Title: "%s"
+1080   string  CD81            8-channel Octalyser module sound data
+>0     string  >\0             Title: "%s"
+1080   string  OKTA            8-channel Oktalyzer module sound data
+>0     string  >\0             Title: "%s"
+# Not good enough.
+#1082  string  CH
+#>1080 string  >/0             %.2s-channel Fasttracker "oktalyzer" module sound data
+1080   string  16CN            16-channel Taketracker module sound data
+>0     string  >\0             Title: "%s"
+1080   string  32CN            32-channel Taketracker module sound data
+>0     string  >\0             Title: "%s"
+
+# TOC sound files -Trevor Johnson <trevor@jpj.net>
+#
+0       string          TOC             TOC sound file
+
+# sidfiles <pooka@iki.fi>
+# added name,author,(c) and new RSID type by <doj@cubic.org> 2003-06-24
+0      string          SIDPLAY\ INFOFILE       Sidplay info file
+
+0      string          PSID                    PlaySID v2.2+ (AMIGA) sidtune
+>4     beshort         >0                      w/ header v%d,
+>14    beshort         =1                      single song,
+>14    beshort         >1                      %d songs,
+>16    beshort         >0                      default song: %d
+>0x16  string          >\0                     name: "%s"
+>0x36  string          >\0                     author: "%s"
+>0x56  string          >\0                     copyright: "%s"
+
+0      string          RSID                    RSID sidtune PlaySID compatible
+>4     beshort         >0                      w/ header v%d,
+>14    beshort         =1                      single song,
+>14    beshort         >1                      %d songs,
+>16    beshort         >0                      default song: %d
+>0x16  string          >\0                     name: "%s"
+>0x36  string          >\0                     author: "%s"
+>0x56  string          >\0                     copyright: "%s"
+
+# IRCAM <mpruett@sgi.com>
+# VAX and MIPS files are little-endian; Sun and NeXT are big-endian
+0      belong          0x64a30100              IRCAM file (VAX)
+0      belong          0x64a30200              IRCAM file (Sun)
+0      belong          0x64a30300              IRCAM file (MIPS little-endian)
+0      belong          0x64a30400              IRCAM file (NeXT)
+
+# NIST SPHERE <mpruett@sgi.com>
+0      string          NIST_1A\n\ \ \ 1024\n   NIST SPHERE file
+
+# Sample Vision <mpruett@sgi.com>
+0      string          SOUND\ SAMPLE\ DATA\    Sample Vision file
+
+# Audio Visual Research <tonigonenstein@users.sourceforge.net>
+0      string          2BIT                    Audio Visual Research file,
+>12    beshort         =0                      mono,
+>12    beshort         =-1                     stereo,
+>14    beshort         x                       %d bits
+>16    beshort         =0                      unsigned,
+>16    beshort         =-1                     signed,
+>22    belong&0x00ffffff       x               %d Hz,
+>18    beshort         =0                      no loop,
+>18    beshort         =-1                     loop,
+>21    ubyte           <=127                   note %d,
+>22    byte            =0                      replay 5.485 KHz
+>22    byte            =1                      replay 8.084 KHz
+>22    byte            =2                      replay 10.971 Khz
+>22    byte            =3                      replay 16.168 Khz
+>22    byte            =4                      replay 21.942 KHz
+>22    byte            =5                      replay 32.336 KHz
+>22    byte            =6                      replay 43.885 KHz
+>22    byte            =7                      replay 47.261 KHz
+
+# SGI SoundTrack <mpruett@sgi.com>
+0      string          _SGI_SoundTrack         SGI SoundTrack project file
+# ID3 version 2 tags <waschk@informatik.uni-rostock.de>
+0      string          ID3     MP3 file with ID3 version 2.
+>3     ubyte   <0xff   \b%d.
+>4     ubyte   <0xff   \b%d tag
+
+# NSF (NES sound file) magic
+0      string          NESM\x1a        NES Sound File
+>14    string          >\0             ("%s" by
+>46    string          >\0             %s, copyright
+>78    string          >\0             %s),
+>5     byte            x               version %d,
+>6     byte            x               %d tracks,
+>122   byte&0x2        =1              dual PAL/NTSC
+>122   byte&0x1        =1              PAL
+>122   byte&0x1        =0              NTSC
+
+# Impuse tracker module (audio/x-it)
+0      string          IMPM            Impulse Tracker module sound data -
+>4     string          >\0             "%s"
+>40    leshort         !0              compatible w/ITv%x
+>42    leshort         !0              created w/ITv%x
+
+# Imago Orpheus module (audio/x-imf)
+60     string          IM10            Imago Orpheus module sound data -
+>0     string          >\0             "%s"
+
+# From <collver1@attbi.com>
+# These are the /etc/magic entries to decode modules, instruments, and
+# samples in Impulse Tracker's native format.
+
+0      string          IMPS            Impulse Tracker Sample
+>18    byte            &2              16 bit
+>18    byte            ^2              8 bit
+>18    byte            &4              stereo
+>18    byte            ^4              mono
+0      string          IMPI            Impulse Tracker Instrument
+>28    leshort         !0              ITv%x
+>30    byte            !0              %d samples
+
+# Yamaha TX Wave:  file(1) magic for Yamaha TX Wave audio files
+# From <collver1@attbi.com>
+0      string          LM8953          Yamaha TX Wave
+>22    byte            0x49            looped
+>22    byte            0xC9            non-looped
+>23    byte            1               33kHz
+>23    byte            2               50kHz
+>23    byte            3               16kHz
+
+# scream tracker:  file(1) magic for Scream Tracker sample files
+#
+# From <collver1@attbi.com>
+76     string          SCRS            Scream Tracker Sample
+>0     byte            1               sample
+>0     byte            2               adlib melody
+>0     byte            >2              adlib drum
+>31    byte            &2              stereo
+>31    byte            ^2              mono
+>31    byte            &4              16bit little endian
+>31    byte            ^4              8bit
+>30    byte            0               unpacked
+>30    byte            1               packed
+
+# audio
+# From: Cory Dikkers <cdikkers@swbell.net>
+0      string          MMD0            MED music file, version 0
+0      string          MMD1            OctaMED Pro music file, version 1
+0      string          MMD3            OctaMED Soundstudio music file, version 3
+0      string          OctaMEDCmpr     OctaMED Soundstudio compressed file
+0      string          MED             MED_Song
+0      string          SymM            Symphonie SymMOD music file
+#
+0      string          THX             AHX version
+>3     byte            =0              1 module data
+>3     byte            =1              2 module data
+#
+0      string          OKTASONG        Oktalyzer module data
+#
+0      string          DIGI\ Booster\ module\0 %s
+>20    byte            >0              %c
+>>21   byte            >0              \b%c
+>>>22  byte            >0              \b%c
+>>>>23 byte            >0              \b%c
+>610   string          >\0             \b, "%s"
+#
+0      string          DBM0            DIGI Booster Pro Module
+>4     byte            >0              V%X.
+>>5    byte            x               \b%02X
+>16    string          >\0             \b, "%s"
+#
+0      string          FTMN            FaceTheMusic module
+>16    string          >\0d            \b, "%s"
+
+# From: <doj@cubic.org> 2003-06-24
+0      string          AMShdr\32       Velvet Studio AMS Module v2.2
+0      string          Extreme         Extreme Tracker AMS Module v1.3
+0      string          DDMF            Xtracker DMF Module
+>4     byte            x               v%i
+>0xD   string          >\0             Title: "%s"
+>0x2B  string          >\0             Composer: "%s"
+0      string          DSM\32          Dynamic Studio Module DSM
+0      string          SONG            DigiTrekker DTM Module
+0      string          DMDL            DigiTrakker MDL Module
+0      string          PSM\32          Protracker Studio PSM Module
+44     string          PTMF            Poly Tracker PTM Module
+>0     string          >\32            Title: "%s"
+0      string          MT20            MadTracker 2.0 Module MT2
+0      string          RAD\40by\40REALiTY!! RAD Adlib Tracker Module RAD
+0      string          RTMM            RTM Module
+0x426  string          MaDoKaN96       XMS Adlib Module
+>0     string          >\0             Composer: "%s"
+0      string          AMF             AMF Module
+>4     string          >\0             Title: "%s"
+0      string          MODINFO1        Open Cubic Player Module Inforation MDZ
+0      string          Extended\40Instrument: Fast Tracker II Instrument
+
+# From: Takeshi Hamasaki <hma@syd.odn.ne.jp>
+# NOA Nancy Codec file
+0      string          \210NOA\015\012\032     NOA Nancy Codec Movie file
+# Yamaha SMAF format
+0      string          MMMD            Yamaha SMAF file
+# Sharp Jisaku Melody format for PDC
+0      string          \001Sharp\040JisakuMelody       SHARP Cell-Phone ringing Melody
+>20    string          Ver01.00        Ver. 1.00
+>>32   byte            x               , %d tracks
+
+# Free lossless audio codec <http://flac.sourceforge.net>
+# From: Przemyslaw Augustyniak <silvathraec@rpg.pl>
+0      string                  fLaC            FLAC audio bitstream data
+>4     byte&0x7f               >0              \b, unknown version
+>4     byte&0x7f               0               \b
+# some common bits/sample values
+>>20   beshort&0x1f0           0x030           \b, 4 bit
+>>20   beshort&0x1f0           0x050           \b, 6 bit
+>>20   beshort&0x1f0           0x070           \b, 8 bit
+>>20   beshort&0x1f0           0x0b0           \b, 12 bit
+>>20   beshort&0x1f0           0x0f0           \b, 16 bit
+>>20   beshort&0x1f0           0x170           \b, 24 bit
+>>20   byte&0xe                0x0             \b, mono
+>>20   byte&0xe                0x2             \b, stereo
+>>20   byte&0xe                0x4             \b, 3 channels
+>>20   byte&0xe                0x6             \b, 4 channels
+>>20   byte&0xe                0x8             \b, 5 channels
+>>20   byte&0xe                0xa             \b, 6 channels
+>>20   byte&0xe                0xc             \b, 7 channels
+>>20   byte&0xe                0xe             \b, 8 channels
+# some common sample rates
+>>17   belong&0xfffff0         0x0ac440        \b, 44.1 kHz
+>>17   belong&0xfffff0         0x0bb800        \b, 48 kHz
+>>17   belong&0xfffff0         0x07d000        \b, 32 kHz
+>>17   belong&0xfffff0         0x056220        \b, 22.05 kHz
+>>17   belong&0xfffff0         0x05dc00        \b, 24 kHz
+>>17   belong&0xfffff0         0x03e800        \b, 16 kHz
+>>17   belong&0xfffff0         0x02b110        \b, 11.025 kHz
+>>17   belong&0xfffff0         0x02ee00        \b, 12 kHz
+>>17   belong&0xfffff0         0x01f400        \b, 8 kHz
+>>17   belong&0xfffff0         0x177000        \b, 96 kHz
+>>17   belong&0xfffff0         0x0fa000        \b, 64 kHz
+>>21   byte&0xf                >0              \b, >4G samples
+>>21   byte&0xf                0               \b
+>>>22  belong                  >0              \b, %u samples
+>>>22  belong                  0               \b, length unknown
+
+# (ISDN) VBOX voice message file (Wolfram Kleff)
+0       string          VBOX            VBOX voice message data
+
+# ReBorn Song Files (.rbs)
+# David J. Singer <doc@deadvirgins.org.uk>
+8       string          RB40             RBS Song file
+>29     string          ReBorn           created by ReBorn
+>37     string          Propellerhead    created by ReBirth
+
+# Synthesizer Generator and Kimwitu share their file format
+0      string          A#S#C#S#S#L#V#3     Synthesizer Generator or Kimwitu data
+# Kimwitu++ uses a slightly different magic
+0      string          A#S#C#S#S#L#HUB     Kimwitu++ data
+
+# From "Simon Hosie
+0       string  TFMX-SONG       TFMX module sound data
+
+# From danny.milo@gmx.net (Danny Milosavljevic)
+# monkeysaudio for magic.mime
+0      string  MAC\    X/Monkey audio,
+>4     leshort >0      version %d,
+>6     leshort >0      compression level %d,
+>8     leshort >0      flags %x,
+>10    leshort >0      channels %d,
+>12    lelong  >0      samplerate %d,
+>24    lelong  >0      frames %d
+
+#------------------------------------------------------------------------------
+# bsdi:  file(1) magic for BSD/OS (from BSDI) objects
+#
+
+0      lelong          0314            386 compact demand paged pure executable
+>16    lelong          >0              not stripped
+>32    byte            0x6a            (uses shared libs)
+
+0      lelong          0407            386 executable
+>16    lelong          >0              not stripped
+>32    byte            0x6a            (uses shared libs)
+
+0      lelong          0410            386 pure executable
+>16    lelong          >0              not stripped
+>32    byte            0x6a            (uses shared libs)
+
+0      lelong          0413            386 demand paged pure executable
+>16    lelong          >0              not stripped
+>32    byte            0x6a            (uses shared libs)
+
+# same as in SunOS 4.x, except for static shared libraries
+0      belong&077777777        0600413         sparc demand paged
+>0     byte            &0x80
+>>20   belong          <4096           shared library
+>>20   belong          =4096           dynamically linked executable
+>>20   belong          >4096           dynamically linked executable
+>0     byte            ^0x80           executable
+>16    belong          >0              not stripped
+>36    belong          0xb4100001      (uses shared libs)
+
+0      belong&077777777        0600410         sparc pure
+>0     byte            &0x80           dynamically linked executable
+>0     byte            ^0x80           executable
+>16    belong          >0              not stripped
+>36    belong          0xb4100001      (uses shared libs)
+
+0      belong&077777777        0600407         sparc
+>0     byte            &0x80           dynamically linked executable
+>0     byte            ^0x80           executable
+>16    belong          >0              not stripped
+>36    belong          0xb4100001      (uses shared libs)
+
+#------------------------------------------------------------------------------
+# fcs: file(1) magic for FCS (Flow Cytometry Standard) data files
+# From Roger Leigh <roger@whinlatter.uklinux.net>
+0       string          FCS1.0          Flow Cytometry Standard (FCS) data, version 1.0
+0       string          FCS2.0          Flow Cytometry Standard (FCS) data, version 2.0
+0       string          FCS3.0          Flow Cytometry Standard (FCS) data, version 3.0
+
+
+#------------------------------------------------------------------------------
+# intel:  file(1) magic for x86 Unix
+#
+# Various flavors of x86 UNIX executable/object (other than Xenix, which
+# is in "microsoft").  DOS is in "msdos"; the ambitious soul can do
+# Windows as well.
+#
+# Windows NT belongs elsewhere, as you need x86 and MIPS and Alpha and
+# whatever comes next (HP-PA Hummingbird?).  OS/2 may also go elsewhere
+# as well, if, as, and when IBM makes it portable.
+#
+# The `versions' should be un-commented if they work for you.
+# (Was the problem just one of endianness?)
+#
+0      leshort         0502            basic-16 executable
+>12    lelong          >0              not stripped
+#>22   leshort         >0              - version %ld
+0      leshort         0503            basic-16 executable (TV)
+>12    lelong          >0              not stripped
+#>22   leshort         >0              - version %ld
+0      leshort         0510            x86 executable
+>12    lelong          >0              not stripped
+0      leshort         0511            x86 executable (TV)
+>12    lelong          >0              not stripped
+0      leshort         =0512           iAPX 286 executable small model (COFF)
+>12    lelong          >0              not stripped
+#>22   leshort         >0              - version %ld
+0      leshort         =0522           iAPX 286 executable large model (COFF)
+>12    lelong          >0              not stripped
+#>22   leshort         >0              - version %ld
+# SGI labeled the next entry as "iAPX 386 executable" --Dan Quinlan
+0      leshort         =0514           80386 COFF executable
+>12    lelong          >0              not stripped
+>22    leshort         >0              - version %ld
+
+# rom: file(1) magic for BIOS ROM Extensions found in intel machines
+#      mapped into memory between 0xC0000 and 0xFFFFF
+# From Gürkan Sengün <gurkan@linuks.mine.nu>, www.linuks.mine.nu
+0        beshort         0x55AA       BIOS (ia32) ROM Ext.
+>5       string          USB          USB
+>7       string          LDR          UNDI image
+>30      string          IBM          IBM comp. Video
+>26      string          Adaptec      Adaptec
+>28      string          Adaptec      Adaptec
+>42      string          PROMISE      Promise
+>2       byte            x            (%d*512)
+
+#------------------------------------------------------------------------------
+# netbsd:  file(1) magic for NetBSD objects
+#
+# All new-style magic numbers are in network byte order.
+#
+
+0      lelong                  000000407       a.out NetBSD little-endian object file
+>16    lelong                  >0              not stripped
+0      belong                  000000407       a.out NetBSD big-endian object file
+>16    belong                  >0              not stripped
+
+0      belong&0377777777       041400413       a.out NetBSD/i386 demand paged
+>0     byte                    &0x80           
+>>20   lelong                  <4096           shared library
+>>20   lelong                  =4096           dynamically linked executable
+>>20   lelong                  >4096           dynamically linked executable
+>0     byte                    ^0x80           executable
+>16    lelong                  >0              not stripped
+0      belong&0377777777       041400410       a.out NetBSD/i386 pure
+>0     byte                    &0x80           dynamically linked executable
+>0     byte                    ^0x80           executable
+>16    lelong                  >0              not stripped
+0      belong&0377777777       041400407       a.out NetBSD/i386
+>0     byte                    &0x80           dynamically linked executable
+>0     byte                    ^0x80
+>>0    byte                    &0x40           position independent
+>>20   lelong                  !0              executable
+>>20   lelong                  =0              object file
+>16    lelong                  >0              not stripped
+0      belong&0377777777       041400507       a.out NetBSD/i386 core
+>12    string                  >\0             from '%s'
+>32    lelong                  !0              (signal %d)
+
+0      belong&0377777777       041600413       a.out NetBSD/m68k demand paged
+>0     byte                    &0x80           
+>>20   belong                  <8192           shared library
+>>20   belong                  =8192           dynamically linked executable
+>>20   belong                  >8192           dynamically linked executable
+>0     byte                    ^0x80           executable
+>16    belong                  >0              not stripped
+0      belong&0377777777       041600410       a.out NetBSD/m68k pure
+>0     byte                    &0x80           dynamically linked executable
+>0     byte                    ^0x80           executable
+>16    belong                  >0              not stripped
+0      belong&0377777777       041600407       a.out NetBSD/m68k
+>0     byte                    &0x80           dynamically linked executable
+>0     byte                    ^0x80
+>>0    byte                    &0x40           position independent
+>>20   belong                  !0              executable
+>>20   belong                  =0              object file
+>16    belong                  >0              not stripped
+0      belong&0377777777       041600507       a.out NetBSD/m68k core
+>12    string                  >\0             from '%s'
+>32    belong                  !0              (signal %d)
+
+0      belong&0377777777       042000413       a.out NetBSD/m68k4k demand paged
+>0     byte                    &0x80           
+>>20   belong                  <4096           shared library
+>>20   belong                  =4096           dynamically linked executable
+>>20   belong                  >4096           dynamically linked executable
+>0     byte                    ^0x80           executable
+>16    belong                  >0              not stripped
+0      belong&0377777777       042000410       a.out NetBSD/m68k4k pure
+>0     byte                    &0x80           dynamically linked executable
+>0     byte                    ^0x80           executable
+>16    belong                  >0              not stripped
+0      belong&0377777777       042000407       a.out NetBSD/m68k4k
+>0     byte                    &0x80           dynamically linked executable
+>0     byte                    ^0x80
+>>0    byte                    &0x40           position independent
+>>20   belong                  !0              executable
+>>20   belong                  =0              object file
+>16    belong                  >0              not stripped
+0      belong&0377777777       042000507       a.out NetBSD/m68k4k core
+>12    string                  >\0             from '%s'
+>32    belong                  !0              (signal %d)
+
+0      belong&0377777777       042200413       a.out NetBSD/ns32532 demand paged
+>0     byte                    &0x80           
+>>20   lelong                  <4096           shared library
+>>20   lelong                  =4096           dynamically linked executable
+>>20   lelong                  >4096           dynamically linked executable
+>0     byte                    ^0x80           executable
+>16    lelong                  >0              not stripped
+0      belong&0377777777       042200410       a.out NetBSD/ns32532 pure
+>0     byte                    &0x80           dynamically linked executable
+>0     byte                    ^0x80           executable
+>16    lelong                  >0              not stripped
+0      belong&0377777777       042200407       a.out NetBSD/ns32532
+>0     byte                    &0x80           dynamically linked executable
+>0     byte                    ^0x80
+>>0    byte                    &0x40           position independent
+>>20   lelong                  !0              executable
+>>20   lelong                  =0              object file
+>16    lelong                  >0              not stripped
+0      belong&0377777777       042200507       a.out NetBSD/ns32532 core
+>12    string                  >\0             from '%s'
+>32    lelong                  !0              (signal %d)
+
+0      belong&0377777777       045200507       a.out NetBSD/powerpc core
+>12    string                  >\0             from '%s'
+
+0      belong&0377777777       042400413       a.out NetBSD/sparc demand paged
+>0     byte                    &0x80           
+>>20   belong                  <8192           shared library
+>>20   belong                  =8192           dynamically linked executable
+>>20   belong                  >8192           dynamically linked executable
+>0     byte                    ^0x80           executable
+>16    belong                  >0              not stripped
+0      belong&0377777777       042400410       a.out NetBSD/sparc pure
+>0     byte                    &0x80           dynamically linked executable
+>0     byte                    ^0x80           executable
+>16    belong                  >0              not stripped
+0      belong&0377777777       042400407       a.out NetBSD/sparc
+>0     byte                    &0x80           dynamically linked executable
+>0     byte                    ^0x80
+>>0    byte                    &0x40           position independent
+>>20   belong                  !0              executable
+>>20   belong                  =0              object file
+>16    belong                  >0              not stripped
+0      belong&0377777777       042400507       a.out NetBSD/sparc core
+>12    string                  >\0             from '%s'
+>32    belong                  !0              (signal %d)
+
+0      belong&0377777777       042600413       a.out NetBSD/pmax demand paged
+>0     byte                    &0x80           
+>>20   lelong                  <4096           shared library
+>>20   lelong                  =4096           dynamically linked executable
+>>20   lelong                  >4096           dynamically linked executable
+>0     byte                    ^0x80           executable
+>16    lelong                  >0              not stripped
+0      belong&0377777777       042600410       a.out NetBSD/pmax pure
+>0     byte                    &0x80           dynamically linked executable
+>0     byte                    ^0x80           executable
+>16    lelong                  >0              not stripped
+0      belong&0377777777       042600407       a.out NetBSD/pmax
+>0     byte                    &0x80           dynamically linked executable
+>0     byte                    ^0x80
+>>0    byte                    &0x40           position independent
+>>20   lelong                  !0              executable
+>>20   lelong                  =0              object file
+>16    lelong                  >0              not stripped
+0      belong&0377777777       042600507       a.out NetBSD/pmax core
+>12    string                  >\0             from '%s'
+>32    lelong                  !0              (signal %d)
+
+0      belong&0377777777       043000413       a.out NetBSD/vax 1k demand paged
+>0     byte                    &0x80           
+>>20   lelong                  <4096           shared library
+>>20   lelong                  =4096           dynamically linked executable
+>>20   lelong                  >4096           dynamically linked executable
+>0     byte                    ^0x80           executable
+>16    lelong                  >0              not stripped
+0      belong&0377777777       043000410       a.out NetBSD/vax 1k pure
+>0     byte                    &0x80           dynamically linked executable
+>0     byte                    ^0x80           executable
+>16    lelong                  >0              not stripped
+0      belong&0377777777       043000407       a.out NetBSD/vax 1k
+>0     byte                    &0x80           dynamically linked executable
+>0     byte                    ^0x80
+>>0    byte                    &0x40           position independent
+>>20   lelong                  !0              executable
+>>20   lelong                  =0              object file
+>16    lelong                  >0              not stripped
+0      belong&0377777777       043000507       a.out NetBSD/vax 1k core
+>12    string                  >\0             from '%s'
+>32    lelong                  !0              (signal %d)
+
+0      belong&0377777777       045400413       a.out NetBSD/vax 4k demand paged
+>0     byte                    &0x80           
+>>20   lelong                  <4096           shared library
+>>20   lelong                  =4096           dynamically linked executable
+>>20   lelong                  >4096           dynamically linked executable
+>0     byte                    ^0x80           executable
+>16    lelong                  >0              not stripped
+0      belong&0377777777       045400410       a.out NetBSD/vax 4k pure
+>0     byte                    &0x80           dynamically linked executable
+>0     byte                    ^0x80           executable
+>16    lelong                  >0              not stripped
+0      belong&0377777777       045400407       a.out NetBSD/vax 4k
+>0     byte                    &0x80           dynamically linked executable
+>0     byte                    ^0x80
+>>0    byte                    &0x40           position independent
+>>20   lelong                  !0              executable
+>>20   lelong                  =0              object file
+>16    lelong                  >0              not stripped
+0      belong&0377777777       045400507       a.out NetBSD/vax 4k core
+>12    string                  >\0             from '%s'
+>32    lelong                  !0              (signal %d)
+
+# NetBSD/alpha does not support (and has never supported) a.out objects,
+# so no rules are provided for them.  NetBSD/alpha ELF objects are 
+# dealt with in "elf".
+0      lelong          0x00070185              ECOFF NetBSD/alpha binary
+>10    leshort         0x0001                  not stripped
+>10    leshort         0x0000                  stripped
+0      belong&0377777777       043200507       a.out NetBSD/alpha core
+>12    string                  >\0             from '%s'
+>32    lelong                  !0              (signal %d)
+
+0      belong&0377777777       043400413       a.out NetBSD/mips demand paged
+>0     byte                    &0x80           
+>>20   belong                  <8192           shared library
+>>20   belong                  =8192           dynamically linked executable
+>>20   belong                  >8192           dynamically linked executable
+>0     byte                    ^0x80           executable
+>16    belong                  >0              not stripped
+0      belong&0377777777       043400410       a.out NetBSD/mips pure
+>0     byte                    &0x80           dynamically linked executable
+>0     byte                    ^0x80           executable
+>16    belong                  >0              not stripped
+0      belong&0377777777       043400407       a.out NetBSD/mips
+>0     byte                    &0x80           dynamically linked executable
+>0     byte                    ^0x80
+>>0    byte                    &0x40           position independent
+>>20   belong                  !0              executable
+>>20   belong                  =0              object file
+>16    belong                  >0              not stripped
+0      belong&0377777777       043400507       a.out NetBSD/mips core
+>12    string                  >\0             from '%s'
+>32    belong                  !0              (signal %d)
+
+0      belong&0377777777       043600413       a.out NetBSD/arm32 demand paged
+>0     byte                    &0x80
+>>20   lelong                  <4096           shared library
+>>20   lelong                  =4096           dynamically linked executable
+>>20   lelong                  >4096           dynamically linked executable
+>0     byte                    ^0x80           executable
+>16    lelong                  >0              not stripped
+0      belong&0377777777       043600410       a.out NetBSD/arm32 pure
+>0     byte                    &0x80           dynamically linked executable
+>0     byte                    ^0x80           executable
+>16    lelong                  >0              not stripped
+0      belong&0377777777       043600407       a.out NetBSD/arm32
+>0     byte                    &0x80           dynamically linked executable
+>0     byte                    ^0x80
+>>0    byte                    &0x40           position independent
+>>20   lelong                  !0              executable
+>>20   lelong                  =0              object file
+>16    lelong                  >0              not stripped
+# NetBSD/arm26 has always used ELF objects, but it shares a core file
+# format with NetBSD/arm32.
+0      belong&0377777777       043600507       a.out NetBSD/arm core
+>12    string                  >\0             from '%s'
+>32    lelong                  !0              (signal %d)
+
+#------------------------------------------------------------------------------
+# riff:  file(1) magic for RIFF format
+# See
+#
+#      http://www.seanet.com/users/matts/riffmci/riffmci.htm
+#
+# AVI section extended by Patrik Rådman <patrik+file-magic@iki.fi>
+#
+0      string          RIFF            RIFF (little-endian) data
+# RIFF Palette format
+>8     string          PAL             \b, palette
+>>16   leshort         x               \b, version %d
+>>18   leshort         x               \b, %d entries
+# RIFF Device Independent Bitmap format
+>8     string          RDIB            \b, device-independent bitmap
+>>16   string          BM              
+>>>30  leshort         12              \b, OS/2 1.x format
+>>>>34 leshort         x               \b, %d x
+>>>>36 leshort         x               %d
+>>>30  leshort         64              \b, OS/2 2.x format
+>>>>34 leshort         x               \b, %d x
+>>>>36 leshort         x               %d
+>>>30  leshort         40              \b, Windows 3.x format
+>>>>34 lelong          x               \b, %d x
+>>>>38 lelong          x               %d x
+>>>>44 leshort         x               %d
+# RIFF MIDI format
+>8     string          RMID            \b, MIDI
+# RIFF Multimedia Movie File format
+>8     string          RMMP            \b, multimedia movie
+# Microsoft WAVE format (*.wav)
+>8     string          WAVE            \b, WAVE audio
+>>20   leshort         1               \b, Microsoft PCM
+>>>34  leshort         >0              \b, %d bit
+>>20   leshort         2               \b, Microsoft ADPCM
+>>20   leshort         6               \b, ITU G.711 A-law
+>>20   leshort         7               \b, ITU G.711 mu-law
+>>20   leshort         17              \b, IMA ADPCM
+>>20   leshort         20              \b, ITU G.723 ADPCM (Yamaha)
+>>20   leshort         49              \b, GSM 6.10
+>>20   leshort         64              \b, ITU G.721 ADPCM
+>>20   leshort         80              \b, MPEG
+>>20   leshort         85              \b, MPEG Layer 3
+>>22   leshort         =1              \b, mono
+>>22   leshort         =2              \b, stereo
+>>22   leshort         >2              \b, %d channels
+>>24   lelong          >0              %d Hz
+# Corel Draw Picture
+>8     string          CDRA            \b, Corel Draw Picture
+# AVI == Audio Video Interleave
+>8     string          AVI\040         \b, AVI
+>>12    string          LIST
+>>>20   string          hdrlavih
+>>>>&36 lelong          x               \b, %lu x
+>>>>&40 lelong          x               %lu,
+>>>>&4  lelong          >1000000        <1 fps,
+>>>>&4  lelong          1000000         1.00 fps,
+>>>>&4  lelong          500000          2.00 fps,
+>>>>&4  lelong          333333          3.00 fps,
+>>>>&4  lelong          250000          4.00 fps,
+>>>>&4  lelong          200000          5.00 fps,
+>>>>&4  lelong          166667          6.00 fps,
+>>>>&4  lelong          142857          7.00 fps,
+>>>>&4  lelong          125000          8.00 fps,
+>>>>&4  lelong          111111          9.00 fps,
+>>>>&4  lelong          100000          10.00 fps,
+# ]9.9,10.1[
+>>>>&4  lelong          <101010
+>>>>>&-4        lelong  >99010
+>>>>>>&-4       lelong  !100000         ~10 fps,
+>>>>&4  lelong          83333           12.00 fps,
+# ]11.9,12.1[
+>>>>&4  lelong          <84034
+>>>>>&-4        lelong  >82645
+>>>>>>&-4       lelong  !83333          ~12 fps,
+>>>>&4  lelong          66667           15.00 fps,
+# ]14.9,15.1[
+>>>>&4  lelong          <67114
+>>>>>&-4        lelong  >66225
+>>>>>>&-4       lelong  !66667          ~15 fps,
+>>>>&4  lelong          50000           20.00 fps,
+>>>>&4  lelong          41708           23.98 fps,
+>>>>&4  lelong          41667           24.00 fps,
+# ]23.9,24.1[
+>>>>&4  lelong          <41841
+>>>>>&-4        lelong  >41494
+>>>>>>&-4       lelong  !41708
+>>>>>>>&-4      lelong  !41667          ~24 fps,
+>>>>&4  lelong          40000           25.00 fps,
+# ]24.9,25.1[
+>>>>&4  lelong          <40161
+>>>>>&-4        lelong  >39841
+>>>>>>&-4       lelong  !40000          ~25 fps,
+>>>>&4  lelong          33367           29.97 fps,
+>>>>&4  lelong          33333           30.00 fps,
+# ]29.9,30.1[
+>>>>&4  lelong          <33445
+>>>>>&-4        lelong  >33223
+>>>>>>&-4       lelong  !33367
+>>>>>>>&-4      lelong  !33333          ~30 fps,
+>>>>&4  lelong          <32224          >30 fps,
+##>>>>&4  lelong          x               (%lu)
+##>>>>&20 lelong          x               %lu frames,
+# Note: The tests below assume that the AVI has 1 or 2 streams,
+#       "vids" optionally followed by "auds".
+#       (Should cover 99.9% of all AVIs.)
+# assuming avih length = 56
+>>>88   string  LIST
+>>>>96  string  strlstrh
+>>>>>108        string  vids    video:
+>>>>>>&0        lelong  0               uncompressed
+# skip past vids strh
+>>>>>>(104.l+108)       string  strf
+>>>>>>>(104.l+132)      lelong          1       RLE 8bpp
+>>>>>>>(104.l+132)      string/c        cvid    Cinepak
+>>>>>>>(104.l+132)      string/c        i263    Intel I.263
+>>>>>>>(104.l+132)      string/c        iv32    Indeo 3.2
+>>>>>>>(104.l+132)      string/c        iv41    Indeo 4.1
+>>>>>>>(104.l+132)      string/c        iv50    Indeo 5.0
+>>>>>>>(104.l+132)      string/c        mp42    Microsoft MPEG-4 v2
+>>>>>>>(104.l+132)      string/c        mp43    Microsoft MPEG-4 v3
+>>>>>>>(104.l+132)      string/c        mjpg    Motion JPEG
+>>>>>>>(104.l+132)      string/c        div3    DivX 3
+>>>>>>>>112             string/c        div3    Low-Motion
+>>>>>>>>112             string/c        div4    Fast-Motion
+>>>>>>>(104.l+132)      string/c        divx    DivX 4
+>>>>>>>(104.l+132)      string/c        dx50    DivX 5
+>>>>>>>(104.l+132)      string/c        xvid    XviD
+>>>>>>>(104.l+132)      lelong  0
+##>>>>>>>(104.l+132)      string  x       (%.4s)
+# skip past first (video) LIST
+>>>>(92.l+96)   string  LIST
+>>>>>(92.l+104) string  strlstrh
+>>>>>>(92.l+116)        string          auds    \b, audio:
+# auds strh length = 56:
+>>>>>>>(92.l+172)       string          strf
+>>>>>>>>(92.l+180)      leshort 0x0001  uncompressed PCM
+>>>>>>>>(92.l+180)      leshort 0x0002  ADPCM
+>>>>>>>>(92.l+180)      leshort 0x0055  MPEG-1 Layer 3
+>>>>>>>>(92.l+180)      leshort 0x2000  Dolby AC3
+>>>>>>>>(92.l+180)      leshort 0x0161  DivX
+##>>>>>>>>(92.l+180)      leshort x       (0x%.4x)
+>>>>>>>>(92.l+182)      leshort 1       (mono,
+>>>>>>>>(92.l+182)      leshort 2       (stereo,
+>>>>>>>>(92.l+182)      leshort >2      (%d channels,
+>>>>>>>>(92.l+184)      lelong  x       %d Hz)
+# auds strh length = 64:
+>>>>>>>(92.l+180)       string          strf
+>>>>>>>>(92.l+188)      leshort 0x0001  uncompressed PCM
+>>>>>>>>(92.l+188)      leshort 0x0002  ADPCM
+>>>>>>>>(92.l+188)      leshort 0x0055  MPEG-1 Layer 3
+>>>>>>>>(92.l+188)      leshort 0x2000  Dolby AC3
+>>>>>>>>(92.l+188)      leshort 0x0161  DivX
+##>>>>>>>>(92.l+188)      leshort x       (0x%.4x)
+>>>>>>>>(92.l+190)      leshort 1       (mono,
+>>>>>>>>(92.l+190)      leshort 2       (stereo,
+>>>>>>>>(92.l+190)      leshort >2      (%d channels,
+>>>>>>>>(92.l+192)      lelong  x       %d Hz)
+# Animated Cursor format
+>8     string          ACON            \b, animated cursor
+# SoundFont 2 <mpruett@sgi.com>
+>8     string          sfbk            SoundFont/Bank
+# MPEG-1 wrapped in a RIFF, apparently
+>8      string          CDXA            \b, wrapped MPEG-1 (CDXA)
+>8     string          4XMV            \b, 4X Movie file 
+
+#
+# XXX - some of the below may only appear in little-endian form.
+#
+# Also "MV93" appears to be for one form of Macromedia Director
+# files, and "GDMF" appears to be another multimedia format.
+#
+0      string          RIFX            RIFF (big-endian) data
+# RIFF Palette format
+>8     string          PAL             \b, palette
+>>16   beshort         x               \b, version %d
+>>18   beshort         x               \b, %d entries
+# RIFF Device Independent Bitmap format
+>8     string          RDIB            \b, device-independent bitmap
+>>16   string          BM              
+>>>30  beshort         12              \b, OS/2 1.x format
+>>>>34 beshort         x               \b, %d x
+>>>>36 beshort         x               %d
+>>>30  beshort         64              \b, OS/2 2.x format
+>>>>34 beshort         x               \b, %d x
+>>>>36 beshort         x               %d
+>>>30  beshort         40              \b, Windows 3.x format
+>>>>34 belong          x               \b, %d x
+>>>>38 belong          x               %d x
+>>>>44 beshort         x               %d
+# RIFF MIDI format
+>8     string          RMID            \b, MIDI
+# RIFF Multimedia Movie File format
+>8     string          RMMP            \b, multimedia movie
+# Microsoft WAVE format (*.wav)
+>8     string          WAVE            \b, WAVE audio
+>>20   leshort         1               \b, Microsoft PCM
+>>>34  leshort         >0              \b, %d bit
+>>22   beshort         =1              \b, mono
+>>22   beshort         =2              \b, stereo
+>>22   beshort         >2              \b, %d channels
+>>24   belong          >0              %d Hz
+# Corel Draw Picture
+>8     string          CDRA            \b, Corel Draw Picture
+# AVI == Audio Video Interleave
+>8     string          AVI\040         \b, AVI
+# Animated Cursor format
+>8     string          ACON            \b, animated cursor
+# Notation Interchange File Format (big-endian only)
+>8     string          NIFF            \b, Notation Interchange File Format
+# SoundFont 2 <mpruett@sgi.com>
+>8     string          sfbk            SoundFont/Bank
+#------------------------------------------------------------------------------
+# Console game magic
+# Toby Deshane <hac@shoelace.digivill.net>
+#    ines:  file(1) magic for Marat's iNES Nintendo Entertainment System
+#           ROM dump format
+
+0 string NES\032 iNES ROM dump,
+>4 byte  x     %dx16k PRG
+>5 byte  x     \b, %dx8k CHR
+>6 byte&0x01  =0x1  \b, [Vert.]
+>6 byte&0x01  =0x0  \b, [Horiz.]
+>6 byte&0x02  =0x2  \b, [SRAM]
+>6 byte&0x04  =0x4  \b, [Trainer]
+>6 byte&0x04  =0x8  \b, [4-Scr]
+
+#------------------------------------------------------------------------------
+# gameboy:  file(1) magic for the Nintendo (Color) Gameboy raw ROM format
+#
+0x104 belong 0xCEED6666 Gameboy ROM:
+>0x134 string >\0 "%.16s"
+>0x146 byte 0x03  \b,[SGB]
+>0x147 byte 0x00  \b, [ROM ONLY]
+>0x147 byte 0x01  \b, [ROM+MBC1]
+>0x147 byte 0x02  \b, [ROM+MBC1+RAM]
+>0x147 byte 0x03  \b, [ROM+MBC1+RAM+BATT]
+>0x147 byte 0x05  \b, [ROM+MBC2]
+>0x147 byte 0x06  \b, [ROM+MBC2+BATTERY]
+>0x147 byte 0x08  \b, [ROM+RAM]
+>0x147 byte 0x09  \b, [ROM+RAM+BATTERY]
+>0x147 byte 0x0B  \b, [ROM+MMM01]
+>0x147 byte 0x0C  \b, [ROM+MMM01+SRAM]
+>0x147 byte 0x0D  \b, [ROM+MMM01+SRAM+BATT]
+>0x147 byte 0x0F  \b, [ROM+MBC3+TIMER+BATT]
+>0x147 byte 0x10  \b, [ROM+MBC3+TIMER+RAM+BATT]
+>0x147 byte 0x11  \b, [ROM+MBC3]
+>0x147 byte 0x12  \b, [ROM+MBC3+RAM]
+>0x147 byte 0x13  \b, [ROM+MBC3+RAM+BATT]
+>0x147 byte 0x19  \b, [ROM+MBC5]
+>0x147 byte 0x1A  \b, [ROM+MBC5+RAM]
+>0x147 byte 0x1B  \b, [ROM+MBC5+RAM+BATT]
+>0x147 byte 0x1C  \b, [ROM+MBC5+RUMBLE]
+>0x147 byte 0x1D  \b, [ROM+MBC5+RUMBLE+SRAM]
+>0x147 byte 0x1E  \b, [ROM+MBC5+RUMBLE+SRAM+BATT]
+>0x147 byte 0x1F  \b, [Pocket Camera]
+>0x147 byte 0xFD  \b, [Bandai TAMA5]
+>0x147 byte 0xFE  \b, [Hudson HuC-3]
+>0x147 byte 0xFF  \b, [Hudson HuC-1]
+
+>0x148 byte 0     \b, ROM: 256Kbit
+>0x148 byte 1     \b, ROM: 512Kbit
+>0x148 byte 2     \b, ROM: 1Mbit
+>0x148 byte 3     \b, ROM: 2Mbit
+>0x148 byte 4     \b, ROM: 4Mbit
+>0x148 byte 5     \b, ROM: 8Mbit
+>0x148 byte 6     \b, ROM: 16Mbit
+>0x148 byte 0x52  \b, ROM: 9Mbit
+>0x148 byte 0x53  \b, ROM: 10Mbit
+>0x148 byte 0x54  \b, ROM: 12Mbit
+
+>0x149 byte 1     \b, RAM: 16Kbit
+>0x149 byte 2     \b, RAM: 64Kbit
+>0x149 byte 3     \b, RAM: 128Kbit
+>0x149 byte 4     \b, RAM: 1Mbit
+
+#>0x14e long  x     \b, CRC: %x
+
+#------------------------------------------------------------------------------
+# genesis:  file(1) magic for the Sega MegaDrive/Genesis raw ROM format
+#
+0x100 string SEGA  Sega MegaDrive/Genesis raw ROM dump
+>0x120 string >\0 Name: "%.16s"
+>0x110 string >\0 %.16s
+>0x1B0 string RA with SRAM
+
+#------------------------------------------------------------------------------
+# genesis:  file(1) magic for the Super MegaDrive ROM dump format
+#
+0x280 string EAGN  Super MagicDrive ROM dump
+>0 byte x %dx16k blocks
+>2 byte 0 \b, last in series or standalone
+>2 byte >0 \b, split ROM
+>8 byte 0xAA
+>9 byte 0xBB
+
+#------------------------------------------------------------------------------
+# genesis:  file(1) alternate magic for the Super MegaDrive ROM dump format
+#
+0x280 string EAMG  Super MagicDrive ROM dump
+>0 byte x %dx16k blocks
+>2 byte x \b, last in series or standalone
+>8 byte 0xAA
+>9 byte 0xBB
+
+#------------------------------------------------------------------------------
+# smsgg:  file(1) magic for Sega Master System and Game Gear ROM dumps
+#
+# Does not detect all images.  Very preliminary guesswork.  Need more data
+# on format.
+#
+# FIXME: need a little more info...;P
+#
+#0 byte 0xF3
+#>1 byte 0xED  Sega Master System/Game Gear ROM dump
+#>1 byte 0x31  Sega Master System/Game Gear ROM dump
+#>1 byte 0xDB  Sega Master System/Game Gear ROM dump
+#>1 byte 0xAF  Sega Master System/Game Gear ROM dump
+#>1 byte 0xC3  Sega Master System/Game Gear ROM dump
+
+#------------------------------------------------------------------------------
+# dreamcast:  file(1) uncertain magic for the Sega Dreamcast VMU image format
+#
+0 belong 0x21068028   Sega Dreamcast VMU game image
+0 string LCDi         Dream Animator file
+
+#------------------------------------------------------------------------------
+# v64: file(1) uncertain magic for the V64 format N64 ROM dumps
+#
+0 belong 0x37804012    V64 Nintendo 64 ROM dump
+
+#------------------------------------------------------------------------------
+# msx: file(1) magic for MSX game cartridge dumps
+# Too simple - MPi
+#0 beshort 0x4142 MSX game cartridge dump 
+
+#------------------------------------------------------------------------------
+# Sony Playstation executables (Adam Sjoegren <asjo@diku.dk>) :
+0      string  PS-X\ EXE       Sony Playstation executable
+#  Area:
+>113   string  x               (%s)
+
+#------------------------------------------------------------------------------
+# Microsoft Xbox executables .xbe (Esa Hyytiä <ehyytia@cc.hut.fi>)
+0       string          XBEH            XBE, Microsoft Xbox executable
+# probabilistic checks whether signed or not
+>0x0004 ulelong =0x0
+>>&2    ulelong =0x0
+>>>&2   ulelong =0x0  \b, not signed
+>0x0004 ulelong >0
+>>&2    ulelong >0
+>>>&2   ulelong >0    \b, signed
+# expect base address of 0x10000
+>0x0104               ulelong =0x10000
+>>(0x0118-0x0FF60)    ulelong&0x80000007  0x80000007 \b, all regions
+>>(0x0118-0x0FF60)    ulelong&0x80000007  !0x80000007
+>>>(0x0118-0x0FF60)   ulelong >0           (regions:
+>>>>(0x0118-0x0FF60)  ulelong &0x00000001  NA
+>>>>(0x0118-0x0FF60)  ulelong &0x00000002  Japan
+>>>>(0x0118-0x0FF60)  ulelong &0x00000004  Rest_of_World
+>>>>(0x0118-0x0FF60)  ulelong &0x80000000  Manufacturer
+>>>(0x0118-0x0FF60)   ulelong >0           \b)
+
+# --------------------------------
+# Microsoft Xbox data file formats
+0       string          XIP0            XIP, Microsoft Xbox data
+0       string          XTF0            XTF, Microsoft Xbox data
+
+# Atari Lynx cartridge dump (EXE/BLL header)
+# From: "Stefan A. Haubenthal" <polluks@web.de>
+
+0      beshort         0x8008          Lynx cartridge,
+>2     beshort         x               RAM start $%04x
+>6     string          BS93
+
+#------------------------------------------------------------------------------
+# Z-machine:  file(1) magic for Z-machine binaries.
+#
+# This will match ${TEX_BASE}/texmf/omega/ocp/char2uni/inbig5.ocp which
+# appears to be a version-0 Z-machine binary.
+#
+# The (false match) message is to correct that behavior.  Perhaps it is
+# not needed.
+#
+>16    belong&0xfe00f0f0       0x3030  Infocom game data
+>0     ubyte                   0       (false match)
+>0     ubyte                   >0      (Z-machine %d,
+>>2    ubeshort                x       Release %d /
+>>18   string                  >\0     Serial %.6s)
+
+#------------------------------------------------------------------------------
+# Glulx:  file(1) magic for Glulx binaries.
+#
+# I haven't checked for false matches yet.
+#
+0      string                  Glul    Glulx game data
+
+
+
+# These go at the end of the iff rules
+#
+# I don't see why these might collide with anything else.
+#
+# Interactive Fiction related formats
+#
+>8     string          IFRS            \b, Blorb Interactive Fiction
+>>24   string          Exec            with executable chunk
+>8     string          IFZS            \b, Z-machine or Glulx saved game file (Quetzal)
+
+#------------------------------------------------------------------------------
+# DEC SRC Virtual Paper: Lectern files
+# Karl M. Hegbloom <karlheg@inetarena.com>
+0      string  lect    DEC SRC Virtual Paper Lectern file
+
+#------------------------------------------------------------------------------
+# visx:  file(1) magic for Visx format files
+#
+0      short           0x5555          VISX image file
+>2     byte            0               (zero)
+>2     byte            1               (unsigned char)
+>2     byte            2               (short integer)
+>2     byte            3               (float 32)
+>2     byte            4               (float 64)
+>2     byte            5               (signed char)
+>2     byte            6               (bit-plane)
+>2     byte            7               (classes)
+>2     byte            8               (statistics)
+>2     byte            10              (ascii text)
+>2     byte            15              (image segments)
+>2     byte            100             (image set)
+>2     byte            101             (unsigned char vector)
+>2     byte            102             (short integer vector)
+>2     byte            103             (float 32 vector)
+>2     byte            104             (float 64 vector)
+>2     byte            105             (signed char vector)
+>2     byte            106             (bit plane vector)
+>2     byte            121             (feature vector)
+>2     byte            122             (feature vector library)
+>2     byte            124             (chain code)
+>2     byte            126             (bit vector)
+>2     byte            130             (graph)
+>2     byte            131             (adjacency graph)
+>2     byte            132             (adjacency graph library)
+>2     string          .VISIX          (ascii text)
+#------------------------------------------------------------------------------
+# varied.script:  file(1) magic for various interpreter scripts
+
+0      string          #!\ /                   a
+>3     string          >\0                     %s script text executable
+0      string          #!\     /               a
+>3     string          >\0                     %s script text executable
+0      string          #!/                     a
+>2     string          >\0                     %s script text executable
+0      string          #!\                     script text executable
+>3     string          >\0                     for %s
+
+# ------------------------------------------------------------------------
+# ti-8x: file(1) magic for the TI-8x and TI-9x Graphing Calculators.
+#
+# From: Ryan McGuire (rmcguire@freenet.columbus.oh.us).
+#
+# Update: Romain Lievin (roms@lpg.ticalc.org).
+#
+# NOTE: This list is not complete.
+# Files for the TI-80 and TI-81 are pretty rare. I'm not going to put the
+# program/group magic numbers in here because I cannot find any.
+0              string          **TI80**        TI-80 Graphing Calculator File.
+0              string          **TI81**        TI-81 Graphing Calculator File.
+#
+# Magic Numbers for the TI-73
+#
+0              string          **TI73**        TI-73 Graphing Calculator
+>0x00003B      byte            0x00            (real number)
+>0x00003B      byte            0x01            (list)
+>0x00003B      byte            0x02            (matrix)
+>0x00003B      byte            0x03            (equation)
+>0x00003B      byte            0x04            (string)
+>0x00003B      byte            0x05            (program)
+>0x00003B      byte            0x06            (assembly program)
+>0x00003B      byte            0x07            (picture)
+>0x00003B      byte            0x08            (gdb)
+>0x00003B      byte            0x0C            (complex number)
+>0x00003B      byte            0x0F            (window settings)
+>0x00003B      byte            0x10            (zoom)
+>0x00003B      byte            0x11            (table setup)
+>0x00003B      byte            0x13            (backup)
+
+# Magic Numbers for the TI-82
+#
+0              string          **TI82**        TI-82 Graphing Calculator
+>0x00003B      byte            0x00            (real)
+>0x00003B      byte            0x01            (list)
+>0x00003B      byte            0x02            (matrix)
+>0x00003B      byte            0x03            (Y-variable)
+>0x00003B      byte            0x05            (program)
+>0x00003B      byte            0x06            (protected prgm)
+>0x00003B      byte            0x07            (picture)
+>0x00003B      byte            0x08            (gdb)
+>0x00003B      byte            0x0B            (window settings)
+>0x00003B      byte            0x0C            (window settings)
+>0x00003B      byte            0x0D            (table setup)
+>0x00003B      byte            0x0E            (screenshot)
+>0x00003B      byte            0x0F            (backup)
+#
+# Magic Numbers for the TI-83
+#
+0              string          **TI83**        TI-83 Graphing Calculator
+>0x00003B      byte            0x00            (real)
+>0x00003B      byte            0x01            (list)
+>0x00003B      byte            0x02            (matrix)
+>0x00003B      byte            0x03            (Y-variable)
+>0x00003B      byte            0x04            (string)
+>0x00003B      byte            0x05            (program)
+>0x00003B      byte            0x06            (protected prgm)
+>0x00003B      byte            0x07            (picture)
+>0x00003B      byte            0x08            (gdb)
+>0x00003B      byte            0x0B            (window settings)
+>0x00003B      byte            0x0C            (window settings)
+>0x00003B      byte            0x0D            (table setup)
+>0x00003B      byte            0x0E            (screenshot)
+>0x00003B      byte            0x13            (backup)
+#
+# Magic Numbers for the TI-83+
+#
+0              string          **TI83F*        TI-83+ Graphing Calculator
+>0x00003B      byte            0x00            (real number)
+>0x00003B      byte            0x01            (list)
+>0x00003B      byte            0x02            (matrix)
+>0x00003B      byte            0x03            (equation)
+>0x00003B      byte            0x04            (string)
+>0x00003B      byte            0x05            (program)
+>0x00003B      byte            0x06            (assembly program)
+>0x00003B      byte            0x07            (picture)
+>0x00003B      byte            0x08            (gdb)
+>0x00003B      byte            0x0C            (complex number)
+>0x00003B      byte            0x0F            (window settings)
+>0x00003B      byte            0x10            (zoom)
+>0x00003B      byte            0x11            (table setup)
+>0x00003B      byte            0x13            (backup)
+>0x00003B      byte            0x15            (application variable)
+>0x00003B      byte            0x17            (group of variable)
+
+#
+# Magic Numbers for the TI-85
+#
+0              string          **TI85**        TI-85 Graphing Calculator
+>0x00003B      byte            0x00            (real number)
+>0x00003B      byte            0x01            (complex number)
+>0x00003B      byte            0x02            (real vector)
+>0x00003B      byte            0x03            (complex vector)
+>0x00003B      byte            0x04            (real list)
+>0x00003B      byte            0x05            (complex list)
+>0x00003B      byte            0x06            (real matrix)
+>0x00003B      byte            0x07            (complex matrix)
+>0x00003B      byte            0x08            (real constant)
+>0x00003B      byte            0x09            (complex constant)
+>0x00003B      byte            0x0A            (equation)
+>0x00003B      byte            0x0C            (string)
+>0x00003B      byte            0x0D            (function GDB)
+>0x00003B      byte            0x0E            (polar GDB)
+>0x00003B      byte            0x0F            (parametric GDB)
+>0x00003B      byte            0x10            (diffeq GDB)
+>0x00003B      byte            0x11            (picture)
+>0x00003B      byte            0x12            (program)
+>0x00003B      byte            0x13            (range)
+>0x00003B      byte            0x17            (window settings)
+>0x00003B      byte            0x18            (window settings)
+>0x00003B      byte            0x19            (window settings)
+>0x00003B      byte            0x1A            (window settings)
+>0x00003B      byte            0x1B            (zoom)
+>0x00003B      byte            0x1D            (backup)
+>0x00003B      byte            0x1E            (unknown)
+>0x00003B      byte            0x2A            (equation)
+>0x000032      string          ZS4             - ZShell Version 4 File.
+>0x000032      string          ZS3             - ZShell Version 3 File.
+#
+# Magic Numbers for the TI-86
+#
+0              string          **TI86**        TI-86 Graphing Calculator
+>0x00003B      byte            0x00            (real number)
+>0x00003B      byte            0x01            (complex number)
+>0x00003B      byte            0x02            (real vector)
+>0x00003B      byte            0x03            (complex vector)
+>0x00003B      byte            0x04            (real list)
+>0x00003B      byte            0x05            (complex list)
+>0x00003B      byte            0x06            (real matrix)
+>0x00003B      byte            0x07            (complex matrix)
+>0x00003B      byte            0x08            (real constant)
+>0x00003B      byte            0x09            (complex constant)
+>0x00003B      byte            0x0A            (equation)
+>0x00003B      byte            0x0C            (string)
+>0x00003B      byte            0x0D            (function GDB)
+>0x00003B      byte            0x0E            (polar GDB)
+>0x00003B      byte            0x0F            (parametric GDB)
+>0x00003B      byte            0x10            (diffeq GDB)
+>0x00003B      byte            0x11            (picture)
+>0x00003B      byte            0x12            (program)
+>0x00003B      byte            0x13            (range)
+>0x00003B      byte            0x17            (window settings)
+>0x00003B      byte            0x18            (window settings)
+>0x00003B      byte            0x19            (window settings)
+>0x00003B      byte            0x1A            (window settings)
+>0x00003B      byte            0x1B            (zoom)
+>0x00003B      byte            0x1D            (backup)
+>0x00003B      byte            0x1E            (unknown)
+>0x00003B      byte            0x2A            (equation)
+#
+# Magic Numbers for the TI-89
+#
+0              string          **TI89**        TI-89 Graphing Calculator
+>0x000048      byte            0x00            (expression)
+>0x000048      byte            0x04            (list)
+>0x000048      byte            0x06            (matrix)
+>0x000048      byte            0x0A            (data)
+>0x000048      byte            0x0B            (text)
+>0x000048      byte            0x0C            (string)
+>0x000048      byte            0x0D            (graphic data base)
+>0x000048      byte            0x0E            (figure)
+>0x000048      byte            0x10            (picture)
+>0x000048      byte            0x12            (program)
+>0x000048      byte            0x13            (function)
+>0x000048      byte            0x14            (macro)
+>0x000048      byte            0x1C            (zipped)
+>0x000048      byte            0x21            (assembler)
+#
+# Magic Numbers for the TI-92
+#
+0              string          **TI92**        TI-92 Graphing Calculator
+>0x000048      byte            0x00            (expression)
+>0x000048      byte            0x04            (list)
+>0x000048      byte            0x06            (matrix)
+>0x000048      byte            0x0A            (data)
+>0x000048      byte            0x0B            (text)
+>0x000048      byte            0x0C            (string)
+>0x000048      byte            0x0D            (graphic data base)
+>0x000048      byte            0x0E            (figure)
+>0x000048      byte            0x10            (picture)
+>0x000048      byte            0x12            (program)
+>0x000048      byte            0x13            (function)
+>0x000048      byte            0x14            (macro)
+>0x000048      byte            0x1D            (backup)
+#
+# Magic Numbers for the TI-92+/V200
+#
+0              string          **TI92P*        TI-92+/V200 Graphing Calculator
+>0x000048      byte            0x00            (expression)
+>0x000048      byte            0x04            (list)
+>0x000048      byte            0x06            (matrix)
+>0x000048      byte            0x0A            (data)
+>0x000048      byte            0x0B            (text)
+>0x000048      byte            0x0C            (string)
+>0x000048      byte            0x0D            (graphic data base)
+>0x000048      byte            0x0E            (figure)
+>0x000048      byte            0x10            (picture)
+>0x000048      byte            0x12            (program)
+>0x000048      byte            0x13            (function)
+>0x000048      byte            0x14            (macro)
+>0x000048      byte            0x1C            (zipped)
+>0x000048      byte            0x21            (assembler)
+#
+# Magic Numbers for the TI-73/83+/89/92+/V200 FLASH upgrades
+#
+0x0000016      string          Advanced        TI-XX Graphing Calculator (FLASH)
+0              string          **TIFL**        TI-XX Graphing Calculator (FLASH)
+>8             byte            >0              - Revision %d
+>>9            byte            x               \b.%d,
+>12            byte            >0              Revision date %02x
+>>13           byte            x               \b/%02x
+>>14           beshort         x               \b/%04x,
+>17            string          >/0             name: '%s',
+>48            byte            0x74            device: TI-73,
+>48            byte            0x73            device: TI-83+,
+>48            byte            0x98            device: TI-89,
+>48            byte            0x88            device: TI-92+,
+>49            byte            0x23            type: OS upgrade,
+>49            byte            0x24            type: application,
+>49            byte            0x25            type: certificate,
+>49            byte            0x3e            type: license,
+>74            lelong          >0              size: %ld bytes
+
+# VTi & TiEmu skins (TI Graphing Calculators).
+# From: Romain Lievin (roms@lpg.ticalc.org).
+# Magic Numbers for the VTi skins
+0               string          VTI            Virtual TI skin
+>3             string          v               - Version
+>>4            byte            >0              \b %c
+>>6            byte            x               \b.%c
+# Magic Numbers for the TiEmu skins
+0              string          TiEmu           TiEmu skin
+>6              string          v               - Version
+>>7             byte            >0              \b %c
+>>9             byte            x               \b.%c
+>>10           byte            x               \b%c
+
+#------------------------------------------------------------------------------
+# c-lang:  file(1) magic for C programs (or REXX)
+#
+
+# XPM icons (Greg Roelofs, newt@uchicago.edu)
+# if you uncomment "/*" for C/REXX below, also uncomment this entry
+#0     string          /*\ XPM\ */     X pixmap image data
+
+# this first will upset you if you're a PL/1 shop...
+# in which case rm it; ascmagic will catch real C programs
+#0     string          /*              C or REXX program text
+#0     string          //              C++ program text
+
+# From: Mikhail Teterin <mi@aldan.algebra.com> 
+0      string          cscope          cscope reference data
+>7     string          x               version %.2s
+# We skip the path here, because it is often long (so file will
+# truncate it) and mostly redundant.
+# The inverted index functionality was added some time betwen
+# versions 11 and 15, so look for -q if version is above 14:
+>7     string          >14
+>>10   regex           .+\ -q\         with inverted index
+>10    regex           .+\ -c\         text (non-compressed)
+#  Digital UNIX - Info
+#
+0      string  !<arch>\n________64E    Alpha archive
+>22    string  X                       -- out of date
+#
+# Alpha COFF Based Executables
+# The stripped stuff really needs to be an 8 byte (64 bit) compare,
+# but this works
+0      leshort         0x183           COFF format alpha
+>22    leshort&020000  &010000         sharable library,
+>22    leshort&020000  ^010000         dynamically linked,
+>24    leshort         0410            pure
+>24    leshort         0413            demand paged
+>8     lelong          >0              executable or object module, not stripped
+>8     lelong          0
+>>12   lelong          0               executable or object module, stripped
+>>12   lelong          >0              executable or object module, not stripped
+>27     byte            >0              - version %d.
+>26     byte            >0              %d-
+>28     leshort         >0              %d
+#
+# The next is incomplete, we could tell more about this format,
+# but its not worth it.
+0      leshort         0x188   Alpha compressed COFF
+0      leshort         0x18f   Alpha u-code object
+#
+#
+# Some other interesting Digital formats,
+0      string  \377\377\177            ddis/ddif
+0      string  \377\377\174            ddis/dots archive
+0      string  \377\377\176            ddis/dtif table data
+0      string  \033c\033               LN03 output
+0      long    04553207                X image
+#
+0      string  !<PDF>!\n               profiling data file
+#
+# Locale data tables (MIPS and Alpha).
+#
+0      short           0x0501          locale data table
+>6     short           0x24            for MIPS
+>6     short           0x40            for Alpha
+# ATSC A/53 aka AC-3 aka Dolby Digital <ashitaka@gmx.at>
+# from http://www.atsc.org/standards/a_52a.pdf
+# corrections, additions, etc. are always welcome!
+#
+# syncword
+0       beshort         0x0b77  ATSC A/52 aka AC-3 aka Dolby Digital stream,
+# fscod
+>4      byte&0xc0       0x00    48 kHz,
+>4      byte&0xc0       0x40    44.1 kHz,
+>4      byte&0xc0       0x80    32 kHz,
+# is this one used for 96 kHz?
+>4      byte&0xc0       0xc0    reserved frequency,
+#
+>5     byte&7 = 0              \b, complete main (CM)
+>5     byte&7 = 1              \b, music and effects (ME)
+>5     byte&7 = 2              \b, visually impaired (VI)
+>5     byte&7 = 3              \b, hearing impaired (HI)
+>5     byte&7 = 4              \b, dialogue (D)
+>5     byte&7 = 5              \b, commentary (C)
+>5     byte&7 = 6              \b, emergency (E)
+# acmod
+>6      byte&0xe0       0x00    1+1 front,
+>6      byte&0xe0       0x20    1 front/0 rear,
+>6      byte&0xe0       0x40    2 front/0 rear,
+>6      byte&0xe0       0x60    3 front/0 rear,
+>6      byte&0xe0       0x80    2 front/1 rear,
+>6      byte&0xe0       0xa0    3 front/1 rear,
+>6      byte&0xe0       0xc0    2 front/2 rear,
+>6      byte&0xe0       0xe0    3 front/2 rear,
+# lfeon (these may be incorrect)
+>7      byte&0x40       0x00    LFE off,
+>7      byte&0x40       0x40    LFE on,
+#
+>4     byte&0x3e = 0x00        \b, 32 kbit/s
+>4     byte&0x3e = 0x02        \b, 40 kbit/s
+>4     byte&0x3e = 0x04        \b, 48 kbit/s
+>4     byte&0x3e = 0x06        \b, 56 kbit/s
+>4     byte&0x3e = 0x08        \b, 64 kbit/s
+>4     byte&0x3e = 0x0a        \b, 80 kbit/s
+>4     byte&0x3e = 0x0c        \b, 96 kbit/s
+>4     byte&0x3e = 0x0e        \b, 112 kbit/s
+>4     byte&0x3e = 0x10        \b, 128 kbit/s
+>4     byte&0x3e = 0x12        \b, 160 kbit/s
+>4     byte&0x3e = 0x14        \b, 192 kbit/s
+>4     byte&0x3e = 0x16        \b, 224 kbit/s
+>4     byte&0x3e = 0x18        \b, 256 kbit/s
+>4     byte&0x3e = 0x1a        \b, 320 kbit/s
+>4     byte&0x3e = 0x1c        \b, 384 kbit/s
+>4     byte&0x3e = 0x1e        \b, 448 kbit/s
+>4     byte&0x3e = 0x20        \b, 512 kbit/s
+>4     byte&0x3e = 0x22        \b, 576 kbit/s
+>4     byte&0x3e = 0x24        \b, 640 kbit/s
+# dsurmod (these may be incorrect)
+>6      beshort&0x0180  0x0000  Dolby Surround not indicated
+>6      beshort&0x0180  0x0080  not Dolby Surround encoded
+>6      beshort&0x0180  0x0100  Dolby Surround encoded
+>6      beshort&0x0180  0x0180  reserved Dolby Surround mode
+
+#------------------------------------------------------------------------------
+# ACE/gr and Grace type files - PLEASE DO NOT REMOVE THIS LINE
+#
+# ACE/gr binary
+0      string  \000\000\0001\000\000\0000\000\000\0000\000\000\0002\000\000\0000\000\000\0000\000\000\0003             old ACE/gr binary file
+>39    byte    >0                      - version %c
+# ACE/gr ascii
+0      string  #\ xvgr\ parameter\ file        ACE/gr ascii file
+0      string  #\ xmgr\ parameter\ file        ACE/gr ascii file
+0      string  #\ ACE/gr\ parameter\ file      ACE/gr ascii file
+# Grace projects
+0      string  #\ Grace\ project\ file         Grace project file
+>23    string  @version\                       (version
+>>32   byte    >0                              %c
+>>33   string  >\0                             \b.%.2s
+>>35   string  >\0                             \b.%.2s)
+# ACE/gr fit description files
+0      string  #\ ACE/gr\ fit\ description\    ACE/gr fit description file
+# end of ACE/gr and Grace type files - PLEASE DO NOT REMOVE THIS LINE
+
+#------------------------------------------------------------------------------
+# ibm370:  file(1) magic for IBM 370 and compatibles.
+#
+# "ibm370" said that 0x15d == 0535 was "ibm 370 pure executable".
+# What the heck *is* "USS/370"?
+# AIX 4.1's "/etc/magic" has
+#
+#      0       short           0535            370 sysV executable 
+#      >12     long            >0              not stripped
+#      >22     short           >0              - version %d
+#      >30     long            >0              - 5.2 format
+#      0       short           0530            370 sysV pure executable 
+#      >12     long            >0              not stripped
+#      >22     short           >0              - version %d
+#      >30     long            >0              - 5.2 format
+#
+# instead of the "USS/370" versions of the same magic numbers.
+#
+0      beshort         0537            370 XA sysV executable 
+>12    belong          >0              not stripped
+>22    beshort         >0              - version %d
+>30    belong          >0              - 5.2 format
+0      beshort         0532            370 XA sysV pure executable 
+>12    belong          >0              not stripped
+>22    beshort         >0              - version %d
+>30    belong          >0              - 5.2 format
+0      beshort         054001          370 sysV pure executable
+>12    belong          >0              not stripped
+0      beshort         055001          370 XA sysV pure executable
+>12    belong          >0              not stripped
+0      beshort         056401          370 sysV executable
+>12    belong          >0              not stripped
+0      beshort         057401          370 XA sysV executable
+>12    belong          >0              not stripped
+0       beshort                0531            SVR2 executable (Amdahl-UTS)
+>12    belong          >0              not stripped
+>24     belong         >0              - version %ld
+0      beshort         0534            SVR2 pure executable (Amdahl-UTS)
+>12    belong          >0              not stripped
+>24    belong          >0              - version %ld
+0      beshort         0530            SVR2 pure executable (USS/370)
+>12    belong          >0              not stripped
+>24    belong          >0              - version %ld
+0      beshort         0535            SVR2 executable (USS/370)
+>12    belong          >0              not stripped
+>24    belong          >0              - version %ld
+
+#------------------------------------------------------------------------------
+# images:  file(1) magic for image formats (see also "iff")
+#
+# originally from jef@helios.ee.lbl.gov (Jef Poskanzer),
+# additions by janl@ifi.uio.no as well as others. Jan also suggested
+# merging several one- and two-line files into here.
+#
+# little magic: PCX (first byte is 0x0a)
+
+# Targa - matches `povray', `ppmtotga' and `xv' outputs
+# by Philippe De Muyter <phdm@macqel.be>
+# at 2, byte ImgType must be 1, 2, 3, 9, 10 or 11
+# at 1, byte CoMapType must be 1 if ImgType is 1 or 9, 0 otherwise
+# at 3, leshort Index is 0 for povray, ppmtotga and xv outputs
+# `xv' recognizes only a subset of the following (RGB with pixelsize = 24)
+# `tgatoppm' recognizes a superset (Index may be anything)
+1      belong&0xfff7ffff       0x01010000      Targa image data - Map
+>2     byte&8                  8               - RLE
+>12    leshort                 >0              %hd x
+>14    leshort                 >0              %hd
+1      belong&0xfff7ffff       0x00020000      Targa image data - RGB
+>2     byte&8                  8               - RLE
+>12    leshort                 >0              %hd x
+>14    leshort                 >0              %hd
+1      belong&0xfff7ffff       0x00030000      Targa image data - Mono
+>2     byte&8                  8               - RLE
+>12    leshort                 >0              %hd x
+>14    leshort                 >0              %hd
+
+# PBMPLUS images
+# The next byte following the magic is always whitespace.
+0      string          P1              Netpbm PBM image text
+0      string          P2              Netpbm PGM image text
+0      string          P3              Netpbm PPM image text
+0      string          P4              Netpbm PBM "rawbits" image data
+0      string          P5              Netpbm PGM "rawbits" image data
+0      string          P6              Netpbm PPM "rawbits" image data
+0      string          P7              Netpbm PAM image file
+
+# From: bryanh@giraffe-data.com (Bryan Henderson)
+0      string          \117\072        Solitaire Image Recorder format
+>4     string          \013            MGI Type 11
+>4     string          \021            MGI Type 17
+0      string          .MDA            MicroDesign data
+>21    byte            48              version 2
+>21    byte            51              version 3
+0      string          .MDP            MicroDesign page data
+>21    byte            48              version 2
+>21    byte            51              version 3
+
+# NIFF (Navy Interchange File Format, a modification of TIFF) images
+0      string          IIN1            NIFF image data
+
+# Tag Image File Format, from Daniel Quinlan (quinlan@yggdrasil.com)
+# The second word of TIFF files is the TIFF version number, 42, which has
+# never changed.  The TIFF specification recommends testing for it.
+0      string          MM\x00\x2a      TIFF image data, big-endian
+0      string          II\x2a\x00      TIFF image data, little-endian
+
+# PNG [Portable Network Graphics, or "PNG's Not GIF"] images
+# (Greg Roelofs, newt@uchicago.edu)
+# (Albert Cahalan, acahalan@cs.uml.edu)
+#
+# 137 P N G \r \n ^Z \n [4-byte length] H E A D [HEAD data] [HEAD crc] ...
+#
+0      string          \x89PNG         PNG image data,
+>4     belong          !0x0d0a1a0a     CORRUPTED,
+>4     belong          0x0d0a1a0a
+>>16   belong          x               %ld x
+>>20   belong          x               %ld,
+>>24   byte            x               %d-bit
+>>25   byte            0               grayscale,
+>>25   byte            2               \b/color RGB,
+>>25   byte            3               colormap,
+>>25   byte            4               gray+alpha,
+>>25   byte            6               \b/color RGBA,
+#>>26  byte            0               deflate/32K,
+>>28   byte            0               non-interlaced
+>>28   byte            1               interlaced
+1      string          PNG             PNG image data, CORRUPTED
+
+# GIF
+0      string          GIF8            GIF image data
+>4     string          7a              \b, version 8%s,
+>4     string          9a              \b, version 8%s,
+>6     leshort         >0              %hd x
+>8     leshort         >0              %hd
+#>10   byte            &0x80           color mapped,
+#>10   byte&0x07       =0x00           2 colors
+#>10   byte&0x07       =0x01           4 colors
+#>10   byte&0x07       =0x02           8 colors
+#>10   byte&0x07       =0x03           16 colors
+#>10   byte&0x07       =0x04           32 colors
+#>10   byte&0x07       =0x05           64 colors
+#>10   byte&0x07       =0x06           128 colors
+#>10   byte&0x07       =0x07           256 colors
+
+# ITC (CMU WM) raster files.  It is essentially a byte-reversed Sun raster,
+# 1 plane, no encoding.
+0      string          \361\0\100\273  CMU window manager raster image data
+>4     lelong          >0              %d x
+>8     lelong          >0              %d,
+>12    lelong          >0              %d-bit
+
+# Magick Image File Format
+0      string          id=ImageMagick  MIFF image data
+
+# Artisan
+0      long            1123028772      Artisan image data
+>4     long            1               \b, rectangular 24-bit
+>4     long            2               \b, rectangular 8-bit with colormap
+>4     long            3               \b, rectangular 32-bit (24-bit with matte)
+
+# FIG (Facility for Interactive Generation of figures), an object-based format
+0      string          #FIG            FIG image text
+>5     string          x               \b, version %.3s
+
+# PHIGS
+0      string          ARF_BEGARF              PHIGS clear text archive
+0      string          @(#)SunPHIGS            SunPHIGS
+# version number follows, in the form m.n
+>40    string          SunBin                  binary
+>32    string          archive                 archive
+
+# GKS (Graphics Kernel System)
+0      string          GKSM            GKS Metafile
+>24    string          SunGKS          \b, SunGKS
+
+# CGM image files
+0      string          BEGMF           clear text Computer Graphics Metafile
+# XXX - questionable magic
+0      beshort&0xffe0  0x0020          binary Computer Graphics Metafile
+0      beshort         0x3020          character Computer Graphics Metafile
+
+# MGR bitmaps  (Michael Haardt, u31b3hs@pool.informatik.rwth-aachen.de)
+0      string  yz      MGR bitmap, modern format, 8-bit aligned
+0      string  zz      MGR bitmap, old format, 1-bit deep, 16-bit aligned
+0      string  xz      MGR bitmap, old format, 1-bit deep, 32-bit aligned
+0      string  yx      MGR bitmap, modern format, squeezed
+
+# Fuzzy Bitmap (FBM) images
+0      string          %bitmap\0       FBM image data
+>30    long            0x31            \b, mono
+>30    long            0x33            \b, color
+
+# facsimile data
+1      string          PC\ Research,\ Inc      group 3 fax data
+>29    byte            0               \b, normal resolution (204x98 DPI)
+>29    byte            1               \b, fine resolution (204x196 DPI)
+# From: Herbert Rosmanith <herp@wildsau.idv.uni.linz.at>
+0      string          Sfff            structured fax file
+
+
+# PC bitmaps (OS/2, Windoze BMP files)  (Greg Roelofs, newt@uchicago.edu)
+0      string          BM              PC bitmap data
+>14    leshort         12              \b, OS/2 1.x format
+>>18   leshort         x               \b, %d x
+>>20   leshort         x               %d
+>14    leshort         64              \b, OS/2 2.x format
+>>18   leshort         x               \b, %d x
+>>20   leshort         x               %d
+>14    leshort         40              \b, Windows 3.x format
+>>18   lelong          x               \b, %d x
+>>22   lelong          x               %d x
+>>28   leshort         x               %d
+# Too simple - MPi
+#0     string          IC              PC icon data
+#0     string          PI              PC pointer image data
+#0     string          CI              PC color icon data
+#0     string          CP              PC color pointer image data
+# Conflicts with other entries [BABYL]
+#0     string          BA              PC bitmap array data
+
+# XPM icons (Greg Roelofs, newt@uchicago.edu)
+# note possible collision with C/REXX entry in c-lang; currently commented out
+0      string          /*\ XPM\ */     X pixmap image text
+
+# Utah Raster Toolkit RLE images (janl@ifi.uio.no)
+0      leshort         0xcc52          RLE image data,
+>6     leshort         x               %d x
+>8     leshort         x               %d
+>2     leshort         >0              \b, lower left corner: %d
+>4     leshort         >0              \b, lower right corner: %d
+>10    byte&0x1        =0x1            \b, clear first
+>10    byte&0x2        =0x2            \b, no background
+>10    byte&0x4        =0x4            \b, alpha channel
+>10    byte&0x8        =0x8            \b, comment
+>11    byte            >0              \b, %d color channels
+>12    byte            >0              \b, %d bits per pixel
+>13    byte            >0              \b, %d color map channels
+
+# image file format (Robert Potter, potter@cs.rochester.edu)
+0      string          Imagefile\ version-     iff image data
+# this adds the whole header (inc. version number), informative but longish
+>10    string          >\0             %s
+
+# Sun raster images, from Daniel Quinlan (quinlan@yggdrasil.com)
+0      belong          0x59a66a95      Sun raster image data
+>4     belong          >0              \b, %d x
+>8     belong          >0              %d,
+>12    belong          >0              %d-bit,
+#>16   belong          >0              %d bytes long,
+>20    belong          0               old format,
+#>20   belong          1               standard,
+>20    belong          2               compressed,
+>20    belong          3               RGB,
+>20    belong          4               TIFF,
+>20    belong          5               IFF,
+>20    belong          0xffff          reserved for testing,
+>24    belong          0               no colormap
+>24    belong          1               RGB colormap
+>24    belong          2               raw colormap
+#>28   belong          >0              colormap is %d bytes long
+
+# SGI image file format, from Daniel Quinlan (quinlan@yggdrasil.com)
+#
+# See
+#      http://reality.sgi.com/grafica/sgiimage.html
+#
+0      beshort         474             SGI image data
+#>2    byte            0               \b, verbatim
+>2     byte            1               \b, RLE
+#>3    byte            1               \b, normal precision
+>3     byte            2               \b, high precision
+>4     beshort         x               \b, %d-D
+>6     beshort         x               \b, %d x
+>8     beshort         x               %d
+>10    beshort         x               \b, %d channel
+>10    beshort         !1              \bs
+>80    string          >0              \b, "%s"
+
+0      string          IT01            FIT image data
+>4     belong          x               \b, %d x
+>8     belong          x               %d x
+>12    belong          x               %d
+#
+0      string          IT02            FIT image data
+>4     belong          x               \b, %d x
+>8     belong          x               %d x
+>12    belong          x               %d
+#
+2048   string          PCD_IPI         Kodak Photo CD image pack file
+>0xe02 byte&0x03       0x00            , landscape mode
+>0xe02 byte&0x03       0x01            , portrait mode
+>0xe02 byte&0x03       0x02            , landscape mode
+>0xe02 byte&0x03       0x03            , portrait mode
+0      string          PCD_OPA         Kodak Photo CD overview pack file
+
+# FITS format.  Jeff Uphoff <juphoff@tarsier.cv.nrao.edu>
+# FITS is the Flexible Image Transport System, the de facto standard for
+# data and image transfer, storage, etc., for the astronomical community.
+# (FITS floating point formats are big-endian.)
+0      string  SIMPLE\ \ =     FITS image data
+>109   string  8               \b, 8-bit, character or unsigned binary integer
+>108   string  16              \b, 16-bit, two's complement binary integer
+>107   string  \ 32            \b, 32-bit, two's complement binary integer
+>107   string  -32             \b, 32-bit, floating point, single precision
+>107   string  -64             \b, 64-bit, floating point, double precision
+
+# other images
+0      string  This\ is\ a\ BitMap\ file       Lisp Machine bit-array-file
+0      string          !!              Bennet Yee's "face" format
+
+# From SunOS 5.5.1 "/etc/magic" - appeared right before Sun raster image
+# stuff.
+#
+0      beshort         0x1010          PEX Binary Archive
+
+# Visio drawings
+03000  string  Visio\ (TM)\ Drawing    %s
+
+# Tgif files
+0      string  \%TGIF\ x               Tgif file version %s
+
+# DICOM medical imaging data
+128    string  DICM                    DICOM medical imaging data
+
+# XWD - X Window Dump file.
+#   As described in /usr/X11R6/include/X11/XWDFile.h
+#   used by the xwd program.
+#   Bradford Castalia, idaeim, 1/01
+4      belong  7                       XWD X Window Dump image data
+>100   string  >\0                     \b, "%s"
+>16    belong  x                       \b, %dx
+>20    belong  x                       \b%dx
+>12    belong  x                       \b%d
+
+# PDS - Planetary Data System
+#   These files use Parameter Value Language in the header section.
+#   Unfortunately, there is no certain magic, but the following
+#   strings have been found to be most likely.
+0      string  NJPL1I00                PDS (JPL) image data
+2      string  NJPL1I                  PDS (JPL) image data
+0      string  CCSD3ZF                 PDS (CCSD) image data
+2      string  CCSD3Z                  PDS (CCSD) image data
+0      string  PDS_                    PDS image data
+0      string  LBLSIZE=                PDS (VICAR) image data
+
+# pM8x: ATARI STAD compressed bitmap format
+#
+# from Oskar Schirmer <schirmer@scara.com> Feb 2, 2001
+# p M 8 5/6 xx yy zz data...
+# Atari ST STAD bitmap is always 640x400, bytewise runlength compressed.
+# bytes either run horizontally (pM85) or vertically (pM86). yy is the
+# most frequent byte, xx and zz are runlength escape codes, where xx is
+# used for runs of yy.
+#
+0      string  pM85            Atari ST STAD bitmap image data (hor)
+>5     byte    0x00            (white background)
+>5     byte    0xFF            (black background)
+0      string  pM86            Atari ST STAD bitmap image data (vert)
+>5     byte    0x00            (white background)
+>5     byte    0xFF            (black background)
+
+# XXX:
+# This is bad magic 0x5249 == 'RI' conflicts with RIFF and other
+# magic.
+# SGI RICE image file <mpruett@sgi.com>
+#0     beshort 0x5249          RICE image
+#>2    beshort x               v%d
+#>4    beshort x               (%d x
+#>6    beshort x               %d)
+#>8    beshort 0               8 bit
+#>8    beshort 1               10 bit
+#>8    beshort 2               12 bit
+#>8    beshort 3               13 bit
+#>10   beshort 0               4:2:2
+#>10   beshort 1               4:2:2:4
+#>10   beshort 2               4:4:4
+#>10   beshort 3               4:4:4:4
+#>12   beshort 1               RGB
+#>12   beshort 2               CCIR601
+#>12   beshort 3               RP175
+#>12   beshort 4               YUV
+
+#------------------------------------------------------------------------------
+#
+# Marco Schmidt (marcoschmidt@users.sourceforge.net) -- an image  file format
+# for the EPOC operating system, which is used with PDAs like those from Psion
+#
+# see http://huizen.dds.nl/~frodol/psiconv/html/Index.html for a description
+# of various EPOC file formats
+
+0      string \x37\x00\x00\x10\x42\x00\x00\x10\x00\x00\x00\x00\x39\x64\x39\x47 EPOC MBM image file
+
+# PCX image files
+# From: Dan Fandrich <dan@coneharvesters.com>
+0      beshort         0x0a00  PCX ver. 2.5 image data
+0      beshort         0x0a02  PCX ver. 2.8 image data, with palette
+0      beshort         0x0a03  PCX ver. 2.8 image data, without palette
+0      beshort         0x0a04  PCX for Windows image data
+0      beshort         0x0a05  PCX ver. 3.0 image data
+>4     leshort         x      bounding box [%hd,
+>6     leshort         x      %hd] -
+>8     leshort         x      [%hd,
+>10    leshort         x      %hd],
+>65    byte            >1      %d planes each of
+>3     byte            x       %hhd-bit
+>68    byte            0       image,
+>68    byte            1       colour,
+>68    byte            2       grayscale,
+>68    byte            >2      image,
+>68    byte            <0      image,
+>12    leshort         >0      %hd x
+>>14   leshort         x      %hd dpi,
+>2     byte            0       uncompressed
+>2     byte            1       RLE compressed
+
+# Adobe Photoshop
+0      string          8BPS Adobe Photoshop Image
+
+# XV thumbnail indicator (ThMO)
+0      string          P7\ 332         XV thumbnail image data
+
+# NITF is defined by United States MIL-STD-2500A
+0      string  NITF    National Imagery Transmission Format
+>25    string  >\0     dated %.14s
+
+# GEM Image: Version 1, Headerlen 8 (Wolfram Kleff)
+0      belong          0x00010008      GEM Image data
+>12    beshort         x               %d x
+>14    beshort         x               %d,
+>4     beshort         x               %d planes,
+>8     beshort         x               %d x
+>10    beshort         x               %d pixelsize
+
+# GEM Metafile (Wolfram Kleff)
+0      lelong          0x0018FFFF      GEM Metafile data
+>4     leshort         x               version %d
+
+#
+# SMJPEG. A custom Motion JPEG format used by Loki Entertainment
+# Software Torbjorn Andersson <d91tan@Update.UU.SE>.
+#
+0      string  \0\nSMJPEG      SMJPEG
+>8     belong  x               %d.x data
+# According to the specification you could find any number of _TXT
+# headers here, but I can't think of any way of handling that. None of
+# the SMJPEG files I tried it on used this feature. Even if such a
+# file is encountered the output should still be reasonable.
+>16    string  _SND            \b,
+>>24   beshort >0              %d Hz
+>>26   byte    8               8-bit
+>>26   byte    16              16-bit
+>>28   string  NONE            uncompressed
+# >>28 string  APCM            ADPCM compressed
+>>27   byte    1               mono
+>>28   byte    2               stereo
+# Help! Isn't there any way to avoid writing this part twice?
+>>32   string  _VID            \b,
+# >>>48        string  JFIF            JPEG
+>>>40  belong  >0              %d frames
+>>>44  beshort >0              (%d x
+>>>46  beshort >0              %d)
+>16    string  _VID            \b,
+# >>32 string  JFIF            JPEG
+>>24   belong  >0              %d frames
+>>28   beshort >0              (%d x
+>>30   beshort >0              %d)
+
+0      string  Paint\ Shop\ Pro\ Image\ File   Paint Shop Pro Image File
+
+# "thumbnail file" (icon)
+# descended from "xv", but in use by other applications as well (Wolfram Kleff)
+0       string          P7\ 332         XV "thumbnail file" (icon) data
+
+# taken from fkiss: (<yav@mte.biglobe.ne.jp> ?)
+0       string          KiSS            KISS/GS
+>4      byte            16              color
+>>5     byte            x               %d bit
+>>8     leshort         x               %d colors
+>>10    leshort         x               %d groups
+>4      byte            32              cell
+>>5     byte            x               %d bit
+>>8     leshort         x               %d x
+>>10    leshort         x               %d
+>>12    leshort         x               +%d
+>>14    leshort         x               +%d
+
+# Webshots (www.webshots.com), by John Harrison
+0       string          C\253\221g\230\0\0\0 Webshots Desktop .wbz file
+
+# Hercules DASD image files
+# From Jan Jaeger <jj@septa.nl>
+0       string  CKD_P370        Hercules CKD DASD image file
+>8      long    x               \b, %d heads per cylinder
+>12     long    x               \b, track size %d bytes
+>16     byte    x               \b, device type 33%2.2X
+
+0       string  CKD_C370        Hercules compressed CKD DASD image file
+>8      long    x               \b, %d heads per cylinder
+>12     long    x               \b, track size %d bytes
+>16     byte    x               \b, device type 33%2.2X
+
+0       string  CKD_S370        Hercules CKD DASD shadow file
+>8      long    x               \b, %d heads per cylinder
+>12     long    x               \b, track size %d bytes
+>16     byte    x               \b, device type 33%2.2X
+
+# Squeak images and - etoffi@softhome.net
+0 string \146\031\0\0  Squeak image data
+0 string 'From\040Squeak  Squeak program text
+
+# partimage: file(1) magic for PartImage files (experimental, incomplete)
+# Author: Hans-Joachim Baader <hjb@pro-linux.de>
+0              string  PaRtImAgE-VoLuMe        PartImage
+>0x0020                string  0.6.1           file version %s
+>>0x0060       lelong  >-1             volume %ld
+#>>0x0064 8 byte identifier
+#>>0x007c reserved
+>>0x0200       string  >\0             type %s
+>>0x1400       string  >\0             device %s,
+>>0x1600       string  >\0             original filename %s,
+# Some fields omitted
+>>0x2744       lelong  0               not compressed
+>>0x2744       lelong  1               gzip compressed
+>>0x2744       lelong  2               bzip2 compressed
+>>0x2744       lelong  >2              compressed with unknown algorithm
+>0x0020                string  >0.6.1          file version %s
+>0x0020                string  <0.6.1          file version %s
+
+# DCX is multi-page PCX, using a simple header of up to 1024
+# offsets for the respective PCX components.
+# From: Joerg Wunsch <joerg_wunsch@uriah.heep.sax.de>
+0      lelong  987654321       DCX multi-page PCX image data
+
+# Simon Walton <simonw@matteworld.com>
+# Kodak Cineon format for scanned negatives
+# http://www.kodak.com/US/en/motion/support/dlad/
+0      lelong  0xd75f2a80      Cineon image data
+>200   belong  >0              \b, %ld x
+>204   belong  >0              %ld
+
+
+# Bio-Rad .PIC is an image format used by microscope control systems
+# and related image processing software used by biologists.
+# From: Vebjorn Ljosa <vebjorn@ljosa.com>
+54     leshort 12345           Bio-Rad .PIC Image File
+>0     leshort >0              %hd x
+>2     leshort >0              %hd,
+>4     leshort =1              1 image in file
+>4     leshort >1              %hd images in file
+
+# From Jan "Yenya" Kasprzak <kas@fi.muni.cz>
+# The description of *.mrw format can be found at
+# http://www.dalibor.cz/minolta/raw_file_format.htm
+0      string  \000MRM                 Minolta Dimage camera raw image data
+
+# From: stephane.loeuillet@tiscali.f
+# http://www.djvuzone.org/
+0      string  AT&TFORM                DjVu Image file
+
+# From: Jason Bacon <bacon@smithers.neuro.mcw.edu>
+0      beshort 0x3020                  character Computer Graphics Metafile
+
+
+
+# From: Tom Hilinski <tom.hilinski@comcast.net>
+# http://www.unidata.ucar.edu/packages/netcdf/
+0      string  CDF\001                 netcdf file
+#
+#------------------------------------------------------------------------------
+# tuxedo:      file(1) magic for BEA TUXEDO data files
+#
+# from Ian Springer <ispringer@hotmail.com>
+#
+0      string          \0\0\1\236\0\0\0\0\0\0\0\0\0\0\0\0      BEA TUXEDO DES mask data
+
+#------------------------------------------------------------------------------
+# timezone:  file(1) magic for timezone data
+#
+# from Daniel Quinlan (quinlan@yggdrasil.com)
+# this should work on Linux, SunOS, and maybe others
+# Added new official magic number for recent versions of the Olson code
+0      string  TZif    timezone data
+0      string  \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0      old timezone data
+0      string  \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0      old timezone data
+0      string  \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0      old timezone data
+0      string  \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0      old timezone data
+0      string  \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5\0      old timezone data
+0      string  \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\6\0      old timezone data
+
+#------------------------------------------------------------------------------
+# project:  file(1) magic for Project management
+# 
+# Magic strings for ftnchek project files. Alexander Mai
+0      string  FTNCHEK_\ P     project file for ftnchek
+>10    string  1               version 2.7
+>10    string  2               version 2.8 to 2.10
+>10    string  3               version 2.11 or later
+#------------------------------------------------------------------------------
+# cisco:  file(1) magic for cisco Systems routers
+#
+# Most cisco file-formats are covered by the generic elf code
+#
+# Microcode files are non-ELF, 0x8501 conflicts with NetBSD/alpha.
+0      belong&0xffffff00       0x85011400  cisco IOS microcode
+>7     string          >\0                 for '%s'
+0      belong&0xffffff00       0x8501cb00  cisco IOS experimental microcode
+>7     string          >\0                 for '%s'
+#------------------------------------------------------------------------------
+# mach file description
+#
+0      belong          0xcafebabe      Mach-O fat file
+>4     belong          1               with 1 architecture
+>4     belong          >1
+>>4    belong          x               with %ld architectures          
+#
+0      belong          0xfeedface      Mach-O
+>12    belong          1               object
+>12    belong          2               executable
+>12    belong          3               shared library
+>12    belong          4               core
+>12    belong          5               preload executable
+>12    belong          6               dynamically linked shared library
+>12    belong          7               dynamic linker
+>12    belong          8               bundle
+>12    belong          >8
+>>12   belong          x               filetype=%ld
+>4     belong          <0
+>>4    belong          x               architecture=%ld
+>4     belong          1               vax
+>4     belong          2               romp
+>4     belong          3               architecture=3
+>4     belong          4               ns32032
+>4     belong          5               ns32332
+>4     belong          6               for m68k architecture
+# from NeXTstep 3.0 <mach/machine.h>
+# i.e. mc680x0_all, ignore
+# >>8  belong          1               (mc68030)
+>>8    belong          2               (mc68040)
+>>8    belong          3               (mc68030 only)
+>4     belong          7               i386
+>4     belong          8               mips
+>4     belong          9               ns32532
+>4     belong          10              architecture=10
+>4     belong          11              hp pa-risc
+>4     belong          12              acorn
+>4     belong          13              m88k
+>4     belong          14              sparc
+>4     belong          15              i860-big
+>4     belong          16              i860
+>4     belong          17              rs6000
+>4     belong          18              ppc
+>4     belong          >18
+>>4    belong          x               architecture=%ld
+
+#------------------------------------------------------------------------------
+# mkid:  file(1) magic for mkid(1) databases
+#
+# ID is the binary tags database produced by mkid(1).
+#
+# XXX - byte order?
+#
+0      string          \311\304        ID tags data
+>2     short           >0              version %d
+
+#------------------------------------------------------------------------------
+# pgp:  file(1) magic for Pretty Good Privacy
+#
+0       beshort         0x9900                  PGP key public ring
+0       beshort         0x9501                  PGP key security ring
+0       beshort         0x9500                  PGP key security ring
+0      beshort         0xa600                  PGP encrypted data
+0       string          -----BEGIN\040PGP       PGP armored data
+>15     string          PUBLIC\040KEY\040BLOCK- public key block
+>15     string          MESSAGE-                message
+>15     string          SIGNED\040MESSAGE-      signed message
+>15     string          PGP\040SIGNATURE-       signature
+
+#------------------------------------------------------------------------------
+# terminfo:  file(1) magic for terminfo
+#
+# XXX - byte order for screen images?
+#
+0      string          \032\001        Compiled terminfo entry
+0      short           0433            Curses screen image
+0      short           0434            Curses screen image
+
+#------------------------------------------------------------------------------
+# printer:  file(1) magic for printer-formatted files
+#
+
+# PostScript, updated by Daniel Quinlan (quinlan@yggdrasil.com)
+0      string          %!              PostScript document text
+>2     string          PS-Adobe-       conforming
+>>11   string          >\0             at level %.3s
+>>>15  string          EPS             - type %s
+>>>15  string          Query           - type %s
+>>>15  string          ExitServer      - type %s
+# Some PCs have the annoying habit of adding a ^D as a document separator
+0      string          \004%!          PostScript document text
+>3     string          PS-Adobe-       conforming
+>>12   string          >\0             at level %.3s
+>>>16  string          EPS             - type %s
+>>>16  string          Query           - type %s
+>>>16  string          ExitServer      - type %s
+0      string          \033%-12345X%!PS        PostScript document
+
+
+# DOS EPS Binary File Header
+# From: Ed Sznyter <ews@Black.Market.NET>
+0       belong          0xC5D0D3C6      DOS EPS Binary File
+>4      long            >0              Postscript starts at byte %d
+>>8     long            >0              length %d
+>>>12   long            >0              Metafile starts at byte %d
+>>>>16  long            >0              length %d
+>>>20   long            >0              TIFF starts at byte %d
+>>>>24  long            >0              length %d
+
+# Adobe's PostScript Printer Description (PPD) files
+#       Yves Arrouye <arrouye@marin.fdn.fr>
+#
+0      string          *PPD-Adobe:    PPD file
+>13    string          x              \b, ve
+
+# HP Printer Job Language
+0      string          \033%-12345X@PJL        HP Printer Job Language data
+# HP Printer Job Language
+# The header found on Win95 HP plot files is the "Silliest Thing possible" 
+# (TM)
+# Every driver puts the language at some random position, with random case
+# (LANGUAGE and Language)
+# For example the LaserJet 5L driver puts the "PJL ENTER LANGUAGE" in line 10
+# From: Uwe Bonnes <bon@elektron.ikp.physik.th-darmstadt.de>
+# 
+0      string          \033%-12345X@PJL        HP Printer Job Language data
+>&0    string          >\0                     %s                      
+>>&0   string          >\0                     %s                      
+>>>&0  string          >\0                     %s              
+>>>>&0 string          >\0                     %s              
+#>15   string          \ ENTER\ LANGUAGE\ =
+#>31   string          PostScript              PostScript
+
+# HP Printer Control Language, Daniel Quinlan (quinlan@yggdrasil.com)
+0      string          \033E\033       HP PCL printer data
+>3     string          \&l0A           - default page size
+>3     string          \&l1A           - US executive page size
+>3     string          \&l2A           - US letter page size
+>3     string          \&l3A           - US legal page size
+>3     string          \&l26A          - A4 page size
+>3     string          \&l80A          - Monarch envelope size
+>3     string          \&l81A          - No. 10 envelope size
+>3     string          \&l90A          - Intl. DL envelope size
+>3     string          \&l91A          - Intl. C5 envelope size
+>3     string          \&l100A         - Intl. B5 envelope size
+>3     string          \&l-81A         - No. 10 envelope size (landscape)
+>3     string          \&l-90A         - Intl. DL envelope size (landscape)
+
+# IMAGEN printer-ready files:
+0      string  @document(              Imagen printer
+# this only works if "language xxx" is first item in Imagen header.
+>10    string  language\ impress       (imPRESS data)
+>10    string  language\ daisy         (daisywheel text)
+>10    string  language\ diablo        (daisywheel text)
+>10    string  language\ printer       (line printer emulation)
+>10    string  language\ tektronix     (Tektronix 4014 emulation)
+# Add any other languages that your Imagen uses - remember
+# to keep the word `text' if the file is human-readable.
+# [GRR 950115:  missing "postscript" or "ultrascript" (whatever it was called)]
+#
+# Now magic for IMAGEN font files...
+0      string          Rast            RST-format raster font data
+>45    string          >0              face %s
+# From Jukka Ukkonen
+0      string          \033[K\002\0\0\017\033(a\001\0\001\033(g        Canon Bubble Jet BJC formatted data
+
+# From <mike@flyn.org>
+# These are the /etc/magic entries to decode data sent to an Epson printer.
+0       string          \x1B\x40\x1B\x28\x52\x08\x00\x00REMOTE1P        Epson Stylus Color 460 data
+
+
+#------------------------------------------------------------------------------
+# zenographics:  file(1) magic for Zenographics ZjStream printer data
+# Rick Richardson  rickr@mn.rr.com
+0      string          JZJZ
+>0x12  string          ZZ              Zenographics ZjStream printer data (big-endian)
+0      string          ZJZJ
+>0x12  string          ZZ              Zenographics ZjStream printer data (little-endian)
+
+
+#------------------------------------------------------------------------------
+# Oak Technologies printer stream
+# Rick Richardson <rickr@mn.rr.com>
+0       string          OAK
+>0x07  byte            0
+>0x0b  byte            0       Oak Technologies printer stream
+
+# This would otherwise be recognized as PostScript - nick@debian.org
+0      string          %!VMF           SunClock's Vector Map Format data
+
+#------------------------------------------------------------------------------
+# HP LaserJet 1000 series downloadable firmware file
+0      string  \xbe\xefABCDEFGH        HP LaserJet 1000 series downloadable firmware   
+
+#------------------------------------------------------------------------------
+# apple:  file(1) magic for Apple file formats
+#
+0      string          FiLeStArTfIlEsTaRt      binscii (apple ][) text
+0      string          \x0aGL                  Binary II (apple ][) data
+0      string          \x76\xff                Squeezed (apple ][) data
+0      string          NuFile                  NuFile archive (apple ][) data
+0      string          N\xf5F\xe9l\xe5         NuFile archive (apple ][) data
+0      belong          0x00051600              AppleSingle encoded Macintosh file
+0      belong          0x00051607              AppleDouble encoded Macintosh file
+
+# magic for Newton PDA package formats
+# from Ruda Moura <ruda@helllabs.org>
+0      string  package0        Newton package, NOS 1.x,
+>12    belong  &0x80000000     AutoRemove,
+>12    belong  &0x40000000     CopyProtect,
+>12    belong  &0x10000000     NoCompression,
+>12    belong  &0x04000000     Relocation,
+>12    belong  &0x02000000     UseFasterCompression,
+>16    belong  x               version %d
+
+0      string  package1        Newton package, NOS 2.x,
+>12    belong  &0x80000000     AutoRemove,
+>12    belong  &0x40000000     CopyProtect,
+>12    belong  &0x10000000     NoCompression,
+>12    belong  &0x04000000     Relocation,
+>12    belong  &0x02000000     UseFasterCompression,
+>16    belong  x               version %d
+
+0      string  package4        Newton package,
+>8     byte    8               NOS 1.x,
+>8     byte    9               NOS 2.x,
+>12    belong  &0x80000000     AutoRemove,
+>12    belong  &0x40000000     CopyProtect,
+>12    belong  &0x10000000     NoCompression,
+
+# The following entries for the Apple II are for files that have
+# been transferred as raw binary data from an Apple, without having
+# been encapsulated by any of the above archivers.
+#
+# In general, Apple II formats are hard to identify because Apple DOS
+# and especially Apple ProDOS have strong typing in the file system and
+# therefore programmers never felt much need to include type information
+# in the files themselves.
+#
+# Eric Fischer <enf@pobox.com>
+
+# AppleWorks word processor:
+#
+# This matches the standard tab stops for an AppleWorks file, but if
+# a file has a tab stop set in the first four columns this will fail.
+#
+# The "O" is really the magic number, but that's so common that it's
+# necessary to check the tab stops that follow it to avoid false positives.
+
+4       string          O====   AppleWorks word processor data
+>85     byte&0x01       >0      \b, zoomed
+>90     byte&0x01       >0      \b, paginated
+>92     byte&0x01       >0      \b, with mail merge
+#>91    byte            x       \b, left margin %d
+
+# AppleWorks database:
+#
+# This isn't really a magic number, but it's the closest thing to one
+# that I could find.  The 1 and 2 really mean "order in which you defined
+# categories" and "left to right, top to bottom," respectively; the D and R
+# mean that the cursor should move either down or right when you press Return.
+
+#30    string          \x01D   AppleWorks database data
+#30    string          \x02D   AppleWorks database data
+#30    string          \x01R   AppleWorks database data
+#30    string          \x02R   AppleWorks database data
+
+# AppleWorks spreadsheet:
+#
+# Likewise, this isn't really meant as a magic number.  The R or C means
+# row- or column-order recalculation; the A or M means automatic or manual
+# recalculation.
+
+#131   string          RA      AppleWorks spreadsheet data
+#131   string          RM      AppleWorks spreadsheet data
+#131   string          CA      AppleWorks spreadsheet data
+#131   string          CM      AppleWorks spreadsheet data
+
+# Applesoft BASIC:
+#
+# This is incredibly sloppy, but will be true if the program was
+# written at its usual memory location of 2048 and its first line
+# number is less than 256.  Yuck.
+
+0       belong&0xff00ff 0x80000 Applesoft BASIC program data
+#>2     leshort         x       \b, first line number %d
+
+# ORCA/EZ assembler:
+# 
+# This will not identify ORCA/M source files, since those have
+# some sort of date code instead of the two zero bytes at 6 and 7
+# XXX Conflicts with ELF
+#4       belong&0xff00ffff       0x01000000      ORCA/EZ assembler source data
+#>5      byte                    x               \b, build number %d
+
+# Broderbund Fantavision
+#
+# I don't know what these values really mean, but they seem to recur.
+# Will they cause too many conflicts?
+
+# Probably :-)
+#2     belong&0xFF00FF         0x040008        Fantavision movie data
+
+# Some attempts at images.
+#
+# These are actually just bit-for-bit dumps of the frame buffer, so
+# there's really no reasonably way to distinguish them except for their
+# address (if preserved) -- 8192 or 16384 -- and their length -- 8192
+# or, occasionally, 8184.
+#
+# Nevertheless this will manage to catch a lot of images that happen
+# to have a solid-colored line at the bottom of the screen.
+
+8144   string  \x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F        Apple II image with white background
+8144   string  \x55\x2A\x55\x2A\x55\x2A\x55\x2A        Apple II image with purple background
+8144   string  \x2A\x55\x2A\x55\x2A\x55\x2A\x55        Apple II image with green background
+8144   string  \xD5\xAA\xD5\xAA\xD5\xAA\xD5\xAA        Apple II image with blue background
+8144   string  \xAA\xD5\xAA\xD5\xAA\xD5\xAA\xD5        Apple II image with orange background
+
+# Beagle Bros. Apple Mechanic fonts
+
+0      belong&0xFF00FFFF       0x6400D000      Apple Mechanic font
+
+# Apple Universal Disk Image Format (UDIF) - dmg files.
+# From Johan Gade.
+# These entries are disabled for now until we fix the following issues.
+#
+# Note there might be some problems with the "VAX COFF executable" 
+# entry. Note this entry should be placed before the mac filesystem section, 
+# particularly the "Apple Partition data" entry.
+#
+# The intended meaning of these tests is, that the file is only of the 
+# specified type if both of the lines are correct - i.e. if the first
+# line matches and the second doesn't then it is not of that type.
+#
+#0     long    0x7801730d
+#>4    long    0x62626060      UDIF read-only zlib-compressed image (UDZO)
+#
+# Note that this entry is recognized correctly by the "Apple Partition 
+# data" entry - however since this entry is more specific - this
+# information seems to be more useful.
+#0     long    0x45520200
+#>0x410        string  disk\ image     UDIF read/write image (UDRW)
+
+#------------------------------------------------------------------------------
+# applix:  file(1) magic for Applixware
+# From: Peter Soos <sp@osb.hu>
+#
+0      string          *BEGIN          Applixware
+>7     string          WORDS                   Words Document
+>7     string          GRAPHICS                Graphic
+>7     string          RASTER                  Bitmap
+>7     string          SPREADSHEETS            Spreadsheet
+>7     string          MACRO                   Macro
+>7     string          BUILDER                 Builder Object
+
+#------------------------------------------------------------------------------
+# interleaf:  file(1) magic for InterLeaf TPS:
+#
+0      string          =\210OPS        Interleaf saved data
+0      string          =<!OPS          Interleaf document text
+>5     string          ,\ Version\ =   \b, version
+>>17   string          >\0             %.3s
+
+#------------------------------------------------------------------------------
+# lisp:  file(1) magic for lisp programs
+#
+# various lisp types, from Daniel Quinlan (quinlan@yggdrasil.com)
+
+# This is a guess, but a good one.
+0      string  ;;                      Lisp/Scheme program text
+
+# Emacs 18 - this is always correct, but not very magical.
+0      string  \012(                   Emacs v18 byte-compiled Lisp data
+# Emacs 19+ - ver. recognition added by Ian Springer
+# Also applies to XEmacs 19+ .elc files; could tell them apart if we had regexp
+# support or similar - Chris Chittleborough <cchittleborough@yahoo.com.au>
+0      string  ;ELC                    
+>4     byte    >19                     
+>4     byte    <32                     Emacs/XEmacs v%d byte-compiled Lisp data
+
+# Files produced by CLISP Common Lisp From: Bruno Haible <haible@ilog.fr>
+0      string  (SYSTEM::VERSION\040'   CLISP byte-compiled Lisp program text
+0      long    0x70768BD2              CLISP memory image data
+0      long    0xD28B7670              CLISP memory image data, other endian
+
+# Files produced by GNU gettext
+0      long    0xDE120495              GNU-format message catalog data
+0      long    0x950412DE              GNU-format message catalog data
+
+#.com and .bin for MIT scheme 
+0      string  \372\372\372\372        MIT scheme (library?)
+
+# From: David Allouche <david@allouche.net>
+0      string  \<TeXmacs|      TeXmacs document text
+
+#------------------------------------------------------------------------------
+# spec:  file(1) magic for SPEC raw results (*.raw, *.rsf)
+#
+# Cloyce D. Spradling <cloyce@headgear.org>
+
+0      string  spec                    SPEC
+>4     string  .cpu                    CPU
+>>8    string  <:                      \b%.4s
+>>12   string  .                       raw result text
+
+17     string  version=SPECjbb         SPECjbb
+>32    string  <:                      \b%.4s
+>>37   string  <:                      v%.4s raw result text
+
+0      string  BEGIN\040SPECWEB        SPECweb
+>13    string  <:                      \b%.2s
+>>15   string  _SSL                    \b_SSL
+>>>20  string  <:                      v%.4s raw result text
+>>16   string  <:                      v%.4s raw result text
+
+#------------------------------------------------------------------------------
+# sniffer:  file(1) magic for packet capture files
+#
+# From: guy@alum.mit.edu (Guy Harris)
+#
+
+#
+# Microsoft Network Monitor 1.x capture files.
+#
+0      string          RTSS            NetMon capture file
+>5     byte            x               - version %d
+>4     byte            x               \b.%d
+>6     leshort         0               (Unknown)
+>6     leshort         1               (Ethernet)
+>6     leshort         2               (Token Ring)
+>6     leshort         3               (FDDI)
+>6     leshort         4               (ATM)
+
+#
+# Microsoft Network Monitor 2.x capture files.
+#
+0      string          GMBU            NetMon capture file
+>5     byte            x               - version %d
+>4     byte            x               \b.%d
+>6     leshort         0               (Unknown)
+>6     leshort         1               (Ethernet)
+>6     leshort         2               (Token Ring)
+>6     leshort         3               (FDDI)
+>6     leshort         4               (ATM)
+
+#
+# Network General Sniffer capture files.
+# Sorry, make that "Network Associates Sniffer capture files."
+# Sorry, make that "Network General old DOS Sniffer capture files."
+#
+0      string          TRSNIFF\ data\ \ \ \ \032       Sniffer capture file
+>33    byte            2               (compressed)
+>23    leshort         x               - version %d
+>25    leshort         x               \b.%d
+>32    byte            0               (Token Ring)
+>32    byte            1               (Ethernet)
+>32    byte            2               (ARCNET)
+>32    byte            3               (StarLAN)
+>32    byte            4               (PC Network broadband)
+>32    byte            5               (LocalTalk)
+>32    byte            6               (Znet)
+>32    byte            7               (Internetwork Analyzer)
+>32    byte            9               (FDDI)
+>32    byte            10              (ATM)
+
+#
+# Cinco Networks NetXRay capture files.
+# Sorry, make that "Network General Sniffer Basic capture files."
+# Sorry, make that "Network Associates Sniffer Basic capture files."
+# Sorry, make that "Network Associates Sniffer Basic, and Windows
+# Sniffer Pro", capture files."
+# Sorry, make that "Network General Sniffer capture files."
+#
+0      string          XCP\0           NetXRay capture file
+>4     string          >\0             - version %s
+>44    leshort         0               (Ethernet)
+>44    leshort         1               (Token Ring)
+>44    leshort         2               (FDDI)
+>44    leshort         3               (WAN)
+>44    leshort         8               (ATM)
+>44    leshort         9               (802.11)
+
+#
+# "libpcap" capture files.
+# (We call them "tcpdump capture file(s)" for now, as "tcpdump" is
+# the main program that uses that format, but there are other programs
+# that use "libpcap", or that use the same capture file format.)
+#
+0      ubelong         0xa1b2c3d4      tcpdump capture file (big-endian)
+>4     beshort         x               - version %d
+>6     beshort         x               \b.%d
+>20    belong          0               (No link-layer encapsulation
+>20    belong          1               (Ethernet
+>20    belong          2               (3Mb Ethernet
+>20    belong          3               (AX.25
+>20    belong          4               (ProNET
+>20    belong          5               (CHAOS
+>20    belong          6               (Token Ring
+>20    belong          7               (BSD ARCNET
+>20    belong          8               (SLIP
+>20    belong          9               (PPP
+>20    belong          10              (FDDI
+>20    belong          11              (RFC 1483 ATM
+>20    belong          12              (raw IP
+>20    belong          13              (BSD/OS SLIP
+>20    belong          14              (BSD/OS PPP
+>20    belong          19              (Linux ATM Classical IP
+>20    belong          50              (PPP or Cisco HDLC
+>20    belong          51              (PPP-over-Ethernet
+>20    belong          99              (Symantec Enterprise Firewall
+>20    belong          100             (RFC 1483 ATM
+>20    belong          101             (raw IP
+>20    belong          102             (BSD/OS SLIP
+>20    belong          103             (BSD/OS PPP
+>20    belong          104             (BSD/OS Cisco HDLC
+>20    belong          105             (802.11
+>20    belong          106             (Linux Classical IP over ATM
+>20    belong          107             (Frame Relay
+>20    belong          108             (OpenBSD loopback
+>20    belong          109             (OpenBSD IPsec encrypted
+>20    belong          112             (Cisco HDLC
+>20    belong          113             (Linux "cooked"
+>20    belong          114             (LocalTalk
+>20    belong          117             (OpenBSD PFLOG
+>20    belong          119             (802.11 with Prism header
+>20    belong          122             (RFC 2625 IP over Fibre Channel
+>20    belong          123             (SunATM
+>20    belong          127             (802.11 with radiotap header
+>20    belong          129             (Linux ARCNET
+>20    belong          138             (Apple IP over IEEE 1394
+>20    belong          140             (MTP2
+>20    belong          141             (MTP3
+>20    belong          143             (DOCSIS
+>20    belong          144             (IrDA
+>20    belong          147             (Private use 0
+>20    belong          148             (Private use 1
+>20    belong          149             (Private use 2
+>20    belong          150             (Private use 3
+>20    belong          151             (Private use 4
+>20    belong          152             (Private use 5
+>20    belong          153             (Private use 6
+>20    belong          154             (Private use 7
+>20    belong          155             (Private use 8
+>20    belong          156             (Private use 9
+>20    belong          157             (Private use 10
+>20    belong          158             (Private use 11
+>20    belong          159             (Private use 12
+>20    belong          160             (Private use 13
+>20    belong          161             (Private use 14
+>20    belong          162             (Private use 15
+>20    belong          163             (802.11 with AVS header
+>16    belong          x               \b, capture length %d)
+0      ulelong         0xa1b2c3d4      tcpdump capture file (little-endian)
+>4     leshort         x               - version %d
+>6     leshort         x               \b.%d
+>20    lelong          0               (No link-layer encapsulation
+>20    lelong          1               (Ethernet
+>20    lelong          2               (3Mb Ethernet
+>20    lelong          3               (AX.25
+>20    lelong          4               (ProNET
+>20    lelong          5               (CHAOS
+>20    lelong          6               (Token Ring
+>20    lelong          7               (ARCNET
+>20    lelong          8               (SLIP
+>20    lelong          9               (PPP
+>20    lelong          10              (FDDI
+>20    lelong          11              (RFC 1483 ATM
+>20    lelong          12              (raw IP
+>20    lelong          13              (BSD/OS SLIP
+>20    lelong          14              (BSD/OS PPP
+>20    lelong          19              (Linux ATM Classical IP
+>20    lelong          50              (PPP or Cisco HDLC
+>20    lelong          51              (PPP-over-Ethernet
+>20    lelong          99              (Symantec Enterprise Firewall
+>20    lelong          100             (RFC 1483 ATM
+>20    lelong          101             (raw IP
+>20    lelong          102             (BSD/OS SLIP
+>20    lelong          103             (BSD/OS PPP
+>20    lelong          104             (BSD/OS Cisco HDLC
+>20    lelong          105             (802.11
+>20    lelong          106             (Linux Classical IP over ATM
+>20    lelong          107             (Frame Relay
+>20    lelong          108             (OpenBSD loopback
+>20    lelong          109             (OpenBSD IPsec encrypted
+>20    lelong          112             (Cisco HDLC
+>20    lelong          113             (Linux "cooked"
+>20    lelong          114             (LocalTalk
+>20    lelong          117             (OpenBSD PFLOG
+>20    lelong          119             (802.11 with Prism header
+>20    lelong          122             (RFC 2625 IP over Fibre Channel
+>20    lelong          123             (SunATM
+>20    lelong          127             (802.11 with radiotap header
+>20    lelong          129             (Linux ARCNET
+>20    lelong          138             (Apple IP over IEEE 1394
+>20    lelong          140             (MTP2
+>20    lelong          141             (MTP3
+>20    lelong          143             (DOCSIS
+>20    lelong          144             (IrDA
+>20    lelong          147             (Private use 0
+>20    lelong          148             (Private use 1
+>20    lelong          149             (Private use 2
+>20    lelong          150             (Private use 3
+>20    lelong          151             (Private use 4
+>20    lelong          152             (Private use 5
+>20    lelong          153             (Private use 6
+>20    lelong          154             (Private use 7
+>20    lelong          155             (Private use 8
+>20    lelong          156             (Private use 9
+>20    lelong          157             (Private use 10
+>20    lelong          158             (Private use 11
+>20    lelong          159             (Private use 12
+>20    lelong          160             (Private use 13
+>20    lelong          161             (Private use 14
+>20    lelong          162             (Private use 15
+>20    lelong          163             (802.11 with AVS header
+>16    lelong          x               \b, capture length %d)
+
+#
+# "libpcap"-with-Alexey-Kuznetsov's-patches capture files.
+# (We call them "tcpdump capture file(s)" for now, as "tcpdump" is
+# the main program that uses that format, but there are other programs
+# that use "libpcap", or that use the same capture file format.)
+#
+0      ubelong         0xa1b2cd34      extended tcpdump capture file (big-endian)
+>4     beshort         x               - version %d
+>6     beshort         x               \b.%d
+>20    belong          0               (No link-layer encapsulation
+>20    belong          1               (Ethernet
+>20    belong          2               (3Mb Ethernet
+>20    belong          3               (AX.25
+>20    belong          4               (ProNET
+>20    belong          5               (CHAOS
+>20    belong          6               (Token Ring
+>20    belong          7               (ARCNET
+>20    belong          8               (SLIP
+>20    belong          9               (PPP
+>20    belong          10              (FDDI
+>20    belong          11              (RFC 1483 ATM
+>20    belong          12              (raw IP
+>20    belong          13              (BSD/OS SLIP
+>20    belong          14              (BSD/OS PPP
+>16    belong          x               \b, capture length %d)
+0      ulelong         0xa1b2cd34      extended tcpdump capture file (little-endian)
+>4     leshort         x               - version %d
+>6     leshort         x               \b.%d
+>20    lelong          0               (No link-layer encapsulation
+>20    lelong          1               (Ethernet
+>20    lelong          2               (3Mb Ethernet
+>20    lelong          3               (AX.25
+>20    lelong          4               (ProNET
+>20    lelong          5               (CHAOS
+>20    lelong          6               (Token Ring
+>20    lelong          7               (ARCNET
+>20    lelong          8               (SLIP
+>20    lelong          9               (PPP
+>20    lelong          10              (FDDI
+>20    lelong          11              (RFC 1483 ATM
+>20    lelong          12              (raw IP
+>20    lelong          13              (BSD/OS SLIP
+>20    lelong          14              (BSD/OS PPP
+>16    lelong          x               \b, capture length %d)
+
+#
+# AIX "iptrace" capture files.
+#
+0      string          iptrace\ 1.0    "iptrace" capture file
+0      string          iptrace\ 2.0    "iptrace" capture file
+
+#
+# Novell LANalyzer capture files.
+#
+0      leshort         0x1001          LANalyzer capture file
+0      leshort         0x1007          LANalyzer capture file
+
+#
+# HP-UX "nettl" capture files.
+#
+0      string          \x54\x52\x00\x64\x00    "nettl" capture file
+
+#
+# RADCOM WAN/LAN Analyzer capture files.
+#
+0      string          \x42\xd2\x00\x34\x12\x66\x22\x88        RADCOM WAN/LAN Analyzer capture file
+
+#
+# NetStumbler log files.  Not really packets, per se, but about as
+# close as you can get.  These are log files from NetStumbler, a
+# Windows program, that scans for 802.11b networks.
+#
+0      string          NetS            NetStumbler log file
+>8     lelong          x               \b, %d stations found
+
+#
+# EtherPeek/AiroPeek "version 9" capture files.
+#
+0      string          \177ver         EtherPeek/AiroPeek capture file
+
+#
+# Visual Networks traffic capture files.
+#
+0      string          \x05VNF         Visual Networks traffic capture file
+
+#
+# Network Instruments Observer capture files.
+#
+0      string          ObserverPktBuffe        Network Instruments Observer capture file
+
+#
+# Files from Accellent Group's 5View products.
+#
+0      string          \xaa\xaa\xaa\xaa        5View capture file
+
+#------------------------------------------------------------------------------
+# file(1) magic for revision control files
+# From Hendrik Scholz <hendrik@scholz.net>
+0   string /1\ :pserver:    cvs password text file
+#------------------------------------------------------------------------------
+# amigaos:  file(1) magic for AmigaOS binary formats:
+
+#
+# From ignatios@cs.uni-bonn.de (Ignatios Souvatzis)
+#
+0      belong          0x000003fa      AmigaOS shared library
+0      belong          0x000003f3      AmigaOS loadseg()ble executable/binary
+0      belong          0x000003e7      AmigaOS object/library data
+#
+0      beshort         0xe310          Amiga Workbench
+>2     beshort         1               
+>>48   byte            1               disk icon
+>>48   byte            2               drawer icon
+>>48   byte            3               tool icon
+>>48   byte            4               project icon
+>>48   byte            5               garbage icon
+>>48   byte            6               device icon
+>>48   byte            7               kickstart icon
+>>48   byte            8               workbench application icon
+>2     beshort         >1              icon, vers. %d
+#
+# various sound formats from the Amiga
+# G=F6tz Waschk <waschk@informatik.uni-rostock.de>
+#
+0      string          FC14            Future Composer 1.4 Module sound file
+0      string          SMOD            Future Composer 1.3 Module sound file
+0      string          AON4artofnoise  Art Of Noise Module sound file
+1      string          MUGICIAN/SOFTEYES Mugician Module sound file
+58     string          SIDMON\ II\ -\ THE      Sidmon 2.0 Module sound file
+0      string          Synth4.0        Synthesis Module sound file
+0      string          ARP.            The Holy Noise Module sound file
+0      string          BeEp\0          JamCracker Module sound file
+0      string          COSO\0          Hippel-COSO Module sound file
+# Too simple (short, pure ASCII, deep), MPi
+#26    string          V.3             Brian Postma's Soundmon Module sound file v3
+#26    string          BPSM            Brian Postma's Soundmon Module sound file v3
+#26    string          V.2             Brian Postma's Soundmon Module sound file v2
+
+# The following are from: "Stefan A. Haubenthal" <polluks@web.de>
+0      beshort         0x0f00          AmigaOS bitmap font
+0      beshort         0x0f03          AmigaOS outline font
+0      belong          0x80001001      AmigaOS outline tag
+0      string          ##\ version     catalog translation
+
+# Amiga disk types
+# 
+0      string          RDSK            Rigid Disk Block
+>160   string          x               on %.24s
+0      string          DOS\0           Amiga DOS disk
+0      string          DOS\1           Amiga FFS disk
+0      string          DOS\2           Amiga Inter DOS disk
+0      string          DOS\3           Amiga Inter FFS disk
+0      string          DOS\4           Amiga Fastdir DOS disk
+0      string          DOS\5           Amiga Fastdir FFS disk
+0      string          KICK            Kickstart disk
+
+#------------------------------------------------------------------------------
+# database:  file(1) magic for various databases
+#
+# extracted from header/code files by Graeme Wilford (eep2gw@ee.surrey.ac.uk)
+#
+#
+# GDBM magic numbers
+#  Will be maintained as part of the GDBM distribution in the future.
+#  <downsj@teeny.org>
+0      belong  0x13579ace      GNU dbm 1.x or ndbm database, big endian
+0      lelong  0x13579ace      GNU dbm 1.x or ndbm database, little endian
+0      string  GDBM            GNU dbm 2.x database
+#
+# Berkeley DB
+#
+# Ian Darwin's file /etc/magic files: big/little-endian version.
+#
+# Hash 1.85/1.86 databases store metadata in network byte order.
+# Btree 1.85/1.86 databases store the metadata in host byte order.
+# Hash and Btree 2.X and later databases store the metadata in host byte order.
+
+0      long    0x00061561      Berkeley DB
+>8     belong  4321
+>>4    belong  >2              1.86
+>>4    belong  <3              1.85
+>>4    belong  >0              (Hash, version %d, native byte-order)
+>8     belong  1234
+>>4    belong  >2              1.86
+>>4    belong  <3              1.85
+>>4    belong  >0              (Hash, version %d, little-endian)
+
+0      belong  0x00061561      Berkeley DB
+>8     belong  4321
+>>4    belong  >2              1.86
+>>4    belong  <3              1.85
+>>4    belong  >0              (Hash, version %d, big-endian)
+>8     belong  1234
+>>4    belong  >2              1.86
+>>4    belong  <3              1.85
+>>4    belong  >0              (Hash, version %d, native byte-order)
+
+0      long    0x00053162      Berkeley DB 1.85/1.86
+>4     long    >0              (Btree, version %d, native byte-order)
+0      belong  0x00053162      Berkeley DB 1.85/1.86
+>4     belong  >0              (Btree, version %d, big-endian)
+0      lelong  0x00053162      Berkeley DB 1.85/1.86
+>4     lelong  >0              (Btree, version %d, little-endian)
+
+12     long    0x00061561      Berkeley DB
+>16    long    >0              (Hash, version %d, native byte-order)
+12     belong  0x00061561      Berkeley DB
+>16    belong  >0              (Hash, version %d, big-endian)
+12     lelong  0x00061561      Berkeley DB
+>16    lelong  >0              (Hash, version %d, little-endian)
+
+12     long    0x00053162      Berkeley DB
+>16    long    >0              (Btree, version %d, native byte-order)
+12     belong  0x00053162      Berkeley DB
+>16    belong  >0              (Btree, version %d, big-endian)
+12     lelong  0x00053162      Berkeley DB
+>16    lelong  >0              (Btree, version %d, little-endian)
+
+12     long    0x00042253      Berkeley DB
+>16    long    >0              (Queue, version %d, native byte-order)
+12     belong  0x00042253      Berkeley DB
+>16    belong  >0              (Queue, version %d, big-endian)
+12     lelong  0x00042253      Berkeley DB
+>16    lelong  >0              (Queue, version %d, little-endian)
+#
+#
+# Round Robin Database Tool by Tobias Oetiker <oetiker@ee.ethz.ch>
+0      string  RRD             RRDTool DB
+>4     string  x               version %s
+#----------------------------------------------------------------------
+# ROOT: file(1) magic for ROOT databases
+#
+0       string  root\0  ROOT file
+>4      belong  x       Version %d
+>33     belong  x       (Compression: %d)
+
+# XXX: Weak magic.
+# Alex Ott <ott@jet.msk.su>
+## Paradox file formats
+#2       leshort       0x0800  Paradox 
+#>0x39   byte          3       v. 3.0 
+#>0x39   byte          4       v. 3.5 
+#>0x39   byte          9       v. 4.x 
+#>0x39   byte          10      v. 5.x 
+#>0x39   byte          11      v. 5.x 
+#>0x39   byte          12      v. 7.x 
+#>>0x04          byte          0       indexed .DB data file 
+#>>0x04          byte          1       primary index .PX file 
+#>>0x04          byte          2       non-indexed .DB data file 
+#>>0x04          byte          3       non-incrementing secondary index .Xnn file 
+#>>0x04          byte          4       secondary index .Ynn file 
+#>>0x04          byte          5       incrementing secondary index .Xnn file 
+#>>0x04          byte          6       non-incrementing secondary index .XGn file 
+#>>0x04          byte          7       secondary index .YGn file 
+#>>>0x04         byte          8       incrementing secondary index .XGn file 
+## XBase database files
+#0      byte       0x02        
+#>8     leshort          >0
+#>>12   leshort    0   FoxBase 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0x03        
+#>8     leshort          >0
+#>>12   leshort    0   FoxBase+, FoxPro, dBaseIII+, dBaseIV, no memo 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0x04        
+#>8     leshort          >0
+#>>12   leshort    0   dBASE IV no memo file 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0x05        
+#>8     leshort          >0
+#>>12   leshort    0   dBASE V no memo file 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0x30
+#>8     leshort          >0
+#>>12   leshort    0   Visual FoxPro 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0x43
+#>8     leshort          >0
+#>>12   leshort    0   FlagShip with memo var size 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0x7b
+#>8     leshort          >0
+#>>12   leshort    0   dBASEIV with memo 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0x83        
+#>8     leshort          >0
+#>>12   leshort    0   FoxBase+, dBaseIII+ with memo 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0x8b
+#>8     leshort          >0
+#>>12   leshort    0   dBaseIV with memo 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0x8e        
+#>8     leshort          >0
+#>>12   leshort    0   dBaseIV with SQL Table 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0xb3
+#>8     leshort          >0
+#>>12   leshort    0   FlagShip with .dbt memo 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0xf5
+#>8     leshort          >0
+#>>12   leshort    0   FoxPro with memo 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0     leshort         0x0006          DBase 3 index file
+
+# MS Access database
+4        string        Standard\ Jet\ DB       Microsoft Access Database
+
+# TDB database from Samba et al - Martin Pool <mbp@samba.org>
+0      string  TDB\ file               TDB database
+>32    lelong  0x2601196D              version 6, little-endian
+>>36   lelong  x                       hash size %d bytes
+
+# SE Linux policy database
+0       lelong  0xf97cff8c      SE Linux policy
+>16     lelong  x               v%d
+>20     lelong  1      MLS
+>24     lelong  x       %d symbols
+>28     lelong  x       %d ocons
+
+# ICE authority file data (Wolfram Kleff)
+2      string          ICE             ICE authority data
+
+# X11 Xauthority file (Wolfram Kleff)
+10     string          MIT-MAGIC-COOKIE-1      X11 Xauthority data
+11     string          MIT-MAGIC-COOKIE-1      X11 Xauthority data
+12     string          MIT-MAGIC-COOKIE-1      X11 Xauthority data
+13     string          MIT-MAGIC-COOKIE-1      X11 Xauthority data
+14     string          MIT-MAGIC-COOKIE-1      X11 Xauthority data
+15     string          MIT-MAGIC-COOKIE-1      X11 Xauthority data
+16     string          MIT-MAGIC-COOKIE-1      X11 Xauthority data
+17     string          MIT-MAGIC-COOKIE-1      X11 Xauthority data
+18     string          MIT-MAGIC-COOKIE-1      X11 Xauthority data
+
+#------------------------------------------------------------------------------
+# gringotts:  file(1) magic for Gringotts
+# http://devel.pluto.linux.it/projects/Gringotts/
+# author: Germano Rizzo <mano@pluto.linux.it>
+#GRG3????Y
+0      string  GRG             Gringotts data file
+#file format 1
+>3     string          1               v.1, MCRYPT S2K, SERPENT crypt, SHA-256 hash, ZLib lvl.9
+#file format 2
+>3     string          2               v.2, MCRYPT S2K, 
+>>8    byte&0x70       0x00            RIJNDAEL-128 crypt,
+>>8    byte&0x70       0x10            SERPENT crypt,
+>>8    byte&0x70       0x20            TWOFISH crypt, 
+>>8    byte&0x70       0x30            CAST-256 crypt,
+>>8    byte&0x70       0x40            SAFER+ crypt,
+>>8    byte&0x70       0x50            LOKI97 crypt,
+>>8    byte&0x70       0x60            3DES crypt,
+>>8    byte&0x70       0x70            RIJNDAEL-256 crypt,
+>>8    byte&0x08       0x00            SHA1 hash,
+>>8    byte&0x08       0x08            RIPEMD-160 hash,
+>>8    byte&0x04       0x00            ZLib
+>>8    byte&0x04       0x04            BZip2
+>>8    byte&0x03       0x00            lvl.0
+>>8    byte&0x03       0x01            lvl.3
+>>8    byte&0x03       0x02            lvl.6
+>>8    byte&0x03       0x03            lvl.9
+#file format 3
+>3     string          3               v.3, OpenPGP S2K, 
+>>8    byte&0x70       0x00            RIJNDAEL-128 crypt,
+>>8    byte&0x70       0x10            SERPENT crypt,
+>>8    byte&0x70       0x20            TWOFISH crypt, 
+>>8    byte&0x70       0x30            CAST-256 crypt,
+>>8    byte&0x70       0x40            SAFER+ crypt,
+>>8    byte&0x70       0x50            LOKI97 crypt,
+>>8    byte&0x70       0x60            3DES crypt,
+>>8    byte&0x70       0x70            RIJNDAEL-256 crypt,
+>>8    byte&0x08       0x00            SHA1 hash,
+>>8    byte&0x08       0x08            RIPEMD-160 hash,
+>>8    byte&0x04       0x00            ZLib
+>>8    byte&0x04       0x04            BZip2
+>>8    byte&0x03       0x00            lvl.0
+>>8    byte&0x03       0x01            lvl.3
+>>8    byte&0x03       0x02            lvl.6
+>>8    byte&0x03       0x03            lvl.9
+#file format >3
+>3     string          >3              v.%.1s (unknown details)
+
+#------------------------------------------------------------------------------
+# pbm:  file(1) magic for Portable Bitmap files
+#
+# XXX - byte order?
+#
+0      short   0x2a17  "compact bitmap" format (Poskanzer)
+
+#------------------------------------------------------------------------------
+# plus5:  file(1) magic for Plus Five's UNIX MUMPS
+#
+# XXX - byte order?  Paging Hokey....
+#
+0      short           0x259           mumps avl global
+>2     byte            >0              (V%d)
+>6     byte            >0              with %d byte name
+>7     byte            >0              and %d byte data cells
+0      short           0x25a           mumps blt global
+>2     byte            >0              (V%d)
+>8     short           >0              - %d byte blocks
+>15    byte            0x00            - P/D format
+>15    byte            0x01            - P/K/D format
+>15    byte            0x02            - K/D format
+>15    byte            >0x02           - Bad Flags
+
+#------------------------------------------------------------------------------
+# vms:  file(1) magic for VMS executables (experimental)
+#
+# VMS .exe formats, both VAX and AXP (Greg Roelofs, newt@uchicago.edu)
+
+# GRR 950122:  I'm just guessing on these, based on inspection of the headers
+# of three executables each for Alpha and VAX architectures.  The VAX files
+# all had headers similar to this:
+#
+#   00000  b0 00 30 00 44 00 60 00  00 00 00 00 30 32 30 35  ..0.D.`.....0205
+#   00010  01 01 00 00 ff ff ff ff  ff ff ff ff 00 00 00 00  ................
+#
+0      string  \xb0\0\x30\0    VMS VAX executable
+>44032 string  PK\003\004      \b, Info-ZIP SFX archive v5.12 w/decryption
+#
+# The AXP files all looked like this, except that the byte at offset 0x22
+# was 06 in some of them and 07 in others:
+#
+#   00000  03 00 00 00 00 00 00 00  ec 02 00 00 10 01 00 00  ................
+#   00010  68 00 00 00 98 00 00 00  b8 00 00 00 00 00 00 00  h...............
+#   00020  00 00 07 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
+#   00030  00 00 00 00 01 00 00 00  00 00 00 00 00 00 00 00  ................
+#   00040  00 00 00 00 ff ff ff ff  ff ff ff ff 02 00 00 00  ................
+#
+0      belong  0x03000000      VMS Alpha executable
+>75264 string  PK\003\004      \b, Info-ZIP SFX archive v5.12 w/decryption
+
+#------------------------------------------------------------------------------
+# python:  file(1) magic for python
+#
+# From: David Necas <yeti@physics.muni.cz>
+# often the module starts with a multiline string
+0      string          """     a python script text executable
+# MAGIC as specified in Python/import.c (1.5 to 2.3.0a)
+# 20121  ( YEAR - 1995 ) + MONTH  + DAY (little endian followed by "\r\n"
+0      belong          0x994e0d0a      python 1.5/1.6 byte-compiled
+0      belong          0x87c60d0a      python 2.0 byte-compiled
+0      belong          0x2aeb0d0a      python 2.1 byte-compiled
+0      belong          0x2ded0d0a      python 2.2 byte-compiled
+0      belong          0x3bf20d0a      python 2.3 byte-compiled
+
+#------------------------------------------------------------------------------
+# chord: file(1) magic for Chord music sheet typesetting utility input files
+#
+# From Philippe De Muyter <phdm@macqel.be>
+# File format is actually free, but many distributed files begin with `{title'
+#
+0      string          {title          Chord text file
+
+
+# ----------------------------------------------------------------------------
+# ctags:  file (1) magic for Exuberant Ctags files
+# From: Alexander Mai <mai@migdal.ikp.physik.tu-darmstadt.de>
+0       string  !_TAG   Exuberant Ctags tag file text
+
+#------------------------------------------------------------------------------
+# human68k:  file(1) magic for Human68k (X680x0 DOS) binary formats
+# Magic too short!
+#0             string  HU              Human68k
+#>68           string  LZX             LZX compressed
+#>>72          string  >\0             (version %s)
+#>(8.L+74)     string  LZX             LZX compressed
+#>>(8.L+78)    string  >\0             (version %s)
+#>60           belong  >0              binded
+#>(8.L+66)     string  #HUPAIR         hupair
+#>0            string  HU              X executable
+#>(8.L+74)     string  #LIBCV1         - linked PD LIBC ver 1
+#>4            belong  >0              - base address 0x%x
+#>28           belong  >0              not stripped
+#>32           belong  >0              with debug information
+#0             beshort 0x601a          Human68k Z executable
+#0             beshort 0x6000          Human68k object file
+#0             belong  0xd1000000      Human68k ar binary archive
+#0             belong  0xd1010000      Human68k ar ascii archive
+#0             beshort 0x0068          Human68k lib archive
+#4             string  LZX             Human68k LZX compressed
+#>8            string  >\0             (version %s)
+#>4            string  LZX             R executable
+#2             string  #HUPAIR         Human68k hupair R executable
+
+#------------------------------------------------------------------------------
+# pdp:  file(1) magic for PDP-11 executable/object and APL workspace
+#
+0      lelong          0101555         PDP-11 single precision APL workspace
+0      lelong          0101554         PDP-11 double precision APL workspace
+#
+# PDP-11 a.out
+#
+0      leshort         0407            PDP-11 executable
+>8     leshort         >0              not stripped
+>15    byte            >0              - version %ld
+
+0      leshort         0401            PDP-11 UNIX/RT ldp
+0      leshort         0405            PDP-11 old overlay
+
+0      leshort         0410            PDP-11 pure executable
+>8     leshort         >0              not stripped
+>15    byte            >0              - version %ld
+
+0      leshort         0411            PDP-11 separate I&D executable
+>8     leshort         >0              not stripped
+>15    byte            >0              - version %ld
+
+0      leshort         0437            PDP-11 kernel overlay
+
+# These last three are derived from 2.11BSD file(1)
+0      leshort         0413            PDP-11 demand-paged pure executable
+>8     leshort         >0              not stripped
+
+0      leshort         0430            PDP-11 overlaid pure executable
+>8     leshort         >0              not stripped
+
+0      leshort         0431            PDP-11 overlaid separate executable
+>8     leshort         >0              not stripped
+
+#------------------------------------------------------------------------
+# file(1) magic for sharc files
+#
+# SHARC DSP, MIDI SysEx and RiscOS filetype definitions added by 
+# FutureGroove Music (dsp@futuregroove.de)
+
+#------------------------------------------------------------------------
+0      string                  Draw            RiscOS Drawfile
+0      string                  PACK            RiscOS PackdDir archive
+
+#------------------------------------------------------------------------
+# SHARC DSP stuff (based on the FGM SHARC DSP SDK)
+
+0      string                  !               Assembler source
+0      string                  Analog          ADi asm listing file
+0      string                  .SYSTEM         SHARC architecture file
+0      string                  .system         SHARC architecture file
+
+0      leshort                 0x521C          SHARC COFF binary
+>2     leshort                 >1              , %hd sections
+>>12   lelong                  >0              , not stripped
+
+#------------------------------------------------------------------------------
+# pulsar:  file(1) magic for Pulsar POP3 daemon binary files
+#
+# http://pulsar.sourceforge.net
+# mailto:rok.papez@lugos.si
+#
+
+0      belong  0x1ee7f11e      Pulsar POP3 daemon mailbox cache file.
+>4     ubelong x               Version: %d.
+>8     ubelong x               \b%d
+
+
+#------------------------------------------------------------------------------
+# apl:  file(1) magic for APL (see also "pdp" and "vax" for other APL
+#       workspaces)
+#
+0      long            0100554         APL workspace (Ken's original?)
+
+#----------------------------------------------------------------------------
+# communication
+
+# TTCN is the Tree and Tabular Combined Notation described in ISO 9646-3.
+# It is used for conformance testing of communication protocols.
+# Added by W. Borgert <debacle@debian.org>.
+0      string          $Suite                  TTCN Abstract Test Suite
+>&1    string          $SuiteId
+>>&1   string          >\n                     %s
+>&2    string          $SuiteId
+>>&1   string          >\n                     %s
+>&3    string          $SuiteId
+>>&1   string          >\n                     %s
+
+# MSC (message sequence charts) are a formal description technique,
+# described in ITU-T Z.120, mainly used for communication protocols.
+# Added by W. Borgert <debacle@debian.org>.
+0      string          mscdocument     Message Sequence Chart (document)
+0      string          msc             Message Sequence Chart (chart)
+0      string          submsc          Message Sequence Chart (subchart)
+
+#------------------------------------------------------------------------------
+# ncr:  file(1) magic for NCR Tower objects
+#
+# contributed by
+# Michael R. Wayne  ***  TMC & Associates  ***  INTERNET: wayne@ford-vax.arpa
+# uucp: {philabs | pyramid} !fmsrl7!wayne   OR   wayne@fmsrl7.UUCP
+#
+0      beshort         000610  Tower/XP rel 2 object
+>12       belong               >0      not stripped
+>20       beshort              0407    executable
+>20       beshort              0410    pure executable
+>22       beshort              >0      - version %ld
+0      beshort         000615  Tower/XP rel 2 object
+>12       belong               >0      not stripped
+>20       beshort              0407    executable
+>20       beshort              0410    pure executable
+>22       beshort              >0      - version %ld
+0      beshort         000620  Tower/XP rel 3 object
+>12       belong               >0      not stripped
+>20       beshort              0407    executable
+>20       beshort              0410    pure executable
+>22       beshort              >0      - version %ld
+0      beshort         000625  Tower/XP rel 3 object
+>12       belong               >0      not stripped
+>20       beshort              0407    executable
+>20       beshort              0410    pure executable
+>22       beshort              >0      - version %ld
+0      beshort         000630  Tower32/600/400 68020 object
+>12       belong               >0      not stripped
+>20       beshort              0407    executable
+>20       beshort              0410    pure executable
+>22       beshort              >0      - version %ld
+0      beshort         000640  Tower32/800 68020
+>18       beshort              &020000 w/68881 object
+>18       beshort              &040000 compatible object
+>18       beshort              &~060000        object
+>20       beshort              0407    executable
+>20       beshort              0413    pure executable
+>12       belong               >0      not stripped
+>22       beshort              >0      - version %ld
+0      beshort         000645  Tower32/800 68010
+>18       beshort              &040000 compatible object
+>18       beshort              &~060000 object
+>20       beshort              0407    executable
+>20       beshort              0413    pure executable
+>12       belong               >0      not stripped
+>22       beshort              >0      - version %ld
+#------------------------------------------------------------------------------
+# alpha architecture description
+#
+
+0      leshort         0603            COFF format alpha
+>22    leshort&030000  !020000         executable
+>24    leshort         0410            pure
+>24    leshort         0413            paged
+>22    leshort&020000  !0              dynamically linked
+>16    lelong          !0              not stripped
+>16    lelong          0               stripped
+>22    leshort&030000  020000          shared library
+>24    leshort         0407            object
+>27    byte            x               - version %d
+>26    byte            x               \b.%d
+>28    byte            x               \b-%d
+
+# Basic recognition of Digital UNIX core dumps - Mike Bremford <mike@opac.bl.uk>
+#
+# The actual magic number is just "Core", followed by a 2-byte version
+# number; however, treating any file that begins with "Core" as a Digital
+# UNIX core dump file may produce too many false hits, so we include one
+# byte of the version number as well; DU 5.0 appears only to be up to
+# version 2.
+#
+0      string          Core\001        Alpha COFF format core dump (Digital UNIX)
+>24    string          >\0             \b, from '%s'
+0      string          Core\002        Alpha COFF format core dump (Digital UNIX)
+>24    string          >\0             \b, from '%s'
+
+
+#------------------------------------------------------------------------------
+# asterix:  file(1) magic for Aster*x; SunOS 5.5.1 gave the 4-character
+# strings as "long" - we assume they're just strings:
+# From: guy@netapp.com (Guy Harris)
+#
+0      string          *STA            Aster*x
+>7     string          WORD                    Words Document
+>7     string          GRAP                    Graphic
+>7     string          SPRE                    Spreadsheet
+>7     string          MACR                    Macro
+0      string          2278            Aster*x Version 2
+>29    byte            0x36                    Words Document
+>29    byte            0x35                    Graphic
+>29    byte            0x32                    Spreadsheet
+>29    byte            0x38                    Macro
+
+#------------------------------------------------------------------------------
+# blender: file(1) magic for Blender 3D data files
+#
+# Coded by Guillermo S. Romero <gsromero@alumnos.euitt.upm.es> using the
+# data from Ton Roosendaal <ton@blender.nl>. Ton or his company do not
+# support the rule, so mail GSR if problems with it. Rule version: 1.1.
+# You can get latest version with comments and details about the format
+# at http://acd.asoc.euitt.upm.es/~gsromero/3d/blender/magic.blender
+
+0      string  =BLENDER        Blender3D,
+>7     string  =_              saved as 32-bits
+>7      string =-              saved as 64-bits
+>8     string  =v              little endian
+>8     string  =V              big endian
+>9     byte    x               with version %c.
+>10    byte    x               \b%c
+>11    byte    x               \b%c
+
+#------------------------------------------------------------------------------
+# sendmail:  file(1) magic for sendmail config files
+#
+# XXX - byte order?
+#
+0      byte    046       Sendmail frozen configuration 
+>16    string  >\0       - version %s
+0      short   0x271c    Sendmail frozen configuration
+>16    string  >\0       - version %s
+
+#------------------------------------------------------------------------------
+# sendmail:  file(1) magic for sendmail m4(1) files
+#
+# From Hendrik Scholz <hendrik@scholz.net>
+# i.e. files in /usr/share/sendmail/cf/
+#
+0   string  divert(-1)\n    sendmail m4 text file
+
+
+#------------------------------------------------------------------------------
+# alliant:  file(1) magic for Alliant FX series a.out files
+#
+# If the FX series is the one that had a processor with a 68K-derived
+# instruction set, the "short" should probably become "beshort" and the
+# "long" should probably become "belong".
+# If it's the i860-based one, they should probably become either the
+# big-endian or little-endian versions, depending on the mode they ran
+# the 860 in....
+#
+0      short           0420            0420 Alliant virtual executable
+>2     short           &0x0020         common library
+>16    long            >0              not stripped
+0      short           0421            0421 Alliant compact executable
+>2     short           &0x0020         common library
+>16    long            >0              not stripped
+
+#------------------------------------------------------------------------------
+# CDDB: file(1) magic for CDDB(tm) format CD text data files
+#
+# From <steve@gracenote.com>
+#
+# This is the /etc/magic entry to decode datafiles as used by
+# CDDB-enabled CD player applications.
+#
+
+0       string/b        #\040xmcd               CDDB(tm) format CD text data
+
+#------------------------------------------------------------------------------
+# elf:  file(1) magic for ELF executables
+#
+# We have to check the byte order flag to see what byte order all the
+# other stuff in the header is in.
+#
+# What're the correct byte orders for the nCUBE and the Fujitsu VPP500?
+#
+# updated by Daniel Quinlan (quinlan@yggdrasil.com)
+0      string          \177ELF         ELF
+>4     byte            0               invalid class
+>4     byte            1               32-bit
+# only for MIPS - in the future, the ABI field of e_flags should be used.
+>>18   leshort         8
+>>>36  lelong          &0x20           N32
+>>18   leshort         10
+>>>36  lelong          &0x20           N32
+>>18   beshort         8
+>>>36  belong          &0x20           N32
+>>18   beshort         10
+>>>36  belong          &0x20           N32
+>4     byte            2               64-bit
+>5     byte            0               invalid byte order
+>5     byte            1               LSB
+# The official e_machine number for MIPS is now #8, regardless of endianness.
+# The second number (#10) will be deprecated later. For now, we still
+# say something if #10 is encountered, but only gory details for #8.
+>>18    leshort                8
+# only for 32-bit
+>>>4   byte            1
+>>>>36  lelong&0xf0000000      0x00000000      MIPS-I
+>>>>36  lelong&0xf0000000      0x10000000      MIPS-II
+>>>>36  lelong&0xf0000000      0x20000000      MIPS-III
+>>>>36  lelong&0xf0000000      0x30000000      MIPS-IV
+>>>>36  lelong&0xf0000000      0x40000000      MIPS-V
+>>>>36  lelong&0xf0000000      0x60000000      MIPS32
+>>>>36  lelong&0xf0000000      0x70000000      MIPS64
+>>>>36  lelong&0xf0000000      0x80000000      MIPS32 rel2
+>>>>36  lelong&0xf0000000      0x90000000      MIPS64 rel2
+# only for 64-bit
+>>>4   byte            2
+>>>>48  lelong&0xf0000000      0x00000000      MIPS-I
+>>>>48  lelong&0xf0000000      0x10000000      MIPS-II
+>>>>48  lelong&0xf0000000      0x20000000      MIPS-III
+>>>>48  lelong&0xf0000000      0x30000000      MIPS-IV
+>>>>48  lelong&0xf0000000      0x40000000      MIPS-V
+>>>>48  lelong&0xf0000000      0x60000000      MIPS32
+>>>>48  lelong&0xf0000000      0x70000000      MIPS64 
+>>>>48  lelong&0xf0000000      0x80000000      MIPS32 rel2
+>>>>48  lelong&0xf0000000      0x90000000      MIPS64 rel2
+>>16   leshort         0               no file type,
+>>16   leshort         1               relocatable,
+>>16   leshort         2               executable,
+>>16   leshort         3               shared object,
+# Core handling from Peter Tobias <tobias@server.et-inf.fho-emden.de>
+# corrections by Christian 'Dr. Disk' Hechelmann <drdisk@ds9.au.s.shuttle.de>
+>>16   leshort         4               core file
+# Core file detection is not reliable.
+#>>>(0x38+0xcc) string >\0             of '%s'
+#>>>(0x38+0x10) lelong >0              (signal %d),
+>>16   leshort         &0xff00         processor-specific,
+>>18   leshort         0               no machine,
+>>18   leshort         1               AT&T WE32100 - invalid byte order,
+>>18   leshort         2               SPARC - invalid byte order,
+>>18   leshort         3               Intel 80386,
+>>18   leshort         4               Motorola
+>>>36  lelong          &0x01000000     68000 - invalid byte order,
+>>>36  lelong          &0x00810000     CPU32 - invalid byte order,
+>>>36  lelong          0               68020 - invalid byte order,
+>>18   leshort         5               Motorola 88000 - invalid byte order,
+>>18   leshort         6               Intel 80486,
+>>18   leshort         7               Intel 80860,
+>>18   leshort         8               MIPS,
+>>18   leshort         9               Amdahl - invalid byte order,
+>>18   leshort         10              MIPS (deprecated),
+>>18   leshort         11              RS6000 - invalid byte order,
+>>18   leshort         15              PA-RISC - invalid byte order,
+>>>50  leshort         0x0214          2.0
+>>>48  leshort         &0x0008         (LP64),
+>>18   leshort         16              nCUBE,
+>>18   leshort         17              Fujitsu VPP500,
+>>18   leshort         18              SPARC32PLUS,
+>>18   leshort         20              PowerPC,
+>>18   leshort         22              IBM S/390,
+>>18   leshort         36              NEC V800,
+>>18   leshort         37              Fujitsu FR20,
+>>18   leshort         38              TRW RH-32,
+>>18   leshort         39              Motorola RCE,
+>>18   leshort         40              ARM,
+>>18   leshort         41              Alpha,
+>>18   leshort         0xa390          IBM S/390 (obsolete),
+>>18   leshort         42              Hitachi SH,
+>>18   leshort         43              SPARC V9 - invalid byte order,
+>>18   leshort         44              Siemens Tricore Embedded Processor,
+>>18   leshort         45              Argonaut RISC Core, Argonaut Technologies Inc.,
+>>18   leshort         46              Hitachi H8/300,
+>>18   leshort         47              Hitachi H8/300H,
+>>18   leshort         48              Hitachi H8S,
+>>18   leshort         49              Hitachi H8/500,
+>>18   leshort         50              IA-64 (Intel 64 bit architecture)
+>>18   leshort         51              Stanford MIPS-X,
+>>18   leshort         52              Motorola Coldfire,
+>>18   leshort         53              Motorola M68HC12,
+>>18   leshort         62              AMD x86-64,
+>>18   leshort         75              Digital VAX,
+>>18   leshort         88              Renesas M32R,
+>>18   leshort         97              NatSemi 32k,
+>>18   leshort         0x9026          Alpha (unofficial),
+>>20   lelong          0               invalid version
+>>20   lelong          1               version 1
+>>36   lelong          1               MathCoPro/FPU/MAU Required
+>5     byte            2               MSB
+# only for MIPS - see comment in little-endian section above.
+>>18    beshort                8
+# only for 32-bit
+>>>4   byte            1
+>>>>36  belong&0xf0000000      0x00000000      MIPS-I
+>>>>36  belong&0xf0000000      0x10000000      MIPS-II
+>>>>36  belong&0xf0000000      0x20000000      MIPS-III
+>>>>36  belong&0xf0000000      0x30000000      MIPS-IV
+>>>>36  belong&0xf0000000      0x40000000      MIPS-V
+>>>>36  belong&0xf0000000      0x60000000      MIPS32
+>>>>36  belong&0xf0000000      0x70000000      MIPS64
+>>>>36  belong&0xf0000000      0x80000000      MIPS32 rel2
+>>>>36  belong&0xf0000000      0x90000000      MIPS64 rel2
+# only for 64-bit
+>>>4   byte            2
+>>>>48 belong&0xf0000000       0x00000000      MIPS-I
+>>>>48 belong&0xf0000000       0x10000000      MIPS-II
+>>>>48 belong&0xf0000000       0x20000000      MIPS-III
+>>>>48 belong&0xf0000000       0x30000000      MIPS-IV
+>>>>48 belong&0xf0000000       0x40000000      MIPS-V
+>>>>48 belong&0xf0000000       0x60000000      MIPS32
+>>>>48 belong&0xf0000000       0x70000000      MIPS64 
+>>>>48 belong&0xf0000000       0x80000000      MIPS32 rel2
+>>>>48 belong&0xf0000000       0x90000000      MIPS64 rel2
+>>16   beshort         0               no file type,
+>>16   beshort         1               relocatable,
+>>16   beshort         2               executable,
+>>16   beshort         3               shared object,
+>>16   beshort         4               core file,
+#>>>(0x38+0xcc) string >\0             of '%s'
+#>>>(0x38+0x10) belong >0              (signal %d),
+>>16   beshort         &0xff00         processor-specific,
+>>18   beshort         0               no machine,
+>>18   beshort         1               AT&T WE32100,
+>>18   beshort         2               SPARC,
+>>18   beshort         3               Intel 80386 - invalid byte order,
+>>18   beshort         4               Motorola
+>>>36  belong          &0x01000000     68000,
+>>>36  belong          &0x00810000     CPU32,
+>>>36  belong          0               68020,
+>>18   beshort         5               Motorola 88000,
+>>18   beshort         6               Intel 80486 - invalid byte order,
+>>18   beshort         7               Intel 80860,
+>>18   beshort         8               MIPS,
+>>18   beshort         9               Amdahl,
+>>18   beshort         10              MIPS (deprecated),
+>>18   beshort         11              RS6000,
+>>18   beshort         15              PA-RISC
+>>>50  beshort         0x0214          2.0
+>>>48  beshort         &0x0008         (LP64)
+>>18   beshort         16              nCUBE,
+>>18   beshort         17              Fujitsu VPP500,
+>>18   beshort         18              SPARC32PLUS,
+>>>36  belong&0xffff00 &0x000100       V8+ Required,
+>>>36  belong&0xffff00 &0x000200       Sun UltraSPARC1 Extensions Required,
+>>>36  belong&0xffff00 &0x000400       HaL R1 Extensions Required,
+>>>36  belong&0xffff00 &0x000800       Sun UltraSPARC3 Extensions Required,
+>>18   beshort         20              PowerPC or cisco 4500,
+>>18   beshort         21              cisco 7500,
+>>18   beshort         22              IBM S/390,
+>>18   beshort         24              cisco SVIP,
+>>18   beshort         25              cisco 7200,
+>>18   beshort         36              NEC V800 or cisco 12000,
+>>18   beshort         37              Fujitsu FR20,
+>>18   beshort         38              TRW RH-32,
+>>18   beshort         39              Motorola RCE,
+>>18   beshort         40              ARM,
+>>18   beshort         41              Alpha,
+>>18   beshort         42              Hitachi SH,
+>>18   beshort         43              SPARC V9,
+>>18   beshort         44              Siemens Tricore Embedded Processor,
+>>18   beshort         45              Argonaut RISC Core, Argonaut Technologies Inc.,
+>>18   beshort         46              Hitachi H8/300,
+>>18   beshort         47              Hitachi H8/300H,
+>>18   beshort         48              Hitachi H8S,
+>>18   beshort         49              Hitachi H8/500,
+>>18   beshort         50              Intel Merced Processor,
+>>18   beshort         51              Stanford MIPS-X,
+>>18   beshort         52              Motorola Coldfire,
+>>18   beshort         53              Motorola M68HC12,
+>>18   beshort         73              Cray NV1,
+>>18   beshort         75              Digital VAX,
+>>18   beshort         88              Renesas M32R,
+>>18   beshort         97              NatSemi 32k,
+>>18   beshort         0x9026          Alpha (unofficial),
+>>18   beshort         0xa390          IBM S/390 (obsolete),
+>>20   belong          0               invalid version
+>>20   belong          1               version 1
+>>36   belong          1               MathCoPro/FPU/MAU Required
+# Up to now only 0, 1 and 2 are defined; I've seen a file with 0x83, it seemed
+# like proper ELF, but extracting the string had bad results.
+>4      byte            <0x80
+>>8    string          >\0             (%s)
+>8     string          \0
+>>7    byte            0               (SYSV)
+>>7    byte            1               (HP-UX)
+>>7    byte            2               (NetBSD)
+>>7    byte            3               (GNU/Linux)
+>>7    byte            4               (GNU/Hurd)
+>>7    byte            5               (86Open)
+>>7    byte            6               (Solaris)
+>>7    byte            7               (Monterey)
+>>7    byte            8               (IRIX)
+>>7    byte            9               (FreeBSD)
+>>7    byte            10              (Tru64)
+>>7    byte            11              (Novell Modesto)
+>>7    byte            12              (OpenBSD)
+>>7    byte            97              (ARM)
+>>7    byte            255             (embedded)
+
+#------------------------------------------------------------------------------
+# Epoc 32 : file(1) magic for Epoc Documents [psion/osaris
+# Stefan Praszalowicz (hpicollo@worldnet.fr)
+#0     lelong          0x10000037      Epoc32
+>4     lelong          0x1000006D
+>>8    lelong          0x1000007F      Word
+>>8    lelong          0x10000088      Sheet
+>>8    lelong          0x1000007D      Sketch
+>>8    lelong          0x10000085      TextEd
+
+#------------------------------------------------------------------------------
+# ispell:  file(1) magic for ispell
+#
+# Ispell 3.0 has a magic of 0x9601 and ispell 3.1 has 0x9602.  This magic
+# will match 0x9600 through 0x9603 in *both* little endian and big endian.
+# (No other current magic entries collide.)
+#
+# Updated by Daniel Quinlan (quinlan@yggdrasil.com)
+#
+0      leshort&0xFFFC  0x9600          little endian ispell
+>0     byte            0               hash file (?),
+>0     byte            1               3.0 hash file,
+>0     byte            2               3.1 hash file,
+>0     byte            3               hash file (?),
+>2     leshort         0x00            8-bit, no capitalization, 26 flags
+>2     leshort         0x01            7-bit, no capitalization, 26 flags
+>2     leshort         0x02            8-bit, capitalization, 26 flags
+>2     leshort         0x03            7-bit, capitalization, 26 flags
+>2     leshort         0x04            8-bit, no capitalization, 52 flags
+>2     leshort         0x05            7-bit, no capitalization, 52 flags
+>2     leshort         0x06            8-bit, capitalization, 52 flags
+>2     leshort         0x07            7-bit, capitalization, 52 flags
+>2     leshort         0x08            8-bit, no capitalization, 128 flags
+>2     leshort         0x09            7-bit, no capitalization, 128 flags
+>2     leshort         0x0A            8-bit, capitalization, 128 flags
+>2     leshort         0x0B            7-bit, capitalization, 128 flags
+>2     leshort         0x0C            8-bit, no capitalization, 256 flags
+>2     leshort         0x0D            7-bit, no capitalization, 256 flags
+>2     leshort         0x0E            8-bit, capitalization, 256 flags
+>2     leshort         0x0F            7-bit, capitalization, 256 flags
+>4     leshort         >0              and %d string characters
+0      beshort&0xFFFC  0x9600          big endian ispell
+>1     byte            0               hash file (?),
+>1     byte            1               3.0 hash file,
+>1     byte            2               3.1 hash file,
+>1     byte            3               hash file (?),
+>2     beshort         0x00            8-bit, no capitalization, 26 flags
+>2     beshort         0x01            7-bit, no capitalization, 26 flags
+>2     beshort         0x02            8-bit, capitalization, 26 flags
+>2     beshort         0x03            7-bit, capitalization, 26 flags
+>2     beshort         0x04            8-bit, no capitalization, 52 flags
+>2     beshort         0x05            7-bit, no capitalization, 52 flags
+>2     beshort         0x06            8-bit, capitalization, 52 flags
+>2     beshort         0x07            7-bit, capitalization, 52 flags
+>2     beshort         0x08            8-bit, no capitalization, 128 flags
+>2     beshort         0x09            7-bit, no capitalization, 128 flags
+>2     beshort         0x0A            8-bit, capitalization, 128 flags
+>2     beshort         0x0B            7-bit, capitalization, 128 flags
+>2     beshort         0x0C            8-bit, no capitalization, 256 flags
+>2     beshort         0x0D            7-bit, no capitalization, 256 flags
+>2     beshort         0x0E            8-bit, capitalization, 256 flags
+>2     beshort         0x0F            7-bit, capitalization, 256 flags
+>4     beshort         >0              and %d string characters
+# ispell 4.0 hash files  kromJx <kromJx@crosswinds.net>
+# Ispell 4.0
+0       string          ISPL            ispell
+>4      long            x               hash file version %d,
+>8      long            x               lexletters %d,
+>12     long            x               lexsize %d,
+>16     long            x               hashsize %d,
+>20     long            x               stblsize %d
+
+#------------------------------------------------------------------------------
+# lex:  file(1) magic for lex
+#
+#      derived empirically, your offsets may vary!
+53     string          yyprevious      C program text (from lex)
+>3     string          >\0              for %s
+# C program text from GNU flex, from Daniel Quinlan <quinlan@yggdrasil.com>
+21     string          generated\ by\ flex     C program text (from flex)
+# lex description file, from Daniel Quinlan <quinlan@yggdrasil.com>
+0      string          %{              lex description text
+
+#------------------------------------------------------------------------------
+# mips:  file(1) magic for Silicon Graphics (MIPS, IRIS, IRIX, etc.)
+#                         Dec Ultrix (MIPS)
+# all of SGI's *current* machines and OSes run in big-endian mode on the
+# MIPS machines, as far as I know.
+#
+# XXX - what is the blank "-" line?
+#
+# kbd file definitions
+0      string  kbd!map         kbd map file
+>8     byte    >0              Ver %d:
+>10    short   >0              with %d table(s)
+0      belong  0407            old SGI 68020 executable
+0      belong  0410            old SGI 68020 pure executable
+0      beshort 0x8765          disk quotas file
+0      beshort 0x0506          IRIS Showcase file
+>2     byte    0x49            -
+>3     byte    x               - version %ld
+0      beshort 0x0226          IRIS Showcase template
+>2     byte    0x63            -
+>3     byte    x               - version %ld
+0      belong  0x5343464d      IRIS Showcase file
+>4     byte    x               - version %ld
+0      belong  0x5443464d      IRIS Showcase template
+>4     byte    x               - version %ld
+0      belong  0xdeadbabe      IRIX Parallel Arena
+>8     belong  >0              - version %ld
+#
+0      beshort 0x0160          MIPSEB ECOFF executable
+>20    beshort 0407            (impure)
+>20    beshort 0410            (swapped)
+>20    beshort 0413            (paged)
+>8     belong  >0              not stripped
+>8     belong  0               stripped
+>22    byte    x               - version %ld
+>23    byte    x               \b.%ld
+#
+0      beshort 0x0162          MIPSEL-BE ECOFF executable
+>20    beshort 0407            (impure)
+>20    beshort 0410            (swapped)
+>20    beshort 0413            (paged)
+>8     belong  >0              not stripped
+>8     belong  0               stripped
+>23    byte    x               - version %d
+>22    byte    x               \b.%ld
+#
+0      beshort 0x6001          MIPSEB-LE ECOFF executable
+>20    beshort 03401           (impure)
+>20    beshort 04001           (swapped)
+>20    beshort 05401           (paged)
+>8     belong  >0              not stripped
+>8     belong  0               stripped
+>23    byte    x               - version %d
+>22    byte    x               \b.%ld
+#
+0      beshort 0x6201          MIPSEL ECOFF executable
+>20    beshort 03401           (impure)
+>20    beshort 04001           (swapped)
+>20    beshort 05401           (paged)
+>8     belong  >0              not stripped
+>8     belong  0               stripped
+>23    byte    x               - version %ld
+>22    byte    x               \b.%ld
+#
+# MIPS 2 additions
+#
+0      beshort 0x0163          MIPSEB MIPS-II ECOFF executable
+>20    beshort 0407            (impure)
+>20    beshort 0410            (swapped)
+>20    beshort 0413            (paged)
+>8     belong  >0              not stripped
+>8     belong  0               stripped
+>22    byte    x               - version %ld
+>23    byte    x               \b.%ld
+#
+0      beshort 0x0166          MIPSEL-BE MIPS-II ECOFF executable
+>20    beshort 0407            (impure)
+>20    beshort 0410            (swapped)
+>20    beshort 0413            (paged)
+>8     belong  >0              not stripped
+>8     belong  0               stripped
+>22    byte    x               - version %ld
+>23    byte    x               \b.%ld
+#
+0      beshort 0x6301          MIPSEB-LE MIPS-II ECOFF executable
+>20    beshort 03401           (impure)
+>20    beshort 04001           (swapped)
+>20    beshort 05401           (paged)
+>8     belong  >0              not stripped
+>8     belong  0               stripped
+>23    byte    x               - version %ld
+>22    byte    x               \b.%ld
+#
+0      beshort 0x6601          MIPSEL MIPS-II ECOFF executable
+>20    beshort 03401           (impure)
+>20    beshort 04001           (swapped)
+>20    beshort 05401           (paged)
+>8     belong  >0              not stripped
+>8     belong  0               stripped
+>23    byte    x               - version %ld
+>22    byte    x               \b.%ld
+#
+# MIPS 3 additions
+#
+0      beshort 0x0140          MIPSEB MIPS-III ECOFF executable
+>20    beshort 0407            (impure)
+>20    beshort 0410            (swapped)
+>20    beshort 0413            (paged)
+>8     belong  >0              not stripped
+>8     belong  0               stripped
+>22    byte    x               - version %ld
+>23    byte    x               \b.%ld
+#
+0      beshort 0x0142          MIPSEL-BE MIPS-III ECOFF executable
+>20    beshort 0407            (impure)
+>20    beshort 0410            (swapped)
+>20    beshort 0413            (paged)
+>8     belong  >0              not stripped
+>8     belong  0               stripped
+>22    byte    x               - version %ld
+>23    byte    x               \b.%ld
+#
+0      beshort 0x4001          MIPSEB-LE MIPS-III ECOFF executable
+>20    beshort 03401           (impure)
+>20    beshort 04001           (swapped)
+>20    beshort 05401           (paged)
+>8     belong  >0              not stripped
+>8     belong  0               stripped
+>23    byte    x               - version %ld
+>22    byte    x               \b.%ld
+#
+0      beshort 0x4201          MIPSEL MIPS-III ECOFF executable
+>20    beshort 03401           (impure)
+>20    beshort 04001           (swapped)
+>20    beshort 05401           (paged)
+>8     belong  >0              not stripped
+>8     belong  0               stripped
+>23    byte    x               - version %ld
+>22    byte    x               \b.%ld
+#
+0      beshort 0x180           MIPSEB Ucode
+0      beshort 0x182           MIPSEL-BE Ucode
+# 32bit core file
+0      belong  0xdeadadb0      IRIX core dump
+>4     belong  1               of
+>16    string  >\0             '%s'
+# 64bit core file
+0      belong  0xdeadad40      IRIX 64-bit core dump
+>4     belong  1               of
+>16    string  >\0             '%s'
+# N32bit core file
+0       belong 0xbabec0bb      IRIX N32 core dump
+>4      belong 1               of
+>16     string >\0             '%s'
+# New style crash dump file
+0      string  \x43\x72\x73\x68\x44\x75\x6d\x70        IRIX vmcore dump of
+>36    string  >\0                                     '%s'
+# Trusted IRIX info
+0      string  SGIAUDIT        SGI Audit file
+>8     byte    x               - version %d
+>9     byte    x               \b.%ld
+#
+0      string  WNGZWZSC        Wingz compiled script
+0      string  WNGZWZSS        Wingz spreadsheet
+0      string  WNGZWZHP        Wingz help file
+#
+0      string  \#Inventor V    IRIS Inventor 1.0 file
+0      string  \#Inventor V2   Open Inventor 2.0 file
+# GLF is OpenGL stream encoding
+0      string  glfHeadMagic();         GLF_TEXT
+4      belong  0x7d000000              GLF_BINARY_LSB_FIRST
+4      belong  0x0000007d              GLF_BINARY_MSB_FIRST
+# GLS is OpenGL stream encoding; GLS is the successor of GLF
+0      string  glsBeginGLS(            GLS_TEXT
+4      belong  0x10000000              GLS_BINARY_LSB_FIRST
+4      belong  0x00000010              GLS_BINARY_MSB_FIRST
diff --git a/program/lib/utf7.inc b/program/lib/utf7.inc
deleted file mode 100644 (file)
index d2068be..0000000
+++ /dev/null
@@ -1,249 +0,0 @@
-<?php
-
-/*
- *  Copyright (C) 2000 Edmund Grimley Evans <edmundo@rano.org>
- * 
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- * 
- *  This program 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 General Public License for more details.
- *
- *  Translated from C to PHP by Thomas Bruederli <roundcube@gmail.com>
- */ 
-
-
-/**
- * Convert the data ($str) from RFC 2060's UTF-7 to UTF-8.
- * If input data is invalid, return the original input string.
- * RFC 2060 obviously intends the encoding to be unique (see
- * point 5 in section 5.1.3), so we reject any non-canonical
- * form, such as &ACY- (instead of &-) or &AMA-&AMA- (instead
- * of &AMAAwA-).
- */
-function utf7_to_utf8($str)
-{
-  $Index_64 = array(
-      -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
-      -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
-      -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,62, 63,-1,-1,-1,
-      52,53,54,55, 56,57,58,59, 60,61,-1,-1, -1,-1,-1,-1,
-      -1, 0, 1, 2,  3, 4, 5, 6,  7, 8, 9,10, 11,12,13,14,
-      15,16,17,18, 19,20,21,22, 23,24,25,-1, -1,-1,-1,-1,
-      -1,26,27,28, 29,30,31,32, 33,34,35,36, 37,38,39,40,
-      41,42,43,44, 45,46,47,48, 49,50,51,-1, -1,-1,-1,-1
-  );
-
-  $u7len = strlen($str);
-  $str = strval($str);
-  $p = $err = '';
-
-  for ($i=0; $u7len > 0; $i++, $u7len--)
-  {
-    $u7 = $str[$i];
-    if ($u7 == '&')
-    {
-      $i++;
-      $u7len--;
-      $u7 = $str[$i];
-      
-      if ($u7len && $u7 == '-')
-      {
-        $p .= '&';
-        continue;
-      }
-
-      $ch = 0;
-      $k = 10;
-      for (; $u7len > 0; $i++, $u7len--)
-      {
-        $u7 = $str[$i];
-
-        if ((ord($u7) & 0x80) || ($b = $Index_64[ord($u7)]) == -1)
-          break;
-
-        if ($k > 0)
-        {
-          $ch |= $b << $k;
-          $k -= 6;
-        }
-        else
-        {
-          $ch |= $b >> (-$k);
-          if ($ch < 0x80)
-          {
-            /* Printable US-ASCII */
-            if (0x20 <= $ch && $ch < 0x7f)
-              return $err;
-           $p .= chr($ch);
-          }
-          else if ($ch < 0x800)
-          {
-            $p .= chr(0xc0 | ($ch >> 6));
-            $p .= chr(0x80 | ($ch & 0x3f));
-          }
-          else
-          {
-            $p .= chr(0xe0 | ($ch >> 12));
-            $p .= chr(0x80 | (($ch >> 6) & 0x3f));
-            $p .= chr(0x80 | ($ch & 0x3f));
-          }
-
-          $ch = ($b << (16 + $k)) & 0xffff;
-          $k += 10;
-        }
-      }
-
-      /* Non-zero or too many extra bits */
-      if ($ch || $k < 6)
-        return $err;
-        
-      /* BASE64 not properly terminated */
-      if (!$u7len || $u7 != '-')
-        return $err;
-        
-      /* Adjacent BASE64 sections */
-      if ($u7len > 2 && $str[$i+1] == '&' && $str[$i+2] != '-')
-        return $err;
-    }
-    /* Not printable US-ASCII */
-    else if (ord($u7) < 0x20 || ord($u7) >= 0x7f)
-      return $err;
-    else
-      $p .= $u7;
-  }
-
-  return $p;
-}
-
-
-/**
- * Convert the data ($str) from UTF-8 to RFC 2060's UTF-7.
- * Unicode characters above U+FFFF are replaced by U+FFFE.
- * If input data is invalid, return an empty string.
- */
-function utf8_to_utf7($str)
-{
-  $B64Chars = array(
-    'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
-    'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd',
-    'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
-    't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7',
-    '8', '9', '+', ','
-  );
-
-  $u8len = strlen($str);
-  $base64 = $i = 0;
-  $p = $err = '';
-
-  while ($u8len)
-  {
-    $u8 = $str[$i];
-    $c = ord($u8);
-    
-    if ($c < 0x80)
-    {
-      $ch = $c;
-      $n = 0;
-    }
-    else if ($c < 0xc2)
-      return $err;
-    else if ($c < 0xe0)
-    {
-      $ch = $c & 0x1f;
-      $n = 1;
-    }
-    else if ($c < 0xf0)
-    {
-      $ch = $c & 0x0f;
-      $n = 2;
-    }
-    else if ($c < 0xf8)
-    {
-      $ch = $c & 0x07;
-      $n = 3;
-    }
-    else if ($c < 0xfc)
-    {
-      $ch = $c & 0x03;
-      $n = 4;
-    }
-    else if ($c < 0xfe)
-    {
-      $ch = $c & 0x01;
-      $n = 5;
-    }
-    else
-      return $err;
-
-    $i++;
-    $u8len--;
-
-    if ($n > $u8len)
-      return $err;
-
-    for ($j=0; $j < $n; $j++)
-    {
-      $o = ord($str[$i+$j]);
-      if (($o & 0xc0) != 0x80)
-        return $err;
-      $ch = ($ch << 6) | ($o & 0x3f);
-    }
-    
-    if ($n > 1 && !($ch >> ($n * 5 + 1)))
-      return $err;
-    
-    $i += $n;
-    $u8len -= $n;
-
-    if ($ch < 0x20 || $ch >= 0x7f)
-    {
-      if (!$base64)
-      {
-        $p .= '&';
-        $base64 = 1;
-        $b = 0;
-        $k = 10;
-      }
-      if ($ch & ~0xffff)
-        $ch = 0xfffe;
-      
-      $p .= $B64Chars[($b | $ch >> $k)];
-      $k -= 6;
-      for (; $k >= 0; $k -= 6)
-        $p .= $B64Chars[(($ch >> $k) & 0x3f)];
-
-      $b = ($ch << (-$k)) & 0x3f;
-      $k += 16;
-    }
-    else
-    {
-      if ($base64)
-      {
-        if ($k > 10)
-          $p .= $B64Chars[$b];
-        $p .= '-';
-        $base64 = 0;
-      }
-      
-      $p .= chr($ch);
-      if (chr($ch) == '&')
-        $p .= '-';
-    }
-  }
-
-  if ($base64)
-  {
-    if ($k > 10)
-      $p .= $B64Chars[$b];
-    $p .= '-';
-  }
-
-  return $p;
-}
-
-?>
diff --git a/program/lib/utf8.class.php b/program/lib/utf8.class.php
new file mode 100644 (file)
index 0000000..e0dc9e2
--- /dev/null
@@ -0,0 +1,171 @@
+<?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($aliases[$charset]))
+      $charset = $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 "?";
+  }
+
+}
+
+?>
index f8c3251ad93eb9377ceb117b02061f2e3ec0f19e..0d4ffdb4bb8469d82cd2fce80b704a5d9dead34c 100644 (file)
@@ -76,6 +76,7 @@
  * - added RFC2397 support
  * - base URL support
  * - invalid HTML comments removal before parsing
+ * - "fixing" unitless CSS values for XHTML output
  */
 
 class washtml
@@ -101,14 +102,14 @@ class washtml
     'cellpadding', 'valign', 'bgcolor', 'color', 'border', 'bordercolorlight',
     'bordercolordark', 'face', 'marginwidth', 'marginheight', 'axis', 'border',
     'abbr', 'char', 'charoff', 'clear', 'compact', 'coords', 'vspace', 'hspace',
-    'cellborder', 'size', 'lang', 'dir',
+    'cellborder', 'size', 'lang', 'dir', 'usemap', 'shape', 'media',
     // attributes of form elements
     'type', 'rows', 'cols', 'disabled', 'readonly', 'checked', 'multiple', 'value'
   );
 
   /* Block elements which could be empty but cannot be returned in short form (<tag />) */
   static $block_elements = array('div', 'p', 'pre', 'blockquote', 'a', 'font', 'center',
-    'table', 'ul', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ol', 'dl', 'strong', 'i', 'b', 'u');
+    'table', 'ul', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ol', 'dl', 'strong', 'i', 'b', 'u', 'span');
 
   /* State for linked objects in HTML */
   public $extlinks = false;
@@ -133,7 +134,8 @@ class washtml
 
 
   /* Constructor */
-  public function __construct($p = array()) {
+  public function __construct($p = array())
+  {
     $this->_html_elements = array_flip((array)$p['html_elements']) + array_flip(self::$html_elements) ;
     $this->_html_attribs = array_flip((array)$p['html_attribs']) + array_flip(self::$html_attribs);
     $this->_ignore_elements = array_flip((array)$p['ignore_elements']) + array_flip(self::$ignore_elements);
@@ -149,20 +151,24 @@ class washtml
   }
 
   /* Check CSS style */
-  private function wash_style($style) {
+  private function wash_style($style)
+  {
     $s = '';
 
     foreach (explode(';', $style) as $declaration) {
       if (preg_match('/^\s*([a-z\-]+)\s*:\s*(.*)\s*$/i', $declaration, $match)) {
         $cssid = $match[1];
-        $str = $match[2];
+        $str   = $match[2];
         $value = '';
+
         while (sizeof($str) > 0 &&
           preg_match('/^(url\(\s*[\'"]?([^\'"\)]*)[\'"]?\s*\)'./*1,2*/
                  '|rgb\(\s*[0-9]+\s*,\s*[0-9]+\s*,\s*[0-9]+\s*\)'.
                  '|-?[0-9.]+\s*(em|ex|px|cm|mm|in|pt|pc|deg|rad|grad|ms|s|hz|khz|%)?'.
-                 '|#[0-9a-f]{3,6}|[a-z0-9", -]+'.
-                 ')\s*/i', $str, $match)) {
+                 '|#[0-9a-f]{3,6}'.
+                 '|[a-z0-9", -]+'.
+                 ')\s*/i', $str, $match)
+        ) {
           if ($match[2]) {
             if (($src = $this->config['cid_map'][$match[2]])
                 || ($src = $this->config['cid_map'][$this->config['base_url'].$match[2]])) {
@@ -178,20 +184,29 @@ class washtml
               $value .= ' url('.htmlspecialchars($match[2], ENT_QUOTES).')';
             }
           }
-          else if ($match[0] != 'url' && $match[0] != 'rgb') //whitelist ?
+          else { //whitelist ?
             $value .= ' ' . $match[0];
 
+            // #1488535: Fix size units, so width:800 would be changed to width:800px
+            if (preg_match('/(left|right|top|bottom|width|height)/i', $cssid) && preg_match('/^[0-9]+$/', $match[0])) {
+              $value .= 'px';
+            }
+          }
+
           $str = substr($str, strlen($match[0]));
         }
-        if ($value)
+
+        if (isset($value[0])) {
           $s .= ($s?' ':'') . $cssid . ':' . $value . ';';
+        }
       }
     }
     return $s;
   }
 
   /* Take a node and return allowed attributes and check values */
-  private function wash_attribs($node) {
+  private function wash_attribs($node)
+  {
     $t = '';
     $washed;
 
@@ -199,8 +214,11 @@ class washtml
       $key = strtolower($key);
       $value = $node->getAttribute($key);
       if (isset($this->_html_attribs[$key]) ||
-         ($key == 'href' && preg_match('/^(http:|https:|ftp:|mailto:|#).+/i', $value)))
+         ($key == 'href' && !preg_match('!^javascript!i', $value)
+           && preg_match('!^([a-z][a-z0-9.+-]+:|//|#).+!i', $value))
+      ) {
         $t .= ' ' . $key . '="' . htmlspecialchars($value, ENT_QUOTES) . '"';
+      }
       else if ($key == 'style' && ($style = $this->wash_style($value))) {
         $quot = strpos($style, '"') !== false ? "'" : '"';
         $t .= ' style=' . $quot . $style . $quot;
@@ -222,7 +240,8 @@ class washtml
         else if (preg_match('/^data:.+/i', $value)) { // RFC2397
           $t .= ' ' . $key . '="' . htmlspecialchars($value, ENT_QUOTES) . '"';
         }
-      } else
+      }
+      else
         $washed .= ($washed?' ':'') . $key;
     }
     return $t . ($washed && $this->config['show_washed']?' x-washed="'.$washed.'"':'');
@@ -231,7 +250,8 @@ class washtml
   /* The main loop that recurse on a node tree.
    * It output only allowed tags with allowed attributes
    * and allowed inline styles */
-  private function dumpHtml($node) {
+  private function dumpHtml($node)
+  {
     if(!$node->hasChildNodes())
       return '';
 
@@ -248,9 +268,7 @@ class washtml
         else if (isset($this->_html_elements[$tagName])) {
           $content = $this->dumpHtml($node);
           $dump .= '<' . $tagName . $this->wash_attribs($node) .
-            // create closing tag for block elements, but also for elements
-            // with content or with some attributes (eg. style, class) (#1486812)
-            ($content != '' || $node->hasAttributes() || isset($this->_block_elements[$tagName]) ? ">$content</$tagName>" : ' />');
+            ($content != '' || isset($this->_block_elements[$tagName]) ? ">$content</$tagName>" : ' />');
         }
         else if (isset($this->_ignore_elements[$tagName])) {
           $dump .= '<!-- ' . htmlspecialchars($tagName, ENT_QUOTES) . ' not allowed -->';
@@ -310,5 +328,3 @@ class washtml
   }
 
 }
-
-?>
index 04a48794a4e7bff1a1ca084f937935797c13e004..99b8fc2e540077e31761ab3f78fad2d8a147ab14 100644 (file)
@@ -1,20 +1,16 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/ar_SA/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Ossama Khayat <okhayat@yahoo.com>                             |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 5569 2011-12-07 14:47:32Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/ar_SA/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
@@ -44,7 +40,8 @@ $labels['size'] = 'الحجم';
 $labels['priority'] = 'الأولوية';
 $labels['organization'] = 'المنظمة';
 $labels['readstatus'] = 'حالة القراءة';
-$labels['mailboxlist'] = 'المجلدات';
+$labels['mailboxlist'] = 'مجلدات';
+$labels['folders'] = 'مجلدات';
 $labels['messagesfromto'] = 'الرسالة $from إلى $to من مجموع $count';
 $labels['threadsfromto'] = 'جهات الإتصال $from إلى $to من مجموع $count';
 $labels['messagenrof'] = 'الرسالة $nr من $count';
@@ -74,6 +71,7 @@ $labels['feb'] = 'فبراير';
 $labels['mar'] = 'مارس';
 $labels['apr'] = 'أبريل';
 $labels['may'] = 'مايو';
+$labels['longmay'] = 'مايو';
 $labels['jun'] = 'يونيو';
 $labels['jul'] = 'يوليو';
 $labels['aug'] = 'أغسطس';
@@ -85,7 +83,6 @@ $labels['longjan'] = 'يناير';
 $labels['longfeb'] = 'فبراير';
 $labels['longmar'] = 'مارس';
 $labels['longapr'] = 'إبريل';
-$labels['longmay'] = 'مايو';
 $labels['longjun'] = 'يونيو';
 $labels['longjul'] = 'يوليو';
 $labels['longaug'] = 'أغسطس';
@@ -95,6 +92,7 @@ $labels['longnov'] = 'نوفمبر';
 $labels['longdec'] = 'ديسمبر';
 $labels['today'] = 'اليوم';
 $labels['checkmail'] = 'التحقق من وجود رسائل جديدة';
+$labels['compose'] = 'إنشاء رسالة';
 $labels['writenewmessage'] = 'إنشاء رسالة جديدة';
 $labels['replytomessage'] = 'الرد على الرسالة';
 $labels['replytoallmessage'] = 'الرد على المرسل وجميع مستقبلي الرسالة';
@@ -120,7 +118,8 @@ $labels['markunflagged'] = 'كغير موْسومة';
 $labels['moreactions'] = 'إجراءات إضافية...';
 $labels['select'] = 'تحديد';
 $labels['all'] = 'الكل';
-$labels['none'] = 'لا شيء';
+$labels['none'] = 'لاشيء';
+$labels['nonesort'] = 'لاشيء';
 $labels['currpage'] = 'الصفحة الحالية';
 $labels['unread'] = 'غير المقروءة';
 $labels['flagged'] = 'موسوم';
@@ -140,7 +139,6 @@ $labels['expand_only_unread'] = 'فقط مع الرسائل الغير مقرو
 $labels['fromto'] = 'المرسل/المستلم';
 $labels['flag'] = 'وسم';
 $labels['attachment'] = 'مرفق';
-$labels['nonesort'] = 'لاشيء';
 $labels['sentdate'] = 'تاريخ إرسالها';
 $labels['arrival'] = 'تاريخ وصولها';
 $labels['asc'] = 'تصاعدي';
@@ -161,7 +159,6 @@ $labels['searchmod'] = 'أماكن البحث';
 $labels['msgtext'] = 'كامل الرسالة';
 $labels['openinextwin'] = 'افتح في نافذة جديدة';
 $labels['emlsave'] = 'تنزيل (.eml)';
-$labels['compose'] = 'إنشاء رسالة';
 $labels['editasnew'] = 'تعديل كجديد';
 $labels['savemessage'] = 'حفظ هذه المسودة';
 $labels['sendmessage'] = 'إرسال الرسالة الآن';
@@ -230,15 +227,16 @@ $labels['notes'] = 'ملاحظات';
 $labels['male'] = 'ذكر';
 $labels['female'] = 'أنثى';
 $labels['manager'] = 'مدير';
-$labels['assistant'] = 'مساعد';
+$labels['assistant'] = 'المساعد';
+$labels['typeassistant'] = 'المساعد';
 $labels['spouse'] = 'زوجة';
 $labels['allfields'] = 'جميع الحقول';
 $labels['search'] = 'بحث';
 $labels['advsearch'] = 'بحث متقدم';
-$labels['other'] = 'أخرى';
+$labels['other'] = 'آخر';
+$labels['typeother'] = 'آخر';
 $labels['typehome'] = 'المنزل';
 $labels['typework'] = 'العمل';
-$labels['typeother'] = 'آخر';
 $labels['typemobile'] = 'المحمول';
 $labels['typemain'] = 'الرئيسي';
 $labels['typehomefax'] = 'فاكس المنزل';
@@ -246,7 +244,6 @@ $labels['typeworkfax'] = 'فاكس العمل';
 $labels['typecar'] = 'السيارة';
 $labels['typepager'] = 'الرنان';
 $labels['typevideo'] = 'الفيديو';
-$labels['typeassistant'] = 'المساعد';
 $labels['typehomepage'] = 'الرئيسية';
 $labels['typeblog'] = 'المدوّنة';
 $labels['typeprofile'] = 'الملف الشخصي';
@@ -356,7 +353,6 @@ $labels['mainoptions'] = 'الخيارات الأساسية';
 $labels['section'] = 'قسم';
 $labels['maintenance'] = 'الصيانة';
 $labels['newmessage'] = 'رسالة جديدة';
-$labels['listoptions'] = 'خيارات السرد';
 $labels['signatureoptions'] = 'خيارات التوقيع';
 $labels['whenreplying'] = 'عند الرد';
 $labels['replytopposting'] = 'بدء رسالة جديدة ووضع النص أعلى الأصلية';
@@ -383,7 +379,6 @@ $labels['spellcheckignorenums'] = 'تجاهل الكلمات التي تحتوي
 $labels['spellcheckignorecaps'] = 'تجاهل الكلمات التي بها أحرف كبيرة';
 $labels['addtodict'] = 'إضافة إلى القامس';
 $labels['folder'] = 'مجلد';
-$labels['folders'] = 'مجلدات';
 $labels['foldername'] = 'اسم المجلد';
 $labels['subscribed'] = 'مشترك';
 $labels['messagecount'] = 'الرسائل';
@@ -434,4 +429,3 @@ $labels['japanese'] = 'اليابانية';
 $labels['korean'] = 'الكورية';
 $labels['chinese'] = 'الصينية';
 
-?>
index 8215d33b8a9a545802b59e041891da368bd34930..390c30f611bce5321ec86121f0825623c1076105 100644 (file)
@@ -1,27 +1,23 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/ar_SA/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Ossama Khayat <okhayat@yahoo.com>                             |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 5569 2011-12-07 14:47:32Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/ar_SA/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
 */
 
 $messages = array();
 $messages['loginfailed'] = 'فشل تسجيل الدخول';
 $messages['cookiesdisabled'] = 'المتصفح الخاص بك لا يقبل الكوكيز';
 $messages['sessionerror'] = 'انتهت صلاحية الجلسة الحالية أو أنها غير صالحة';
-$messages['imaperror'] = 'فشل الاتصال بخادم IMAP';
+$messages['storageerror'] = 'فشل الاتصال بخادم IMAP';
 $messages['servererror'] = 'خطأ في الخادم!';
 $messages['servererrormsg'] = 'خطأ خادم: $msg';
 $messages['dberror'] = 'خطأ في قاعدة البيانات!';
@@ -74,7 +70,7 @@ $messages['nonamewarning'] = 'الرجاء إدخال اسم';
 $messages['nopagesizewarning'] = 'الرجاء إدخال حجم الصفحة';
 $messages['nosenderwarning'] = 'رجاء اكتب عنوان البريد الالكتروني للمُرسل';
 $messages['norecipientwarning'] = 'الرجاء إدخال اسم مستقبل واحد على الأقل';
-$messages['nosubjectwarning'] = 'حقل \"الموضوع\" فارغ. هل تريد كتابة موضوع للرسالة؟';
+$messages['nosubjectwarning'] = 'حقل "الموضوع" فارغ. هل تريد كتابة موضوع للرسالة؟';
 $messages['nobodywarning'] = 'إرسال هذه الرسالة دون نص؟';
 $messages['notsentwarning'] = 'لم يتم إرسال الرسالة. هل تريد تجاهل الرسالة؟';
 $messages['noldapserver'] = 'الرجاء اختيار خادم ldap للبحث فيه';
@@ -159,4 +155,3 @@ $messages['mispellingsfound'] = 'عُثر على أخطاء إملائية في
 $messages['parentnotwritable'] = 'تعذر إنشاء/نقل المجلد إلى المجلد المحدد. ليست لديك الصلاحية.';
 $messages['messagetoobig'] = 'جزء الرسالة أكبر بكثير مما يمكن معالجته.';
 
-?>
index 7056003fb4a884cf7067ee98d035f55f913a82d9..fedc400197bcf436074aee602dec1019deae3bb9 100644 (file)
@@ -1,22 +1,17 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/ast/labels.inc                                               |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Mikel González <dangerous_piper@softastur.org>                |
-|         http://blogs.altuxa.com/gyg                                   |
-|         http://softastur.org                                          |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 4410 2011-01-12 18:25:02Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization//labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $labels = array();
@@ -44,17 +39,15 @@ $labels['date'] = 'Fecha';
 $labels['size'] = 'Tamañu';
 $labels['priority'] = 'Prioridá';
 $labels['organization'] = 'Organización';
-$labels['reply-to'] = 'Contestar a';
-$labels['mailboxlist'] = 'Carpetes';
+$labels['mailboxlist'] = 'Bandexes';
+$labels['folders'] = 'Bandexes';
 $labels['messagesfromto'] = 'Mensaxes del $from a $to de $count';
 $labels['messagenrof'] = 'Mensaxe $nr de $count';
+$labels['copy'] = 'Copia';
 $labels['moveto'] = 'mover pa...';
 $labels['download'] = 'baxar';
 $labels['filename'] = 'Nome del Ficheru';
 $labels['filesize'] = 'Tamañu del ficheru';
-$labels['preferhtml'] = 'Amosar HTML';
-$labels['htmlmessage'] = 'Mensaxe HTML';
-$labels['prettydate'] = 'Fecha prestosa';
 $labels['addtoaddressbook'] = 'Amestar al llibru de direiciones';
 $labels['sun'] = 'Dom';
 $labels['mon'] = 'Llu';
@@ -74,7 +67,8 @@ $labels['jan'] = 'Xin';
 $labels['feb'] = 'Feb';
 $labels['mar'] = 'Mar';
 $labels['apr'] = 'Abr';
-$labels['may'] = 'May';
+$labels['may'] = 'Mayu';
+$labels['longmay'] = 'Mayu';
 $labels['jun'] = 'Xun';
 $labels['jul'] = 'Xnt';
 $labels['aug'] = 'Ago';
@@ -86,7 +80,6 @@ $labels['longjan'] = 'Xineru';
 $labels['longfeb'] = 'Febreru';
 $labels['longmar'] = 'Marzu';
 $labels['longapr'] = 'Abril';
-$labels['longmay'] = 'Mayu';
 $labels['longjun'] = 'Xunu';
 $labels['longjul'] = 'Xunetu';
 $labels['longaug'] = 'Agostu';
@@ -104,13 +97,9 @@ $labels['deletemessage'] = 'Desaniciar mensaxe';
 $labels['movemessagetotrash'] = 'Mover mensaxe a la papelera';
 $labels['printmessage'] = 'Imprentar esti mensaxe';
 $labels['previousmessage'] = 'Amosar el mensaxe anterior';
-$labels['previousmessages'] = 'Amosar grupu de mensaxes anterior';
 $labels['firstmessage'] = 'Amosar primer mensaxe';
-$labels['firstmessages'] = 'Amosar primer grupu de mensaxes';
 $labels['nextmessage'] = 'Amosar el mensaxe siguiente';
-$labels['nextmessages'] = 'Amosar grupu de mensaxes que siguientes';
 $labels['lastmessage'] = 'Amosar l\'últimu mensaxe';
-$labels['lastmessages'] = 'Amosar l\'últimu grupu de mensaxes';
 $labels['backtolist'] = 'Tornar a la llista de mensaxes';
 $labels['viewsource'] = 'Amosar el códigu';
 $labels['markmessages'] = 'Marcar mensaxes';
@@ -118,10 +107,10 @@ $labels['markread'] = 'Como lleíu';
 $labels['markunread'] = 'Como non lleíu';
 $labels['markflagged'] = 'Como marcáu';
 $labels['markunflagged'] = 'Como non marcáu';
-$labels['messageactions'] = 'Más aiciones...';
 $labels['select'] = 'Escueye';
 $labels['all'] = 'Toos';
 $labels['none'] = 'Nengún';
+$labels['nonesort'] = 'Nengún';
 $labels['unread'] = 'Ensin lleer';
 $labels['flagged'] = 'Marcáu';
 $labels['unanswered'] = 'Ensin contestar';
@@ -130,7 +119,6 @@ $labels['invert'] = 'Invertir';
 $labels['filter'] = 'Filtru';
 $labels['compact'] = 'Compautar';
 $labels['empty'] = 'Vaciar';
-$labels['purge'] = 'Desaniciar';
 $labels['quota'] = 'Espaciu en discu';
 $labels['unknown'] = 'desconocíu';
 $labels['unlimited'] = 'ensin llímite';
@@ -212,6 +200,9 @@ $labels['manageidentities'] = 'Remanar identidaes pa esta cuenta';
 $labels['newidentity'] = 'Identidad nueva';
 $labels['newitem'] = 'Nuevu';
 $labels['edititem'] = 'Editar';
+$labels['preferhtml'] = 'Amosar HTML';
+$labels['htmlmessage'] = 'Mensaxe HTML';
+$labels['prettydate'] = 'Fecha prestosa';
 $labels['setdefault'] = 'Escoyer opción preferída';
 $labels['autodetect'] = 'Escoyer automáticamente';
 $labels['language'] = 'Idioma';
@@ -257,9 +248,7 @@ $labels['mainoptions'] = 'Opciones principales';
 $labels['section'] = 'Seición';
 $labels['maintenance'] = 'Mantenimientu';
 $labels['newmessage'] = 'Mensax nuevu';
-$labels['listoptions'] = 'Allistar opciones';
 $labels['folder'] = 'Bandexa';
-$labels['folders'] = 'Bandexes';
 $labels['foldername'] = 'Nome de bandexa';
 $labels['subscribed'] = 'Soscrita';
 $labels['messagecount'] = 'Mensaxes';
@@ -275,4 +264,3 @@ $labels['KB'] = 'KB';
 $labels['MB'] = 'MB';
 $labels['GB'] = 'GB';
 
-?>
index 39085c9f601de54b1bff54de31f10b119ccf97e8..19bbfed8be3c6611008e98f563f7b51e7fb9aa9f 100644 (file)
@@ -1,29 +1,24 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/ast/messages.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2008, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Mikel González <dangerous_piper@softastur.org>                |
-|         http://blogs.altuxa.com/gyg                                   |
-|         http://softastur.org                                          |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 4410 2011-01-12 18:25:02Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization//messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $messages = array();
 $messages['loginfailed'] = 'La clave nun val';
-$messages['cookiesdisabled'] = 'El to navegador nun acepta "cookies"';
+$messages['cookiesdisabled'] = 'El to navegador nun acepta "cookies';
 $messages['sessionerror'] = 'La to sesión nun val';
-$messages['imaperror'] = 'Fallu de conexón col sirvidor IMAP';
+$messages['storageerror'] = 'Fallu de conexón col sirvidor IMAP';
 $messages['servererror'] = '¡Fallu del sirvidor!';
 $messages['invalidrequest'] = 'Fallu de la solicitú. Nun se guardaron datos.';
 $messages['nomessagesfound'] = 'Nun doi con mensaxes';
@@ -66,7 +61,6 @@ $messages['nosubjectwarning'] = 'El campo "Asuntu" ta vacíu. ¿Quiés rellenalu
 $messages['nobodywarning'] = '¿Quies unviar esti mensaxe ensin testu?';
 $messages['notsentwarning'] = 'Nun unvie\'l mensaxe. ¿Quies desanicialu?';
 $messages['noldapserver'] = 'Por favor, escueye un sirvidor LDAP pa buscar';
-$messages['nocontactsreturned'] = 'Nun di con nengún contautu';
 $messages['nosearchname'] = 'Por favor, dame un nome o una direición de corréu';
 $messages['searchsuccessful'] = 'Di con $nr mensaxes';
 $messages['searchnomatch'] = 'Nun di con nengún resultáu';
@@ -104,4 +98,3 @@ $messages['smtptoerror'] = 'Fallu SMTP ($code): Fallu al amestar el destinatariu
 $messages['smtprecipientserror'] = 'Fallu SMTP: Nun soi a amosar la llista de destinatarios';
 $messages['smtperror'] = 'Fallu SMTP: $msg';
 
-?>
index ce19611658dc25c9ff89333e706448305d104b85..ac2c577ac943bd50751314a6dcf20269ec7ed5bf 100644 (file)
@@ -1,18 +1,16 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/az_AZ/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Orkhan Guliyev, OUR Technology, LLC.<office@ourtechnology.net>|
-+-----------------------------------------------------------------------+
-
+ +-----------------------------------------------------------------------+
+ | localization/az_AZ/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Emin Mastizadeh <emin25@ovi.com>                              |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
@@ -20,7 +18,7 @@ $labels['welcome'] = '$product-a xoş gəldiniz!';
 $labels['username'] = 'İstifadəçi adı';
 $labels['password'] = 'Şifrə';
 $labels['server'] = 'Server';
-$labels['login'] = 'Daxil ol';
+$labels['login'] = 'Giriş';
 $labels['logout'] = 'Çıx';
 $labels['mail'] = 'Poçt';
 $labels['settings'] = 'Nizamlamalar';
@@ -43,6 +41,7 @@ $labels['priority'] = 'Vaciblik';
 $labels['organization'] = 'Təşkilat';
 $labels['readstatus'] = 'Statusu oxu';
 $labels['mailboxlist'] = 'Qovluqlar';
+$labels['folders'] = 'Qovluqlar';
 $labels['messagesfromto'] = '$count mesajdan $from - $to arası mesajlar';
 $labels['threadsfromto'] = 'Müzakirə: $from - $to Toplam: $count';
 $labels['messagenrof'] = 'Məktub: $nr / $count';
@@ -72,6 +71,7 @@ $labels['feb'] = 'Fev';
 $labels['mar'] = 'Mar';
 $labels['apr'] = 'Apr';
 $labels['may'] = 'May';
+$labels['longmay'] = 'May';
 $labels['jun'] = 'İyn';
 $labels['jul'] = 'İyl';
 $labels['aug'] = 'Avq';
@@ -83,7 +83,6 @@ $labels['longjan'] = 'Yanvar';
 $labels['longfeb'] = 'Fevral';
 $labels['longmar'] = 'Mart';
 $labels['longapr'] = 'Aprel';
-$labels['longmay'] = 'May';
 $labels['longjun'] = 'İyun';
 $labels['longjul'] = 'İyul';
 $labels['longaug'] = 'Avqust';
@@ -93,6 +92,7 @@ $labels['longnov'] = 'Noyabr';
 $labels['longdec'] = 'Dekabr';
 $labels['today'] = 'Bu gün';
 $labels['checkmail'] = 'Gələnləri yoxla';
+$labels['compose'] = 'Məktub yaz';
 $labels['writenewmessage'] = 'Yeni məktub';
 $labels['replytomessage'] = 'Göndərənə cavabla';
 $labels['replytoallmessage'] = 'Hamıya cavabla';
@@ -113,10 +113,10 @@ $labels['markread'] = 'Oxunmuş';
 $labels['markunread'] = 'Oxunmamış';
 $labels['markflagged'] = 'Qeyd et';
 $labels['markunflagged'] = 'Qeydi çıxar';
-$labels['messageactions'] = 'Əlavə işlər...';
 $labels['select'] = 'Seçin';
-$labels['all'] = 'Hamısını';
-$labels['none'] = 'Heç birini';
+$labels['all'] = 'Hamısı';
+$labels['none'] = 'Heç biri';
+$labels['nonesort'] = 'Heç biri';
 $labels['currpage'] = 'Hazırki səhifəni';
 $labels['unread'] = 'Oxunmamışları';
 $labels['flagged'] = 'İşarəliləri';
@@ -136,7 +136,6 @@ $labels['expand_only_unread'] = 'yalnız oxunmamış məktublarla';
 $labels['fromto'] = 'Göndərən/Qəbul edən';
 $labels['flag'] = 'Bayrağ';
 $labels['attachment'] = 'Əlavə';
-$labels['nonesort'] = 'Yoxdur';
 $labels['sentdate'] = 'Göndərilmə tarixi';
 $labels['arrival'] = 'Çatdırılma tarixi';
 $labels['asc'] = 'Çoxalan';
@@ -157,7 +156,6 @@ $labels['searchmod'] = 'Axtarış variantları';
 $labels['msgtext'] = 'Bütün məktub';
 $labels['openinextwin'] = 'Yeni pəncərədə aç';
 $labels['emlsave'] = 'Saxla (.eml)';
-$labels['compose'] = 'Məktub yaz';
 $labels['editasnew'] = 'Yeni kimi redaktə et';
 $labels['savemessage'] = 'Qaralama saxla';
 $labels['sendmessage'] = 'İndi göndər';
@@ -170,8 +168,9 @@ $labels['editidents'] = 'İdentifikasiyanı dəyiş';
 $labels['checkspelling'] = 'Orfoqrafiyanı yoxla';
 $labels['resumeediting'] = 'Redaktəni davam et';
 $labels['revertto'] = 'Dəyişiklikləri ləğv et';
-$labels['attachments'] = 'Əlavələr';
+$labels['attachments'] = 'Bərkidilmiş Fayllar';
 $labels['upload'] = 'Yüklə';
+$labels['uploadprogress'] = '$percent ($current cəmi: $total)';
 $labels['close'] = 'Bağla';
 $labels['messageoptions'] = 'Məktub xüsusiyyətləri...';
 $labels['low'] = 'Alçaq';
@@ -222,11 +221,13 @@ $labels['notes'] = 'Qeydlər';
 $labels['male'] = 'kişi';
 $labels['female'] = 'qadın';
 $labels['manager'] = 'Menecer';
-$labels['assistant'] = 'Assistent';
+$labels['assistant'] = 'Köməkçi';
+$labels['typeassistant'] = 'Köməkçi';
 $labels['spouse'] = 'Ər-arvad';
+$labels['other'] = 'Başqa';
+$labels['typeother'] = 'Başqa';
 $labels['typehome'] = 'Ev';
 $labels['typework'] = 'İş';
-$labels['typeother'] = 'Başqa';
 $labels['typemobile'] = 'Mobil';
 $labels['typemain'] = 'Əsas';
 $labels['typehomefax'] = 'Ev faksı';
@@ -234,7 +235,6 @@ $labels['typeworkfax'] = 'İş faksı';
 $labels['typecar'] = 'Maşın';
 $labels['typepager'] = 'Peycer';
 $labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Köməkçi';
 $labels['addfield'] = 'Sahə əlavə et';
 $labels['addcontact'] = 'Ünvanlara əlavə et';
 $labels['editcontact'] = 'Ünvanı redaktə et';
@@ -256,7 +256,6 @@ $labels['print'] = 'Çap et';
 $labels['export'] = 'İxrac et';
 $labels['exportvcards'] = 'Ünvanları vCards formatında ixrac et';
 $labels['newcontactgroup'] = 'Ünvanlar qrupunu yarat';
-$labels['groupactions'] = 'Ünvanlar qrupu üçün işlər';
 $labels['previouspage'] = 'Əvvəlkini göstər';
 $labels['firstpage'] = 'Birincini göstər';
 $labels['nextpage'] = 'Sonrakını göstər';
@@ -265,7 +264,7 @@ $labels['group'] = 'Qrup';
 $labels['groups'] = 'Qruplar';
 $labels['personaladrbook'] = 'Şəxsi ünvanlar';
 $labels['import'] = 'İdxal';
-$labels['importcontacts'] = 'Ünvanların idxalı ';
+$labels['importcontacts'] = 'Ünvanların idxalı';
 $labels['importfromfile'] = 'Fayldan idxal:';
 $labels['importreplace'] = 'Ünvan kitabçasını dəyiş';
 $labels['importtext'] = 'Siz ünvanları mövcud ünvan kitabçasından yükləyə bilərsiniz. Hal-hazırda ünvanların idxalını <a href="http://az.wikipedia.org/wiki/vCard">vCard</a> formatında dəstəkləyirik.';
@@ -334,7 +333,6 @@ $labels['mainoptions'] = 'Əsas nizamlamalar';
 $labels['section'] = 'Bölmə';
 $labels['maintenance'] = 'Xidmət';
 $labels['newmessage'] = 'Yeni məktub';
-$labels['listoptions'] = 'Nizamlamaların siyahısı';
 $labels['signatureoptions'] = 'İmzanın nizamlamaları';
 $labels['whenreplying'] = 'Cavab zamanı';
 $labels['replytopposting'] = 'orijinaldan əvvəl yeni məktub yaz';
@@ -353,7 +351,6 @@ $labels['reqmdn'] = 'Hər zaman çatdırılma bildirişini istə';
 $labels['reqdsn'] = 'Hər zaman çatıdrılma haqda statusu istə';
 $labels['replysamefolder'] = 'Cavab mesajları üçün saxlanılan yer';
 $labels['folder'] = 'Qovluq';
-$labels['folders'] = 'Qovluqlar';
 $labels['foldername'] = 'Qovluq adı';
 $labels['subscribed'] = 'İmzalanıb';
 $labels['messagecount'] = 'Məktublar';
@@ -398,4 +395,3 @@ $labels['japanese'] = 'Yaponca';
 $labels['korean'] = 'Koreya';
 $labels['chinese'] = 'Çincə';
 
-?>
index a806086b972fab504a82e41b0b66f7bca6cf31a3..4818cf71522a003cee76749687ead277a0a0760b 100644 (file)
@@ -1,25 +1,24 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/az_AZ/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Orkhan Guliyev, OUR Technology, LLC.<office@ourtechnology.net>|
-+-----------------------------------------------------------------------+
-
+ +-----------------------------------------------------------------------+
+ | localization/az_AZ/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $messages = array();
 $messages['loginfailed'] = 'Giriş uğursuz oldu';
 $messages['cookiesdisabled'] = 'Sizin brauzer kukiləri qəbul etmir';
 $messages['sessionerror'] = 'Sizin sessiya köhnəlib';
-$messages['imaperror'] = 'IMAP serverlə bağlantı alınmadı';
+$messages['storageerror'] = 'IMAP serverlə bağlantı alınmadı';
 $messages['servererror'] = 'Server xətası!';
 $messages['servererrormsg'] = 'Server xətası: $msg';
 $messages['errorreadonly'] = 'Əməliyyatı etmək mümkün deyil. Qovluq yalnız oxunuş üçündür.';
@@ -69,7 +68,6 @@ $messages['nosubjectwarning'] = '"Mövzu" sahəsi boşdur. Mövzu daxil etmək i
 $messages['nobodywarning'] = 'Məktub boş göndərilsin?';
 $messages['notsentwarning'] = 'Məktub göndərilmədi. Göndərilmədən imtina etmək istəyirsiniz?';
 $messages['noldapserver'] = 'Lütfən, axtarış üçün LDAP server seçin';
-$messages['nocontactsreturned'] = 'Ünvanlar tapılmadı';
 $messages['nosearchname'] = 'Lütfən, ad və ya e-poçt əlavə edin';
 $messages['notuploadedwarning'] = 'Əlavələr tam yüklənilməyib. Gözləyin və ya yükləməni ləğv edin.';
 $messages['searchsuccessful'] = 'Tapılan məktublar: $nr';
@@ -97,7 +95,7 @@ $messages['deletingmessage'] = 'Məktub(lar) silinir...';
 $messages['markingmessage'] = 'Məktub(lar) işarələnir...';
 $messages['receiptsent'] = 'Oxunulma haqda bildiriş göndərildi';
 $messages['errorsendingreceipt'] = 'Oxunulma haqda bildiriş göndərilmədi';
-$messages['nodeletelastidentity'] = 'Siz bu kimliyi silə bilməzsiniz. Bu axırıncıdır. ';
+$messages['nodeletelastidentity'] = 'Siz bu kimliyi silə bilməzsiniz. Bu axırıncıdır.';
 $messages['forbiddencharacter'] = 'Qovlu adı qadağan olunmuş simvollar təşkil edir';
 $messages['selectimportfile'] = 'Yüklənilən faylı seçin';
 $messages['addresswriterror'] = 'Seçilmiş ünvan kitabçası yaddaşa yazıla bilməz';
@@ -106,7 +104,7 @@ $messages['contactremovedfromgroup'] = 'Ünvanlar qrupdan silindi';
 $messages['importwait'] = 'İdxal gedir, lütfən gözləyin...';
 $messages['importerror'] = 'İdxal alınmadı! Yüklənilən fayl düzgün vCard fayl deyil.';
 $messages['importconfirm'] = '<b>$inserted ünvanlar müvəffəqiyyətlə idxal edildi, mövcud $skipped buraxılıb</b>:<p><em>$names</em></p>';
-$messages['importconfirmskipped'] = '<b>Buraxılmış $skipped mövcud daxillər</b>   ';
+$messages['importconfirmskipped'] = '<b>Buraxılmış $skipped mövcud daxillər</b>';
 $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?';
@@ -116,7 +114,6 @@ $messages['smtpautherror'] = 'SMTP Error ($code): İdentifikasiya xətası';
 $messages['smtpfromerror'] = 'SMTP Error ($code): Göndərəni səlavə etmək mümkün deyil - "$from" ($msg)';
 $messages['smtptoerror'] = 'SMTP Error ($code): Qəbul edəni əlavə etmək mümkün deyil - "$to" ($msg)';
 $messages['smtprecipientserror'] = 'SMTP Error ($code): Qəbul edənlərin siyahısını emal etmək mümkün deyil';
-$messages['smtpdsnerror'] = 'SMTP xəta: çatdırılma haqda bildiriş dəstəyi yoxdur';
 $messages['smtperror'] = 'SMTP Error ($code): $msg';
 $messages['emailformaterror'] = 'Səhv ünvan: $email';
 $messages['toomanyrecipients'] = 'Qəbul edənlər həddindən artıq çoxdur. Lütfən, $max qədər azaldın.';
@@ -138,4 +135,3 @@ $messages['folderupdated'] = 'Qovluq yeniləndi';
 $messages['foldercreated'] = 'Qovluq yaradıldı';
 $messages['invalidimageformat'] = 'Şəkil formatı düzgün deyil';
 
-?>
diff --git a/program/localization/be_BE/labels.inc b/program/localization/be_BE/labels.inc
new file mode 100644 (file)
index 0000000..76a79bf
--- /dev/null
@@ -0,0 +1,44 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/be_BE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Alex Nehaichik <nab@mail.by>                                  |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['welcome'] = 'Вітаем у $product';
+$labels['username'] = 'Карыстальнік';
+$labels['password'] = 'Пароль';
+$labels['server'] = 'Сервер';
+$labels['login'] = 'Уваход';
+$labels['logout'] = 'Выхад';
+$labels['mail'] = 'Пошта';
+$labels['settings'] = 'Настаўленні';
+$labels['addressbook'] = 'Адрасная кніга';
+$labels['inbox'] = 'Атрыманыя';
+$labels['drafts'] = 'Чарнавікі';
+$labels['sent'] = 'Дасланыя';
+$labels['trash'] = 'Сметніца';
+$labels['junk'] = 'Спам';
+$labels['subject'] = 'Тэма';
+$labels['from'] = 'Ад каго';
+$labels['to'] = 'Каму';
+$labels['cc'] = 'Копія (СС)';
+$labels['bcc'] = 'Сх.копія (ВСС)';
+$labels['replyto'] = 'Адказаць на';
+$labels['date'] = 'Дата';
+$labels['size'] = 'Памер';
+$labels['priority'] = 'Прыярытэт';
+$labels['readstatus'] = 'Не прачытанае';
+$labels['mailboxlist'] = 'Тэчкі';
+$labels['folders'] = 'Тэчкі';
+
diff --git a/program/localization/be_BE/messages.inc b/program/localization/be_BE/messages.inc
new file mode 100644 (file)
index 0000000..2c743af
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/be_BE/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Alex Nehaichik <nab@mail.by>                                  |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$messages = array();
+$messages['loginfailed'] = 'Збой уваходу.';
+$messages['cookiesdisabled'] = 'Ваш азіральнік не падтрымлівае кукіс.';
+$messages['sessionerror'] = 'Ваша сесія не дзейсная ці састарэла.';
+$messages['servererror'] = 'Памылка сервера!';
+$messages['servererrormsg'] = 'Памылка сервера: $msg';
+$messages['dberror'] = 'Памылка базы даных!';
+$messages['errorreadonly'] = 'Немагчыма выканаць аперацыю. Тэчка даступна толькі для чытання.';
+$messages['errornoperm'] = 'Немагчыма выканаць аперацыю. Адмоўлена ў доступе.';
+$messages['invalidrequest'] = 'Не дзейсны запыт! Даныя не захаваныя.';
+
index dffa2c608aa2f74c895afee198be81ecb20bde69..0dde2147dbf4b65c4659dccf6f48df97068a0e4f 100644 (file)
@@ -1,21 +1,17 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/bg_BG/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Todor Dragnev <todor.dragnev@gmail.com>                       |
-|   Nickolay Bunev <just4nick@gmail.com>                                |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 5569 2011-12-07 14:47:32Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/bg_BG/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $labels = array();
@@ -46,6 +42,7 @@ $labels['priority'] = 'Приоритет';
 $labels['organization'] = 'Организация';
 $labels['readstatus'] = 'Статут (прочетено/непрочетено)';
 $labels['mailboxlist'] = 'Папки';
+$labels['folders'] = 'Папки';
 $labels['messagesfromto'] = 'Съобщения $from до $to от $count';
 $labels['threadsfromto'] = 'Съобщения $from до $to от $count';
 $labels['messagenrof'] = 'Съобщение $nr от $count';
@@ -75,6 +72,7 @@ $labels['feb'] = 'Фев';
 $labels['mar'] = 'Мар';
 $labels['apr'] = 'Апр';
 $labels['may'] = 'Май';
+$labels['longmay'] = 'Май';
 $labels['jun'] = 'Юни';
 $labels['jul'] = 'Юли';
 $labels['aug'] = 'Авг';
@@ -86,7 +84,6 @@ $labels['longjan'] = 'Януари';
 $labels['longfeb'] = 'Февруари';
 $labels['longmar'] = 'Март';
 $labels['longapr'] = 'Април';
-$labels['longmay'] = 'Май';
 $labels['longjun'] = 'Юни';
 $labels['longjul'] = 'Юли';
 $labels['longaug'] = 'Август';
@@ -96,6 +93,7 @@ $labels['longnov'] = 'Ноември';
 $labels['longdec'] = 'Декември';
 $labels['today'] = 'Днес';
 $labels['checkmail'] = 'Провери за нови писма';
+$labels['compose'] = 'Ново писмо';
 $labels['writenewmessage'] = 'Създай ново писмо';
 $labels['replytomessage'] = 'Отговори на писмото';
 $labels['replytoallmessage'] = 'Отговор до изпращача и всички получатели';
@@ -121,7 +119,8 @@ $labels['markunflagged'] = 'Като неотбелязани';
 $labels['moreactions'] = 'Повече действия...';
 $labels['select'] = 'Избери';
 $labels['all'] = 'Всички';
-$labels['none'] = 'Нищо';
+$labels['none'] = 'Никакъв';
+$labels['nonesort'] = 'Никакъв';
 $labels['currpage'] = 'Страница';
 $labels['unread'] = 'Нови';
 $labels['flagged'] = 'Отбелязано';
@@ -141,7 +140,6 @@ $labels['expand_only_unread'] = 'само с непрочетени съобще
 $labels['fromto'] = 'Изпращащ/Получаващ';
 $labels['flag'] = 'Флаг';
 $labels['attachment'] = 'Прикачен файл';
-$labels['nonesort'] = 'Никакъв';
 $labels['sentdate'] = 'Дата на изпращане';
 $labels['arrival'] = 'Дата на пристигане';
 $labels['asc'] = 'възходящ';
@@ -162,7 +160,6 @@ $labels['searchmod'] = 'Търсене във';
 $labels['msgtext'] = 'Цялото съобщение';
 $labels['openinextwin'] = 'Отвори в нов прозорец';
 $labels['emlsave'] = 'Изтегли като .eml';
-$labels['compose'] = 'Ново писмо';
 $labels['editasnew'] = 'Редактирай като ново';
 $labels['savemessage'] = 'Запиши в Чернови';
 $labels['sendmessage'] = 'Изпрати писмото';
@@ -189,7 +186,7 @@ $labels['high'] = 'Висок';
 $labels['highest'] = 'Най-висок';
 $labels['nosubject'] = '(няма заглавие)';
 $labels['showimages'] = 'Показвай изображения';
-$labels['alwaysshow'] = 'Винаги показвай изображения от $ ';
+$labels['alwaysshow'] = 'Винаги показвай изображения от $';
 $labels['isdraft'] = 'Това съобщение е чернова';
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = 'текстов';
@@ -232,14 +229,15 @@ $labels['male'] = 'Мъж';
 $labels['female'] = 'Жена';
 $labels['manager'] = 'Мениджър';
 $labels['assistant'] = 'Асистент';
+$labels['typeassistant'] = 'Асистент';
 $labels['spouse'] = 'Съпруг (а)';
 $labels['allfields'] = 'Всички полета';
 $labels['search'] = 'Търсене';
 $labels['advsearch'] = 'Разширено търсене';
 $labels['other'] = 'Други';
+$labels['typeother'] = 'Други';
 $labels['typehome'] = 'Начало';
 $labels['typework'] = 'Работа';
-$labels['typeother'] = 'Други';
 $labels['typemobile'] = 'Мобилни';
 $labels['typemain'] = 'Главни';
 $labels['typehomefax'] = 'Домашен факс';
@@ -247,7 +245,6 @@ $labels['typeworkfax'] = 'Служебен факс';
 $labels['typecar'] = 'Автомобил';
 $labels['typepager'] = 'Пейджър';
 $labels['typevideo'] = 'Видео';
-$labels['typeassistant'] = 'Асистент';
 $labels['typehomepage'] = 'Начална страница';
 $labels['typeblog'] = 'Блог';
 $labels['typeprofile'] = 'Профил';
@@ -356,7 +353,6 @@ $labels['mainoptions'] = 'Основни настройки';
 $labels['section'] = 'Раздел';
 $labels['maintenance'] = 'Поддръжка';
 $labels['newmessage'] = 'Ново съобщение';
-$labels['listoptions'] = 'Покажи списък с настройки';
 $labels['signatureoptions'] = 'Настройки на подпис';
 $labels['whenreplying'] = 'При отговор';
 $labels['replytopposting'] = 'започване на ново съобщение преди получения текст';
@@ -383,7 +379,6 @@ $labels['spellcheckignorenums'] = 'Игнорирай думи съдържащ
 $labels['spellcheckignorecaps'] = 'Игнорирай думи съдържащи единствено главни букви';
 $labels['addtodict'] = 'Добави в речника';
 $labels['folder'] = 'Папка';
-$labels['folders'] = 'Папки';
 $labels['foldername'] = 'Име на папката';
 $labels['subscribed'] = 'Използвай';
 $labels['messagecount'] = 'Писма';
@@ -429,4 +424,3 @@ $labels['japanese'] = 'Японски';
 $labels['korean'] = 'Корейски';
 $labels['chinese'] = 'Китайски';
 
-?>
index 17eb50c92b31896338b0cf6e885eebdf3d17b326..757e2842d6a2329d2226f870f2995340d4a109af 100644 (file)
@@ -1,28 +1,24 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/bg_BG/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Todor Dragnev <todor.dragnev@gmail.com>                       |
-|        Nickolay Bunev <just4nick@gmail.com>                                                          |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 5569 2011-12-07 14:47:32Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/bg_BG/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $messages = array();
 $messages['loginfailed'] = 'Вход неуспешен';
 $messages['cookiesdisabled'] = 'Вашият браузър не приема cookies';
 $messages['sessionerror'] = 'Невалидна или изтекла сесия';
-$messages['imaperror'] = 'Неуспешно свързване към IMAP сървъра';
+$messages['storageerror'] = 'Неуспешно свързване към IMAP сървъра';
 $messages['servererror'] = 'Грешка!';
 $messages['servererrormsg'] = 'Сървърна грешка: $msg';
 $messages['dberror'] = 'Грешка с базата данни!';
@@ -139,7 +135,7 @@ $messages['contactdeleted'] = 'Контактът беше изтрит';
 $messages['contactrestoreerror'] = 'Неуспешно възстановяване на изтрите контакт(и).';
 $messages['contactrestored'] = 'Контактът(-ите) са възстановени успешно';
 $messages['groupdeleted'] = 'Групата беше  изтрита';
-$messages['grouprenamed'] = 'Групата беше преименувана ';
+$messages['grouprenamed'] = 'Групата беше преименувана';
 $messages['groupcreated'] = 'Групата беше създадена';
 $messages['savedsearchdeleted'] = 'Запазаните търсения са изтрити успешно.';
 $messages['savedsearchdeleteerror'] = 'Изтриването на запазените търсения е неуспешно.';
@@ -159,4 +155,3 @@ $messages['invalidimageformat'] = 'Невалиден формат на изоб
 $messages['mispellingsfound'] = 'В съобщението са намерени правописни грешки.';
 $messages['parentnotwritable'] = 'Създаването/преместването на папка в избраната родителска папка е неуспешно. Няма права за достъп.';
 
-?>
index 2e217313dc6d1013333c7d9507f613244a9a92fd..273284ca67fc83aa5a49c793f7dbe652e6105304 100644 (file)
@@ -1,17 +1,17 @@
 <?php
 
 /*
-+-----------------------------------------------------------------------+
-| language/bn_BD/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2008, The Roundcube Dev Team                            |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author:                                                               |
-+-----------------------------------------------------------------------+
-
+ +-----------------------------------------------------------------------+
+ | localization/bn_BD/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $labels = array();
@@ -39,17 +39,15 @@ $labels['date'] = 'তারিখ';
 $labels['size'] = 'সাইজ';
 $labels['priority'] = 'গুরুত্ব';
 $labels['organization'] = 'কোম্পানি';
-$labels['reply-to'] = 'প্রতি উত্তর';
-$labels['mailboxlist'] = 'মেইল বক্স তালিকা';
-$labels['messagesfromto'] = '$count মেইলের মধ্যে, $from হতে $to দেখানো হচ্ছে ';
+$labels['mailboxlist'] = 'ফোল্ডার/মেইলবক্স';
+$labels['folders'] = 'ফোল্ডার/মেইলবক্স';
+$labels['messagesfromto'] = '$count মেইলের মধ্যে, $from হতে $to দেখানো হচ্ছে';
 $labels['messagenrof'] = '$nr #মেইল/চিঠি , $count এর মধ্যে';
+$labels['copy'] = 'অনুলিপির ঠিকানা';
 $labels['moveto'] = 'সরিয়ে ফেলুন..';
 $labels['download'] = 'ডাউনলোড';
 $labels['filename'] = 'ফাইলের নাম';
 $labels['filesize'] = 'ফাইলের সাইজ';
-$labels['preferhtml'] = 'HTML এ দেখি';
-$labels['htmlmessage'] = 'HTML মেইল/চিঠি';
-$labels['prettydate'] = 'তারিখ ভালো করে দেখা যাবে';
 $labels['addtoaddressbook'] = 'ঠিকানার বইতে ঢুকান';
 $labels['sun'] = 'রবি';
 $labels['mon'] = 'সোম';
@@ -70,6 +68,7 @@ $labels['feb'] = 'ফেব্রুয়ারি';
 $labels['mar'] = 'মার্চ';
 $labels['apr'] = 'এপ্রিল';
 $labels['may'] = 'মে';
+$labels['longmay'] = 'মে';
 $labels['jun'] = 'জুন';
 $labels['jul'] = 'জুলাই';
 $labels['aug'] = 'আগস্ট';
@@ -81,7 +80,6 @@ $labels['longjan'] = 'জানুয়ারি';
 $labels['longfeb'] = 'ফেব্রুয়ারি';
 $labels['longmar'] = 'মার্চ';
 $labels['longapr'] = 'এপ্রিল';
-$labels['longmay'] = 'মে';
 $labels['longjun'] = 'জুন';
 $labels['longjul'] = 'জুলাই';
 $labels['longaug'] = 'আগস্ট';
@@ -90,22 +88,19 @@ $labels['longoct'] = 'অষ্টবার (October)';
 $labels['longnov'] = 'নবেমবার (November)';
 $labels['longdec'] = 'দিশেমবার (December)';
 $labels['today'] = 'আজকে';
-$labels['checkmail'] = 'দেখুন নতুন কোনো মেইল/চিঠি এলো কিনা ';
+$labels['checkmail'] = 'দেখুন নতুন কোনো মেইল/চিঠি এলো কিনা';
+$labels['compose'] = 'নতুন মেইল/চিঠি লিখুন';
 $labels['writenewmessage'] = 'নতুন মেইল/চিঠি লিখুন';
 $labels['replytomessage'] = 'শুধু প্রেরকের কাছে উত্তর পাঠান';
 $labels['replytoallmessage'] = 'প্রেরক ও এই চিঠির অন্যান্য প্রাপকদের কাছে উত্তর পাঠান';
-$labels['forwardmessage'] = 'মেইল/চিঠি এগিয়ে দিন ';
+$labels['forwardmessage'] = 'মেইল/চিঠি এগিয়ে দিন';
 $labels['deletemessage'] = 'মেইল/চিঠি ছিড়ে ফেলুন';
 $labels['movemessagetotrash'] = 'মেইল/চিঠি ডাস্টবিনে ফেলুন';
 $labels['printmessage'] = 'মেইল/চিঠি প্রিন্ট করুন';
 $labels['previousmessage'] = 'আগের মেইল/চিঠিটি দেখুন';
-$labels['previousmessages'] = 'আগের মেইল/চিঠি গুলো দেখুন';
 $labels['firstmessage'] = 'প্রথম মেইল/চিঠিটি দেখুন';
-$labels['firstmessages'] = 'প্রথম মেইল/চিঠি গুলো দেখুন';
 $labels['nextmessage'] = 'পরের মেইল/চিঠিটি দেখুন';
-$labels['nextmessages'] = 'পরের মেইল/চিঠিগুলি দেখুন';
 $labels['lastmessage'] = 'শেষ মেইল/চিঠিটি দেখুন';
-$labels['lastmessages'] = 'শেষের দিকের মেইল/চিঠিগুলি দেখুন';
 $labels['backtolist'] = 'মেইল/চিঠির তালিকায় ফিরে যান';
 $labels['viewsource'] = 'মূল উৎসদেখুন';
 $labels['markmessages'] = 'মেইল/চিঠি (গুলো)';
@@ -116,20 +111,19 @@ $labels['markunflagged'] = 'দাগহীন (unflagged)';
 $labels['select'] = 'বেছেনিন';
 $labels['all'] = 'সবগুলো';
 $labels['none'] = 'কোনোটাই না';
+$labels['nonesort'] = 'কোনোটাই না';
 $labels['unread'] = 'নাদেখা (unread)';
 $labels['flagged'] = 'দাগানো (flagged)';
 $labels['unanswered'] = 'উত্তর না দেওয়া গুলো';
 $labels['filter'] = 'ছাকনি';
 $labels['compact'] = 'টাইটকরুন';
 $labels['empty'] = 'খালিকরুন';
-$labels['purge'] = 'Purge';
 $labels['quota'] = 'ডিস্ক এ খালি যায়গা';
 $labels['unknown'] = 'অজানা';
 $labels['unlimited'] = 'সীমাহীন';
 $labels['quicksearch'] = 'ঝটকরে খোজা';
 $labels['resetsearch'] = 'নতুনকরে খুজুন';
 $labels['openinextwin'] = 'নতুন উইন্ডো তে দেখুন';
-$labels['compose'] = 'নতুন মেইল/চিঠি লিখুন';
 $labels['savemessage'] = 'খসড়া হিসাবে জমা করে রাখুন';
 $labels['sendmessage'] = 'এখুনি মেইল / চিঠিটি পাঠান';
 $labels['addattachment'] = 'একটা ফাইল জুড়ে দিন চিঠির সাথে';
@@ -200,6 +194,9 @@ $labels['manageidentities'] = 'এই অ্যাকউন্টের "পর
 $labels['newidentity'] = 'নতুন পরিচিতি';
 $labels['newitem'] = 'নতুন জিনিষ';
 $labels['edititem'] = 'জিনিষ বদলান';
+$labels['preferhtml'] = 'HTML এ দেখি';
+$labels['htmlmessage'] = 'HTML মেইল/চিঠি';
+$labels['prettydate'] = 'তারিখ ভালো করে দেখা যাবে';
 $labels['setdefault'] = 'এইটাই আসল';
 $labels['autodetect'] = 'কম্পুটার নিজেনিজি বেছে নেবে';
 $labels['language'] = 'ভাষা';
@@ -241,7 +238,6 @@ $labels['advancedoptions'] = 'জটিল বিষয়';
 $labels['focusonnewmessage'] = 'নতুন মেইল এলেই তা হাইলাইট হয়ে যাবে';
 $labels['checkallfolders'] = 'সবগুলো মেইলবক্সে নতুন চিঠি খোজা হবে';
 $labels['folder'] = 'ফোল্ডার/মেইলবক্স';
-$labels['folders'] = 'ফোল্ডার/মেইলবক্স';
 $labels['foldername'] = 'ফোল্ডার/মেইলবক্স এর নাম';
 $labels['subscribed'] = 'গ্রহনকারি';
 $labels['messagecount'] = 'মেইল/চিঠি';
@@ -257,4 +253,3 @@ $labels['KB'] = 'কিলোবাইট';
 $labels['MB'] = 'মেগাবাইট';
 $labels['GB'] = 'গিগাবাইট';
 
-?>
index e7a8b34090fd8157bd4a5b5dc0bbdbaffca1baf4..3b0c65c9f98155235ac5c7cff70723587fb5d98e 100644 (file)
@@ -1,24 +1,24 @@
 <?php
 
 /*
-+-----------------------------------------------------------------------+
-| language/bn_BD/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2008, The Roundcube Dev Team                            |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author:                                                               |
-+-----------------------------------------------------------------------+
-
+ +-----------------------------------------------------------------------+
+ | localization/bn_BD/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $messages = array();
 $messages['loginfailed'] = 'ঢোকা গেল না';
 $messages['cookiesdisabled'] = 'আপনার ব্রাউজার, কুকি গ্রহন করে না';
 $messages['sessionerror'] = 'আপনার সেশন শেষ';
-$messages['imaperror'] = 'মেইল সারভার এর সাথে যোগাযোগ করা গেল না';
+$messages['storageerror'] = 'মেইল সারভার এর সাথে যোগাযোগ করা গেল না';
 $messages['nomessagesfound'] = 'এই মেইলবক্সে কোনো চিঠি নাই';
 $messages['loggedout'] = 'আপনের সেশন ঠিকঠাক মতো শেষ হইছে। শুভবিদায়।';
 $messages['mailboxempty'] = 'মেইলবক্স খালি';
@@ -37,7 +37,7 @@ $messages['encryptedmessage'] = 'এটা একটি গোপন (encrypted)
 $messages['nocontactsfound'] = 'কোনো ঠিকানা পাওয়া গেলনা। দু্ঃখিত।';
 $messages['contactnotfound'] = 'আপনি যে ঠিকানা খুজছেন সেটা পাওয়া গেল না';
 $messages['sendingfailed'] = 'চিঠি পাঠানো গেলনা';
-$messages['senttooquickly'] = 'এই চিঠি পাঠানোর আগে, দয়া করে $sec সেকেন্ড ';
+$messages['senttooquickly'] = 'এই চিঠি পাঠানোর আগে, দয়া করে $sec সেকেন্ড';
 $messages['errorsavingsent'] = 'প্রেরিত চিঠি হিসাবে জমা রাখার সময় একটা ঝামেলা হয়েছে';
 $messages['errorsaving'] = 'জমা করার সময় একটা ঝামেলা হয়েছে';
 $messages['errormoving'] = 'চিঠিটা সরানো গেলো না';
@@ -58,7 +58,6 @@ $messages['nosubjectwarning'] = 'বিষয় হিসাবে কিছু 
 $messages['nobodywarning'] = 'কোনো কিছু না লিখেই এই চিঠি পাঠিয়ে দেবেন?';
 $messages['notsentwarning'] = 'চিঠি পাঠানো হয়নি। চিঠিটা কি বাতিল করে দেবেন?';
 $messages['noldapserver'] = 'দয়া করে একটি এল্ডাপ সারভার বেছে নিন সার্চ করার জন্যে';
-$messages['nocontactsreturned'] = 'কোনো ঠিকানা পাওয়া গেলনা। দু্ঃখিত।';
 $messages['nosearchname'] = 'দয়া করে একজনের নাম অথবা ই-মেইল লিখুন';
 $messages['searchsuccessful'] = '$nr টা চিঠি পাওয়া গেছে';
 $messages['searchnomatch'] = 'খুজে কিছু পাওয়া গেলোনা';
@@ -78,7 +77,7 @@ $messages['errorsavingcontact'] = 'ঠিকানা জমা রাখা গ
 $messages['movingmessage'] = 'চিঠি সরানো হচ্ছে..';
 $messages['receiptsent'] = 'ঠিকঠাক মতো ফিরতি রশিদ পাঠানো হয়েছে';
 $messages['errorsendingreceipt'] = 'রশিদ পাঠানো গেলোনা';
-$messages['nodeletelastidentity'] = 'আপনি এই পরিচিতি ফেলতে পারবেন না কারন এইটায় বর্তমানে আপনার একমাত্র পরিচিতি। ';
+$messages['nodeletelastidentity'] = 'আপনি এই পরিচিতি ফেলতে পারবেন না কারন এইটায় বর্তমানে আপনার একমাত্র পরিচিতি।';
 $messages['forbiddencharacter'] = 'ফোল্ডার এর নামের মধ্যে নিষিদ্ধ অক্ষর আছে';
 $messages['selectimportfile'] = 'একটা ফাইল বেছে নিন তোলার জন্য';
 $messages['addresswriterror'] = 'বেছে নেওয়া ঠিকানার বইটিতে লেখাযায় না';
@@ -89,4 +88,3 @@ $messages['opnotpermitted'] = 'এই কাজটা করার অনুম
 $messages['nofromaddress'] = 'বেছে নেওয়া যে পরিচিতিটা, তাতে ই-মেইল নেই';
 $messages['editorwarning'] = 'যদি আপনি শুধু লেখার স্টাইলে যান তাহলে বর্তমানের কোনো বিন্যাস হারিয়ে যাবে';
 
-?>
index b61abe8d1d0b5676ebb3f05471c79f8968772d72..41c35804b035fab1be2bca28fba87c629587551e 100644 (file)
@@ -1,22 +1,17 @@
 <?php
 
 /*
-
  +-----------------------------------------------------------------------+
- | language/bzg/labels.inc                                                |
+ | localization/br/labels.inc                                         |
  |                                                                       |
  | Language file of the Roundcube Webmail client                         |
- | Copyright (C) 2005-2007, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: aldweb <info@aldweb.com>                                      |
- |         Pierre HAEGELI <pierre@haegeli.net>                           |
- |         Mickaël Wolff <rcw@lupusmic.org>                              |
+ | Author: Thomas <Unknown>                                              |
  +-----------------------------------------------------------------------+
-
- @version $Id: labels.inc 4410 2011-01-12 18:25:02Z thomasb $
-
+ @version $Id$
 */
 
 $labels = array();
@@ -44,17 +39,15 @@ $labels['date'] = 'Deiz';
 $labels['size'] = 'Ment';
 $labels['priority'] = 'Kentwir';
 $labels['organization'] = 'Aozadur';
-$labels['reply-to'] = 'Respont ouzh';
 $labels['mailboxlist'] = 'Renkelloù';
+$labels['folders'] = 'Renkelloù';
 $labels['messagesfromto'] = 'Kemennadoù eus $from ouzh $to war $count';
 $labels['messagenrof'] = 'Kemennad $nr war $count';
+$labels['copy'] = 'Cc';
 $labels['moveto'] = 'Dilec\'hiañ ouzh...';
 $labels['download'] = 'Pellgargañ';
 $labels['filename'] = 'Anv ar restr';
 $labels['filesize'] = 'Ment ar restr';
-$labels['preferhtml'] = 'Diskouez en HTML';
-$labels['htmlmessage'] = 'Kemennad en HTML';
-$labels['prettydate'] = 'Diskouez berr deizioù';
 $labels['addtoaddressbook'] = 'Ouzhpennañ er c\'harned chomlec\'hioù';
 $labels['sun'] = 'Sul';
 $labels['mon'] = 'Lun';
@@ -72,37 +65,33 @@ $labels['friday'] = 'Gwener';
 $labels['saturday'] = 'Sadorn';
 $labels['today'] = 'Hiziv';
 $labels['checkmail'] = 'Gwiriañ kemennadoù nevez';
+$labels['compose'] = 'Skrivañ ur c\'hemennad nevez';
 $labels['writenewmessage'] = 'Skrivañ ur c\'hemennad nevez';
 $labels['replytomessage'] = 'Respont kemennad';
 $labels['replytoallmessage'] = 'Respont d\'an holl';
 $labels['forwardmessage'] = 'Treuzkas ar c\'hemennad';
 $labels['deletemessage'] = 'Dilec\'hiañ ar c\'hemennad er pod-lastez';
 $labels['printmessage'] = 'Moulañ ar c\'hemennad-se';
-$labels['previousmessage'] = 'Gwelout ar c\"hemennad a-raok';
-$labels['previousmessages'] = 'Gwelout ar c\'hemennadoù a-raok';
+$labels['previousmessage'] = 'Gwelout ar c"hemennad a-raok';
 $labels['firstmessage'] = 'Gwelout ar c\'hemennad kentañ';
-$labels['firstmessages'] = 'Gwelout ar bajenn gentañ kemennadoù';
 $labels['nextmessage'] = 'Gwelout ar c\'hemennad da heul';
-$labels['nextmessages'] = 'Gwelout ar c\'hemennadoù da heul';
 $labels['lastmessage'] = 'Gwelout ar c\'hemennad diwezhañ';
-$labels['lastmessages'] = 'Gwelout ar bajenn diwezhañ kemennadoù';
 $labels['backtolist'] = 'Distreiñ el listenn kemennadoù';
 $labels['viewsource'] = 'Gwelout an tarzh';
 $labels['select'] = 'Diuzañ';
 $labels['all'] = 'An holl';
 $labels['none'] = 'Ebet';
+$labels['nonesort'] = 'Ebet';
 $labels['unread'] = 'Na lennet';
 $labels['compact'] = 'Stummaat';
 $labels['empty'] = 'Skarzhañ';
-$labels['purge'] = 'Spurjañ';
 $labels['quota'] = 'Implijadur pladenn';
 $labels['unknown'] = 'Dianav';
 $labels['unlimited'] = 'didermen';
 $labels['quicksearch'] = 'Klask prim';
 $labels['resetsearch'] = 'Aderaouekaat ar glask';
-$labels['compose'] = 'Skrivañ ur c\'hemennad nevez';
-$labels['sendmessage'] = 'Kas ar c\'hemennad diouzhtu';
 $labels['savemessage'] = 'Gwarediñ ar brouilhed-se';
+$labels['sendmessage'] = 'Kas ar c\'hemennad diouzhtu';
 $labels['addattachment'] = 'Stagañ ur restr';
 $labels['charset'] = 'Engodadur';
 $labels['editortype'] = 'Furmad aozer';
@@ -153,6 +142,9 @@ $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['language'] = 'Yezh';
 $labels['timezone'] = 'Gwerzhid-eur';
@@ -166,7 +158,6 @@ $labels['autosavedraft'] = 'Gwarediñ emgefre brouilhedoù';
 $labels['everynminutes'] = 'Bep $n munutoù';
 $labels['never'] = 'ebet';
 $labels['folder'] = 'Renkell';
-$labels['folders'] = 'Renkelloù';
 $labels['foldername'] = 'Anv ar renkell';
 $labels['subscribed'] = 'Koumananer';
 $labels['create'] = 'Krouiñ';
@@ -176,4 +167,3 @@ $labels['sortby'] = 'Rummañ dre';
 $labels['sortasc'] = 'Rumm diagentad';
 $labels['sortdesc'] = 'Rumm diskennad';
 
-?>
index 15bf2de884f6ceda7cc181e423fbef9832e625e3..adfcfbab579a006fbefcb8fbaca0bf87d8d36049 100644 (file)
@@ -1,29 +1,24 @@
 <?php
 
 /*
-
  +-----------------------------------------------------------------------+
- | language/bzg/messages.inc                                              |
+ | localization/br/messages.inc                                       |
  |                                                                       |
  | Language file of the Roundcube Webmail client                         |
- | Copyright (C) 2005-2007, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: aldweb <info@aldweb.com>                                      |
- |         Pierre HAEGELI <pierre@haegeli.net>                           |
- |         Mickaël Wolff <rcw@lupusmic.org>                              |
+ | Author: Thomas <Unknown>                                              |
  +-----------------------------------------------------------------------+
-
- @version $Id: messages.inc 4410 2011-01-12 18:25:02Z thomasb $
-
+ @version $Id$
 */
 
 $messages = array();
 $messages['loginfailed'] = 'Fazi dilesadur';
 $messages['cookiesdisabled'] = 'N\'eus ket c\'hoant toupinoù Hor merder';
 $messages['sessionerror'] = 'Direizh eo hoc\'h dalc\'h pe echu eo';
-$messages['imaperror'] = 'Fazi kevreadur ouzh ar servijer IMAP';
+$messages['storageerror'] = 'Fazi kevreadur ouzh ar servijer IMAP';
 $messages['nomessagesfound'] = 'Kemennadoù ebet er voest lizhiri';
 $messages['loggedout'] = 'Digevreet hoc\'h eus mat. Kenavo !';
 $messages['mailboxempty'] = 'Boest lizhiri dileun';
@@ -58,7 +53,6 @@ $messages['nosubjectwarning'] = 'Dileun eo ar maezienn « Sujed » . C\'hoant ho
 $messages['nobodywarning'] = 'Kas ar c\'hemennad hep testenn ?';
 $messages['notsentwarning'] = 'N\'eo ket bet kaset ar c\'hemennad. C\'hoant hoc\'h eus dilezel ar c\'hemennad-se ?';
 $messages['noldapserver'] = 'Dizuit ur servijer LDAP evit ar glask';
-$messages['nocontactsreturned'] = 'Darempred ebet kavet';
 $messages['nosearchname'] = 'Skrivit un anv darempred pe ur postel elektronek';
 $messages['searchsuccessful'] = '$nr kemennad kavet';
 $messages['searchnomatch'] = 'Disoc\'h ebet gant ar glask';
@@ -76,4 +70,3 @@ $messages['copyerror'] = 'Ne c\'hall ket kopiañ chomlec\'hioù';
 $messages['sourceisreadonly'] = 'Lenn hepken eo an tarzh chomlec\'h se';
 $messages['errorsavingcontact'] = 'Ne c\'haller ket gwarediñ chomlec\'h darempred';
 
-?>
index 6da0a47aea121eb6e1985e186ad39edb3291df32..2cdc4b8c6ec4a808b2a2bf8d04612bdc47f59275 100644 (file)
@@ -1,61 +1,60 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/bs_BA/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Begzudin Omerovic <Begzudin.Omerovic@gmail.com>               |
-|       Tanja Dobričić <tanja.dobricic@everymail.info>                  |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 4627 2011-03-31 13:47:22Z yllar $
-
+ +-----------------------------------------------------------------------+
+ | localization/bs_BA/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kenan Dervišević <kenan3008@gmail.com>                      |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $labels = array();
-$labels['welcome'] = 'Dobrodošli na $product';
-$labels['username'] = 'Korisničko ime';
-$labels['password'] = 'Lozinka';
+$labels['welcome'] = 'Dobrodošli u $product';
+$labels['username'] = 'Korisnik';
+$labels['password'] = 'Šifra';
 $labels['server'] = 'Server';
 $labels['login'] = 'Prijava';
 $labels['logout'] = 'Odjava';
-$labels['mail'] = 'Sanduče';
+$labels['mail'] = 'Email';
 $labels['settings'] = 'Podešavanja';
-$labels['addressbook'] = 'Imenik';
-$labels['inbox'] = 'Inbox';
-$labels['drafts'] = 'Drafts';
+$labels['addressbook'] = 'Adresar';
+$labels['inbox'] = 'Sanduče';
+$labels['drafts'] = 'Skice';
 $labels['sent'] = 'Poslano';
-$labels['trash'] = 'Trash';
-$labels['junk'] = 'Junk';
+$labels['trash'] = 'Smeće';
+$labels['junk'] = 'Spam';
 $labels['subject'] = 'Naslov';
 $labels['from'] = 'Od';
 $labels['to'] = 'Za';
 $labels['cc'] = 'Cc';
 $labels['bcc'] = 'Bcc';
-$labels['replyto'] = 'Odgovori';
-$labels['followupto'] = 'Uprati';
+$labels['replyto'] = 'Reply-To adresa';
+$labels['followupto'] = 'Prati';
 $labels['date'] = 'Datum';
 $labels['size'] = 'Veličina';
 $labels['priority'] = 'Prioritet';
 $labels['organization'] = 'Organizacija';
 $labels['readstatus'] = 'Status poruke';
-$labels['mailboxlist'] = 'Fascikle';
+$labels['listoptions'] = 'Izlistaj opcije...';
+$labels['mailboxlist'] = 'Folderi';
+$labels['folders'] = 'Folderi';
 $labels['messagesfromto'] = 'Poruke od $from do $to od ukupno $count';
-$labels['threadsfromto'] = 'Teme $from do $to od $count';
+$labels['threadsfromto'] = 'Teme od $from do $to od ukupno $count';
 $labels['messagenrof'] = 'Poruka broj $nr od $count';
-$labels['copy'] = 'Kopirati';
-$labels['move'] = 'Prebaciti';
-$labels['moveto'] = 'prebaci u...';
-$labels['download'] = 'preuzmi (download)';
+$labels['fromtoshort'] = '$from – $to od ukupno $count';
+$labels['copy'] = 'Kopiraj';
+$labels['move'] = 'Premjesti';
+$labels['moveto'] = 'Premjesti u...';
+$labels['download'] = 'Preuzmi';
 $labels['filename'] = 'Ime datoteke';
 $labels['filesize'] = 'Veličina datoteke';
-$labels['addtoaddressbook'] = 'Dodaj u imenik';
+$labels['addtoaddressbook'] = 'Dodaj u adresar';
 $labels['sun'] = 'Ned';
 $labels['mon'] = 'Pon';
 $labels['tue'] = 'Uto';
@@ -75,6 +74,7 @@ $labels['feb'] = 'Feb';
 $labels['mar'] = 'Mar';
 $labels['apr'] = 'Apr';
 $labels['may'] = 'Maj';
+$labels['longmay'] = 'Maj';
 $labels['jun'] = 'Jun';
 $labels['jul'] = 'Jul';
 $labels['aug'] = 'Avg';
@@ -86,7 +86,6 @@ $labels['longjan'] = 'Januar';
 $labels['longfeb'] = 'Februar';
 $labels['longmar'] = 'Mart';
 $labels['longapr'] = 'April';
-$labels['longmay'] = 'Maj';
 $labels['longjun'] = 'Juni';
 $labels['longjul'] = 'Juli';
 $labels['longaug'] = 'Avgust';
@@ -94,110 +93,126 @@ $labels['longsep'] = 'Septembar';
 $labels['longoct'] = 'Oktobar';
 $labels['longnov'] = 'Novembar';
 $labels['longdec'] = 'Decembar';
-$labels['today'] = 'danas';
-$labels['checkmail'] = 'Provjera novih poruka';
-$labels['writenewmessage'] = 'Nova poruka';
-$labels['replytomessage'] = 'Odgovori na poruku';
-$labels['replytoallmessage'] = 'Odgovori pošiljaocu i svim primaocima';
+$labels['today'] = 'Danas';
+$labels['refresh'] = 'Osvježi';
+$labels['checkmail'] = 'Provjeri ima li novih poruka';
+$labels['compose'] = 'Napiši poruku';
+$labels['writenewmessage'] = 'Kreiraj novu poruku';
+$labels['reply'] = 'Odgovori';
+$labels['replytomessage'] = 'Odgovori pošiljaocu';
+$labels['replytoallmessage'] = 'Odgovori listi osoba ili pošiljaocu i svim primaocima';
 $labels['replyall'] = 'Odgovori svima';
 $labels['replylist'] = 'Odgovori listi';
+$labels['forward'] = 'Proslijedi';
+$labels['forwardinline'] = 'Proslijedi odmah';
+$labels['forwardattachment'] = 'Proslijedi kao prilog';
 $labels['forwardmessage'] = 'Proslijedi poruku';
 $labels['deletemessage'] = 'Obriši poruku';
 $labels['movemessagetotrash'] = 'Prebaci poruku u smeće';
 $labels['printmessage'] = 'Odštampaj poruku';
 $labels['previousmessage'] = 'Prikaži prethodnu poruku';
 $labels['firstmessage'] = 'Prikaži prvu poruku';
-$labels['nextmessage'] = 'Prikaži posljednju poruku';
+$labels['nextmessage'] = 'Prikaži sljedeću poruku';
 $labels['lastmessage'] = 'Prikaži zadnju poruku';
-$labels['backtolist'] = 'Povratak na listu poruka';
-$labels['viewsource'] = 'Prikaži poruku u izvornom obliku';
+$labels['backtolist'] = 'Nazad na listu poruka';
+$labels['viewsource'] = 'Prikaži izvornu poruku';
+$labels['mark'] = 'Označi';
 $labels['markmessages'] = 'Označi poruke';
 $labels['markread'] = 'Kao pročitane';
 $labels['markunread'] = 'Kao nepročitane';
-$labels['markflagged'] = 'Kao markirane';
-$labels['markunflagged'] = 'Kao nemarkirane';
-$labels['messageactions'] = 'Više akcija';
-$labels['select'] = 'Obilježi';
+$labels['markflagged'] = 'Kao važne';
+$labels['markunflagged'] = 'Kao nevažne';
+$labels['moreactions'] = 'Više akcija...';
+$labels['more'] = 'Više';
+$labels['back'] = 'Nazad';
+$labels['options'] = 'Opcije';
+$labels['select'] = 'Odaberi';
 $labels['all'] = 'Sve';
-$labels['none'] = 'Nijednu';
+$labels['none'] = 'Ništa';
+$labels['nonesort'] = 'Ništa';
 $labels['currpage'] = 'Trenutna stranica';
-$labels['unread'] = 'Nepročitane';
-$labels['flagged'] = 'Obilježeno';
-$labels['unanswered'] = 'Neuzvraćeno';
+$labels['unread'] = 'Nepročitano';
+$labels['flagged'] = 'Važno';
+$labels['unanswered'] = 'Neodgovoreno';
 $labels['deleted'] = 'Obrisano';
-$labels['invert'] = 'Izokrenuti';
+$labels['invert'] = 'Izokreni';
 $labels['filter'] = 'Filter';
 $labels['list'] = 'Lista';
 $labels['threads'] = 'Teme';
 $labels['expand-all'] = 'Proširi sve';
 $labels['expand-unread'] = 'Proširi nepročitane';
-$labels['collapse-all'] = 'Sažmi sve';
+$labels['collapse-all'] = 'Zatvori sve';
+$labels['threaded'] = 'Teme';
 $labels['autoexpand_threads'] = 'Proširi teme poruka';
 $labels['do_expand'] = 'sve teme';
 $labels['expand_only_unread'] = 'samo sa nepročitanim porukama';
-$labels['fromto'] = 'Pošiljaoc/Primatelj';
+$labels['fromto'] = 'Od/Za';
 $labels['flag'] = 'Oznaka';
-$labels['attachment'] = 'Privitak';
-$labels['nonesort'] = 'Ništa';
+$labels['attachment'] = 'Prilog';
 $labels['sentdate'] = 'Datum slanja';
 $labels['arrival'] = 'Datum primanja';
 $labels['asc'] = 'rastući';
 $labels['desc'] = 'opadajući';
 $labels['listcolumns'] = 'Lista kolona';
 $labels['listsorting'] = 'Sortiranje kolona';
-$labels['listorder'] = 'Redoslijed sortiranja';
+$labels['listorder'] = 'Raspored sortiranja';
 $labels['listmode'] = 'Način prikaza liste';
-$labels['folderactions'] = 'Radnja fascikle...';
+$labels['folderactions'] = 'Akcije za foldere...';
 $labels['compact'] = 'Skraćeno';
-$labels['empty'] = 'Izprazni';
-$labels['quota'] = 'Kvota';
+$labels['empty'] = 'Isprazni';
+$labels['quota'] = 'Zauzeće diska';
 $labels['unknown'] = 'nepoznato';
-$labels['unlimited'] = 'beskonačna';
+$labels['unlimited'] = 'neograničeno';
 $labels['quicksearch'] = 'Brza pretraga';
-$labels['resetsearch'] = 'Prikaži sve poruke';
+$labels['resetsearch'] = 'Resetuj pretragu';
 $labels['searchmod'] = 'Modifikacija pretrage';
-$labels['msgtext'] = 'Cjela poruka';
+$labels['msgtext'] = 'Cijela poruka';
 $labels['openinextwin'] = 'Otvori u novom prozoru';
-$labels['emlsave'] = 'Snimi (.eml)';
-$labels['compose'] = 'Nova poruka';
+$labels['emlsave'] = 'Preuzmi (.eml)';
 $labels['editasnew'] = 'Uredi kao novo';
-$labels['savemessage'] = 'Sačuvaj nacrt';
+$labels['savemessage'] = 'Sačuvaj skicu';
 $labels['sendmessage'] = 'Pošalji poruku';
 $labels['addattachment'] = 'Priloži datoteku';
 $labels['charset'] = 'Skup znakova';
 $labels['editortype'] = 'Vrsta urednika';
 $labels['returnreceipt'] = 'Potvrda o prispijeću poruke';
-$labels['dsn'] = 'Obaviještenje o statusu isporuke';
-$labels['editidents'] = 'Uredi pseudonime';
+$labels['dsn'] = 'Obavještenje o statusu dostave';
+$labels['mailreplyintro'] = '$date, $sender je napisao/la:';
+$labels['originalmessage'] = 'Originalna poruka';
+$labels['editidents'] = 'Uredi identitete';
+$labels['spellcheck'] = 'Spelovanje';
 $labels['checkspelling'] = 'Provjera pravopisa';
-$labels['resumeediting'] = 'Povratak u režim pisanja';
+$labels['resumeediting'] = 'Nastavi uređivanje';
 $labels['revertto'] = 'Vrati na';
-$labels['attachments'] = 'Dodatci (Attachments)';
+$labels['attach'] = 'Priloži';
+$labels['attachments'] = 'Prilozi';
 $labels['upload'] = 'Dodaj';
+$labels['uploadprogress'] = '$percent ($current od $total)';
 $labels['close'] = 'Zatvori';
 $labels['messageoptions'] = 'Opcije poruke...';
 $labels['low'] = 'Nizak';
 $labels['lowest'] = 'Najniži';
-$labels['normal'] = 'Srednji';
+$labels['normal'] = 'Normalan';
 $labels['high'] = 'Visok';
-$labels['highest'] = 'Najvi';
+$labels['highest'] = 'Najvi';
 $labels['nosubject'] = '(bez naslova)';
 $labels['showimages'] = 'Prikaži slike';
 $labels['alwaysshow'] = 'Uvijek prikaži slike od $sender';
+$labels['isdraft'] = 'Ovo je skica.';
 $labels['htmltoggle'] = 'HTML';
-$labels['plaintoggle'] = 'Običan tekst';
-$labels['savesentmessagein'] = 'Spremi poslane poruke u';
-$labels['dontsave'] = 'ne spremaj';
-$labels['maxuploadsize'] = 'Maksimalna dozvoljena velicina datoteke je $size';
+$labels['plaintoggle'] = 'Obični tekst';
+$labels['savesentmessagein'] = 'Sačuvaj poslane poruke u';
+$labels['dontsave'] = 'ne snimaj';
+$labels['maxuploadsize'] = 'Maksimalna dozvoljena veličina datoteke je $size';
 $labels['addcc'] = 'Dodaj Cc';
 $labels['addbcc'] = 'Dodaj Bcc';
-$labels['addreplyto'] = 'Dodaj Odgovori-na';
-$labels['addfollowupto'] = 'Dodaj Nastavak-na';
-$labels['mdnrequest'] = 'Pošiljaoc ove poruke je tražio da bude obaviješten o njenom primitku. Želite li obavijestiti pošiljaoca?';
-$labels['receiptread'] = 'Vrati potvrdu (pročitano)';
-$labels['yourmessage'] = 'Ovo je vraćena potvrda vaše poruke';
-$labels['receiptnote'] = 'Napomena: Ova potvrda samo obaviještava da je poruka bila prikazana na kompjuteru primaoca. Nije garancija da je primaoc pročitao ili razumio poruku.';
-$labels['name'] = 'Puno ime';
+$labels['addreplyto'] = 'Dodaj odgovor na';
+$labels['addfollowupto'] = 'Dodaj praćenje za';
+$labels['mdnrequest'] = 'Pošiljaoc ove poruke je tražio da bude obaviješten kada pročitate ovu poruku. Želite li obavijestiti pošiljaoca?';
+$labels['receiptread'] = 'Povratnica (pročitano)';
+$labels['yourmessage'] = 'Ovo je povratnica vaše poruke';
+$labels['receiptnote'] = 'Napomena: Ova povratnica samo potvrđuje da je poruka bila prikazana na računaru primaoca. Nema garancija da je primaoc pročitao ili razumio sadržaj poruke.';
+$labels['name'] = 'Ime za prikaz';
 $labels['firstname'] = 'Ime';
 $labels['surname'] = 'Prezime';
 $labels['middlename'] = 'Srednje ime';
@@ -206,9 +221,9 @@ $labels['namesuffix'] = 'Sufiks';
 $labels['nickname'] = 'Nadimak';
 $labels['jobtitle'] = 'Titula';
 $labels['department'] = 'Odjel';
-$labels['gender'] = 'Rod';
+$labels['gender'] = 'Spol';
 $labels['maidenname'] = 'Djevojačko ime';
-$labels['email'] = 'E-Mail';
+$labels['email'] = 'Email';
 $labels['phone'] = 'Telefon';
 $labels['address'] = 'Adresa';
 $labels['street'] = 'Ulica';
@@ -217,178 +232,216 @@ $labels['zipcode'] = 'Poštanski broj';
 $labels['region'] = 'Oblast';
 $labels['country'] = 'Zemlja';
 $labels['birthday'] = 'Rođendan';
-$labels['anniversary'] = 'Jubilej';
+$labels['anniversary'] = 'Godišnjica';
 $labels['website'] = 'Web stranica';
 $labels['instantmessenger'] = 'IM';
-$labels['notes'] = 'bilješke';
+$labels['notes'] = 'Napomene';
 $labels['male'] = 'Muško';
 $labels['female'] = 'Žensko';
 $labels['manager'] = 'Menadžer';
 $labels['assistant'] = 'Pomoćnik';
-$labels['spouse'] = 'Muž/Žena';
+$labels['typeassistant'] = 'Pomoćnik';
+$labels['spouse'] = 'Supružnik';
+$labels['allfields'] = 'Sva polja';
+$labels['search'] = 'Pretraga';
+$labels['advsearch'] = 'Napredna pretraga';
+$labels['advanced'] = 'Napredno';
+$labels['other'] = 'Ostalo';
+$labels['typeother'] = 'Ostalo';
 $labels['typehome'] = 'Kućni broj';
 $labels['typework'] = 'Poslovni broj';
-$labels['typeother'] = 'Ostalo';
 $labels['typemobile'] = 'Mobilni broj';
 $labels['typemain'] = 'Glavni broj';
 $labels['typehomefax'] = 'Fax kuća';
 $labels['typeworkfax'] = 'Fax posao';
-$labels['typecar'] = 'Auto';
+$labels['typecar'] = 'Automobil';
 $labels['typepager'] = 'Pejdžer';
 $labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Pomoćnik';
-$labels['addfield'] = 'Dodati polje...';
+$labels['typehomepage'] = 'Početna stranica';
+$labels['typeblog'] = 'Blog';
+$labels['typeprofile'] = 'Profil';
+$labels['addfield'] = 'Dodaj polje...';
 $labels['addcontact'] = 'Dodaj novi kontakt';
-$labels['editcontact'] = 'Izmijeni kontakt';
+$labels['editcontact'] = 'Uredi kontakt';
 $labels['contacts'] = 'Kontakti';
 $labels['contactproperties'] = 'Svojstva kontakta';
 $labels['personalinfo'] = 'Lični podaci';
-$labels['edit'] = 'Izmijeni';
+$labels['edit'] = 'Uredi';
 $labels['cancel'] = 'Otkaži';
 $labels['save'] = 'Sačuvaj';
 $labels['delete'] = 'Obriši';
 $labels['rename'] = 'Preimenuj';
 $labels['addphoto'] = 'Dodaj';
-$labels['replacephoto'] = 'Izmjeni';
+$labels['replacephoto'] = 'Zamijeni';
+$labels['uploadphoto'] = 'Dodaj fotografiju';
 $labels['newcontact'] = 'Dodaj novi kontakt';
 $labels['deletecontact'] = 'Obriši odabrane kontakte';
-$labels['composeto'] = 'Napiši mail...';
+$labels['composeto'] = 'Napiši email za';
 $labels['contactsfromto'] = 'Kontakti od $from do $to od ukupno $count';
 $labels['print'] = 'Štampaj';
 $labels['export'] = 'Izvezi';
 $labels['exportvcards'] = 'Izvezi kontakte u vCard formatu';
-$labels['newcontactgroup'] = 'Kreiraj novu kontakt-grupu';
-$labels['groupactions'] = 'Podešavanja za kontakt-grupu';
-$labels['previouspage'] = 'Prikaži predhodnu stranicu';
-$labels['firstpage'] = 'Prikaži prvi skup';
+$labels['newcontactgroup'] = 'Kreiraj novu grupu kontakata';
+$labels['grouprename'] = 'Preimenuj grupu';
+$labels['groupdelete'] = 'Obriši grupu';
+$labels['groupremoveselected'] = 'Ukloni odabrane kontakte iz grupe';
+$labels['previouspage'] = 'Prikaži prethodnu stranicu';
+$labels['firstpage'] = 'Prikaži prvu stranicu';
 $labels['nextpage'] = 'Prikaži sljedeću stranicu';
-$labels['lastpage'] = 'Prikaži zadnji skup';
+$labels['lastpage'] = 'Prikaži zadnju stranicu';
 $labels['group'] = 'Grupa';
 $labels['groups'] = 'Grupe';
 $labels['personaladrbook'] = 'Lične adrese';
+$labels['searchsave'] = 'Sačuvaj pretragu';
+$labels['searchdelete'] = 'Obriši pretragu';
 $labels['import'] = 'Uvoz';
 $labels['importcontacts'] = 'Uvoz kontakata';
 $labels['importfromfile'] = 'Uvoz iz datoteke:';
-$labels['importreplace'] = 'Izmjeni čitav ovaj adresar';
-$labels['importtext'] = 'Možete prebaciti kontakte iz postojećeg adresara.<br/>Trenutno podržavamo uvozenje adresa iz <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> formata.';
+$labels['importtarget'] = 'Dodaj novi kontakt u adresar:';
+$labels['importreplace'] = 'Zamijeni cijeli adresar';
+$labels['importtext'] = 'Možete dodati kontakte iz postojećeg adresara.<br/>Trenutno podržavamo uvoz adresa iz <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> formata podataka.';
 $labels['done'] = 'Završeno';
 $labels['settingsfor'] = 'Podešavanja za';
+$labels['about'] = 'Informacije';
 $labels['preferences'] = 'Podešavanja';
-$labels['userpreferences'] = 'Opšta podešavanja';
-$labels['editpreferences'] = 'Izmjena opštih podešavanja';
+$labels['userpreferences'] = 'Korisničke opcije';
+$labels['editpreferences'] = 'Uredi korisničke opcije';
 $labels['identities'] = 'Identiteti';
-$labels['manageidentities'] = 'Podesi identitete za ovaj nalog';
+$labels['manageidentities'] = 'Podesi identitete za ovaj račun';
 $labels['newidentity'] = 'Dodaj identitet';
-$labels['newitem'] = 'New item';
-$labels['edititem'] = 'Edit item';
-$labels['preferhtml'] = 'HTML format u prednosti';
-$labels['defaultcharset'] = 'Zadani skup znakova';
-$labels['htmlmessage'] = 'HTML format poruke';
-$labels['prettydate'] = 'Formatiran datum';
-$labels['setdefault'] = 'Postavi glavnim';
+$labels['newitem'] = 'Nova stavka';
+$labels['edititem'] = 'Uredi stavku';
+$labels['preferhtml'] = 'Prikaži HTML';
+$labels['defaultcharset'] = 'Glavni skup znakova';
+$labels['htmlmessage'] = 'HTML poruke';
+$labels['dateformat'] = 'Format datuma';
+$labels['timeformat'] = 'Format vremena';
+$labels['prettydate'] = 'Formatirani datum';
+$labels['setdefault'] = 'Postavi kao glavno';
 $labels['autodetect'] = 'Automatski';
 $labels['language'] = 'Jezik';
 $labels['timezone'] = 'Vremenska zona';
 $labels['pagesize'] = 'Redova po stranici';
 $labels['signature'] = 'Potpis';
-$labels['dstactive'] = 'Ljetno pomjeranje vremena';
-$labels['htmleditor'] = 'Pisi HTML poruke';
-$labels['htmlonreply'] = 'odgovor samo na HTML poruke';
+$labels['dstactive'] = 'Ljetno računanje vremena';
+$labels['htmleditor'] = 'Piši HTML poruke';
+$labels['htmlonreply'] = 'samo kao odgovor na HTML poruke';
 $labels['htmlsignature'] = 'HTML potpis';
-$labels['previewpane'] = 'Pokaži prethodu poruku';
-$labels['skin'] = 'Interfejs izgled';
-$labels['logoutclear'] = 'Očisti smeće pri izlazu';
-$labels['logoutcompact'] = 'Komprimiraj Inbox pri izlazu';
+$labels['previewpane'] = 'Prikaži pregled poruke';
+$labels['skin'] = 'Skin interfejsa';
+$labels['logoutclear'] = 'Očisti smeće prilikom odjavljivanja';
+$labels['logoutcompact'] = 'Optimiziraj sanduče prilikom odjavljivanja';
 $labels['uisettings'] = 'Korisnički interfejs';
 $labels['serversettings'] = 'Postavke servera';
-$labels['mailboxview'] = 'Pregled Mailboxa';
-$labels['mdnrequests'] = 'obavijest pošiljatelja';
+$labels['mailboxview'] = 'Pregled emaila';
+$labels['mdnrequests'] = 'Prilikom zahtjeva za povratnicu';
 $labels['askuser'] = 'pitaj korisnika';
-$labels['autosend'] = 'Pošalji obavijest';
-$labels['autosendknown'] = 'pošalji obavijest mojim kontaktima, inače me pitaj';
-$labels['autosendknownignore'] = 'pošalji obavijest mojim kontaktima, inače ignoriši';
-$labels['ignore'] = 'ignorisati';
+$labels['autosend'] = 'pošalji povratnicu';
+$labels['autosendknown'] = 'pošalji povratnicu mojim kontaktima, u suprotnom me pitaj';
+$labels['autosendknownignore'] = 'pošalji povratnicu mojim kontaktima, u suprotnom zanemari';
+$labels['ignore'] = 'zanemari';
 $labels['readwhendeleted'] = 'Označi poruku kao pročitanu pri brisanju';
 $labels['flagfordeletion'] = 'Označi poruku za brisanje umjesto brisanja';
-$labels['skipdeleted'] = 'Ne prikazivaj pobrisane poruke';
-$labels['deletealways'] = 'Ako poruke prebacujem u kantu, obriši ih odmah';
-$labels['showremoteimages'] = 'prikaži slike s interneta';
+$labels['skipdeleted'] = 'Ne prikazuj obrisane poruke';
+$labels['deletealways'] = 'Ako premještanje poruka u smeće ne uspije, odmah ih obriši';
+$labels['deletejunk'] = 'Direktno obriši poruke u smeću';
+$labels['showremoteimages'] = 'Prikaži vanjske slike u porukama';
 $labels['fromknownsenders'] = 'od poznatih pošiljatelja';
 $labels['always'] = 'uvijek';
-$labels['showinlineimages'] = 'prikaži slike ispod poruke';
-$labels['autosavedraft'] = 'Automatski spasi predlozak';
+$labels['showinlineimages'] = 'Prikaži priložene slike ispod poruke';
+$labels['autosavedraft'] = 'Automatski sačuvaj skicu';
 $labels['everynminutes'] = 'svakih $n minuta';
-$labels['keepalive'] = 'provjeri nove poruke';
-$labels['never'] = 'nikada';
+$labels['keepalive'] = 'Provjeri ima li novih poruka';
+$labels['never'] = 'nikad';
 $labels['immediately'] = 'odmah';
-$labels['messagesdisplaying'] = 'prikazujem poruke';
-$labels['messagescomposition'] = 'komponiram poruke';
-$labels['mimeparamfolding'] = 'Ime priloga';
-$labels['advancedoptions'] = 'napredne opcije';
-$labels['focusonnewmessage'] = 'fokusiraj browser pri novoj poruci';
-$labels['checkallfolders'] = 'provjeri nove poruke u svim mapama';
-$labels['displaynext'] = 'nakon brisanja/micanja poruke, prikaži slijedeću';
-$labels['mainoptions'] = 'glavne opcije';
-$labels['section'] = 'sekcija';
-$labels['maintenance'] = 'održavanje';
-$labels['newmessage'] = 'nova poruka';
-$labels['listoptions'] = 'opcije liste';
-$labels['signatureoptions'] = 'opcije potpisa';
-$labels['whenreplying'] = 'prilikom odgovora';
+$labels['messagesdisplaying'] = 'Prikaz poruka';
+$labels['messagescomposition'] = 'Pisanje poruka';
+$labels['mimeparamfolding'] = 'Nazivi priloga';
+$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['advancedoptions'] = 'Napredne opcije';
+$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';
+$labels['defaultfont'] = 'Osnovni font za HTML poruke';
+$labels['mainoptions'] = 'Glavne opcije';
+$labels['browseroptions'] = 'Opcije preglednika';
+$labels['section'] = 'Sekcija';
+$labels['maintenance'] = 'Održavanje';
+$labels['newmessage'] = 'Nova poruka';
+$labels['signatureoptions'] = 'Opcija potpisa';
+$labels['whenreplying'] = 'Prilikom odgovora';
 $labels['replytopposting'] = 'započni novu poruku iznad originala';
 $labels['replybottomposting'] = 'započni novu poruku ispod originala';
-$labels['replyremovesignature'] = 'kod odgovaranja, makni originalni potpis iz poruke';
-$labels['autoaddsignature'] = 'automatski dodaj potpis';
-$labels['newmessageonly'] = 'samo nova poruka';
-$labels['replyandforwardonly'] = 'samo odgovori i proslijeđivanja';
-$labels['replysignaturepos'] = 'kod downloada ili proslijeđivanja postavi potpis';
+$labels['replyremovesignature'] = 'Prilikom odgovaranja na poruku, ukloni originalni potpis iz poruke';
+$labels['autoaddsignature'] = 'Automatski dodaj potpis';
+$labels['newmessageonly'] = 'samo za nove poruke';
+$labels['replyandforwardonly'] = 'samo za odgovore i prosljeđivanja';
+$labels['replysignaturepos'] = 'Prilikom odgovaranja ili prosljeđivanja potpis ubaci';
 $labels['belowquote'] = 'ispod citata';
 $labels['abovequote'] = 'iznad citata';
-$labels['insertsignature'] = 'umetni potpis';
-$labels['previewpanemarkread'] = 'obilježi pregledane poruke kao pročitane';
+$labels['insertsignature'] = 'Umetni potpis';
+$labels['previewpanemarkread'] = 'Obilježi prikazane poruke kao pročitane';
 $labels['afternseconds'] = 'nakon $n sekundi';
-$labels['reqmdn'] = 'uvijek zatraži potvrdu o primitku poruke';
-$labels['reqdsn'] = 'uvijek zatraži potvrdu o slanju poruke';
-$labels['replysamefolder'] = 'spremi odgovore u mapu gdje se nalazi poruka';
-$labels['folder'] = 'Fascikla';
-$labels['folders'] = 'Fascikle';
-$labels['foldername'] = 'Ime fascikle';
+$labels['reqmdn'] = 'Uvijek zahtjevaj povratnicu';
+$labels['reqdsn'] = 'Uvijek zahtjevaj obavijest o statusu dostave';
+$labels['replysamefolder'] = 'Sačuvaj odgovore u folder poruke na osnovu koje se piše odgovor';
+$labels['defaultaddressbook'] = 'DOdaj nove kontakte u odabrani adresar';
+$labels['autocompletesingle'] = 'Preskoči alternativne email adrese prilikom automatskog popunjavanja';
+$labels['listnamedisplay'] = 'Izlistaj kontakte kao';
+$labels['spellcheckbeforesend'] = 'Provjeri pravopis prije slanja poruke';
+$labels['spellcheckoptions'] = 'Opcije provjere pravopisa';
+$labels['spellcheckignoresyms'] = 'Zanemari riječi sa simbolima';
+$labels['spellcheckignorenums'] = 'Zanemari riječi sa brojevima';
+$labels['spellcheckignorecaps'] = 'Zanemari riječi napisane velikim slovima';
+$labels['addtodict'] = 'Dodaj u rječnik';
+$labels['mailtoprotohandler'] = 'Registruj upravljač protokola za mailto: linkovi';
+$labels['folder'] = 'Folder';
+$labels['foldername'] = 'Naziv foldera';
 $labels['subscribed'] = 'Pretplaćen';
-$labels['messagecount'] = 'poruke';
-$labels['create'] = 'Napravi';
-$labels['createfolder'] = 'Napravi novu fasciklu';
-$labels['managefolders'] = 'Podesi fasciklu';
-$labels['specialfolders'] = 'specijalna Mapa';
-$labels['properties'] = 'svojstva';
-$labels['folderproperties'] = 'svojstva mape';
-$labels['parentfolder'] = 'glavna mapa';
-$labels['location'] = 'lokacija';
-$labels['info'] = 'Podatak';
-$labels['getfoldersize'] = 'kliknite da biste dobili veličinu mape';
-$labels['changesubscription'] = 'kliknite da biste promjenili pretplatu';
-$labels['foldertype'] = 'Vrsta mape';
-$labels['personalfolder'] = 'privatna mapa';
-$labels['otherfolder'] = 'mapa drugih korisnika';
-$labels['sharedfolder'] = 'javna mapa';
+$labels['messagecount'] = 'Poruke';
+$labels['create'] = 'Kreiraj';
+$labels['createfolder'] = 'Kreiraj novi folder';
+$labels['managefolders'] = 'Upravljanje folderima';
+$labels['specialfolders'] = 'Specijalni folder';
+$labels['properties'] = 'Svojstva';
+$labels['folderproperties'] = 'Svojstva foldera';
+$labels['parentfolder'] = 'Matični folder';
+$labels['location'] = 'Lokacija';
+$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['sortby'] = 'Sortiraj po';
-$labels['sortasc'] = 'Sortiraj rastućim nizom';
-$labels['sortdesc'] = 'Sortiraj opadajućim nizom';
+$labels['sortasc'] = 'Sortiraj uzlazno';
+$labels['sortdesc'] = 'Sortiraj silazno';
+$labels['undo'] = 'Nazad';
+$labels['plugin'] = 'Plugin';
+$labels['version'] = 'Verzija';
+$labels['source'] = 'Izvorni kod';
+$labels['license'] = 'Licenca';
+$labels['support'] = 'Podrška';
 $labels['B'] = 'B';
 $labels['KB'] = 'KB';
 $labels['MB'] = 'MB';
 $labels['GB'] = 'GB';
-$labels['unicode'] = 'unicode';
+$labels['unicode'] = 'Unikod';
 $labels['english'] = 'engleski';
-$labels['westerneuropean'] = 'zapadnoevropski';
-$labels['easterneuropean'] = 'istočnoevropski';
-$labels['southeasterneuropean'] = 'jugo-istočno evropski';
+$labels['westerneuropean'] = 'Zapadna Evropa';
+$labels['easterneuropean'] = 'Istočna Evropa';
+$labels['southeasterneuropean'] = 'Jugoistočna Evropa';
 $labels['baltic'] = 'Baltički';
 $labels['cyrillic'] = 'ćirilični';
 $labels['arabic'] = 'arapski';
 $labels['greek'] = 'grčki';
 $labels['hebrew'] = 'hebrejski';
 $labels['turkish'] = 'turski';
-$labels['nordic'] = 'nordski';
+$labels['nordic'] = 'Nordijski';
 $labels['thai'] = 'tajlandski';
 $labels['celtic'] = 'keltski';
 $labels['vietnamese'] = 'vijetnamski';
@@ -396,4 +449,3 @@ $labels['japanese'] = 'japanski';
 $labels['korean'] = 'korejski';
 $labels['chinese'] = 'kineski';
 
-?>
index cb4a719a6de1a2a31201bdf5f15528507b017853..3c5340654112ceba2cbdf2f131ffeb92cc2aa20b 100644 (file)
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/bs_BA/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Begzudin Omerovic <Begzudin.Omerovic@gmail.com>               |
-|      Tanja Dobričić <tanja.dobricic@everymail.info>                        |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 4627 2011-03-31 13:47:22Z yllar $
-
+ +-----------------------------------------------------------------------+
+ | localization/bs_BA/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kenan Dervišević <kenan3008@gmail.com>                      |
+ +-----------------------------------------------------------------------+
 */
 
 $messages = array();
-$messages['loginfailed'] = 'Prijava neuspješna';
-$messages['cookiesdisabled'] = 'Vaš Web pretraživač ne podržava kolačiće (cookies)';
-$messages['sessionerror'] = 'Morate se ponovno ulogovati';
-$messages['imaperror'] = 'Neuspješna konekcija na IMAP server';
-$messages['servererror'] = 'Greška poslužitelja';
-$messages['servererrormsg'] = 'Greška na serveru: $msg';
-$messages['errorreadonly'] = 'Nemoguća izvedba operacije. Mapa je samo za čitanje.';
-$messages['errornoperm'] = 'Nemoguća izvedba operacije. Dozvola odbijena.';
-$messages['invalidrequest'] = 'Nepravilan zahtijev! Podaci nisu spremljeni.';
-$messages['nomessagesfound'] = 'Nema poruka u sandučetu';
+$messages['errortitle'] = 'Desila se greška!';
+$messages['loginfailed'] = 'Prijava nije uspjela.';
+$messages['cookiesdisabled'] = 'Vaš preglednik ne prihvata kolačiće.';
+$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['dberror'] = 'Greška u bazi podataka!';
+$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.';
+$messages['invalidrequest'] = 'Neispravan zahtjev! Podaci nisu sačuvani.';
+$messages['nomessagesfound'] = 'Nema poruka u ovom sandučetu.';
 $messages['loggedout'] = 'Uspješno ste se odjavili. Doviđenja!';
-$messages['mailboxempty'] = 'Sanduče je prazno';
+$messages['mailboxempty'] = 'Sanduče je prazno.';
 $messages['loading'] = 'Učitavanje...';
-$messages['uploading'] = 'Snimam datoteku na poslužitelj';
+$messages['uploading'] = 'Dodajem datoteku...';
+$messages['uploadingmany'] = 'Dodajem datoteke...';
 $messages['loadingdata'] = 'Učitavanje podataka...';
-$messages['checkingmail'] = 'Provjera novih poruka u toku...';
-$messages['sendingmessage'] = 'Poruka se šalje...';
-$messages['messagesent'] = 'Poruka je uspješno poslana';
+$messages['checkingmail'] = 'Provjeram ima li novih poruka...';
+$messages['sendingmessage'] = 'Šaljem poruku...';
+$messages['messagesent'] = 'Poruka je uspješno poslana.';
 $messages['savingmessage'] = 'Poruka se snima...';
-$messages['messagesaved'] = 'Poruka uspješno spremljena u \'Predlošci\'';
-$messages['successfullysaved'] = 'Snimanje uspješno obavljeno';
-$messages['addedsuccessfully'] = 'Kontakt uspješno dodat u imenik';
-$messages['contactexists'] = 'Kontakt sa ovom e-mail adresom već postoji u imeniku';
-$messages['blockedimages'] = 'Zbog zaštite privatnosti, slike sa drugih servera su blokirane.';
-$messages['encryptedmessage'] = 'Ova poruka je zaštićena pa se ne može prikazati';
-$messages['nocontactsfound'] = 'Imenik je prazan';
-$messages['contactnotfound'] = 'Traženi kontakt nije pronađen';
-$messages['sendingfailed'] = 'Greška pri slanju poruke';
-$messages['senttooquickly'] = 'Molimo sačekajte $sec sek. prije slanja ove poruke';
-$messages['errorsavingsent'] = 'Greška pri spremanju poslane poruke';
-$messages['errorsaving'] = 'Greška pri spremanju';
-$messages['errormoving'] = 'Greška pri premještanju poruke';
-$messages['errorcopying'] = 'Greška pri kopiranju poruke';
-$messages['errordeleting'] = 'Greška pri brisanju poruke';
-$messages['errormarking'] = 'Nije moguće označiti poruku';
-$messages['deletecontactconfirm'] = 'Želite li obrisati izabrane kontakte?';
-$messages['deletemessagesconfirm'] = 'Sigurno želite obrisati odabrane poruke?';
-$messages['deletefolderconfirm'] = 'Želite li obrisati ovu fasciklu?';
-$messages['purgefolderconfirm'] = 'Želite li obrisati sve poruke u fascikli?';
-$messages['folderdeleting'] = 'Brišem fasciklu...';
-$messages['foldermoving'] = 'Premještam fasciklu...';
-$messages['foldersubscribing'] = 'Pretplata na fasciklu...';
-$messages['folderunsubscribing'] = 'Poništavanje pretplate na fasciklu...';
-$messages['formincomplete'] = 'Obrazac nije u cjelosti popunjen';
-$messages['noemailwarning'] = 'Unesite valjanu email adresu';
-$messages['nonamewarning'] = 'Unesite ime';
-$messages['nopagesizewarning'] = 'Unesite veličinu stranice';
-$messages['nosenderwarning'] = 'Unesite email adresu pošiljaoca';
-$messages['norecipientwarning'] = 'Unesite primatelja (ZA)';
+$messages['messagesaved'] = 'Poruka je uspješno sačuvana u skicama.';
+$messages['successfullysaved'] = 'Uspješno sačuvano.';
+$messages['addedsuccessfully'] = 'Kontakt uspješno dodan u adresar.';
+$messages['contactexists'] = 'Kontakt sa ovom email adresom već postoji u adresaru.';
+$messages['contactnameexists'] = 'Kontakt s tim imenom već postoji.';
+$messages['blockedimages'] = 'Zbog zaštite privatnosti, slike sa drugih servera su blokirane u ovoj poruci.';
+$messages['encryptedmessage'] = 'Ova poruka je šifrirana i nije je moguće prikazati. Žao nam je!';
+$messages['nocontactsfound'] = 'Adresar je prazan.';
+$messages['contactnotfound'] = 'Traženi kontakt nije pronađen.';
+$messages['contactsearchonly'] = 'Unesite neki pojam za pretragu';
+$messages['sendingfailed'] = 'Greška pri slanju poruke.';
+$messages['senttooquickly'] = 'Molimo sačekajte $sec sekundi prije slanja ove poruke.';
+$messages['errorsavingsent'] = 'Desila se greška pri snimanju poslane poruke.';
+$messages['errorsaving'] = 'Desila se greška pri snimanju.';
+$messages['errormoving'] = 'Nije moguće premjestiti poruke.';
+$messages['errorcopying'] = 'Nije moguće kopirati poruke.';
+$messages['errordeleting'] = 'Nije moguće obrisati poruke.';
+$messages['errormarking'] = 'Nije moguće označiti poruke.';
+$messages['deletecontactconfirm'] = 'Da li zaista želite obrisati označene kontakte?';
+$messages['deletegroupconfirm'] = 'Da li zaista želite obrisati označenu grupu?';
+$messages['deletemessagesconfirm'] = 'Da li zaista želite obrisati označene poruke?';
+$messages['deletefolderconfirm'] = 'Da li zaista želite obrisati ovaj folder?';
+$messages['purgefolderconfirm'] = 'Da li zaista želite obrisati sve poruke u ovom folderu?';
+$messages['contactdeleting'] = 'Brišem kontakte...';
+$messages['groupdeleting'] = 'Brišem grupu...';
+$messages['folderdeleting'] = 'Brišem folder...';
+$messages['foldermoving'] = 'Premještam folder...';
+$messages['foldersubscribing'] = 'Pretplaćujem se na folder...';
+$messages['folderunsubscribing'] = 'Uklanjam pretplatu za folder...';
+$messages['formincomplete'] = 'Obrazac nije popunjen u cjelosti.';
+$messages['noemailwarning'] = 'Molimo vas da upišete ispravnu email adresu.';
+$messages['nonamewarning'] = 'Molimo vas da upišete ime.';
+$messages['nopagesizewarning'] = 'Molimo vas da upišete veličinu stranice.';
+$messages['nosenderwarning'] = 'Molimo vas da upišete email adresu pošiljaoca';
+$messages['norecipientwarning'] = 'Molimo vas da upišete barem jednog primaoca.';
 $messages['nosubjectwarning'] = 'Polje \'Naslov\' je prazno. Želite li unijeti naslov?';
 $messages['nobodywarning'] = 'Želite li poslati poruku bez teksta?';
-$messages['notsentwarning'] = 'Poruka nije poslata. Želite li odbaciti ovu poruku?';
-$messages['noldapserver'] = 'Unesite LDAP poslužitelj za pretragu';
-$messages['nocontactsreturned'] = 'Nije pronađen niti jedan kontakt';
-$messages['nosearchname'] = 'Unesite ime ili email adresu';
-$messages['notuploadedwarning'] = 'Svi prilozi još nisu presnimljeni na poslužitelj. Molim pričekajte ili zaustavite presnimavanje.';
+$messages['notsentwarning'] = 'Poruka nije poslana. Želite li odbaciti ovu poruku?';
+$messages['noldapserver'] = 'Molimo vas da odaberete LDAP server za pretragu.';
+$messages['nosearchname'] = 'Molimo vas da upišete ime kontakta ili email adresu.';
+$messages['notuploadedwarning'] = 'Neki od priloga još nisu dodani na server. Molimo vas da sačekate ili da otkažete dodavanje.';
 $messages['searchsuccessful'] = 'Broj pronađenih poruka: $nr';
-$messages['searchnomatch'] = 'Traženi termin nije pronađen ni u jednoj poruci';
-$messages['searching'] = 'Pretraga u toku...';
-$messages['checking'] = 'Provjera u toku...';
-$messages['nospellerrors'] = 'Nije pronađena niti jedna pravopisna greška';
-$messages['folderdeleted'] = 'Fascikla uspješno obrisana';
-$messages['foldersubscribed'] = 'Fascikla uspješno pretplaćena';
-$messages['folderunsubscribed'] = 'Pretplata na fasciklu uspješno poništena';
-$messages['folderpurged'] = 'Fascikla uspješno ispražnjena';
-$messages['folderexpunged'] = 'Fascikla uspješno zbijena';
-$messages['deletedsuccessfully'] = 'Uspješno obrisano';
-$messages['converting'] = 'Formatiranje poruke';
-$messages['messageopenerror'] = 'Nije moguće ';
-$messages['fileuploaderror'] = 'Prijenos datoteke nije uspio';
-$messages['filesizeerror'] = 'Datoteka je prevelika. Maksimalna veličina je $size';
-$messages['copysuccess'] = 'Uspješno kopirano $n adresa';
-$messages['copyerror'] = 'Nije uspjelo kopiranje adresa';
-$messages['sourceisreadonly'] = 'Ovaj resurs adresa je samo za čitanje';
-$messages['errorsavingcontact'] = 'Nije uspjelo spremanje adrese kontakta';
-$messages['movingmessage'] = 'Premještanje poruke...';
-$messages['copyingmessage'] = 'Kopiranje poruke...';
-$messages['deletingmessage'] = 'Brisanje poruke...';
-$messages['markingmessage'] = 'Označavanje poruke...';
-$messages['receiptsent'] = 'Uspješno poslata potvrda (pročitano)';
-$messages['errorsendingreceipt'] = 'Ne može poslati potvrdu';
-$messages['nodeletelastidentity'] = 'Ne možete izbrisati zadnji pseudonim.';
-$messages['forbiddencharacter'] = 'Naziv mape sadrži zabranjene znakove';
-$messages['selectimportfile'] = 'Odaberite datoteku za prijenos';
-$messages['addresswriterror'] = 'U odabrani adresar nije moguće zapisivati...';
-$messages['contactaddedtogroup'] = 'Kontakti uspješno dodani ovoj grupi';
-$messages['contactremovedfromgroup'] = 'Kontakti uspješno izbrisani iz ove grupe';
-$messages['importwait'] = 'Uvozim, molimo sačekajte...';
+$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['nospellerrors'] = 'Pravopisne greške nisu pronađene.';
+$messages['folderdeleted'] = 'Folder je uspješno obrisan.';
+$messages['foldersubscribed'] = 'Uspješno ste pretplaćeni na folder.';
+$messages['folderunsubscribed'] = 'Pretplata na folder je uspješno ukinuta.';
+$messages['folderpurged'] = 'Folder je uspješno ispražnjen.';
+$messages['folderexpunged'] = 'Folder je uspješno optimiziran.';
+$messages['deletedsuccessfully'] = 'Brisanje uspješno.';
+$messages['converting'] = 'Uklanjam formatiranje...';
+$messages['messageopenerror'] = 'Nije moguće učitati poruku sa servera.';
+$messages['fileuploaderror'] = 'Dodavanje datoteke nije uspjelo.';
+$messages['filesizeerror'] = 'Datoteka je prevelika. Maksimalna veličina je $size.';
+$messages['copysuccess'] = 'Uspješno kopirano $n adresa.';
+$messages['copyerror'] = 'Nije moguće kopirati adrese.';
+$messages['sourceisreadonly'] = 'Ovaj izvor adresa je samo za čitanje.';
+$messages['errorsavingcontact'] = 'Nije moguće sačuvati kontakt adresu.';
+$messages['movingmessage'] = 'Premještam poruke...';
+$messages['copyingmessage'] = 'Kopiram poruke...';
+$messages['copyingcontact'] = 'Kopiram kontakte...';
+$messages['deletingmessage'] = 'Brišem poruke...';
+$messages['markingmessage'] = 'Označavam poruke...';
+$messages['addingmember'] = 'Dodajem kontakte u grupu...';
+$messages['removingmember'] = 'Uklanjam kontakte iz grupe...';
+$messages['receiptsent'] = 'Potvrda o primitku je uspješno poslana.';
+$messages['errorsendingreceipt'] = 'Nije moguće poslati potvrdu.';
+$messages['deleteidentityconfirm'] = 'Da li zaista želite obrisati ovaj identitet?';
+$messages['nodeletelastidentity'] = 'Ne možete obrisati jedini identitet.';
+$messages['forbiddencharacter'] = 'Naziv foldera sadrži nedozvoljeni znak.';
+$messages['selectimportfile'] = 'Molimo vas da odaberete datoteku za dodavanje.';
+$messages['addresswriterror'] = 'U odabrani adresar nije moguće zapisivati.';
+$messages['contactaddedtogroup'] = 'Kontakti su uspješno dodani u ovu grupu.';
+$messages['contactremovedfromgroup'] = 'Kontakti su uspješno uklonjeni iz ove grupe.';
+$messages['importwait'] = 'Uvoz u toku, molimo sačekajte...';
 $messages['importerror'] = 'Greška pri uvozu! Datoteka ne sadrži pravilan vCard format.';
-$messages['importconfirm'] = '<b>Uspješno je uvezeno $inserted kontakt(a), preskočeno $skipped već postojećih</b>:<p><em>$names</em></p>';
+$messages['importconfirm'] = '<b>Uspješno je uvezeno $inserted kontakata</b>';
 $messages['importconfirmskipped'] = '<b>Preskočeno $skipped postojećih unosa</b>';
 $messages['opnotpermitted'] = 'Operacija nije dozvoljena!';
-$messages['nofromaddress'] = 'Nije upisana email adresa u odabrani pseudonim';
-$messages['editorwarning'] = 'Prebacivanje u čisti tekstualni uređivač će prouzrokovati gubljenje formata teksta. Želite li nastaviti?';
-$messages['httpreceivedencrypterror'] = 'Dogodila se fatalna greška u konfiguraciji. Odmah kontaktirajte administratora. <b>Vaša poruka ne može biti poslata.</b>';
-$messages['smtpconnerror'] = 'SMTP Greška ($code): Veza na server nije uspjela';
-$messages['smtpautherror'] = 'SMTP Greška ($code): Autentikacija nije uspjela';
-$messages['smtpfromerror'] = 'SMTP Greška ($code): Nije uspjelo postavljanje pošiljaoca "$from" ($msg)';
-$messages['smtptoerror'] = 'SMTP Greška ($code): Nije uspjelo dodavanje primaoca "$to" ($msg)';
-$messages['smtprecipientserror'] = 'SMTP Greška: Nije moguće pročitati listu primaoca';
-$messages['smtpdsnerror'] = 'SMTP Greška: Nema podrške za obaviještenje o statusu isporuke';
-$messages['smtperror'] = 'SMTP Greška: $msg';
-$messages['emailformaterror'] = 'Nepravilna email adresa: $email';
+$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['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.';
+$messages['smtpfromerror'] = 'SMTP greška ($code): Nije uspjelo postavljanje pošiljaoca "$from" ($msg).';
+$messages['smtptoerror'] = 'SMTP greška ($code): Nije uspjelo dodavanje primaoca "$to" ($msg)';
+$messages['smtprecipientserror'] = 'SMTP greška: Nije moguće pročitati listu primaoca.';
+$messages['smtperror'] = 'SMTP greška: $msg';
+$messages['emailformaterror'] = 'Netačna email adresa: $email';
 $messages['toomanyrecipients'] = 'Previše primaoca. Smanjite broj primaoca na $max.';
-$messages['maxgroupmembersreached'] = 'Broj članova grupe prelazi preko maximuma od $max';
-$messages['internalerror'] = 'Dogodila se interna greška. Molimo Vas pokušajte ponovo.';
+$messages['maxgroupmembersreached'] = 'Broj članova grupe prelazi maksimum od $max.';
+$messages['internalerror'] = 'Dogodila se interna greška. Molimo vas da pokušate ponovo.';
 $messages['contactdelerror'] = 'Kontakti ne mogu biti obrisani.';
-$messages['contactdeleted'] = 'Kontakti uspješno obrisani.';
-$messages['groupdeleted'] = 'Grupa uspješno obrisana.';
-$messages['grouprenamed'] = 'Grupa uspješno preimenovana.';
-$messages['groupcreated'] = 'Grupa uspješno kreirana.';
-$messages['messagedeleted'] = 'Poruke uspješno obrisane.';
-$messages['messagemoved'] = 'Poruke uspješno pomjerene.';
+$messages['contactdeleted'] = 'Kontakti su uspješno obrisani.';
+$messages['contactrestoreerror'] = 'Nije moguće vratiti obrisane kontakte.';
+$messages['contactrestored'] = 'Kontakti su uspješno vraćeni.';
+$messages['groupdeleted'] = 'Grupa je uspješno obrisana.';
+$messages['grouprenamed'] = 'Grupa je uspješno preimenovana.';
+$messages['groupcreated'] = 'Grupa je uspješno kreirana.';
+$messages['savedsearchdeleted'] = 'Sačuvana pretraga je uspješno obrisana.';
+$messages['savedsearchdeleteerror'] = 'Nije moguće obrisati sačuvanu pretragu.';
+$messages['savedsearchcreated'] = 'Uspješno ste sačuvali rezultate pretrage.';
+$messages['savedsearchcreateerror'] = 'Nije moguće sačuvati pretragu.';
+$messages['messagedeleted'] = 'Poruke su uspješno obrisane.';
+$messages['messagemoved'] = 'Poruke su uspješno premještene.';
 $messages['messagecopied'] = 'Poruke uspješno kopirane.';
 $messages['messagemarked'] = 'Poruke uspješno označene.';
-$messages['autocompletechars'] = 'Unesite barem $min znakova za auto-dopunjavanje.';
+$messages['autocompletechars'] = 'Unesite barem $min znakova za automatsko popunjavanje.';
+$messages['autocompletemore'] = 'Pronađeno je još rezultata. Molimo vas da upišete još znakova.';
 $messages['namecannotbeempty'] = 'Polje za ime ne može biti prazno.';
-$messages['nametoolong'] = 'Ime predugo.';
-$messages['folderupdated'] = 'Ažuriranje mape uspješno.';
-$messages['foldercreated'] = 'Kreiranje mape uspješno.';
-$messages['invalidimageformat'] = 'Format slike nije validan.';
+$messages['nametoolong'] = 'Ime je predugo.';
+$messages['folderupdated'] = 'Folder je uspješno ažuriran.';
+$messages['foldercreated'] = 'Folder je uspješno kreiran.';
+$messages['invalidimageformat'] = 'Format slike nije ispravan.';
+$messages['mispellingsfound'] = 'Pronađene su pravopisne greške u ovoj poruci.';
+$messages['parentnotwritable'] = 'Nije moguće kreirati/premjestiti folder u odabrani matični folder. Nemate prava pristupa.';
+$messages['messagetoobig'] = 'Dio poruke je prevelik za procesiranje.';
 
-?>
index d4d99db5061a8837daf2f5a0a1658e5aaf821198..590306198367c216428c6792f398001810aedd9a 100644 (file)
@@ -1,22 +1,16 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/ca_ES/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Miguel Canteras i Cañizares <miguel@canteras.org>             |
-|         Simo <sim6@graciasensefils.net>                               |
-|         Jordi Sanfeliu <jordi@fibranet.cat>                           |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 5290 2011-09-28 17:09:50Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/ca_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jordi Sanfeliu <jordi@fibranet.cat>                           |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
@@ -26,10 +20,10 @@ $labels['password'] = 'Contrasenya';
 $labels['server'] = 'Servidor';
 $labels['login'] = 'Entra';
 $labels['logout'] = 'Tanca sessió';
-$labels['mail'] = 'E-Mail';
+$labels['mail'] = 'Correu';
 $labels['settings'] = 'Configuració';
 $labels['addressbook'] = 'Contactes';
-$labels['inbox'] = 'Entrada';
+$labels['inbox'] = 'Safata d\'entrada';
 $labels['drafts'] = 'Esborranys';
 $labels['sent'] = 'Enviats';
 $labels['trash'] = 'Paperera';
@@ -37,33 +31,36 @@ $labels['junk'] = 'Correu brossa';
 $labels['subject'] = 'Assumpte';
 $labels['from'] = 'Remitent';
 $labels['to'] = 'Destinatari';
-$labels['cc'] = 'CC';
-$labels['bcc'] = 'BCC';
+$labels['cc'] = 'Cc';
+$labels['bcc'] = 'Bcc';
 $labels['replyto'] = 'Respon a';
-$labels['followupto'] = 'Seguiment-Per';
+$labels['followupto'] = 'Seguiment-a';
 $labels['date'] = 'Data';
-$labels['size'] = 'Grandària';
+$labels['size'] = 'Mida';
 $labels['priority'] = 'Prioritat';
 $labels['organization'] = 'Organització';
 $labels['readstatus'] = 'Estat de lectura';
+$labels['listoptions'] = 'Llista d\'opcions...';
 $labels['mailboxlist'] = 'Carpetes';
+$labels['folders'] = 'Carpetes';
 $labels['messagesfromto'] = 'Missatges des de $from a $to de $count';
 $labels['threadsfromto'] = 'Fils $from a $to de $count';
 $labels['messagenrof'] = 'Missatge $nr de $count';
+$labels['fromtoshort'] = '$from - $to de $count';
 $labels['copy'] = 'Copia';
 $labels['move'] = 'Mou';
-$labels['moveto'] = 'mou a...';
-$labels['download'] = 'descarrega';
+$labels['moveto'] = 'Mou a...';
+$labels['download'] = 'Descarrega';
 $labels['filename'] = 'Nom del fitxer';
-$labels['filesize'] = 'Grandària de fitxer';
+$labels['filesize'] = 'Mida del fitxer';
 $labels['addtoaddressbook'] = 'Afegeix a contactes';
-$labels['sun'] = 'DG';
-$labels['mon'] = 'DL';
-$labels['tue'] = 'DM';
-$labels['wed'] = 'DC';
-$labels['thu'] = 'DJ';
-$labels['fri'] = 'DV';
-$labels['sat'] = 'DS';
+$labels['sun'] = 'Diu';
+$labels['mon'] = 'Dll';
+$labels['tue'] = 'Dmt';
+$labels['wed'] = 'Dmc';
+$labels['thu'] = 'Dij';
+$labels['fri'] = 'Div';
+$labels['sat'] = 'Dis';
 $labels['sunday'] = 'Diumenge';
 $labels['monday'] = 'Dilluns';
 $labels['tuesday'] = 'Dimarts';
@@ -76,6 +73,7 @@ $labels['feb'] = 'feb';
 $labels['mar'] = 'mar';
 $labels['apr'] = 'abr';
 $labels['may'] = 'mai';
+$labels['longmay'] = 'mai';
 $labels['jun'] = 'jun';
 $labels['jul'] = 'jul';
 $labels['aug'] = 'ago';
@@ -87,7 +85,6 @@ $labels['longjan'] = 'gener';
 $labels['longfeb'] = 'febrer';
 $labels['longmar'] = 'març';
 $labels['longapr'] = 'abril';
-$labels['longmay'] = 'maig';
 $labels['longjun'] = 'juny';
 $labels['longjul'] = 'juliol';
 $labels['longaug'] = 'agost';
@@ -96,53 +93,61 @@ $labels['longoct'] = 'octubre';
 $labels['longnov'] = 'novembre';
 $labels['longdec'] = 'desembre';
 $labels['today'] = 'Avui';
+$labels['refresh'] = 'Actualitza';
 $labels['checkmail'] = 'Recupera missatges nous';
-$labels['writenewmessage'] = 'Crea nou missatge';
-$labels['replytomessage'] = 'Respon al missatge';
+$labels['compose'] = 'Escriu un missatge';
+$labels['writenewmessage'] = 'Crea un nou missatge';
+$labels['reply'] = 'Respon';
+$labels['replytomessage'] = 'Respon al remitent';
 $labels['replytoallmessage'] = 'Respon al remitent i a tots els destinataris';
-$labels['replyall'] = 'Respondre a tots';
+$labels['replyall'] = 'Respon a tots';
 $labels['replylist'] = 'Llista de resposta';
-$labels['forwardinline'] = 'Reenvia';
-$labels['forwardattachment'] = 'Reenvia adjunt';
-$labels['forwardmessage'] = 'Reenvia missatge';
-$labels['deletemessage'] = 'Suprimeix missatge';
-$labels['movemessagetotrash'] = 'Mou missatge a la paperera';
+$labels['forward'] = 'Reenvia';
+$labels['forwardinline'] = 'Reenvia com en línia';
+$labels['forwardattachment'] = 'Reenvia com a adjunt';
+$labels['forwardmessage'] = 'Reenvia el missatge';
+$labels['deletemessage'] = 'Suprimeix el missatge';
+$labels['movemessagetotrash'] = 'Mou el missatge a la paperera';
 $labels['printmessage'] = 'Imprimeix aquest missatge';
 $labels['previousmessage'] = 'Mostra el missatge anterior';
 $labels['firstmessage'] = 'Mostra el primer missatge';
 $labels['nextmessage'] = 'Mostra el missatge següent';
 $labels['lastmessage'] = 'Mostra l\'últim missatge';
 $labels['backtolist'] = 'Torna a la llista de missatges';
-$labels['viewsource'] = 'Visualitza el codi font';
+$labels['viewsource'] = 'Mostra el codi font';
+$labels['mark'] = 'Marca';
 $labels['markmessages'] = 'Marca missatges';
 $labels['markread'] = 'Com a llegits';
 $labels['markunread'] = 'Com a no llegits';
-$labels['markflagged'] = 'Com marcat';
-$labels['markunflagged'] = 'Com no marcat';
+$labels['markflagged'] = 'Com marcat';
+$labels['markunflagged'] = 'Com no marcat';
 $labels['moreactions'] = 'Més accions...';
+$labels['more'] = 'Més';
+$labels['back'] = 'Torna';
+$labels['options'] = 'Opcions';
 $labels['select'] = 'Selecciona';
 $labels['all'] = 'Tots';
 $labels['none'] = 'Cap';
+$labels['nonesort'] = 'Cap';
 $labels['currpage'] = 'Pàgina actual';
 $labels['unread'] = 'No llegits';
 $labels['flagged'] = 'Marcat';
 $labels['unanswered'] = 'No respost';
-$labels['deleted'] = 'Esborrat';
+$labels['deleted'] = 'Suprimit';
 $labels['invert'] = 'Inverteix';
 $labels['filter'] = 'Filtre';
 $labels['list'] = 'Llista';
-$labels['threads'] = 'Fils';
+$labels['threads'] = 'Fils de discusió';
 $labels['expand-all'] = 'Expandeix tots';
 $labels['expand-unread'] = 'Expandeix No llegits';
-$labels['collapse-all'] = 'Col·lapsa tots';
+$labels['collapse-all'] = 'Redueix tots';
 $labels['threaded'] = 'Encadenat';
 $labels['autoexpand_threads'] = 'Expandeix els missatges encadenats';
-$labels['do_expand'] = 'tots els fils';
+$labels['do_expand'] = 'tots els fils de discusió';
 $labels['expand_only_unread'] = 'només amb missatges no llegits';
 $labels['fromto'] = 'Remitent/Destinatari';
 $labels['flag'] = 'Marca';
-$labels['attachment'] = 'Adjunt';
-$labels['nonesort'] = 'Cap';
+$labels['attachment'] = 'Adjunció';
 $labels['sentdate'] = 'Data d\'enviament';
 $labels['arrival'] = 'Data d\'arribada';
 $labels['asc'] = 'ascendent';
@@ -154,7 +159,7 @@ $labels['listmode'] = 'Mode de vista de llista';
 $labels['folderactions'] = 'Accions de carpeta';
 $labels['compact'] = 'Compacta';
 $labels['empty'] = 'Buida';
-$labels['quota'] = 'Utilització de disc';
+$labels['quota'] = 'Ús del disc';
 $labels['unknown'] = 'desconegut';
 $labels['unlimited'] = 'il·limitat';
 $labels['quicksearch'] = 'Cerca ràpida';
@@ -163,46 +168,48 @@ $labels['searchmod'] = 'Cerca modificadors';
 $labels['msgtext'] = 'Missatge sencer';
 $labels['openinextwin'] = 'Obre a una nova finestra';
 $labels['emlsave'] = 'Descarrega (.eml)';
-$labels['compose'] = 'Escriu un missatge';
 $labels['editasnew'] = 'Edita com a nou';
 $labels['savemessage'] = 'Desa aquest esborrany';
-$labels['sendmessage'] = 'Envia ara el missatge';
-$labels['addattachment'] = 'Afegeix un fitxer';
+$labels['sendmessage'] = 'Envia el missatge';
+$labels['addattachment'] = 'Adjunta un fitxer';
 $labels['charset'] = 'Codificació de caràcters';
 $labels['editortype'] = 'Tipus d\'editor';
 $labels['returnreceipt'] = 'Confirmació de recepció';
 $labels['dsn'] = 'Notificació d\'estat de lliurament';
 $labels['mailreplyintro'] = 'A $date, $sender escrigué:';
 $labels['originalmessage'] = 'Missatge Original';
-$labels['editidents'] = 'Editar identitats';
+$labels['editidents'] = 'Edita identitats';
+$labels['spellcheck'] = 'Ortografia';
 $labels['checkspelling'] = 'Comprova l\'ortografia';
-$labels['resumeediting'] = 'Continua l\'edició';
+$labels['resumeediting'] = 'Reprèn l\'edició';
 $labels['revertto'] = 'Torna a';
-$labels['attachments'] = 'Adjunts';
+$labels['attach'] = 'Adjunta';
+$labels['attachments'] = 'Adjuncions';
 $labels['upload'] = 'Afegeix';
 $labels['uploadprogress'] = '$percent ($current de $total)';
-$labels['close'] = 'Cancel·la';
+$labels['close'] = 'Tanca';
 $labels['messageoptions'] = 'Opcions de missatge...';
 $labels['low'] = 'Baixa';
-$labels['lowest'] = 'Molt baixa';
+$labels['lowest'] = 'La més baixa';
 $labels['normal'] = 'Normal';
 $labels['high'] = 'Alta';
-$labels['highest'] = 'Molt alta';
+$labels['highest'] = 'La més alta';
 $labels['nosubject'] = '(sense assumpte)';
-$labels['showimages'] = 'Mostra imatges';
-$labels['alwaysshow'] = 'Sempre mostra imatges de $sender';
+$labels['showimages'] = 'Mostra les imatges';
+$labels['alwaysshow'] = 'Mostra sempre les imatges de $sender';
+$labels['isdraft'] = 'Aquest és un missatge esborrany.';
 $labels['htmltoggle'] = 'HTML';
-$labels['plaintoggle'] = 'Text pla';
+$labels['plaintoggle'] = 'Text net';
 $labels['savesentmessagein'] = 'Desa el missatge enviat a';
-$labels['dontsave'] = 'no deseu';
-$labels['maxuploadsize'] = 'El tamany màxim de fitxer és $size';
+$labels['dontsave'] = 'no ho desis';
+$labels['maxuploadsize'] = 'El mida màxima del fitxer és $size';
 $labels['addcc'] = 'Afegeix Cc';
 $labels['addbcc'] = 'Afegeix Bcc';
-$labels['addreplyto'] = 'Afegeix Reply-To';
-$labels['addfollowupto'] = 'Afegir Seguiment-Per';
+$labels['addreplyto'] = 'Afegeix Respon-A';
+$labels['addfollowupto'] = 'Afegir Seguiment-A';
 $labels['mdnrequest'] = 'El remitent d\'aquest missatge ha demanat ser notificat quan llegiu aquest missatge. Voleu notificar al remitent?';
 $labels['receiptread'] = 'Confirmació de recepció';
-$labels['yourmessage'] = 'Aquesta és una confirmació de recepció per al vostre missatge';
+$labels['yourmessage'] = 'Això és una confirmació de recepció per al vostre missatge';
 $labels['receiptnote'] = 'Nota: Aquesta confirmació només indica que el missatge ha estat mostrat a l\'ordinador del destinatari. No hi ha garantia que el destinatari hagi llegit o entès el contingut del missatge.';
 $labels['name'] = 'Nom a mostrar';
 $labels['firstname'] = 'Nom';
@@ -215,7 +222,7 @@ $labels['jobtitle'] = 'Càrrec';
 $labels['department'] = 'Departament';
 $labels['gender'] = 'Sexe';
 $labels['maidenname'] = 'Cognom de Solter/a';
-$labels['email'] = 'E-Mail';
+$labels['email'] = 'Correu electrònic';
 $labels['phone'] = 'Telèfon';
 $labels['address'] = 'Adreça';
 $labels['street'] = 'Carrer';
@@ -223,37 +230,38 @@ $labels['locality'] = 'Ciutat';
 $labels['zipcode'] = 'Codi postal';
 $labels['region'] = 'Estat/Província';
 $labels['country'] = 'País';
-$labels['birthday'] = 'Aniversari';
+$labels['birthday'] = 'Data de naixement';
 $labels['anniversary'] = 'Aniversari';
 $labels['website'] = 'Pàgina web';
 $labels['instantmessenger'] = 'IM';
 $labels['notes'] = 'Notes';
-$labels['male'] = 'masculí';
-$labels['female'] = 'femení';
+$labels['male'] = 'home';
+$labels['female'] = 'dona';
 $labels['manager'] = 'Gerent';
 $labels['assistant'] = 'Assistent';
+$labels['typeassistant'] = 'Assistent';
 $labels['spouse'] = 'Cònjuge';
 $labels['allfields'] = 'Tots els camps';
-$labels['search'] = 'Cercar';
+$labels['search'] = 'Cerca';
 $labels['advsearch'] = 'Cerca Avançada';
-$labels['other'] = 'Altre';
+$labels['advanced'] = 'Paràmetres avançats';
+$labels['other'] = 'Un altre';
+$labels['typeother'] = 'Un altre';
 $labels['typehome'] = 'Casa';
 $labels['typework'] = 'Feina';
-$labels['typeother'] = 'Altre';
 $labels['typemobile'] = 'Mòbil';
 $labels['typemain'] = 'Principal';
-$labels['typehomefax'] = 'Fax de Casa';
-$labels['typeworkfax'] = 'Fax de la Feina';
+$labels['typehomefax'] = 'Fax particular';
+$labels['typeworkfax'] = 'Fax de la feina';
 $labels['typecar'] = 'Cotxe';
-$labels['typepager'] = 'Paginador';
+$labels['typepager'] = 'Cercapersones';
 $labels['typevideo'] = 'Vídeo';
-$labels['typeassistant'] = 'Assistent';
 $labels['typehomepage'] = 'Pàgina Inicial';
-$labels['typeblog'] = 'Blog';
+$labels['typeblog'] = 'Bloc';
 $labels['typeprofile'] = 'Perfil';
 $labels['addfield'] = 'Afegeix camp...';
-$labels['addcontact'] = 'Afegeix nou contacte';
-$labels['editcontact'] = 'Edita contacte';
+$labels['addcontact'] = 'Afegeix un nou contacte';
+$labels['editcontact'] = 'Edita el contacte';
 $labels['contacts'] = 'Contactes';
 $labels['contactproperties'] = 'Propietats del contacte';
 $labels['personalinfo'] = 'Informació personal';
@@ -261,49 +269,54 @@ $labels['edit'] = 'Edita';
 $labels['cancel'] = 'Cancel·la';
 $labels['save'] = 'Desa';
 $labels['delete'] = 'Suprimeix';
-$labels['rename'] = 'Renombrar';
+$labels['rename'] = 'Reanomena';
 $labels['addphoto'] = 'Afegeix';
 $labels['replacephoto'] = 'Reemplaça';
-$labels['newcontact'] = 'Crea nou contacte';
-$labels['deletecontact'] = 'Suprimeix contactes seleccionats';
+$labels['uploadphoto'] = 'Puja una fotografia';
+$labels['newcontact'] = 'Crea un nou contacte';
+$labels['deletecontact'] = 'Suprimeix els contactes seleccionats';
 $labels['composeto'] = 'Redacta correu per a';
 $labels['contactsfromto'] = 'Contactes $from a $to de $count';
 $labels['print'] = 'Imprimeix';
 $labels['export'] = 'Exporta';
 $labels['exportvcards'] = 'Exporta contactes en format vCard';
 $labels['newcontactgroup'] = 'Crea un nou grup de contactes';
-$labels['grouprename'] = 'Renomena el grup';
-$labels['groupdelete'] = 'Elimina el grup';
-$labels['previouspage'] = 'Mostra anteriors';
-$labels['firstpage'] = 'Mostra primers';
-$labels['nextpage'] = 'Mostra següents';
-$labels['lastpage'] = 'Mostra darrers';
+$labels['grouprename'] = 'Reanomena el grup';
+$labels['groupdelete'] = 'Suprimeix el grup';
+$labels['groupremoveselected'] = 'Suprimeix els contactes seleccionats del grup';
+$labels['previouspage'] = 'Mostra la pàgina anterior';
+$labels['firstpage'] = 'Mostra la primera pàgina';
+$labels['nextpage'] = 'Mostra la pàgina següent';
+$labels['lastpage'] = 'Mostra la darrera pàgina';
 $labels['group'] = 'Grup';
 $labels['groups'] = 'Grups';
 $labels['personaladrbook'] = 'Llibreta d\'adreces';
 $labels['searchsave'] = 'Desa la cerca';
-$labels['searchdelete'] = 'Elimina la cerca';
+$labels['searchdelete'] = 'Suprimeix la cerca';
 $labels['import'] = 'Importa';
 $labels['importcontacts'] = 'Importa contactes';
 $labels['importfromfile'] = 'Importa des d\'un fitxer:';
 $labels['importtarget'] = 'Afegeix contactes nous a la llibreta d\'adreces:';
 $labels['importreplace'] = 'Reemplaça la llibreta d\'adreçes sencera';
-$labels['importtext'] = 'Podeu importar contactes des d\'una llibreta d\'adreces existent.<br/>Actualment suportem l\'importació d\'adreces amb el format <a href="http://en.wikipedia.org/wiki/VCard">vCard</a>.';
+$labels['importtext'] = 'Podeu importar contactes des d\'una llibreta d\'adreces existent.<br/>Actualment s\'admet l\'importació d\'adreces amb el format <a href="http://en.wikipedia.org/wiki/VCard">vCard</a>.';
 $labels['done'] = 'Fet';
 $labels['settingsfor'] = 'Configuració per a';
+$labels['about'] = 'Quant a';
 $labels['preferences'] = 'Preferències';
-$labels['userpreferences'] = 'Preferències d\'usuari';
-$labels['editpreferences'] = 'Edita preferències d\'usuari';
+$labels['userpreferences'] = 'Preferències de l\'usuari';
+$labels['editpreferences'] = 'Edita les preferències de l\'usuari';
 $labels['identities'] = 'Identitats';
-$labels['manageidentities'] = 'Gestiona identitats per a aquest compte';
+$labels['manageidentities'] = 'Gestiona les identitats per a aquest compte';
 $labels['newidentity'] = 'Nova identitat';
-$labels['newitem'] = 'Nou';
-$labels['edititem'] = 'Edita';
+$labels['newitem'] = 'Nou element';
+$labels['edititem'] = 'Edita l\'element';
 $labels['preferhtml'] = 'Mostra HTML';
-$labels['defaultcharset'] = 'Joc de caracters per defecte';
+$labels['defaultcharset'] = 'Joc de caràcters per defecte';
 $labels['htmlmessage'] = 'Missatge HTML';
+$labels['dateformat'] = 'Format de la data';
+$labels['timeformat'] = 'Format horari';
 $labels['prettydate'] = 'Dates curtes';
-$labels['setdefault'] = 'Selecciona opció per defecte';
+$labels['setdefault'] = 'Posa-ho per defecte';
 $labels['autodetect'] = 'Auto';
 $labels['language'] = 'Idioma';
 $labels['timezone'] = 'Fus horari';
@@ -311,30 +324,31 @@ $labels['pagesize'] = 'Files per pàgina';
 $labels['signature'] = 'Signatura';
 $labels['dstactive'] = 'Horari d\'estiu';
 $labels['htmleditor'] = 'Escriu missatges en HTML';
-$labels['htmlonreply'] = 'només en resposta a missatge HTML';
-$labels['htmlsignature'] = 'Signatura HTML';
+$labels['htmlonreply'] = 'només en resposta a missatges en HTML';
+$labels['htmlsignature'] = 'Signatura en HTML';
 $labels['previewpane'] = 'Mostra el panell de previsualització';
 $labels['skin'] = 'Aparença d\'interfície';
-$labels['logoutclear'] = 'Buida la paperera al tancar sessió';
-$labels['logoutcompact'] = 'Compacta la safata d\'entrada al tancar sessió';
-$labels['uisettings'] = 'Interfície d\'usuari';
+$labels['logoutclear'] = 'Buida la paperera al tancar la sessió';
+$labels['logoutcompact'] = 'Compacta la safata d\'entrada al tancar la sessió';
+$labels['uisettings'] = 'Interfície de l\'usuari';
 $labels['serversettings'] = 'Configuració del servidor';
 $labels['mailboxview'] = 'Vista de la bústia';
-$labels['mdnrequests'] = 'Notificacions de recepció';
-$labels['askuser'] = 'Pregunta-ho a l\'usuari';
-$labels['autosend'] = 'Envia-les automàticament';
-$labels['autosendknown'] = 'Envia-les automàticament només als meus contactes';
-$labels['autosendknownignore'] = 'enviar recepció als meus contactes, sinó ignora';
-$labels['ignore'] = 'Ignora-les';
+$labels['mdnrequests'] = 'Notificacions de confirmació de recepció';
+$labels['askuser'] = 'demana\'m què vull fer';
+$labels['autosend'] = 'envia la confirmació de recepció';
+$labels['autosendknown'] = 'envia la confirmació de recepció als meus contactes, pels demés damana-m\'ho';
+$labels['autosendknownignore'] = 'envia la confirmació als meus contactes, pels demés ignora-ho';
+$labels['ignore'] = 'ignora';
 $labels['readwhendeleted'] = 'Marca el missatge com a llegit quan se suprimeixi';
-$labels['flagfordeletion'] = 'Afegeix marca d\'esborrat en comptes d\'esborrar-lo';
+$labels['flagfordeletion'] = 'Marca el missatge com a suprimit en comptes de suprimir-lo';
 $labels['skipdeleted'] = 'No mostris els missatges suprimits';
-$labels['deletealways'] = 'Si falla quan es mou un missatge a la Paperera, aleshores esborra\'l';
-$labels['showremoteimages'] = 'Mostra imatges remotes sota el missatge';
+$labels['deletealways'] = 'Si falla quan es mou un missatge a la Paperera, aleshores suprimeix-lo';
+$labels['deletejunk'] = 'Suprimeix directament els missatges de Correu brossa';
+$labels['showremoteimages'] = 'Mostra les imatges remotes del missatge';
 $labels['fromknownsenders'] = 'de remitent conegut';
 $labels['always'] = 'sempre';
 $labels['showinlineimages'] = 'Mostra les imatges adjuntes sota el missatge';
-$labels['autosavedraft'] = 'Desa esborrany automàticament';
+$labels['autosavedraft'] = 'Desa l\'esborrany automàticament';
 $labels['everynminutes'] = 'cada $n minut(s)';
 $labels['keepalive'] = 'Comprova nous missatges a';
 $labels['never'] = 'mai';
@@ -345,85 +359,92 @@ $labels['mimeparamfolding'] = 'Noms dels adjunts';
 $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 caracters de 8-bits';
+$labels['force7bit'] = 'Fes servir la codificació MIME per a caràcters de 8-bits';
 $labels['advancedoptions'] = 'Opcions avançades';
 $labels['focusonnewmessage'] = 'Envia el focus al navegador quan hi hagi un nou missatge';
 $labels['checkallfolders'] = 'Comprova totes les carpetes per missatges nous';
-$labels['displaynext'] = 'Mostra el següent missatge després de esborrar-ne o moure\'n un';
+$labels['displaynext'] = 'Mostra el següent missatge després de suprimir-ne o moure\'n un';
+$labels['defaultfont'] = 'Font de lletra per defecte de missatge HTML';
 $labels['mainoptions'] = 'Opcions principals';
+$labels['browseroptions'] = 'Opcions del navegador';
 $labels['section'] = 'Secció';
 $labels['maintenance'] = 'Manteniment';
 $labels['newmessage'] = 'Missatge nou';
-$labels['listoptions'] = 'Opcions de llista';
 $labels['signatureoptions'] = 'Opcions de signatura';
 $labels['whenreplying'] = 'Quan es respon';
-$labels['replytopposting'] = 'comença un nou missatge per sobre de l\'original';
-$labels['replybottomposting'] = 'comença un nou missatge per sota de l\'original';
-$labels['replyremovesignature'] = 'Quan es contesti, elimina la signatura original del missatge';
+$labels['replytopposting'] = 'comença el missatge nou a sobre de l\'original';
+$labels['replybottomposting'] = 'comença el missatge nou a sota de l\'original';
+$labels['replyremovesignature'] = 'Quan es contesti, suprimeix la signatura original del missatge';
 $labels['autoaddsignature'] = 'Afegeix la signatura automàticament';
-$labels['newmessageonly'] = 'només missatge nou';
-$labels['replyandforwardonly'] = 'només respostes i reenviaments';
-$labels['replysignaturepos'] = 'Quan es contesti o reenviï, posa la signatura';
+$labels['newmessageonly'] = 'només si és un missatge nou';
+$labels['replyandforwardonly'] = 'només respostes i reenviaments';
+$labels['replysignaturepos'] = 'Quan es contesti o reenviï, posa-hi la signatura';
 $labels['belowquote'] = 'sota les cometes';
 $labels['abovequote'] = 'sobre les cometes';
-$labels['insertsignature'] = 'Inserta signatura';
-$labels['previewpanemarkread'] = 'Marca missatges previsualitzats com a llegits';
+$labels['insertsignature'] = 'Inserta la signatura';
+$labels['previewpanemarkread'] = 'Marca els missatges previsualitzats com a llegits';
 $labels['afternseconds'] = 'després de $n segons';
 $labels['reqmdn'] = 'Demana sempre la confirmació de recepció';
-$labels['reqdsn'] = 'Sempre demanar una notificació d\'estat de lliurament';
-$labels['replysamefolder'] = 'Col·locar respostes a la carpeta del missatge que es respon';
+$labels['reqdsn'] = 'Demana sempre una notificació d\'estat de lliurament';
+$labels['replysamefolder'] = 'Posa les respostes a la carpeta del missatge que es respon';
 $labels['defaultaddressbook'] = 'Afegeix contactes nous a la llibreta d\'adreces seleccionada';
+$labels['autocompletesingle'] = 'Omet adreces alternatives quan s\'autocompleti';
+$labels['listnamedisplay'] = 'Llista contactes com a';
 $labels['spellcheckbeforesend'] = 'Comprova l\'ortografia abans d\'enviar un missatge';
 $labels['spellcheckoptions'] = 'Opcions del corrector ortogràfic';
 $labels['spellcheckignoresyms'] = 'Ignora paraules amb símbols';
 $labels['spellcheckignorenums'] = 'Ignora paraules amb números';
 $labels['spellcheckignorecaps'] = 'Ignora paraules amb lletres capitalitzades';
 $labels['addtodict'] = 'Afegeix al diccionari';
+$labels['mailtoprotohandler'] = 'Registra controlador de protocol pels enllaços mailto:';
 $labels['folder'] = 'Carpeta';
-$labels['folders'] = 'Carpetes';
-$labels['foldername'] = 'Nom de carpeta';
-$labels['subscribed'] = 'Subscriure\'s';
+$labels['foldername'] = 'Nom de la carpeta';
+$labels['subscribed'] = 'Subscrit';
 $labels['messagecount'] = 'Missatges';
 $labels['create'] = 'Crea';
-$labels['createfolder'] = 'Crea nova carpeta';
+$labels['createfolder'] = 'Crea una carpeta nova';
 $labels['managefolders'] = 'Gestiona carpetes';
-$labels['specialfolders'] = 'Carpetes Especials';
+$labels['specialfolders'] = 'Carpetes especials';
 $labels['properties'] = 'Propietats';
 $labels['folderproperties'] = 'Propietats de la carpeta';
-$labels['parentfolder'] = 'Carpeta pare';
-$labels['location'] = 'Localització';
+$labels['parentfolder'] = 'Carpeta superior';
+$labels['location'] = 'Ubicació';
 $labels['info'] = 'Informació';
-$labels['getfoldersize'] = 'Clica per a veure la mida de la carpeta';
-$labels['changesubscription'] = 'Clica per a canviar la subscripció';
+$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';
 $labels['undo'] = 'Desfés';
+$labels['plugin'] = 'Complement';
+$labels['version'] = 'Versió';
+$labels['source'] = 'Font';
+$labels['license'] = 'Llicència';
+$labels['support'] = 'Obtingueu ajuda';
 $labels['B'] = 'B';
 $labels['KB'] = 'KB';
 $labels['MB'] = 'MB';
 $labels['GB'] = 'GB';
 $labels['unicode'] = 'Unicode';
-$labels['english'] = 'Anglés';
-$labels['westerneuropean'] = 'Europeu Occidental';
-$labels['easterneuropean'] = 'Europeu Oriental';
+$labels['english'] = 'Anglès';
+$labels['westerneuropean'] = 'Europeu occidental';
+$labels['easterneuropean'] = 'Europeu oriental';
 $labels['southeasterneuropean'] = 'Europeu Sud-Oriental';
 $labels['baltic'] = 'Bàltic';
-$labels['cyrillic'] = 'Cirilic';
+$labels['cyrillic'] = 'Ciríl·lic';
 $labels['arabic'] = 'Àrab';
 $labels['greek'] = 'Grec';
 $labels['hebrew'] = 'Hebreu';
 $labels['turkish'] = 'Turc';
 $labels['nordic'] = 'Nòrdic';
-$labels['thai'] = 'Tailandés';
-$labels['celtic'] = 'Celta';
+$labels['thai'] = 'Tailandès';
+$labels['celtic'] = 'Cèltic';
 $labels['vietnamese'] = 'Vietnamita';
-$labels['japanese'] = 'Japonés';
-$labels['korean'] = 'Koreà';
-$labels['chinese'] = 'Xinés';
+$labels['japanese'] = 'Japonès';
+$labels['korean'] = 'Coreà';
+$labels['chinese'] = 'Xinès';
 
-?>
index e7b3d29e8df5b0ea507dfd63bb8de5f70b2bab22..c5b036820bc1b4a57ef7055bd35a2e6ec320684b 100644 (file)
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/ca_ES/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Miguel Canteras i Cañizares <miguel@canteras.org>             |
-|         Simo <sim6@graciasensefils.net>                               |
-|         Jordi Sanfeliu <jordi@fibranet.cat>                           |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 5290 2011-09-28 17:09:50Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/ca_ES/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jordi Sanfeliu <jordi@fibranet.cat>                           |
+ +-----------------------------------------------------------------------+
 */
 
 $messages = array();
-$messages['loginfailed'] = 'Contrasenya incorrecta';
+$messages['errortitle'] = 'Hi ha hagut un error!';
+$messages['loginfailed'] = 'L\'accés ha fallat.';
 $messages['cookiesdisabled'] = 'El vostre navegador no accepta cookies';
 $messages['sessionerror'] = 'La vostra sessió no existeix o ha expirat';
-$messages['imaperror'] = 'Error de conexió amb el servidor IMAP';
+$messages['storageerror'] = 'Error de conexió amb el servidor IMAP';
 $messages['servererror'] = 'Error del Servidor!';
 $messages['servererrormsg'] = 'Error del Servidor: $msg';
 $messages['dberror'] = 'Error a la Base de Dades!';
-$messages['errorreadonly'] = 'Impossible de realitzar l\'operació. La carpeta és de només lectura';
-$messages['errornoperm'] = 'Impossible de realitzar l\'operació. Permís denegat';
+$messages['requesttimedout'] = 'S\'ha esgotat el temps de la sol·licitud';
+$messages['errorreadonly'] = 'Impossible de realitzar l\'operació. La carpeta és de només lectura.';
+$messages['errornoperm'] = 'Impossible de realitzar l\'operació. Permís denegat.';
 $messages['invalidrequest'] = 'Petició no vàlida! No s\'ha desat les dades.';
-$messages['nomessagesfound'] = 'No s\'han trobat missatges en aquesta bústia';
-$messages['loggedout'] = 'Heu tancat la sessió. Fins aviat!';
-$messages['mailboxempty'] = 'La bústia és buida';
-$messages['loading'] = 'Carregant...';
-$messages['uploading'] = 'Pujant fitxer...';
-$messages['uploadingmany'] = 'Pujant fitxer...';
-$messages['loadingdata'] = 'Carregant dades...';
-$messages['checkingmail'] = 'Cercant nous missatges...';
-$messages['sendingmessage'] = 'Enviant missatge...';
-$messages['messagesent'] = 'Missatge enviat correctament';
+$messages['nomessagesfound'] = 'No s\'han trobat missatges en aquesta bústia.';
+$messages['loggedout'] = 'Heu tancat la sessió. A reveure!';
+$messages['mailboxempty'] = 'La bústia és buida.';
+$messages['loading'] = 'S\'està carregant…';
+$messages['uploading'] = 'S\'està pujant el fitxer...';
+$messages['uploadingmany'] = 'S\'està pujant els fitxers...';
+$messages['loadingdata'] = 'S\'estan carregant les dades...';
+$messages['checkingmail'] = 'S’està comprovant si hi ha missatges nous…';
+$messages['sendingmessage'] = 'S’està enviant el missatge…';
+$messages['messagesent'] = 'Missatge enviat correctament.';
 $messages['savingmessage'] = 'Desant missatge...';
-$messages['messagesaved'] = 'Missatge desat a Esborranys';
-$messages['successfullysaved'] = 'Desat correctament';
-$messages['addedsuccessfully'] = 'Contacte afegit correctament a la llibreta d\'adreces';
-$messages['contactexists'] = 'Ja hi ha un contacte amb aquesta adreça de correu';
+$messages['messagesaved'] = 'Missatge desat a Esborranys.';
+$messages['successfullysaved'] = 'Desat correctament.';
+$messages['addedsuccessfully'] = 'Contacte afegit correctament a la llibreta d\'adreces.';
+$messages['contactexists'] = 'Ja hi ha un contacte amb aquesta adreça de correu.';
 $messages['contactnameexists'] = 'Ja existeix un contacte amb el mateix nom.';
-$messages['blockedimages'] = 'Per a protegir la vostra privacitat, les imatges remotes han estat bloquejades en aquest missatge';
+$messages['blockedimages'] = 'Per protegir la vostra privacitat, les imatges remotes han estat bloquejades en aquest missatge.';
 $messages['encryptedmessage'] = 'Aquest és un missatge xifrat i no pot ser mostrat. Ho sento!';
-$messages['nocontactsfound'] = 'No hi ha contactes';
-$messages['contactnotfound'] = 'No s\'ha trobat el contacte sol·licitat';
-$messages['sendingfailed'] = 'Error enviant missatge';
-$messages['senttooquickly'] = 'Si us plau, espereu $sec segon(s) abans d\'enviar aquest missatge';
-$messages['errorsavingsent'] = 'Hi ha hagut un error mentre es desava el missatge enviat';
-$messages['errorsaving'] = 'Hi ha hagut un error mentre es desava';
-$messages['errormoving'] = 'No s\'ha pogut moure el missatge';
-$messages['errorcopying'] = 'No s\'ha pogut copiar el(s) missatge(s)';
-$messages['errordeleting'] = 'No s\'ha pogut eliminar el missatge';
-$messages['errormarking'] = 'No s\'ha pogut marcar el missatge.';
+$messages['nocontactsfound'] = 'No s\'ha trobat cap contacte.';
+$messages['contactnotfound'] = 'No s\'ha trobat el contacte sol·licitat.';
+$messages['contactsearchonly'] = 'Introduïu termes de cerca per trobar contactes';
+$messages['sendingfailed'] = 'Error enviant missatge.';
+$messages['senttooquickly'] = 'Si us plau, espereu $sec segon(s) abans d\'enviar aquest missatge.';
+$messages['errorsavingsent'] = 'Hi ha hagut un error mentre es desava el missatge enviat.';
+$messages['errorsaving'] = 'Hi ha hagut un error mentre es desava.';
+$messages['errormoving'] = 'No s\'ha pogut moure el(s) missatge(s).';
+$messages['errorcopying'] = 'No s\'ha pogut copiar el(s) missatge(s).';
+$messages['errordeleting'] = 'No s\'ha pogut suprimir el missatge.';
+$messages['errormarking'] = 'No s\'ha pogut marcar el(s) missatge(s).';
 $messages['deletecontactconfirm'] = 'Esteu segurs de voler suprimir el(s) contacte(s) selecionat(s)?';
-$messages['deletegroupconfirm'] = 'De veres voleu eliminar el grup seleccionat?';
+$messages['deletegroupconfirm'] = 'Esteu segurs de voler suprimirr el grup seleccionat?';
 $messages['deletemessagesconfirm'] = 'Esteu segurs de voler suprimir el(s) missatge(s) selecionat(s)?';
 $messages['deletefolderconfirm'] = 'Esteu segurs de voler suprimir aquesta carpeta?';
 $messages['purgefolderconfirm'] = 'Esteu segurs de voler suprimir tots els missatges d\'aquesta carpeta?';
-$messages['groupdeleting'] = 'Eliminant el grup...';
-$messages['folderdeleting'] = 'Suprimint la carpeta...';
-$messages['foldermoving'] = 'Movent la carpeta...';
-$messages['foldersubscribing'] = 'Subscribint la carpeta...';
-$messages['folderunsubscribing'] = 'Desubscribint la carpeta...';
-$messages['formincomplete'] = 'El formulari no ha sigut emplenat totalment';
-$messages['noemailwarning'] = 'Introduïu una adreça d\'e-mail vàlida';
-$messages['nonamewarning'] = 'Introduïu un nom';
-$messages['nopagesizewarning'] = 'Introduïu una mida de pàgina';
-$messages['nosenderwarning'] = 'Si us plau, entreu l\'adreça d\'e-mail del remitent';
-$messages['norecipientwarning'] = 'Introduïu com a mínim un destinatari';
-$messages['nosubjectwarning'] = 'El camp \"Assumpte\" és buit. Voleu introduir-ne un ara?';
+$messages['contactdeleting'] = 'S\'està suprimint els contacte(s)...';
+$messages['groupdeleting'] = 'S\'està suprimint el grup...';
+$messages['folderdeleting'] = 'S\'està suprimint la carpeta...';
+$messages['foldermoving'] = 'S\'està movent la carpeta...';
+$messages['foldersubscribing'] = 'S\'està subscribint la carpeta...';
+$messages['folderunsubscribing'] = 'S\'està cancelant la subscripció de la carpeta...';
+$messages['formincomplete'] = 'El formulari no ha estat emplenat totalment.';
+$messages['noemailwarning'] = 'Si us plau, introduïu una adreça de correu electrònic vàlida.';
+$messages['nonamewarning'] = 'Si us plau, introduïu un nom.';
+$messages['nopagesizewarning'] = 'Si us plau, introduïu una mida de pàgina.';
+$messages['nosenderwarning'] = 'Si us plau, entreu l\'adreça de correu del remitent.';
+$messages['norecipientwarning'] = 'Si us plau, introduïu com a mínim un destinatari.';
+$messages['nosubjectwarning'] = 'El camp "Assumpte" és buit. Voleu introduir-ne un ara?';
 $messages['nobodywarning'] = 'Voleu enviar aquest missatge sense text?';
 $messages['notsentwarning'] = 'El missatge no s\'ha enviat. Voleu descartar el vostre missatge?';
-$messages['noldapserver'] = 'Seleccioneu un servidor LDAP per a cercar';
-$messages['nosearchname'] = 'Introduïu un nom de contacte o una adreça e-mail';
+$messages['noldapserver'] = 'Si us plau, seleccioneu un servidor LDAP per cercar.';
+$messages['nosearchname'] = 'Si us plau, introduïu un nom de contacte o una adreça de correu.';
 $messages['notuploadedwarning'] = 'Encara no s\'han pujat tots els adjunts. Si us plau, espereu o cancel·leu la pujada.';
-$messages['searchsuccessful'] = '$nr missatges trobats';
-$messages['contactsearchsuccessful'] = '$nr contactes trobats';
-$messages['searchnomatch'] = 'No s\'ha trobat cap coincidència';
-$messages['searching'] = 'Cercant...';
-$messages['checking'] = 'Comprovant...';
-$messages['nospellerrors'] = 'No s\'han trobat errors d\'ortografia';
-$messages['folderdeleted'] = 'Carpeta eliminada correctament';
-$messages['foldersubscribed'] = 'Carpeta subscrita correctament';
-$messages['folderunsubscribed'] = 'Carpeta desubscrita correctament';
-$messages['folderpurged'] = 'La carpeta ha estat buidada satisfactòriament';
-$messages['folderexpunged'] = 'La carpeta ha estat compactada satisfactòriament';
-$messages['deletedsuccessfully'] = 'Eliminat correctament';
-$messages['converting'] = 'Traient format del missatge...';
-$messages['messageopenerror'] = 'No s\'ha pogut carregar el missatge del servidor';
-$messages['fileuploaderror'] = 'La pujada del fitxer ha fallat';
-$messages['filesizeerror'] = 'El fitxer pujat excedeix la grandària màxima de $size';
-$messages['copysuccess'] = 'S\'han copiat $nr adreces correctament';
-$messages['copyerror'] = 'No s\'ha pogut copiar cap adreça';
-$messages['sourceisreadonly'] = 'Aquesta adreça és només de lectura';
-$messages['errorsavingcontact'] = 'No s\'ha pogut desar l\'adreça de contacte';
-$messages['movingmessage'] = 'Movent el missatge...';
-$messages['copyingmessage'] = 'Copiant missatge...';
-$messages['copyingcontact'] = 'Copiant contacte(s)...';
-$messages['deletingmessage'] = 'Esborrant missatge(s)...';
-$messages['markingmessage'] = 'Marcant missatge(s)...';
-$messages['addingmember'] = 'Afegint contacte(s) al grup...';
-$messages['removingmember'] = 'Eliminant contacte(s) del grup';
-$messages['receiptsent'] = 'Confirmació de lectura enviada satisfactòriament';
-$messages['errorsendingreceipt'] = 'No es pot enviar la confirmació';
+$messages['searchsuccessful'] = '$nr missatges trobats.';
+$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['nospellerrors'] = 'No s\'han trobat errors d\'ortografia.';
+$messages['folderdeleted'] = 'Carpeta suprimida correctament.';
+$messages['foldersubscribed'] = 'Carpeta subscrita correctament.';
+$messages['folderunsubscribed'] = 'Carpeta desubscrita correctament.';
+$messages['folderpurged'] = 'La carpeta ha estat buidada correctament.';
+$messages['folderexpunged'] = 'La carpeta ha estat compactada correctament.';
+$messages['deletedsuccessfully'] = 'Suprimit correctament.';
+$messages['converting'] = 'S\'està traient format del missatge...';
+$messages['messageopenerror'] = 'No s\'ha pogut carregar el missatge del servidor.';
+$messages['fileuploaderror'] = 'La pujada del fitxer ha fallat.';
+$messages['filesizeerror'] = 'El fitxer pujat excedeix la mida màxima de $size.';
+$messages['copysuccess'] = 'S\'han copiat $nr adreces correctament.';
+$messages['copyerror'] = 'No s\'ha pogut copiar cap adreça.';
+$messages['sourceisreadonly'] = 'Aquesta adreça és només de lectura.';
+$messages['errorsavingcontact'] = 'No s\'ha pogut desar l\'adreça de contacte.';
+$messages['movingmessage'] = 'S\'està movent el missatge...';
+$messages['copyingmessage'] = 'S\'està copiant missatge...';
+$messages['copyingcontact'] = 'S\'està copiant els contacte(s)...';
+$messages['deletingmessage'] = 'S\'està suprimint els missatge(s)...';
+$messages['markingmessage'] = 'S\'està marcant els missatge(s)...';
+$messages['addingmember'] = 'S\'està afegint els contacte(s) al grup...';
+$messages['removingmember'] = 'S\'està suprimint els contacte(s) del grup...';
+$messages['receiptsent'] = 'Confirmació de lectura enviada correctament.';
+$messages['errorsendingreceipt'] = 'No es pot enviar la confirmació.';
+$messages['deleteidentityconfirm'] = 'Esteu segurs de voler suprimir aquesta identitat?';
 $messages['nodeletelastidentity'] = 'No podeu suprimir aquesta identitat, és l\'última.';
-$messages['forbiddencharacter'] = 'El nom de carpeta conté un caràcter prohibit';
-$messages['selectimportfile'] = 'Si us plau, seleccioneu un fitxer per pujar';
-$messages['addresswriterror'] = 'La llibreta d\'adreces seleccionada no és modificable';
-$messages['contactaddedtogroup'] = 'S\'han afegit correctament els contactes a aquest grup';
-$messages['contactremovedfromgroup'] = 'S\'han suprimit correctament els contactes d\'aquest grup';
+$messages['forbiddencharacter'] = 'El nom de carpeta conté un caràcter no permès.';
+$messages['selectimportfile'] = 'Si us plau, seleccioneu un fitxer per pujar.';
+$messages['addresswriterror'] = 'La llibreta d\'adreces seleccionada no és modificable.';
+$messages['contactaddedtogroup'] = 'S\'han afegit correctament els contactes a aquest grup.';
+$messages['contactremovedfromgroup'] = 'S\'han suprimit correctament els contactes d\'aquest grup.';
 $messages['importwait'] = 'S\'està important, espereu si us plau...';
-$messages['importerror'] = 'La importació ha fallt! El fitxer pujat no és un fitxer vCard vàlid';
-$messages['importconfirm'] = '<b>S\'han importat $inserted contactes satisfactòriament, s\'han descartat $skipped entrades ja existents</b>:<p><em>$names</em></p>';
-$messages['importconfirmskipped'] = '<b>Saltades $skipped entrades existents</b>';
+$messages['importerror'] = 'La importació ha fallat! El fitxer pujat no és un fitxer vCard vàlid.';
+$messages['importconfirm'] = '<b>S\'han importat $inserted contactes correctament</b>';
+$messages['importconfirmskipped'] = '<b>S\'han descartat $skipped entrades ja existents</b>';
 $messages['opnotpermitted'] = 'Operació no permesa!';
-$messages['nofromaddress'] = 'Falta l\'adreça d\'e-mail a la identitat seleccionada';
+$messages['nofromaddress'] = 'Falta l\'adreça de correu a la identitat seleccionada.';
 $messages['editorwarning'] = 'Si canvieu a l\'editor de text pla 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.';
-$messages['smtpfromerror'] = 'Error SMTP ($code): No s\'ha pogut posar "$from" com a remitent ($msg)';
-$messages['smtptoerror'] = 'Error SMTP ($code): No s\'ha pogut posar "$to" com a destinatari ($msg)';
-$messages['smtprecipientserror'] = 'Error SMTP: No s\'ha pogut analitzar la lista de destinataris';
-$messages['smtpdsnerror'] = 'Error SMTP: No es suporten les notificacions d\'estat de lliuraments';
+$messages['smtpfromerror'] = 'Error SMTP ($code): No s\'ha pogut posar "$from" com a remitent ($msg).';
+$messages['smtptoerror'] = 'Error SMTP ($code): No s\'ha pogut posar "$to" com a destinatari ($msg).';
+$messages['smtprecipientserror'] = 'Error SMTP: No s\'ha pogut analitzar la lista de destinataris.';
 $messages['smtperror'] = 'Error SMTP: $msg';
-$messages['emailformaterror'] = 'Adreça d\'e-mail incorrecta: $email';
+$messages['emailformaterror'] = 'Adreça de correu no vàlida: $email';
 $messages['toomanyrecipients'] = 'Massa destinataris. Reduïu el nombre de destinataris a $max.';
 $messages['maxgroupmembersreached'] = 'El nombre de membres del grup excedeix el màxim de $max.';
-$messages['internalerror'] = 'Hi ha hagut un error intern. Si us plau torneu-ho a provar';
-$messages['contactdelerror'] = 'No s\'ha pogut esborrar el(s) contacte(s)';
-$messages['contactdeleted'] = 'Contacte(s) esborrat(s) satisfactòriament';
-$messages['contactrestoreerror'] = 'No s\'ha pogut restaurar el(s) contacte(s) eliminat(s).';
+$messages['internalerror'] = 'Hi ha hagut un error intern. Si us plau torneu-ho a provar.';
+$messages['contactdelerror'] = 'No s\'ha pogut suprimir el(s) contacte(s).';
+$messages['contactdeleted'] = 'Contacte(s) suprimits(s) correctament.';
+$messages['contactrestoreerror'] = 'No s\'ha pogut restaurar el(s) contacte(s) suprimits(s).';
 $messages['contactrestored'] = 'Contacte(s) restaurats correctament.';
-$messages['groupdeleted'] = 'Grup esborrat satisfactòriament';
-$messages['grouprenamed'] = 'Grup renombrat satisfactòriament';
-$messages['groupcreated'] = 'Grup creat satisfactòriament';
-$messages['savedsearchdeleted'] = 'S\'ha eliminat correctament la cerca desada.';
-$messages['savedsearchdeleteerror'] = 'No s\'ha pogut eliminar la cerca desada.';
+$messages['groupdeleted'] = 'Grup suprimit correctament.';
+$messages['grouprenamed'] = 'Grup reanomenat correctament.';
+$messages['groupcreated'] = 'Grup creat correctament.';
+$messages['savedsearchdeleted'] = 'S\'ha suprimit correctament la cerca desada.';
+$messages['savedsearchdeleteerror'] = 'No s\'ha pogut suprimit la cerca desada.';
 $messages['savedsearchcreated'] = 'S\'ha creat correctament la cerca desada.';
 $messages['savedsearchcreateerror'] = 'No s\'ha pogut crear la cerca desada.';
-$messages['messagedeleted'] = 'Missatge(s) esborrat(s) satisfactòriament';
-$messages['messagemoved'] = 'Missatge(s) mogut(s) satisfactòriament';
-$messages['messagecopied'] = 'Missatge(s) copiat(s) satisfactòriament';
-$messages['messagemarked'] = 'Missatge(s) marcat(s) satisfactòriament';
-$messages['autocompletechars'] = 'Introdueix al menys $min caracters per a l\'autocompleció';
-$messages['namecannotbeempty'] = 'El nom no pot estar buit';
-$messages['nametoolong'] = 'El nom és massa llarg';
-$messages['folderupdated'] = 'La carpeta ha estat actualitzada satisfactòriament';
-$messages['foldercreated'] = 'La carpeta ha estat creada satisfactòriament';
+$messages['messagedeleted'] = 'Missatge(s) suprimits(s) correctament.';
+$messages['messagemoved'] = 'Missatge(s) mogut(s) correctament.';
+$messages['messagecopied'] = 'Missatge(s) copiat(s) correctament.';
+$messages['messagemarked'] = 'Missatge(s) marcat(s) correctament.';
+$messages['autocompletechars'] = 'Introduïu com a mínim $min caràcters per l\'autocompleció.';
+$messages['autocompletemore'] = 'S\'han trobat més entrades coincidents. Si us plau, introduïu més caràcters.';
+$messages['namecannotbeempty'] = 'El nom no pot estar buit.';
+$messages['nametoolong'] = 'El nom és massa llarg.';
+$messages['folderupdated'] = 'La carpeta ha estat actualitzada correctament.';
+$messages['foldercreated'] = 'La carpeta ha estat creada correctament.';
 $messages['invalidimageformat'] = 'No és un format d\'imatge vàlid.';
 $messages['mispellingsfound'] = 'S\'han detectat errors d\'ortografia al misstage.';
-$messages['parentnotwritable'] = 'No ha etsat possible crear/moure la carpeta dins de la carpeta ascendent seleccionada. No hi ha permisos d\'escriptura.';
+$messages['parentnotwritable'] = 'No s\'ha pogut crear/moure la carpeta dins de la carpeta ascendent seleccionada. No hi ha permisos d\'escriptura.';
+$messages['messagetoobig'] = 'La part del missatge és massa gran per processar-la.';
 
-?>
index cf66e1bce1d7c980a438ee61fd9f8d38ecbb9f24..b921a7a99609a95a6d74b144508367b79b2e3a46 100644 (file)
@@ -1,24 +1,17 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/cs_CZ/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Martin Mrajca <martin@moonlake.cz>                            |
-|        joe <joe@humlak.cz>                                            |
-|        Jiri Kaderavek <jiri.kaderavek@webstep.net>                    |
-|        Milan Kozak <hodza@hodza.net>                                  |
-|        Ales Pospichal <ales@pospichalales.info>                       |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 5569 2011-12-07 14:47:32Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/cs_CZ/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: AIKEN <lukas@aiken.cz>                                        |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $labels = array();
@@ -29,28 +22,32 @@ $labels['server'] = 'Server';
 $labels['login'] = 'Přihlásit';
 $labels['logout'] = 'Odhlásit';
 $labels['mail'] = 'E-mail';
-$labels['settings'] = 'Osobní nastavení';
+$labels['settings'] = 'Nastavení';
 $labels['addressbook'] = 'Adresář';
 $labels['inbox'] = 'Příchozí pošta';
 $labels['drafts'] = 'Rozepsané';
 $labels['sent'] = 'Odeslané';
 $labels['trash'] = 'Koš';
-$labels['junk'] = 'Nevyžádaná pošta';
+$labels['junk'] = 'Spam';
 $labels['subject'] = 'Předmět';
 $labels['from'] = 'Odesílatel';
 $labels['to'] = 'Adresát';
 $labels['cc'] = 'Kopie';
 $labels['bcc'] = 'Skrytá kopie';
 $labels['replyto'] = 'Odpověď na';
+$labels['followupto'] = 'Následuje-po';
 $labels['date'] = 'Datum';
 $labels['size'] = 'Velikost';
 $labels['priority'] = 'Priorita';
 $labels['organization'] = 'Organizace';
 $labels['readstatus'] = 'Přečteno';
+$labels['listoptions'] = 'Seznam  možností ...';
 $labels['mailboxlist'] = 'Složky';
+$labels['folders'] = 'Složky';
 $labels['messagesfromto'] = 'Zprávy $from až $to z celkem $count';
 $labels['threadsfromto'] = 'Konverzace $from až $to z celkem $count';
 $labels['messagenrof'] = 'Zpráva $nr z $count';
+$labels['fromtoshort'] = '$from - $to z $count';
 $labels['copy'] = 'Kopírovat';
 $labels['move'] = 'Přesunout';
 $labels['moveto'] = 'přesunout do...';
@@ -76,7 +73,8 @@ $labels['jan'] = 'Led';
 $labels['feb'] = 'Úno';
 $labels['mar'] = 'Bře';
 $labels['apr'] = 'Dub';
-$labels['may'] = 'Kvě';
+$labels['may'] = 'Květen';
+$labels['longmay'] = 'Květen';
 $labels['jun'] = 'Čer';
 $labels['jul'] = 'Čec';
 $labels['aug'] = 'Srp';
@@ -88,7 +86,6 @@ $labels['longjan'] = 'Leden';
 $labels['longfeb'] = 'Únor';
 $labels['longmar'] = 'Březen';
 $labels['longapr'] = 'Duben';
-$labels['longmay'] = 'Květen';
 $labels['longjun'] = 'Červen';
 $labels['longjul'] = 'Červenec';
 $labels['longaug'] = 'Srpen';
@@ -97,12 +94,16 @@ $labels['longoct'] = 'Říjen';
 $labels['longnov'] = 'Listopad';
 $labels['longdec'] = 'Prosinec';
 $labels['today'] = 'Dnes';
+$labels['refresh'] = 'Obnovit';
 $labels['checkmail'] = 'Zkontrolovat nové zprávy';
+$labels['compose'] = 'Napsat zprávu';
 $labels['writenewmessage'] = 'Vytvořit novou zprávu';
+$labels['reply'] = 'Odpovědět';
 $labels['replytomessage'] = 'Odpovědět odesílateli';
 $labels['replytoallmessage'] = 'Odpovědět všem';
 $labels['replyall'] = 'Odpovědět všem';
 $labels['replylist'] = 'Odpovědět do e-mailové konference';
+$labels['forward'] = 'Přeposlat';
 $labels['forwardinline'] = 'Přeposlat v textu';
 $labels['forwardattachment'] = 'Přeposlat jako přílohu';
 $labels['forwardmessage'] = 'Předat zprávu';
@@ -115,15 +116,20 @@ $labels['nextmessage'] = 'Zobrazit další zprávu';
 $labels['lastmessage'] = 'Zobrazit poslední zprávu';
 $labels['backtolist'] = 'Zpět do seznamu zpráv';
 $labels['viewsource'] = 'Zobrazit zdroj';
+$labels['mark'] = 'Označit';
 $labels['markmessages'] = 'Označ zprávy';
 $labels['markread'] = 'Jako přečtené';
 $labels['markunread'] = 'Jako nepřečtené';
 $labels['markflagged'] = 'Jako označené';
 $labels['markunflagged'] = 'Jako neoznačené';
 $labels['moreactions'] = 'Další akce...';
+$labels['more'] = 'Více';
+$labels['back'] = 'Zpět';
+$labels['options'] = 'Možnosti';
 $labels['select'] = 'Vybrat';
 $labels['all'] = 'Vše';
 $labels['none'] = 'Nic';
+$labels['nonesort'] = 'Nic';
 $labels['currpage'] = 'Aktuální stránka';
 $labels['unread'] = 'Nepřečtené';
 $labels['flagged'] = 'Označené';
@@ -143,7 +149,6 @@ $labels['expand_only_unread'] = 'pouze s nepřečtenými zprávami';
 $labels['fromto'] = 'Odesílatel/Příjemce';
 $labels['flag'] = 'Vlajka';
 $labels['attachment'] = 'Příloha';
-$labels['nonesort'] = 'Nic';
 $labels['sentdate'] = 'Datum odeslání';
 $labels['arrival'] = 'Datum přijetí';
 $labels['asc'] = 'vzestupně';
@@ -164,7 +169,6 @@ $labels['searchmod'] = 'Parametry hledání';
 $labels['msgtext'] = 'Celá zpráva';
 $labels['openinextwin'] = 'Otevřít v novém okně';
 $labels['emlsave'] = 'Stáhnout (.eml)';
-$labels['compose'] = 'Napsat zprávu';
 $labels['editasnew'] = 'Upravit jako novou';
 $labels['savemessage'] = 'Uložit do rozepsaných';
 $labels['sendmessage'] = 'Odeslat zprávu nyní';
@@ -176,9 +180,11 @@ $labels['dsn'] = 'Stav doručení';
 $labels['mailreplyintro'] = 'Dne $date, $sender napsal:';
 $labels['originalmessage'] = 'Původní zpráva';
 $labels['editidents'] = 'Editovat identity';
+$labels['spellcheck'] = 'Pravopis';
 $labels['checkspelling'] = 'Zkontrolovat pravopis';
 $labels['resumeediting'] = 'Pokračovat v úpravách';
 $labels['revertto'] = 'Přejít na';
+$labels['attach'] = 'Přiložit';
 $labels['attachments'] = 'Přílohy';
 $labels['upload'] = 'Nahrát';
 $labels['uploadprogress'] = '$percent ($current z $total)';
@@ -192,15 +198,16 @@ $labels['highest'] = 'Nejvyšší';
 $labels['nosubject'] = '(bez predmetu)';
 $labels['showimages'] = 'Zobrazit obrázky';
 $labels['alwaysshow'] = 'Vždy ukazovat obrázky od $sender';
+$labels['isdraft'] = 'Toto je šablona zprávy.';
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = 'Prostý text';
 $labels['savesentmessagein'] = 'Ukládat odeslané zprávy v';
 $labels['dontsave'] = 'neukládat';
 $labels['maxuploadsize'] = 'Maximální povolená velikost souboru je $size';
-$labels['addcc'] = 'Přidat pole "Kopie"';
-$labels['addbcc'] = 'Přidat pole "Skrytá kopie"';
-$labels['addreplyto'] = 'Přidat pole "Odpověď"';
-$labels['addfollowupto'] = 'Přidat pole "Followup-To"';
+$labels['addcc'] = 'Přidat pole "Kopie';
+$labels['addbcc'] = 'Přidat pole "Skrytá kopie';
+$labels['addreplyto'] = 'Přidat pole "Odpověď';
+$labels['addfollowupto'] = 'Přidat pole "Followup-To';
 $labels['mdnrequest'] = 'Odesílatel této zprávy si přeje být upozorněn na to, že jste zprávu obdrželi. Chcete přijetí zprávy potvrdit?';
 $labels['receiptread'] = 'Potvrzení o přijetí zprávy';
 $labels['yourmessage'] = 'Toto je potvrzení o přijetí Vaší zprávy';
@@ -233,14 +240,16 @@ $labels['male'] = 'Muž';
 $labels['female'] = 'Žena';
 $labels['manager'] = 'Manažer';
 $labels['assistant'] = 'Asistent';
+$labels['typeassistant'] = 'Asistent';
 $labels['spouse'] = 'Manžel/ka';
 $labels['allfields'] = 'Všechny položky';
 $labels['search'] = 'Hledat';
 $labels['advsearch'] = 'Pokročilé vyhledávání';
-$labels['other'] = 'Jiné';
+$labels['advanced'] = 'Pokročilé';
+$labels['other'] = 'Ostatní';
+$labels['typeother'] = 'Ostatní';
 $labels['typehome'] = 'Domací';
 $labels['typework'] = 'Pracovní';
-$labels['typeother'] = 'Ostatní';
 $labels['typemobile'] = 'Mobil';
 $labels['typemain'] = 'Osobní';
 $labels['typehomefax'] = 'Domácí FAX';
@@ -248,7 +257,6 @@ $labels['typeworkfax'] = 'Pracovní FAX';
 $labels['typecar'] = 'Automobil';
 $labels['typepager'] = 'Pager';
 $labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Asistent';
 $labels['typehomepage'] = 'Domácí stránka';
 $labels['typeblog'] = 'Blog';
 $labels['typeprofile'] = 'Profil';
@@ -265,6 +273,7 @@ $labels['delete'] = 'Smazat';
 $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';
@@ -275,6 +284,7 @@ $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';
 $labels['previouspage'] = 'Předchozí';
 $labels['firstpage'] = 'Zobrazit první zprávy';
 $labels['nextpage'] = 'Další';
@@ -292,6 +302,7 @@ $labels['importreplace'] = 'Nahradit celý seznam kontaktů';
 $labels['importtext'] = 'Můžete nahrát kontakty z existujícího seznamu kontaktů. Podporujeme formát vCard.';
 $labels['done'] = 'Hotovo';
 $labels['settingsfor'] = 'Nastavení pro';
+$labels['about'] = 'O programu';
 $labels['preferences'] = 'Vlastnosti';
 $labels['userpreferences'] = 'Vlastnosti uživatele';
 $labels['editpreferences'] = 'Upravit vlastnosti uživatele';
@@ -333,6 +344,7 @@ $labels['readwhendeleted'] = 'Při odstranění označit zprávu jako přečteno
 $labels['flagfordeletion'] = 'Zprávu nemazat, pouze označit pro odstranění';
 $labels['skipdeleted'] = 'Nezobrazovat smazané zprávy';
 $labels['deletealways'] = 'Odstranit zprávy, pokud selže jejich přesun do koše';
+$labels['deletejunk'] = 'Přímo mazat zprávy ze složky Nevyžádaná pošta';
 $labels['showremoteimages'] = 'Zobrazovat obrázky uložené mimo mail';
 $labels['fromknownsenders'] = 'od známých uživatelů';
 $labels['always'] = 'vždy';
@@ -353,11 +365,12 @@ $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';
 $labels['displaynext'] = 'Zobrazit další zprávu po smazání/přesunu zprávy';
+$labels['defaultfont'] = 'Výchozí písmo zprávy HTML';
 $labels['mainoptions'] = 'Hlavní nastavení';
+$labels['browseroptions'] = 'Možnosti prohlížeče';
 $labels['section'] = 'Sekce';
 $labels['maintenance'] = 'Údržba';
 $labels['newmessage'] = 'Nová zpráva';
-$labels['listoptions'] = 'Nastavení stránkování';
 $labels['signatureoptions'] = 'Nastavení podpisu';
 $labels['whenreplying'] = 'Při odpovídání';
 $labels['replytopposting'] = 'začít novou zprávu nad původní';
@@ -376,14 +389,16 @@ $labels['reqmdn'] = 'Vždy požadovat doručenku';
 $labels['reqdsn'] = 'Vždy požádat o oznámení o stavu doručení';
 $labels['replysamefolder'] = 'Ukládat odpovědi ve stejné složce jako je zodpovězená zpráva';
 $labels['defaultaddressbook'] = 'Přidávat nové kontakty do seznamu kontaktů';
+$labels['autocompletesingle'] = 'Při doplňování adres přeskočit alternativní email.';
+$labels['listnamedisplay'] = 'Vypsat kontakty jako';
 $labels['spellcheckbeforesend'] = 'Před odesláním zkontrolovat pravopis';
 $labels['spellcheckoptions'] = 'Nastavení pravopisu';
 $labels['spellcheckignoresyms'] = 'Ignorovat slova obsahující symboly';
 $labels['spellcheckignorenums'] = 'Ignorovat slova obsahující čísla';
 $labels['spellcheckignorecaps'] = 'Ignorovat slova psaná velkými písmeny';
 $labels['addtodict'] = 'Přidat do slovníku';
+$labels['mailtoprotohandler'] = 'Zaregistrovat handler pro odkazy „mailto:“';
 $labels['folder'] = 'Složka';
-$labels['folders'] = 'Složky';
 $labels['foldername'] = 'Jméno složky';
 $labels['subscribed'] = 'Vybráno';
 $labels['messagecount'] = 'Počet zpráv';
@@ -406,6 +421,11 @@ $labels['sortby'] = 'Seřadit podle';
 $labels['sortasc'] = 'Seřadit vzestupně';
 $labels['sortdesc'] = 'Seřadit sestupně';
 $labels['undo'] = 'Vrátit zpět';
+$labels['plugin'] = 'Zásuvný modul';
+$labels['version'] = 'Verze';
+$labels['source'] = 'Zdroj';
+$labels['license'] = 'Licence';
+$labels['support'] = 'Podpora';
 $labels['B'] = 'B';
 $labels['KB'] = 'KB';
 $labels['MB'] = 'MB';
@@ -429,4 +449,3 @@ $labels['japanese'] = 'Japonština';
 $labels['korean'] = 'Korejština';
 $labels['chinese'] = 'Čínština';
 
-?>
index a47b8d8d50debec1b39f9f5bcd98f72e76e597d5..0335c62a1a64ba7c6b5a358bb0a8bcd7fbae5c6b 100644 (file)
@@ -1,33 +1,28 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/cs_CZ/messages.inc                                              |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Martin Mrajca <martin@moonlake.cz>                            |
-|        joe <joe@humlak.cz>                                            |
-|        Jiri Kaderavek <jiri.kaderavek@webstep.net>                    |
-|        Ales Pospichal <ales@pospichalales.info>                       |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 5569 2011-12-07 14:47:32Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/cs_CZ/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Tomáš Kyzlink                                               |
+ +-----------------------------------------------------------------------+
 */
 
 $messages = array();
+$messages['errortitle'] = 'Došlo k chybě!';
 $messages['loginfailed'] = 'Přihlášení selhalo';
 $messages['cookiesdisabled'] = 'Váš prohlížeč nepodporuje cookies, které jsou pro přihlášení nezbytné';
 $messages['sessionerror'] = 'Vaše přihlášení je neplatné nebo vypršelo';
-$messages['imaperror'] = 'Připojení na IMAP server selhalo';
+$messages['storageerror'] = 'Připojení na IMAP server selhalo';
 $messages['servererror'] = 'Chyba serveru!';
 $messages['servererrormsg'] = 'Chyba serveru: $msg';
 $messages['dberror'] = 'Chyba v databázi!';
+$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í.';
 $messages['invalidrequest'] = 'Nesprávný požadavek. Data nebyla uložena.';
@@ -112,6 +107,7 @@ $messages['addingmember'] = 'Přidávám kontakty do skupiny...';
 $messages['removingmember'] = 'Odstraňuji kontakty ze skupiny...';
 $messages['receiptsent'] = 'Potvrzení o přřijetí zprávy odesláno';
 $messages['errorsendingreceipt'] = 'Potvrzení o přijetí zprávy nebylo možné odeslat';
+$messages['deleteidentityconfirm'] = 'Opravdu chcete odstranit tuto identitu?';
 $messages['nodeletelastidentity'] = 'Alespoň jedna identita musí být ponechána. Identitu nelze odstranit.';
 $messages['forbiddencharacter'] = 'Název složky obsahuje zakázaný znak';
 $messages['selectimportfile'] = 'Prosím vyberte soubor k nahrání';
@@ -131,7 +127,6 @@ $messages['smtpautherror'] = 'Chyba SMTP ($code): Chyba přihlášení';
 $messages['smtpfromerror'] = 'Chyba SMTP ($code): Nelze nastavit odesílatele "$from" ($msg)';
 $messages['smtptoerror'] = 'Chyba SMTP ($code): Nelze přidat příjemce "$to" ($msg)';
 $messages['smtprecipientserror'] = 'Chyba SMTP: Nelze zpracovat seznam příjemců';
-$messages['smtpdsnerror'] = 'Chyba SMTP: Není podporováno oznamení o stavu doručení (DSN)';
 $messages['smtperror'] = 'Chyba SMTP: $msg';
 $messages['emailformaterror'] = 'Neplatná e-mailová adresa: $email';
 $messages['toomanyrecipients'] = 'Příliš mnoho příjemců. Změňte počet příjemců na $max.';
@@ -161,5 +156,5 @@ $messages['foldercreated'] = 'Složka byla úspěšně vytvořena';
 $messages['invalidimageformat'] = 'Formát obrázku není podporován';
 $messages['mispellingsfound'] = 'Ve zprávě byly zjištěny pravopisné chyby';
 $messages['parentnotwritable'] = 'Nelze vytvořit/přesunout složku do vybrané rodičovské složky. Nemáte práva.';
+$messages['messagetoobig'] = 'Část zprávy je příliš velká pro zpracování.';
 
-?>
index f3d521b9ba9e2d9aaa654055bb9b1e6b7204561a..3598ab0c62082cef30b75a07aa9f5379422575e4 100644 (file)
@@ -1,17 +1,17 @@
 <?php
 
 /*
-+-----------------------------------------------------------------------+
-| language/cy_GB/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2008-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Dafydd Tomos <l10n@da.fydd.org>                               |
-+-----------------------------------------------------------------------+
-
+ +-----------------------------------------------------------------------+
+ | localization/cy_GB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Dafydd Tomos <Unknown>                                        |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $labels = array();
@@ -41,10 +41,13 @@ $labels['size'] = 'Maint';
 $labels['priority'] = 'Blaenoriaeth';
 $labels['organization'] = 'Enw\'r Sefydliad';
 $labels['readstatus'] = 'Statws darllen';
+$labels['listoptions'] = 'Dewisiadau rhestr...';
 $labels['mailboxlist'] = 'Ffolderi';
+$labels['folders'] = 'Ffolderi';
 $labels['messagesfromto'] = 'Negeseuon $from i $to o $count';
 $labels['threadsfromto'] = 'Edefau $from i $to o $count';
 $labels['messagenrof'] = 'Neges $nr o $count';
+$labels['fromtoshort'] = '$from - $to o $count';
 $labels['copy'] = 'Copio';
 $labels['move'] = 'Symud';
 $labels['moveto'] = 'Symud i...';
@@ -71,6 +74,7 @@ $labels['feb'] = 'Chwe';
 $labels['mar'] = 'Maw';
 $labels['apr'] = 'Ebr';
 $labels['may'] = 'Mai';
+$labels['longmay'] = 'Mai';
 $labels['jun'] = 'Meh';
 $labels['jul'] = 'Gor';
 $labels['aug'] = 'Aws';
@@ -82,7 +86,6 @@ $labels['longjan'] = 'Ionawr';
 $labels['longfeb'] = 'Chwefror';
 $labels['longmar'] = 'Mawrth';
 $labels['longapr'] = 'Ebrill';
-$labels['longmay'] = 'Mai';
 $labels['longjun'] = 'Mehefin';
 $labels['longjul'] = 'Gorffennaf';
 $labels['longaug'] = 'Awst';
@@ -91,12 +94,16 @@ $labels['longoct'] = 'Hydref';
 $labels['longnov'] = 'Tachwedd';
 $labels['longdec'] = 'Rhagfyr';
 $labels['today'] = 'Heddiw';
+$labels['refresh'] = 'Adnewyddu';
 $labels['checkmail'] = 'Edrych am negeseuon newydd';
+$labels['compose'] = 'Ysgrifennu neges';
 $labels['writenewmessage'] = 'Creu neges newydd';
+$labels['reply'] = 'Ymateb';
 $labels['replytomessage'] = 'Ymateb i\'r anfonwr';
 $labels['replytoallmessage'] = 'Ymateb i\'r anfonwr a phob derbyniwr';
 $labels['replyall'] = 'Ymateb i bawb';
 $labels['replylist'] = 'Ymateb i\'r rhestr';
+$labels['forward'] = 'Anfon ymlaen';
 $labels['forwardinline'] = 'Anfon ymlaen o fewn y neges';
 $labels['forwardattachment'] = 'Anfon ymlaen fel atodiad';
 $labels['forwardmessage'] = 'Danfon y neges ymlaen';
@@ -109,15 +116,20 @@ $labels['nextmessage'] = 'Dangos y neges nesaf';
 $labels['lastmessage'] = 'Dangos y neges olaf';
 $labels['backtolist'] = 'Nôl i\'r rhestr o negeseuon';
 $labels['viewsource'] = 'Edrych ar y ffynhonnell';
+$labels['mark'] = 'Nodi';
 $labels['markmessages'] = 'Nodi\'r negeseuon';
 $labels['markread'] = 'Wedi eu darllen';
 $labels['markunread'] = 'Heb eu darllen';
 $labels['markflagged'] = 'Wedi eu fflagio';
 $labels['markunflagged'] = 'Heb eu fflagio';
 $labels['moreactions'] = 'Mwy o weithredoedd...';
+$labels['more'] = 'Mwy';
+$labels['back'] = 'Yn ôl';
+$labels['options'] = 'Dewisiadau';
 $labels['select'] = 'Dewis';
 $labels['all'] = 'Popeth';
-$labels['none'] = 'Dim byd';
+$labels['none'] = 'Dim';
+$labels['nonesort'] = 'Dim';
 $labels['currpage'] = 'Tudalen gyfredol';
 $labels['unread'] = 'Heb eu darllen';
 $labels['flagged'] = 'Nodwyd';
@@ -137,7 +149,6 @@ $labels['expand_only_unread'] = 'dim ond gyda negeseuon heb eu darllen';
 $labels['fromto'] = 'Danfonwr/Derbynnydd';
 $labels['flag'] = 'Fflag';
 $labels['attachment'] = 'Atodiad';
-$labels['nonesort'] = 'Dim';
 $labels['sentdate'] = 'Dyddiad danfon';
 $labels['arrival'] = 'Dyddiad derbyn';
 $labels['asc'] = 'esgynnol';
@@ -149,7 +160,7 @@ $labels['listmode'] = 'Golwg rhestr';
 $labels['folderactions'] = 'Gweithredoedd ffolder...';
 $labels['compact'] = 'Crynhoi';
 $labels['empty'] = 'Gwagio';
-$labels['quota'] = 'Defnydd ';
+$labels['quota'] = 'Defnydd';
 $labels['unknown'] = 'anhysbys';
 $labels['unlimited'] = 'diderfyn';
 $labels['quicksearch'] = 'Chwiliad cyflym';
@@ -158,7 +169,6 @@ $labels['searchmod'] = 'Addasyddion chwilio';
 $labels['msgtext'] = 'Y neges yn llawn';
 $labels['openinextwin'] = 'Agor mewn ffenest newydd';
 $labels['emlsave'] = 'Llwytho lawr (.eml)';
-$labels['compose'] = 'Ysgrifennu neges';
 $labels['editasnew'] = 'Golygu fel neges newydd';
 $labels['savemessage'] = 'Cadw\'r drafft hwn';
 $labels['sendmessage'] = 'Danfon nawr';
@@ -170,9 +180,11 @@ $labels['dsn'] = 'Hysbysiad statws danfon';
 $labels['mailreplyintro'] = 'Ar $date, ysgrifennodd $sender:';
 $labels['originalmessage'] = 'Neges Wreiddiol';
 $labels['editidents'] = 'Golygu personoliaethau';
+$labels['spellcheck'] = 'Sillafu';
 $labels['checkspelling'] = 'Gwirio sillafu';
 $labels['resumeediting'] = 'Ail-ddechrau golygu';
 $labels['revertto'] = 'Dychwelyd i';
+$labels['attach'] = 'Atodi';
 $labels['attachments'] = 'Atodiadau';
 $labels['upload'] = 'Llwytho fyny';
 $labels['uploadprogress'] = '$percent ($current o $total)';
@@ -228,14 +240,16 @@ $labels['male'] = 'gwryw';
 $labels['female'] = 'benyw';
 $labels['manager'] = 'Rheolwr';
 $labels['assistant'] = 'Cynorthwyydd';
+$labels['typeassistant'] = 'Cynorthwyydd';
 $labels['spouse'] = 'Cymar';
 $labels['allfields'] = 'Pob maes';
 $labels['search'] = 'Chwilio';
 $labels['advsearch'] = 'Chwilio Uwch';
+$labels['advanced'] = 'Uwch';
 $labels['other'] = 'Arall';
+$labels['typeother'] = 'Arall';
 $labels['typehome'] = 'Cartref';
 $labels['typework'] = 'Gwaith';
-$labels['typeother'] = 'Arall';
 $labels['typemobile'] = 'Symudol';
 $labels['typemain'] = 'Prif';
 $labels['typehomefax'] = 'Ffacs Adref';
@@ -243,7 +257,6 @@ $labels['typeworkfax'] = 'Ffacs Gwaith';
 $labels['typecar'] = 'Car';
 $labels['typepager'] = 'Peiriant Galw';
 $labels['typevideo'] = 'Fideo';
-$labels['typeassistant'] = 'Cynorthwyydd';
 $labels['typehomepage'] = 'Gwefan';
 $labels['typeblog'] = 'Blog';
 $labels['typeprofile'] = 'Proffil';
@@ -260,6 +273,7 @@ $labels['delete'] = 'Dileu';
 $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';
@@ -270,6 +284,7 @@ $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';
 $labels['previouspage'] = 'Dangos y set flaenorol';
 $labels['firstpage'] = 'Dangos y set gyntaf';
 $labels['nextpage'] = 'Dangos y set nesaf';
@@ -329,6 +344,7 @@ $labels['readwhendeleted'] = 'Nodi\'r neges fel darllenwyd wrth ddileu';
 $labels['flagfordeletion'] = 'Fflagio\'r neges i\'w ddileu yn hytrach na dileu yn syth';
 $labels['skipdeleted'] = 'Peidio dangos negesuon wedi ei dileu';
 $labels['deletealways'] = 'Pan fod symud negeseuon i\'r Sbwriel yn methu, dileu nhw';
+$labels['deletejunk'] = 'Dileu negeseuon yn uniongyrchol yn Sbwriel';
 $labels['showremoteimages'] = 'Dangos lluniau o wefannau allanol';
 $labels['fromknownsenders'] = 'o ddanfonwyr hysbys';
 $labels['always'] = 'bob amser';
@@ -349,11 +365,12 @@ $labels['advancedoptions'] = 'Dewisiadau uwch';
 $labels['focusonnewmessage'] = 'Ffocysu\'r porwr ar y neges newydd';
 $labels['checkallfolders'] = 'Chwilio pob ffolder am negeseuon newydd';
 $labels['displaynext'] = 'Ar ôl dileu/symud neges dangos y neges nesaf';
+$labels['defaultfont'] = 'Ffont arferol ar gyfer negeseuon HTML';
 $labels['mainoptions'] = 'Prif Ddewisiadau';
+$labels['browseroptions'] = 'Dewisiadau Porwr';
 $labels['section'] = 'Adran';
 $labels['maintenance'] = 'Gwaith cynnal a chadw';
 $labels['newmessage'] = 'Neges Newydd';
-$labels['listoptions'] = 'Rhestru Dewisiadau';
 $labels['signatureoptions'] = 'Dewisiadau Llofnod';
 $labels['whenreplying'] = 'Wrth ateb';
 $labels['replytopposting'] = 'dechrau\'r neges newydd uwchben y neges wreiddiol';
@@ -373,14 +390,15 @@ $labels['reqdsn'] = 'Gofyn am hysbysiad statws danfon bob amser';
 $labels['replysamefolder'] = 'Rhoi atebion yn yr un ffolder i\'r neges sy\'n cael ei ateb';
 $labels['defaultaddressbook'] = 'Ychwanegu cysylltiadau newydd i\'r llyfr cyfeiriad dewiswyd';
 $labels['autocompletesingle'] = 'Hepgor cyfeiriadau ebost amgen wrth awto-gwblhau';
+$labels['listnamedisplay'] = 'Rhestrwch cysylltiadau fel';
 $labels['spellcheckbeforesend'] = 'Gwirio sillafu cyn danfon neges';
 $labels['spellcheckoptions'] = 'Dewisiadau gwirio sillafu';
 $labels['spellcheckignoresyms'] = 'Anwybyddu geiriau gyda symbolau';
 $labels['spellcheckignorenums'] = 'Anwybyddu geiriau gyda rhifau';
 $labels['spellcheckignorecaps'] = 'Anwybyddu geiriau sy\'n briflythrennau yn gyfangwbl';
 $labels['addtodict'] = 'Ychwanegu i\'r geiriadur';
+$labels['mailtoprotohandler'] = 'Cofrestru trafodwr protocol ar gyfer dolenni mailto:';
 $labels['folder'] = 'Ffolder';
-$labels['folders'] = 'Ffolderi';
 $labels['foldername'] = 'Enw ffolder';
 $labels['subscribed'] = 'Tanysgrifwyd';
 $labels['messagecount'] = 'Negeseuon';
@@ -431,4 +449,3 @@ $labels['japanese'] = 'Japaneaidd';
 $labels['korean'] = 'Corëeg';
 $labels['chinese'] = 'Tsieineaidd';
 
-?>
index 51223011bacd2d460257dffb40d0246788a5dd54..72ef6a2cf29ba5fd1cf2ff1e88a69933fc9513f8 100644 (file)
@@ -1,27 +1,28 @@
 <?php
 
 /*
-+-----------------------------------------------------------------------+
-| language/cy_GB/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2008-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Dafydd Tomos <l10n@da.fydd.org>                               |
-+-----------------------------------------------------------------------+
-
+ +-----------------------------------------------------------------------+
+ | localization/cy_GB/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Dafydd Tomos                                                  |
+ +-----------------------------------------------------------------------+
 */
 
 $messages = array();
+$messages['errortitle'] = 'Fe gafwyd gwall!';
 $messages['loginfailed'] = 'Methwyd a\'ch mewngofnodi';
 $messages['cookiesdisabled'] = 'Nid yw eich porwr yn derbyn cwcis';
 $messages['sessionerror'] = 'Mae\'r sesiwn yn anghywir neu wedi dod i ben';
-$messages['imaperror'] = 'Methwyd cysylltu a\'r gweinydd IMAP';
+$messages['storageerror'] = 'Methwyd cysylltu a\'r gweinydd IMAP';
 $messages['servererror'] = 'Gwall Gweinydd!';
 $messages['servererrormsg'] = 'Gwall Gweinydd: $msg';
 $messages['dberror'] = 'Gwall Cronfa Ddata!';
+$messages['requesttimedout'] = 'Cais wedi dod i derfyn amser';
 $messages['errorreadonly'] = 'Methwyd gweithredu. Mae\'r ffolder yn darllen-yn-unig';
 $messages['errornoperm'] = 'Methwyd gweithredu. Gwrthodwyd caniatad';
 $messages['invalidrequest'] = 'Cais annilys! Ni chadwyd unrhyw wybodaeth.';
@@ -71,7 +72,7 @@ $messages['nonamewarning'] = 'Rhowch enw';
 $messages['nopagesizewarning'] = 'Rhowch maint tudalen';
 $messages['nosenderwarning'] = 'Rhowch gyfeiriad e-bost y danfonwr';
 $messages['norecipientwarning'] = 'Rhowch o leiaf un derbynnydd';
-$messages['nosubjectwarning'] = 'Mae\'r pennawd \"Pwnc\" yn wag. Hoffech chi roi un fewn nawr?';
+$messages['nosubjectwarning'] = 'Mae\'r pennawd "Pwnc" yn wag. Hoffech chi roi un fewn nawr?';
 $messages['nobodywarning'] = 'Danfon y neges hwn heb destun?';
 $messages['notsentwarning'] = 'Ni ddanfonwyd y neges. Hoffech chi gael gwared a\'r neges?';
 $messages['noldapserver'] = 'Dewiswch weinydd ldap i chwilio';
@@ -106,10 +107,11 @@ $messages['addingmember'] = 'Yn ychwanegu cyswllt/cysylltiadau i\'r grŵp...';
 $messages['removingmember'] = 'Yn dileu cyswllt/cysylltiadau o\'r grŵp...';
 $messages['receiptsent'] = 'Danfonwyd cadarnhad derbyn yn llwyddiannus';
 $messages['errorsendingreceipt'] = 'Methwyd danfon cadarnhad derbyn';
+$messages['deleteidentityconfirm'] = 'Ydych chi wir am ddileu\'r personoliaeth hwn?';
 $messages['nodeletelastidentity'] = 'Allwch chi ddim dileu\'r personoliaeth yma, hwn yw\'r un olaf.';
 $messages['forbiddencharacter'] = 'Mae enw\'r ffolder yn cynnwys llythyren annerbynniol';
 $messages['selectimportfile'] = 'Dewiswch ffeil i\'w lwytho fyny';
-$messages['addresswriterror'] = 'Nid yw\'n bosib ysgrifennu i\'r llyfr cyfeiriadau ';
+$messages['addresswriterror'] = 'Nid yw\'n bosib ysgrifennu i\'r llyfr cyfeiriadau';
 $messages['contactaddedtogroup'] = 'Ychwanegwyd y cysylltiadau i\'r grŵp yma yn llwyddiannus';
 $messages['contactremovedfromgroup'] = 'Dilëwyd y cysylltiadau o\'r grŵp yma yn llwyddiannus';
 $messages['importwait'] = 'Yn mewnforio, arhoswch os gwelwch yn dda...';
@@ -156,4 +158,3 @@ $messages['mispellingsfound'] = 'Gwelwyd camsillafu yn y neges.';
 $messages['parentnotwritable'] = 'Methwyd creu/symud ffolder i\'r ffolder rhiant ddewiswyd. Dim hawl mynediad.';
 $messages['messagetoobig'] = 'Mae darn y neges yn rhy fawr i\'w brosesu.';
 
-?>
index 5922e6d7036a31f171485198b5be054d955afb22..78fbc08912901c10972c85432fc1294f2b57c425 100644 (file)
@@ -1,75 +1,60 @@
 <?php
 
 /*
-+-----------------------------------------------------------------------+
-| language/da_DK/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Martin Moeller <martin@liga.dk>                               |
-|         Jesper R. Meyer <jrm@upthere.dk>                              |
-|         Søren Aggeboe <soren@aggeboe.dk>                              |
-|         John Loft Christiansen <john@nansensvej.dk>                   |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 5569 2011-12-07 14:47:32Z thomasb $
+ +-----------------------------------------------------------------------+
+ | localization/da_DK/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Johannes Hessellund <osos@openeyes.dk>                        |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $labels = array();
-
-// login page
 $labels['welcome'] = 'Velkommen til $product';
 $labels['username'] = 'Brugernavn';
 $labels['password'] = 'Adgangskode';
 $labels['server'] = 'Server';
 $labels['login'] = 'Log på';
-
-// Taskbar
 $labels['logout'] = 'Log af';
 $labels['mail'] = 'E-mail';
-$labels['settings'] = 'Personlige indstillinger';
+$labels['settings'] = 'Indstillinger';
 $labels['addressbook'] = 'Adressebog';
-
-// mailbox names
 $labels['inbox'] = 'Indbakke';
 $labels['drafts'] = 'Kladder';
 $labels['sent'] = 'Sendt post';
-$labels['trash'] = 'Skrald';
-$labels['junk'] = 'Ragelse';
-
-// message listing
+$labels['trash'] = 'Papirkurv';
+$labels['junk'] = 'Spam';
 $labels['subject'] = 'Emne';
 $labels['from'] = 'Afsender';
 $labels['to'] = 'Modtager';
-$labels['cc'] = 'Kopi til';
-$labels['bcc'] = 'BCC';
+$labels['cc'] = 'Cc';
+$labels['bcc'] = 'Bcc';
 $labels['replyto'] = 'Svar til';
-$labels['followupto'] = 'Følg-op til';
+$labels['followupto'] = 'Opfølgning til';
 $labels['date'] = 'Dato';
 $labels['size'] = 'Størrelse';
 $labels['priority'] = 'Prioritet';
-$labels['organization'] = 'Organisation';
+$labels['organization'] = 'Firma';
 $labels['readstatus'] = 'Læst status';
-
+$labels['listoptions'] = 'Listeindstillinger';
 $labels['mailboxlist'] = 'Mapper';
+$labels['folders'] = 'Mapper';
 $labels['messagesfromto'] = 'Besked $from til $to af $count';
 $labels['threadsfromto'] = 'Tråd $from til $to af $count';
 $labels['messagenrof'] = 'Besked $nr af $count';
-
-$labels['copy'] = 'Kopier';
+$labels['fromtoshort'] = '$from – $to af $count';
+$labels['copy'] = 'Kopiér';
 $labels['move'] = 'Flyt';
 $labels['moveto'] = 'Flyt til...';
 $labels['download'] = 'Download';
-
 $labels['filename'] = 'Filnavn';
 $labels['filesize'] = 'Filstørrelse';
-
-$labels['addtoaddressbook'] = 'Tilføj til adressebogen';
-
-// weekdays short
+$labels['addtoaddressbook'] = 'Tilføj til adressebog';
 $labels['sun'] = 'Søn';
 $labels['mon'] = 'Man';
 $labels['tue'] = 'Tir';
@@ -77,8 +62,6 @@ $labels['wed'] = 'Ons';
 $labels['thu'] = 'Tor';
 $labels['fri'] = 'Fre';
 $labels['sat'] = 'Lør';
-
-// weekdays long
 $labels['sunday'] = 'Søndag';
 $labels['monday'] = 'Mandag';
 $labels['tuesday'] = 'Tirsdag';
@@ -86,13 +69,12 @@ $labels['wednesday'] = 'Onsdag';
 $labels['thursday'] = 'Torsdag';
 $labels['friday'] = 'Fredag';
 $labels['saturday'] = 'Lørdag';
-
-// month short
 $labels['jan'] = 'Jan';
 $labels['feb'] = 'Feb';
 $labels['mar'] = 'Mar';
 $labels['apr'] = 'Apr';
 $labels['may'] = 'Maj';
+$labels['longmay'] = 'Maj';
 $labels['jun'] = 'Jun';
 $labels['jul'] = 'Jul';
 $labels['aug'] = 'Aug';
@@ -100,13 +82,10 @@ $labels['sep'] = 'Sep';
 $labels['oct'] = 'Okt';
 $labels['nov'] = 'Nov';
 $labels['dec'] = 'Dec';
-
-//months long
 $labels['longjan'] = 'Januar';
 $labels['longfeb'] = 'Februar';
 $labels['longmar'] = 'Marts';
 $labels['longapr'] = 'April';
-$labels['longmay'] = 'Maj';
 $labels['longjun'] = 'Juni';
 $labels['longjul'] = 'Juli';
 $labels['longaug'] = 'August';
@@ -114,17 +93,18 @@ $labels['longsep'] = 'September';
 $labels['longoct'] = 'Oktober';
 $labels['longnov'] = 'November';
 $labels['longdec'] = 'December';
-
 $labels['today'] = 'I dag';
-
-// toolbar buttons
+$labels['refresh'] = 'Opdatér';
 $labels['checkmail'] = 'Se efter nye beskeder';
+$labels['compose'] = 'Ny besked';
 $labels['writenewmessage'] = 'Skriv en ny besked';
+$labels['reply'] = 'Svar';
 $labels['replytomessage'] = 'Svar på denne besked';
 $labels['replytoallmessage'] = 'Svar til alle modtagere';
 $labels['replyall'] = 'Svar alle';
 $labels['replylist'] = 'Svar til listen';
-$labels['forwardinline']    = 'Videresend';
+$labels['forward'] = 'Videresend';
+$labels['forwardinline'] = 'Videresend';
 $labels['forwardattachment'] = 'Videresend som vedhæftning';
 $labels['forwardmessage'] = 'Videresend denne besked';
 $labels['deletemessage'] = 'Slet besked';
@@ -134,19 +114,22 @@ $labels['previousmessage'] = 'Vis forrige besked';
 $labels['firstmessage'] = 'Vis første besked';
 $labels['nextmessage'] = 'Vis næste besked';
 $labels['lastmessage'] = 'Vis sidste besked';
-$labels['backtolist'] = 'Tilbage til beskedlisten';
-$labels['viewsource'] = 'Vis rå besked';
+$labels['backtolist'] = 'Tilbage til oversigten';
+$labels['viewsource'] = 'Vis kilde';
+$labels['mark'] = 'Markér';
 $labels['markmessages'] = 'Markér beskeder';
 $labels['markread'] = 'Som læst';
 $labels['markunread'] = 'Som ulæst';
 $labels['markflagged'] = 'Som markeret';
 $labels['markunflagged'] = 'Som umarkeret';
 $labels['moreactions'] = 'Flere funktioner...';
-$labels['messageactions'] = 'Flere funktioner...';
-
+$labels['more'] = 'Mere';
+$labels['back'] = 'Tilbage';
+$labels['options'] = 'Indstillinger';
 $labels['select'] = 'Vælg';
 $labels['all'] = 'Alle';
 $labels['none'] = 'Ingen';
+$labels['nonesort'] = 'Ingen';
 $labels['currpage'] = 'Aktuel side';
 $labels['unread'] = 'Ulæste';
 $labels['flagged'] = 'Markeret';
@@ -160,114 +143,96 @@ $labels['expand-all'] = 'Udfold alle';
 $labels['expand-unread'] = 'Udfold ulæste';
 $labels['collapse-all'] = 'Fold alle';
 $labels['threaded'] = 'Trådet';
-
 $labels['autoexpand_threads'] = 'Udfold besked tråde';
 $labels['do_expand'] = 'alle tråde';
 $labels['expand_only_unread'] = 'kun dem med ulæste beskeder';
 $labels['fromto'] = 'Afsender/Modtager';
 $labels['flag'] = 'Flag';
 $labels['attachment'] = 'Vedhæftning';
-$labels['nonesort'] = 'Ingen';
 $labels['sentdate'] = 'Sendt dato';
 $labels['arrival'] = 'Modtaget dato';
-$labels['asc'] = 'opstigende';
+$labels['asc'] = 'stigende';
 $labels['desc'] = 'faldende';
 $labels['listcolumns'] = 'Vist kolonne';
-$labels['listsorting'] = 'Sorterings kolonne';
+$labels['listsorting'] = 'Sorteringskolonne';
 $labels['listorder'] = 'Sorter efter';
 $labels['listmode'] = 'Listevisningsmode';
-
-$labels['folderactions'] = 'Mappe handlinger...';
+$labels['folderactions'] = 'Mappehandlinger...';
 $labels['compact'] = 'Ryd op';
 $labels['empty'] = 'Tøm';
-
-$labels['quota'] = 'Disk forbrug';
+$labels['quota'] = 'Diskforbrug';
 $labels['unknown'] = 'ukendt';
 $labels['unlimited'] = 'ubegrænset';
-
-$labels['quicksearch'] = 'Hurtigsøgning';
+$labels['quicksearch'] = 'Hurtigsøg';
 $labels['resetsearch'] = 'Nulstil søgning';
-$labels['searchmod'] = 'Søgeparametere';
+$labels['searchmod'] = 'Søgeparametre';
 $labels['msgtext'] = 'Hele beskeden';
-
 $labels['openinextwin'] = 'Åbn i nyt vindue';
 $labels['emlsave'] = 'Download (.eml)';
-
-// message compose
-$labels['compose'] = 'Forfat en besked';
 $labels['editasnew'] = 'Redigér som ny';
-$labels['savemessage'] = 'Gem denne kladde';
-$labels['sendmessage'] = 'Send beskeden nu';
+$labels['savemessage'] = 'Gem som kladde';
+$labels['sendmessage'] = 'Send besked';
 $labels['addattachment'] = 'Vedhæft en fil';
 $labels['charset'] = 'Tegnsæt';
 $labels['editortype'] = 'Tekstbehandler';
-$labels['returnreceipt'] = 'Anmod om kvittering';
-$labels['dsn'] = 'Notifikation om leveringstatus';
-$labels['mailreplyintro'] = 'Den $date, $sender skrev:';
+$labels['returnreceipt'] = 'Anmod om kvittering ved læst';
+$labels['dsn'] = 'Anmod om leveringsstatus';
+$labels['mailreplyintro'] = '$sender skrev den $date:';
 $labels['originalmessage'] = 'Original besked';
-
 $labels['editidents'] = 'Ret identiteter';
+$labels['spellcheck'] = 'Stav';
 $labels['checkspelling'] = 'Stavekontrol';
 $labels['resumeediting'] = 'Genoptag redigering';
 $labels['revertto'] = 'Vend tilbage til';
-
+$labels['attach'] = 'Vedhæft';
 $labels['attachments'] = 'Vedhæftninger';
-$labels['upload'] = 'Upload';
+$labels['upload'] = 'Overfør';
 $labels['uploadprogress'] = '$percent ($current af $total)';
 $labels['close'] = 'Luk';
-$labels['messageoptions'] = 'Besked muligheder...';
-
+$labels['messageoptions'] = 'Beskedmuligheder...';
 $labels['low'] = 'Lav';
 $labels['lowest'] = 'Lavest';
 $labels['normal'] = 'Normal';
 $labels['high'] = 'Høj';
 $labels['highest'] = 'Højest';
-
 $labels['nosubject'] = '(intet emne)';
 $labels['showimages'] = 'Vis billeder';
 $labels['alwaysshow'] = 'Vis altid billeder fra $sender';
-$labels['isdraft']    = 'Dette er en kladde.';
-
+$labels['isdraft'] = 'Dette er en kladde.';
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = 'Almindelig tekst';
 $labels['savesentmessagein'] = 'Gem afsendt besked i';
 $labels['dontsave'] = 'gem ikke';
 $labels['maxuploadsize'] = 'Maksimale tilladte filstørrelse er $size';
-
 $labels['addcc'] = 'Tilføj Cc';
 $labels['addbcc'] = 'Tilføj Bcc';
 $labels['addreplyto'] = 'Tilføj Svar-Til adresse';
 $labels['addfollowupto'] = 'Tilføj følg-op adresse';
-
-// mdn
 $labels['mdnrequest'] = 'Afsenderen af denne besked har bedt om at modtage en bekræftelse når du læser beskeden. Vil du sende kvittering for læsning?';
 $labels['receiptread'] = 'Send kvittering for læsning';
 $labels['yourmessage'] = 'Dette er en kvittering for at din besked er blevet vist';
 $labels['receiptnote'] = 'Bemærk: Denne kvittering bekræfter udelukkende at beskeden blev vist på modtagerens computer. Der er ingen garanti for at modtageren har læst eller forstået beskedens indhold.';
-
-// address book
 $labels['name'] = 'Vist navn';
 $labels['firstname'] = 'Fornavn';
 $labels['surname'] = 'Efternavn';
 $labels['middlename'] = 'Mellemnavn';
-$labels['nameprefix']   = 'Præfiks';
-$labels['namesuffix']   = 'Suffiks';
+$labels['nameprefix'] = 'Præfiks';
+$labels['namesuffix'] = 'Suffiks';
 $labels['nickname'] = 'Alias/Kaldenavn';
-$labels['jobtitle'] = 'Job titel';
-$labels['organization'] = 'Firma';
+$labels['jobtitle'] = 'Jobtitel';
 $labels['department'] = 'Afdeling';
 $labels['gender'] = 'Køn';
 $labels['maidenname'] = 'Pigenavn';
 $labels['email'] = 'E-mail';
 $labels['phone'] = 'Telefon';
 $labels['address'] = 'Adresse';
-$labels['street'] = 'Vejnavn';
+$labels['street'] = 'Vej';
 $labels['locality'] = 'By';
 $labels['zipcode'] = 'Postnr.';
 $labels['region'] = 'Område/region';
 $labels['country'] = 'Land';
 $labels['birthday'] = 'Fødselsdag';
-$labels['anniversary'] = 'Jubilæum';
+$labels['anniversary'] = 'Årsdag';
 $labels['website'] = 'Hjemmeside';
 $labels['instantmessenger'] = 'IM';
 $labels['notes'] = 'Noter';
@@ -275,65 +240,60 @@ $labels['male'] = 'Mand';
 $labels['female'] = 'Kvinde';
 $labels['manager'] = 'Manager';
 $labels['assistant'] = 'Assistent';
-$labels['spouse'] = 'Ægtefælle';
+$labels['typeassistant'] = 'Assistent';
+$labels['spouse'] = 'Ægtefælle/partner';
 $labels['allfields'] = 'Alle felter';
 $labels['search'] = 'Søg';
 $labels['advsearch'] = 'Avanceret søg';
+$labels['advanced'] = 'Avanceret';
 $labels['other'] = 'Andet';
-
-$labels['typehome']   = 'Hjem';
-$labels['typework']   = 'Arbejde';
-$labels['typeother']  = 'Andet';
-$labels['typemobile']  = 'Mobil';
-$labels['typemain']  = 'Fastnet';
-$labels['typehomefax']  = 'Hjemme fax';
-$labels['typeworkfax']  = 'Arbejde Fax';
-$labels['typecar']  = 'Bil';
-$labels['typepager']  = 'Personsøger';
-$labels['typevideo']  = 'Video';
-$labels['typeassistant']  = 'Assistent';
-$labels['typehomepage']  = 'Hjemmeside';
+$labels['typeother'] = 'Andet';
+$labels['typehome'] = 'Hjem';
+$labels['typework'] = 'Arbejde';
+$labels['typemobile'] = 'Mobil';
+$labels['typemain'] = 'Hovednr.';
+$labels['typehomefax'] = 'Hjemme - fax';
+$labels['typeworkfax'] = 'Arbejde - fax';
+$labels['typecar'] = 'Bil';
+$labels['typepager'] = 'Personsøger';
+$labels['typevideo'] = 'Video';
+$labels['typehomepage'] = 'Hjemmeside';
 $labels['typeblog'] = 'Blog';
 $labels['typeprofile'] = 'Profil';
-
 $labels['addfield'] = 'Tilføj felt...';
-$labels['addcontact'] = 'Tilføj en ny kontakt';
+$labels['addcontact'] = 'Tilføj ny kontakt';
 $labels['editcontact'] = 'Redigér kontakt';
 $labels['contacts'] = 'Kontakter';
-$labels['contactproperties'] = 'Kontakt egenskaber';
+$labels['contactproperties'] = 'Kontaktegenskaber';
 $labels['personalinfo'] = 'Personlig information';
-
 $labels['edit'] = 'Redigér';
-$labels['cancel'] = 'Afbryd';
+$labels['cancel'] = 'Annullér';
 $labels['save'] = 'Gem';
 $labels['delete'] = 'Slet';
 $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 brev til';
+$labels['composeto'] = 'Skriv besked til';
 $labels['contactsfromto'] = 'Kontakter $from til $to af $count';
-$labels['print'] = 'Print';
-$labels['export'] = 'Eksport';
+$labels['print'] = 'Udskriv';
+$labels['export'] = 'Eksportér';
 $labels['exportvcards'] = 'Eksportér kontakter i vCard format';
 $labels['newcontactgroup'] = 'Opret ny kontaktgruppe';
-$labels['groupactions'] = 'Funktioner for kontaktgrupper...';
-$labels['groupdelete']    = 'Slet gruppe';
-
-$labels['previouspage'] = 'Vis forrige sæt';
-$labels['firstpage'] = 'Vis første sæt';
-$labels['nextpage'] = 'Vis næste sæt';
-$labels['lastpage'] = 'Vis sidste sæt';
-
+$labels['grouprename'] = 'Omdøb gruppe';
+$labels['groupdelete'] = 'Slet gruppe';
+$labels['groupremoveselected'] = 'Fjern markerede kontakter fra gruppen';
+$labels['previouspage'] = 'Vis den forrige side';
+$labels['firstpage'] = 'Vis første side';
+$labels['nextpage'] = 'Vis næste side';
+$labels['lastpage'] = 'Vis sidste side';
 $labels['group'] = 'Gruppe';
 $labels['groups'] = 'Grupper';
-$labels['personaladrbook'] = 'Personlige Adresser';
-
+$labels['personaladrbook'] = 'Personlige adresser';
 $labels['searchsave'] = 'Gem søgning';
 $labels['searchdelete'] = 'Slet søgning';
-
 $labels['import'] = 'Importér';
 $labels['importcontacts'] = 'Importér kontakter';
 $labels['importfromfile'] = 'Importér fra fil:';
@@ -341,46 +301,41 @@ $labels['importtarget'] = 'Tilføj nye kontakter til adressebogen:';
 $labels['importreplace'] = 'Overskriv hele adressebogen';
 $labels['importtext'] = 'Du kan uploade kontakter fra en eksisterende adressebog.Vi understøtter i øjeblikket import af adresser i vCard formatet.';
 $labels['done'] = 'Færdig';
-
-// settings
 $labels['settingsfor'] = 'Indstillinger for';
 $labels['about'] = 'Om';
-$labels['preferences'] = 'Præferencer';
-$labels['userpreferences'] = 'Brugerpræferencer';
-$labels['editpreferences'] = 'Redigér brugerpræferencer';
-
+$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'] = 'Foretræk HTML';
+$labels['preferhtml'] = 'Vis HTML';
 $labels['defaultcharset'] = 'Standard tegnkodning';
 $labels['htmlmessage'] = 'HTML-besked';
-$labels['dateformat'] = 'Dato format';
-$labels['timeformat'] = 'Tid format';
+$labels['dateformat'] = 'Datoformat';
+$labels['timeformat'] = 'Tidsformat';
 $labels['prettydate'] = 'Pæn datovisning';
 $labels['setdefault'] = 'Sæt standard';
 $labels['autodetect'] = 'Automatisk';
 $labels['language'] = 'Sprog';
 $labels['timezone'] = 'Tidszone';
-$labels['pagesize'] = 'Rækker per side';
+$labels['pagesize'] = 'Rækker pr. side';
 $labels['signature'] = 'Signatur';
 $labels['dstactive'] = 'Sommertid';
 $labels['htmleditor'] = 'Skriv HTML-besked';
 $labels['htmlonreply'] = 'kun når jeg besvarer HTML-beskeder';
 $labels['htmlsignature'] = 'HTML-signatur';
 $labels['previewpane'] = 'Forhåndsvisning';
-$labels['skin'] = 'Interface skin';
-$labels['logoutclear'] = 'Tøm Skrald når jeg logger af';
+$labels['skin'] = 'Brugerflade';
+$labels['logoutclear'] = 'Tøm Papirkurv når jeg logger af';
 $labels['logoutcompact'] = 'Komprimér Indbakke når jeg logger af';
-$labels['uisettings'] = 'Brugerinterface';
+$labels['uisettings'] = 'Brugerflade';
 $labels['serversettings'] = 'Serverindstillinger';
-$labels['mailboxview'] = 'Mailbox visning';
+$labels['mailboxview'] = 'Mailboxvisning';
 $labels['mdnrequests'] = 'Kvitteringer';
-$labels['askuser'] = 'spørg brugeren';
+$labels['askuser'] = 'spørg mig';
 $labels['autosend'] = 'send automatisk';
 $labels['autosendknown'] = 'send automatisk til mine kontakter, ellers spørg mig';
 $labels['autosendknownignore'] = 'send automatisk til mine kontakter, ellers ignorér';
@@ -389,13 +344,14 @@ $labels['readwhendeleted'] = 'Markér beskeden som læst ved sletning';
 $labels['flagfordeletion'] = 'Markér beskeden til sletning istedet for at slette';
 $labels['skipdeleted'] = 'Skjul slettede beskeder';
 $labels['deletealways'] = 'Slet besked, hvis det mislykkes at flytte den til skrald';
+$labels['deletejunk'] = 'Slet beskeder i Junk uden at flytte i skraldespand';
 $labels['showremoteimages'] = 'Vis eksterne indlejrede billeder';
 $labels['fromknownsenders'] = 'fra kendte afsendere';
 $labels['always'] = 'altid';
 $labels['showinlineimages'] = 'Vis vedhæftede billeder under beskeden';
 $labels['autosavedraft'] = 'Gem kladde automatisk';
 $labels['everynminutes'] = 'hver $n. minut';
-$labels['keepalive'] = 'Tjek for nye beskeder på';
+$labels['keepalive'] = 'Tjek for nye beskeder';
 $labels['never'] = 'aldrig';
 $labels['immediately'] = 'straks';
 $labels['messagesdisplaying'] = 'Viser beskeder';
@@ -405,43 +361,44 @@ $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['advancedoptions'] = 'Advancerede muligheder';
+$labels['advancedoptions'] = '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';
+$labels['defaultfont'] = 'Standard font ved HTML besked';
 $labels['mainoptions'] = 'Generelle indstillinger';
+$labels['browseroptions'] = 'Browserindstillinger';
 $labels['section'] = 'Sektion';
 $labels['maintenance'] = 'Vedligeholdelse';
 $labels['newmessage'] = 'Ny besked';
-$labels['listoptions'] = 'Liste-indstillinger';
 $labels['signatureoptions'] = 'Signatur-indstillinger';
 $labels['whenreplying'] = 'Når der svares';
-$labels['replytopposting'] = 'start svar over originalen';
-$labels['replybottomposting'] = 'start svar under originalen';
+$labels['replytopposting'] = 'begynd svar over originalen';
+$labels['replybottomposting'] = 'begynd svar under originalen';
 $labels['replyremovesignature'] = 'Fjern original signatur fra besked, når der svares';
 $labels['autoaddsignature'] = 'Indsæt automatisk signatur';
 $labels['newmessageonly'] = 'kun på nye beskeder';
-$labels['replyandforwardonly'] = 'kun på svar og videresende beskeder';
-$labels['replysignaturepos'] = 'Når beskeder besvares eller videresendes: placér signatur';
+$labels['replyandforwardonly'] = 'kun på svar og videresendelse af beskeder';
+$labels['replysignaturepos'] = 'Når beskeder besvares eller videresendes; indsæt signatur';
 $labels['belowquote'] = 'under det citerede';
 $labels['abovequote'] = 'over det citerede';
 $labels['insertsignature'] = 'Indsæt signatur';
 $labels['previewpanemarkread'] = 'Markér forhåndsviste beskeder som læst';
 $labels['afternseconds'] = 'efter $n sekunder';
-$labels['reqmdn'] = 'Bed altid om at få besked om læsning';
-$labels['reqdsn'] = 'Bed altid om at få en status på levering';
+$labels['reqmdn'] = 'Anmod altid om kvittering for læsning';
+$labels['reqdsn'] = 'Anmod altid om at leveringsstatus';
 $labels['replysamefolder'] = 'Placer svar til en besked i samme mappe som beskeden der besvares';
 $labels['defaultaddressbook'] = 'Tilføj nye kontakter til den valgte adressebog';
 $labels['autocompletesingle'] = 'Undgå alternative emailadresser under autofuldførelse';
+$labels['listnamedisplay'] = 'Vis kontakter som';
 $labels['spellcheckbeforesend'] = 'Tjek stavning inden beskeden sendes';
-$labels['spellcheckoptions'] = 'Stavning muligheder';
+$labels['spellcheckoptions'] = 'Stavekontrolindstillinger';
 $labels['spellcheckignoresyms'] = 'Ignorer ord med symboler';
 $labels['spellcheckignorenums'] = 'Ignorer ord med tal';
 $labels['spellcheckignorecaps'] = 'Ignorer ord hvor alle bogstaver er versaler';
 $labels['addtodict'] = 'Tilføj til ordbog';
-
+$labels['mailtoprotohandler'] = 'Registrer håndtering af \'mailto:\' links';
 $labels['folder'] = 'Mappe';
-$labels['folders'] = 'Mapper';
 $labels['foldername'] = 'Mappenavn';
 $labels['subscribed'] = 'Abonneret';
 $labels['messagecount'] = 'Beskeder';
@@ -450,39 +407,33 @@ $labels['createfolder'] = 'Opret ny mappe';
 $labels['managefolders'] = 'Administrér mapper';
 $labels['specialfolders'] = 'Specielle mapper';
 $labels['properties'] = 'Egenskaber';
-$labels['folderproperties'] = 'Mappe egenskaber';
+$labels['folderproperties'] = 'Mappeegenskaber';
 $labels['parentfolder'] = 'Mappe et niveau op';
 $labels['location'] = 'Placering';
 $labels['info'] = 'Information';
-$labels['getfoldersize'] = 'Klik for at hente mappestørrelse';
+$labels['getfoldersize'] = 'Klik for at tjekke mappestørrelse';
 $labels['changesubscription'] = 'Klik for at ændre abonnement';
-$labels['foldertype'] = 'Mappe Type';
-$labels['personalfolder']  = 'Privat mappe';
-$labels['otherfolder']  = 'Anden brugers mappe';
-$labels['sharedfolder']  = 'Offentlig mappe';
-
+$labels['foldertype'] = 'Mappetype';
+$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';
 $labels['undo'] = 'Fortryd';
-
 $labels['plugin'] = 'Plugin';
 $labels['version'] = 'Version';
 $labels['source'] = 'Kilde';
 $labels['license'] = 'Licens';
 $labels['support'] = 'Få support';
-
-// units
 $labels['B'] = 'B';
-$labels['KB'] = 'KB';
+$labels['KB'] = 'kB';
 $labels['MB'] = 'MB';
 $labels['GB'] = 'GB';
-
-// character sets
 $labels['unicode'] = 'Unicode';
 $labels['english'] = 'Engelsk';
-$labels['westerneuropean'] = 'Vestlig europæisk';
-$labels['easterneuropean'] = 'Østlig europæisk';
+$labels['westerneuropean'] = 'Vesteuropæisk';
+$labels['easterneuropean'] = 'Østeuropæisk';
 $labels['southeasterneuropean'] = 'Syd-østlig europæisk';
 $labels['baltic'] = 'Baltisk';
 $labels['cyrillic'] = 'Kyrillisk';
@@ -498,4 +449,3 @@ $labels['japanese'] = 'Japansk';
 $labels['korean'] = 'Koreansk';
 $labels['chinese'] = 'Kinesisk';
 
-?>
index 0eb72dd0962f5d3ecb22e294858ef1716cdfa83e..bb9038fe6610768167c3faf4fe9c1d3db61ee682 100644 (file)
@@ -1,67 +1,64 @@
 <?php
 
 /*
-+-----------------------------------------------------------------------+
-| language/da_DK/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author : Martin Moeller <martin@liga.dk>                              |
-|         Jesper R. Meyer <jesper@upthere.dk>                           |
-|         Søren Aggeboe <soren@aggeboe.dk>                              |
-|         John Loft Christiansen <john@nansensvej.dk>                   |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 5569 2011-12-07 14:47:32Z thomasb $
+ +-----------------------------------------------------------------------+
+ | localization/da_DK/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Johannes Hessellund <osos@openeyes.dk>                        |
+ +-----------------------------------------------------------------------+
 */
 
 $messages = array();
-$messages['loginfailed'] = 'Det lykkedes ikke at logge på';
-$messages['cookiesdisabled'] = 'Din browser accepterer ikke cookies';
-$messages['sessionerror'] = 'Din session er ugyldig eller udløbet';
-$messages['imaperror'] = 'Forbindelse til IMAP serveren fejlede';
+$messages['errortitle'] = 'Der opstod en fejl!';
+$messages['loginfailed'] = 'Det lykkedes ikke at logge på.';
+$messages['cookiesdisabled'] = 'Din browser accepterer ikke cookies.';
+$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['dberror'] = 'Database fejl!';
-$messages['errorreadonly'] = 'Kunne ikke udføre den ønskede handling. Mappen er skrivebeskyttet';
-$messages['errornoperm'] = 'Kunne ikke udføre den ønskede handling. Adgang nægtet';
+$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.';
 $messages['invalidrequest'] = 'Ugyldig forespørgsel! Ingen data blev gemt.';
-$messages['nomessagesfound'] = 'Der blev ikke fundet nogen beskeder i denne postkasse';
+$messages['nomessagesfound'] = 'Der blev ikke fundet nogen beskeder i denne postkasse.';
 $messages['loggedout'] = 'Du er nu logget af webmail. Farvel så længe!';
-$messages['mailboxempty'] = 'Postkassen er tom!';
+$messages['mailboxempty'] = 'Postkassen er tom.';
 $messages['loading'] = 'Indlæser...';
 $messages['uploading'] = 'Uploader fil...';
 $messages['uploadingmany'] = 'Uploader filer...';
 $messages['loadingdata'] = 'Indlæser data...';
 $messages['checkingmail'] = 'Tjekker for nye beskeder...';
 $messages['sendingmessage'] = 'Sender besked...';
-$messages['messagesent'] = 'Beskeden blev sendt korrekt';
+$messages['messagesent'] = 'Beskeden blev afsendt succesfuldt.';
 $messages['savingmessage'] = 'Gemmer besked...';
-$messages['messagesaved'] = 'Beskeden er gemt i kladdemappen';
-$messages['successfullysaved'] = 'Det lykkedes at gemme';
-$messages['addedsuccessfully'] = 'Kontakten blev tilføjet adressebogen';
-$messages['contactexists'] = 'Der er allerede en kontakt med denne e-mail adresse';
+$messages['messagesaved'] = 'Beskeden er gemt i kladdemappen.';
+$messages['successfullysaved'] = 'Gemt succesfuldt';
+$messages['addedsuccessfully'] = 'Kontakten blev tilføjet adressebogen.';
+$messages['contactexists'] = 'Der er allerede en kontakt med denne e-mailadresse.';
 $messages['contactnameexists'] = 'En kontakt med samme navn eksisterer allerede.';
-$messages['blockedimages'] = 'For at beskytte dit privatliv er billeder fra internetservere blokeret i denne besked.';
+$messages['blockedimages'] = 'For at beskytte dit privatliv er billeder fra eksterne internetservere blokeret.';
 $messages['encryptedmessage'] = 'Beskeden er krypteret og kan ikke vises. Beklager!';
-$messages['nocontactsfound'] = 'Ingen kontakter blev fundet';
-$messages['contactnotfound'] = 'Den søgte kontakt blev ikke fundet';
-$messages['contactsearchonly'] = 'Indtast ord for at finde kontakten';
-$messages['sendingfailed'] = 'Beskeden kunne ikke sendes';
-$messages['senttooquickly'] = 'Vent venligst $sec sekunder før du sender denne besked';
-$messages['errorsavingsent'] = 'Der opstod en fejl da den sendte besked blev gemt';
-$messages['errorsaving'] = 'Der opstod en fejl ved lagring af data';
-$messages['errormoving'] = 'Beskeden kunne ikke flyttes';
-$messages['errorcopying'] = 'Beskeden kunne ikke kopieres';
-$messages['errordeleting'] = 'Beskeden kunne ikke slettes';
-$messages['errormarking'] = 'Beskeden kunne ikke markeres';
+$messages['nocontactsfound'] = 'Ingen kontakter blev fundet.';
+$messages['contactnotfound'] = 'Den søgte kontakt blev ikke fundet.';
+$messages['contactsearchonly'] = 'Indtast søgeord for at finde kontakter.';
+$messages['sendingfailed'] = 'Beskeden kunne ikke sendes.';
+$messages['senttooquickly'] = 'Vent venligst $sec sekunder før du sender denne besked.';
+$messages['errorsavingsent'] = 'Der opstod en fejl da den sendte besked blev gemt.';
+$messages['errorsaving'] = 'Der opstod en fejl under gemning.';
+$messages['errormoving'] = 'Beskeden kunne ikke flyttes.';
+$messages['errorcopying'] = 'Beskeden kunne ikke kopieres.';
+$messages['errordeleting'] = 'Beskeden kunne ikke slettes.';
+$messages['errormarking'] = 'Beskeden kunne ikke markeres.';
 $messages['deletecontactconfirm'] = 'Vil du virkelig slette den/de valgte kontakt(er)?';
-$messages['deletegroupconfirm']  = 'Vil du virkelig slette den/de valgte gruppe(r)?';
+$messages['deletegroupconfirm'] = 'Vil du virkelig slette den/de valgte gruppe(r)?';
 $messages['deletemessagesconfirm'] = 'Vil du virkelig slette den/de valgte besked(er)?';
-$messages['deletefolderconfirm'] = 'Vil du virkelig slette den valgte mappe';
+$messages['deletefolderconfirm'] = 'Vil du virkelig slette den valgte mappe?';
 $messages['purgefolderconfirm'] = 'Vil du virkelig slette alle beskeder i denne mappe?';
 $messages['contactdeleting'] = 'Sletter kontakt(er)...';
 $messages['groupdeleting'] = 'Sletter gruppe...';
@@ -69,95 +66,95 @@ $messages['folderdeleting'] = 'Sletter mappen...';
 $messages['foldermoving'] = 'Flytter mappen...';
 $messages['foldersubscribing'] = 'Abonnere på mappen...';
 $messages['folderunsubscribing'] = 'Fjerner abonnement på mappen...';
-$messages['formincomplete'] = 'Formularen var ikke fuldstændig fyldt ud';
-$messages['noemailwarning'] = 'Indtast venligst en gyldig e-mail adresse';
-$messages['nonamewarning'] = 'Angiv venligst et navn';
-$messages['nopagesizewarning'] = 'Angiv sidestørrelsen';
-$messages['nosenderwarning'] = 'Indtast venligst afsenders email-adresse';
-$messages['norecipientwarning'] = 'Indtast mindst én modtager';
+$messages['formincomplete'] = 'Formularen var ikke fuldstændig fyldt ud.';
+$messages['noemailwarning'] = 'Indtast venligst en gyldig e-mailadresse.';
+$messages['nonamewarning'] = 'Angiv venligst et navn.';
+$messages['nopagesizewarning'] = 'Angiv sidestørrelsen.';
+$messages['nosenderwarning'] = 'Indtast venligst afsenders e-mailadresse.';
+$messages['norecipientwarning'] = 'Indtast mindst én modtager.';
 $messages['nosubjectwarning'] = '\'Emne\'-feltet er tomt. Kunne du tænke dig at skrive et nu?';
 $messages['nobodywarning'] = 'Send denne besked uden tekst?';
-$messages['notsentwarning'] = 'Beskeden er ikke blevet sendt. Vil du kassere din besked?';
-$messages['noldapserver'] = 'Vælg venligst hvilken LDAP-server der skal søges i';
-$messages['nocontactsreturned'] = 'Ingen kontakter blev fundet';
-$messages['nosearchname'] = 'Indtast venligst en kontakts navn eller e-mail adresse';
+$messages['notsentwarning'] = 'Beskeden er ikke sendt. Vil du kassere din besked?';
+$messages['noldapserver'] = 'Vælg venligst hvilken LDAP-server der skal søges i.';
+$messages['nosearchname'] = 'Indtast venligst en kontakts navn eller e-mailadresse.';
 $messages['notuploadedwarning'] = 'Ikke alle vedhæftede filer er blevet uploadet endnu. Vent venligst eller afbryd upload.';
 $messages['searchsuccessful'] = 'Fandt $nr beskeder';
-$messages['searchnomatch'] = 'Søgningen fandt ingen beskeder';
+$messages['contactsearchsuccessful'] = 'Fandt $nr kontakter.';
+$messages['searchnomatch'] = 'Søgningen fandt ingen beskeder.';
 $messages['searching'] = 'Søger...';
 $messages['checking'] = 'Tjekker...';
-$messages['nospellerrors'] = 'Ingen stavefejl fundet';
-$messages['folderdeleted'] = 'Mappen er slettet';
-$messages['foldersubscribed'] = 'Mappe abonnement oprettet';
-$messages['folderunsubscribed'] = 'Mappe abonnement opsagt';
-$messages['folderpurged'] = 'Mappen er tømt';
-$messages['folderexpunged'] = 'Mappen er blevet optimeret';
-$messages['deletedsuccessfully'] = 'Slettet';
+$messages['nospellerrors'] = 'Ingen stavefejl fundet.';
+$messages['folderdeleted'] = 'Mappen er slettet.';
+$messages['foldersubscribed'] = 'Mappe-abonnement oprettet.';
+$messages['folderunsubscribed'] = 'Mappe-abonnement opsagt.';
+$messages['folderpurged'] = 'Mappen er tømt.';
+$messages['folderexpunged'] = 'Mappen er blevet optimeret.';
+$messages['deletedsuccessfully'] = 'Slettet.';
 $messages['converting'] = 'Fjerner formatering fra besked...';
-$messages['messageopenerror'] = 'Beskeden kunne ikke hentes fra serveren';
-$messages['fileuploaderror'] = 'Den indsatte fil fejlede';
-$messages['filesizeerror'] = 'Den indsatte fil fylder mere end det maksimale på $size';
-$messages['copysuccess'] = 'Det lykkedes at kopiere $nr adresser';
-$messages['copyerror'] = 'Kunne ikke kopiere adresserne';
-$messages['sourceisreadonly'] = 'Denne adressekilde er kun til læsning';
-$messages['errorsavingcontact'] = 'Kunne ikke gemme kontakt adressen';
-$messages['movingmessage'] = 'Flytter besked...';
-$messages['copyingmessage'] = 'Kopierer besked...';
+$messages['messageopenerror'] = 'Beskeden kunne ikke hentes fra serveren.';
+$messages['fileuploaderror'] = 'Upload mislykkedes.';
+$messages['filesizeerror'] = 'Den indsatte fil fylder mere end det maksimale på $size.';
+$messages['copysuccess'] = 'Det lykkedes at kopiere $nr adresser.';
+$messages['copyerror'] = 'Kunne ikke kopiere adresserne.';
+$messages['sourceisreadonly'] = 'Denne adressekilde er kun til læsning.';
+$messages['errorsavingcontact'] = 'Kunne ikke gemme kontaktadressen.';
+$messages['movingmessage'] = 'Flytter besked(er)...';
+$messages['copyingmessage'] = 'Kopierer besked(er)...';
 $messages['copyingcontact'] = 'Kopierer kontakt(er)...';
 $messages['deletingmessage'] = 'Sletter besked(er)...';
 $messages['markingmessage'] = 'Markerer besked(er)...';
 $messages['addingmember'] = 'Tilføjer kontakt(er) til gruppen...';
 $messages['removingmember'] = 'Fjerner kontakt(er) fra gruppen...';
-$messages['receiptsent'] = 'Kvittering for læsning er sendt';
-$messages['errorsendingreceipt'] = 'Kvitteringen kunne ikke sendes';
+$messages['receiptsent'] = 'Kvittering for læsning er sendt.';
+$messages['errorsendingreceipt'] = 'Kvitteringen kunne ikke sendes.';
+$messages['deleteidentityconfirm'] = 'Vil du slette denne identitet?';
 $messages['nodeletelastidentity'] = 'Du kan ikke slette denne identitet, da det er den eneste der er tilbage.';
-$messages['forbiddencharacter'] = 'Mappe-navnet indeholder ugyldige tegn';
-$messages['selectimportfile'] = 'Vælg venligst den fil der skal uploades';
-$messages['addresswriterror'] = 'Der kan ikke skrives i den valgte adressebog';
+$messages['forbiddencharacter'] = 'Mappe-navnet indeholder ugyldige tegn.';
+$messages['selectimportfile'] = 'Vælg venligst den fil der skal overføres.';
+$messages['addresswriterror'] = 'Der kan ikke skrives i den valgte adressebog.';
 $messages['contactaddedtogroup'] = 'Succesfuldt tilføjet kontakten til denne gruppe';
-$messages['contactremovedfromgroup'] = 'Succesfuldt fjernet kontakten fra denne gruppe';
+$messages['contactremovedfromgroup'] = 'Kontakten fjernet fra denne gruppe';
 $messages['importwait'] = 'Importerer, vent venligst...';
 $messages['importerror'] = 'Fejl i importen! Den uploadede fil er ikke en gyldig vCard fil.';
-$messages['importconfirm'] = '<b>Importerede $inserted kontakter, sprang over $skipped allerede eksisterende kontakter</b>:<p><em>$names</em></p>';
-$messages['importconfirmskipped'] = '<b>Skipped $skipped existing entries</b>';
+$messages['importconfirm'] = '<b>Importerede $inserted kontakter</b>';
+$messages['importconfirmskipped'] = '<b>Sprang over $skipped eksisterende kontakter</b>';
 $messages['opnotpermitted'] = 'Handlingen er ikke tilladt!';
-$messages['nofromaddress'] = 'Der mangler en email-adresse i den valgte identitet';
+$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['httpreceivedencrypterror'] = 'Der er opstået en fatal konfigurationsfejl. Kontakt venligst din system-administrator med det samme.<b>Din besked kunne ikke afsendes.</b>';
+$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';
 $messages['smtpfromerror'] = 'SMTP fejl ($code): Kunne ikke afsende som "$from" ($msg)';
 $messages['smtptoerror'] = 'SMTP fejl ($code): Kunne ikke tilføje modtageren "$to" ($msg)';
-$messages['smtprecipientserror'] = 'SMTP fejl: kan ikke fortolke listen af modtagere';
+$messages['smtprecipientserror'] = 'SMTP fejl: Kan ikke fortolke listen af modtagere.';
 $messages['smtperror'] = 'SMTP fejl: $msg';
-$messages['emailformaterror'] = 'Ugyldig email-adresse: $email';
-$messages['toomanyrecipients'] = 'For mange modtagere. Reducer antallet af modtagere til $max';
-$messages['maxgroupmembersreached'] = 'Antallet af gruppemedlemmer overstiger maksimum på $max';
-$messages['internalerror'] = 'Der opstod en intern fejl - prøv venligst igen';
-$messages['contactdelerror'] = 'Kunne ikke slette kontakt(er)';
-$messages['contactdeleted'] = 'Kontakt(er) slettet';
+$messages['emailformaterror'] = 'Ugyldig e-mailadresse: $email';
+$messages['toomanyrecipients'] = 'For mange modtagere. Reducer antallet af modtagere til $max.';
+$messages['maxgroupmembersreached'] = 'Antallet af gruppemedlemmer overstiger maksimum på $max.';
+$messages['internalerror'] = 'Der opstod en intern fejl - prøv venligst igen.';
+$messages['contactdelerror'] = 'Kunne ikke slette kontakt(er).';
+$messages['contactdeleted'] = 'Kontakt(er) slettet.';
 $messages['contactrestoreerror'] = 'Kunne ikke gendanne slettede kontakt(er).';
 $messages['contactrestored'] = 'Kontakt(er) gendannet.';
-$messages['groupdeleted'] = 'Gruppen er slettet';
-$messages['grouprenamed'] = 'Gruppen er omdøbt';
-$messages['groupcreated'] = 'Gruppen er oprettet';
+$messages['groupdeleted'] = 'Gruppen er slettet.';
+$messages['grouprenamed'] = 'Gruppen er omdøbt.';
+$messages['groupcreated'] = 'Gruppen er oprettet.';
 $messages['savedsearchdeleted'] = 'Gemt søgning slettet.';
 $messages['savedsearchdeleteerror'] = 'Kunne ikke slette Gemt søgning.';
 $messages['savedsearchcreated'] = 'Gemt søgning oprettet.';
 $messages['savedsearchcreateerror'] = 'Kunne ikke oprette Gemt søgning.';
-$messages['messagedeleted'] = 'Besked(er) slettet';
-$messages['messagemoved'] = 'Besked(er) flyttet';
-$messages['messagecopied'] = 'Besked(er) kopieret';
-$messages['messagemarked'] = 'Besked(er) markeret';
-$messages['autocompletechars'] = 'Du skal min. indtaste $min for at benytte autoopslag';
-$messages['autocompletemore'] = 'Flere emner fundet. Task flere bogstaver.';
-$messages['namecannotbeempty'] = 'Navnet kan ikke været tomt';
-$messages['nametoolong'] = 'Navnet er for langt';
-$messages['folderupdated'] = 'Mappen er opdateret';
-$messages['foldercreated'] = 'Mappen er oprettet';
-$messages['invalidimageformat'] = 'Ikke et gyldigt billedformat';
+$messages['messagedeleted'] = 'Besked(er) slettet.';
+$messages['messagemoved'] = 'Besked(er) flyttet.';
+$messages['messagecopied'] = 'Besked(er) kopieret.';
+$messages['messagemarked'] = 'Besked(er) markeret.';
+$messages['autocompletechars'] = 'Du skal indtaste mindst $min tegn for at benytte autoopslag.';
+$messages['autocompletemore'] = 'Flere emner fundet. Indtast flere tegn.';
+$messages['namecannotbeempty'] = 'Navn må ikke være tomt.';
+$messages['nametoolong'] = 'Navnet er for langt.';
+$messages['folderupdated'] = 'Mappen er opdateret.';
+$messages['foldercreated'] = 'Mappen er oprettet.';
+$messages['invalidimageformat'] = 'Ikke et gyldigt billedformat.';
 $messages['mispellingsfound'] = 'Der er fundet stavefejl i beskeden.';
 $messages['parentnotwritable'] = 'Kan ikke oprette/flytte mappe ind i valgt mappe. Ingen adgangsrettigheder.';
-$messages['messagetoobig'] = 'Besked delen er for stor til at behandle.';
+$messages['messagetoobig'] = 'Denne del af beskeden er for stor til at blive behandlet.';
 
-?>
index b66a0737a75b64661e57fabcb5695b54c49e6124..4164e0333d7c7a3473307fea98e8ec5c8d04ef9e 100644 (file)
@@ -9,9 +9,8 @@
  | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Thomas <Unknown>                                              |
+ | Author: Thomas                                                        |
  +-----------------------------------------------------------------------+
- @version $Id: labels.inc 5873 2012-02-11 13:50:04Z thomasb $
 */
 
 $labels = array();
@@ -41,6 +40,7 @@ $labels['size'] = 'Grösse';
 $labels['priority'] = 'Priorität';
 $labels['organization'] = 'Organisation';
 $labels['readstatus'] = 'Gelesen/Ungelesen';
+$labels['listoptions'] = 'Listenoptionen...';
 $labels['mailboxlist'] = 'Ordner';
 $labels['folders'] = 'Ordner';
 $labels['messagesfromto'] = 'Nachrichten $from bis $to von $count';
@@ -119,8 +119,8 @@ $labels['mark'] = 'Markieren';
 $labels['markmessages'] = 'Nachrichten markieren';
 $labels['markread'] = 'Als gelesen';
 $labels['markunread'] = 'Als ungelesen';
-$labels['markflagged'] = 'Stern hinzufügen';
-$labels['markunflagged'] = 'Stern entfernen';
+$labels['markflagged'] = 'Markierung hinzufügen';
+$labels['markunflagged'] = 'Markierung entfernen';
 $labels['moreactions'] = 'Mehr ...';
 $labels['more'] = 'Mehr';
 $labels['back'] = 'Zurück';
@@ -272,6 +272,7 @@ $labels['delete'] = 'Löschen';
 $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';
@@ -282,6 +283,7 @@ $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';
 $labels['previouspage'] = 'Eine Seite zurück';
 $labels['firstpage'] = 'Erste Seite';
 $labels['nextpage'] = 'Nächste Seite';
@@ -341,6 +343,7 @@ $labels['readwhendeleted'] = 'Beim Löschen als gelesen markieren';
 $labels['flagfordeletion'] = 'Als gelöscht markieren anstatt in den Papierkorb verschieben';
 $labels['skipdeleted'] = 'Zeige keine gelöschten Nachrichten an';
 $labels['deletealways'] = 'Löschen wenn Verschieben in den Papierkorb nicht möglich';
+$labels['deletejunk'] = 'Nachrichten in Spam direkt löschen';
 $labels['showremoteimages'] = 'Eingebettete Bilder vom Internet laden';
 $labels['fromknownsenders'] = 'bei bekannten Absendern';
 $labels['always'] = 'immer';
@@ -363,6 +366,7 @@ $labels['checkallfolders'] = 'Alle Ordner auf neue Nachrichten prüfen';
 $labels['displaynext'] = 'Zeige nächste Nachricht nach verschieben/löschen';
 $labels['defaultfont'] = 'Standardschrift in HTML-Nachrichten';
 $labels['mainoptions'] = 'Allgemein';
+$labels['browseroptions'] = 'Browsereinstellungen';
 $labels['section'] = 'Bereich';
 $labels['maintenance'] = 'Wartung';
 $labels['newmessage'] = 'Neue Nachrichten';
@@ -392,6 +396,7 @@ $labels['spellcheckignoresyms'] = 'Wörter mit Symbolen überspringen';
 $labels['spellcheckignorenums'] = 'Wörter mit Ziffern überspringen';
 $labels['spellcheckignorecaps'] = 'Wörter überspringen, die nur aus Grossbuchstaben bestehen';
 $labels['addtodict'] = 'Zum Wörterbuch hinzufügen';
+$labels['mailtoprotohandler'] = 'Als Empfänger für mailto: Links einrichten';
 $labels['folder'] = 'Ordner';
 $labels['foldername'] = 'Ordnername';
 $labels['subscribed'] = 'Abonniert';
index 730a952f376a7c917662808b47a24305c6c6b505..a34358034659875f3f1df35d0a7e0221bc9a85da 100644 (file)
  +-----------------------------------------------------------------------+
  | Author: Thomas <Unknown>                                              |
  +-----------------------------------------------------------------------+
- @version $Id: messages.inc 5741 2012-01-08 16:20:12Z thomasb $
+ @version $Id$
 */
 
 $messages = array();
+$messages['errortitle'] = 'Fehlermeldung';
 $messages['loginfailed'] = 'Login fehlgeschlagen';
 $messages['cookiesdisabled'] = 'Ihr Browser akzeptiert keine Cookies';
 $messages['sessionerror'] = 'Ihre Session ist ungültig oder abgelaufen';
-$messages['imaperror'] = 'Keine Verbindung zum IMAP Server';
+$messages['storageerror'] = 'Keine Verbindung zum IMAP Server';
 $messages['servererror'] = 'Serverfehler!';
 $messages['servererrormsg'] = 'Serverfehler: $msg';
 $messages['dberror'] = 'Datenbankfehler!';
+$messages['requesttimedout'] = 'Zeitlimit überschritten';
 $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.';
 $messages['invalidrequest'] = 'Ungültige Anfrage! Es wurden keine Daten gespeichert.';
@@ -76,6 +78,7 @@ $messages['nobodywarning'] = 'Wollen Sie diese Nachricht ohne Inhalt senden?';
 $messages['notsentwarning'] = 'Ihre Nachricht wurde nicht gesendet. Wollen Sie die Nachricht verwerfen?';
 $messages['noldapserver'] = 'Bitte wählen Sie einen LDAP-Server aus';
 $messages['nosearchname'] = 'Bitte geben Sie einen Namen oder eine E-Mail-Adresse ein.';
+$messages['notuploadedwarning'] = 'Es wurden noch nicht alle Dateien hochgeladen. Bitte warten oder Upload abbrechen.';
 $messages['searchsuccessful'] = '$nr Nachrichten gefunden.';
 $messages['contactsearchsuccessful'] = '$nr Kontakte gefunden.';
 $messages['searchnomatch'] = 'Die Suche lieferte keine Treffer.';
@@ -112,6 +115,7 @@ $messages['selectimportfile'] = 'Bitte wählen Sie eine Datei zum Importieren au
 $messages['addresswriterror'] = 'Das gewählte Adressbuch kann nicht verändert werden.';
 $messages['contactaddedtogroup'] = 'Kontakte wurden dieser Gruppe hinzugefügt.';
 $messages['contactremovedfromgroup'] = 'Kontakte wurden aus dieser Gruppe entfernt.';
+$messages['nogroupassignmentschanged'] = 'Es wurde keine Gruppenzuweisung verändert.';
 $messages['importwait'] = 'Daten werden importiert, bitte warten...';
 $messages['importerror'] = 'Import fehlgeschlagen! Die hochgeladene Datei ist nicht im vCard-Format.';
 $messages['importconfirm'] = '<b>Es wurden $inserted Adressen erfolgreich importiert</b>';
@@ -135,8 +139,8 @@ $messages['contactdeleted'] = 'Kontakt(e) erfolgreich gelöscht.';
 $messages['contactrestoreerror'] = 'Die gelöschten Kontakte konnten nicht wiederhergestellt werden.';
 $messages['contactrestored'] = 'Kontakte erfolgreich wiederhergestellt.';
 $messages['groupdeleted'] = 'Gruppe erfolgreich gelöscht.';
-$messages['grouprenamed'] = 'Gruppe erlogreich umbenannt.';
-$messages['groupcreated'] = 'Gruppe erlogreich erstellt.';
+$messages['grouprenamed'] = 'Gruppe erfolgreich umbenannt.';
+$messages['groupcreated'] = 'Gruppe erfolgreich erstellt.';
 $messages['savedsearchdeleted'] = 'Suche erfolgreich gelöscht.';
 $messages['savedsearchdeleteerror'] = 'Suche konnte nicht gelöscht werden.';
 $messages['savedsearchcreated'] = 'Suche erfolgreich gespeichert.';
index e0bfc136cce88e7036b84032c3a2f43e41da6e58..71d5b80f2934af25fa8edd83e80d0e7fb35baef7 100644 (file)
@@ -1,22 +1,16 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/de_DE/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author:      Thomas Bruederli <roundcube@gmail.com>                   |
-| Author: Marcel Schlesinger <info@marcel-schlesinger.de>               |
-| Author: Roland Liebl <myroundcube@mail4us.net>                        |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 5873 2012-02-11 13:50:04Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/de_DE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
@@ -46,14 +40,17 @@ $labels['size'] = 'Größe';
 $labels['priority'] = 'Priorität';
 $labels['organization'] = 'Organisation';
 $labels['readstatus'] = 'Gelesen/Ungelesen';
+$labels['listoptions'] = 'Listenoptionen...';
 $labels['mailboxlist'] = 'Ordner';
+$labels['folders'] = 'Ordner';
 $labels['messagesfromto'] = 'Nachrichten $from bis $to von $count';
 $labels['threadsfromto'] = 'Konversationen $from bis $to von $count';
 $labels['messagenrof'] = 'Nachricht $nr von $count';
+$labels['fromtoshort'] = '$from – $to von $count';
 $labels['copy'] = 'Kopieren';
 $labels['move'] = 'Verschieben';
 $labels['moveto'] = 'Verschieben nach...';
-$labels['download'] = 'Download';
+$labels['download'] = 'Herunterladen';
 $labels['filename'] = 'Dateiname';
 $labels['filesize'] = 'Dateigröße';
 $labels['addtoaddressbook'] = 'Ins Adressbuch übernehmen';
@@ -76,6 +73,7 @@ $labels['feb'] = 'Feb';
 $labels['mar'] = 'Mär';
 $labels['apr'] = 'Apr';
 $labels['may'] = 'Mai';
+$labels['longmay'] = 'Mai';
 $labels['jun'] = 'Jun';
 $labels['jul'] = 'Jul';
 $labels['aug'] = 'Aug';
@@ -87,7 +85,6 @@ $labels['longjan'] = 'Januar';
 $labels['longfeb'] = 'Februar';
 $labels['longmar'] = 'März';
 $labels['longapr'] = 'April';
-$labels['longmay'] = 'Mai';
 $labels['longjun'] = 'Juni';
 $labels['longjul'] = 'Juli';
 $labels['longaug'] = 'August';
@@ -96,12 +93,16 @@ $labels['longoct'] = 'Oktober';
 $labels['longnov'] = 'November';
 $labels['longdec'] = 'Dezember';
 $labels['today'] = 'Heute';
+$labels['refresh'] = 'Aktualisieren';
 $labels['checkmail'] = 'Auf neue Nachrichten überprüfen';
+$labels['compose'] = 'Schreiben';
 $labels['writenewmessage'] = 'Neue Nachricht schreiben';
+$labels['reply'] = 'Antworten';
 $labels['replytomessage'] = 'Antwort verfassen';
-$labels['replytoallmessage'] = 'Antwort an Absender und alle Empfänger verfassen';
+$labels['replytoallmessage'] = 'Antwort an Mailingliste oder an Absender und alle Empfänger verfassen';
 $labels['replyall'] = 'Allen antworten';
 $labels['replylist'] = 'Liste antworten';
+$labels['forward'] = 'Weiterleiten';
 $labels['forwardinline'] = 'innerhalb der Nachricht';
 $labels['forwardattachment'] = 'als Dateianhang';
 $labels['forwardmessage'] = 'Nachricht weiterleiten';
@@ -114,15 +115,20 @@ $labels['nextmessage'] = 'Nächste Nachricht anzeigen';
 $labels['lastmessage'] = 'Die letzte Nachricht anzeigen';
 $labels['backtolist'] = 'Zurück zur Liste';
 $labels['viewsource'] = 'Quelltext anzeigen';
+$labels['mark'] = 'Markieren';
 $labels['markmessages'] = 'Nachrichten markieren';
 $labels['markread'] = 'Als gelesen';
 $labels['markunread'] = 'Als ungelesen';
-$labels['markflagged'] = 'Stern hinzufügen';
-$labels['markunflagged'] = 'Stern entfernen';
-$labels['moreactions'] = 'Mehr ...';
-$labels['select'] = 'Auswählen';
+$labels['markflagged'] = 'Markierung hinzufügen';
+$labels['markunflagged'] = 'Markierung entfernen';
+$labels['moreactions'] = 'Mehr...';
+$labels['more'] = 'Mehr';
+$labels['back'] = 'Zurück';
+$labels['options'] = 'Optionen';
+$labels['select'] = 'Auswahl';
 $labels['all'] = 'Alle';
 $labels['none'] = 'Keine';
+$labels['nonesort'] = 'Keine';
 $labels['currpage'] = 'Aktuelle Seite';
 $labels['unread'] = 'Ungelesene';
 $labels['flagged'] = 'Markierte';
@@ -142,7 +148,6 @@ $labels['expand_only_unread'] = 'nur ungelesene';
 $labels['fromto'] = 'Sender/Empfänger';
 $labels['flag'] = 'Markierung';
 $labels['attachment'] = 'Anhang';
-$labels['nonesort'] = 'Keine';
 $labels['sentdate'] = 'Sendedatum';
 $labels['arrival'] = 'Empfangsdatum';
 $labels['asc'] = 'aufsteigend';
@@ -163,7 +168,6 @@ $labels['searchmod'] = 'Suchkriterien ändern';
 $labels['msgtext'] = 'Nachricht';
 $labels['openinextwin'] = 'In neuem Fenster öffnen';
 $labels['emlsave'] = 'Lokal speichern (.eml)';
-$labels['compose'] = 'Neue Nachricht verfassen';
 $labels['editasnew'] = 'Als neue Nachricht öffnen';
 $labels['savemessage'] = 'Nachricht speichern';
 $labels['sendmessage'] = 'Nachricht jetzt senden';
@@ -175,9 +179,11 @@ $labels['dsn'] = 'Übermittlungsbestätigung (DSN)';
 $labels['mailreplyintro'] = 'Am $date, schrieb $sender:';
 $labels['originalmessage'] = 'Originalnachricht';
 $labels['editidents'] = 'Absender ändern';
+$labels['spellcheck'] = 'Rechtschreibung';
 $labels['checkspelling'] = 'Rechtschreibung prüfen';
 $labels['resumeediting'] = 'Bearbeitung fortsetzen';
 $labels['revertto'] = 'Zurück zu';
+$labels['attach'] = 'Anhängen';
 $labels['attachments'] = 'Anhänge';
 $labels['upload'] = 'Hochladen';
 $labels['uploadprogress'] = '$percent ($current von $total)';
@@ -191,6 +197,7 @@ $labels['highest'] = 'Höchste';
 $labels['nosubject'] = '(kein Betreff)';
 $labels['showimages'] = 'Bilder anzeigen';
 $labels['alwaysshow'] = 'Bilder von $sender immer zeigen';
+$labels['isdraft'] = 'Dies ist ein Entwurf';
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = 'Nur-Text';
 $labels['savesentmessagein'] = 'Nachricht speichern in';
@@ -231,15 +238,17 @@ $labels['notes'] = 'Notizen';
 $labels['male'] = 'männlich';
 $labels['female'] = 'weiblich';
 $labels['manager'] = 'Vorgesetze(r)';
-$labels['assistant'] = 'Assistent';
+$labels['assistant'] = 'Assistenz';
+$labels['typeassistant'] = 'Assistenz';
 $labels['spouse'] = 'Partner/in';
 $labels['allfields'] = 'Alle Felder';
 $labels['search'] = 'Suche';
 $labels['advsearch'] = 'Detaillierte Suche';
-$labels['other'] = 'Sonstiges';
+$labels['advanced'] = 'Erweitert';
+$labels['other'] = 'Andere';
+$labels['typeother'] = 'Andere';
 $labels['typehome'] = 'Privat';
 $labels['typework'] = 'Dienstlich';
-$labels['typeother'] = 'Andere';
 $labels['typemobile'] = 'Mobil';
 $labels['typemain'] = 'Hauptnummer';
 $labels['typehomefax'] = 'Fax Privat';
@@ -247,7 +256,6 @@ $labels['typeworkfax'] = 'Fax Dienst';
 $labels['typecar'] = 'Auto';
 $labels['typepager'] = 'Pager';
 $labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Assistenz';
 $labels['typehomepage'] = 'Internet';
 $labels['typeblog'] = 'Blog';
 $labels['typeprofile'] = 'Profil';
@@ -261,9 +269,10 @@ $labels['edit'] = 'Bearbeiten';
 $labels['cancel'] = 'Abbrechen';
 $labels['save'] = 'Speichern';
 $labels['delete'] = 'Löschen';
-$labels['rename'] = 'umbenennen';
+$labels['rename'] = 'Umbenennen';
 $labels['addphoto'] = 'Kontaktbild hinzufügen';
 $labels['replacephoto'] = 'Bild ändern';
+$labels['uploadphoto'] = 'Bild hochladen';
 $labels['newcontact'] = 'Neuen Kontakt erstellen';
 $labels['deletecontact'] = 'Gewählte Kontakte löschen';
 $labels['composeto'] = 'Nachricht verfassen';
@@ -271,9 +280,10 @@ $labels['contactsfromto'] = 'Kontakte $from bis $to von $count';
 $labels['print'] = 'Drucken';
 $labels['export'] = 'Exportieren';
 $labels['exportvcards'] = 'Kontakte im vCard-Format exportieren';
-$labels['newcontactgroup'] = 'Neue Kontaktgruppen erstellen';
+$labels['newcontactgroup'] = 'Neue Kontaktgruppe erstellen';
 $labels['grouprename'] = 'Gruppe umbenennen';
 $labels['groupdelete'] = 'Gruppe löschen';
+$labels['groupremoveselected'] = 'Gewählte Kontakte aus Gruppe entfernen';
 $labels['previouspage'] = 'Seite zurück';
 $labels['firstpage'] = 'Erste Seite';
 $labels['nextpage'] = 'Nächste Seite';
@@ -291,6 +301,7 @@ $labels['importreplace'] = 'Bestehendes Adressbuch komplett ersetzen';
 $labels['importtext'] = 'Sie können Kontakte aus einem bestehenden Adressbuch hochladen. Zur Zeit können Adressbücher im vCard-Format importiert werden.';
 $labels['done'] = 'Fertig';
 $labels['settingsfor'] = 'Einstellungen für';
+$labels['about'] = 'Über';
 $labels['preferences'] = 'Einstellungen';
 $labels['userpreferences'] = 'Benutzereinstellungen';
 $labels['editpreferences'] = 'Benutzereinstellungen bearbeiten';
@@ -332,6 +343,7 @@ $labels['readwhendeleted'] = 'Beim Löschen als gelesen markieren';
 $labels['flagfordeletion'] = 'Als gelöscht markieren anstatt in den Papierkorb verschieben';
 $labels['skipdeleted'] = 'Zeige keine gelöschten Nachrichten an';
 $labels['deletealways'] = 'Wenn verschieben in den Papierkorb fehlschlägt, Nachricht löschen';
+$labels['deletejunk'] = 'Nachrichten in Spam direkt löschen';
 $labels['showremoteimages'] = 'Eingebettete Bilder vom Internet laden';
 $labels['fromknownsenders'] = 'bei bekannten Absendern';
 $labels['always'] = 'immer';
@@ -344,19 +356,20 @@ $labels['immediately'] = 'sofort';
 $labels['messagesdisplaying'] = 'Nachrichtendarstellung';
 $labels['messagescomposition'] = 'Nachrichtenerstellung';
 $labels['mimeparamfolding'] = 'Namen der Dateianhänge';
-$labels['2231folding'] = 'Vollständig RFC 2231 kompatibel (Thunderbird)';
+$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['2047folding'] = 'vollständig RFC 2047 kompatibel (andere)';
 $labels['force7bit'] = 'MIME-Kodierung für 8-bit Zeichen';
 $labels['advancedoptions'] = 'Erweiterte Einstellungen';
 $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';
+$labels['defaultfont'] = 'Standard Schrift von HTML Nachrichten';
 $labels['mainoptions'] = 'Allgemein';
+$labels['browseroptions'] = 'Browsereinstellungen';
 $labels['section'] = 'Bereich';
 $labels['maintenance'] = 'Wartung';
-$labels['newmessage'] = 'Neue Nachrichten';
-$labels['listoptions'] = 'Listendarstellung';
+$labels['newmessage'] = 'Neue Nachricht';
 $labels['signatureoptions'] = 'Signatur';
 $labels['whenreplying'] = 'Beantworten einer Nachricht';
 $labels['replytopposting'] = 'Antwort über der Originalnachricht';
@@ -383,8 +396,8 @@ $labels['spellcheckignoresyms'] = 'Wörter mit Symbolen überspringen';
 $labels['spellcheckignorenums'] = 'Wörter mit Ziffern überspringen';
 $labels['spellcheckignorecaps'] = 'Wörter überspringen, die nur aus Großbuchstaben bestehen';
 $labels['addtodict'] = 'Zum Wörterbuch hinzufügen';
+$labels['mailtoprotohandler'] = 'Als Empfänger für mailto: Links einrichten';
 $labels['folder'] = 'Ordner';
-$labels['folders'] = 'Ordner';
 $labels['foldername'] = 'Ordnername';
 $labels['subscribed'] = 'Abonniert';
 $labels['messagecount'] = 'Nachrichten';
@@ -407,6 +420,11 @@ $labels['sortby'] = 'Sortieren nach';
 $labels['sortasc'] = 'Aufsteigend sortieren';
 $labels['sortdesc'] = 'Absteigend sortieren';
 $labels['undo'] = 'Rückgängig machen';
+$labels['plugin'] = 'Erweiterung';
+$labels['version'] = 'Version';
+$labels['source'] = 'Quellcode';
+$labels['license'] = 'Lizenz';
+$labels['support'] = 'Support';
 $labels['B'] = 'B';
 $labels['KB'] = 'KB';
 $labels['MB'] = 'MB';
@@ -430,4 +448,3 @@ $labels['japanese'] = 'Japanisch';
 $labels['korean'] = 'Koreanisch';
 $labels['chinese'] = 'Chinesisch';
 
-?>
index 22a30f650674b329b40204a0f62961249ce3a49f..d8b78d6c8df314bcd6067229451ee790ee7de12e 100644 (file)
@@ -9,19 +9,20 @@
  | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Daniel Winzen <d@winzen4.de>                                  |
+ | Author: akn                                                           |
  +-----------------------------------------------------------------------+
- @version $Id: messages.inc 5741 2012-01-08 16:20:12Z thomasb $
 */
 
 $messages = array();
+$messages['errortitle'] = 'Ein Fehler ist aufgetreten!';
 $messages['loginfailed'] = 'Die Anmeldung ist fehlgeschlagen.';
 $messages['cookiesdisabled'] = 'Ihr Browser akzeptiert keine Cookies.';
 $messages['sessionerror'] = 'Ihre Sitzung ist ungültig oder abgelaufen.';
-$messages['imaperror'] = 'Keine Verbindung zum IMAP Server.';
+$messages['storageerror'] = 'Verbindung zum Speicherserver fehlgeschlagen.';
 $messages['servererror'] = 'Serverfehler!';
 $messages['servererrormsg'] = 'Serverfehler: $msg';
 $messages['dberror'] = 'Datenbankfehler!';
+$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.';
 $messages['invalidrequest'] = 'Ungültige Anfrage! Es wurden keine Daten gespeichert.';
@@ -34,15 +35,15 @@ $messages['uploadingmany'] = 'Dateien werden hochgeladen...';
 $messages['loadingdata'] = 'Daten werden geladen...';
 $messages['checkingmail'] = 'Überprüfung auf neue Nachrichten...';
 $messages['sendingmessage'] = 'Nachricht wird gesendet...';
-$messages['messagesent'] = 'Nachricht erfolgreich gesendet';
+$messages['messagesent'] = 'Nachricht erfolgreich gesendet.';
 $messages['savingmessage'] = 'Nachricht wird gespeichert...';
-$messages['messagesaved'] = 'Nachricht als Entwurf gespeichert';
+$messages['messagesaved'] = 'Nachricht als Entwurf gespeichert.';
 $messages['successfullysaved'] = 'Erfolgreich gespeichert.';
 $messages['addedsuccessfully'] = 'Kontakt zum Adressbuch hinzugefügt.';
 $messages['contactexists'] = 'Es existiert bereits ein Kontakt mit dieser E-Mail-Adresse.';
-$messages['contactnameexists'] = 'Ein Kontakt mit demselben Namen existiert bereits.';
+$messages['contactnameexists'] = 'Ein Kontakt mit dem gleichen Namen existiert bereits.';
 $messages['blockedimages'] = 'Um Ihre Privatsphäre zur schützen, wurden externe Bilder blockiert.';
-$messages['encryptedmessage'] = 'Dies ist eine verschlüsselte Nachricht und kann leider nicht angezeigtwerden.';
+$messages['encryptedmessage'] = 'Dies ist eine verschlüsselte Nachricht und kann leider nicht angezeigt werden.';
 $messages['nocontactsfound'] = 'Keine Kontakte gefunden.';
 $messages['contactnotfound'] = 'Der angeforderte Kontakt wurde nicht gefunden.';
 $messages['contactsearchonly'] = 'Geben Sie einen Suchbegriff ein, um Kontakte zu finden.';
@@ -136,8 +137,8 @@ $messages['contactdeleted'] = 'Kontakt(e) erfolgreich gelöscht.';
 $messages['contactrestoreerror'] = 'Konnte die gelöschten Kontakte nicht wiederherstellen.';
 $messages['contactrestored'] = 'Kontakte erfolgreich wiederhergestellt.';
 $messages['groupdeleted'] = 'Gruppe erfolgreich gelöscht.';
-$messages['grouprenamed'] = 'Gruppe erlogreich umbenannt.';
-$messages['groupcreated'] = 'Gruppe erlogreich erstellt.';
+$messages['grouprenamed'] = 'Gruppe erfolgreich umbenannt.';
+$messages['groupcreated'] = 'Gruppe erfolgreich erstellt.';
 $messages['savedsearchdeleted'] = 'Suchergebnisse erfolgreich gelöscht.';
 $messages['savedsearchdeleteerror'] = 'Suchergebnisse konnten nicht gelöscht werden.';
 $messages['savedsearchcreated'] = 'Suchergebnisse wurden erfolgreich wiederherstellt.';
index 34f0ed3167a41d1a283f356b69410bc51da77ac5..b5fe03447fc669223aa3c12765b1e3905f9381db 100644 (file)
@@ -1,22 +1,17 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/el/labels.inc                                                |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Jim Deves <jim@cobaltblue.gr>                                 |
-|         John Economou <hsoc@irc.gr>                                   |
-|         Panagiotis Christias <p.christias@noc.ntua.gr>                |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 4627 2011-03-31 13:47:22Z yllar $
-
+ +-----------------------------------------------------------------------+
+ | localization/el_GR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Nikos Keramidis <info@torus.gr>                               |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $labels = array();
@@ -24,43 +19,47 @@ $labels['welcome'] = 'Καλώς ήρθατε στο $product';
 $labels['username'] = 'Όνομα Χρήστη';
 $labels['password'] = 'Κωδικός Πρόσβασης';
 $labels['server'] = 'Διακομιστής';
-$labels['login'] = 'Î\95ίÏ\83οδοÏ\82';
-$labels['logout'] = 'Î\88ξοδοÏ\82';
+$labels['login'] = 'ΣÏ\8dνδεÏ\83η';
+$labels['logout'] = 'Î\91Ï\80οÏ\83Ï\8dνδεÏ\83η';
 $labels['mail'] = 'E-Mail';
 $labels['settings'] = 'Ρυθμίσεις';
 $labels['addressbook'] = 'Επαφές';
 $labels['inbox'] = 'Εισερχόμενα';
 $labels['drafts'] = 'Πρόχειρα';
 $labels['sent'] = 'Απεσταλμένα';
-$labels['trash'] = 'Κάδος';
-$labels['junk'] = 'Junk';
+$labels['trash'] = 'Κάδος Απορριμάτων';
+$labels['junk'] = 'Ανεπιθύμητα';
 $labels['subject'] = 'Θέμα';
 $labels['from'] = 'Αποστολέας';
 $labels['to'] = 'Παραλήπτης';
-$labels['cc'] = 'Αντίγραφο';
-$labels['bcc'] = 'Bcc';
-$labels['replyto'] = 'Απάντηση σε';
-$labels['date'] = 'Ημ/νία';
+$labels['cc'] = 'Κοινοποίηση';
+$labels['bcc'] = 'Κρυφή κοινοποίηση';
+$labels['replyto'] = 'Απάντηση στο';
+$labels['followupto'] = 'Σε συνέχεια';
+$labels['date'] = 'Ημερομηνία';
 $labels['size'] = 'Μέγεθος';
 $labels['priority'] = 'Πρoτεραιότητα';
 $labels['organization'] = 'Οργανισμός';
-$labels['reply-to'] = 'Απάντηση σε';
+$labels['readstatus'] = 'Κατάσταση ανάγνωσης';
+$labels['listoptions'] = 'Κατάλογος επιλογών';
 $labels['mailboxlist'] = 'Φάκελοι';
+$labels['folders'] = 'Φάκελοι';
 $labels['messagesfromto'] = 'Μηνύματα $from από $to έως $count';
+$labels['threadsfromto'] = 'Θέματα $from έως $to από $count';
 $labels['messagenrof'] = 'Μήνυμα $nr από $count';
-$labels['moveto'] = 'μετακίνηση σε...';
-$labels['download'] = 'λήψη';
+$labels['fromtoshort'] = '$from – $to από $count';
+$labels['copy'] = 'Αντίγραφο';
+$labels['move'] = 'Μετακίνηση';
+$labels['moveto'] = 'Μετακίνηση σε...';
+$labels['download'] = 'Λήψη';
 $labels['filename'] = 'Όνομα αρχείου';
 $labels['filesize'] = 'Μέγεθος αρχείου';
-$labels['preferhtml'] = 'Προτίμηση HTML';
-$labels['htmlmessage'] = 'Μήνυμα HTML';
-$labels['prettydate'] = 'Όμορφη ημ/νία';
-$labels['addtoaddressbook'] = 'Προσθήκη στις Επαφές';
+$labels['addtoaddressbook'] = 'Προσθήκη στο βιβλίο διευθύνσεων';
 $labels['sun'] = 'Κυρ';
 $labels['mon'] = 'Δευτ';
 $labels['tue'] = 'Τρι';
 $labels['wed'] = 'Τετ';
-$labels['thu'] = 'Πεμ';
+$labels['thu'] = 'Πεμπ';
 $labels['fri'] = 'Παρ';
 $labels['sat'] = 'Σαβ';
 $labels['sunday'] = 'Κυριακή';
@@ -75,8 +74,9 @@ $labels['feb'] = 'Φεβ';
 $labels['mar'] = 'Μαρ';
 $labels['apr'] = 'Απρ';
 $labels['may'] = 'Μαι';
-$labels['jun'] = 'Ιον';
-$labels['jul'] = 'Ιολ';
+$labels['longmay'] = 'Μαι';
+$labels['jun'] = 'Ιουν';
+$labels['jul'] = 'Ιουλ';
 $labels['aug'] = 'Αυγ';
 $labels['sep'] = 'Σεπ';
 $labels['oct'] = 'Οκτ';
@@ -86,7 +86,6 @@ $labels['longjan'] = 'Ιανουάριος';
 $labels['longfeb'] = 'Φεβρουάριος';
 $labels['longmar'] = 'Μάρτιος';
 $labels['longapr'] = 'Απρίλιος';
-$labels['longmay'] = 'Μάιος';
 $labels['longjun'] = 'Ιούνιος';
 $labels['longjul'] = 'Ιούλιος';
 $labels['longaug'] = 'Αύγουστος';
@@ -95,154 +94,356 @@ $labels['longoct'] = 'Οκτώβριος';
 $labels['longnov'] = 'Νοέμβριος';
 $labels['longdec'] = 'Δεκέμβριος';
 $labels['today'] = 'Σήμερα';
+$labels['refresh'] = 'Ανανέωση';
 $labels['checkmail'] = 'Έλεγχος για νέα μηνύματα';
+$labels['compose'] = 'Δημιουργία μηνύματος';
 $labels['writenewmessage'] = 'Δημιουργία νέου μηνύματος';
-$labels['replytomessage'] = 'Απάντηση';
-$labels['replytoallmessage'] = 'Απάντηση στον αποστολέα και όλους τους παραλήπτες';
+$labels['reply'] = 'Απάντηση';
+$labels['replytomessage'] = 'Απάντηση στον αποστολέα';
+$labels['replytoallmessage'] = 'Απάντηση στη λίστα ή στον αποστολέα και όλους τους παραλήπτες';
+$labels['replyall'] = 'Απάντηση όλων';
+$labels['replylist'] = 'Λίστα παραληπτών απάντησης';
+$labels['forward'] = 'Προώθηση';
+$labels['forwardinline'] = 'Forward inline';
+$labels['forwardattachment'] = 'Προώθηση σαν συνημμένο';
 $labels['forwardmessage'] = 'Προώθηση μηνύματος';
 $labels['deletemessage'] = 'Διαγραφή μηνύματος';
-$labels['movemessagetotrash'] = 'Μετακίνηση μηνύματος στον Κάδο';
-$labels['printmessage'] = 'Εκτύπωση';
-$labels['previousmessage'] = 'Εμφάνιση προηγούμενου μηνύματος';
-$labels['previousmessages'] = 'Εμφάνιση προηγούμενης ομάδας μηνυμάτων';
-$labels['firstmessage'] = 'Εμφάνιση πρώτου μηνύματος';
-$labels['firstmessages'] = 'Εμφάνιση πρώτης ομάδας μηνυμάτων';
-$labels['nextmessage'] = 'Εμφάνιση επόμενου μηνύματος';
-$labels['nextmessages'] = 'Εμφάνιση επόμενης ομάδας μηνυμάτων';
-$labels['lastmessage'] = 'Εμφάνιση τελευταίου μηνύματος';
-$labels['lastmessages'] = 'Εμφάνιση τελευταίας ομάδας μηνυμάτων';
+$labels['movemessagetotrash'] = 'Διαγραφή του μηνύματος';
+$labels['printmessage'] = 'Εκτύπωση του μηνύματος';
+$labels['previousmessage'] = 'Εμφάνιση του προηγούμενου μηνύματος';
+$labels['firstmessage'] = 'Εμφάνιση του πρώτου μηνύματος';
+$labels['nextmessage'] = 'Εμφάνιση του επόμενου μηνύματος';
+$labels['lastmessage'] = 'Εμφάνιση του τελευταίου μηνύματος';
 $labels['backtolist'] = 'Επιστροφή στη λίστα μηνυμάτων';
 $labels['viewsource'] = 'Προβολή πηγαίου κώδικα';
-$labels['markmessages'] = 'Σήμανση μηνυμάτων';
+$labels['mark'] = 'Μαρκάρισμα';
+$labels['markmessages'] = 'Μαρκάρισμα μηνυμάτων';
 $labels['markread'] = 'ως αναγνωσμένα';
 $labels['markunread'] = 'ως μη-αναγνωσμένα';
-$labels['markflagged'] = 'Με σήμανση';
-$labels['markunflagged'] = 'Χωρίς σήμανση';
-$labels['messageactions'] = 'Περισσότερες ενέργειες...';
-$labels['select'] = 'Επιλογή';
+$labels['markflagged'] = 'ως με σήμανση';
+$labels['markunflagged'] = 'ως Χωρίς σήμανση';
+$labels['moreactions'] = 'Περισσότερες ενέργειες...';
+$labels['more'] = 'Περισσότερα';
+$labels['back'] = 'Επιστροφή';
+$labels['options'] = 'Επιλογές';
+$labels['select'] = 'Επιλέξτε';
 $labels['all'] = 'Όλα';
 $labels['none'] = 'Κανένα';
-$labels['unread'] = 'Μη αναγνωσμένα';
+$labels['nonesort'] = 'Κανένα';
+$labels['currpage'] = 'Τρέχουσα σελίδα';
+$labels['unread'] = 'Μη αναγνωσμένο';
+$labels['flagged'] = 'Σημειωμένο';
 $labels['unanswered'] = 'Αναπάντητο';
 $labels['deleted'] = 'Διεγραμμένο';
 $labels['invert'] = 'Αναστροφή';
 $labels['filter'] = 'Φίλτρο';
+$labels['list'] = 'Λίστα';
+$labels['threads'] = 'Θέματα';
+$labels['expand-all'] = 'Ανάπτυξη όλων';
+$labels['expand-unread'] = 'Ανάπτυξη των μη αναγνωσμένων';
+$labels['collapse-all'] = 'Σύμπτυξη όλων';
+$labels['threaded'] = 'Θεματοποιημένα';
+$labels['autoexpand_threads'] = 'Ανάπτυξη θεματοποιημένων μηνυμάτων';
+$labels['do_expand'] = 'όλα τα θέματα';
+$labels['expand_only_unread'] = 'μόνο με τα μη αναγνωσμένα μηνύματα';
+$labels['fromto'] = 'Από/Προς';
+$labels['flag'] = 'Επισήμανση';
+$labels['attachment'] = 'Συνημμένο αρχείο';
+$labels['sentdate'] = 'Ημερ. Αποστολής';
+$labels['arrival'] = 'Ημερ. Λήψης';
+$labels['asc'] = 'αύξουσα';
+$labels['desc'] = 'φθίνουσα';
+$labels['listcolumns'] = 'Στήλες';
+$labels['listsorting'] = 'Ταξινόμηση στηλών';
+$labels['listorder'] = 'Σειρά ταξινόμησης';
+$labels['listmode'] = 'Προβολή σε λίστα';
+$labels['folderactions'] = 'Ενέργειες στους φακέλους';
 $labels['compact'] = 'Συμπίεση';
 $labels['empty'] = 'Άδειασμα';
-$labels['purge'] = 'Καθάρισμα';
 $labels['quota'] = 'Χρήση δίσκου';
 $labels['unknown'] = 'άγνωστο';
 $labels['unlimited'] = 'απεριόριστο';
 $labels['quicksearch'] = 'Γρήγορη Αναζήτηση';
 $labels['resetsearch'] = 'Επαναφορά Αναζήτησης';
+$labels['searchmod'] = 'Search modifiers';
 $labels['msgtext'] = 'Σε όλο το μήνυμα';
 $labels['openinextwin'] = 'Άνοιγμα σε νέο παράθυρο';
-$labels['compose'] = 'Συγγραφή μηνύματος';
-$labels['savemessage'] = 'Αποθήκευση ως πρόχειρου';
-$labels['sendmessage'] = 'Αποστολή μηνύματος τώρα';
+$labels['emlsave'] = 'Λήψη αρχείου (.eml)';
+$labels['editasnew'] = 'Επεξεργασία σαν νέο';
+$labels['savemessage'] = 'Αποθήκευση ως πρόχειρο';
+$labels['sendmessage'] = 'Αποστολή μηνύματος';
 $labels['addattachment'] = 'Επισύναψη αρχείου';
-$labels['charset'] = 'Charset';
+$labels['charset'] = 'Κωδικοποίηση χαρακτήρων';
 $labels['editortype'] = 'Είδος επεξεργαστή κειμένου';
 $labels['returnreceipt'] = 'Αναφορά Παράδοσης';
+$labels['dsn'] = 'Κατάσταση αναφοράς παράδοσης';
+$labels['mailreplyintro'] = 'Στις $date, $sender έγραψε:';
+$labels['originalmessage'] = 'Αρχικό μήνυμα';
+$labels['editidents'] = 'Επεξεργασία ταυτοτήτων';
+$labels['spellcheck'] = 'Συλλαβισμός';
 $labels['checkspelling'] = 'Έλεγχος ορθογραφίας';
-$labels['resumeediting'] = 'Συνέχιση επεξεργασίας';
-$labels['revertto'] = 'Επαναφορά σε';
+$labels['resumeediting'] = 'Συνέχεια επεξεργασίας';
+$labels['revertto'] = 'Επαναφορά στο';
+$labels['attach'] = 'Επισύναψη';
 $labels['attachments'] = 'Συνημμένα';
-$labels['upload'] = 'Ανέβασμα';
+$labels['upload'] = 'Αποστολή';
+$labels['uploadprogress'] = '$percent ($current από $total)';
 $labels['close'] = 'Κλείσιμο';
+$labels['messageoptions'] = 'Επιλογές μηνύματος';
 $labels['low'] = 'Χαμηλή';
 $labels['lowest'] = 'Χαμηλότερη';
 $labels['normal'] = 'Κανονική';
 $labels['high'] = 'Υψηλή';
-$labels['highest'] = 'Υψηλότερη';
-$labels['nosubject'] = '(κανένα θέμα)';
-$labels['showimages'] = 'Εμφάνιση εικόνων';
+$labels['highest'] = 'Μέγιστη δυνατή';
+$labels['nosubject'] = '(χωρίς θέμα)';
+$labels['showimages'] = 'Προβολή εικόνων';
+$labels['alwaysshow'] = 'Να προβάλλονται πάντα οι εικόνες που αποστέλλονται από τον $sender';
+$labels['isdraft'] = 'Αυτό το μήνυμα έχει σημανθεί σαν πρόχειρο';
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = 'Απλό κείμενο';
 $labels['savesentmessagein'] = 'Αποθήκευση απεσταλμένου στο φάκελο';
-$labels['dontsave'] = 'Χωρίς αποθήκευση';
-$labels['addcc'] = 'Προσθήκη Cc';
-$labels['addbcc'] = 'Προσθήκη Bcc';
-$labels['addreplyto'] = 'Προσθήκη Απάντηση-Σε';
-$labels['mdnrequest'] = 'Ο αποστολέας του μηνύματος έχει ζητήσει να ενημερωθεί όταν διαβάσετε αυτό το μήνυμα. Επιθυμείτε να ενημερώστε τον αποστολέα;';
-$labels['receiptread'] = 'Αναφορά (ανάγνωσης)';
-$labels['yourmessage'] = 'Αυτό είναι μια Αναφορά για το μήνυμά σας';
-$labels['receiptnote'] = 'Σημείωση: Αυτή η αναφορά επιβεβαιώνει μόνο ότι το μήνυμα εμφανίστηκε μόνο στον υπολογιστή του παραλήπτη. Δεν επιβεβαιώνει ότι ο παραλήπτης έχει διαβάσει ή έχει κατανοήσει το περιεχόμενο του μηνύματος.';
+$labels['dontsave'] = 'να μην αποθηκευθεί';
+$labels['maxuploadsize'] = 'Το μέγιστο επιτρεπόμενο μέγεθος αρχείου είναι $size';
+$labels['addcc'] = 'Προσθήκη Παραλήπτη Κοινοποίησης';
+$labels['addbcc'] = 'Προσθήκη Παραλήπτη Κρυφής Κοινοποίησης';
+$labels['addreplyto'] = 'Προσθήκη Απάντησης-Στο';
+$labels['addfollowupto'] = 'Προσθήκη Σε συνέχεια του';
+$labels['mdnrequest'] = 'Ο αποστολέας αυτού του μηνύματος, έχει ζητήσει να ειδοποιηθεί όταν θα το διαβάσετε. Θέλετε να επιτρέψετε την ενημέρωσή του;';
+$labels['receiptread'] = 'Αναφορά παράδοσης (διαβάστε την)';
+$labels['yourmessage'] = 'Αυτό είναι μια αναφορά παράδοσης για το μήνυμά σας';
+$labels['receiptnote'] = 'Σημείωση: Αυτή η αναφορά επιβεβαιώνει μόνο ότι το μήνυμά σας εμφανίστηκε στον υπολογιστή του παραλήπτη. Δεν επιβεβαιώνει ότι ο παραλήπτης έχει διαβάσει ή έχει κατανοήσει το περιεχόμενό του.';
 $labels['name'] = 'Εμφανιζόμενο όνομα';
 $labels['firstname'] = 'Όνομα';
 $labels['surname'] = 'Επώνυμο';
+$labels['middlename'] = 'Πατρώνυμο';
+$labels['nameprefix'] = 'Πρόθεμα';
+$labels['namesuffix'] = 'Κατάληξη';
+$labels['nickname'] = 'Ψευδώνυμο';
+$labels['jobtitle'] = 'Τίτλος εργασίας';
+$labels['department'] = 'Τμήμα';
+$labels['gender'] = 'Φύλο';
+$labels['maidenname'] = 'Πατρώνυμο';
 $labels['email'] = 'E-Mail';
-$labels['addcontact'] = 'Προσθήκη επιλεγμένης επαφής στις Επαφές';
+$labels['phone'] = 'Τηλέφωνο';
+$labels['address'] = 'Διεύθυνση';
+$labels['street'] = 'Οδός';
+$labels['locality'] = 'Πόλη';
+$labels['zipcode'] = 'ΤΚ';
+$labels['region'] = 'Νομός';
+$labels['country'] = 'Χώρα';
+$labels['birthday'] = 'Ημερ/νία Γέννησης';
+$labels['anniversary'] = 'Επέτειος';
+$labels['website'] = 'Ιστοσελίδα';
+$labels['instantmessenger'] = 'IM';
+$labels['notes'] = 'Σημειώσεις';
+$labels['male'] = 'άνδρας';
+$labels['female'] = 'γυναίκα';
+$labels['manager'] = 'Υπεύθυνος';
+$labels['assistant'] = 'Υπάλληλος';
+$labels['typeassistant'] = 'Υπάλληλος';
+$labels['spouse'] = 'Σύζυγος';
+$labels['allfields'] = 'Όλα τα πεδία';
+$labels['search'] = 'Αναζήτηση';
+$labels['advsearch'] = 'Προηγμένη Αναζήτηση';
+$labels['advanced'] = 'Προχωρημένες ρυθμίσεις';
+$labels['other'] = 'Άλλα';
+$labels['typeother'] = 'Άλλα';
+$labels['typehome'] = 'Οικία';
+$labels['typework'] = 'Εργασία';
+$labels['typemobile'] = 'Κινητό';
+$labels['typemain'] = 'Κύρια';
+$labels['typehomefax'] = 'Φαξ οικίας';
+$labels['typeworkfax'] = 'Φαξ εργασίας';
+$labels['typecar'] = 'Αυτοκίνητο';
+$labels['typepager'] = 'Βομβητής';
+$labels['typevideo'] = 'Βίντεο';
+$labels['typehomepage'] = 'Αρχική Σελίδα';
+$labels['typeblog'] = 'Ιστολόγιο';
+$labels['typeprofile'] = 'Προφίλ';
+$labels['addfield'] = 'Προσθήκη πεδίου...';
+$labels['addcontact'] = 'Προσθήκη νέας επαφής';
 $labels['editcontact'] = 'Επεξεργασία επαφής';
+$labels['contacts'] = 'Επαφές';
+$labels['contactproperties'] = 'Ιδιότητες επαφών';
+$labels['personalinfo'] = 'Προσωπικές πληροφορίες';
 $labels['edit'] = 'Επεξεργασία';
 $labels['cancel'] = 'Ακύρωση';
 $labels['save'] = 'Αποθήκευση';
 $labels['delete'] = 'Διαγραφή';
-$labels['newcontact'] = 'Δημιουργία νέας επαφής';
+$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['previouspage'] = 'Εμφάνιση προηγούμενης σελίδας';
-$labels['firstpage'] = 'Εμφάνιση πρώτης σελίδας';
+$labels['firstpage'] = 'Î\95μÏ\86άνιÏ\83η Ï\84ηÏ\82 Ï\80Ï\81Ï\8eÏ\84ηÏ\82 Ï\83ελίδαÏ\82';
 $labels['nextpage'] = 'Εμφάνιση επόμενης σελίδας';
-$labels['lastpage'] = 'Εμφάνιση τελευταίας σελίδας';
+$labels['lastpage'] = 'Εμφάνιση της τελευταίας σελίδας';
+$labels['group'] = 'Ομάδα';
 $labels['groups'] = 'Ομάδες';
-$labels['personaladrbook'] = 'Προσωπικές Επαφές';
+$labels['personaladrbook'] = 'Προσωπικές Διυθύνσεις';
+$labels['searchsave'] = 'Αποθήκευση αναζήτησης';
+$labels['searchdelete'] = 'Διαγραφή αποθηκευμένης αναζήτησης';
 $labels['import'] = 'Εισαγωγή';
 $labels['importcontacts'] = 'Εισαγωγή επαφών';
-$labels['importfromfile'] = 'Εισαγωγή από αρχείο';
-$labels['done'] = 'Έτοιμο';
+$labels['importfromfile'] = 'Εισαγωγή από το αρχείο:';
+$labels['importtarget'] = 'Προσθήκη νέων επαφών στο βιβλίο διευθύνσεων:';
+$labels['importreplace'] = 'Αντικατάσταση όλου του βιβλίου διευθύνσεων';
+$labels['importtext'] = 'Μπορείτε να αποστείλετε επαφές από ένα υπάρχων βιβλίο διευθύνσεων.<br/>Προς το παρόν, όσον αφορά την εισαγωγή επαφών, επιτρέπετε η εισαγωγή επαφών σε μορφή <a href="http://en.wikipedia.org/wiki/VCard">vCard</a>.';
+$labels['done'] = 'Ολοκληρώθηκε';
 $labels['settingsfor'] = 'Ρυθμίσεις για';
+$labels['about'] = 'Σχετικά';
 $labels['preferences'] = 'Προτιμήσεις';
 $labels['userpreferences'] = 'Προτιμήσεις χρήστη';
 $labels['editpreferences'] = 'Επεξεργασία προτιμήσεων χρήστη';
 $labels['identities'] = 'Ταυτότητες';
-$labels['manageidentities'] = 'Διαχείριση ταυτοτήτων για το λογαριασμό αυτό';
+$labels['manageidentities'] = 'Διαχείριση ταυτοτήτων για αυτόν το λογαριασμό';
 $labels['newidentity'] = 'Νέα ταυτότητα';
 $labels['newitem'] = 'Νέο αντικείμενο';
 $labels['edititem'] = 'Επεξεργασία αντικειμένου';
+$labels['preferhtml'] = 'Προβολή σε HTML';
+$labels['defaultcharset'] = 'Προεπιλεγμένη κωδικοποίηση χαρακτήρων';
+$labels['htmlmessage'] = 'Μήνυμα σε μορφή HTML';
+$labels['dateformat'] = 'Μορφή ημερομηνίας';
+$labels['timeformat'] = 'Μορφή ώρας';
+$labels['prettydate'] = 'Κομψή ημερ/νία';
 $labels['setdefault'] = 'Ορισμός ως προεπιλογή';
+$labels['autodetect'] = 'Αυτόματα';
 $labels['language'] = 'Γλώσσα';
-$labels['timezone'] = 'ΠεÏ\81ιοÏ\87ή Ï\8eρας';
+$labels['timezone'] = 'Î\96Ï\8eνη Î\8fρας';
 $labels['pagesize'] = 'Γραμμές ανά σελίδα';
 $labels['signature'] = 'Υπογραφή';
-$labels['dstactive'] = 'Daylight savings';
-$labels['htmleditor'] = 'Σύνθεση HTML μηνύματος';
+$labels['dstactive'] = 'Θερινή ώρα';
+$labels['htmleditor'] = 'Δημιουργία μηνύματος σε μορφή HTML';
+$labels['htmlonreply'] = 'μόνο σε απάντηση μηνύματος μορφής HTML';
 $labels['htmlsignature'] = 'Υπογραφή HTML';
-$labels['previewpane'] = 'Εμφάνιση παραθύρου προεπισκόπησης';
-$labels['skin'] = 'Θεματική παραλλαγή';
-$labels['logoutclear'] = 'Άδειασμα κάδου στην έξοδο';
-$labels['logoutcompact'] = 'Συμπίεση εισερχομένων στην έξοδο';
-$labels['serversettings'] = 'Ρυθμίσεις εξυπηρετητή';
-$labels['mdnrequests'] = 'Ειδοποιήσεις αποστολέα';
-$labels['autosend'] = 'Στείλε αυτόματα';
-$labels['skipdeleted'] = 'Μη εμφάνιση διεγραμμένων μηνυμάτων';
+$labels['previewpane'] = 'Εμφάνιση προεπισκόπησης';
+$labels['skin'] = 'Θέμα εμφάνισης';
+$labels['logoutclear'] = 'Άδειασμα του κάδου στην έξοδο';
+$labels['logoutcompact'] = 'Συμπίεση φακέλου εισερχομένων στην έξοδο';
+$labels['uisettings'] = 'Περιβάλλον χρήστη';
+$labels['serversettings'] = 'Ρυθμίσεις διακομιστή';
+$labels['mailboxview'] = 'Προβολή Μηνυμάτων';
+$labels['mdnrequests'] = 'Όταν ο αποστολέας έχει ζητήσει αναφορά παράδοσης';
+$labels['askuser'] = 'ρώτησέ με';
+$labels['autosend'] = 'στείλε αυτόματα την απόδειξη παραλαβής';
+$labels['autosendknown'] = 'στείλε αυτόματα αποδείξεις παραλαβής σε όσους έχω στις επαφές, για τους άλλους ρώτα με';
+$labels['autosendknownignore'] = 'στείλε αυτόματα αποδείξεις παραλαβής σε όσους έχω στις επαφές, για τους άλλους καμιά ενέργεια';
+$labels['ignore'] = 'αγνόησε';
+$labels['readwhendeleted'] = 'Κατά τη διαγραφή του μηνύματος, μαρκάρισέ το σαν αναγνωσμένο';
+$labels['flagfordeletion'] = 'Αντί να το διαγράψεις, απλά και μόνο σημείωσέ το';
+$labels['skipdeleted'] = 'Να μην εμφανίζονται τα διαγραμμένα μηνύματα';
+$labels['deletealways'] = 'αν η μετακίνηση στον κάδο αποτύχει, διέγραψέ τα';
+$labels['showremoteimages'] = 'Να εμφανίζονται οι εικόνες που έχουν αποσταλεί σε συνδέσμους';
 $labels['fromknownsenders'] = 'από γνωστούς αποστολείς';
 $labels['always'] = 'πάντα';
-$labels['showinlineimages'] = 'ΠÏ\81οβολή Ï\83Ï\85νημμένÏ\89ν Ï\86Ï\89Ï\84ογÏ\81αÏ\86ιÏ\8eν, ÎºÎ¬Ï\84Ï\89 Î±Ï\80Ï\8c Ï\84ο Î¼Î®Î½Ï\85μα';
-$labels['autosavedraft'] = 'Î\91Ï\85Ï\84Ï\8cμαÏ\84η Î±Ï\80οθήκεÏ\85Ï\83η Ï\80Ï\81οÏ\87είÏ\81οÏ\85';
+$labels['showinlineimages'] = 'Î\9fι Ï\83Ï\85νημμένεÏ\82 ÎµÎ¹ÎºÏ\8cνεÏ\82 Î½Î± Ï\80Ï\81οβάλλονÏ\84αι Ï\83Ï\84ο Ï\84έλοÏ\82 Ï\84οÏ\85 Î¼Î·Î½Î®Î¼Î±Ï\84οÏ\82';
+$labels['autosavedraft'] = 'Î\9dα Î³Î¯Î½ÎµÏ\84αι Î±Ï\85Ï\84Ï\8cμαÏ\84η Î±Ï\80οθήκεÏ\85Ï\83η Ï\83αν Ï\80Ï\81Ï\8cÏ\87ειÏ\81ο';
 $labels['everynminutes'] = 'κάθε $n λεπτό/α';
+$labels['keepalive'] = 'Έλεγχος για νέα μηνύματα';
 $labels['never'] = 'ποτέ';
+$labels['immediately'] = 'άμεσα';
 $labels['messagesdisplaying'] = 'Προβολή Μηνυμάτων';
-$labels['messagescomposition'] = 'Συγγραφή Μηνυμάτων';
-$labels['mimeparamfolding'] = 'Ονόματα συνημένων';
+$labels['messagescomposition'] = 'Δημιουργία Μηνυμάτων';
+$labels['mimeparamfolding'] = 'Ονόματα συνημμένων αρχείων';
+$labels['2231folding'] = 'Full RFC 2231 (μορφή Thunderbird)';
+$labels['miscfolding'] = 'RFC 2047/2231 (μορφή MS Outlook)';
+$labels['2047folding'] = 'Full RFC 2047 (άλλη μορφή)';
+$labels['force7bit'] = 'Να γίνεται χρήση της κωδικοποίησης MIME για τους χαρακτήρες 8-bit';
 $labels['advancedoptions'] = 'Προχωρημένες επιλογές';
+$labels['focusonnewmessage'] = 'Τα νέα μηνύματα να επιλέγονται αυτόματα';
+$labels['checkallfolders'] = 'Να γίνεται έλεγχος σε όλους τους φακέλους για νέα μηνύματα';
+$labels['displaynext'] = 'Μετά από κάθε μετακίνηση/διαγραφή μηνήματος να εμφανίζεται το επόμενο';
+$labels['defaultfont'] = 'Προεπιλεγμένη γραμματοσειρά για τα μηνύματα μορφής HTML';
 $labels['mainoptions'] = 'Βασικές επιλογές';
+$labels['browseroptions'] = 'Επιλογές περιηγητή';
+$labels['section'] = 'Ενότητα';
+$labels['maintenance'] = 'Συντήρηση';
 $labels['newmessage'] = 'Νέο Μήνυμα';
+$labels['signatureoptions'] = 'Επιλογές υπογραφής';
+$labels['whenreplying'] = 'Στις απαντήσεις';
+$labels['replytopposting'] = 'το νέο μήνυμα να είναι πάνω από το αρχικό';
+$labels['replybottomposting'] = 'το νέο μήνυμα να είναι κάτω από το αρχικό';
+$labels['replyremovesignature'] = 'Όταν το μήνυμα είναι απάντηση, να αφαιρείται η υπογραφή του αρχικού μηνύματος';
+$labels['autoaddsignature'] = 'Η υπογραφή να προστίθεται αυτόματα';
+$labels['newmessageonly'] = 'μόνο στα νέα μηνύματα';
+$labels['replyandforwardonly'] = 'μόνο στις απαντήσεις και προωθήσεις';
+$labels['replysignaturepos'] = 'Όταν γίνεται απάντηση ή προώθηση, η υπογραφή να τοποθετείτε';
+$labels['belowquote'] = 'πάνω από την παράθεση';
+$labels['abovequote'] = 'κάτω από την παράθεση';
+$labels['insertsignature'] = 'Προσθήκη υπογραφής';
+$labels['previewpanemarkread'] = 'Στα μηνύματα που έγινε προεπισκόπηση να μαρκάρονται σαν αναγνωσμένα';
+$labels['afternseconds'] = 'μετά από $n δευτερόλεπτα';
+$labels['reqmdn'] = 'Να γίνεται πάντα αίτηση για αναφορά απάντησης';
+$labels['reqdsn'] = 'Να γίνεται πάντα αίτηση για αναφορά παράδοσης';
+$labels['replysamefolder'] = 'Τα μηνύματα που είναι απαντήσεις να τοποθετούνται σε ξεχωριστό φάκελο';
+$labels['defaultaddressbook'] = 'Οι νέες επαφές να αποθηκεύονται στο επιλεγμένο βιβλίο διευθύνσεων';
+$labels['autocompletesingle'] = 'Να μην χρησιμοποιούνται οι εναλλακτικές διευθύνσεις κατά την αυτόματη συμπλήρωση';
+$labels['listnamedisplay'] = 'Εμφάνιση επαφών ως';
+$labels['spellcheckbeforesend'] = 'Να γίνεται πάντα έλεγχος ορθογραφίας πριν την αποστολή του μηνύματος';
+$labels['spellcheckoptions'] = 'Επιλογές Ορθογραφικού ελέγχου';
+$labels['spellcheckignoresyms'] = 'Οι λέξεις που περιέχουν σύμβολα να αγνοούνται';
+$labels['spellcheckignorenums'] = 'Οι λέξεις που περιέχουν αριθμούς να αγνοούνται';
+$labels['spellcheckignorecaps'] = 'Οι λέξεις γραμμένες με ΚΕΦΑΛΑΙΑ να αγνοούνται';
+$labels['addtodict'] = 'Προσθήκη στο λεξικό';
+$labels['mailtoprotohandler'] = 'Καταχώρηση διαχείρισης πρωτοκόλλου δεσμών mailto:';
 $labels['folder'] = 'Φάκελος';
-$labels['folders'] = 'Φάκελοι';
 $labels['foldername'] = 'Όνομα φακέλου';
-$labels['subscribed'] = 'Εγγραφή';
+$labels['subscribed'] = 'Εγγεγραμμένος';
 $labels['messagecount'] = 'Μηνύματα';
 $labels['create'] = 'Δημιουργία';
 $labels['createfolder'] = 'Δημιουργία νέου φακέλου';
 $labels['managefolders'] = 'Διαχείριση φακέλων';
 $labels['specialfolders'] = 'Ειδικοί Φάκελοι';
+$labels['properties'] = 'Ιδιότητες';
+$labels['folderproperties'] = 'Ιδιότητες φακέλου';
+$labels['parentfolder'] = 'Γονικός φάκελος';
+$labels['location'] = 'Τοποθεσία';
+$labels['info'] = 'Πληροφορίες';
+$labels['getfoldersize'] = 'Κάντε κλικ εδώ για να δείτε το μέγεθος του φακέλου';
+$labels['changesubscription'] = 'Κάντε κλικ εδώ για να αλλάξετε τη συνδρομή σας';
+$labels['foldertype'] = 'Τύπος φακέλου';
+$labels['personalfolder'] = 'Προσωπικός φάκελος';
+$labels['otherfolder'] = 'Φάκελοι άλλων χρηστών';
+$labels['sharedfolder'] = 'Κοινόχρηστος φάκελος';
 $labels['sortby'] = 'Ταξινόμηση κατά';
 $labels['sortasc'] = 'Αύξουσα ταξινόμηση';
 $labels['sortdesc'] = 'Φθίνουσα ταξινόμηση';
+$labels['undo'] = 'Αναίρεση';
+$labels['plugin'] = 'Πρόσθετο';
+$labels['version'] = 'Έκδοση';
+$labels['source'] = 'Προέλευση';
+$labels['license'] = 'Άδεια χρήσης';
+$labels['support'] = 'Υποστήριξη';
+$labels['B'] = 'B';
+$labels['KB'] = 'KB';
+$labels['MB'] = 'MB';
+$labels['GB'] = 'GB';
+$labels['unicode'] = 'Unicode';
+$labels['english'] = 'Αγγλικά';
+$labels['westerneuropean'] = 'Δυτικής Ευρώπης';
+$labels['easterneuropean'] = 'Ανατολικής Ευρώπης';
+$labels['southeasterneuropean'] = 'Νοτιο-Ανατολικής Ευρώπης';
+$labels['baltic'] = 'Βαλτικής';
+$labels['cyrillic'] = 'Κυριλλικά';
+$labels['arabic'] = 'Αραβικά';
+$labels['greek'] = 'Ελληνικά';
+$labels['hebrew'] = 'Εβραϊκά';
+$labels['turkish'] = 'Τουρκικά';
+$labels['nordic'] = 'Σκανδιναβικά';
+$labels['thai'] = 'Ταϊλανδέζικα';
+$labels['celtic'] = 'Κελτικά';
+$labels['vietnamese'] = 'Βιετναμέζικα';
+$labels['japanese'] = 'Ιαπωνικά';
+$labels['korean'] = 'Κορεατικά';
+$labels['chinese'] = 'Κινεζικά';
 
-?>
index 973c30443ea7db2efd9d0f0be83a793f20cd32dc..de447af53f36353c237a08757c744682910dd150 100644 (file)
@@ -1,34 +1,37 @@
 <?php
-/*
-+-----------------------------------------------------------------------+
-| language/el/messages.inc                                              |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Jim Deves <jim@cobaltblue.gr>                                 |
-|         John Economou <hsoc@irc.gr>                                   |
-|         Panagiotis Christias <p.christias@noc.ntua.gr>                |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 4627 2011-03-31 13:47:22Z yllar $
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/el_GR/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Nikos Keramidis <info@torus.gr>                               |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $messages = array();
+$messages['errortitle'] = 'Έχει προκύψει κάποιο σφάλμα!';
 $messages['loginfailed'] = 'Είσοδος απέτυχε';
 $messages['cookiesdisabled'] = 'Ο περιηγητής σας (browser) δεν αποδέχεται cookies';
 $messages['sessionerror'] = 'Η συνεδρία σας είναι άκυρη ή έχει λήξει';
-$messages['imaperror'] = 'Η σύνδεση με το διακομιστή IMAP απέτυχε';
+$messages['storageerror'] = 'Η σύνδεση με το διακομιστή IMAP απέτυχε';
 $messages['servererror'] = 'Σφάλμα του εξυπηρετητή!';
+$messages['servererrormsg'] = 'Σφάλμα εξυπηρετητή: $msg';
+$messages['dberror'] = 'Σφάλμα βάσης δεδομένων!';
+$messages['errorreadonly'] = 'Η διαδικασία δεν μπορεί να ολοκληρωθεί. Ο φάκελος είναι μόνο για ανάγνωση.';
+$messages['errornoperm'] = 'Η διαδικασία δεν μπορεί να ολοκληρωθεί. Άρνηση άδειας';
 $messages['invalidrequest'] = 'Λανθασμένο αίτημα! Δεν αποθηκεύτηκαν δεδομένα.';
 $messages['nomessagesfound'] = 'Δε βρέθηκαν μηνύματα σε αυτή τη θυρίδα';
 $messages['loggedout'] = 'Έχετε τερματίσει επιτυχώς τη συνεδρία. Αντίο!';
 $messages['mailboxempty'] = 'Η θυρίδα είναι άδεια';
 $messages['loading'] = 'Φόρτωση...';
 $messages['uploading'] = 'Το αρχείο φορτώνεται...';
+$messages['uploadingmany'] = 'Φόρτωση αρχείων...';
 $messages['loadingdata'] = 'Φόρτωση δεδομένων...';
 $messages['checkingmail'] = 'Έλεγχος για νέα μηνύματα...';
 $messages['sendingmessage'] = 'Αποστολή μηνύματος...';
@@ -38,21 +41,27 @@ $messages['messagesaved'] = 'Μήνυμα αποθηκεύτηκε στα Πρό
 $messages['successfullysaved'] = 'Αποθηκεύτηκε επιτυχώς';
 $messages['addedsuccessfully'] = 'Η επαφή προστέθηκε επιτυχώς στις Επαφές';
 $messages['contactexists'] = 'Υπάρχει ήδη επαφή με αυτή τη διεύθυνση e-mail';
+$messages['contactnameexists'] = 'Μια επαφή με το ίδιο όνομα υπάρχει ήδη.';
 $messages['blockedimages'] = 'Για να προστατευτεί το απόρρητο σας, οι απομακρυσμένες εικόνες έχουν απενεργοποιηθεί σε αυτό το μήνυμα.';
 $messages['encryptedmessage'] = 'Αυτό το μήνυμα είναι κρυπτογραφημένο και δε μπορεί να προβληθεί. Συγνώμη!';
 $messages['nocontactsfound'] = 'Δε βρέθηκαν επαφές';
 $messages['contactnotfound'] = 'Η ζητούμενη επαφή δεν βρέθηκε';
+$messages['contactsearchonly'] = 'Εισάγετε κάποιους όρους προς αναζήτηση';
 $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['folderdeleting'] = 'Διαγραφή φακέλου';
 $messages['foldermoving'] = 'Μεταφορά φακέλου';
 $messages['formincomplete'] = 'Η φόρμα δεν έχει συμπληρωθεί πλήρως';
@@ -65,15 +74,17 @@ $messages['nosubjectwarning'] = 'Το πεδίο "Θέμα" είναι άδει
 $messages['nobodywarning'] = 'Αποστολή μηνύματος χωρίς κείμενο;';
 $messages['notsentwarning'] = 'Το μήνυμα δεν έχει σταλεί. Θέλετε να το απορρίψετε;';
 $messages['noldapserver'] = 'Παρακαλώ επιλέξτε έναν LDAP διακομιστή για αναζήτηση';
-$messages['nocontactsreturned'] = 'Δε βρέθηκαν επαφές';
 $messages['nosearchname'] = 'Παρακαλώ εισάγεται όνομα επαφής ή διεύθυνση email';
 $messages['notuploadedwarning'] = 'Δεν έχουν φορτωθεί όλα τα συνημμένα. Παρακαλώ περιμένετε ή ακυρώστε το ανέβασμα.';
 $messages['searchsuccessful'] = '$nr μηνύματα βρέθηκαν';
+$messages['contactsearchsuccessful'] = '$nr επαφές βρέθηκαν.';
 $messages['searchnomatch'] = 'Η αναζήτηση δεν επέστρεψε αποτελέσματα';
 $messages['searching'] = 'Αναζήτηση...';
 $messages['checking'] = 'Έλεγχος...';
 $messages['nospellerrors'] = 'Δε βρέθηκαν ορθογραφικά λάθη';
 $messages['folderdeleted'] = 'Ο φάκελος διαγράφηκε επιτυχώς';
+$messages['folderpurged'] = 'Ο φάκελος καθαρίστηκε με επιτυχία.';
+$messages['folderexpunged'] = 'Ο φάκελος συμπιέστηκε με επιτυχία.';
 $messages['deletedsuccessfully'] = 'Διαγραφή Επιτυχώς';
 $messages['converting'] = 'Μετακίνηση διαμορφώσεων κειμένου...';
 $messages['messageopenerror'] = 'Η φόρτωση μηνυμάτων από τον διακομιστή απέτυχε';
@@ -84,16 +95,28 @@ $messages['copyerror'] = 'Αποτυχία αντιγραφής διευθύνσ
 $messages['sourceisreadonly'] = 'Η διεύθυνση έχει μόνο δικαίωμα ανάγνωσης';
 $messages['errorsavingcontact'] = 'Αποθήκευση επαφής απέτυχε';
 $messages['movingmessage'] = 'Μετακίνηση μηνύματος...';
+$messages['copyingmessage'] = 'Αντιγραφή μηνυμάτων...';
+$messages['copyingcontact'] = 'Αντιγραφή επαφών...';
+$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['importwait'] = 'Εισαγωγή, παρακαλώ περιμένετε...';
 $messages['importerror'] = 'Η εισαγωγή απέτυχε! Το αρχείο δεν είναι έγκυρο vcard αρχείο.';
+$messages['importconfirm'] = '<b>Εισήχθησαν $inserted επαφές με επιτυχία</b>';
+$messages['importconfirmskipped'] = '<b>Παραλήφθηκαν $skipped υπάρχοντα αντικείμενα</b>';
 $messages['opnotpermitted'] = 'Η λειτουργία δεν επιτρέπεται!';
 $messages['nofromaddress'] = 'Στην επιλεγμένη ταυτότητα, λείπει η email διεύθυνση';
+$messages['editorwarning'] = 'Η μετάβαση στην επεξεργασία απλού κειμένου θα προκαλέσει κατάργηση της μορφοποίησης. Είστε βέβαιοι πως θέλετε να συνεχίσετε;';
 $messages['httpreceivedencrypterror'] = 'Ούπς! Ανεπανόθωτο σφάλμα. Επικοινωνήστε με το διαχειριστή του εξυπηρετητή. <b>Το μηνυμά σας δεν στάλθηκε.</b>';
 $messages['smtpconnerror'] = 'Σφάλμα SMTP ($code): Απέτυχε η σύνδεση με τον εξυπηρετητή';
 $messages['smtpautherror'] = 'Σφάλμα SMTP ($code): Σφάλμα ταυτοποίησης';
@@ -102,5 +125,9 @@ $messages['smtptoerror'] = 'Σφάλμα SMTP ($code): Αποτυχία προσ
 $messages['smtprecipientserror'] = 'Σφάλμα SMTP: Αδύνατο να προσπελαστεί η λίστα παραληπτών';
 $messages['smtperror'] = 'Σφάλμα SMTP: $msg';
 $messages['emailformaterror'] = 'Λανθασμένη διεύθνση email: $email';
+$messages['toomanyrecipients'] = 'Μεγάλο πλήθος αποδεκτών. Μειώστε τον αριθμό των αποδεκτών σε $max.';
+$messages['maxgroupmembersreached'] = 'Ο αριθμός των μελών της ομάδας υπερβαίνει τον μέγιστο των $max μελών.';
+$messages['internalerror'] = 'Προέκυψε ένα εσωτερικό σφάλμα. Παρακαλώ δοκιμάστε πάλι.';
+$messages['contactdelerror'] = 'Δεν είναι δυνατή η διαγραφή της επαφής/ων';
+$messages['contactdeleted'] = 'Η επαφή/ές διαγράφηκαν με επιτυχία.';
 
-?>
index 9bb70394ffef9ad4b6acebec85449b1e95195c7f..cb9c25c97dfe6b135b52aedb0fa37c45af33f857 100644 (file)
@@ -1,21 +1,16 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/en_GB/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Weiran Zhang (weiran@weiran.co.uk)                            |
-|         Phil Weir                                                     |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 5184 2011-09-07 06:33:15Z alec $
-
+ +-----------------------------------------------------------------------+
+ | localization/en_GB/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Lazlo                                                         |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
@@ -26,7 +21,7 @@ $labels['server'] = 'Server';
 $labels['login'] = 'Login';
 $labels['logout'] = 'Logout';
 $labels['mail'] = 'Mail';
-$labels['settings'] = 'Personal Settings';
+$labels['settings'] = 'Settings';
 $labels['addressbook'] = 'Address Book';
 $labels['inbox'] = 'Inbox';
 $labels['drafts'] = 'Drafts';
@@ -43,12 +38,15 @@ $labels['followupto'] = 'Followup-To';
 $labels['date'] = 'Date';
 $labels['size'] = 'Size';
 $labels['priority'] = 'Priority';
-$labels['organization'] = 'Organisation';
+$labels['organization'] = 'Company';
 $labels['readstatus'] = 'Read status';
+$labels['listoptions'] = 'List options...';
 $labels['mailboxlist'] = 'Folders';
+$labels['folders'] = 'Folders';
 $labels['messagesfromto'] = 'Messages $from to $to of $count';
 $labels['threadsfromto'] = 'Threads $from to $to of $count';
 $labels['messagenrof'] = 'Message $nr of $count';
+$labels['fromtoshort'] = '$from – $to of $count';
 $labels['copy'] = 'Copy';
 $labels['move'] = 'Move';
 $labels['moveto'] = 'Move to...';
@@ -75,6 +73,7 @@ $labels['feb'] = 'Feb';
 $labels['mar'] = 'Mar';
 $labels['apr'] = 'Apr';
 $labels['may'] = 'May';
+$labels['longmay'] = 'May';
 $labels['jun'] = 'Jun';
 $labels['jul'] = 'Jul';
 $labels['aug'] = 'Aug';
@@ -86,7 +85,6 @@ $labels['longjan'] = 'January';
 $labels['longfeb'] = 'February';
 $labels['longmar'] = 'March';
 $labels['longapr'] = 'April';
-$labels['longmay'] = 'May';
 $labels['longjun'] = 'June';
 $labels['longjul'] = 'July';
 $labels['longaug'] = 'August';
@@ -95,17 +93,21 @@ $labels['longoct'] = 'October';
 $labels['longnov'] = 'November';
 $labels['longdec'] = 'December';
 $labels['today'] = 'Today';
+$labels['refresh'] = 'Refresh';
 $labels['checkmail'] = 'Check for new messages';
+$labels['compose'] = 'Compose a message';
 $labels['writenewmessage'] = 'Create a new message';
+$labels['reply'] = 'Reply';
 $labels['replytomessage'] = 'Reply to sender';
 $labels['replytoallmessage'] = 'Reply to list or to sender and all recipients';
 $labels['replyall'] = 'Reply all';
 $labels['replylist'] = 'Reply list';
+$labels['forward'] = 'Forward';
 $labels['forwardinline'] = 'Forward inline';
 $labels['forwardattachment'] = 'Forward as attachment';
 $labels['forwardmessage'] = 'Forward the message';
 $labels['deletemessage'] = 'Delete message';
-$labels['movemessagetotrash'] = 'Move message to "Deleted Items"';
+$labels['movemessagetotrash'] = 'Move message to "Deleted Items';
 $labels['printmessage'] = 'Print this message';
 $labels['previousmessage'] = 'Show the previous message';
 $labels['firstmessage'] = 'Show the first message';
@@ -113,15 +115,20 @@ $labels['nextmessage'] = 'Show the next message';
 $labels['lastmessage'] = 'Show the last message';
 $labels['backtolist'] = 'Back to message list';
 $labels['viewsource'] = 'Show source';
+$labels['mark'] = 'Mark';
 $labels['markmessages'] = 'Mark messages';
 $labels['markread'] = 'As read';
 $labels['markunread'] = 'As unread';
 $labels['markflagged'] = 'As flagged';
 $labels['markunflagged'] = 'As unflagged';
-$labels['messageactions'] = 'More actions...';
+$labels['moreactions'] = 'More actions...';
+$labels['more'] = 'More';
+$labels['back'] = 'Back';
+$labels['options'] = 'Options';
 $labels['select'] = 'Select';
 $labels['all'] = 'All';
 $labels['none'] = 'None';
+$labels['nonesort'] = 'None';
 $labels['currpage'] = 'Current page';
 $labels['unread'] = 'Unread';
 $labels['flagged'] = 'Flagged';
@@ -141,7 +148,6 @@ $labels['expand_only_unread'] = 'only with unread messages';
 $labels['fromto'] = 'From/To';
 $labels['flag'] = 'Flag';
 $labels['attachment'] = 'Attachment';
-$labels['nonesort'] = 'None';
 $labels['sentdate'] = 'Sent date';
 $labels['arrival'] = 'Arrival date';
 $labels['asc'] = 'ascending';
@@ -162,7 +168,6 @@ $labels['searchmod'] = 'Search modifiers';
 $labels['msgtext'] = 'Entire message';
 $labels['openinextwin'] = 'Open in new window';
 $labels['emlsave'] = 'Download (.eml)';
-$labels['compose'] = 'Compose a message';
 $labels['editasnew'] = 'Edit as new';
 $labels['savemessage'] = 'Save this draft';
 $labels['sendmessage'] = 'Send now';
@@ -174,9 +179,11 @@ $labels['dsn'] = 'Delivery status notification';
 $labels['mailreplyintro'] = 'On $date, $sender wrote:';
 $labels['originalmessage'] = 'Original Message';
 $labels['editidents'] = 'Edit identities';
+$labels['spellcheck'] = 'Spell';
 $labels['checkspelling'] = 'Check spelling';
 $labels['resumeediting'] = 'Resume editing';
 $labels['revertto'] = 'Revert to';
+$labels['attach'] = 'Attach';
 $labels['attachments'] = 'Attachments';
 $labels['upload'] = 'Upload';
 $labels['uploadprogress'] = '$percent ($current from $total)';
@@ -190,6 +197,7 @@ $labels['highest'] = 'Highest';
 $labels['nosubject'] = '(no subject)';
 $labels['showimages'] = 'Display images';
 $labels['alwaysshow'] = 'Always show images from $sender';
+$labels['isdraft'] = 'This is a draft message.';
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = 'Plain text';
 $labels['savesentmessagein'] = 'Save sent message in';
@@ -211,7 +219,6 @@ $labels['nameprefix'] = 'Title';
 $labels['namesuffix'] = 'Suffix';
 $labels['nickname'] = 'Nickname';
 $labels['jobtitle'] = 'Job Title';
-$labels['organization'] = 'Company';
 $labels['department'] = 'Department';
 $labels['gender'] = 'Gender';
 $labels['maidenname'] = 'Maiden Name';
@@ -232,14 +239,16 @@ $labels['male'] = 'male';
 $labels['female'] = 'female';
 $labels['manager'] = 'Manager';
 $labels['assistant'] = 'Assistant';
+$labels['typeassistant'] = 'Assistant';
 $labels['spouse'] = 'Spouse';
 $labels['allfields'] = 'All fields';
 $labels['search'] = 'Search';
 $labels['advsearch'] = 'Advanced Search';
+$labels['advanced'] = 'Advanced';
 $labels['other'] = 'Other';
+$labels['typeother'] = 'Other';
 $labels['typehome'] = 'Home';
 $labels['typework'] = 'Work';
-$labels['typeother'] = 'Other';
 $labels['typemobile'] = 'Mobile';
 $labels['typemain'] = 'Main';
 $labels['typehomefax'] = 'Home Fax';
@@ -247,8 +256,9 @@ $labels['typeworkfax'] = 'Work Fax';
 $labels['typecar'] = 'Car';
 $labels['typepager'] = 'Pager';
 $labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Assistant';
 $labels['typehomepage'] = 'Home Page';
+$labels['typeblog'] = 'Blog';
+$labels['typeprofile'] = 'Profile';
 $labels['addfield'] = 'Add field...';
 $labels['addcontact'] = 'Add new contact';
 $labels['editcontact'] = 'Edit contact';
@@ -262,6 +272,7 @@ $labels['delete'] = 'Delete';
 $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';
@@ -270,9 +281,9 @@ $labels['print'] = 'Print';
 $labels['export'] = 'Export';
 $labels['exportvcards'] = 'Export contacts in vCard format';
 $labels['newcontactgroup'] = 'Create new contact group';
-$labels['groupactions'] = 'Actions for contact groups...';
 $labels['grouprename'] = 'Rename group';
 $labels['groupdelete'] = 'Delete group';
+$labels['groupremoveselected'] = 'Remove selected contacts from group';
 $labels['previouspage'] = 'Show previous set';
 $labels['firstpage'] = 'Show first set';
 $labels['nextpage'] = 'Show next set';
@@ -280,6 +291,8 @@ $labels['lastpage'] = 'Show last set';
 $labels['group'] = 'Group';
 $labels['groups'] = 'Groups';
 $labels['personaladrbook'] = 'Personal Addresses';
+$labels['searchsave'] = 'Save search';
+$labels['searchdelete'] = 'Delete search';
 $labels['import'] = 'Import';
 $labels['importcontacts'] = 'Import contacts';
 $labels['importfromfile'] = 'Import from file:';
@@ -288,6 +301,7 @@ $labels['importreplace'] = 'Replace the entire address book';
 $labels['importtext'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> data format.';
 $labels['done'] = 'Done';
 $labels['settingsfor'] = 'Settings for';
+$labels['about'] = 'About';
 $labels['preferences'] = 'Preferences';
 $labels['userpreferences'] = 'User preferences';
 $labels['editpreferences'] = 'Edit user preferences';
@@ -299,6 +313,8 @@ $labels['edititem'] = 'Edit item';
 $labels['preferhtml'] = 'Display HTML';
 $labels['defaultcharset'] = 'Default Character Set';
 $labels['htmlmessage'] = 'HTML Message';
+$labels['dateformat'] = 'Date format';
+$labels['timeformat'] = 'Time format';
 $labels['prettydate'] = 'Pretty dates';
 $labels['setdefault'] = 'Set default';
 $labels['autodetect'] = 'Auto';
@@ -327,6 +343,7 @@ $labels['readwhendeleted'] = 'Mark the message as read on delete';
 $labels['flagfordeletion'] = 'Flag the message for deletion instead of delete';
 $labels['skipdeleted'] = 'Do not show deleted messages';
 $labels['deletealways'] = 'If moving messages to "Deleted Items" fails, permanently delete them';
+$labels['deletejunk'] = 'Directly delete messages in Junk';
 $labels['showremoteimages'] = 'Display remote inline images';
 $labels['fromknownsenders'] = 'from known senders';
 $labels['always'] = 'always';
@@ -347,11 +364,12 @@ $labels['advancedoptions'] = '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';
+$labels['defaultfont'] = 'Default font of HTML message';
 $labels['mainoptions'] = 'Main Options';
+$labels['browseroptions'] = 'Browser Options';
 $labels['section'] = 'Section';
 $labels['maintenance'] = 'Maintenance';
 $labels['newmessage'] = 'New Message';
-$labels['listoptions'] = 'List Options';
 $labels['signatureoptions'] = 'Signature Options';
 $labels['whenreplying'] = 'When replying';
 $labels['replytopposting'] = 'start new message above original';
@@ -370,9 +388,16 @@ $labels['reqmdn'] = 'Always request a return receipt';
 $labels['reqdsn'] = 'Always request a delivery status notification';
 $labels['replysamefolder'] = 'Place replies in the folder of the message being replied to';
 $labels['defaultaddressbook'] = 'Add new contacts to the selected addressbook';
+$labels['autocompletesingle'] = 'Skip alternative email addresses in autocompletion';
+$labels['listnamedisplay'] = 'List contacts as';
 $labels['spellcheckbeforesend'] = 'Check spelling before sending a message';
+$labels['spellcheckoptions'] = 'Spellcheck Options';
+$labels['spellcheckignoresyms'] = 'Ignore words with symbols';
+$labels['spellcheckignorenums'] = 'Ignore words with numbers';
+$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalised';
+$labels['addtodict'] = 'Add to dictionary';
+$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
 $labels['folder'] = 'Folder';
-$labels['folders'] = 'Folders';
 $labels['foldername'] = 'Folder name';
 $labels['subscribed'] = 'Subscribed';
 $labels['messagecount'] = 'Messages';
@@ -395,6 +420,11 @@ $labels['sortby'] = 'Sort by';
 $labels['sortasc'] = 'Sort ascending';
 $labels['sortdesc'] = 'Sort descending';
 $labels['undo'] = 'Undo';
+$labels['plugin'] = 'Plugin';
+$labels['version'] = 'Version';
+$labels['source'] = 'Source';
+$labels['license'] = 'Licence';
+$labels['support'] = 'Get support';
 $labels['B'] = 'B';
 $labels['KB'] = 'KB';
 $labels['MB'] = 'MB';
@@ -418,4 +448,3 @@ $labels['japanese'] = 'Japanese';
 $labels['korean'] = 'Korean';
 $labels['chinese'] = 'Chinese';
 
-?>
\ No newline at end of file
index 6d344be5899a27597c450dd8261d06d0b20d1844..daa44d1bbbc68dc28764a8ef69a900d5cdfb72a1 100644 (file)
@@ -1,31 +1,28 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/en_GB/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Weiran Zhang (weiran@weiran.co.uk)                            |
-|         Phil Weir                                                     |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 5173 2011-09-05 18:41:04Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/en_GB/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kevin Beynon                                                  |
+ +-----------------------------------------------------------------------+
 */
 
 $messages = array();
+$messages['errortitle'] = 'An error occured.';
 $messages['loginfailed'] = 'Login failed.';
 $messages['cookiesdisabled'] = 'Your browser does not accept cookies.';
 $messages['sessionerror'] = 'Your session is invalid or has expired.';
-$messages['imaperror'] = 'Connection to IMAP server failed.';
+$messages['storageerror'] = 'Connection to IMAP server failed.';
 $messages['servererror'] = 'Server Error!';
 $messages['servererrormsg'] = 'Server Error: $msg';
 $messages['dberror'] = 'Database Error!';
+$messages['requesttimedout'] = 'Request timed out';
 $messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only.';
 $messages['errornoperm'] = 'Unable to perform operation. Permission denied.';
 $messages['invalidrequest'] = 'Invalid request! No data was saved.';
@@ -49,6 +46,7 @@ $messages['blockedimages'] = 'To protect your privacy, remote images are blocked
 $messages['encryptedmessage'] = 'This is an encrypted message and can not be displayed. Sorry!';
 $messages['nocontactsfound'] = 'No contacts found.';
 $messages['contactnotfound'] = 'The requested contact was not found.';
+$messages['contactsearchonly'] = 'Enter some search terms to find contacts';
 $messages['sendingfailed'] = 'Failed to send message.';
 $messages['senttooquickly'] = 'Please wait $sec sec(s). before sending this message.';
 $messages['errorsavingsent'] = 'An error occurred while saving sent message.';
@@ -62,6 +60,7 @@ $messages['deletegroupconfirm'] = 'Do you really want to delete the selected gro
 $messages['deletemessagesconfirm'] = 'Do you really want to delete the selected message(s)?';
 $messages['deletefolderconfirm'] = 'Do you really want to delete this folder?';
 $messages['purgefolderconfirm'] = 'Do you really want to delete all messages in this folder?';
+$messages['contactdeleting'] = 'Deleting contact(s)...';
 $messages['groupdeleting'] = 'Deleting group...';
 $messages['folderdeleting'] = 'Deleting folder...';
 $messages['foldermoving'] = 'Moving folder...';
@@ -77,10 +76,10 @@ $messages['nosubjectwarning'] = 'The "Subject" field is empty. Would you like to
 $messages['nobodywarning'] = 'Send this message without any text?';
 $messages['notsentwarning'] = 'Your message has not been sent. Do you want to discard it?';
 $messages['noldapserver'] = 'Please select an LDAP server to search.';
-$messages['nocontactsreturned'] = 'No contacts were found.';
 $messages['nosearchname'] = 'Please enter a contact name or email address.';
 $messages['notuploadedwarning'] = 'Not all attachments have been uploaded yet. Please wait or cancel the upload.';
 $messages['searchsuccessful'] = '$nr messages found.';
+$messages['contactsearchsuccessful'] = '$nr contacts found.';
 $messages['searchnomatch'] = 'Search found no matches.';
 $messages['searching'] = 'Searching...';
 $messages['checking'] = 'Checking...';
@@ -108,6 +107,7 @@ $messages['addingmember'] = 'Adding contact(s) to the group...';
 $messages['removingmember'] = 'Removing contact(s) from the group...';
 $messages['receiptsent'] = 'Successfully sent a read receipt.';
 $messages['errorsendingreceipt'] = 'Could not send the receipt.';
+$messages['deleteidentityconfirm'] = 'Do you really want to delete this identity?';
 $messages['nodeletelastidentity'] = 'You cannot delete this identity, it\'s your last one.';
 $messages['forbiddencharacter'] = 'Folder name contains a forbidden character.';
 $messages['selectimportfile'] = 'Please select a file to upload.';
@@ -127,7 +127,6 @@ $messages['smtpautherror'] = 'SMTP Error ($code): Authentication failed.';
 $messages['smtpfromerror'] = 'SMTP Error ($code): Failed to set sender "$from" ($msg).';
 $messages['smtptoerror'] = 'SMTP Error ($code): Failed to add recipient "$to" ($msg).';
 $messages['smtprecipientserror'] = 'SMTP Error: Unable to parse recipients list.';
-$messages['smtpdsnerror'] = 'SMTP Error: Server does not support Delivery Status Notifications.';
 $messages['smtperror'] = 'SMTP Error: $msg';
 $messages['emailformaterror'] = 'Incorrect e-mail address: $email';
 $messages['toomanyrecipients'] = 'Too many recipients. Reduce the number of recipients to $max.';
@@ -140,11 +139,16 @@ $messages['contactrestored'] = 'Contact(s) successfully restored.';
 $messages['groupdeleted'] = 'Group deleted successfully.';
 $messages['grouprenamed'] = 'Group renamed successfully.';
 $messages['groupcreated'] = 'Group created successfully.';
+$messages['savedsearchdeleted'] = 'Saved search deleted successfully.';
+$messages['savedsearchdeleteerror'] = 'Could not delete saved search.';
+$messages['savedsearchcreated'] = 'Saved search created successfully.';
+$messages['savedsearchcreateerror'] = 'Could not create saved search.';
 $messages['messagedeleted'] = 'Message(s) deleted successfully.';
 $messages['messagemoved'] = 'Message(s) moved successfully.';
 $messages['messagecopied'] = 'Message(s) copied successfully.';
 $messages['messagemarked'] = 'Message(s) marked successfully.';
 $messages['autocompletechars'] = 'Enter at least $min characters for autocompletion.';
+$messages['autocompletemore'] = 'More matching entries found. Please type more characters.';
 $messages['namecannotbeempty'] = 'Name cannot be empty.';
 $messages['nametoolong'] = 'Name is too long.';
 $messages['folderupdated'] = 'Successfully updated folder.';
@@ -152,5 +156,5 @@ $messages['foldercreated'] = 'Successfully created folder.';
 $messages['invalidimageformat'] = 'Not a valid image format.';
 $messages['mispellingsfound'] = 'Spelling errors detected in the message.';
 $messages['parentnotwritable'] = 'Unable to create/move folder into selected parent folder. No access rights.';
+$messages['messagetoobig'] = 'The message part is too big to process it.';
 
-?>
\ No newline at end of file
index 2eea07bf7fecadb2a820669d316b192910615054..29df2517152c447c82d8768df5b43ce06c568aad 100644 (file)
@@ -6,14 +6,17 @@
  | language/en_US/labels.inc                                             |
  |                                                                       |
  | Language file of the Roundcube Webmail client                         |
- | Copyright (C) 2005-2010, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2005-2011, 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: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- @version $Id: labels.inc 5873 2012-02-11 13:50:04Z thomasb $
+ @version $Id$
 
 */
 
@@ -52,11 +55,13 @@ $labels['size']    = 'Size';
 $labels['priority'] = 'Priority';
 $labels['organization'] = 'Organization';
 $labels['readstatus'] = 'Read status';
+$labels['listoptions'] = 'List options...';
 
 $labels['mailboxlist'] = 'Folders';
 $labels['messagesfromto'] = 'Messages $from to $to of $count';
 $labels['threadsfromto'] = 'Threads $from to $to of $count';
 $labels['messagenrof'] = 'Message $nr of $count';
+$labels['fromtoshort'] = '$from – $to of $count';
 
 $labels['copy']     = 'Copy';
 $labels['move']     = 'Move';
@@ -117,12 +122,16 @@ $labels['longdec']        = 'December';
 $labels['today'] = 'Today';
 
 // toolbar buttons
+$labels['refresh']          = 'Refresh';
 $labels['checkmail']        = 'Check for new messages';
+$labels['compose']          = 'Compose';
 $labels['writenewmessage']  = 'Create a new message';
+$labels['reply']            = 'Reply';
 $labels['replytomessage']   = 'Reply to sender';
 $labels['replytoallmessage'] = 'Reply to list or to sender and all recipients';
 $labels['replyall']         = 'Reply all';
 $labels['replylist']        = 'Reply list';
+$labels['forward']          = 'Forward';
 $labels['forwardinline']    = 'Forward inline';
 $labels['forwardattachment'] = 'Forward as attachment';
 $labels['forwardmessage']   = 'Forward the message';
@@ -135,12 +144,16 @@ $labels['nextmessage']      = 'Show next message';
 $labels['lastmessage']      = 'Show last message';
 $labels['backtolist']       = 'Back to message list';
 $labels['viewsource']       = 'Show source';
+$labels['mark']             = 'Mark';
 $labels['markmessages']     = 'Mark messages';
 $labels['markread']         = 'As read';
 $labels['markunread']       = 'As unread';
 $labels['markflagged']      = 'As flagged';
 $labels['markunflagged']    = 'As unflagged';
 $labels['moreactions']      = 'More actions...';
+$labels['more']             = 'More';
+$labels['back']             = 'Back';
+$labels['options']          = 'Options';
 
 $labels['select'] = 'Select';
 $labels['all'] = 'All';
@@ -192,10 +205,9 @@ $labels['openinextwin'] = 'Open in new window';
 $labels['emlsave'] = 'Download (.eml)';
 
 // message compose
-$labels['compose']        = 'Compose a message';
 $labels['editasnew']      = 'Edit as new';
-$labels['savemessage']    = 'Save this draft';
-$labels['sendmessage']    = 'Send now';
+$labels['savemessage']    = 'Save as draft';
+$labels['sendmessage']    = 'Send message';
 $labels['addattachment']  = 'Attach a file';
 $labels['charset']        = 'Charset';
 $labels['editortype']     = 'Editor type';
@@ -205,10 +217,12 @@ $labels['mailreplyintro'] = 'On $date, $sender wrote:';
 $labels['originalmessage'] = 'Original Message';
 
 $labels['editidents']    = 'Edit identities';
+$labels['spellcheck']    = 'Spell';
 $labels['checkspelling'] = 'Check spelling';
 $labels['resumeediting'] = 'Resume editing';
 $labels['revertto']      = 'Revert to';
 
+$labels['attach'] = 'Attach';
 $labels['attachments'] = 'Attachments';
 $labels['upload'] = 'Upload';
 $labels['uploadprogress'] = '$percent ($current from $total)';
@@ -225,6 +239,7 @@ $labels['nosubject']  = '(no subject)';
 $labels['showimages'] = 'Display images';
 $labels['alwaysshow'] = 'Always show images from $sender';
 $labels['isdraft']    = 'This is a draft message.';
+$labels['andnmore']   = '$nr more...';
 
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = 'Plain text';
@@ -276,6 +291,7 @@ $labels['spouse'] = 'Spouse';
 $labels['allfields'] = 'All fields';
 $labels['search'] = 'Search';
 $labels['advsearch'] = 'Advanced Search';
+$labels['advanced'] = 'Advanced';
 $labels['other'] = 'Other';
 
 $labels['typehome']   = 'Home';
@@ -307,6 +323,7 @@ $labels['delete'] = 'Delete';
 $labels['rename'] = 'Rename';
 $labels['addphoto'] = 'Add';
 $labels['replacephoto'] = 'Replace';
+$labels['uploadphoto'] = 'Upload photo';
 
 $labels['newcontact']     = 'Create new contact card';
 $labels['deletecontact']  = 'Delete selected contacts';
@@ -318,6 +335,7 @@ $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';
 
 $labels['previouspage']   = 'Show previous page';
 $labels['firstpage']      = 'Show first page';
@@ -340,18 +358,18 @@ $labels['importtext'] = 'You can upload contacts from an existing address book.<
 $labels['done'] = 'Done';
 
 // settings
-$labels['settingsfor']  = 'Settings for';
+$labels['settingsfor'] = 'Settings for';
 $labels['about'] = 'About';
-$labels['preferences']  = 'Preferences';
-$labels['userpreferences']  = 'User preferences';
-$labels['editpreferences']  = 'Edit user preferences';
+$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['identities'] = 'Identities';
+$labels['manageidentities'] = 'Manage identities for this account';
+$labels['newidentity'] = 'New identity';
 
-$labels['newitem']  = 'New item';
-$labels['edititem']  = 'Edit item';
+$labels['newitem'] = 'New item';
+$labels['edititem'] = 'Edit item';
 
 $labels['preferhtml'] = 'Display HTML';
 $labels['defaultcharset'] = 'Default Character Set';
@@ -386,6 +404,7 @@ $labels['readwhendeleted'] = 'Mark the message as read on delete';
 $labels['flagfordeletion'] = 'Flag the message for deletion instead of delete';
 $labels['skipdeleted'] = 'Do not show deleted messages';
 $labels['deletealways'] = 'If moving messages to Trash fails, delete them';
+$labels['deletejunk'] = 'Directly delete messages in Junk';
 $labels['showremoteimages'] = 'Display remote inline images';
 $labels['fromknownsenders'] = 'from known senders';
 $labels['always'] = 'always';
@@ -408,10 +427,10 @@ $labels['checkallfolders'] = 'Check all folders for new messages';
 $labels['displaynext'] = 'After message delete/move display the next message';
 $labels['defaultfont'] = 'Default font of HTML message';
 $labels['mainoptions'] = 'Main Options';
+$labels['browseroptions'] = 'Browser Options';
 $labels['section'] = 'Section';
 $labels['maintenance'] = 'Maintenance';
 $labels['newmessage'] = 'New Message';
-$labels['listoptions'] = 'List Options';
 $labels['signatureoptions'] = 'Signature Options';
 $labels['whenreplying'] = 'When replying';
 $labels['replytopposting'] = 'start new message above original';
@@ -438,6 +457,10 @@ $labels['spellcheckignoresyms'] = 'Ignore words with symbols';
 $labels['spellcheckignorenums'] = 'Ignore words with numbers';
 $labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
 $labels['addtodict'] = 'Add to dictionary';
+$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
+$labels['forwardmode'] = 'Messages forwarding';
+$labels['inline'] = 'inline';
+$labels['asattachment'] = 'as attachment';
 
 $labels['folder']  = 'Folder';
 $labels['folders']  = 'Folders';
index 10a7a4503b1b73ecbb8ab45faa52944080e3b53f..cabc9998b4836c8911a8307cf149b9cbe0e251c9 100644 (file)
@@ -7,27 +7,33 @@
  |                                                                       |
  | Language file of the Roundcube Webmail client                         |
  | Copyright (C) 2005-2010, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- @version $Id: messages.inc 5569 2011-12-07 14:47:32Z thomasb $
+ @version $Id$
 
 */
 
 $messages = array();
+$messages['errortitle']  = 'An error occurred!';
 $messages['loginfailed']  = 'Login failed.';
 $messages['cookiesdisabled'] = 'Your browser does not accept cookies.';
 $messages['sessionerror'] = 'Your session is invalid or expired.';
-$messages['imaperror'] = 'Connection to IMAP server failed.';
+$messages['storageerror'] = 'Connection to storage server failed.';
 $messages['servererror'] = 'Server Error!';
 $messages['servererrormsg'] = 'Server Error: $msg';
 $messages['dberror'] = 'Database Error!';
+$messages['requesttimedout'] = 'Request timed out';
 $messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only.';
 $messages['errornoperm'] = 'Unable to perform operation. Permission denied.';
 $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.';
@@ -109,12 +115,14 @@ $messages['addingmember'] = 'Adding contact(s) to the group...';
 $messages['removingmember'] = 'Removing contact(s) from the group...';
 $messages['receiptsent'] = 'Successfully sent a read receipt.';
 $messages['errorsendingreceipt'] = 'Could not send the receipt.';
+$messages['deleteidentityconfirm'] = 'Do you really want to delete this identity?';
 $messages['nodeletelastidentity'] = 'You cannot delete this identity, it\'s your last one.';
 $messages['forbiddencharacter'] = 'Folder name contains a forbidden character.';
 $messages['selectimportfile'] = 'Please select a file to upload.';
 $messages['addresswriterror'] = 'The selected address book is not writeable.';
 $messages['contactaddedtogroup'] = 'Successfully added the contacts to this group.';
 $messages['contactremovedfromgroup'] = 'Successfully removed contacts from this group.';
+$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
 $messages['importwait'] = 'Importing, please wait...';
 $messages['importerror'] = 'Import failed! The uploaded file is not a valid vCard file.';
 $messages['importconfirm'] = '<b>Successfully imported $inserted contacts</b>';
index e55eafc7df74255790b5e04b7eb9fc1760772ec0..af3940c92e94d78ccfaa317f8b6c592f62a9efb2 100644 (file)
@@ -1,18 +1,16 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/eo/labels.inc                                                |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Andreas van Cranenburgh <andreas@unstable.nl>                 |
-+-----------------------------------------------------------------------+
-
+ +-----------------------------------------------------------------------+
+ | localization/eo/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Michael Moroni <michael.moroni@mailoo.org>                    |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
@@ -20,10 +18,10 @@ $labels['welcome'] = 'Bonvenon al $product';
 $labels['username'] = 'Uzantnomo';
 $labels['password'] = 'Pasvorto';
 $labels['server'] = 'Servilo';
-$labels['login'] = 'Ensalutu';
-$labels['logout'] = 'Elsalutu';
+$labels['login'] = 'Ensaluti';
+$labels['logout'] = 'Elsaluti';
 $labels['mail'] = 'Retpoŝto';
-$labels['settings'] = 'Preferoj';
+$labels['settings'] = 'Agordoj';
 $labels['addressbook'] = 'Adresaro';
 $labels['inbox'] = 'Ricevitujo';
 $labels['drafts'] = 'Malnetujo';
@@ -36,21 +34,25 @@ $labels['to'] = 'Ricevanto';
 $labels['cc'] = 'Kopio';
 $labels['bcc'] = 'Blindkopio';
 $labels['replyto'] = 'Respondu-Al';
+$labels['followupto'] = 'Respondo-Al';
 $labels['date'] = 'Dato';
 $labels['size'] = 'Grando';
 $labels['priority'] = 'Prioritato';
 $labels['organization'] = 'Organizo';
-$labels['reply-to'] = 'Respondu-Al';
+$labels['readstatus'] = 'Legis statuson';
+$labels['listoptions'] = 'List-agordoj...';
 $labels['mailboxlist'] = 'Dosierujoj';
+$labels['folders'] = 'Dosierujoj';
 $labels['messagesfromto'] = 'Mesaĝoj ekde $from ĝis $to de $count';
+$labels['threadsfromto'] = 'Fadenoj $from al $to de $count';
 $labels['messagenrof'] = 'Mesaĝo $nr-a de $count';
+$labels['fromtoshort'] = '$from - $to de $count';
+$labels['copy'] = 'Kopii';
+$labels['move'] = 'Movi';
 $labels['moveto'] = 'transloku al...';
 $labels['download'] = 'elŝutu';
 $labels['filename'] = 'Dosiernomo';
 $labels['filesize'] = 'Dosiergrando';
-$labels['preferhtml'] = 'Montru HTML';
-$labels['htmlmessage'] = 'HTML Mesaĝo';
-$labels['prettydate'] = 'Agrablaj Datoj';
 $labels['addtoaddressbook'] = 'Aldonu al adresaro';
 $labels['sun'] = 'Dim';
 $labels['mon'] = 'Lun';
@@ -60,7 +62,7 @@ $labels['thu'] = 'Ĵaŭ';
 $labels['fri'] = 'Ven';
 $labels['sat'] = 'Sab';
 $labels['sunday'] = 'Dimanĉo';
-$labels['monday'] = 'Luno';
+$labels['monday'] = 'Lundo';
 $labels['tuesday'] = 'Mardo';
 $labels['wednesday'] = 'Merkredo';
 $labels['thursday'] = 'Ĵaŭdo';
@@ -70,7 +72,8 @@ $labels['jan'] = 'Jan';
 $labels['feb'] = 'Feb';
 $labels['mar'] = 'Mar';
 $labels['apr'] = 'Apr';
-$labels['may'] = 'Maj';
+$labels['may'] = 'Majo';
+$labels['longmay'] = 'Majo';
 $labels['jun'] = 'Jun';
 $labels['jul'] = 'Jul';
 $labels['aug'] = 'Aŭg';
@@ -80,9 +83,8 @@ $labels['nov'] = 'Nov';
 $labels['dec'] = 'Dec';
 $labels['longjan'] = 'Januaro';
 $labels['longfeb'] = 'Februaro';
-$labels['longmar'] = 'Marĉo';
+$labels['longmar'] = 'Marto';
 $labels['longapr'] = 'Aprilo';
-$labels['longmay'] = 'Majo';
 $labels['longjun'] = 'Junio';
 $labels['longjul'] = 'Julio';
 $labels['longaug'] = 'Aŭgusto';
@@ -91,54 +93,101 @@ $labels['longoct'] = 'Oktobro';
 $labels['longnov'] = 'Novembro';
 $labels['longdec'] = 'Decembro';
 $labels['today'] = 'Hodiaŭ';
-$labels['checkmail'] = 'Kontrolu, ĉu novaj mesaĝoj';
-$labels['writenewmessage'] = 'Verku novan mesaĝon';
-$labels['replytomessage'] = 'Respondu al mesaĝo';
-$labels['replytoallmessage'] = 'Respondu al sendinto kaj ĉiu ricevinto';
+$labels['refresh'] = 'Aktualigi';
+$labels['checkmail'] = 'Kontroli por novaj mesaĝoj';
+$labels['compose'] = 'Verki';
+$labels['writenewmessage'] = 'Verki novan mesaĝon';
+$labels['reply'] = 'Respondi';
+$labels['replytomessage'] = 'Respondi al sendanto';
+$labels['replytoallmessage'] = 'Respondi al listo aŭ al sendanto kaj al ĉiuj ricevintoj';
+$labels['replyall'] = 'Respondi al ĉiuj';
+$labels['replylist'] = 'Respondi al listo';
+$labels['forward'] = 'Plusendi';
+$labels['forwardinline'] = 'Plusendu enmesaĝe';
+$labels['forwardattachment'] = 'Plusendu alfikse';
 $labels['forwardmessage'] = 'Plusendu mesaĝon';
 $labels['deletemessage'] = 'Forigu mesaĝon';
 $labels['movemessagetotrash'] = 'Transloku mesaĝon al rubujo';
 $labels['printmessage'] = 'Printu ĉi tiun mesaĝon';
 $labels['previousmessage'] = 'Montru antaŭan mesaĝon';
-$labels['previousmessages'] = 'Montru antaŭan aron de mesaĝoj';
 $labels['firstmessage'] = 'Montru unuan mesaĝon';
-$labels['firstmessages'] = 'Montru unuan aron de mesaĝoj';
 $labels['nextmessage'] = 'Montru sekvan mesaĝon';
-$labels['nextmessages'] = 'Montru sekvan aron de mesaĝoj';
 $labels['lastmessage'] = 'Montru lastan mesaĝon';
-$labels['lastmessages'] = 'Montru lastan aron de mesaĝoj';
 $labels['backtolist'] = 'Reen al mesaĝo-listo';
-$labels['viewsource'] = 'Montru fonton';
-$labels['markmessages'] = 'Marku mesaĝojn';
+$labels['viewsource'] = 'Montri fonton';
+$labels['mark'] = 'Marki';
+$labels['markmessages'] = 'Marki mesaĝojn';
 $labels['markread'] = 'Kiel legita';
 $labels['markunread'] = 'Kiel nelegita';
 $labels['markflagged'] = 'kiel markita';
 $labels['markunflagged'] = 'kiel nemarkita';
+$labels['moreactions'] = 'Pliaj agoj';
+$labels['more'] = 'Pli';
+$labels['back'] = 'Malantaŭen';
+$labels['options'] = 'Agordoj';
 $labels['select'] = 'Elektu';
 $labels['all'] = 'Ĉion';
 $labels['none'] = 'Nenion';
+$labels['nonesort'] = 'Nenion';
+$labels['currpage'] = 'Nuna paĝo';
 $labels['unread'] = 'Nelegitan';
+$labels['flagged'] = 'Markita';
+$labels['unanswered'] = 'Nerespondita';
+$labels['deleted'] = 'Forigita';
+$labels['invert'] = 'Inversigu';
+$labels['filter'] = 'Filtru';
+$labels['list'] = 'Listo';
+$labels['threads'] = 'Fadenoj';
+$labels['expand-all'] = 'Malfaldi ĉion';
+$labels['expand-unread'] = 'Malfaldi Nelegitajn';
+$labels['collapse-all'] = 'Faldi ĉion';
+$labels['threaded'] = 'Fadenita';
+$labels['autoexpand_threads'] = 'Malfaldi mesaĝ-fadenojn';
+$labels['do_expand'] = 'Ĉiuj fadenoj';
+$labels['expand_only_unread'] = 'Nur kun nelegitaj mesaĝoj';
+$labels['fromto'] = 'De/Al';
+$labels['flag'] = 'Marko';
+$labels['attachment'] = 'Aldonaĵo';
+$labels['sentdate'] = 'Send-dato';
+$labels['arrival'] = 'Ricev-dato';
+$labels['asc'] = 'kreskante';
+$labels['desc'] = 'malkreskante';
+$labels['listcolumns'] = 'List-rubrikoj';
+$labels['listsorting'] = 'Ordig-rubriko';
+$labels['listorder'] = 'Ordig-ordo';
+$labels['folderactions'] = 'Dosierujo-agoj';
 $labels['compact'] = 'Kompakta';
 $labels['empty'] = 'Malplena';
-$labels['purge'] = 'Senrubigu';
 $labels['quota'] = 'Diskuzo';
 $labels['unknown'] = 'nekonata';
 $labels['unlimited'] = 'senlima';
 $labels['quicksearch'] = 'Rapida serĉo';
 $labels['resetsearch'] = 'Vakigu serĉon';
-$labels['compose'] = 'Verku mesaĝon';
+$labels['searchmod'] = 'Serĉ-opcioj';
+$labels['msgtext'] = 'Tuta mesaĝo';
+$labels['openinextwin'] = 'Malfermu en nova fenestro';
+$labels['emlsave'] = 'Elŝutu (.eml)';
+$labels['editasnew'] = 'Redaktu kiel nova';
 $labels['savemessage'] = 'Savu ĉi tiun malneton';
 $labels['sendmessage'] = 'Sendu mesaĝon';
 $labels['addattachment'] = 'Alfiksu dosieron';
 $labels['charset'] = 'Karaktraro';
 $labels['editortype'] = 'Speco de redaktilo';
 $labels['returnreceipt'] = 'Return receipt';
+$labels['dsn'] = 'Ricev-status-konfirmo';
+$labels['mailreplyintro'] = 'Je $date, $sender skribis:';
+$labels['originalmessage'] = 'Originala mesaĝo';
+$labels['editidents'] = 'Redaktu identojn';
+$labels['spellcheck'] = 'Literumu';
 $labels['checkspelling'] = 'Kontrolu literumadon';
 $labels['resumeediting'] = 'Rekomencu redaktadon';
 $labels['revertto'] = 'Reiru al';
+$labels['attach'] = 'Alfiksu';
 $labels['attachments'] = 'Alfiksaĵoj';
 $labels['upload'] = 'Alŝutu';
-$labels['close'] = 'Fermu';
+$labels['uploadprogress'] = '$percent ($current de $total)';
+$labels['close'] = 'Fermi';
+$labels['messageoptions'] = 'Mesaĝ-agordoj...';
 $labels['low'] = 'Malalta';
 $labels['lowest'] = 'Plej malalta';
 $labels['normal'] = 'Normala';
@@ -147,11 +196,16 @@ $labels['highest'] = 'Plej alta';
 $labels['nosubject'] = '(sen temo)';
 $labels['showimages'] = 'Montru bildojn';
 $labels['alwaysshow'] = 'Ĉiam montru bildojn de $sender';
+$labels['isdraft'] = 'Ĉi-mesaĝo estas malneto';
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = 'Plata teksto';
+$labels['savesentmessagein'] = 'Konservu senditan mesaĝon en';
+$labels['dontsave'] = 'Ne konservu';
+$labels['maxuploadsize'] = 'Maksimuma permesata dosier-grando estas $size';
 $labels['addcc'] = 'Aldonu kopi-ricevanton';
 $labels['addbcc'] = 'Aldonu blindan kopi-ricevanton';
 $labels['addreplyto'] = 'Aldonu Respondu-Al';
+$labels['addfollowupto'] = 'Aldonu Respondu-Al';
 $labels['mdnrequest'] = 'La sendinto de ĉi tiu mesaĝo petis sciigon de kiam vi legas ĝin. Ĉu volas sciigi la sendinton?';
 $labels['receiptread'] = 'Legokonfirmo';
 $labels['yourmessage'] = 'Jen estas legokonfirmo de via mesaĝo';
@@ -159,19 +213,69 @@ $labels['receiptnote'] = 'Notu: Ĉi tiu konfirmo nur asertas ke la mesaĝo estis
 $labels['name'] = 'Nomo';
 $labels['firstname'] = 'Antaŭnomo';
 $labels['surname'] = 'Familia nomo';
+$labels['middlename'] = 'Meza Nomo';
+$labels['nameprefix'] = 'Prefikso';
+$labels['namesuffix'] = 'Sufikso';
+$labels['nickname'] = 'Kromnomo';
+$labels['jobtitle'] = 'Postena titolo';
+$labels['department'] = 'Departemento';
+$labels['gender'] = 'Sekso';
 $labels['email'] = 'Retpoŝto';
+$labels['phone'] = 'Telefono';
+$labels['address'] = 'Adreso';
+$labels['street'] = 'Strato';
+$labels['locality'] = 'Urbo';
+$labels['zipcode'] = 'Poŝt-kodo';
+$labels['region'] = 'Ŝtato/Provinco';
+$labels['country'] = 'Lando';
+$labels['birthday'] = 'Naskiĝdato';
+$labels['anniversary'] = 'Datreveno';
+$labels['website'] = 'Retejo';
+$labels['instantmessenger'] = 'TM';
+$labels['notes'] = 'Notoj';
+$labels['male'] = 'viro';
+$labels['female'] = 'virino';
+$labels['manager'] = 'Estro';
+$labels['assistant'] = 'Asistanto';
+$labels['typeassistant'] = 'Asistanto';
+$labels['spouse'] = 'Edz(in)o';
+$labels['allfields'] = 'Ĉiuj kampoj';
+$labels['search'] = 'Serĉu';
+$labels['advsearch'] = 'Detala sercô';
+$labels['advanced'] = 'Altnivela';
+$labels['other'] = 'Alia';
+$labels['typeother'] = 'Alia';
+$labels['typehome'] = 'Hejmo';
+$labels['typework'] = 'Laboro';
+$labels['typemobile'] = 'Poŝtelefono';
+$labels['typemain'] = 'Ĉefa';
+$labels['typehomefax'] = 'Hejma faksilo';
+$labels['typeworkfax'] = 'Laboreja faksilo';
+$labels['typecar'] = 'Aŭtomobilo';
+$labels['typepager'] = 'Televokilo';
+$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';
+$labels['personalinfo'] = 'Personaj informoj';
 $labels['edit'] = 'Redaktu';
-$labels['cancel'] = 'Rezignu';
-$labels['save'] = 'Savu';
-$labels['delete'] = 'Forigu';
+$labels['cancel'] = 'Nuligi';
+$labels['save'] = 'Konservi';
+$labels['delete'] = 'Forigi';
+$labels['rename'] = 'Alinomigu';
+$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';
-$labels['print'] = 'Printu';
-$labels['export'] = 'Eksportu';
+$labels['print'] = 'Presi';
+$labels['export'] = 'Elporti';
 $labels['previouspage'] = 'Montru auntaŭan';
 $labels['firstpage'] = 'Montru unuan';
 $labels['nextpage'] = 'Montru sekvan';
@@ -187,6 +291,9 @@ $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';
 $labels['setdefault'] = 'Agordu kiel norma';
 $labels['language'] = 'Lingvo';
 $labels['timezone'] = 'Tempzono';
@@ -214,15 +321,13 @@ $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['messagecount'] = 'Mesaĝoj';
-$labels['create'] = 'Kreu';
+$labels['create'] = 'Krei';
 $labels['createfolder'] = 'Kreu novan dosierujon';
 $labels['managefolders'] = 'Administru dosierujon';
 $labels['sortby'] = 'Ordigu per';
 $labels['sortasc'] = 'Ordigu kreskante';
 $labels['sortdesc'] = 'Ordigu malkreskante';
 
-?>
index 3c2c325414119a2e9a1a04073931b1e6531f0843..038249fb0c9c1f1d31155cc12890d1a363dea34d 100644 (file)
@@ -1,25 +1,30 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/eo/messages.inc                                              |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Andreas van Cranenburgh <andreas@unstable.nl                  |
-+-----------------------------------------------------------------------+
-
+ +-----------------------------------------------------------------------+
+ | localization/eo/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Andreas van Cranenburgh <andreas@unstable.nl>                 |
+ +-----------------------------------------------------------------------+
 */
 
 $messages = array();
+$messages['errortitle'] = 'Eraro okazis!';
 $messages['loginfailed'] = 'Malsukcesis ensaluti';
 $messages['cookiesdisabled'] = 'Via foliumilo ne akceptas kuketojn';
 $messages['sessionerror'] = 'Via seanco estas nevalida aŭ finita';
-$messages['imaperror'] = 'Konekto kun IMAP-servilo malsukcesis';
+$messages['storageerror'] = 'Konekto kun IMAP-servilo malsukcesis';
+$messages['servererror'] = 'Servil-eraro!';
+$messages['servererrormsg'] = 'Servil-eraro: $msg';
+$messages['dberror'] = 'Datumbaz-eraro!';
+$messages['errorreadonly'] = 'Ne povis fari agon. Dosierujo estas nurlega';
+$messages['errornoperm'] = 'Ne povis fari agon. Ne havas permeson.';
+$messages['invalidrequest'] = 'Nevalida peto';
 $messages['nomessagesfound'] = 'Neniu mesaĝo en ĉi tiu dosierujo';
 $messages['loggedout'] = 'Vi sukcese finis la seancon. Ĝis!';
 $messages['mailboxempty'] = 'Dosierujo estas malplena';
@@ -54,7 +59,6 @@ $messages['nosubjectwarning'] = 'La temkampo estas malplena. Ĉu vi volas skribi
 $messages['nobodywarning'] = 'Ĉu sendi ĉi tiun mesaĝon sen teksto?';
 $messages['notsentwarning'] = 'Mesaĝo ne estas sendita. Ĉu vi volas forigi vian mesaĝon?';
 $messages['noldapserver'] = 'Bonvolu elekti ldap-servilon por serĉado';
-$messages['nocontactsreturned'] = 'Trovis neniun kontakton';
 $messages['nosearchname'] = 'Bonvolu enmeti kontakt-nomon aŭ retpoŝt-adreson.';
 $messages['searchsuccessful'] = 'trovis $nr mesaĝojn';
 $messages['searchnomatch'] = 'Serĉo donis nenion';
@@ -77,4 +81,3 @@ $messages['errorsendingreceipt'] = 'Ne povis sendi konfirmon';
 $messages['nodeletelastidentity'] = 'Vi ne povas forigi ĉi tiun identon, ĉar ĝi estas la lasta';
 $messages['forbiddencharacter'] = 'Dosierujo-nomo enhavas malpermesitan karaktron';
 
-?>
index 7cc43e699497b299109b1a3bed7fd8db89f0bafa..ec69eea6c6ca77e6e51f982c93088c0bf7b5932a 100644 (file)
@@ -1,24 +1,17 @@
 <?php
-/*
-
-+-----------------------------------------------------------------------+
-| language/es_AR/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Javier Smaldone <javier@smaldone.com.ar>                      |
-|         http://www.smaldone.com.ar                                    |
-|         David Grajal Blanco <dgrabla@gmail.com>                       |
-|         http://david.grajal.net                                       |
-|         Pablo Rosciani <pablo@netsud.com>                             |
-|         http://www.netsud.com                                         |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 4410 2011-01-12 18:25:02Z thomasb $
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/es_AR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $labels = array();
@@ -46,8 +39,8 @@ $labels['date'] = 'Fecha';
 $labels['size'] = 'Tamaño';
 $labels['priority'] = 'Prioridad';
 $labels['organization'] = 'Organización';
-$labels['reply-to'] = 'Responder a';
 $labels['mailboxlist'] = 'Carpetas';
+$labels['folders'] = 'Carpetas';
 $labels['messagesfromto'] = 'Mensajes $from a $to de $count';
 $labels['messagenrof'] = 'Mensaje $nr de $count';
 $labels['copy'] = 'Copiar';
@@ -75,7 +68,8 @@ $labels['jan'] = 'Ene';
 $labels['feb'] = 'Feb';
 $labels['mar'] = 'Mar';
 $labels['apr'] = 'Abr';
-$labels['may'] = 'May';
+$labels['may'] = 'Mayo';
+$labels['longmay'] = 'Mayo';
 $labels['jun'] = 'Jun';
 $labels['jul'] = 'Jul';
 $labels['aug'] = 'Ago';
@@ -87,7 +81,6 @@ $labels['longjan'] = 'Enero';
 $labels['longfeb'] = 'Febrero';
 $labels['longmar'] = 'Marzo';
 $labels['longapr'] = 'Abril';
-$labels['longmay'] = 'Mayo';
 $labels['longjun'] = 'Junio';
 $labels['longjul'] = 'Julio';
 $labels['longaug'] = 'Agosto';
@@ -97,6 +90,7 @@ $labels['longnov'] = 'Noviembre';
 $labels['longdec'] = 'Diciembre';
 $labels['today'] = 'Hoy';
 $labels['checkmail'] = 'Revisar si hay nuevos mensajes';
+$labels['compose'] = 'Escribir un mensaje';
 $labels['writenewmessage'] = 'Crear nuevo mensaje';
 $labels['replytomessage'] = 'Responder mensaje';
 $labels['replytoallmessage'] = 'Responder al emisor y a todos los destinatarios';
@@ -105,13 +99,9 @@ $labels['deletemessage'] = 'Eliminar mensaje';
 $labels['movemessagetotrash'] = 'Mover mensaje a la papelera';
 $labels['printmessage'] = 'Imprimir este mensaje';
 $labels['previousmessage'] = 'Mostrar mensaje anterior';
-$labels['previousmessages'] = 'Mostrar grupo anterior de mensajes';
 $labels['firstmessage'] = 'Mostrar primer mensaje';
-$labels['firstmessages'] = 'Mostrar primer grupo de mensajes';
 $labels['nextmessage'] = 'Mostrar siguente mensaje';
-$labels['nextmessages'] = 'Mostrar siguente grupo de mensajes';
 $labels['lastmessage'] = 'Mostrar último mensaje';
-$labels['lastmessages'] = 'Mostrar último grupo de mensajes';
 $labels['backtolist'] = 'Volver a la lista de mensajes';
 $labels['viewsource'] = 'Mostrar código';
 $labels['markmessages'] = 'Marcar mensajes';
@@ -119,10 +109,10 @@ $labels['markread'] = 'Como leído';
 $labels['markunread'] = 'Como no leído';
 $labels['markflagged'] = 'Como marcado';
 $labels['markunflagged'] = 'Como no marcado';
-$labels['messageactions'] = 'Más acciones...';
 $labels['select'] = 'Elija';
 $labels['all'] = 'Todos';
 $labels['none'] = 'Ninguno';
+$labels['nonesort'] = 'Ninguno';
 $labels['currpage'] = 'Página actual';
 $labels['unread'] = 'Sin leer';
 $labels['flagged'] = 'Marcado';
@@ -135,14 +125,12 @@ $labels['expand-unread'] = 'Expandir No Leidos';
 $labels['collapse-all'] = 'Colapsar Todos';
 $labels['expand_only_unread'] = 'solo con mensajes no leídos';
 $labels['attachment'] = 'Adjunto';
-$labels['nonesort'] = 'Ninguno';
 $labels['sentdate'] = 'Fecha de Enviado';
 $labels['arrival'] = 'Fecha de Recepción';
 $labels['asc'] = 'Ascendente';
 $labels['desc'] = 'Descendente';
 $labels['compact'] = 'Compactar';
 $labels['empty'] = 'Vaciar';
-$labels['purge'] = 'Eliminar';
 $labels['quota'] = 'Uso de disco';
 $labels['unknown'] = 'desconocido';
 $labels['unlimited'] = 'sin límite';
@@ -152,7 +140,6 @@ $labels['searchmod'] = 'Opciones de búsqueda';
 $labels['msgtext'] = 'Mensaje completo';
 $labels['openinextwin'] = 'Abrir en ventana nueva';
 $labels['emlsave'] = 'Guardar (.eml)';
-$labels['compose'] = 'Escribir un mensaje';
 $labels['editasnew'] = 'Editar como nuevo';
 $labels['savemessage'] = 'Guardar como borrador';
 $labels['sendmessage'] = 'Enviar ahora el mensaje';
@@ -204,7 +191,6 @@ $labels['print'] = 'Imprimir';
 $labels['export'] = 'Exportar';
 $labels['exportvcards'] = 'Exportar contactos en format vCard';
 $labels['newcontactgroup'] = 'Crear Nuevo Grupo de Contacto';
-$labels['groupactions'] = 'Acción para Grupos de Contacto';
 $labels['previouspage'] = 'Mostrar grupo anterior';
 $labels['firstpage'] = 'Mostrar primer grupo';
 $labels['nextpage'] = 'Mostrar siguiente grupo';
@@ -279,7 +265,6 @@ $labels['mainoptions'] = 'Opciones Principales';
 $labels['section'] = 'Selección';
 $labels['maintenance'] = 'Mantenimiento';
 $labels['newmessage'] = 'Nuevo Mensaje';
-$labels['listoptions'] = 'Opciones de Listado';
 $labels['signatureoptions'] = 'Opciones de Firma';
 $labels['whenreplying'] = 'Al Responder';
 $labels['replytopposting'] = 'iniciar el nuevo mensaje sobre el original';
@@ -295,7 +280,6 @@ $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['messagecount'] = 'Mensajes';
@@ -329,4 +313,3 @@ $labels['japanese'] = 'Japonés';
 $labels['korean'] = 'Coreano';
 $labels['chinese'] = 'Chino';
 
-?>
index 23dd71ed27bbfc2c175780d0c619de0166011d26..76697fd615097662669c2b8f2041c106dd96e4cd 100644 (file)
@@ -1,30 +1,24 @@
 <?php
-/*
-
-+-----------------------------------------------------------------------+
-| language/es_ES/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Javier Smaldone <javier@smaldone.com.ar>                      |
-|         David Grajal Blanco <dgrabla@gmail.com>                       |
-|         Lito Jornero <jornero@gmail.com>                              |
-|         Pablo Rosciani <pablo@netsud.com>                             |
-|         http://www.netsud.com                                         |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 4410 2011-01-12 18:25:02Z thomasb $
 
+/*
+ +-----------------------------------------------------------------------+
+ | localization/es_AR/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $messages = array();
 $messages['loginfailed'] = 'Contraseña o nombre de usuario incorrecto';
 $messages['cookiesdisabled'] = 'Su navegador no acepta cookies';
 $messages['sessionerror'] = 'Su sesión no existe o ha expirado';
-$messages['imaperror'] = 'Error de conexión con el servidor IMAP';
+$messages['storageerror'] = 'Error de conexión con el servidor IMAP';
 $messages['servererror'] = '¡Error en el servidor!';
 $messages['invalidrequest'] = 'Peteción invalida! No se guardó nada.';
 $messages['nomessagesfound'] = 'No se han encontrado mensajes en esta casilla';
@@ -69,7 +63,6 @@ $messages['nosubjectwarning'] = 'El campo "Asunto" esta vacío. ¿Desea completa
 $messages['nobodywarning'] = '¿Quiere enviar este mensaje sin texto?';
 $messages['notsentwarning'] = 'El mensaje no ha sido enviado. ¿Desea descartar su mensaje?';
 $messages['noldapserver'] = 'Por favor, seleccione un servidor LDAP para buscar';
-$messages['nocontactsreturned'] = 'No se han encontrado contactos';
 $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.';
 $messages['searchsuccessful'] = 'Se encontraron $nr mensajes';
@@ -114,4 +107,3 @@ $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';
 
-?>
index 2e1a49da1ec7c69f358ef8f91fc004f4c50dbf88..7425dd7b82d2b20610f011e969f8649f5482b2b6 100644 (file)
@@ -1,23 +1,16 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/es_ES/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Javier Smaldone <javier@smaldone.com.ar>                      |
-|         David Grajal Blanco <dgrabla@gmail.com>                       |
-|         Ángel Bueno Prieto <info@mediaiberia.com>                     |
-|         José M. Ciordia <ciordia@gmail.com>                           |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 5290 2011-09-28 17:09:50Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/es_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jorge López <jorge@adobo.org>                                |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
@@ -25,7 +18,7 @@ $labels['welcome'] = 'Bienvenido a $product';
 $labels['username'] = 'Nombre de usuario';
 $labels['password'] = 'Contraseña';
 $labels['server'] = 'Servidor';
-$labels['login'] = 'Entrar';
+$labels['login'] = 'Iniciar sesión';
 $labels['logout'] = 'Cerrar sesión';
 $labels['mail'] = 'Correo';
 $labels['settings'] = 'Configuración';
@@ -38,22 +31,25 @@ $labels['junk'] = 'Basura';
 $labels['subject'] = 'Asunto';
 $labels['from'] = 'Remitente';
 $labels['to'] = 'Destinatario';
-$labels['cc'] = 'Copia';
+$labels['cc'] = 'Cc';
 $labels['bcc'] = 'Cco';
-$labels['replyto'] = 'Respuesta a';
-$labels['followupto'] = 'Seguir a';
+$labels['replyto'] = 'Responder a';
+$labels['followupto'] = 'Responder-a';
 $labels['date'] = 'Fecha';
 $labels['size'] = 'Tamaño';
 $labels['priority'] = 'Prioridad';
 $labels['organization'] = 'Organización';
 $labels['readstatus'] = 'Leer estado';
-$labels['mailboxlist'] = 'Bandejas';
+$labels['listoptions'] = 'Lista de opciones...';
+$labels['mailboxlist'] = 'Carpetas';
+$labels['folders'] = 'Carpetas';
 $labels['messagesfromto'] = 'Mensajes $from a $to de $count';
 $labels['threadsfromto'] = 'Hilos $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['moveto'] = 'Mover a';
 $labels['download'] = 'Descargar';
 $labels['filename'] = 'Nombre del archivo';
 $labels['filesize'] = 'Tamaño del archivo';
@@ -77,6 +73,7 @@ $labels['feb'] = 'Feb';
 $labels['mar'] = 'Mar';
 $labels['apr'] = 'Abr';
 $labels['may'] = 'May';
+$labels['longmay'] = 'May';
 $labels['jun'] = 'Jun';
 $labels['jul'] = 'Jul';
 $labels['aug'] = 'Ago';
@@ -88,7 +85,6 @@ $labels['longjan'] = 'Enero';
 $labels['longfeb'] = 'Febrero';
 $labels['longmar'] = 'Marzo';
 $labels['longapr'] = 'Abril';
-$labels['longmay'] = 'Mayo';
 $labels['longjun'] = 'Junio';
 $labels['longjul'] = 'Julio';
 $labels['longaug'] = 'Agosto';
@@ -97,12 +93,16 @@ $labels['longoct'] = 'Octubre';
 $labels['longnov'] = 'Noviembre';
 $labels['longdec'] = 'Diciembre';
 $labels['today'] = 'Hoy';
-$labels['checkmail'] = 'Revisar si hay nuevos mensajes';
-$labels['writenewmessage'] = 'Crear nuevo mensaje';
+$labels['refresh'] = 'Actualizar';
+$labels['checkmail'] = 'Revisar si hay mensajes nuevos';
+$labels['compose'] = 'Redactar';
+$labels['writenewmessage'] = 'Crear un mensaje nuevo';
+$labels['reply'] = 'Responder';
 $labels['replytomessage'] = 'Responder mensaje';
 $labels['replytoallmessage'] = 'Responder al emisor y a todos los destinatarios';
 $labels['replyall'] = 'Responder a todos';
 $labels['replylist'] = 'Responder a la lista';
+$labels['forward'] = 'Reenviar';
 $labels['forwardinline'] = 'Reenviar directamente';
 $labels['forwardattachment'] = 'Reenviar como adjunto';
 $labels['forwardmessage'] = 'Reenviar mensaje';
@@ -115,15 +115,20 @@ $labels['nextmessage'] = 'Mostrar el siguiente mensaje';
 $labels['lastmessage'] = 'Mostrar el último mensaje';
 $labels['backtolist'] = 'Volver a la lista de mensajes';
 $labels['viewsource'] = 'Mostrar código';
+$labels['mark'] = 'Marcar';
 $labels['markmessages'] = 'Marcar mensajes';
 $labels['markread'] = 'Como leído';
 $labels['markunread'] = 'Como no leído';
 $labels['markflagged'] = 'Como marcado';
 $labels['markunflagged'] = 'Como no marcado';
 $labels['moreactions'] = 'Más acciones…';
+$labels['more'] = 'Más';
+$labels['back'] = 'Volver';
+$labels['options'] = 'Opciones';
 $labels['select'] = 'Elija';
 $labels['all'] = 'Todos';
 $labels['none'] = 'Ninguno';
+$labels['nonesort'] = 'Ninguno';
 $labels['currpage'] = 'Página actual';
 $labels['unread'] = 'Sin leer';
 $labels['flagged'] = 'Señalado';
@@ -143,7 +148,6 @@ $labels['expand_only_unread'] = 'solo con mensajes no leídos';
 $labels['fromto'] = 'Remitente/Destinatario';
 $labels['flag'] = 'Marca';
 $labels['attachment'] = 'Adjunto';
-$labels['nonesort'] = 'Ninguno';
 $labels['sentdate'] = 'Fecha de envío';
 $labels['arrival'] = 'Fecha de llegada';
 $labels['asc'] = 'ascendente';
@@ -164,7 +168,6 @@ $labels['searchmod'] = 'Opciones de búsqueda';
 $labels['msgtext'] = 'Mensaje completo';
 $labels['openinextwin'] = 'Abrir en nueva ventana';
 $labels['emlsave'] = 'Descargar (.eml)';
-$labels['compose'] = 'Escribir un mensaje';
 $labels['editasnew'] = 'Editar como nuevo';
 $labels['savemessage'] = 'Guardar como borrador';
 $labels['sendmessage'] = 'Enviar ahora el mensaje';
@@ -176,9 +179,11 @@ $labels['dsn'] = 'Entrega de notificaciones de estado';
 $labels['mailreplyintro'] = 'El $date, $sender escribió:';
 $labels['originalmessage'] = 'Mensaje original';
 $labels['editidents'] = 'Editar identidades';
+$labels['spellcheck'] = 'Corrector ortográfico';
 $labels['checkspelling'] = 'Revisar ortografía';
 $labels['resumeediting'] = 'Continuar edición';
 $labels['revertto'] = 'Revertir a';
+$labels['attach'] = 'Adjuntar';
 $labels['attachments'] = 'Adjuntos';
 $labels['upload'] = 'Subir';
 $labels['uploadprogress'] = '$percent ($current de $total)';
@@ -192,6 +197,7 @@ $labels['highest'] = 'Altísimo';
 $labels['nosubject'] = '(sin asunto)';
 $labels['showimages'] = 'Mostrar imágenes';
 $labels['alwaysshow'] = 'Mostrar siempre imágenes de $sender';
+$labels['isdraft'] = 'Este mensaje es un borrador';
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = 'Sólo texto';
 $labels['savesentmessagein'] = 'Guardar mensaje enviado en';
@@ -205,7 +211,7 @@ $labels['mdnrequest'] = 'El emisor de este mensaje desea ser notificado cuando u
 $labels['receiptread'] = 'Notificación de lectura';
 $labels['yourmessage'] = 'Esto es un acuse de recibo de su mensaje';
 $labels['receiptnote'] = 'Nota: Esta notificación sólo significa que su mensaje fue abierto en el ordenador del destinatario. Eso no garantiza que el destinatario haya leído o entendido el contenido del mensaje.';
-$labels['name'] = 'Mostra nombre';
+$labels['name'] = 'Nombre para mostrar';
 $labels['firstname'] = 'Nombre';
 $labels['surname'] = 'Apellido';
 $labels['middlename'] = 'Segundo nombre';
@@ -227,20 +233,22 @@ $labels['country'] = 'País';
 $labels['birthday'] = 'Cumpleaños';
 $labels['anniversary'] = 'Santo';
 $labels['website'] = 'Página web';
-$labels['instantmessenger'] = 'Instant Messenger';
+$labels['instantmessenger'] = 'Mensajería instantánea';
 $labels['notes'] = 'Notas';
 $labels['male'] = 'Hombre';
 $labels['female'] = 'Mujer';
 $labels['manager'] = 'Director';
 $labels['assistant'] = 'Auxiliar';
+$labels['typeassistant'] = 'Auxiliar';
 $labels['spouse'] = 'Cónyuge';
 $labels['allfields'] = 'Todos los campos';
 $labels['search'] = 'Buscar';
 $labels['advsearch'] = 'Búsqueda avanzada';
+$labels['advanced'] = 'Avanzadas';
 $labels['other'] = 'Otro';
+$labels['typeother'] = 'Otro';
 $labels['typehome'] = 'Casa';
 $labels['typework'] = 'Trabajo';
-$labels['typeother'] = 'Otro';
 $labels['typemobile'] = 'Móvil';
 $labels['typemain'] = 'Principal';
 $labels['typehomefax'] = 'Fax de casa';
@@ -248,7 +256,6 @@ $labels['typeworkfax'] = 'Fax del trabajo';
 $labels['typecar'] = 'Coche';
 $labels['typepager'] = 'Busca';
 $labels['typevideo'] = 'Vídeo';
-$labels['typeassistant'] = 'Auxiliar';
 $labels['typehomepage'] = 'Inicio';
 $labels['typeblog'] = 'Blog';
 $labels['typeprofile'] = 'Perfil';
@@ -265,6 +272,7 @@ $labels['delete'] = 'Eliminar';
 $labels['rename'] = 'Renombrar';
 $labels['addphoto'] = 'Añadir';
 $labels['replacephoto'] = 'Reemplazar';
+$labels['uploadphoto'] = 'Subir foto';
 $labels['newcontact'] = 'Crear nueva tarjeta de contacto';
 $labels['deletecontact'] = 'Eliminar contactos seleccionados';
 $labels['composeto'] = 'Escribir mensaje a';
@@ -275,6 +283,7 @@ $labels['exportvcards'] = 'Exportar contactos en formato vCard';
 $labels['newcontactgroup'] = 'Crear un nuevo grupo de contactos';
 $labels['grouprename'] = 'Renombrar grupo';
 $labels['groupdelete'] = 'Borrar grupo';
+$labels['groupremoveselected'] = 'Eliminar los contactos seleccionados del grupo';
 $labels['previouspage'] = 'Mostrar grupo anterior';
 $labels['firstpage'] = 'Mostrar primer grupo';
 $labels['nextpage'] = 'Mostrar grupo siguiente';
@@ -292,6 +301,7 @@ $labels['importreplace'] = 'Reemplazar toda la lista de contactos';
 $labels['importtext'] = 'Puede importar contactos desde una lista existente.<br/>Actualmente sólo soportamos el formato <a href="http://es.wikipedia.org/wiki/VCard">vCard</a>.';
 $labels['done'] = 'Hecho';
 $labels['settingsfor'] = 'Configuración para';
+$labels['about'] = 'Acerca de';
 $labels['preferences'] = 'Preferencias';
 $labels['userpreferences'] = 'Preferencias de usuario';
 $labels['editpreferences'] = 'Editar preferencias de usuario';
@@ -333,6 +343,7 @@ $labels['readwhendeleted'] = 'Marcar el mensaje como leído al borrarlo';
 $labels['flagfordeletion'] = 'Marcar el mensaje para borrarse en vez de borrarlo';
 $labels['skipdeleted'] = 'No mostrar mensajes borrados';
 $labels['deletealways'] = 'Cuando falle trasladar los mensajes a la papelera, borrarlos';
+$labels['deletejunk'] = 'Directamente eliminar mensajes de Correo no Deseado';
 $labels['showremoteimages'] = 'Mostrar las imágenes externas';
 $labels['fromknownsenders'] = 'de remitentes conocidos';
 $labels['always'] = 'siempre';
@@ -352,12 +363,13 @@ $labels['force7bit'] = 'Usar codificación MIME para caracteres de 8 bits';
 $labels['advancedoptions'] = '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, mostrar el siguiente mensaje después de borrar/mover un mensaje';
+$labels['displaynext'] = 'Después de borrar/mover un mensaje, mostrar el siguiente';
+$labels['defaultfont'] = 'Tipo de letra predeterminada del mensaje HTML';
 $labels['mainoptions'] = 'Opciones principales';
+$labels['browseroptions'] = 'Opciones del Navegador';
 $labels['section'] = 'Sección';
 $labels['maintenance'] = 'Mantenimiento';
 $labels['newmessage'] = 'Nuevo mensaje';
-$labels['listoptions'] = 'Opciones de listado';
 $labels['signatureoptions'] = 'Opciones de firma';
 $labels['whenreplying'] = 'Al responder';
 $labels['replytopposting'] = 'empezar un mensaje nuevo encima del original';
@@ -376,14 +388,16 @@ $labels['reqmdn'] = 'Solicitar siempre un acuse de recibo';
 $labels['reqdsn'] = 'Solicitar siempre la entrega de notificaciones de estado';
 $labels['replysamefolder'] = 'Coloque las respuestas en la bandeja del mensaje que se responde';
 $labels['defaultaddressbook'] = 'Añadir nuevos contactos a la lista de contactos seleccionada';
+$labels['autocompletesingle'] = 'Omitir direcciones de correo alternativas en autocompletado';
+$labels['listnamedisplay'] = 'Listar contactos como';
 $labels['spellcheckbeforesend'] = 'Comprobar ortografía antes de enviar un mensaje';
 $labels['spellcheckoptions'] = 'Opciones de ortografía';
 $labels['spellcheckignoresyms'] = 'Ignorar palabras con símbolos';
 $labels['spellcheckignorenums'] = 'Ignorar palabras con números';
 $labels['spellcheckignorecaps'] = 'Ignorar palabras con todo mayúsculas';
 $labels['addtodict'] = 'Añadir al diccionario';
+$labels['mailtoprotohandler'] = 'Registrar controlador de protocolo para enlaces mailto:';
 $labels['folder'] = 'Bandeja';
-$labels['folders'] = 'Bandejas';
 $labels['foldername'] = 'Nombre de bandeja';
 $labels['subscribed'] = 'Suscrita';
 $labels['messagecount'] = 'Mensajes';
@@ -406,6 +420,11 @@ $labels['sortby'] = 'Ordenar por';
 $labels['sortasc'] = 'Orden ascendente';
 $labels['sortdesc'] = 'Orden descendente';
 $labels['undo'] = 'Deshacer';
+$labels['plugin'] = 'Plugin';
+$labels['version'] = 'Versión';
+$labels['source'] = 'Origen';
+$labels['license'] = 'Licencia';
+$labels['support'] = 'Obtener soporte';
 $labels['B'] = 'B';
 $labels['KB'] = 'KB';
 $labels['MB'] = 'MB';
@@ -417,7 +436,7 @@ $labels['easterneuropean'] = 'Europeo oriental';
 $labels['southeasterneuropean'] = 'Europeo sudoriental';
 $labels['baltic'] = 'Báltico';
 $labels['cyrillic'] = 'Cirílico';
-$labels['arabic'] = '√Årabe';
+$labels['arabic'] = 'Árabe';
 $labels['greek'] = 'Griego';
 $labels['hebrew'] = 'Hebreo';
 $labels['turkish'] = 'Turco';
@@ -429,4 +448,3 @@ $labels['japanese'] = 'Japonés';
 $labels['korean'] = 'Coreano';
 $labels['chinese'] = 'Chino';
 
-?>
index 4ed0e5debb5ca1e8e90288cdc4a2f8187ec0849a..186554ff751e6531c202d94e1c7544def784daf7 100644 (file)
@@ -1,56 +1,52 @@
 <?php
 
 /*
-
-+------------------------------------------------------------------------+
-| language/es_ES/messages.inc                                            |
-|                                                                        |
-| Language file of the Roundcube Webmail client                          |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                        |
-| Licensed under the GNU GPL                                             |
-|                                                                        |
-+------------------------------------------------------------------------+
-| Authors: Javier Smaldone <javier@smaldone.com.ar>                      |
-|          David Grajal Blanco <dgrabla@gmail.com>                       |
-|          Lito Jornero <jornero@gmail.com>                              |
-|          Ángel Bueno Prieto <info@mediaiberia.com>                     |
-|          José M. Ciordia <ciordia@gmail.com>                           |
-+------------------------------------------------------------------------+
-
-@version $Id: messages.inc 5290 2011-09-28 17:09:50Z thomasb $
+ +-----------------------------------------------------------------------+
+ | localization/es_ES/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: pompilos <ciordia@gmail.com>                                  |
+ +-----------------------------------------------------------------------+
 */
 
 $messages = array();
+$messages['errortitle'] = '¡Ha ocurrido un error!';
 $messages['loginfailed'] = 'Contraseña o nombre de usuario incorrecto';
 $messages['cookiesdisabled'] = 'Su navegador no acepta cookies';
 $messages['sessionerror'] = 'Su sesión no es válida o ha expirado';
-$messages['imaperror'] = 'Error de conexión con el servidor IMAP';
+$messages['storageerror'] = 'Error de conexión con el servidor IMAP';
 $messages['servererror'] = '¡Error del servidor!';
 $messages['servererrormsg'] = 'Error de servidor: $msg';
 $messages['dberror'] = '¡Error de base de datos!';
+$messages['requesttimedout'] = 'Ha expirado el tiempo de respuesta';
 $messages['errorreadonly'] = 'No se ha podido hacer. La bandeja es sólo de lectura';
-$messages['errornoperm'] = 'No se ha podido hacer. Permiso denegado';
+$messages['errornoperm'] = 'Imposible realizar la operación. Permiso denegado';
 $messages['invalidrequest'] = '¡Petición no válida! No se han guardado los datos.';
 $messages['nomessagesfound'] = 'No se han encontrado mensajes en esta casilla';
 $messages['loggedout'] = 'Ha cerrado bien la sesión. ¡Hasta pronto!';
 $messages['mailboxempty'] = 'La casilla está vacía';
 $messages['loading'] = 'Cargando...';
-$messages['uploading'] = 'Subiendo fichero...';
+$messages['uploading'] = 'Subiendo archivo...';
 $messages['uploadingmany'] = 'Subiendo archivos…';
 $messages['loadingdata'] = 'Cargando datos...';
 $messages['checkingmail'] = 'Verificando si hay nuevos mensajes...';
 $messages['sendingmessage'] = 'Enviando mensaje...';
 $messages['messagesent'] = 'Mensaje enviado correctamente';
-$messages['savingmessage'] = 'Guardar mensaje...';
+$messages['savingmessage'] = 'Guardando mensaje...';
 $messages['messagesaved'] = 'Mensaje guardado en borradores';
 $messages['successfullysaved'] = 'Guardado correctamente';
 $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.';
-$messages['blockedimages'] = 'Para proteger su privacidad, las imágenes externas han sido bloqueadas en este mensaje';
+$messages['blockedimages'] = 'Para proteger su privacidad, las imágenes externas de este mensaje han sido bloqueadas.';
 $messages['encryptedmessage'] = 'Este es un mensaje cifrado y no puede ser mostrado. ¡Lo siento!';
-$messages['nocontactsfound'] = 'No hay contactos';
+$messages['nocontactsfound'] = 'No se encontraron contactos.';
 $messages['contactnotfound'] = 'El contacto solicitado no existe';
+$messages['contactsearchonly'] = 'Ingrese algún criterio para buscar contactos';
 $messages['sendingfailed'] = 'Error al enviar mensaje';
 $messages['senttooquickly'] = 'Por favor, espere $sec segundo(s) antes de mandar este mensaje';
 $messages['errorsavingsent'] = 'Ha ocurrido un error al guardar el mensaje enviado';
@@ -64,6 +60,7 @@ $messages['deletegroupconfirm'] = '¿De verdad quiere borrar el grupo selecciona
 $messages['deletemessagesconfirm'] = '¿Realmente quiere eliminar los mensajes seleccionados?';
 $messages['deletefolderconfirm'] = '¿Realmente quiere eliminar esta bandeja?';
 $messages['purgefolderconfirm'] = '¿Realmente quiere eliminar todos los mensajes de esta bandeja?';
+$messages['contactdeleting'] = 'Eliminando contacto(s)';
 $messages['groupdeleting'] = 'Borrando grupo…';
 $messages['folderdeleting'] = 'Borrando bandeja...';
 $messages['foldermoving'] = 'Moviendo bandeja...';
@@ -88,8 +85,8 @@ $messages['searching'] = 'Buscando...';
 $messages['checking'] = 'Revisando...';
 $messages['nospellerrors'] = 'No se encontraron errores ortográficos';
 $messages['folderdeleted'] = 'Bandeja eliminada correctamente';
-$messages['foldersubscribed'] = 'Suscripción a bandeja anulada correctamente';
-$messages['folderunsubscribed'] = 'Suscrito a bandeja correctamente';
+$messages['foldersubscribed'] = 'Suscrito a bandeja correctamente';
+$messages['folderunsubscribed'] = 'Suscripción a bandeja anulada correctamente';
 $messages['folderpurged'] = 'Bandeja purgada correctamente';
 $messages['folderexpunged'] = 'Bandeja vaciada correctamente';
 $messages['deletedsuccessfully'] = 'Eliminado correctamente';
@@ -110,6 +107,7 @@ $messages['addingmember'] = 'Añadiendo contacto(s) al grupo…';
 $messages['removingmember'] = 'Quitando contacto(s) del grupo…';
 $messages['receiptsent'] = 'La notificación de lectura se ha enviado correctamente.';
 $messages['errorsendingreceipt'] = 'No se ha podido enviar la notificación de lectura.';
+$messages['deleteidentityconfirm'] = 'Realmente desea eliminar esta identidad?';
 $messages['nodeletelastidentity'] = 'No se puede borrar esta identidad puesto que es la última.';
 $messages['forbiddencharacter'] = 'El nombre de la bandeja contiene un carácter prohibido';
 $messages['selectimportfile'] = 'Por favor, seleccione un archivo para subir';
@@ -129,7 +127,6 @@ $messages['smtpautherror'] = 'Error SMTP ($code): Error de autenticación';
 $messages['smtpfromerror'] = 'Error SMTP ($code): No se ha podido asignar el emisor "$from" ($msg)';
 $messages['smtptoerror'] = 'Error SMTP ($code): No se ha podido establecer remitente "$to" ($msg)';
 $messages['smtprecipientserror'] = 'Error SMTP: No es posible analizar la lista de destinatarios';
-$messages['smtpdsnerror'] = 'Error SMTP: No hay soporte para los acuses de recibo';
 $messages['smtperror'] = 'Error SMTP: $msg';
 $messages['emailformaterror'] = 'Dirección e-mail incorrecta: $email';
 $messages['toomanyrecipients'] = 'Hay demasiados destinatarios. Reduzca el número de destinatarios a $max.';
@@ -151,6 +148,7 @@ $messages['messagemoved'] = 'Mensaje(s) movido(s) correctamente';
 $messages['messagecopied'] = 'Mensaje(s) copiado(s) correctamente';
 $messages['messagemarked'] = 'Mensaje(s) marcado(s) correctamente';
 $messages['autocompletechars'] = 'Introduce al menos $min caracteres para autocompletar';
+$messages['autocompletemore'] = 'Se encontraron mas coincidencias. Favor de ingresar mas caracteres';
 $messages['namecannotbeempty'] = 'Hay que poner el nombre';
 $messages['nametoolong'] = 'El nombre es demasiado largo';
 $messages['folderupdated'] = 'Bandeja actualizada correctamente';
@@ -158,5 +156,5 @@ $messages['foldercreated'] = 'Bandeja creada correctamente';
 $messages['invalidimageformat'] = 'No es un formato de imagen válido';
 $messages['mispellingsfound'] = 'Se han detectado errores ortográficos en el mensaje.';
 $messages['parentnotwritable'] = 'No se puede crear/mover la carpeta a la carpeta superior elegida. No tiene permisos de acceso.';
+$messages['messagetoobig'] = 'Esta parte del mensaje es demasiada grande para procesarla';
 
-?>
index 2e063b2f4be7ee764eefd0b4ae4e79d71c22f296..3b7c1300b1656e7350438de93e6e09192fd831e5 100644 (file)
@@ -1,22 +1,16 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/et_EE/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Üllar Pajus <yllar.pajus@gmail.com>                           |
-|         Raivo Hool <raivo.hool@gmail.com>                             |
-|         Elan Ruusamäe <glen@delfi.ee>                                 |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 5067 2011-08-14 18:47:58Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/et_EE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: yllar                                                         |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
@@ -47,9 +41,11 @@ $labels['priority'] = 'Tähtsus';
 $labels['organization'] = 'Organisatsioon';
 $labels['readstatus'] = 'Lugemise staatus';
 $labels['mailboxlist'] = 'Kaustad';
+$labels['folders'] = 'Kaustad';
 $labels['messagesfromto'] = 'Kirjed $from kuni $to, kokku $count';
 $labels['threadsfromto'] = 'Lõimed $from kuni $to, kokku $count';
 $labels['messagenrof'] = 'Kiri $nr, kokku $count';
+$labels['fromtoshort'] = '$from – $to kokku $count';
 $labels['copy'] = 'Kopeeri';
 $labels['move'] = 'Liiguta';
 $labels['moveto'] = 'liiguta kausta...';
@@ -75,7 +71,8 @@ $labels['jan'] = 'jaan';
 $labels['feb'] = 'veebr';
 $labels['mar'] = 'märts';
 $labels['apr'] = 'apr';
-$labels['may'] = 'mai';
+$labels['may'] = 'Mai';
+$labels['longmay'] = 'Mai';
 $labels['jun'] = 'juuni';
 $labels['jul'] = 'juuli';
 $labels['aug'] = 'aug';
@@ -87,7 +84,6 @@ $labels['longjan'] = 'Jaanuar';
 $labels['longfeb'] = 'Veebruar';
 $labels['longmar'] = 'Märts';
 $labels['longapr'] = 'Aprill';
-$labels['longmay'] = 'Mai';
 $labels['longjun'] = 'Juuni';
 $labels['longjul'] = 'Juuli';
 $labels['longaug'] = 'August';
@@ -96,12 +92,16 @@ $labels['longoct'] = 'Oktoober';
 $labels['longnov'] = 'November';
 $labels['longdec'] = 'Detsember';
 $labels['today'] = 'Täna';
+$labels['refresh'] = 'Värskenda';
 $labels['checkmail'] = 'Kontrolli uusi kirju';
+$labels['compose'] = 'Koosta kiri';
 $labels['writenewmessage'] = 'Kirjuta uus kiri';
+$labels['reply'] = 'Vasta';
 $labels['replytomessage'] = 'Vasta kirjale';
 $labels['replytoallmessage'] = 'Vasta saatjale ja teistele kirja saanutele';
 $labels['replyall'] = 'Vasta kõigile';
 $labels['replylist'] = 'Vasta meilinglisti';
+$labels['forward'] = 'Edasta';
 $labels['forwardinline'] = 'Edasta kirja sees';
 $labels['forwardattachment'] = 'Edasta manusena';
 $labels['forwardmessage'] = 'Edasta see kiri';
@@ -114,15 +114,20 @@ $labels['nextmessage'] = 'Näita järgmist kirja';
 $labels['lastmessage'] = 'Näita viimast kirja';
 $labels['backtolist'] = 'Tagasi kirjade nimekirja';
 $labels['viewsource'] = 'Näita lähtekoodi';
+$labels['mark'] = 'Märgista';
 $labels['markmessages'] = 'Märgi kirjad';
 $labels['markread'] = 'Loetuks';
 $labels['markunread'] = 'Mitte loetuks';
 $labels['markflagged'] = 'Lisa lipik';
 $labels['markunflagged'] = 'Eemalda lipik';
-$labels['messageactions'] = 'Veel tegevusi...';
+$labels['moreactions'] = 'Muud toimingud...';
+$labels['more'] = 'Rohkem';
+$labels['back'] = 'Tagasi';
+$labels['options'] = 'Valikud';
 $labels['select'] = 'Vali';
 $labels['all'] = 'kõik';
-$labels['none'] = 'mitte midagi';
+$labels['none'] = 'Puudub';
+$labels['nonesort'] = 'Puudub';
 $labels['currpage'] = 'Praegune leht';
 $labels['unread'] = 'Lugemata';
 $labels['flagged'] = 'Märgistatud';
@@ -142,7 +147,6 @@ $labels['expand_only_unread'] = 'ainult lugemata kirjadega';
 $labels['fromto'] = 'Saatja/saaja';
 $labels['flag'] = 'Märgista';
 $labels['attachment'] = 'Manus';
-$labels['nonesort'] = 'Puudub';
 $labels['sentdate'] = 'Saatmise kuupäev';
 $labels['arrival'] = 'Saamise kuupäev';
 $labels['asc'] = 'kasvavalt';
@@ -163,7 +167,6 @@ $labels['searchmod'] = 'Otsingu laiendid';
 $labels['msgtext'] = 'Kogu kirjast';
 $labels['openinextwin'] = 'Ava uues aknas';
 $labels['emlsave'] = 'Salvesta (.eml)';
-$labels['compose'] = 'Koosta kiri';
 $labels['editasnew'] = 'Kasuta uue kirja põhjana';
 $labels['savemessage'] = 'Salvesta mustand';
 $labels['sendmessage'] = 'Saada kiri kohe';
@@ -172,12 +175,17 @@ $labels['charset'] = 'Märgistik';
 $labels['editortype'] = 'Redaktori tüüp';
 $labels['returnreceipt'] = 'Kättesaamiskinnitus';
 $labels['dsn'] = 'Kohalejõudmise teavitus';
+$labels['mailreplyintro'] = '$date kirjutas $sender:';
+$labels['originalmessage'] = 'Esialgne kiri';
 $labels['editidents'] = 'Muuda Identiteete';
+$labels['spellcheck'] = 'Õigekiri';
 $labels['checkspelling'] = 'Kontrolli õigekirja';
 $labels['resumeediting'] = 'Jätka muutmist';
 $labels['revertto'] = 'Pööra tagasi';
+$labels['attach'] = 'Manusta';
 $labels['attachments'] = 'Manused';
 $labels['upload'] = 'Kinnita manus';
+$labels['uploadprogress'] = '$percent ($current, kokku $total)';
 $labels['close'] = 'Sulge';
 $labels['messageoptions'] = 'Kirja valikud...';
 $labels['low'] = 'Madal';
@@ -188,6 +196,7 @@ $labels['highest'] = 'Kõrgeim';
 $labels['nosubject'] = '(teema puudub)';
 $labels['showimages'] = 'Näita pilte';
 $labels['alwaysshow'] = 'Näita alati $sender saadetud pilte';
+$labels['isdraft'] = 'See on mustand.';
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = 'Lihttekst';
 $labels['savesentmessagein'] = 'Salvesta saadetud kirjad kausta';
@@ -229,14 +238,16 @@ $labels['male'] = 'mees';
 $labels['female'] = 'naine';
 $labels['manager'] = 'Juht';
 $labels['assistant'] = 'Assistent';
+$labels['typeassistant'] = 'Assistent';
 $labels['spouse'] = 'Abikaasa';
 $labels['allfields'] = 'Kõik väljad';
 $labels['search'] = 'Otsi';
 $labels['advsearch'] = 'Täpsem otsing';
+$labels['advanced'] = 'Edasijõudnutele';
 $labels['other'] = 'Muu';
+$labels['typeother'] = 'Muu';
 $labels['typehome'] = 'Kodu';
 $labels['typework'] = 'Töö';
-$labels['typeother'] = 'Muu';
 $labels['typemobile'] = 'Mobiil';
 $labels['typemain'] = 'Peamine';
 $labels['typehomefax'] = 'Kodune fax';
@@ -244,8 +255,9 @@ $labels['typeworkfax'] = 'Töö fax';
 $labels['typecar'] = 'Auto';
 $labels['typepager'] = 'Piipar';
 $labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Assistent';
 $labels['typehomepage'] = 'Veebileht';
+$labels['typeblog'] = 'Ajaveeb';
+$labels['typeprofile'] = 'Profiil';
 $labels['addfield'] = 'Lisa väli...';
 $labels['addcontact'] = 'Uue kontakti lisamine';
 $labels['editcontact'] = 'Muuda kontakti';
@@ -259,6 +271,7 @@ $labels['delete'] = 'Kustuta';
 $labels['rename'] = 'Nimeta ümber';
 $labels['addphoto'] = 'Lisa';
 $labels['replacephoto'] = 'Asenda';
+$labels['uploadphoto'] = 'Lisa foto';
 $labels['newcontact'] = 'Uue sissekande loomine';
 $labels['deletecontact'] = 'Kustuta märgistatud kontaktid';
 $labels['composeto'] = 'Kirjuta kiri';
@@ -267,7 +280,8 @@ $labels['print'] = 'Trüki';
 $labels['export'] = 'Ekspordi';
 $labels['exportvcards'] = 'Ekspordi kontaktid vCardi formaadis';
 $labels['newcontactgroup'] = 'Loo uus kontaktigrupp';
-$labels['groupactions'] = 'Kontaktigrupi tegevused...';
+$labels['grouprename'] = 'Nimeta grupp ümber';
+$labels['groupdelete'] = 'Kustuta grupp';
 $labels['previouspage'] = 'Näita eelmist lehte';
 $labels['firstpage'] = 'Näita esimest komplekti';
 $labels['nextpage'] = 'Näita järgmist lehte';
@@ -275,13 +289,17 @@ $labels['lastpage'] = 'Näita viimast komplekti';
 $labels['group'] = 'Grupp';
 $labels['groups'] = 'Grupid';
 $labels['personaladrbook'] = 'Isiklikud aadressid';
+$labels['searchsave'] = 'Salvesta otsing';
+$labels['searchdelete'] = 'Kustuta otsing';
 $labels['import'] = 'Impordi';
 $labels['importcontacts'] = 'Impordi kontakte';
 $labels['importfromfile'] = 'Impordi failist:';
+$labels['importtarget'] = 'Lisa uued kontaktid aadressiraamatusse:';
 $labels['importreplace'] = 'Asenda kogu aadressiraamat';
 $labels['importtext'] = 'Sa saad üle kanda kontakte olemasolevast aadressiraamatust. Praegu on toetatud <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> formaat.';
 $labels['done'] = 'Valmis';
 $labels['settingsfor'] = 'Kasutajaeelistused kontole';
+$labels['about'] = 'Programmist lähemalt';
 $labels['preferences'] = 'Eelistused';
 $labels['userpreferences'] = 'Kasutaja eelistused';
 $labels['editpreferences'] = 'Muuda kasutaja eelistusi';
@@ -293,6 +311,8 @@ $labels['edititem'] = 'Muuda sissekannet';
 $labels['preferhtml'] = 'Eelista HTMLi';
 $labels['defaultcharset'] = 'Vaikimisi märgistik';
 $labels['htmlmessage'] = 'HTML kirjad';
+$labels['dateformat'] = 'Kuupäeva vorming';
+$labels['timeformat'] = 'Aja vorming';
 $labels['prettydate'] = 'Kenad kuupäevad';
 $labels['setdefault'] = 'Muuda vaikeseadeks';
 $labels['autodetect'] = 'Automaatne';
@@ -302,7 +322,7 @@ $labels['pagesize'] = 'Ridu lehe kohta';
 $labels['signature'] = 'Allkiri';
 $labels['dstactive'] = 'Suveaeg';
 $labels['htmleditor'] = 'Kasuta HTML redaktorit';
-$labels['htmlonreply'] = 'vaid HTML kirja vastamisel';
+$labels['htmlonreply'] = 'vaid HTML-vormingus kirjale vastamisel';
 $labels['htmlsignature'] = 'HTML allkiri';
 $labels['previewpane'] = 'Näita eelvaate akent';
 $labels['skin'] = 'Kliendi välimus';
@@ -311,16 +331,16 @@ $labels['logoutcompact'] = 'Tihenda väljumisel sissetulevate kaust';
 $labels['uisettings'] = 'Kasutajaliides';
 $labels['serversettings'] = 'Serveri seaded';
 $labels['mailboxview'] = 'Postkasti vaade';
-$labels['mdnrequests'] = 'Kättesaamis kinnitus';
+$labels['mdnrequests'] = 'Kättesaamiskinnitus';
 $labels['askuser'] = 'küsi kasutajalt';
 $labels['autosend'] = 'saada automaatselt';
 $labels['autosendknown'] = 'saada automaatselt minu kontaktidele, teised küsi üle';
-$labels['autosendknownignore'] = 'saada automaatselt minu kontaktidele, teised ignoreeri';
+$labels['autosendknownignore'] = 'saada automaatselt minu kontaktidele, teisi ignoreeri';
 $labels['ignore'] = 'ignoreeri';
 $labels['readwhendeleted'] = 'Märgi kiri kustutamisel loetuks';
 $labels['flagfordeletion'] = 'Kustutamise asemel märgi kiri kustutatavaks';
 $labels['skipdeleted'] = 'Ära näita kustutatud kirju';
-$labels['deletealways'] = 'Kui kirja prügikasti liigutamine nurjub siis kustuta need';
+$labels['deletealways'] = 'Kui kirjade prügikasti liigutamine nurjub, siis kustuta need';
 $labels['showremoteimages'] = 'Näita kirjas kaugelt kaasatud pilte';
 $labels['fromknownsenders'] = 'tuntud saatjatelt';
 $labels['always'] = 'alati';
@@ -331,7 +351,7 @@ $labels['keepalive'] = 'Kontrolli uusi kirju';
 $labels['never'] = 'mitte kunagi';
 $labels['immediately'] = 'otsekohe';
 $labels['messagesdisplaying'] = 'Kirjade näitamine';
-$labels['messagescomposition'] = 'Kirja koostamine ';
+$labels['messagescomposition'] = 'Kirja koostamine';
 $labels['mimeparamfolding'] = 'Manuste nimed';
 $labels['2231folding'] = 'Täielik RFC 2231 (Thunderbird)';
 $labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
@@ -341,11 +361,12 @@ $labels['advancedoptions'] = 'Lisaseadistused';
 $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';
+$labels['defaultfont'] = 'HTML kirjade vaikefont';
 $labels['mainoptions'] = 'Peamised valikud';
+$labels['browseroptions'] = 'Sirvimis valikud';
 $labels['section'] = 'Osa';
 $labels['maintenance'] = 'Hooldus';
 $labels['newmessage'] = 'Uus kiri';
-$labels['listoptions'] = 'Nimekirja valikud';
 $labels['signatureoptions'] = 'Allkirja valikud';
 $labels['whenreplying'] = 'Vastates';
 $labels['replytopposting'] = 'alusta uue kirjaga esialgse kohal';
@@ -360,13 +381,19 @@ $labels['abovequote'] = 'tsiteeritu kohale';
 $labels['insertsignature'] = 'Sisesta allkiri';
 $labels['previewpanemarkread'] = 'Märgi eelvaadatud kirjad loetuks';
 $labels['afternseconds'] = '$n sekundi pärast';
-$labels['reqmdn'] = 'Alati nõua kättesaamise kinnitust';
-$labels['reqdsn'] = 'Alati nõua kohalejõudmise teavitust';
+$labels['reqmdn'] = 'Nõua alati kättesaamiskinnitust';
+$labels['reqdsn'] = 'Nõua alati kohalejõudmisteavitust';
 $labels['replysamefolder'] = 'Paiguta vastused samasse kausta, millele vastatakse';
 $labels['defaultaddressbook'] = 'Lisa kontaktid valitud aadressiraamatusse';
+$labels['autocompletesingle'] = 'Automaatlõpetuses jäta alternatiivne e-posti aadress vahele';
 $labels['spellcheckbeforesend'] = 'Kontrolli õigekirja enne saatmist';
+$labels['spellcheckoptions'] = 'Õigekirjakontrolli valikud';
+$labels['spellcheckignoresyms'] = 'Ignoreeri sõnu, milles on sümbolid';
+$labels['spellcheckignorenums'] = 'Ignoreeri sõnu, milles on numbreid';
+$labels['spellcheckignorecaps'] = 'Ignoreeri suurte tähtedega kirjutatud sõnu';
+$labels['addtodict'] = 'Lisa sõnastikku';
+$labels['mailtoprotohandler'] = 'Kasuta mailto: linkide avamisel';
 $labels['folder'] = 'Kaust';
-$labels['folders'] = 'Kaustad';
 $labels['foldername'] = 'Kausta nimi';
 $labels['subscribed'] = 'Näitan';
 $labels['messagecount'] = 'Kirju';
@@ -388,6 +415,12 @@ $labels['sharedfolder'] = 'Avalik kaust';
 $labels['sortby'] = 'Järjesta';
 $labels['sortasc'] = 'Järjesta kasvavalt';
 $labels['sortdesc'] = 'Järjesta kahanevalt';
+$labels['undo'] = 'Võta tagasi';
+$labels['plugin'] = 'Plugin';
+$labels['version'] = 'Versioon';
+$labels['source'] = 'Allikas';
+$labels['license'] = 'Litsents';
+$labels['support'] = 'Küsi abi';
 $labels['B'] = 'B';
 $labels['KB'] = 'KiB';
 $labels['MB'] = 'MiB';
@@ -411,4 +444,3 @@ $labels['japanese'] = 'jaapani';
 $labels['korean'] = 'korea';
 $labels['chinese'] = 'hiina';
 
-?>
index 40e0082cdf07eeb3cca85ddd32818d0e53b2c700..2d8bf78cf92da8dc24449d2de39cc4db7cd56663 100644 (file)
@@ -1,29 +1,25 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/et_EE/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Üllar Pajus <yllar.pajus@gmail.com>                           |
-|         Raivo Hool <raivo.hool@gmail.com>                             |
-|         Elan Ruusamäe <glen@delfi.ee>                                 |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 5139 2011-08-28 09:47:15Z alec $
-
+ +-----------------------------------------------------------------------+
+ | localization/et_EE/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $messages = array();
+$messages['errortitle'] = 'Ilmnes tõrge!';
 $messages['loginfailed'] = 'Sisselogimine ebaõnnestus';
 $messages['cookiesdisabled'] = 'Sinu veebilehitseja ei võta präänikuid vastu';
 $messages['sessionerror'] = 'Sinu seanss on aegunud või vigane';
-$messages['imaperror'] = 'Ei õnnestunud IMAP serveriga ühendust luua';
+$messages['storageerror'] = 'Ei õnnestunud IMAP serveriga ühendust luua';
 $messages['servererror'] = 'Serveri tõrge!';
 $messages['servererrormsg'] = 'Serveri tõrge: $msg';
 $messages['dberror'] = 'Andmebaasi tõrge!';
@@ -45,10 +41,12 @@ $messages['messagesaved'] = 'Kiri salvestatud mustanditesse';
 $messages['successfullysaved'] = 'Edukalt salvestatud';
 $messages['addedsuccessfully'] = 'Kontakt lisati edukalt aadressiraamatusse';
 $messages['contactexists'] = 'Sellise e-posti aadressiga kontakt on juba olemas';
+$messages['contactnameexists'] = 'Sama nimega kontakt on juba olemas.';
 $messages['blockedimages'] = 'Sinu privaatsuse kaitsmiseks on selles kirjas välised pildid blokeeritud.';
 $messages['encryptedmessage'] = 'See on krüpteeritud kiri ja kahjuks pole seda võimalik näidata. Andestust!';
 $messages['nocontactsfound'] = 'Ei leitud ühtegi kontakti';
 $messages['contactnotfound'] = 'Otsitud kontakti ei leitud';
+$messages['contactsearchonly'] = 'Sisesta otsingusõna kontaktide leidmiseks';
 $messages['sendingfailed'] = 'Kirja saatmine ebaõnnestus';
 $messages['senttooquickly'] = 'Palun oota enne selle kirja saatmist $sec sekundit.';
 $messages['errorsavingsent'] = 'Saadetud kirja salvestamisel ilmnes tõrge';
@@ -58,9 +56,12 @@ $messages['errorcopying'] = 'Kirju ei õnnestunud kopeerida';
 $messages['errordeleting'] = 'Ei suutnud seda kirja kustutada';
 $messages['errormarking'] = 'Kirja märkimine nurjus';
 $messages['deletecontactconfirm'] = 'Soovid valitud kontaktid kustutada?';
+$messages['deletegroupconfirm'] = 'Soovid valitud grupi kustutada?';
 $messages['deletemessagesconfirm'] = 'Soovid valitud kirja(d) kustutada?';
 $messages['deletefolderconfirm'] = 'Soovid selle kataloogi kindlasti kustutada?';
 $messages['purgefolderconfirm'] = 'Soovid sellest kaustast kõik kirjad kustutada?';
+$messages['contactdeleting'] = 'Kontakti(de) kustutamine…';
+$messages['groupdeleting'] = 'Grupi kustutamine…';
 $messages['folderdeleting'] = 'Kustutan kausta...';
 $messages['foldermoving'] = 'Liigutan kausta...';
 $messages['foldersubscribing'] = 'Tellin kausta...';
@@ -75,10 +76,10 @@ $messages['nosubjectwarning'] = 'Väli „Pealkiri“ on tühi. Soovid selle är
 $messages['nobodywarning'] = 'Saadan selle kirja ilma tekstita?';
 $messages['notsentwarning'] = 'Kirja saatmine nurjus. Soovid selle ära visata?';
 $messages['noldapserver'] = 'Palun vali otsinguks LDAPi server';
-$messages['nocontactsreturned'] = 'Ühtegi kontakti ei leitud';
 $messages['nosearchname'] = 'Palun sisesta kontakti nimi või e-posti aadress';
 $messages['notuploadedwarning'] = 'Kõiki manuseid ei ole veel üles laaditud. Palun oota või tühista üleslaadimine.';
 $messages['searchsuccessful'] = 'Leiti $nr kirja';
+$messages['contactsearchsuccessful'] = 'Leiti $nr kontakti.';
 $messages['searchnomatch'] = 'Otsingule vastavaid kirju ei leitud';
 $messages['searching'] = 'Otsin...';
 $messages['checking'] = 'Kontrollin...';
@@ -94,15 +95,19 @@ $messages['messageopenerror'] = 'Kirjade serverist laadimine ebaõnnestus';
 $messages['fileuploaderror'] = 'Faili üleslaadimine ebaõnnestus';
 $messages['filesizeerror'] = 'Üleslaetava faili suurus ületab maksimaalse suuruse $size';
 $messages['copysuccess'] = '$nr aadressi edukalt kopeeritud';
-$messages['copyerror'] = 'Ühegi aadressi kopeerimine ei õnnestunud ';
+$messages['copyerror'] = 'Ühegi aadressi kopeerimine ei õnnestunud';
 $messages['sourceisreadonly'] = 'Aadressi asukohas puuduvad kirjutusõigused';
 $messages['errorsavingcontact'] = 'Kontakti aadressi salvestamine ebaõnnestus';
 $messages['movingmessage'] = 'Liigutan kirja...';
 $messages['copyingmessage'] = 'Kopeerin kirja...';
+$messages['copyingcontact'] = 'Kontakti(de) kopeerimine…';
 $messages['deletingmessage'] = 'Kustutan kirja...';
 $messages['markingmessage'] = 'Märgin kirja...';
+$messages['addingmember'] = 'Kontakti(de) gruppi lisamine…';
+$messages['removingmember'] = 'Kontakti(de) grupist eemaldamine…';
 $messages['receiptsent'] = 'Kättesaamiskinnitus saadetud';
 $messages['errorsendingreceipt'] = 'Ei õnnestunud kättesaamiskinnitust saata';
+$messages['deleteidentityconfirm'] = 'Soovid selle identiteedi kustutada?';
 $messages['nodeletelastidentity'] = 'See identiteet on viimane ja seda ei saa kustutada.';
 $messages['forbiddencharacter'] = 'Kausta nimi sisaldab keelatud sümbolit';
 $messages['selectimportfile'] = 'Palun vali üleslaadimiseks fail';
@@ -122,7 +127,6 @@ $messages['smtpautherror'] = 'SMTP tõrge ($code): autentimine nurjus';
 $messages['smtpfromerror'] = 'SMTP tõrge ($code): "$from" saatjaks määramine nurjus ($msg)';
 $messages['smtptoerror'] = 'SMTP tõrge ($code): "$to" saajaks määramine nurjus ($msg)';
 $messages['smtprecipientserror'] = 'SMTP tõrge: saajate nimekirja parsimine nurjus';
-$messages['smtpdsnerror'] = 'SMTP tõrge: puudub kohalejõudmise teavituse toetus';
 $messages['smtperror'] = 'SMTP tõrge: $msg';
 $messages['emailformaterror'] = 'Lubamatu e-posti aadress: $email';
 $messages['toomanyrecipients'] = 'Liiga palju adressaate. Vähenda kirja saajate hulka $max-ni.';
@@ -130,19 +134,27 @@ $messages['maxgroupmembersreached'] = 'Grupi liikmete arv ületab suurima lubatu
 $messages['internalerror'] = 'Ilmnes sisemine tõrge. Palun proovi uuesti.';
 $messages['contactdelerror'] = 'Kontaktide kustutamine nurjus';
 $messages['contactdeleted'] = 'Kontaktide kustutamine õnnestus';
+$messages['contactrestoreerror'] = 'Kustutatud kontakti(de) taastamine nurjus.';
+$messages['contactrestored'] = 'Kontakt(id) edukalt taastatud.';
 $messages['groupdeleted'] = 'Grupi kustutamine õnnestus';
 $messages['grouprenamed'] = 'Grupi ümbernimetamine õnnestus';
 $messages['groupcreated'] = 'Grupi loomine õnnestus';
+$messages['savedsearchdeleted'] = 'Salvestatud otsing edukalt kustutatud.';
+$messages['savedsearchdeleteerror'] = 'Salvestatud otsingu kustutamine nurjus.';
+$messages['savedsearchcreated'] = 'Salvestatud otsing edukalt loodud.';
+$messages['savedsearchcreateerror'] = 'Salvestatud otsingu loomine nurjus.';
 $messages['messagedeleted'] = 'Kiri edukalt kustutatud';
 $messages['messagemoved'] = 'Kiri edukalt liigutatud';
 $messages['messagecopied'] = 'Kiri edukalt kopeeritud';
 $messages['messagemarked'] = 'Kiri edukalt märgitud';
 $messages['autocompletechars'] = 'Sisesta vähemalt $min märki autom. lõpetuseks';
+$messages['autocompletemore'] = 'Otsingule on liiga palju vasteid. Palun sisesta veel mõni märk.';
 $messages['namecannotbeempty'] = 'Nimi ei saa olla tühi';
 $messages['nametoolong'] = 'Nimi liiga pikk';
 $messages['folderupdated'] = 'Kaust uuendatud edukalt';
 $messages['foldercreated'] = 'Kaust loodud edukalt';
 $messages['invalidimageformat'] = 'Pole õige pildi formaat';
 $messages['mispellingsfound'] = 'Kiri sisaldab õigekirjavigu';
+$messages['parentnotwritable'] = 'Kasuta loomine/liigutamine valitud kausta nurjus. Pole õigusi.';
+$messages['messagetoobig'] = 'Kiri on töötlemiseks liiga suur.';
 
-?>
index dfa6aa6319c70e792ef95124471b7c9d3e750ca6..a7aa07445937c7a86da65d0b1310cf50f6bd778f 100644 (file)
@@ -1,24 +1,20 @@
 <?php
 
 /*
-+-----------------------------------------------------------------------+
-| language/eu_ES/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Bicyus <bicyus@tenkanet.com>                                  |
-|         Bihar <gaurdabihar@gmail.com>                                 |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 4410 2011-01-12 18:25:02Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/eu_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Aritz <aritz@itxaropena.org>                                  |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
-$labels['welcome'] = 'Ongietorri Roundcube|Mail-era';
+$labels['welcome'] = 'Ongi etorri $product';
 $labels['username'] = 'Erabiltzailea';
 $labels['password'] = 'Pasahitza';
 $labels['server'] = 'Zerbitzaria';
@@ -38,21 +34,25 @@ $labels['to'] = 'Nori';
 $labels['cc'] = 'Kopia';
 $labels['bcc'] = 'Bcc';
 $labels['replyto'] = 'Erantzun-Honi';
+$labels['followupto'] = 'Jarraipena honi';
 $labels['date'] = 'Data';
 $labels['size'] = 'Tamaina';
 $labels['priority'] = 'Lehentasuna';
 $labels['organization'] = 'Erakundea';
-$labels['reply-to'] = 'Erantzun-Honi';
+$labels['readstatus'] = 'Irakurketaren egoera';
+$labels['listoptions'] = 'Zerrendaren aukerak...';
 $labels['mailboxlist'] = 'Karpetak';
+$labels['folders'] = 'Karpetak';
 $labels['messagesfromto'] = '$from -tik $to -ra $count mezuetatik';
+$labels['threadsfromto'] = '$from -etik $to -rako gaiak (guztira $count)';
 $labels['messagenrof'] = '$nr mezua $count -tik';
+$labels['fromtoshort'] = '$from - $to , guztira $count';
+$labels['copy'] = 'Kopia';
+$labels['move'] = 'Mugitu';
 $labels['moveto'] = 'mugitu hona...';
 $labels['download'] = 'deskargatu';
 $labels['filename'] = 'Fitxategi Izena';
 $labels['filesize'] = 'Fitxategi Tamaina';
-$labels['preferhtml'] = 'HTML nahiago';
-$labels['htmlmessage'] = 'HTML Mezua';
-$labels['prettydate'] = 'Data politak';
 $labels['addtoaddressbook'] = 'Helbide liburura gehitu';
 $labels['sun'] = 'Iga';
 $labels['mon'] = 'Al';
@@ -72,7 +72,8 @@ $labels['jan'] = 'Urt';
 $labels['feb'] = 'Ots';
 $labels['mar'] = 'Mar';
 $labels['apr'] = 'Api';
-$labels['may'] = 'Mai';
+$labels['may'] = 'Maiatza';
+$labels['longmay'] = 'Maiatza';
 $labels['jun'] = 'Eka';
 $labels['jul'] = 'Uzt';
 $labels['aug'] = 'Abu';
@@ -84,7 +85,6 @@ $labels['longjan'] = 'Urtarrila';
 $labels['longfeb'] = 'Otsaila';
 $labels['longmar'] = 'Martxoa';
 $labels['longapr'] = 'Apirila';
-$labels['longmay'] = 'Maiatza';
 $labels['longjun'] = 'Ekaina';
 $labels['longjul'] = 'Uztaila';
 $labels['longaug'] = 'Abuztua';
@@ -93,42 +93,50 @@ $labels['longoct'] = 'Urria';
 $labels['longnov'] = 'Azaroa';
 $labels['longdec'] = 'Abendua';
 $labels['today'] = 'Gaur';
+$labels['refresh'] = 'Eguneratu';
 $labels['checkmail'] = 'Mezu berrien bila arakatu';
+$labels['compose'] = 'Mezu bat sortu';
 $labels['writenewmessage'] = 'Mezu berri bat sortu';
+$labels['reply'] = 'Erantzun';
 $labels['replytomessage'] = 'Mezuari erantzun';
 $labels['replytoallmessage'] = 'Bidaltzaile eta hartzaile guztiei erantzun';
+$labels['replyall'] = 'Guztiei erantzun';
+$labels['forward'] = 'Berbidali';
+$labels['forwardattachment'] = 'Erantsi gisa berbidali';
 $labels['forwardmessage'] = 'Mezua Birbidali';
 $labels['deletemessage'] = 'Mezua ezabatu';
 $labels['movemessagetotrash'] = 'Mezua zakarrontzira mugitu';
 $labels['printmessage'] = 'Mezu hau inprimatu';
 $labels['previousmessage'] = 'Aurreko mezua ikusi';
-$labels['previousmessages'] = 'Aurreko mezuak ikusi';
 $labels['firstmessage'] = 'Lehenengo mezua ikusi';
-$labels['firstmessages'] = 'Lehenengo mezu sorta ikusi';
 $labels['nextmessage'] = 'Hurrengo mezua ikusi';
-$labels['nextmessages'] = 'Hurrengo mezu sorta ikusi';
 $labels['lastmessage'] = 'Azken mezua ikusi';
-$labels['lastmessages'] = 'Azken mezu sorta ikusi';
 $labels['backtolist'] = 'Mezu zerrendara itzuli';
 $labels['viewsource'] = 'Jatorria bistarazi';
+$labels['mark'] = 'Markatu';
 $labels['markmessages'] = 'Markatu mezuak';
 $labels['markread'] = 'Irakurria bezala';
 $labels['markunread'] = 'Ez-irakurria bezala';
 $labels['markflagged'] = 'Markatua bezala';
 $labels['markunflagged'] = 'Ez-markatua bezala';
+$labels['moreactions'] = 'Ekintza gehiago...';
+$labels['more'] = 'Gehiago';
+$labels['back'] = 'Atzera';
+$labels['options'] = 'Aukerak';
 $labels['select'] = 'Hautatu';
 $labels['all'] = 'Denak';
-$labels['none'] = 'Batez';
+$labels['none'] = 'Bat ere ez';
+$labels['nonesort'] = 'Bat ere ez';
+$labels['currpage'] = 'Uneko orrialdea';
 $labels['unread'] = 'Irakurri gabeak';
+$labels['flagged'] = 'Banderaduna';
 $labels['compact'] = 'Trinkotu';
 $labels['empty'] = 'Hustu';
-$labels['purge'] = 'Garbitu';
 $labels['quota'] = 'Disko erabilera';
 $labels['unknown'] = 'ezezaguna';
 $labels['unlimited'] = 'mugagabea';
 $labels['quicksearch'] = 'Bilaketa azkarra';
 $labels['resetsearch'] = 'Bilaketa berrabiarazi';
-$labels['compose'] = 'Mezu bat sortu';
 $labels['savemessage'] = 'Zirriborro hau gorde';
 $labels['sendmessage'] = 'Mezua orain bidali';
 $labels['addattachment'] = 'Fitxategia erantsi';
@@ -172,7 +180,7 @@ $labels['save'] = 'Gorde';
 $labels['delete'] = 'Ezabatu';
 $labels['newcontact'] = 'Helbide liburu txartel berria sortu';
 $labels['deletecontact'] = 'Aukeraturiko txartelak ezabatu';
-$labels['composeto'] = 'Bidali mezua honi: ';
+$labels['composeto'] = 'Bidali mezua honi:';
 $labels['contactsfromto'] = '$from -tik $to -ra $count txarteletatik';
 $labels['print'] = 'Inprimatu';
 $labels['export'] = 'Esportatu';
@@ -191,6 +199,9 @@ $labels['manageidentities'] = 'Kontu honetako identitateak kudeatu';
 $labels['newidentity'] = 'Identitate berria';
 $labels['newitem'] = 'Elementu berria';
 $labels['edititem'] = 'Elementua Editatu';
+$labels['preferhtml'] = 'HTML nahiago';
+$labels['htmlmessage'] = 'HTML Mezua';
+$labels['prettydate'] = 'Data politak';
 $labels['setdefault'] = 'Lehenespenak ezarri';
 $labels['language'] = 'Hizkuntza';
 $labels['timezone'] = 'Ordu zonaldea';
@@ -218,7 +229,6 @@ $labels['never'] = 'inoiz ez';
 $labels['messagesdisplaying'] = 'Mezuak ikusi';
 $labels['messagescomposition'] = 'Mezuak sortu';
 $labels['folder'] = 'Karpeta';
-$labels['folders'] = 'Karpetak';
 $labels['foldername'] = 'Karpeta izena';
 $labels['subscribed'] = 'Harpideturik';
 $labels['messagecount'] = 'Mezuak';
@@ -230,4 +240,3 @@ $labels['sortby'] = 'Honela ordenatu';
 $labels['sortasc'] = 'Goraka ordenatu';
 $labels['sortdesc'] = 'Beheraka ordenatu';
 
-?>
index c5af5eaef10ed5889a1c2586a7ba18aaeef3fafd..cbfe908bbe9e0dc5180f96c5eabc46154da20c17 100644 (file)
@@ -1,27 +1,24 @@
 <?php
 
 /*
-+-----------------------------------------------------------------------+
-| language/eu_ES/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: pi <pi@beobide.net>                                           |
-|         Bihar <gaurdabihar@gmail.com>                                 |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 4410 2011-01-12 18:25:02Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/eu_ES/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $messages = array();
 $messages['loginfailed'] = 'Saio sarrerak huts egin du';
 $messages['cookiesdisabled'] = 'Zure nabigatzaileak ez ditu cookie-ak onartzen';
 $messages['sessionerror'] = 'Zure saioa baliogabea da edo iraungita dago';
-$messages['imaperror'] = 'Huts IMAP zerbitzarira konektatzean';
+$messages['storageerror'] = 'Huts IMAP zerbitzarira konektatzean';
 $messages['nomessagesfound'] = 'Ez da mezurik aurkitu posta kutxa honetan';
 $messages['loggedout'] = 'Saioa behar bezala amaitu duzu. Agur!';
 $messages['mailboxempty'] = 'Posta kutxa hutsik dago';
@@ -53,11 +50,10 @@ $messages['noemailwarning'] = 'Mesedez idatzi baliozko eposta helbide bat';
 $messages['nonamewarning'] = 'Mesedez izen bat idatzi';
 $messages['nopagesizewarning'] = 'Mesedez paper tamaina idatzi';
 $messages['norecipientwarning'] = 'Mesedez behintzat hartzaile bat idatzi';
-$messages['nosubjectwarning'] = '\"Gaia\" eremua hutsik dago. Bat idatzi nahi al duzu?';
+$messages['nosubjectwarning'] = '"Gaia" eremua hutsik dago. Bat idatzi nahi al duzu?';
 $messages['nobodywarning'] = 'Testu gabeko mezu hau bidali?';
 $messages['notsentwarning'] = 'Mezua ez da bidali. Mezua ezeztatu nahi al duzu?';
 $messages['noldapserver'] = 'Mesedez hautatu bilaketa egiteko LDAP zerbitzari bat';
-$messages['nocontactsreturned'] = 'Ez da kontakturik aurkitu';
 $messages['nosearchname'] = 'Mesedez idatzi kontaktu izen bat edo eposta helbide bat';
 $messages['searchsuccessful'] = '$nr mezu aurkiturik';
 $messages['searchnomatch'] = 'Bilaketak ez du emaitzarik itzuli';
@@ -80,4 +76,3 @@ $messages['errorsendingreceipt'] = 'Ezin da agiria bidali';
 $messages['nodeletelastidentity'] = 'Ezin da izaera hau ezabatu, zure bakarra da';
 $messages['forbiddencharacter'] = 'Karpeta izenak debekatutako karaktereak ditu';
 
-?>
diff --git a/program/localization/fa/labels.inc b/program/localization/fa/labels.inc
deleted file mode 100644 (file)
index ff8b829..0000000
+++ /dev/null
@@ -1,263 +0,0 @@
-<?php
-
-/*
-+-----------------------------------------------------------------------+
-| language/fa/labels.inc                                                |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Mohammad Ebrahim Mohammadi Panah <mebrahim at gmail.com>      |
-|         Anoosh <anoosher2003 at yahoo.com>                            |
-|         Nader Aghazadeh <Nader.aghazadeh at gmail.com>                |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 4410 2011-01-12 18:25:02Z thomasb $
-
-*/
-
-$labels = array();
-$labels['welcome'] = 'خوش آمدید $product به';
-$labels['username'] = 'نام کاربری';
-$labels['password'] = 'گذرواژه';
-$labels['server'] = 'سرور';
-$labels['login'] = 'ورود';
-$labels['logout'] = 'خروج';
-$labels['mail'] = 'ایمیل';
-$labels['settings'] = 'تنظیمات شخصی';
-$labels['addressbook'] = 'دفتر نشانی‌ها';
-$labels['inbox'] = 'صندوق';
-$labels['drafts'] = 'پیش‌نویس‌ها';
-$labels['sent'] = 'فرستاده‌شده‌ها';
-$labels['trash'] = 'زباله‌دان';
-$labels['junk'] = 'بنجل';
-$labels['subject'] = 'موضوع';
-$labels['from'] = 'فرستنده';
-$labels['to'] = 'گیرنده';
-$labels['cc'] = 'رونوشت';
-$labels['bcc'] = 'رونوشت مخفی';
-$labels['replyto'] = 'پاسخ-به';
-$labels['date'] = 'تاریخ';
-$labels['size'] = 'حجم';
-$labels['priority'] = 'اولویت';
-$labels['organization'] = 'سازمان‌دهی';
-$labels['reply-to'] = 'پاسخ-به';
-$labels['mailboxlist'] = 'پوشه‌ها';
-$labels['messagesfromto'] = 'تا $count از $to تا $from پیغام‌های';
-$labels['messagenrof'] = 'تا $count پیغام  از $nr';
-$labels['moveto'] = '...انتقال به';
-$labels['download'] = 'دانلود';
-$labels['filename'] = 'نام پرونده';
-$labels['filesize'] = 'اندازه‌ی پرونده';
-$labels['preferhtml'] = 'HTML نمایش';
-$labels['htmlmessage'] = 'HTML پیغام';
-$labels['prettydate'] = 'تاریخ‌های زیبا';
-$labels['addtoaddressbook'] = 'افزودن به دفتر نشانی‌ها';
-$labels['sun'] = 'یکشنبه';
-$labels['mon'] = 'دوشنبه';
-$labels['tue'] = 'سه‌شنبه';
-$labels['wed'] = 'چهارشنبه';
-$labels['thu'] = 'پنج‌شنبه';
-$labels['fri'] = 'جمعه';
-$labels['sat'] = 'شنبه';
-$labels['sunday'] = 'یکشنبه';
-$labels['monday'] = 'دوشنبه';
-$labels['tuesday'] = 'سه‌شنبه';
-$labels['wednesday'] = 'چهارشنبه';
-$labels['thursday'] = 'پنج‌شنبه';
-$labels['friday'] = 'جمعه';
-$labels['saturday'] = 'شنبه';
-$labels['jan'] = 'ژانویه';
-$labels['feb'] = 'فوریه';
-$labels['mar'] = 'مارس';
-$labels['apr'] = 'آوریل';
-$labels['may'] = 'می';
-$labels['jun'] = 'ژوئن';
-$labels['jul'] = 'جولی';
-$labels['aug'] = 'آگوست';
-$labels['sep'] = 'سپتامبر';
-$labels['oct'] = 'اکتبر';
-$labels['nov'] = 'نوامبر';
-$labels['dec'] = 'دسامبر';
-$labels['longjan'] = 'ژانویه';
-$labels['longfeb'] = 'فوریه';
-$labels['longmar'] = 'مارس';
-$labels['longapr'] = 'آوریل';
-$labels['longmay'] = 'می';
-$labels['longjun'] = 'ژوئن';
-$labels['longjul'] = 'جولی';
-$labels['longaug'] = 'آگوست';
-$labels['longsep'] = 'سپتامبر';
-$labels['longoct'] = 'اکتبر';
-$labels['longnov'] = 'نوامبر';
-$labels['longdec'] = 'دسامبر';
-$labels['today'] = 'امروز';
-$labels['checkmail'] = 'بررسی برای پیغام‌های جدید';
-$labels['writenewmessage'] = 'ایجاد پیغام جدید';
-$labels['replytomessage'] = 'پاسخ به پیغام';
-$labels['replytoallmessage'] = 'پاسخ به فرستنده وتمام گیرنده‌ها';
-$labels['forwardmessage'] = 'ارجاع پیغام';
-$labels['deletemessage'] = 'حذف پیغام';
-$labels['movemessagetotrash'] = 'انتقال پیغام به زباله‌دان';
-$labels['printmessage'] = 'چاپ این پیغام';
-$labels['previousmessage'] = 'نمایش پیغام قبلی';
-$labels['previousmessages'] = 'نمایش دسته‌ی قبلی  پیغام‌ها';
-$labels['firstmessage'] = 'نمایش اولین  پیغام';
-$labels['firstmessages'] = 'نمایش اولین دسته‌ی پیغام‌ها';
-$labels['nextmessage'] = 'نمایش پیغام بعدی';
-$labels['nextmessages'] = 'نمایش دسته‌ی بعدی  پیغام‌ها';
-$labels['lastmessage'] = 'نمایش آخرین پیغام';
-$labels['lastmessages'] = 'نمایش آخرین دسته‌ی  پیغام‌ها';
-$labels['backtolist'] = 'بازگشت به فهرست پیغام‌ها';
-$labels['viewsource'] = 'نمایش منبع';
-$labels['markmessages'] = 'علامت‌گذاری پیغام‌ها';
-$labels['markread'] = 'به عنوان خوانده‌شده';
-$labels['markunread'] = 'به عنوان خوانده‌نشده';
-$labels['markflagged'] = 'به عنوان علامت گذاری شده';
-$labels['markunflagged'] = 'به عنوان علامت گذاری نشده';
-$labels['select'] = 'انتخاب';
-$labels['all'] = 'همه';
-$labels['none'] = 'هیچ';
-$labels['unread'] = 'ناخوانده';
-$labels['flagged'] = 'علامت گذاری شده';
-$labels['unanswered'] = 'پاسخ داده نشده';
-$labels['filter'] = 'فیلتر';
-$labels['compact'] = 'فشرده';
-$labels['empty'] = 'خالی';
-$labels['purge'] = 'خرد کردن';
-$labels['quota'] = 'فضای استفاده شده';
-$labels['unknown'] = 'ناشناخته';
-$labels['unlimited'] = 'نامحدود';
-$labels['quicksearch'] = 'جستجوی سریع';
-$labels['resetsearch'] = 'شروع مجدد جستجو';
-$labels['openinextwin'] = 'نمایش در صفحه جدید';
-$labels['compose'] = 'نوشتن پیغام';
-$labels['savemessage'] = 'ذخیره‌ی این پیش‌نویس';
-$labels['sendmessage'] = 'ارسال پیغام';
-$labels['addattachment'] = 'پیوست کردن یک پرونده';
-$labels['charset'] = 'مجموعه‌نمایه';
-$labels['editortype'] = 'نوع ویرایش‌گر';
-$labels['returnreceipt'] = 'رسید دریافت';
-$labels['checkspelling'] = 'بررسی املایی';
-$labels['resumeediting'] = 'ادامه‌ی ویرایش';
-$labels['revertto'] = 'برگرداندن به';
-$labels['attachments'] = 'پیوست‌ها';
-$labels['upload'] = 'بالاگذاری';
-$labels['close'] = 'بستن';
-$labels['low'] = 'کم';
-$labels['lowest'] = 'کم‌ترین';
-$labels['normal'] = 'معمولی';
-$labels['high'] = 'زیاد';
-$labels['highest'] = 'بیش‌ترین';
-$labels['nosubject'] = '(بدون موضوع)';
-$labels['showimages'] = 'نمایش عکس‌ها';
-$labels['alwaysshow'] = 'را نمایش بده $sender همیشه عکسهای دریافتی از  ';
-$labels['htmltoggle'] = 'HTML';
-$labels['plaintoggle'] = 'متن ساده';
-$labels['savesentmessagein'] = 'ذخیره پیغام ارسالی در';
-$labels['dontsave'] = 'ذخیره نکن';
-$labels['maxuploadsize'] = 'مجاز می باشد $size حجم فایل حداکثر تا میزان  ';
-$labels['addcc'] = 'افزودن رونوشت';
-$labels['addbcc'] = 'افزودن رونوشت مخفی';
-$labels['addreplyto'] = 'افزودن پاسخ-به';
-$labels['mdnrequest'] = 'فرستندهٔ این پیغام خواسته است که وقتی شما این پیغام را می‌خوانید، آگاه شود. آیا مایلید فرستنده را آگاه کنید؟';
-$labels['receiptread'] = '(رسید دریافت (خواندن';
-$labels['yourmessage'] = 'این یک رسید دریافت برای پیغام شماست';
-$labels['receiptnote'] = 'تذکر: این رسید فقط تصدیق می‌کند که پیغام، روی رایانهٔ گیرنده نمایش داده شده است. هیچ تضمینی نیست که گیرنده، محتوای پیغام را خوانده یا فهمیده باشد.';
-$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  تماس‌های';
-$labels['print'] = 'چاپ';
-$labels['export'] = 'صدور';
-$labels['exportvcards'] = 'صدور اطلاعات تماس ها با فرمت Vcard';
-$labels['previouspage'] = 'نمایش دسته‌ی قبلی';
-$labels['firstpage'] = 'نمایش دسته‌ی اول';
-$labels['nextpage'] = 'نمایش دسته‌ی بعدی';
-$labels['lastpage'] = 'نمایش دسته‌ی آخر';
-$labels['groups'] = 'گروه‌ها';
-$labels['personaladrbook'] = 'نشانی‌های شخصی';
-$labels['import'] = 'وارد کردن ';
-$labels['importcontacts'] = 'وارد کردن تماسها';
-$labels['importfromfile'] = ':ورود اطلاعات از فایل ';
-$labels['importreplace'] = 'جایگزینی دفترچه آدرس کامل';
-$labels['importtext'] = 'شما میتوانید اطلاعات تماس ها را به دفترچه تلفن موجود منتقل کنید. <br/>  ما در حال حاضر امکان انتقال آدرسها را با فرمت <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> برای شما فراهم نموده ایم.';
-$labels['done'] = 'انجام شد';
-$labels['settingsfor'] = 'تنظیمات';
-$labels['preferences'] = 'ترجیحات';
-$labels['userpreferences'] = 'ترجیحات کاربر';
-$labels['editpreferences'] = 'ویرایش ترجیحات کاربر';
-$labels['identities'] = 'شناسه‌ها';
-$labels['manageidentities'] = 'مدیریت شناسه‌ها برای این حساب';
-$labels['newidentity'] = 'شناسه جدید';
-$labels['newitem'] = 'مورد جدید';
-$labels['edititem'] = 'ویرایش مورد';
-$labels['setdefault'] = 'پیش‌فرض کن';
-$labels['autodetect'] = 'خودکار';
-$labels['language'] = 'زبان';
-$labels['timezone'] = 'محدوده‌ی زمانی';
-$labels['pagesize'] = 'سطر در صفحه';
-$labels['signature'] = 'امضا';
-$labels['dstactive'] = 'ساعت تابستانی';
-$labels['htmleditor'] = 'HTML ‌نوشتن پیغام‌های';
-$labels['htmlsignature'] = 'HTML امضای';
-$labels['previewpane'] = 'نمایش قاب پیش‌نمایش';
-$labels['skin'] = 'پوسته ظاهری';
-$labels['logoutclear'] = 'تمیز کردن زباله دان در هنگام خروچ';
-$labels['logoutcompact'] = 'فشرده سازی صندوق در هنگام خروچ';
-$labels['uisettings'] = 'محیط کاربری';
-$labels['serversettings'] = 'تنظیمات سرور';
-$labels['mailboxview'] = 'نمایش صندوق';
-$labels['mdnrequests'] = 'تاییدهای فرستنده';
-$labels['askuser'] = 'پرسش از کاربر';
-$labels['autosend'] = 'ارسال خود به خود';
-$labels['ignore'] = 'نادیده گیری';
-$labels['readwhendeleted'] = 'در هنگام پاک کردن، پیغام را به عنوان خوانده شده علامت بزن';
-$labels['flagfordeletion'] = 'پیغام را بجای پاک کردن، برای پاک شدن آماده کن ';
-$labels['skipdeleted'] = 'پیغام های حذف شده را نمایش نده';
-$labels['showremoteimages'] = 'تصاویر لینک شده را نمایش بده';
-$labels['fromknownsenders'] = 'از سوی فرستنده شناس';
-$labels['always'] = 'همواره';
-$labels['showinlineimages'] = 'نمایش عکس های الصاق شده در پایین پیغام';
-$labels['autosavedraft'] = 'ذخیره‌ی خودکار پیش‌نویس';
-$labels['everynminutes'] = 'دقیقه/ها $n هر';
-$labels['keepalive'] = 'بررسی پیغام جدید روی';
-$labels['never'] = 'هرگز';
-$labels['messagesdisplaying'] = 'نمایش داده شدن پیغام ها';
-$labels['messagescomposition'] = 'نوشته شدن پیغام ها';
-$labels['mimeparamfolding'] = 'عناوین پیوستی';
-$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
-$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
-$labels['2047folding'] = 'Full RFC 2047 (سایر)';
-$labels['advancedoptions'] = 'گزینه های پیشرفته';
-$labels['focusonnewmessage'] = 'مشخص نمودن پیغام جدید';
-$labels['checkallfolders'] = 'همه پوشه ها رو برای مشاهده پیغام های جدید بگردید';
-$labels['folder'] = 'پوشه';
-$labels['folders'] = 'پوشه‌ها';
-$labels['foldername'] = 'نام پوشه';
-$labels['messagecount'] = 'پیغام‌ها';
-$labels['create'] = 'ایجاد';
-$labels['createfolder'] = 'ایجاد پوشه‌ی جدید';
-$labels['managefolders'] = 'مدیریت پوشه‌ها';
-$labels['specialfolders'] = 'پوشه های ویژه';
-$labels['sortby'] = 'مرتب‌سازی بر اساس';
-$labels['sortasc'] = 'مرتب‌سازی صعودی';
-$labels['sortdesc'] = 'مرتب‌سازی نزولی';
-$labels['B'] = 'بایت';
-$labels['KB'] = 'کیلو بایت';
-$labels['MB'] = 'مگابایت';
-$labels['GB'] = 'گیگا بایت';
-
-?>
diff --git a/program/localization/fa/messages.inc b/program/localization/fa/messages.inc
deleted file mode 100644 (file)
index 2884ab4..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-
-/*
-+-----------------------------------------------------------------------+
-| language/fa/messages.inc                                              |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Mohammad Ebrahim Mohammadi Panah <mebrahim at gmail.com>      |
-|         Anoosh <anoosher2003 at yahoo.com>                            |
-|         Nader Aghazadeh <Nader.aghazadeh at gmail.com>                |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 4410 2011-01-12 18:25:02Z thomasb $
-
-*/
-
-$messages = array();
-$messages['loginfailed'] = 'ورود ناموفق بود';
-$messages['cookiesdisabled'] = 'مرورگر شما کوکی قبول نمی کند';
-$messages['sessionerror'] = 'نشست شما معتبر نیست، یا منقضی شده است';
-$messages['imaperror'] = 'ناموفق بود IMAPاتصال به سرور';
-$messages['nomessagesfound'] = 'هیچ پیغامی در صندوق نامه پیدا نشد';
-$messages['loggedout'] = '!شما با موفقیت نشست را پایان دادید. خدا نگه‌دار';
-$messages['mailboxempty'] = 'صندوق نامه خالی است';
-$messages['loading'] = '...در حال بارگذاری';
-$messages['loadingdata'] = '...در حال بارگذاری داده‌ها';
-$messages['checkingmail'] = '...بررسی برای پیغام جدید';
-$messages['sendingmessage'] = '...در حال ارسال پیغام';
-$messages['messagesent'] = 'پیغام با موفقیت فرستاده شد';
-$messages['savingmessage'] = '...درحال ذخیره‌ی پیغام';
-$messages['messagesaved'] = 'پیغام در پیش‌نویس‌ها ذخیره شد';
-$messages['successfullysaved'] = 'با موفقیت ذخیره شد';
-$messages['addedsuccessfully'] = 'تماس با موفقیت به دفتر نشانی‌ها اضافه شد';
-$messages['contactexists'] = 'یک تماس با این نشانی ایمیل از قبل وجود دارد';
-$messages['blockedimages'] = 'برای حفاظت از حریم شخصی شما، عکس‌های دوردست از پیغام حذف شد';
-$messages['encryptedmessage'] = '!این یک پیغام رمزنگاری شده است و قابل نمایش نیست. ببخشید';
-$messages['nocontactsfound'] = 'هیج تماسی پیدا نشد';
-$messages['contactnotfound'] = 'تماس درخواست شده پیدا نشد';
-$messages['sendingfailed'] = 'ناموفق در فرستادن پیغام';
-$messages['senttooquickly'] = 'دقیقه صبر کنید $sec لطفا قبل از ارسال این پیغام     ';
-$messages['errorsavingsent'] = 'در لحظه ذخیره پیغام ارسال شده ، مشکل به وجود آمد';
-$messages['errorsaving'] = 'هنگام ذخیره‌سازی، اشکالی پیش آمد';
-$messages['errormoving'] = 'ناتوان در انتقال پیغام';
-$messages['errordeleting'] = 'ناتوان در حذف پیغام';
-$messages['deletecontactconfirm'] = 'آیا واقعاً می‌خواهید تماس (های) انتخاب شده را حذف کنید؟';
-$messages['deletemessagesconfirm'] = 'آیا واقعاً می‌خواهید پیغام (های) انتخاب شده را حذف کنید؟';
-$messages['deletefolderconfirm'] = 'آیا واقعاً می‌خواهید این پوشه را حذف کنید؟';
-$messages['purgefolderconfirm'] = 'آیا واقعاً می‌خواهید همه‌ی پیغام‌های داخل این پوشه را حذف کنید؟';
-$messages['folderdeleting'] = '...در حال حذف پوشه ';
-$messages['foldermoving'] = '...در حال انتقال پوشه ';
-$messages['formincomplete'] = 'فرم کاملاً پر نشده بود';
-$messages['noemailwarning'] = 'لطفاً یک نشانی ایمیل معتبر وارد کنید';
-$messages['nonamewarning'] = 'لطفاً یک نام وارد کنید';
-$messages['nopagesizewarning'] = 'لطفاً یک اندازه برای صفحه وارد کنید';
-$messages['nosenderwarning'] = 'لطفاً آدرس فرستنده ایمیل را وارد کنید';
-$messages['norecipientwarning'] = 'لطفاً حداقل یک گیرنده وارد کنید';
-$messages['nosubjectwarning'] = 'قسمت \"موضوع\" خالی است. آیا می‌خواهید اکنون وارد کنید؟';
-$messages['nobodywarning'] = 'این پیغام بدون متن ارسال شود؟';
-$messages['notsentwarning'] = 'پیغام ارسال نشده است. آیا می‌خواهید پیغام را از بین ببرید؟';
-$messages['noldapserver'] = 'برای جست و جو انتخاب کنید LDAP لطفاً یک سرور';
-$messages['nocontactsreturned'] = 'هیچ تماسی پیدا نشد';
-$messages['nosearchname'] = 'لطفا نام یک تماس و یا یک نشانی ایمیل وارد کنید';
-$messages['searchsuccessful'] = 'پیغام پیدا شد $nr';
-$messages['searchnomatch'] = 'جست و جو هیچ نتیجه‌ای نداشت';
-$messages['searching'] = '...در حال جست و جو';
-$messages['checking'] = '...در حال بررسی';
-$messages['nospellerrors'] = 'هیچ اشکال املایی پیدا نشد';
-$messages['folderdeleted'] = 'پوشه با موفقیت حذف شد';
-$messages['deletedsuccessfully'] = 'حذف انجام شد';
-$messages['converting'] = '...در حال حذف قالب‌بندی‌ها از پیغام';
-$messages['messageopenerror'] = 'ناتوان در بارگذاری پیغام از روی سرور';
-$messages['fileuploaderror'] = 'بالاگذاری پرونده ناموفق بود';
-$messages['filesizeerror'] = 'بیشتر است $size اندازه‌ی پرونده‌ی بالاگذاری شده از بیشینه اندازه‌ی';
-$messages['copysuccess'] = 'نشانی با موفقیت رونوشت‌برداری شدند $nr';
-$messages['copyerror'] = 'رونوشت‌برداری از نشانی‌ها ناموفق بود';
-$messages['sourceisreadonly'] = 'این منبع نشانی فقط‌خواندنی است';
-$messages['errorsavingcontact'] = 'ذخیره‌ی نشانی تماس ناموفق بود';
-$messages['movingmessage'] = '...در حال انتقال پیغام';
-$messages['receiptsent'] = 'رسید خواندن با موفقیت ارسال شد';
-$messages['errorsendingreceipt'] = 'ناتوان در ارسال رسید';
-$messages['nodeletelastidentity'] = '.نمی‌توانید این هویت را حذف کنید، زیرا آخرین هویت شماست';
-$messages['forbiddencharacter'] = 'نام پوشه شامل یک حرف غیر مجاز است';
-$messages['selectimportfile'] = 'لطفاً فایل را جهت بارگذاری انتخاب کنید';
-$messages['addresswriterror'] = 'در دفترچه تلفن انتخابی ، اجازه نوشتن ندارید';
-$messages['importwait'] = '...در حال انتقال اطلاعات ، لطفا صبر کنید';
-$messages['importerror'] = 'سازگار نیست vcard انتقال اطلاعات متوقف شده ، فرمت فایل بارگذاری شده با فرمت';
-$messages['importconfirm'] = 'p><em>$names</em></p> </b>: متوقف شد$skipped تماس با موفقبت انتقال یافت و  $inserted <b>';
-$messages['opnotpermitted'] = '!عملیات مجاز نیست';
-$messages['nofromaddress'] = 'ایمیل های گم شده در گزینه انتخاب شده';
-$messages['editorwarning'] = 'تغییر ویرایشگر متن باعث ابطال فرمت همه متن ها می شود ، آیا می خواهید با این وجود عملیات را ادامه بدهید ؟';
-
-?>
index 19700a5dab6587fb0bbe03a27228e5a6a7797db6..742668ccd290de446381ea9fa10a0dc8ea1cbc85 100644 (file)
 <?php
 
-
-
-// login page
-$labels['welcome']   = 'به اين پروژه خوش امديد';
-$labels['username']  = 'نام کاربر  ';
-$labels['password']  = 'شفر';
-$labels['server']    = 'سرور';
-$labels['login']     = 'داخل شدن ';
-
-// taskbar
-$labels['logout']   = 'خروج';
-$labels['mail']     = 'ايميل ';
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fa_AF/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['welcome'] = 'به اين پروژه خوش امديد';
+$labels['username'] = 'نام کاربر';
+$labels['password'] = 'شفر';
+$labels['server'] = 'سرور';
+$labels['login'] = 'داخل شدن';
+$labels['logout'] = 'خروج';
+$labels['mail'] = 'ايميل';
 $labels['settings'] = 'تنظیمات شخصی';
-$labels['addressbook'] = 'کتاب ادرس ';
-
-// mailbox names
-$labels['inbox']  = 'نامه های ارسالي  ';
+$labels['addressbook'] = 'کتاب ادرس';
+$labels['inbox'] = 'نامه های ارسالي';
 $labels['drafts'] = 'نامه های ناتکمیل';
-$labels['sent']   = 'ارسال شده ';
-$labels['trash']  = 'اشغال دانی';
-$labels['junk']   = 'بیکاره';
-
-// message listing
-$labels['subject'] = 'مضمون ';
-$labels['from']    = 'ارسال کننده ';
-$labels['to']      = 'ګيرينده ';
-$labels['cc']      = 'تکثیر';
-$labels['bcc']     = 'تکثیر پنهان';
+$labels['sent'] = 'ارسال شده';
+$labels['trash'] = 'اشغال دانی';
+$labels['junk'] = 'بیکاره';
+$labels['subject'] = 'مضمون';
+$labels['from'] = 'ارسال کننده';
+$labels['to'] = 'ګيرينده';
+$labels['cc'] = 'تکثیر';
+$labels['bcc'] = 'تکثیر پنهان';
 $labels['replyto'] = 'جواب نامه';
-$labels['date']    = 'تاريخ ';
-$labels['size']    = 'اندازه  ';
+$labels['date'] = 'تاريخ';
+$labels['size'] = 'اندازه';
 $labels['priority'] = 'اولویت';
 $labels['organization'] = 'تنظیمات';
-
 $labels['mailboxlist'] = 'پوشه ها';
-$labels['messagesfromto'] = 'از  مقدار پيغام به مقدار حساب شده ';
-$labels['messagenrof'] = 'از شمار پيغام های حساب شده ';
-
-$labels['moveto']   = 'انتقال بدهید به ...';
-$labels['download'] = 'داونلود کردن ';
-
-$labels['filename'] = ' نام فايل ';
+$labels['folders'] = 'پوشه ها';
+$labels['messagesfromto'] = 'از  مقدار پيغام به مقدار حساب شده';
+$labels['messagenrof'] = 'از شمار پيغام های حساب شده';
+$labels['copy'] = 'تکثیر';
+$labels['moveto'] = 'انتقال بدهید به ...';
+$labels['download'] = 'داونلود کردن';
+$labels['filename'] = 'نام فايل';
 $labels['filesize'] = 'اندازه فايل';
-
-$labels['preferhtml'] = 'نشان دادن ايچ ټي ام ايل ';
-$labels['htmlmessage'] = 'پيغام ايچ ټي‌ام ايل ';
-$labels['prettydate'] = 'تاريخ های مهم ';
-
-$labels['addtoaddressbook'] = 'در کتاب ادرس علاوه نماييد ';
-
-// weekdays short
-$labels['sun'] = 'يکشنپبه ';
-$labels['mon'] = 'دوشنبه  ';
-$labels['tue'] = 'سه شنبه  ';
-$labels['wed'] = 'چهارشنبه ';
-$labels['thu'] = 'پنج شنبه  ';
-$labels['fri'] = 'جمعه ';
-$labels['sat'] = 'شنبه  ';
-
-// weekdays long
-$labels['sunday']    = 'يکشنبه ';
-$labels['monday']    = 'دوشنبه ';
-$labels['tuesday']   = 'سه شنبه ';
-$labels['wednesday'] = 'چهارشنبه  ';
-$labels['thursday']  = 'پنج شنبه  ';
-$labels['friday']    = 'جمعه  ';
-$labels['saturday']  = 'شنبه  ';
-
-// months short
-$labels['jan'] = 'جنوری';
-$labels['feb'] = 'فبروری';
-$labels['mar'] = 'مارچ';
-$labels['apr'] = 'اپریل';
-$labels['may'] = 'می';
-$labels['jun'] = 'جون';
-$labels['jul']         = 'جولایی';
-$labels['aug'] = 'آگست';
-$labels['sep'] = 'سپتمبر';
-$labels['oct'] = 'اکتوبر';
-$labels['nov'] = 'نومبر';
-$labels['dec'] = 'دسمبر';
-
-// months long
-$labels['longjan']     = 'جنوری';
-$labels['longfeb']     = 'فبروری';
-$labels['longmar']     = 'مارچ';
-$labels['longapr']     = 'اپریل';
-$labels['longmay']     = 'می';
-$labels['longjun']     = 'جون';
-$labels['longjul']     = 'جولایی';
-$labels['longaug']     = 'آگست';
-$labels['longsep']     = 'سپتمبر';
-$labels['longoct']     = 'اکتوبر';
-$labels['longnov']     = 'نومبر';
-$labels['longdec']     = 'دسمبر';
-
-$labels['today'] = 'امروز ';
-
-// toolbar buttons
-$labels['checkmail']        = 'بررسي کردن پيغام های جديد ';
-$labels['writenewmessage']  = 'ساختن پيغام جديد ';
-$labels['replytomessage']   = 'جواب دادن به پيغام ';
-$labels['replytoallmessage'] = 'به فرستنده و تمام گيرينده ها جواب بدهيد ';
-$labels['forwardmessage']   = 'فرستادن این پیام به دیگران / فارورد';
-$labels['deletemessage']    = 'حذف کردن پيغام ';
-$labels['movemessagetotrash'] = 'پيغام را به اشيآيي حذف شده منتقل نماييد ';
-$labels['printmessage']     = 'اين پيغام را چاپ کنيد ';
-$labels['previousmessage']  = 'پيغام قبلي را نشان دهيد ';
-$labels['previousmessages'] = 'دسته قبلي پيغام ها را نشان دهيد ';
-$labels['firstmessage']     = 'پيغام اولي را نشان دهيد ';
-$labels['firstmessages']    = 'دسته اولي‌پيغام ها را نشان دهيد ';
-$labels['nextmessage']      = 'پيغام بعدي رانشان دهيد ';
-$labels['nextmessages']     = 'بسته بعدی پيغام ها را نشان دهيد ';
-$labels['lastmessage']      = 'پيغام اخير را نشان دهيد ';
-$labels['lastmessages']     = 'بسته آخری پيغام ها را نشان دهيد ';
-$labels['backtolist']       = 'بازگشتن به لست پيغام ';
-$labels['viewsource']       = 'منبع / کود را نشان دهيد  ';
-$labels['markmessages']     = 'پيغام ها را نشاني کنيد ';
-$labels['markread']         = 'مانند خوانده شده ';
-$labels['markunread']       = 'مانند خوانده نشده  ';
-$labels['markflagged']         = 'مانند نشانی شده ';
-$labels['markunflagged']       = 'مانند نشانی ناشده';
-
-$labels['select'] = 'انتخاب کردن ';
-$labels['all'] = 'تمام ';
+$labels['addtoaddressbook'] = 'در کتاب ادرس علاوه نماييد';
+$labels['sun'] = 'يکشنپبه';
+$labels['mon'] = 'دوشنبه';
+$labels['tue'] = 'سه شنبه';
+$labels['wed'] = 'چهارشنبه';
+$labels['thu'] = 'پنج شنبه';
+$labels['fri'] = 'جمعه';
+$labels['sat'] = 'شنبه';
+$labels['sunday'] = 'يکشنبه';
+$labels['monday'] = 'دوشنبه';
+$labels['tuesday'] = 'سه شنبه';
+$labels['wednesday'] = 'چهارشنبه';
+$labels['thursday'] = 'پنج شنبه';
+$labels['friday'] = 'جمعه';
+$labels['saturday'] = 'شنبه';
+$labels['jan'] = 'جنوری';
+$labels['feb'] = 'فبروری';
+$labels['mar'] = 'مارچ';
+$labels['apr'] = 'اپریل';
+$labels['may'] = 'می';
+$labels['longmay'] = 'می';
+$labels['jun'] = 'جون';
+$labels['jul'] = 'جولایی';
+$labels['aug'] = 'آگست';
+$labels['sep'] = 'سپتمبر';
+$labels['oct'] = 'اکتوبر';
+$labels['nov'] = 'نومبر';
+$labels['dec'] = 'دسمبر';
+$labels['longjan'] = 'جنوری';
+$labels['longfeb'] = 'فبروری';
+$labels['longmar'] = 'مارچ';
+$labels['longapr'] = 'اپریل';
+$labels['longjun'] = 'جون';
+$labels['longjul'] = 'جولایی';
+$labels['longaug'] = 'آگست';
+$labels['longsep'] = 'سپتمبر';
+$labels['longoct'] = 'اکتوبر';
+$labels['longnov'] = 'نومبر';
+$labels['longdec'] = 'دسمبر';
+$labels['today'] = 'امروز';
+$labels['checkmail'] = 'بررسي کردن پيغام های جديد';
+$labels['compose'] = 'نوشتن پیام حدید';
+$labels['writenewmessage'] = 'ساختن پيغام جديد';
+$labels['replytomessage'] = 'جواب دادن به پيغام';
+$labels['replytoallmessage'] = 'به فرستنده و تمام گيرينده ها جواب بدهيد';
+$labels['forwardmessage'] = 'فرستادن این پیام به دیگران / فارورد';
+$labels['deletemessage'] = 'حذف کردن پيغام';
+$labels['movemessagetotrash'] = 'پيغام را به اشيآيي حذف شده منتقل نماييد';
+$labels['printmessage'] = 'اين پيغام را چاپ کنيد';
+$labels['previousmessage'] = 'پيغام قبلي را نشان دهيد';
+$labels['firstmessage'] = 'پيغام اولي را نشان دهيد';
+$labels['nextmessage'] = 'پيغام بعدي رانشان دهيد';
+$labels['lastmessage'] = 'پيغام اخير را نشان دهيد';
+$labels['backtolist'] = 'بازگشتن به لست پيغام';
+$labels['viewsource'] = 'منبع / کود را نشان دهيد';
+$labels['markmessages'] = 'پيغام ها را نشاني کنيد';
+$labels['markread'] = 'مانند خوانده شده';
+$labels['markunread'] = 'مانند خوانده نشده';
+$labels['markflagged'] = 'مانند نشانی شده';
+$labels['markunflagged'] = 'مانند نشانی ناشده';
+$labels['select'] = 'انتخاب کردن';
+$labels['all'] = 'تمام';
 $labels['none'] = 'هيچ کدام';
-$labels['unread'] = 'ناخوانده ';
-$labels['flagged'] = ' نشانی شده ';
+$labels['nonesort'] = 'هيچ کدام';
+$labels['unread'] = 'ناخوانده';
+$labels['flagged'] = 'نشانی شده';
 $labels['unanswered'] = 'پیامهای جواب نداده شده';
 $labels['filter'] = 'تصفیه کردن';
-
-$labels['compact'] = 'خلاصه ';
-$labels['empty'] = 'خالي ';
-$labels['purge'] = ' پاکسازي ';
-
-$labels['quota'] = '‌طريقه استعمال ديسک ';
-$labels['unknown']  = 'نامعلوم ';
-$labels['unlimited']  = 'نامعين/ نامحدود ';
-
-$labels['quicksearch']  = 'جستجوی سریع';
-$labels['resetsearch']  = 'بازنشاندن جستجو ';
-
+$labels['compact'] = 'خلاصه';
+$labels['empty'] = 'خالي';
+$labels['quota'] = '‌طريقه استعمال ديسک';
+$labels['unknown'] = 'نامعلوم';
+$labels['unlimited'] = 'نامعين/ نامحدود';
+$labels['quicksearch'] = 'جستجوی سریع';
+$labels['resetsearch'] = 'بازنشاندن جستجو';
 $labels['openinextwin'] = 'در پینجره ای جدید باز کنید';
-
-// message compose
-$labels['compose']        = 'نوشتن پیام حدید';
-$labels['savemessage']    = 'این پیش نویس را حفظ نمایید';
-$labels['sendmessage']    = 'پيغام را همين حالا ارسال کنيد ';
-$labels['addattachment']  = 'ضميمه نمودن يک فايل ';
-$labels['charset']        = 'ست کرکتر ها';
-$labels['editortype']     = 'روش تصحیح کننده / نوشتاری';
-$labels['returnreceipt']  = 'رسید برای مراجعت نامه  ';
-
-$labels['checkspelling'] = 'املا را بررسي کنيد ';
+$labels['savemessage'] = 'این پیش نویس را حفظ نمایید';
+$labels['sendmessage'] = 'پيغام را همين حالا ارسال کنيد';
+$labels['addattachment'] = 'ضميمه نمودن يک فايل';
+$labels['charset'] = 'ست کرکتر ها';
+$labels['editortype'] = 'روش تصحیح کننده / نوشتاری';
+$labels['returnreceipt'] = 'رسید برای مراجعت نامه';
+$labels['checkspelling'] = 'املا را بررسي کنيد';
 $labels['resumeediting'] = 'ادامه / بازگشت به تصحیی کردن / نوشتن';
-$labels['revertto']      = 'رجوع کردن به ';
-
-$labels['attachments'] = 'ضميمه ها ';
-$labels['upload'] = 'اپلود کردن ';
-$labels['close']  = 'بستن ';
-
-$labels['low']     = 'کم ';
-$labels['lowest']  = 'کمترین';
-$labels['normal']  = 'عادی';
-$labels['high']    = 'عالي ';
-$labels['highest'] = 'عاليترين ';
-
-$labels['nosubject']  = 'مضمون ندارد ';
-$labels['showimages'] = 'نمايش دادن تصاوير ';
+$labels['revertto'] = 'رجوع کردن به';
+$labels['attachments'] = 'ضميمه ها';
+$labels['upload'] = 'اپلود کردن';
+$labels['close'] = 'بستن';
+$labels['low'] = 'کم';
+$labels['lowest'] = 'کمترین';
+$labels['normal'] = 'عادی';
+$labels['high'] = 'عالي';
+$labels['highest'] = 'عاليترين';
+$labels['nosubject'] = 'مضمون ندارد';
+$labels['showimages'] = 'نمايش دادن تصاوير';
 $labels['alwaysshow'] = 'همیشه نشان بده تصاویر را از این فرسیتنده﷼';
-
 $labels['htmltoggle'] = 'ایچ تی ام ایل';
-$labels['plaintoggle'] = 'متن ساده ';
+$labels['plaintoggle'] = 'متن ساده';
 $labels['savesentmessagein'] = 'پیام ارسال شده را ذخیره کن در';
 $labels['dontsave'] = 'ذخیره نکنید';
-$labels['maxuploadsize'] = '$sizeزیاد ترین اندازه اجازه داده شده فایل عبارت است از ';
-
+$labels['maxuploadsize'] = '$sizeزیاد ترین اندازه اجازه داده شده فایل عبارت است از';
 $labels['addcc'] = 'نسخیه دوم  را علاوه کنید';
 $labels['addbcc'] = 'نسخه پنهان را علاوه کنید';
-$labels['addreplyto'] = 'علاوه کردن ';
-
-// mdn
-$labels['mdnrequest'] = 'فرستانده این پیام خواهش نموده زمانیکه شما نامه را خواندید براش آگاهی داده شود آيا شما ميخواهيد که فرستنده را آګاه سازيد ';
+$labels['addreplyto'] = 'علاوه کردن';
+$labels['mdnrequest'] = 'فرستانده این پیام خواهش نموده زمانیکه شما نامه را خواندید براش آگاهی داده شود آيا شما ميخواهيد که فرستنده را آګاه سازيد';
 $labels['receiptread'] = 'بازگشت رسید (خوانده شده)';
-$labels['yourmessage'] = 'برای پيغام شما اين يک رسید بازگشت است ';
+$labels['yourmessage'] = 'برای پيغام شما اين يک رسید بازگشت است';
 $labels['receiptnote'] = 'يادداشت : اين رسيد شما را فقط اګاه ميسازد که پيغام به کامپیوتر گیرنده نمایش داده شده است  هیچ گارنتی وجود ندارد که گیرنده پیام این پیام را خوانده و یا مطالب آن را درک کرده باشد.';
-
-// address boook
-$labels['name']      = 'نشان دادن نام  ';
-$labels['firstname'] = 'اسم/ نام ';
-$labels['surname']   = 'اسم فاميلي / تخلص';
-$labels['email']     = 'ايميل ';
-
-$labels['addcontact'] = 'آدرس جديد را علاوه کنيد ';
+$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 آدرس ها از ';
-$labels['print']          = 'چاپ کردن  ';
-$labels['export']         = 'صادر کردن ';
-$labels['exportvcards']   = ' صادر نماییدVcardآدرس ها را به فرمت ';
-
-$labels['previouspage']   = ' بسته قبلي را نشان دهيد ';
-$labels['firstpage']      = 'بسته اولي را نشان دهيد ';
-$labels['nextpage']       = 'بسته بعدي را نشان دهيد ';
-$labels['lastpage']       = 'بسته اخير را نشان دهيد ';
-
-$labels['groups'] = ' گروه ها ';
-$labels['personaladrbook'] = 'ادرس های شخصي ';
-
+$labels['edit'] = 'تصحيح کردن';
+$labels['cancel'] = 'لغو کردن/ حذف کردن';
+$labels['save'] = 'حفظ کردن';
+$labels['delete'] = 'حذف کردن';
+$labels['newcontact'] = 'کارت تماس جديد را بسازيد';
+$labels['deletecontact'] = 'آدرس های انتخاب شده را حذف کنيد';
+$labels['composeto'] = 'ايمیل را نوشته کنيد به';
+$labels['contactsfromto'] = 'از$count$to به $from آدرس ها از';
+$labels['print'] = 'چاپ کردن';
+$labels['export'] = 'صادر کردن';
+$labels['exportvcards'] = 'صادر نماییدVcardآدرس ها را به فرمت';
+$labels['previouspage'] = 'بسته قبلي را نشان دهيد';
+$labels['firstpage'] = 'بسته اولي را نشان دهيد';
+$labels['nextpage'] = 'بسته بعدي را نشان دهيد';
+$labels['lastpage'] = 'بسته اخير را نشان دهيد';
+$labels['groups'] = 'گروه ها';
+$labels['personaladrbook'] = 'ادرس های شخصي';
 $labels['import'] = 'وارد کردن';
 $labels['importcontacts'] = 'آدرس ها را وارد نمایید';
 $labels['importfromfile'] = 'از یک فایل وارد نمایید';
 $labels['importreplace'] = 'تمام کتاب آدرس ها را عوض نمایید';
-$labels['importtext'] = 'شما میتوانید که آدرس ها را از یاک کتاب آدرس های موجوده وارد نمایید<br/>شما میتوانید که آدرس ها را به فرمت <a href="http://en.wikipedia.org/wiki/VCard">vCard</a>وارد نمایید ';
+$labels['importtext'] = 'شما میتوانید که آدرس ها را از یاک کتاب آدرس های موجوده وارد نمایید<br/>شما میتوانید که آدرس ها را به فرمت <a href="http://en.wikipedia.org/wiki/VCard">vCard</a>وارد نمایید';
 $labels['done'] = 'اجرا شد';
-
-// settings
-$labels['settingsfor']  = 'تنظیمات برای';
-
-$labels['preferences']  = 'ترجيحات ';
-$labels['userpreferences']  = 'ترجيحات کاربر ';
-$labels['editpreferences']  = 'تصحيح کردن ترجيحات  کاربر ';
-
-$labels['identities']  = ' شناخت ها ';
-$labels['manageidentities']  = 'اداره کردن شناسای ها برای اين آدرس ';
-$labels['newidentity']  = 'شناخت جديد ';
-
-$labels['newitem']  = 'فقره جديد  ';
-$labels['edititem']  = 'تصحيح کردن فقره';
-
-$labels['setdefault']  = 'بطور همیشگی انتخاب نمایید';
-$labels['autodetect']  = 'اتومات';
-$labels['language']  = 'لسان';
-$labels['timezone']  = ' ناحيه زمانی ';
-$labels['pagesize']  = 'تعداد سطر ها در صفحه';
-$labels['signature'] = 'امضا ';
-$labels['dstactive']  = 'Daylight saving time';
-$labels['htmleditor'] = 'پيغام ايچ ټي ام ايل رانوشته کنيد ';
+$labels['settingsfor'] = 'تنظیمات برای';
+$labels['preferences'] = 'ترجيحات';
+$labels['userpreferences'] = 'ترجيحات کاربر';
+$labels['editpreferences'] = 'تصحيح کردن ترجيحات  کاربر';
+$labels['identities'] = 'شناخت ها';
+$labels['manageidentities'] = 'اداره کردن شناسای ها برای اين آدرس';
+$labels['newidentity'] = 'شناخت جديد';
+$labels['newitem'] = 'فقره جديد';
+$labels['edititem'] = 'تصحيح کردن فقره';
+$labels['preferhtml'] = 'نشان دادن ايچ ټي ام ايل';
+$labels['htmlmessage'] = 'پيغام ايچ ټي‌ام ايل';
+$labels['prettydate'] = 'تاريخ های مهم';
+$labels['setdefault'] = 'بطور همیشگی انتخاب نمایید';
+$labels['autodetect'] = 'اتومات';
+$labels['language'] = 'لسان';
+$labels['timezone'] = 'ناحيه زمانی';
+$labels['pagesize'] = 'تعداد سطر ها در صفحه';
+$labels['signature'] = 'امضا';
+$labels['dstactive'] = 'Daylight saving time';
+$labels['htmleditor'] = 'پيغام ايچ ټي ام ايل رانوشته کنيد';
 $labels['htmlsignature'] = 'امضای حساب ایمیل بشکل ایچ تی ام ال';
 $labels['previewpane'] = 'چوکات پیشنما را نشان دهید';
 $labels['skin'] = 'تمپلیت محیط کاربری';
@@ -265,11 +224,10 @@ $labels['showremoteimages'] = 'Display remote inline images';
 $labels['fromknownsenders'] = 'نامه های از آدرس های شناخته شده';
 $labels['always'] = 'همیشه';
 $labels['showinlineimages'] = 'تصاویر ضمیمه شده را در پایین پیام نشان دهید.';
-$labels['autosavedraft']  = 'بصورت خودکار پیش نويس را حفظ کنيد ';
-$labels['everynminutes']  = ' دقیفه$n هر ';
-$labels['keepaliveevery']  = ' دقیفه$n هر ';
-$labels['keepalive']  = 'بررسي کردن پيغام های جديد ';
-$labels['never']  = 'هیچگاه';
+$labels['autosavedraft'] = 'بصورت خودکار پیش نويس را حفظ کنيد';
+$labels['everynminutes'] = 'دقیفه$n هر';
+$labels['keepalive'] = 'بررسي کردن پيغام های جديد';
+$labels['never'] = 'هیچگاه';
 $labels['messagesdisplaying'] = 'نمایش دادن پیام ها';
 $labels['messagescomposition'] = 'ایجاد کردن پیام جدید';
 $labels['mimeparamfolding'] = 'نام های ضمیمه ها';
@@ -279,25 +237,19 @@ $labels['2047folding'] = 'Full RFC 2047 (دیگر ها)';
 $labels['advancedoptions'] = 'انتخاب های پیشرفته';
 $labels['focusonnewmessage'] = 'فوکس دادن پینجره مرورگر به پیام جدید';
 $labels['checkallfolders'] = 'تمام پوشه ها را بخاطر پیام های جدید بررسی کنید';
-
-$labels['folder']  = 'پوشه ';
-$labels['folders']  = 'پوشه ها';
-$labels['foldername']  = 'نام پوشه ';
-$labels['subscribed']  = 'مشترک ';
-$labels['messagecount'] = 'پيغام ها ';
-$labels['create']  = 'ایجاد کردن';
-$labels['createfolder']  = 'ایجاد پوشه جدید';
-$labels['managefolders']  = 'اداره کردن پوشه ها ';
+$labels['folder'] = 'پوشه';
+$labels['foldername'] = 'نام پوشه';
+$labels['subscribed'] = 'مشترک';
+$labels['messagecount'] = 'پيغام ها';
+$labels['create'] = 'ایجاد کردن';
+$labels['createfolder'] = 'ایجاد پوشه جدید';
+$labels['managefolders'] = 'اداره کردن پوشه ها';
 $labels['specialfolders'] = 'پوشه های مخصوص';
-
-$labels['sortby'] = 'فهرست کردن توسط ';
-$labels['sortasc']  = 'فهرست کردن از طرف بالا به پايين ';
-$labels['sortdesc'] = 'فهرست کردن از طرف پايين به بالا ';
-
-// units
+$labels['sortby'] = 'فهرست کردن توسط';
+$labels['sortasc'] = 'فهرست کردن از طرف بالا به پايين';
+$labels['sortdesc'] = 'فهرست کردن از طرف پايين به بالا';
 $labels['B'] = 'بایت';
 $labels['KB'] = 'کیلو بایت';
 $labels['MB'] = 'میگا بایت';
 $labels['GB'] = 'گیگا بایت';
 
-?>
index f298e0f254e106bc368d052637b0c1304ec90fc7..db3373958688dde87d02f3b2dd059ddd37050efa 100644 (file)
@@ -1,77 +1,90 @@
 <?php
 
-$messages['loginfailed']  = 'داخل شدن به سيستم موفق نه شد ';
-$messages['cookiesdisabled'] = 'جستجوگر شما  cookies را قبول نميکند ';
-$messages['sessionerror'] = 'جلسه شما وجود ندارد و يا هم از زمان معين آن گذشته است ';
-$messages['imaperror'] = 'وصل شدن به آیمیپ سرور موفق نشد ';
-$messages['nomessagesfound'] = 'هيچ پيغامی در اين صندوق پستي دريافت نه شد ';
-$messages['loggedout'] = 'جلسه شما بصورت مکمل فسخ شده است  خدا حافظ ';
-$messages['mailboxempty'] = 'صندوق پستي خالي است ';
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fa_AF/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$messages = array();
+$messages['loginfailed'] = 'داخل شدن به سيستم موفق نه شد';
+$messages['cookiesdisabled'] = 'جستجوگر شما  cookies را قبول نميکند';
+$messages['sessionerror'] = 'جلسه شما وجود ندارد و يا هم از زمان معين آن گذشته است';
+$messages['storageerror'] = 'وصل شدن به آیمیپ سرور موفق نشد';
+$messages['nomessagesfound'] = 'هيچ پيغامی در اين صندوق پستي دريافت نه شد';
+$messages['loggedout'] = 'جلسه شما بصورت مکمل فسخ شده است  خدا حافظ';
+$messages['mailboxempty'] = 'صندوق پستي خالي است';
 $messages['loading'] = 'در حال باز شدن  ...';
 $messages['loadingdata'] = 'در حال بار کردن دیتا';
-$messages['checkingmail'] = 'پيغام های جديد را بررسي ميکند ';
-$messages['sendingmessage'] = 'پيغام ها را ارسال ميکند ';
+$messages['checkingmail'] = 'پيغام های جديد را بررسي ميکند';
+$messages['sendingmessage'] = 'پيغام ها را ارسال ميکند';
 $messages['messagesent'] = 'پیام موفقانه ارسال گردید';
 $messages['savingmessage'] = 'در حال حفظ کردن پیام';
-$messages['messagesaved'] = 'پيغام را به پیش نويس حفظ کرد ';
+$messages['messagesaved'] = 'پيغام را به پیش نويس حفظ کرد';
 $messages['successfullysaved'] = 'حفظ پیام موفقانه صورت گرفت';
-$messages['addedsuccessfully'] = 'آدرس بصورت مکمل در کتاب ادرس علاوه شد ';
-$messages['contactexists'] = 'يک آدرس همرا اين ايميل ادرس قبلاً وجود دارد  ';
-$messages['blockedimages'] = 'برای حفظ استقلال پيغام شما، تصاویر اجنبی این پیام بلاک شده اند ';
-$messages['encryptedmessage'] = 'اين يک پيغام مخفي است و اشکار شده نميتواند   معذرت ميخواهيم ';
-$messages['nocontactsfound'] = 'هيچ آدرسی دريافت نه شد ';
-$messages['contactnotfound'] = 'آدرس خواسته شده دريافت نه شد ';
-$messages['sendingfailed'] = 'فرستادن پيغام موفق نه شد ';
-$messages['senttooquickly'] = ' ثانیه منتظر باشید$secلطفا مدت  قبل از ارسال این پیام';
-$messages['errorsavingsent'] = 'در جريان حفظ کردن پیام ارسال شده يکاشتباه به وجود امد ';
-$messages['errorsaving'] = 'در جريان حفظ کردن يکاشتباه به وجود امد ';
-$messages['errormoving'] = 'پيغام نقل مکان شده نتوانست ';
-$messages['errordeleting'] = 'پيغام حذف شده نتوانست ';
-$messages['deletecontactconfirm']  = 'آيا واقعاً شما ميخواهيد که آدرس های انتخاب شده را حذف کنيد؟ ';
-$messages['deletemessagesconfirm'] = 'آيا واقعاً شما ميخواهيد که پيغام هاي انتخاب شده را حذف کنيد؟ ';
-$messages['deletefolderconfirm']  = 'آيا واقعاً شما ميخواهيد که اين پوشه را حذف کنيد؟ ';
-$messages['purgefolderconfirm']  = 'آيا واقعاً شما ميخواهيد  تمام پيغام های که  در اين پوشه وجود دارد حذف کنيد؟ ';
+$messages['addedsuccessfully'] = 'آدرس بصورت مکمل در کتاب ادرس علاوه شد';
+$messages['contactexists'] = 'يک آدرس همرا اين ايميل ادرس قبلاً وجود دارد';
+$messages['blockedimages'] = 'برای حفظ استقلال پيغام شما، تصاویر اجنبی این پیام بلاک شده اند';
+$messages['encryptedmessage'] = 'اين يک پيغام مخفي است و اشکار شده نميتواند   معذرت ميخواهيم';
+$messages['nocontactsfound'] = 'هيچ آدرسی دريافت نه شد';
+$messages['contactnotfound'] = 'آدرس خواسته شده دريافت نه شد';
+$messages['sendingfailed'] = 'فرستادن پيغام موفق نه شد';
+$messages['senttooquickly'] = 'ثانیه منتظر باشید$secلطفا مدت  قبل از ارسال این پیام';
+$messages['errorsavingsent'] = 'در جريان حفظ کردن پیام ارسال شده يکاشتباه به وجود امد';
+$messages['errorsaving'] = 'در جريان حفظ کردن يکاشتباه به وجود امد';
+$messages['errormoving'] = 'پيغام نقل مکان شده نتوانست';
+$messages['errordeleting'] = 'پيغام حذف شده نتوانست';
+$messages['deletecontactconfirm'] = 'آيا واقعاً شما ميخواهيد که آدرس های انتخاب شده را حذف کنيد؟';
+$messages['deletemessagesconfirm'] = 'آيا واقعاً شما ميخواهيد که پيغام هاي انتخاب شده را حذف کنيد؟';
+$messages['deletefolderconfirm'] = 'آيا واقعاً شما ميخواهيد که اين پوشه را حذف کنيد؟';
+$messages['purgefolderconfirm'] = 'آيا واقعاً شما ميخواهيد  تمام پيغام های که  در اين پوشه وجود دارد حذف کنيد؟';
 $messages['folderdeleting'] = 'در حال حذف پوشه';
 $messages['foldermoving'] = 'در حال انتقال پوشه';
-$messages['formincomplete'] = 'فورمه بصورت مکمل خانه پري نه شده است ';
-$messages['noemailwarning'] = 'لطفاً يک ايميل ادرس موجود را داخل کنيد ';
-$messages['nonamewarning']  = 'لطفاً يک نام را داخل کنيد ';
-$messages['nopagesizewarning'] = 'لطفاً اندازه يک صفحه را داخل کنيد ';
+$messages['formincomplete'] = 'فورمه بصورت مکمل خانه پري نه شده است';
+$messages['noemailwarning'] = 'لطفاً يک ايميل ادرس موجود را داخل کنيد';
+$messages['nonamewarning'] = 'لطفاً يک نام را داخل کنيد';
+$messages['nopagesizewarning'] = 'لطفاً اندازه يک صفحه را داخل کنيد';
 $messages['nosenderwarning'] = 'لطفاً ایمیل آدرس ارسال کننده را داخل کنید';
-$messages['norecipientwarning'] = 'لطفاً کم از کم يک آدرس گيرينده را نوشته / داخل کنيد ';
-$messages['nosubjectwarning']  = 'بخش مضمون خالي است  آیا میخواهید که حالا یکی آنها را درج نمایید؟.';
-$messages['nobodywarning'] = 'اين پيغام را بدون متن بفرستیم؟ ';
+$messages['norecipientwarning'] = 'لطفاً کم از کم يک آدرس گيرينده را نوشته / داخل کنيد';
+$messages['nosubjectwarning'] = 'بخش مضمون خالي است  آیا میخواهید که حالا یکی آنها را درج نمایید؟.';
+$messages['nobodywarning'] = 'اين پيغام را بدون متن بفرستیم؟';
 $messages['notsentwarning'] = 'پيغام ارسال نه شده است   آیا میخواهید که از این نامه صرف نظر نمایید';
-$messages['noldapserver'] = 'لطفاً يک ايل دپ سرور را بخاطر جستجو انتخاب کنيد ';
-$messages['nocontactsreturned'] = 'موفق به دریافت هیچ آدرس نشدیم';
-$messages['nosearchname'] = 'لطفاً يک نام تماس و يا هم يک ايميل ادرس را داخل کنيد ';
+$messages['noldapserver'] = 'لطفاً يک ايل دپ سرور را بخاطر جستجو انتخاب کنيد';
+$messages['nosearchname'] = 'لطفاً يک نام تماس و يا هم يک ايميل ادرس را داخل کنيد';
 $messages['searchsuccessful'] = '$nr پیام دریافت شد';
 $messages['searchnomatch'] = 'جستجو گر موفق به دریافت هیچ گونه اثری نشد';
 $messages['searching'] = 'در حال جستجو';
 $messages['checking'] = 'در حال بررسی';
-$messages['nospellerrors'] = 'هيچ اشتباه املايي را دريافت نه کرد ';
-$messages['folderdeleted'] = 'پوشه موفقانه از بين رفت/ حذف گرديد ';
-$messages['deletedsuccessfully'] = "موفقانه حذف شد";
+$messages['nospellerrors'] = 'هيچ اشتباه املايي را دريافت نه کرد';
+$messages['folderdeleted'] = 'پوشه موفقانه از بين رفت/ حذف گرديد';
+$messages['deletedsuccessfully'] = 'موفقانه حذف شد';
 $messages['converting'] = 'در حال از بین بردن شکل دهی و ساختار (فرمت)';
-$messages['messageopenerror'] = 'پيغام از سرور جريان کرده نتوانست ';
-$messages['fileuploaderror'] = 'اپلود کردن فايل موفق نه شد. ';
-$messages['filesizeerror'] = 'تثبیت شده میباشد$size حجم فایل آپلود شده بیشتر از حجم کلی ';
-$messages['copysuccess'] = 'آدرس ها کاپی شد. $nrموفقانه بع تعداد ';
-$messages['copyerror'] = 'هيچ يک از تماس ها را کاپي کرده نتوانست ';
+$messages['messageopenerror'] = 'پيغام از سرور جريان کرده نتوانست';
+$messages['fileuploaderror'] = 'اپلود کردن فايل موفق نه شد.';
+$messages['filesizeerror'] = 'تثبیت شده میباشد$size حجم فایل آپلود شده بیشتر از حجم کلی';
+$messages['copysuccess'] = 'آدرس ها کاپی شد. $nrموفقانه بع تعداد';
+$messages['copyerror'] = 'هيچ يک از تماس ها را کاپي کرده نتوانست';
 $messages['sourceisreadonly'] = 'اجازه نمامه کود / منبع این آدرس قفط خواندنی است';
-$messages['errorsavingcontact'] = 'ادرس این پیام را حفظکرده نتوانست ';
+$messages['errorsavingcontact'] = 'ادرس این پیام را حفظکرده نتوانست';
 $messages['movingmessage'] = 'ذر حال انتقال پیام...';
 $messages['receiptsent'] = 'یک رسید برای ارسال کننده این پیام فرستاده شد.';
-$messages['errorsendingreceipt'] = 'رسيد ارسال شده نتوانست  ';
+$messages['errorsendingreceipt'] = 'رسيد ارسال شده نتوانست';
 $messages['nodeletelastidentity'] = 'شما این شناخت نامه را حذف کرده نمیتوانید. این آخرین شناخت نامه شما است.';
 $messages['forbiddencharacter'] = 'نام پوشه دارای یک کرکتر ممنوعه است.';
 $messages['selectimportfile'] = 'لطفاً یک فایل را برای آپلود کردن انتخاب نمایید.';
 $messages['addresswriterror'] = 'کتابچه آدرس انتخاب شده دارای اجازه نامه نوشتاری نیست.';
 $messages['importwait'] = 'در حال وارد کردن لطفا صبر کنید.';
-$messages['importerror'] = 'وارد نمودن (آدرس ها / فایل ها) موفق نشد. نیستvCard فایل آپلود شده فایل صحیح ';
+$messages['importerror'] = 'وارد نمودن (آدرس ها / فایل ها) موفق نشد. نیستvCard فایل آپلود شده فایل صحیح';
 $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
new file mode 100644 (file)
index 0000000..5135e40
--- /dev/null
@@ -0,0 +1,450 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fa_IR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Hamid <abbaszadeh.h@gmail.com>                                |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['welcome'] = 'به $product خوش آمدید';
+$labels['username'] = 'نام‌کاربری';
+$labels['password'] = 'رمز عبور';
+$labels['server'] = 'سرور';
+$labels['login'] = 'ورود';
+$labels['logout'] = 'خروج';
+$labels['mail'] = 'پست الکترونیکی';
+$labels['settings'] = 'تنظیمات';
+$labels['addressbook'] = 'دفتر نشانی';
+$labels['inbox'] = 'صندوق';
+$labels['drafts'] = 'پیش‌نویس‌ها';
+$labels['sent'] = 'ارسال شده';
+$labels['trash'] = 'زباله‌دان';
+$labels['junk'] = 'بنجل';
+$labels['subject'] = 'موضوع';
+$labels['from'] = 'فرستنده';
+$labels['to'] = 'گیرنده';
+$labels['cc'] = 'رونوشت';
+$labels['bcc'] = 'رونوشت مخفی';
+$labels['replyto'] = 'پاسخ-به';
+$labels['followupto'] = 'پیگیری-در';
+$labels['date'] = 'تاریخ';
+$labels['size'] = 'اندازه';
+$labels['priority'] = 'اولویت';
+$labels['organization'] = 'سازمان';
+$labels['readstatus'] = 'وضعیت خوانده شدن';
+$labels['listoptions'] = 'فهرست گزینه‌ها';
+$labels['mailboxlist'] = 'پوشه‌ها';
+$labels['folders'] = 'پوشه‌ها';
+$labels['messagesfromto'] = 'پیغام‌ها $from تا $to از $count';
+$labels['threadsfromto'] = 'رشته‌ها $from تا $to از $count';
+$labels['messagenrof'] = 'پیغام $nr از $count';
+$labels['fromtoshort'] = '$from - $to از $cound';
+$labels['copy'] = 'رونوشت';
+$labels['move'] = 'انتقال';
+$labels['moveto'] = 'انتقال به...';
+$labels['download'] = 'بارگیری';
+$labels['filename'] = 'نام پرونده';
+$labels['filesize'] = 'اندازه پرونده';
+$labels['addtoaddressbook'] = 'افزودن به دفتر نشانی‌ها';
+$labels['sun'] = '۱ش';
+$labels['mon'] = '۲ش';
+$labels['tue'] = '۳ش';
+$labels['wed'] = '۴ش';
+$labels['thu'] = '۵ش';
+$labels['fri'] = 'جم';
+$labels['sat'] = 'ش';
+$labels['sunday'] = 'یک‌شنبه';
+$labels['monday'] = 'دوشنبه';
+$labels['tuesday'] = 'سه‌شنبه';
+$labels['wednesday'] = 'چهارشنبه';
+$labels['thursday'] = 'پنج‌شنبه';
+$labels['friday'] = 'جمعه';
+$labels['saturday'] = 'شنبه';
+$labels['jan'] = 'ژان';
+$labels['feb'] = 'فور';
+$labels['mar'] = 'مار';
+$labels['apr'] = 'آور';
+$labels['may'] = 'می';
+$labels['longmay'] = 'می';
+$labels['jun'] = 'ژون';
+$labels['jul'] = 'ژوی';
+$labels['aug'] = 'اوت';
+$labels['sep'] = 'سپت';
+$labels['oct'] = 'اُکت';
+$labels['nov'] = 'نوا';
+$labels['dec'] = 'دسا';
+$labels['longjan'] = 'ژانویه';
+$labels['longfeb'] = 'فوریه';
+$labels['longmar'] = 'مارس';
+$labels['longapr'] = 'آوریل';
+$labels['longjun'] = 'ژوئن';
+$labels['longjul'] = 'جولای';
+$labels['longaug'] = 'آگوست';
+$labels['longsep'] = 'سپتامبر';
+$labels['longoct'] = 'اکتبر';
+$labels['longnov'] = 'نوامبر';
+$labels['longdec'] = 'دسامبر';
+$labels['today'] = 'امروز';
+$labels['refresh'] = 'نوسازی';
+$labels['checkmail'] = 'بررسی پیغام‌های جدید';
+$labels['compose'] = 'نوشتن پیغام';
+$labels['writenewmessage'] = 'ایجاد پیغام جدید';
+$labels['reply'] = 'پاسخ';
+$labels['replytomessage'] = 'پاسخ به فرستنده';
+$labels['replytoallmessage'] = 'پاسخ به فهرست یا به فرستنده و تمام گیرنده‌ها';
+$labels['replyall'] = 'پاسخ به همه';
+$labels['replylist'] = 'پاسخ به فهرست';
+$labels['forward'] = 'ارجاع';
+$labels['forwardinline'] = 'ارجاع خطی';
+$labels['forwardattachment'] = 'ارجاع به صورت پیوست';
+$labels['forwardmessage'] = 'ارجاع پیغام';
+$labels['deletemessage'] = 'حذف پیغام';
+$labels['movemessagetotrash'] = 'انتقال پیغام به زباله‌دان';
+$labels['printmessage'] = 'چاپ این پیغام';
+$labels['previousmessage'] = 'نمایش پیغام قبلی';
+$labels['firstmessage'] = 'نمایش اولین  پیغام';
+$labels['nextmessage'] = 'نمایش پیغام بعدی';
+$labels['lastmessage'] = 'نمایش آخرین پیغام';
+$labels['backtolist'] = 'بازگشت به فهرست پیغام';
+$labels['viewsource'] = 'نمایش منبع';
+$labels['mark'] = 'نشانه‌گذاری';
+$labels['markmessages'] = 'نشانه‌گذاری پیغام‌ها';
+$labels['markread'] = 'به عنوان خوانده‌شده';
+$labels['markunread'] = 'به عنوان خوانده‌نشده';
+$labels['markflagged'] = 'به عنوان نشانه‌گذاری شده';
+$labels['markunflagged'] = 'به عنوان نشانه‌گذاری نشده';
+$labels['moreactions'] = 'کارهای دیگر...';
+$labels['more'] = 'بيشتر';
+$labels['back'] = 'بازگشت';
+$labels['options'] = 'تنظیمات';
+$labels['select'] = 'انتخاب';
+$labels['all'] = 'همه';
+$labels['none'] = 'هیچ‌کدام';
+$labels['nonesort'] = 'هیچ‌کدام';
+$labels['currpage'] = 'صفحه جاری';
+$labels['unread'] = 'خوانده‌نشده';
+$labels['flagged'] = 'پرچم‌دار';
+$labels['unanswered'] = 'پاسخ داده نشده';
+$labels['deleted'] = 'حذف شده';
+$labels['invert'] = 'وارونه';
+$labels['filter'] = 'صافی';
+$labels['list'] = 'فهرست';
+$labels['threads'] = 'رشته‌ها';
+$labels['expand-all'] = 'باز کردن همه';
+$labels['expand-unread'] = 'بازکردن خوانده نشده‌ها';
+$labels['collapse-all'] = 'جمع کردن همه';
+$labels['threaded'] = 'رشته شده';
+$labels['autoexpand_threads'] = 'باز کردن رشته‌های پیغام';
+$labels['do_expand'] = 'همه رشته‌ها';
+$labels['expand_only_unread'] = 'فقط با پیغام‌های خوانده نشده';
+$labels['fromto'] = 'فرستنده/گیرنده';
+$labels['flag'] = 'پرچم';
+$labels['attachment'] = 'پیوست';
+$labels['sentdate'] = 'تاریخ ارسال';
+$labels['arrival'] = 'تاریخ ورود';
+$labels['asc'] = 'صعودی';
+$labels['desc'] = 'نزولی';
+$labels['listcolumns'] = 'ستون‌های فهرست';
+$labels['listsorting'] = 'ستون مرتب‌سازی';
+$labels['listorder'] = 'ترتیب مرتب‌سازی';
+$labels['listmode'] = 'نوع مشاهده فهرست';
+$labels['folderactions'] = 'اعمال پوشه...';
+$labels['compact'] = 'فشرده';
+$labels['empty'] = 'خالی';
+$labels['quota'] = 'فضای استفاده شده';
+$labels['unknown'] = 'ناشناخته';
+$labels['unlimited'] = 'نامحدود';
+$labels['quicksearch'] = 'جستجوی سریع';
+$labels['resetsearch'] = 'جستجوی دوباره';
+$labels['searchmod'] = 'اصلاحات جستجو';
+$labels['msgtext'] = 'کل پیغام';
+$labels['openinextwin'] = 'باز کردن در پنجره‌ی جدید';
+$labels['emlsave'] = 'بارگیری (.eml)';
+$labels['editasnew'] = 'ویرایش به عنوان جدید';
+$labels['savemessage'] = 'ذخیره به عنوان پیش‌نویس';
+$labels['sendmessage'] = 'ارسال پیغام';
+$labels['addattachment'] = 'پیوست کردن یک پرونده';
+$labels['charset'] = 'مجموعه‌نمایه';
+$labels['editortype'] = 'نوع ویرایش‌گر';
+$labels['returnreceipt'] = 'رسید دریافت';
+$labels['dsn'] = 'اعلام وضعیت دریافت';
+$labels['mailreplyintro'] = 'در $date، $sender نوشته است:';
+$labels['originalmessage'] = 'پیغام اصلی';
+$labels['editidents'] = 'ویرایش شنانه‌ها';
+$labels['spellcheck'] = 'املاء';
+$labels['checkspelling'] = 'بررسی املایی';
+$labels['resumeediting'] = 'ادامه‌ی ویرایش';
+$labels['revertto'] = 'برگرداندن به';
+$labels['attach'] = 'پیوست کردن';
+$labels['attachments'] = 'پیوست‌ها';
+$labels['upload'] = 'بارگذاری';
+$labels['uploadprogress'] = '$percent ($current از$total)';
+$labels['close'] = 'بستن';
+$labels['messageoptions'] = 'گزینه‌های پیغام...';
+$labels['low'] = 'کم';
+$labels['lowest'] = 'کم‌ترین';
+$labels['normal'] = 'معمولی';
+$labels['high'] = 'زیاد';
+$labels['highest'] = 'بیش‌ترین';
+$labels['nosubject'] = '(بدون موضوع)';
+$labels['showimages'] = 'نمایش عکس‌ها';
+$labels['alwaysshow'] = 'همیشه عکس‌های دریافتی از $sender را نمایش داده شود';
+$labels['isdraft'] = 'این یک پیغام پیش‌نویس است.';
+$labels['htmltoggle'] = 'HTML';
+$labels['plaintoggle'] = 'متن ساده';
+$labels['savesentmessagein'] = 'ذخیره پیغام ارسالی در';
+$labels['dontsave'] = 'ذخیره نکن';
+$labels['maxuploadsize'] = 'حجم فایل حداکثر تا میزان $size می‌باشد';
+$labels['addcc'] = 'افزودن رونوشت';
+$labels['addbcc'] = 'افزودن رونوشت مخفی';
+$labels['addreplyto'] = 'افزودن پاسخ-به';
+$labels['addfollowupto'] = 'افزودن پیگیری-به';
+$labels['mdnrequest'] = 'فرستندهٔ این پیغام خواسته است که وقتی شما این پیغام را می‌خوانید، آگاه شود. آیا مایلید فرستنده را آگاه کنید؟';
+$labels['receiptread'] = 'رسید دریافت (خواندن)';
+$labels['yourmessage'] = 'این یک رسید دریافت برای پیغام شماست';
+$labels['receiptnote'] = 'تذکر: این رسید فقط تصدیق می‌کند که پیغام، روی رایانه گیرنده نمایش داده شده است. هیچ تضمینی نیست که گیرنده، محتوای پیغام را خوانده یا فهمیده باشد.';
+$labels['name'] = 'نمایش نام';
+$labels['firstname'] = 'نام';
+$labels['surname'] = 'نام خانوادگی';
+$labels['middlename'] = 'نام وسط';
+$labels['nameprefix'] = 'پیشوند';
+$labels['namesuffix'] = 'پسوند';
+$labels['nickname'] = 'نام مستعار';
+$labels['jobtitle'] = 'عنوان شغل';
+$labels['department'] = 'بخش';
+$labels['gender'] = 'جنسیت';
+$labels['maidenname'] = 'نام خانوادگی زن قبل از ازدواج';
+$labels['email'] = 'پست‌الکترونیکی';
+$labels['phone'] = 'تلفن';
+$labels['address'] = 'نشانی';
+$labels['street'] = 'خیابان';
+$labels['locality'] = 'شهر';
+$labels['zipcode'] = 'کدپستی';
+$labels['region'] = 'ایالت/استان';
+$labels['country'] = 'کشور';
+$labels['birthday'] = 'زادروز';
+$labels['anniversary'] = 'سالگرد';
+$labels['website'] = 'وب سایت';
+$labels['instantmessenger'] = 'IM';
+$labels['notes'] = 'یادداشت‌ها';
+$labels['male'] = 'مرد';
+$labels['female'] = 'زن';
+$labels['manager'] = 'مدیر';
+$labels['assistant'] = 'دستیار';
+$labels['typeassistant'] = 'دستیار';
+$labels['spouse'] = 'همسر';
+$labels['allfields'] = 'همه زمینه‌ها';
+$labels['search'] = 'جستجو';
+$labels['advsearch'] = 'جستجوی پیشرفته';
+$labels['advanced'] = 'پیشرفته';
+$labels['other'] = 'سایر';
+$labels['typeother'] = 'سایر';
+$labels['typehome'] = 'منزل';
+$labels['typework'] = 'کار';
+$labels['typemobile'] = 'تلفن همراه';
+$labels['typemain'] = 'اصلی';
+$labels['typehomefax'] = 'فکس خانگی';
+$labels['typeworkfax'] = 'فکس کاری';
+$labels['typecar'] = 'ماشین';
+$labels['typepager'] = 'پیجر';
+$labels['typevideo'] = 'ویدئو';
+$labels['typehomepage'] = 'صفحه خانگی';
+$labels['typeblog'] = 'بلاگ';
+$labels['typeprofile'] = 'نمایه';
+$labels['addfield'] = 'افزودن زمینه...';
+$labels['addcontact'] = 'افزودن تماس جدید';
+$labels['editcontact'] = 'ویرایش تماس';
+$labels['contacts'] = 'تماس‌ها';
+$labels['contactproperties'] = 'خصوصیات تماس';
+$labels['personalinfo'] = 'اطلاعات شخصی';
+$labels['edit'] = 'ویرایش';
+$labels['cancel'] = 'لغو';
+$labels['save'] = 'ذخیره';
+$labels['delete'] = 'حذف';
+$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'] = 'حذف نشانی‌های انتخاب شده از گروه';
+$labels['previouspage'] = 'نمایش صفحه قبلی';
+$labels['firstpage'] = 'نمایش صفحه اول';
+$labels['nextpage'] = 'نمایش صفحه بعدی';
+$labels['lastpage'] = 'نمایش صفحه آخر';
+$labels['group'] = 'گروه';
+$labels['groups'] = 'گروه‌ها';
+$labels['personaladrbook'] = 'نشانی‌های شخصی';
+$labels['searchsave'] = 'ذخیره جستجو';
+$labels['searchdelete'] = 'حذف جستجو';
+$labels['import'] = 'وارد کردن';
+$labels['importcontacts'] = 'وارد کردن تماس‌ها';
+$labels['importfromfile'] = 'وارد کردن از پرونده‌ی:';
+$labels['importtarget'] = 'افزودن تماس‌های جدید به دفتر نشانی:';
+$labels['importreplace'] = 'جایگیزینی کامل دفتر نشانی';
+$labels['importtext'] = 'شما می‌توانید اطلاعات تماس‌ها را به دفتر نشانی موجود منتقل کنید. <br/>  ما در حال حاضر امکان انتقال آدرس‌ها را با فرمت <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> برای شما فراهم نموده‌ایم.';
+$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['dateformat'] = 'قالب تاریخ';
+$labels['timeformat'] = 'قالب زمان';
+$labels['prettydate'] = 'تاریخ‌های زیبا';
+$labels['setdefault'] = 'پیش‌فرض کن';
+$labels['autodetect'] = 'خودکار';
+$labels['language'] = 'زبان';
+$labels['timezone'] = 'محدوده‌ی زمانی';
+$labels['pagesize'] = 'سطر در صفحه';
+$labels['signature'] = 'امضاء';
+$labels['dstactive'] = 'ساعت تابستانی';
+$labels['htmleditor'] = 'HTML ‌نوشتن پیغام‌های';
+$labels['htmlonreply'] = 'فقط در پاسخ به پیغام HTML';
+$labels['htmlsignature'] = 'HTML امضای';
+$labels['previewpane'] = 'نمایش قاب پیش‌نمایش';
+$labels['skin'] = 'پوسته ظاهری';
+$labels['logoutclear'] = 'تمیز کردن زباله دان در هنگام خروچ';
+$labels['logoutcompact'] = 'فشرده‌سازی صندوق در هنگام خروچ';
+$labels['uisettings'] = 'محیط کاربری';
+$labels['serversettings'] = 'تنظیمات سرور';
+$labels['mailboxview'] = 'نمایش صندوق‌پستی';
+$labels['mdnrequests'] = 'تاییدهای فرستنده';
+$labels['askuser'] = 'پرسش از کاربر';
+$labels['autosend'] = 'ارسال رسید';
+$labels['autosendknown'] = 'ارسال رسید به تماس‌های من، در غیر این صورت سوال کن';
+$labels['autosendknownignore'] = 'ارسال رسید به تماس‌های من، درغیر این صورت چشم‌پوشی کن';
+$labels['ignore'] = 'نادیده‌گیری';
+$labels['readwhendeleted'] = 'در هنگام پاک کردن، پیغام را به عنوان خوانده شده علامت بزن';
+$labels['flagfordeletion'] = 'پیغام را به جای پاک کردن، با پرچم نشانه‌گذاری کن';
+$labels['skipdeleted'] = 'پیغام‌های حذف شده را نمایش نده';
+$labels['deletealways'] = 'اگر انتقال پیغام به زباله‌دان ناموفق بود، آن‌ها را حذف کن';
+$labels['deletejunk'] = 'حذف مستقیم پیغام‌ها در Junk';
+$labels['showremoteimages'] = 'تصاویر لینک شده را نمایش بده';
+$labels['fromknownsenders'] = 'از فرستنده شناس';
+$labels['always'] = 'همواره';
+$labels['showinlineimages'] = 'نمایش عکس‌های پیوست شده در پایین پیغام';
+$labels['autosavedraft'] = 'ذخیره‌ی خودکار پیش‌نویس';
+$labels['everynminutes'] = 'در هر $n دقیقه';
+$labels['keepalive'] = 'بررسی پیغام جدید در';
+$labels['never'] = 'هرگز';
+$labels['immediately'] = 'بلافاصله';
+$labels['messagesdisplaying'] = 'نمایش دادن پیغام‌ها';
+$labels['messagescomposition'] = 'نوشتن پیغام‌ها';
+$labels['mimeparamfolding'] = 'عناوین پیوستی';
+$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
+$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
+$labels['2047folding'] = 'Full RFC 2047 (سایر)';
+$labels['force7bit'] = 'از MIME encoding برای کارکترهای ۸-بیتی استفاده کن';
+$labels['advancedoptions'] = 'گزینه‌های پیشرفته';
+$labels['focusonnewmessage'] = 'مشخص نمودن پیغام جدید';
+$labels['checkallfolders'] = 'همه پوشه‌ها را برای مشاهده پیغام‌های جدید بررسی کن';
+$labels['displaynext'] = 'بعد از انتقال/حذف پیغام، پیغام بعدی نمایش داده شود';
+$labels['defaultfont'] = 'فونت پیش فرض برای پیغام HTML';
+$labels['mainoptions'] = 'گزینه‌های اصلی';
+$labels['browseroptions'] = 'گزینه‌ های مرورگر';
+$labels['section'] = 'بخش';
+$labels['maintenance'] = 'نگهداری';
+$labels['newmessage'] = 'پیغام جدید';
+$labels['signatureoptions'] = 'گزینه‌های امضاء';
+$labels['whenreplying'] = 'هنگام پاسخ';
+$labels['replytopposting'] = 'شروع پیغام جدید بالای اصلی';
+$labels['replybottomposting'] = 'شروع پیغام جدید پایین اصلی';
+$labels['replyremovesignature'] = 'هنگام پاسخ امضاء اصلی را از پیغام پاک کن';
+$labels['autoaddsignature'] = 'اضافه کردن خودکار امضاء';
+$labels['newmessageonly'] = 'فقط پیغام جدید';
+$labels['replyandforwardonly'] = 'فقط پاسخ‌ها و ارجاع‌ها';
+$labels['replysignaturepos'] = 'هنگام پاسخ یا ارجاع امضاء را قرار داده شود';
+$labels['belowquote'] = 'زیر نقل‌قول';
+$labels['abovequote'] = 'بالای نقل‌قول';
+$labels['insertsignature'] = 'درج امضاء';
+$labels['previewpanemarkread'] = 'نشانه‌گذاری پیغام‌های پیش مرور شده به عنوان خوانده شده';
+$labels['afternseconds'] = 'بعد از $s ثانیه';
+$labels['reqmdn'] = 'درخواست همیشگی رسید برگشت';
+$labels['reqdsn'] = 'درخواست همیشگی تذکر وضعیت تحویل';
+$labels['replysamefolder'] = 'پاسخ‌ها را در پوشه‌ای پیغام‌هایی که باید پاسخ داده شود گرفته بده.';
+$labels['defaultaddressbook'] = 'افزودن تماس‌های جدید به دفتر نشانی انتخاب شده';
+$labels['autocompletesingle'] = 'رد کردن نشانی‌های پست الکترونیک دیگر در تکمیل خودکار';
+$labels['listnamedisplay'] = 'فهرست تماس‌ها به عنوان';
+$labels['spellcheckbeforesend'] = 'بررسی املایی قبل از ارسال پیغام';
+$labels['spellcheckoptions'] = 'گزینه‌های بررسی املاء';
+$labels['spellcheckignoresyms'] = 'نادیده گرفتن کلمات دارای نماد';
+$labels['spellcheckignorenums'] = 'نادیده گرفتن کلمات دارای عدد';
+$labels['spellcheckignorecaps'] = 'نادیده گرفتن کلمات با حروف بزرگ';
+$labels['addtodict'] = 'اضافه کردن به واژه‌نامه';
+$labels['mailtoprotohandler'] = 'ثبت نگه‌دارنده پروتوکل برای mailto: پیوندها';
+$labels['folder'] = 'پوشه';
+$labels['foldername'] = 'نام پوشه';
+$labels['subscribed'] = 'مشترک شد';
+$labels['messagecount'] = 'پیغام‌ها';
+$labels['create'] = 'ایجاد';
+$labels['createfolder'] = 'ایجاد پوشه‌ی جدید';
+$labels['managefolders'] = 'مدیریت پوشه‌ها';
+$labels['specialfolders'] = 'پوشه‌های ویژه';
+$labels['properties'] = 'خصوصیات';
+$labels['folderproperties'] = 'خصوصیات پوشه';
+$labels['parentfolder'] = 'پوشه والد';
+$labels['location'] = 'موقعیت';
+$labels['info'] = 'اطلاعات';
+$labels['getfoldersize'] = 'برای فهمیدن حجم پوشه کلیک کنید';
+$labels['changesubscription'] = 'برای تغییر اشتراک کلیک کنید';
+$labels['foldertype'] = 'نوع پوشه';
+$labels['personalfolder'] = 'پوشه خصوصی';
+$labels['otherfolder'] = 'پوشه کاربران دیگر';
+$labels['sharedfolder'] = 'پوشه عمومی';
+$labels['sortby'] = 'مرتب‌سازی بر اساس';
+$labels['sortasc'] = 'مرتب‌سازی صعودی';
+$labels['sortdesc'] = 'مرتب‌سازی نزولی';
+$labels['undo'] = 'برگردان';
+$labels['plugin'] = 'افزونه';
+$labels['version'] = 'نسخه‌';
+$labels['source'] = 'منبع';
+$labels['license'] = 'گواهینامه';
+$labels['support'] = 'گرفتن پشتیبانی';
+$labels['B'] = 'بایت';
+$labels['KB'] = 'کیلوبایت';
+$labels['MB'] = 'مگابایت';
+$labels['GB'] = 'گیگابایت';
+$labels['unicode'] = 'یونیکد';
+$labels['english'] = 'انگلیسی';
+$labels['westerneuropean'] = 'اروپای غربی';
+$labels['easterneuropean'] = 'اروپای شرقی';
+$labels['southeasterneuropean'] = 'اروپای جنوب شرقی';
+$labels['baltic'] = 'بالتیک';
+$labels['cyrillic'] = 'سیریلیک';
+$labels['arabic'] = 'عربی';
+$labels['greek'] = 'یونانی';
+$labels['hebrew'] = 'عبری';
+$labels['turkish'] = 'ترکی استانبولی';
+$labels['nordic'] = 'شمالی';
+$labels['thai'] = 'تایلندی';
+$labels['celtic'] = 'سلتی';
+$labels['vietnamese'] = 'ویتنامی';
+$labels['japanese'] = 'ژاپنی';
+$labels['korean'] = 'کره‌ای';
+$labels['chinese'] = 'چینی';
+
diff --git a/program/localization/fa_IR/messages.inc b/program/localization/fa_IR/messages.inc
new file mode 100644 (file)
index 0000000..2489676
--- /dev/null
@@ -0,0 +1,160 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/fa_IR/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Hamid <abbaszadeh.h@gmail.com>                                |
+ +-----------------------------------------------------------------------+
+*/
+
+$messages = array();
+$messages['errortitle'] = 'خطایی رخ داد!';
+$messages['loginfailed'] = 'ورود ناموفق بود.';
+$messages['cookiesdisabled'] = 'مرورگر شما کوکی‌ها را قبول نمی‌کند.';
+$messages['sessionerror'] = 'نشست شما معتبر نیست، یا منقضی شده است.';
+$messages['storageerror'] = 'اتصال به سرور انباره ناموفق بود.';
+$messages['servererror'] = 'خطای سرور!';
+$messages['servererrormsg'] = 'خطای سرور: $msg';
+$messages['dberror'] = 'خطای پایگاه‌داده';
+$messages['requesttimedout'] = 'زمان درخواست تمام شد';
+$messages['errorreadonly'] = 'ناتوانی در انجام عملیات. پوشه فقط خواندنی است.';
+$messages['errornoperm'] = 'ناتوانی در انجام عملیات. دسترسی وجود ندارد.';
+$messages['invalidrequest'] = 'درخواست نامعتبر! هیچ داده‌ای ذخیره نشد.';
+$messages['nomessagesfound'] = 'هیچ پیغامی در این صندوق پیدا نشد.';
+$messages['loggedout'] = 'شما با موفقیت نشست را پایان دادید. خدا نگه‌دار!';
+$messages['mailboxempty'] = 'صندوق‌پستی خالی است.';
+$messages['loading'] = 'در حال بارگذاری...';
+$messages['uploading'] = 'بارگذاری پرونده...';
+$messages['uploadingmany'] = 'بارگذاری پرونده ها...';
+$messages['loadingdata'] = 'در حال بارگذاری داده‌ها...';
+$messages['checkingmail'] = 'بررسی برای پیغام جدید...';
+$messages['sendingmessage'] = 'در حال ارسال پیغام...';
+$messages['messagesent'] = 'پیغام با موفقیت فرستاده شد.';
+$messages['savingmessage'] = 'درحال ذخیره‌ی پیغام...';
+$messages['messagesaved'] = 'پیغام در پیش‌نویس‌ها ذخیره شد';
+$messages['successfullysaved'] = 'با موفقیت ذخیره شد.';
+$messages['addedsuccessfully'] = 'تماس با موفقیت به دفتر نشانی‌ها اضافه شد';
+$messages['contactexists'] = 'یک تماس با این نشانی ایمیل از قبل وجود دارد.';
+$messages['contactnameexists'] = 'یک تماس با این نام از قبل وجود دارد.';
+$messages['blockedimages'] = 'برای حفاظت از حریم شخصی شما، عکس‌های دوردست از پیغام حذف شد.';
+$messages['encryptedmessage'] = '!این یک پیغام رمزنگاری شده است و قابل نمایش نیست. ببخشید';
+$messages['nocontactsfound'] = 'هیج تماسی پیدا نشد.';
+$messages['contactnotfound'] = 'تماس درخواست شده پیدا نشد.';
+$messages['contactsearchonly'] = 'چند عبارات جستجو برای یافتن تماس ها وارد نمایید';
+$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['folderdeleting'] = 'حذف پوشه...';
+$messages['foldermoving'] = 'انتقال پوشه...';
+$messages['foldersubscribing'] = 'اشتراک پوشه...';
+$messages['folderunsubscribing'] = 'لغو اشتراک پوشه...';
+$messages['formincomplete'] = 'فرم کاملاً پر نشده بود.';
+$messages['noemailwarning'] = 'لطفا یک نشانی پست الکترونیکی معتبر وارد کنید.';
+$messages['nonamewarning'] = 'لطفا یک نام وارد کنید.';
+$messages['nopagesizewarning'] = 'لطفا اندازه ی صفحه را وارد کنید.';
+$messages['nosenderwarning'] = 'لطفا آدرس پست الکترونیکی فرستنده را وارد کنید.';
+$messages['norecipientwarning'] = 'لطفاً حداقل یک گیرنده وارد کنید.';
+$messages['nosubjectwarning'] = 'قسمت "موضوع" خالی است. آیا می‌خواهید اکنون وارد کنید؟';
+$messages['nobodywarning'] = 'این پیغام بدون متن ارسال شود؟';
+$messages['notsentwarning'] = 'پیغام ارسال نشده است. آیا می‌خواهید پیغام را از بین ببرید؟';
+$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['folderpurged'] = 'پوشه با موفقیت خالی شد.';
+$messages['folderexpunged'] = 'پوشه با موفقیت فشرده شد.';
+$messages['deletedsuccessfully'] = 'با موفقیت حذف شد.';
+$messages['converting'] = 'در حال حذف قالب‌بندی...';
+$messages['messageopenerror'] = 'ناتوان در بارگذاری پیغام از روی سرور.';
+$messages['fileuploaderror'] = 'بارگذاری پرونده ناموفق بود.';
+$messages['filesizeerror'] = 'اندازه‌ی پرونده‌ی بارگذاری شده از بیشینه اندازه‌ی $size بیشتر است.';
+$messages['copysuccess'] = '$nr نشانی با موفقیت رونوشت‌برداری شدند.';
+$messages['copyerror'] = 'رونوشت‌برداری از نشانی‌ها ناموفق بود.';
+$messages['sourceisreadonly'] = 'این منبع نشانی فقط‌خواندنی است.';
+$messages['errorsavingcontact'] = 'ذخیره‌ی نشانی تماس ناموفق بود.';
+$messages['movingmessage'] = 'در حال انتقال پیغام(ها)...';
+$messages['copyingmessage'] = 'در حال رونوشت پیغام(ها)...';
+$messages['copyingcontact'] = 'در حال رونوشت تماس(ها)...';
+$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['importwait'] = 'در حال وارد کردن، لطفا صبر کنید...';
+$messages['importerror'] = 'وارد کردن ناموفق بود! فایل بارگذاری شده یک پرونده vCard معتبر نیست.';
+$messages['importconfirm'] = '<b>تماس های $inserted با موفقیت وارد شدند</b>';
+$messages['importconfirmskipped'] = '<b>ورودی های موجود $skipped نادیده گرفته شدند</b>';
+$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['namecannotbeempty'] = 'نام نمی‌تواند خالی باشد.';
+$messages['nametoolong'] = 'نام خیلی طولانی است.';
+$messages['folderupdated'] = 'پوشه با موفقیت بارگذاری شد.';
+$messages['foldercreated'] = 'پوشه با موفقیت افزوده شد.';
+$messages['invalidimageformat'] = 'فرمت تصویر نامعتبر.';
+$messages['mispellingsfound'] = 'خطای املایی در پیغام شناسایی شد.';
+$messages['parentnotwritable'] = 'ناتوانی در ایجاد/انتقال پوشه به پوشه والد انتخاب شده. بدون حق دسترسی.';
+$messages['messagetoobig'] = 'بخش پیغام برای اجرای آن خیلی بزرگ است.';
+
index ef9fc7141c1d3ae67205ca9341484893d312646a..9d3cb05e00807c107cf81c687076b6af298a0cf6 100644 (file)
@@ -9,9 +9,8 @@
  | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Jiri Grönroos <Unknown>                                      |
+ | Author: Jiri Grönroos                                                |
  +-----------------------------------------------------------------------+
- @version $Id: labels.inc 5741 2012-01-08 16:20:12Z thomasb $
 */
 
 $labels = array();
@@ -22,7 +21,7 @@ $labels['server'] = 'Palvelin';
 $labels['login'] = 'Kirjaudu';
 $labels['logout'] = 'Kirjaudu ulos';
 $labels['mail'] = 'Sähköposti';
-$labels['settings'] = 'Omat asetukset';
+$labels['settings'] = 'Asetukset';
 $labels['addressbook'] = 'Osoitekirja';
 $labels['inbox'] = 'Saapuneet';
 $labels['drafts'] = 'Luonnokset';
@@ -35,15 +34,19 @@ $labels['to'] = 'Vastaanottaja';
 $labels['cc'] = 'Kopio';
 $labels['bcc'] = 'Piilokopio';
 $labels['replyto'] = 'Vastaus osoitteeseen';
+$labels['followupto'] = 'Keskustelunsiirto';
 $labels['date'] = 'Päiväys';
 $labels['size'] = 'Koko';
 $labels['priority'] = 'Tärkeys';
 $labels['organization'] = 'Organisaatio';
+$labels['readstatus'] = 'Luettu';
+$labels['listoptions'] = 'Listaa valinnat...';
 $labels['mailboxlist'] = 'Kansiot';
 $labels['folders'] = 'Kansiot';
 $labels['messagesfromto'] = 'Viestit $from-$to/$count';
 $labels['threadsfromto'] = 'Viestiketjut $from-$to/$count';
 $labels['messagenrof'] = 'Viesti $nr/$count';
+$labels['fromtoshort'] = '$from - $to (yhteensä $count)';
 $labels['copy'] = 'Kopioi';
 $labels['move'] = 'Siirrä';
 $labels['moveto'] = 'siirrä kansioon...';
@@ -98,7 +101,9 @@ $labels['reply'] = 'Vastaa';
 $labels['replytomessage'] = 'Vastaa viestiin';
 $labels['replytoallmessage'] = 'Vastaa kaikille';
 $labels['replyall'] = 'Vastaa kaikille';
+$labels['replylist'] = 'Vastaa listalle';
 $labels['forward'] = 'Välitä eteenpäin';
+$labels['forwardinline'] = 'Välitä viesti';
 $labels['forwardattachment'] = 'Välitä viesti liitteenä';
 $labels['forwardmessage'] = 'Välitä viesti';
 $labels['deletemessage'] = 'Poista viesti';
@@ -110,6 +115,7 @@ $labels['nextmessage'] = 'Näytä edellinen viesti';
 $labels['lastmessage'] = 'Näytä viimeinen viesti';
 $labels['backtolist'] = 'Takaisin viesteihin';
 $labels['viewsource'] = 'Näytä lähdekoodi';
+$labels['mark'] = 'Merkitse';
 $labels['markmessages'] = 'Merkitse viestit';
 $labels['markread'] = 'luetuiksi';
 $labels['markunread'] = 'ei-luetuiksi';
@@ -118,6 +124,7 @@ $labels['markunflagged'] = 'ei-korostetuiksi';
 $labels['moreactions'] = 'Lisää toimintoja...';
 $labels['more'] = 'Lisää';
 $labels['back'] = 'Takaisin';
+$labels['options'] = 'Asetukset';
 $labels['select'] = 'Valitse';
 $labels['all'] = 'Kaikki';
 $labels['none'] = 'Ei mikään';
@@ -134,10 +141,12 @@ $labels['threads'] = 'Viestiketjut';
 $labels['expand-all'] = 'Laajenna kaikki';
 $labels['expand-unread'] = 'Laajenna lukemattomat';
 $labels['collapse-all'] = 'Kutista kaikki';
+$labels['threaded'] = 'Säikeet';
 $labels['autoexpand_threads'] = 'Laajenna viestiketjut automaattisesti';
 $labels['do_expand'] = 'kaikki viestiketjut';
 $labels['expand_only_unread'] = 'vain ne joissa lukemattomia viestejä';
 $labels['fromto'] = 'Lähettäjä/Vastaanottaja';
+$labels['flag'] = 'Merkitse';
 $labels['attachment'] = 'Liite';
 $labels['sentdate'] = 'Lähetysaika';
 $labels['arrival'] = 'Saapumisaika';
@@ -146,6 +155,7 @@ $labels['desc'] = 'laskeva';
 $labels['listcolumns'] = 'Näkyvät kentät';
 $labels['listsorting'] = 'Lajittelu kenttä';
 $labels['listorder'] = 'Lajittelu järjestys';
+$labels['listmode'] = 'Listausnäkymä';
 $labels['folderactions'] = 'Kansiotoiminnot...';
 $labels['compact'] = 'Tiivistä';
 $labels['empty'] = 'Tyhjennä';
@@ -165,13 +175,20 @@ $labels['addattachment'] = 'Liitetiedosto';
 $labels['charset'] = 'Merkistö';
 $labels['editortype'] = 'Editorin tyyppi';
 $labels['returnreceipt'] = 'Perillesaapumisilmoitus';
+$labels['dsn'] = 'Toimituksen tilailmoitus';
+$labels['mailreplyintro'] = '$sender kirjoitti $date:';
 $labels['originalmessage'] = 'Alkuperäinen viesti';
+$labels['editidents'] = 'Muokkaa identiteettejä';
+$labels['spellcheck'] = 'Oikeinkirjoitus';
 $labels['checkspelling'] = 'Tarkista oikeinkirjoitus';
 $labels['resumeediting'] = 'Jatka muokkausta';
 $labels['revertto'] = 'Muuta takaisin';
+$labels['attach'] = 'Liitä';
 $labels['attachments'] = 'Liitetiedostot';
 $labels['upload'] = 'Lisää';
+$labels['uploadprogress'] = '$percent ($current, yhteensä $total)';
 $labels['close'] = 'Sulje';
+$labels['messageoptions'] = 'Viestin asetukset...';
 $labels['low'] = 'Matala';
 $labels['lowest'] = 'Matalin';
 $labels['normal'] = 'Normaali';
@@ -189,6 +206,7 @@ $labels['maxuploadsize'] = 'Suurin sallittu tiedostokoko on $size';
 $labels['addcc'] = 'Lisää kopio';
 $labels['addbcc'] = 'Lisää piilokopio';
 $labels['addreplyto'] = 'Lisää vastausosoite';
+$labels['addfollowupto'] = 'Lisää keskustelunsiirto';
 $labels['mdnrequest'] = 'Viestin lähettäjä on pyytänyt kuittauksen siitä että olet lukenut viestin. Haluatko lähettää kuittauksen?';
 $labels['receiptread'] = 'Lukukuittaus';
 $labels['yourmessage'] = 'Tämä viesti on kuittaus lähettämällesi viestille';
@@ -226,13 +244,18 @@ $labels['spouse'] = 'Puoliso';
 $labels['allfields'] = 'Kaikki kentät';
 $labels['search'] = 'Haku';
 $labels['advsearch'] = 'Tarkennettu haku';
+$labels['advanced'] = 'Lisäasetukset';
+$labels['other'] = 'Muu';
+$labels['typeother'] = 'Muu';
 $labels['typehome'] = 'Koti';
 $labels['typework'] = 'Työ';
 $labels['typemobile'] = 'Matkapuhelin';
+$labels['typemain'] = 'Oma';
 $labels['typehomefax'] = 'Kotifaksi';
 $labels['typeworkfax'] = 'Työfaksi';
 $labels['typecar'] = 'Auto';
 $labels['typepager'] = 'Hakulaite';
+$labels['typevideo'] = 'Video';
 $labels['typehomepage'] = 'Kotisivu';
 $labels['typeblog'] = 'Blogi';
 $labels['typeprofile'] = 'Profiili';
@@ -249,6 +272,7 @@ $labels['delete'] = 'Poista';
 $labels['rename'] = 'Nimeä uudelleen';
 $labels['addphoto'] = 'Lisää';
 $labels['replacephoto'] = 'Korvaa';
+$labels['uploadphoto'] = 'Lähetä kuva';
 $labels['newcontact'] = 'Luo uusi yhteystieto';
 $labels['deletecontact'] = 'Poista valitut yhteystiedot';
 $labels['composeto'] = 'Kirjoita viesti yhteystiedolle';
@@ -259,6 +283,7 @@ $labels['exportvcards'] = 'Vie yhteystiedot vCard-muodossa';
 $labels['newcontactgroup'] = 'Luo uusi yhteystietoryhmä';
 $labels['grouprename'] = 'Nimeä ryhmä uudelleen';
 $labels['groupdelete'] = 'Poista ryhmä';
+$labels['groupremoveselected'] = 'Poista valitut yhteystiedot ryhmästä';
 $labels['previouspage'] = 'Näytä edellinen luettelo';
 $labels['firstpage'] = 'Näytä ensimmäinen luettelo';
 $labels['nextpage'] = 'Näytä seuraava luettelo';
@@ -299,6 +324,7 @@ $labels['pagesize'] = 'Rivejä sivulla';
 $labels['signature'] = 'Allekirjoitus';
 $labels['dstactive'] = 'Kesäaika';
 $labels['htmleditor'] = 'Kirjoita HTML-muodossa';
+$labels['htmlonreply'] = 'Vain vastatessa HTML-viesteihin';
 $labels['htmlsignature'] = 'HTML-allekirjoitus';
 $labels['previewpane'] = 'Näytä esikatselulehti';
 $labels['skin'] = 'Käyttöliittymän teema';
@@ -310,17 +336,20 @@ $labels['mailboxview'] = 'Postilaatikkonäkymä';
 $labels['mdnrequests'] = 'Lähettäjän kuittaukset';
 $labels['askuser'] = 'kysy käyttäjältä';
 $labels['autosend'] = 'lähetä automaattisesti';
+$labels['autosendknown'] = 'Lähetä kuittaus kontaktilistassa oleville, kysy muulloin';
+$labels['autosendknownignore'] = 'Lähetä kuittaus vain kontaktilistassa oleville';
 $labels['ignore'] = 'jätä huomiotta';
 $labels['readwhendeleted'] = 'Merkitse poistettavat viestit luetuiksi';
 $labels['flagfordeletion'] = 'Poistamisen sijaan merkitse viestit poistettavaksi';
 $labels['skipdeleted'] = 'Älä näytä poistettuja viestejä';
 $labels['deletealways'] = 'Poista viestit, joiden siirtäminen roskakoriin epäonnistuu';
+$labels['deletejunk'] = 'Poista roskapostiviestit suoraan';
 $labels['showremoteimages'] = 'Näytä ulkopuoliset kuvat viestissä';
 $labels['fromknownsenders'] = 'tunnetuilta lähettäjiltä';
 $labels['always'] = 'aina';
 $labels['showinlineimages'] = 'Näytä liitekuvat viestin jälkeen';
 $labels['autosavedraft'] = 'Tallenna luonnos automaattisesti';
-$labels['everynminutes'] = 'joka $n minuutti';
+$labels['everynminutes'] = 'joka $n. minuutti';
 $labels['keepalive'] = 'Tarkasta uudet viestit';
 $labels['never'] = 'ei koskaan';
 $labels['immediately'] = 'välittömästi';
@@ -337,6 +366,7 @@ $labels['checkallfolders'] = 'Tarkista kaikki kansiot uusien viestien varalta';
 $labels['displaynext'] = 'Viestin siirron tai poiston jälkeen, näytä seuraava viesti';
 $labels['defaultfont'] = 'HTML-viestin oletuskirjasin';
 $labels['mainoptions'] = 'Pääasetukset';
+$labels['browseroptions'] = 'Selainasetukset';
 $labels['section'] = 'Kohta';
 $labels['maintenance'] = 'Huolto';
 $labels['newmessage'] = 'Uusi viesti';
@@ -354,12 +384,19 @@ $labels['abovequote'] = 'lainauksen ylle';
 $labels['insertsignature'] = 'Lisää allekirjoitus';
 $labels['previewpanemarkread'] = 'Merkitse esikatsellut viestit luetuiksi';
 $labels['afternseconds'] = '$n sekunnin jälkeen';
+$labels['reqmdn'] = 'Pyydä aina kuittausviestiä';
+$labels['reqdsn'] = 'Pyydä aina toimituksen tilailmoitus';
+$labels['replysamefolder'] = 'Laita vastaukseni samaan hakemistoon alkuperäisen viestin kanssa';
+$labels['defaultaddressbook'] = 'Lisää uudet kontaktit valittuun osoitekirjaan';
+$labels['autocompletesingle'] = 'Älä huomioi vaihtoehtoisia sähköpostiosoitteita automaattisessa täydennyksessä';
+$labels['listnamedisplay'] = 'Listaa yhteystiedot';
 $labels['spellcheckbeforesend'] = 'Tarkista oikeinkirjoitus ennen viestin lähetystä';
 $labels['spellcheckoptions'] = 'Oikuluvun asetukset';
 $labels['spellcheckignoresyms'] = 'Jätä huomiotta sanat, joissa on symboleja';
 $labels['spellcheckignorenums'] = 'Jätä huomiotta sanat, joissa on numeroita';
 $labels['spellcheckignorecaps'] = 'Jätä huomiotta sanat, joissa kaikki kirjaimet on isoja';
 $labels['addtodict'] = 'Lisää sanakirjaan';
+$labels['mailtoprotohandler'] = 'Rekisteröi mailto:-linkkien protokollakäsitteljä';
 $labels['folder'] = 'Kansio';
 $labels['foldername'] = 'Kansion nimi';
 $labels['subscribed'] = 'Näytetään';
@@ -374,6 +411,7 @@ $labels['parentfolder'] = 'Yläkansio';
 $labels['location'] = 'Sijanti';
 $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';
index ada51d0e62a0acf823595ad96cbee4de54b9d8c9..cfaa623b2f24b8282d1587d01b6256c7a9819e35 100644 (file)
@@ -9,19 +9,22 @@
  | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Jiri Grönroos <Unknown>                                      |
+ | Author: Jiri Grönroos                                                |
  +-----------------------------------------------------------------------+
- @version $Id: messages.inc 5741 2012-01-08 16:20:12Z thomasb $
 */
 
 $messages = array();
+$messages['errortitle'] = 'Virhe havaittu.';
 $messages['loginfailed'] = 'Sisäänkirjautuminen epäonnistui';
 $messages['cookiesdisabled'] = 'Selaimesi ei hyväksy evästeitä';
 $messages['sessionerror'] = 'Sessio ei kelpaa tai ei ole enää voimassa';
-$messages['imaperror'] = 'Yhteys IMAP-palvelimeen epäonnistui';
+$messages['storageerror'] = 'Yhteys IMAP-palvelimeen epäonnistui';
 $messages['servererror'] = 'Palvelinvirhe!';
 $messages['servererrormsg'] = 'Palvelinvirhe: $msg';
 $messages['dberror'] = 'Tietokantavirhe!';
+$messages['requesttimedout'] = 'Pyyntö aikakatkaistiin';
+$messages['errorreadonly'] = 'Toiminnon suoritus ei onnistu, koska hakemisto on vain lukutilassa.';
+$messages['errornoperm'] = 'Toimintoa ei voitu suorittaa. Ei oikeuksia.';
 $messages['invalidrequest'] = 'Virheellinen pyyntö! Tietoa ei tallennettu.';
 $messages['nomessagesfound'] = 'Kansiossa ei ole sähköpostiviestejä';
 $messages['loggedout'] = 'Sinut on kirjattu ulos järjestelmästä.';
@@ -43,6 +46,7 @@ $messages['blockedimages'] = 'Turvallisuussyistä viestin kuvia ei näytetty.';
 $messages['encryptedmessage'] = 'Viesti on salattu, eikä sitä voida näyttää.';
 $messages['nocontactsfound'] = 'Yhteystietoja ei löytynyt.';
 $messages['contactnotfound'] = 'Pyydettyä yhteystietoa ei löytynyt';
+$messages['contactsearchonly'] = 'Anna hakusanoja, joilla yhteystietoja haetaan';
 $messages['sendingfailed'] = 'Viestin lähetys epäonnistui';
 $messages['senttooquickly'] = 'Odota $sec sekunti(a) ennen viestin lähettämistä';
 $messages['errorsavingsent'] = 'Lähetetyn viestin tallennuksessa tapahtui virhe';
@@ -56,9 +60,12 @@ $messages['deletegroupconfirm'] = 'Haluatko varmasti poistaa valitun ryhmän?';
 $messages['deletemessagesconfirm'] = 'Haluatko varmasti poistaa valitut viestit?';
 $messages['deletefolderconfirm'] = 'Haluatko varmasti poistaa kansion?';
 $messages['purgefolderconfirm'] = 'Haluatko varmasti poistaa kaikki viestit kansiosta?';
+$messages['contactdeleting'] = 'Poistetaan yhteystietoja...';
 $messages['groupdeleting'] = 'Poistetaan ryhmää...';
 $messages['folderdeleting'] = 'Poistetaan kansiota...';
 $messages['foldermoving'] = 'Siirretään kansiota...';
+$messages['foldersubscribing'] = 'Tilataan kansio...';
+$messages['folderunsubscribing'] = 'Perutaan kansio tilaus...';
 $messages['formincomplete'] = 'Lomakkeen tiedot olivat puutteelliset';
 $messages['noemailwarning'] = 'Anna sähköpostiosoite';
 $messages['nonamewarning'] = 'Anna nimi';
@@ -78,6 +85,10 @@ $messages['searching'] = 'Etsitään...';
 $messages['checking'] = 'Tarkistetaan...';
 $messages['nospellerrors'] = 'Kirjoitusvirheitä ei löytynyt';
 $messages['folderdeleted'] = 'Kansio poistettu onnistuneesti';
+$messages['foldersubscribed'] = 'Kansio tilattu onnistuneesti.';
+$messages['folderunsubscribed'] = 'Kansion tilaus poistettu onnistuneesti.';
+$messages['folderpurged'] = 'Kansio on tyhjennetty onnistuneesti.';
+$messages['folderexpunged'] = 'Kansio on pakattu onnistuneesti.';
 $messages['deletedsuccessfully'] = 'Poistettu onnistuneesti';
 $messages['converting'] = 'Poistetaan asettelu viestistä...';
 $messages['messageopenerror'] = 'Virhe kopioitaessa viestiä palvelimelta';
@@ -89,8 +100,14 @@ $messages['sourceisreadonly'] = 'Tämän osoitteen lähde on kirjoitussuojattu';
 $messages['errorsavingcontact'] = 'Yhteystietoa ei voitu tallentaa';
 $messages['movingmessage'] = 'Siirretään viestiä...';
 $messages['copyingmessage'] = 'Kopioidaan viestiä...';
+$messages['copyingcontact'] = 'Kopioidaan yhteystietoja...';
+$messages['deletingmessage'] = 'Poistetaan viestejä...';
+$messages['markingmessage'] = 'Merkitään viestejä...';
+$messages['addingmember'] = 'Lisätään yhteystietoja ryhmään...';
+$messages['removingmember'] = 'Poistetaan yhteystietoja ryhmästä...';
 $messages['receiptsent'] = 'Lukukuittaus lähetetty onnistuneesti';
 $messages['errorsendingreceipt'] = 'Lukukuittausta ei voitu lähettää';
+$messages['deleteidentityconfirm'] = 'Haluatko varmasti poistaa identiteetin?';
 $messages['nodeletelastidentity'] = 'Et voi poistaa tätä identiteettiä, koska se on ainoa jäljelläoleva';
 $messages['forbiddencharacter'] = 'Kansion nimessä on kiellettyjä merkkejä';
 $messages['selectimportfile'] = 'Valitse lähetettävä tiedosto';
@@ -100,6 +117,7 @@ $messages['contactremovedfromgroup'] = 'Yhteystiedot poistettu ryhmästä';
 $messages['importwait'] = 'Tuodaan, odota...';
 $messages['importerror'] = 'Tuonti epäonnistui! Lähetetty tiedosto ei ole vCard-muodossa.';
 $messages['importconfirm'] = '<b>$inserted yhteystietoa tuotu onnistuneesti</b>';
+$messages['importconfirmskipped'] = '<b>Ohitettu $skipped  olemassa olevaa merkintää</b>';
 $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?';
@@ -114,6 +132,10 @@ $messages['emailformaterror'] = 'Virheellinen sähköpostiosoite: $email';
 $messages['toomanyrecipients'] = 'Liikaa vastaanottajia. Vähennä vastaanottajien määrä maksimiin $max.';
 $messages['maxgroupmembersreached'] = 'Ryhmän jäsenten määrä ylittää maksimin $max';
 $messages['internalerror'] = 'Ilmeni sisäinen virhe. Yritä uudelleen.';
+$messages['contactdelerror'] = 'Yhteystietoja ei voitu poistaa.';
+$messages['contactdeleted'] = 'Yhteystiedot poistettu onnistuneesti.';
+$messages['contactrestoreerror'] = 'Poistettujen yhteystietojen palautus epäonnistui.';
+$messages['contactrestored'] = 'Yhteystiedot palautettu onnistuneesti.';
 $messages['groupdeleted'] = 'Ryhmä poistettu onnistuneesti.';
 $messages['grouprenamed'] = 'Ryhmä nimetty uudelleen onnistuneesti.';
 $messages['groupcreated'] = 'Ryhmä luotu onnistuneesti.';
@@ -121,9 +143,18 @@ $messages['savedsearchdeleted'] = 'Tallennettu haku poistettu onnistuneesti.';
 $messages['savedsearchdeleteerror'] = 'Tallennetun haun poisto epäonnistui.';
 $messages['savedsearchcreated'] = 'Tallennettu haku luotu onnistuneesti.';
 $messages['savedsearchcreateerror'] = 'Tallennetun haun tallennus epäonnistui.';
+$messages['messagedeleted'] = 'Viestit poistettu onnistuneesti.';
+$messages['messagemoved'] = 'Viestit siirretty onnistuneesti.';
+$messages['messagecopied'] = 'Viestit kopioitu onnistuneesti.';
+$messages['messagemarked'] = 'Viestit merkitty onnistuneesti.';
+$messages['autocompletechars'] = 'Kirjoita vähintään $min merkkiä  ennen automaattista täydennystä.';
+$messages['autocompletemore'] = 'Täsmääviä kohteita löytyi enemmän. Syötä lisää merkkejä.';
 $messages['namecannotbeempty'] = 'Nimi ei voi olla tyhjä.';
 $messages['nametoolong'] = 'Nimi on liian pitkä.';
 $messages['folderupdated'] = 'Kansio päivitetty onnistuneesti.';
 $messages['foldercreated'] = 'Kansio luotu onnistuneesti.';
+$messages['invalidimageformat'] = 'Virheellinen kuvamuoto.';
 $messages['mispellingsfound'] = 'Viestissä havaittiin kielioppivirheitä.';
+$messages['parentnotwritable'] = 'Kansiota ei voitu siirtää tai luoda valittuun yläkansioon. Ei käyttöoikeutta.';
+$messages['messagetoobig'] = 'Viestiosa on liian suuri prosessoitavaksi.';
 
index 205dcaaf14568d8dae67119dbe573a2a9c267abe..13a31ba50aad3704f53cf596dd595e97c04c5b01 100644 (file)
@@ -1,22 +1,16 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/fr_FR/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2011, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Joel S. <joel.s@spijoprod.com>                                |
-|         Jerome Lipowicz <jerome@yayel.com>                            |
-|         Maximilien Cuony <theglu@theglu.org>                          |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 5569 2011-12-07 14:47:32Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/fr_FR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Baptiste Darthenay <bapdarth@yahoo.fr>                        |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
@@ -24,7 +18,7 @@ $labels['welcome'] = 'Bienvenue sur $product';
 $labels['username'] = 'Utilisateur';
 $labels['password'] = 'Mot de passe';
 $labels['server'] = 'Serveur';
-$labels['login'] = 'Authentification';
+$labels['login'] = 'Connexion';
 $labels['logout'] = 'Quitter';
 $labels['mail'] = 'Courriel';
 $labels['settings'] = 'Préférences';
@@ -46,10 +40,13 @@ $labels['size'] = 'Taille';
 $labels['priority'] = 'Priorité';
 $labels['organization'] = 'Organisation';
 $labels['readstatus'] = 'Statut de lecture';
+$labels['listoptions'] = 'Lister les options...';
 $labels['mailboxlist'] = 'Dossiers';
+$labels['folders'] = 'Dossiers';
 $labels['messagesfromto'] = 'Messages de $from à $to sur $count';
 $labels['threadsfromto'] = 'Fil de $from à $to sur $count';
 $labels['messagenrof'] = 'Message $nr sur $count';
+$labels['fromtoshort'] = '$from – $to de $count';
 $labels['copy'] = 'Copier';
 $labels['move'] = 'Déplacer';
 $labels['moveto'] = 'Déplacer vers...';
@@ -76,6 +73,7 @@ $labels['feb'] = 'Fév';
 $labels['mar'] = 'Mar';
 $labels['apr'] = 'Avr';
 $labels['may'] = 'Mai';
+$labels['longmay'] = 'Mai';
 $labels['jun'] = 'Jun';
 $labels['jul'] = 'Jul';
 $labels['aug'] = 'Aoû';
@@ -87,7 +85,6 @@ $labels['longjan'] = 'Janvier';
 $labels['longfeb'] = 'Février';
 $labels['longmar'] = 'Mars';
 $labels['longapr'] = 'Avril';
-$labels['longmay'] = 'Mai';
 $labels['longjun'] = 'Juin';
 $labels['longjul'] = 'Juillet';
 $labels['longaug'] = 'Août';
@@ -96,16 +93,20 @@ $labels['longoct'] = 'Octobre';
 $labels['longnov'] = 'Novembre';
 $labels['longdec'] = 'Décembre';
 $labels['today'] = 'Aujourd\'hui';
+$labels['refresh'] = 'Actualiser';
 $labels['checkmail'] = 'Vérification des nouveaux messages';
+$labels['compose'] = 'Composer un nouveau message';
 $labels['writenewmessage'] = 'Écrire un nouveau message';
+$labels['reply'] = 'Répondre';
 $labels['replytomessage'] = 'Répondre au message';
 $labels['replytoallmessage'] = 'Répondre à tous';
 $labels['replyall'] = 'Répondre à tous';
 $labels['replylist'] = 'Répondre à la liste';
+$labels['forward'] = 'Transférer';
 $labels['forwardinline'] = 'Transférer dans le corps du message';
 $labels['forwardattachment'] = 'Transférer en pièce-jointe';
 $labels['forwardmessage'] = 'Transmettre le message';
-$labels['deletemessage'] = 'Déplacer le message dans la corbeille';
+$labels['deletemessage'] = 'Supprimer le message';
 $labels['movemessagetotrash'] = 'Déplacer le message dans la corbeille';
 $labels['printmessage'] = 'Imprimer ce message';
 $labels['previousmessage'] = 'Voir le message précédent';
@@ -114,15 +115,20 @@ $labels['nextmessage'] = 'Voir le message suivant';
 $labels['lastmessage'] = 'Voir le dernier message';
 $labels['backtolist'] = 'Retourner à la liste des messages';
 $labels['viewsource'] = 'Voir le source';
+$labels['mark'] = 'Marquer';
 $labels['markmessages'] = 'Marquer les messages';
 $labels['markread'] = 'Comme lus';
 $labels['markunread'] = 'Comme non lus';
 $labels['markflagged'] = 'Comme suivi';
 $labels['markunflagged'] = 'Comme non-suivi';
 $labels['moreactions'] = 'Plus d\'actions...';
+$labels['more'] = 'Plus';
+$labels['back'] = 'Retour';
+$labels['options'] = 'Paramètres';
 $labels['select'] = 'Sélectionner';
 $labels['all'] = 'Tous';
 $labels['none'] = 'Aucun';
+$labels['nonesort'] = 'Aucun';
 $labels['currpage'] = 'Page courante';
 $labels['unread'] = 'Non lus';
 $labels['flagged'] = 'Marqué';
@@ -142,7 +148,6 @@ $labels['expand_only_unread'] = 'uniquement avec des messages non-lus';
 $labels['fromto'] = 'Expéditeur/Destinataire';
 $labels['flag'] = 'Drapeau';
 $labels['attachment'] = 'Pièce jointe';
-$labels['nonesort'] = 'Aucun';
 $labels['sentdate'] = 'Date d\'envoi';
 $labels['arrival'] = 'Date d\'arrivée';
 $labels['asc'] = 'Ascendant';
@@ -163,10 +168,9 @@ $labels['searchmod'] = 'Portée de la recherche';
 $labels['msgtext'] = 'Message entier';
 $labels['openinextwin'] = 'Ouvrir dans une nouvelle fenêtre';
 $labels['emlsave'] = 'Télécharger (.eml)';
-$labels['compose'] = 'Composer un nouveau message';
 $labels['editasnew'] = 'Éditer en tant que nouveau message';
-$labels['savemessage'] = 'Enregistrer ce brouillon';
-$labels['sendmessage'] = 'Envoyer le message maintenant';
+$labels['savemessage'] = 'Enregistrer';
+$labels['sendmessage'] = 'Envoyer';
 $labels['addattachment'] = 'Joindre un fichier';
 $labels['charset'] = 'Encodage';
 $labels['editortype'] = 'Type d\'éditeur';
@@ -175,9 +179,11 @@ $labels['dsn'] = 'Notification d\'état de distribution';
 $labels['mailreplyintro'] = 'Le $date, $sender a écrit :';
 $labels['originalmessage'] = 'Message original';
 $labels['editidents'] = 'Modifier les identités';
+$labels['spellcheck'] = 'Vérifier l\'orthographe';
 $labels['checkspelling'] = 'Vérifier l\'orthographe';
 $labels['resumeediting'] = 'Retourner à l\'édition';
 $labels['revertto'] = 'Revenir à';
+$labels['attach'] = 'Joindre';
 $labels['attachments'] = 'Fichiers joints';
 $labels['upload'] = 'Joindre';
 $labels['uploadprogress'] = '$percent ($current sur $total)';
@@ -232,15 +238,17 @@ $labels['notes'] = 'Notes';
 $labels['male'] = 'Homme';
 $labels['female'] = 'Femme';
 $labels['manager'] = 'Manager';
-$labels['assistant'] = 'Assistant';
+$labels['assistant'] = 'Assistante';
+$labels['typeassistant'] = 'Assistante';
 $labels['spouse'] = 'Épouse';
 $labels['allfields'] = 'Tous les champs';
 $labels['search'] = 'Rechercher';
 $labels['advsearch'] = 'Recherche avancée';
+$labels['advanced'] = 'Détails';
 $labels['other'] = 'Autre';
+$labels['typeother'] = 'Autre';
 $labels['typehome'] = 'Domicile';
 $labels['typework'] = 'Travail';
-$labels['typeother'] = 'Autre';
 $labels['typemobile'] = 'Mobile';
 $labels['typemain'] = 'Principale';
 $labels['typehomefax'] = 'Fax personnel';
@@ -248,7 +256,6 @@ $labels['typeworkfax'] = 'Fax professionnel';
 $labels['typecar'] = 'Voiture';
 $labels['typepager'] = 'Pager';
 $labels['typevideo'] = 'Vidéo';
-$labels['typeassistant'] = 'Assistante';
 $labels['typehomepage'] = 'Accueil';
 $labels['typeblog'] = 'Blog';
 $labels['typeprofile'] = 'Profil';
@@ -265,6 +272,7 @@ $labels['delete'] = 'Supprimer';
 $labels['rename'] = 'Renommer';
 $labels['addphoto'] = 'Ajouter';
 $labels['replacephoto'] = 'Remplacer';
+$labels['uploadphoto'] = 'Envoyer une photo';
 $labels['newcontact'] = 'Créer un nouveau contact';
 $labels['deletecontact'] = 'Supprimer les contacts sélectionnés';
 $labels['composeto'] = 'Écrire un message à';
@@ -275,6 +283,7 @@ $labels['exportvcards'] = 'Exporter les contacts au format vCard';
 $labels['newcontactgroup'] = 'Créer un nouveau groupe de contacts';
 $labels['grouprename'] = 'Renommer le groupe';
 $labels['groupdelete'] = 'Supprimer le groupe';
+$labels['groupremoveselected'] = 'Retiré les contacts sélectionnés du groupe';
 $labels['previouspage'] = 'Montrer page précédente';
 $labels['firstpage'] = 'Voir la première page';
 $labels['nextpage'] = 'Montrer page suivante';
@@ -334,6 +343,7 @@ $labels['readwhendeleted'] = 'Marquer le message comme lu à la suppression';
 $labels['flagfordeletion'] = 'Mettre le drapeau de suppression au lieu de supprimer';
 $labels['skipdeleted'] = 'Ne pas montrer les messages supprimés';
 $labels['deletealways'] = 'Lorsque le déplacement des messages à la corbeille échoue, supprimez-les';
+$labels['deletejunk'] = 'Supprimer directement les pourriels';
 $labels['showremoteimages'] = 'Afficher les images distantes';
 $labels['fromknownsenders'] = 'venant d\'expéditeurs connus';
 $labels['always'] = 'toujours';
@@ -354,11 +364,12 @@ $labels['advancedoptions'] = 'Options avancées';
 $labels['focusonnewmessage'] = 'Placer le focus sur la fenêtre quand un nouveau message arrive';
 $labels['checkallfolders'] = 'Vérifier tous les dossiers pour les nouveaux messages';
 $labels['displaynext'] = 'Après suppression/déplacement du message, afficher le message suivant';
+$labels['defaultfont'] = 'Police par défaut des messages en HTML';
 $labels['mainoptions'] = 'Options principales';
+$labels['browseroptions'] = 'Options du navigateur';
 $labels['section'] = 'Section';
 $labels['maintenance'] = 'Maintenance';
 $labels['newmessage'] = 'Nouveau Message';
-$labels['listoptions'] = 'Lister les options';
 $labels['signatureoptions'] = 'Options pour la signature';
 $labels['whenreplying'] = 'En répondant';
 $labels['replytopposting'] = 'commencer le nouveau message au-dessus de l\'original';
@@ -378,14 +389,15 @@ $labels['reqdsn'] = 'Toujours demander une notification d\'état de distribution
 $labels['replysamefolder'] = 'Placer les réponses dans le dossier du message auquel il est répondu';
 $labels['defaultaddressbook'] = 'Ajouter de nouveaux contacts au carnet d’adresses sélectionné';
 $labels['autocompletesingle'] = 'Ne pas tenir compte des adresses emails alternatives dans l\'autoremplissage';
+$labels['listnamedisplay'] = 'Lister les contacts comme';
 $labels['spellcheckbeforesend'] = 'Vérifier l’orthographe avant l’envoie d’un message';
 $labels['spellcheckoptions'] = 'Options du vérificateur d\'orthographe';
 $labels['spellcheckignoresyms'] = 'Ignorer les mots avec des symboles';
 $labels['spellcheckignorenums'] = 'Ignorer les mots avec des nombres';
 $labels['spellcheckignorecaps'] = 'Ignorer les mots entièrement en majuscule';
 $labels['addtodict'] = 'Ajouter au dictionnaire';
+$labels['mailtoprotohandler'] = 'Enregistrer le gestionnaire de protocole pour les liens mailto:';
 $labels['folder'] = 'Dossier';
-$labels['folders'] = 'Dossiers';
 $labels['foldername'] = 'Nom du dossier';
 $labels['subscribed'] = 'Abonné';
 $labels['messagecount'] = 'Messages';
@@ -436,4 +448,3 @@ $labels['japanese'] = 'Japonais';
 $labels['korean'] = 'Coréen';
 $labels['chinese'] = 'Chinois';
 
-?>
\ No newline at end of file
index 8df142d86286c34223b77db70b8e7dd9fac384d1..1cd0f7823ee3a041d8ea632543690aa7558aa35d 100644 (file)
@@ -1,69 +1,65 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/fr_FR/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2011, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Joel S. <joel.s@spijoprod.com>                                |
-|         Jerome Lipowicz <jerome@yayel.com>                            |
-|         Maximilien Cuony <theglu@theglu.org>                          |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 5609 2011-12-14 12:58:13Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/fr_FR/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jibec <jb.holcroft@gmail.com>                                 |
+ +-----------------------------------------------------------------------+
 */
 
 $messages = array();
-$messages['loginfailed'] = 'Erreur d\'authentification';
+$messages['errortitle'] = 'Une erreur est survenue !';
+$messages['loginfailed'] = 'L\'authentification a échoué';
 $messages['cookiesdisabled'] = 'Votre navigateur n\'accepte pas les cookies';
 $messages['sessionerror'] = 'Votre session est invalide ou a expiré';
-$messages['imaperror'] = 'Erreur de connexion au serveur IMAP';
+$messages['storageerror'] = 'Erreur de connexion au serveur IMAP';
 $messages['servererror'] = 'Erreur Serveur !';
 $messages['servererrormsg'] = 'Erreur du serveur: $msg';
 $messages['dberror'] = 'Erreur avec la base de donnée!';
+$messages['requesttimedout'] = 'Délai de la requête expiré';
 $messages['errorreadonly'] = 'Impossible d\'effectuer cette opération. Le dossier est en lecture seule';
 $messages['errornoperm'] = 'Impossible d\'effectuer cette opération. Permission refusée';
 $messages['invalidrequest'] = 'Requête invalide ! Aucune donnée n\'a été sauvegardée.';
-$messages['nomessagesfound'] = 'Aucun message trouvé dans cette boîte aux lettres';
+$messages['nomessagesfound'] = 'Cette boîte aux lettres ne contient aucun message.';
 $messages['loggedout'] = 'Vous venez de vous déconnecter avec succès. Au revoir !';
-$messages['mailboxempty'] = 'Boîte aux lettres vide';
+$messages['mailboxempty'] = 'La boîte aux lettres est vide.';
 $messages['loading'] = 'Chargement...';
 $messages['uploading'] = 'Envoi du fichier...';
 $messages['uploadingmany'] = 'Envoi des fichiers ...';
 $messages['loadingdata'] = 'Chargement des données...';
 $messages['checkingmail'] = 'Vérification des nouveaux messages...';
-$messages['sendingmessage'] = 'Message en cours d\'envoi...';
-$messages['messagesent'] = 'Message bien envoyé';
+$messages['sendingmessage'] = 'Expédition du message...';
+$messages['messagesent'] = 'Message expédié.';
 $messages['savingmessage'] = 'Sauvegarde du message...';
 $messages['messagesaved'] = 'Message sauvegardé dans Brouillons';
 $messages['successfullysaved'] = 'Sauvegarde effectuée';
 $messages['addedsuccessfully'] = 'Contact ajouté dans le carnet d\'adresses';
-$messages['contactexists'] = 'Un contact avec ce courriel existe déjà';
-$messages['contactnameexists'] = 'Un contact avec le même nom existe déjà.';
-$messages['blockedimages'] = 'Afin de préserver votre vie privée, les images distantes ont été bloquées dans ce message.';
-$messages['encryptedmessage'] = 'Ceci est un message crypté et il ne peut pas être affiché. Désolé !';
+$messages['contactexists'] = 'Cette adresse courriel est utilisée par un autre contact';
+$messages['contactnameexists'] = 'Il existe déjà un contact nommé ainsi.';
+$messages['blockedimages'] = 'Les images distantes sont bloquées pour protéger votre vie privée.';
+$messages['encryptedmessage'] = 'Désolé, ce message est chiffré et ne peut être affiché.';
 $messages['nocontactsfound'] = 'Aucun contact n\'a pu être trouvé';
-$messages['contactnotfound'] = 'Le contact demandé n\'a pas été trouvé';
+$messages['contactnotfound'] = 'Le contact demandé n\'a pas été trouvé.';
 $messages['contactsearchonly'] = 'Entrez un ou plusieurs mots clés pour trouver des contacts';
 $messages['sendingfailed'] = 'L\'envoi du message a échoué';
-$messages['senttooquickly'] = 'Vous devez attendre $sec sec. pour envoyer le message';
+$messages['senttooquickly'] = 'Vous devez attendre $sec s. pour envoyer le message';
 $messages['errorsavingsent'] = 'Une erreur est survenue pendant la sauvegarde du message envoyé';
 $messages['errorsaving'] = 'Une erreur a empêché la sauvegarde';
 $messages['errormoving'] = 'Impossible de déplacer le message';
-$messages['errorcopying'] = 'Le(s) message(s) n\'a/ont pas pu être copié(s)';
+$messages['errorcopying'] = 'La copie de ce(s) message(s) a échoué.';
 $messages['errordeleting'] = 'Impossible d\'effacer le message';
 $messages['errormarking'] = 'Impossible de marquer le message';
-$messages['deletecontactconfirm'] = 'Voulez-vous vraiment effacer le(s) contact(s) sélectionné(s) ?';
+$messages['deletecontactconfirm'] = 'Êtes-vous sûr de vouloir supprimer le(s) contact(s) sélectionné(s) ?';
 $messages['deletegroupconfirm'] = 'Êtes-vous sûr de vouloir supprimer le groupe sélectionné ?';
-$messages['deletemessagesconfirm'] = 'Voulez-vous vraiment supprimer le(s) message(s) sélectionné(s) ?';
-$messages['deletefolderconfirm'] = 'Voulez-vous vraiment effacer ce dossier ?';
-$messages['purgefolderconfirm'] = 'Voulez-vous vraiment effacer tous les messages de ce dossier ?';
+$messages['deletemessagesconfirm'] = 'Êtes-vous sûr de vouloir supprimer le(s) message(s) sélectionné(s) ?';
+$messages['deletefolderconfirm'] = 'Êtes-vous sûr de vouloir supprimer ce dossier ?';
+$messages['purgefolderconfirm'] = 'Êtes-vous sûr de vouloir supprimer tous les messages de ce dossier ?';
 $messages['contactdeleting'] = 'Suppression de contact(s)...';
 $messages['groupdeleting'] = 'Suppression du groupe ...';
 $messages['folderdeleting'] = 'Suppression du dossier...';
@@ -81,8 +77,8 @@ $messages['nobodywarning'] = 'Envoyer ce message sans texte ?';
 $messages['notsentwarning'] = 'Le message n\'a pas été envoyé. Voulez-vous abandonner ce message ?';
 $messages['noldapserver'] = 'Choisissez un serveur LDAP pour la recherche';
 $messages['nosearchname'] = 'Entrez un nom de contact ou un courriel';
-$messages['notuploadedwarning'] = 'Toutes les pièces jointes ne sont pas encore envoyées pour le moment. Merci d\'attendre ou d\'annuler l\'envoi.';
-$messages['searchsuccessful'] = '$nr messages trouvés';
+$messages['notuploadedwarning'] = 'Certaines pièces jointes sont en cours d\'expédition : attendez ou annulez l\'envoi.';
+$messages['searchsuccessful'] = '$nr messages.';
 $messages['contactsearchsuccessful'] = '$nr contact(s) trouvé(s).';
 $messages['searchnomatch'] = 'La recherche ne donne aucun résultat';
 $messages['searching'] = 'En cours de recherche...';
@@ -111,6 +107,7 @@ $messages['addingmember'] = 'Ajout des contacts dans le groupe ...';
 $messages['removingmember'] = 'Suppression des contacts du groupe ...';
 $messages['receiptsent'] = 'L\'accusé de réception a bien été envoyé';
 $messages['errorsendingreceipt'] = 'L\'accusé de réception n\'a pas pu être envoyé';
+$messages['deleteidentityconfirm'] = 'Voulez vous vraiment supprimer cette identités ?';
 $messages['nodeletelastidentity'] = 'Vous ne pouvez pas effacer votre seule identité.';
 $messages['forbiddencharacter'] = 'Le nom du dossier contient un caractère interdit';
 $messages['selectimportfile'] = 'Veuillez sélectionner un fichier à envoyer';
@@ -161,4 +158,3 @@ $messages['mispellingsfound'] = 'Des fautes d\'orthographe ont été détectées
 $messages['parentnotwritable'] = 'Impossible de créer/déplacer le dossier dans le dossier parent sélectionné. Aucun droit d\'accès.';
 $messages['messagetoobig'] = 'Le message est trop gros pour être traité.';
 
-?>
\ No newline at end of file
index 441d837d624b0153af4118f500ab150a93589a25..b312ddcc5ea247bc1a99b32fc59959c7a0039457 100755 (executable)
@@ -2,18 +2,16 @@
 
 /*
  +-----------------------------------------------------------------------+
- | language/ga/labels.inc                                                |
+ | localization/ga_IE/labels.inc                                         |
  |                                                                       |
  | Language file of the Roundcube Webmail client                         |
- | Copyright (C) 2005-2010, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author:   Noel Bourke  (cros13)                                       |
+ | Author: Thomas <Unknown>                                              |
  +-----------------------------------------------------------------------+
-
- @version $Id: labels.inc 4410 2011-01-12 18:25:02Z thomasb $
-
+ @version $Id$
 */
 
 $labels = array();
@@ -41,17 +39,16 @@ $labels['date'] = 'Dáta';
 $labels['size'] = 'Méid';
 $labels['priority'] = 'Tosaíocht';
 $labels['organization'] = 'Eagraíocht';
-$labels['reply-to'] = 'Freagair go';
 $labels['mailboxlist'] = 'Fillteán';
+$labels['folders'] = 'Fillteán';
 $labels['messagesfromto'] = 'Teachtaireachta as $from go $to as $count';
 $labels['messagenrof'] = 'Teachtaireacht $nr as $count';
+$labels['copy'] = 'Cóipeáil';
+$labels['move'] = 'Bog';
 $labels['moveto'] = 'bog go...';
 $labels['download'] = 'síos-luchtú';
 $labels['filename'] = 'Comhad';
 $labels['filesize'] = 'Toirt';
-$labels['preferhtml'] = 'Taispeáin an HTML';
-$labels['htmlmessage'] = 'Teachtaireacht HTML';
-$labels['prettydate'] = 'Dátaí Dheas';
 $labels['addtoaddressbook'] = 'Sábháil i mo leabhair seoltaí';
 $labels['sun'] = 'Do';
 $labels['mon'] = 'Lu';
@@ -67,39 +64,58 @@ $labels['wednesday'] = 'An Chéadaoin';
 $labels['thursday'] = 'An Déardaoin';
 $labels['friday'] = 'Aoine';
 $labels['saturday'] = 'An Satharn';
+$labels['jan'] = 'Ean';
+$labels['feb'] = 'Fea';
+$labels['mar'] = 'Már';
+$labels['apr'] = 'Aib';
+$labels['may'] = 'Bea';
+$labels['longmay'] = 'Bea';
+$labels['jun'] = 'Mei';
+$labels['jul'] = 'Iúi';
+$labels['aug'] = 'Lún';
+$labels['nov'] = 'Sam';
+$labels['dec'] = 'Nol';
+$labels['longjan'] = 'Eanáir';
+$labels['longfeb'] = 'Feabhra';
+$labels['longmar'] = 'Márta';
+$labels['longapr'] = 'Aibreán';
+$labels['longjun'] = 'Meitheamh';
+$labels['longjul'] = 'Iúil';
+$labels['longaug'] = 'Lúnasa';
+$labels['longsep'] = 'Meán Fómhair';
+$labels['longoct'] = 'Deireadh Fómhair';
+$labels['longnov'] = 'Samhain';
+$labels['longdec'] = 'Nollag';
 $labels['today'] = 'Inniu';
 $labels['checkmail'] = 'Seiceáil chun teachtaireacht nua';
+$labels['compose'] = 'Scríobh teachtaireacht';
 $labels['writenewmessage'] = 'Scríobh teachtaireacht nua';
 $labels['replytomessage'] = 'Scríobh freagra chun an seolaí';
 $labels['replytoallmessage'] = 'Scríobh freagra chun an seolaí agus na faighteoir';
+$labels['replyall'] = 'Freagra gach';
 $labels['forwardmessage'] = 'Seol ar aghaidh an teachtaireacht';
 $labels['deletemessage'] = 'Chuir an teachtaireacht i mo bosca bruscair';
 $labels['printmessage'] = 'Priontáil an teachtaireacht seo';
 $labels['previousmessage'] = 'Taispeáin an teachtaireacht roimhe seo';
-$labels['previousmessages'] = 'Taispeáin an foireann roimhe seo';
 $labels['firstmessage'] = 'Taispeáin an cead teachtaireacht';
-$labels['firstmessages'] = 'Taispeáin an cead foireann';
 $labels['nextmessage'] = 'Taispeáin an teachtaireacht ina dhiaidh sin';
-$labels['nextmessages'] = 'Taispeáin an foireann ina dhiaidh sin';
 $labels['lastmessage'] = 'Taispeáin an teachtaireacht deireanach';
-$labels['lastmessages'] = 'Taispeáin an foireann deireanach';
 $labels['backtolist'] = 'Téigh ar ais go dtí an liosta teachtaireachta';
 $labels['viewsource'] = 'Éiriú bunchód';
 $labels['select'] = 'Togh';
 $labels['all'] = 'An uile';
 $labels['none'] = 'Aon cheann';
+$labels['nonesort'] = 'Aon cheann';
 $labels['unread'] = 'Na rudaí nach bhuil corraithe';
 $labels['compact'] = 'Comhbhrúigh';
 $labels['empty'] = 'Folmhaigh';
-$labels['purge'] = 'Purgaigh';
 $labels['quota'] = 'Toilleadh diosca atá athláimhe';
 $labels['unknown'] = 'gan aithne';
 $labels['unlimited'] = 'gan teorainn';
 $labels['quicksearch'] = 'Mearcuardaigh';
 $labels['resetsearch'] = 'Athshocraigh an cuardach';
-$labels['compose'] = 'Scríobh teachtaireacht';
-$labels['sendmessage'] = 'Seol mo teachtaireacht láithreach bonn';
 $labels['savemessage'] = 'Sábháil an dréachta seo';
+$labels['sendmessage'] = 'Seol mo teachtaireacht láithreach bonn';
 $labels['addattachment'] = 'Suimigh Iatán';
 $labels['charset'] = 'Foireann carachtar';
 $labels['editortype'] = 'Sort eagarthóir';
@@ -150,6 +166,9 @@ $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';
 $labels['setdefault'] = 'Socraigh an réamhshocraithe';
 $labels['language'] = 'Teanga';
 $labels['timezone'] = 'Crios ama';
@@ -162,7 +181,6 @@ $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';
@@ -172,4 +190,3 @@ $labels['sortby'] = 'Sórtáil trí';
 $labels['sortasc'] = 'Sórtáil in ord méadaitheach';
 $labels['sortdesc'] = 'Sórtáil in ord neartaitheach';
 
-?>
\ No newline at end of file
index 6a495a9b18ce687056ba93ab7e4e597de0da7545..9863854967778e977c05a070d0c39355de01cbed 100755 (executable)
@@ -2,25 +2,23 @@
 
 /*
  +-----------------------------------------------------------------------+
- | language/ga/messages.inc                                              |
+ | localization/ga_IE/messages.inc                                       |
  |                                                                       |
  | Language file of the Roundcube Webmail client                         |
- | Copyright (C) 2005-2010, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author:   Noel Bourke  (cros13)                                       |
+ | Author: Thomas <Unknown>                                              |
  +-----------------------------------------------------------------------+
-
- @version $Id: messages.inc 4410 2011-01-12 18:25:02Z thomasb $
-
+ @version $Id$
 */
 
 $messages = array();
 $messages['loginfailed'] = 'Theip an iarraidh chun logáil tú isteach';
 $messages['cookiesdisabled'] = 'Níor glac do sracléitheoir an fianán seisiúin';
 $messages['sessionerror'] = 'Tá an seisiúin neamhbhailí nó as feidhm';
-$messages['imaperror'] = 'Theip an iarraidh chun nasc go dtí an freastalaí Prótacal Rochtana Teachtaireachtaí Idirlín (IMAP)';
+$messages['storageerror'] = 'Theip an iarraidh chun nasc go dtí an freastalaí Prótacal Rochtana Teachtaireachtaí Idirlín (IMAP)';
 $messages['nomessagesfound'] = 'Ní bhfuair mé aon teachtaireacht i bosca postas seo';
 $messages['loggedout'] = 'D\'éirigh tú logáil amach. Slán Leat!';
 $messages['mailboxempty'] = 'Tá an bosca postas folamh';
@@ -34,7 +32,7 @@ $messages['messagesaved'] = 'Sábháil mé an teachtaireacht i dréachtaí';
 $messages['successfullysaved'] = 'D\'éirigh mé agus sábháil mé';
 $messages['addedsuccessfully'] = 'D\'éirigh mé agus shábháil mé duine nua go dtí an Leabhair Seoltaí';
 $messages['contactexists'] = 'Tá duine i do Leabhair Seoltaí agus tá an seoladh ríomhphost seo aige';
-$messages['blockedimages'] = 'Chun do príobháide a cosain, choiscinn na híomhánna san teachtaireacht seo ';
+$messages['blockedimages'] = 'Chun do príobháide a cosain, choiscinn na híomhánna san teachtaireacht seo';
 $messages['encryptedmessage'] = 'Tá an teachtaireacht seo i criptiúchán, Níl an cumas agam chun é a tionscail';
 $messages['nocontactsfound'] = 'Ní raibh aon buine san Leabhair Seoltaí seo';
 $messages['contactnotfound'] = 'Ní bhfuair mé an duine seo';
@@ -55,7 +53,6 @@ $messages['nosubjectwarning'] = 'Níl aon ábhair ar an teachtaireacht, ba mhait
 $messages['nobodywarning'] = 'Níl aon teacs san teachtaireacht, ba mhaith tú déarfaidh mé teachtaireacht ar bith?';
 $messages['notsentwarning'] = 'Theip an iarraidh chun an teachtaireacht a seo. ba mhaith tú scrios do teachtaireacht?';
 $messages['noldapserver'] = 'Abair liom eolaire LDAP chun é a cuardaigh';
-$messages['nocontactsreturned'] = 'Ní bhfuair mé aon duine as an ceist seo';
 $messages['nosearchname'] = 'Abair liom ainm duine nó seoladh ríomhphost';
 $messages['searchsuccessful'] = 'Fuair mé $n teachtaireacht';
 $messages['searchnomatch'] = 'Ní bhfuair mé aon rud as an ceist seo';
@@ -73,4 +70,3 @@ $messages['copyerror'] = 'Theip mé agus níor dfhag mé aon seolagh';
 $messages['sourceisreadonly'] = 'Tá an foinse seolaigh seo inléite amháin';
 $messages['errorsavingcontact'] = 'Theip mé, Níl an cumas agam an seolagh seo a sábháil';
 
-?>
\ No newline at end of file
index bdceb7ef0fd6d73b742dd341977e2f86630bbbe7..5e8c2a6f8fa3e78ebca4c31624c767e486d6176c 100644 (file)
@@ -1,17 +1,17 @@
 <?php
 
 /*
-+-----------------------------------------------------------------------+
-| language/gl_ES/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2011, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author:    David Garabana Barro <david garabana com>                  |
-+-----------------------------------------------------------------------+
-
+ +-----------------------------------------------------------------------+
+ | localization/gl_ES/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Xosé <Unknown>                                               |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $labels = array();
@@ -41,7 +41,9 @@ $labels['size'] = 'Tamaño';
 $labels['priority'] = 'Prioridade';
 $labels['organization'] = 'Organización';
 $labels['readstatus'] = 'Estado da lectura';
+$labels['listoptions'] = 'Opcións de lista...';
 $labels['mailboxlist'] = 'Cartafoles';
+$labels['folders'] = 'Cartafoles';
 $labels['messagesfromto'] = 'Mensaxes da $from á $to de $count';
 $labels['threadsfromto'] = 'Fíos do $from ao $to de $count';
 $labels['messagenrof'] = 'Mensaxe $nr de $count';
@@ -70,7 +72,8 @@ $labels['jan'] = 'Xan';
 $labels['feb'] = 'Feb';
 $labels['mar'] = 'Mar';
 $labels['apr'] = 'Abr';
-$labels['may'] = 'Mai';
+$labels['may'] = 'Maio';
+$labels['longmay'] = 'Maio';
 $labels['jun'] = 'Xuñ';
 $labels['jul'] = 'Xul';
 $labels['aug'] = 'Ago';
@@ -82,17 +85,19 @@ $labels['longjan'] = 'Xaneiro';
 $labels['longfeb'] = 'Febreiro';
 $labels['longmar'] = 'Marzo';
 $labels['longapr'] = 'Abril';
-$labels['longmay'] = 'Maio';
 $labels['longjun'] = 'Xuño';
 $labels['longjul'] = 'Xullo';
 $labels['longaug'] = 'Agosto';
 $labels['longsep'] = 'Setembro';
-$labels['longoct'] = 'Outobro';
+$labels['longoct'] = 'Outubro';
 $labels['longnov'] = 'Novembro';
 $labels['longdec'] = 'Decembro';
 $labels['today'] = 'Hoxe';
+$labels['refresh'] = 'Actualizar';
 $labels['checkmail'] = 'Procurar novas mensaxes';
+$labels['compose'] = 'Redactar unha mensaxe';
 $labels['writenewmessage'] = 'Redactar unha mensaxe nova';
+$labels['reply'] = 'Responder';
 $labels['replytomessage'] = 'Respostar a mensaxe';
 $labels['replytoallmessage'] = 'Respostar á lista ou ao remitente e a tódolos destinatarios';
 $labels['replyall'] = 'Respostar a todos';
@@ -115,9 +120,13 @@ $labels['markunread'] = 'Como non lidas';
 $labels['markflagged'] = 'Como marcadas';
 $labels['markunflagged'] = 'Como non marcadas';
 $labels['moreactions'] = 'Máis accións...';
+$labels['more'] = 'Máis';
+$labels['back'] = 'Atrás';
+$labels['options'] = 'Opcións';
 $labels['select'] = 'Seleccionar';
 $labels['all'] = 'Todas';
 $labels['none'] = 'Ningunha';
+$labels['nonesort'] = 'Ningunha';
 $labels['currpage'] = 'Páxina actual';
 $labels['unread'] = 'Non lidas';
 $labels['flagged'] = 'Marcadas';
@@ -137,7 +146,6 @@ $labels['expand_only_unread'] = 'só con mensaxes non lidas';
 $labels['fromto'] = 'Remitente/Destinatario';
 $labels['flag'] = 'Marca';
 $labels['attachment'] = 'Anexo';
-$labels['nonesort'] = 'Ningunha';
 $labels['sentdate'] = 'Data de envío';
 $labels['arrival'] = 'Data de chegada';
 $labels['asc'] = 'ascendente';
@@ -158,7 +166,6 @@ $labels['searchmod'] = 'Modificadores de busca';
 $labels['msgtext'] = 'Mensaxe enteira';
 $labels['openinextwin'] = 'Abrir nunha nova fiestra';
 $labels['emlsave'] = 'Gardar (.eml)';
-$labels['compose'] = 'Redactar unha mensaxe';
 $labels['editasnew'] = 'Editar como nova';
 $labels['savemessage'] = 'Gardar a mensaxe como borrador';
 $labels['sendmessage'] = 'Enviar a mensaxe agora';
@@ -227,15 +234,17 @@ $labels['notes'] = 'Notes';
 $labels['male'] = 'home';
 $labels['female'] = 'muller';
 $labels['manager'] = 'Xerente';
-$labels['assistant'] = 'Asistente/a';
+$labels['assistant'] = 'Asistente';
+$labels['typeassistant'] = 'Asistente';
 $labels['spouse'] = 'Cónxuxe';
 $labels['allfields'] = 'Tódolos campos';
 $labels['search'] = 'Procurar';
 $labels['advsearch'] = 'Procura avanzada';
+$labels['advanced'] = 'Avanzado';
 $labels['other'] = 'Outro';
+$labels['typeother'] = 'Outro';
 $labels['typehome'] = 'Casa';
 $labels['typework'] = 'Traballo';
-$labels['typeother'] = 'Outro';
 $labels['typemobile'] = 'Móbil';
 $labels['typemain'] = 'Principal';
 $labels['typehomefax'] = 'Fax da casa';
@@ -243,7 +252,6 @@ $labels['typeworkfax'] = 'Fax do traballo';
 $labels['typecar'] = 'Coche';
 $labels['typepager'] = 'Buscapersonas';
 $labels['typevideo'] = 'Vídeo';
-$labels['typeassistant'] = 'Asistente';
 $labels['typehomepage'] = 'Páxina principal';
 $labels['typeblog'] = 'Blogue';
 $labels['typeprofile'] = 'Perfil';
@@ -260,6 +268,7 @@ $labels['delete'] = 'Eliminar';
 $labels['rename'] = 'Mudar o nome';
 $labels['addphoto'] = 'Engadir';
 $labels['replacephoto'] = 'Substituír';
+$labels['uploadphoto'] = 'Subir foto';
 $labels['newcontact'] = 'Novo contacto';
 $labels['deletecontact'] = 'Eliminar os contactos seleccionados';
 $labels['composeto'] = 'Redactar mensaxe para';
@@ -284,7 +293,7 @@ $labels['importcontacts'] = 'Importar contactos';
 $labels['importfromfile'] = 'Importar desde ficheiro:';
 $labels['importtarget'] = 'Engadir contactos ao caderno de enderezos:';
 $labels['importreplace'] = 'Substituír completamente o caderno de enderezos';
-$labels['importtext'] = 'Pode cargar contactos desde un caderno de enderezos xa existente.<br/>Polo de agora pódense importar enderezos usando o formato <a href="http://en.wikipedia.org/wiki/VCard">vCard</a>  ';
+$labels['importtext'] = 'Pode cargar contactos desde un caderno de enderezos xa existente.<br/>Polo de agora pódense importar enderezos usando o formato <a href="http://en.wikipedia.org/wiki/VCard">vCard</a>';
 $labels['done'] = 'Rematado';
 $labels['settingsfor'] = 'Axustes de';
 $labels['about'] = 'Acerca de';
@@ -349,11 +358,12 @@ $labels['advancedoptions'] = 'Opcións avanzadas';
 $labels['focusonnewmessage'] = 'Enfocar o navegador se hai mensaxes novas';
 $labels['checkallfolders'] = 'Procurar novas mensaxes en tódolos cartafoles';
 $labels['displaynext'] = 'Logo de eliminar ou mover unha mensaxe ir á mensaxe seguinte';
+$labels['defaultfont'] = 'Fonte por defecto da mensaxe HTML';
 $labels['mainoptions'] = 'Opcións principais';
+$labels['browseroptions'] = 'Opcións do navegador';
 $labels['section'] = 'Sección';
 $labels['maintenance'] = 'Mantemento';
 $labels['newmessage'] = 'Mensaxes novas';
-$labels['listoptions'] = 'Opcións de lista';
 $labels['signatureoptions'] = 'Opcións da firma';
 $labels['whenreplying'] = 'Ao respostar';
 $labels['replytopposting'] = 'comezar a nova mensaxe enriba da orixinal';
@@ -362,7 +372,7 @@ $labels['replyremovesignature'] = 'Eliminar a firma do remitente ao respostar';
 $labels['autoaddsignature'] = 'Engadir firma automáticamente';
 $labels['newmessageonly'] = 'só nas mensaxes novas';
 $labels['replyandforwardonly'] = 'só nas respostas e reenvíos';
-$labels['replysignaturepos'] = 'Ao respostar ou reenviar colocar a firma ';
+$labels['replysignaturepos'] = 'Ao respostar ou reenviar colocar a firma';
 $labels['belowquote'] = 'embaixo do texto citado';
 $labels['abovequote'] = 'enriba do texto citado';
 $labels['insertsignature'] = 'Engadir firma';
@@ -380,7 +390,6 @@ $labels['spellcheckignorenums'] = 'Ignorar as palabras con números';
 $labels['spellcheckignorecaps'] = 'Ignorar as palabras escritas en maiúsculas';
 $labels['addtodict'] = 'Engadir ao diccionario';
 $labels['folder'] = 'Cartafol';
-$labels['folders'] = 'Cartafoles';
 $labels['foldername'] = 'Nome do cartafol';
 $labels['subscribed'] = 'Subscrito';
 $labels['messagecount'] = 'Mensaxes';
@@ -406,7 +415,7 @@ $labels['undo'] = 'Desfacer';
 $labels['plugin'] = 'Complemento';
 $labels['version'] = 'Versión';
 $labels['source'] = 'Fonte';
-$labels['license'] = 'Licencia';
+$labels['license'] = 'Licenza';
 $labels['support'] = 'Obter axuda';
 $labels['B'] = 'B';
 $labels['KB'] = 'KiB';
@@ -431,4 +440,3 @@ $labels['japanese'] = 'Xaponés';
 $labels['korean'] = 'Coreano';
 $labels['chinese'] = 'Chinés';
 
-?>
index c872c8e83b5bb29aa8b39df7f1e615ac51d9e154..5eb9a73599a5644b7e85b65db6fc3dd98bea0fa3 100644 (file)
@@ -1,24 +1,24 @@
 <?php
 
 /*
-+-----------------------------------------------------------------------+
-| language/gl_ES/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2011, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author:    David Garabana Barro <david garabana com>                  |
-+-----------------------------------------------------------------------+
-
+ +-----------------------------------------------------------------------+
+ | localization/gl_ES/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $messages = array();
 $messages['loginfailed'] = 'O contrasinal ou o nome de usuario son incorrectos.';
 $messages['cookiesdisabled'] = 'O seu navegador non acepta galletas.';
 $messages['sessionerror'] = 'A súa sesión non é válida ou expirou.';
-$messages['imaperror'] = 'Fallou a conexión co servidor IMAP.';
+$messages['storageerror'] = 'Fallou a conexión co servidor IMAP.';
 $messages['servererror'] = 'Erro do servidor!';
 $messages['servererrormsg'] = 'Erro do servidor: $msg';
 $messages['dberror'] = 'Erro na base de datos!';
@@ -36,7 +36,7 @@ $messages['checkingmail'] = 'Á procura de novas mensaxes...';
 $messages['sendingmessage'] = 'Enviando mensaxe...';
 $messages['messagesent'] = 'A mensaxe enviouse correctamente.';
 $messages['savingmessage'] = 'Gardando mensaxe...';
-$messages['messagesaved'] = 'A mensaxe gardouse en "Borradores"';
+$messages['messagesaved'] = 'A mensaxe gardouse en "Borradores';
 $messages['successfullysaved'] = 'Gardado correctamente.';
 $messages['addedsuccessfully'] = 'O contacto engadiuse correctamente ao caderno de enderezos.';
 $messages['contactexists'] = 'Xa existe un contacto con este enderezo de correo electrónico.';
@@ -125,7 +125,6 @@ $messages['smtpautherror'] = 'Erro SMTP ($code): Fallou a autenticación.';
 $messages['smtpfromerror'] = 'Erro SMTP ($code): Non foi posible establecer o remitente "$from" ($msg).';
 $messages['smtptoerror'] = 'Erro SMTP ($code): Non foi posible engadir o destinatario "$to" ($msg).';
 $messages['smtprecipientserror'] = 'Erro SMTP: Non se pode analizar a lista de destinatarios.';
-$messages['smtpdsnerror'] = 'Erro SMTP: Non hai soporte para notificacións do estado de envío (DSN).';
 $messages['smtperror'] = 'Erro SMTP: $msg';
 $messages['emailformaterror'] = 'O enderezo de correo electrónico é incorrecto: $email.';
 $messages['toomanyrecipients'] = 'Especificou destinatarios de máis. Por favor, redúzaos a un máximo de $max.';
@@ -138,7 +137,7 @@ $messages['contactrestored'] = 'Restauráronse correctamente o(s) contacto(s).';
 $messages['groupdeleted'] = 'Borrouse correctamente o grupo.';
 $messages['grouprenamed'] = 'Mudouse correctamente o nome do grupo.';
 $messages['groupcreated'] = 'Creouse correctamente o grupo.';
-$messages['savedsearchdeleted'] = 'Borrouse correctamente a procura gardada. ';
+$messages['savedsearchdeleted'] = 'Borrouse correctamente a procura gardada.';
 $messages['savedsearchdeleteerror'] = 'Non foi posible borrar a procura gardada.';
 $messages['savedsearchcreated'] = 'Creouse correctamente a procura gardada.';
 $messages['savedsearchcreateerror'] = 'Non foi posible crear a procura gardada.';
@@ -156,4 +155,3 @@ $messages['invalidimageformat'] = 'O formato da imaxe non é válido.';
 $messages['mispellingsfound'] = 'Atopáronse erros ortográficos na mensaxe.';
 $messages['parentnotwritable'] = 'Non foi posible crear/mover o cartafol no cartafol padre escollido porque non ten permisos.';
 
-?>
index 1dd15f45e5411a09a9acfb76a80e84ce097f4397..1d8916ef171553816dacb17ac32b12ae8cec70fa 100644 (file)
@@ -1,18 +1,16 @@
 <?php
 
 /*
-+-----------------------------------------------------------------------+
-| language/he_IL/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Moshe Leibovitch  <moish@mln.co.il>                           |
-| Updates: Noor Dawod <noor@comrax.com>                                 |
-| Updates: Moshe Leibovitch  <moish@mln.co.il>  28112011                |
-+-----------------------------------------------------------------------+
+ +-----------------------------------------------------------------------+
+ | localization/he_IL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Moshe Leibovitch <moish@mln.co.il>                            |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
@@ -31,8 +29,8 @@ $labels['sent'] = 'נשלח';
 $labels['trash'] = 'אשפה';
 $labels['junk'] = 'זבל';
 $labels['subject'] = 'נושא';
-$labels['from'] = '×\94ש×\95×\9c×\97';
-$labels['to'] = '×\94× ×\9e×¢×\9f';
+$labels['from'] = '×\9e×\90ת';
+$labels['to'] = '×\90×\9c';
 $labels['cc'] = 'לידיעה';
 $labels['bcc'] = 'מכותב מוסתר';
 $labels['replyto'] = 'כתובת למענה';
@@ -42,10 +40,13 @@ $labels['size'] = 'גודל';
 $labels['priority'] = 'עדיפות';
 $labels['organization'] = 'ארגון';
 $labels['readstatus'] = 'נקרא';
-$labels['mailboxlist'] = 'תיקים';
+$labels['listoptions'] = 'הצגת אפשרויות...';
+$labels['mailboxlist'] = 'תיקיות';
+$labels['folders'] = 'תיקיות';
 $labels['messagesfromto'] = 'הודעות $from עד $to מתוך $count';
 $labels['threadsfromto'] = 'שרשור $from עד $to מתוך $count';
 $labels['messagenrof'] = 'הודעה $nr מתוך $count';
+$labels['fromtoshort'] = '$from – $to מתוך $count';
 $labels['copy'] = 'העתק';
 $labels['move'] = 'העבר';
 $labels['moveto'] = 'תיוק ב...';
@@ -72,6 +73,7 @@ $labels['feb'] = 'פבר';
 $labels['mar'] = 'מרץ';
 $labels['apr'] = 'אפר';
 $labels['may'] = 'מאי';
+$labels['longmay'] = 'מאי';
 $labels['jun'] = 'יונ';
 $labels['jul'] = 'יול';
 $labels['aug'] = 'אוג';
@@ -83,7 +85,6 @@ $labels['longjan'] = 'ינואר';
 $labels['longfeb'] = 'פברואר';
 $labels['longmar'] = 'מרץ';
 $labels['longapr'] = 'אפריל';
-$labels['longmay'] = 'מאי';
 $labels['longjun'] = 'יוני';
 $labels['longjul'] = 'יולי';
 $labels['longaug'] = 'אוגוסט';
@@ -92,12 +93,16 @@ $labels['longoct'] = 'אוקטובר';
 $labels['longnov'] = 'נובמבר';
 $labels['longdec'] = 'דצמבר';
 $labels['today'] = 'היום';
+$labels['refresh'] = 'רענון';
 $labels['checkmail'] = 'משיכת הודעות חדשות';
+$labels['compose'] = 'כתיבת הודעה';
 $labels['writenewmessage'] = 'יצירת הודעה חדשה';
+$labels['reply'] = 'תגובה';
 $labels['replytomessage'] = 'מענה לשולח';
 $labels['replytoallmessage'] = 'מענה לשולח ולכל הנמענים';
 $labels['replyall'] = 'מענה לכולם';
 $labels['replylist'] = 'מענה לרשימת תפוצה';
+$labels['forward'] = 'העברה';
 $labels['forwardinline'] = 'העבר בגוף ההודעה';
 $labels['forwardattachment'] = 'העבר כקובץ מצורף';
 $labels['forwardmessage'] = 'העבר הודעה';
@@ -110,15 +115,20 @@ $labels['nextmessage'] = 'הצגת ההודעה הבאה';
 $labels['lastmessage'] = 'הצגת ההודעה האחרונה';
 $labels['backtolist'] = 'חזרה אל רשימת ההודעות';
 $labels['viewsource'] = 'הצגת קוד מקור';
+$labels['mark'] = 'סימון';
 $labels['markmessages'] = 'סימון הודעות';
 $labels['markread'] = 'כנקראו';
 $labels['markunread'] = 'כלא נקראו';
 $labels['markflagged'] = 'כמסומן';
 $labels['markunflagged'] = 'כלא מסומן';
 $labels['moreactions'] = 'פעולות נוספות...';
+$labels['more'] = 'עוד';
+$labels['back'] = 'חזרה';
+$labels['options'] = 'אפשרויות';
 $labels['select'] = 'בחירה';
 $labels['all'] = 'הכל';
 $labels['none'] = 'כלום';
+$labels['nonesort'] = 'כלום';
 $labels['currpage'] = 'דף נוכחי';
 $labels['unread'] = 'לא נקראו';
 $labels['flagged'] = 'מסומן';
@@ -138,7 +148,6 @@ $labels['expand_only_unread'] = 'רק עם הודעות שטרם נקראו';
 $labels['fromto'] = 'שולח/נמען';
 $labels['flag'] = 'דגל';
 $labels['attachment'] = 'צרופה';
-$labels['nonesort'] = 'כלום';
 $labels['sentdate'] = 'תאריך משלוח';
 $labels['arrival'] = 'תאריך הגעה';
 $labels['asc'] = 'בסדר עולה';
@@ -159,7 +168,6 @@ $labels['searchmod'] = 'מאפייני חיפוש';
 $labels['msgtext'] = 'כל ההודעה';
 $labels['openinextwin'] = 'פתיחה בחלון חדש';
 $labels['emlsave'] = 'הורדת הודעה בפורמט  EML';
-$labels['compose'] = 'כתיבת הודעה';
 $labels['editasnew'] = 'עריכת ההודעה כחדשה';
 $labels['savemessage'] = 'שמירת טיוטה';
 $labels['sendmessage'] = 'משלוח מיידי';
@@ -171,9 +179,11 @@ $labels['dsn'] = 'הודעה על מצב המסירה';
 $labels['mailreplyintro'] = ':כתב $sender, $date בתאריך';
 $labels['originalmessage'] = 'הודעה מקורית';
 $labels['editidents'] = 'עריכת זהויות';
+$labels['spellcheck'] = 'איות';
 $labels['checkspelling'] = 'בדיקת איות';
 $labels['resumeediting'] = 'המשך עריכה';
 $labels['revertto'] = 'חזור למצב קודם';
+$labels['attach'] = 'צירוף';
 $labels['attachments'] = 'קבצים מצורפים';
 $labels['upload'] = 'העלאה';
 $labels['uploadprogress'] = '( $total  מתוך  $current )  $percent';
@@ -186,7 +196,7 @@ $labels['high'] = 'גבוה';
 $labels['highest'] = 'גבוה ביותר';
 $labels['nosubject'] = '(ללא נושא)';
 $labels['showimages'] = 'הצגת תמונות';
-$labels['alwaysshow'] = '$sender תמיד להציג תמונות מאת ';
+$labels['alwaysshow'] = '$sender תמיד להציג תמונות מאת';
 $labels['isdraft'] = 'זו טיוטה של הודעה';
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = 'ללא עיצוב';
@@ -229,14 +239,16 @@ $labels['male'] = 'זכר';
 $labels['female'] = 'נקבה';
 $labels['manager'] = 'מנהל/ת';
 $labels['assistant'] = 'עוזר/ת';
+$labels['typeassistant'] = 'עוזר/ת';
 $labels['spouse'] = 'בן/בת זוג';
 $labels['allfields'] = 'כל השדות';
 $labels['search'] = 'חיפוש';
 $labels['advsearch'] = 'חיםוש מתקדם';
+$labels['advanced'] = 'מתקדם';
 $labels['other'] = 'אחר';
+$labels['typeother'] = 'אחר';
 $labels['typehome'] = 'בית';
 $labels['typework'] = 'עבודה';
-$labels['typeother'] = 'אחר';
 $labels['typemobile'] = 'נייד';
 $labels['typemain'] = 'עיקרי';
 $labels['typehomefax'] = 'פקס בית';
@@ -244,7 +256,6 @@ $labels['typeworkfax'] = 'פקס עבודה';
 $labels['typecar'] = 'מכונית';
 $labels['typepager'] = 'זימונית';
 $labels['typevideo'] = 'וידאו';
-$labels['typeassistant'] = 'עוזר/ת';
 $labels['typehomepage'] = 'דף הבית';
 $labels['typeblog'] = 'יומן רשת';
 $labels['typeprofile'] = 'פרופיל';
@@ -261,16 +272,18 @@ $labels['delete'] = 'מחיקה';
 $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['exportvcards'] = 'ייצוא אנשי קשר בפורמט  vCard';
 $labels['newcontactgroup'] = 'יצירת קבוצה חדשה של אנשי קשר';
 $labels['grouprename'] = 'שינוי שם קבוצה';
 $labels['groupdelete'] = 'מחיקת קבוצה';
+$labels['groupremoveselected'] = 'אנשי הקשר שנבחרו יוסרו מהקבוצה';
 $labels['previouspage'] = 'הצגת הקבוצה הקודמת';
 $labels['firstpage'] = 'הצגת הקבוצה הראשונה';
 $labels['nextpage'] = 'הצגת הקבוצה הבאה';
@@ -323,13 +336,14 @@ $labels['mailboxview'] = 'הצגת תיבת ההודעות';
 $labels['mdnrequests'] = 'משלוח אישור מסירה';
 $labels['askuser'] = 'שאל את המשתמש';
 $labels['autosend'] = 'שליחה אוטומטית';
-$labels['autosendknown'] = 'משלוח אישור קבלה רק לאנשי הקשר שלי ';
+$labels['autosendknown'] = 'משלוח אישור קבלה רק לאנשי הקשר שלי';
 $labels['autosendknownignore'] = 'משלוח אישור קבלה לאנשי הקשר שלי בלבד ולהתעלם מאחרים';
 $labels['ignore'] = 'התעלם';
 $labels['readwhendeleted'] = 'סימון הודעה כנקראה לאחר מחיקה';
 $labels['flagfordeletion'] = 'סימון הודעה כמחוקה במקום מחיקה';
 $labels['skipdeleted'] = 'הסתרת הודעות שנמחקו';
 $labels['deletealways'] = 'אם העברה לתיקית מחיקה נכשלת יש למחוק לתמיד';
+$labels['deletejunk'] = 'מחיקה ישירה של הודעות זבל';
 $labels['showremoteimages'] = 'הצגת תמונות משרת מרוחק בגוף ההודעה';
 $labels['fromknownsenders'] = 'משולחים מוכרים';
 $labels['always'] = 'תמיד';
@@ -350,11 +364,12 @@ $labels['advancedoptions'] = 'הגדרות נוספות';
 $labels['focusonnewmessage'] = 'מיקוד הסמן על החלון עם ההודעה החדשה';
 $labels['checkallfolders'] = 'בדיקת הודעות חדשות בכל התיקים';
 $labels['displaynext'] = 'מעבר להודעה הבאה לאחר מחיקה או תיוק';
+$labels['defaultfont'] = 'גופן ברירת מחדל להודעה בפורמט HTML';
 $labels['mainoptions'] = 'אפשרויות עיקריות';
+$labels['browseroptions'] = 'אפשרויות דפדפן';
 $labels['section'] = 'קטע';
 $labels['maintenance'] = 'תחזוקה';
 $labels['newmessage'] = 'הודעה חדשה';
-$labels['listoptions'] = 'אפשרויות רשימה';
 $labels['signatureoptions'] = 'אפשרויות לשיבוץ חתימה';
 $labels['whenreplying'] = 'כאשר עונים';
 $labels['replytopposting'] = 'הודעה חדשה תתחיל מעל ההודעה המקורית';
@@ -374,14 +389,15 @@ $labels['reqdsn'] = 'תמיד לבקש הודעה על מצב המסירה';
 $labels['replysamefolder'] = 'המענה ישמר בתיקיה של ההודעה המקורית';
 $labels['defaultaddressbook'] = 'הוספת אנשי קשר לספר הכתובות שנבחר';
 $labels['autocompletesingle'] = 'לדלג על כתובת דואר חילופית בעת שימוש בהשלמה אוטומטית של הקלדה';
+$labels['listnamedisplay'] = 'הצגת איש הקשר בתור';
 $labels['spellcheckbeforesend'] = 'בדיקת איות לפני המשלוח';
 $labels['spellcheckoptions'] = 'אפשריות בדיקת איות';
 $labels['spellcheckignoresyms'] = 'התעלמות ממילים המכילות סמלים';
 $labels['spellcheckignorenums'] = 'התעלמות ממילים המכילות מספרים';
 $labels['spellcheckignorecaps'] = 'התעלמות ממילים עם אותציות ראשיות';
 $labels['addtodict'] = 'הוספה למילון';
+$labels['mailtoprotohandler'] = 'קביעת הפרוטוקול לטיפול בקישור מסוג  mailto:links';
 $labels['folder'] = 'תיק';
-$labels['folders'] = 'תיקים';
 $labels['foldername'] = 'שם תיק';
 $labels['subscribed'] = 'מנוי';
 $labels['messagecount'] = 'הודעות';
@@ -432,4 +448,3 @@ $labels['japanese'] = 'יפני';
 $labels['korean'] = 'קוריאני';
 $labels['chinese'] = 'סיני';
 
-?>
index 51de7c79d7feb7f6ac1fb690539234de0e00599b..35e03cf3220f85489ee07efbd01874e40d879cdc 100644 (file)
@@ -1,29 +1,28 @@
 <?php
 
 /*
-+-----------------------------------------------------------------------+
-| language/he_IL/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Moshe Leibovitch    <moish@mln.co.il>                         |
-| Updates: Noor Dawod <noor@comrax.com>                                 |
-| Updates: Moshe Leibovitch  <moish@mln.co.il>  28112011                |
-+-----------------------------------------------------------------------+
-
+ +-----------------------------------------------------------------------+
+ | localization/he_IL/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Moshe Leibovitch <moish@mln.co.il>                            |
+ +-----------------------------------------------------------------------+
 */
 
 $messages = array();
+$messages['errortitle'] = 'קרתה שגיאה !';
 $messages['loginfailed'] = 'הכניסה נכשלה';
 $messages['cookiesdisabled'] = 'הדפדפן אינו מקבל עוגיות';
 $messages['sessionerror'] = 'כניסתך למערכת אינה חוקית או שפג תוקפה';
-$messages['imaperror'] = 'הקשר לשרת הדואר נכשל';
+$messages['storageerror'] = 'הקשר לשרת הדואר נכשל';
 $messages['servererror'] = '! שגיאת שרת';
 $messages['servererrormsg'] = '$msg  שגיאת שרת';
 $messages['dberror'] = '! שגיאה במסד הנתונים';
+$messages['requesttimedout'] = 'תם הזמן המוקצב לבקשה';
 $messages['errorreadonly'] = 'לא ניתן לבצע הפעולה כי התיק ניתן לקריאה בלבד';
 $messages['errornoperm'] = 'לא ניתן לבצע הפעולה כי אין הרשאה לבצעה';
 $messages['invalidrequest'] = 'בקשה לא חוקית. המידע לא נשמר';
@@ -41,7 +40,7 @@ $messages['savingmessage'] = 'שמירת הודעה...';
 $messages['messagesaved'] = 'ההודעה נשמרה כטיוטה';
 $messages['successfullysaved'] = 'נשמרה בהצלחה';
 $messages['addedsuccessfully'] = 'איש הקשר נוסף לפנקס בהצלחה';
-$messages['contactexists'] = 'קיים כבר איש קשר עם כתובת דוא\"ל זו';
+$messages['contactexists'] = 'קיים כבר איש קשר עם כתובת דוא"ל זו';
 $messages['contactnameexists'] = 'קיים כבר איש קשר בעל אותו שם';
 $messages['blockedimages'] = 'תמונות משרת אחר נחסמו כדי לשמור על הפרטיות';
 $messages['encryptedmessage'] = 'זו הודעת מוצפנת ולא ניתן להציגה';
@@ -68,7 +67,7 @@ $messages['foldermoving'] = 'העברת תיקיה...';
 $messages['foldersubscribing'] = 'התיק נרשם...';
 $messages['folderunsubscribing'] = 'רישום התיק בוטל...';
 $messages['formincomplete'] = 'לא הוזנו כל השדות בטופס זה';
-$messages['noemailwarning'] = 'נא להוסיף כתובת דוא\"ל חוקית';
+$messages['noemailwarning'] = 'נא להוסיף כתובת דוא"ל חוקית';
 $messages['nonamewarning'] = 'נא להוסיף שם';
 $messages['nopagesizewarning'] = 'נא להוסיף גודל דף';
 $messages['nosenderwarning'] = 'נא להוסיף כתובת השולח';
@@ -77,7 +76,7 @@ $messages['nosubjectwarning'] = 'שורת הנושא ריקה. האם ברצונ
 $messages['nobodywarning'] = 'האם לשלוח הודעה ללא תוכן?';
 $messages['notsentwarning'] = 'ההודעה לא נשלחה. האם לבטל?';
 $messages['noldapserver'] = 'נא לבחור שרת כתובות לחיפוש';
-$messages['nosearchname'] = 'נא להוסיף איש קשר או כתובת דוא\"ל';
+$messages['nosearchname'] = 'נא להוסיף איש קשר או כתובת דוא"ל';
 $messages['notuploadedwarning'] = 'עדיין לא הועלו כל הקבצים. נא לחכות או לבטל הפעולה.';
 $messages['searchsuccessful'] = 'נמצאו $nr הודעות';
 $messages['contactsearchsuccessful'] = 'נמצאו $nr אנשי קשר';
@@ -108,6 +107,7 @@ $messages['addingmember'] = 'הוספת אנשי קשר לקבוצה...';
 $messages['removingmember'] = 'הסרת אנשי קשר מהקבוצה...';
 $messages['receiptsent'] = 'אישור הקבלה נשלח בהצלחה';
 $messages['errorsendingreceipt'] = 'לא ניתן לשלוח אישור קבלה';
+$messages['deleteidentityconfirm'] = 'האם אכן ברצונך למחוק זהות זאת?';
 $messages['nodeletelastidentity'] = 'זו הזהות האחרונה ולכן לא ניתן לבטלה';
 $messages['forbiddencharacter'] = 'שם התיקיה מכיל תוים אסורים';
 $messages['selectimportfile'] = 'נא לבחור קובץ לייבוא';
@@ -121,11 +121,11 @@ $messages['importconfirmskipped'] = '<b>  דילוג של $skipped נתונים
 $messages['opnotpermitted'] = 'פעולה אסורה!';
 $messages['nofromaddress'] = 'לזהות שנבחרה חסרה כתובת דואר';
 $messages['editorwarning'] = 'המעבר לעורך רגיל יגרום לאיבוד את העריכה הקיימת. האם להמשיך?';
-$messages['httpreceivedencrypterror'] = 'ארעה שגיאת תצורה חמורה. נא להודיע מייד למנהל/ת המערכת. <B> הודעתך לא תשלח <B> ';
+$messages['httpreceivedencrypterror'] = 'ארעה שגיאת תצורה חמורה. נא להודיע מייד למנהל/ת המערכת. <B> הודעתך לא תשלח <B>';
 $messages['smtpconnerror'] = 'SMTP ($code): אבד הקשר לשרת';
 $messages['smtpautherror'] = 'SMTP ($code): ההזדהות נכשלה';
-$messages['smtpfromerror'] = ' ($msg) SMTP ($code): "$from" לא נרשמה כתובת השולח';
-$messages['smtptoerror'] = ' ($msg) SMTP ($code): "$to" לא נרשמה כתובת המקבל';
+$messages['smtpfromerror'] = '($msg) SMTP ($code): "$from" לא נרשמה כתובת השולח';
+$messages['smtptoerror'] = '($msg) SMTP ($code): "$to" לא נרשמה כתובת המקבל';
 $messages['smtprecipientserror'] = 'SMTP : לא ניתן לפענח רשימת נמענים';
 $messages['smtperror'] = 'SMTP: $msg';
 $messages['emailformaterror'] = '$email  כתובת דוא"ל שגויה';
@@ -158,4 +158,3 @@ $messages['mispellingsfound'] = 'התגלו שגיאות כתיב בהודעה';
 $messages['parentnotwritable'] = 'לא ניתן ליצור/להעביר תיקיה לתוך תיקית האב שנבחרה. אין הרשאה לגישה.';
 $messages['messagetoobig'] = 'ההודעה גדולה מעבר ליכולת העיבוד של התוכנה';
 
-?>
index c433da487510cae178efc8a9a8132c3a27f929bb..fb068b44356b6982a5ca5e46a757e53cac7ada14 100644 (file)
@@ -11,7 +11,7 @@
  +-----------------------------------------------------------------------+
  | Author: Vibhav Pant <vibhavp@gmail.com>                               |
  +-----------------------------------------------------------------------+
- @version $Id: labels.inc 5741 2012-01-08 16:20:12Z thomasb $
+ @version $Id$
 */
 
 $labels = array();
index 5f6bc3b0005900d2f4a2a427a7fab35816008900..13714330e585b37849e20181f5711d0de8cde1b9 100644 (file)
  +-----------------------------------------------------------------------+
  | Author: Thomas <Unknown>                                              |
  +-----------------------------------------------------------------------+
- @version $Id: messages.inc 5741 2012-01-08 16:20:12Z thomasb $
+ @version $Id$
 */
 
 $messages = array();
 $messages['loginfailed'] = 'लॉगिन नहीं हो पाया';
 $messages['cookiesdisabled'] = 'आपका ब्राऊसर कुकी स्वीकार नहीं कर रहा है';
 $messages['sessionerror'] = 'सत्र समाप्त या अवैद्य';
-$messages['imaperror'] = 'आईमैप (IMAP) सर्वर से सम्पर्क नहीं हो पाया';
+$messages['storageerror'] = 'आईमैप (IMAP) सर्वर से सम्पर्क नहीं हो पाया';
 $messages['nomessagesfound'] = 'इस मेलबॉक्स में कोई मेल नहीं है';
 $messages['loggedout'] = 'सत्र समाप्त. टा टा!';
 $messages['mailboxempty'] = 'मेलबॉक्स खाली है';
index 0dbf05a011031d259b951bf956fff07d468abe75..74ef419551a248c6d4c4709914ecfc35819f7de8 100644 (file)
@@ -1,34 +1,29 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/hr/labels.inc                                                |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Edi Budimilic <edi@gemstudio.hr>                              |
-|       Tanja Dobričić <tanja.dobricic@everymail.info>                  |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 5067 2011-08-14 18:47:58Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/hr_HR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: gogo <trebelnik2@gmail.com>                                   |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
 $labels['welcome'] = 'Dobrodošli na $product';
-$labels['username'] = 'E-mail';
+$labels['username'] = 'Korisničko ime';
 $labels['password'] = 'Lozinka';
 $labels['server'] = 'Poslužitelj';
 $labels['login'] = 'Prijava';
 $labels['logout'] = 'Odjava';
-$labels['mail'] = 'E-Mail';
+$labels['mail'] = 'Pošta';
 $labels['settings'] = 'Postavke';
 $labels['addressbook'] = 'Imenik';
-$labels['inbox'] = 'Sandučić';
+$labels['inbox'] = 'Pristigla pošta';
 $labels['drafts'] = 'Predlošci';
 $labels['sent'] = 'Poslano';
 $labels['trash'] = 'Smeće';
@@ -38,7 +33,7 @@ $labels['from'] = 'Od';
 $labels['to'] = 'Za';
 $labels['cc'] = 'Cc';
 $labels['bcc'] = 'Bcc';
-$labels['replyto'] = 'Odgovor-na';
+$labels['replyto'] = 'Odgovori';
 $labels['followupto'] = 'Nastavi-na';
 $labels['date'] = 'Datum';
 $labels['size'] = 'Veličina';
@@ -46,9 +41,11 @@ $labels['priority'] = 'Prioritet';
 $labels['organization'] = 'Organizacija';
 $labels['readstatus'] = 'Pročitano';
 $labels['mailboxlist'] = 'Mape';
+$labels['folders'] = 'Mape';
 $labels['messagesfromto'] = 'Poruke od $from do $to od ukupno $count';
 $labels['threadsfromto'] = 'Teme od $from do $to od ukupno $count';
 $labels['messagenrof'] = 'Poruka broj $nr od $count';
+$labels['fromtoshort'] = '$from - $to od $count';
 $labels['copy'] = 'Kopiraj';
 $labels['move'] = 'Premjesti';
 $labels['moveto'] = 'Premjesti u...';
@@ -74,7 +71,8 @@ $labels['jan'] = 'Sij';
 $labels['feb'] = 'Velj';
 $labels['mar'] = 'Ožu';
 $labels['apr'] = 'Tra';
-$labels['may'] = 'Svi';
+$labels['may'] = 'Svibanj';
+$labels['longmay'] = 'Svibanj';
 $labels['jun'] = 'Lip';
 $labels['jul'] = 'Srp';
 $labels['aug'] = 'Kol';
@@ -86,7 +84,6 @@ $labels['longjan'] = 'Siječanj';
 $labels['longfeb'] = 'Veljača';
 $labels['longmar'] = 'Ožujak';
 $labels['longapr'] = 'Travanj';
-$labels['longmay'] = 'Svibanj';
 $labels['longjun'] = 'Lipanj';
 $labels['longjul'] = 'Srpanj';
 $labels['longaug'] = 'Kolovoz';
@@ -94,34 +91,43 @@ $labels['longsep'] = 'Rujan';
 $labels['longoct'] = 'Listopad';
 $labels['longnov'] = 'Studeni';
 $labels['longdec'] = 'Prosinac';
-$labels['today'] = 'danas';
+$labels['today'] = 'Danas';
+$labels['refresh'] = 'Osvježi';
 $labels['checkmail'] = 'Provjera novih poruka';
-$labels['writenewmessage'] = 'Nova poruka';
+$labels['compose'] = 'Nova poruka';
+$labels['writenewmessage'] = 'Stvori novu poruku';
+$labels['reply'] = 'Odgovori';
 $labels['replytomessage'] = 'Odgovori na poruku';
 $labels['replytoallmessage'] = 'Odgovori pošiljaocu i svim primateljima';
 $labels['replyall'] = 'Odgovori svima';
 $labels['replylist'] = 'Odgovori listi';
+$labels['forward'] = 'Proslijedi';
 $labels['forwardinline'] = 'Proslijedi citirano';
 $labels['forwardattachment'] = 'Proslijedi kao privitak';
 $labels['forwardmessage'] = 'Prosljedi poruku';
-$labels['deletemessage'] = 'Prebaci poruku u mapu smeće';
+$labels['deletemessage'] = 'Obriši poruku';
 $labels['movemessagetotrash'] = 'Preseli poruke u smeće';
-$labels['printmessage'] = 'Print poruke';
+$labels['printmessage'] = 'Ispiši ovu poruku';
 $labels['previousmessage'] = 'Prikaži prethodnu poruku';
 $labels['firstmessage'] = 'Prikaži prvu poruku';
 $labels['nextmessage'] = 'Prikaži slijedeću poruku';
 $labels['lastmessage'] = 'Prikaži zadnju poruku';
 $labels['backtolist'] = 'Povratak na listu poruka';
 $labels['viewsource'] = 'Prikaži poruku u izvornom obliku';
+$labels['mark'] = 'Označi';
 $labels['markmessages'] = 'Označi poruke';
 $labels['markread'] = 'Kao pročitano';
 $labels['markunread'] = 'Kao nepročitano';
 $labels['markflagged'] = 'Kao označenu';
 $labels['markunflagged'] = 'Kao neoznačenu';
-$labels['messageactions'] = 'Više akcija';
-$labels['select'] = 'Označi';
+$labels['moreactions'] = 'Više akcija';
+$labels['more'] = 'Više';
+$labels['back'] = 'Natrag';
+$labels['options'] = 'Postavke';
+$labels['select'] = 'Odaberi';
 $labels['all'] = 'Sve';
-$labels['none'] = 'Nijednu';
+$labels['none'] = 'Ništa';
+$labels['nonesort'] = 'Ništa';
 $labels['currpage'] = 'Trenutna stranica';
 $labels['unread'] = 'Nepročitane';
 $labels['flagged'] = 'Označene';
@@ -141,7 +147,6 @@ $labels['expand_only_unread'] = 'samo s nepročitanim porukama';
 $labels['fromto'] = 'Pošiljatelj/Primatelj';
 $labels['flag'] = 'Oznaka';
 $labels['attachment'] = 'Privitak';
-$labels['nonesort'] = 'Ništa';
 $labels['sentdate'] = 'Datum slanja';
 $labels['arrival'] = 'Datum primanja';
 $labels['asc'] = 'uzlazno';
@@ -152,7 +157,7 @@ $labels['listorder'] = 'Sortirajući redoslijed';
 $labels['listmode'] = 'Model pregleda listi';
 $labels['folderactions'] = 'Akcije mapa';
 $labels['compact'] = 'Kompresiranje';
-$labels['empty'] = 'Isprazni ';
+$labels['empty'] = 'Isprazni';
 $labels['quota'] = 'Kvota';
 $labels['unknown'] = 'nepoznato';
 $labels['unlimited'] = 'beskonačna';
@@ -162,7 +167,6 @@ $labels['searchmod'] = 'Postavke pretrage';
 $labels['msgtext'] = 'Cijela poruka';
 $labels['openinextwin'] = 'Otvori u novom prozoru';
 $labels['emlsave'] = 'Download (.eml)';
-$labels['compose'] = 'Nova poruka';
 $labels['editasnew'] = 'Uredi kao novo';
 $labels['savemessage'] = 'Spremi u \'Predlošci\'';
 $labels['sendmessage'] = 'Pošalji poruku';
@@ -171,12 +175,17 @@ $labels['charset'] = 'Charset';
 $labels['editortype'] = 'Tip editora';
 $labels['returnreceipt'] = 'Potvrda o primitku poruke';
 $labels['dsn'] = 'Potvrda o poslanoj poruci';
+$labels['mailreplyintro'] = 'Dana $date, $sender je napisao(la):';
+$labels['originalmessage'] = 'Izvorna Poruka';
 $labels['editidents'] = 'Promijeni identitete';
+$labels['spellcheck'] = 'Piši';
 $labels['checkspelling'] = 'Provjera pravopisa';
 $labels['resumeediting'] = 'Povratak u pisanje';
 $labels['revertto'] = 'Vrati na';
+$labels['attach'] = 'Priloži';
 $labels['attachments'] = 'Privitci (Attachments)';
 $labels['upload'] = 'Dodaj';
+$labels['uploadprogress'] = '$percent ($current od $total)';
 $labels['close'] = 'Zatvori';
 $labels['messageoptions'] = 'Opcije poruka...';
 $labels['low'] = 'Nizak';
@@ -187,6 +196,7 @@ $labels['highest'] = 'Najviši';
 $labels['nosubject'] = '(bez naslova)';
 $labels['showimages'] = 'Prikaži slike';
 $labels['alwaysshow'] = 'Uvijek prikaži slike od $sender';
+$labels['isdraft'] = 'Ova poruka je skica (draft)';
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = 'Samo tekst';
 $labels['savesentmessagein'] = 'Spremi poslane poruke u';
@@ -227,11 +237,17 @@ $labels['notes'] = 'Bilješke';
 $labels['male'] = 'muško';
 $labels['female'] = 'žensko';
 $labels['manager'] = 'Menadžer';
-$labels['assistant'] = 'Pomoćnik';
+$labels['assistant'] = 'Asistent';
+$labels['typeassistant'] = 'Asistent';
 $labels['spouse'] = 'Suprug/a';
+$labels['allfields'] = 'Sva polja';
+$labels['search'] = 'Pretraga';
+$labels['advsearch'] = 'Napredna Pretraga';
+$labels['advanced'] = 'Napredno';
+$labels['other'] = 'Ostalo';
+$labels['typeother'] = 'Ostalo';
 $labels['typehome'] = 'Kućni broj';
 $labels['typework'] = 'Poslovni broj';
-$labels['typeother'] = 'Ostalo';
 $labels['typemobile'] = 'Mobitel';
 $labels['typemain'] = 'Glavni broj';
 $labels['typehomefax'] = 'Fax kuća';
@@ -239,7 +255,9 @@ $labels['typeworkfax'] = 'Fax posao';
 $labels['typecar'] = 'Auto';
 $labels['typepager'] = 'Pejdžer';
 $labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Asistent';
+$labels['typehomepage'] = 'Početna stranica';
+$labels['typeblog'] = 'Blog';
+$labels['typeprofile'] = 'Profil';
 $labels['addfield'] = 'Dodaj polje...';
 $labels['addcontact'] = 'Dodaj novi kontakt';
 $labels['editcontact'] = 'Izmjeni kontakt';
@@ -261,7 +279,8 @@ $labels['print'] = 'Print';
 $labels['export'] = 'Export';
 $labels['exportvcards'] = 'Izvezi kontakte u vCard formatu';
 $labels['newcontactgroup'] = 'Napravi novu kontaktnu grupu';
-$labels['groupactions'] = 'Akcije kontaktne grupe';
+$labels['grouprename'] = 'Promijeni ime grupe';
+$labels['groupdelete'] = 'Izbriši grupu';
 $labels['previouspage'] = 'Prethodna strana';
 $labels['firstpage'] = 'Prva strana';
 $labels['nextpage'] = 'Slijedeća strana';
@@ -269,13 +288,17 @@ $labels['lastpage'] = 'Zadnja strana';
 $labels['group'] = 'Grupa';
 $labels['groups'] = 'Grupe';
 $labels['personaladrbook'] = 'Privatna adresa';
+$labels['searchsave'] = 'Pohrani pretragu';
+$labels['searchdelete'] = 'Obriši pretragu';
 $labels['import'] = 'Uvoz';
 $labels['importcontacts'] = 'Uvoz kontakta';
 $labels['importfromfile'] = 'Uvezi iz datoteke:';
+$labels['importtarget'] = 'Dodaj nove kontakte u imenik:';
 $labels['importreplace'] = 'Prepiši cijeli adresar';
 $labels['importtext'] = 'Možete prebaciti kontakte iz postojećeg adresara.<br/>Trenutno podržavamo uvozenje adresa iz <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> formata.';
 $labels['done'] = 'Završeno';
 $labels['settingsfor'] = 'Postavke za';
+$labels['about'] = 'O programu';
 $labels['preferences'] = 'Postavke';
 $labels['userpreferences'] = 'Korisničke postavke';
 $labels['editpreferences'] = 'Izmjena postavki';
@@ -287,6 +310,8 @@ $labels['edititem'] = 'Uredi';
 $labels['preferhtml'] = 'HTML format u prednosti';
 $labels['defaultcharset'] = 'Zadani skup znakova';
 $labels['htmlmessage'] = 'HTML format poruke';
+$labels['dateformat'] = 'Format datuma';
+$labels['timeformat'] = 'Format vremena';
 $labels['prettydate'] = 'Formatiran datum';
 $labels['setdefault'] = 'Postavi predodređeno';
 $labels['autodetect'] = 'Auto';
@@ -335,11 +360,11 @@ $labels['advancedoptions'] = 'Napredne postavke';
 $labels['focusonnewmessage'] = 'Fokusiraj browser pri novoj poruci';
 $labels['checkallfolders'] = 'Provjeri nove poruke u svim mapama';
 $labels['displaynext'] = 'Nakon brisanja/micanja poruke, prikaži slijedeću';
+$labels['defaultfont'] = 'Predodređeni font HTML poruke';
 $labels['mainoptions'] = 'Glavne postavke';
 $labels['section'] = 'Sekcija';
 $labels['maintenance'] = 'Održavanje';
 $labels['newmessage'] = 'Nova poruka';
-$labels['listoptions'] = 'Postavke liste';
 $labels['signatureoptions'] = 'Postavke potpisa';
 $labels['whenreplying'] = 'Prilikom odgovora';
 $labels['replytopposting'] = 'započni novu poruku iznad originala';
@@ -357,8 +382,15 @@ $labels['afternseconds'] = 'nakon $n sekundi';
 $labels['reqmdn'] = 'Uvijek zatraži potvrdu o primitku poruke';
 $labels['reqdsn'] = 'Uvijek zatraži potvrdu o slanju poruke';
 $labels['replysamefolder'] = 'Spremi odgovore u mapu gdje se nalazi poruka';
+$labels['defaultaddressbook'] = 'Dodaj nove kontakte u odabrani imenik';
+$labels['autocompletesingle'] = 'Preskoči alternativne email adrese u autocomplete prijedlozima';
+$labels['spellcheckbeforesend'] = 'Provjeri pravopis prije slanja poruke';
+$labels['spellcheckoptions'] = 'Postavke provjere pravopisa';
+$labels['spellcheckignoresyms'] = 'Ignoriraj riječi koje sadrže simbole';
+$labels['spellcheckignorenums'] = 'Ignoriraj riječi koje sadrže brojeve';
+$labels['spellcheckignorecaps'] = 'Ignoriraj riječi sa sa svim velikim slovima';
+$labels['addtodict'] = 'Dodaj u rječnik';
 $labels['folder'] = 'Mapa';
-$labels['folders'] = 'Mape';
 $labels['foldername'] = 'Ime mape';
 $labels['subscribed'] = 'Pretplata';
 $labels['messagecount'] = 'Poruke';
@@ -380,6 +412,12 @@ $labels['sharedfolder'] = 'Javna mapa';
 $labels['sortby'] = 'Sortiraj po';
 $labels['sortasc'] = 'Sortiraj rastućim nizom';
 $labels['sortdesc'] = 'Sortiraj opadajućim nizom';
+$labels['undo'] = 'Poništi';
+$labels['plugin'] = 'Plugin';
+$labels['version'] = 'Inačica';
+$labels['source'] = 'Izvor';
+$labels['license'] = 'Licenca';
+$labels['support'] = 'Podrška';
 $labels['B'] = 'B';
 $labels['KB'] = 'KB';
 $labels['MB'] = 'MB';
@@ -403,4 +441,3 @@ $labels['japanese'] = 'Japanski';
 $labels['korean'] = 'Korejski';
 $labels['chinese'] = 'Kineski';
 
-?>
index 725a7eb895a718fc3854e56ea02f9c28a91929e6..354365db8cc4411bcd588fe9b1c7dc8723bab344 100644 (file)
@@ -1,28 +1,24 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/hr/messages.inc                                              |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Edi Budimilic <edi@gemstudio.hr>                              |
-|       Tanja Dobričić <tanja.dobricic@everymail.info>                  |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 5139 2011-08-28 09:47:15Z alec $
-
+ +-----------------------------------------------------------------------+
+ | localization/hr_HR/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $messages = array();
 $messages['loginfailed'] = 'Prijava neuspješna';
 $messages['cookiesdisabled'] = 'Vaš Web preglednik ne podržava kolačiće (cookies)';
 $messages['sessionerror'] = 'Morate se ponovno ulogirati';
-$messages['imaperror'] = 'Neuspješna veza na IMAP server';
+$messages['storageerror'] = 'Neuspješna veza na IMAP server';
 $messages['servererror'] = 'Greška poslužitelja';
 $messages['servererrormsg'] = 'Greška na serveru: $msg';
 $messages['dberror'] = 'Greška baze podataka!';
@@ -44,10 +40,12 @@ $messages['messagesaved'] = 'Poruka uspješno spremljena u \'Predlošci\'';
 $messages['successfullysaved'] = 'Spremanje uspješno obavljeno';
 $messages['addedsuccessfully'] = 'Kontakt uspješno dodan u imenik';
 $messages['contactexists'] = 'Kontakt sa ovom e-mail adresom već postoji u imeniku';
+$messages['contactnameexists'] = 'Kontak s istim imenom već postoji.';
 $messages['blockedimages'] = 'Zbog zaštite privatnosti, slike sa udaljenih servera su blokirane.';
 $messages['encryptedmessage'] = 'Ova poruka je zaštićena pa se ne može prikazati';
 $messages['nocontactsfound'] = 'Imenik je prazan';
 $messages['contactnotfound'] = 'Traženi kontakt nije pronađen';
+$messages['contactsearchonly'] = 'Upišite nekoliko pojmova za pretragu imenika';
 $messages['sendingfailed'] = 'Greška pri slanju poruke';
 $messages['senttooquickly'] = 'Molimo sačekajte $sec sek. prije slanja ove poruke';
 $messages['errorsavingsent'] = 'Greška pri spremanju poslane poruke';
@@ -57,9 +55,12 @@ $messages['errorcopying'] = 'Greška pri kopiranju poruke';
 $messages['errordeleting'] = 'Greška pri brisanju poruke';
 $messages['errormarking'] = 'Nije moguće označiti poruku';
 $messages['deletecontactconfirm'] = 'Želite li obrisati izabrane kontakte?';
+$messages['deletegroupconfirm'] = 'Jeste li sigurni da želite obrisati odabranu grupu?';
 $messages['deletemessagesconfirm'] = 'Sigurno želite obrisati odabrane poruke?';
 $messages['deletefolderconfirm'] = 'Želite li obrisati ovu mapu?';
 $messages['purgefolderconfirm'] = 'Želite li obrisati sve poruke u mapi?';
+$messages['contactdeleting'] = 'Brišem kontakt(e)...';
+$messages['groupdeleting'] = 'Brišem grupu...';
 $messages['folderdeleting'] = 'Brišem mapu...';
 $messages['foldermoving'] = 'Premještam mapu...';
 $messages['foldersubscribing'] = 'Pretplata na mapu...';
@@ -74,10 +75,10 @@ $messages['nosubjectwarning'] = 'Polje \'Naslov\' je prazno. Želite li unijeti
 $messages['nobodywarning'] = 'Želite li poslati poruku bez teksta?';
 $messages['notsentwarning'] = 'Poruka nije poslana. Želite li odbaciti ovu poruku?';
 $messages['noldapserver'] = 'Unesite LDAP poslužitelj za pretragu';
-$messages['nocontactsreturned'] = 'Nije pronađen niti jedan kontakt';
 $messages['nosearchname'] = 'Unesite ime ili e-mail adresu';
 $messages['notuploadedwarning'] = 'Svi prilozi još nisu presnimljeni na poslužitelj. Molim pričekajte ili zaustavite prsnimavanje.';
 $messages['searchsuccessful'] = 'Broj pronađenih poruka: $nr';
+$messages['contactsearchsuccessful'] = '$nr kontakata pronađeno.';
 $messages['searchnomatch'] = 'Traženi termin nije pronađen ni u jednoj poruci';
 $messages['searching'] = 'Pretraga u tijeku...';
 $messages['checking'] = 'Provjera u tijeku...';
@@ -98,10 +99,14 @@ $messages['sourceisreadonly'] = 'Ovaj resurs adresa je samo za čitanje';
 $messages['errorsavingcontact'] = 'Nije uspjelo spremanje adrese kontakta';
 $messages['movingmessage'] = 'Premještanje poruke...';
 $messages['copyingmessage'] = 'Kopiranje poruke...';
+$messages['copyingcontact'] = 'Kopiram kontakt(e)...';
 $messages['deletingmessage'] = 'Brisanje poruke...';
 $messages['markingmessage'] = 'Označavanje poruke...';
+$messages['addingmember'] = 'Dodajem kontakt(e) u grupu...';
+$messages['removingmember'] = 'Izbacujem kontakt(e) iz groupe...';
 $messages['receiptsent'] = 'Uspješno poslana potvrda (pročitano)';
 $messages['errorsendingreceipt'] = 'Ne može poslati potvrdu';
+$messages['deleteidentityconfirm'] = 'Jeste li sigurni da želite obrisati profil?';
 $messages['nodeletelastidentity'] = 'Ne možete izbrisati zadnji identitet.';
 $messages['forbiddencharacter'] = 'Naziv mape sadrži zabranjene znakove';
 $messages['selectimportfile'] = 'Odaberite datoteku za prijenos';
@@ -121,7 +126,6 @@ $messages['smtpautherror'] = 'SMTP Greška ($code): Autentikacija nije uspjela';
 $messages['smtpfromerror'] = 'SMTP Greška ($code): Nije uspjelo postavljanje pošiljatelja "$from" ($msg)';
 $messages['smtptoerror'] = 'SMTP Greška ($code): Nije uspjelo dodavanje primatelja "$to" ($msg)';
 $messages['smtprecipientserror'] = 'SMTP Greška: Nije moguće pročitati listu primatelja';
-$messages['smtpdsnerror'] = 'SMTP Greška: Nema podrške za obaviještenje o statusu isporuke';
 $messages['smtperror'] = 'SMTP Greška: $msg';
 $messages['emailformaterror'] = 'Nepravilna e-mail adresa: $email';
 $messages['toomanyrecipients'] = 'Previše primatelja. Smanjite broj primatelja na $max.';
@@ -129,18 +133,27 @@ $messages['maxgroupmembersreached'] = 'Broj članova grupe prelazi preko maximum
 $messages['internalerror'] = 'Dogodila se interna greška. Molimo Vas pokušajte ponovo.';
 $messages['contactdelerror'] = 'Kontakti ne mogu biti obrisani.';
 $messages['contactdeleted'] = 'Kontakti uspješno obrisani.';
+$messages['contactrestoreerror'] = 'Ne mogu vratiti obrisan(e) kontakt(e).';
+$messages['contactrestored'] = 'Kontakt(i) uspješno vraćeni .';
 $messages['groupdeleted'] = 'Grupa uspješno obrisana.';
 $messages['grouprenamed'] = 'Grupa uspješno preimenovana.';
 $messages['groupcreated'] = 'Grupa uspješno kreirana.';
+$messages['savedsearchdeleted'] = 'Pohranjena pretraga uspješno obrisana.';
+$messages['savedsearchdeleteerror'] = 'Ne mogu obrisati pohranjenu pretragu';
+$messages['savedsearchcreated'] = 'Pohranjena pretraga uspješno stvorena.';
+$messages['savedsearchcreateerror'] = 'Ne mogu stvoriti pohranjenu pretragu.';
 $messages['messagedeleted'] = 'Poruke uspješno obrisane.';
 $messages['messagemoved'] = 'Poruke uspješno pomjerene.';
 $messages['messagecopied'] = 'Poruke uspješno kopirane.';
 $messages['messagemarked'] = 'Poruke uspješno označene.';
 $messages['autocompletechars'] = 'Unesite barem $min znakova za auto-dopunjavanje.';
+$messages['autocompletemore'] = 'Više podudarajućih zapisa pronađeno. Molim upišite još znakova.';
 $messages['namecannotbeempty'] = 'Polje za ime ne može biti prazno.';
 $messages['nametoolong'] = 'Ime predugo.';
 $messages['folderupdated'] = 'Ažuriranje mape uspješno.';
 $messages['foldercreated'] = 'Kreiranje mape uspješno.';
 $messages['invalidimageformat'] = 'Format slike nije ispravan.';
+$messages['mispellingsfound'] = 'Greške pravopisa su pronađene u poruci.';
+$messages['parentnotwritable'] = 'Nije moguće stvoriti/pomaknuti mapu u odabranu mapu. Nemate prava pristupa.';
+$messages['messagetoobig'] = 'Dio poruke je prevelik za procesiranje.';
 
-?>
index 3982a64f9d076cb46c72bcfd8ac36d3cce48e241..e3d79d5dd0055eab1151c98ef00fe3d6c12c25a2 100644 (file)
@@ -1,23 +1,16 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/hu_HU/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Zark Bonfire <ikkhares at gmail dot com>                      |
-|         Peter Szabo <pete at teamlupus dot hu>                        |
-|         Barnabas Bona <bsi at hosember dot hu>                        |
-|         Gabor Veliczky <hosting at jugiter dot net>                   |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 5569 2011-12-07 14:47:32Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/hu_HU/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: bela                                                          |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
@@ -25,7 +18,7 @@ $labels['welcome'] = 'Üdvözli a $product';
 $labels['username'] = 'Felhasználónév';
 $labels['password'] = 'Jelszó';
 $labels['server'] = 'Szerver';
-$labels['login'] = 'Belépés';
+$labels['login'] = 'Bejelentkezés';
 $labels['logout'] = 'Kijelentkezés';
 $labels['mail'] = 'E-mail';
 $labels['settings'] = 'Beállítások';
@@ -47,10 +40,13 @@ $labels['size'] = 'Méret';
 $labels['priority'] = 'Sürgősség';
 $labels['organization'] = 'Szervezet';
 $labels['readstatus'] = 'Olvasott';
+$labels['listoptions'] = 'Üzenetlista beállítások...';
 $labels['mailboxlist'] = 'Mappák';
+$labels['folders'] = 'Mappák';
 $labels['messagesfromto'] = 'Üzenetek: $from - $to / $count';
 $labels['threadsfromto'] = 'Témák ($from - $to, összesen $count)';
 $labels['messagenrof'] = '$nr / $count üzenet';
+$labels['fromtoshort'] = '$from – $to / $count';
 $labels['copy'] = 'Másolás';
 $labels['move'] = 'Áthelyezés';
 $labels['moveto'] = 'Áthelyezés...';
@@ -76,7 +72,8 @@ $labels['jan'] = 'Jan';
 $labels['feb'] = 'Febr';
 $labels['mar'] = 'Márc';
 $labels['apr'] = 'Ápr';
-$labels['may'] = 'Máj';
+$labels['may'] = 'Május';
+$labels['longmay'] = 'Május';
 $labels['jun'] = 'Jún';
 $labels['jul'] = 'Júl';
 $labels['aug'] = 'Aug';
@@ -88,7 +85,6 @@ $labels['longjan'] = 'Január';
 $labels['longfeb'] = 'Február';
 $labels['longmar'] = 'Március';
 $labels['longapr'] = 'Április';
-$labels['longmay'] = 'Május';
 $labels['longjun'] = 'Június';
 $labels['longjul'] = 'Július';
 $labels['longaug'] = 'Augusztus';
@@ -97,12 +93,16 @@ $labels['longoct'] = 'Október';
 $labels['longnov'] = 'November';
 $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['writenewmessage'] = 'Új üzenet';
+$labels['reply'] = 'Válasz';
 $labels['replytomessage'] = 'Válasz';
 $labels['replytoallmessage'] = 'Válasz a listának vagy a feladónak és az összes címzettnek';
 $labels['replyall'] = 'Válasz mindenkinek';
 $labels['replylist'] = 'Válasz a listának';
+$labels['forward'] = 'Továbbítás';
 $labels['forwardinline'] = 'Továbbítás beágyazva';
 $labels['forwardattachment'] = 'Továbbítás csatolmányként';
 $labels['forwardmessage'] = 'Továbbítás';
@@ -115,15 +115,20 @@ $labels['nextmessage'] = 'Következő levél mutatása';
 $labels['lastmessage'] = 'Utolsó levél mutatása';
 $labels['backtolist'] = 'Vissza az üzenetekhez';
 $labels['viewsource'] = 'Forrás megtekintése';
+$labels['mark'] = 'Jelölés';
 $labels['markmessages'] = 'Üzenetek megjelölése';
 $labels['markread'] = 'Olvasottként';
 $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['back'] = 'Vissza';
+$labels['options'] = 'Beállítások';
 $labels['select'] = 'Kijelölés';
 $labels['all'] = 'Összes';
 $labels['none'] = 'Nincs';
+$labels['nonesort'] = 'Nincs';
 $labels['currpage'] = 'Aktuális oldal';
 $labels['unread'] = 'Olvasatlan';
 $labels['flagged'] = 'Megjelölt';
@@ -143,7 +148,6 @@ $labels['expand_only_unread'] = 'csak ahol van olvasatlan üzenet';
 $labels['fromto'] = 'Feladó/Címzett';
 $labels['flag'] = 'Megjelölés';
 $labels['attachment'] = 'Csatolmány';
-$labels['nonesort'] = 'Nincs';
 $labels['sentdate'] = 'Feladva';
 $labels['arrival'] = 'Kézbesítve';
 $labels['asc'] = 'Emelkedő';
@@ -164,7 +168,6 @@ $labels['searchmod'] = 'Keresési opciók';
 $labels['msgtext'] = 'Teljes üzenet';
 $labels['openinextwin'] = 'Megnyitás új ablakban';
 $labels['emlsave'] = 'Letöltés (.eml)';
-$labels['compose'] = 'Üzenet létrehozása';
 $labels['editasnew'] = 'Szerkesztés újként';
 $labels['savemessage'] = 'Vázlat mentése';
 $labels['sendmessage'] = 'Üzenet küldése';
@@ -176,9 +179,11 @@ $labels['dsn'] = 'Kézbesítési visszaigazolás';
 $labels['mailreplyintro'] = '$date időpontban $sender ezt írta:';
 $labels['originalmessage'] = 'Eredeti üzenet';
 $labels['editidents'] = 'Azonosítók szerkesztése';
+$labels['spellcheck'] = 'Helyesírás ellenőrzés';
 $labels['checkspelling'] = 'Helyesírás-ellenőrzés';
 $labels['resumeediting'] = 'Helyesírás-ellenőrzés vége';
 $labels['revertto'] = 'Visszaállítás erre';
+$labels['attach'] = 'Csatolás';
 $labels['attachments'] = 'Csatolmányok';
 $labels['upload'] = 'Feltöltés';
 $labels['uploadprogress'] = '$percent ($current / $total)';
@@ -233,15 +238,17 @@ $labels['notes'] = 'Megjegyzések';
 $labels['male'] = 'férfi';
 $labels['female'] = 'nő';
 $labels['manager'] = 'Menedzser';
-$labels['assistant'] = 'Titkár';
+$labels['assistant'] = 'Asszisztens';
+$labels['typeassistant'] = 'Asszisztens';
 $labels['spouse'] = 'Házastárs';
 $labels['allfields'] = 'Összes mező';
 $labels['search'] = 'Keresés';
 $labels['advsearch'] = 'Részletes keresés';
+$labels['advanced'] = 'Haladó';
 $labels['other'] = 'Egyéb';
+$labels['typeother'] = 'Egyéb';
 $labels['typehome'] = 'Otthon';
 $labels['typework'] = 'Munkahely';
-$labels['typeother'] = 'Egyéb';
 $labels['typemobile'] = 'Mobil';
 $labels['typemain'] = 'Vezetékes';
 $labels['typehomefax'] = 'Otthoni fax';
@@ -249,7 +256,6 @@ $labels['typeworkfax'] = 'Munkahelyi fax';
 $labels['typecar'] = 'Gépkocsi';
 $labels['typepager'] = 'Személyhívó';
 $labels['typevideo'] = 'Videó';
-$labels['typeassistant'] = 'Asszisztens';
 $labels['typehomepage'] = 'Weboldal';
 $labels['typeblog'] = 'Blog';
 $labels['typeprofile'] = 'Profil';
@@ -257,7 +263,7 @@ $labels['addfield'] = 'Új mező hozzáadása...';
 $labels['addcontact'] = 'Új kapcsolat hozzáadása';
 $labels['editcontact'] = 'Kapcsolat szerkesztése';
 $labels['contacts'] = 'Kapcsolatok';
-$labels['contactproperties'] = 'Kapcsolatok tulajdonságai';
+$labels['contactproperties'] = 'Kapcsolat tulajdonságai';
 $labels['personalinfo'] = 'Személyes adatok';
 $labels['edit'] = 'Szerkesztés';
 $labels['cancel'] = 'Mégsem';
@@ -266,6 +272,7 @@ $labels['delete'] = 'Törlés';
 $labels['rename'] = 'Átnevezés';
 $labels['addphoto'] = 'Kép hozzáadása';
 $labels['replacephoto'] = 'Kép cseréje';
+$labels['uploadphoto'] = 'Fotó feltöltése';
 $labels['newcontact'] = 'Új kapcsolat létrehozása';
 $labels['deletecontact'] = 'Kijelölt kapcsolatok törlése';
 $labels['composeto'] = 'E-mail küldése erre a címre';
@@ -276,6 +283,7 @@ $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['previouspage'] = 'Előző oldal';
 $labels['firstpage'] = 'Első oldal';
 $labels['nextpage'] = 'Következő oldal';
@@ -293,6 +301,7 @@ $labels['importreplace'] = 'A teljes címjegyzék cseréje';
 $labels['importtext'] = 'Feltölthet kapcsolatokat egy már létező címjegyzékből. <br/> Jelenleg a <a href="http://en.wikipedia.org/wiki/VCard">vCard</a>  formátumú adatok importálása támogatott.';
 $labels['done'] = 'Kész';
 $labels['settingsfor'] = 'Beállítás';
+$labels['about'] = 'Névjegy';
 $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';
@@ -334,7 +343,8 @@ $labels['readwhendeleted'] = 'Üzenet olvasottként jelölése törléskor';
 $labels['flagfordeletion'] = 'Üzenet törlendőnek jelölése törlés helyett';
 $labels['skipdeleted'] = 'Törölt üzenetek ne legyenek megjelenítve';
 $labels['deletealways'] = 'Üzenet törlése, ha nem sikerül áthelyezni a törölt elemek mappába';
-$labels['showremoteimages'] = 'Távoli beágyazott képek mutatása';
+$labels['deletejunk'] = 'Közvetlen törlése az üzeneteknek a levélszemét mappában';
+$labels['showremoteimages'] = 'Távoli beágyazott képek megjelenítése';
 $labels['fromknownsenders'] = 'csak ismert feladóktól';
 $labels['always'] = 'mindig';
 $labels['showinlineimages'] = 'Csatolt képek megjelenítése az üzenet alatt';
@@ -354,11 +364,12 @@ $labels['advancedoptions'] = 'Haladó beállítások';
 $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['defaultfont'] = 'HTML üzenet alap karakterkészlete';
 $labels['mainoptions'] = 'Általános beállítások';
+$labels['browseroptions'] = 'Böngésző beállításai';
 $labels['section'] = 'Beállítások';
 $labels['maintenance'] = 'Karbantartás';
 $labels['newmessage'] = 'Új üzenet';
-$labels['listoptions'] = 'Listabeállítások';
 $labels['signatureoptions'] = 'Aláírás beállításai';
 $labels['whenreplying'] = 'Válasznál';
 $labels['replytopposting'] = 'üzenet írása az eredeti felett';
@@ -378,16 +389,17 @@ $labels['reqdsn'] = 'Kézbesítési visszaigazolás megkövetelése';
 $labels['replysamefolder'] = 'Válaszok azonos mappába helyezése';
 $labels['defaultaddressbook'] = 'Új kapcsolatok hozzáadása a kiválasztott címjegyzékhez';
 $labels['autocompletesingle'] = 'TRANSLATE!';
+$labels['listnamedisplay'] = 'Névjegyek listázása';
 $labels['spellcheckbeforesend'] = 'Helyesírás-ellenőrzés az üzenet elküldése előtt';
 $labels['spellcheckoptions'] = 'Helyesírás-ellenőrzés opciók';
 $labels['spellcheckignoresyms'] = 'Speciális karaktereket tartalmazó szavak kihagyása';
 $labels['spellcheckignorenums'] = 'Számot tartalmazó szavak kihagyása';
 $labels['spellcheckignorecaps'] = 'Csak nagybetűt tartalmazó szavak kihagyása';
 $labels['addtodict'] = 'Hozzáadás a szótárhoz';
+$labels['mailtoprotohandler'] = 'Beállítás a mailto: linkek kezelőjeként';
 $labels['folder'] = 'Mappa';
-$labels['folders'] = 'Mappák';
 $labels['foldername'] = 'Mappa neve';
-$labels['subscribed'] = 'Feliratkozott';
+$labels['subscribed'] = 'Feliratkozva';
 $labels['messagecount'] = 'Üzenet';
 $labels['create'] = 'Létrehozás';
 $labels['createfolder'] = 'Új mappa létrehozása';
@@ -408,6 +420,11 @@ $labels['sortby'] = 'Rendezés';
 $labels['sortasc'] = 'növekvő';
 $labels['sortdesc'] = 'csökkenő';
 $labels['undo'] = 'Visszavonás';
+$labels['plugin'] = 'Bővítmény';
+$labels['version'] = 'Verzió';
+$labels['source'] = 'Forrás';
+$labels['license'] = 'Licensz';
+$labels['support'] = 'Támogatás';
 $labels['B'] = 'B';
 $labels['KB'] = 'KB';
 $labels['MB'] = 'MB';
@@ -431,4 +448,3 @@ $labels['japanese'] = 'Japán';
 $labels['korean'] = 'Koreai';
 $labels['chinese'] = 'Kínai';
 
-?>
index 321486e4a88f894599258a65d4fb01cbb7586dfb..4f101b5e0bbc7b351b7fdc411be07d761c356e86 100644 (file)
@@ -1,33 +1,28 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/hu_HU/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Zark Bonfire <ikkhares at gmail dot com>                      |
-|         Peter Szabo <pete at teamlupus dot hu>                        |
-|         Barnabas Bona <bsi at hosember dot hu>                        |
-|         Gabor Veliczky <hosting at jugiter dot net>                   |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 5569 2011-12-07 14:47:32Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/hu_HU/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Németh András <narzym@hotmail.com>                          |
+ +-----------------------------------------------------------------------+
 */
 
 $messages = array();
-$messages['loginfailed'] = 'Sikertelen belépés';
+$messages['errortitle'] = 'Hiba történt';
+$messages['loginfailed'] = 'Sikertelen bejelentkezés.';
 $messages['cookiesdisabled'] = 'A böngésző nem támogatja a sütik használatát';
 $messages['sessionerror'] = 'Érvénytelen vagy lejárt munkamenet';
-$messages['imaperror'] = 'Nem sikerült csatlakozni az IMAP szerverhez';
+$messages['storageerror'] = 'Nem sikerült csatlakozni az IMAP szerverhez';
 $messages['servererror'] = 'Szerverhiba!';
 $messages['servererrormsg'] = 'Szerverhiba: $msg';
 $messages['dberror'] = 'Adatbázishiba!';
+$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['invalidrequest'] = 'Érvénytelen kérés! Az adatok nem lettek elmentve.';
@@ -112,6 +107,7 @@ $messages['addingmember'] = 'Kapcsolat(ok) hozzáadása a csoporthoz...';
 $messages['removingmember'] = 'Kapcsolat(ok) törlése a csoportból...';
 $messages['receiptsent'] = 'Az olvasási visszaigazolás el lett küldve';
 $messages['errorsendingreceipt'] = 'Az olvasási visszaigazolást nem sikerült elküldeni';
+$messages['deleteidentityconfirm'] = 'Biztosan törli ezt az azonosítót?';
 $messages['nodeletelastidentity'] = 'Az azonosító nem törölhető, lennie kell legalább egy azonosítónak!';
 $messages['forbiddencharacter'] = 'A mappa neve tiltott karaktert tartalmaz';
 $messages['selectimportfile'] = 'Kérjük válassza ki a feltölteni kívánt fájlt';
@@ -123,7 +119,7 @@ $messages['importerror'] = 'Az importálás sikertelen! A feltöltött állomán
 $messages['importconfirm'] = '<b>Sikeresen importálásra került $inserted kapcsolat, kihagyva $skipped már létező bejegyzés</b>:<p><em>$names</em></p>';
 $messages['importconfirmskipped'] = '<b>Kihagyva $skipped már létező bejegyzés</b>';
 $messages['opnotpermitted'] = 'A művelet nem megengedett!';
-$messages['nofromaddress'] = 'A kiválasztott feladónál hiányzik az e-mail cím!';
+$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['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';
@@ -160,5 +156,5 @@ $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['messagetoobig'] = 'Az üzenetrész túl nagy a feldolgozáshoz.';
 
-?>
index 60c5d4da2cfc3b8bf7403007f28f9fde83267de8..8d3f2dcdc5980dfab59bb60992534ebd6aa4e6da 100644 (file)
@@ -1,22 +1,22 @@
 <?php
 
 /*
-+-----------------------------------------------------------------------+
-| language/hy_AM/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Vahan Yerkanian <vahan@arminco.com>                           |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 4410 2011-01-12 18:25:02Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/hy_AM/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Vahan Yerkanian <vahan@yerkanian.com>                         |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
+$labels['preferences'] = 'Նախընտրանքներ';
+$labels['userpreferences'] = 'Օգտվողի նախընտրանքներ';
+$labels['editpreferences'] = 'Խմբագրել օգտվողի նախընտրանքները';
 $labels['welcome'] = 'Բարի գալուստ $product';
 $labels['username'] = 'Օգտվող';
 $labels['password'] = 'Գաղտնաբառ';
@@ -37,21 +37,25 @@ $labels['to'] = 'Ստացող';
 $labels['cc'] = 'Cc';
 $labels['bcc'] = 'Bcc';
 $labels['replyto'] = 'Reply-To';
+$labels['followupto'] = 'Ի հավելում';
 $labels['date'] = 'Ամսաթիվ';
 $labels['size'] = 'Չափ';
 $labels['priority'] = 'Առավելություն';
 $labels['organization'] = 'Կազմակերպություն';
-$labels['reply-to'] = 'Reply-To';
+$labels['readstatus'] = 'Ընթերցման կարգավիճակ';
+$labels['listoptions'] = 'Ցուցակի ընտրանքներ…';
 $labels['mailboxlist'] = 'Դարակներ';
+$labels['folders'] = 'Դարակներ';
 $labels['messagesfromto'] = 'Նամակներ $from–ից $to–ը եղած $count–ից';
+$labels['threadsfromto'] = 'Թեմաներ $from-ից $to ընդհանուր $count-ից';
 $labels['messagenrof'] = 'Նամակ $nr եղած $count–ից';
+$labels['fromtoshort'] = '$from-ից $to ընդհանուր $count-ից';
+$labels['copy'] = 'Cc';
+$labels['move'] = 'Տեղափոխել';
 $labels['moveto'] = 'Տեղափոխել...';
 $labels['download'] = 'Քաշել';
 $labels['filename'] = 'Ֆայլի անուն';
 $labels['filesize'] = 'Ֆայլի չափ';
-$labels['preferhtml'] = 'Գերադասել HTML';
-$labels['htmlmessage'] = 'HTML նամակ';
-$labels['prettydate'] = 'Պարզ ամսաթվեր';
 $labels['addtoaddressbook'] = 'Հիշել հասցեն';
 $labels['sun'] = 'Կիր';
 $labels['mon'] = 'Երկ';
@@ -71,7 +75,8 @@ $labels['jan'] = 'Հնվ';
 $labels['feb'] = 'Փետ';
 $labels['mar'] = 'Մար';
 $labels['apr'] = 'Ապր';
-$labels['may'] = 'Մայ';
+$labels['may'] = 'Մայիս';
+$labels['longmay'] = 'Մայիս';
 $labels['jun'] = 'Հուս';
 $labels['jul'] = 'Հուլ';
 $labels['aug'] = 'Օգս';
@@ -83,7 +88,6 @@ $labels['longjan'] = 'Հունվար';
 $labels['longfeb'] = 'Փետրվար';
 $labels['longmar'] = 'Մարտ';
 $labels['longapr'] = 'Ապրիլ';
-$labels['longmay'] = 'Մայիս';
 $labels['longjun'] = 'Հունիս';
 $labels['longjul'] = 'Հուլիս';
 $labels['longaug'] = 'Օգոստոս';
@@ -92,58 +96,102 @@ $labels['longoct'] = 'Հոկտեմբեր';
 $labels['longnov'] = 'Նոյեմբեր';
 $labels['longdec'] = 'Դեկտեմբեր';
 $labels['today'] = 'Այսօր';
+$labels['refresh'] = 'Թարմացնել';
 $labels['checkmail'] = 'Ստուգել նոր նամակները';
+$labels['compose'] = 'Գրել նամակ';
 $labels['writenewmessage'] = 'Նոր նամակ';
+$labels['reply'] = 'Պատասխանել';
 $labels['replytomessage'] = 'Պատասխանել նամակին';
 $labels['replytoallmessage'] = 'Պատասխանել բոլորին';
+$labels['replyall'] = 'Պատասխանել բոլորին';
+$labels['replylist'] = 'Պատասխանել ցուցակին';
+$labels['forward'] = 'Առաջ';
+$labels['forwardinline'] = 'Փոխանցել նամակի մեջ';
+$labels['forwardattachment'] = 'Փոխանցել կցված';
 $labels['forwardmessage'] = 'Փոխանցել նամակը';
 $labels['deletemessage'] = 'Ջնջել նամակը';
 $labels['movemessagetotrash'] = 'Գցել աղբարկղը';
 $labels['printmessage'] = 'Տպել';
 $labels['previousmessage'] = 'Ցուցադրել նախորդ նամակը';
-$labels['previousmessages'] = 'Ցուցադրել նախորդ նամակները';
 $labels['firstmessage'] = 'Ցուցադրել առաջին նամակը';
-$labels['firstmessages'] = 'Ցուցադրել առաջին էջը';
 $labels['nextmessage'] = 'Ցուցադրել հաջորդ նամակը';
-$labels['nextmessages'] = 'Ցուցադրել հաջորդ նամակները';
 $labels['lastmessage'] = 'Ցուցադրել վերջին նամակը';
-$labels['lastmessages'] = 'Ցուցադրել վերջին էջը';
 $labels['backtolist'] = 'Վերադառնալ նամակների ցուցակ';
 $labels['viewsource'] = 'Ցուցադրել նամակի կոդը';
+$labels['mark'] = 'Նշել';
 $labels['markmessages'] = 'Նշել նամակները';
 $labels['markread'] = 'որպես կարդացած';
 $labels['markunread'] = 'որպես չկարդացած';
 $labels['markflagged'] = 'որպես նշված';
 $labels['markunflagged'] = 'որպես չնշված';
+$labels['moreactions'] = 'Հավելյալ գործողություններ…';
+$labels['more'] = 'Ավելին';
+$labels['back'] = 'Ետ';
+$labels['options'] = 'Ընտրանքներ';
 $labels['select'] = 'Նշել';
 $labels['all'] = 'Բոլորը';
 $labels['none'] = 'Չնշել';
+$labels['nonesort'] = 'Չնշել';
+$labels['currpage'] = 'Առկա էջ';
 $labels['unread'] = 'Չկարդացածը';
 $labels['flagged'] = 'Նշված';
 $labels['unanswered'] = 'Անպատասխան';
+$labels['deleted'] = 'Ջնջված';
+$labels['invert'] = 'Փոխատեղել';
 $labels['filter'] = 'Զտիչ';
+$labels['list'] = 'Ցուցակ';
+$labels['threads'] = 'Թեմաներ';
+$labels['expand-all'] = 'Ընդլայնել բոլորը';
+$labels['expand-unread'] = 'Ընդլայնել չկարդացվածը';
+$labels['collapse-all'] = 'Փլչել բոլորը';
+$labels['threaded'] = 'Թեմավորված';
+$labels['autoexpand_threads'] = 'Բաց անել թեմաները';
+$labels['do_expand'] = 'բոլոր թեմաները';
+$labels['expand_only_unread'] = 'միայն չկարդացված հաղորդագրություններով';
+$labels['fromto'] = 'Ումից/Ում';
+$labels['flag'] = 'Նշան';
+$labels['attachment'] = 'Կցորդ';
+$labels['sentdate'] = 'Ուղարկման ամսաթիվ';
+$labels['arrival'] = 'Ստացման Ամսաթիվ';
+$labels['asc'] = 'ըստ աճման';
+$labels['desc'] = 'ըստ նվազման';
+$labels['listcolumns'] = 'Ցուցակի սյունյակներ';
+$labels['listsorting'] = 'Տեսակավորման սյունյակ';
+$labels['listorder'] = 'Տեսակավորման կարգը';
+$labels['listmode'] = 'Ցուցակով տեսքի տարբերակը';
+$labels['folderactions'] = 'Պանակի գործողություններ…';
 $labels['compact'] = 'Սեղմել';
 $labels['empty'] = 'Դատարկել';
-$labels['purge'] = 'Մաքրել';
 $labels['quota'] = 'Դիսկային տարածք';
 $labels['unknown'] = 'անհայտ';
 $labels['unlimited'] = 'անսահմանափակ';
 $labels['quicksearch'] = 'Արագ որոնում';
 $labels['resetsearch'] = 'Վերսկսել որոնումը';
+$labels['searchmod'] = 'Որոնման փոփոխիչներ';
+$labels['msgtext'] = 'Ողջ հաղորդագրությունը';
 $labels['openinextwin'] = 'Բացել նոր պատուհանում';
-$labels['compose'] = 'Գրել նամակ';
+$labels['emlsave'] = 'Ներբեռնել (.eml)';
+$labels['editasnew'] = 'Խմբագրել որպես նոր';
 $labels['savemessage'] = 'Հիշել որպես սևագիր';
 $labels['sendmessage'] = 'Ուղարկել';
 $labels['addattachment'] = 'Կցել ֆայլ';
 $labels['charset'] = 'Տառաշար';
 $labels['editortype'] = 'Խմբագրի տիպը';
 $labels['returnreceipt'] = 'Ստացման հավաստագիր';
+$labels['dsn'] = 'Առաքման կարգավիճակի ծանուցում';
+$labels['mailreplyintro'] = '$date-ին, $sender-ը գրեց.';
+$labels['originalmessage'] = 'Առաջին հաղորդագրությունը';
+$labels['editidents'] = 'Խմբագրել ինքնությունները';
+$labels['spellcheck'] = 'Տառասխալներ';
 $labels['checkspelling'] = 'Ստուգել ուղագրությունը';
 $labels['resumeediting'] = 'Շարունակել խմբագրումը';
 $labels['revertto'] = 'Վերականգնել';
+$labels['attach'] = 'Կցել';
 $labels['attachments'] = 'Կցումներ';
 $labels['upload'] = 'Բեռնել';
+$labels['uploadprogress'] = '$percent ($current $total-ից)';
 $labels['close'] = 'Փակել';
+$labels['messageoptions'] = 'Հաղորդագրության ընտրանքներ…';
 $labels['low'] = 'Ցածր';
 $labels['lowest'] = 'Նվազագույն';
 $labels['normal'] = 'Նորմալ';
@@ -152,6 +200,7 @@ $labels['highest'] = 'Կարևորագույն';
 $labels['nosubject'] = '(առանց վերնագրի)';
 $labels['showimages'] = 'Ցուցադրել նկարները';
 $labels['alwaysshow'] = 'Միշտ ցուցադրել պատկերները $sender–ից';
+$labels['isdraft'] = 'Սա հաղորդագրության սևագիր է';
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = 'Պարզ տեքստ';
 $labels['savesentmessagein'] = 'Գրանցել ուղարկված նամակը';
@@ -160,6 +209,7 @@ $labels['maxuploadsize'] = 'Առավելագույն թույլատրելի ֆա
 $labels['addcc'] = 'Ավելացնել Cc';
 $labels['addbcc'] = 'Ավելացնել Bcc';
 $labels['addreplyto'] = 'Ավելացնել Reply-To';
+$labels['addfollowupto'] = 'Ավելացնել հավելում';
 $labels['mdnrequest'] = 'Նամակի հեղինակը խնդրել է նամակը կարդալուն պես տեղեկացնել իրեն։ Ցանկանում էք Տեղեկացնե՞լ։';
 $labels['receiptread'] = 'Նամակի ընթերցման ծանուցագիր';
 $labels['yourmessage'] = 'Սա Ձեր նամակի ընթերցման ծանուցագիրն է';
@@ -167,13 +217,65 @@ $labels['receiptnote'] = 'Նշում՝ Այս ծանուցագիրը ընդամ
 $labels['name'] = 'Մականուն';
 $labels['firstname'] = 'Անուն';
 $labels['surname'] = 'Ազգանուն';
+$labels['middlename'] = 'Միջին անուն';
+$labels['nameprefix'] = 'Նախածանց';
+$labels['namesuffix'] = 'Վերջածանց';
+$labels['nickname'] = 'Մականուն';
+$labels['jobtitle'] = 'Պաշտոն';
+$labels['department'] = 'Բաժանմունք';
+$labels['gender'] = 'Սեռ';
+$labels['maidenname'] = 'Մինչամուսնական ազգանուն';
 $labels['email'] = 'Էկ–փոստ';
+$labels['phone'] = 'Հեռախոս';
+$labels['address'] = 'Հասցե';
+$labels['street'] = 'Փողոց';
+$labels['locality'] = 'Քաղաք';
+$labels['zipcode'] = 'Փոստային կոդ';
+$labels['region'] = 'Մարզ';
+$labels['country'] = 'Երկիր';
+$labels['birthday'] = 'Ծննդյան օր';
+$labels['anniversary'] = 'Տարեդարձ';
+$labels['website'] = 'Կայք';
+$labels['instantmessenger'] = 'IM';
+$labels['notes'] = 'Նշումներ';
+$labels['male'] = 'արական';
+$labels['female'] = 'իգական';
+$labels['manager'] = 'Մենեջեր';
+$labels['assistant'] = 'Օգնական';
+$labels['typeassistant'] = 'Օգնական';
+$labels['spouse'] = 'ամուսին';
+$labels['allfields'] = 'Բոլոր դաշտերը';
+$labels['search'] = 'Որոնում';
+$labels['advsearch'] = 'Խորացված որոնում';
+$labels['advanced'] = 'Խորացված';
+$labels['other'] = 'Այլ';
+$labels['typeother'] = 'Այլ';
+$labels['typehome'] = 'Տուն';
+$labels['typework'] = 'Աշխատանք';
+$labels['typemobile'] = 'Բջջային';
+$labels['typemain'] = 'Գլխավոր';
+$labels['typehomefax'] = 'Տան ֆաքս';
+$labels['typeworkfax'] = 'Աշտանանքային ֆաքս';
+$labels['typecar'] = 'Մեքենա';
+$labels['typepager'] = 'Փեյջեր';
+$labels['typevideo'] = 'Տեսանյութ';
+$labels['typehomepage'] = 'Սկիզբ';
+$labels['typeblog'] = 'Բլոգ';
+$labels['typeprofile'] = 'Պրոֆայլ';
+$labels['addfield'] = 'Ավելացնել դաշտ…';
 $labels['addcontact'] = 'Գրանցել նշած հասցեն';
 $labels['editcontact'] = 'Խմբագրել հասցեն';
+$labels['contacts'] = 'Կապորդներ';
+$labels['contactproperties'] = 'Կապորդի հատկանիշներ';
+$labels['personalinfo'] = 'Անձնական տվյալներ';
 $labels['edit'] = 'Խմբագրել';
 $labels['cancel'] = 'Թարգել';
 $labels['save'] = 'Հիշել';
 $labels['delete'] = 'Ջնջել';
+$labels['rename'] = 'Վերանվանել';
+$labels['addphoto'] = 'Ավելացնել';
+$labels['replacephoto'] = 'Փոխարինել';
+$labels['uploadphoto'] = 'Վերբեռնել լուսանկար';
 $labels['newcontact'] = 'Ստեղծել նոր հասցեքարտ';
 $labels['deletecontact'] = 'Ջնջել նշած նամակները';
 $labels['composeto'] = 'Գրել նամակ';
@@ -181,27 +283,39 @@ $labels['contactsfromto'] = 'Հասցեներ $from–ից $to–ը եղած $co
 $labels['print'] = 'Տպել';
 $labels['export'] = 'Արտահանել';
 $labels['exportvcards'] = 'Արտահանել հասցեները vCard չափաձևով';
+$labels['newcontactgroup'] = 'Ստեղծել կապորդների նոր խումբ';
+$labels['grouprename'] = 'Վերանվանել խումբը';
+$labels['groupdelete'] = 'Ջնջել խումբը';
+$labels['groupremoveselected'] = 'Հեռացնել նշված անձանց խմբից';
 $labels['previouspage'] = 'Ցուցադրել նախորդ էջը';
 $labels['firstpage'] = 'Ցուցադրել առաջին էջը';
 $labels['nextpage'] = 'Ցուցադրել հաջորդ էջը';
 $labels['lastpage'] = 'Ցուցադրել վերջին էջը';
+$labels['group'] = 'Խումբ';
 $labels['groups'] = 'Խմբեր';
 $labels['personaladrbook'] = 'Անձնական հասցեներ';
+$labels['searchsave'] = 'Պահպանել որոնումը';
+$labels['searchdelete'] = 'Ջնջել որոնումը';
 $labels['import'] = 'Ներկրել';
 $labels['importcontacts'] = 'Ներկրել հասցեներ';
 $labels['importfromfile'] = 'Ներկրել ֆայլից';
+$labels['importtarget'] = 'Ավելացնել նոր կապորդներ հասցեագրքում';
 $labels['importreplace'] = 'Փոխել ողջ հասցեագիրքը';
 $labels['importtext'] = 'Դուք կարող եք ներկրել նոր հասցեներ առկա հասցեագրքից։ Համակարգը ընդունում է հասցեների ներկրումը <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> չափաձևով։';
 $labels['done'] = 'Ավարտված է';
 $labels['settingsfor'] = 'Նախասիրություններ';
-$labels['preferences'] = 'Ընդհանուր';
-$labels['userpreferences'] = 'Օգտվողի նախասիրություններ';
-$labels['editpreferences'] = 'Խմբագրել օգտվողի նախասիրությունները';
+$labels['about'] = 'Նկարագիր';
 $labels['identities'] = 'Անձիք';
 $labels['manageidentities'] = 'Կարգավորել անձանց';
 $labels['newidentity'] = 'Նոր անձ';
 $labels['newitem'] = 'Նոր իր';
 $labels['edititem'] = 'Խմբագրել իրը';
+$labels['preferhtml'] = 'Գերադասել HTML';
+$labels['defaultcharset'] = 'Լռելյալ տառաշար';
+$labels['htmlmessage'] = 'HTML նամակ';
+$labels['dateformat'] = 'Ամսաթվի ձևաչափ';
+$labels['timeformat'] = 'Ժամանակի ձևաչափ';
+$labels['prettydate'] = 'Պարզ ամսաթվեր';
 $labels['setdefault'] = 'Հիմնական';
 $labels['autodetect'] = 'Ավտո';
 $labels['language'] = 'Լեզու';
@@ -210,6 +324,7 @@ $labels['pagesize'] = 'Տողեր առ էջ';
 $labels['signature'] = 'Ստորագրություն';
 $labels['dstactive'] = 'Ամառային ժամանակ';
 $labels['htmleditor'] = 'Ստեղծել HTML նամակներ';
+$labels['htmlonreply'] = 'միայն HTML հաղորդագրությանը պատասխանելիս';
 $labels['htmlsignature'] = 'HTML ստորագրություն';
 $labels['previewpane'] = 'Ցուցադրել պատուհանը';
 $labels['skin'] = 'Տեսքի տարբերակ';
@@ -221,10 +336,14 @@ $labels['mailboxview'] = 'Փոստարկղի տեսք';
 $labels['mdnrequests'] = 'Տեղեկացումներ';
 $labels['askuser'] = 'Հարցնել օգտվողին';
 $labels['autosend'] = 'ուղարկել ավտոմատ';
+$labels['autosendknown'] = 'ուղարկել ստացական իմ կապորդներին, մնացած դեպքերում` հարցնել ինձ';
+$labels['autosendknownignore'] = 'ուղարկել ստացական իմ կապորդներին, մնացած դեպքերում` անտեսել';
 $labels['ignore'] = 'անտեսել';
 $labels['readwhendeleted'] = 'Ջնջելուց նշել նամակը որպես կարդացած';
-$labels['flagfordeletion'] = 'Ջնջելու փոխարեն նշել որպես ենթակա ջնջման ';
+$labels['flagfordeletion'] = 'Ջնջելու փոխարեն նշել որպես ենթակա ջնջման';
 $labels['skipdeleted'] = 'Ցույց չ՛տալ ջնջված նամակները';
+$labels['deletealways'] = 'Հաղորդագրությունները աղբարկղ տեղափոխելիս ձախողման դեպքում ջնջել դրանք։';
+$labels['deletejunk'] = 'Միանգամից ջնջել Թափոն հաղորդագրությունները';
 $labels['showremoteimages'] = 'Ցույց տալ հեռակա պատկերները';
 $labels['fromknownsenders'] = 'հայտնի հասցեատերերից';
 $labels['always'] = 'միշտ';
@@ -233,17 +352,52 @@ $labels['autosavedraft'] = 'Սևագրի ավտոմատ գրանցում';
 $labels['everynminutes'] = 'ամեն $n րոպեն';
 $labels['keepalive'] = 'Ստուգել նոր նամակները';
 $labels['never'] = 'երբեք';
+$labels['immediately'] = 'անմիջապես';
 $labels['messagesdisplaying'] = 'նամակները ցուցադրելիս';
 $labels['messagescomposition'] = 'նամակ գրելիս';
 $labels['mimeparamfolding'] = 'Կցորդների անուններ';
 $labels['2231folding'] = 'Կատարյալ RFC 2231 (Thunderbird)';
 $labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
 $labels['2047folding'] = 'Կատարյալ RFC 2047 (այլ)';
+$labels['force7bit'] = 'օգտագործել MIME գրանշում 8 բիթանոց նիշերի համար';
 $labels['advancedoptions'] = 'Հավելյալ կարգավորումներ';
 $labels['focusonnewmessage'] = 'Առաջ բերել պատուհանը նոր նամակ ստանալիս';
 $labels['checkallfolders'] = 'Ստուգել բոլոր դարակները նոր նամակների համար';
+$labels['displaynext'] = 'Հաղորդագրությունը ջնջելուց կամ տեղափոխելուց հետո ցուցադրել հաջորդը';
+$labels['defaultfont'] = 'HTML հաղորդագրության լռելյալ տառատեսակ';
+$labels['mainoptions'] = 'Գլխավոր ընտրանքներ';
+$labels['browseroptions'] = 'Զննարկչի ընտրանքներ';
+$labels['section'] = 'Բաժին';
+$labels['maintenance'] = 'Սպասարկում';
+$labels['newmessage'] = 'Նոր հաղորդագրություն';
+$labels['signatureoptions'] = 'Ստորագրության ընտրանքներ';
+$labels['whenreplying'] = 'Պատասխանելիս';
+$labels['replytopposting'] = 'սկսել նոր հաղորդագրությունը վերևից';
+$labels['replybottomposting'] = 'սկսել նոր հաղորդագրությունը ներքևից';
+$labels['replyremovesignature'] = 'Պատասխանելիս հեռացնել հաղորդագրությունից նախորդ ստորագրությունը';
+$labels['autoaddsignature'] = 'Ավելացնել ստորագրություն';
+$labels['newmessageonly'] = 'միայն նոր հաղորդագրություններում';
+$labels['replyandforwardonly'] = 'պատասխաններում և փոխանցումներում';
+$labels['replysignaturepos'] = 'Ավելացնել ստորագրությունը պատասխանելիս կամ փոխանցելիս';
+$labels['belowquote'] = 'Մեջբերման ներքևում';
+$labels['abovequote'] = 'Մեջբերման վերևում';
+$labels['insertsignature'] = 'Ներդնել ստորագրությունը';
+$labels['previewpanemarkread'] = 'Նշել նախադիտված հաղորդագրությունները որպես ընթերցված';
+$labels['afternseconds'] = '$n վարկյան հետո';
+$labels['reqmdn'] = 'Միշտ պատվիրել ստացական';
+$labels['reqdsn'] = 'Միշտ պատվիրել առաքման կարգավիճակի ծանուցում';
+$labels['replysamefolder'] = 'Հաղորդագրության պատասխանները պահել նույն պանակում';
+$labels['defaultaddressbook'] = 'Ավելացնել նոր կապորդներ նշված հասցեագրքին';
+$labels['autocompletesingle'] = 'Ավտոլրացման ժամանակ բացառել այլընտրանքային էլփոստի հասցեները';
+$labels['listnamedisplay'] = 'Ցուցադրել կապորդները որպես';
+$labels['spellcheckbeforesend'] = 'Ստուգել տառասխալները հաղորդագրությունը ուղարկելուց առաջ';
+$labels['spellcheckoptions'] = 'Սրբագրման ընտրանքներ';
+$labels['spellcheckignoresyms'] = 'Անտեսել նշաններով բառերը';
+$labels['spellcheckignorenums'] = 'Անտեսել թվերով բառերը';
+$labels['spellcheckignorecaps'] = 'Անտեսել լրիվ մեծատառ բառերը';
+$labels['addtodict'] = 'Ավելացնել բառարանում';
+$labels['mailtoprotohandler'] = 'mailto: հղումների սպասարկող';
 $labels['folder'] = 'Դարակ';
-$labels['folders'] = 'Դարակներ';
 $labels['foldername'] = 'Դարակի անուն';
 $labels['subscribed'] = 'Բաժանորդագրված';
 $labels['messagecount'] = 'Նամակներ';
@@ -251,12 +405,46 @@ $labels['create'] = 'Ստեղծել';
 $labels['createfolder'] = 'Բացել նոր դարակ';
 $labels['managefolders'] = 'Կարգավորել դարակները';
 $labels['specialfolders'] = 'Հատուկ դարակներ';
+$labels['properties'] = 'Հատկանիշներ';
+$labels['folderproperties'] = 'Պանակի հատկանիշներ';
+$labels['parentfolder'] = 'Ծնող պանակ';
+$labels['location'] = 'Վայր';
+$labels['info'] = 'Տեղեկություն';
+$labels['getfoldersize'] = 'Հպել պանակի չափը իմանալու համար';
+$labels['changesubscription'] = 'Հպել բաժանորդագրությունը փոխելու համար';
+$labels['foldertype'] = 'Պանակի տեսակ';
+$labels['personalfolder'] = 'Անձնական պանակ';
+$labels['otherfolder'] = 'Այլ օգտվողի պանակ';
+$labels['sharedfolder'] = 'Հանրային պանակ';
 $labels['sortby'] = 'Դասավորել';
 $labels['sortasc'] = 'ըստ աճման';
 $labels['sortdesc'] = 'ըստ նվազման';
+$labels['undo'] = 'Ետարկել';
+$labels['plugin'] = 'Խրիչ';
+$labels['version'] = 'Տարբերակ';
+$labels['source'] = 'Աղբյուր';
+$labels['license'] = 'Արտոնագիր';
+$labels['support'] = 'Ստանալ օգնություն';
 $labels['B'] = 'Բ';
 $labels['KB'] = 'ԿԲ';
 $labels['MB'] = 'ՄԲ';
 $labels['GB'] = 'ԳԲ';
+$labels['unicode'] = 'Յունիկոդ';
+$labels['english'] = 'Անգլերեն';
+$labels['westerneuropean'] = 'Արևմտա-Եվրոպական';
+$labels['easterneuropean'] = 'Արևելա-Եվրոպական';
+$labels['southeasterneuropean'] = 'Հարավ-արևելաեվրոպական';
+$labels['baltic'] = 'Բալթիկ';
+$labels['cyrillic'] = 'Կիրիլլիկ';
+$labels['arabic'] = 'Արաբական';
+$labels['greek'] = 'Հունական';
+$labels['hebrew'] = 'Հրեական';
+$labels['turkish'] = 'Թուրքական';
+$labels['nordic'] = 'Նորդիկ';
+$labels['thai'] = 'Թայլանդական';
+$labels['celtic'] = 'Կելտական';
+$labels['vietnamese'] = 'Վիետնամական';
+$labels['japanese'] = 'Ճապոնական';
+$labels['korean'] = 'Կորեական';
+$labels['chinese'] = 'Չինական';
 
-?>
index 3f83e2d28ae1a8342eb7986d234fe39a25801769..dfb886c159ef0f23e635ebbbc1d646bdd1caee3a 100644 (file)
@@ -1,30 +1,37 @@
 <?php
 
 /*
-+-----------------------------------------------------------------------+
-| language/hy_AM/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Vahan Yerkanian <vahan@arminco.com>                           |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 4410 2011-01-12 18:25:02Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/hy_AM/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Vahan Yerkanian <vahan@yerkanian.com>                         |
+ +-----------------------------------------------------------------------+
 */
 
 $messages = array();
+$messages['loading'] = 'Բեռնում...';
+$messages['errortitle'] = 'Սխա՛լ';
 $messages['loginfailed'] = 'Մուտքը ձախողվեց';
 $messages['cookiesdisabled'] = 'Сookies–ների ապահովվումը բացակայում է';
 $messages['sessionerror'] = 'Անվավեր կամ ժամկետանց սեսիա';
-$messages['imaperror'] = 'IMAP սերվերի հետ կապը ձախողվեց';
+$messages['storageerror'] = 'IMAP սերվերի հետ կապը ձախողվեց';
+$messages['servererror'] = 'Սերվերի սխա՛լ';
+$messages['servererrormsg'] = 'Սերվերի սխալ` $msg';
+$messages['dberror'] = 'Տվյալների շտեմարանի սխա՛լ';
+$messages['requesttimedout'] = 'Հարցման թույլատրելի ժամանակը սպառվեց';
+$messages['errorreadonly'] = 'Գործողությունը անհնար է։ Պանակը միայն ընթերցման համար է։';
+$messages['errornoperm'] = 'Գործողության կատարման իրավունքը մերժված է։';
+$messages['invalidrequest'] = 'Սխալ հարցում, ապարդյուն։';
 $messages['nomessagesfound'] = 'Այս փոստարկղում նամակներ չկան';
 $messages['loggedout'] = 'Դուք բարեհաջող ավարտեցիք աշխատանքը։ Ցտեսություն…';
 $messages['mailboxempty'] = 'Փոստարկղը դատարկ է';
-$messages['loading'] = 'Բեռնավորում…';
+$messages['uploading'] = 'Ֆայլի վերբեռնում…';
+$messages['uploadingmany'] = 'Վերբեռնվում են ֆայլերը…';
 $messages['loadingdata'] = 'Տվյալների բեռնավորում…';
 $messages['checkingmail'] = 'Նոր նամակների ստուգում…';
 $messages['sendingmessage'] = 'Նամակի ուղարկում…';
@@ -34,22 +41,31 @@ $messages['messagesaved'] = 'Նամակը գրանցվեց որպես սևագի
 $messages['successfullysaved'] = 'Գրանցված է';
 $messages['addedsuccessfully'] = 'Հասցեն ավելացված է';
 $messages['contactexists'] = 'Այս հասցեով անձը արդեն գրանցված է';
+$messages['contactnameexists'] = 'Նույն անունով արդեն անձ գոյություն ունի։';
 $messages['blockedimages'] = 'Ձեր անվտանգության համար, այս նամակի արտաքին նկարներն բեռնված չեն';
 $messages['encryptedmessage'] = 'Ներողություն, այս նամակը կոդավորված է';
 $messages['nocontactsfound'] = 'Հասցեներ չկան';
 $messages['contactnotfound'] = 'Որոնվող հասցեն չգտնվեց';
+$messages['contactsearchonly'] = 'Ներմուծեք տվյալներ անձանց որոնման համար';
 $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['folderdeleting'] = 'Դարակը ջնջվում է…';
 $messages['foldermoving'] = 'Դարակը տեղափոխվում է…';
+$messages['foldersubscribing'] = 'Պանակի բաժանորդագրում…';
+$messages['folderunsubscribing'] = 'Պանակի ապաբաժանորդագրում…';
 $messages['formincomplete'] = 'Ձևը թերի է լրացված';
 $messages['noemailwarning'] = 'Մուտքագրեք ճիշտ էլ. հասցե';
 $messages['nonamewarning'] = 'Մուտքագրեք անուն';
@@ -60,14 +76,19 @@ $messages['nosubjectwarning'] = 'Վերնագիր բացակայում է, ցա
 $messages['nobodywarning'] = 'Ուղարկե՞լ այս նամակը դատարկ';
 $messages['notsentwarning'] = 'Նամակն ուղարկված չէ։ Ջնջե՞լ Ձեր նամակը';
 $messages['noldapserver'] = 'Ընտրեք ldap սերվեր որոնման համար';
-$messages['nocontactsreturned'] = 'Հասցեներ չեն գտնվել';
 $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['folderpurged'] = 'Պանակը բարեհաջող դատարկվեց։';
+$messages['folderexpunged'] = 'Պանակը բարեհաջող սեղմվեց։';
 $messages['deletedsuccessfully'] = 'Ջնջված է';
 $messages['converting'] = 'Նամակի ձևավորման հեռացում…';
 $messages['messageopenerror'] = 'Նամակի բեռնվումը սերվերից ձախողվեց';
@@ -78,17 +99,62 @@ $messages['copyerror'] = 'Հասցեների կրկնօրինակումը ձախ
 $messages['sourceisreadonly'] = 'Այս հասցեն պաշտպանված է';
 $messages['errorsavingcontact'] = 'Հասցեի գրանցումն ձախողվեց';
 $messages['movingmessage'] = 'Նամակը տեղափոխվում է…';
+$messages['copyingmessage'] = 'Հաղորդագրությունների պատճենում…';
+$messages['copyingcontact'] = 'Անձանց պատճենում…';
+$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['importwait'] = 'Ներկրումն ընթացքի մեջ է...';
 $messages['importerror'] = 'Ներկրումը խափանվեց։ Ներկրված ֆայլը vCard չափաձևի չէ։';
 $messages['importconfirm'] = '$inserted նոր ներկրված հասցեներ, $skipped արդեն առկա հասցեներ՝ <p><em>$names</em></p>';
+$messages['importconfirmskipped'] = '<b>Բաց թողնվեց $skipped առկա գրառում</b>';
 $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['namecannotbeempty'] = 'Անունը դատարկ չի կարող լինել։';
+$messages['nametoolong'] = 'Անունը չափազանց երկար է։';
+$messages['folderupdated'] = 'Պանակը թարմացվեց։';
+$messages['foldercreated'] = 'Պանակը ստեղծվեց։';
+$messages['invalidimageformat'] = 'Պատկերի սխալ ձևաչափ։';
+$messages['mispellingsfound'] = 'Հաղորդագրության մեջ կան տառասխալներ։';
+$messages['parentnotwritable'] = 'Նշված պանակի մեջ պանակի ստեղծումը կամ տեղափոխումը անհնար է անբավարար իրավունքների պատճառով։';
+$messages['messagetoobig'] = 'Հաղորդագրության մասը չափազանց մեծ է սպասարկման համար։';
 
-?>
diff --git a/program/localization/ia/labels.inc b/program/localization/ia/labels.inc
new file mode 100644 (file)
index 0000000..e3148ec
--- /dev/null
@@ -0,0 +1,284 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ia/labels.inc                                            |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Emilio Sepulveda <emilio@chilemoz.org>                        |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['welcome'] = 'Benvenite a $product';
+$labels['username'] = 'Nomine de usator';
+$labels['password'] = 'Contrasigno';
+$labels['server'] = 'Servitor';
+$labels['login'] = 'Apertura de session';
+$labels['logout'] = 'Clauder session';
+$labels['mail'] = 'E-posta';
+$labels['settings'] = 'Configurationes';
+$labels['addressbook'] = 'Adressario';
+$labels['inbox'] = 'Cassa de entrata';
+$labels['sent'] = 'Inviate';
+$labels['subject'] = 'Subjecto';
+$labels['from'] = 'Ex';
+$labels['to'] = 'A';
+$labels['cc'] = 'Cc';
+$labels['bcc'] = 'Bcc';
+$labels['replyto'] = 'Responder a';
+$labels['date'] = 'Data';
+$labels['size'] = 'Dimension';
+$labels['priority'] = 'Prioritate';
+$labels['organization'] = 'Organisation';
+$labels['mailboxlist'] = 'Dossieres';
+$labels['folders'] = 'Dossieres';
+$labels['copy'] = 'Copiar';
+$labels['move'] = 'Mover';
+$labels['moveto'] = 'Mover a';
+$labels['download'] = 'Discargar';
+$labels['filename'] = 'Nomine de file';
+$labels['filesize'] = 'Dimension del file';
+$labels['addtoaddressbook'] = 'Adder al adressario';
+$labels['sun'] = 'dom';
+$labels['mon'] = 'lun';
+$labels['tue'] = 'mar';
+$labels['wed'] = 'mer';
+$labels['thu'] = 'jov';
+$labels['fri'] = 'ven';
+$labels['sat'] = 'sab';
+$labels['sunday'] = 'Dominica';
+$labels['monday'] = 'Lunedi';
+$labels['tuesday'] = 'Martedi';
+$labels['wednesday'] = 'Mercuridi';
+$labels['thursday'] = 'Jovedi';
+$labels['friday'] = 'Venerdi';
+$labels['saturday'] = 'Sabbato';
+$labels['jan'] = 'Jan';
+$labels['feb'] = 'Feb';
+$labels['mar'] = 'Mar';
+$labels['apr'] = 'Apr';
+$labels['may'] = 'Mai';
+$labels['longmay'] = 'Mai';
+$labels['jun'] = 'Jun';
+$labels['jul'] = 'Jul';
+$labels['aug'] = 'Aug';
+$labels['sep'] = 'Sep';
+$labels['oct'] = 'Oct';
+$labels['nov'] = 'Nov';
+$labels['dec'] = 'Dec';
+$labels['longjan'] = 'januario';
+$labels['longfeb'] = 'Februario';
+$labels['longmar'] = 'Martio';
+$labels['longapr'] = 'April';
+$labels['longjun'] = 'Junio';
+$labels['longjul'] = 'Julio';
+$labels['longaug'] = 'Augusto';
+$labels['longsep'] = 'Septembre';
+$labels['longoct'] = 'Octobre';
+$labels['longnov'] = 'Novembre';
+$labels['longdec'] = 'Decembre';
+$labels['today'] = 'Hodie';
+$labels['refresh'] = 'Refrescar';
+$labels['checkmail'] = 'Verificar nove messages';
+$labels['writenewmessage'] = 'Crear un nove message';
+$labels['reply'] = 'Responder';
+$labels['replyall'] = 'Responder a totes';
+$labels['replylist'] = 'Responder a lista';
+$labels['deletemessage'] = 'Deler messsage';
+$labels['printmessage'] = 'Imprimer iste message';
+$labels['viewsource'] = 'Monstrar fonte';
+$labels['mark'] = 'Marcar';
+$labels['markmessages'] = 'Marcar messages';
+$labels['more'] = 'Plus';
+$labels['back'] = 'Retornar';
+$labels['options'] = 'Optiones';
+$labels['select'] = 'Seliger';
+$labels['all'] = 'Totes';
+$labels['none'] = 'Necun';
+$labels['nonesort'] = 'Necun';
+$labels['unread'] = 'Non legite';
+$labels['flagged'] = 'Marcate';
+$labels['deleted'] = 'Delete';
+$labels['invert'] = 'Inverter';
+$labels['filter'] = 'Filtro';
+$labels['list'] = 'Lista';
+$labels['threads'] = 'Topicos';
+$labels['flag'] = 'Marcar';
+$labels['attachment'] = 'Attachamento';
+$labels['folderactions'] = 'Actiones de dossier...';
+$labels['compact'] = 'Compacte';
+$labels['empty'] = 'Vacue';
+$labels['unknown'] = 'incognite';
+$labels['quicksearch'] = 'Cerca rapide';
+$labels['resetsearch'] = 'Reinitialisar cerca';
+$labels['msgtext'] = 'Message complete';
+$labels['openinextwin'] = 'Aperir in nove fenestra';
+$labels['editasnew'] = 'Modificar como nove';
+$labels['savemessage'] = 'Salveguardar como version provisori';
+$labels['sendmessage'] = 'Inviar message';
+$labels['addattachment'] = 'Attachar un file';
+$labels['charset'] = 'Insimul de Characteres';
+$labels['editortype'] = 'Typo de editor';
+$labels['originalmessage'] = 'Message original';
+$labels['editidents'] = 'Modificar identitates';
+$labels['spellcheck'] = 'Orthographia';
+$labels['checkspelling'] = 'Verificar orthographia';
+$labels['attach'] = 'Attachar';
+$labels['attachments'] = 'Attachamentos';
+$labels['upload'] = 'Incargar';
+$labels['close'] = 'Clauder';
+$labels['messageoptions'] = 'Optiones de message...';
+$labels['low'] = 'Basse';
+$labels['lowest'] = 'Minimal';
+$labels['normal'] = 'Normal';
+$labels['high'] = 'Alte';
+$labels['highest'] = 'Maximal';
+$labels['nosubject'] = '(sin subjecto)';
+$labels['showimages'] = 'Monstrar imagines';
+$labels['plaintoggle'] = 'Texto plan';
+$labels['savesentmessagein'] = 'Salveguardar message inviate in';
+$labels['dontsave'] = 'non salveguardar';
+$labels['maxuploadsize'] = 'Le dimension maximal de iste file es $size';
+$labels['addcc'] = 'Adder Cc';
+$labels['addbcc'] = 'Adder Bcc';
+$labels['name'] = 'Monstrar nomine';
+$labels['firstname'] = 'Nomine';
+$labels['surname'] = 'Nomine de familia';
+$labels['nameprefix'] = 'Prefixo';
+$labels['nickname'] = 'Pseudonymo';
+$labels['department'] = 'Departimento';
+$labels['gender'] = 'Sexo:';
+$labels['email'] = 'E-posta';
+$labels['phone'] = 'Telephono';
+$labels['address'] = 'Adresse';
+$labels['street'] = 'Strata';
+$labels['locality'] = 'Citate';
+$labels['zipcode'] = 'Codice postal';
+$labels['region'] = 'Provincia o stato';
+$labels['country'] = 'Pais';
+$labels['birthday'] = 'Anniversario de nativitate';
+$labels['anniversary'] = 'Anniversario';
+$labels['website'] = 'Sito web';
+$labels['instantmessenger'] = 'MI';
+$labels['notes'] = 'Notas';
+$labels['male'] = 'masculin';
+$labels['female'] = 'feminin';
+$labels['manager'] = 'Gerente';
+$labels['assistant'] = 'Assistente';
+$labels['typeassistant'] = 'Assistente';
+$labels['spouse'] = 'Sposo/a';
+$labels['allfields'] = 'Omne campos';
+$labels['search'] = 'Cercar';
+$labels['advsearch'] = 'Cerca avantiate';
+$labels['advanced'] = 'Avantiate';
+$labels['other'] = 'Altere';
+$labels['typeother'] = 'Altere';
+$labels['typehome'] = 'Domo';
+$labels['typework'] = 'Labor';
+$labels['typemobile'] = 'Mobile';
+$labels['typemain'] = 'Principal';
+$labels['typehomefax'] = 'Fax de domo';
+$labels['typeworkfax'] = 'Fax de labor';
+$labels['typepager'] = 'Pager';
+$labels['typevideo'] = 'Video';
+$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';
+$labels['personalinfo'] = 'Information personal';
+$labels['edit'] = 'Modificar';
+$labels['cancel'] = 'Cancellar';
+$labels['save'] = 'Salveguardar';
+$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';
+$labels['groups'] = 'Gruppos';
+$labels['personaladrbook'] = 'Adresses personal';
+$labels['searchsave'] = 'Salveguardar cerca';
+$labels['searchdelete'] = 'Deler cerca';
+$labels['import'] = 'Importar';
+$labels['importcontacts'] = 'Importar contactos';
+$labels['importfromfile'] = 'Importar ex file:';
+$labels['importtarget'] = 'Adder nove contactos al adressario';
+$labels['done'] = 'Facite';
+$labels['settingsfor'] = 'Configurationes pro';
+$labels['about'] = 'A proposito';
+$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';
+$labels['timeformat'] = 'Formato de tempore';
+$labels['setdefault'] = 'Fixar predeterminate';
+$labels['autodetect'] = 'Auto';
+$labels['language'] = 'Lingua';
+$labels['timezone'] = 'Fuso horari';
+$labels['signature'] = 'Signatura';
+$labels['htmlsignature'] = 'Signatura HTML';
+$labels['skin'] = 'Apparentia de interfacie';
+$labels['uisettings'] = 'Interfacie de usator';
+$labels['serversettings'] = 'Configurationes de servitor';
+$labels['ignore'] = 'ignorar';
+$labels['always'] = 'sempre';
+$labels['everynminutes'] = 'cata $n minuta(s)';
+$labels['never'] = 'nunquam';
+$labels['messagesdisplaying'] = 'Inviar me_ssages';
+$labels['mimeparamfolding'] = 'Nomines de attachamento';
+$labels['advancedoptions'] = 'Optiones avantiate';
+$labels['mainoptions'] = 'Optiones principal';
+$labels['section'] = 'Section';
+$labels['maintenance'] = 'Mantenimento';
+$labels['newmessage'] = 'Nove message';
+$labels['signatureoptions'] = 'Optiones de signatura';
+$labels['autoaddsignature'] = 'Automaticamente inserta signatura';
+$labels['insertsignature'] = 'Insertar signatura';
+$labels['spellcheckoptions'] = 'Optiones de verification orthographic';
+$labels['addtodict'] = 'Adder al dictionario';
+$labels['folder'] = 'Dossier';
+$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['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['sortby'] = 'Ordinar per';
+$labels['source'] = 'Fonte';
+$labels['license'] = 'Licentia';
+$labels['support'] = 'Obtener supporte';
+$labels['unicode'] = 'Unicode';
+$labels['english'] = 'Anglese';
+$labels['japanese'] = 'Japonese';
+$labels['korean'] = 'Coreano';
+$labels['chinese'] = 'Chinese';
+
diff --git a/program/localization/ia/messages.inc b/program/localization/ia/messages.inc
new file mode 100644 (file)
index 0000000..c08aca3
--- /dev/null
@@ -0,0 +1,41 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ia/messages.inc                                          |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Emilio Sepulveda <emilio@chilemoz.org>                        |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$messages = array();
+$messages['loginfailed'] = 'Initio de session fallite';
+$messages['servererror'] = 'Error de servitor!';
+$messages['dberror'] = 'Error de base de datos!';
+$messages['loading'] = 'Cargante ...';
+$messages['uploadingmany'] = 'Incargante files...';
+$messages['loadingdata'] = 'Cargante datos...';
+$messages['sendingmessage'] = 'Inviante message...';
+$messages['successfullysaved'] = 'Salveguardate con successo.';
+$messages['nocontactsfound'] = 'Nulle contactos trovate.';
+$messages['sendingfailed'] = 'Falleva in inviar le message.';
+$messages['errormoving'] = 'Non pote mover le message(s)';
+$messages['errordeleting'] = 'Il non pote deler le message(s).';
+$messages['nonamewarning'] = 'Per favor inserta nomine.';
+$messages['searchsuccessful'] = '$nr messages trovate.';
+$messages['contactsearchsuccessful'] = '$nr contactos trovate.';
+$messages['searching'] = 'Cercante...';
+$messages['checking'] = 'A verificar...';
+$messages['deletedsuccessfully'] = 'Delete con successo.';
+$messages['fileuploaderror'] = 'Incargamento de file falleva.';
+$messages['selectimportfile'] = 'Per favor tu selige le file a incargar.';
+$messages['emailformaterror'] = 'Adresse de e-mail invalide: $email';
+$messages['namecannotbeempty'] = 'Le nomine non pote esser vacue.';
+$messages['nametoolong'] = 'Le nomine es troppo longe.';
+
index a6289c35e4d3a157be55894592bd42a26331ceca..bda6e8990b71601a559cf530a73263aee8c01b7e 100644 (file)
@@ -1,20 +1,17 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/id_ID/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Putu Arya Sabda Wijaya <ptaryasw@isi-dps.ac.id>                    |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 4671 2011-04-20 08:47:44Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/id_ID/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Putu Arya Sabda Wijaya <Unknown>                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $labels = array();
@@ -44,10 +41,13 @@ $labels['size'] = 'Ukuran';
 $labels['priority'] = 'Prioritas';
 $labels['organization'] = 'Organisasi';
 $labels['readstatus'] = 'Status Terbaca';
-$labels['mailboxlist'] = 'Map';
+$labels['listoptions'] = 'Daftar Pilihan...';
+$labels['mailboxlist'] = 'Semua Folder';
+$labels['folders'] = 'Semua Folder';
 $labels['messagesfromto'] = 'Pesan ke $from sampai $to dari $count';
 $labels['threadsfromto'] = 'Untaian ke $from sampai $to dari $count';
 $labels['messagenrof'] = 'Pesan $nr sebanyak $count';
+$labels['fromtoshort'] = '$from - $to dari $count';
 $labels['copy'] = 'Salin';
 $labels['move'] = 'Pindahkan';
 $labels['moveto'] = 'Pindahkan ke...';
@@ -74,6 +74,7 @@ $labels['feb'] = 'Feb';
 $labels['mar'] = 'Mar';
 $labels['apr'] = 'Apr';
 $labels['may'] = 'Mei';
+$labels['longmay'] = 'Mei';
 $labels['jun'] = 'Jun';
 $labels['jul'] = 'Jul';
 $labels['aug'] = 'Ags';
@@ -85,7 +86,6 @@ $labels['longjan'] = 'Januari';
 $labels['longfeb'] = 'Februari';
 $labels['longmar'] = 'Maret';
 $labels['longapr'] = 'April';
-$labels['longmay'] = 'Mei';
 $labels['longjun'] = 'Juni';
 $labels['longjul'] = 'Juli';
 $labels['longaug'] = 'Agustus';
@@ -94,12 +94,18 @@ $labels['longoct'] = 'Oktober';
 $labels['longnov'] = 'November';
 $labels['longdec'] = 'Desember';
 $labels['today'] = 'Hari ini';
+$labels['refresh'] = 'Segarkan';
 $labels['checkmail'] = 'Periksa pesan baru';
+$labels['compose'] = 'Tulis sebuah pesan';
 $labels['writenewmessage'] = 'Buat pesan baru';
+$labels['reply'] = 'Balas';
 $labels['replytomessage'] = 'Balas pesan';
 $labels['replytoallmessage'] = 'Balas ke pengirim dan yang lain';
 $labels['replyall'] = 'Balas ke semua';
 $labels['replylist'] = 'Balas ke milis';
+$labels['forward'] = 'Teruskan';
+$labels['forwardinline'] = 'Teruskan bersama surat';
+$labels['forwardattachment'] = 'Teruskan sebagai sisipan';
 $labels['forwardmessage'] = 'Teruskan pesan';
 $labels['deletemessage'] = 'Hapus pesan';
 $labels['movemessagetotrash'] = 'Pindahkan pesan ke tong sampah';
@@ -110,15 +116,20 @@ $labels['nextmessage'] = 'Perlihatkan pesan berikutnya';
 $labels['lastmessage'] = 'Perlihatkan pesan terakhir';
 $labels['backtolist'] = 'Kembali ke daftar pesan';
 $labels['viewsource'] = 'Perlihatkan kode sumber';
+$labels['mark'] = 'Tandai';
 $labels['markmessages'] = 'Tandai Pesan';
 $labels['markread'] = 'Terbaca';
 $labels['markunread'] = 'Belum Terbaca';
 $labels['markflagged'] = 'Sudah ditandai';
 $labels['markunflagged'] = 'Belum ditandai';
-$labels['messageactions'] = 'Tindakan lain...';
+$labels['moreactions'] = 'Tindakan lain..';
+$labels['more'] = 'Selebihnya';
+$labels['back'] = 'Kembali';
+$labels['options'] = 'Pilihan';
 $labels['select'] = 'Pilih';
 $labels['all'] = 'Semua';
-$labels['none'] = 'Tidak satupun';
+$labels['none'] = 'Tidak ada';
+$labels['nonesort'] = 'Tidak ada';
 $labels['currpage'] = 'Halaman sekarang';
 $labels['unread'] = 'Belum terbaca';
 $labels['flagged'] = 'Ditandai';
@@ -138,7 +149,6 @@ $labels['expand_only_unread'] = 'hanya pesan yang belum terbaca';
 $labels['fromto'] = 'Pengirim/Penerima';
 $labels['flag'] = 'Bendera';
 $labels['attachment'] = 'Lampiran';
-$labels['nonesort'] = 'Tidak ada';
 $labels['sentdate'] = 'Tanggal kirim';
 $labels['arrival'] = 'Tanggal masuk';
 $labels['asc'] = 'menaik';
@@ -159,7 +169,6 @@ $labels['searchmod'] = 'Peubah pencarian';
 $labels['msgtext'] = 'Seluruh pesan';
 $labels['openinextwin'] = 'Buka dalam jendela baru';
 $labels['emlsave'] = 'Unduh (.eml)';
-$labels['compose'] = 'Tulis sebuah pesan';
 $labels['editasnew'] = 'Sunting sebagai pesan baru';
 $labels['savemessage'] = 'Simpan konsep surat  ini';
 $labels['sendmessage'] = 'Kirim pesan sekarang';
@@ -168,12 +177,17 @@ $labels['charset'] = 'Set karakter';
 $labels['editortype'] = 'Tipe penyunting';
 $labels['returnreceipt'] = 'Tanda terima kembali';
 $labels['dsn'] = 'Pemberitahuan status terkirim';
+$labels['mailreplyintro'] = 'Pada $date, $sender menulis:';
+$labels['originalmessage'] = 'Pesan Sebenarnya';
 $labels['editidents'] = 'Ubah identitas';
+$labels['spellcheck'] = 'Ejaan';
 $labels['checkspelling'] = 'Pemeriksaan ejaan';
 $labels['resumeediting'] = 'Lanjutkan menyunting';
 $labels['revertto'] = 'Balikkan ke';
+$labels['attach'] = 'Lampirkan';
 $labels['attachments'] = 'Sisipan';
 $labels['upload'] = 'Unggah';
+$labels['uploadprogress'] = '$percent ($current dari $total)';
 $labels['close'] = 'Tutup';
 $labels['messageoptions'] = 'Pilihan pesan...';
 $labels['low'] = 'Rendah';
@@ -184,6 +198,7 @@ $labels['highest'] = 'Paling tinggi';
 $labels['nosubject'] = '(tanpa judul)';
 $labels['showimages'] = 'Tampilkan gambar';
 $labels['alwaysshow'] = 'Selalu tampilkan gambar dari $sender';
+$labels['isdraft'] = 'Ini adalah konsep surat.';
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = 'Teks murni';
 $labels['savesentmessagein'] = 'Simpan pesan terkirim di';
@@ -225,10 +240,16 @@ $labels['male'] = 'pria';
 $labels['female'] = 'wanita';
 $labels['manager'] = 'Menejer';
 $labels['assistant'] = 'Asisten';
+$labels['typeassistant'] = 'Asisten';
 $labels['spouse'] = 'Suami/Istri';
+$labels['allfields'] = 'Semua isian';
+$labels['search'] = 'Cari';
+$labels['advsearch'] = 'Pencarian Lebih Lanjut';
+$labels['advanced'] = 'Tingkat lanjut';
+$labels['other'] = 'Lainnya';
+$labels['typeother'] = 'Lainnya';
 $labels['typehome'] = 'Rumah';
 $labels['typework'] = 'Kantor';
-$labels['typeother'] = 'Lainnya';
 $labels['typemobile'] = 'HP';
 $labels['typemain'] = 'Utama';
 $labels['typehomefax'] = 'Faks Rumah';
@@ -236,7 +257,9 @@ $labels['typeworkfax'] = 'Faks Kantor';
 $labels['typecar'] = 'Mobil';
 $labels['typepager'] = 'Pejer';
 $labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Asisten';
+$labels['typehomepage'] = 'Laman Web';
+$labels['typeblog'] = 'Blog';
+$labels['typeprofile'] = 'Profil';
 $labels['addfield'] = 'Tambah kolom isian';
 $labels['addcontact'] = 'Tambah kontak baru';
 $labels['editcontact'] = 'Ubah kontak';
@@ -250,6 +273,7 @@ $labels['delete'] = 'Hapus';
 $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';
@@ -258,7 +282,9 @@ $labels['print'] = 'Cetak';
 $labels['export'] = 'Ekspor';
 $labels['exportvcards'] = 'Ekspor kontak dalam format vCard';
 $labels['newcontactgroup'] = 'Buat Grup baru';
-$labels['groupactions'] = 'Aksi untuk grup kontak';
+$labels['grouprename'] = 'Ganti nama grup';
+$labels['groupdelete'] = 'Hapus grup';
+$labels['groupremoveselected'] = 'Hapus kontak terpilih dari grup';
 $labels['previouspage'] = 'Perlihatkan himpunan sebelumnya';
 $labels['firstpage'] = 'Perlihatkan himpunan pertama';
 $labels['nextpage'] = 'Perlihatkan himpunan selanjutnya';
@@ -266,13 +292,17 @@ $labels['lastpage'] = 'Perlihatkan himpunan terakhir';
 $labels['group'] = 'Kelompok';
 $labels['groups'] = 'Kelompok';
 $labels['personaladrbook'] = 'Alamat pribadi';
+$labels['searchsave'] = 'Simpan pencarian';
+$labels['searchdelete'] = 'Hapus pencarian';
 $labels['import'] = 'Impor';
 $labels['importcontacts'] = 'Impor kontak';
 $labels['importfromfile'] = 'Impor dari berkas:';
+$labels['importtarget'] = 'Tambahkan kontak baru ke buku alamat:';
 $labels['importreplace'] = 'Ganti seluruh buku alamat';
 $labels['importtext'] = 'Anda bisa mengunggah kontak dari buku alamat yang sudah ada.<br/>Kami kebetulan mendukung pengimportan alamat dari format data <a href="http://en.wikipedia.org/wiki/VCard">vCard</a>.';
 $labels['done'] = 'Selesai';
 $labels['settingsfor'] = 'Pengaturan untuk';
+$labels['about'] = 'Informasi program';
 $labels['preferences'] = 'Pilihan';
 $labels['userpreferences'] = 'Pilihan pengguna';
 $labels['editpreferences'] = 'Ubah pilihan pengguna';
@@ -284,6 +314,8 @@ $labels['edititem'] = 'Ubah item';
 $labels['preferhtml'] = 'Lebih suka HTML';
 $labels['defaultcharset'] = 'Default Character';
 $labels['htmlmessage'] = 'Pesan HTML';
+$labels['dateformat'] = 'Format tanggal';
+$labels['timeformat'] = 'Format waktu';
 $labels['prettydate'] = 'Tanggal Cantik';
 $labels['setdefault'] = 'Pengaturan Awal';
 $labels['autodetect'] = 'Otomatis';
@@ -312,6 +344,7 @@ $labels['readwhendeleted'] = 'Tandai pesan sebagai terbaca saat dihapus';
 $labels['flagfordeletion'] = 'Tandai pesan untuk penghapusan daripada dihapus';
 $labels['skipdeleted'] = 'Jangan tampilkan pesan terhapus';
 $labels['deletealways'] = 'Jika gagal memindakan ke tempat sampah, langsung hapus';
+$labels['deletejunk'] = 'Langsung hapus pesan di kotak sampah';
 $labels['showremoteimages'] = 'Tampilkan remote inline images';
 $labels['fromknownsenders'] = 'dari pengirim yang dikenal';
 $labels['always'] = 'selalu';
@@ -332,11 +365,12 @@ $labels['advancedoptions'] = 'Pilihan canggih';
 $labels['focusonnewmessage'] = 'Pusatkan jendela broswer saat ada pesan baru';
 $labels['checkallfolders'] = 'Periksa semua map untuk pesan baru';
 $labels['displaynext'] = 'Setelah menghapus/memindahkan, tampilkan pesan berikutnya';
+$labels['defaultfont'] = 'Huruf standar untuk pesan HTML';
 $labels['mainoptions'] = 'Pilihan Utama';
+$labels['browseroptions'] = 'Pilihan peramban web';
 $labels['section'] = 'Bagian';
 $labels['maintenance'] = 'Perbaikan';
 $labels['newmessage'] = 'Pesan baru';
-$labels['listoptions'] = 'Daftar Pilihan';
 $labels['signatureoptions'] = 'Opsi tanda tangan';
 $labels['whenreplying'] = 'Ketika membalas';
 $labels['replytopposting'] = 'Tulis pesan baru diatas pesan asli';
@@ -349,13 +383,22 @@ $labels['replysignaturepos'] = 'ketika membalas atau meneruskan pesan tambahkan
 $labels['belowquote'] = 'Dibawah kutipan';
 $labels['abovequote'] = 'Diatas kutipan';
 $labels['insertsignature'] = 'Isi tanda tangan';
-$labels['previewpanemarkread'] = 'Tandai pesan yang sudah dilihat ';
+$labels['previewpanemarkread'] = 'Tandai pesan yang sudah dilihat';
 $labels['afternseconds'] = 'setelah $n detik';
 $labels['reqmdn'] = 'Selalu meminta tanda terima kembali';
 $labels['reqdsn'] = 'Selalu meminta pemberitahuan status terkirim';
 $labels['replysamefolder'] = 'Taruh balasan di folder yang sama dengan pesan yang dibalas';
+$labels['defaultaddressbook'] = 'Tambahkan kontak baru ke buku alamat terpilih';
+$labels['autocompletesingle'] = 'Lewatkan alamat email alternatif pada pelengkapan otomatis';
+$labels['listnamedisplay'] = 'Daftar kontak sebagai';
+$labels['spellcheckbeforesend'] = 'Periksa ejaan sebelum mengirimkan pesan';
+$labels['spellcheckoptions'] = 'Pilihan Ejaan';
+$labels['spellcheckignoresyms'] = 'Abaikan kata-kata yang bersimbol';
+$labels['spellcheckignorenums'] = 'Abaikan kata-kata yang bernomor';
+$labels['spellcheckignorecaps'] = 'Abaikan kata-kata dengan huruf besar semua';
+$labels['addtodict'] = 'Tambahkan ke kamus';
+$labels['mailtoprotohandler'] = 'Daftarkan pengampu protokol untuk link mailto:';
 $labels['folder'] = 'Folder';
-$labels['folders'] = 'Semua Folder';
 $labels['foldername'] = 'Nama folder';
 $labels['subscribed'] = 'Subscribed';
 $labels['messagecount'] = 'Pesan-pesan';
@@ -377,6 +420,12 @@ $labels['sharedfolder'] = 'Folder publik';
 $labels['sortby'] = 'Urut berdasarkan';
 $labels['sortasc'] = 'Urut menaik';
 $labels['sortdesc'] = 'Urut menurun';
+$labels['undo'] = 'Batalkan';
+$labels['plugin'] = 'Pengaya';
+$labels['version'] = 'Versi';
+$labels['source'] = 'Sumber';
+$labels['license'] = 'Lisensi';
+$labels['support'] = 'Dukungan';
 $labels['B'] = 'B';
 $labels['KB'] = 'KB';
 $labels['MB'] = 'MB';
@@ -400,4 +449,3 @@ $labels['japanese'] = 'Jepang';
 $labels['korean'] = 'Korea';
 $labels['chinese'] = 'Cina';
 
-?>
index bf1f25269433ae3f1ab99bef7e478c264a619639..7ed20754cda050e4fa16fde5dca3dbe85cb2b742 100644 (file)
@@ -1,27 +1,25 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/id_ID/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Putu Arya Sabda Wijaya <ptaryasw@isi-dps.ac.id>                    |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 5139 2011-08-28 09:47:15Z alec $
-
+ +-----------------------------------------------------------------------+
+ | localization/id_ID/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Putu Arya Sabda Wijaya <Unknown>                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $messages = array();
+$messages['errortitle'] = 'Terjadi galat!';
 $messages['loginfailed'] = 'Gagal masuk';
 $messages['cookiesdisabled'] = 'Browser Anda tidak menerima cookies';
 $messages['sessionerror'] = 'Session Anda invalid atau kadaluwarsa';
-$messages['imaperror'] = 'Koneksi ke IMAP server gagal';
+$messages['storageerror'] = 'Koneksi ke IMAP server gagal';
 $messages['servererror'] = 'Server Error!';
 $messages['servererrormsg'] = 'Server Error: $msg';
 $messages['dberror'] = 'Basis data Error!';
@@ -43,10 +41,12 @@ $messages['messagesaved'] = 'Menyimpan pesan ke daftar tunggu';
 $messages['successfullysaved'] = 'Berhasil disimpan';
 $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';
 $messages['blockedimages'] = 'Untuk melindungi privasi Anda, gambar-gambar diluar server diblok pada pesan ini.';
 $messages['encryptedmessage'] = 'Pesan ini terenkripsi dan tidak bisa ditampilkan. Maaf!';
 $messages['nocontactsfound'] = 'Kontak tidak ditemukan';
 $messages['contactnotfound'] = 'Kontak yang diminta tidak ditemukan';
+$messages['contactsearchonly'] = 'Masukkan jenis pencarian untuk mencari kontak';
 $messages['sendingfailed'] = 'Pengiriman pesan gagal';
 $messages['senttooquickly'] = 'Mohon tunggu $sec detik sebelum mengirim pesan ini';
 $messages['errorsavingsent'] = 'Error ketika menyimpan pesan terkirim';
@@ -56,9 +56,12 @@ $messages['errorcopying'] = 'Pesan tidak dapat disalin';
 $messages['errordeleting'] = 'Pesan tidak bisa dihapus';
 $messages['errormarking'] = 'Tidak dapat menandai pesan';
 $messages['deletecontactconfirm'] = 'Apakah anda yakin untuk menghapus kontak terpilih?';
+$messages['deletegroupconfirm'] = 'Yakinkah Anda ingin menhapus grup terpilih?';
 $messages['deletemessagesconfirm'] = 'Yakin menghapus pesan terpilih?';
 $messages['deletefolderconfirm'] = 'Apakah anda benar-benar ingin menghapus map ini?';
 $messages['purgefolderconfirm'] = 'Yakin menghapus semua pesan pada map ini?';
+$messages['contactdeleting'] = 'Menghapus kontak...';
+$messages['groupdeleting'] = 'Menghapus grup...';
 $messages['folderdeleting'] = 'Menghapus map...';
 $messages['foldermoving'] = 'Memindahkan map...';
 $messages['foldersubscribing'] = 'Melanggankan folder';
@@ -73,10 +76,10 @@ $messages['nosubjectwarning'] = '"Judul" kosong. Isi judul sekarang?';
 $messages['nobodywarning'] = 'Kirim pesan ini tanpa teks?';
 $messages['notsentwarning'] = 'Pesan belum terkirim. Buang pesan Anda?';
 $messages['noldapserver'] = 'Tolong pilih server LDAP untuk pencarian';
-$messages['nocontactsreturned'] = 'Kontak kosong';
 $messages['nosearchname'] = 'Tolong masukkan nama kontak atau alamat email';
 $messages['notuploadedwarning'] = 'Proses upload belum selesai. Silahkan tunggu atau batalkan proses upload';
 $messages['searchsuccessful'] = '$nr pesan ditemukan';
+$messages['contactsearchsuccessful'] = 'Ditemukan $nr  kontak';
 $messages['searchnomatch'] = 'Pencarian hasilnya nihil';
 $messages['searching'] = 'Mencari...';
 $messages['checking'] = 'Memeriksa...';
@@ -97,10 +100,14 @@ $messages['sourceisreadonly'] = 'Sumber dari alamat ini hanya dapat dibaca';
 $messages['errorsavingcontact'] = 'Tidak bisa menyimpan alamat kontak';
 $messages['movingmessage'] = 'Memindahkan pesan...';
 $messages['copyingmessage'] = 'Menyalin pesan...';
+$messages['copyingcontact'] = 'Menyalin kontak...';
 $messages['deletingmessage'] = 'Menghapus pesan...';
 $messages['markingmessage'] = 'Menandai Pesan...';
+$messages['addingmember'] = 'Menambahkan kontak ke grup...';
+$messages['removingmember'] = 'Menyingkirkan kontak dari grup...';
 $messages['receiptsent'] = 'Berhasil mengirim pemberitahuan tanda terima telah terbaca';
 $messages['errorsendingreceipt'] = 'Tidak dapat mengirim tanda terima';
+$messages['deleteidentityconfirm'] = 'Yakin untuk menghapus identitas ini?';
 $messages['nodeletelastidentity'] = 'Anda tidak bida mengapus identitas ini, ini identitas yang terakhir';
 $messages['forbiddencharacter'] = 'Nama folder mengandung karakter terlarang';
 $messages['selectimportfile'] = 'Mohon pilih sebuah berkas untuk diunggah';
@@ -120,7 +127,6 @@ $messages['smtpautherror'] = 'SMTP Error ($code): Otentifikasi gagal';
 $messages['smtpfromerror'] = 'SMTP Error ($code): Gagal mengatur pengirim "$from" ($msg)';
 $messages['smtptoerror'] = 'SMTP Error ($code): Gagal menambah penerima "$to" ($msg)';
 $messages['smtprecipientserror'] = 'SMTP Error ($code): Tidak dapat menguraikan daftar penerima';
-$messages['smtpdsnerror'] = 'SMTP Error: Tidak ada dukungan untuk pemberitahuan status terkirim';
 $messages['smtperror'] = 'SMTP Error : $msg';
 $messages['emailformaterror'] = 'Alamat e-mail salah: $email';
 $messages['toomanyrecipients'] = 'Terlalu banyak penerima. Batas maksimal penerima adalah $max';
@@ -128,18 +134,27 @@ $messages['maxgroupmembersreached'] = 'Jumlah grup melebihi jumlah maksimum $max
 $messages['internalerror'] = 'Terjadi kesalahan internal. Silahkan diulang kembali';
 $messages['contactdelerror'] = 'Kontak tidak bisa dihapus';
 $messages['contactdeleted'] = 'Kontak berhasil dihapus';
+$messages['contactrestoreerror'] = 'Tidak bisa mengembalikan kontak yang terhapus.';
+$messages['contactrestored'] = 'Kontak berhasil dikembalikan.';
 $messages['groupdeleted'] = 'Grup berhasil dihapus';
 $messages['grouprenamed'] = 'Grup berhasil dinamai kembali';
 $messages['groupcreated'] = 'Grub berhasil dibuat';
+$messages['savedsearchdeleted'] = 'Pencarian tersimpan berhasil dihapus.';
+$messages['savedsearchdeleteerror'] = 'Tidak bisa menghapus pencarian tersimpan.';
+$messages['savedsearchcreated'] = 'Pencarian tersimpan berhasil dibuat.';
+$messages['savedsearchcreateerror'] = 'Tidak bisa membuat pencarian tersimpan.';
 $messages['messagedeleted'] = 'Pesan berhasil dihapus';
 $messages['messagemoved'] = 'Pesan berhasil dipindahkan';
 $messages['messagecopied'] = 'Pesan berhasil disalin';
 $messages['messagemarked'] = 'Pesan berhasil ditandai';
 $messages['autocompletechars'] = 'Masukkan setidaknya $min karakter untuk swaparipurna';
+$messages['autocompletemore'] = 'Ada banyak entri yang ditemukan. Tolong ketikkan lebih banyak karakter.';
 $messages['namecannotbeempty'] = 'Nama tidak boleh kosong';
 $messages['nametoolong'] = 'Nama terlalu panjang';
 $messages['folderupdated'] = 'Folder berhasil diperbarui';
 $messages['foldercreated'] = 'Folder berhasil dibuat';
 $messages['invalidimageformat'] = 'Bukan format gambar yang valid';
+$messages['mispellingsfound'] = 'Terdapat kesalahan ejaan pada pesan.';
+$messages['parentnotwritable'] = 'Tidak bisa membuat/memindahkan map ke map induk. Tidak memiliki hak akses.';
+$messages['messagetoobig'] = 'Pesan terlalu besar untuk diproses.';
 
-?>
index f7c0b1ab856ea52b8b5f553d0016c8f65302969e..83b9ad6eb88c0883546ba1bc40835d5a88fe2f8f 100644 (file)
@@ -5,8 +5,11 @@
  | program/localization/index.inc                                        |
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
- | Copyright (C) 2005-2009, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2005-2012, 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:                                                              |
  |   Provide a centralized location table                                |
  +-----------------------------------------------------------------------+
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
-
- $Id: index.inc 4659 2011-04-15 15:38:35Z thomasb $
-
 */
 
 // langage codes according to ISO 639-1
 // country codes according to ISO 3166-1 (Alpha-2)
-// original names from http://www.mediaglyphs.org/mg/p/langnames.html
+// original names from http://www.mediaglyphs.org/mg/?p=langnames
 
 $rcube_languages = array(
   'sq_AL' => 'Albanian (Shqip)',
@@ -31,6 +31,7 @@ $rcube_languages = array(
   'ast'          => 'Asturiana (Asturianu)',
   'az_AZ' => 'Azerbaijani (Azərbaycanca)',
   'eu_ES' => 'Basque (Euskara)',
+  'be_BE' => 'Belarusian (беларуская мова)',
   'bn_BD' => 'Bengali (বাংলা)',
   'bs_BA' => 'Bosnian (Bosanski)',
   'br'   => 'Breton (Brezhoneg)',
@@ -60,22 +61,24 @@ $rcube_languages = array(
   'hu_HU' => 'Hungarian (Magyar)',
   'is_IS' => 'Icelandic (Íslenska)',
   'id_ID' => 'Indonesian (Bahasa Indonesia)',
+  'ia'    => 'Interlingua',
   'ga_IE' => 'Irish (Gaedhilge)',
   'it_IT' => 'Italian (Italiano)',
   'ja_JP' => 'Japanese (日本語)',
-  'kh_KH' => 'Khmer (ភាសាខ្មែរ)',
+  'km_KH' => 'Khmer (ភាសាខ្មែរ)',
   'ko_KR' => 'Korean (한국어)',
   'ku'    => 'Kurdish (Kurmancî)',
   'lv_LV' => 'Latvian (Latviešu)',
   'lt_LT' => 'Lithuanian (Lietuviškai)',
   'mk_MK' => 'Macedonian (Македонски)',
   'ms_MY' => 'Malay (Bahasa Melayu)',
+  'ml_IN' => 'Malayalam (മലയാളം)',
   'mr_IN' => 'Marathi (मराठी)',
   'ne_NP' => 'Nepali (नेपाली)',
   'nb_NO' => 'Norwegian (Bokmål)',
   'nn_NO' => 'Norwegian (Nynorsk)',
   'ps'           => 'Pashto',
-  'fa'    => 'Persian (دری)',
+  'fa_IR' => 'Persian (فارسی)',
   'pl_PL' => 'Polish (Polski)',
   'pt_BR' => 'Portuguese (Brasil)',
   'pt_PT' => 'Portuguese (Português)',
@@ -105,26 +108,36 @@ $rcube_language_aliases = array(
   'ca' => 'ca_ES',
   'cn' => 'zh_CN',
   'cs' => 'cs_CZ',
+  'cy' => 'cy_GB',
   'cz' => 'cs_CZ',
   'da' => 'da_DK',
   'de' => 'de_DE',
   'ee' => 'et_EE',
+  'et' => 'et_EE',
   'el' => 'el_GR',
   'en' => 'en_US',
   'eu' => 'eu_ES',
+  'fa' => 'fa_IR',
   'ga' => 'ga_IE',
   'ge' => 'ka_GE',
   'gl' => 'gl_ES',
   'he' => 'he_IL',
   'hi' => 'hi_IN',
   'hr' => 'hr_HR',
+  'hy' => 'hy_AM',
   'ja' => 'ja_JP',
+  'ka' => 'ka_GE',
   'ko' => 'ko_KR',
   'kr' => 'ko_KR',
+  'kh' => 'km_KH',
+  'kh_KH' => 'km_KH',
+  'km' => 'km_KH',
   'ne' => 'ne_NP',
   'no' => 'nn_NO',
   'ms' => 'ms_MY',
   'mr' => 'mr_IN',
+  'ml' => 'ml_IN',
+  'ml_ML' => 'ml_IN',
   'pl' => 'pl_PL',
   'tw' => 'zh_TW',
   'si' => 'si_LK',
@@ -134,6 +147,7 @@ $rcube_language_aliases = array(
   'sr_latin' => 'bs_BA',
   'se' => 'sv_SE',
   'sv' => 'sv_SE',
+  'sq' => 'sq_AL',
   'uk' => 'uk_UA',
   'vn' => 'vi_VN',
   'vi' => 'vi_VN',
index fa1c037fb6d98419de6f801369a3541774e8d4d0..6f0c878b288e495cc60dce1eed2c1625e9bbf44c 100644 (file)
@@ -1,66 +1,66 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/is_IS/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2009, The Roundcube Dev Team                            |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Hakon Orri Asgeirsson <hakon at opex.is>                      |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 4410 2011-01-12 18:25:02Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/is_IS/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jóhannes Birgir Jensson <joi@betra.is>                       |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $labels = array();
-$labels['welcome'] = 'Vefpóstur';
+$labels['welcome'] = 'Velkomin í $product';
 $labels['username'] = 'Netfang';
 $labels['password'] = 'Lykilorð';
-$labels['server'] = 'Server';
+$labels['server'] = 'Póstþjónn';
 $labels['login'] = 'Innskrá';
 $labels['logout'] = 'Útskrá';
 $labels['mail'] = 'Tölvupóstur';
 $labels['settings'] = 'Stillingar';
-$labels['addressbook'] = 'Netfangaskrá';
+$labels['addressbook'] = 'Nafnaskrá';
 $labels['inbox'] = 'Innhólf';
 $labels['drafts'] = 'Drög';
 $labels['sent'] = 'Sent';
-$labels['trash'] = 'Eyddir hlutir';
+$labels['trash'] = 'Rusl';
 $labels['junk'] = 'Ruslpóstur';
-$labels['subject'] = 'Efni';
-$labels['from'] = 'Sendandi';
-$labels['to'] = 'Viðtakandi';
+$labels['subject'] = 'Titill';
+$labels['from'] = 'Frá';
+$labels['to'] = 'Til';
 $labels['cc'] = 'Afrit';
 $labels['bcc'] = 'Blint afrit';
-$labels['replyto'] = 'Reply-To';
-$labels['date'] = 'Dags';
+$labels['replyto'] = 'Svar til';
+$labels['followupto'] = 'Svar við';
+$labels['date'] = 'Dagsetning';
 $labels['size'] = 'Stærð';
 $labels['priority'] = 'Forgangur';
 $labels['organization'] = 'Stofnun';
-$labels['reply-to'] = 'Reply-To';
+$labels['readstatus'] = 'Lesmerking';
 $labels['mailboxlist'] = 'Möppur';
+$labels['folders'] = 'Möppur';
 $labels['messagesfromto'] = 'Skeyti $from til $to af $count';
+$labels['threadsfromto'] = 'Þræðir $from til $to af $count';
 $labels['messagenrof'] = 'Skeyti $nr af $count';
-$labels['moveto'] = 'færa í...';
-$labels['download'] = 'sækja';
-$labels['filename'] = 'Skrárnafn';
-$labels['filesize'] = 'Skrárstærð';
-$labels['preferhtml'] = 'Vil HTML';
-$labels['htmlmessage'] = 'HTML skeyti';
-$labels['prettydate'] = 'Fallegar dagsetningar';
-$labels['addtoaddressbook'] = 'Bæta í netfangaskrá';
-$labels['sun'] = 'sun';
-$labels['mon'] = 'mán';
-$labels['tue'] = 'þri';
-$labels['wed'] = 'mið';
-$labels['thu'] = 'fim';
-$labels['fri'] = 'fös';
-$labels['sat'] = 'lau';
+$labels['fromtoshort'] = '$from - $to af $count';
+$labels['copy'] = 'Afrit';
+$labels['move'] = 'Færa';
+$labels['moveto'] = 'Færa í...';
+$labels['download'] = 'Hlaða niður';
+$labels['filename'] = 'Skráarheiti';
+$labels['filesize'] = 'Skráarstærð';
+$labels['addtoaddressbook'] = 'Bæta í nafnaskrá';
+$labels['sun'] = 'sunn.';
+$labels['mon'] = 'mán.';
+$labels['tue'] = 'þrið.';
+$labels['wed'] = 'miðv.';
+$labels['thu'] = 'fimm.';
+$labels['fri'] = 'föst.';
+$labels['sat'] = 'laug.';
 $labels['sunday'] = 'sunnudagur';
 $labels['monday'] = 'mánudagur';
 $labels['tuesday'] = 'þriðjudagur';
@@ -68,141 +68,252 @@ $labels['wednesday'] = 'miðvikudagur';
 $labels['thursday'] = 'fimmtudagur';
 $labels['friday'] = 'föstudagur';
 $labels['saturday'] = 'laugardagur';
-$labels['jan'] = 'Jan';
-$labels['feb'] = 'Feb';
-$labels['mar'] = 'Mar';
-$labels['apr'] = 'Apr';
-$labels['may'] = 'Maí';
-$labels['jun'] = 'Jún';
-$labels['jul'] = 'Júl';
-$labels['aug'] = 'Ágú';
-$labels['sep'] = 'Sep';
-$labels['oct'] = 'Okt';
-$labels['nov'] = 'Nóv';
-$labels['dec'] = 'Des';
-$labels['longjan'] = 'Janúar';
-$labels['longfeb'] = 'Febrúar';
-$labels['longmar'] = 'Mars';
-$labels['longapr'] = 'Apríl';
-$labels['longmay'] = 'Maí';
-$labels['longjun'] = 'Júní';
-$labels['longjul'] = 'Júlí';
-$labels['longaug'] = 'Ágúst';
-$labels['longsep'] = 'September';
-$labels['longoct'] = 'Október';
-$labels['longnov'] = 'Nóvember';
-$labels['longdec'] = 'Desember';
-$labels['today'] = 'í dag';
+$labels['jan'] = 'jan';
+$labels['feb'] = 'feb';
+$labels['mar'] = 'mar';
+$labels['apr'] = 'apr';
+$labels['may'] = 'maí';
+$labels['longmay'] = 'maí';
+$labels['jun'] = 'jún';
+$labels['jul'] = 'júl';
+$labels['aug'] = 'ágú';
+$labels['sep'] = 'sep';
+$labels['oct'] = 'okt';
+$labels['nov'] = 'nóv';
+$labels['dec'] = 'des';
+$labels['longjan'] = 'janúar';
+$labels['longfeb'] = 'febrúar';
+$labels['longmar'] = 'mars';
+$labels['longapr'] = 'apríl';
+$labels['longjun'] = 'júní';
+$labels['longjul'] = 'júlí';
+$labels['longaug'] = 'ágúst';
+$labels['longsep'] = 'september';
+$labels['longoct'] = 'október';
+$labels['longnov'] = 'nóvember';
+$labels['longdec'] = 'desember';
+$labels['today'] = 'Í dag';
+$labels['refresh'] = 'Endurhlaða';
 $labels['checkmail'] = 'Gá að nýjum skeytum';
+$labels['compose'] = 'Semja skeyti';
 $labels['writenewmessage'] = 'Búa til nýtt skeyti';
+$labels['reply'] = 'Svara';
 $labels['replytomessage'] = 'Svara skeyti';
-$labels['replytoallmessage'] = 'Svara sendanda og öllum viðtakendum';
-$labels['forwardmessage'] = 'Framsenda skeyti';
+$labels['replytoallmessage'] = 'Svar til lista eða sendanda og allra viðtakenda';
+$labels['replyall'] = 'Svara öllum';
+$labels['replylist'] = 'Svar til lista';
+$labels['forward'] = 'Áframsenda';
+$labels['forwardinline'] = 'Áframsenda innan skeytis';
+$labels['forwardattachment'] = 'Áframsenda sem viðhengi';
+$labels['forwardmessage'] = 'Áframsenda skeyti';
 $labels['deletemessage'] = 'Eyða skeyti';
-$labels['movemessagetotrash'] = 'Færa skeyti í rusl';
+$labels['movemessagetotrash'] = 'Færa skeyti í rusl';
 $labels['printmessage'] = 'Prenta skeyti';
 $labels['previousmessage'] = 'Sýna fyrra skeyti';
-$labels['previousmessages'] = 'Sýna fyrri skammt af skeytum';
 $labels['firstmessage'] = 'Sýna fyrsta skeyti';
-$labels['firstmessages'] = 'Sýna fyrsta skammtinn af skeytum';
 $labels['nextmessage'] = 'Sýna næsta skeyti';
-$labels['nextmessages'] = 'Sýna næsta skammt af skeytum';
-$labels['lastmessage'] = 'Sýna síðasta skeytið';
-$labels['lastmessages'] = 'Sýna síðasta skammtinn af skeytum';
+$labels['lastmessage'] = 'Sýna síðasta skeyti';
 $labels['backtolist'] = 'Til baka í skeytalista';
 $labels['viewsource'] = 'Skoða kóða';
+$labels['mark'] = 'Merki';
 $labels['markmessages'] = 'Merkja skeyti';
 $labels['markread'] = 'Sem lesin';
 $labels['markunread'] = 'Sem ólesin';
 $labels['markflagged'] = 'Sem flögguð';
 $labels['markunflagged'] = 'Sem óflögguð';
+$labels['moreactions'] = 'Fleiri aðgerðir...';
+$labels['more'] = 'Meira';
+$labels['back'] = 'Til baka';
+$labels['options'] = 'Valkostir';
 $labels['select'] = 'Velja';
 $labels['all'] = 'Allt';
 $labels['none'] = 'Ekkert';
+$labels['nonesort'] = 'Ekkert';
+$labels['currpage'] = 'Núverandi síða';
 $labels['unread'] = 'Ólesið';
 $labels['flagged'] = 'Flaggað';
 $labels['unanswered'] = 'Ósvarað';
+$labels['deleted'] = 'Eytt';
+$labels['invert'] = 'Umhverfa';
 $labels['filter'] = 'Sía';
+$labels['list'] = 'Listi';
+$labels['threads'] = 'Þræðir';
+$labels['expand-all'] = 'Þenja allt út';
+$labels['expand-unread'] = 'Þenja ólesið';
+$labels['collapse-all'] = 'Fella allt saman';
+$labels['threaded'] = 'Þrætt';
+$labels['autoexpand_threads'] = 'Þenja skeytaþræði út';
+$labels['do_expand'] = 'allir þræðir';
+$labels['expand_only_unread'] = 'aðeins ólesin skeyti';
+$labels['fromto'] = 'Frá/Til';
+$labels['flag'] = 'Flagg';
+$labels['attachment'] = 'Viðhengi';
+$labels['sentdate'] = 'Sendingardagur';
+$labels['arrival'] = 'Komudagur';
+$labels['asc'] = 'hækkandi';
+$labels['desc'] = 'lækkandi';
+$labels['listcolumns'] = 'Listadálkar';
+$labels['listsorting'] = 'Röðunardálkur';
+$labels['listorder'] = 'Röðun';
+$labels['listmode'] = 'Listayfirlit';
+$labels['folderactions'] = 'Möppuaðgerðir...';
 $labels['compact'] = 'Pakka';
 $labels['empty'] = 'Tæma';
-$labels['purge'] = 'Hreinsa';
 $labels['quota'] = 'Gagnamagn';
 $labels['unknown'] = 'óþekkt';
 $labels['unlimited'] = 'ótakmarkað';
 $labels['quicksearch'] = 'Flýtileit';
 $labels['resetsearch'] = 'Tæma leit';
+$labels['searchmod'] = 'Leitarskilyrði';
+$labels['msgtext'] = 'Allt skeytið';
 $labels['openinextwin'] = 'Opna í nýjum glugga';
-$labels['compose'] = 'Semja skeyti';
+$labels['emlsave'] = 'Niðurhlaða (.eml)';
+$labels['editasnew'] = 'Breyta sem nýju';
 $labels['savemessage'] = 'Vista drög';
 $labels['sendmessage'] = 'Senda skeytið núna';
 $labels['addattachment'] = 'Hengja við';
 $labels['charset'] = 'Stafasett';
 $labels['editortype'] = 'Gerð ritils';
 $labels['returnreceipt'] = 'Kvittun við lestur';
-$labels['checkspelling'] = 'Villuleita';
+$labels['dsn'] = 'Afhendingarstaða';
+$labels['mailreplyintro'] = 'Þann $date, $sender reit:';
+$labels['originalmessage'] = 'Upprunalegt skeyti';
+$labels['editidents'] = 'Breyta sjálfum';
+$labels['spellcheck'] = 'Stafsetning';
+$labels['checkspelling'] = 'Athuga stafsetningu';
 $labels['resumeediting'] = 'Aftur í ritham';
 $labels['revertto'] = 'Hverfa til';
+$labels['attach'] = 'Viðhengi';
 $labels['attachments'] = 'Viðhengi';
-$labels['upload'] = 'Senda';
+$labels['upload'] = 'Hlaða upp';
+$labels['uploadprogress'] = '$percent ($current af $total)';
 $labels['close'] = 'Loka';
+$labels['messageoptions'] = 'Skeytisvalmöguleikar...';
 $labels['low'] = 'Lágt';
 $labels['lowest'] = 'Lægst';
 $labels['normal'] = 'Venjulegt';
 $labels['high'] = 'Hátt';
 $labels['highest'] = 'Hæst';
-$labels['nosubject'] = '(ekkert efni)';
-$labels['showimages'] = 'Birta myndir';
+$labels['nosubject'] = '(án titils)';
+$labels['showimages'] = 'Sýna myndir';
 $labels['alwaysshow'] = 'Sýna alltaf myndir frá $sender';
+$labels['isdraft'] = 'Þetta eru drög að skeyti';
 $labels['htmltoggle'] = 'HTML';
-$labels['plaintoggle'] = 'Einfaldur';
-$labels['savesentmessagein'] = 'Vista send skeyti í ';
+$labels['plaintoggle'] = 'Venjulegur texti';
+$labels['savesentmessagein'] = 'Vista send skeyti í';
 $labels['dontsave'] = 'ekki vista';
 $labels['maxuploadsize'] = 'Leyfileg hámarksstærð skjals er $size';
 $labels['addcc'] = 'Bæta við Cc';
 $labels['addbcc'] = 'Bæta við Bcc';
 $labels['addreplyto'] = 'Bæta við Reply-To';
+$labels['addfollowupto'] = 'Nýtt svar við';
 $labels['mdnrequest'] = 'Sendandi þessa skeytið hefur óskað þess að þú látir vita að þú hafir lesið þetta skeyti. Viltu láta hann vita?';
 $labels['receiptread'] = 'Kvittun (lesa)';
 $labels['yourmessage'] = 'Þetta er kvittun fyrir skeytið';
 $labels['receiptnote'] = 'ATH: Þessi kvittun segir aðeins til um að skeytið kom upp á skjánum á viðtakanda. Það er engin sönnun um að hann hafi lesið eða skilið innihaldið.';
-$labels['name'] = 'Nafn til birtingar';
-$labels['firstname'] = 'Fornafn';
+$labels['name'] = 'Skjánafn';
+$labels['firstname'] = 'Eiginnafn';
 $labels['surname'] = 'Eftirnafn';
+$labels['middlename'] = 'Millinafn';
+$labels['nameprefix'] = 'Forskeyti';
+$labels['namesuffix'] = 'Viðskeyti';
+$labels['nickname'] = 'Stuttnefni';
+$labels['jobtitle'] = 'Starfstitill';
+$labels['department'] = 'Deild';
+$labels['gender'] = 'Kyn';
+$labels['maidenname'] = 'Ættarnafn móður';
 $labels['email'] = 'Netfang';
-$labels['addcontact'] = 'Bæta við nýju';
+$labels['phone'] = 'Sími';
+$labels['address'] = 'Heimilisfang';
+$labels['street'] = 'Götuheiti';
+$labels['locality'] = 'Staður';
+$labels['zipcode'] = 'Póstnúmer';
+$labels['region'] = 'Ríki/Fylki';
+$labels['country'] = 'Land';
+$labels['birthday'] = 'Afmælisdagur';
+$labels['anniversary'] = 'Afmæli';
+$labels['website'] = 'Vefur';
+$labels['instantmessenger'] = 'Spjall';
+$labels['notes'] = 'Glósur';
+$labels['male'] = 'karlkyns';
+$labels['female'] = 'kvenkyns';
+$labels['manager'] = 'Stjórnandi';
+$labels['assistant'] = 'Aðstoðarmaður';
+$labels['typeassistant'] = 'Aðstoðarmaður';
+$labels['spouse'] = 'Maki';
+$labels['allfields'] = 'Öll svæði';
+$labels['search'] = 'Leit';
+$labels['advsearch'] = 'Ítarleg leit';
+$labels['advanced'] = 'Flóknari stillingar';
+$labels['other'] = 'Annað';
+$labels['typeother'] = 'Annað';
+$labels['typehome'] = 'Heimamappa';
+$labels['typework'] = 'Vinnusími';
+$labels['typemobile'] = 'Farsími';
+$labels['typemain'] = 'Aðalstillingar';
+$labels['typehomefax'] = 'Heimafax';
+$labels['typeworkfax'] = 'Vinnufax';
+$labels['typecar'] = 'Bíll';
+$labels['typepager'] = 'Friðþjófur';
+$labels['typevideo'] = 'Myndband';
+$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['edit'] = 'Laga';
+$labels['contacts'] = 'Tengiliðir';
+$labels['contactproperties'] = 'Eiginleikar';
+$labels['personalinfo'] = 'Persónulegar upplýsingar';
+$labels['edit'] = 'Breyta';
 $labels['cancel'] = 'Hætta við';
 $labels['save'] = 'Vista';
 $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 netföngum';
+$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['previouspage'] = 'Sýni fyrri skammt';
-$labels['firstpage'] = 'Sýna fyrsta skammt';
-$labels['nextpage'] = 'Sýna næsta skammt';
-$labels['lastpage'] = 'Sýna síðasta skammt';
+$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';
+$labels['firstpage'] = 'Sýna fyrstu síðu';
+$labels['nextpage'] = 'Sýna næstu síðu';
+$labels['lastpage'] = 'Sýna síðustu síðu';
+$labels['group'] = 'Hópur';
 $labels['groups'] = 'Hópar';
 $labels['personaladrbook'] = 'Persónuleg heimilisföng';
+$labels['searchsave'] = 'Vista leit';
+$labels['searchdelete'] = 'Eyða leit';
 $labels['import'] = 'Flytja inn';
 $labels['importcontacts'] = 'Flytja inn nafnspjöld';
 $labels['importfromfile'] = 'Flytja inn af skrá';
+$labels['importtarget'] = 'Bæta nýjum tengiliðum við:';
 $labels['importreplace'] = 'Skipta út allri netfangaskránni';
 $labels['importtext'] = 'Þú getur flutt inn nafnspjöld frá núverandi netfangaskrá. <br/>Nú styðjum við innflutning á netföngum á <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> formi.';
-$labels['done'] = 'Afgreitt';
+$labels['done'] = 'Búið';
 $labels['settingsfor'] = 'Stillingar fyrir';
+$labels['about'] = 'Um forritið';
 $labels['preferences'] = 'Stillingar';
 $labels['userpreferences'] = 'Notendastillingar';
 $labels['editpreferences'] = 'Breyta notendastillingum';
-$labels['identities'] = 'Identities';
-$labels['manageidentities'] = 'Manage identities for this account';
-$labels['newidentity'] = 'New identity';
+$labels['identities'] = 'Auðkenni';
+$labels['manageidentities'] = 'Stjórna auðkennum þessa reiknings';
+$labels['newidentity'] = 'Nýtt auðkenni';
 $labels['newitem'] = 'Nýtt';
-$labels['edititem'] = 'Laga';
+$labels['edititem'] = 'Breyta';
+$labels['preferhtml'] = 'Vil HTML';
+$labels['defaultcharset'] = 'Venjulegt stafasett';
+$labels['htmlmessage'] = 'HTML skeyti';
+$labels['dateformat'] = 'Snið dagsetningar';
+$labels['timeformat'] = 'Tímasnið';
+$labels['prettydate'] = 'Fallegar dagsetningar';
 $labels['setdefault'] = 'Gera sjálfgilt';
 $labels['autodetect'] = 'Sjálfvirkt';
 $labels['language'] = 'Tungumál';
@@ -211,21 +322,25 @@ $labels['pagesize'] = 'Línur á síðu';
 $labels['signature'] = 'Undirskrift';
 $labels['dstactive'] = 'Sumar-/vetratími';
 $labels['htmleditor'] = 'Skrifa HTML-skeyti';
+$labels['htmlonreply'] = 'sem svar við HTML-skeytum aðeins';
 $labels['htmlsignature'] = 'HTML-undirskrift';
 $labels['previewpane'] = 'Sýna forskoðunarglugga';
 $labels['skin'] = 'Sniðmát á viðmóti';
 $labels['logoutclear'] = 'Tæma rusl við útskráningu';
-$labels['logoutcompact'] = 'Þjappa Innhólfi við útskráningu';
-$labels['uisettings'] = 'Notendasniðmát';
+$labels['logoutcompact'] = 'Þjappa innhólf við útskráningu';
+$labels['uisettings'] = 'Notandaviðmót';
 $labels['serversettings'] = 'Stillingar þjóns';
-$labels['mailboxview'] = 'Pósthólfs útlit';
-$labels['mdnrequests'] = 'Viðvaranir sendanda';
+$labels['mailboxview'] = 'Útlit pósthólfs';
+$labels['mdnrequests'] = 'Við beiðni um kvittun skeytis';
 $labels['askuser'] = 'spyrja notanda';
-$labels['autosend'] = 'senda sjálfkrafa';
+$labels['autosend'] = 'senda kvittun';
+$labels['autosendknown'] = 'senda kvittun til tengiliða minna, spyrja mig ella';
+$labels['autosendknownignore'] = 'senda kvittun til tengiliða minna, hunsa ella';
 $labels['ignore'] = 'hunsa';
 $labels['readwhendeleted'] = 'Merkja skeyti sem lesið þegar því er hent';
 $labels['flagfordeletion'] = 'Merkja skeyti til eyðingar í stað þess að eyða';
 $labels['skipdeleted'] = 'Ekki sýna eydd skeyti';
+$labels['deletealways'] = 'Ef ekki er hægt að setja skeytið í ruslafötuna, henda þeim';
 $labels['showremoteimages'] = 'Sýna myndir annarsstaðar frá';
 $labels['fromknownsenders'] = 'frá þekktum sendendum';
 $labels['always'] = 'alltaf';
@@ -234,30 +349,97 @@ $labels['autosavedraft'] = 'Vista sjálfkrafa sem drög';
 $labels['everynminutes'] = '$n mínútu fresti';
 $labels['keepalive'] = 'Athuga ný skeyti á';
 $labels['never'] = 'aldrei';
+$labels['immediately'] = 'samstundis';
 $labels['messagesdisplaying'] = 'Sýni skeyti';
 $labels['messagescomposition'] = 'Semja skeyti';
 $labels['mimeparamfolding'] = 'Nafn á viðhengjum';
 $labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
 $labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
-$labels['2047folding'] = 'Full RFC 2047 (other)';
-$labels['advancedoptions'] = 'Frekari möguleikar';
+$labels['2047folding'] = 'Full RFC 2047 (annað)';
+$labels['force7bit'] = 'Nota MIME kóðun fyrir 8-bita stafi';
+$labels['advancedoptions'] = 'Ítarlegir valkostir';
 $labels['focusonnewmessage'] = 'Láta glugga beinast að nýju skeyti';
 $labels['checkallfolders'] = 'Athuga ný skeyti í öllum möppum';
+$labels['displaynext'] = 'Að eyðingu/færslu lokinni sýna næsta skeyti';
+$labels['defaultfont'] = 'Sjálfgefið letur HTML-skeyta';
+$labels['mainoptions'] = 'Aðalstillingar';
+$labels['section'] = 'Hluti';
+$labels['maintenance'] = 'Viðhald';
+$labels['newmessage'] = 'Nýtt skeyti';
+$labels['signatureoptions'] = 'Valkostir undirskriftar';
+$labels['whenreplying'] = 'Þegar svarað';
+$labels['replytopposting'] = 'hefja nýtt skeyti fyrir ofan eldra';
+$labels['replybottomposting'] = 'hefja nýtt skeyti undir eldra';
+$labels['replyremovesignature'] = 'Þegar svarað fjarlægja upphaflega undirskrift úr skeyti';
+$labels['autoaddsignature'] = 'Bæta undirskrift við sjálfkrafa';
+$labels['newmessageonly'] = 'ný skeyti eingöngu';
+$labels['replyandforwardonly'] = 'svör og áframsendingar eingöngu';
+$labels['replysignaturepos'] = 'Þegar skeytum er svarað eða áframsend setja undirskrift';
+$labels['belowquote'] = 'undir tilvitnun';
+$labels['abovequote'] = 'fyrir ofan tilvitnun';
+$labels['insertsignature'] = 'Bæta undirskrift við';
+$labels['previewpanemarkread'] = 'Merka forskoðuð skeyti sem lesin';
+$labels['afternseconds'] = 'eftir $n sekúndur';
+$labels['reqmdn'] = 'Biðja ávallt um kvittun';
+$labels['reqdsn'] = 'Biðja ávallt um sendingarstöðu';
+$labels['replysamefolder'] = 'Setja svarskeyti í möppu sem upphaflegt skeyti er í';
+$labels['defaultaddressbook'] = 'Bæta nýjum tengiliðum við valda netfangaskrá';
+$labels['autocompletesingle'] = 'Sleppa aukanetföngum í sjálfklárun';
+$labels['listnamedisplay'] = 'Lista tengiliði sem';
+$labels['spellcheckbeforesend'] = 'Athuga stafsetningu áður en skeyti er sent';
+$labels['spellcheckoptions'] = 'Stafsetningarvalkostir';
+$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['messagecount'] = 'Skeyti';
 $labels['create'] = 'Búa til';
 $labels['createfolder'] = 'Búa til nýja möppu';
-$labels['managefolders'] = 'Sýsla með möppum';
+$labels['managefolders'] = 'Sýsla með möppur';
 $labels['specialfolders'] = 'Sérstakar möppur';
+$labels['properties'] = 'Eiginleikar';
+$labels['folderproperties'] = 'Eiginleikar möppu';
+$labels['parentfolder'] = 'Yfirmappa';
+$labels['location'] = 'Staðsetning';
+$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['sortby'] = 'Raða eftir';
 $labels['sortasc'] = 'Raða vaxandi';
 $labels['sortdesc'] = 'Raða minnkandi';
+$labels['undo'] = 'Taka til baka';
+$labels['plugin'] = 'Viðbætur';
+$labels['version'] = 'Útgáfa';
+$labels['source'] = 'Uppruni';
+$labels['license'] = 'Notkunarleyfi';
+$labels['support'] = 'Fá aðstoð';
 $labels['B'] = 'B';
 $labels['KB'] = 'KB';
 $labels['MB'] = 'MB';
 $labels['GB'] = 'GB';
+$labels['unicode'] = 'Unicode';
+$labels['english'] = 'Enska';
+$labels['westerneuropean'] = 'Vesturevrópskt';
+$labels['easterneuropean'] = 'Austurevrópskt';
+$labels['southeasterneuropean'] = 'Suðausturevrópskt';
+$labels['baltic'] = 'Eystrasalts';
+$labels['cyrillic'] = 'Kýrílíska';
+$labels['arabic'] = 'Arabíska';
+$labels['greek'] = 'Gríska';
+$labels['hebrew'] = 'Hebreska';
+$labels['turkish'] = 'Tyrkneska';
+$labels['nordic'] = 'Norðurlanda';
+$labels['thai'] = 'Tælenskt';
+$labels['celtic'] = 'Keltneskt';
+$labels['vietnamese'] = 'Víetnamskt';
+$labels['japanese'] = 'Japanskt';
+$labels['korean'] = 'Kóreska';
+$labels['chinese'] = 'Kínverska';
 
-?>
index ecde89672c92686b5e1aaf766336bebae54d8221..5705e55cb9dab59f65d87423292212c689012fdf 100644 (file)
@@ -1,27 +1,24 @@
 <?php
 
 /*
-
  +-----------------------------------------------------------------------+
- | language/en_GB/messages.inc                                           |
+ | localization/is_IS/messages.inc                                       |
  |                                                                       |
  | Language file of the Roundcube Webmail client                         |
- | Copyright (C) 2005-2007, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Weiran Zhang (weiran@weiran.co.uk)                            |
+ | Author: Thomas <Unknown>                                              |
  +-----------------------------------------------------------------------+
-
- @version $Id: messages.inc 4410 2011-01-12 18:25:02Z thomasb $
-
+ @version $Id$
 */
 
 $messages = array();
-$messages['loginfailed']  = 'Innskráning mistókst';
+$messages['loginfailed'] = 'Innskráning mistókst';
 $messages['cookiesdisabled'] = 'Vafrinn þinn vill ekki taka við kökum (cookies)';
 $messages['sessionerror'] = 'Innskráningin þín ógild eða útrunnin';
-$messages['imaperror'] = 'Tengin við IMAP-miðlara mistókst';
+$messages['storageerror'] = 'Tengin við IMAP-miðlara mistókst';
 $messages['nomessagesfound'] = 'Engin skeyti eru í þessu pósthólfi';
 $messages['loggedout'] = 'Þú hefur útskráðst. Bless!';
 $messages['mailboxempty'] = 'Pósthólfið er tómt';
@@ -41,18 +38,17 @@ $messages['sendingfailed'] = 'Sending misheppnaðist';
 $messages['errorsaving'] = 'Villa kom upp þegar var verið að vista';
 $messages['errormoving'] = 'Gat ekki fært skeytið';
 $messages['errordeleting'] = 'Gat ekki eytt skeytinu';
-$messages['deletecontactconfirm']  = 'Ertu viss um að þú viljir eyða völdum netföngum?';
-$messages['deletefolderconfirm']  = 'Ertu viss um að vilja eyða þessari möppu?';
+$messages['deletecontactconfirm'] = 'Ertu viss um að þú viljir eyða völdum netföngum?';
+$messages['deletefolderconfirm'] = 'Ertu viss um að vilja eyða þessari möppu?';
 $messages['formincomplete'] = 'Formið var ekki fyllt út að fullu';
 $messages['noemailwarning'] = 'Sláðu inn gildt netfang';
-$messages['nonamewarning']  = 'Sláðu inn nafn';
+$messages['nonamewarning'] = 'Sláðu inn nafn';
 $messages['nopagesizewarning'] = 'Sláðu inn síðustærð';
 $messages['norecipientwarning'] = 'Í það minnsta einn viðtakandi verður að vera';
-$messages['nosubjectwarning']  = 'Efnislínan er tóm. Viltu slá eitthvað inn í hana?';
+$messages['nosubjectwarning'] = 'Efnislínan er tóm. Viltu slá eitthvað inn í hana?';
 $messages['nobodywarning'] = 'Viltu senda tómt skeyti?';
 $messages['notsentwarning'] = 'Skeytið hefur ekki verið send. Viltu henda skeytinu?';
 $messages['noldapserver'] = 'Please select an ldap server to search';
-$messages['nocontactsreturned'] = 'Engin netföng fundust';
 $messages['nosearchname'] = 'Sláðu inn nafn eða netfang';
 $messages['searchsuccessful'] = '$nr skeyti fundust';
 $messages['searchnomatch'] = 'Leit skilaði engu';
@@ -61,4 +57,3 @@ $messages['checking'] = 'Gái...';
 $messages['nospellerrors'] = 'Engar innsláttarvillur fundust';
 $messages['folderdeleted'] = 'Möppu var eytt';
 
-?>
\ No newline at end of file
index 52950a38d743153bab1060b83273d90fb00f8e3e..4d61ace8e7bc9aee18d8cbc7b19ee669c597f338 100644 (file)
@@ -1,21 +1,16 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/it_IT/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Andrej Mocilnik <amocilnik@dotcom.ts.it>                      |
-|         Yusef Maali <contact@yusefmaali.net>                          |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 5569 2011-12-07 14:47:32Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/it_IT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Andrea Bernini <andrea.bernini@gmail.com>                     |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
@@ -45,10 +40,13 @@ $labels['size'] = 'Dimensione';
 $labels['priority'] = 'Priorità';
 $labels['organization'] = 'Società';
 $labels['readstatus'] = 'Visualizza lo stato';
+$labels['listoptions'] = 'Elenco opzioni...';
 $labels['mailboxlist'] = 'Cartelle';
+$labels['folders'] = 'Cartelle';
 $labels['messagesfromto'] = 'Messaggi da $from a $to di $count';
 $labels['threadsfromto'] = 'Thread da $from a $to di $count';
 $labels['messagenrof'] = 'Messaggio $nr di $count';
+$labels['fromtoshort'] = '$from – $to di $count';
 $labels['copy'] = 'Copia';
 $labels['move'] = 'Sposta';
 $labels['moveto'] = 'Sposta in...';
@@ -74,7 +72,8 @@ $labels['jan'] = 'Gen';
 $labels['feb'] = 'Feb';
 $labels['mar'] = 'Mar';
 $labels['apr'] = 'Apr';
-$labels['may'] = 'Mag';
+$labels['may'] = 'Maggio';
+$labels['longmay'] = 'Maggio';
 $labels['jun'] = 'Giu';
 $labels['jul'] = 'Lug';
 $labels['aug'] = 'Ago';
@@ -86,7 +85,6 @@ $labels['longjan'] = 'Gennaio';
 $labels['longfeb'] = 'Febbraio';
 $labels['longmar'] = 'Marzo';
 $labels['longapr'] = 'Aprile';
-$labels['longmay'] = 'Maggio';
 $labels['longjun'] = 'Giugno';
 $labels['longjul'] = 'Luglio';
 $labels['longaug'] = 'Agosto';
@@ -95,12 +93,16 @@ $labels['longoct'] = 'Ottobre';
 $labels['longnov'] = 'Novembre';
 $labels['longdec'] = 'Dicembre';
 $labels['today'] = 'Oggi';
+$labels['refresh'] = 'Aggiorna';
 $labels['checkmail'] = 'Controlla nuovi messaggi';
+$labels['compose'] = 'Scrivi un messaggio';
 $labels['writenewmessage'] = 'Scrivi un nuovo messaggio';
+$labels['reply'] = 'Rispondi';
 $labels['replytomessage'] = 'Rispondi al mittente';
 $labels['replytoallmessage'] = 'Rispondi al mittente e ai destinatari';
 $labels['replyall'] = 'Rispondi a tutti';
 $labels['replylist'] = 'Rispondi alla mailing list';
+$labels['forward'] = 'Inoltra';
 $labels['forwardinline'] = 'Inoltra come messaggio';
 $labels['forwardattachment'] = 'Inoltre come allegato';
 $labels['forwardmessage'] = 'Inoltra il messaggio';
@@ -113,15 +115,20 @@ $labels['nextmessage'] = 'Visualizza il messaggio successivo';
 $labels['lastmessage'] = 'Visualizza l\'ultimo messaggio';
 $labels['backtolist'] = 'Torna alla lista messaggi';
 $labels['viewsource'] = 'Visualizza sorgente messaggio';
+$labels['mark'] = 'Contrassegna';
 $labels['markmessages'] = 'Marca i messaggi';
 $labels['markread'] = 'Letti';
 $labels['markunread'] = 'Non letti';
 $labels['markflagged'] = 'Contrassegnato';
 $labels['markunflagged'] = 'Non contrassegnato';
 $labels['moreactions'] = 'Altre operazioni...';
+$labels['more'] = 'Di più';
+$labels['back'] = 'Indietro';
+$labels['options'] = 'Opzioni';
 $labels['select'] = 'Seleziona';
 $labels['all'] = 'Tutti';
 $labels['none'] = 'Nessuno';
+$labels['nonesort'] = 'Nessuno';
 $labels['currpage'] = 'Pagina corrente';
 $labels['unread'] = 'Non letti';
 $labels['flagged'] = 'Contrassegnato';
@@ -141,7 +148,6 @@ $labels['expand_only_unread'] = 'solo con messaggi non letti';
 $labels['fromto'] = 'Mittente/Destinatario';
 $labels['flag'] = 'Contrassegnato';
 $labels['attachment'] = 'Allegato';
-$labels['nonesort'] = 'Nessuno';
 $labels['sentdate'] = 'Data d\'invio';
 $labels['arrival'] = 'Data di arrivo';
 $labels['asc'] = 'Ascendente';
@@ -162,7 +168,6 @@ $labels['searchmod'] = 'Ambito di ricerca';
 $labels['msgtext'] = 'Intero messaggio';
 $labels['openinextwin'] = 'Apri in una nuova finestra';
 $labels['emlsave'] = 'Scarica (.eml)';
-$labels['compose'] = 'Scrivi un messaggio';
 $labels['editasnew'] = 'Modifica come nuovo';
 $labels['savemessage'] = 'Salva come bozza';
 $labels['sendmessage'] = 'Invia il messaggio adesso';
@@ -173,10 +178,12 @@ $labels['returnreceipt'] = 'Ricevuta di ritorno';
 $labels['dsn'] = 'Notifica di consegna';
 $labels['mailreplyintro'] = 'Il $date $sender ha scritto:';
 $labels['originalmessage'] = 'Messaggio originale';
-$labels['editidents'] = 'Modifica indentità';
+$labels['editidents'] = 'Modifica identità';
+$labels['spellcheck'] = 'Controllo ortografico';
 $labels['checkspelling'] = 'Controlla ortografia';
 $labels['resumeediting'] = 'Torna al messaggio';
 $labels['revertto'] = 'Ripristina';
+$labels['attach'] = 'Allega';
 $labels['attachments'] = 'Allegati';
 $labels['upload'] = 'Aggiungi';
 $labels['uploadprogress'] = '$percent ($current di $total)';
@@ -232,14 +239,16 @@ $labels['male'] = 'maschio';
 $labels['female'] = 'femmina';
 $labels['manager'] = 'Manager';
 $labels['assistant'] = 'Assistente';
+$labels['typeassistant'] = 'Assistente';
 $labels['spouse'] = 'Coniuge';
 $labels['allfields'] = 'Tutti i campi';
 $labels['search'] = 'Ricerca';
 $labels['advsearch'] = 'Ricerca avanzata';
+$labels['advanced'] = 'Opzioni avanzate';
 $labels['other'] = 'Altro';
+$labels['typeother'] = 'Altro';
 $labels['typehome'] = 'Casa';
 $labels['typework'] = 'Lavoro';
-$labels['typeother'] = 'Altro';
 $labels['typemobile'] = 'Cellulare';
 $labels['typemain'] = 'Principale';
 $labels['typehomefax'] = 'Fax casa';
@@ -247,7 +256,6 @@ $labels['typeworkfax'] = 'Fax lavoro';
 $labels['typecar'] = 'Auto';
 $labels['typepager'] = 'Teledrin';
 $labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Assistente';
 $labels['typehomepage'] = 'Home page';
 $labels['typeblog'] = 'Blog';
 $labels['typeprofile'] = 'Profilo';
@@ -264,6 +272,7 @@ $labels['delete'] = 'Elimina';
 $labels['rename'] = 'Rinomina';
 $labels['addphoto'] = 'Aggiungi';
 $labels['replacephoto'] = 'Sostituisci';
+$labels['uploadphoto'] = 'Carica foto';
 $labels['newcontact'] = 'Crea un nuovo contatto';
 $labels['deletecontact'] = 'Elimina i contatti selezionati';
 $labels['composeto'] = 'Invia email a';
@@ -274,6 +283,7 @@ $labels['exportvcards'] = 'Esporta i contatti in formato vCard';
 $labels['newcontactgroup'] = 'Crea un nuovo gruppo';
 $labels['grouprename'] = 'Rinomina il gruppo';
 $labels['groupdelete'] = 'Cancella il gruppo';
+$labels['groupremoveselected'] = 'Rimuovi i contatti selezionati dal gruppo';
 $labels['previouspage'] = 'Pagina precedente';
 $labels['firstpage'] = 'Prima pagina';
 $labels['nextpage'] = 'Pagina successiva';
@@ -290,7 +300,7 @@ $labels['importtarget'] = 'Aggiungi nuovi contattu alla rubrica:';
 $labels['importreplace'] = 'Sostituisci l\'intera rubrica';
 $labels['importtext'] = 'Puoi caricare i contatti da una rubrica esistente. Al momento è supportata l\'importazione dei contatti dal formato vCard.';
 $labels['done'] = 'Fatto';
-$labels['settingsfor'] = 'Impostazioni per ';
+$labels['settingsfor'] = 'Impostazioni per';
 $labels['about'] = 'Informazioni';
 $labels['preferences'] = 'Preferenze';
 $labels['userpreferences'] = 'Preferenze utente';
@@ -333,6 +343,7 @@ $labels['readwhendeleted'] = 'Marca il messaggio come letto prima di eliminarlo'
 $labels['flagfordeletion'] = 'Marca il messaggio come eliminato invece di eliminarlo';
 $labels['skipdeleted'] = 'Non mostrare i messaggi marcati come eliminati';
 $labels['deletealways'] = 'Quando non è possinile spostare i messaggi nel Cestino eliminali';
+$labels['deletejunk'] = 'Elimina direttamente i messaggi in Spam';
 $labels['showremoteimages'] = 'Mostra immagini remote contenute nel messaggio';
 $labels['fromknownsenders'] = 'da mittenti conosciuti';
 $labels['always'] = 'sempre';
@@ -353,17 +364,18 @@ $labels['advancedoptions'] = 'Opzioni 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';
+$labels['defaultfont'] = 'font standard per messaggi in HTML';
 $labels['mainoptions'] = 'Opzioni principali';
+$labels['browseroptions'] = 'Opzioni del browser';
 $labels['section'] = 'Sezione';
 $labels['maintenance'] = 'Manutenzione';
 $labels['newmessage'] = 'Nuovo Messaggio';
-$labels['listoptions'] = 'Mostra Opzioni';
 $labels['signatureoptions'] = 'Opzioni firma';
 $labels['whenreplying'] = 'Quando rispondi';
 $labels['replytopposting'] = 'inizia il nuovo messaggio sopra quello originale';
 $labels['replybottomposting'] = 'inizia il nuovo messaggio sotto quello originale';
 $labels['replyremovesignature'] = 'Quando rispondi, rimuovi la firma dal messaggio originale';
-$labels['autoaddsignature'] = 'Aggiungi automaticamente la firma ';
+$labels['autoaddsignature'] = 'Aggiungi automaticamente la firma';
 $labels['newmessageonly'] = 'solo ai nuovi messaggi';
 $labels['replyandforwardonly'] = 'solo alle risposte e inoltri';
 $labels['replysignaturepos'] = 'In risposta o inoltro, posiziona la firma';
@@ -377,14 +389,15 @@ $labels['reqdsn'] = 'Richiedi sempre la notifica di consegna';
 $labels['replysamefolder'] = 'Salva risposta nella cartella del messaggio a cui si risponde';
 $labels['defaultaddressbook'] = 'Aggiungi nuovi contatti alla rubrica selezionata';
 $labels['autocompletesingle'] = 'Non considerare gli indirizzi secondari nell\'autocompletamento';
+$labels['listnamedisplay'] = 'Elenca contatti come';
 $labels['spellcheckbeforesend'] = 'Esegui il controllo ortografico prima di inviare un messaggio';
 $labels['spellcheckoptions'] = 'Opzioni controllo ortografico';
 $labels['spellcheckignoresyms'] = 'Ignora le parole contenenti simboli';
 $labels['spellcheckignorenums'] = 'Ignora le parole contenenti numeri';
 $labels['spellcheckignorecaps'] = 'Ignora le parole con tutte le lettere maiuscole';
 $labels['addtodict'] = 'Aggiungi al dizionario';
+$labels['mailtoprotohandler'] = 'Registra gestore per mailto:';
 $labels['folder'] = 'Cartella';
-$labels['folders'] = 'Cartelle';
 $labels['foldername'] = 'Nome cartella';
 $labels['subscribed'] = 'Sottoscritta';
 $labels['messagecount'] = 'Messaggi';
@@ -435,4 +448,3 @@ $labels['japanese'] = 'Giapponese';
 $labels['korean'] = 'Coreano';
 $labels['chinese'] = 'Cinese';
 
-?>
index bafcbb073206729f3fb1dd9ec70f8c46fda0ba68..1dd0073593fd24a98fe5042cb26ccda399a6872b 100644 (file)
@@ -1,31 +1,28 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/it_IT/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Andrej Mocilnik <amocilnik@dotcom.ts.it>                      |
-|         Yusef Maali <contact@yusefmaali.net>                          |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 5569 2011-12-07 14:47:32Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/it_IT/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Andrea Bernini <andrea.bernini@gmail.com>                     |
+ +-----------------------------------------------------------------------+
 */
 
 $messages = array();
+$messages['errortitle'] = 'C\'è stato qualche errore';
 $messages['loginfailed'] = 'Impossibile accedere. Utente o password non corretti';
 $messages['cookiesdisabled'] = 'Il tuo browser non accetta i cookies';
 $messages['sessionerror'] = 'Sessione non valida o scaduta';
-$messages['imaperror'] = 'Impossibile connettersi al server IMAP';
+$messages['storageerror'] = 'Impossibile connettersi al server IMAP';
 $messages['servererror'] = 'Errore del server!';
 $messages['servererrormsg'] = 'Errore del server: $msg';
 $messages['dberror'] = 'Errore del database!';
+$messages['requesttimedout'] = 'Richiesta scaduta';
 $messages['errorreadonly'] = 'Impossibile eseguire l\'operazione. Cartella in sola lettura';
 $messages['errornoperm'] = 'Impossibile eseguire l\'operazione. Permesso negato';
 $messages['invalidrequest'] = 'Richiesta non valida! Nessun dato salvato.';
@@ -110,6 +107,7 @@ $messages['addingmember'] = 'Aggiunta contatto al gruppo...';
 $messages['removingmember'] = 'Rimozione contatto dal gruppo...';
 $messages['receiptsent'] = 'Ricevuta di ritorno inviata con successo';
 $messages['errorsendingreceipt'] = 'Impossibile spedire la ricevuta di ritorno';
+$messages['deleteidentityconfirm'] = 'sei sicuro di voler cancellare questo profilo?';
 $messages['nodeletelastidentity'] = 'Impossibile eliminare l\'unica identità disponibile';
 $messages['forbiddencharacter'] = 'Il nome della cartella contiene un carattere vietato';
 $messages['selectimportfile'] = 'Per favore, seleziona il file da caricare';
@@ -160,4 +158,3 @@ $messages['mispellingsfound'] = 'Sono stati riscontrati errori ortografici nel m
 $messages['parentnotwritable'] = 'Impossibile creare o muovere la cartella: accesso negato';
 $messages['messagetoobig'] = 'La parte del messaggio è troppo grande per essere processata.';
 
-?>
index f9e854830245904032caade1edec0146f3966c2d..66a585e7fa98b660a7771f27ca0a5f0157be31b0 100644 (file)
@@ -1,76 +1,59 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/ja_JP/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, Roundcube Dev. - Switzerland                 |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Tadashi Jokagi <elf2000@users.sourceforge.net>                |
-|         Takashi Takamatsu <taka717@gmail.com>                         |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 5569 2011-12-07 14:47:32Z thomasb $
-
-EN-Revision: 5490
-
+ +-----------------------------------------------------------------------+
+ | localization/ja_JP/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Takahiro Kambe                                                |
+ +-----------------------------------------------------------------------+
 */
 
-// login page
 $labels = array();
-$labels['welcome'] = 'ようこそ $product へ';
+$labels['welcome'] = '$productにようこそ';
 $labels['username'] = 'ユーザー名';
 $labels['password'] = 'パスワード';
 $labels['server'] = 'サーバー';
 $labels['login'] = 'ログイン';
-
-// taskbar
 $labels['logout'] = 'ログアウト';
-$labels['mail'] = 'メール';
-$labels['settings'] = '個人設定';
+$labels['mail'] = '電子メール';
+$labels['settings'] = '設定';
 $labels['addressbook'] = 'アドレス帳';
-
-// mailbox names
-$labels['inbox'] = '受信トレイ';
+$labels['inbox'] = '受信箱';
 $labels['drafts'] = '下書き';
-$labels['sent'] = '送信済みアイテム';
+$labels['sent'] = '送信済み';
 $labels['trash'] = 'ごみ箱';
 $labels['junk'] = '迷惑メール';
-
-// message listing
 $labels['subject'] = '件名';
-$labels['from'] = '差出人';
+$labels['from'] = '発信者';
 $labels['to'] = '宛先';
-$labels['cc'] = 'コピー';
-$labels['bcc'] = 'Bcc';
-$labels['replyto'] = '返信先の指定';
+$labels['cc'] = '写し(Cc)';
+$labels['bcc'] = '隠した写し(Bcc)';
+$labels['replyto'] = '返信先';
 $labels['followupto'] = 'Followup-To';
 $labels['date'] = '日付';
-$labels['size'] = '容é\87\8f';
+$labels['size'] = '大ã\81\8dã\81\95';
 $labels['priority'] = '優先度';
 $labels['organization'] = '企業名';
 $labels['readstatus'] = '閲覧の状態';
-
-$labels['mailboxlist'] = 'フォルダー一覧';
-$labels['messagesfromto'] = '表示中のメール: $from ~ $to (全: $count 件)';
-$labels['threadsfromto'] = '表示中のスレッド: $from ~ $to (全: $count 件)';
-$labels['messagenrof'] = '現在のメール: $nr (全: $count 件)';
-
+$labels['listoptions'] = '一覧のオプション...';
+$labels['mailboxlist'] = 'フォルダー';
+$labels['folders'] = 'フォルダー';
+$labels['messagesfromto'] = '$count通の$from通目から$to通目のメッセージ';
+$labels['threadsfromto'] = '$count通の$from通目から$to通目のスレッド';
+$labels['messagenrof'] = '$count通の$nr通目のメッセージ';
+$labels['fromtoshort'] = '$count通の$from通目から$to通目';
 $labels['copy'] = 'コピー';
 $labels['move'] = '移動';
-$labels['moveto'] = 'ã\83\95ã\82©ã\83«ã\83\80ã\83¼ã\81®移動';
+$labels['moveto'] = 'ã\83\95ã\82©ã\83«ã\83\80ã\83¼ã\81«移動';
 $labels['download'] = 'ダウンロード';
-
 $labels['filename'] = 'ファイル名';
-$labels['filesize'] = 'ファイル サイズ';
-
+$labels['filesize'] = 'ファイルの大きさ';
 $labels['addtoaddressbook'] = 'アドレス帳に追加';
-
-// weekdays short
 $labels['sun'] = '日';
 $labels['mon'] = '月';
 $labels['tue'] = '火';
@@ -78,8 +61,6 @@ $labels['wed'] = '水';
 $labels['thu'] = '木';
 $labels['fri'] = '金';
 $labels['sat'] = '土';
-
-// weekdays long
 $labels['sunday'] = '日曜日';
 $labels['monday'] = '月曜日';
 $labels['tuesday'] = '火曜日';
@@ -87,69 +68,70 @@ $labels['wednesday'] = '水曜日';
 $labels['thursday'] = '木曜日';
 $labels['friday'] = '金曜日';
 $labels['saturday'] = '土曜日';
-
-// months short
-$labels['jan'] = '1 月';
-$labels['feb'] = '2 月';
-$labels['mar'] = '3 月';
-$labels['apr'] = '4 月';
-$labels['may'] = '5 月';
-$labels['jun'] = '6 月';
-$labels['jul'] = '7 月';
-$labels['aug'] = '8 月';
-$labels['sep'] = '9 月';
-$labels['oct'] = '10 月';
-$labels['nov'] = '11 月';
-$labels['dec'] = '12 月';
-
-// months long
-$labels['longjan'] = '1 月';
-$labels['longfeb'] = '2 月';
-$labels['longmar'] = '3 月';
-$labels['longapr'] = '4 月';
-$labels['longmay'] = '5 月';
-$labels['longjun'] = '6 月';
-$labels['longjul'] = '7 月';
-$labels['longaug'] = '8 月';
-$labels['longsep'] = '9 月';
-$labels['longoct'] = '10 月';
-$labels['longnov'] = '11 月';
-$labels['longdec'] = '12 月';
-
+$labels['jan'] = '1月';
+$labels['feb'] = '2月';
+$labels['mar'] = '3月';
+$labels['apr'] = '4月';
+$labels['may'] = '5月';
+$labels['longmay'] = '5月';
+$labels['jun'] = '6月';
+$labels['jul'] = '7月';
+$labels['aug'] = '8月';
+$labels['sep'] = '9月';
+$labels['oct'] = '10月';
+$labels['nov'] = '11月';
+$labels['dec'] = '12月';
+$labels['longjan'] = '1月';
+$labels['longfeb'] = '2月';
+$labels['longmar'] = '3月';
+$labels['longapr'] = '4月';
+$labels['longjun'] = '6月';
+$labels['longjul'] = '7月';
+$labels['longaug'] = '8月';
+$labels['longsep'] = '9月';
+$labels['longoct'] = '10月';
+$labels['longnov'] = '11月';
+$labels['longdec'] = '12月';
 $labels['today'] = '今日';
-
-// toolbar buttons
-$labels['checkmail'] = '新着の確認';
-$labels['writenewmessage'] = '新規メールの作成';
-$labels['replytomessage'] = '返信';
-$labels['replytoallmessage'] = '差出人とすべての宛先に返信';
+$labels['refresh'] = '再読込み';
+$labels['checkmail'] = '新しく届いたメッセージを確認';
+$labels['compose'] = 'メッセージの作成';
+$labels['writenewmessage'] = '新しいメッセージを作成';
+$labels['reply'] = '返信';
+$labels['replytomessage'] = '送信者に返信';
+$labels['replytoallmessage'] = 'メーリングリスト、または送信者とすべての宛先に返信';
 $labels['replyall'] = '全員に返信';
-$labels['replylist'] = 'ML に返信';
-$labels['forwardinline']    = '本文に挿入して転送';
-$labels['forwardattachment'] = '添付形式で転送';
-$labels['forwardmessage'] = '転送';
-$labels['deletemessage'] = '削除';
+$labels['replylist'] = 'メーリングリストに返信';
+$labels['forward'] = '転送';
+$labels['forwardinline'] = '本文に挿入して転送';
+$labels['forwardattachment'] = '添付ファイルとして転送';
+$labels['forwardmessage'] = 'メッセージを転送';
+$labels['deletemessage'] = 'メッセージを削除';
 $labels['movemessagetotrash'] = 'ごみ箱に移動';
-$labels['printmessage'] = '印刷';
-$labels['previousmessage'] = '前のメールへ';
-$labels['firstmessage'] = '最初のメールへ';
-$labels['nextmessage'] = '次のメールへ';
-$labels['lastmessage'] = '最後のメールへ';
-$labels['backtolist'] = '一覧に戻る';
-$labels['viewsource'] = 'ソースの表示';
+$labels['printmessage'] = 'メッセージを印刷';
+$labels['previousmessage'] = '前のメッセージを表示';
+$labels['firstmessage'] = '最初のメッセージを表示';
+$labels['nextmessage'] = '次のメッセージを表示';
+$labels['lastmessage'] = '最後のメッセージを表示';
+$labels['backtolist'] = 'メッセージの一覧に戻る';
+$labels['viewsource'] = 'ソースを表示';
+$labels['mark'] = 'マーク';
 $labels['markmessages'] = 'マークを付ける';
-$labels['markread'] = '既読にする';
-$labels['markunread'] = '未読にする';
-$labels['markflagged'] = 'フラグを付ける';
-$labels['markunflagged'] = 'フラグを外す';
+$labels['markread'] = '既読に設定';
+$labels['markunread'] = '未読に設定';
+$labels['markflagged'] = 'フラグを設定';
+$labels['markunflagged'] = 'フラグを解除';
 $labels['moreactions'] = 'その他の操作...';
-
+$labels['more'] = '続く';
+$labels['back'] = '戻る';
+$labels['options'] = 'オプション';
 $labels['select'] = '選択';
 $labels['all'] = 'すべて';
 $labels['none'] = 'なし';
+$labels['nonesort'] = 'なし';
 $labels['currpage'] = '現在のページ';
 $labels['unread'] = '未読';
-$labels['flagged'] = 'フラグあり';
+$labels['flagged'] = 'フラグ付き';
 $labels['unanswered'] = '未返信';
 $labels['deleted'] = '削除済み';
 $labels['invert'] = '反転';
@@ -157,335 +139,303 @@ $labels['filter'] = 'フィルター';
 $labels['list'] = '一覧';
 $labels['threads'] = 'スレッド';
 $labels['expand-all'] = 'すべて展開';
-$labels['expand-unread'] = 'æ\9cªé\96\8bå°\81ã\81®ã\83¡ã\83¼ã\83«を展開';
+$labels['expand-unread'] = 'æ\9cªé\96\8bå°\81ã\81®ã\83¡ã\83\83ã\82»ã\83¼ã\82¸を展開';
 $labels['collapse-all'] = 'すべて折りたたむ';
-$labels['threaded'] = 'スレッドにする';
-
-$labels['autoexpand_threads'] = 'スレッドの展開';
+$labels['threaded'] = 'スレッド化';
+$labels['autoexpand_threads'] = 'メッセージのスレッドを展開';
 $labels['do_expand'] = 'すべてのスレッド';
-$labels['expand_only_unread'] = '未開封のメールのみ';
-$labels['fromto'] = '送信者 / 宛先';
+$labels['expand_only_unread'] = '未読のメッセージだけ';
+$labels['fromto'] = '発信者/宛先';
 $labels['flag'] = 'フラグ';
 $labels['attachment'] = '添付ファイル';
-$labels['nonesort'] = 'なし';
 $labels['sentdate'] = '送信日';
 $labels['arrival'] = '受信日';
 $labels['asc'] = '昇順';
 $labels['desc'] = '降順';
-$labels['listcolumns'] = 'å\88\97ã\81®一覧';
-$labels['listsorting'] = '整列基準';
-$labels['listorder'] = '整列順';
+$labels['listcolumns'] = 'å\88\97ã\82\92一覧';
+$labels['listsorting'] = '並べ替える列';
+$labels['listorder'] = '並べ替える順序';
 $labels['listmode'] = '一覧表示モード';
-
 $labels['folderactions'] = 'フォルダーの操作...';
-$labels['compact'] = 'コンパクト';
+$labels['compact'] = '圧縮';
 $labels['empty'] = '空';
-
-$labels['quota'] = 'ディスク使用量';
+$labels['quota'] = 'ディスクの使用状況';
 $labels['unknown'] = '不明';
 $labels['unlimited'] = '無制限';
-
-$labels['quicksearch'] = '検索';
-$labels['resetsearch'] = '検索解除';
-$labels['searchmod'] = '検索条件';
-$labels['msgtext'] = 'すべてのメール';
-
+$labels['quicksearch'] = '高速検索';
+$labels['resetsearch'] = '検索を解除';
+$labels['searchmod'] = '検索の条件';
+$labels['msgtext'] = 'メッセージ全体';
 $labels['openinextwin'] = '新しいウィンドウで開く';
-$labels['emlsave'] = 'eml 形式で保存する';
-
-// message compose
-$labels['compose'] = 'メールの作成';
-$labels['editasnew'] = '新規として編集';
-$labels['savemessage'] = '下書きに保存';
-$labels['sendmessage'] = '今すぐ送信';
-$labels['addattachment'] = 'ファイルの添付';
-$labels['charset'] = '文字エンコード';
+$labels['emlsave'] = 'ダウンロード(.eml形式)';
+$labels['editasnew'] = '新しいメッセージとして編集';
+$labels['savemessage'] = '下書きとして保存';
+$labels['sendmessage'] = 'メッセージを送信';
+$labels['addattachment'] = 'ファイルを添付';
+$labels['charset'] = '文字セット';
 $labels['editortype'] = 'エディターの種類';
 $labels['returnreceipt'] = '開封確認';
-$labels['dsn'] = 'é\85\8dé\80\81ç\8a¶æ³\81ã\81®通知';
-$labels['mailreplyintro'] = '$date ã\81« $sender ã\81\8c書きました:';
+$labels['dsn'] = 'é\85\8dé\80\81ç\8a¶æ\85\8b通知';
+$labels['mailreplyintro'] = '$date ã\81« $sender ã\81\95ã\82\93ã\81¯書きました:';
 $labels['originalmessage'] = '元のメッセージ';
-
-$labels['editidents'] = '個人情報の編集';
-$labels['checkspelling'] = 'スペル チェック';
-$labels['resumeediting'] = 'ã\83¡ã\83¼ã\83«ä½\9cæ\88\90ã\81«æ\88»ã\82\8b';
+$labels['editidents'] = '識別情報を編集';
+$labels['spellcheck'] = 'スペル';
+$labels['checkspelling'] = 'スペルチェック';
+$labels['resumeediting'] = 'ç·¨é\9b\86ã\82\92å\86\8dé\96\8b';
 $labels['revertto'] = '元に戻す';
-
+$labels['attach'] = '添付';
 $labels['attachments'] = '添付ファイル';
 $labels['upload'] = 'アップロード';
 $labels['uploadprogress'] = '$percent ($current / $total)';
 $labels['close'] = '閉じる';
 $labels['messageoptions'] = 'メッセージのオプション...';
-
-$labels['low'] = '低い';
+$labels['low'] = '低';
 $labels['lowest'] = '最低';
 $labels['normal'] = '通常';
-$labels['high'] = '高';
+$labels['high'] = '高';
 $labels['highest'] = '最高';
-
 $labels['nosubject'] = '(件名なし)';
-$labels['showimages'] = 'ç\94»å\83\8fã\81®表示';
+$labels['showimages'] = 'ç\94»å\83\8fã\82\92表示';
 $labels['alwaysshow'] = '$sender から届いた画像は常に表示';
-$labels['isdraft']    = 'これは下書きのメッセージです。';
-
+$labels['isdraft'] = 'これは下書きのメッセージです。';
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = 'テキスト';
-$labels['savesentmessagein'] = '送信済みメールの保存先';
+$labels['savesentmessagein'] = '送信したメッセージの保存先';
 $labels['dontsave'] = '保存しない';
-$labels['maxuploadsize'] = '添付可能なファイルのサイズは最大 $size です。';
-
-$labels['addcc'] = 'Cc 追加';
-$labels['addbcc'] = 'Bcc 追加';
-$labels['addreplyto'] = 'Reply-To 追加';
-$labels['addfollowupto'] = 'Followup-To 追加';
-
-// mdn
-$labels['mdnrequest'] = 'メールの差出人は開封確認の送付を求めています。開封確認のメールを送付しますか?';
-$labels['receiptread'] = '開封確認 (表示済み)';
-$labels['yourmessage'] = 'これはあなたが送信したメールに対する開封確認です。';
-$labels['receiptnote'] = '注意: この開封確認はメールが受信者に表示されたことの通知です。受信者がメールを読んだこと、内容を理解したことを保証するものではありません。';
-
-// address boook
-$labels['name']         = '表示名';
-$labels['firstname']    = '名 (ファーストネーム)';
-$labels['surname']      = '姓 (ラストネーム)';
-$labels['middlename']   = 'ミドルネーム';
-$labels['nameprefix']   = '敬称 (名前の前)';
-$labels['namesuffix']   = '敬称 (名前の後)';
-$labels['nickname']     = 'ニックネーム';
-$labels['jobtitle']     = '肩書き';
-$labels['organization'] = '企業名';
-$labels['department']   = '部署名';
-$labels['gender']       = '性別';
-$labels['maidenname']   = '旧姓';
-$labels['email']        = 'メールアドレス';
-$labels['phone']        = '電話番号';
-$labels['address']      = '住所';
-$labels['street']       = '通り';
-$labels['locality']     = '都市';
-$labels['zipcode']      = '郵便番号';
-$labels['region']       = '州';
-$labels['country']      = '国';
-$labels['birthday']     = '誕生日';
-$labels['anniversary']  = '記念日';
-$labels['website']      = 'ウェブサイト';
-$labels['instantmessenger'] = 'IM';
-$labels['notes'] = 'メモ';
-$labels['male']   = '男性';
+$labels['maxuploadsize'] = '添付可能なファイルは最大で$sizeです。';
+$labels['addcc'] = '写し(Cc)を追加';
+$labels['addbcc'] = '隠した写し(Bcc)を追加';
+$labels['addreplyto'] = '返信先(Reply-To)を追加';
+$labels['addfollowupto'] = 'フォロー先(Followup-Toを追加';
+$labels['mdnrequest'] = 'このメッセージを読んだときに、送信者が通知を受けたいと依頼しています。開封確認の通知を送信しますか?';
+$labels['receiptread'] = '開封確認(表示済み)';
+$labels['yourmessage'] = 'これはあなたが送信したメッセージに対する開封確認です。';
+$labels['receiptnote'] = '注意: この開封確認は、メッセージが宛先のコンピューターで表示されたことだけを知らせるものです。受信者がメッセージを読んだり、内容を理解したと保証するものではありません。';
+$labels['name'] = '表示名';
+$labels['firstname'] = '名';
+$labels['surname'] = '姓';
+$labels['middlename'] = 'ミドルネーム';
+$labels['nameprefix'] = '敬称(名前の前)';
+$labels['namesuffix'] = '敬称(名前の後)';
+$labels['nickname'] = 'ニックネーム';
+$labels['jobtitle'] = '職名';
+$labels['department'] = '部署名';
+$labels['gender'] = '性別';
+$labels['maidenname'] = '旧姓';
+$labels['email'] = '電子メール';
+$labels['phone'] = '電話番号';
+$labels['address'] = '住所';
+$labels['street'] = '住所';
+$labels['locality'] = '都市';
+$labels['zipcode'] = '郵便番号';
+$labels['region'] = '都道府県';
+$labels['country'] = '国';
+$labels['birthday'] = '誕生日';
+$labels['anniversary'] = '記念日';
+$labels['website'] = 'ウェブサイト';
+$labels['instantmessenger'] = 'インスタントメッセージ';
+$labels['notes'] = '注釈';
+$labels['male'] = '男性';
 $labels['female'] = '女性';
 $labels['manager'] = '管理者';
 $labels['assistant'] = 'アシスタント';
+$labels['typeassistant'] = 'アシスタント';
 $labels['spouse'] = '配偶者';
-$labels['allfields'] = '項目';
+$labels['allfields'] = 'すべての項目';
 $labels['search'] = '検索';
 $labels['advsearch'] = '高度な検索';
+$labels['advanced'] = '高度';
 $labels['other'] = 'その他';
-
-$labels['typehome']   = '自宅';
-$labels['typework']   = '職場';
-$labels['typeother']  = '他';
-$labels['typemobile']  = 'モバイル';
-$labels['typemain']  = '主要回線';
-$labels['typehomefax']  = '自宅 Fax';
-$labels['typeworkfax']  = '職場 Fax';
-$labels['typecar']  = '車';
-$labels['typepager']  = 'ポケベル(ページャー)';
-$labels['typevideo']  = 'ビデオ';
-$labels['typeassistant']  = 'アシスタント';
-$labels['typehomepage']  = 'ホームページ';
+$labels['typeother'] = 'その他';
+$labels['typehome'] = '自宅';
+$labels['typework'] = '職場';
+$labels['typemobile'] = 'モバイル';
+$labels['typemain'] = '主回線';
+$labels['typehomefax'] = '自宅ファクス';
+$labels['typeworkfax'] = '職場のFax';
+$labels['typecar'] = '車';
+$labels['typepager'] = 'ページャー(ポケットベル)';
+$labels['typevideo'] = '動画';
+$labels['typehomepage'] = 'ホームページ';
 $labels['typeblog'] = 'ブログ';
 $labels['typeprofile'] = 'プロフィール';
-
-$labels['addfield'] = '項目の追加...';
-$labels['addcontact'] = '連絡先の新規追加';
-$labels['editcontact'] = '連絡先の編集';
+$labels['addfield'] = '項目を追加...';
+$labels['addcontact'] = '新しい連絡先を追加';
+$labels['editcontact'] = '連絡先を編集';
 $labels['contacts'] = '連絡先';
-$labels['contactproperties'] = '連絡先のプロパティ';
+$labels['contactproperties'] = '連絡先の属性';
 $labels['personalinfo'] = '個人情報';
-
-$labels['edit']   = '編集';
-$labels['cancel'] = 'キャンセル';
-$labels['save']   = '保存';
+$labels['edit'] = '編集';
+$labels['cancel'] = '取り消し';
+$labels['save'] = '保存';
 $labels['delete'] = '削除';
-$labels['rename'] = 'å\90\8då\89\8dã\81®変更';
+$labels['rename'] = 'å\90\8då\89\8dã\82\92変更';
 $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']   = '前のページへ';
-$labels['firstpage']      = '最初のページへ';
-$labels['nextpage']       = '次のページへ';
-$labels['lastpage']       = '最後のページへ';
-
+$labels['replacephoto'] = '置き換え';
+$labels['uploadphoto'] = '写真をアップロード';
+$labels['newcontact'] = '新しい連絡先カードを作成';
+$labels['deletecontact'] = '選択した連絡先を削除';
+$labels['composeto'] = 'この連絡先宛にメッセージを作成';
+$labels['contactsfromto'] = '$count件の連絡先の$from件目から$to件目';
+$labels['print'] = '印刷';
+$labels['export'] = 'エクスポート';
+$labels['exportvcards'] = 'vCard形式でエクスポート';
+$labels['newcontactgroup'] = '連絡先グループを新しく作成';
+$labels['grouprename'] = 'グループ名を変更';
+$labels['groupdelete'] = 'グループを削除';
+$labels['groupremoveselected'] = '選択した連絡先をグループから削除';
+$labels['previouspage'] = '前のページを表示';
+$labels['firstpage'] = '最初のページを表示';
+$labels['nextpage'] = '次のページを表示';
+$labels['lastpage'] = '最後のページを表示';
 $labels['group'] = 'グループ';
 $labels['groups'] = 'グループ';
-$labels['personaladrbook'] = '個人アドレス';
-
-$labels['searchsave'] = '検索情報の保存';
-$labels['searchdelete'] = '検索情報の削除';
-
+$labels['personaladrbook'] = '個人の住所';
+$labels['searchsave'] = '検索情報を保存';
+$labels['searchdelete'] = '検索情報を削除';
 $labels['import'] = 'インポート';
-$labels['importcontacts'] = 'é\80£çµ¡å\85\88ã\81®インポート';
-$labels['importfromfile'] = 'ã\82¤ã\83³ã\83\9dã\83¼ã\83\88ã\81\99ã\82\8bã\83\95ã\82¡ã\82¤ã\83«:';
-$labels['importtarget'] = 'ã\82¢ã\83\89ã\83¬ã\82¹å¸³ã\81¸æ\96°è¦\8f連絡先の追加:';
-$labels['importreplace'] = '現在のアドレス帳と置き換える';
-$labels['importtext'] = 'æ\97¢å­\98ã\81®ã\82¢ã\83\89ã\83¬ã\82¹å¸³ã\81®連絡先をアップロードできます。現在、<a href="http://ja.wikipedia.org/wiki/VCard">vCard</a> 形式からのインポートに対応しています。';
+$labels['importcontacts'] = 'é\80£çµ¡å\85\88ã\82\92インポート';
+$labels['importfromfile'] = 'ã\83\95ã\82¡ã\82¤ã\83«ã\81\8bã\82\89ã\82¤ã\83³ã\83\9dã\83¼ã\83\88';
+$labels['importtarget'] = 'ã\82¢ã\83\89ã\83¬ã\82¹å¸³ã\81«æ\96°ã\81\97ã\81\84連絡先の追加:';
+$labels['importreplace'] = 'アドレス帳全体と置き換え';
+$labels['importtext'] = 'æ\97¢å­\98ã\81®ã\82¢ã\83\89ã\83¬ã\82¹å¸³ã\81\8bã\82\89連絡先をアップロードできます。現在、<a href="http://ja.wikipedia.org/wiki/VCard">vCard</a> 形式からのインポートに対応しています。';
 $labels['done'] = '完了';
-
-// settings
-$labels['settingsfor']  = '次の設定:';
-$labels['about'] = 'Roundcube Webmail について';
-$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['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['dateformat'] = '日付の書式';
-$labels['timeformat'] = '時の書式';
+$labels['timeformat'] = '時の書式';
 $labels['prettydate'] = '短い日付で表示';
-$labels['setdefault'] = '標準の設定';
+$labels['setdefault'] = '初期値を設定';
 $labels['autodetect'] = '自動識別';
 $labels['language'] = '言語';
 $labels['timezone'] = 'タイムゾーン';
-$labels['pagesize'] = '1 ページの表示件数';
+$labels['pagesize'] = '1ページの表示件数';
 $labels['signature'] = '署名';
-$labels['dstactive'] = 'サマータイムを適用する';
-$labels['htmleditor'] = '新規メールでは HTML を標準にする';
-$labels['htmlonreply'] = 'メールの返信時は常に HTML を使用する';
-$labels['htmlsignature'] = '署名に HTML タグを使用する';
-$labels['previewpane'] = 'プレビュー ペインを表示する';
-$labels['skin'] = 'スキン';
-$labels['logoutclear'] = 'ã\83­ã\82°ã\82¢ã\82¦ã\83\88æ\99\82ã\81«ã\81\94ã\81¿ç®±ã\82\92空ã\81«ã\81\99ã\82\8b';
-$labels['logoutcompact'] = 'ログアウト時にフォルダーを整理する';
-$labels['uisettings'] = 'ユーザー インターフェース';
+$labels['dstactive'] = 'サマータイムを適用';
+$labels['htmleditor'] = '作成時にHTMLメッセージを使用';
+$labels['htmlonreply'] = '返信時にHTMLメッセージを使用';
+$labels['htmlsignature'] = 'HTMLの署名';
+$labels['previewpane'] = 'プレビュー枠の表示';
+$labels['skin'] = 'ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\82¤ã\82¹ã\81®ã\82¹ã\82­ã\83³';
+$labels['logoutclear'] = 'ã\83­ã\82°ã\82¢ã\82¦ã\83\88æ\99\82ã\81«ã\81\94ã\81¿ç®±ã\81®å\86\85容ã\82\92æ¶\88å\8e»';
+$labels['logoutcompact'] = 'ログアウト時にフォルダーを整理';
+$labels['uisettings'] = 'ユーザーインターフェイス';
 $labels['serversettings'] = 'サーバーの設定';
 $labels['mailboxview'] = '受信箱';
-$labels['mdnrequests'] = '開封確認の送信要求時';
-$labels['askuser'] = 'é\96\8bå°\81確èª\8dã\83¡ã\83¼ã\83«ã\81®é\80\81ä¿¡ã\82\92確èª\8dã\81\99ã\82\8b';
-$labels['autosend'] = 'é\96\8bå°\81確èª\8dã\83¡ã\83¼ã\83«ã\82\92é\80\81ä¿¡ã\81\99ã\82\8b';
-$labels['autosendknown'] = '差出人が連絡先に登録されていれば開封確認を送信し、それ以外は問い合わせる';
-$labels['autosendknownignore'] = '差出人が連絡先に登録されていれば開封確認を送信し、それ以外は無視する';
+$labels['mdnrequests'] = '開封確認の要求の処理';
+$labels['askuser'] = 'é\96\8bå°\81確èª\8dã\81®é\80\81ä¿¡ã\82\92確èª\8d';
+$labels['autosend'] = 'é\96\8bå°\81確èª\8dã\82\92é\80\81ä¿¡';
+$labels['autosendknown'] = '送信者が連絡先に登録されていれば送信、それ以外は確認';
+$labels['autosendknownignore'] = '送信者が連絡先に登録されていれば送信、それ以外は無視';
 $labels['ignore'] = '無視';
-$labels['readwhendeleted'] = '削除したメールを既読にする';
-$labels['flagfordeletion'] = '実際に削除せずに削除済みフラグを付ける';
-$labels['skipdeleted'] = '削除済みメールを表示しない';
-$labels['deletealways'] = 'ごみ箱への移動に失敗したメールはすぐに削除';
-$labels['showremoteimages'] = '外部 URL の画像をインライン表示する';
+$labels['readwhendeleted'] = '削除したメッセージを既読に設定';
+$labels['flagfordeletion'] = '削除する代わりに削除済みフラグを設定';
+$labels['skipdeleted'] = '削除済みのメッセージを表示しない';
+$labels['deletealways'] = 'ごみ箱への移動できなかったメッセージは削除';
+$labels['deletejunk'] = '迷惑メールのメッセージを直接削除';
+$labels['showremoteimages'] = '外部のインライン画像を表示';
 $labels['fromknownsenders'] = '送信者が知人の場合';
-$labels['always'] = '常';
-$labels['showinlineimages'] = 'ã\83¡ã\83¼ã\83«ã\81«æ·»ä»\98ã\81\95ã\82\8cã\81\9fç\94»å\83\8fã\82\92表示ã\81\99ã\82\8b';
-$labels['autosavedraft'] = '自動的に下書きを保存する';
-$labels['everynminutes'] = '$n 分毎';
-$labels['keepalive'] = 'æ\96°ç\9d\80ã\83¡ã\83¼ã\83«ã\81®ç¢ºèª\8d間隔';
+$labels['always'] = '常';
+$labels['showinlineimages'] = 'ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\81«æ·»ä»\98ã\81\95ã\82\8cã\81\9fç\94»å\83\8fã\82\92ä¸\8bã\81«è¡¨ç¤º';
+$labels['autosavedraft'] = '自動的に下書きを保存';
+$labels['everynminutes'] = '$n分毎';
+$labels['keepalive'] = 'æ\96°ç\9d\80ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82\92確èª\8dã\81\99ã\82\8b間隔';
 $labels['never'] = 'しない';
-$labels['immediately'] = 'すぐに';
-$labels['messagesdisplaying'] = 'ã\83¡ã\83¼ã\83«の表示';
-$labels['messagescomposition'] = 'ã\83¡ã\83¼ã\83«の作成';
-$labels['mimeparamfolding'] = '添付ファイルå\90\8d';
-$labels['2231folding'] = 'RFC 2231 準拠 (Thunderbird)';
-$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
-$labels['2047folding'] = 'RFC 2047 準拠 (他のメーラー)';
-$labels['force7bit'] = 'マルチバイト文字列を MIME エンコードする';
+$labels['immediately'] = '即時';
+$labels['messagesdisplaying'] = 'ã\83¡ã\83\83ã\82»ã\83¼ã\82¸の表示';
+$labels['messagescomposition'] = 'ã\83¡ã\83\83ã\82»ã\83¼ã\82¸の作成';
+$labels['mimeparamfolding'] = '添付ファイルã\81®å\90\8då\89\8d';
+$labels['2231folding'] = 'RFC 2231に完全準拠(Thunderbird)';
+$labels['miscfolding'] = 'RFC 2047/2231(MS Outlook)';
+$labels['2047folding'] = 'RFC 2047に完全準拠(その他)';
+$labels['force7bit'] = '8ビット文字列にMIMEエンコードを使用';
 $labels['advancedoptions'] = '高度な設定';
-$labels['focusonnewmessage'] = '新着メールが届いたらブラウザーをアクティブにする';
-$labels['checkallfolders'] = '全フォルダーで新着メールを表示する';
-$labels['displaynext'] = 'メールの削除や移動後に次のメールを表示する';
-$labels['mainoptions'] = '基本設定';
+$labels['focusonnewmessage'] = '新しいメッセージが届いたらブラウザーをアクティブ';
+$labels['checkallfolders'] = 'すべてのフォルダーで新着メールを表示';
+$labels['displaynext'] = 'メッセージを削除や移動した後で次のメッセージを表示';
+$labels['defaultfont'] = 'HTMLメッセージの初期フォント';
+$labels['mainoptions'] = '基本的な設定';
+$labels['browseroptions'] = 'ブラウザーのオプション';
 $labels['section'] = '設定項目';
-$labels['maintenance'] = 'メンテナンス設定';
-$labels['newmessage'] = '新着メール設定';
-$labels['listoptions'] = '一覧設定';
+$labels['maintenance'] = '保守';
+$labels['newmessage'] = '新しいメッセージ';
 $labels['signatureoptions'] = '署名の設定';
 $labels['whenreplying'] = '返信時の本文';
-$labels['replytopposting'] = '元のメッセージ引用部の前に本文を作成する';
-$labels['replybottomposting'] = '元のメッセージ引用部の後に本文を作成する';
-$labels['replyremovesignature'] = '返信時にメッセージからオリジナルの署名を除去する';
-$labels['autoaddsignature'] = '自動的に署名を付加する';
-$labels['newmessageonly'] = '新規作成時のみ';
-$labels['replyandforwardonly'] = '返信・転送時のみ';
-$labels['replysignaturepos'] = '返信・転送時に署名を挿入する位置';
-$labels['belowquote'] = '引用部の後';
-$labels['abovequote'] = '引用部の前';
-$labels['insertsignature'] = '署名の挿入';
-$labels['previewpanemarkread'] = '開封済みにする';
-$labels['afternseconds'] = '$n 秒後';
-$labels['reqmdn'] = '常に開封確認通知を要求する';
-$labels['reqdsn'] = '常に配送状況の通知を要求する';
-$labels['replysamefolder'] = '返信されたメールを返信元メールと同じフォルダに保存';
-$labels['defaultaddressbook'] = '次のアドレス帳に新規連絡先を追加する';
-$labels['autocompletesingle'] = '自動補完で代替メールアドレスを飛ばす';
-$labels['spellcheckbeforesend'] = 'メールの送信前にスペル チェック';
+$labels['replytopposting'] = '元のメッセージを引用した前に本文を作成';
+$labels['replybottomposting'] = '元のメッセージを引用した後に本文を作成';
+$labels['replyremovesignature'] = '返信時に元の署名をメッセージから削除';
+$labels['autoaddsignature'] = '自動的に署名を付加';
+$labels['newmessageonly'] = '新しいメッセージだけ';
+$labels['replyandforwardonly'] = '返信と転送だけ';
+$labels['replysignaturepos'] = '返信や転送で署名を挿入する位置';
+$labels['belowquote'] = '引用の後';
+$labels['abovequote'] = '引用の前';
+$labels['insertsignature'] = '署名を挿入';
+$labels['previewpanemarkread'] = 'プレビューしたメッセージを既読に設定';
+$labels['afternseconds'] = '$n秒後';
+$labels['reqmdn'] = '常に開封確認通知を要求';
+$labels['reqdsn'] = '常に配送状態通知を要求';
+$labels['replysamefolder'] = '返信したメッセージを元のメールと同じフォルダに保存';
+$labels['defaultaddressbook'] = '選択したアドレス帳に新しい連絡先を追加';
+$labels['autocompletesingle'] = '自動補完で代替のメールアドレスを飛ばして進める';
+$labels['listnamedisplay'] = '連絡先の一覧表示';
+$labels['spellcheckbeforesend'] = 'メッセージを送信する前にスペルチェック';
 $labels['spellcheckoptions'] = 'スペルチェックのオプション';
-$labels['spellcheckignoresyms'] = 'è¨\98å\8f·ã\81®å\8d\98èª\9eã\82\92ç\84¡è¦\96ã\81\99ã\82\8b';
-$labels['spellcheckignorenums'] = 'æ\95°å­\97ã\81®å\8d\98èª\9eã\82\92ç\84¡è¦\96ã\81\99ã\82\8b';
-$labels['spellcheckignorecaps'] = 'すべて大文字の単語を無視する';
+$labels['spellcheckignoresyms'] = 'è¨\98å\8f·ã\82\92å\90«ã\82\80å\8d\98èª\9eã\82\92ç\84¡è¦\96';
+$labels['spellcheckignorenums'] = 'æ\95°å­\97ã\82\92å\90«ã\82\80å\8d\98èª\9eã\82\92ç\84¡è¦\96';
+$labels['spellcheckignorecaps'] = 'すべて大文字の単語を無視';
 $labels['addtodict'] = '辞書に追加';
-
-$labels['folder']  = 'フォルダー';
-$labels['folders']  = 'フォルダー一覧';
-$labels['foldername']  = 'フォルダー名';
-$labels['subscribed']  = '購読済み';
-$labels['messagecount'] = 'メール';
-$labels['create']  = '作成';
-$labels['createfolder']  = 'フォルダーの新規作成';
-$labels['managefolders']  = 'フォルダーの管理';
+$labels['mailtoprotohandler'] = 'mailto: のリンクを扱うプロトコル処理の登録';
+$labels['folder'] = 'フォルダー';
+$labels['foldername'] = 'フォルダー名';
+$labels['subscribed'] = '購読済み';
+$labels['messagecount'] = 'メッセージ';
+$labels['create'] = '作成';
+$labels['createfolder'] = '新しいフォルダーを作成';
+$labels['managefolders'] = 'フォルダーを管理';
 $labels['specialfolders'] = '特殊なフォルダー';
-$labels['properties'] = 'プロパティ';
-$labels['folderproperties'] = 'フォルダーのプロパティ';
-$labels['parentfolder'] = '親フォルダー';
+$labels['properties'] = '属性';
+$labels['folderproperties'] = 'フォルダーの属性';
+$labels['parentfolder'] = '親ã\81®ã\83\95ã\82©ã\83«ã\83\80ã\83¼';
 $labels['location'] = '場所';
 $labels['info'] = '情報';
-$labels['getfoldersize'] = 'ã\82¯ã\83ªã\83\83ã\82¯ã\81§ã\83\95ã\82©ã\83«ã\83\80ã\83¼ ã\82µã\82¤ã\82ºã\81®取得';
-$labels['changesubscription'] = 'ã\82¯ã\83ªã\83\83ã\82¯ã\81§è³¼èª­ã\81®変更';
+$labels['getfoldersize'] = 'ã\82¯ã\83ªã\83\83ã\82¯ã\81\97ã\81¦ã\83\95ã\82©ã\83«ã\83\80ã\83¼ã\81®å¤§ã\81\8dã\81\95ã\82\92取得';
+$labels['changesubscription'] = 'ã\82¯ã\83ªã\83\83ã\82¯ã\81\97ã\81¦è³¼èª­ç\8a¶æ\85\8bã\82\92変更';
 $labels['foldertype'] = 'フォルダーの種類';
-$labels['personalfolder']  = '個人フォルダー';
-$labels['otherfolder']  = '他のユーザーのフォルダー';
-$labels['sharedfolder']  = '公開フォルダー';     
-
-$labels['sortby'] = '並び替えの基準';
-$labels['sortasc']  = '昇順で並び替え';
-$labels['sortdesc'] = '降順で並び替え';
+$labels['personalfolder'] = '個人フォルダー';
+$labels['otherfolder'] = '他のユーザーのフォルダー';
+$labels['sharedfolder'] = '公開フォルダー';
+$labels['sortby'] = '並べ替え';
+$labels['sortasc'] = '昇順で並べ替え';
+$labels['sortdesc'] = '降順で並べ替え';
 $labels['undo'] = '取り消し';
-
 $labels['plugin'] = 'プラグイン';
 $labels['version'] = 'バージョン';
 $labels['source'] = 'ソース';
 $labels['license'] = 'ライセンス';
-$labels['support'] = 'ヘルプを受ける';
-
-// units
+$labels['support'] = 'サポートを得る';
 $labels['B'] = 'バイト';
 $labels['KB'] = 'KB';
 $labels['MB'] = 'MB';
 $labels['GB'] = 'GB';
-
-// character sets
 $labels['unicode'] = 'Unicode';
 $labels['english'] = '英語';
 $labels['westerneuropean'] = '西ヨーロッパ言語';
 $labels['easterneuropean'] = '東ヨーロッパ言語';
 $labels['southeasterneuropean'] = '南東ヨーロッパ言語';
-$labels['baltic'] = 'ã\83\90ã\83«ã\83\88è¨\80語';
-$labels['cyrillic'] = 'キリル言語';
+$labels['baltic'] = 'ã\83\90ã\83«ã\83\88諸語';
+$labels['cyrillic'] = 'キリル文字';
 $labels['arabic'] = 'アラビア語';
 $labels['greek'] = 'ギリシャ語';
 $labels['hebrew'] = 'ヘブライ語';
@@ -498,4 +448,3 @@ $labels['japanese'] = '日本語';
 $labels['korean'] = '韓国語';
 $labels['chinese'] = '中国語';
 
-?>
index e728b03fc1d0f8875cf87368dd69227c33ddc1a2..81e6d476596b8851c89433b177e392fbb4a18d80 100644 (file)
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/ja_JP/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, Roundcube Dev. - Switzerland                 |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Tadashi Jokagi <elf2000@users.sourceforge.net>                |
-|         Takashi Takamatsu <taka717@gmail.com>                         |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 5569 2011-12-07 14:47:32Z thomasb $
-
-//  EN-Revision: 5490
-
+ +-----------------------------------------------------------------------+
+ | localization/ja_JP/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Takahiro Kambe                                                |
+ +-----------------------------------------------------------------------+
 */
 
 $messages = array();
-$messages['loginfailed']  = 'ログインに失敗しました。';
-$messages['cookiesdisabled'] = 'ブラウザーで Cookie が無効に設定されています。';
-$messages['sessionerror'] = 'セッションが正しくないか期限切れです。';
-$messages['imaperror'] = 'IMAP サーバーへの接続に失敗しました。';
-$messages['servererror'] = 'サーバーでエラーが発生しました。';
-$messages['servererrormsg'] = 'サーバー エラー: $msg';
+$messages['errortitle'] = 'エラーが発生しました!';
+$messages['loginfailed'] = 'ログインできませんでした。';
+$messages['cookiesdisabled'] = 'ブラウザーがCookieを受け付けません。';
+$messages['sessionerror'] = 'セッションが正しくないか期限が切れています。';
+$messages['storageerror'] = 'IMAP サーバーへの接続に失敗しました。';
+$messages['servererror'] = 'サーバーでエラーです!';
+$messages['servererrormsg'] = 'サーバーエラー: $msg';
 $messages['dberror'] = 'データベースのエラーです!';
-$messages['errorreadonly'] = '実行に失敗しました。フォルダーは読み込み専用です。';
-$messages['errornoperm'] = '実行に失敗しました。権限がありません。';
-$messages['invalidrequest'] = '不正なリクエストです。データは保存されませんでした。';
-$messages['nomessagesfound'] = 'このフォルダーにはメールはありません。';
-$messages['loggedout'] = 'ログアウトしました。';
-$messages['mailboxempty'] = 'フォルダーは空です。';
-$messages['loading'] = '読み込んでいます...';
-$messages['uploading'] = 'ファイルをアップロードしています...';
-$messages['uploadingmany'] = 'ファイルをアップロードしています...';
-$messages['loadingdata'] = 'データを読み込んでいます...';
-$messages['checkingmail'] = 'メールを確認しています...';
-$messages['sendingmessage'] = 'メールを送信しています...';
-$messages['messagesent'] = 'メールを送信しました。';
-$messages['savingmessage'] = 'メールを保存しています...';
-$messages['messagesaved'] = 'メールを下書きに保存しました。';
-$messages['successfullysaved'] = '保存しました。';
-$messages['addedsuccessfully'] = 'アドレス帳への連絡先の追加しました。';
-$messages['contactexists'] = 'このメールアドレスを含む連絡先が既に存在します。';
-$messages['messagesaved'] = 'メールを下書きに保存しました。';
+$messages['requesttimedout'] = 'リクエストのタイムアウト';
+$messages['errorreadonly'] = '操作を実行できませんでした。フォルダーは読み込み専用です。';
+$messages['errornoperm'] = '操作を実行できませんでした。権限がありません。';
+$messages['invalidrequest'] = '不正なリクエストです!  データは保存していません。';
+$messages['nomessagesfound'] = 'このフォルダーにはメッセージはありません。';
+$messages['loggedout'] = 'ログアウトしました。さようなら!';
+$messages['mailboxempty'] = 'メールボックスは空です。';
+$messages['loading'] = '読み込み中...';
+$messages['uploading'] = 'ファイルをアップロード中...';
+$messages['uploadingmany'] = 'ファイルをアップロード中...';
+$messages['loadingdata'] = 'データを読み込み中...';
+$messages['checkingmail'] = '新しいメッセージを確認中...';
+$messages['sendingmessage'] = 'メッセージを送信中...';
+$messages['messagesent'] = 'メッセージを送信しました。';
+$messages['savingmessage'] = 'メッセージを保存中...';
+$messages['messagesaved'] = 'メッセージを下書きに保存しました。';
 $messages['successfullysaved'] = '保存しました。';
 $messages['addedsuccessfully'] = '連絡先をアドレス帳に追加しました。';
-$messages['contactexists'] = '同じメールアドレスの連絡先がすでに存在します。';
-$messages['contactnameexists'] = '同じ名前の連絡先がすでに存在します。';
-$messages['blockedimages'] = 'ã\83\97ã\83©ã\82¤ã\83\90ã\82·ã\83¼ä¿\9dè­·ã\81®ã\81\9fã\82\81ã\80\81ã\81\93ã\81®ã\83¡ã\83¼ã\83«ã\81«å\90«ã\81¾ã\82\8cã\82\8bã\83ªã\83¢ã\83¼ã\83\88ç\94»å\83\8fã\82\92ã\83\96ã\83­ã\83\83ã\82¯しました。';
-$messages['encryptedmessage'] = 'ã\81\93ã\81®ã\83¡ã\83¼ã\83«ã\81¯æ\9a\97å\8f·å\8c\96ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\81\9fã\82\81表示ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\80\82';
+$messages['contactexists'] = '同じメールアドレスの連絡先がに存在します。';
+$messages['contactnameexists'] = '同じ名前の連絡先がに存在します。';
+$messages['blockedimages'] = 'ã\81\82ã\81ªã\81\9fã\81®ã\83\97ã\83©ã\82¤ã\83\90ã\82·ã\83¼ã\82\92å®\88ã\82\8bã\81\9fã\82\81ã\80\81ã\81\93ã\81®ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\81«å\90«ã\81¾ã\82\8cã\82\8bå¤\96é\83¨ç\94»å\83\8fã\82\92é\81®æ\96­しました。';
+$messages['encryptedmessage'] = 'ã\81\93ã\81®ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\81¯æ\9a\97å\8f·å\8c\96ã\81\95ã\82\8cã\81¦ã\81\84ã\81¦è¡¨ç¤ºã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\80\81ã\81\94ã\82\81ã\82\93ã\81ªã\81\95ã\81\84!';
 $messages['nocontactsfound'] = '連絡先がありません。';
 $messages['contactnotfound'] = '連絡先が見つかりません。';
-$messages['contactsearchonly'] = 'é\80£çµ¡å\85\88ã\81®æ¤\9cç´¢ã\81«ã\81¯ã\81\84ã\81\8fã\81¤ã\81\8bã\81®å\8d\98èª\9eã\82\92å\85¥å\8a\9bã\81\97ã\81¾ã\81\99';
-$messages['sendingfailed'] = 'ã\83¡ã\83¼ã\83«ã\81®é\80\81ä¿¡ã\81«å¤±æ\95\97ã\81\97ã\81¾した。';
-$messages['senttooquickly'] = 'ã\81\93ã\81®ã\83¡ã\83¼ã\83«ã\82\92é\80\81ä¿¡ã\81\99ã\82\8bã\81¾ã\81§ $sec ç§\92 お待ちください。';
-$messages['errorsavingsent'] = 'é\80\81ä¿¡ã\83¡ã\83¼ã\83«の保存中にエラーが発生しました。';
+$messages['contactsearchonly'] = 'é\80£çµ¡å\85\88ã\82\92æ\8e¢ã\81\99ã\81\9fã\82\81ã\81®æ¤\9cç´¢èª\9eã\82\92å\85¥å\8a\9bã\81\97ã\81¦ã\81\8fã\81 ã\81\95ã\81\84';
+$messages['sendingfailed'] = 'ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82\92é\80\81ä¿¡ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§した。';
+$messages['senttooquickly'] = 'ã\81\93ã\81®ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82\92é\80\81ä¿¡ã\81\99ã\82\8bã\81¾ã\81§ã\80\81$secç§\92お待ちください。';
+$messages['errorsavingsent'] = 'é\80\81ä¿¡ã\83¡ã\83\83ã\82»ã\83¼ã\82¸の保存中にエラーが発生しました。';
 $messages['errorsaving'] = '保存中にエラーが発生しました。';
-$messages['errormoving'] = 'ã\83¡ã\83¼ã\83«を移動できません。';
-$messages['errorcopying'] = 'ã\83¡ã\83¼ã\83«をコピーできません。';
-$messages['errordeleting'] = 'ã\83¡ã\83¼ã\83«を削除できません。';
-$messages['errormarking'] = 'ã\83¡ã\83¼ã\83«ã\81®マークを設定できません。';
-$messages['deletecontactconfirm']  = '選択した連絡先を本当に削除しますか?';
-$messages['deletegroupconfirm']  = 'このグループを本当に削除しますか?';
+$messages['errormoving'] = 'ã\83¡ã\83\83ã\82»ã\83¼ã\82¸を移動できません。';
+$messages['errorcopying'] = 'ã\83¡ã\83\83ã\82»ã\83¼ã\82¸をコピーできません。';
+$messages['errordeleting'] = 'ã\83¡ã\83\83ã\82»ã\83¼ã\82¸を削除できません。';
+$messages['errormarking'] = 'ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\81«マークを設定できません。';
+$messages['deletecontactconfirm'] = '選択した連絡先を本当に削除しますか?';
+$messages['deletegroupconfirm'] = 'このグループを本当に削除しますか?';
 $messages['deletemessagesconfirm'] = '選択したメールを本当に削除しますか?';
 $messages['deletefolderconfirm'] = 'このフォルダーを本当に削除しますか?';
-$messages['purgefolderconfirm'] = 'このフォルダーのメールを本当に削除しますか?';
-$messages['contactdeleting'] = '連絡先を削除しています...';
-$messages['groupdeleting'] = 'グループを削除しています...';
-$messages['folderdeleting'] = 'フォルダーを削除しています...';
-$messages['foldermoving'] = 'フォルダーを移動しています...';
-$messages['foldersubscribing'] = 'フォルダーを購読しています...';
-$messages['folderunsubscribing'] = 'フォルダーの購読をやめています...';
-$messages['formincomplete'] = 'ã\83\95ã\82©ã\83¼ã\83 ã\81®å\85¨é \85ç\9b®ã\82\92å\85¥å\8a\9bã\81\97ã\81¦ã\81\84ã\81¾ã\81\9bã\82\93。';
-$messages['noemailwarning'] = '正しいメールアドレスを入力してください。';
-$messages['nonamewarning']  = '名前を入力してください。';
+$messages['purgefolderconfirm'] = 'このフォルダーのすべてのメールを本当に削除しますか?';
+$messages['contactdeleting'] = '連絡先を削除...';
+$messages['groupdeleting'] = 'グループを削除...';
+$messages['folderdeleting'] = 'フォルダーを削除...';
+$messages['foldermoving'] = 'フォルダーを移動...';
+$messages['foldersubscribing'] = 'フォルダーを購読...';
+$messages['folderunsubscribing'] = 'フォルダーの購読を解除中...';
+$messages['formincomplete'] = 'ã\83\95ã\82©ã\83¼ã\83 ã\81«æ\9cªè¨\98å\85¥ã\81®é \85ç\9b®ã\81\8cã\81\82ã\82\8aã\81¾ã\81\99。';
+$messages['noemailwarning'] = '正しい電子メールアドレスを入力してください。';
+$messages['nonamewarning'] = '名前を入力してください。';
 $messages['nopagesizewarning'] = 'ページのサイズを入力してください。';
-$messages['nosenderwarning'] = '差出人のメールアドレスを入力してください。';
-$messages['norecipientwarning'] = 'å®\9bå\85\88ã\81¯å°\91ã\81ªã\81\8fã\81¨ã\82\82ã\81²ã\81¨ã\82\8aå\88\86ã\81¯入力してください。';
-$messages['nosubjectwarning'] = '件名が空です。今すぐ入力しますか?';
-$messages['nobodywarning'] = 'æ\9c¬æ\96\87ã\81\8cç\84¡ã\81\84ã\83¡ã\83¼ã\83«を送信しますか?';
-$messages['notsentwarning'] = 'ã\83¡ã\83¼ã\83«ã\81¯é\80\81ä¿¡ã\81\95ã\82\8cã\81¾ã\81\9bã\82\93ã\81§ã\81\97ã\81\9fã\80\82ç ´æ£\84ã\81\97ã\81¾ã\81\99ã\81\8b?';
-$messages['noldapserver'] = '検索する LDAP サーバーを選択してください。';
-$messages['nosearchname'] = '連絡先の名前かメールアドレスを入力してください。';
-$messages['notuploadedwarning'] = 'ã\82¢ã\83\83ã\83\97ã\83­ã\83¼ã\83\89ã\81\8cå®\8cäº\86ã\81\97ã\81¦ã\81\84ã\81¾ã\81\9bã\82\93ã\80\82ã\82¢ã\83\83ã\83\97ã\83­ã\83¼ã\83\89ã\81\8cå®\8cäº\86ã\81\99ã\82\8bã\81¾ã\81§å¾\85ã\81¤ã\81\8bã\80\81ã\82­ã\83£ã\83³ã\82»ã\83«してください。';
-$messages['searchsuccessful'] = '$nr 件のメールが見つかりました。';
-$messages['contactsearchsuccessful'] = '$nr 件の連絡先が見つかりました。';
+$messages['nosenderwarning'] = '送信者の電子メールアドレスを入力してください。';
+$messages['norecipientwarning'] = 'å°\91ã\81ªã\81\8fã\81¨ã\82\82\81¤å®\9bå\85\88ã\82\92入力してください。';
+$messages['nosubjectwarning'] = '件名(Subject)の欄が空です。今、入力しますか?';
+$messages['nobodywarning'] = 'æ\9c¬æ\96\87ã\81®ç\84¡ã\81\84ã\83¡ã\83\83ã\82»ã\83¼ã\82¸を送信しますか?';
+$messages['notsentwarning'] = 'ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82\92é\80\81ä¿¡ã\81\97ã\81¾ã\81\9bã\82\93ã\81§ã\81\97ã\81\9fã\80\82ã\81\93ã\81®ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82\92ç ´æ£\84ã\81\97ã\81¾ã\81\99ã\81\8bã\80\82';
+$messages['noldapserver'] = '検索するLDAPサーバーを選択してください。';
+$messages['nosearchname'] = '連絡先の名前か電子メールアドレスを入力してください。';
+$messages['notuploadedwarning'] = 'ã\81\99ã\81¹ã\81¦ã\81®æ·»ä»\98ã\83\95ã\82¡ã\82¤ã\83«ã\81®ã\82¢ã\83\83ã\83\97ã\83­ã\83¼ã\83\89ã\82\92å®\8cäº\86ã\81\97ã\81¦ã\81\84ã\81¾ã\81\9bã\82\93ã\80\82ä»\8aã\81\97ã\81°ã\82\89ã\81\8få¾\85ã\81¤ã\81\8bã\80\81å\8f\96ã\82\8aæ¶\88ã\81\97してください。';
+$messages['searchsuccessful'] = '$nr通のメッセージが見つかりました。';
+$messages['contactsearchsuccessful'] = '$nr件の連絡先が見つかりました。';
 $messages['searchnomatch'] = '一致するものが見つかりませんでした。';
-$messages['searching'] = '検索しています...';
-$messages['checking'] = '確認しています...';
-$messages['nospellerrors'] = 'スペル ミスは見つかりませんでした。';
+$messages['searching'] = '検索...';
+$messages['checking'] = '確認...';
+$messages['nospellerrors'] = 'スペルミスは見つかりませんでした。';
 $messages['folderdeleted'] = 'フォルダーを削除しました。';
 $messages['foldersubscribed'] = 'フォルダーを購読しました。';
-$messages['folderunsubscribed'] = 'フォルダーの購読をやめました。';
+$messages['folderunsubscribed'] = 'フォルダーの購読を解除しました。';
 $messages['folderpurged'] = 'フォルダーを空にしました。';
 $messages['folderexpunged'] = 'フォルダーを整理しました。';
 $messages['deletedsuccessfully'] = '削除しました。';
-$messages['converting'] = 'メールから書式を削除しています...';
-$messages['messageopenerror'] = 'サーバーからメールを取得できません。';
-$messages['fileuploaderror'] = 'ã\83\95ã\82¡ã\82¤ã\83«ã\81®ã\82¢ã\83\83ã\83\97ã\83­ã\83¼ã\83\89ã\81«å¤±æ\95\97ã\81\97ã\81¾した。';
-$messages['filesizeerror'] = 'アップロードするファイルのサイズが上限 ($size) を超えました。';
-$messages['copysuccess'] = '$nr 件のアドレスのコピーしました。';
-$messages['copyerror'] = 'ã\81\84ã\81\8fã\81¤ã\81\8bã\81®ã\82¢ã\83\89ã\83¬ã\82¹ã\81\8cã\82³ã\83\94ã\83¼ã\81§ã\81\8dã\81¾ã\81\9bã\82\93。';
-$messages['sourceisreadonly'] = 'この元アドレスは読み込み専用です。';
+$messages['converting'] = 'メールから書式を削除...';
+$messages['messageopenerror'] = 'サーバーからメールを読み込めません。';
+$messages['fileuploaderror'] = 'ã\83\95ã\82¡ã\82¤ã\83«ã\82\92ã\82¢ã\83\83ã\83\97ã\83­ã\83¼ã\83\89ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§した。';
+$messages['filesizeerror'] = 'アップロードするファイルのサイズが上限($size)を超えました。';
+$messages['copysuccess'] = '$nr件のアドレスをコピーしました。';
+$messages['copyerror'] = 'ã\81©ã\81®ã\82¢ã\83\89ã\83¬ã\82¹ã\82\82ã\82³ã\83\94ã\83¼ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§ã\81\97ã\81\9f。';
+$messages['sourceisreadonly'] = 'このアドレスソースは読み込み専用です。';
 $messages['errorsavingcontact'] = '連絡先のアドレスを保存できません。';
-$messages['movingmessage'] = 'ã\83¡ã\83¼ã\83«ã\82\92ç§»å\8b\95ã\81\97ã\81¦ã\81\84ã\81¾ã\81\99...';
-$messages['copyingmessage'] = 'ã\83¡ã\83¼ã\83«ã\82\92ã\82³ã\83\94ã\83¼ã\81\97ã\81¦ã\81\84ã\81¾ã\81\99...';
-$messages['copyingcontact'] = '連絡先をコピーしています...';
-$messages['deletingmessage'] = 'ã\83¡ã\83¼ã\83«ã\82\92å\89\8aé\99¤ã\81\97ã\81¦ã\81\84ã\81¾ã\81\99...';
-$messages['markingmessage'] = 'ã\83¡ã\83¼ã\83«ã\81®ã\83\9eã\83¼ã\82¯ã\82\92設å®\9aã\81\97ã\81¦ã\81\84ã\81¾ã\81\99...';
-$messages['addingmember'] = 'ã\82°ã\83«ã\83¼ã\83\97ã\81¸é\80£çµ¡å\85\88ã\82\92ã\82³ã\83\94ã\83¼ã\81\97ã\81¦ã\81\84ã\81¾ã\81\99...';
-$messages['removingmember'] = 'グループから連絡先を削除しています...';
+$messages['movingmessage'] = 'ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82\92ç§»å\8b\95中...';
+$messages['copyingmessage'] = 'ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82\92ã\82³ã\83\94ã\83¼ä¸­...';
+$messages['copyingcontact'] = '連絡先をコピー...';
+$messages['deletingmessage'] = 'ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82\92å\89\8aé\99¤ä¸­...';
+$messages['markingmessage'] = 'ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\81«ã\83\9eã\83¼ã\82¯ã\82\92設å®\9a中...';
+$messages['addingmember'] = 'ã\82°ã\83«ã\83¼ã\83\97ã\81«é\80£çµ¡å\85\88ã\82\92ã\82³ã\83\94ã\83¼ä¸­...';
+$messages['removingmember'] = 'グループから連絡先を削除...';
 $messages['receiptsent'] = '開封通知を送信しました。';
-$messages['errorsendingreceipt'] = '開封通知の送信ができません。';
-$messages['nodeletelastidentity'] = '削除できません。少なくともひとつの個人情報が必要です。';
-$messages['forbiddencharacter'] = 'フォルダー名に利用できない文字が含まれています。';
+$messages['errorsendingreceipt'] = '開封通知を送信ができませんでした。';
+$messages['deleteidentityconfirm'] = 'この識別情報を本当に削除しますか?';
+$messages['nodeletelastidentity'] = 'この識別情報は最後の1つなので削除できません。';
+$messages['forbiddencharacter'] = 'フォルダー名に使用できない文字が含まれています。';
 $messages['selectimportfile'] = 'アップロードするファイルを選択してください。';
-$messages['addresswriterror'] = 'é\81¸æ\8a\9eã\81\97ã\81\9fã\82¢ã\83\89ã\83¬ã\82¹å¸³ã\81«æ\9b¸ã\81\8dè¾¼ã\82\81ã\81¾ã\81\9bã\82\93。';
-$messages['contactaddedtogroup'] = 'ã\81\93ã\81®ã\82°ã\83«ã\83¼ã\83\97ã\81¸連絡先を追加しました。';
+$messages['addresswriterror'] = 'é\81¸æ\8a\9eã\81\97ã\81\9fã\82¢ã\83\89ã\83¬ã\82¹å¸³ã\81¯æ\9b¸ã\81\8dè¾¼ã\81¿ã\81§ã\81\8dã\81ªã\81\84ã\82¢ã\83\89ã\83¬ã\82¹å¸³ã\81§ã\81\99。';
+$messages['contactaddedtogroup'] = 'ã\81\93ã\81®ã\82°ã\83«ã\83¼ã\83\97ã\81«連絡先を追加しました。';
 $messages['contactremovedfromgroup'] = 'このグループから連絡先を削除しました。';
 $messages['importwait'] = 'インポート中です。しばらくお待ちください...';
-$messages['importerror'] = 'インポートに失敗しました。アップロードしたファイルは不正な vCard ファイルです。';
-$messages['importconfirm'] = '<b>$inserted 件の連絡先をインポートしました。</b>';
-$messages['importconfirmskipped'] = '<b>$skipped 拳の既存エントリーをスキップしました</b>';
-
+$messages['importerror'] = 'インポートに失敗しました。アップロードしたファイルは不正なvCardファイルです。';
+$messages['importconfirm'] = '<b>$inserted件の連絡先をインポートしました。</b>';
+$messages['importconfirmskipped'] = '<b>$skipped件の既存する項目を飛ばした。</b>';
 $messages['opnotpermitted'] = '許可されていない操作です。';
-$messages['nofromaddress'] = '選択中の個人情報にメールアドレスが含まれていません。';
-$messages['editorwarning'] = 'テキスト エディターに切り替えるとすべての書式が失われます。よろしいですか?';
-$messages['httpreceivedencrypterror'] = '致命的な設定エラーが発生しました。<b>メッセージは送信されませんでした。</b>システム管理者に至急連絡してください。';
+$messages['nofromaddress'] = '選択している識別情報に電子メールアドレスが抜けています。';
+$messages['editorwarning'] = 'テキストエディターに切り替えると、すべての書式はなくなります。本当に続けますか?';
+$messages['httpreceivedencrypterror'] = '致命的な設定エラーが発生しました。システム管理者に至急連絡してください。<b>メッセージを送信できません。</b>';
 $messages['smtpconnerror'] = 'SMTP Error ($code): サーバーへの接続に失敗しました。';
 $messages['smtpautherror'] = 'SMTP Error ($code): 認証に失敗しました。';
 $messages['smtpfromerror'] = 'SMTP Error ($code): 差出人 "$from" を設定できません ($msg)';
 $messages['smtptoerror'] = 'SMTP Error ($code): 宛先 "$to" を追加できません ($msg)';
 $messages['smtprecipientserror'] = 'SMTP Error: 宛先の一覧を解析できません。';
 $messages['smtperror'] = 'SMTP エラー: $msg';
-$messages['emailformaterror'] = 'メールアドレスが正しくありません: $email';
-$messages['toomanyrecipients'] = '宛先が多すぎます。$max 件以内にしてください。';
+$messages['emailformaterror'] = '電子メールアドレスが正しくありません: $email';
+$messages['toomanyrecipients'] = '宛先が多すぎます。$max件以内にしてください。';
 $messages['maxgroupmembersreached'] = 'グループのメンバーが多すぎます。$max 件以内にしてください。';
-$messages['internalerror'] = '内部エラーが発生しました。もう一度やり直してください。';
+$messages['internalerror'] = '内部エラーが発生しました。もう一度してください。';
 $messages['contactdelerror'] = '連絡先を削除できませんでした。';
 $messages['contactdeleted'] = '連絡先を削除しました。';
 $messages['contactrestoreerror'] = '削除した連絡先を復元できませんでした。';
@@ -152,19 +143,18 @@ $messages['savedsearchdeleted'] = '保存した検索情報を削除しました
 $messages['savedsearchdeleteerror'] = '保存した検索情報を削除できません。';
 $messages['savedsearchcreated'] = '検索情報を作成しました。';
 $messages['savedsearchcreateerror'] = '検索情報を削除できませんでした。';
-$messages['messagedeleted'] = 'ã\83¡ã\83¼ã\83«を削除しました。';
-$messages['messagemoved'] = 'ã\83¡ã\83¼ã\83«を移動しました。';
-$messages['messagecopied'] = 'ã\83¡ã\83¼ã\83«をコピーしました。';
-$messages['messagemarked'] = 'ã\83¡ã\83¼ã\83«ã\81®マークを設定しました。';
-$messages['autocompletechars'] = '自動補完には少なくとも $min 文字入力してください。';
+$messages['messagedeleted'] = 'ã\83¡ã\83\83ã\82»ã\83¼ã\82¸を削除しました。';
+$messages['messagemoved'] = 'ã\83¡ã\83\83ã\82»ã\83¼ã\82¸を移動しました。';
+$messages['messagecopied'] = 'ã\83¡ã\83\83ã\82»ã\83¼ã\82¸をコピーしました。';
+$messages['messagemarked'] = 'ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\81«マークを設定しました。';
+$messages['autocompletechars'] = '自動補完には少なくとも$min文字入力してください。';
 $messages['autocompletemore'] = '多くのエントリーが見つかりました。もっと入力してください。';
-$messages['namecannotbeempty'] = 'å\90\8då\89\8dã\82\92空æ¬\84にできません。';
+$messages['namecannotbeempty'] = 'å\90\8då\89\8dã\81¯ç©ºにできません。';
 $messages['nametoolong'] = '名前が長すぎます。';
 $messages['folderupdated'] = 'フォルダーを更新しました。';
 $messages['foldercreated'] = 'フォルダーを作成しました。';
 $messages['invalidimageformat'] = '画像の形式が正しくありません。';
-$messages['mispellingsfound'] = 'メッセージにスペル エラーを見つけました。';
-$messages['parentnotwritable'] = 'é\81¸æ\8a\9eã\81\97ã\81\9f親ã\83\95ã\82©ã\83«ã\83\80ã\83¼ã\81¸ã\81®ä½\9cæ\88\90ã\80\81ç§»å\8b\95ã\81«å¤±æ\95\97ã\81\97ã\81¾した。アクセス権限がありません。';
+$messages['mispellingsfound'] = 'メッセージにスペルミスを見つけました。';
+$messages['parentnotwritable'] = 'é\81¸æ\8a\9eã\81\97ã\81\9f親ã\83\95ã\82©ã\83«ã\83\80ã\83¼ã\81«ä½\9cæ\88\90ã\81¾ã\81\9fã\81¯ç§»å\8b\95ã\82\92ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§した。アクセス権限がありません。';
 $messages['messagetoobig'] = 'その処理をするにはメッセージ部分が大きすぎます。';
 
-?>
index fd3811467418251dbd4d6a439e97743883f50aa2..c963c988f9b1880c2906d7c7b7d6a6764474270f 100755 (executable)
@@ -1,19 +1,17 @@
 <?php
 
 /*
-+-----------------------------------------------------------------------+
-| localization/ka_GE/labels.inc                                         |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Zaza Zviadadze, George Machitidze                            |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 842 2009-10-03 19:00:00  zaza$
-
+ +-----------------------------------------------------------------------+
+ | localization/ka_GE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $labels = array();
@@ -42,6 +40,7 @@ $labels['size'] = 'ზომა';
 $labels['priority'] = 'პრიორიტეტი';
 $labels['organization'] = 'ორგანიზაცია';
 $labels['mailboxlist'] = 'საქაღალდეები';
+$labels['folders'] = 'საქაღალდეები';
 $labels['messagenrof'] = 'შეტყობინება $nr დან $count';
 $labels['copy'] = 'ასლი';
 $labels['move'] = 'გადატანა';
@@ -68,7 +67,8 @@ $labels['jan'] = 'იან';
 $labels['feb'] = 'თებ';
 $labels['mar'] = 'მარ';
 $labels['apr'] = 'აპრ';
-$labels['may'] = 'მაი';
+$labels['may'] = 'მაისი';
+$labels['longmay'] = 'მაისი';
 $labels['jun'] = 'ივნ';
 $labels['jul'] = 'ივლ';
 $labels['aug'] = 'აგვ';
@@ -80,7 +80,6 @@ $labels['longjan'] = 'იანვარი';
 $labels['longfeb'] = 'თებერვალი';
 $labels['longmar'] = 'მარტი';
 $labels['longapr'] = 'აპრილი';
-$labels['longmay'] = 'მაისი';
 $labels['longjun'] = 'ივნისი';
 $labels['longjul'] = 'ივლისი';
 $labels['longaug'] = 'აგვისტო';
@@ -90,6 +89,7 @@ $labels['longnov'] = 'ნოემბერი';
 $labels['longdec'] = 'დეკემბერი';
 $labels['today'] = 'დღეს';
 $labels['checkmail'] = 'შემოწმება ახალ შეტყობინებაზე';
+$labels['compose'] = 'შეტყობინების დაწერა';
 $labels['writenewmessage'] = 'ახალი შეტყობინება';
 $labels['replytomessage'] = 'პასუხი';
 $labels['replytoallmessage'] = 'პასუხი ყველას';
@@ -112,6 +112,7 @@ $labels['moreactions'] = 'მეტი მოქმედება...';
 $labels['select'] = 'მონიშვნა';
 $labels['all'] = 'ყველა';
 $labels['none'] = 'არცერთი';
+$labels['nonesort'] = 'არცერთი';
 $labels['currpage'] = 'მიმდინარე გვერდი';
 $labels['unread'] = 'წაუკითხავი';
 $labels['flagged'] = 'მონიშნული';
@@ -141,7 +142,6 @@ $labels['searchmod'] = 'ძებნის ვარიანტები';
 $labels['msgtext'] = 'ყველა შეტყობინება';
 $labels['openinextwin'] = 'გახსნა ახალ ფანჯარაში';
 $labels['emlsave'] = 'გადმოწერა (.eml)';
-$labels['compose'] = 'შეტყობინების დაწერა';
 $labels['editasnew'] = 'რედაქტირება როგორც ახლის';
 $labels['savemessage'] = 'დროებით შენახვა';
 $labels['sendmessage'] = 'შეტყობინების გაგზავნა';
@@ -197,9 +197,9 @@ $labels['allfields'] = 'ყველა ველი';
 $labels['search'] = 'ძებნა';
 $labels['advsearch'] = 'გაფართოებული ძებნა';
 $labels['other'] = 'სხვა';
+$labels['typeother'] = 'სხვა';
 $labels['typehome'] = 'სახლი';
 $labels['typework'] = 'სამსახური';
-$labels['typeother'] = 'სხვა';
 $labels['typemobile'] = 'მობილური';
 $labels['typemain'] = 'ძირითადი';
 $labels['typehomefax'] = 'სახლის ფაქსი';
@@ -308,7 +308,6 @@ $labels['mainoptions'] = 'ძირითადი პარამეტრე
 $labels['section'] = 'განყოფილება';
 $labels['maintenance'] = 'მომსახურება';
 $labels['newmessage'] = 'ახალი შეტყობინება';
-$labels['listoptions'] = 'პარამეტრების ჩამონათვალი';
 $labels['signatureoptions'] = 'ხელმოწერის ოფციები';
 $labels['whenreplying'] = 'პასუხის შემთხვევაში';
 $labels['replytopposting'] = 'დაიწყოს ახალი შეტყობინება ორიგინალის ზემოთ';
@@ -324,7 +323,6 @@ $labels['insertsignature'] = 'ხელმოცერის ჩასმა';
 $labels['afternseconds'] = '$n წამის შემდეგ';
 $labels['addtodict'] = 'ლექსიკონში დამატება';
 $labels['folder'] = 'საქაღალდე';
-$labels['folders'] = 'საქაღალდეები';
 $labels['foldername'] = 'საქაღალდის დასახელება';
 $labels['subscribed'] = 'გამოწერილია';
 $labels['messagecount'] = 'შეტყობინებები';
@@ -362,4 +360,3 @@ $labels['japanese'] = 'იაპონური';
 $labels['korean'] = 'კორეული';
 $labels['chinese'] = 'ჩინური';
 
-?>
index 55d3333d82ccdd073c4cec823392b3bf88789b93..16d73bf2a8a39ed73d6c06daafb9de30cb286643 100755 (executable)
@@ -1,26 +1,24 @@
 <?php
 
 /*
-+-----------------------------------------------------------------------+
-| localization/ka_GE/messages.inc                                       |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Zaza Zviadadze, George Machitidze                             |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 842 2009-10-03 19:30:00  zaza$
-
+ +-----------------------------------------------------------------------+
+ | localization/ka_GE/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $messages = array();
 $messages['loginfailed'] = 'შესვლა შეუძლებელია';
 $messages['cookiesdisabled'] = 'თქვენი ბროუზერი კუკიებს არ პასუხობს';
 $messages['sessionerror'] = 'თქვენი სესია არის მცდარი ან ვადაგასული';
-$messages['imaperror'] = 'IMAP სერვერთან დაკავშირება შეუძლებელია';
+$messages['storageerror'] = 'IMAP სერვერთან დაკავშირება შეუძლებელია';
 $messages['servererror'] = 'შეცდომა სერვერზე!';
 $messages['servererrormsg'] = 'სერვერის შეცდომა: $msg';
 $messages['dberror'] = 'მონაცემთა ბაზის შეცდომა!';
@@ -121,4 +119,3 @@ $messages['folderupdated'] = 'დასტა წარმატებით გ
 $messages['foldercreated'] = 'დასტა წარმატებით შეიქმნა.';
 $messages['invalidimageformat'] = 'გამოსახულების ფორმატი არასწორია.';
 
-?>
diff --git a/program/localization/kh_KH/labels.inc b/program/localization/kh_KH/labels.inc
deleted file mode 100644 (file)
index 70d19ed..0000000
+++ /dev/null
@@ -1,403 +0,0 @@
-<?php
-
-/*
-+-----------------------------------------------------------------------+
-| language/kh_KH/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2008-2009, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-| Language: Khmer (ភាសាខ្មែរ)                                               |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Mr. SENGTHA CHAY - <sengtha@gmail.com>                        |
-| based on some words translated by Mr. KOSAL SOVAN VISAL               |
-|- <sal@sovanvisal.com>                                                 |
-+-----------------------------------------------------------------------+
-*/
-
-$labels = array();
-$labels['welcome'] = '$product សូមស្វាគមន៍';
-$labels['username'] = 'ឈ្មោះអ្នកប្រើ';
-$labels['password'] = 'ពាក្យសំងាត់';
-$labels['server'] = 'ម៉ាស៊ីនមេ';
-$labels['login'] = 'ពិនិត្យចូល';
-$labels['logout'] = 'ពិនិត្យចេញ';
-$labels['mail'] = 'អ៊ីមែល';
-$labels['settings'] = 'កំនត់ការប្រើប្រាស់';
-$labels['addressbook'] = 'សៀវភៅអាសយដ្ឋាន';
-$labels['inbox'] = 'ប្រអប់សំបុត្រ';
-$labels['drafts'] = 'សំបុត្រពង្រៀង';
-$labels['sent'] = 'សំបុត្រដែលបានបញ្ជូន';
-$labels['trash'] = 'ធុងសំរាម';
-$labels['junk'] = 'សំបុត្រមិនល្អ';
-$labels['subject'] = 'ចំណងជើង';
-$labels['from'] = 'អ្នកផ្ញើ';
-$labels['to'] = 'អ្នកទទួល';
-$labels['cc'] = 'Cc';
-$labels['bcc'] = 'Bcc';
-$labels['replyto'] = 'ឆ្លើយតបទៅកាន់';
-$labels['followupto'] = 'ឆ្លើយតបទៅកាន់ក្រុម';
-$labels['date'] = 'កាលបរិច្ឆេត';
-$labels['size'] = 'ទំហំ';
-$labels['priority'] = 'អទិភាព';
-$labels['organization'] = 'អង្គភាព';
-$labels['readstatus'] = 'ស្ថានភាពនៃការអាន';
-$labels['mailboxlist'] = 'ថតសំបុត្រ';
-$labels['messagesfromto'] = 'សំបុត្រពី $from ទៅដល់ $to ក្នុងចំណោម $count សំបុត្រ';
-$labels['threadsfromto'] = 'បន្តុំសំបុត្រពី $from ទៅដល់ $to ក្នុងចំណោម $count សំបុត្រ';
-$labels['messagenrof'] = 'សំបុត្រ $nr នៃ $count';
-$labels['copy'] = 'ចំលង';
-$labels['move'] = 'ផ្ទេរ';
-$labels['moveto'] = 'ផ្ទេរទៅ';
-$labels['download'] = 'ទាញយក';
-$labels['filename'] = 'ឈ្មោះឯកសារ';
-$labels['filesize'] = 'ទំហំឯកសារ';
-$labels['addtoaddressbook'] = 'រក្សាទុកក្នុងសៀវភៅអាសយដ្ឋាន';
-$labels['sun'] = 'អាទិត្យ';
-$labels['mon'] = 'ច័ន្ទ';
-$labels['tue'] = 'អង្គារ';
-$labels['wed'] = 'ពុធ';
-$labels['thu'] = 'ព្រហស្បតិ៍';
-$labels['fri'] = 'សុក្រ';
-$labels['sat'] = 'សៅរ៍';
-$labels['sunday'] = 'អាទិត្យ';
-$labels['monday'] = 'ច័ន្ទ';
-$labels['tuesday'] = 'អង្គារ';
-$labels['wednesday'] = 'ពុធ';
-$labels['thursday'] = 'ព្រហស្បតិ៍';
-$labels['friday'] = 'សុក្រ';
-$labels['saturday'] = 'សៅរ៍';
-$labels['jan'] = 'មករា';
-$labels['feb'] = 'កុម្ភះ';
-$labels['mar'] = 'មិនា';
-$labels['apr'] = 'មេសា';
-$labels['may'] = 'ឧសភា';
-$labels['jun'] = 'មិថុនា';
-$labels['jul'] = 'កក្កដា';
-$labels['aug'] = 'សីហា';
-$labels['sep'] = 'កញ្ញា';
-$labels['oct'] = 'តុលា';
-$labels['nov'] = 'វិច្ឆិកា';
-$labels['dec'] = 'ធ្នូ';
-$labels['longjan'] = 'មករា';
-$labels['longfeb'] = 'កុម្ភះ';
-$labels['longmar'] = 'មិនា';
-$labels['longapr'] = 'មេសា';
-$labels['longmay'] = 'ឧសភា';
-$labels['longjun'] = 'មិថុនា';
-$labels['longjul'] = 'កក្កដា';
-$labels['longaug'] = 'សីហា';
-$labels['longsep'] = 'កញ្ញា';
-$labels['longoct'] = 'តុលា';
-$labels['longnov'] = 'វិច្ឆិកា';
-$labels['longdec'] = 'ធ្នូ';
-$labels['today'] = 'ថ្ងៃនេះ';
-$labels['checkmail'] = 'ពិនិត្យសំបុត្រថ្មី';
-$labels['writenewmessage'] = 'សរសេរសំបុត្រថ្មី';
-$labels['replytomessage'] = 'ឆ្លើយតបទៅអ្នកផ្ញើ';
-$labels['replytoallmessage'] = 'ឆ្លើយតបទៅ អ្នកទទួលទាំងអស់ និង ក្រុម ឬ អ្នកផ្ញើ';
-$labels['replyall'] = 'ឆ្លើយតបទៅទាំងអស់គ្នា';
-$labels['replylist'] = 'ឆ្លើយតបទៅក្រុម';
-$labels['forwardmessage'] = 'ផ្ញើសំបុត្របន្តរ';
-$labels['deletemessage'] = 'លុបសំបុត្រចោល';
-$labels['movemessagetotrash'] = 'ផ្ទេរសំបុត្រទៅក្នុងធុងសំរាម';
-$labels['printmessage'] = 'បោះពុម្ភសំបុត្រ';
-$labels['previousmessage'] = 'បង្ហាញសំបុត្រចាស់';
-$labels['previousmessages'] = 'បង្ហាញសំបុត្រចាស់';
-$labels['firstmessage'] = 'បង្ហាញសំបុត្រដំបូង';
-$labels['firstmessages'] = 'បង្ហាញសំបុត្រដំបូង';
-$labels['nextmessage'] = 'បង្ហាញសំបុត្របន្ទាប់';
-$labels['nextmessages'] = 'បង្ហាញសំបុត្របន្ទាប់';
-$labels['lastmessage'] = 'បង្ហាញសំបុត្រចុងក្រោយ';
-$labels['lastmessages'] = 'បង្ហាញសំបុត្រចុងក្រោយ';
-$labels['backtolist'] = 'ត្រលប់ទៅកាន់ក្រុមសំបុត្រ';
-$labels['viewsource'] = 'បង្ហាញ Source របស់សំបុត្រ';
-$labels['markmessages'] = 'កំណត់សំគាល់សំបុត្រ';
-$labels['markread'] = 'កំណត់ថាបានអានរួច';
-$labels['markunread'] = 'កំណត់ថាមិនទាន់បានអាន';
-$labels['markflagged'] = 'កំណត់សំគាល់ដោយផ្កាយ';
-$labels['markunflagged'] = 'លុបកំណត់សំគាល់ដោយផ្កាយ';
-$labels['messageactions'] = 'មុខងារផ្សេងទៀត';
-$labels['select'] = 'ជ្រើសរើស';
-$labels['all'] = 'ទាំងអស់';
-$labels['none'] = 'មិនជ្រើសរើស';
-$labels['currpage'] = 'ទំព័រនេះ';
-$labels['unread'] = 'មិនទាន់អាន';
-$labels['flagged'] = 'មានកំណត់សំគាល់ដោយផ្កាយ';
-$labels['unanswered'] = 'មិនទាន់ឆ្លើយតប';
-$labels['deleted'] = 'បានលុបរួច';
-$labels['invert'] = 'បញ្ច្រស់';
-$labels['filter'] = 'លក្ខខ័ណ្ឌ';
-$labels['list'] = 'តារាង';
-$labels['threads'] = 'បណ្តុំសំបុត្រ';
-$labels['expand-all'] = 'បង្ហាញសំបុត្រទាំងអស់';
-$labels['expand-unread'] = 'បង្ហាញសំបុត្រមិនទាន់អាន';
-$labels['collapse-all'] = 'បិទសំបុត្រទាំងអស់';
-$labels['threaded'] = 'បានបែកចែកជាក្រុមរួច';
-$labels['autoexpand_threads'] = 'បង្ហាញបណ្តុំសំបុត្រ';
-$labels['do_expand'] = 'បណ្តុំទាំងអស់';
-$labels['expand_only_unread'] = 'បង្ហាញតែសំបុត្រដែលមិនទាន់អាន';
-$labels['fromto'] = 'អ្នកផ្ញើ / អ្នកទទួល';
-$labels['flag'] = 'កំណត់សំគាល់ដោយផ្កាយ';
-$labels['attachment'] = 'ឯកសារភ្ជាប់';
-$labels['nonesort'] = 'មិនតំរៀប';
-$labels['sentdate'] = 'កាលបរិច្ឆេតផ្ញើ';
-$labels['arrival'] = 'កាលបរិច្ឆេតទទួល';
-$labels['asc'] = 'តាមលំដាប់ចុះ';
-$labels['desc'] = 'តាមលំដាប់ឡើង';
-$labels['listcolumns'] = 'តារាងជួរឈ';
-$labels['listsorting'] = 'តំរៀបជួរឈ';
-$labels['listorder'] = 'លំដាប់នៃការតំរៀប';
-$labels['listmode'] = 'បង្ហាញជាតារាង';
-$labels['folderactions'] = 'មុខងារថត';
-$labels['compact'] = 'បង្រួម';
-$labels['empty'] = 'ទទេរ';
-$labels['quota'] = 'ទំហំសំបុត្រទាំងអស់ដែលមាន';
-$labels['unknown'] = 'មិនស្គាល់';
-$labels['unlimited'] = 'គ្មានកំនត់';
-$labels['quicksearch'] = 'ស្វែងរក';
-$labels['resetsearch'] = 'កំណត់លក្ខខ័ណ្ឌស្វែងរកជាថ្មី';
-$labels['searchmod'] = 'កែសំរួលលក្ខខ័ណ្ឌស្វែងរក';
-$labels['msgtext'] = 'សំបុត្រទាំងមូល';
-$labels['openinextwin'] = 'បើកក្នុងវីនដូវថ្មី';
-$labels['emlsave'] = 'រក្សាទុកទិន្នន័យជាឯកសារប្រភេទ (.eml)';
-$labels['compose'] = 'សរសេរសំបុត្រថ្មី';
-$labels['editasnew'] = 'កែហើយរក្សាទុកដូចជាសំបុត្រថ្មី';
-$labels['savemessage'] = 'រក្សាទុកសំបុត្រពង្រៀង';
-$labels['sendmessage'] = 'ផ្ញើសំបុត្រនេះ';
-$labels['addattachment'] = 'ឯកសារភ្ជាប់';
-$labels['charset'] = 'ប្រភេទអក្សរ';
-$labels['editortype'] = 'ប្រភេទ Editor';
-$labels['returnreceipt'] = 'អត្ថបទបញ្ជាក់ពីការត្រឡប់';
-$labels['dsn'] = 'ប្រាប់អំពីស្ថានភាពផ្ញើ';
-$labels['editidents'] = 'ផ្លាស់ប្តូរអត្តសញ្ញាណ';
-$labels['checkspelling'] = 'ពិនិត្យអក្ខរាវិរុទ្ធ';
-$labels['resumeediting'] = 'បន្តរការកែតំរូវ';
-$labels['revertto'] = 'ត្រលប់ទៅ';
-$labels['attachments'] = 'ឯកសារភ្ជាប់';
-$labels['upload'] = 'ភ្ជាប់ឯកសារ';
-$labels['close'] = 'បិទ';
-$labels['messageoptions'] = 'កំណត់ជំរើសរបស់សំបុត្រ';
-$labels['low'] = 'ទាប';
-$labels['lowest'] = 'ទាបបំផុត';
-$labels['normal'] = 'ធម្មតា';
-$labels['high'] = 'ខ្ពស់';
-$labels['highest'] = 'ខ្ពស់បំផុត';
-$labels['nosubject'] = '(គ្មានចំណងជើង)';
-$labels['showimages'] = 'បង្ហាញរូបភាព';
-$labels['alwaysshow'] = 'បង្ហាញជានិច្ចរាល់រូបភាពបញ្ជូនពី $sender';
-$labels['htmltoggle'] = 'អត្ថបទ HTML';
-$labels['plaintoggle'] = 'អត្ថបទធម្មតា';
-$labels['savesentmessagein'] = 'រក្សាសំបុត្រដែលបានផ្ញើក្នុង';
-$labels['dontsave'] = 'មិនរក្សាទុក';
-$labels['maxuploadsize'] = 'ទំហំឯកសារធំបំផុតដែលអាចភ្ជាប់បានគឺ $size';
-$labels['addcc'] = 'បន្ថែម Cc';
-$labels['addbcc'] = 'បន្ថែម Bcc';
-$labels['addreplyto'] = 'បន្ថែម Reply-To';
-$labels['addfollowupto'] = 'បន្ថែម Followup-To';
-$labels['mdnrequest'] = 'ម្ចាស់សំបុត្រស្នើសុំអោយប្រាប់នៅពេលសំបុត្រនេះត្រូវបានគេអាន។ តើអ្នកចង់ប្រាប់ដែរឬទេ?';
-$labels['receiptread'] = 'អត្ថបទផ្ញើត្រលប់ (បានអាន)';
-$labels['yourmessage'] = 'នេះគឺជាអត្ថបទផ្ញើត្រលប់សំរាប់សំបុត្ររបស់លោកអ្នក។';
-$labels['receiptnote'] = 'កំណត់សំគាល់: អត្ថបទផ្ញើត្រលប់នេះគ្រាន់តែបញ្ជាក់ថា សំបុត្ររបស់លោកអ្នកត្រូវបានបង្ហាញនៅឯកុំព្យូទ័ររបស់អ្នកទទួល។ គេមិនអាចធានាថាអ្នកទទួលបានមើលឬយល់សំបុត្ររបស់លោកអ្នកឡើយ។';
-$labels['name'] = 'ឈ្មោះសំរាប់បង្ហាញ';
-$labels['firstname'] = 'នាមត្រកូល';
-$labels['surname'] = 'នាមខ្លួន';
-$labels['middlename'] = 'ឈ្មោះកណ្តាល';
-$labels['nameprefix'] = 'ពាក្យពីមុខឈ្មោះ';
-$labels['namesuffix'] = 'ពាក្យពីក្រោយឈ្មោះ';
-$labels['nickname'] = 'ឈ្មោះហៅក្រៅ';
-$labels['jobtitle'] = 'ឈ្មោះការងារ';
-$labels['department'] = 'នាយកដ្ឋាន';
-$labels['gender'] = 'ភេទ';
-$labels['maidenname'] = 'ឈ្មោះពីកំណើត';
-$labels['email'] = 'អ៊ីមែល';
-$labels['phone'] = 'ទូរស័ព្ទ';
-$labels['address'] = 'អាសយដ្ឋាន';
-$labels['street'] = 'ផ្លូវ';
-$labels['locality'] = 'ទីក្រុង';
-$labels['zipcode'] = 'លេខប៉ុស្តិ៍';
-$labels['region'] = 'តំបន់';
-$labels['country'] = 'ប្រទេស';
-$labels['birthday'] = 'ថ្ងៃខួបកំណើត';
-$labels['anniversary'] = 'ខួប';
-$labels['website'] = 'គេហទំព័រ';
-$labels['instantmessenger'] = 'IM';
-$labels['notes'] = 'កំណត់ហេតុ';
-$labels['male'] = 'ប្រុស';
-$labels['female'] = 'ស្រី';
-$labels['manager'] = 'នាយក';
-$labels['assistant'] = 'ការិនី';
-$labels['spouse'] = 'គ្រួសារ';
-$labels['typehome'] = 'គេហដ្ឋាន';
-$labels['typework'] = 'កន្លែងធ្វើការ';
-$labels['typeother'] = 'ផ្សេងពីនេះ';
-$labels['typemobile'] = 'ទូរស័ព្ទដៃ';
-$labels['typemain'] = 'ចំបង';
-$labels['typehomefax'] = 'ទូរសារនៅគេហដ្ឋាន';
-$labels['typeworkfax'] = 'ទូរសារនៅកន្លែងធ្វើការ';
-$labels['typecar'] = 'រថយន្ត';
-$labels['typepager'] = 'ឧបករណ៍ផ្តល់សារ';
-$labels['typevideo'] = 'វីដេអូរ';
-$labels['typeassistant'] = 'ជំនួយការ';
-$labels['addfield'] = 'បន្ថែម';
-$labels['addcontact'] = 'បន្ថែមអាសយដ្ឋានទាក់ទង';
-$labels['editcontact'] = 'កែប្រែអាសយដ្ឋានទាក់ទង';
-$labels['contacts'] = 'អាសយដ្ឋានទាក់ទងទាំងអស់';
-$labels['contactproperties'] = 'ព័ត៌មានអំពីទំនាក់ទំនង';
-$labels['personalinfo'] = 'ព័ត៌មានផ្ទាល់ខ្លួន';
-$labels['edit'] = 'កែតំរូវ';
-$labels['cancel'] = 'លះបង់';
-$labels['save'] = 'រក្សាទុក';
-$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['groupactions'] = 'មុខងារក្រុមអាសយដ្ឋាន';
-$labels['previouspage'] = 'ទំព័រមុន';
-$labels['firstpage'] = 'ទំព័រដំបូង';
-$labels['nextpage'] = 'ទំព័របន្ទាប់';
-$labels['lastpage'] = 'ទំព័រចុងក្រោយ';
-$labels['group'] = 'ក្រុម';
-$labels['groups'] = 'ក្រុម';
-$labels['personaladrbook'] = 'អាសយដ្ឋានផ្ទាល់ខ្លួន';
-$labels['import'] = 'បញ្ចូល';
-$labels['importcontacts'] = 'បញ្ចូលអាសយដ្ឋាន';
-$labels['importfromfile'] = 'បញ្ចូលពី ឯកសារ';
-$labels['importreplace'] = 'ផ្លាស់ប្តូរអាសយដ្ឋានទាំងអស់';
-$labels['importtext'] = 'អ្នកអាចបញ្ចូលអាសយដ្ឋានទាក់ទងពីទិន្នន័យដែលមានស្រាប់​ ។<br/>បច្ចុប្បន្នលោកអ្នកអាចបញ្ជូលទិន្នន័យអាសយដ្ឋានពី ឯកសារប្រភេទ <a href="http://en.wikipedia.org/wiki/VCard">vCard</a>។';
-$labels['done'] = 'ចប់រួចរាល់';
-$labels['settingsfor'] = 'កំណត់សំរាប់';
-$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['prettydate'] = 'កាលបរិច្ឆេតងាយស្រួលមើល';
-$labels['setdefault'] = 'កំណត់ទុក';
-$labels['autodetect'] = 'ស្វ័យប្រវត្តិ';
-$labels['language'] = 'ភាសា';
-$labels['timezone'] = 'ម៉ោង';
-$labels['pagesize'] = 'ចំនួនសំបុត្រក្នុងមួយទំព័រ';
-$labels['signature'] = 'ហត្ថលេខា';
-$labels['dstactive'] = 'ម៉ោងវស្សានរដូវ';
-$labels['htmleditor'] = 'សរសេរសំបុត្រតាមបែប HTML';
-$labels['htmlonreply'] = 'ឆ្លើយតបសំបុត្រតាមបែប HTML';
-$labels['htmlsignature'] = 'ហត្ថលេខាតាមបែប HTML';
-$labels['previewpane'] = 'បង្ហាញប្រអប់សំរាប់មើលសំបុត្រ';
-$labels['skin'] = 'ការរចនាទំព័រ';
-$labels['logoutclear'] = 'សំអាតធុងសំរាមពេលពិនិត្យចេញ';
-$labels['logoutcompact'] = 'បង្រួមប្រអប់សំបុត្រពេលពិនិត្យចេញ';
-$labels['uisettings'] = 'ការរចនា';
-$labels['serversettings'] = 'ការកំណត់ម៉ាស៊ីនមេ';
-$labels['mailboxview'] = 'មើលប្រអប់សំបុត្រ';
-$labels['mdnrequests'] = 'ប្រាប់អ្នកផ្ញើ';
-$labels['askuser'] = 'សួរអ្នកប្រើ';
-$labels['autosend'] = 'ផ្ញើស្វ័យប្រវត្តិ';
-$labels['autosendknown'] = 'បញ្ជូនអត្ថបទប្រាប់អ្នកផ្ញើទៅកាន់អាសយដ្ឋានទាក់ទងរបស់ខ្ញុំឬក៏សួរខ្ញុំ';
-$labels['autosendknownignore'] = 'បញ្ជូនអត្ថបទប្រាប់អ្នកផ្ញើទៅកាន់អាសយដ្ឋានទាក់ទងរបស់ខ្ញុំឬមិនបាច់ធ្វើអ្វីទាំងអស់';
-$labels['ignore'] = 'ទុកចោល';
-$labels['readwhendeleted'] = 'កំណត់សំបុត្រថាបានអាន នៅពេលលុបសំបុត្រនោះ';
-$labels['flagfordeletion'] = 'កំណត់សញ្ញាផ្កាយអោយសំបុត្រថាបានលុប ដោយមិនចាំបាច់លុបជាក់ស្តែង';
-$labels['skipdeleted'] = 'មិនបង្ហាញសំបុត្រដែលបានលុប';
-$labels['deletealways'] = 'លុបសំបុត្រចោល ប្រសិនជាមិនអាចផ្ទេសំបុត្រនោះទៅធុងសំរាមបាន';
-$labels['showremoteimages'] = 'បង្ហាញរូបភាពដែលគេផ្ញើមក';
-$labels['fromknownsenders'] = 'ពីអ្នកផ្ញើដែលស្គាល់';
-$labels['always'] = 'គ្រប់ពេល';
-$labels['showinlineimages'] = 'បង្ហាញរូបភាពនៅក្រោមអត្ថបទសំបុត្រ';
-$labels['autosavedraft'] = 'រក្សាទុកសំបុត្រពង្រៀងដោយស្វ័យប្រវត្តិ';
-$labels['everynminutes'] = 'រៀងរាល់ $n នាទី';
-$labels['keepalive'] = 'ត្រួតពិនិត្យរកមើលសំបុត្រថ្មីនៅ';
-$labels['never'] = 'មិនដែល';
-$labels['immediately'] = 'ភ្លាមៗ';
-$labels['messagesdisplaying'] = 'កំពុងបង្ហាញសំបុត្រ';
-$labels['messagescomposition'] = 'កំពុងសរសេរសំបុត្រ';
-$labels['mimeparamfolding'] = 'ឈ្មោះឯកសារភ្ជាប់';
-$labels['2231folding'] = 'RFC 2231 ពេញ (Thunderbird)';
-$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
-$labels['2047folding'] = 'RFC 2047 ពេញ(other)';
-$labels['force7bit'] = 'ប្រើ MIME សំរាប់អក្សរទំហំ 8-bit';
-$labels['advancedoptions'] = 'ការកំណត់ពឹស្តារ';
-$labels['focusonnewmessage'] = 'ផ្តោតលើ វីនដូវដែលកំពុងសរសេរសំបុត្រថ្មី';
-$labels['checkallfolders'] = 'ពិនិត្យសំបុត្រថ្មីនៅគ្រប់ថតទាំងអស់';
-$labels['displaynext'] = 'បន្ទាប់ពីសំបុត្រត្រូវបានលុប​ឬផ្ទេរ បង្ហាញសំបុត្របន្ទាប់';
-$labels['mainoptions'] = 'ជំរើសដែលជាគោល';
-$labels['section'] = 'ផ្នែក';
-$labels['maintenance'] = 'ការថែរក្សា';
-$labels['newmessage'] = 'សំបុត្រថ្មី';
-$labels['listoptions'] = 'កំណត់តារាង';
-$labels['signatureoptions'] = 'កំណត់ហត្ថលេខា';
-$labels['whenreplying'] = 'នៅពេលកំពុងឆ្លើយតប';
-$labels['replytopposting'] = 'ចាប់ផ្តើម​សរសេរ​ពី​លើ​សំបុត្រ​ដើម';
-$labels['replybottomposting'] = 'ចាប់ផ្តើមសរសេរពីក្រោមសំបុត្រដើម';
-$labels['replyremovesignature'] = 'នៅ​ពេល​ឆ្លើយ​តប​លុប​ហត្ថលេខា​ចេញ​ពីសំបុត្រ';
-$labels['autoaddsignature'] = 'បញ្ចូលហត្តលេខាដោយស្វ័យប្រវត្តិ';
-$labels['newmessageonly'] = 'សំរាប់សំបុត្រថ្មីតែប៉ុណ្ណោះ';
-$labels['replyandforwardonly'] = 'សំរាប់ឆើ្លយតប​និងផ្ញើបន្តតែ​ប៉ុណ្ណោះ';
-$labels['replysignaturepos'] = 'បញ្ចូលហត្តលេខានៅពេលឆើ្លយតប​និងផ្ញើបន្ត​';
-$labels['belowquote'] = 'ពីក្រោមសម្រង់អត្ថបទ';
-$labels['abovequote'] = 'ពីលើសម្រង់អត្ថបទ';
-$labels['insertsignature'] = 'បញ្ចូលហត្តលេខា';
-$labels['previewpanemarkread'] = 'កំណត់សំបុត្រ​ដែល​បាន​បង្ហាញ​​ជា​សំបុត្របាន​អាន​រួច';
-$labels['afternseconds'] = 'ក្រោយពី $n វិនាទី';
-$labels['reqmdn'] = 'ក្រោយពី $n វិនាទី';
-$labels['reqdsn'] = 'ក្រោយពី $n វិនាទី';
-$labels['replysamefolder'] = 'ក្រោយពី $n វិនាទី';
-$labels['folder'] = 'ថត';
-$labels['folders'] = 'ថតទាំងអស់';
-$labels['foldername'] = 'ឈ្មោះថត';
-$labels['subscribed'] = 'កំណត់យកមកប្រើ';
-$labels['messagecount'] = 'សំបុត្រ';
-$labels['create'] = 'បង្កើត';
-$labels['createfolder'] = 'បង្កើតថតថ្មី';
-$labels['managefolders'] = 'រៀបចំថត';
-$labels['specialfolders'] = 'ថតពិសេស';
-$labels['properties'] = 'ព័ត៌មាន';
-$labels['folderproperties'] = 'ព័ត៌មានអំពីថត';
-$labels['parentfolder'] = 'ថតមេ';
-$labels['location'] = 'ទីកន្លែង';
-$labels['info'] = 'ព័ត៌មាន';
-$labels['getfoldersize'] = 'ទំហំថត';
-$labels['changesubscription'] = 'ផ្លាស់ប្តូរការជាវ';
-$labels['sortby'] = 'តំរៀបតាម';
-$labels['sortasc'] = 'តំរៀបតាមលំដាប់ចុះ';
-$labels['sortdesc'] = 'តំរៀបតាមលំដាប់ឡើង';
-$labels['B'] = 'B';
-$labels['KB'] = 'KB';
-$labels['MB'] = 'MB';
-$labels['GB'] = 'GB';
-$labels['unicode'] = 'យូនីកូដ';
-$labels['english'] = 'ភាសាអង់គ្លេស';
-$labels['westerneuropean'] = 'អឺរ៉ុបខាងលិច';
-$labels['easterneuropean'] = 'អីរ៉ុបខាងកើត';
-$labels['southeasterneuropean'] = 'អឺរ៉ុបភាគអាគ្នេយ៍';
-$labels['baltic'] = 'ភាសាបាល់តិក';
-$labels['cyrillic'] = 'ភាសាស៊ីរីលិក';
-$labels['arabic'] = 'ភាសាអារ៉ាប់';
-$labels['greek'] = 'ភាសាក្រិក';
-$labels['hebrew'] = 'ភាសាហ៊ីបប្រ៊ូ';
-$labels['turkish'] = 'ភាសាទួរគី';
-$labels['nordic'] = 'ភាសាណរឌីក';
-$labels['thai'] = 'ភាសាថៃ';
-$labels['celtic'] = 'ភាសាសេលតិច';
-$labels['vietnamese'] = 'ភាសាវៀតណាម';
-$labels['japanese'] = 'ភាសាជប៉ុន';
-$labels['korean'] = 'ភាសាកូរ៉េ';
-$labels['chinese'] = 'ភាសាចិន';
-
-?>
diff --git a/program/localization/kh_KH/messages.inc b/program/localization/kh_KH/messages.inc
deleted file mode 100644 (file)
index 985bd22..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-<?php
-/*
-+-----------------------------------------------------------------------+
-| language/kh_KH/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2008-2009, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-| Language: Khmer (ភាសាខ្មែរ)                                               |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Mr. SENGTHA CHAY - <sengtha@gmail.com>                        |
-| based on some words translated by Mr. KOSAL SOVAN VISAL               |
-|- <sal@sovanvisal.com>                                                 |
-+-----------------------------------------------------------------------+
-*/
-$messages = array();
-$messages['loginfailed'] = 'ការពិនិត្យចូលមិនបានសំរេច ព្រោះមានបញ្ហាកើតឡើង';
-$messages['cookiesdisabled'] = 'កម្មវិធីមើលគេហទំព័រនេះមិនទទួលយក Cookies';
-$messages['sessionerror'] = 'Session មិនត្រឹមត្រូវ ឬ ហួសកំណត់';
-$messages['imaperror'] = 'មិនអាចភ្ជាប់ទៅកាន់ម៉ាស៊ីន IMAP';
-$messages['servererror'] = 'មានបញ្ហានៅម៉ាស៊ីនមេ';
-$messages['servererrormsg'] = 'បញ្ហា: $msg';
-$messages['errorreadonly'] = 'មិនអាចប្រតិបត្តិបានពីព្រោះថតនេះត្រូវបានគេកំណត់សំរាប់តែមើល';
-$messages['errornoperm'] = 'មិនអាចប្រតិបត្តិបានពីព្រោះមិនមានសិទ្ទគ្រប់គ្រាន់';
-$messages['invalidrequest'] = 'មិនអាចរក្សាទុកទិន្នន័យបានពីព្រោះមានបញ្ហានៅពេលបញ្ជូនទិន្នន័យ';
-$messages['nomessagesfound'] = 'ពុំមានសំបុត្រក្នុងប្រអប់សំបុត្រនេះទេ';
-$messages['loggedout'] = 'អ្នកបានពិនិត្យចេញដោយជោគជ័យ ។';
-$messages['mailboxempty'] = 'ប្រអប់សំបុត្រទទេ';
-$messages['loading'] = 'កំពុងដំណើរការ...';
-$messages['uploading'] = 'កំពុងបញ្ជូនឯកសារ...';
-$messages['loadingdata'] = 'កំពុងបើកឯកសារ...';
-$messages['checkingmail'] = 'កំពុងស្វែងរកមើលសំបុត្រថ្មី៝...';
-$messages['sendingmessage'] = 'កំពុងផ្ញើសំបុត្រ...';
-$messages['messagesent'] = 'សំបុត្រត្រូវបានបញ្ជូនដោយជោគជ័យ!';
-$messages['savingmessage'] = 'កំពុងរក្សាសំបុត្រទុក...';
-$messages['messagesaved'] = 'សំបុត្រត្រូវបានរក្សាទុកក្នុងថតពង្រៀង';
-$messages['successfullysaved'] = 'រក្សាទុកដោយជោគជ័យ';
-$messages['addedsuccessfully'] = 'អាសយដ្ឋានត្រូវបានរក្សាទុកដោយជោគជ័យ';
-$messages['contactexists'] = 'ព័ត៌មានទាក់ទងដែលមានអ៊ីមែលនេះ មានក្នុងសៀវភៅអាសយដ្ឋានរួចហើយ';
-$messages['blockedimages'] = 'រូបភាពដែលមានក្នុងសំបុត្រនេះត្រូវបានបិទ ដើម្បីរក្សាសុវត្ថភាព';
-$messages['encryptedmessage'] = 'លោកអ្នកមិនអាចមើលសំបុត្រនេះបានទេពីព្រោះសំបុត្រនេះជាសំបុត្រសំងាត់';
-$messages['nocontactsfound'] = 'ពុំមានអាសយដ្ឋានទាក់ទងទេ';
-$messages['contactnotfound'] = 'អាសយដ្ឋានទាក់ទងដែលលោកអ្នកចង់រក ពុំមានឡើយ';
-$messages['sendingfailed'] = 'មិនអាចផ្ញើសំបុត្របាន';
-$messages['senttooquickly'] = 'សូមរងចាំ $sec វិនាទី មុននឹងផ្ញើសំបុត្រនេះ';
-$messages['errorsavingsent'] = 'មានបញ្ហាកើតឡើងនៅពេលកំពុងរក្សាទុកសំបុត្រដែលបានផ្ញើរួច';
-$messages['errorsaving'] = 'មានបញ្ហាកើតឡើងនៅពេលកំពុងរក្សាសំបុត្រទុក';
-$messages['errormoving'] = 'មិនអាចផ្ទេរសំបុត្របាន';
-$messages['errorcopying'] = 'មិនអាចចំលងសំបុត្របាន';
-$messages['errordeleting'] = 'មិនអាចលុបសំបុត្រចោលបាន';
-$messages['errormarking'] = 'មិនអាចកំណត់ចំណាំលើសំបុត្របាន';
-$messages['deletecontactconfirm'] = 'តើលោកអ្នកពិតជាចង់លុបព័ត៌មានទំនាក់ទំនងនេះមែនទេ?';
-$messages['deletemessagesconfirm'] = 'តើលោកអ្នកពិតជាចង់លុបសំបុត្រនេះមែនទេ?';
-$messages['deletefolderconfirm'] = 'តើលោកអ្នកពិតជាចង់លុបថតនេះមែនទេ?';
-$messages['purgefolderconfirm'] = 'តើលោកអ្នកពិតជាចង់លុបសំបុត្រទាំងអស់នៅក្នុងថតនេះមែនទេ?';
-$messages['folderdeleting'] = 'កំពុងលុបថតសំរាប់ទុកឯកសារ...';
-$messages['foldermoving'] = 'កំពុងផ្ទេរថតសំរាប់ទុកឯកសារ...';
-$messages['foldersubscribing'] = 'កំពុងកំណត់ប្រើថតសំរាប់ទុកឯកសារ...';
-$messages['folderunsubscribing'] = 'កំពុងកំណត់មិនប្រើថតសំរាប់ទុកឯកសារ...';
-$messages['formincomplete'] = 'សូមបំពេញទិន្នន័យអោយបានគ្រប់';
-$messages['noemailwarning'] = 'អ៊ីមែលត្រឹមត្រូវ';
-$messages['nonamewarning'] = 'សូមសរសេរឈ្មោះរបស់អ្នក';
-$messages['nopagesizewarning'] = 'សូមកំណត់ទំហំទំព័រ';
-$messages['nosenderwarning'] = 'សូមសរសេរអ៊ីមែលរបស់អ្នកផ្ញើ';
-$messages['norecipientwarning'] = 'សូមសរសេរអ្នកទទួលយ៉ាងហោចណាស់ម្នាក់';
-$messages['nosubjectwarning'] = 'សំបុត្រគ្មានចំណងជើង តើអ្នកចង់សរសេរចំណងជើងនៅពេលនេះទេ?';
-$messages['nobodywarning'] = 'តើលោកអ្នកចង់ផ្ញើសំបុត្រដែលគ្មានតួអត្ថបទសំបុត្រទេ?';
-$messages['notsentwarning'] = 'សំបុត្រនេះមិនទាន់បានផ្ញើទេ ។ តើលោកអ្នកចង់លុបចោលទេ?';
-$messages['noldapserver'] = 'សូមកំណត់ម៉ាស៊ីន LDAP ដើម្បីស្វែងរក';
-$messages['nocontactsreturned'] = 'រកមិនឃើញពត៌មានទំនាក់ទំនងណាមួយទេ';
-$messages['nosearchname'] = 'សូមបំពេញឈ្មោះទំនាក់ទំនង ឬ អាសយដ្ឋានអ៊ីមែល';
-$messages['notuploadedwarning'] = 'ឯកសារទាំងអស់មិនទាន់បញ្ជូនភ្ជាប់រួចរាល់ទេ ។ មេត្តារងចាំបន្តិច ឬបោះបង់ការបញ្ជូននេះ!';
-$messages['searchsuccessful'] = 'រកឃើញសំបុត្រចំនួន $nr ';
-$messages['searchnomatch'] = 'រកមិនឃើញអ្វីទាំងអស់';
-$messages['searching'] = 'កំពុងស្វែងរក...';
-$messages['checking'] = 'កំពុងពិនិត្យរក...';
-$messages['nospellerrors'] = 'គ្មានកំហុសអក្ខរាវិរុទ្ធទេ';
-$messages['folderdeleted'] = 'លុបថតបានដោយជោគជ័យ';
-$messages['foldersubscribed'] = 'អាចកំណត់ប្រើថតបានដោយជោគជ័យ';
-$messages['folderunsubscribed'] = 'កំណត់លែងប្រើថតបានដោយជោគជ័យ';
-$messages['folderpurged'] = 'សំអាតថតបានដោយជោគជ័យ';
-$messages['folderexpunged'] = 'បង្រួមថតបានដោយជោគជ័យ';
-$messages['deletedsuccessfully'] = 'លុបបានដោយជោគជ័យ';
-$messages['converting'] = 'កំពុងលុបការរចនាចោល...';
-$messages['messageopenerror'] = 'មិនអាចទាញយកសំបុត្រពីម៉ាស៊ីនមេបានទេ';
-$messages['fileuploaderror'] = 'មិនអាចបញ្ជូលភ្ជាប់ឯកសារ';
-$messages['filesizeerror'] = 'ទំហំឯកសារត្រូវបញ្ជូនលើសចំណុះ ទំហំធំបំផុតគឺ $size';
-$messages['copysuccess'] = 'បានចំលងអាសយដ្ឋានចំនួន $nr ដោយជោគជ័យ';
-$messages['copyerror'] = 'មិនអាចចំលងអាសយដ្ឋានណាមួយឡើយ';
-$messages['sourceisreadonly'] = 'លោកអ្នកមានសិទ្ធត្រឹមតែមើលប្រភពនៃអាសយដ្ឋាននេះ';
-$messages['errorsavingcontact'] = 'មិនអាចរក្សាអាសយដ្ឋានបានទេ';
-$messages['movingmessage'] = 'កំពុកផ្តេរសំបុត្រ...';
-$messages['copyingmessage'] = 'កំពុងចំលងសំបុត្រ...';
-$messages['deletingmessage'] = 'កំពុងលុបសំបុត្រ...';
-$messages['markingmessage'] = 'កំពុងកំណត់សំគាល់សំបុត្រ...';
-$messages['receiptsent'] = 'បានបញ្ជូន អត្ថបទបញ្ជាក់ថាបានអាន បានសំរេច';
-$messages['errorsendingreceipt'] = 'មិនអាចបញ្ជូន អត្ថបទបញ្ជាក់ថាបានអាន ទេ';
-$messages['nodeletelastidentity'] = 'លោកអ្នកមិនអាចលុបអត្តសញ្ញាណនេះទេ ព្រោះវានៅសល់ចុងក្រោយគេ';
-$messages['forbiddencharacter'] = 'ឈ្មោះថតនេះមានអក្សរដែលត្រូវហាមឃាត់';
-$messages['selectimportfile'] = 'សូមជ្រើសរើសឯកសារដើម្បីបញ្ជូនភ្ជាប់';
-$messages['addresswriterror'] = 'សៀវភៅអាសយដ្ឋាននោះមិនអាចសរសេរចូលបានទេ';
-$messages['contactaddedtogroup'] = 'បានដាក់ពត៌មានទំនាក់ទំនងចូលក្នុងក្រុមនេះដោយជោគជ័យ';
-$messages['contactremovedfromgroup'] = 'បានលុបពត៌មានទំនាក់ទំនងចេញពីក្រុមនេះដោយជោគជ័យ';
-$messages['importwait'] = 'សូមមេត្តារង់ចាំ កំពុងទាញទិន្នន័យចូល ...';
-$messages['importerror'] = 'ការទាញចូលមិនបានសំរេច! ឯកសារដែលជ្រើសរើសនោះមិនមែនជាប្រភេទឯកសារ vCard ទេ ។';
-$messages['importconfirm'] = '<b>ព័ត៌មានទំនាក់ទំនង $inserted បានបញ្ចូលដោយជោគជ័យ, ហើយបានរំលងចោលពត៌មានដែលមានស្រាប់ $skipped </b>:<p><em>$names</em></p>';
-$messages['opnotpermitted'] = 'ប្រតិ្តបត្តិការត្រូវបានគេហាមឃាត់!';
-$messages['nofromaddress'] = 'ខ្វះអាសយដ្ឋានអ៊ីមែលក្នុងអត្តសញ្ណាណមួយនេះ';
-$messages['editorwarning'] = 'ប្តូរទៅទំរង់អត្ថបទធម្មតា អាចធ្វើអោយបាត់បង់ការរចនាដែលមាន។ លោកអ្នកចង់ប្តូរទេ?';
-$messages['httpreceivedencrypterror'] = 'ប្រព័ន្ធដំណើរការមិនប្រកតី។ សូមទាក់ទងទៅកាន់អ្នកបច្ចេកទេសជាបន្ទាន់។ <br>សាររបស់អ្នកមិនអាចផ្ញើទេក្នុងពេលនេះ<br>';
-$messages['smtpconnerror'] = 'SMTP Error ($code): មិនអាចភ្ជាប់ទៅម៉ាស៊ីនមេ';
-$messages['smtpautherror'] = 'SMTP Error ($code): ព័ត៌មានគនីយមិនត្រឹមត្រូវ';
-$messages['smtpfromerror'] = 'SMTP Error ($code): មិនអាចកំនត់អ្នកផ្ញើ "$from" ($msg)';
-$messages['smtptoerror'] = 'SMTP Error ($code): មិនអាចកំនត់អ្នកទទួល "$to" ($msg)';
-$messages['smtprecipientserror'] = 'SMTP Error: មិនអាចបំលែងបញ្ជីអ្នកទទួល';
-$messages['smtpdsnerror'] = 'SMTP Error: មិនអាចប្រាប់ពីស្ថានភាពនៃការបញ្ជូនសំបុត្រ';
-$messages['smtperror'] = 'SMTP Error: $msg';
-$messages['emailformaterror'] = 'អាសយដ្ឋានអ៊ីមែលមិនត្រឹមត្រូវទេ: $email';
-$messages['toomanyrecipients'] = 'ចំនួនអ្នកទទួលច្រើនលើសកំនត់! សូមមេត្តាលុបចោលរហូតដល់ $max។';
-$messages['maxgroupmembersreached'] = 'ចំនួនក្រុមលើសកំនត់ហើយ ចំនួនច្រើនបំផុតគឺ $max';
-$messages['internalerror'] = 'មានបញ្ហាខាងម៉ាស៊ីនមេ ។ សូមព្យាយាមម្តងទៀត!';
-$messages['contactdelerror'] = 'មិនអាចលុបអាសយដ្ឋានទំនាក់ទំនង';
-$messages['contactdeleted'] = 'អាសយដ្ឋានទំនាក់ទំនងត្រូវបានលុបដោយជោគជ័យ';
-$messages['groupdeleted'] = 'លុបក្រុមបានដោយជោគជ័យ';
-$messages['grouprenamed'] = 'ប្តូរឈ្មោះក្រុមបានដោយជោគជ័យ';
-$messages['groupcreated'] = 'បង្កើតក្រុមបានដោយជោគជ័យ';
-$messages['messagedeleted'] = 'លុបសំបុត្របានដោយជោគជ័យ';
-$messages['messagemoved'] = 'ផ្ទេរសំបុត្របានដោយជោគជ័យ';
-$messages['messagecopied'] = 'ចំលងសំបុត្របានដោយជោគជ័យ';
-$messages['messagemarked'] = 'កំណត់សំគាល់សំបុត្របានដោយជោគជ័យ';
-$messages['autocompletechars'] = 'សូមសរសេរអក្សរយ៉ាងតិច $min ដើម្បីបង្ហាយដោយស្វ័យប្រវត្តិ';
-$messages['namecannotbeempty'] = 'សូមសរសេរឈ្មោះ';
-$messages['nametoolong'] = 'ឈ្មោះវែងពេក';
-$messages['folderupdated'] = 'ផ្លាស់ប្តូរថតបានដោយជោគជ័យ';
-$messages['foldercreated'] = 'បង្កើតថតបានដោយជោគជ័យ';
-$messages['invalidimageformat'] = 'ប្រភេទរូបភាពមិនត្រឹមត្រូវ';
-?>
\ No newline at end of file
diff --git a/program/localization/km_KH/labels.inc b/program/localization/km_KH/labels.inc
new file mode 100644 (file)
index 0000000..00ce9ab
--- /dev/null
@@ -0,0 +1,390 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/km_KH/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['welcome'] = '$product សូមស្វាគមន៍';
+$labels['username'] = 'ឈ្មោះអ្នកប្រើ';
+$labels['password'] = 'ពាក្យសំងាត់';
+$labels['server'] = 'ម៉ាស៊ីនមេ';
+$labels['login'] = 'ពិនិត្យចូល';
+$labels['logout'] = 'ពិនិត្យចេញ';
+$labels['mail'] = 'អ៊ីមែល';
+$labels['settings'] = 'កំនត់ការប្រើប្រាស់';
+$labels['addressbook'] = 'សៀវភៅអាសយដ្ឋាន';
+$labels['inbox'] = 'ប្រអប់សំបុត្រ';
+$labels['drafts'] = 'សំបុត្រពង្រៀង';
+$labels['sent'] = 'សំបុត្រដែលបានបញ្ជូន';
+$labels['trash'] = 'ធុងសំរាម';
+$labels['junk'] = 'សំបុត្រមិនល្អ';
+$labels['subject'] = 'ចំណងជើង';
+$labels['from'] = 'អ្នកផ្ញើ';
+$labels['to'] = 'អ្នកទទួល';
+$labels['cc'] = 'Cc';
+$labels['bcc'] = 'Bcc';
+$labels['replyto'] = 'ឆ្លើយតបទៅកាន់';
+$labels['followupto'] = 'ឆ្លើយតបទៅកាន់ក្រុម';
+$labels['date'] = 'កាលបរិច្ឆេត';
+$labels['size'] = 'ទំហំ';
+$labels['priority'] = 'អទិភាព';
+$labels['organization'] = 'អង្គភាព';
+$labels['readstatus'] = 'ស្ថានភាពនៃការអាន';
+$labels['mailboxlist'] = 'ថតទាំងអស់';
+$labels['folders'] = 'ថតទាំងអស់';
+$labels['messagesfromto'] = 'សំបុត្រពី $from ទៅដល់ $toក្នុងចំណោម $count សំបុត្រ';
+$labels['threadsfromto'] = 'បន្តុំសំបុត្រពី $from ទៅដល់ $toក្នុងចំណោម $count សំបុត្រ';
+$labels['messagenrof'] = 'សំបុត្រ $nr នៃ $count';
+$labels['copy'] = 'ចំលង';
+$labels['move'] = 'ផ្ទេរ';
+$labels['moveto'] = 'ផ្ទេរទៅ';
+$labels['download'] = 'ទាញយក';
+$labels['filename'] = 'ឈ្មោះឯកសារ';
+$labels['filesize'] = 'ទំហំឯកសារ';
+$labels['addtoaddressbook'] = 'រក្សាទុកក្នុងសៀវភៅអាសយដ្ឋាន';
+$labels['sun'] = 'អាទិត្យ';
+$labels['mon'] = 'ច័ន្ទ';
+$labels['tue'] = 'អង្គារ';
+$labels['wed'] = 'ពុធ';
+$labels['thu'] = 'ព្រហស្បតិ៍';
+$labels['fri'] = 'សុក្រ';
+$labels['sat'] = 'សៅរ៍';
+$labels['sunday'] = 'អាទិត្យ';
+$labels['monday'] = 'ច័ន្ទ';
+$labels['tuesday'] = 'អង្គារ';
+$labels['wednesday'] = 'ពុធ';
+$labels['thursday'] = 'ព្រហស្បតិ៍';
+$labels['friday'] = 'សុក្រ';
+$labels['saturday'] = 'សៅរ៍';
+$labels['jan'] = 'មករា';
+$labels['feb'] = 'កុម្ភះ';
+$labels['mar'] = 'មិនា';
+$labels['apr'] = 'មេសា';
+$labels['may'] = 'ឧសភា';
+$labels['longmay'] = 'ឧសភា';
+$labels['jun'] = 'មិថុនា';
+$labels['jul'] = 'កក្កដា';
+$labels['aug'] = 'សីហា';
+$labels['sep'] = 'កញ្ញា';
+$labels['oct'] = 'តុលា';
+$labels['nov'] = 'វិច្ឆិកា';
+$labels['dec'] = 'ធ្នូ';
+$labels['longjan'] = 'មករា';
+$labels['longfeb'] = 'កុម្ភះ';
+$labels['longmar'] = 'មិនា';
+$labels['longapr'] = 'មេសា';
+$labels['longjun'] = 'មិថុនា';
+$labels['longjul'] = 'កក្កដា';
+$labels['longaug'] = 'សីហា';
+$labels['longsep'] = 'កញ្ញា';
+$labels['longoct'] = 'តុលា';
+$labels['longnov'] = 'វិច្ឆិកា';
+$labels['longdec'] = 'ធ្នូ';
+$labels['today'] = 'ថ្ងៃនេះ';
+$labels['checkmail'] = 'ពិនិត្យសំបុត្រថ្មី';
+$labels['compose'] = 'សរសេរសំបុត្រថ្មី';
+$labels['writenewmessage'] = 'សរសេរសំបុត្រថ្មី';
+$labels['replytomessage'] = 'ឆ្លើយតបទៅអ្នកផ្ញើ';
+$labels['replytoallmessage'] = 'ឆ្លើយតបទៅ អ្នកទទួលទាំងអស់និង ក្រុម ឬ អ្នកផ្ញើ';
+$labels['replyall'] = 'ឆ្លើយតបទៅទាំងអស់គ្នា';
+$labels['replylist'] = 'ឆ្លើយតបទៅក្រុម';
+$labels['forwardmessage'] = 'ផ្ញើសំបុត្របន្តរ';
+$labels['deletemessage'] = 'លុបសំបុត្រចោល';
+$labels['movemessagetotrash'] = 'ផ្ទេរសំបុត្រទៅក្នុងធុងសំរាម';
+$labels['printmessage'] = 'បោះពុម្ភសំបុត្រ';
+$labels['previousmessage'] = 'បង្ហាញសំបុត្រចាស់';
+$labels['firstmessage'] = 'បង្ហាញសំបុត្រដំបូង';
+$labels['nextmessage'] = 'បង្ហាញសំបុត្របន្ទាប់';
+$labels['lastmessage'] = 'បង្ហាញសំបុត្រចុងក្រោយ';
+$labels['backtolist'] = 'ត្រលប់ទៅកាន់ក្រុមសំបុត្រ';
+$labels['viewsource'] = 'បង្ហាញ Source របស់សំបុត្រ';
+$labels['markmessages'] = 'កំណត់សំគាល់សំបុត្រ';
+$labels['markread'] = 'កំណត់ថាបានអានរួច';
+$labels['markunread'] = 'កំណត់ថាមិនទាន់បានអាន';
+$labels['markflagged'] = 'កំណត់សំគាល់ដោយផ្កាយ';
+$labels['markunflagged'] = 'លុបកំណត់សំគាល់ដោយផ្កាយ';
+$labels['select'] = 'ជ្រើសរើស';
+$labels['all'] = 'ទាំងអស់';
+$labels['none'] = 'មិនតំរៀប';
+$labels['nonesort'] = 'មិនតំរៀប';
+$labels['currpage'] = 'ទំព័រនេះ';
+$labels['unread'] = 'មិនទាន់អាន';
+$labels['flagged'] = 'មានកំណត់សំគាល់ដោយផ្កាយ';
+$labels['unanswered'] = 'មិនទាន់ឆ្លើយតប';
+$labels['deleted'] = 'បានលុបរួច';
+$labels['invert'] = 'បញ្ច្រស់';
+$labels['filter'] = 'លក្ខខ័ណ្ឌ';
+$labels['list'] = 'តារាង';
+$labels['threads'] = 'បណ្តុំសំបុត្រ';
+$labels['expand-all'] = 'បង្ហាញសំបុត្រទាំងអស់';
+$labels['expand-unread'] = 'បង្ហាញសំបុត្រមិនទាន់អាន';
+$labels['collapse-all'] = 'បិទសំបុត្រទាំងអស់';
+$labels['threaded'] = 'បានបែកចែកជាក្រុមរួច';
+$labels['autoexpand_threads'] = 'បង្ហាញបណ្តុំសំបុត្រ';
+$labels['do_expand'] = 'បណ្តុំទាំងអស់';
+$labels['expand_only_unread'] = 'បង្ហាញតែសំបុត្រដែលមិនទាន់អាន';
+$labels['fromto'] = 'អ្នកផ្ញើ / អ្នកទទួល';
+$labels['flag'] = 'កំណត់សំគាល់ដោយផ្កាយ';
+$labels['attachment'] = 'ឯកសារភ្ជាប់';
+$labels['sentdate'] = 'កាលបរិច្ឆេតផ្ញើ';
+$labels['arrival'] = 'កាលបរិច្ឆេតទទួល';
+$labels['asc'] = 'តាមលំដាប់ចុះ';
+$labels['desc'] = 'តាមលំដាប់ឡើង';
+$labels['listcolumns'] = 'តារាងជួរឈ';
+$labels['listsorting'] = 'តំរៀបជួរឈ';
+$labels['listorder'] = 'លំដាប់នៃការតំរៀប';
+$labels['listmode'] = 'បង្ហាញជាតារាង';
+$labels['folderactions'] = 'មុខងារថត';
+$labels['compact'] = 'បង្រួម';
+$labels['empty'] = 'ទទេរ';
+$labels['quota'] = 'ទំហំសំបុត្រទាំងអស់ដែលមាន';
+$labels['unknown'] = 'មិនស្គាល់';
+$labels['unlimited'] = 'គ្មានកំនត់';
+$labels['quicksearch'] = 'ស្វែងរក';
+$labels['resetsearch'] = 'កំណត់លក្ខខ័ណ្ឌស្វែងរកជាថ្មី';
+$labels['searchmod'] = 'កែសំរួលលក្ខខ័ណ្ឌស្វែងរក';
+$labels['msgtext'] = 'សំបុត្រទាំងមូល';
+$labels['openinextwin'] = 'បើកក្នុងវីនដូវថ្មី';
+$labels['emlsave'] = 'រក្សាទុកទិន្នន័យជាឯកសារប្រភេទ(.eml)';
+$labels['editasnew'] = 'កែហើយរក្សាទុកដូចជាសំបុត្រថ្មី';
+$labels['savemessage'] = 'រក្សាទុកសំបុត្រពង្រៀង';
+$labels['sendmessage'] = 'ផ្ញើសំបុត្រនេះ';
+$labels['addattachment'] = 'ឯកសារភ្ជាប់';
+$labels['charset'] = 'ប្រភេទអក្សរ';
+$labels['editortype'] = 'ប្រភេទ Editor';
+$labels['returnreceipt'] = 'អត្ថបទបញ្ជាក់ពីការត្រឡប់';
+$labels['dsn'] = 'ប្រាប់អំពីស្ថានភាពផ្ញើ';
+$labels['editidents'] = 'ផ្លាស់ប្តូរអត្តសញ្ញាណ';
+$labels['checkspelling'] = 'ពិនិត្យអក្ខរាវិរុទ្ធ';
+$labels['resumeediting'] = 'បន្តរការកែតំរូវ';
+$labels['revertto'] = 'ត្រលប់ទៅ';
+$labels['attachments'] = 'ឯកសារភ្ជាប់';
+$labels['upload'] = 'ភ្ជាប់ឯកសារ';
+$labels['close'] = 'បិទ';
+$labels['messageoptions'] = 'កំណត់ជំរើសរបស់សំបុត្រ';
+$labels['low'] = 'ទាប';
+$labels['lowest'] = 'ទាបបំផុត';
+$labels['normal'] = 'ធម្មតា';
+$labels['high'] = 'ខ្ពស់';
+$labels['highest'] = 'ខ្ពស់បំផុត';
+$labels['nosubject'] = '(គ្មានចំណងជើង)';
+$labels['showimages'] = 'បង្ហាញរូបភាព';
+$labels['alwaysshow'] = 'បង្ហាញជានិច្ចរាល់រូបភាពបញ្ជូនពី$sender';
+$labels['htmltoggle'] = 'អត្ថបទ HTML';
+$labels['plaintoggle'] = 'អត្ថបទធម្មតា';
+$labels['savesentmessagein'] = 'រក្សាសំបុត្រដែលបានផ្ញើក្នុង';
+$labels['dontsave'] = 'មិនរក្សាទុក';
+$labels['maxuploadsize'] = 'ទំហំឯកសារធំបំផុតដែលអាចភ្ជាប់បានគឺ$size';
+$labels['addcc'] = 'បន្ថែម Cc';
+$labels['addbcc'] = 'បន្ថែម Bcc';
+$labels['addreplyto'] = 'បន្ថែម Reply-To';
+$labels['addfollowupto'] = 'បន្ថែម Followup-To';
+$labels['receiptread'] = 'អត្ថបទផ្ញើត្រលប់ (បានអាន)';
+$labels['yourmessage'] = 'នេះគឺជាអត្ថបទផ្ញើត្រលប់សំរាប់សំបុត្ររបស់លោកអ្នក។';
+$labels['name'] = 'ឈ្មោះសំរាប់បង្ហាញ';
+$labels['firstname'] = 'នាមត្រកូល';
+$labels['surname'] = 'នាមខ្លួន';
+$labels['middlename'] = 'ឈ្មោះកណ្តាល';
+$labels['nameprefix'] = 'ពាក្យពីមុខឈ្មោះ';
+$labels['namesuffix'] = 'ពាក្យពីក្រោយឈ្មោះ';
+$labels['nickname'] = 'ឈ្មោះហៅក្រៅ';
+$labels['jobtitle'] = 'ឈ្មោះការងារ';
+$labels['department'] = 'នាយកដ្ឋាន';
+$labels['gender'] = 'ភេទ';
+$labels['maidenname'] = 'ឈ្មោះពីកំណើត';
+$labels['email'] = 'អ៊ីមែល';
+$labels['phone'] = 'ទូរស័ព្ទ';
+$labels['address'] = 'អាសយដ្ឋាន';
+$labels['street'] = 'ផ្លូវ';
+$labels['locality'] = 'ទីក្រុង';
+$labels['zipcode'] = 'លេខប៉ុស្តិ៍';
+$labels['region'] = 'តំបន់';
+$labels['country'] = 'ប្រទេស';
+$labels['birthday'] = 'ថ្ងៃខួបកំណើត';
+$labels['anniversary'] = 'ខួប';
+$labels['website'] = 'គេហទំព័រ';
+$labels['instantmessenger'] = 'IM';
+$labels['notes'] = 'កំណត់ហេតុ';
+$labels['male'] = 'ប្រុស';
+$labels['female'] = 'ស្រី';
+$labels['manager'] = 'នាយក';
+$labels['assistant'] = 'ជំនួយការ';
+$labels['typeassistant'] = 'ជំនួយការ';
+$labels['spouse'] = 'គ្រួសារ';
+$labels['other'] = 'ផ្សេងពីនេះ';
+$labels['typeother'] = 'ផ្សេងពីនេះ';
+$labels['typehome'] = 'គេហដ្ឋាន';
+$labels['typework'] = 'កន្លែងធ្វើការ';
+$labels['typemobile'] = 'ទូរស័ព្ទដៃ';
+$labels['typemain'] = 'ចំបង';
+$labels['typehomefax'] = 'ទូរសារនៅគេហដ្ឋាន';
+$labels['typeworkfax'] = 'ទូរសារនៅកន្លែងធ្វើការ';
+$labels['typecar'] = 'រថយន្ត';
+$labels['typepager'] = 'ឧបករណ៍ផ្តល់សារ';
+$labels['typevideo'] = 'វីដេអូរ';
+$labels['addfield'] = 'បន្ថែម';
+$labels['addcontact'] = 'បន្ថែមអាសយដ្ឋានទាក់ទង';
+$labels['editcontact'] = 'កែប្រែអាសយដ្ឋានទាក់ទង';
+$labels['contacts'] = 'អាសយដ្ឋានទាក់ទងទាំងអស់';
+$labels['contactproperties'] = 'ព័ត៌មានអំពីទំនាក់ទំនង';
+$labels['personalinfo'] = 'ព័ត៌មានផ្ទាល់ខ្លួន';
+$labels['edit'] = 'កែតំរូវ';
+$labels['cancel'] = 'លះបង់';
+$labels['save'] = 'រក្សាទុក';
+$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['previouspage'] = 'ទំព័រមុន';
+$labels['firstpage'] = 'ទំព័រដំបូង';
+$labels['nextpage'] = 'ទំព័របន្ទាប់';
+$labels['lastpage'] = 'ទំព័រចុងក្រោយ';
+$labels['group'] = 'ក្រុម';
+$labels['groups'] = 'ក្រុម';
+$labels['personaladrbook'] = 'អាសយដ្ឋានផ្ទាល់ខ្លួន';
+$labels['import'] = 'បញ្ចូល';
+$labels['importcontacts'] = 'បញ្ចូលអាសយដ្ឋាន';
+$labels['importfromfile'] = 'បញ្ចូលពី ឯកសារ';
+$labels['importreplace'] = 'ផ្លាស់ប្តូរអាសយដ្ឋានទាំងអស់';
+$labels['done'] = 'ចប់រួចរាល់';
+$labels['settingsfor'] = 'កំណត់សំរាប់';
+$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['prettydate'] = 'កាលបរិច្ឆេតងាយស្រួលមើល';
+$labels['setdefault'] = 'កំណត់ទុក';
+$labels['autodetect'] = 'ស្វ័យប្រវត្តិ';
+$labels['language'] = 'ភាសា';
+$labels['timezone'] = 'ម៉ោង';
+$labels['pagesize'] = 'ចំនួនសំបុត្រក្នុងមួយទំព័រ';
+$labels['signature'] = 'ហត្ថលេខា';
+$labels['dstactive'] = 'ម៉ោងវស្សានរដូវ';
+$labels['htmleditor'] = 'សរសេរសំបុត្រតាមបែប HTML';
+$labels['htmlonreply'] = 'ឆ្លើយតបសំបុត្រតាមបែប HTML';
+$labels['htmlsignature'] = 'ហត្ថលេខាតាមបែប HTML';
+$labels['previewpane'] = 'បង្ហាញប្រអប់សំរាប់មើលសំបុត្រ';
+$labels['skin'] = 'ការរចនាទំព័រ';
+$labels['logoutclear'] = 'សំអាតធុងសំរាមពេលពិនិត្យចេញ';
+$labels['logoutcompact'] = 'បង្រួមប្រអប់សំបុត្រពេលពិនិត្យចេញ';
+$labels['uisettings'] = 'ការរចនា';
+$labels['serversettings'] = 'ការកំណត់ម៉ាស៊ីនមេ';
+$labels['mailboxview'] = 'មើលប្រអប់សំបុត្រ';
+$labels['mdnrequests'] = 'ប្រាប់អ្នកផ្ញើ';
+$labels['askuser'] = 'សួរអ្នកប្រើ';
+$labels['autosend'] = 'ផ្ញើស្វ័យប្រវត្តិ';
+$labels['autosendknown'] = 'បញ្ជូនអត្ថបទប្រាប់អ្នកផ្ញើទៅកាន់អាសយដ្ឋានទាក់ទងរបស់ខ្ញុំឬក៏សួរខ្ញុំ';
+$labels['autosendknownignore'] = 'បញ្ជូនអត្ថបទប្រាប់អ្នកផ្ញើទៅកាន់អាសយដ្ឋានទាក់ទងរបស់ខ្ញុំឬមិនបាច់ធ្វើអ្វីទាំងអស់';
+$labels['ignore'] = 'ទុកចោល';
+$labels['readwhendeleted'] = 'កំណត់សំបុត្រថាបានអាននៅពេលលុបសំបុត្រនោះ';
+$labels['flagfordeletion'] = 'កំណត់សញ្ញាផ្កាយអោយសំបុត្រថាបានលុបដោយមិនចាំបាច់លុបជាក់ស្តែង';
+$labels['skipdeleted'] = 'មិនបង្ហាញសំបុត្រដែលបានលុប';
+$labels['deletealways'] = 'លុបសំបុត្រចោលប្រសិនជាមិនអាចផ្ទេសំបុត្រនោះទៅធុងសំរាមបាន';
+$labels['showremoteimages'] = 'បង្ហាញរូបភាពដែលគេផ្ញើមក';
+$labels['fromknownsenders'] = 'ពីអ្នកផ្ញើដែលស្គាល់';
+$labels['always'] = 'គ្រប់ពេល';
+$labels['showinlineimages'] = 'បង្ហាញរូបភាពនៅក្រោមអត្ថបទសំបុត្រ';
+$labels['autosavedraft'] = 'រក្សាទុកសំបុត្រពង្រៀងដោយស្វ័យប្រវត្តិ';
+$labels['everynminutes'] = 'រៀងរាល់ $n នាទី';
+$labels['keepalive'] = 'ត្រួតពិនិត្យរកមើលសំបុត្រថ្មីនៅ';
+$labels['never'] = 'មិនដែល';
+$labels['immediately'] = 'ភ្លាមៗ';
+$labels['messagesdisplaying'] = 'កំពុងបង្ហាញសំបុត្រ';
+$labels['messagescomposition'] = 'កំពុងសរសេរសំបុត្រ';
+$labels['mimeparamfolding'] = 'ឈ្មោះឯកសារភ្ជាប់';
+$labels['2231folding'] = 'RFC 2231 ពេញ (Thunderbird)';
+$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
+$labels['2047folding'] = 'RFC 2047 ពេញ(other)';
+$labels['force7bit'] = 'ប្រើ MIME សំរាប់អក្សរទំហំ 8-bit';
+$labels['advancedoptions'] = 'ការកំណត់ពឹស្តារ';
+$labels['focusonnewmessage'] = 'ផ្តោតលើវីនដូវដែលកំពុងសរសេរសំបុត្រថ្មី';
+$labels['checkallfolders'] = 'ពិនិត្យសំបុត្រថ្មីនៅគ្រប់ថតទាំងអស់';
+$labels['displaynext'] = 'បន្ទាប់ពីសំបុត្រត្រូវបានលុប​ឬផ្ទេរបង្ហាញសំបុត្របន្ទាប់';
+$labels['mainoptions'] = 'ជំរើសដែលជាគោល';
+$labels['section'] = 'ផ្នែក';
+$labels['maintenance'] = 'ការថែរក្សា';
+$labels['newmessage'] = 'សំបុត្រថ្មី';
+$labels['signatureoptions'] = 'កំណត់ហត្ថលេខា';
+$labels['whenreplying'] = 'នៅពេលកំពុងឆ្លើយតប';
+$labels['replytopposting'] = 'ចាប់ផ្តើម​សរសេរ​ពី​លើ​សំបុត្រ​ដើម';
+$labels['replybottomposting'] = 'ចាប់ផ្តើមសរសេរពីក្រោមសំបុត្រដើម';
+$labels['replyremovesignature'] = 'នៅ​ពេល​ឆ្លើយ​តប​លុប​ហត្ថលេខា​ចេញ​ពីសំបុត្រ';
+$labels['autoaddsignature'] = 'បញ្ចូលហត្តលេខាដោយស្វ័យប្រវត្តិ';
+$labels['newmessageonly'] = 'សំរាប់សំបុត្រថ្មីតែប៉ុណ្ណោះ';
+$labels['replyandforwardonly'] = 'សំរាប់ឆើ្លយតប​និងផ្ញើបន្តតែ​ប៉ុណ្ណោះ';
+$labels['replysignaturepos'] = 'បញ្ចូលហត្តលេខានៅពេលឆើ្លយតប​និងផ្ញើបន្ត';
+$labels['belowquote'] = 'ពីក្រោមសម្រង់អត្ថបទ';
+$labels['abovequote'] = 'ពីលើសម្រង់អត្ថបទ';
+$labels['insertsignature'] = 'បញ្ចូលហត្តលេខា';
+$labels['previewpanemarkread'] = 'កំណត់សំបុត្រ​ដែល​បាន​បង្ហាញ​​ជា​សំបុត្របាន​អាន​រួច';
+$labels['afternseconds'] = 'ក្រោយពី $n វិនាទី';
+$labels['reqmdn'] = 'ក្រោយពី $n វិនាទី';
+$labels['reqdsn'] = 'ក្រោយពី $n វិនាទី';
+$labels['replysamefolder'] = 'ក្រោយពី $n វិនាទី';
+$labels['folder'] = 'ថត';
+$labels['foldername'] = 'ឈ្មោះថត';
+$labels['subscribed'] = 'កំណត់យកមកប្រើ';
+$labels['messagecount'] = 'សំបុត្រ';
+$labels['create'] = 'បង្កើត';
+$labels['createfolder'] = 'បង្កើតថតថ្មី';
+$labels['managefolders'] = 'រៀបចំថត';
+$labels['specialfolders'] = 'ថតពិសេស';
+$labels['properties'] = 'ព័ត៌មាន';
+$labels['folderproperties'] = 'ព័ត៌មានអំពីថត';
+$labels['parentfolder'] = 'ថតមេ';
+$labels['location'] = 'ទីកន្លែង';
+$labels['info'] = 'ព័ត៌មាន';
+$labels['getfoldersize'] = 'ទំហំថត';
+$labels['changesubscription'] = 'ផ្លាស់ប្តូរការជាវ';
+$labels['sortby'] = 'តំរៀបតាម';
+$labels['sortasc'] = 'តំរៀបតាមលំដាប់ចុះ';
+$labels['sortdesc'] = 'តំរៀបតាមលំដាប់ឡើង';
+$labels['B'] = 'B';
+$labels['KB'] = 'KB';
+$labels['MB'] = 'MB';
+$labels['GB'] = 'GB';
+$labels['unicode'] = 'យូនីកូដ';
+$labels['english'] = 'ភាសាអង់គ្លេស';
+$labels['westerneuropean'] = 'អឺរ៉ុបខាងលិច';
+$labels['easterneuropean'] = 'អីរ៉ុបខាងកើត';
+$labels['southeasterneuropean'] = 'អឺរ៉ុបភាគអាគ្នេយ៍';
+$labels['baltic'] = 'ភាសាបាល់តិក';
+$labels['cyrillic'] = 'ភាសាស៊ីរីលិក';
+$labels['arabic'] = 'ភាសាអារ៉ាប់';
+$labels['greek'] = 'ភាសាក្រិក';
+$labels['hebrew'] = 'ភាសាហ៊ីបប្រ៊ូ';
+$labels['turkish'] = 'ភាសាទួរគី';
+$labels['nordic'] = 'ភាសាណរឌីក';
+$labels['thai'] = 'ភាសាថៃ';
+$labels['celtic'] = 'ភាសាសេលតិច';
+$labels['vietnamese'] = 'ភាសាវៀតណាម';
+$labels['japanese'] = 'ភាសាជប៉ុន';
+$labels['korean'] = 'ភាសាកូរ៉េ';
+$labels['chinese'] = 'ភាសាចិន';
+
diff --git a/program/localization/km_KH/messages.inc b/program/localization/km_KH/messages.inc
new file mode 100644 (file)
index 0000000..9984cc5
--- /dev/null
@@ -0,0 +1,133 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/km_KH/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$messages = array();
+$messages['loginfailed'] = 'ការពិនិត្យចូលមិនបានសំរេចព្រោះមានបញ្ហាកើតឡើង';
+$messages['cookiesdisabled'] = 'កម្មវិធីមើលគេហទំព័រនេះមិនទទួលយកCookies';
+$messages['sessionerror'] = 'Session មិនត្រឹមត្រូវ ឬហួសកំណត់';
+$messages['storageerror'] = 'មិនអាចភ្ជាប់ទៅកាន់ម៉ាស៊ីនIMAP';
+$messages['servererror'] = 'មានបញ្ហានៅម៉ាស៊ីនមេ';
+$messages['servererrormsg'] = 'បញ្ហា: $msg';
+$messages['errorreadonly'] = 'មិនអាចប្រតិបត្តិបានពីព្រោះថតនេះត្រូវបានគេកំណត់សំរាប់តែមើល';
+$messages['errornoperm'] = 'មិនអាចប្រតិបត្តិបានពីព្រោះមិនមានសិទ្ទគ្រប់គ្រាន់';
+$messages['invalidrequest'] = 'មិនអាចរក្សាទុកទិន្នន័យបានពីព្រោះមានបញ្ហានៅពេលបញ្ជូនទិន្នន័យ';
+$messages['nomessagesfound'] = 'ពុំមានសំបុត្រក្នុងប្រអប់សំបុត្រនេះទេ';
+$messages['loggedout'] = 'អ្នកបានពិនិត្យចេញដោយជោគជ័យ។';
+$messages['mailboxempty'] = 'ប្រអប់សំបុត្រទទេ';
+$messages['loading'] = 'កំពុងដំណើរការ...';
+$messages['uploading'] = 'កំពុងបញ្ជូនឯកសារ...';
+$messages['loadingdata'] = 'កំពុងបើកឯកសារ...';
+$messages['checkingmail'] = 'កំពុងស្វែងរកមើលសំបុត្រថ្មី៝...';
+$messages['sendingmessage'] = 'កំពុងផ្ញើសំបុត្រ...';
+$messages['messagesent'] = 'សំបុត្រត្រូវបានបញ្ជូនដោយជោគជ័យ!';
+$messages['savingmessage'] = 'កំពុងរក្សាសំបុត្រទុក...';
+$messages['messagesaved'] = 'សំបុត្រត្រូវបានរក្សាទុកក្នុងថតពង្រៀង';
+$messages['successfullysaved'] = 'រក្សាទុកដោយជោគជ័យ';
+$messages['addedsuccessfully'] = 'អាសយដ្ឋានត្រូវបានរក្សាទុកដោយជោគជ័យ';
+$messages['contactexists'] = 'ព័ត៌មានទាក់ទងដែលមានអ៊ីមែលនេះមានក្នុងសៀវភៅអាសយដ្ឋានរួចហើយ';
+$messages['blockedimages'] = 'រូបភាពដែលមានក្នុងសំបុត្រនេះត្រូវបានបិទដើម្បីរក្សាសុវត្ថភាព';
+$messages['encryptedmessage'] = 'លោកអ្នកមិនអាចមើលសំបុត្រនេះបានទេពីព្រោះសំបុត្រនេះជាសំបុត្រសំងាត់';
+$messages['nocontactsfound'] = 'ពុំមានអាសយដ្ឋានទាក់ទងទេ';
+$messages['contactnotfound'] = 'អាសយដ្ឋានទាក់ទងដែលលោកអ្នកចង់រកពុំមានឡើយ';
+$messages['sendingfailed'] = 'មិនអាចផ្ញើសំបុត្របាន';
+$messages['senttooquickly'] = 'សូមរងចាំ $sec វិនាទីមុននឹងផ្ញើសំបុត្រនេះ';
+$messages['errorsavingsent'] = 'មានបញ្ហាកើតឡើងនៅពេលកំពុងរក្សាទុកសំបុត្រដែលបានផ្ញើរួច';
+$messages['errorsaving'] = 'មានបញ្ហាកើតឡើងនៅពេលកំពុងរក្សាសំបុត្រទុក';
+$messages['errormoving'] = 'មិនអាចផ្ទេរសំបុត្របាន';
+$messages['errorcopying'] = 'មិនអាចចំលងសំបុត្របាន';
+$messages['errordeleting'] = 'មិនអាចលុបសំបុត្រចោលបាន';
+$messages['errormarking'] = 'មិនអាចកំណត់ចំណាំលើសំបុត្របាន';
+$messages['deletecontactconfirm'] = 'តើលោកអ្នកពិតជាចង់លុបព័ត៌មានទំនាក់ទំនងនេះមែនទេ?';
+$messages['deletemessagesconfirm'] = 'តើលោកអ្នកពិតជាចង់លុបសំបុត្រនេះមែនទេ?';
+$messages['deletefolderconfirm'] = 'តើលោកអ្នកពិតជាចង់លុបថតនេះមែនទេ?';
+$messages['purgefolderconfirm'] = 'តើលោកអ្នកពិតជាចង់លុបសំបុត្រទាំងអស់នៅក្នុងថតនេះមែនទេ?';
+$messages['folderdeleting'] = 'កំពុងលុបថតសំរាប់ទុកឯកសារ...';
+$messages['foldermoving'] = 'កំពុងផ្ទេរថតសំរាប់ទុកឯកសារ...';
+$messages['foldersubscribing'] = 'កំពុងកំណត់ប្រើថតសំរាប់ទុកឯកសារ...';
+$messages['folderunsubscribing'] = 'កំពុងកំណត់មិនប្រើថតសំរាប់ទុកឯកសារ...';
+$messages['formincomplete'] = 'សូមបំពេញទិន្នន័យអោយបានគ្រប់';
+$messages['noemailwarning'] = 'អ៊ីមែលត្រឹមត្រូវ';
+$messages['nonamewarning'] = 'សូមសរសេរឈ្មោះរបស់អ្នក';
+$messages['nopagesizewarning'] = 'សូមកំណត់ទំហំទំព័រ';
+$messages['nosenderwarning'] = 'សូមសរសេរអ៊ីមែលរបស់អ្នកផ្ញើ';
+$messages['norecipientwarning'] = 'សូមសរសេរអ្នកទទួលយ៉ាងហោចណាស់ម្នាក់';
+$messages['nosubjectwarning'] = 'សំបុត្រគ្មានចំណងជើងតើអ្នកចង់សរសេរចំណងជើងនៅពេលនេះទេ?';
+$messages['nobodywarning'] = 'តើលោកអ្នកចង់ផ្ញើសំបុត្រដែលគ្មានតួអត្ថបទសំបុត្រទេ?';
+$messages['notsentwarning'] = 'សំបុត្រនេះមិនទាន់បានផ្ញើទេ។ តើលោកអ្នកចង់លុបចោលទេ?';
+$messages['noldapserver'] = 'សូមកំណត់ម៉ាស៊ីន LDAPដើម្បីស្វែងរក';
+$messages['nosearchname'] = 'សូមបំពេញឈ្មោះទំនាក់ទំនង ឬអាសយដ្ឋានអ៊ីមែល';
+$messages['searchsuccessful'] = 'រកឃើញសំបុត្រចំនួន $nr';
+$messages['searchnomatch'] = 'រកមិនឃើញអ្វីទាំងអស់';
+$messages['searching'] = 'កំពុងស្វែងរក...';
+$messages['checking'] = 'កំពុងពិនិត្យរក...';
+$messages['nospellerrors'] = 'គ្មានកំហុសអក្ខរាវិរុទ្ធទេ';
+$messages['folderdeleted'] = 'លុបថតបានដោយជោគជ័យ';
+$messages['foldersubscribed'] = 'អាចកំណត់ប្រើថតបានដោយជោគជ័យ';
+$messages['folderunsubscribed'] = 'កំណត់លែងប្រើថតបានដោយជោគជ័យ';
+$messages['folderpurged'] = 'សំអាតថតបានដោយជោគជ័យ';
+$messages['folderexpunged'] = 'បង្រួមថតបានដោយជោគជ័យ';
+$messages['deletedsuccessfully'] = 'លុបបានដោយជោគជ័យ';
+$messages['converting'] = 'កំពុងលុបការរចនាចោល...';
+$messages['messageopenerror'] = 'មិនអាចទាញយកសំបុត្រពីម៉ាស៊ីនមេបានទេ';
+$messages['fileuploaderror'] = 'មិនអាចបញ្ជូលភ្ជាប់ឯកសារ';
+$messages['filesizeerror'] = 'ទំហំឯកសារត្រូវបញ្ជូនលើសចំណុះទំហំធំបំផុតគឺ $size';
+$messages['copysuccess'] = 'បានចំលងអាសយដ្ឋានចំនួន $nrដោយជោគជ័យ';
+$messages['copyerror'] = 'មិនអាចចំលងអាសយដ្ឋានណាមួយឡើយ';
+$messages['sourceisreadonly'] = 'លោកអ្នកមានសិទ្ធត្រឹមតែមើលប្រភពនៃអាសយដ្ឋាននេះ';
+$messages['errorsavingcontact'] = 'មិនអាចរក្សាអាសយដ្ឋានបានទេ';
+$messages['movingmessage'] = 'កំពុកផ្តេរសំបុត្រ...';
+$messages['copyingmessage'] = 'កំពុងចំលងសំបុត្រ...';
+$messages['deletingmessage'] = 'កំពុងលុបសំបុត្រ...';
+$messages['markingmessage'] = 'កំពុងកំណត់សំគាល់សំបុត្រ...';
+$messages['receiptsent'] = 'បានបញ្ជូនអត្ថបទបញ្ជាក់ថាបានអានបានសំរេច';
+$messages['errorsendingreceipt'] = 'មិនអាចបញ្ជូនអត្ថបទបញ្ជាក់ថាបានអាន ទេ';
+$messages['nodeletelastidentity'] = 'លោកអ្នកមិនអាចលុបអត្តសញ្ញាណនេះទេព្រោះវានៅសល់ចុងក្រោយគេ';
+$messages['forbiddencharacter'] = 'ឈ្មោះថតនេះមានអក្សរដែលត្រូវហាមឃាត់';
+$messages['selectimportfile'] = 'សូមជ្រើសរើសឯកសារដើម្បីបញ្ជូនភ្ជាប់';
+$messages['addresswriterror'] = 'សៀវភៅអាសយដ្ឋាននោះមិនអាចសរសេរចូលបានទេ';
+$messages['contactaddedtogroup'] = 'បានដាក់ពត៌មានទំនាក់ទំនងចូលក្នុងក្រុមនេះដោយជោគជ័យ';
+$messages['contactremovedfromgroup'] = 'បានលុបពត៌មានទំនាក់ទំនងចេញពីក្រុមនេះដោយជោគជ័យ';
+$messages['importwait'] = 'សូមមេត្តារង់ចាំកំពុងទាញទិន្នន័យចូល ...';
+$messages['importerror'] = 'ការទាញចូលមិនបានសំរេច!ឯកសារដែលជ្រើសរើសនោះមិនមែនជាប្រភេទឯកសារvCard ទេ ។';
+$messages['importconfirm'] = '<b>ព័ត៌មានទំនាក់ទំនង $insertedបានបញ្ចូលដោយជោគជ័យ,ហើយបានរំលងចោលពត៌មានដែលមានស្រាប់$skipped </b>:<p><em>$names</em></p>';
+$messages['opnotpermitted'] = 'ប្រតិ្តបត្តិការត្រូវបានគេហាមឃាត់!';
+$messages['nofromaddress'] = 'ខ្វះអាសយដ្ឋានអ៊ីមែលក្នុងអត្តសញ្ណាណមួយនេះ';
+$messages['smtpconnerror'] = 'SMTP Error ($code):មិនអាចភ្ជាប់ទៅម៉ាស៊ីនមេ';
+$messages['smtpautherror'] = 'SMTP Error ($code):ព័ត៌មានគនីយមិនត្រឹមត្រូវ';
+$messages['smtpfromerror'] = 'SMTP Error ($code):មិនអាចកំនត់អ្នកផ្ញើ "$from" ($msg)';
+$messages['smtptoerror'] = 'SMTP Error ($code):មិនអាចកំនត់អ្នកទទួល "$to" ($msg)';
+$messages['smtprecipientserror'] = 'SMTP Error:មិនអាចបំលែងបញ្ជីអ្នកទទួល';
+$messages['smtperror'] = 'SMTP Error: $msg';
+$messages['emailformaterror'] = 'អាសយដ្ឋានអ៊ីមែលមិនត្រឹមត្រូវទេ:$email';
+$messages['toomanyrecipients'] = 'ចំនួនអ្នកទទួលច្រើនលើសកំនត់!សូមមេត្តាលុបចោលរហូតដល់ $max។';
+$messages['maxgroupmembersreached'] = 'ចំនួនក្រុមលើសកំនត់ហើយចំនួនច្រើនបំផុតគឺ $max';
+$messages['internalerror'] = 'មានបញ្ហាខាងម៉ាស៊ីនមេ ។សូមព្យាយាមម្តងទៀត!';
+$messages['contactdelerror'] = 'មិនអាចលុបអាសយដ្ឋានទំនាក់ទំនង';
+$messages['contactdeleted'] = 'អាសយដ្ឋានទំនាក់ទំនងត្រូវបានលុបដោយជោគជ័យ';
+$messages['groupdeleted'] = 'លុបក្រុមបានដោយជោគជ័យ';
+$messages['grouprenamed'] = 'ប្តូរឈ្មោះក្រុមបានដោយជោគជ័យ';
+$messages['groupcreated'] = 'បង្កើតក្រុមបានដោយជោគជ័យ';
+$messages['messagedeleted'] = 'លុបសំបុត្របានដោយជោគជ័យ';
+$messages['messagemoved'] = 'ផ្ទេរសំបុត្របានដោយជោគជ័យ';
+$messages['messagecopied'] = 'ចំលងសំបុត្របានដោយជោគជ័យ';
+$messages['messagemarked'] = 'កំណត់សំគាល់សំបុត្របានដោយជោគជ័យ';
+$messages['autocompletechars'] = 'សូមសរសេរអក្សរយ៉ាងតិច $minដើម្បីបង្ហាយដោយស្វ័យប្រវត្តិ';
+$messages['namecannotbeempty'] = 'សូមសរសេរឈ្មោះ';
+$messages['nametoolong'] = 'ឈ្មោះវែងពេក';
+$messages['folderupdated'] = 'ផ្លាស់ប្តូរថតបានដោយជោគជ័យ';
+$messages['foldercreated'] = 'បង្កើតថតបានដោយជោគជ័យ';
+$messages['invalidimageformat'] = 'ប្រភេទរូបភាពមិនត្រឹមត្រូវ';
+
index b51de9c53c6df6bde8a4ae1135f25caa3e034fda..01eabe91051166eb3de0978a0825230610bc60aa 100644 (file)
@@ -1,23 +1,19 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| localization/kr/labels.inc                                            |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: lordmiss <lordmiss@lordmiss.com>                              |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 4410 2011-01-12 18:25:02Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/ko_KR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kim, Woohyun <woohyun.kim@gmail.com>                          |
+ +-----------------------------------------------------------------------+
 */
 
-$labels['welcome'] = '$product에 오신 것을 환영합니다';
+$labels = array();
 $labels['welcome'] = '$product에 오신 것을 환영합니다';
 $labels['username'] = '사용자명';
 $labels['password'] = '비밀번호';
@@ -42,17 +38,17 @@ $labels['date'] = '날짜';
 $labels['size'] = '크기';
 $labels['priority'] = '우선순위';
 $labels['organization'] = '기관';
-$labels['reply-to'] = '회신 주소';
 $labels['mailboxlist'] = '폴더';
+$labels['folders'] = '폴더';
 $labels['messagesfromto'] = '$count 개 중 $from 에서 $to 번 메시지';
+$labels['threadsfromto'] = '$from 에서 $to 까지 $count 개의 쓰레드';
 $labels['messagenrof'] = '$count 개 중 $nr 번 메시지';
+$labels['copy'] = '참조';
+$labels['move'] = '이동';
 $labels['moveto'] = '이동...';
 $labels['download'] = '다운로드';
 $labels['filename'] = '파일 이름';
 $labels['filesize'] = '파일 크기';
-$labels['preferhtml'] = 'HTML 보이기';
-$labels['htmlmessage'] = 'HTML 메시지';
-$labels['prettydate'] = '날짜 형식';
 $labels['addtoaddressbook'] = '주소록에 추가';
 $labels['sun'] = '일';
 $labels['mon'] = '월';
@@ -73,6 +69,7 @@ $labels['feb'] = '2월';
 $labels['mar'] = '3월';
 $labels['apr'] = '4월';
 $labels['may'] = '5월';
+$labels['longmay'] = '5월';
 $labels['jun'] = '6월';
 $labels['jul'] = '7월';
 $labels['aug'] = '8월';
@@ -84,7 +81,6 @@ $labels['longjan'] = '1월';
 $labels['longfeb'] = '2월';
 $labels['longmar'] = '3월';
 $labels['longapr'] = '4월';
-$labels['longmay'] = '5월';
 $labels['longjun'] = '6월';
 $labels['longjul'] = '7월';
 $labels['longaug'] = '8월';
@@ -93,58 +89,93 @@ $labels['longoct'] = '10월';
 $labels['longnov'] = '11월';
 $labels['longdec'] = '12월';
 $labels['today'] = '오늘';
+$labels['refresh'] = '새로 고침';
 $labels['checkmail'] = '새 메일 확인';
+$labels['compose'] = '메일 쓰기';
 $labels['writenewmessage'] = '새 메일 작성';
+$labels['reply'] = '회신';
 $labels['replytomessage'] = '회신 작성';
 $labels['replytoallmessage'] = '보낸이와 모든 수신자에게 회신';
+$labels['replyall'] = '전체 회신';
+$labels['replylist'] = '회신 목록';
+$labels['forward'] = '전달';
+$labels['forwardinline'] = '전달';
+$labels['forwardattachment'] = '메일을 첨부파일로 전달';
 $labels['forwardmessage'] = '메일 전달';
 $labels['deletemessage'] = '메일 삭제';
 $labels['movemessagetotrash'] = '메일 휴지통으로 이동';
 $labels['printmessage'] = '메일 인쇄';
 $labels['previousmessage'] = '이전 메일 보기';
-$labels['previousmessages'] = '이전 메일 세트 보기';
 $labels['firstmessage'] = '처음 메일 보기';
-$labels['firstmessages'] = '처음 메일 세트 보기';
 $labels['nextmessage'] = '다음 메일 보기';
-$labels['nextmessages'] = '다음 메일 세트 보기';
 $labels['lastmessage'] = '마지막 메일 보기';
-$labels['lastmessages'] = '마지막 메일 세트 보기';
 $labels['backtolist'] = '메일 목록으로';
 $labels['viewsource'] = '소스 보기';
+$labels['mark'] = '표시';
 $labels['markmessages'] = '메시지 표시';
 $labels['markread'] = '읽은 것으로 표시';
 $labels['markunread'] = '읽지 않은 것으로 표시';
 $labels['markflagged'] = '깃발 달기';
 $labels['markunflagged'] = '깃발 내리기';
+$labels['moreactions'] = '이외의 동작...';
+$labels['more'] = '더보기';
+$labels['back'] = '뒤로';
+$labels['options'] = '선택 사항';
 $labels['select'] = '선택';
 $labels['all'] = '모두';
 $labels['none'] = '없음';
+$labels['nonesort'] = '없음';
+$labels['currpage'] = '현재 페이지';
 $labels['unread'] = '읽지 않음';
 $labels['flagged'] = '깃발';
 $labels['unanswered'] = '답장하지 않음';
+$labels['deleted'] = '삭제됨';
+$labels['invert'] = '반전';
 $labels['filter'] = '필터';
+$labels['list'] = '리스트';
+$labels['threads'] = '쓰레드';
+$labels['expand-all'] = '모두 확장';
+$labels['collapse-all'] = '모두 접기';
+$labels['threaded'] = '그룹화됨';
+$labels['autoexpand_threads'] = '모든 메시지 확장';
+$labels['flag'] = '표시';
+$labels['attachment'] = '첨부';
+$labels['sentdate'] = '보낸 날짜';
+$labels['arrival'] = '수신 날짜';
+$labels['asc'] = '오름차순';
+$labels['desc'] = '내림차순';
+$labels['listsorting'] = '정렬';
+$labels['listorder'] = '정렬 순서';
+$labels['folderactions'] = '폴더 명령';
 $labels['compact'] = '간단하게';
 $labels['empty'] = '비우기';
-$labels['purge'] = '삭제';
 $labels['quota'] = '디스크 사용';
 $labels['unknown'] = '알수 없음';
 $labels['unlimited'] = '제한 없음';
 $labels['quicksearch'] = '빨리 찾기';
 $labels['resetsearch'] = '찾기 리셋';
+$labels['msgtext'] = '전체 메시지';
 $labels['openinextwin'] = '새 창에서 열기';
-$labels['compose'] = '메일 쓰기';
+$labels['emlsave'] = '다운로드 (.eml)';
 $labels['savemessage'] = '드래프트 저장';
 $labels['sendmessage'] = '메일 지금 보냄';
 $labels['addattachment'] = '파일 첨부';
 $labels['charset'] = '문자셋';
 $labels['editortype'] = '편집기 형태';
-$labels['returnreceipt'] = '수신 확인';
+$labels['returnreceipt'] = '수신 확인 요청하기';
+$labels['dsn'] = '전송상태 메일 받기';
+$labels['mailreplyintro'] = '$data에, $sender가 작성:';
+$labels['originalmessage'] = '원본 메세지';
+$labels['spellcheck'] = '맞춤법';
 $labels['checkspelling'] = '스펠링 체크';
 $labels['resumeediting'] = '편집 계속';
 $labels['revertto'] = '돌아감';
+$labels['attach'] = '첨부';
 $labels['attachments'] = '첨부 파일';
 $labels['upload'] = '업로드';
+$labels['uploadprogress'] = '$percent ($total 에서 $current)';
 $labels['close'] = '닫기';
+$labels['messageoptions'] = '메시지 옵션(들)...';
 $labels['low'] = '낮음';
 $labels['lowest'] = '가장 낮음';
 $labels['normal'] = '보통';
@@ -153,6 +184,7 @@ $labels['highest'] = '가장 높음';
 $labels['nosubject'] = '(제목 없음)';
 $labels['showimages'] = '이미지 표시';
 $labels['alwaysshow'] = '$sender 에서 온 이미지 항상 보기';
+$labels['isdraft'] = '이 메시지는 임시 보관 메시지 입니다.';
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = '일반 텍스트';
 $labels['savesentmessagein'] = '보낸 메시지를 다음에 저장';
@@ -168,13 +200,64 @@ $labels['receiptnote'] = '주의: 이 확인은 이 메시지가 수신자의 
 $labels['name'] = '표시 이름';
 $labels['firstname'] = '이름';
 $labels['surname'] = '성';
+$labels['middlename'] = '가운데 이름';
+$labels['nameprefix'] = '접두사';
+$labels['namesuffix'] = '접미사';
+$labels['nickname'] = '별명';
+$labels['jobtitle'] = '직위';
+$labels['department'] = '부서';
+$labels['gender'] = '성별';
+$labels['maidenname'] = '결혼 전 이름';
 $labels['email'] = '이메일';
+$labels['phone'] = '전화';
+$labels['address'] = '주소';
+$labels['street'] = '세부주소';
+$labels['locality'] = '시/구/군';
+$labels['zipcode'] = '우편번호';
+$labels['region'] = '도';
+$labels['country'] = '국가';
+$labels['birthday'] = '생년월일';
+$labels['anniversary'] = '기념일';
+$labels['website'] = '웹사이트';
+$labels['instantmessenger'] = '메신져';
+$labels['notes'] = '노트';
+$labels['male'] = '남성';
+$labels['female'] = '여성';
+$labels['manager'] = '관리자';
+$labels['assistant'] = '도우미';
+$labels['typeassistant'] = '도우미';
+$labels['spouse'] = '배우자';
+$labels['allfields'] = '친구 전체';
+$labels['search'] = '검색';
+$labels['advsearch'] = '상세 검색';
+$labels['advanced'] = '고급 설정';
+$labels['other'] = '그 외';
+$labels['typeother'] = '그 외';
+$labels['typehome'] = '홈';
+$labels['typework'] = '직장';
+$labels['typemobile'] = '휴대폰';
+$labels['typemain'] = '주';
+$labels['typehomefax'] = '팩스(집)';
+$labels['typeworkfax'] = '팩스(직장)';
+$labels['typecar'] = '자동차';
+$labels['typepager'] = '호출기';
+$labels['typevideo'] = '동영상';
+$labels['typehomepage'] = '홈 페이지';
+$labels['typeblog'] = '블로그';
+$labels['typeprofile'] = '자기소개';
+$labels['addfield'] = '항목 추가..';
 $labels['addcontact'] = '새 연락처 추가';
 $labels['editcontact'] = '연락처 편집';
+$labels['contacts'] = '연락처';
+$labels['personalinfo'] = '개인 정보';
 $labels['edit'] = '편집';
 $labels['cancel'] = '취소';
 $labels['save'] = '저장';
 $labels['delete'] = '삭제';
+$labels['rename'] = '이름 변경';
+$labels['addphoto'] = '추가';
+$labels['replacephoto'] = '바꾸기';
+$labels['uploadphoto'] = '사진 올리기';
 $labels['newcontact'] = '새 연락처 카드 만들기';
 $labels['deletecontact'] = '선택한 연락처 삭제';
 $labels['composeto'] = '새 메일 작성';
@@ -182,10 +265,15 @@ $labels['contactsfromto'] = '$from 에서 $to 로의 연락처 $count 개';
 $labels['print'] = '인쇄';
 $labels['export'] = '내보내기';
 $labels['exportvcards'] = '연락처를 vCard 포맷으로 내보내기';
+$labels['newcontactgroup'] = '새로운 연락처 그룹 생성';
+$labels['grouprename'] = '그룹 이름 바꾸기';
+$labels['groupdelete'] = '그룹 삭제';
+$labels['groupremoveselected'] = '그룹에서 선택한 연락처 제거';
 $labels['previouspage'] = '이전 세트 보기';
 $labels['firstpage'] = '처음 세트 보기';
 $labels['nextpage'] = '다음 세트 보기';
 $labels['lastpage'] = '마지막 세트 보기';
+$labels['group'] = '그룹';
 $labels['groups'] = '그룹';
 $labels['personaladrbook'] = '개인 주소';
 $labels['import'] = '가져오기';
@@ -195,6 +283,7 @@ $labels['importreplace'] = '전체 주소록을 바꿈';
 $labels['importtext'] = '연락처들을 가지고 있는 주소록에서 가져올 수 있습니다.<br/> 현재는 <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> 포맷에서 가져오기를 지원합니다.';
 $labels['done'] = '완료';
 $labels['settingsfor'] = '설정';
+$labels['about'] = '이것은...';
 $labels['preferences'] = '환경 설정';
 $labels['userpreferences'] = '사용자 환경';
 $labels['editpreferences'] = '사용자 환경 편집';
@@ -203,6 +292,12 @@ $labels['manageidentities'] = '이 계정의 신원 관리';
 $labels['newidentity'] = '새 신원';
 $labels['newitem'] = '새 아이템';
 $labels['edititem'] = '아이템 편집';
+$labels['preferhtml'] = 'HTML 보이기';
+$labels['defaultcharset'] = '기본 문자 세트';
+$labels['htmlmessage'] = 'HTML 메시지';
+$labels['dateformat'] = '날짜 형식';
+$labels['timeformat'] = '시간 형식';
+$labels['prettydate'] = '날짜 형식';
 $labels['setdefault'] = '기본으로 설정';
 $labels['autodetect'] = '자동';
 $labels['language'] = '언어';
@@ -211,8 +306,9 @@ $labels['pagesize'] = '페이지당 줄 수';
 $labels['signature'] = '서명';
 $labels['dstactive'] = '서머타임';
 $labels['htmleditor'] = 'HTML 메일 쓰기';
+$labels['htmlonreply'] = 'HTML 메시지에 회신할 때에 만';
 $labels['htmlsignature'] = 'HTML 서명';
-$labels['previewpane'] = '이전 구역 보기';
+$labels['previewpane'] = '미리 보기 창 보기';
 $labels['skin'] = '인터페이스 스킨';
 $labels['logoutclear'] = '로그아웃할 때 휴지통 비우기';
 $labels['logoutcompact'] = '로그아웃할 때 받은편지함 압축하기';
@@ -226,6 +322,8 @@ $labels['ignore'] = '무시';
 $labels['readwhendeleted'] = '삭제할 때 메시지를 읽은 것으로 표시';
 $labels['flagfordeletion'] = '지우는 대신 지울 메시지에 깃발 달기';
 $labels['skipdeleted'] = '지운 메시지 보이지 않기';
+$labels['deletealways'] = '휴지통으로 메시지 이동을 실패하면, 삭제';
+$labels['deletejunk'] = '정크 메일함에 있는 메시지들을 바로 삭제';
 $labels['showremoteimages'] = '원격 이미지 보이기';
 $labels['fromknownsenders'] = '아는 발신인에게서만';
 $labels['always'] = '항상';
@@ -234,17 +332,40 @@ $labels['autosavedraft'] = '드래프트 자동 저장';
 $labels['everynminutes'] = '$n 분마다';
 $labels['keepalive'] = '다음 간격마다 새 메시지 자동 체크';
 $labels['never'] = '하지 않음';
+$labels['immediately'] = '즉시';
 $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['advancedoptions'] = '상세 설정';
 $labels['focusonnewmessage'] = '새 메시지가 있으면 브라우저 윈도우로 포커스 이동';
 $labels['checkallfolders'] = '새 메시지를 위해 모든 폴더 체크';
+$labels['displaynext'] = '메시지 삭제/이동한 후에는 다음 메시지를 표시';
+$labels['defaultfont'] = 'HTML 메시지의 기본 폰트';
+$labels['mainoptions'] = '주 옵션';
+$labels['browseroptions'] = '브라우저 옵션';
+$labels['section'] = '섹션';
+$labels['maintenance'] = '유지 관리';
+$labels['newmessage'] = '새 메시지';
+$labels['signatureoptions'] = '서명 옵션';
+$labels['autoaddsignature'] = '자동으로 서명 추가';
+$labels['newmessageonly'] = '새로운 메시지만';
+$labels['replyandforwardonly'] = '회신이나 전달 메시지 만';
+$labels['insertsignature'] = '서명 삽입';
+$labels['previewpanemarkread'] = '미리 읽힘 메시지를 읽음으로 표시';
+$labels['afternseconds'] = '$n 초 이후';
+$labels['reqmdn'] = '항상 수신확인 요청 하기';
+$labels['defaultaddressbook'] = '선택한 주소록에 새로운 연락처를 추가';
+$labels['spellcheckbeforesend'] = '메시지를 보내기 전에 맞춤법 확인';
+$labels['spellcheckoptions'] = '맞춤법 확인 옵션';
+$labels['spellcheckignoresyms'] = '심볼이 포함된 단어 무시하기';
+$labels['spellcheckignorenums'] = '숫자가 포함된 단어 무시하기';
+$labels['spellcheckignorecaps'] = '대문자가 포함된 단어 무시하기';
+$labels['addtodict'] = '사전에 추가';
 $labels['folder'] = '폴더';
-$labels['folders'] = '폴더';
 $labels['foldername'] = '폴더 이름';
 $labels['subscribed'] = '가입됨';
 $labels['messagecount'] = '메시지';
@@ -252,12 +373,34 @@ $labels['create'] = '만들기';
 $labels['createfolder'] = '새 폴더 만들기';
 $labels['managefolders'] = '폴더 관리';
 $labels['specialfolders'] = '특수 폴더';
+$labels['properties'] = '등록 정보';
+$labels['folderproperties'] = '폴더 등록 정보';
+$labels['parentfolder'] = '상위 폴더';
+$labels['info'] = '정보';
+$labels['getfoldersize'] = '폴더의 사이즈를 알아보려면 클릭';
+$labels['changesubscription'] = '구독을 변경하려면 클릭';
+$labels['foldertype'] = '폴더 타입';
+$labels['personalfolder'] = '개인 폴더';
+$labels['otherfolder'] = '다른 사용자의 폴더';
+$labels['sharedfolder'] = '공개 폴더';
 $labels['sortby'] = '정렬';
 $labels['sortasc'] = '오름차순으로 정렬';
 $labels['sortdesc'] = '내림차순으로 정렬';
+$labels['undo'] = '실행 취소';
+$labels['plugin'] = '플러그인';
+$labels['version'] = '버전';
+$labels['license'] = '라이센스';
+$labels['support'] = '지원 받기';
 $labels['B'] = '바이트';
 $labels['KB'] = '킬로바이트';
 $labels['MB'] = '메가바이트';
 $labels['GB'] = '기가바이트';
+$labels['unicode'] = '유니코드(단일 코드,다국적 지원코드)';
+$labels['english'] = '영어';
+$labels['turkish'] = '터키어';
+$labels['thai'] = '태국어';
+$labels['vietnamese'] = '베트남어';
+$labels['japanese'] = '일본어';
+$labels['korean'] = '한국어';
+$labels['chinese'] = '중국어';
 
-?>
index cbe9f02989e32f637b5c3d11a08325861bea2e76..c1936dbd01367c6d31629ddce25d3637eacb488b 100644 (file)
@@ -1,31 +1,37 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| localization/kr/messages.inc                                            |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: lordmiss <lordmiss@lordmiss.com>                              |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 4410 2011-01-12 18:25:02Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/ko_KR/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Kim, Woohyun <woohyun.kim@gmail.com>                          |
+ +-----------------------------------------------------------------------+
 */
 
-$messages['loginfailed'] = '로그인 실패';
-$messages['loginfailed'] = '로그인 실패';
+$messages = array();
+$messages['errortitle'] = '에러가 발생!';
+$messages['loginfailed'] = '로그인이 실패하였습니다.';
 $messages['cookiesdisabled'] = '브라우저가 쿠키를 지원하지 않습니다';
 $messages['sessionerror'] = '세션이 유효하지 않거나 종료되었습니다';
-$messages['imaperror'] = 'IMAP 서버 연결 실패';
+$messages['storageerror'] = 'IMAP 서버 연결 실패';
+$messages['servererror'] = '서버 에러!';
+$messages['servererrormsg'] = '서버 에러: $msg';
+$messages['dberror'] = '데이터베이스 에러!';
+$messages['requesttimedout'] = '요청 시간 초과';
+$messages['errorreadonly'] = '명령을 수행할 수 없습니다. 읽기전용 폴더.';
+$messages['errornoperm'] = '명령을 수행할 수 없습니다. 권한이 거부 됨.';
+$messages['invalidrequest'] = '잘못된 요청! 데이터는 저장되지 않았음.';
 $messages['nomessagesfound'] = '이 메일함에 메일이 없습니다';
 $messages['loggedout'] = '세션을 성공적으로 종료하였습니다. 안녕히 가십시오!';
 $messages['mailboxempty'] = '메일함이 비어있습니다';
 $messages['loading'] = '불러오는 중...';
+$messages['uploading'] = '하나의 파일 올리기...';
+$messages['uploadingmany'] = '여러 파일 올리기...';
 $messages['loadingdata'] = '데이터 불러오는 중...';
 $messages['checkingmail'] = '새 메일 확인 중...';
 $messages['sendingmessage'] = '메일 보내는 중...';
@@ -35,22 +41,31 @@ $messages['messagesaved'] = '메일이 드래프트 폴더에 저장되었습니
 $messages['successfullysaved'] = '성공적으로 저장';
 $messages['addedsuccessfully'] = '연락처가 주소록에 성공적으로 추가되었습니다';
 $messages['contactexists'] = '이 메일로 지정된 연락처가 이미 있습니다';
+$messages['contactnameexists'] = '이미 존재하는 것과 동일한 이름의 연락처.';
 $messages['blockedimages'] = '보안 유지를 위해, 이 메일의 외부 이미지를 차단하였습니다';
 $messages['encryptedmessage'] = '이 메일은 암호화되어 볼 수 없습니다. 죄송합니다!';
 $messages['nocontactsfound'] = '연락처 없음';
 $messages['contactnotfound'] = '요청한 연락처가 없습니다';
+$messages['contactsearchonly'] = '연락처를 찾기 위해 검색 항목을 입력하세요.';
 $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['folderdeleting'] = '폴더 지우는 중...';
 $messages['foldermoving'] = '폴더 옮기는 중...';
+$messages['foldersubscribing'] = '폴더의 구독을 활성화 하는 중...';
+$messages['folderunsubscribing'] = '폴더의 구독을 취소하는 중...';
 $messages['formincomplete'] = '양식을 완전히 채우지 않았습니다';
 $messages['noemailwarning'] = '유효한 이메일 주소를 넣어주십시오';
 $messages['nonamewarning'] = '이름을 넣어주십시오';
@@ -61,14 +76,19 @@ $messages['nosubjectwarning'] = '"제목"이 없습니다. 제목을 넣으시
 $messages['nobodywarning'] = '텍스트 없이 메일을 보낼까요?';
 $messages['notsentwarning'] = '메일을 보내지 않았습니다. 메일을 버리시겠습니까?';
 $messages['noldapserver'] = '검색할 LDAP 서버를 선택하세요';
-$messages['nocontactsreturned'] = '연락처가 없습니다';
 $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['folderpurged'] = '폴더가 성공적으로 비워졌습니다.';
+$messages['folderexpunged'] = '폴더가 성공적으로 압축 되었습니다.';
 $messages['deletedsuccessfully'] = '성공적으로 삭제하였습니다';
 $messages['converting'] = '메일의 포맷을 지우는 중...';
 $messages['messageopenerror'] = '서버에서 메일을 가져올 수 없습니다';
@@ -79,17 +99,54 @@ $messages['copyerror'] = '주소를 복사할 수 없습니다';
 $messages['sourceisreadonly'] = '이 주소 소스는 읽기 전용입니다';
 $messages['errorsavingcontact'] = '연락처 주소를 저장할 수 없습니다';
 $messages['movingmessage'] = '메시지 이동 중...';
+$messages['copyingmessage'] = '메시지(들) 복사 중...';
+$messages['copyingcontact'] = '연락처(들) 복사 중...';
+$messages['deletingmessage'] = '메시지(들) 삭제 중...';
+$messages['markingmessage'] = '메시지(들)에 표시 중...';
+$messages['addingmember'] = '그룹에 연락처(들)을 추가 중...';
+$messages['removingmember'] = '그룹으로 부터 연락처를 삭제 중...';
 $messages['receiptsent'] = '메일 읽음 확인을 보냈습니다';
 $messages['errorsendingreceipt'] = '읽음 확인을 보낼 수 없습니다';
 $messages['nodeletelastidentity'] = '이 정보는 마지막 남은 것이므로 지울 수 없습니다';
 $messages['forbiddencharacter'] = '폴더 이름에 쓸 수 없는 문자가 포함되어 있습니다';
 $messages['selectimportfile'] = '업로드할 파일을 선택하세요';
 $messages['addresswriterror'] = '선택한 주소록은 쓸 수 없습니다';
+$messages['contactaddedtogroup'] = '이 그룹에 연락처를 성공적으로 추가 함.';
+$messages['contactremovedfromgroup'] = '이 그룹으로 부터 연락처를 성공적으로 제거 함.';
 $messages['importwait'] = '가져오는 중, 기다리세요...';
 $messages['importerror'] = '가져오기 실패! 업로드한 파일이 유효한 vCard 파일이 아닙니다.';
 $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): 인증이 실패 됨.';
+$messages['smtpfromerror'] = 'SMTP 에러 ($code): 보낸 사람을 "$from"로 설정하는 것이 실패 됨 ($msg).';
+$messages['smtptoerror'] = 'SMTP 에러 ($code): 수신자 "$to"를 추가하는 데 실패 함 ($msg).';
+$messages['smtprecipientserror'] = 'SMTP 에러: 수신자 목록을 분석(parse)할 수 없음.';
+$messages['smtperror'] = 'SMTP 에러: $msg';
+$messages['emailformaterror'] = '잘못된 e-mail 주소: $email';
+$messages['toomanyrecipients'] = '수신자가 너무 많습니다. 수신자의 수를 $max로 줄이세요.';
+$messages['maxgroupmembersreached'] = '그룹 구성원의 수가 최대 인원 $max를 초과하였습니다.';
+$messages['internalerror'] = '내부 오류가 발생하였습니다. 다시 시도하기 바랍니다.';
+$messages['contactdelerror'] = '연락처(들)을 지울 수 없습니다.';
+$messages['contactdeleted'] = '연락처(들)이 성공적으로 제거 됨.';
+$messages['contactrestoreerror'] = '삭제된 연락처(들)을 복구할 수 없음.';
+$messages['contactrestored'] = '연락처(들)이 성공적으로 복구 됨.';
+$messages['groupdeleted'] = '그룹이 성공적으로 삭제 됨.';
+$messages['grouprenamed'] = '그룹명이 성공적으로 변경 됨.';
+$messages['groupcreated'] = '그룹이 성공적으로 생성 됨.';
+$messages['messagedeleted'] = '메시지(들)이 성공적으로 삭제 됨.';
+$messages['messagemoved'] = '메시지(들)을 성공적으로 이동 함.';
+$messages['messagecopied'] = '메시지(들)을 성공적으로 복사 함.';
+$messages['messagemarked'] = '메시지(들)에 성공적으로 표시 함.';
+$messages['autocompletechars'] = '자동 완성을 위해서 적어도 $min 글자를 입력하세요.';
+$messages['namecannotbeempty'] = '이름이 비워져서는 안됩니다.';
+$messages['nametoolong'] = '이름이 너무 깁니다.';
+$messages['folderupdated'] = '폴더를 성공적으로 갱신 함.';
+$messages['foldercreated'] = '폴더를 성공적으로 생성 함.';
+$messages['invalidimageformat'] = '올바른 이미지 포멧이 아님.';
+$messages['mispellingsfound'] = '메시지에서 맞춤법 오류를 감지 하였음.';
+$messages['parentnotwritable'] = '선택한 부모 폴더에 폴더를 생성하거나 이동할 수 없음. 접근 권한이 없음.';
 
-?>
index 0653407d6c06d923eb31c2bc50a670c7b05a3c00..0936965878b98af64f370934ee387df5d5e3906f 100644 (file)
@@ -2,20 +2,20 @@
 
 /*
  +-----------------------------------------------------------------------+
- | language/ku/labels.inc                                                |
+ | localization/ku/labels.inc                                         |
  |                                                                       |
  | Language file of the Roundcube Webmail client                         |
- | Copyright (C) 2006, The Roundcube Dev Team                            |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Amed Çeko Jiyan <amedcj@kurdistan.name>                       |
+ | Author: Thomas <Unknown>                                              |
  +-----------------------------------------------------------------------+
-
+ @version $Id$
 */
 
 $labels = array();
-$labels['welcome'] = 'Bixêr hatî $product \\\'ê';
+$labels['welcome'] = 'Bixêr hatî $product \'ê';
 $labels['username'] = 'Bikarhêner';
 $labels['password'] = 'Nasnav';
 $labels['server'] = 'Pêşkêşkar';
@@ -39,17 +39,15 @@ $labels['date'] = 'Dîrok';
 $labels['size'] = 'Mezinahî';
 $labels['priority'] = 'Girîngî';
 $labels['organization'] = 'Sazî';
-$labels['reply-to'] = 'Navnîşanên Standyar';
 $labels['mailboxlist'] = 'Peldank';
+$labels['folders'] = 'Peldank';
 $labels['messagesfromto'] = 'Peyam $count ên di navbera $from - $to';
 $labels['messagenrof'] = '$nr a peyama $count';
+$labels['copy'] = 'Kopiya Karbon';
 $labels['moveto'] = 'bibe...';
 $labels['download'] = 'daxe';
 $labels['filename'] = 'Navê pelê';
 $labels['filesize'] = 'Mezinahiya pelê';
-$labels['preferhtml'] = 'Wekî HTML nîşan bide';
-$labels['htmlmessage'] = 'Peyama HTML';
-$labels['prettydate'] = 'Kurtenivîsa Dîrokê';
 $labels['addtoaddressbook'] = 'Têxe lênûska navnîşanan';
 $labels['sun'] = 'Yş';
 $labels['mon'] = 'Dş';
@@ -67,6 +65,7 @@ $labels['friday'] = 'În';
 $labels['saturday'] = 'Şemî';
 $labels['today'] = 'Îro';
 $labels['checkmail'] = 'Li peyamên nû venihêre';
+$labels['compose'] = 'Peyamekê biafirîne';
 $labels['writenewmessage'] = 'Peyameke nû biafirîne';
 $labels['replytomessage'] = 'Bersivê bide peyamê';
 $labels['replytoallmessage'] = 'Bersivê ji bo hemû kesên ku ev peyan standine bişîne';
@@ -75,13 +74,9 @@ $labels['deletemessage'] = 'Peyamê jê bibe';
 $labels['movemessagetotrash'] = 'Peyamê dake çopê';
 $labels['printmessage'] = 'Vê peyamê çap bike';
 $labels['previousmessage'] = 'Peyama berê nîşan bide';
-$labels['previousmessages'] = 'Peyamên berê nîşan bide';
 $labels['firstmessage'] = 'Peyama yekemîn nîşan bide';
-$labels['firstmessages'] = 'Peyamên yekemîn nîşan bide';
 $labels['nextmessage'] = 'Peyama di rêzê de nîşan bide';
-$labels['nextmessages'] = 'Peyamên di rêzê de nîşan bide';
 $labels['lastmessage'] = 'Peyama dawî nîşan bide';
-$labels['lastmessages'] = 'Peyamên dawî nîşan bide';
 $labels['backtolist'] = 'Vegere lîsteya peyaman';
 $labels['viewsource'] = 'Çavkaniyê nîşan bide';
 $labels['markmessages'] = 'Peyamê nîşan bike';
@@ -90,16 +85,15 @@ $labels['markunread'] = 'Wekî nexwendî';
 $labels['select'] = 'Hilbijêre';
 $labels['all'] = 'Hemû';
 $labels['none'] = 'Ne yek jî';
+$labels['nonesort'] = 'Ne yek jî';
 $labels['unread'] = 'Nexwendî';
 $labels['compact'] = 'Kompakt';
 $labels['empty'] = 'Vala Bike';
-$labels['purge'] = 'Jê bibe';
 $labels['quota'] = 'Bikaranîna dîskê';
 $labels['unknown'] = 'nayê zanîn';
 $labels['unlimited'] = 'bêsînor';
 $labels['quicksearch'] = 'Lêgerîna bilez';
 $labels['resetsearch'] = 'Lêgerînê reset bike';
-$labels['compose'] = 'Peyamekê biafirîne';
 $labels['savemessage'] = 'Hilîne';
 $labels['sendmessage'] = 'Peyamê niha bişîne';
 $labels['addattachment'] = 'Pelekê lê zêde bike';
@@ -159,6 +153,9 @@ $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ê';
 $labels['setdefault'] = 'Wekî standard tomar bike';
 $labels['language'] = 'Ziman';
 $labels['timezone'] = 'Herêma demê';
@@ -171,7 +168,6 @@ $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['messagecount'] = 'Peyam';
@@ -182,4 +178,3 @@ $labels['sortby'] = 'Şêweyê rêzkirinê';
 $labels['sortasc'] = 'Wekî zêde dibe';
 $labels['sortdesc'] = 'Wekî kêm dibe';
 
-?>
index 17423f9c56d99bbce8fc6f6b804711ab5d0a8a2d..e35260cc1330d9bbbcff7a6b92889df0478ed444 100644 (file)
@@ -2,23 +2,23 @@
 
 /*
  +-----------------------------------------------------------------------+
- | language/ku/messages.inc                                              |
+ | localization/ku/messages.inc                                       |
  |                                                                       |
  | Language file of the Roundcube Webmail client                         |
- | Copyright (C) 2006, The Roundcube Dev Team                            |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Amed çeko Jiyan <amedcj@kurdistan.name>                       |
+ | Author: Thomas <Unknown>                                              |
  +-----------------------------------------------------------------------+
-
+ @version $Id$
 */
 
 $messages = array();
 $messages['loginfailed'] = 'Têketin têk çû';
 $messages['cookiesdisabled'] = 'Geroka te destûrê nade çerezan';
 $messages['sessionerror'] = 'Danişîna te çewt e an jî bi dawî bûye';
-$messages['imaperror'] = 'Girêdana pêşkêşkara IMAP têk çû';
+$messages['storageerror'] = 'Girêdana pêşkêşkara IMAP têk çû';
 $messages['nomessagesfound'] = 'Di vê peyamdankê de tu peyam nehat dîtin';
 $messages['loggedout'] = 'Te danişînî bi dawî anî. Oxir be!';
 $messages['mailboxempty'] = 'Peyamdank vala ye';
@@ -53,7 +53,6 @@ $messages['nosubjectwarning'] = 'Qada "Mijar"ê vala ye. Dixwazî niha tiştekî
 $messages['nobodywarning'] = 'Peyamê bê nivîs bişeyînî?';
 $messages['notsentwarning'] = 'Peyam nehat şandin. Dixwazî peyamê pişTgo bikî?';
 $messages['noldapserver'] = 'Tika ye, ji bo lêgerînê pêşkêşkareke Idap têkevê';
-$messages['nocontactsreturned'] = 'Tu têkilî nehat dîtin';
 $messages['nosearchname'] = 'Tika ye, nav an jî navnîşaneke têkiliyê têkevê';
 $messages['searchsuccessful'] = '$nr peyam hat(in) dîtin';
 $messages['searchnomatch'] = 'Di lêgerînê de tu tişt nehat dîtin';
@@ -75,4 +74,3 @@ $messages['receiptsent'] = 'Rapora şandina serkeftî';
 $messages['errorsendingreceipt'] = 'Rapor nehat şandin';
 $messages['nodeletelastidentity'] = 'Nikarî vê nasnameyê jê bibî. Ew ya dawî ye.';
 
-?>
index 9f9af61f8780cef86f1bbd8b0d226cc134628b0d..c1bdbcafb6719e2a7da6c80a8d2330bff78ff002 100644 (file)
@@ -1,21 +1,16 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/lt_LT/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Authors: Martynas Bendorius <martynas@evanet.lt>                      |
-|          Rimas Kudelis <rq@akl.lt>                                    |
-+-----------------------------------------------------------------------+'
-
-@version $Id: labels.inc 5569 2011-12-07 14:47:32Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/lt_LT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
@@ -45,10 +40,13 @@ $labels['size'] = 'Dydis';
 $labels['priority'] = 'Prioritetas';
 $labels['organization'] = 'Organizacija';
 $labels['readstatus'] = 'Neskaitytas';
+$labels['listoptions'] = 'Sąrašo nuostatos…';
 $labels['mailboxlist'] = 'Aplankai';
+$labels['folders'] = 'Aplankai';
 $labels['messagesfromto'] = 'Laiškai nuo $from iki $to iš $count';
 $labels['threadsfromto'] = 'Gijos nuo $from iki $to iš $count';
 $labels['messagenrof'] = 'Laiškas $nr iš $count';
+$labels['fromtoshort'] = '$from – $to iš $count';
 $labels['copy'] = 'Kopijuoti';
 $labels['move'] = 'Perkelti';
 $labels['moveto'] = 'Perkelti į…';
@@ -74,7 +72,8 @@ $labels['jan'] = 'Sau';
 $labels['feb'] = 'Vas';
 $labels['mar'] = 'Kov';
 $labels['apr'] = 'Bal';
-$labels['may'] = 'Geg';
+$labels['may'] = 'Gegužė';
+$labels['longmay'] = 'Gegužė';
 $labels['jun'] = 'Bir';
 $labels['jul'] = 'Lie';
 $labels['aug'] = 'Rgp';
@@ -86,7 +85,6 @@ $labels['longjan'] = 'Sausis';
 $labels['longfeb'] = 'Vasaris';
 $labels['longmar'] = 'Kovas';
 $labels['longapr'] = 'Balandis';
-$labels['longmay'] = 'Gegužė';
 $labels['longjun'] = 'Biržėlis';
 $labels['longjul'] = 'Liepa';
 $labels['longaug'] = 'Rugpjūtis';
@@ -95,12 +93,16 @@ $labels['longoct'] = 'Spalis';
 $labels['longnov'] = 'Lapkritis';
 $labels['longdec'] = 'Gruodis';
 $labels['today'] = 'Šiandien';
+$labels['refresh'] = 'Atnaujinti';
 $labels['checkmail'] = 'Tikrinti, ar yra naujų laiškų';
+$labels['compose'] = 'Rašyti naują laišką';
 $labels['writenewmessage'] = 'Rašyti naują laišką';
+$labels['reply'] = 'Atsakyti';
 $labels['replytomessage'] = 'Atsakyti siuntėjui';
 $labels['replytoallmessage'] = 'Atsakyti el. pašto grupei arba laiško siuntėjui ir visiems jo gavėjams';
 $labels['replyall'] = 'Atsakyti visiems';
 $labels['replylist'] = 'Atsakyti el. pašto grupei';
+$labels['forward'] = 'Persiųsti';
 $labels['forwardinline'] = 'Persiųsti cituojant';
 $labels['forwardattachment'] = 'Persiųsti priedu';
 $labels['forwardmessage'] = 'Persiųsti laišką';
@@ -113,15 +115,20 @@ $labels['nextmessage'] = 'Rodyti tolesnį laišką';
 $labels['lastmessage'] = 'Rodyti paskutinį laišką';
 $labels['backtolist'] = 'Grižti į laiškų sarašą';
 $labels['viewsource'] = 'Rodyti pirminį tekstą';
+$labels['mark'] = 'Pažymėti';
 $labels['markmessages'] = 'Pažymėti laiškus';
 $labels['markread'] = 'Kaip skaitytus';
 $labels['markunread'] = 'Kaip neskaitytus';
 $labels['markflagged'] = 'Pažymėti gairele';
 $labels['markunflagged'] = 'Pašalinti gairelę';
 $labels['moreactions'] = 'Kiti veiksmai…';
+$labels['more'] = 'Daugiau';
+$labels['back'] = 'Grįžti';
+$labels['options'] = 'Nuostatos';
 $labels['select'] = 'Pažymėti';
 $labels['all'] = 'visus';
-$labels['none'] = 'nieko';
+$labels['none'] = 'Nerūšiuoti';
+$labels['nonesort'] = 'Nerūšiuoti';
 $labels['currpage'] = 'matomus šiame puslapyje';
 $labels['unread'] = 'neskaitytus';
 $labels['flagged'] = 'su gairele';
@@ -141,7 +148,6 @@ $labels['expand_only_unread'] = 'tik turinčias neskaitytų laiškų';
 $labels['fromto'] = 'Siuntėjas/Gavėjas';
 $labels['flag'] = 'Gairelė';
 $labels['attachment'] = 'Priedas';
-$labels['nonesort'] = 'Nerūšiuoti';
 $labels['sentdate'] = 'Išsiuntimo laikas';
 $labels['arrival'] = 'Gavimo laikas';
 $labels['asc'] = 'didėjančiai';
@@ -162,7 +168,6 @@ $labels['searchmod'] = 'Paieškos modifikatoriai';
 $labels['msgtext'] = 'Visas laiškas';
 $labels['openinextwin'] = 'Atverti naujame lange';
 $labels['emlsave'] = 'Parsisiųsti (.eml)';
-$labels['compose'] = 'Rašyti naują laišką';
 $labels['editasnew'] = 'Redaguoti kaip naują';
 $labels['savemessage'] = 'Išsaugoti šį juodraštį';
 $labels['sendmessage'] = 'Išsiųsti laiską';
@@ -174,9 +179,11 @@ $labels['dsn'] = 'Laiško pristatymo pažyma';
 $labels['mailreplyintro'] = '$date, $sender rašė:';
 $labels['originalmessage'] = 'Originalus laiškas';
 $labels['editidents'] = 'Tvarkyti tapatybes';
+$labels['spellcheck'] = 'Tikrinti rašybą';
 $labels['checkspelling'] = 'Tikrinti rašybą';
 $labels['resumeediting'] = 'Tęsti redagavimą';
 $labels['revertto'] = 'Atstatyti į';
+$labels['attach'] = 'Pridėti failą';
 $labels['attachments'] = 'Pridėti failai';
 $labels['upload'] = 'Įkelti';
 $labels['uploadprogress'] = '$percent ($current iš $total)';
@@ -231,15 +238,17 @@ $labels['notes'] = 'Pastabos';
 $labels['male'] = 'vyras';
 $labels['female'] = 'moteris';
 $labels['manager'] = 'Vadybininkas(-ė)';
-$labels['assistant'] = 'Padėjėjas(-a)';
+$labels['assistant'] = 'Padėjėjo(-os)';
+$labels['typeassistant'] = 'Padėjėjo(-os)';
 $labels['spouse'] = 'Sutuoktinis';
 $labels['allfields'] = 'Visi laukai';
 $labels['search'] = 'Paieška';
 $labels['advsearch'] = 'Išplėstinė paieška';
-$labels['other'] = 'Kita';
+$labels['advanced'] = 'Išsamiau';
+$labels['other'] = 'Kitas';
+$labels['typeother'] = 'Kitas';
 $labels['typehome'] = 'Namų';
 $labels['typework'] = 'Darbo';
-$labels['typeother'] = 'Kitas';
 $labels['typemobile'] = 'Mobilusis';
 $labels['typemain'] = 'Pagrindinis';
 $labels['typehomefax'] = 'Namų faksas';
@@ -247,7 +256,6 @@ $labels['typeworkfax'] = 'Darbo faksas';
 $labels['typecar'] = 'Automobilyje';
 $labels['typepager'] = 'Pranešimų gaviklis';
 $labels['typevideo'] = 'Vaizdo';
-$labels['typeassistant'] = 'Padėjėjo(-os)';
 $labels['typehomepage'] = 'Tinklalapis';
 $labels['typeblog'] = 'Tinklaraštis';
 $labels['typeprofile'] = 'Profilis';
@@ -264,6 +272,7 @@ $labels['delete'] = 'Pašalinti';
 $labels['rename'] = 'Pervardinti';
 $labels['addphoto'] = 'Pridėti';
 $labels['replacephoto'] = 'Pakeisti';
+$labels['uploadphoto'] = 'Įkelti nuotrauką';
 $labels['newcontact'] = 'Sukurti naują adresatą';
 $labels['deletecontact'] = 'Ištrinti pažymėtus adresatus';
 $labels['composeto'] = 'Rašyti laišką';
@@ -274,6 +283,7 @@ $labels['exportvcards'] = 'Eksportuoti adresatus  „vCard“ formatu';
 $labels['newcontactgroup'] = 'Kurti adresatų grupę';
 $labels['grouprename'] = 'Pervardinti grupę';
 $labels['groupdelete'] = 'Pašalinti grupę';
+$labels['groupremoveselected'] = 'Pašalinti pažymėtus adresatus iš grupės';
 $labels['previouspage'] = 'Rodyti ankstesnį puslapį';
 $labels['firstpage'] = 'Rodyti pirmąjį puslapį';
 $labels['nextpage'] = 'Rodyti tolesnį puslapį';
@@ -290,11 +300,11 @@ $labels['importtarget'] = 'Pridėti naujus adresatus į adresų knygą:';
 $labels['importreplace'] = 'Perrašyti visą adresų knygą';
 $labels['importtext'] = 'Jūs galite įkelti adresatus iš egzistuojančios adresų knygos.<br/>Šiuo metu galima importuoti adresus iš <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> tipo failų.';
 $labels['done'] = 'Baigta';
-$labels['settingsfor'] = 'Nustatymai';
+$labels['settingsfor'] = 'Nuostatos';
 $labels['about'] = 'Apie';
-$labels['preferences'] = 'Nustatymai';
-$labels['userpreferences'] = 'Naudotojo nustatymai';
-$labels['editpreferences'] = 'Redaguoti naudotojo nustatymus';
+$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ė';
@@ -321,7 +331,7 @@ $labels['skin'] = 'Grafinis apvalkalas';
 $labels['logoutclear'] = 'Išvalyti Šiukšlinę atsijungiant';
 $labels['logoutcompact'] = 'Suglaudinti gautųjų laiškų aplanką atsijungiant';
 $labels['uisettings'] = 'Naudotojo sąsaja';
-$labels['serversettings'] = 'Serverio nustatymai';
+$labels['serversettings'] = 'Serverio nuostatos';
 $labels['mailboxview'] = 'Pašto dėžutės rodymas';
 $labels['mdnrequests'] = 'Gavus prašymą patvirtinti, jog laiškas perskaitytas';
 $labels['askuser'] = 'visuomet klausti, ar siųsti patvirtinimą';
@@ -333,6 +343,7 @@ $labels['readwhendeleted'] = 'Pažymėti laišką kaip skaitytą prieš šalinan
 $labels['flagfordeletion'] = 'Pažymėti laišką šalinimui užuot šalinus';
 $labels['skipdeleted'] = 'Nerodyti pašalintų laiškų';
 $labels['deletealways'] = 'Pašalinti laiškus, jeigu nepavyksta jų perkelti į Šiukšlinę';
+$labels['deletejunk'] = 'Pašalinti Brukalo aplanke esančius laiškus';
 $labels['showremoteimages'] = 'Įkelti paveikslėlius iš interneto serverių';
 $labels['fromknownsenders'] = 'tik žinomų siuntėjų laiškuose';
 $labels['always'] = 'visada';
@@ -349,16 +360,17 @@ $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['advancedoptions'] = 'Papildomi nustatymai';
+$labels['advancedoptions'] = 'Papildomos nuostatos';
 $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ą';
-$labels['mainoptions'] = 'Pagrindiniai nustatymai';
+$labels['defaultfont'] = 'Numatytasis HTML laiškų šriftas';
+$labels['mainoptions'] = 'Pagrindinės nuostatos';
+$labels['browseroptions'] = 'Naršyklės nuostatos';
 $labels['section'] = 'Sekcija';
 $labels['maintenance'] = 'Priežiūra';
 $labels['newmessage'] = 'Naujas laiškas';
-$labels['listoptions'] = 'Rodyti nustatymus';
-$labels['signatureoptions'] = 'Parašo nustatymai';
+$labels['signatureoptions'] = 'Parašo nuostatos';
 $labels['whenreplying'] = 'Kuriant atsakymą';
 $labels['replytopposting'] = 'rašyti atsakymą virš cituojamo laiško';
 $labels['replybottomposting'] = 'rašyti atsakymą po cituojamu laišku';
@@ -377,14 +389,15 @@ $labels['reqdsn'] = 'Visuomet prašyti laiško pristatymo pažymos';
 $labels['replysamefolder'] = 'Atsakymus talpinti į tą patį aplanką, kuriame yra pirminis laiškas';
 $labels['defaultaddressbook'] = 'Pridėti naujus adresatus į pasirinktąją adresų knygą';
 $labels['autocompletesingle'] = 'Užbaigiant adresus, praleisti antrinius';
+$labels['listnamedisplay'] = 'Rodyti adresatus kaip';
 $labels['spellcheckbeforesend'] = 'Tikrinti rašybą prieš išsiunčiant laišką';
 $labels['spellcheckoptions'] = 'Rašybos tikrinimo nuostatos';
 $labels['spellcheckignoresyms'] = 'Nepaisyti žodžių su spec. simboliais';
 $labels['spellcheckignorenums'] = 'Nepaisyti žodžių su skaitmenimis';
 $labels['spellcheckignorecaps'] = 'Nepaisyti žodžių vien iš didžiųjų raidžių';
 $labels['addtodict'] = 'Įtraukti į žodyną';
+$labels['mailtoprotohandler'] = 'Užregistruoti svetainę kaip dirbančią su „mailto:“ saitais';
 $labels['folder'] = 'Aplankas';
-$labels['folders'] = 'Aplankai';
 $labels['foldername'] = 'Aplanko vardas';
 $labels['subscribed'] = 'Užsakytas';
 $labels['messagecount'] = 'Laiškai';
@@ -435,4 +448,3 @@ $labels['japanese'] = 'Japonų';
 $labels['korean'] = 'Korėjiečių';
 $labels['chinese'] = 'Kinų';
 
-?>
index 4cff2b0139ea54f6c17b8eb840e3b3fca78b1773..b83ffcfe4c83c9b247a46325d718cea4318cc007 100644 (file)
@@ -1,31 +1,28 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/lt_LT/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Authors: Martynas Bendorius <martynas@evanet.lt>                      |
-|          Rimas Kudelis <rq@akl.lt>                                    |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 5569 2011-12-07 14:47:32Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/lt_LT/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Rimas Kudelis <rq@akl.lt>                                     |
+ +-----------------------------------------------------------------------+
 */
 
 $messages = array();
+$messages['errortitle'] = 'Įvyko klaida!';
 $messages['loginfailed'] = 'Prisijungti nepavyko.';
 $messages['cookiesdisabled'] = 'Jūsų naršyklė nepriima slapukų.';
 $messages['sessionerror'] = 'Jūsų sesija negaliojanti.';
-$messages['imaperror'] = 'Nepavyko prisijungti prie IMAP serverio.';
+$messages['storageerror'] = 'Nepavyko prisijungti prie IMAP serverio.';
 $messages['servererror'] = 'Serverio klaida!';
 $messages['servererrormsg'] = 'Serverio klaida: $msg';
 $messages['dberror'] = 'Duomenų bazės klaida!';
+$messages['requesttimedout'] = 'Baigėsi užklausai skirtas laikas';
 $messages['errorreadonly'] = 'Nepavyko atlikti veiksmo – aplankas prieinamas tik skaitymui.';
 $messages['errornoperm'] = 'Nepavyko atlikti veiksmo – nepakanka teisių.';
 $messages['invalidrequest'] = 'Netinkama užklausa! Duomenys neišsaugoti.';
@@ -110,9 +107,10 @@ $messages['addingmember'] = 'Adresatas(-ai) įtraukiamas(-i) į grupę…';
 $messages['removingmember'] = 'Adresatas(-ai) šalinamas(-i) iš grupės…';
 $messages['receiptsent'] = 'Laiško perskaitymo pažyma sėkmingai išsiųsta.';
 $messages['errorsendingreceipt'] = 'Laiško perskaitymo pažymos išsiųsti nepavyko.';
-$messages['nodeletelastidentity'] = 'Jūs negalite ištrinti šios tapatybės, nes ji yra vienintelė likusi.';
-$messages['forbiddencharacter'] = 'Aplanko varde rasta neleistinų simbolių.';
-$messages['selectimportfile'] = 'Parinkite įkelti norimą failą.';
+$messages['deleteidentityconfirm'] = 'Ar tikrai norite pašalinti šią tapatybę?';
+$messages['nodeletelastidentity'] = 'Šios tapatybės šalinti negalima, nes ji vienintelė likusi.';
+$messages['forbiddencharacter'] = 'Aplanko varde aptikta neleistinų simbolių.';
+$messages['selectimportfile'] = 'Parinkite norimą įkelti failą.';
 $messages['addresswriterror'] = 'Pasirinktoji adresų knyga prieinama tik skaitymui.';
 $messages['contactaddedtogroup'] = 'Adresatai sėkmingai įtraukti į šią grupę.';
 $messages['contactremovedfromgroup'] = 'Adresatai sėkmingai pašalinti iš šios grupės.';
@@ -160,4 +158,3 @@ $messages['mispellingsfound'] = 'Laiške rasta rašybos klaidų.';
 $messages['parentnotwritable'] = 'Nepavyko sukurti arba perkelti aplanko į parinktą tėvinį aplanką. Trūksta prieigos teisių.';
 $messages['messagetoobig'] = 'Laiško dalis yra per didelė, kad galėtų būti apdorota.';
 
-?>
index d0df66678610318226aa735e4b3c067b0207b32a..e324815ed11b24e0454c8e6b5ae29b813d9825c1 100644 (file)
@@ -1,23 +1,17 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/lv/labels.inc                                                |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Rūdolfs Ošiņš <dev.random@gmail.com>                          |
-|         Miķelis Zaļais <mik@prog.lv>                                  |
-|         Lauris Bukšis-Haberkorns <lauris@nix.lv>                      |
-|         Kaspars Tenters <kaspars.tenters@va.lv>                       |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 5173 2011-09-05 18:41:04Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/lv_LV/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $labels = array();
@@ -48,6 +42,7 @@ $labels['priority'] = 'Prioritāte';
 $labels['organization'] = 'Uzņēmums';
 $labels['readstatus'] = 'Izlasīšanas statuss';
 $labels['mailboxlist'] = 'Mapes';
+$labels['folders'] = 'Mapes';
 $labels['messagesfromto'] = 'Vēstules $from līdz $to no $count';
 $labels['threadsfromto'] = 'Vijumi $from līdz $to no $count';
 $labels['messagenrof'] = '$nr. vēstule  no $count';
@@ -76,7 +71,8 @@ $labels['jan'] = 'Jan';
 $labels['feb'] = 'Feb';
 $labels['mar'] = 'Mar';
 $labels['apr'] = 'Apr';
-$labels['may'] = 'Mai';
+$labels['may'] = 'Maijs';
+$labels['longmay'] = 'Maijs';
 $labels['jun'] = 'Jūn';
 $labels['jul'] = 'Jūl';
 $labels['aug'] = 'Aug';
@@ -88,7 +84,6 @@ $labels['longjan'] = 'Janvāris';
 $labels['longfeb'] = 'Februāris';
 $labels['longmar'] = 'Marts';
 $labels['longapr'] = 'Aprīlis';
-$labels['longmay'] = 'Maijs';
 $labels['longjun'] = 'Jūnijs';
 $labels['longjul'] = 'Jūlijs';
 $labels['longaug'] = 'Augusts';
@@ -98,6 +93,7 @@ $labels['longnov'] = 'Novembris';
 $labels['longdec'] = 'Decembris';
 $labels['today'] = 'Šodien';
 $labels['checkmail'] = 'Pārbaudīt pastu';
+$labels['compose'] = 'Rakstīt vēstuli';
 $labels['writenewmessage'] = 'Rakstīt jaunu vēstuli';
 $labels['replytomessage'] = 'Atbildēt';
 $labels['replytoallmessage'] = 'Atbildēt sūtītājam un visiem saņēmējiem';
@@ -120,10 +116,11 @@ $labels['markread'] = 'lasītas';
 $labels['markunread'] = 'nelasītas';
 $labels['markflagged'] = 'iezīmētas';
 $labels['markunflagged'] = 'neiezīmētas';
-$labels['messageactions'] = 'Citas darbības:';
+$labels['moreactions'] = 'Citas darbības...';
 $labels['select'] = 'Iezīmēt';
 $labels['all'] = 'visas';
-$labels['none'] = 'nav';
+$labels['none'] = 'Neviens';
+$labels['nonesort'] = 'Neviens';
 $labels['currpage'] = 'Pašreizējā lapa';
 $labels['unread'] = 'nelasītās';
 $labels['flagged'] = 'iezīmētās';
@@ -143,7 +140,6 @@ $labels['expand_only_unread'] = 'tikai tad, ja ir neizlasītas vēstules';
 $labels['fromto'] = 'Sūtītājs/Saņēmējs';
 $labels['flag'] = 'Iezīmēts';
 $labels['attachment'] = 'Pielikums';
-$labels['nonesort'] = 'Neviens';
 $labels['sentdate'] = 'Nosūtīšanas datums';
 $labels['arrival'] = 'Pienākšanas datums';
 $labels['asc'] = 'augoša';
@@ -164,7 +160,6 @@ $labels['searchmod'] = 'Meklēt laukos:';
 $labels['msgtext'] = 'Vēstules tekstā';
 $labels['openinextwin'] = 'atvērt jaunā logā';
 $labels['emlsave'] = 'lejupielādēt (.eml)';
-$labels['compose'] = 'Rakstīt vēstuli';
 $labels['editasnew'] = 'rediģēt kā jaunu';
 $labels['savemessage'] = 'Saglabāt uzmetumu';
 $labels['sendmessage'] = 'Sūtīt vēstuli';
@@ -174,6 +169,7 @@ $labels['editortype'] = 'Redaktora tips';
 $labels['returnreceipt'] = 'Saņemšanas apstiprinājums';
 $labels['dsn'] = 'Atskaite par piegādi';
 $labels['mailreplyintro'] = '$sender @ $date rakstīja:';
+$labels['originalmessage'] = 'Sākotnējā vēstule';
 $labels['editidents'] = 'Rediģēt identitātes';
 $labels['checkspelling'] = 'Pārbaudīt pareizrakstību';
 $labels['resumeediting'] = 'Turpināt rediģēšanu';
@@ -191,6 +187,7 @@ $labels['highest'] = 'Augstākā';
 $labels['nosubject'] = '(no subject)';
 $labels['showimages'] = 'Rādīt attēlus';
 $labels['alwaysshow'] = 'Vienmēr rādīt attēlus no $sender';
+$labels['isdraft'] = 'Šis ir melnraksts.';
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = 'Vienkāršs teksts';
 $labels['savesentmessagein'] = 'Saglabāt nosūtīto vēstuli mapē';
@@ -232,14 +229,15 @@ $labels['male'] = 'vīrietis';
 $labels['female'] = 'sieviete';
 $labels['manager'] = 'Menedžeris';
 $labels['assistant'] = 'Asistents';
+$labels['typeassistant'] = 'Asistents';
 $labels['spouse'] = 'Laulātais draugs';
 $labels['allfields'] = 'Visi lauki';
 $labels['search'] = 'Meklēt';
 $labels['advsearch'] = 'Paplašinātā meklēšana';
 $labels['other'] = 'Cits';
+$labels['typeother'] = 'Cits';
 $labels['typehome'] = 'Mājas';
 $labels['typework'] = 'Darbs';
-$labels['typeother'] = 'Cits';
 $labels['typemobile'] = 'Mobilais tālrunis';
 $labels['typemain'] = 'Galvenais';
 $labels['typehomefax'] = 'Mājas Fax';
@@ -247,8 +245,9 @@ $labels['typeworkfax'] = 'Darba Fax';
 $labels['typecar'] = 'Auto';
 $labels['typepager'] = 'Peidžeris';
 $labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Asistents';
 $labels['typehomepage'] = 'Web lapa';
+$labels['typeblog'] = 'Blogs';
+$labels['typeprofile'] = 'Profils';
 $labels['addfield'] = 'Pievienot lauku...';
 $labels['addcontact'] = 'Pievienot iezīmēto ierakstu adrešu grāmatai';
 $labels['editcontact'] = 'Rediģēt adrešu grāmatas ierakstu';
@@ -270,7 +269,6 @@ $labels['print'] = 'Drukāt';
 $labels['export'] = 'Eksportēt';
 $labels['exportvcards'] = 'Eksportēt kontaktus vCard formātā';
 $labels['newcontactgroup'] = 'Izveidot jaunu kontaktu grupu';
-$labels['groupactions'] = 'Kontaktu grupu darbības...';
 $labels['grouprename'] = 'Pārdēvēt grupu';
 $labels['groupdelete'] = 'Izdzēst grupu';
 $labels['previouspage'] = 'Parādīt iepriekšējo kopu';
@@ -280,6 +278,8 @@ $labels['lastpage'] = 'Parādīt pēdējo kopu';
 $labels['group'] = 'Grupa';
 $labels['groups'] = 'Grupas';
 $labels['personaladrbook'] = 'Personīgās adreses';
+$labels['searchsave'] = 'Saglabāt meklēšanas pieprasījumu';
+$labels['searchdelete'] = 'Dzēst saglabāto meklēšanas pieprasījumu';
 $labels['import'] = 'Importēt';
 $labels['importcontacts'] = 'Importēt kontaktus';
 $labels['importfromfile'] = 'Importēt no faila:';
@@ -288,6 +288,7 @@ $labels['importreplace'] = 'Aizvietot visu adrešu grāmatu';
 $labels['importtext'] = 'Jūst varat augšupielādēt kontaktus no citas adrešu grāmatas.<br/>Pašlaik ir atbalstīts adrešu imports no <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> datu formāta.';
 $labels['done'] = 'Pabeigts';
 $labels['settingsfor'] = 'Iestatījumi';
+$labels['about'] = 'Par';
 $labels['preferences'] = 'Iestatījumi';
 $labels['userpreferences'] = 'Lietotāja preferences';
 $labels['editpreferences'] = 'Rediģēt lietotāja preferences';
@@ -299,6 +300,8 @@ $labels['edititem'] = 'Rediģēt';
 $labels['preferhtml'] = 'Dot priekšroku HTML formatētām vēstulēm';
 $labels['defaultcharset'] = 'Noklusētā rakstzīmju kopa';
 $labels['htmlmessage'] = 'HTML vēstule';
+$labels['dateformat'] = 'Datuma formāts';
+$labels['timeformat'] = 'Laika formāts';
 $labels['prettydate'] = 'Formatēt datumus';
 $labels['setdefault'] = 'Uzlikt kā noklusēto';
 $labels['autodetect'] = 'Automātiski';
@@ -346,12 +349,12 @@ $labels['force7bit'] = 'Izmantot MIME kodējumu 8-bitu simboliem';
 $labels['advancedoptions'] = 'Paplašināti iestatījumi';
 $labels['focusonnewmessage'] = 'Uztādīt pārlūka fokusu uz jaunu vēstuli';
 $labels['checkallfolders'] = 'Pārbaudīt visas mapes pēc jaunām vēstulēm';
-$labels['displaynext'] = 'Rādīt nākamo vēstuli pēc dzēšanas/pārvietošanas ';
+$labels['displaynext'] = 'Rādīt nākamo vēstuli pēc dzēšanas/pārvietošanas';
+$labels['defaultfont'] = 'Noklusētais fonts vēstulei HTML formātā';
 $labels['mainoptions'] = 'Galvenie iestatījumi';
 $labels['section'] = 'Kategorija';
 $labels['maintenance'] = 'Uzturēšana';
 $labels['newmessage'] = 'Vēstuļu pienākšana';
-$labels['listoptions'] = 'Saraksta iestatījumi';
 $labels['signatureoptions'] = 'Paraksta iestatījumi';
 $labels['whenreplying'] = 'Atbildot';
 $labels['replytopposting'] = 'sākt jaunu vēstuli virs oriģināla';
@@ -370,9 +373,14 @@ $labels['reqmdn'] = 'Vienmēr pieprasīt atskati par vēstules izlasīšanu';
 $labels['reqdsn'] = 'Vienmēr pieprasīt atskati par vēstules piegādāšanu saņēmēja serverim';
 $labels['replysamefolder'] = 'Glabāt atbildes tajā pašā mapē, kurā ir vēstule, uz kuru tika atbildēts';
 $labels['defaultaddressbook'] = 'Pievienot jaunus kontaktus atzīmētajai adrešu grāmatai';
+$labels['autocompletesingle'] = 'Automātiski aizpildot, izlaist alternatīvās e-pasta adreses';
 $labels['spellcheckbeforesend'] = 'Pārbaudīt pareizrakstību pirms vēstules nosūtīšanas';
+$labels['spellcheckoptions'] = 'Pareizrakstības iestatījumi';
+$labels['spellcheckignoresyms'] = 'Ignorēt vārdus, kuri satur simbolus';
+$labels['spellcheckignorenums'] = 'Ignorēt vārdus, kuri satur skaitļus';
+$labels['spellcheckignorecaps'] = 'Ignorēt vārdus, kuri rakstīti ar lielajiem burtiem';
+$labels['addtodict'] = 'Pievienot vārdnīcai';
 $labels['folder'] = 'Mapi';
-$labels['folders'] = 'Mapes';
 $labels['foldername'] = 'Mapes nosaukums';
 $labels['subscribed'] = 'Abonēta';
 $labels['messagecount'] = 'Vēstules';
@@ -395,6 +403,11 @@ $labels['sortby'] = 'Kārtot pēc';
 $labels['sortasc'] = 'Kārtot augošā secībā';
 $labels['sortdesc'] = 'Kārtot dilstošā secībā';
 $labels['undo'] = 'Atsaukt';
+$labels['plugin'] = 'Spraudnis';
+$labels['version'] = 'Versija';
+$labels['source'] = 'Oriģināls';
+$labels['license'] = 'Licence';
+$labels['support'] = 'Atbalsts';
 $labels['B'] = 'B';
 $labels['KB'] = 'kB';
 $labels['MB'] = 'MB';
@@ -418,4 +431,3 @@ $labels['japanese'] = 'Japāņu';
 $labels['korean'] = 'Korejiešu';
 $labels['chinese'] = 'Ķīniešu';
 
-?>
index 698baca05bd62a1156e9c9735f552f1242824f28..e42998dd99af58e0e58982e07db6e30b5cd9a705 100644 (file)
@@ -1,33 +1,27 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/lv/messages.inc                                              |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Rūdolfs Ošiņš <dev.random@gmail.com>                          |
-|         Miķelis Zaļais <mik@prog.lv>                                  |
-|         Lauris Bukšis-Haberkorns <lauris@nix.lv>                      |
-|         Kaspars Tenters <kaspars.tenters@va.lv>                       |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 5173 2011-09-05 18:41:04Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/lv_LV/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $messages = array();
 $messages['loginfailed'] = 'Neizdevās pieslēgties';
 $messages['cookiesdisabled'] = 'Jūsu pārlūkprogramma neatbalsta sīkdatnes (cookies)';
 $messages['sessionerror'] = 'Jūsu sessija ir beigusies';
-$messages['imaperror'] = 'Neizdevās pieslēgties IMAP serverim';
+$messages['storageerror'] = 'Neizdevās pieslēgties IMAP serverim';
 $messages['servererror'] = 'Servera kļūme.';
 $messages['servererrormsg'] = 'Servera kļūda: $msg';
-$messages['databaserror'] = 'Datubāzes kļūda!';
+$messages['dberror'] = 'Datubāzes kļūda!';
 $messages['errorreadonly'] = 'Neizdevās veikt darbību: Mape ir tikai lasāma (read only).';
 $messages['errornoperm'] = 'Neizdevās veikt darbību: Piekļuve liegta.';
 $messages['invalidrequest'] = 'Nederīgs pieprasījums. Dati netika saglabāti.';
@@ -51,6 +45,7 @@ $messages['blockedimages'] = 'Drošības nolūkos attēli, kas tiek ielādēti n
 $messages['encryptedmessage'] = 'Šī ir šifrēta vēstule un diemžēl nevar tikt parādīta';
 $messages['nocontactsfound'] = 'Ieraksti netika atrasti';
 $messages['contactnotfound'] = 'Prasītais kontakts nav atrasts';
+$messages['contactsearchonly'] = 'Ievadiet meklēšanas kritērijus, lai atrastu kontaktus';
 $messages['sendingfailed'] = 'Vēstule netika nosūtīta';
 $messages['senttooquickly'] = 'Lūdzu uzgaidiet $sec sekundi(-es) pirms sūtiet šo vēstuli';
 $messages['errorsavingsent'] = 'Notika kļūda saglabājot nosūtīto vēstuli';
@@ -64,6 +59,7 @@ $messages['deletegroupconfirm'] = 'Vai tiešām vēlaties dzēst atzīmēto grup
 $messages['deletemessagesconfirm'] = 'Vai tiešām vēlaties dzēst iezīmēto(ās) vēstules?';
 $messages['deletefolderconfirm'] = 'Vai tiešām vēlaties dzēst šo mapi?';
 $messages['purgefolderconfirm'] = 'Vai tiešām vēlaties dzēst visas vēstules, kas atrodas šajā mapē?';
+$messages['contactdeleting'] = 'Kontakts(-i) tiek dzēsti...';
 $messages['groupdeleting'] = 'Dzēš grupu...';
 $messages['folderdeleting'] = 'Dzēš mapi...';
 $messages['foldermoving'] = 'Pārvietoju mapi...';
@@ -79,10 +75,10 @@ $messages['nosubjectwarning'] = 'Lauks "temats" ir tukšs. Vai vēlaties to aizp
 $messages['nobodywarning'] = 'Sūtīt vēstuli bez satura teksta?';
 $messages['notsentwarning'] = 'Vēstule netika nosūtīta. Vai tiešām vēlaties atcelt vēstules rakstīsanu?';
 $messages['noldapserver'] = 'Lūdzu izvēlaties LDAP serveri';
-$messages['nocontactsreturned'] = 'Neviena kontaktpersona netika atrasta';
 $messages['nosearchname'] = 'Lūdzu ievadiet kontaktpersonas vārdu vai e-pasta adresi';
 $messages['notuploadedwarning'] = 'Visi pielikumi vēl nav augšupielādēti. Lūdzu uzgaidiet vai atceļiet augšupielādi!';
 $messages['searchsuccessful'] = 'Atrastas $nr vēstules';
+$messages['contactsearchsuccessful'] = 'Atrasti $nr kontakti.';
 $messages['searchnomatch'] = 'Meklēšanā nekas netika atrasts';
 $messages['searching'] = 'Notiek meklēšana...';
 $messages['checking'] = 'Notiek pārbaude...';
@@ -110,6 +106,7 @@ $messages['addingmember'] = 'Pievieno kontaktu(s) grupai...';
 $messages['removingmember'] = 'Atvieno kontaktu(s) no grupas...';
 $messages['receiptsent'] = 'Saņemšanas apstiprinājums nosūtīts';
 $messages['errorsendingreceipt'] = 'Neizdevās nosūtīt apstiprinājumu';
+$messages['deleteidentityconfirm'] = 'Vai tiešām vēlaties dzēst šo identitāti?';
 $messages['nodeletelastidentity'] = 'Šo identitāti nevar izdzēst, tā ir pati pēdējā.';
 $messages['forbiddencharacter'] = 'Mapes nosaukums satur aizliegtus simbolus';
 $messages['selectimportfile'] = 'Lūdzu izvēlieties failu, ko vēlaties augšupielādēt';
@@ -129,7 +126,6 @@ $messages['smtpautherror'] = 'SMTP kļūme ($code): Neizdevās autentificēties'
 $messages['smtpfromerror'] = 'SMTP kļūme ($code): Neizdevās iestatīt sūtītāju "$from" ($msg)';
 $messages['smtptoerror'] = 'SMTP kļūme ($code): Neizdevās pievienot saņēmēju "$to" ($msg)';
 $messages['smtprecipientserror'] = 'SMTP kļūme: Nav iespējams parsēt saņēmēju sarakstu';
-$messages['smtpdsnerror'] = 'SMTP kļūme: Piegādes statusa paziņojumi netiek uzturēti.';
 $messages['smtperror'] = 'SMTP kļūme: $msg';
 $messages['emailformaterror'] = 'Nepareiza e-pasta adrese: $email';
 $messages['toomanyrecipients'] = 'Pārāk daudz saņēmēju. Samaziniet skaitu līdz $max.';
@@ -142,11 +138,16 @@ $messages['contactrestored'] = 'Kontakti veiksmīgi atjaunoti.';
 $messages['groupdeleted'] = 'Grupa veiksmīgi izdzēsta.';
 $messages['grouprenamed'] = 'Grupa veiksmīgi pārdēvēta.';
 $messages['groupcreated'] = 'Grupa veiksmīgi izveidota.';
+$messages['savedsearchdeleted'] = 'Saglabātais meklēšanas pieprasījums veiksmīgi dzēsts.';
+$messages['savedsearchdeleteerror'] = 'Neizdevās nodzēst saglabāto meklēšanas pieprasījumu.';
+$messages['savedsearchcreated'] = 'Saglabātais meklēšanas pieprasījums veiksmīgi saglabāts.';
+$messages['savedsearchcreateerror'] = 'Neizdevās saglabāt meklēšanas pieprasījumu.';
 $messages['messagedeleted'] = 'Vēstule(s) veiksmīgi izdzēsta(s).';
 $messages['messagemoved'] = 'Vēstule(s) veiksmīgi pārvietota(s).';
 $messages['messagecopied'] = 'Vēstule(s) veiksmīgi pārkopēta(s).';
 $messages['messagemarked'] = 'Vēstule(s) veiksmīgi iezīmēta(s).';
 $messages['autocompletechars'] = 'Ievadiet vismaz $min burtus, lai meklētu automātiski.';
+$messages['autocompletemore'] = 'Atrasti vairāki ieraksti. Papildiniet meklēšanas kritēriju.';
 $messages['namecannotbeempty'] = 'Lūdzu ievadiet vārdu.';
 $messages['nametoolong'] = 'Vārds ir par garu.';
 $messages['folderupdated'] = 'Mape vieksmīgi atjaunota.';
@@ -154,5 +155,5 @@ $messages['foldercreated'] = 'Mape veiksmīgi izveidota.';
 $messages['invalidimageformat'] = 'Nederīgs attēla formāts.';
 $messages['mispellingsfound'] = 'Vēstulē atrastas pareizrakstības kļūdas.';
 $messages['parentnotwritable'] = 'Neizdevās izveidot/pārvietot mapi uz atzīmēto virsmapi. Nav piekļuves tiesību.';
+$messages['messagetoobig'] = 'Vēstule ir pārāk liela, lai to varētu apstrādāt.';
 
-?>
index 417724ba1a4eb710c97a757c5b97d788e6cf15c4..75747b32faa85b0b9328dd57d102eabbb30ed5f5 100755 (executable)
@@ -1,19 +1,17 @@
 <?php
 
 /*
-+-----------------------------------------------------------------------+
-| language/mk_MK/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author:  Ivan Mishev - mishevivan@gmail.com                           |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 4410 2011-01-12 18:25:02Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/mk_MK/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $labels = array();
@@ -41,17 +39,15 @@ $labels['date'] = 'Датум';
 $labels['size'] = 'Големина';
 $labels['priority'] = 'Приоритет';
 $labels['organization'] = 'Организација';
-$labels['reply-to'] = 'Препрати на';
 $labels['mailboxlist'] = 'Папки';
+$labels['folders'] = 'Папки';
 $labels['messagesfromto'] = 'Писма од $from до $to од $count';
 $labels['messagenrof'] = 'Писмо $nr од $count';
+$labels['copy'] = 'Копирај';
 $labels['moveto'] = 'Премести во...';
 $labels['download'] = 'Преземи';
 $labels['filename'] = 'Име на податотеката';
 $labels['filesize'] = 'Големина на податотеката';
-$labels['preferhtml'] = 'Прикажи во HTML';
-$labels['htmlmessage'] = 'HTML писмо';
-$labels['prettydate'] = 'Убави датуми';
 $labels['addtoaddressbook'] = 'Додај во именик';
 $labels['sun'] = 'Нед';
 $labels['mon'] = 'Пон';
@@ -72,6 +68,7 @@ $labels['feb'] = 'Фев';
 $labels['mar'] = 'Мар';
 $labels['apr'] = 'Апр';
 $labels['may'] = 'Мај';
+$labels['longmay'] = 'Мај';
 $labels['jun'] = 'Јун';
 $labels['jul'] = 'Јул';
 $labels['aug'] = 'Авг';
@@ -83,7 +80,6 @@ $labels['longjan'] = 'Јануари';
 $labels['longfeb'] = 'Февруари';
 $labels['longmar'] = 'Март';
 $labels['longapr'] = 'Април';
-$labels['longmay'] = 'Мај';
 $labels['longjun'] = 'Јуни';
 $labels['longjul'] = 'Јули';
 $labels['longaug'] = 'Август';
@@ -93,6 +89,7 @@ $labels['longnov'] = 'Ноември';
 $labels['longdec'] = 'Декември';
 $labels['today'] = 'Денес';
 $labels['checkmail'] = 'Провери пошта';
+$labels['compose'] = 'Пиши ново писмо';
 $labels['writenewmessage'] = 'Ново писмо';
 $labels['replytomessage'] = 'Одговори на испраќачот';
 $labels['replytoallmessage'] = 'Одговори на испраќачот и сите примачи';
@@ -101,13 +98,9 @@ $labels['deletemessage'] = 'Избриши писмо';
 $labels['movemessagetotrash'] = 'Премести ги писмата во Корпа';
 $labels['printmessage'] = 'Испечати писмо';
 $labels['previousmessage'] = 'Прикажи го претходното писмо';
-$labels['previousmessages'] = 'Прикажи ги претходните писма';
 $labels['firstmessage'] = 'Прикажи го првото писмо';
-$labels['firstmessages'] = 'Прикажи ги првите писма';
 $labels['nextmessage'] = 'Прикажи го следното писмо';
-$labels['nextmessages'] = 'Прикажи ги следните писма';
 $labels['lastmessage'] = 'Прикажи го последното писмо';
-$labels['lastmessages'] = 'Прикажи ги последните писма';
 $labels['backtolist'] = 'Назад кон листа на писма';
 $labels['viewsource'] = 'Покажи го изворот на писмото';
 $labels['markmessages'] = 'Обележи ги писмата';
@@ -115,10 +108,10 @@ $labels['markread'] = 'Како прочитани';
 $labels['markunread'] = 'Како непрочитани';
 $labels['markflagged'] = 'Како обележано';
 $labels['markunflagged'] = 'Како необележано';
-$labels['messageactions'] = 'Повеќе дејства...';
 $labels['select'] = 'Одбери';
 $labels['all'] = 'Сите';
 $labels['none'] = 'Ниедно';
+$labels['nonesort'] = 'Ниедно';
 $labels['unread'] = 'Непрочитани';
 $labels['flagged'] = 'Обележано';
 $labels['unanswered'] = 'Неодговорено';
@@ -127,7 +120,6 @@ $labels['invert'] = 'Обратно';
 $labels['filter'] = 'Филтер';
 $labels['compact'] = 'Компактно';
 $labels['empty'] = 'Испразни';
-$labels['purge'] = 'Исчисти';
 $labels['quota'] = 'Искористен простор';
 $labels['unknown'] = 'непознато';
 $labels['unlimited'] = 'неограничено';
@@ -137,14 +129,13 @@ $labels['searchmod'] = 'Модификатори на пребарувањето
 $labels['msgtext'] = 'Цело писмо';
 $labels['openinextwin'] = 'Отвори во нов прозорец';
 $labels['emlsave'] = 'Преземи (.eml)';
-$labels['compose'] = 'Пиши ново писмо';
 $labels['editasnew'] = 'Уреди како ново';
 $labels['savemessage'] = 'Зачувај го писмото во Непратени';
 $labels['sendmessage'] = 'Испрати сега';
 $labels['addattachment'] = 'Приложи податотека';
 $labels['charset'] = 'Збир од знаци';
 $labels['editortype'] = 'Тип на уредник';
-$labels['returnreceipt'] = 'Врати ';
+$labels['returnreceipt'] = 'Врати';
 $labels['checkspelling'] = 'Провери правопис';
 $labels['resumeediting'] = 'Продолжи со уредување';
 $labels['revertto'] = 'Врати на';
@@ -201,14 +192,17 @@ $labels['importreplace'] = 'Замени го целиот именик';
 $labels['importtext'] = 'Можете да приложите контакти од веќе постоечки именик.<br/>Во моментот поддржуваме увоз на адреси од <a href="http://mk.wikipedia.org/wiki/VCard">vCard</a> форматот.';
 $labels['done'] = 'Завршено';
 $labels['settingsfor'] = 'Нагодувања за';
-$labels['preferences'] = 'Нагодувања ';
-$labels['userpreferences'] = 'Кориснички нагодувања ';
-$labels['editpreferences'] = 'Промени кориснички нагодувања ';
+$labels['preferences'] = 'Нагодувања';
+$labels['userpreferences'] = 'Кориснички нагодувања';
+$labels['editpreferences'] = 'Промени кориснички нагодувања';
 $labels['identities'] = 'Идентитети';
 $labels['manageidentities'] = 'Организирај ги идентитетите за овој корисник';
 $labels['newidentity'] = 'Нов идентитет';
 $labels['newitem'] = 'Нов објект';
 $labels['edititem'] = 'Промени објект';
+$labels['preferhtml'] = 'Прикажи во HTML';
+$labels['htmlmessage'] = 'HTML писмо';
+$labels['prettydate'] = 'Убави датуми';
 $labels['setdefault'] = 'Постави за основно';
 $labels['autodetect'] = 'Автоматски';
 $labels['language'] = 'Јазик';
@@ -254,7 +248,6 @@ $labels['mainoptions'] = 'Главни можности';
 $labels['section'] = 'Заглавие';
 $labels['maintenance'] = 'Одржување';
 $labels['newmessage'] = 'Ново писмо';
-$labels['listoptions'] = 'Можности за листата';
 $labels['signatureoptions'] = 'Можности за потписот';
 $labels['whenreplying'] = 'При одговарање';
 $labels['replytopposting'] = 'новото писмо започни го над оригиналот';
@@ -268,7 +261,6 @@ $labels['belowquote'] = 'под цитираното';
 $labels['abovequote'] = 'над цитираното';
 $labels['insertsignature'] = 'Вметни потпис';
 $labels['folder'] = 'Папка';
-$labels['folders'] = 'Папки';
 $labels['foldername'] = 'Име на папката';
 $labels['subscribed'] = 'Претплатен';
 $labels['messagecount'] = 'Пораки';
@@ -284,4 +276,3 @@ $labels['KB'] = 'КБ';
 $labels['MB'] = 'МБ';
 $labels['GB'] = 'ГБ';
 
-?>
index 01c02f24b6c1077da4f79aa6dd687f1ccb04f224..65f83e366505679c9f904c47579f3f4ab5f48a59 100755 (executable)
@@ -1,26 +1,24 @@
 <?php
 
 /*
-+-----------------------------------------------------------------------+
-| language/mk_MK/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author:  Ivan Mishev - mishevivan@gmail.com                           |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 4410 2011-01-12 18:25:02Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/mk_MK/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $messages = array();
 $messages['loginfailed'] = 'Најавата не успеа';
 $messages['cookiesdisabled'] = 'Вашиот прелистувач не прифаќа колачиња';
 $messages['sessionerror'] = 'Сесијата е неважечка или е истечена';
-$messages['imaperror'] = 'Поврзувањето со IMAP не успеа';
+$messages['storageerror'] = 'Поврзувањето со IMAP не успеа';
 $messages['servererror'] = 'Грешка во серверот!';
 $messages['invalidrequest'] = 'Неважечко барање! Податоците не се зачувани.';
 $messages['nomessagesfound'] = 'Немате писма во ова сандаче';
@@ -44,7 +42,7 @@ $messages['contactnotfound'] = 'Бараното име не е пронајде
 $messages['sendingfailed'] = 'Не упеав да го испратам писмото';
 $messages['senttooquickly'] = 'Почекајте $sec секунда/и пред да го испратите писмото';
 $messages['errorsavingsent'] = 'Грешка при зачувувањето на пратеното писмо';
-$messages['errorsaving'] = 'Грешка при зачувувањето ';
+$messages['errorsaving'] = 'Грешка при зачувувањето';
 $messages['errormoving'] = 'Не можев да го преместам писмото';
 $messages['errordeleting'] = 'Не можев да го избришам писмото';
 $messages['errormarking'] = 'Не можев да го обележам писмото';
@@ -64,7 +62,6 @@ $messages['nosubjectwarning'] = 'Немате внесено „Наслов“.
 $messages['nobodywarning'] = 'Писмото нема текст во него. Дали сакате да го испратите?';
 $messages['notsentwarning'] = 'Писмото не е пратено. Дали сакате да го отфрлите?';
 $messages['noldapserver'] = 'Изберете LDAP сервер за пребарување';
-$messages['nocontactsreturned'] = 'Не се најдени имиња';
 $messages['nosearchname'] = 'Внесете име или е-поштенска адреса';
 $messages['notuploadedwarning'] = 'Сè уште нема подигнати прилози. Почекајте или откажете го подигањето';
 $messages['searchsuccessful'] = 'Пронајадени се $nr пораки';
@@ -104,4 +101,3 @@ $messages['smtprecipientserror'] = 'SMTP грешка: Не успеав да ј
 $messages['smtperror'] = 'SMTP Error: $msg';
 $messages['emailformaterror'] = 'Неправилна поштенска адреса: $email';
 
-?>
diff --git a/program/localization/ml_IN/labels.inc b/program/localization/ml_IN/labels.inc
new file mode 100644 (file)
index 0000000..a16885d
--- /dev/null
@@ -0,0 +1,275 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ml_ML/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: midhun <orisis47@gmail.com>                                   |
+ +-----------------------------------------------------------------------+
+*/
+
+$labels = array();
+$labels['welcome'] = '$product ലേയ്ക്ക് സ്വാഗതം';
+$labels['username'] = 'ഉപയോക്തൃനാമം';
+$labels['password'] = 'രഹസ്യവാക്ക്';
+$labels['server'] = 'സേവകന്‍';
+$labels['login'] = 'പ്രവേശിക്കുക';
+$labels['logout'] = 'പുറത്ത് കടക്കുക';
+$labels['mail'] = 'തപാല്‍';
+$labels['settings'] = 'ക്രമീകരണങ്ങള്‍';
+$labels['addressbook'] = 'വിലാസ പുസ്തകം';
+$labels['inbox'] = 'ഇന്‍ബോക്സ്';
+$labels['drafts'] = 'പൂര്‍ത്തിയാകാത്തവ';
+$labels['sent'] = 'അയച്ചവ';
+$labels['trash'] = 'ചവറ്റുകുട്ട';
+$labels['junk'] = 'ആവശ്യമില്ലാത്തവ';
+$labels['subject'] = 'വിഷയം';
+$labels['from'] = 'പ്രേഷിതന്‍';
+$labels['to'] = 'സ്വീകര്‍ത്താവ്';
+$labels['date'] = 'തീയതി';
+$labels['size'] = 'വലിപ്പം';
+$labels['priority'] = 'മുന്‍ഗണന';
+$labels['readstatus'] = 'അവസ്ഥ വായിക്കുക';
+$labels['mailboxlist'] = 'ഫോള്‍ഡറുകള്‍';
+$labels['folders'] = 'ഫോള്‍ഡറുകള്‍';
+$labels['copy'] = 'പകര്‍ത്തുക';
+$labels['move'] = 'നീക്കുക';
+$labels['download'] = 'ഡൗണ്‍ലോഡ്';
+$labels['filename'] = 'ഫയല്‍ നാമം';
+$labels['filesize'] = 'ഫയലിന്റെ വലിപ്പം';
+$labels['addtoaddressbook'] = 'മേല്‍വിലാസങ്ങളില്‍ ചേര്‍ക്കുക.';
+$labels['sun'] = 'ഞാ';
+$labels['mon'] = 'തി';
+$labels['tue'] = 'ചൊ';
+$labels['wed'] = 'ബു';
+$labels['thu'] = 'വ്യാ';
+$labels['fri'] = 'വെ';
+$labels['sat'] = 'ശ';
+$labels['sunday'] = 'ഞായര്‍';
+$labels['monday'] = 'തിങ്കള്‍';
+$labels['tuesday'] = 'ചൊവ്വ';
+$labels['wednesday'] = 'ബുധന്‍';
+$labels['thursday'] = 'വ്യാഴം';
+$labels['friday'] = 'വെള്ളി';
+$labels['saturday'] = 'ശനി';
+$labels['jan'] = 'ജനു';
+$labels['feb'] = 'ഫെബ്';
+$labels['mar'] = 'മാര്‍';
+$labels['apr'] = 'ഏപ്ര';
+$labels['may'] = 'മെ';
+$labels['longmay'] = 'മെ';
+$labels['jun'] = 'ജൂണ്‍';
+$labels['jul'] = 'ജൂലൈ';
+$labels['aug'] = 'ആഗസ്റ്റ്';
+$labels['sep'] = 'സെപ്റ്റംബര്‍';
+$labels['oct'] = 'ഒക്ടോബര്‍';
+$labels['nov'] = 'നവംബര്‍';
+$labels['dec'] = 'ഡിസംബര്‍';
+$labels['longjan'] = 'ജനുവരി';
+$labels['longfeb'] = 'ഫെബ്രുവരി';
+$labels['longmar'] = 'മാര്‍ച്ച്';
+$labels['longapr'] = 'ഏപ്രില്‍';
+$labels['longjun'] = 'ജൂണ്‍';
+$labels['longjul'] = 'ജൂലൈ';
+$labels['longaug'] = 'ആഗസ്റ്റ്';
+$labels['longsep'] = 'സെപ്തംബ‌ര്‍';
+$labels['longoct'] = 'ഒക്ടോബര്‍';
+$labels['longnov'] = 'നവംബ‌ര്‍';
+$labels['longdec'] = 'ഡിസംബ‌ര്‍';
+$labels['today'] = 'ഇന്ന്';
+$labels['refresh'] = 'പുതുക്കുക';
+$labels['checkmail'] = 'പുതിയ സന്ദേശത്തിനായി തിരയുക';
+$labels['compose'] = 'രചന';
+$labels['reply'] = 'മറുപടി';
+$labels['forward'] = 'കൈമാറുക';
+$labels['forwardmessage'] = 'സന്ദേശം കൈമാറുക';
+$labels['deletemessage'] = 'സന്ദേശം മായ്ക്കുക';
+$labels['movemessagetotrash'] = 'സന്ദേശം ചവറ്റുകുട്ടയിലേക്ക് നീക്കുക';
+$labels['printmessage'] = 'ഈ സന്ദേശം അച്ചടിക്കുക';
+$labels['previousmessage'] = 'മുന്‍പുളള സന്ദേശം കാണിക്കുക.';
+$labels['firstmessage'] = 'ആദ്യത്തെ സന്ദേശം കാണിക്കുക.';
+$labels['nextmessage'] = 'അടുത്ത സന്ദേശം കാണിക്കുക.';
+$labels['lastmessage'] = 'അവസാനത്തെ സന്ദേശം കാണിക്കുക.';
+$labels['viewsource'] = 'ഉറവിടം കാണിക്കുക.';
+$labels['mark'] = 'അടയാളപ്പെടുത്തു';
+$labels['markmessages'] = 'സന്തേശങ്ങള്‍ അടയാളപ്പെടുത്തു';
+$labels['markread'] = 'വായിച്ചതായി';
+$labels['markunread'] = 'വായിക്കാത്തതായി';
+$labels['moreactions'] = 'കൂടുതല്‍ ചെയ്തികള്‍...';
+$labels['more'] = 'കൂടുതല്‍';
+$labels['back'] = 'പിന്നോട്ട്';
+$labels['options'] = 'ഐച്ഛികങ്ങള്‍‌';
+$labels['select'] = 'തെരഞ്ഞെടുക്കുക';
+$labels['all'] = 'എല്ലാം';
+$labels['none'] = 'ഒന്നുമില്ല';
+$labels['nonesort'] = 'ഒന്നുമില്ല';
+$labels['currpage'] = 'നിലവിലുളള പേജ്';
+$labels['unread'] = 'വായിക്കാത്തത്';
+$labels['flagged'] = 'അടയാളപ്പെടുത്തിയവ';
+$labels['unanswered'] = 'മറുപടി കൊടുക്കാത്ത';
+$labels['deleted'] = 'മായ്ച്ചവ';
+$labels['invert'] = 'തലതിരിക്കുക';
+$labels['filter'] = 'അരിപ്പ';
+$labels['list'] = 'പട്ടിക';
+$labels['expand-all'] = 'എല്ലാം വികസിപ്പിക്കുക';
+$labels['expand-unread'] = 'വായിക്കാത്തവ വികസിപ്പിക്കുക';
+$labels['collapse-all'] = 'എല്ലാം അടയ്ക്കുക';
+$labels['fromto'] = 'എവിടുന്ന് /എങ്ങൊട്ടു';
+$labels['sentdate'] = 'അയച്ച തീയതി';
+$labels['arrival'] = 'വന്ന തീയതി';
+$labels['asc'] = 'ആരോഹണം';
+$labels['desc'] = 'അവരോഹണം';
+$labels['listorder'] = 'തരംതിരിക്കണ്ട രീതി';
+$labels['compact'] = 'ചുരുക്കു';
+$labels['empty'] = 'ശൂന്യം';
+$labels['quota'] = 'ഡിസ്ക്ക് ഉപയോഗം';
+$labels['unknown'] = 'അറിയാത്ത';
+$labels['unlimited'] = 'പരിമിതികളില്ലാത്ത';
+$labels['quicksearch'] = 'പെട്ടെന്ന് തെരയു';
+$labels['msgtext'] = 'മുഴുവന്‍ സന്ദേശവും';
+$labels['openinextwin'] = 'പുതിയ വിന്‍ഡോയില്‍ തുറക്കുക';
+$labels['editasnew'] = 'പുതിയതായി തിരുത്തുക';
+$labels['savemessage'] = 'പൂര്‍ത്തിയാകാത്തവ ആയി സൂക്ഷിക്കുക';
+$labels['sendmessage'] = 'സന്ദേശം അയയ്ക്കുക';
+$labels['addattachment'] = 'ഒരു ഫയല്‍ മെയിലിനൊപ്പം ചേര്‍ക്കുക';
+$labels['editortype'] = 'തിരുത്തല്‍ രീതി';
+$labels['originalmessage'] = 'യഥാര്‍ഥ സന്ദേശം';
+$labels['checkspelling'] = 'അക്ഷരത്തെറ്റു് പരിശോധിക്കുക';
+$labels['resumeediting'] = 'തിരുത്തല്‍ തുടരുക';
+$labels['attach'] = 'സംയോജിപ്പിക്കു';
+$labels['attachments'] = 'അറ്റാച്ച്മെന്റുകള്‍';
+$labels['upload'] = 'അപ്‌ലോഡ് ചെയ്യുക';
+$labels['close'] = 'അടയ്ക്കുക';
+$labels['messageoptions'] = 'സന്ദേശ ​ഐച്ഛികങ്ങള്‍...';
+$labels['low'] = 'കുറഞ്ഞ';
+$labels['lowest'] = 'ഏറ്റവും കുറഞ്ഞ';
+$labels['normal'] = 'സാധാരണ';
+$labels['high'] = 'കൂടിയ';
+$labels['highest'] = 'ഏറ്റവും കൂടിയത്';
+$labels['nosubject'] = '(വിഷയം ഇല്ല)';
+$labels['showimages'] = 'ചിത്രങ്ങള്‍ കാണിക്കുക';
+$labels['isdraft'] = 'ഇതൊരു കരടുരൂപമാണ്.';
+$labels['htmltoggle'] = 'HTML';
+$labels['dontsave'] = 'സുക്ഷിക്കരുത്';
+$labels['maxuploadsize'] = '$size ആണ് പരമാവധി  ഫയല്‍ വലിപ്പം';
+$labels['firstname'] = 'ആദ്യ നാമം';
+$labels['surname'] = 'അവസാന നാമം';
+$labels['nickname'] = 'ചെല്ലപേര്';
+$labels['jobtitle'] = 'ജോലിയുടെ പേര്';
+$labels['department'] = 'വകുപ്പ്';
+$labels['gender'] = 'ലിംഗം';
+$labels['maidenname'] = 'കന്യകാനാമം';
+$labels['email'] = 'ഇമെയില്‍';
+$labels['phone'] = 'ഫോണ്‍';
+$labels['address'] = 'മേല്‍വിലാസം';
+$labels['street'] = 'തെരുവ്';
+$labels['locality'] = 'നഗരം';
+$labels['zipcode'] = 'പിന്‍ കോഡ്';
+$labels['region'] = 'സംസ്ഥാനം / പ്രദേശം';
+$labels['country'] = 'രാജ്യം';
+$labels['birthday'] = 'പിറന്നാള്‍';
+$labels['anniversary'] = 'വാര്‍ഷികം';
+$labels['website'] = 'വെബ്സൈറ്റ്';
+$labels['notes'] = 'കുറിപ്പുകള്‍';
+$labels['male'] = 'പുരുഷന്‍';
+$labels['female'] = 'സ്‌ത്രീ';
+$labels['manager'] = 'പരിപാലകന്‍';
+$labels['assistant'] = 'സഹായി';
+$labels['typeassistant'] = 'സഹായി';
+$labels['spouse'] = 'ഭാര്യ/ഭര്‍ത്താവ്';
+$labels['search'] = 'തെരയുക';
+$labels['advsearch'] = 'വിപുലമായ തിരച്ചില്‍';
+$labels['advanced'] = 'സങ്കീര്‍ണ്ണം';
+$labels['other'] = 'മറ്റുള്ളത്';
+$labels['typeother'] = 'മറ്റുള്ളത്';
+$labels['typehome'] = 'ആസ്ഥാനം';
+$labels['typework'] = 'ജോലി';
+$labels['typemobile'] = 'മോബൈല്‍';
+$labels['typemain'] = 'പ്രധാനപ്പെട്ട';
+$labels['typehomefax'] = 'വീട്ടിലെ ഫാക്സ്';
+$labels['typeworkfax'] = 'കാര്യാലയത്തിലെ ഫാക്സ്';
+$labels['typecar'] = 'കാര്‍';
+$labels['typepager'] = 'പേജര്‍';
+$labels['typevideo'] = 'ചലച്ചിത്രം';
+$labels['typehomepage'] = 'ഹോം പേജ്';
+$labels['typeblog'] = 'ബ്ലോഗ്';
+$labels['typeprofile'] = 'പ്രൊഫൈല്‍';
+$labels['personalinfo'] = 'സ്വകാര്യ വിവരങ്ങള്‍';
+$labels['edit'] = 'തിരുത്തുക';
+$labels['cancel'] = 'റദ്ദാക്കുക';
+$labels['save'] = 'സൂക്ഷിക്കുക';
+$labels['delete'] = 'നീക്കം ചെയ്യുക';
+$labels['rename'] = 'പേരുമാറ്റുക';
+$labels['addphoto'] = 'ചേര്‍ക്കുക';
+$labels['replacephoto'] = 'പകരം വയ്ക്കുക';
+$labels['print'] = 'അച്ചടി';
+$labels['export'] = 'പുറത്തെടുക്കുക';
+$labels['grouprename'] = 'കുട്ടത്തിന്റെ പേര് മാറ്റുക';
+$labels['groupdelete'] = 'കൂട്ടം മായ്ക്കുക';
+$labels['previouspage'] = 'മുമ്പുളള താള്‍ കാണിയ്ക്കുക';
+$labels['group'] = 'കൂട്ടം';
+$labels['groups'] = 'കൂട്ടങ്ങള്‍';
+$labels['personaladrbook'] = 'സ്വകാര്യ വിലാസങ്ങള്‍';
+$labels['searchsave'] = 'തിരയല്‍ സൂക്ഷിക്കുക';
+$labels['searchdelete'] = 'തിരയല്‍ നീക്കംചെയ്യുക';
+$labels['import'] = 'പ്രോഗ്രമ്മിലേക്ക് എടുക്കുക';
+$labels['done'] = 'പൂര്‍ത്തീകരിച്ചു';
+$labels['about'] = 'വിവരം';
+$labels['userpreferences'] = 'ഉപയൊക്ത മുന്‍ഗണനകള്‍';
+$labels['preferhtml'] = 'HTML കാണിക്കുക';
+$labels['language'] = 'ഭാഷ';
+$labels['timezone'] = 'സമയ മേഖല';
+$labels['pagesize'] = 'ഒരു താളിലെ വരികള്‍';
+$labels['signature'] = 'ഒപ്പ്';
+$labels['htmleditor'] = 'HTML സന്ദേശങ്ങള്‍ രചിക്കുക';
+$labels['serversettings'] = 'സേവകന്റെ ക്രമീകരണങ്ങള്‍';
+$labels['askuser'] = 'എന്നൊടു ചോദിക്കുക';
+$labels['ignore'] = 'അവഗണിക്കുക';
+$labels['always'] = 'എപ്പോഴും';
+$labels['never'] = 'ഒരിക്കലുമില്ല';
+$labels['immediately'] = 'ഉടനടി';
+$labels['2231folding'] = 'Full RFC 2231 (തണ്ടര്‍ബേട് )';
+$labels['miscfolding'] = 'Full RFC 2231 ( മൈക്രൊസൊഫ്റ്റ് ഔട്ട്ലൂക്കു് )';
+$labels['2047folding'] = 'Full RFC 2047 (മറ്റുള്ളവ)';
+$labels['force7bit'] = '8-bit അക്ഷരങ്ങള്‍ക്കു "MIME encoding" ഉപയോഗിക്കുക';
+$labels['advancedoptions'] = 'വിപുലീക്രിതമായ ക്രമീകരണങ്ങള്‍';
+$labels['defaultfont'] = 'HTML സന്ദേശത്തിന്റെ തനതായ ലിപി';
+$labels['section'] = 'വിഭാഗം';
+$labels['newmessage'] = 'പുതിയ സന്ദേശം';
+$labels['newmessageonly'] = 'പുതിയ സന്ദേശം മാത്രം';
+$labels['belowquote'] = 'ഉദ്ധാരണത്തിനു താഴെ';
+$labels['afternseconds'] = '$n നിമിഷങ്ങള്‍ കഴിഞ്ഞു്';
+$labels['spellcheckignorenums'] = 'അക്കങ്ങള്‍ ഉള്ള വാക്കുകളെ അവഗണിക്കുക';
+$labels['addtodict'] = 'നിഘണ്ടുവില്‍ ചേര്‍ക്കുക';
+$labels['properties'] = 'സവിശേഷതകള്‍';
+$labels['info'] = 'വിവരം';
+$labels['getfoldersize'] = 'അറയുടെ വലുപ്പം അരിയാന്‍ ക്ലിക്ക് ചെയ്യുക';
+$labels['personalfolder'] = 'സ്വകാര്യ അറ';
+$labels['sharedfolder'] = 'പൊതു - അറ';
+$labels['support'] = 'സഹായം തേടുക';
+$labels['KB'] = 'KB';
+$labels['MB'] = 'MB';
+$labels['GB'] = 'GB';
+$labels['unicode'] = 'യൂണിക്കോഡ്';
+$labels['english'] = 'ഇംഗ്ലീഷ്';
+$labels['westerneuropean'] = 'പടിഞ്ഞാറന്‍ യൂറോപ്യന്‍';
+$labels['easterneuropean'] = 'കിഴക്കന്‍ യൂറോപ്യന്‍';
+$labels['baltic'] = 'ബാള്‍ട്ടിക്ക്';
+$labels['cyrillic'] = 'സിറില്ലിക്ക്';
+$labels['arabic'] = 'അറബിക്ക്';
+$labels['greek'] = 'ഗ്രീക്ക്';
+$labels['hebrew'] = 'ഹീബ്രു';
+$labels['turkish'] = 'ടര്‍ക്കിഷ്';
+$labels['nordic'] = 'നോര്‍ഡിക്ക്';
+$labels['thai'] = 'തായ്';
+$labels['celtic'] = 'സെല്‍റ്റിക്ക്';
+$labels['vietnamese'] = 'വിയറ്റ്നാമീസ്';
+$labels['japanese'] = 'ജാപ്പനീസ്';
+$labels['korean'] = 'കൊറിയന്‍';
+$labels['chinese'] = 'ചൈനീസ്‌';
+
diff --git a/program/localization/ml_IN/messages.inc b/program/localization/ml_IN/messages.inc
new file mode 100644 (file)
index 0000000..3e4b4d5
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ml_ML/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Anish A <aneesh.nl@gmail.com>                                 |
+ +-----------------------------------------------------------------------+
+*/
+
+$messages = array();
+$messages['cookiesdisabled'] = 'തങ്കളുടെ ബ്രവു്സര്‍ കുക്കീസ് സ്വീകരിക്കുന്നതല്ല';
+$messages['servererror'] = 'സര്‍വര്‍ പിഴവ് !';
+$messages['errornoperm'] = 'പ്രവര്‍ത്തനം തടസപ്പെട്ടു . അനുമതി നിഷേധിക്കപെട്ടിരിക്കുന്നു';
+$messages['invalidrequest'] = 'അസാധുവായ അപേക്ഷ ! ഒരു രേഖയും സൂക്ഷിച്ചിട്ടില്ല';
+$messages['loading'] = 'തുറക്കുന്നു...';
+$messages['checkingmail'] = 'പുതിയ സന്ദേസങ്ങള്‍കുവേണ്ടി തിരയുന്നു...';
+$messages['sendingmessage'] = 'സന്ദേശം അയക്കുന്നു...';
+$messages['sendingfailed'] = 'സന്ദേശം അയക്കാന്‍ സാധിച്ചില്ല.';
+$messages['senttooquickly'] = 'സന്ദേശം അയക്കുന്നതിനു മുന്പു ദയവായ്  $sec കാത്തിരിക്കൂ';
+
index acf4a6a7f3102bf78100738398be4e66013cb591..2dbf0f311355194ff8aa3145a198ffe05ce885bd 100755 (executable)
 <?php
 
-
 /*
-+-----------------------------------------------------------------------+
-|
- language/mr_IN/labels.inc                                             |
-|
-                                                                       |
-|
- Language file of the Roundcube Webmail client                         |
-|
- Copyright (C) 2009, The Roundcube Dev Team                            |
-|
- Licensed under the GNU GPL                                            |
-|
-                                                                       |
-+-----------------------------------------------------------------------+
-| 
-Author:Nitin Nimkar <nvncom at yahoo.com>                             |
-+-----------------------------------------------------------------------+
-
+ +-----------------------------------------------------------------------+
+ | localization/mr_IN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Devendra Buddhikot <devendradb@rediffmail.com>                |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
-
 $labels = array();
 $labels['welcome'] = '$product वरती स्वागत आहे';
-$labels['username'] = 'वापरकर्त्याचे नाव(तुमचे इमेल) ';
-
+$labels['username'] = 'वापरकर्त्याचे नाव(तुमचे इमेल)';
 $labels['password'] = 'परवलीचा शब्द';
 $labels['server'] = 'सर्व्हर';
 $labels['login'] = 'प्रवेश';
 $labels['logout'] = 'बाहेर जा';
 $labels['mail'] = 'इ-मेल';
-
 $labels['settings'] = 'तुमची पसंती';
 $labels['addressbook'] = 'पत्ता नोंदवही';
 $labels['inbox'] = 'आलेले संदेश';
 $labels['drafts'] = 'मसुदा';
-
 $labels['sent'] = 'पाठवलेले';
 $labels['trash'] = 'कचरा पेटी';
 $labels['junk'] = 'नको असलेले कचरा संदेश';
 $labels['subject'] = 'विषय';
-
-$labels['from'] = 'पाठवणार';
+$labels['from'] = 'प्रेषक';
 $labels['to'] = 'प्रती';
 $labels['cc'] = 'प्रत';
 $labels['bcc'] = 'गुप्त प्रत';
-$labels['replyto'] = 'उत्तर द्या ';
-
+$labels['replyto'] = 'यास उत्तर द्या';
 $labels['date'] = 'दिनांक';
 $labels['size'] = 'आकार';
 $labels['priority'] = 'प्राधान्य';
 $labels['organization'] = 'संस्था';
-$labels['reply-to'] = 'उत्तर द्या ';
-
+$labels['readstatus'] = 'वाचन स्थिती';
+$labels['listoptions'] = 'विकल्प सूची';
 $labels['mailboxlist'] = 'फोल्डर्स';
+$labels['folders'] = 'फोल्डर्स';
 $labels['messagesfromto'] = 'संदेश $from कडून $to साठी $count वा';
-
 $labels['threadsfromto'] = 'धागे $from कडून $to साठी $count वा';
 $labels['messagenrof'] = 'Message $nr of $count';
-
-$labels['copy'] = 'नक्‍कल ';
+$labels['copy'] = 'नक्‍कल';
 $labels['move'] = 'हलवा';
 $labels['moveto'] = 'या फोल्डरमधे ठेवा';
 $labels['download'] = 'उतरवून घ्या';
-
 $labels['filename'] = 'फाईलचे नाव';
 $labels['filesize'] = 'फाईलचा आकार';
-$labels['addtoaddressbook'] = 'पत्ता नोंदवहीत नोंदवा ';
+$labels['addtoaddressbook'] = 'पत्ता नोंदवहीत नोंदवा';
 $labels['sun'] = 'रवी';
-
 $labels['mon'] = 'सोम';
 $labels['tue'] = 'मंगळ';
 $labels['wed'] = 'बुध';
 $labels['thu'] = 'गुरु';
 $labels['fri'] = 'शुक्र';
 $labels['sat'] = 'शनी';
-
 $labels['sunday'] = 'रविवार';
 $labels['monday'] = 'सोमवार';
 $labels['tuesday'] = 'मंगळवार';
 $labels['wednesday'] = 'बुधवार';
-
 $labels['thursday'] = 'गुरुवार';
 $labels['friday'] = 'शुक्रवार';
 $labels['saturday'] = 'शनीवार';
 $labels['jan'] = 'जाने';
 $labels['feb'] = 'फेब्';
-
 $labels['mar'] = 'मार्च';
 $labels['apr'] = 'एप्रिल';
 $labels['may'] = 'मे';
+$labels['longmay'] = 'मे';
 $labels['jun'] = 'जून';
 $labels['jul'] = 'जुलै';
 $labels['aug'] = 'ऑगस्ट';
-
 $labels['sep'] = 'सप्टें';
 $labels['oct'] = 'ऑक्टो';
 $labels['nov'] = 'नोव्हें';
 $labels['dec'] = 'डिसें';
 $labels['longjan'] = 'जानेवारी';
-
 $labels['longfeb'] = 'फेब्रूवारी';
 $labels['longmar'] = 'मार्च';
 $labels['longapr'] = 'एप्रिल';
-$labels['longmay'] = 'मे';
 $labels['longjun'] = 'जून';
-
 $labels['longjul'] = 'जुलै';
 $labels['longaug'] = 'ऑगस्ट';
 $labels['longsep'] = 'सप्टेंबर';
 $labels['longoct'] = 'ऑक्टोबर';
 $labels['longnov'] = 'नोव्हेंबर';
-
 $labels['longdec'] = 'डिसेंबर';
 $labels['today'] = 'आज';
+$labels['refresh'] = 'अद्ययावत करा';
 $labels['checkmail'] = 'नवीन संदेश आले आहेत का पहा';
-
+$labels['compose'] = 'नवीन संदेश तयार करा';
 $labels['writenewmessage'] = 'नवीन संदेश तयार करा';
+$labels['reply'] = 'उत्तर दया';
 $labels['replytomessage'] = 'पाठवणार्‍याला उत्तर द्या';
-
 $labels['replytoallmessage'] = 'पाठवणार्‍याला आणि प्रत केलेल्या सर्वांना संदेश पाठवा';
+$labels['replyall'] = 'सर्वांना उत्तर दया';
 $labels['forwardmessage'] = 'हा संदेश पुढे पाठवा';
-
 $labels['deletemessage'] = 'संदेश काढून टाका';
 $labels['movemessagetotrash'] = 'संदेश कचरापेटीत टाका';
 $labels['printmessage'] = 'हा संदेश छापा';
-
 $labels['previousmessage'] = 'आधिचा संदेश दाखवा';
-$labels['previousmessages'] = 'आधिच्या संदेशांचा गट दाखवा';
-
 $labels['firstmessage'] = 'पहिला संदेश दाखवा';
-$labels['firstmessages'] = 'पहिला संदेशांचा संच दाखवा';
 $labels['nextmessage'] = 'नंतरचा संदेश दाखवा';
-
-$labels['nextmessages'] = 'नंतरचा संदेशांचा संच दाखवा';
 $labels['lastmessage'] = 'शेवटचा संदेश दाखवा';
-
-$labels['lastmessages'] = 'शेवटचा संदेशांचा संच दाखवा';
 $labels['backtolist'] = 'संदेशांच्या यादीकडे परत चला';
-
 $labels['viewsource'] = 'मूळ संदेशाचा प्रोग्राम कोड दाखवा';
+$labels['mark'] = 'खूण';
 $labels['markmessages'] = 'संदेशांना खूण करा';
 $labels['markread'] = 'वाचलेला म्हणून खूण करा';
-
 $labels['markunread'] = 'न वाचलेला म्हणून खूण करा';
 $labels['markflagged'] = 'खूण लावलेला म्हणून खूण करा';
-
 $labels['markunflagged'] = 'खूण काढलेला म्हणून खूण करा';
-$labels['messageactions'] = 'जास्‍त क्रिया...';
+$labels['moreactions'] = 'अधिक कृती..';
+$labels['more'] = 'अधिक';
+$labels['back'] = 'मागे';
+$labels['options'] = 'पर्याय';
 $labels['select'] = 'निवडा';
-
 $labels['all'] = 'सर्व';
 $labels['none'] = 'कोणताही नाही';
+$labels['nonesort'] = 'कोणताही नाही';
 $labels['currpage'] = 'सध्‍याचे पान';
 $labels['unread'] = 'न वाचलेले';
 $labels['flagged'] = 'खूण लावलेले';
 $labels['unanswered'] = 'उत्तर न दिलेले';
 $labels['deleted'] = 'काढून टाकलेला(ले)';
 $labels['invert'] = 'उलट करा';
-
 $labels['filter'] = 'गाळणी';
 $labels['list'] = 'यादी';
 $labels['threads'] = 'धागे';
 $labels['expand-all'] = 'सर्व विस्‍तारीत करा';
-
 $labels['expand-unread'] = 'न वाचलेला विस्‍तारा';
 $labels['collapse-all'] = 'सर्व मिटवा';
 $labels['threaded'] = 'धागा लावलेला';
-
 $labels['autoexpand_threads'] = 'संदेश धागे विस्‍तारा';
 $labels['do_expand'] = 'सर्व धागे';
-$labels['expand_only_unread'] = 'फक्‍त न वाचलेल्‍या संदेशांबददल ';
-
+$labels['expand_only_unread'] = 'फक्‍त न वाचलेल्‍या संदेशांबददल';
 $labels['fromto'] = 'पाठवणारा/प्रती';
 $labels['flag'] = 'खूण';
 $labels['attachment'] = 'जोड';
-$labels['nonesort'] = 'कोणताही नाही';
-
 $labels['sentdate'] = 'पाठवणी दिनांक';
 $labels['arrival'] = 'आगमन दिनांक';
 $labels['asc'] = 'चढत्‍या क्रमाने';
 $labels['desc'] = 'उतरत्‍या क्रमाने';
-
 $labels['listcolumns'] = 'सुची स्‍तंभ';
 $labels['listsorting'] = 'स्‍तंभ वर्गीकरण';
 $labels['listorder'] = 'वर्गीकरण क्रम';
 $labels['listmode'] = 'यादी दर्शक पध्‍दत';
-
+$labels['folderactions'] = 'फोल्डर कृती..';
 $labels['compact'] = 'छोटा';
 $labels['empty'] = 'रिकामा';
-$labels['purge'] = 'काढून टाका';
 $labels['quota'] = 'डिस्कचा वापर';
 $labels['unknown'] = 'माहित नसलेला';
-
 $labels['unlimited'] = 'अमर्याद';
 $labels['quicksearch'] = 'चटकन शोध';
-$labels['resetsearch'] = 'परत शोध ';
+$labels['resetsearch'] = 'परत शोध';
 $labels['searchmod'] = 'बदलकर्त्‍यांना शोधा';
-
 $labels['msgtext'] = 'संपूर्ण संदेश';
 $labels['openinextwin'] = 'नवीन खिडकी उघडा';
 $labels['emlsave'] = 'इएमएल स्‍वरूपात उतरवून घ्या';
-$labels['compose'] = 'नवीन संदेश तयार करा';
-
 $labels['editasnew'] = 'नवीन आहे असा संपादित करा';
 $labels['savemessage'] = 'हा मसूदा साठवून ठेवा';
 $labels['sendmessage'] = 'आत्ता पाठवा';
-
-$labels['addattachment'] = 'फाईल सोबत जोडा';$labels['charset'] = 'कॅरेक्टर सेट';
+$labels['addattachment'] = 'फाईल सोबत जोडा';
+$labels['charset'] = 'कॅरेक्टर सेट';
 $labels['editortype'] = 'संपादकाचा प्रकार';
-
 $labels['returnreceipt'] = 'पोच पावती';
+$labels['dsn'] = 'पोच स्थिती निर्देशक';
+$labels['mailreplyintro'] = '$date या दिवशी $sender ने लिहीले :';
+$labels['originalmessage'] = 'खरा संदेश';
+$labels['editidents'] = 'ओळख संपादित करा';
+$labels['spellcheck'] = 'लिखाण';
 $labels['checkspelling'] = 'शुध्द लेखन';
 $labels['resumeediting'] = 'परत संदेश संपादित करा';
-
 $labels['revertto'] = 'परत जा';
+$labels['attach'] = 'जोडा';
 $labels['attachments'] = 'जोडलेल्या';
 $labels['upload'] = 'चढवा';
 $labels['close'] = 'बंद';
+$labels['messageoptions'] = 'संदेश पर्याय..';
 $labels['low'] = 'कमी';
-
 $labels['lowest'] = 'कमित कमी';
-
 $labels['normal'] = 'नेहमी प्रमाणे';
 $labels['high'] = 'तातडीचे';
 $labels['highest'] = 'अतिशय तातडीचे';
 $labels['nosubject'] = '(विषय नाही)';
-
 $labels['showimages'] = 'चित्र दाखवा';
 $labels['alwaysshow'] = '$sender कडून आलेल्या संदेशातील चित्रे नेहमी दाखवा';
-
+$labels['isdraft'] = 'हा मसुदा संदेश आहे';
 $labels['htmltoggle'] = 'एच टी एम एल';
 $labels['plaintoggle'] = 'साधे लिखाण';
 $labels['savesentmessagein'] = 'पाठवलेला संदेश या फोल्डरमधे ठेवा';
-
 $labels['dontsave'] = 'संदेश साठवू नका';
 $labels['maxuploadsize'] = 'जास्‍तीत जास्‍त फाइलचा आकार $size असू शकतो';
 $labels['addcc'] = 'प्रत करा';
-
 $labels['addbcc'] = 'गुप्त प्रत करा';
 $labels['addreplyto'] = 'आणखी लोकांना संदेश पाठवा';
 $labels['mdnrequest'] = 'हा संदेश पाठवणार्‍याने हा संदेश तुम्ही वाचल्यावर कळवावयाला सांगितले आहे. तुम्हाला असे कळवणे चालेल ना?';
-
 $labels['receiptread'] = 'पोच पावती (संदेश वाचला)';
-$labels['yourmessage'] = 'ही तुमच्या संदेशाची पोच पावती आहे. ';
-
-$labels['receiptnote'] = 'सूचना: ही पोच पावती तुम्ही ज्यांना  संदेश पाठवला त्यांच्या संगणकावर दिसला एवढेच सांगते. तुम्ही ज्यांना हा संदेश पाठवला, त्यांनी तो वाचला, आणि त्यांना तो नक्की समजला हे मात्र सांगत नाही. ';
-
+$labels['yourmessage'] = 'ही तुमच्या संदेशाची पोच पावती आहे.';
+$labels['receiptnote'] = 'सूचना: ही पोच पावती तुम्ही ज्यांना  संदेश पाठवला त्यांच्या संगणकावर दिसला एवढेच सांगते. तुम्ही ज्यांना हा संदेश पाठवला, त्यांनी तो वाचला, आणि त्यांना तो नक्की समजला हे मात्र सांगत नाही.';
 $labels['name'] = 'टोपणनाव';
 $labels['firstname'] = 'नाव';
 $labels['surname'] = 'आडनाव';
+$labels['middlename'] = 'मधले नाव';
+$labels['nickname'] = 'टोपणनाव';
+$labels['jobtitle'] = 'कामाचे शिर्षक';
+$labels['department'] = 'विभाग';
+$labels['gender'] = 'लिंग';
 $labels['email'] = 'इ-मेल्';
-
+$labels['phone'] = 'दूरध्वनी';
+$labels['address'] = 'पत्ता';
+$labels['street'] = 'रस्ता';
+$labels['locality'] = 'शहर';
+$labels['region'] = 'राज्य / संस्थान';
+$labels['country'] = 'देश';
+$labels['birthday'] = 'वाढदिवस';
+$labels['website'] = 'संकेतस्थळ';
+$labels['notes'] = 'टिपा';
+$labels['male'] = 'पुरूष';
+$labels['female'] = 'स्त्री';
+$labels['manager'] = 'व्यवस्थापक';
+$labels['assistant'] = 'सहाय्यक';
+$labels['typeassistant'] = 'सहाय्यक';
+$labels['search'] = 'शोध';
+$labels['advsearch'] = 'प्रगत शोध';
+$labels['advanced'] = 'आधुनिक';
+$labels['other'] = 'इतर';
+$labels['typeother'] = 'इतर';
+$labels['typehome'] = 'मुख्यपृष्ठ';
+$labels['typework'] = 'काम';
+$labels['typemobile'] = 'भ्रमणध्वनी';
+$labels['typemain'] = 'मुख्य';
+$labels['typevideo'] = 'चलचित्र';
+$labels['typehomepage'] = 'मुख्य पृष्ठ';
 $labels['addcontact'] = 'नवीन पत्ता नोंदवहीत ठेवा';
 $labels['editcontact'] = 'नोंदवहीतील पत्ता सुधारा';
+$labels['contacts'] = 'संपर्क';
+$labels['personalinfo'] = 'वैयक्तिक माहिती';
 $labels['edit'] = 'संदेश तयार करा';
-
 $labels['cancel'] = 'रद्द करा';
 $labels['save'] = 'ठेवून द्या';
 $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['groupactions'] = 'पत्‍त्‍यांच्‍या गटाबददल क्रिया...';
+$labels['groupdelete'] = 'गट नष्ट करा';
 $labels['previouspage'] = 'आधिचा संच दाखवा';
 $labels['firstpage'] = 'पहिला संच दाखवा';
-
 $labels['nextpage'] = 'नंतरचा संच दाखवा';
 $labels['lastpage'] = 'शेवटचा संच दाखवा';
 $labels['group'] = 'गट';
 $labels['groups'] = 'अनेक गट';
-
 $labels['personaladrbook'] = 'वैयक्तिक पत्ते';
+$labels['searchsave'] = 'शोध जतन करा';
+$labels['searchdelete'] = 'शोध नष्ट करा';
 $labels['import'] = 'आयात करा';
 $labels['importcontacts'] = 'पत्ते आयात करा';
 $labels['importfromfile'] = 'या फाईल मधून आयात करा';
-
+$labels['importtarget'] = 'नवीन पत्ता नोंदवहीत नोंदवा';
 $labels['importreplace'] = 'संपूर्ण पत्ता नोंदवही बदला';
-$labels['importtext'] = 'तुम्ही तुमच्याकडील पत्ता नोंदवहीतील पत्ते तुम्ही येथे घेऊ शकता.<br/>सध्या आम्ही या <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> प्रकारच्या वेगवेगळ्या नोंदवहीतील पत्ते घेऊ शकतो. ';
-
+$labels['importtext'] = 'तुम्ही तुमच्याकडील पत्ता नोंदवहीतील पत्ते तुम्ही येथे घेऊ शकता.<br/>सध्या आम्ही या <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> प्रकारच्या वेगवेगळ्या नोंदवहीतील पत्ते घेऊ शकतो.';
 $labels['done'] = 'झाले';
 $labels['settingsfor'] = 'साठी सेटिंग्ज';
+$labels['about'] = 'च्या विषयी';
 $labels['preferences'] = 'तुमची पसंती';
 $labels['userpreferences'] = 'वापरकर्त्याची पसंती';
-
 $labels['editpreferences'] = 'वापरकर्त्याची पसंती सुधारा';
 $labels['identities'] = 'ओळख';
 $labels['manageidentities'] = 'या खात्यासाठी ओळखींचे नियोजन करा';
-
 $labels['newidentity'] = 'नवीन ओळख';
 $labels['newitem'] = 'नवीन प्रकार';
 $labels['edititem'] = 'प्रकार सुधारा';
 $labels['preferhtml'] = 'एच टी एम एल दाखवा';
-
 $labels['defaultcharset'] = 'नेहमीचा अक्षर संच';
 $labels['htmlmessage'] = 'एच टी एम एल संदेश';
 $labels['prettydate'] = 'विशेष दिवस';
-
 $labels['setdefault'] = 'हा नेहमीसाठी वापरा';
 $labels['autodetect'] = 'स्वयंचलित';
 $labels['language'] = 'भाषा';
-$labels['timezone'] = 'वेळ 
-क्षेत्र'; 
+$labels['timezone'] = 'वेळ  क्षेत्र';
 $labels['pagesize'] = 'प्रत्येक पानावरील ओळी';
 $labels['signature'] = 'सही';
 $labels['dstactive'] = 'दिवसाची वेळ';
@@ -343,7 +323,7 @@ $labels['never'] = 'कधीच नाही';
 $labels['immediately'] = 'ताबडतोब';
 $labels['messagesdisplaying'] = 'संदेश दाखवा';
 $labels['messagescomposition'] = 'संदेश तयार करा';
-$labels['mimeparamfolding'] = 'सोबत दिलेल्या फाईल्सची नावे ';
+$labels['mimeparamfolding'] = 'सोबत दिलेल्या फाईल्सची नावे';
 $labels['2231folding'] = 'संपूर्ण आर एफ सी 2231(थंडरबर्ड)';
 $labels['miscfolding'] = 'आर एफ सी  2047/2231 (मायक्रोसॉफ़्ट आऊटलूक)';
 $labels['2047folding'] = 'संपूर्ण आर एफ सी 2047(ईतर)';
@@ -356,7 +336,6 @@ $labels['mainoptions'] = 'मुख्‍य पर्याय';
 $labels['section'] = 'भाग';
 $labels['maintenance'] = 'देखभाल';
 $labels['newmessage'] = 'नवीन संदेश';
-$labels['listoptions'] = 'पर्याय सूची';
 $labels['signatureoptions'] = 'सही पर्याय';
 $labels['whenreplying'] = 'उत्‍तर देताना';
 $labels['replytopposting'] = 'नवीन संदेश मुळ संदेशाच्‍या वर चालू करा';
@@ -369,10 +348,11 @@ $labels['replysignaturepos'] = 'उत्‍तर देताना किं
 $labels['belowquote'] = 'उतारया खाली';
 $labels['abovequote'] = 'उतारयाच्‍या वर';
 $labels['insertsignature'] = 'सही मध्‍ये टाका';
-$labels['previewpanemarkread'] = 'प्रदर्शित संदेश पाहीले अशी खुण करा ';
+$labels['previewpanemarkread'] = 'प्रदर्शित संदेश पाहीले अशी खुण करा';
 $labels['afternseconds'] = '$n क्षणानंतर';
+$labels['reqmdn'] = 'नेहमी पोचपावतीची विनंती करा';
+$labels['reqdsn'] = 'नेहमी पोचपावती स्थिती निर्देशाची विनंती करा';
 $labels['folder'] = 'फोल्डर';
-$labels['folders'] = 'फोल्डर्स';
 $labels['foldername'] = 'फोल्डरचे नाव';
 $labels['subscribed'] = 'वर्गणिदार होणे';
 $labels['messagecount'] = 'संदेश';
@@ -406,4 +386,3 @@ $labels['japanese'] = 'जपानी';
 $labels['korean'] = 'कोरियन';
 $labels['chinese'] = 'चिनी';
 
-?>
index c1165ac0959775ab68cd8b50710562562a5f9206..5945ef1e600cbd64cad434a4d824a998cb58eccc 100755 (executable)
@@ -1,32 +1,37 @@
 <?php
 
 /*
-+-----------------------------------------------------------------------+
-| language/mr_IN/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2009, The Roundcube Dev Team                            |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author:Nitin Nimkar <nvncom at yahoo.com>                             |
-+-----------------------------------------------------------------------+
-
+ +-----------------------------------------------------------------------+
+ | localization/mr_IN/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Devendra Buddhikot <devendradb@rediffmail.com>                |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $messages = array();
+$messages['errortitle'] = 'काहीतरी चूक झाली';
 $messages['loginfailed'] = 'प्रवेश करता आला नाही';
 $messages['cookiesdisabled'] = 'तुमचा ब्राऊझर कुकीज घेऊ शकत नाही';
 $messages['sessionerror'] = 'तुम्ही प्रवेश केल्यानंतर बराच वेळ काही न करता गेला म्हणून तुमचा कालावधी संपला किंवा तुमच्या कालावधीच्या नोंदेत काही चूक झाली आहे.';
-$messages['imaperror'] = 'आयमॅप सर्व्हरशी संपर्क होवू शकला नाही.';
-$messages['servererror'] = 'सर्व्‍हरची चूक!';
+$messages['storageerror'] = 'आयमॅप सर्व्हरशी संपर्क होवू शकला नाही.';
+$messages['servererror'] = 'सर्व्‍हर चूक !';
+$messages['servererrormsg'] = 'सर्व्हर चूक : $msg';
+$messages['dberror'] = 'माहितीसाठा चूक !';
+$messages['errorreadonly'] = 'कृती करण्यास असमर्थ, फोल्डर फक्त बघण्यासाठी';
+$messages['errornoperm'] = 'कृती करण्यास असमर्थ, परवानगी अमान्य';
 $messages['invalidrequest'] = 'अवैध विनंती! माहिती साठवलेली नाही.';
 $messages['nomessagesfound'] = 'या खात्यामधे कोणताही संदेश आलेला नाही';
 $messages['loggedout'] = 'तुम्ही यशस्वीरित्या खाते बंद केले आहे . राम राम !';
 $messages['mailboxempty'] = 'खात्यात कोणताही संदेश नाही';
 $messages['loading'] = 'संदेश आणत आहे';
 $messages['uploading'] = 'फाईल चढवली जात आहे...';
-$messages['loadingdata'] = 'माहिती आणत आहे ';
+$messages['loadingdata'] = 'माहिती आणत आहे';
 $messages['checkingmail'] = 'नवीन संदेश आले आहेत का हे पहात आहे';
 $messages['sendingmessage'] = 'संदेश पाठवत आहे';
 $messages['messagesent'] = 'संदेश यशस्वीरित्या पाठवण्यात आला आहे';
@@ -34,57 +39,61 @@ $messages['savingmessage'] = 'संदेश जतन करुन ठेव
 $messages['messagesaved'] = 'संदेश मसुदा फोल्डरमधे ठेवत आहे';
 $messages['successfullysaved'] = 'यशस्वीरित्या ठेवला';
 $messages['addedsuccessfully'] = 'नवीन नाव पत्तां नोंदवहीत व्यवस्थित ठेवला';
-$messages['contactexists'] = 'हा इमेल पत्ता नोंदवहीत आधिच आहे. ';
+$messages['contactexists'] = 'हा इमेल पत्ता नोंदवहीत आधिच आहे.';
+$messages['contactnameexists'] = 'सारख्या नावाची नोंद आधीच आहे';
 $messages['blockedimages'] = 'तुमची गोपनीयता पाळण्यासाठी या संदेशातील दुसर्‍या सर्व्हरवरील चित्रे दिसणे थांबवले आहे.';
-$messages['encryptedmessage'] = 'हा गुप्त व सांकेतिक संदेश आहे. तो तुम्हाला असा दाखवता येणार नाही. ';
+$messages['encryptedmessage'] = 'हा गुप्त व सांकेतिक संदेश आहे. तो तुम्हाला असा दाखवता येणार नाही.';
 $messages['nocontactsfound'] = 'कोणताच पत्ता नोंदवहीत नाही.';
 $messages['contactnotfound'] = 'या नावाचा कोणताच पत्ता नोंदवहीत नाही.';
 $messages['sendingfailed'] = 'संदेश पाठवता आला नाही.';
-$messages['senttooquickly'] = 'कृपया हा संदेश पाठवण्यापूर्वी $sec थांबा ';
-$messages['errorsavingsent'] = 'पाठवलेला संदेश ठेवून देतांना काहीतरी चूक झाली. ';
-$messages['errorsaving'] = 'संदेश ठेवून देतांना काहीतरी चूक झाली. ';
+$messages['senttooquickly'] = 'कृपया हा संदेश पाठवण्यापूर्वी $sec थांबा';
+$messages['errorsavingsent'] = 'पाठवलेला संदेश ठेवून देतांना काहीतरी चूक झाली.';
+$messages['errorsaving'] = 'संदेश ठेवून देतांना काहीतरी चूक झाली.';
 $messages['errormoving'] = 'संदेश तेथे ठेवता आला नाही.';
 $messages['errorcopying'] = 'संदेशांची नक्‍कल करता आली नाही';
-$messages['errordeleting'] = 'संदेश काढून टाकता आला नाही. ';
+$messages['errordeleting'] = 'संदेश काढून टाकता आला नाही.';
 $messages['errormarking'] = 'संदेशांवर खूण करता आली नाही.';
 $messages['deletecontactconfirm'] = 'खूण केलेले सर्व पत्ते खरोखरच तुम्हाला काढून टाकायचे आहेत का?';
+$messages['deletegroupconfirm'] = 'निवडलेला गट तुम्हाला नक्की नष्ट करायचा आहे का?';
 $messages['deletemessagesconfirm'] = 'खूण केलेले सर्व संदेश खरोखरच तुम्हाला काढून टाकायचे आहेत का?';
 $messages['deletefolderconfirm'] = 'हा फोल्डर खरोखरच तुम्हाला काढून टाकायचा आहेत का?';
 $messages['purgefolderconfirm'] = 'या फोल्डरमधिल सर्व संदेश खरोखरच तुम्हाला काढून टाकायचे आहेत का?';
 $messages['folderdeleting'] = 'फोल्डर काढून टाकत आहे';
 $messages['foldermoving'] = 'फोल्डर हलवत आहे.';
-$messages['formincomplete'] = 'फॉर्म पूर्णपणे भरलेला  नाही. ';
-$messages['noemailwarning'] = 'योग्य, बरोबर, आणि वैध इमेल पत्ता द्या. ';
+$messages['formincomplete'] = 'फॉर्म पूर्णपणे भरलेला  नाही.';
+$messages['noemailwarning'] = 'योग्य, बरोबर, आणि वैध इमेल पत्ता द्या.';
 $messages['nonamewarning'] = 'नाव द्या';
 $messages['nopagesizewarning'] = 'पानाचा आकार द्या';
 $messages['nosenderwarning'] = 'पाठवणार्‍याचा इमेल पत्ता द्या';
-$messages['norecipientwarning'] = 'किमान एकतरी पत्ता द्या ज्यांना तुम्हाला संदेश पाठवावयाचा आहे. ';
+$messages['norecipientwarning'] = 'किमान एकतरी पत्ता द्या ज्यांना तुम्हाला संदेश पाठवावयाचा आहे.';
 $messages['nosubjectwarning'] = 'विषय दिलेला नाही. तुम्हाला विषय द्यायचा आहे का?';
 $messages['nobodywarning'] = 'संदेशामधे कोणताही मजकूर नाही. तुम्हाला तसाच संदेश पाठवावयाचा आहे का?';
 $messages['notsentwarning'] = 'संदेश पाठवला गेला नाही. तुम्हाला हा संदेश रद्द करायचा आहे का?';
 $messages['noldapserver'] = 'शोधण्यासाठी ldap सर्व्हर निवडा';
-$messages['nocontactsreturned'] = 'कोणताही पत्ता नोंदवहीत नाही. ';
-$messages['nosearchname'] = 'कृपया ज्यांना तुम्हाला संदेश पाठवावयाचा आहे त्यांचे नाव किंवा इमेल पत्ता द्या. ';
+$messages['nosearchname'] = 'कृपया ज्यांना तुम्हाला संदेश पाठवावयाचा आहे त्यांचे नाव किंवा इमेल पत्ता द्या.';
 $messages['notuploadedwarning'] = 'सर्व फाईल अजून चढवल्‍या गेलेल्‍या नाहीत. कृपया वाट पहा किंवा मागे फिरा';
 $messages['searchsuccessful'] = '$nr संदेष मिळाले.';
-$messages['searchnomatch'] = 'शोध घेतल्यानंतर एकही संदेश मिळाला नाही ';
+$messages['searchnomatch'] = 'शोध घेतल्यानंतर एकही संदेश मिळाला नाही';
 $messages['searching'] = 'शोधत आहे......';
 $messages['checking'] = 'तपासत आहे.....';
 $messages['nospellerrors'] = 'शुध्दलेखनाची चूक सापडली नाही';
-$messages['folderdeleted'] = 'फोल्डर यशस्वी रित्या काढून टाकण्यात आला आहे. ';
-$messages['deletedsuccessfully'] = 'यशस्वी रित्या काढून टाकण्यात आला आहे. ';
-$messages['converting'] = 'दृष्य स्वरुप काढून टाकण्यात येत आहे. ';
-$messages['messageopenerror'] = 'सर्व्हरवरुन संदेश आणता आला नाही. ';
-$messages['fileuploaderror'] = 'फाईल चढवता आली नाही ';
-$messages['filesizeerror'] = 'तुम्ही चढवलेली फाईल क्षमतेपेक्षा जास्त मोठी आहे. ';
+$messages['folderdeleted'] = 'फोल्डर यशस्वी रित्या काढून टाकण्यात आला आहे.';
+$messages['folderpurged'] = 'फोल्डर यशस्वीरीत्या रिकामा केला';
+$messages['folderexpunged'] = 'फोल्डर यशस्वीरीत्या संक्षिप्त केला';
+$messages['deletedsuccessfully'] = 'यशस्वी रित्या काढून टाकण्यात आला आहे.';
+$messages['converting'] = 'दृष्य स्वरुप काढून टाकण्यात येत आहे.';
+$messages['messageopenerror'] = 'सर्व्हरवरुन संदेश आणता आला नाही.';
+$messages['fileuploaderror'] = 'फाईल चढवता आली नाही';
+$messages['filesizeerror'] = 'तुम्ही चढवलेली फाईल क्षमतेपेक्षा जास्त मोठी आहे.';
 $messages['copysuccess'] = '$nr पत्त्यांची यशस्वीरित्या प्रत केली.';
 $messages['copyerror'] = 'कोणत्याही पत्त्याची प्रत बनवता आली नाही.';
 $messages['sourceisreadonly'] = 'पत्ता फक्त वाचण्यासाठी आहे.';
-$messages['errorsavingcontact'] = 'पत्ता नोंदवहीत ठेवता आला नाही. ';
+$messages['errorsavingcontact'] = 'पत्ता नोंदवहीत ठेवता आला नाही.';
 $messages['movingmessage'] = 'संदेश हलवत आहे..';
 $messages['copyingmessage'] = 'संदेशाची नक्‍कल करत आहे...';
-$messages['receiptsent'] = 'पोचपावती यशस्वीरित्या पाठवण्यात आली आहे. ';
+$messages['receiptsent'] = 'पोचपावती यशस्वीरित्या पाठवण्यात आली आहे.';
 $messages['errorsendingreceipt'] = 'पोचपावती पाठवता आली नाही.';
+$messages['deleteidentityconfirm'] = 'तुम्हाला ही ओळख नक्की नष्ट करायची आहे का?';
 $messages['nodeletelastidentity'] = 'तुम्ही हे खाते काढून टाकू शकत नाही कारण हे तुमचे शेवटचे खाते आहे.';
 $messages['forbiddencharacter'] = 'फोल्डरच्या नावात न चालणारी अक्षरे किंवा खूणा आहेत.';
 $messages['selectimportfile'] = 'चढवण्यासाठी फाईल निवडा';
@@ -94,10 +103,10 @@ $messages['contactremovedfromgroup'] = 'पत्‍ते यशस्‍वी
 $messages['importwait'] = 'आयात करत आहे, कृपया वाट पहा.....';
 $messages['importerror'] = 'आयात झाली नाही. आयात करत असलेली फाईल व्हीकार्ड प्रकाराची नाही';
 $messages['importconfirm'] = '<b>$inserted पत्ते यशस्वीरित्या आयात केल, $skipped आधिच असलेल्या नोंदी केल्या नाहीत</b>:<p><em>$names</em></p>';
-$messages['opnotpermitted'] = 'ही क्रिया करण्यास परवानगी नाही. ';
+$messages['opnotpermitted'] = 'ही क्रिया करण्यास परवानगी नाही.';
 $messages['nofromaddress'] = 'निवडलेल्या खात्यात इमेल पत्ता दिलेला नाही.';
 $messages['editorwarning'] = 'टेक्स्ट संपादन निवडल्यास संदेशाचे दृष्य स्वरुप बदलून जाईल. तुम्हाला असेच करायचे आहे ना?';
-$messages['httpreceivedencrypterror'] = 'हानीकारक चूक झाली. व्‍यवस्‍थापकाशी तात्‍काळ संपर्क साधा. <b> तुमचा संदेश पाठवला नाही </b>    ';
+$messages['httpreceivedencrypterror'] = 'हानीकारक चूक झाली. व्‍यवस्‍थापकाशी तात्‍काळ संपर्क साधा. <b> तुमचा संदेश पाठवला नाही </b>';
 $messages['smtpconnerror'] = 'SMTP चूक ($code): सर्व्‍हरशी संपर्क साधता येत नाही';
 $messages['smtpautherror'] = 'SMTP चूक ($code): ओळख पटवता येत नाही';
 $messages['smtpfromerror'] = 'SMTP चूक ($code): "$from" पाठवणार्‍याचे नाव टाकता आले नाही';
@@ -109,4 +118,3 @@ $messages['toomanyrecipients'] = 'खूप जास्‍त प्राप
 $messages['maxgroupmembersreached'] = 'गट सभासद संख्‍या $max पेक्षा जास्‍त झाली आहे';
 $messages['internalerror'] = 'अंतर्गत चूक झाली. कृपया परत प्रयत्‍न करा.';
 
-?>
index 4e7636d3b8c626f7810327feb9161b8c2979cf8b..d19239b674103c949083d145c9e89f0eb8597632 100644 (file)
@@ -1,58 +1,59 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/ms_MY/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Muhammad Zamri MS <myzamri@gmail.com>                        |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 4410 2011-01-12 18:25:02Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/ms_MY/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: nawawi <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $labels = array();
 $labels['welcome'] = 'Selamat datang ke $product';
 $labels['username'] = 'Nama Pengguna';
-$labels['password'] = 'Kata Laluan';
+$labels['password'] = 'Katalaluan';
 $labels['server'] = 'Pelayan';
 $labels['login'] = 'Log Masuk';
 $labels['logout'] = 'Log Keluar';
-$labels['mail'] = 'E-Mel';
-$labels['settings'] = 'Tetapan Peribadi';
+$labels['mail'] = 'Mel';
+$labels['settings'] = 'Tetapan';
 $labels['addressbook'] = 'Buku Alamat';
-$labels['inbox'] = 'Masuk';
+$labels['inbox'] = 'Peti Masuk';
 $labels['drafts'] = 'Draf';
-$labels['sent'] = 'Keluar';
-$labels['trash'] = 'Sampah';
-$labels['junk'] = 'Remeh';
+$labels['sent'] = 'Hantar';
+$labels['trash'] = 'Tong Sampah';
+$labels['junk'] = 'Junk';
 $labels['subject'] = 'Subjek';
-$labels['from'] = 'Penghantar';
-$labels['to'] = 'Penerima';
-$labels['cc'] = 'Salinan';
+$labels['from'] = 'Daripada';
+$labels['to'] = 'Kepada';
+$labels['cc'] = 'Cc';
 $labels['bcc'] = 'Bcc';
-$labels['replyto'] = 'Balas kepada';
+$labels['replyto'] = 'Balasan Kepada';
+$labels['followupto'] = 'Susulan Ke';
 $labels['date'] = 'Tarikh';
 $labels['size'] = 'Saiz';
-$labels['priority'] = 'Keutamaan';
+$labels['priority'] = 'Prioriti';
 $labels['organization'] = 'Organisasi';
-$labels['reply-to'] = 'Balas kepada';
-$labels['mailboxlist'] = 'Kabinet Fail';
+$labels['readstatus'] = 'Status baca';
+$labels['listoptions'] = 'Senarai pilihan';
+$labels['mailboxlist'] = 'Folder';
+$labels['folders'] = 'Folder';
 $labels['messagesfromto'] = 'Mesej $from ke $to dari $count';
+$labels['threadsfromto'] = 'Urutan $from ke $to dari $count';
 $labels['messagenrof'] = 'Mesej $nr dari $count';
-$labels['moveto'] = 'pindah ke...';
-$labels['download'] = 'muat turun';
+$labels['fromtoshort'] = '$from - $to dari $count';
+$labels['copy'] = 'Salin';
+$labels['move'] = 'Alih';
+$labels['moveto'] = 'Alih ke...';
+$labels['download'] = 'Muat Turun';
 $labels['filename'] = 'Nama Fail';
 $labels['filesize'] = 'Saiz Fail';
-$labels['preferhtml'] = 'Papar HTML';
-$labels['htmlmessage'] = 'Mesej HTML';
-$labels['prettydate'] = 'Tarikh-tarikh cantik';
 $labels['addtoaddressbook'] = 'Tambah ke buku alamat';
 $labels['sun'] = 'Aha';
 $labels['mon'] = 'Isn';
@@ -73,6 +74,7 @@ $labels['feb'] = 'Feb';
 $labels['mar'] = 'Mac';
 $labels['apr'] = 'Apr';
 $labels['may'] = 'Mei';
+$labels['longmay'] = 'Mei';
 $labels['jun'] = 'Jun';
 $labels['jul'] = 'Jul';
 $labels['aug'] = 'Ogo';
@@ -84,7 +86,6 @@ $labels['longjan'] = 'Januari';
 $labels['longfeb'] = 'Februari';
 $labels['longmar'] = 'March';
 $labels['longapr'] = 'April';
-$labels['longmay'] = 'Mei';
 $labels['longjun'] = 'Jun';
 $labels['longjul'] = 'Julai';
 $labels['longaug'] = 'Ogos';
@@ -93,52 +94,102 @@ $labels['longoct'] = 'Oktober';
 $labels['longnov'] = 'November';
 $labels['longdec'] = 'Disember';
 $labels['today'] = 'Hari Ini';
+$labels['refresh'] = 'Refresh';
 $labels['checkmail'] = 'Semak mesej baru';
+$labels['compose'] = 'Karang mesej';
 $labels['writenewmessage'] = 'Cipta mesej baru';
+$labels['reply'] = 'Balas';
 $labels['replytomessage'] = 'Balas mesej';
 $labels['replytoallmessage'] = 'Balas kepada penghantar dan semua penerima';
+$labels['replyall'] = 'Balas semua';
+$labels['replylist'] = 'Senarai balas';
+$labels['forward'] = 'Majukan';
+$labels['forwardinline'] = 'Majukan dalam mesej';
+$labels['forwardattachment'] = 'Majukan sebagai lampiran';
 $labels['forwardmessage'] = 'Marakan mesej';
 $labels['deletemessage'] = 'Pindah mesej ke sampah';
 $labels['movemessagetotrash'] = 'Pindah mesej ke Tong Sampah';
 $labels['printmessage'] = 'Cetak mesej ini';
 $labels['previousmessage'] = 'Papar mesej sebelumnya';
-$labels['previousmessages'] = 'Papar set mesej sebelumnya';
 $labels['firstmessage'] = 'Papar mesej pertama';
-$labels['firstmessages'] = 'Papar set mesej pertama';
 $labels['nextmessage'] = 'Papat mesej seterusnya';
-$labels['nextmessages'] = 'Papar set mesej seterusnya';
 $labels['lastmessage'] = 'Papat mesej terakhir';
-$labels['lastmessages'] = 'Papar set mesej terakhir';
 $labels['backtolist'] = 'Kembali ke senarai mesej';
 $labels['viewsource'] = 'Papar sumber';
+$labels['mark'] = 'Tanda';
 $labels['markmessages'] = 'Tanda mesej';
-$labels['markread'] = 'dibaca';
-$labels['markunread'] = 'belum/tidak dibaca';
+$labels['markread'] = 'Sebagai Dibaca';
+$labels['markunread'] = 'Sebagai Tidak dibaca';
+$labels['markflagged'] = 'Seperti  ditanda';
+$labels['markunflagged'] = 'Seperti tidak ditanda';
+$labels['moreactions'] = 'Tindakan lanjut..';
+$labels['more'] = 'Seterusnya';
+$labels['back'] = 'Kembali';
+$labels['options'] = 'Opsyen';
 $labels['select'] = 'Pilih';
 $labels['all'] = 'Semua';
 $labels['none'] = 'Tiada';
-$labels['unread'] = 'Tidak dibaca';
-$labels['compact'] = 'Padat';
+$labels['nonesort'] = 'Tiada';
+$labels['currpage'] = 'Muka terkini';
+$labels['unread'] = 'Belum dibaca';
+$labels['flagged'] = 'Ditanda';
+$labels['unanswered'] = 'Belum dijawab';
+$labels['deleted'] = 'Telah dipadam';
+$labels['invert'] = 'Songsangkan';
+$labels['filter'] = 'Tapis';
+$labels['list'] = 'Senarai';
+$labels['threads'] = 'Urutan';
+$labels['expand-all'] = 'Buka Semua';
+$labels['expand-unread'] = 'Buka yang belum dibaca';
+$labels['collapse-all'] = 'Tutup Semua';
+$labels['threaded'] = 'Telah urutan';
+$labels['autoexpand_threads'] = 'Buka mesej mengikut urutan';
+$labels['do_expand'] = 'Kesemua urutan';
+$labels['expand_only_unread'] = 'hanya dengan mesej yang belum dibaca';
+$labels['fromto'] = 'Daripada/Kepada';
+$labels['flag'] = 'Tanda';
+$labels['attachment'] = 'Lampiran';
+$labels['sentdate'] = 'Tarikh dihantar';
+$labels['arrival'] = 'Tarikh terima';
+$labels['asc'] = 'menaik';
+$labels['desc'] = 'menurun';
+$labels['listcolumns'] = 'Senarai ruang';
+$labels['listsorting'] = 'pengisihan ruang';
+$labels['listorder'] = 'Urutan pengisihan';
+$labels['listmode'] = 'Mod senarai paparan';
+$labels['folderactions'] = 'Aksi folder';
+$labels['compact'] = 'Kompak';
 $labels['empty'] = 'Kosong';
-$labels['purge'] = 'Singkir';
 $labels['quota'] = 'Penggunaan cakera';
-$labels['unknown'] = 'tidak dikenali';
-$labels['unlimited'] = 'tidak terhad';
+$labels['unknown'] = 'tidak diketahui';
+$labels['unlimited'] = 'Tidak terhad';
 $labels['quicksearch'] = 'Carian pantas';
 $labels['resetsearch'] = 'Set semula carian';
-$labels['compose'] = 'Karang mesej';
-$labels['savemessage'] = 'Simpan draf ini';
-$labels['sendmessage'] = 'Hantar mesej sekarang';
+$labels['searchmod'] = 'Pengubah carian';
+$labels['msgtext'] = 'Keseluruhan mesej';
+$labels['openinextwin'] = 'Buka dalam tetingkap baru';
+$labels['emlsave'] = 'Muat-turun (.eml)';
+$labels['editasnew'] = 'Ubah seperti baharu';
+$labels['savemessage'] = 'Simapan sebagai draf';
+$labels['sendmessage'] = 'Hantar mesej';
 $labels['addattachment'] = 'Lampir fail';
-$labels['charset'] = 'Charset';
+$labels['charset'] = 'Set aksara';
 $labels['editortype'] = 'Jenis Editor';
-$labels['returnreceipt'] = 'Resit kembali';
+$labels['returnreceipt'] = 'Penerimaan semula';
+$labels['dsn'] = 'Status pemberitahuan penghantaran';
+$labels['mailreplyintro'] = 'Pada $date, $sender menulis';
+$labels['originalmessage'] = 'Mesej Asal';
+$labels['editidents'] = 'Ubah identiti';
+$labels['spellcheck'] = 'Eja';
 $labels['checkspelling'] = 'Semak ejaan';
 $labels['resumeediting'] = 'Sambung pengeditan';
 $labels['revertto'] = 'Kembali kepada';
+$labels['attach'] = 'Lampirkan';
 $labels['attachments'] = 'Lampiran';
 $labels['upload'] = 'Muat naik';
+$labels['uploadprogress'] = '$percent ($current dari $total)';
 $labels['close'] = 'Tutup';
+$labels['messageoptions'] = 'Opsyen mesej';
 $labels['low'] = 'Rendah';
 $labels['lowest'] = 'Paling Rendah';
 $labels['normal'] = 'Normal';
@@ -146,11 +197,17 @@ $labels['high'] = 'Tinggi';
 $labels['highest'] = 'Paling Tinggi';
 $labels['nosubject'] = '(tiada subjek)';
 $labels['showimages'] = 'Papar imej';
+$labels['alwaysshow'] = 'selalu paparkan imej dari $sender';
+$labels['isdraft'] = 'Ini adalah draf mesej';
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = 'Teks kosong';
+$labels['savesentmessagein'] = 'Simpan mesej yang telah dihantar dalam';
+$labels['dontsave'] = 'Jangan simpan';
+$labels['maxuploadsize'] = 'maksimum saiz fail yang dibenarkan ialah $size';
 $labels['addcc'] = 'Tambah Cc';
 $labels['addbcc'] = 'Tambah Bcc';
 $labels['addreplyto'] = 'Tambah Reply-To';
+$labels['addfollowupto'] = 'Tambah Followup-To';
 $labels['mdnrequest'] = 'Pengirim mesej ini mahu diberitahu apabila anda membaca mesej ini. Adakah anda ingin memberitahu pengirim?';
 $labels['receiptread'] = 'Balas Resip (dibaca)';
 $labels['yourmessage'] = 'Ini adalah Resip Balasan untuk mesej anda';
@@ -161,10 +218,10 @@ $labels['surname'] = 'Nama akhir';
 $labels['email'] = 'E-Mel';
 $labels['addcontact'] = 'Tambah kontek baru';
 $labels['editcontact'] = 'Ubahsuai Kontek';
-$labels['edit'] = 'Ubahsuai';
+$labels['edit'] = 'Sunting';
 $labels['cancel'] = 'Batal';
 $labels['save'] = 'Simpan';
-$labels['delete'] = 'Hapus';
+$labels['delete'] = 'Padam';
 $labels['newcontact'] = 'Cipta kad kontek baru';
 $labels['deletecontact'] = 'Hapus kontek yang dipilih';
 $labels['composeto'] = 'Karang mel kepada';
@@ -178,14 +235,17 @@ $labels['lastpage'] = 'Papar set akhir';
 $labels['groups'] = 'Kumpulan';
 $labels['personaladrbook'] = 'Alamat-alamat Peribadi';
 $labels['settingsfor'] = 'Tetapan bagi';
-$labels['preferences'] = 'Pilihan';
-$labels['userpreferences'] = 'Pilihan pengguna';
-$labels['editpreferences'] = 'Ubahsuai pilihan pengguna';
+$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';
 $labels['setdefault'] = 'Tetap asal';
 $labels['language'] = 'Bahasa';
 $labels['timezone'] = 'Zon Masa';
@@ -209,7 +269,6 @@ $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'] = 'Kabinet Fail';
 $labels['foldername'] = 'Nama Kabinet Fail';
 $labels['subscribed'] = 'Dilanggan';
 $labels['messagecount'] = 'Mesej-mesej';
@@ -220,4 +279,3 @@ $labels['sortby'] = 'Susun dengan';
 $labels['sortasc'] = 'Susun menaik';
 $labels['sortdesc'] = 'Susun menurun';
 
-?>
index 3440f042eb5ce8e42f9c49cb3470c1fb37bc712e..3cf4b5a41f58ea567cd78a8b7a5108c4399d454e 100644 (file)
@@ -1,27 +1,24 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/ms_MY/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Muhammad Zamri MS <myzamri@gmail.com>                        |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 4410 2011-01-12 18:25:02Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/ms_MY/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: abuyop <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $messages = array();
 $messages['loginfailed'] = 'Log masuk gagal';
 $messages['cookiesdisabled'] = 'Pelayar anda tidak menerima cookies';
 $messages['sessionerror'] = 'Sesi anda tidak sah atau telah tamat';
-$messages['imaperror'] = 'Sambungan ke pelayan IMAP gagal';
+$messages['storageerror'] = 'Sambungan ke pelayan IMAP gagal';
 $messages['nomessagesfound'] = 'Tiada mesej dijumpai dalam kotak mel ini';
 $messages['loggedout'] = 'Sesi anda telah tamat. Selamat tinggal!';
 $messages['mailboxempty'] = 'Kotak mail kosong';
@@ -52,15 +49,14 @@ $messages['noemailwarning'] = 'Sila masukkan alamat emel yang sah';
 $messages['nonamewarning'] = 'Sila masukkan nama';
 $messages['nopagesizewarning'] = 'Sila masukkan saiz halaman';
 $messages['norecipientwarning'] = 'Sila masukkan sekurang-kurangnya satu penerima';
-$messages['nosubjectwarning'] = 'Ruang \"Subjek\" kosong. Adakah anda ingin masukkannya sekarang?';
+$messages['nosubjectwarning'] = 'Ruang "Subjek" kosong. Adakah anda ingin masukkannya sekarang?';
 $messages['nobodywarning'] = 'Hantar mesej ini tanpa teks?';
 $messages['notsentwarning'] = 'Mesej tidak dihantar. Adakah anda ingin menyingkir mesej anda?';
 $messages['noldapserver'] = 'Sila pilih satu pelayan ldap untuk carian';
-$messages['nocontactsreturned'] = 'Tiada kontek dijumpai';
 $messages['nosearchname'] = 'Sila masukkan nama kontek atau alamat emel';
 $messages['searchsuccessful'] = '$nr mesej dijumpai';
 $messages['searchnomatch'] = 'Carian tiada padanan';
-$messages['searching'] = 'Mencari...';
+$messages['searching'] = 'Menggelintar...';
 $messages['checking'] = 'Menyemak...';
 $messages['nospellerrors'] = 'Tiada kesalah ejaan dijumpai';
 $messages['folderdeleted'] = 'Kabinet fail berjaya dihapuskan';
@@ -78,4 +74,3 @@ $messages['receiptsent'] = 'Berjaya menghantar resip bacaan';
 $messages['errorsendingreceipt'] = 'Tidak dapat menghantar resip';
 $messages['nodeletelastidentity'] = 'Anda tidak boleh membuang identiti ini, ia milik anda yang terakhir.';
 
-?>
index a4b8681efe970b48e87c4b05be647c059314359c..70df73b497257347c8da6226a2871de3462bb189 100644 (file)
@@ -1,31 +1,24 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/nb_NO/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Kjetil Waage - Nextline AS <kjetil@nextline.no>               |
-| Author: Tor Erik Linnerud - JKLM <tel@jklm.no>                        |
-| Author: Axel Sjøstedt <roundcube@sjostedt.no>                         |
-| Author: Odd Henriksen <odd@digicon.no>                                |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 4410 2011-01-12 18:25:02Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/nb_NO/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas                                                        |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
 $labels['welcome'] = 'Velkommen til $product';
 $labels['username'] = 'Brukernavn';
 $labels['password'] = 'Passord';
-$labels['server'] = 'Server';
-$labels['login'] = 'Logg ';
+$labels['server'] = 'Tjener';
+$labels['login'] = 'Logg inn';
 $labels['logout'] = 'Logg ut';
 $labels['mail'] = 'E-post';
 $labels['settings'] = 'Innstillinger';
@@ -41,15 +34,19 @@ $labels['to'] = 'Mottaker';
 $labels['cc'] = 'Kopi til';
 $labels['bcc'] = 'Blindkopi til';
 $labels['replyto'] = 'Svar til';
+$labels['followupto'] = 'Oppfølging til';
 $labels['date'] = 'Dato';
 $labels['size'] = 'Størrelse';
 $labels['priority'] = 'Prioritet';
 $labels['organization'] = 'Organisasjon';
-$labels['reply-to'] = 'Svar til';
+$labels['readstatus'] = 'Lese status';
+$labels['listoptions'] = 'List muligheter';
 $labels['mailboxlist'] = 'Mapper';
+$labels['folders'] = 'Mapper';
 $labels['messagesfromto'] = 'Meldinger $from til $to av $count';
 $labels['threadsfromto'] = 'Tråder $from til $to av $count';
 $labels['messagenrof'] = 'Melding $nr av $count';
+$labels['fromtoshort'] = '$from – $to av $count';
 $labels['copy'] = 'Kopier';
 $labels['move'] = 'Flytt';
 $labels['moveto'] = 'flytt til...';
@@ -76,6 +73,7 @@ $labels['feb'] = 'Feb';
 $labels['mar'] = 'Mar';
 $labels['apr'] = 'Apr';
 $labels['may'] = 'Mai';
+$labels['longmay'] = 'Mai';
 $labels['jun'] = 'Jun';
 $labels['jul'] = 'Jul';
 $labels['aug'] = 'Aug';
@@ -87,7 +85,6 @@ $labels['longjan'] = 'Januar';
 $labels['longfeb'] = 'Februar';
 $labels['longmar'] = 'Mars';
 $labels['longapr'] = 'April';
-$labels['longmay'] = 'Mai';
 $labels['longjun'] = 'Juni';
 $labels['longjul'] = 'Juli';
 $labels['longaug'] = 'August';
@@ -96,33 +93,42 @@ $labels['longoct'] = 'Oktober';
 $labels['longnov'] = 'November';
 $labels['longdec'] = 'Desember';
 $labels['today'] = 'I dag';
+$labels['refresh'] = 'Oppdater';
 $labels['checkmail'] = 'Se etter nye meldinger';
+$labels['compose'] = 'Skriv ny e-post';
 $labels['writenewmessage'] = 'Opprett ny e-post';
+$labels['reply'] = 'Svar';
 $labels['replytomessage'] = 'Svar på denne e-posten';
 $labels['replytoallmessage'] = 'Svar til alle mottakere';
+$labels['replyall'] = 'Svar alle';
+$labels['replylist'] = 'Svarliste';
+$labels['forward'] = 'Videresend';
+$labels['forwardinline'] = 'Videresend i melding';
+$labels['forwardattachment'] = 'Vidresend som vedlegg';
 $labels['forwardmessage'] = 'Videresend denne e-posten';
 $labels['deletemessage'] = 'Slett e-posten';
 $labels['movemessagetotrash'] = 'Flytt e-posten til søppel';
 $labels['printmessage'] = 'Skriv ut denne e-posten';
 $labels['previousmessage'] = 'Vis forrige melding';
-$labels['previousmessages'] = 'Vis forrige side';
 $labels['firstmessage'] = 'Vis første melding';
-$labels['firstmessages'] = 'Vis første side med meldinger';
 $labels['nextmessage'] = 'Vis neste melding';
-$labels['nextmessages'] = 'Vis neste side';
 $labels['lastmessage'] = 'Vis siste melding';
-$labels['lastmessages'] = 'Vis siste side med meldinger';
 $labels['backtolist'] = 'Tilbake til e-postlisten';
 $labels['viewsource'] = 'Vis kilde';
+$labels['mark'] = 'Merke';
 $labels['markmessages'] = 'Merk meldinger';
 $labels['markread'] = 'som lest';
 $labels['markunread'] = 'som ulest';
 $labels['markflagged'] = 'som flagget';
 $labels['markunflagged'] = 'som uflagget';
-$labels['messageactions'] = 'Flere valg...';
+$labels['moreactions'] = 'Flere handlinger …';
+$labels['more'] = 'Mer';
+$labels['back'] = 'Tilbake';
+$labels['options'] = 'Alternativer';
 $labels['select'] = 'Velg';
 $labels['all'] = 'Alle';
 $labels['none'] = 'Ingen';
+$labels['nonesort'] = 'Ingen';
 $labels['currpage'] = 'Gjeldende side';
 $labels['unread'] = 'Uleste';
 $labels['flagged'] = 'Flagget';
@@ -142,7 +148,6 @@ $labels['expand_only_unread'] = 'kun med uleste meldinger';
 $labels['fromto'] = 'Avsender/Mottaker';
 $labels['flag'] = 'Flagg';
 $labels['attachment'] = 'Vedlegg';
-$labels['nonesort'] = 'Ingen';
 $labels['sentdate'] = 'Dato sendt';
 $labels['arrival'] = 'Dato mottatt';
 $labels['asc'] = 'stigende';
@@ -151,9 +156,9 @@ $labels['listcolumns'] = 'Listekolonner';
 $labels['listsorting'] = 'Sorteringskolonne';
 $labels['listorder'] = 'Sorteringsrekkefølge';
 $labels['listmode'] = 'Listevisningsmodus';
+$labels['folderactions'] = 'Mappehandlinger...';
 $labels['compact'] = 'Rydd opp';
 $labels['empty'] = 'Tøm';
-$labels['purge'] = 'Tøm';
 $labels['quota'] = 'Plassforbruk';
 $labels['unknown'] = 'ukjent';
 $labels['unlimited'] = 'ubegrenset';
@@ -163,7 +168,6 @@ $labels['searchmod'] = 'Søke felt';
 $labels['msgtext'] = 'Hele meldingen';
 $labels['openinextwin'] = 'Åpne i nytt vindu';
 $labels['emlsave'] = 'Last ned (.eml)';
-$labels['compose'] = 'Skriv ny e-post';
 $labels['editasnew'] = 'Rediger som ny';
 $labels['savemessage'] = 'Lagre kladd';
 $labels['sendmessage'] = 'Send e-posten';
@@ -171,12 +175,20 @@ $labels['addattachment'] = 'Vedlegg';
 $labels['charset'] = 'Tegnsett';
 $labels['editortype'] = 'Format';
 $labels['returnreceipt'] = 'Be om kvittering';
+$labels['dsn'] = 'Leveringsstatus notifikasjon';
+$labels['mailreplyintro'] = 'Den $date, skrev $sender:';
+$labels['originalmessage'] = 'Opprinnelig melding';
+$labels['editidents'] = 'Endre identiteter';
+$labels['spellcheck'] = 'Stavekontroll';
 $labels['checkspelling'] = 'Stavekontroll';
 $labels['resumeediting'] = 'Fortsett redigering';
 $labels['revertto'] = 'Tilbake til';
+$labels['attach'] = 'Legg ved';
 $labels['attachments'] = 'Vedlegg';
 $labels['upload'] = 'Last opp';
+$labels['uploadprogress'] = '$percent ($current fra $total)';
 $labels['close'] = 'Lukk';
+$labels['messageoptions'] = 'Meldingsalternativer...';
 $labels['low'] = 'Lav';
 $labels['lowest'] = 'Lavest';
 $labels['normal'] = 'Normal';
@@ -185,6 +197,7 @@ $labels['highest'] = 'Høyest';
 $labels['nosubject'] = '(intet emne)';
 $labels['showimages'] = 'Vis bilder';
 $labels['alwaysshow'] = 'Vis alltid bilder fra $sender';
+$labels['isdraft'] = 'Dette er en kladd.';
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = 'Ren tekst';
 $labels['savesentmessagein'] = 'Lagre sendt melding i';
@@ -193,6 +206,7 @@ $labels['maxuploadsize'] = 'Maksimalt tillatt filstørrelse er $size';
 $labels['addcc'] = 'Legg til kopiadressat (Cc)';
 $labels['addbcc'] = 'Legg til blindkopiadressat (Bcc)';
 $labels['addreplyto'] = 'Legg til svar til (Reply-To)';
+$labels['addfollowupto'] = 'Legg til oppfølging';
 $labels['mdnrequest'] = 'Senderen av denne meldingen har bedt om å bli gjort oppmerksom på at denne meldingen er lest. Ønsker du å sende denne bekreftelsen?';
 $labels['receiptread'] = 'Kvittering (lest)';
 $labels['yourmessage'] = 'Dette er en kvittering for at din e-post er mottatt';
@@ -200,13 +214,65 @@ $labels['receiptnote'] = 'Merknad: Denne kvitteringen bekrefter bare at e-posten
 $labels['name'] = 'Visningsnavn';
 $labels['firstname'] = 'Fornavn';
 $labels['surname'] = 'Etternavn';
+$labels['middlename'] = 'Mellom Navn';
+$labels['nameprefix'] = 'Prefiks';
+$labels['namesuffix'] = 'Suffiks';
+$labels['nickname'] = 'Kallenavn';
+$labels['jobtitle'] = 'Jobb Tittel';
+$labels['department'] = 'Avdeling';
+$labels['gender'] = 'Kjønn';
+$labels['maidenname'] = 'Pikenavn';
 $labels['email'] = 'E-post';
+$labels['phone'] = 'Telefon';
+$labels['address'] = 'Adresse';
+$labels['street'] = 'Gate';
+$labels['locality'] = 'Sted';
+$labels['zipcode'] = 'Postkode';
+$labels['region'] = 'Stat/provins';
+$labels['country'] = 'Land';
+$labels['birthday'] = 'Fødselsdag';
+$labels['anniversary'] = 'Merkedag';
+$labels['website'] = 'Nettsted';
+$labels['instantmessenger'] = 'Lynmelding';
+$labels['notes'] = 'Notater';
+$labels['male'] = 'Mann';
+$labels['female'] = 'Kvinne';
+$labels['manager'] = 'Leder';
+$labels['assistant'] = 'Assistent';
+$labels['typeassistant'] = 'Assistent';
+$labels['spouse'] = 'Ektefelle';
+$labels['allfields'] = 'Alle felter';
+$labels['search'] = 'Søk';
+$labels['advsearch'] = 'Avansert søk';
+$labels['advanced'] = 'Avansert';
+$labels['other'] = 'Annet';
+$labels['typeother'] = 'Annet';
+$labels['typehome'] = 'Hjem';
+$labels['typework'] = 'Jobb';
+$labels['typemobile'] = 'Mobil';
+$labels['typemain'] = 'Hoved';
+$labels['typehomefax'] = 'Hjemmefaks';
+$labels['typeworkfax'] = 'Faks på arbeid';
+$labels['typecar'] = 'Bil';
+$labels['typepager'] = 'Personsøker';
+$labels['typevideo'] = 'Video';
+$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';
+$labels['personalinfo'] = 'Personlig informasjon';
 $labels['edit'] = 'Rediger';
 $labels['cancel'] = 'Avbryt';
 $labels['save'] = 'Lagre';
 $labels['delete'] = 'Slett';
+$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';
@@ -215,7 +281,9 @@ $labels['print'] = 'Skriv ut';
 $labels['export'] = 'Eksporter';
 $labels['exportvcards'] = 'Eksporter kontakter i vCard-format';
 $labels['newcontactgroup'] = 'Opprett ny kontaktgruppe';
-$labels['groupactions'] = 'Handlinger for kontaktgrupper...';
+$labels['grouprename'] = 'Endre navn på gruppe';
+$labels['groupdelete'] = 'Slett gruppe';
+$labels['groupremoveselected'] = 'Fjern valgte kontakter fra gruppe';
 $labels['previouspage'] = 'Vis forrige sett';
 $labels['firstpage'] = 'Vis første sett';
 $labels['nextpage'] = 'Vis neste sett';
@@ -223,13 +291,17 @@ $labels['lastpage'] = 'Vis siste sett';
 $labels['group'] = 'Gruppe';
 $labels['groups'] = 'Grupper';
 $labels['personaladrbook'] = 'Egne adresser';
+$labels['searchsave'] = 'Lagre søk';
+$labels['searchdelete'] = 'Slett søk';
 $labels['import'] = 'Importer';
 $labels['importcontacts'] = 'Importer kontakter';
 $labels['importfromfile'] = 'Importer fra fil:';
+$labels['importtarget'] = 'Legg til kontakter i adresseboka:';
 $labels['importreplace'] = 'Erstatt hele adresseboken';
 $labels['importtext'] = 'Du kan laste opp kontakter fra en eksisterende adressebok.<br/>For øyeblikket støttes importering av kontakter i <a href="http://en.wikipedia.org/wiki/VCard">vCard</a>-formatet.';
 $labels['done'] = 'Fullført';
 $labels['settingsfor'] = 'Innstillinger for';
+$labels['about'] = 'Om';
 $labels['preferences'] = 'Oppsett';
 $labels['userpreferences'] = 'Brukeroppsett';
 $labels['editpreferences'] = 'Rediger brukeroppsett';
@@ -241,6 +313,8 @@ $labels['edititem'] = 'Rediger punkt';
 $labels['preferhtml'] = 'Foretrekk HTML';
 $labels['defaultcharset'] = 'Standard tegnsett';
 $labels['htmlmessage'] = 'HTML-melding';
+$labels['dateformat'] = 'Datoformat';
+$labels['timeformat'] = 'Tidsformat';
 $labels['prettydate'] = 'Pen datovisning';
 $labels['setdefault'] = 'Sett som standard';
 $labels['autodetect'] = 'Auto';
@@ -250,6 +324,7 @@ $labels['pagesize'] = 'Linjer per side';
 $labels['signature'] = 'Signatur';
 $labels['dstactive'] = 'Sommertid';
 $labels['htmleditor'] = 'Bruk HTML-editor';
+$labels['htmlonreply'] = 'kun ved svar på HTML-melding';
 $labels['htmlsignature'] = 'HTML-signatur';
 $labels['previewpane'] = 'Forhåndsvisning';
 $labels['skin'] = 'Utseende';
@@ -261,11 +336,14 @@ $labels['mailboxview'] = 'E-postvisning';
 $labels['mdnrequests'] = 'Tilbakemelding til avsender';
 $labels['askuser'] = 'spør hver gang';
 $labels['autosend'] = 'send automatisk';
+$labels['autosendknown'] = 'send kvittering til kontaktene mine, ellers spør meg';
+$labels['autosendknownignore'] = 'send kvittering til kontaktene mine, ellers ignorer';
 $labels['ignore'] = 'ignorer';
 $labels['readwhendeleted'] = 'Merk melding som lest ved sletting';
 $labels['flagfordeletion'] = 'Flagg meldingen for sletting i stedet for å slette';
 $labels['skipdeleted'] = 'Ikke vis slettede meldinger';
 $labels['deletealways'] = 'Hvis en melding ikke kan flyttes til Slettet, slett den';
+$labels['deletejunk'] = 'Slett meldinger i spam direkte';
 $labels['showremoteimages'] = 'Vis bilder fra eksterne servere i meldinger';
 $labels['fromknownsenders'] = 'fra kjente avsendere';
 $labels['always'] = 'alltid';
@@ -286,11 +364,12 @@ $labels['advancedoptions'] = 'Avanserte alternativer';
 $labels['focusonnewmessage'] = 'Gi nettleservindu fokus ved nye meldinger';
 $labels['checkallfolders'] = 'Kontroller alle mapper for nye meldinger';
 $labels['displaynext'] = 'Vis neste melding etter sletting/flytting av en melding';
+$labels['defaultfont'] = 'Standard skrifttype i HTML-melding';
 $labels['mainoptions'] = 'Hovedinnstillinger';
+$labels['browseroptions'] = 'Alternativer for nettleser';
 $labels['section'] = 'Kategori';
 $labels['maintenance'] = 'Vedlikehold';
 $labels['newmessage'] = 'Ny melding';
-$labels['listoptions'] = 'Meldingsoversikt';
 $labels['signatureoptions'] = 'Innstillinger for signatur';
 $labels['whenreplying'] = 'Ved svar på e-post';
 $labels['replytopposting'] = 'start den nye meldingen over orginalmeldingen';
@@ -305,8 +384,20 @@ $labels['abovequote'] = 'under sitert melding';
 $labels['insertsignature'] = 'Sett inn signatur';
 $labels['previewpanemarkread'] = 'Merk forhåndsviste meldinger som lest';
 $labels['afternseconds'] = 'etter $n sekunder';
+$labels['reqmdn'] = 'Alltid be om svarkvittering';
+$labels['reqdsn'] = 'Alltid be om leveringsstatus';
+$labels['replysamefolder'] = 'Legg svar i mappen til meldingen det svares på';
+$labels['defaultaddressbook'] = 'Legg til nye kontakter i valgt adressebok';
+$labels['autocompletesingle'] = 'Hopp over alternative e-postadresser i autofullføring';
+$labels['listnamedisplay'] = 'Vis kontakter som';
+$labels['spellcheckbeforesend'] = 'Kontroller staving før en melding sendes';
+$labels['spellcheckoptions'] = 'Alternativer for stavekontroll';
+$labels['spellcheckignoresyms'] = 'Ignorer ord med symboler';
+$labels['spellcheckignorenums'] = 'Ignorer ord med tall';
+$labels['spellcheckignorecaps'] = 'Ignorer ord med kun store bokstaver';
+$labels['addtodict'] = 'Legg til i ordbok';
+$labels['mailtoprotohandler'] = 'Registrer protokollhåndtering for mailto-lenker';
 $labels['folder'] = 'Mappe';
-$labels['folders'] = 'Mapper';
 $labels['foldername'] = 'Mappenavn';
 $labels['subscribed'] = 'Abonnere';
 $labels['messagecount'] = 'Meldinger';
@@ -314,9 +405,26 @@ $labels['create'] = 'Opprett';
 $labels['createfolder'] = 'Lag ny mappe';
 $labels['managefolders'] = 'Rediger mapper';
 $labels['specialfolders'] = 'Spesielle mapper';
+$labels['properties'] = 'Egenskaper';
+$labels['folderproperties'] = 'Egenskaper for mappe';
+$labels['parentfolder'] = 'Overordnet mappe';
+$labels['location'] = 'Sted';
+$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['sortby'] = 'Sorter etter';
 $labels['sortasc'] = 'Eldste først';
 $labels['sortdesc'] = 'Nyeste først';
+$labels['undo'] = 'Angre';
+$labels['plugin'] = 'Tilleggsmodul';
+$labels['version'] = 'Versjon';
+$labels['source'] = 'Kildekode';
+$labels['license'] = 'Lisensvilkår';
+$labels['support'] = 'Få hjelp';
 $labels['B'] = 'B';
 $labels['KB'] = 'KB';
 $labels['MB'] = 'MB';
@@ -340,4 +448,3 @@ $labels['japanese'] = 'Japansk';
 $labels['korean'] = 'Koreansk';
 $labels['chinese'] = 'Kinesisk';
 
-?>
index 3d5b9e8a110885186be462f30a7b2cbb7c443645..a1f899db6fc1488dfbb794dfbbc3ffce2c643204 100644 (file)
@@ -1,50 +1,52 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/nb_NO/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Kjetil Waage - Nextline AS <kjetil@nextline.no>               |
-| Author: Tor Erik Linnerud - JKLM <tel@jklm.no>                        |
-| Author: Axel Sjøstedt <roundcube@sjostedt.no>                         |
-| Author: Odd Henriksen <odd@digicon.no>                                |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 4410 2011-01-12 18:25:02Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/nb_NO/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Tobias V. Langhoff <spug@thespug.net>                         |
+ +-----------------------------------------------------------------------+
 */
 
 $messages = array();
+$messages['errortitle'] = 'Det oppsto en feil!';
 $messages['loginfailed'] = 'Pålogging mislyktes';
-$messages['cookiesdisabled'] = 'Din nettleser aksepterer ikke cookies';
+$messages['cookiesdisabled'] = 'Nettleseren din tillater ikke informasjonskapsler (cookies)';
 $messages['sessionerror'] = 'Din nettlesertilkobling er ugyldig eller utløpt';
-$messages['imaperror'] = 'Feil ved tilkobling til IMAP-server';
-$messages['servererror'] = 'Serverfeil!';
+$messages['storageerror'] = 'Tilkobling til IMAP-tjener mislyktes.';
+$messages['servererror'] = 'Tjenerfeil!';
+$messages['servererrormsg'] = 'Tjenerfeil: $msg';
+$messages['dberror'] = 'Databasefeil!';
+$messages['requesttimedout'] = 'Forespørselen har fått et tidsavbrudd';
+$messages['errorreadonly'] = 'Kunne ikke utføre handlingen. Mappen kan kun leses.';
+$messages['errornoperm'] = 'Kan ikke utføre operasjon. Nektet tilgang.';
 $messages['invalidrequest'] = 'Ugyldig forespørsel! Ingen data ble lagret.';
 $messages['nomessagesfound'] = 'Det ble ikke funnet noen meldinger i denne mappen';
 $messages['loggedout'] = 'Du er logget av webmail. Ha det bra!';
 $messages['mailboxempty'] = 'Mappen er tom!';
 $messages['loading'] = 'Laster...';
 $messages['uploading'] = 'Laster opp fil...';
+$messages['uploadingmany'] = 'Laster opp filer ...';
 $messages['loadingdata'] = 'Laster data...';
 $messages['checkingmail'] = 'Sjekker for nye meldinger...';
 $messages['sendingmessage'] = 'Sender melding...';
-$messages['messagesent'] = 'Meldingen ble sendt uten feil';
+$messages['messagesent'] = 'Meldingen ble sendt';
 $messages['savingmessage'] = 'Lagrer melding...';
 $messages['messagesaved'] = 'Melding er lagret som kladd';
 $messages['successfullysaved'] = 'Lagret';
 $messages['addedsuccessfully'] = 'Kontakten ble lagt til i adresseboken';
-$messages['contactexists'] = 'Der finnes allerede en kontakt med denne e-postadressen';
+$messages['contactexists'] = 'Det finnes allerede en kontakt med denne e-postadressen';
+$messages['contactnameexists'] = 'Det finnes allerede en kontakt med dette navnet';
 $messages['blockedimages'] = 'Av sikkerhetsgrunner er bilder lagret på eksterne servere blokkert fra denne e-postmeldingen';
 $messages['encryptedmessage'] = 'Dette er en kryptert melding som ikke kan vises. Beklager!';
 $messages['nocontactsfound'] = 'Ingen kontakter ble funnet';
 $messages['contactnotfound'] = 'Den ønskede kontakten ble ikke funnet';
+$messages['contactsearchonly'] = 'Skriv inn noen søkeord for å finne kontater.';
 $messages['sendingfailed'] = 'Kunne ikke sende e-posten';
 $messages['senttooquickly'] = 'Vennligst vent $sec sekund(er) før du sender denne meldingen';
 $messages['errorsavingsent'] = 'En feil oppsto under lagring av sendt melding';
@@ -54,13 +56,18 @@ $messages['errorcopying'] = 'Kunne ikke kopiere meldingen(e)';
 $messages['errordeleting'] = 'Kunne ikke slette meldingen(e)';
 $messages['errormarking'] = 'Kunne ikke markere meldingen(e)';
 $messages['deletecontactconfirm'] = 'Vil du virkelig slette valgte kontakt(er)?';
+$messages['deletegroupconfirm'] = 'Vil du virkelig slette den valgte gruppa?';
 $messages['deletemessagesconfirm'] = 'Vil du virkelig slette de(n) valgte meldingen(e)?';
 $messages['deletefolderconfirm'] = 'Vil du virkelig slette denne mappen?';
 $messages['purgefolderconfirm'] = 'Vil du virkelig slette alle meldingene i denne mappen?';
+$messages['contactdeleting'] = 'Sletter kontakt(er) ...';
+$messages['groupdeleting'] = 'Sletter gruppe ...';
 $messages['folderdeleting'] = 'Sletter mappe...';
 $messages['foldermoving'] = 'Flytter mappe...';
+$messages['foldersubscribing'] = 'Abonnerer på mappe ...';
+$messages['folderunsubscribing'] = 'Avslutter mappeabonnement ...';
 $messages['formincomplete'] = 'Skjemaet var ikke fullstendig fylt ut';
-$messages['noemailwarning'] = 'Skriv inn en gyldig e-postadresse';
+$messages['noemailwarning'] = 'Vennligst oppgi en gyldig epostadresse.';
 $messages['nonamewarning'] = 'Angi et navn';
 $messages['nopagesizewarning'] = 'Angi sidestørrelsen';
 $messages['nosenderwarning'] = 'Vennligst angi avsenderadresse';
@@ -68,38 +75,49 @@ $messages['norecipientwarning'] = 'Skriv inn minst én mottaker';
 $messages['nosubjectwarning'] = 'Emnefeltet er tomt. Vil du skrive det inn nå?';
 $messages['nobodywarning'] = 'Send denne meldingen uten tekst?';
 $messages['notsentwarning'] = 'E-posten er ikke sendt. Er du sikker på at du vil avbryte skrivingen?';
-$messages['noldapserver'] = 'Venligst velg hvilken LDAP-server det skal søkes i';
-$messages['nocontactsreturned'] = 'Ingen kontakter funnet';
+$messages['noldapserver'] = 'Velg LDAP-tjener å søke i';
 $messages['nosearchname'] = 'Venligst skriv inn kontaktens navn eller e-postadresse';
 $messages['notuploadedwarning'] = 'Ikke alle vedlegg er ferdig opplastet. Vennligst vent eller avbryt opplastingen.';
 $messages['searchsuccessful'] = '$nr meldinger funnet';
+$messages['contactsearchsuccessful'] = '$nr kontakter funnet.';
 $messages['searchnomatch'] = 'Søket ga ingen resultater';
-$messages['searching'] = 'Søker...';
-$messages['checking'] = 'Sjekker...';
-$messages['nospellerrors'] = 'Ingen skrivefeil funnet';
-$messages['folderdeleted'] = 'Mappe slettet';
+$messages['searching'] = 'Søker …';
+$messages['checking'] = 'Sjekker …';
+$messages['nospellerrors'] = 'Fant ingen skrivefeil.';
+$messages['folderdeleted'] = 'Mappe slettet.';
+$messages['foldersubscribed'] = 'Abonnerte på mappen.';
+$messages['folderunsubscribed'] = 'Avsluttet mappeabonnement.';
+$messages['folderpurged'] = 'Mappen har blitt tømt uten feil.';
+$messages['folderexpunged'] = 'Mappen har blitt komprimert';
 $messages['deletedsuccessfully'] = 'Slettet';
-$messages['converting'] = 'Fjerner formatering fra meldingen...';
+$messages['converting'] = 'Fjerner formatering fra meldingen ...';
 $messages['messageopenerror'] = 'Kunne ikke hente meldingen fra server';
-$messages['fileuploaderror'] = 'Feil under opplasting';
+$messages['fileuploaderror'] = 'Feil under opplastning.';
 $messages['filesizeerror'] = 'Filen overstiger maksimum tillatt filstørrelse ($size)';
-$messages['copysuccess'] = '$nr adresser ble kopiert';
-$messages['copyerror'] = 'Kunne ikke kopiere';
+$messages['copysuccess'] = 'Kopierte $nr adresser.';
+$messages['copyerror'] = 'Kunne ikke kopiere adresser.';
 $messages['sourceisreadonly'] = 'Denne adressekilden er skrivebeskyttet';
-$messages['errorsavingcontact'] = 'Kunne ikke lagre adressen';
-$messages['movingmessage'] = 'Flytter e-post...';
+$messages['errorsavingcontact'] = 'Kunne ikke lagre kontaktadressen.';
+$messages['movingmessage'] = 'Flytter e-post ...';
 $messages['copyingmessage'] = 'Kopierer e-post...';
+$messages['copyingcontact'] = 'Kopieerer kontakt(er) ...';
+$messages['deletingmessage'] = 'Sletter melding(er) ...';
+$messages['markingmessage'] = 'Markerer melding(er) ...';
+$messages['addingmember'] = 'Legger til kontakt(er) i gruppa ...';
+$messages['removingmember'] = 'Fjerner kontakt(er) fra gruppa ...';
 $messages['receiptsent'] = 'Kvittering er sent';
-$messages['errorsendingreceipt'] = 'Kunne ikke sende kvittering';
-$messages['nodeletelastidentity'] = 'Du kan ikke slette denne identiteten, det er din eneste.';
+$messages['errorsendingreceipt'] = 'Kunne ikke sende til mottaker';
+$messages['deleteidentityconfirm'] = 'Vil du virkelig å slette denne identiteten?';
+$messages['nodeletelastidentity'] = 'Du kan ikke slette den siste identiteten din.';
 $messages['forbiddencharacter'] = 'Mappenavnet inneholder tegn som ikke er tillatt';
 $messages['selectimportfile'] = 'Vennligst velg en fil for opplasting';
 $messages['addresswriterror'] = 'Den valgte adresseboken er ikke skrivbar';
-$messages['contactaddedtogroup'] = 'Kontaktene ble vellykket lagt til i denne gruppen';
+$messages['contactaddedtogroup'] = 'Lagt til kontakter til denne gruppen.';
 $messages['contactremovedfromgroup'] = 'Kontaktene ble vellykket fjernet fra denne gruppen';
 $messages['importwait'] = 'Importerer, vennligst vent...';
 $messages['importerror'] = 'Feil ved importering! Den opplastede filen er ikke en gyldig vCard-fil.';
 $messages['importconfirm'] = '<b>Importerte $inserted kontakter, hoppet over $skipped oppføringer som allerede eksisterte</b>: <p><em>$names</em></p>';
+$messages['importconfirmskipped'] = '<b>Hoppen over $skipped existing entries</b>';
 $messages['opnotpermitted'] = 'Handling ikke tillatt!';
 $messages['nofromaddress'] = 'E-postadresse mangler i valgt identitet';
 $messages['editorwarning'] = 'Ved å bytte for mat til ren tekst vil all tekstformatering gå tapt. Ønsker du å fortsette?';
@@ -110,8 +128,33 @@ $messages['smtpfromerror'] = 'SMTP-feil ($code): Kunne ikke sette avsender "$fro
 $messages['smtptoerror'] = 'SMTP-feil ($code): Kunne ikke legge til mottaker "$to" ($msg)';
 $messages['smtprecipientserror'] = 'SMTP-feil ($code): Kunne ikke lese mottakerliste';
 $messages['smtperror'] = 'SMTP-feil ($code): $msg';
-$messages['emailformaterror'] = 'Feil e-postadresse: $email';
+$messages['emailformaterror'] = 'Ukorrekt e-postadresse: $email';
 $messages['toomanyrecipients'] = 'For mange mottakere. Reduser antall mottakere til $max.';
 $messages['maxgroupmembersreached'] = 'Antall gruppemedlemmer overskrider maksgrensen på $max';
+$messages['internalerror'] = 'Intern feil, prøv igjen senere.';
+$messages['contactdelerror'] = 'Kunne ikke slette kontakt(er)';
+$messages['contactdeleted'] = 'Kontakt(er) slettet uten feil.';
+$messages['contactrestoreerror'] = 'Kunne ikke gjenopprette kontakt(er).';
+$messages['contactrestored'] = 'Kontakten(e) gjennomrettet uten feil.';
+$messages['groupdeleted'] = 'Gruppen er slettet.';
+$messages['grouprenamed'] = 'Gruppen er omdøpt uten feil.';
+$messages['groupcreated'] = 'Gruppen er opprettet';
+$messages['savedsearchdeleted'] = 'Lagrede søk er slettet.';
+$messages['savedsearchdeleteerror'] = 'Kunne ikke slette lagrede søk.';
+$messages['savedsearchcreated'] = 'Lagret søk har blitt opprettet.';
+$messages['savedsearchcreateerror'] = 'Kunne ikke opprette lagret søk.';
+$messages['messagedeleted'] = 'Meldingen(e) er slettet.';
+$messages['messagemoved'] = 'Meldingen(e) er  flyttet.';
+$messages['messagecopied'] = 'Meldingen(e) er kopiert.';
+$messages['messagemarked'] = 'Meldingen(e) er markert.';
+$messages['autocompletechars'] = 'Skriv inn minst $min tegn for autofullføring.';
+$messages['autocompletemore'] = 'Flere like oppføring oppdaget. Vennligst skriv flere karakterer.';
+$messages['namecannotbeempty'] = 'Navn kan ikke være tomt.';
+$messages['nametoolong'] = 'Navnet er for langt.';
+$messages['folderupdated'] = 'Mappen er oppdatert.';
+$messages['foldercreated'] = 'Mappe opprettet.';
+$messages['invalidimageformat'] = 'Ikke et gyldig bildeformat.';
+$messages['mispellingsfound'] = 'Fant stavefeil i meldingen.';
+$messages['parentnotwritable'] = 'Kunne ikke opprette/flytte mappen i valgt overordnet mappe. Ingen tilgangsrettigheter.';
+$messages['messagetoobig'] = 'Meldingens delen er for stor til at den kan prosesseres.';
 
-?>
index f0f56d5fd9f98cfc5a1c77473959cf23954c894b..e29c4ea30209bfd6efc4136d949fac69341c1cb4 100644 (file)
@@ -2,56 +2,58 @@
 
 /*
  +-----------------------------------------------------------------------+
- | localization/ne/labels.inc                                            |
+ | localization/ne_NP/labels.inc                                         |
  |                                                                       |
  | Language file of the Roundcube Webmail client                         |
- | Copyright (C) 2007, The Roundcube Dev Team                            |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Nepali Translation by:                                                |
- | Prasanna Singh <prasanna@bhunet.com>, <prasanna@bhunet.com>           |
- | RoundcubeAuthor: Thomas Bruederli <roundcube@gmail.com>               |
+ | Author: Prasanna Singh <Unknown>                                      |
  +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $labels = array();
 $labels['welcome'] = '$product मा स्वागत छ';
-$labels['username'] = 'यà¥\81सरनà¥\87म';
-$labels['password'] = 'पासवरà¥\8dड';
+$labels['username'] = 'पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dताà¤\95à¥\8b à¤¨à¤¾म';
+$labels['password'] = 'पà¥\8dरवà¥\87श à¤¶à¤¬à¥\8dद';
 $labels['server'] = 'सर्भर';
-$labels['login'] = 'लà¤\97à¤\88न';
-$labels['logout'] = 'लगआउट';
+$labels['login'] = 'लà¤\97à¤\87न à¤\97रà¥\8dनà¥\81हà¥\8bसà¥\8d';
+$labels['logout'] = 'लगआउट गर्नुहोस्';
 $labels['mail'] = 'ई-मेल';
 $labels['settings'] = 'व्यक्तिगत रोजाईहरु';
-$labels['addressbook'] = 'ठà¥\87à¤\97ाना à¤\95िताब';
-$labels['inbox'] = 'à¤\87नबà¤\95à¥\8dस';
-$labels['drafts'] = 'ड्राफ्ट';
+$labels['addressbook'] = 'ठà¥\87à¤\97ाना à¤ªà¥\81सà¥\8dतिà¤\95ा';
+$labels['inbox'] = 'पà¥\8dरापà¥\8dति à¤®à¤\9eà¥\8dà¤\9cà¥\82षा';
+$labels['drafts'] = 'ड्राफ्टहरू';
 $labels['sent'] = 'पठईएका मेलहरु';
 $labels['trash'] = 'रद्दी टोकरी';
 $labels['junk'] = 'स्पाम';
 $labels['subject'] = 'विषय';
 $labels['from'] = 'प्रेषक';
 $labels['to'] = 'प्रापक';
-$labels['cc'] = 'कार्बन कपि';
-$labels['bcc'] = 'अंधो कार्बन कपि';
-$labels['replyto'] = 'पुन: जवाब';
+$labels['cc'] = 'बोधार्थ';
+$labels['bcc'] = 'गुप्त बोधार्थ';
+$labels['replyto'] = 'लाई-जवाफ';
+$labels['followupto'] = 'यसलाई अनुसरण गर्नुहोस्';
 $labels['date'] = 'तारिख';
 $labels['size'] = 'नाप';
-$labels['priority'] = 'मà¥\87लà¤\95à¥\8b à¤ªà¥\8dराथमिà¤\95ता';
+$labels['priority'] = 'प्राथमिकता';
 $labels['organization'] = 'संस्था';
-$labels['reply-to'] = 'पुन: जवाब';
-$labels['mailboxlist'] = 'फोलडर';
+$labels['readstatus'] = 'पढेको अवस्था';
+$labels['mailboxlist'] = 'फोल्डरहरु';
+$labels['folders'] = 'फोल्डरहरु';
 $labels['messagesfromto'] = 'मेलहरु $from बाट $to सम्म, $count मध्यबाट';
+$labels['threadsfromto'] = 'थ्रेडहरु $from बाट $to सम्म, $count मध्यबाट';
 $labels['messagenrof'] = '$nr नम्बर मेल, $count मध्यबाट';
-$labels['moveto'] = 'सार्नुहोस...';
+$labels['fromtoshort'] = '$from - $to, $count मध्यबाट';
+$labels['copy'] = 'प्रतिलिपि गर्नुहोस्';
+$labels['move'] = 'सार्नुहोस';
+$labels['moveto'] = 'यहाँ सार्नुहोस';
 $labels['download'] = 'डाऊनलोड';
 $labels['filename'] = 'फाईलको नाम';
 $labels['filesize'] = 'फाईलको नाप';
-$labels['preferhtml'] = 'ऐच-टी-ऐम-ऐल(HTML) देखाउनुहोस';
-$labels['htmlmessage'] = 'ऐच-टी-ऐम-ऐल (HTML) रूपका मेल';
-$labels['prettydate'] = 'सुन्दर तारिख';
-$labels['addtoaddressbook'] = 'ठेगाना पुस्तिकामा जोड्नुहोस';
+$labels['addtoaddressbook'] = 'ठेगाना पुस्तिकामा भर्नुहोस';
 $labels['sun'] = 'आइत';
 $labels['mon'] = 'सोम';
 $labels['tue'] = 'मंगल';
@@ -66,39 +68,72 @@ $labels['wednesday'] = 'बुधवार';
 $labels['thursday'] = 'विहिवार';
 $labels['friday'] = 'शुक्रवार';
 $labels['saturday'] = 'शनिवार';
+$labels['jan'] = 'जनवरी';
+$labels['feb'] = 'फेब्रुवरी';
+$labels['mar'] = 'मार्च';
+$labels['apr'] = 'अप्रिल';
+$labels['may'] = 'मई';
+$labels['longmay'] = 'मई';
+$labels['jun'] = 'जुन';
+$labels['jul'] = 'जुलाई';
+$labels['aug'] = 'अगस्ट';
+$labels['sep'] = 'सेप्टेम्बर';
+$labels['oct'] = 'अक्टोबर';
+$labels['nov'] = 'नोभेम्बर';
+$labels['dec'] = 'डिसेम्बर';
+$labels['longjan'] = 'जनवरी';
+$labels['longfeb'] = 'फेब्रुवरी';
+$labels['longmar'] = 'मार्च';
+$labels['longapr'] = 'अप्रिल';
+$labels['longjun'] = 'जुन';
+$labels['longjul'] = 'जुलाई';
+$labels['longaug'] = 'अगस्ट';
+$labels['longsep'] = 'सेप्टेम्बर';
+$labels['longoct'] = 'अक्टोबर';
+$labels['longnov'] = 'नोभेम्बर';
+$labels['longdec'] = 'डिसेम्बर';
 $labels['today'] = 'आज';
+$labels['refresh'] = 'ताजा पार्नुहोस्';
 $labels['checkmail'] = 'नया मेल खोज्नुहोस';
-$labels['writenewmessage'] = 'नया मेल लेखनुहोस';
-$labels['replytomessage'] = 'मेलको जवाफ दिनुहोस';
+$labels['compose'] = 'रचना गर्नुहोस्';
+$labels['writenewmessage'] = 'नया मेल लेख्नुहोस';
+$labels['reply'] = 'जवाफ दिनुहोस्';
+$labels['replytomessage'] = 'प्रेषकलाई जवाफ दिनुहोस';
 $labels['replytoallmessage'] = 'प्रेषक लगायत सबैलाई जवाफ दिनुहोस';
+$labels['replyall'] = 'सबैलाई जवाफ दिनुहोस';
+$labels['replylist'] = 'जवाफ तालिका';
+$labels['forward'] = 'फरवार्ड गर्नुहोस्';
+$labels['forwardinline'] = 'आन्तरिक पंक्तिमा फरवार्ड गर्नुहोस';
+$labels['forwardattachment'] = 'एट्याचमेन्ट जसरी फरवार्ड गर्नुहोस';
 $labels['forwardmessage'] = 'मेल अगाडि पठाउनुहोस';
-$labels['deletemessage'] = 'रद्दी टोकरीमा सार्नुहोस';
-$labels['printmessage'] = 'मेल छाप्नुहोस';
-$labels['previousmessage'] = 'पछाडिको मेल देखाउनुहोस';
-$labels['previousmessages'] = 'पछाडिको मेलका सेटहरु देखाउनुहोस';
-$labels['firstmessage'] = 'पहलो मेल देखाउनुहोस';
-$labels['firstmessages'] = 'पहलो मेलका सेटहरु देखाउनुहोस';
-$labels['nextmessage'] = 'अगाडिको मेल देखाउनुहोस';
-$labels['nextmessages'] = 'अगाडिको मेलका सेटहरु देखाउनुहोस';
-$labels['lastmessage'] = 'अन्तिम मेल देखाउनुहोस';
-$labels['lastmessages'] = 'अन्तिम मेलका सेटहरु देखाउनुहोस';
-$labels['backtolist'] = 'मेल सूची देखाउनुहोस';
+$labels['deletemessage'] = 'रद्दी टोकरीमा हाल्नुहोस';
+$labels['movemessagetotrash'] = 'सन्देशलाई रद्दी टोकरीमा सार्नुहोस';
+$labels['printmessage'] = 'यो सन्देशलाई मुद्रण गर्नुहोस्';
+$labels['previousmessage'] = 'पछाडिको सन्देश देखाउनुहोस';
+$labels['firstmessage'] = 'पहलो सन्देश देखाउनुहोस';
+$labels['nextmessage'] = 'अगाडिको सन्देश देखाउनुहोस';
+$labels['lastmessage'] = 'अन्तिम सन्देश देखाउनुहोस';
+$labels['backtolist'] = 'सन्देश सूची देखाउनुहोस';
 $labels['viewsource'] = 'श्रोत देखाउनुहोस';
-$labels['select'] = 'चुन्नुहोस';
-$labels['all'] = 'सबै |';
+$labels['mark'] = 'चिन्ह लगाउनुहोस्';
+$labels['markmessages'] = 'सन्देशमा चिन्ह लगाउनुहोस्';
+$labels['more'] = 'अझ धेरै';
+$labels['back'] = 'पछाडि';
+$labels['options'] = 'विकल्पहरू';
+$labels['select'] = 'चयन गर्नुहोस्';
+$labels['all'] = 'सबै';
 $labels['none'] = 'हैन';
+$labels['nonesort'] = 'हैन';
 $labels['unread'] = 'नपढिएका |';
 $labels['compact'] = 'छोटो गर्नुहोस';
 $labels['empty'] = 'खाली गर्ने';
-$labels['purge'] = 'नाम निशाना मेटाउनुहोस';
 $labels['quota'] = 'डिस्कको उपभोग';
 $labels['unknown'] = 'अज्ञात';
 $labels['unlimited'] = 'अनगिन्ति';
 $labels['quicksearch'] = 'स्फुर्ति खोज';
 $labels['resetsearch'] = 'पन: खोज';
-$labels['compose'] = 'मेल लखन गर्नुहोस';
-$labels['sendmessage'] = 'तुरुन्तै मेल पठाउनुहोस';
 $labels['savemessage'] = 'ड्राफ्ट जोगाउनुहोस';
+$labels['sendmessage'] = 'तुरुन्तै मेल पठाउनुहोस';
 $labels['addattachment'] = 'फाइल टाँस्नुहोस';
 $labels['charset'] = 'क्यारेक्टर सेट';
 $labels['editortype'] = 'सम्पादकको प्रकार';
@@ -149,6 +184,9 @@ $labels['manageidentities'] = 'यो खाताको पहिचानह
 $labels['newidentity'] = 'नया पहिचान';
 $labels['newitem'] = 'नया प्रकार';
 $labels['edititem'] = 'प्रकार सम्पादन गर्नुहोस';
+$labels['preferhtml'] = 'ऐच-टी-ऐम-ऐल(HTML) देखाउनुहोस';
+$labels['htmlmessage'] = 'ऐच-टी-ऐम-ऐल (HTML) रूपका मेल';
+$labels['prettydate'] = 'सुन्दर तारिख';
 $labels['setdefault'] = 'तय गर्नुहोस';
 $labels['language'] = 'भाषा';
 $labels['timezone'] = 'समय क्षेत्र';
@@ -161,7 +199,6 @@ $labels['previewpane'] = 'पूर्व दृष्य देखाउनु
 $labels['autosavedraft'] = 'स्वत ड्राफ्ट जोगाउनुहोस';
 $labels['never'] = 'काहिलै नहुने';
 $labels['folder'] = 'फोल्डर';
-$labels['folders'] = 'फोल्डरहरु';
 $labels['foldername'] = 'फोल्डरको नाम';
 $labels['subscribed'] = 'सबस्क्राईब गरियो';
 $labels['create'] = 'बनाउनुहोस';
@@ -171,4 +208,3 @@ $labels['sortby'] = 'यसरी तय गर्नुहोस';
 $labels['sortasc'] = 'पहिलो देखि अन्तिम सम्म तय गर्नुहोस';
 $labels['sortdesc'] = 'अन्तिम देखि पहिलो सम्म तय गर्नुहोस';
 
-?>
index 3949351c3298567f0ff58a737652130c64cdb670..e617593631ad50e60e3e86751b577a286d43dafb 100644 (file)
@@ -2,24 +2,23 @@
 
 /*
  +-----------------------------------------------------------------------+
- | localization/ne/messages.inc                                          |
+ | localization/ne_NP/messages.inc                                       |
  |                                                                       |
  | Language file of the Roundcube Webmail client                         |
- | Copyright (C) 2007, The Roundcube Dev Team                            |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Nepali Translation by:                                                |
- | Prasanna Singh <prasanna@bhunet.com>, <prasanna@bhunet.com>           |
- | RoundcubeAuthor: Thomas Bruederli <roundcube@gmail.com>               |
+ | Author: Thomas <Unknown>                                              |
  +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $messages = array();
 $messages['loginfailed'] = 'लागईन हुन पाएन';
 $messages['cookiesdisabled'] = 'तपाईको ब्राऊसरले कुकी स्वीकार गारिरहेको छैन';
 $messages['sessionerror'] = 'सत्र समाप्त वा अवैद्य';
-$messages['imaperror'] = 'सर्वर संग सम्पर्क हुन पाएन';
+$messages['storageerror'] = 'सर्वर संग सम्पर्क हुन पाएन';
 $messages['nomessagesfound'] = 'यो मेलबक्स मा कुनै मेल छैन';
 $messages['loggedout'] = 'सत्र समाप्त । नमास्कार!';
 $messages['mailboxempty'] = 'मेल बक्स खाली छ';
@@ -54,7 +53,6 @@ $messages['nosubjectwarning'] = 'मेलको कुनै विषय त
 $messages['nobodywarning'] = 'बिना केहि लेखि पठाउने?';
 $messages['notsentwarning'] = 'मेल पठएको छैन.. मेल रद्द गर्न चहानुहुन्छ?';
 $messages['noldapserver'] = 'कृपया खोजको निम्ति एउटा ऐलडाप सर्वर छान्नहोस';
-$messages['nocontactsreturned'] = 'कुनै सम्पर्क फेला परेनन्';
 $messages['nosearchname'] = 'कृपया सम्पर्कको नाम या ई-मेल भर्नुहोस';
 $messages['searchsuccessful'] = '$nr मेलहरु पाइयो';
 $messages['searchnomatch'] = 'खोज असफल रहयो';
@@ -72,4 +70,3 @@ $messages['copyerror'] = 'कुनै पनि ठेगानाहरु उ
 $messages['sourceisreadonly'] = 'यो ठेगाना को श्रोत पढ्नको लागि मात्र उपलब्ध छ';
 $messages['errorsavingcontact'] = 'स्मपर्कको ठेगाना जोगाउन सकिएन';
 
-?>
index 1b62fb49bbfa6bd5461a983b96808353dbb7dbb3..e9c0e787358c4497aa47ec7b53f99167c328bde6 100644 (file)
@@ -1,22 +1,17 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/nl_BE/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Dennis Heeren <dennis.heeren@gmail.com>                       |
-|         Laurens Vets <laurens@daemon.be>                              |
-|         Simon De Schoenmaeker <sds@simonds.be>                        |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 4410 2011-01-12 18:25:02Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/nl_BE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $labels = array();
@@ -47,6 +42,7 @@ $labels['priority'] = 'Prioriteit';
 $labels['organization'] = 'Organisatie';
 $labels['readstatus'] = 'Gelezen?';
 $labels['mailboxlist'] = 'Mappen';
+$labels['folders'] = 'Mappen';
 $labels['messagesfromto'] = 'Berichten $from - $to van $count';
 $labels['threadsfromto'] = 'Conversatie $from - $to van $count';
 $labels['messagenrof'] = 'Bericht $nr van $count';
@@ -76,6 +72,7 @@ $labels['feb'] = 'Feb';
 $labels['mar'] = 'Mrt';
 $labels['apr'] = 'Apr';
 $labels['may'] = 'Mei';
+$labels['longmay'] = 'Mei';
 $labels['jun'] = 'Jun';
 $labels['jul'] = 'Jul';
 $labels['aug'] = 'Aug';
@@ -87,7 +84,6 @@ $labels['longjan'] = 'Januari';
 $labels['longfeb'] = 'Februari';
 $labels['longmar'] = 'Maart';
 $labels['longapr'] = 'April';
-$labels['longmay'] = 'Mei';
 $labels['longjun'] = 'Juni';
 $labels['longjul'] = 'Juli';
 $labels['longaug'] = 'Augustus';
@@ -97,6 +93,7 @@ $labels['longnov'] = 'November';
 $labels['longdec'] = 'December';
 $labels['today'] = 'Vandaag';
 $labels['checkmail'] = 'Controleer op nieuwe berichten';
+$labels['compose'] = 'Nieuw bericht opstellen';
 $labels['writenewmessage'] = 'Nieuw bericht';
 $labels['replytomessage'] = 'Beantwoorden';
 $labels['replytoallmessage'] = 'Allen beantwoorden';
@@ -107,13 +104,9 @@ $labels['deletemessage'] = 'Dit bericht verwijderen';
 $labels['movemessagetotrash'] = 'Verplaats bericht naar verwijderde items';
 $labels['printmessage'] = 'Afdrukken';
 $labels['previousmessage'] = 'Vorig bericht';
-$labels['previousmessages'] = 'Vorige berichten';
 $labels['firstmessage'] = 'Eerste bericht';
-$labels['firstmessages'] = 'Eerste berichten';
 $labels['nextmessage'] = 'Volgende bericht';
-$labels['nextmessages'] = 'Volgende berichten';
 $labels['lastmessage'] = 'Laatste bericht';
-$labels['lastmessages'] = 'Laatste berichten';
 $labels['backtolist'] = 'Terug naar berichtenlijst';
 $labels['viewsource'] = 'Broncode bericht weergeven';
 $labels['markmessages'] = 'Markeer berichten';
@@ -121,10 +114,10 @@ $labels['markread'] = 'Als gelezen';
 $labels['markunread'] = 'Als ongelezen';
 $labels['markflagged'] = 'Selecteren';
 $labels['markunflagged'] = 'Niet Selecteren';
-$labels['messageactions'] = 'Meer acties...';
 $labels['select'] = 'Selecteren';
 $labels['all'] = 'Alles';
 $labels['none'] = 'Geen';
+$labels['nonesort'] = 'Geen';
 $labels['currpage'] = 'Huidige pagina';
 $labels['unread'] = 'Ongelezen';
 $labels['flagged'] = 'Geselecteerd';
@@ -144,7 +137,6 @@ $labels['expand_only_unread'] = 'alleen met ongelezen berichten';
 $labels['fromto'] = 'Afzender/Ontvanger';
 $labels['flag'] = 'Markeer';
 $labels['attachment'] = 'Bijlage';
-$labels['nonesort'] = 'Geen';
 $labels['sentdate'] = 'Verzenddatum';
 $labels['arrival'] = 'Ontvangstdatum';
 $labels['asc'] = 'oplopend';
@@ -156,7 +148,6 @@ $labels['listmode'] = 'Lijstweergave mode';
 $labels['folderactions'] = 'Acties voor map...';
 $labels['compact'] = 'Comprimeren';
 $labels['empty'] = 'Legen';
-$labels['purge'] = 'Opruimen';
 $labels['quota'] = 'Gebruikte schijfruimte';
 $labels['unknown'] = 'onbekend';
 $labels['unlimited'] = 'ongelimiteerd';
@@ -166,7 +157,6 @@ $labels['searchmod'] = 'Zoekopties';
 $labels['msgtext'] = 'Volledig bericht';
 $labels['openinextwin'] = 'Openen in een nieuw venster';
 $labels['emlsave'] = 'Opslaan (.eml)';
-$labels['compose'] = 'Nieuw bericht opstellen';
 $labels['editasnew'] = 'Als nieuw bewerken';
 $labels['savemessage'] = 'Bewaar als concept';
 $labels['sendmessage'] = 'Verzenden';
@@ -225,7 +215,6 @@ $labels['print'] = 'Afdrukken';
 $labels['export'] = 'Exporteren';
 $labels['exportvcards'] = 'Exporteer contactpersonen in vCard formaat';
 $labels['newcontactgroup'] = 'Maak een nieuwe contactgroep';
-$labels['groupactions'] = 'Acties voor contactgroepen...';
 $labels['previouspage'] = 'Toon vorige';
 $labels['firstpage'] = 'Toon eerste';
 $labels['nextpage'] = 'Toon volgende';
@@ -276,7 +265,7 @@ $labels['autosendknown'] = 'stuur ontvangstbevestiging naar mijn contactpersonen
 $labels['autosendknownignore'] = 'stuur ontvangstbevestiging naar mijn contactpersonen, anders negeer';
 $labels['ignore'] = 'negeer';
 $labels['readwhendeleted'] = 'Bericht na verwijderen als gelezen markeren';
-$labels['flagfordeletion'] = 'Bericht niet verwijderen maar als verwijderd markeren ';
+$labels['flagfordeletion'] = 'Bericht niet verwijderen maar als verwijderd markeren';
 $labels['skipdeleted'] = 'Verwijderde berichten niet tonen';
 $labels['deletealways'] = 'Verwijder bericht wanneer verplaatsen naar Prullenbak mislukt';
 $labels['showremoteimages'] = 'Geef externe toegevoegde berichten weer';
@@ -303,7 +292,6 @@ $labels['mainoptions'] = 'Hoofdopties';
 $labels['section'] = 'Sectie';
 $labels['maintenance'] = 'Onderhoud';
 $labels['newmessage'] = 'Nieuw bericht';
-$labels['listoptions'] = 'Lijstopties';
 $labels['signatureoptions'] = 'Opties voor handtekening';
 $labels['whenreplying'] = 'Bij beantwoorden';
 $labels['replytopposting'] = 'begin bericht boven het origineel';
@@ -322,7 +310,6 @@ $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['messagecount'] = 'Berichten';
@@ -363,4 +350,3 @@ $labels['japanese'] = 'Japans';
 $labels['korean'] = 'Koreaans';
 $labels['chinese'] = 'Chinees';
 
-?>
index ba23a1a2d2f0d7c6262f5bd21ae209904529bbda..d0d705392525ce28b716f0b053c21e3254802d41 100644 (file)
@@ -1,30 +1,27 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/nl_BE/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Dennis Heeren <dennis.heeren@gmail.com>                       |
-|         Simon De Schoenmaeker <sds@simonds.be>                        |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 4410 2011-01-12 18:25:02Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/nl_BE/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $messages = array();
 $messages['loginfailed'] = 'Aanmelden mislukt...';
 $messages['cookiesdisabled'] = 'Uw browser accepteert geen cookies...';
 $messages['sessionerror'] = 'Sessie is reeds beëindigd of is ongeldig...';
-$messages['imaperror'] = 'Kon geen verbinding maken met de IMAP server...';
+$messages['storageerror'] = 'Kon geen verbinding maken met de IMAP server...';
 $messages['servererror'] = 'Server fout!';
 $messages['servererrormsg'] = 'Server fout: $msg';
+$messages['dberror'] = 'Database Fout!';
 $messages['errorreadonly'] = 'Kon opdracht niet uitvoeren. Map is alleen-lezen';
 $messages['errornoperm'] = 'Kon opdracht niet uitvoeren. Toegang geweigerd';
 $messages['invalidrequest'] = 'Ongeldige aanvraag! Er zijn geen gegevens opgeslagen.';
@@ -33,6 +30,7 @@ $messages['loggedout'] = 'U bent nu afgemeld. Tot ziens!';
 $messages['mailboxempty'] = 'Mailbox is leeg...';
 $messages['loading'] = 'Bezig met ophalen gegevens...';
 $messages['uploading'] = 'Bezig met uploaden...';
+$messages['uploadingmany'] = 'Bestanden worden geüpload...';
 $messages['loadingdata'] = 'Bezig met gegevens ophalen...';
 $messages['checkingmail'] = 'Controleer op nieuwe berichten...';
 $messages['sendingmessage'] = 'Bericht wordt verstuurd...';
@@ -42,10 +40,12 @@ $messages['messagesaved'] = 'Bericht bewaard in Concepten';
 $messages['successfullysaved'] = 'Succesvol opgeslagen...';
 $messages['addedsuccessfully'] = 'Contactpersoon is toegevoegd...';
 $messages['contactexists'] = 'Er bestaat reeds een contactpersoon met dit e-mailadres...';
+$messages['contactnameexists'] = 'Er bestaat al een contactpersoon met deze naam.';
 $messages['blockedimages'] = 'Om uw privacy te beschermen worden de afbeeldingen in dit bericht niet getoond...';
 $messages['encryptedmessage'] = 'Dit bericht is geëncrypteerd en kan niet worden weergegeven, sorry...';
 $messages['nocontactsfound'] = 'Geen contactpersonen gevonden...';
 $messages['contactnotfound'] = 'De gevraagde contactpersoon was niet gevonden';
+$messages['contactsearchonly'] = 'Voer enkele zoektermen in om de contactpersonen te zoeken.';
 $messages['sendingfailed'] = 'Kon het bericht niet versturen...';
 $messages['senttooquickly'] = 'U moet $sec seconden wachten om het bericht te versturen.';
 $messages['errorsavingsent'] = 'Er is een fout opgetreden tijdens het opslaan van het verzonden bericht';
@@ -55,11 +55,16 @@ $messages['errorcopying'] = 'Kon de bericht(en) niet kopiëren';
 $messages['errordeleting'] = 'Kon de bericht(en) niet verwijderen...';
 $messages['errormarking'] = 'Kon de bericht(en) niet markeren...';
 $messages['deletecontactconfirm'] = 'Bent u zeker dat u de geselecteerde contactpers(o)on(en) wilt verwijderen?';
+$messages['deletegroupconfirm'] = 'Weet u zeker dat u de geselecteerde groep wilt verwijderen?';
 $messages['deletemessagesconfirm'] = 'Bent u zeker dat u de geselecteerde bericht(en) wilt verwijderen?';
 $messages['deletefolderconfirm'] = 'Weet u zeker dat u deze map wilt verwijderen?';
 $messages['purgefolderconfirm'] = 'Bent u zeker dat u alle berichten in deze map wilt verwijderen?';
+$messages['contactdeleting'] = 'Bezig met verwijderen één of meer contactpersonen...';
+$messages['groupdeleting'] = 'Groep wordt verwijderd...';
 $messages['folderdeleting'] = 'Map verwijderen...';
 $messages['foldermoving'] = 'Map verplaatsen...';
+$messages['foldersubscribing'] = 'Bezig met abonneren op map...';
+$messages['folderunsubscribing'] = 'Abonnement op map wordt opgezegd...';
 $messages['formincomplete'] = 'Het formulier is niet volledig ingevuld...';
 $messages['noemailwarning'] = 'Geef een geldig e-mailadres op...';
 $messages['nonamewarning'] = 'Geef een naam op...';
@@ -70,15 +75,18 @@ $messages['nosubjectwarning'] = 'Geen onderwerp opgegeven. Wenst u alsnog een on
 $messages['nobodywarning'] = 'Wilt u dit lege bericht versturen?';
 $messages['notsentwarning'] = 'Het bericht is niet verzonden. Wilt u het bericht verwijderen?';
 $messages['noldapserver'] = 'Kies een LDAP server waarop gezocht moet worden...';
-$messages['nocontactsreturned'] = 'Geen contactpersonen gevonden';
 $messages['nosearchname'] = 'Geen een contacpersoon of e-mailadres op...';
 $messages['notuploadedwarning'] = 'Nog niet alle bijlagen zijn geüpload. Wacht even of annuleer de upload.';
 $messages['searchsuccessful'] = '$nr berichten gevonden';
+$messages['contactsearchsuccessful'] = '$nr contactpersonen gevonden.';
 $messages['searchnomatch'] = 'Zoekopdracht leverde geen resultaten';
 $messages['searching'] = 'Bezig met zoeken...';
 $messages['checking'] = 'Bezig met controleren...';
 $messages['nospellerrors'] = 'Geen spelfouten gevonden';
 $messages['folderdeleted'] = 'Map met succes verwijderd';
+$messages['foldersubscribed'] = 'Folder succesvol geabonneerd.';
+$messages['folderunsubscribed'] = 'Folder succesvol uitgeschreven.';
+$messages['folderpurged'] = 'Folder met succes geleegd.';
 $messages['folderexpunged'] = 'Map met succes geleegd';
 $messages['deletedsuccessfully'] = 'Succesvol verwijderd';
 $messages['converting'] = 'Opmaak van het bericht wordt gewist...';
@@ -91,8 +99,11 @@ $messages['sourceisreadonly'] = 'Het adres kan niet worden opgeslagen';
 $messages['errorsavingcontact'] = 'Kon de contactpersoon niet bewaren';
 $messages['movingmessage'] = 'Bericht wordt verplaatst...';
 $messages['copyingmessage'] = 'Bericht wordt gekopieerd...';
+$messages['copyingcontact'] = 'Kopiëren contactpersonen...';
 $messages['deletingmessage'] = 'Bericht wordt verwijderd...';
 $messages['markingmessage'] = 'Bericht wordt gemarkeerd...';
+$messages['addingmember'] = 'Contactpersonen worden toegevoegd aan de groep...';
+$messages['removingmember'] = 'Contactpersonen worden verwijderd uit de groep...';
 $messages['receiptsent'] = 'Ontvangstbevestiging verstuurd';
 $messages['errorsendingreceipt'] = 'Kon de ontvangstbevestigign niet versturen';
 $messages['nodeletelastidentity'] = 'U kunt dit laatste afzendadres niet verwijderen.';
@@ -104,6 +115,7 @@ $messages['contactremovedfromgroup'] = 'Contact(en) met succes verwijderd aan de
 $messages['importwait'] = 'Importeren, even geduld...';
 $messages['importerror'] = 'Importeren mislukt! Het verstuurde bestand is geen geldig vCard bestand.';
 $messages['importconfirm'] = '<b>Er zijn $inserted contactpersonen succesvol geïmporteerd, en $skipped bestaande overgeslagen</b>:<p><em>$names</em></p>';
+$messages['importconfirmskipped'] = '<b>$skipped bestaande contactpersonen overgeslagen</b>';
 $messages['opnotpermitted'] = 'Deze actie is niet toegestaan!';
 $messages['nofromaddress'] = 'Er is geen e-mailadres in de geselecteerde identiteit';
 $messages['editorwarning'] = 'Door het overschakelen naar de platte tekst editor gaat alle opmaak verloren. Weet je zeker dat je verder wil gaan?';
@@ -113,7 +125,6 @@ $messages['smtpautherror'] = 'SMTP Fout ($code): Authenticatie mislukt';
 $messages['smtpfromerror'] = 'SMTP Fout ($code): Kon afzender "$from" niet instellen ($msg)';
 $messages['smtptoerror'] = 'SMTP Fout ($code): Kon ontvanger "$to" niet toevoegen ($msg)';
 $messages['smtprecipientserror'] = 'SMTP Fout: Kon lijst van ontvangers niet verwerken';
-$messages['smtpdsnerror'] = 'SMTP Fout: Delivery Status Notifications worden niet ondersteund';
 $messages['smtperror'] = 'SMTP Fout: $msg';
 $messages['emailformaterror'] = 'Ongeldig e-mailadres: $email';
 $messages['toomanyrecipients'] = 'Te veel geadresseerden. Verminder de hoeveelheid geadresseerden tot $max';
@@ -121,17 +132,27 @@ $messages['maxgroupmembersreached'] = 'Het aantal leden van de groep groter is d
 $messages['internalerror'] = 'Er is een interne fout opgetreden. Probeer het nogmaals';
 $messages['contactdelerror'] = 'Kon contactpersoon niet verwijderen';
 $messages['contactdeleted'] = 'Contactpersoon succesvol verwijderd';
+$messages['contactrestoreerror'] = 'Verwijderde contactpersonen konden niet hersteld worden';
+$messages['contactrestored'] = 'Contactpersonen succesvol hersteld.';
 $messages['groupdeleted'] = 'Groep succesvol verwijderd';
 $messages['grouprenamed'] = 'Groep succesvol hernoemd';
 $messages['groupcreated'] = 'Groep succesvol aangemaakt';
+$messages['savedsearchdeleted'] = 'Opgeslagen zoekopdracht successvol verwijderd.';
+$messages['savedsearchdeleteerror'] = 'Opgeslagen zoekopdracht kon niet worden verwijderd.';
+$messages['savedsearchcreated'] = 'Zoekopdracht successvol opgeslagen.';
+$messages['savedsearchcreateerror'] = 'Zoekopdracht kon niet worden opgeslagen.';
 $messages['messagedeleted'] = 'Bericht(en) succesvol verwijderd';
 $messages['messagemoved'] = 'Bericht(en) succesvol verplaatst';
 $messages['messagecopied'] = 'Bericht(en) succesvol gekopieerd';
 $messages['messagemarked'] = 'Bericht(en) succesvol gemarkeerd';
 $messages['autocompletechars'] = 'Geef ten minste $min karakters voor auto aanvullen';
+$messages['autocompletemore'] = 'Meerdere resultaten gevonden. Verfijn uw zoekopdracht.';
 $messages['namecannotbeempty'] = 'Naam kan niet leeg zijn';
 $messages['nametoolong'] = 'Naam is te lang';
 $messages['folderupdated'] = 'Map succesvol geüpdatet';
 $messages['foldercreated'] = 'Map succesvol aangemaakt';
+$messages['invalidimageformat'] = 'Geen geldig afbeeldingsformaat';
+$messages['mispellingsfound'] = 'Spelfouten gedetecteerd in bericht';
+$messages['parentnotwritable'] = 'U heeft niet voldoende rechten een map te maken / verplaatsen in deze map.';
+$messages['messagetoobig'] = 'Dit deel van uw bericht is te groot om het te verwerken.';
 
-?>
index 0186f472c1702fc975126bdd4f055b1ddf570d5a..93537c58b9351f01ec276e4cf5b51aa187a5f5a8 100644 (file)
@@ -1,24 +1,16 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/nl_NL/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Mark Moses <mark@katmoda.com>                                 |
-|         Lazlo Westerhof <roundcube@lazlo.me>                          |
-|         Laurens Vets <laurens@daemon.be>                              |
-|         Frits Letteboer <f.letteboer@radiotwenterand.nl>              |
-|         Justin van Beusekom <j.v.beusekom@beus-it.nl>                 |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 5569 2011-12-07 14:47:32Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/nl_NL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Geert Wirken                                                  |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
@@ -28,7 +20,7 @@ $labels['password'] = 'Wachtwoord';
 $labels['server'] = 'Server';
 $labels['login'] = 'Inloggen';
 $labels['logout'] = 'Uitloggen';
-$labels['mail'] = 'E-Mail';
+$labels['mail'] = 'E-mail';
 $labels['settings'] = 'Instellingen';
 $labels['addressbook'] = 'Adresboek';
 $labels['inbox'] = 'Postvak IN';
@@ -48,10 +40,13 @@ $labels['size'] = 'Grootte';
 $labels['priority'] = 'Prioriteit';
 $labels['organization'] = 'Organisatie';
 $labels['readstatus'] = 'Gelezen?';
+$labels['listoptions'] = 'Lijstopties...';
 $labels['mailboxlist'] = 'Mappen';
+$labels['folders'] = 'Mappen';
 $labels['messagesfromto'] = 'Bericht $from t/m $to van $count';
 $labels['threadsfromto'] = 'Conversatie $from t/m $to van $count';
 $labels['messagenrof'] = 'Bericht $nr van $count';
+$labels['fromtoshort'] = '$from – $to van $count';
 $labels['copy'] = 'Kopiëren';
 $labels['move'] = 'Verplaats';
 $labels['moveto'] = 'Verplaats naar...';
@@ -78,6 +73,7 @@ $labels['feb'] = 'Feb';
 $labels['mar'] = 'Mrt';
 $labels['apr'] = 'Apr';
 $labels['may'] = 'Mei';
+$labels['longmay'] = 'Mei';
 $labels['jun'] = 'Jun';
 $labels['jul'] = 'Jul';
 $labels['aug'] = 'Aug';
@@ -89,7 +85,6 @@ $labels['longjan'] = 'Januari';
 $labels['longfeb'] = 'Februari';
 $labels['longmar'] = 'Maart';
 $labels['longapr'] = 'April';
-$labels['longmay'] = 'Mei';
 $labels['longjun'] = 'Juni';
 $labels['longjul'] = 'Juli';
 $labels['longaug'] = 'Augustus';
@@ -98,12 +93,16 @@ $labels['longoct'] = 'Oktober';
 $labels['longnov'] = 'November';
 $labels['longdec'] = 'December';
 $labels['today'] = 'Vandaag';
+$labels['refresh'] = 'Vernieuwen';
 $labels['checkmail'] = 'Controleer op nieuwe berichten';
+$labels['compose'] = 'Nieuw bericht aanmaken';
 $labels['writenewmessage'] = 'Maak een nieuw bericht';
+$labels['reply'] = 'Beantwoorden';
 $labels['replytomessage'] = 'Beantwoord het bericht';
 $labels['replytoallmessage'] = 'Beantwoord lijst of afzender en alle ontvangers';
 $labels['replyall'] = 'Beantwoord alle ontvangers';
 $labels['replylist'] = 'Beantwoord lijst';
+$labels['forward'] = 'Doorsturen';
 $labels['forwardinline'] = 'Doorsturen in bericht';
 $labels['forwardattachment'] = 'Doorsturen als bijlage';
 $labels['forwardmessage'] = 'Bericht doorsturen';
@@ -116,15 +115,20 @@ $labels['nextmessage'] = 'Toon het volgende bericht';
 $labels['lastmessage'] = 'Toon het laatste bericht';
 $labels['backtolist'] = 'Terug naar berichtenoverzicht';
 $labels['viewsource'] = 'Toon bron';
+$labels['mark'] = 'Markeren';
 $labels['markmessages'] = 'Markeer berichten';
 $labels['markread'] = 'Gelezen';
 $labels['markunread'] = 'Ongelezen';
 $labels['markflagged'] = 'Selecteren';
 $labels['markunflagged'] = 'Niet selecteren';
 $labels['moreactions'] = 'Meer acties';
+$labels['more'] = 'Meer';
+$labels['back'] = 'Terug';
+$labels['options'] = 'Opties';
 $labels['select'] = 'Selecteer';
 $labels['all'] = 'Allemaal';
 $labels['none'] = 'Geen';
+$labels['nonesort'] = 'Geen';
 $labels['currpage'] = 'Huidige pagina';
 $labels['unread'] = 'Ongelezen';
 $labels['flagged'] = 'Geselecteerd';
@@ -144,15 +148,14 @@ $labels['expand_only_unread'] = 'alleen met ongelezen berichten';
 $labels['fromto'] = 'Afzender/Ontvanger';
 $labels['flag'] = 'Markeer';
 $labels['attachment'] = 'Bijlage';
-$labels['nonesort'] = 'Geen';
 $labels['sentdate'] = 'Verzend datum';
 $labels['arrival'] = 'Aankomst datum';
 $labels['asc'] = 'oplopend';
 $labels['desc'] = 'aflopend';
 $labels['listcolumns'] = 'Kolommen';
-$labels['listsorting'] = 'Sorteerkolom';
+$labels['listsorting'] = 'Sorteer op kolom';
 $labels['listorder'] = 'Sorteervolgorde';
-$labels['listmode'] = 'Lijstweergave mode';
+$labels['listmode'] = 'Weergavemodus';
 $labels['folderactions'] = 'Acties voor map...';
 $labels['compact'] = 'Opschonen';
 $labels['empty'] = 'Legen';
@@ -165,22 +168,23 @@ $labels['searchmod'] = 'Zoekopties';
 $labels['msgtext'] = 'Gehele bericht';
 $labels['openinextwin'] = 'Openen in een nieuw venster';
 $labels['emlsave'] = 'Opslaan (.eml)';
-$labels['compose'] = 'Nieuw bericht aanmaken';
 $labels['editasnew'] = 'Als nieuw bewerken';
 $labels['savemessage'] = 'Bewaar als concept';
 $labels['sendmessage'] = 'Verstuur het bericht nu';
 $labels['addattachment'] = 'Voeg een bijlage toe';
-$labels['charset'] = 'Karakterset';
+$labels['charset'] = 'Tekenset';
 $labels['editortype'] = 'Opmaak';
 $labels['returnreceipt'] = 'Ontvangstbevestiging';
-$labels['dsn'] = 'Afleverings status notificatie (DSN)';
+$labels['dsn'] = 'Afleveringsbericht (DSN)';
 $labels['mailreplyintro'] = '$sender schreef op $date:';
 $labels['originalmessage'] = 'Originele bericht';
 $labels['editidents'] = 'Bewerk identiteiten';
+$labels['spellcheck'] = 'Spelling';
 $labels['checkspelling'] = 'Controleer spelling';
 $labels['resumeediting'] = 'Doorgaan met opstellen';
 $labels['revertto'] = 'Wijzig terug in';
-$labels['attachments'] = 'Bijlages';
+$labels['attach'] = 'Bijvoegen';
+$labels['attachments'] = 'Bijlagen';
 $labels['upload'] = 'Toevoegen';
 $labels['uploadprogress'] = '$percent ($current van $total)';
 $labels['close'] = 'Sluit';
@@ -213,18 +217,18 @@ $labels['surname'] = 'Achternaam';
 $labels['middlename'] = 'Tweede naam';
 $labels['nameprefix'] = 'Initialen';
 $labels['namesuffix'] = 'Aanhef';
-$labels['nickname'] = 'Schuilnaam';
+$labels['nickname'] = 'Bijnaam';
 $labels['jobtitle'] = 'Functietitel';
 $labels['department'] = 'Afdeling';
 $labels['gender'] = 'Geslacht';
 $labels['maidenname'] = 'Meisjesnaam';
-$labels['email'] = 'E-Mail';
+$labels['email'] = 'E-mail';
 $labels['phone'] = 'Telefoon';
 $labels['address'] = 'Adres';
 $labels['street'] = 'Straat';
 $labels['locality'] = 'Stad';
 $labels['zipcode'] = 'Postcode';
-$labels['region'] = 'Regio';
+$labels['region'] = 'Provincie/staat';
 $labels['country'] = 'Land';
 $labels['birthday'] = 'Geboortedag';
 $labels['anniversary'] = 'Verjaardag';
@@ -235,14 +239,16 @@ $labels['male'] = 'Man';
 $labels['female'] = 'Vrouw';
 $labels['manager'] = 'Manager';
 $labels['assistant'] = 'Assistent';
+$labels['typeassistant'] = 'Assistent';
 $labels['spouse'] = 'Echtgenoot';
 $labels['allfields'] = 'Alle velden';
 $labels['search'] = 'Zoeken';
 $labels['advsearch'] = 'Geavanceerd zoeken';
+$labels['advanced'] = 'Geavanceerd';
 $labels['other'] = 'Anders';
+$labels['typeother'] = 'Anders';
 $labels['typehome'] = 'Thuis';
 $labels['typework'] = 'Werk';
-$labels['typeother'] = 'Anders';
 $labels['typemobile'] = 'Mobiel';
 $labels['typemain'] = 'Belangrijkste';
 $labels['typehomefax'] = 'Fax Thuis';
@@ -250,40 +256,41 @@ $labels['typeworkfax'] = 'Fax Werk';
 $labels['typecar'] = 'Auto';
 $labels['typepager'] = 'Pieper';
 $labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Assistent';
 $labels['typehomepage'] = 'Website';
 $labels['typeblog'] = 'Blog';
 $labels['typeprofile'] = 'Profiel';
 $labels['addfield'] = 'Veld toevoegen...';
 $labels['addcontact'] = 'Nieuwe contactpersoon toevoegen';
 $labels['editcontact'] = 'Contactpersoon wijzigen';
-$labels['contacts'] = 'Contacten';
+$labels['contacts'] = 'Contactpersonen';
 $labels['contactproperties'] = 'Contact eigenschappen';
 $labels['personalinfo'] = 'Persoonlijke informatie';
 $labels['edit'] = 'Wijzig';
-$labels['cancel'] = 'Annuleer';
+$labels['cancel'] = 'Annuleren';
 $labels['save'] = 'Opslaan';
 $labels['delete'] = 'Verwijder';
 $labels['rename'] = 'Hernoem';
 $labels['addphoto'] = 'Toevoegen';
 $labels['replacephoto'] = 'Vervangen';
+$labels['uploadphoto'] = 'Upload foto';
 $labels['newcontact'] = 'Voeg een nieuwe contactpersoon toe';
-$labels['deletecontact'] = 'Verwijder geselecteerde contacten';
+$labels['deletecontact'] = 'Verwijder geselecteerde contactpersonen';
 $labels['composeto'] = 'Stuur een bericht naar';
-$labels['contactsfromto'] = 'Contacten $from t/m $to van $count';
+$labels['contactsfromto'] = 'Contactpersonen $from t/m $to van $count';
 $labels['print'] = 'Afdrukken';
 $labels['export'] = 'Exporteren';
-$labels['exportvcards'] = 'Exporteer contactpersonen in vCard formaat';
+$labels['exportvcards'] = 'Exporteer contactpersonen in vCard-formaat';
 $labels['newcontactgroup'] = 'Maak een nieuwe contactgroep';
 $labels['grouprename'] = 'Groep hernoemen';
 $labels['groupdelete'] = 'Groep verwijderen';
+$labels['groupremoveselected'] = 'Verwijder geselecteerde contactpersonen van groep';
 $labels['previouspage'] = 'Vorige pagina';
 $labels['firstpage'] = 'Eerste pagina';
 $labels['nextpage'] = 'Volgende pagina';
 $labels['lastpage'] = 'Laatste pagina';
 $labels['group'] = 'Groep';
 $labels['groups'] = 'Groepen';
-$labels['personaladrbook'] = 'Persoonlijk Adresboek';
+$labels['personaladrbook'] = 'Persoonlijk adresboek';
 $labels['searchsave'] = 'Zoekopdracht opslaan';
 $labels['searchdelete'] = 'Zoekopdracht verwijderen';
 $labels['import'] = 'Importeer';
@@ -291,9 +298,10 @@ $labels['importcontacts'] = 'Contactpersonen importeren';
 $labels['importfromfile'] = 'Importeer van bestand:';
 $labels['importtarget'] = 'Voeg nieuwe contactpersonen toe aan adresboek:';
 $labels['importreplace'] = 'Vervang het complete adresboek';
-$labels['importtext'] = 'U kunt hier contactpersonen importeren vanuit een bestaand adresboek.<br />Op dit moment ondersteunen wij het <a href="http://nl.wikipedia.org/wiki/VCard">vCard</a> bestandsformaat.';
+$labels['importtext'] = 'U kunt hier contactpersonen importeren vanuit een bestaand adresboek.<br />Op dit moment wordt het <a href="http://nl.wikipedia.org/wiki/VCard">vCard</a>-formaat ondersteund.';
 $labels['done'] = 'Klaar';
 $labels['settingsfor'] = 'Instellingen voor';
+$labels['about'] = 'Over';
 $labels['preferences'] = 'Instellingen';
 $labels['userpreferences'] = 'Gebruikersinstellingen';
 $labels['editpreferences'] = 'Wijzig gebruikersinstellingen';
@@ -303,11 +311,11 @@ $labels['newidentity'] = 'Identiteit toevoegen';
 $labels['newitem'] = 'Nieuw item';
 $labels['edititem'] = 'Wijzig item';
 $labels['preferhtml'] = 'Toon HTML';
-$labels['defaultcharset'] = 'Standaard karakterset';
-$labels['htmlmessage'] = 'HTML-Bericht';
-$labels['dateformat'] = 'Datum formaat';
-$labels['timeformat'] = 'Tijd formaat';
-$labels['prettydate'] = 'Gebruiksvriendelijke data';
+$labels['defaultcharset'] = 'Standaard tekenset';
+$labels['htmlmessage'] = 'HTML-bericht';
+$labels['dateformat'] = 'Datumnotatie';
+$labels['timeformat'] = 'Tijdweergave';
+$labels['prettydate'] = 'Leesbare datums';
 $labels['setdefault'] = 'Stel in als standaard';
 $labels['autodetect'] = 'Automatisch';
 $labels['language'] = 'Taal';
@@ -315,56 +323,58 @@ $labels['timezone'] = 'Tijdzone';
 $labels['pagesize'] = 'Aantal berichten per pagina';
 $labels['signature'] = 'Ondertekening';
 $labels['dstactive'] = 'Zomertijd';
-$labels['htmleditor'] = 'Maak HTML berichten aan';
-$labels['htmlonreply'] = 'alleen bij het beantwoorden van HTML berichten';
-$labels['htmlsignature'] = 'HTML onderschrift';
+$labels['htmleditor'] = 'Berichten opstellen in HTML-opmaak';
+$labels['htmlonreply'] = 'alleen bij beantwoorden van HTML-berichten';
+$labels['htmlsignature'] = 'HTML-ondertekening';
 $labels['previewpane'] = 'Toon voorbeeldvenster';
-$labels['skin'] = 'Opmaakprofiel';
+$labels['skin'] = 'Interfacestijl';
 $labels['logoutclear'] = 'Prullenbak legen bij uitloggen';
 $labels['logoutcompact'] = 'Postvak IN opschonen bij uitloggen';
 $labels['uisettings'] = 'Gebruikersinterface';
 $labels['serversettings'] = 'Serverinstellingen';
-$labels['mailboxview'] = 'Opmaak Mailbox';
+$labels['mailboxview'] = 'Mailboxweergave';
 $labels['mdnrequests'] = 'Ontvangstmeldingen';
-$labels['askuser'] = 'vraag de gebruiker';
+$labels['askuser'] = 'altijd aan mij vragen';
 $labels['autosend'] = 'stuur automatisch';
 $labels['autosendknown'] = 'stuur ontvangstbevestiging alleen naar mijn contactpersonen, voor anderen aan mij vragen';
 $labels['autosendknownignore'] = 'stuur ontvangstbevestiging alleen naar mijn contactpersonen,  voor anderen negeren';
-$labels['ignore'] = 'negeer';
+$labels['ignore'] = 'negeren';
 $labels['readwhendeleted'] = 'Bericht na verwijderen als gelezen markeren';
-$labels['flagfordeletion'] = 'Bericht niet verwijderen maar als verwijderd markeren ';
+$labels['flagfordeletion'] = 'Bericht niet verwijderen maar als verwijderd markeren';
 $labels['skipdeleted'] = 'Verwijderde berichten niet tonen';
 $labels['deletealways'] = 'Verwijder bericht wanneer verplaatsen naar Prullenbak mislukt';
-$labels['showremoteimages'] = 'Geef externe toegevoegde berichten weer';
-$labels['fromknownsenders'] = 'Van bekende afzenders';
+$labels['deletejunk'] = 'Verwijder direct berichten in Spam';
+$labels['showremoteimages'] = 'Afbeeldingen op afstand weergeven';
+$labels['fromknownsenders'] = 'van bekende afzenders';
 $labels['always'] = 'altijd';
-$labels['showinlineimages'] = 'Toon bijgevoegde afbeeldingen onder het bericht';
+$labels['showinlineimages'] = 'Bijgevoegde afbeeldingen onder het bericht weergeven';
 $labels['autosavedraft'] = 'Concept automatisch opslaan';
 $labels['everynminutes'] = 'iedere $n minuten';
-$labels['keepalive'] = 'Controleer op nieuwe berichten';
+$labels['keepalive'] = 'Op nieuwe berichten controleren';
 $labels['never'] = 'nooit';
 $labels['immediately'] = 'onmiddellijk';
-$labels['messagesdisplaying'] = 'Berichten weergave';
+$labels['messagesdisplaying'] = 'Berichtenweergave';
 $labels['messagescomposition'] = 'Berichten aanmaken';
 $labels['mimeparamfolding'] = 'Namen van bijlagen';
 $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['force7bit'] = 'Gebruik MIME-codering voor 8-bit karakters';
 $labels['advancedoptions'] = 'Geavanceerde opties';
 $labels['focusonnewmessage'] = 'Focus browserscherm bij nieuw bericht';
-$labels['checkallfolders'] = 'Controleer alle mappen op nieuwe berichten';
-$labels['displaynext'] = 'Na verplaatsen/verwijderen het volgende bericht tonen';
+$labels['checkallfolders'] = 'In alle mappen op nieuwe berichten controleren';
+$labels['displaynext'] = 'Ga naar volgend bericht na verwijderen of verplaatsen';
+$labels['defaultfont'] = 'Standaardlettertype voor HTML-berichten';
 $labels['mainoptions'] = 'Hoofdopties';
+$labels['browseroptions'] = 'Browserinstellingen';
 $labels['section'] = 'Sectie';
 $labels['maintenance'] = 'Onderhoud';
 $labels['newmessage'] = 'Nieuw bericht';
-$labels['listoptions'] = 'Lijstopties';
 $labels['signatureoptions'] = 'Instellingen voor ondertekening';
-$labels['whenreplying'] = 'bij antwoorden';
+$labels['whenreplying'] = 'Bij antwoorden';
 $labels['replytopposting'] = 'begin bericht boven het origineel';
 $labels['replybottomposting'] = 'begin bericht onder het origineel';
-$labels['replyremovesignature'] = 'Verwijder ondertekening uit het origneel bij het antwoorden';
+$labels['replyremovesignature'] = 'Verwijder oorspronkelijke ondertekening van bericht bij beantwoorden';
 $labels['autoaddsignature'] = 'Ondertekening automatisch toevoegen';
 $labels['newmessageonly'] = 'alleen bij nieuwe berichten';
 $labels['replyandforwardonly'] = 'alleen bij antwoorden en doorsturen';
@@ -372,21 +382,22 @@ $labels['replysignaturepos'] = 'Ondertekening plaatsen bij antwoorden of doorstu
 $labels['belowquote'] = 'onder het citaat';
 $labels['abovequote'] = 'boven het citaat';
 $labels['insertsignature'] = 'Ondertekening invoegen';
-$labels['previewpanemarkread'] = 'Markeer voorbeeld bericht als gelezen';
+$labels['previewpanemarkread'] = 'Markeer voorbeeldberichten als gelezen';
 $labels['afternseconds'] = 'Na $n seconden';
 $labels['reqmdn'] = 'Vraag altijd een ontvangstbevestiging';
-$labels['reqdsn'] = 'Vraag altijd een afleverings status notificatie (DSN)';
-$labels['replysamefolder'] = 'Plaats antwoorden in de folder van het beantwoorde bericht';
-$labels['defaultaddressbook'] = 'Voeg nieuw contactpersoon toe aan geselecteerd adresboek';
-$labels['autocompletesingle'] = 'Sla alternatieve E-mail adressen over bij automatisch aanvullen';
-$labels['spellcheckbeforesend'] = 'Controleer slepping voordat het bericht wordt verzonden';
+$labels['reqdsn'] = 'Vraag altijd om een afleveringsbericht';
+$labels['replysamefolder'] = 'Bewaar reacties in de map van het beantwoorde bericht';
+$labels['defaultaddressbook'] = 'Nieuwe contactpersonen toevoegen aan gekozen adresboek';
+$labels['autocompletesingle'] = 'Alternatieve e-mailadressen niet gebruiken bij automatisch aanvullen';
+$labels['listnamedisplay'] = 'Contactpersonen weergeven als';
+$labels['spellcheckbeforesend'] = 'Controleer spelling voor het versturen van een bericht';
 $labels['spellcheckoptions'] = 'Instellingen spellingscontrole';
 $labels['spellcheckignoresyms'] = 'Negeer woorden met symbolen';
 $labels['spellcheckignorenums'] = 'Negeer woorden met cijfers';
 $labels['spellcheckignorecaps'] = 'Negeer woorden welke volledig uit hoofdletters bestaan';
 $labels['addtodict'] = 'Voeg toe aan woordenboek';
+$labels['mailtoprotohandler'] = 'Registreer protocolhandler voor mailto: links';
 $labels['folder'] = 'Map';
-$labels['folders'] = 'Mappen';
 $labels['foldername'] = 'Mapnaam';
 $labels['subscribed'] = 'Geabonneerd';
 $labels['messagecount'] = 'Berichten';
@@ -396,12 +407,12 @@ $labels['managefolders'] = 'Beheer mappen';
 $labels['specialfolders'] = 'Speciale mappen';
 $labels['properties'] = 'Eigenschappen';
 $labels['folderproperties'] = 'Map eigenschappen';
-$labels['parentfolder'] = 'Hoofd folder';
+$labels['parentfolder'] = 'Bovenliggende map';
 $labels['location'] = 'Locatie';
 $labels['info'] = 'Informatie';
-$labels['getfoldersize'] = 'Klik hier voor de map grootte';
+$labels['getfoldersize'] = 'Klik om de omvang van de map te berekenen';
 $labels['changesubscription'] = 'Klik voor het wijzigen van de inschrijving';
-$labels['foldertype'] = 'Mapgrootte';
+$labels['foldertype'] = 'Maptype';
 $labels['personalfolder'] = 'Privé map';
 $labels['otherfolder'] = 'Map van andere gebruiker';
 $labels['sharedfolder'] = 'Publieke map';
@@ -409,14 +420,19 @@ $labels['sortby'] = 'Sorteer op';
 $labels['sortasc'] = 'Sorteer oplopend';
 $labels['sortdesc'] = 'Sorteer aflopend';
 $labels['undo'] = 'Ongedaan maken';
+$labels['plugin'] = 'Invoegtoepassing';
+$labels['version'] = 'Versie';
+$labels['source'] = 'Broncode';
+$labels['license'] = 'Licentie';
+$labels['support'] = 'Hulp nodig?';
 $labels['B'] = 'B';
 $labels['KB'] = 'KB';
 $labels['MB'] = 'MB';
 $labels['GB'] = 'GB';
 $labels['unicode'] = 'Unicode';
 $labels['english'] = 'Engels';
-$labels['westerneuropean'] = 'West-Europeaans';
-$labels['easterneuropean'] = 'Oost-Europeaans';
+$labels['westerneuropean'] = 'West-Europees';
+$labels['easterneuropean'] = 'Oost-Europees';
 $labels['southeasterneuropean'] = 'Zuidoost Europees';
 $labels['baltic'] = 'Baltisch';
 $labels['cyrillic'] = 'Cyrillisch';
@@ -432,4 +448,3 @@ $labels['japanese'] = 'Japans';
 $labels['korean'] = 'Koreaans';
 $labels['chinese'] = 'Chinees';
 
-?>
index 782065c33a3a2d42c45372e65c53988ee54854b8..367b9197d11d94b8b208d2e2dd3076d81caf59b0 100644 (file)
@@ -9,19 +9,20 @@
  | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Geert Wirken <Unknown>                                        |
+ | Author: Geert Wirken                                                  |
  +-----------------------------------------------------------------------+
- @version $Id: messages.inc 5741 2012-01-08 16:20:12Z thomasb $
 */
 
 $messages = array();
+$messages['errortitle'] = 'Er is een fout opgetreden!';
 $messages['loginfailed'] = 'Inloggen mislukt.';
 $messages['cookiesdisabled'] = 'Uw browser accepteert geen cookies.';
 $messages['sessionerror'] = 'Uw sessie is verlopen of ongeldig.';
-$messages['imaperror'] = 'Verbinding met IMAP-server mislukt.';
+$messages['storageerror'] = 'Verbinding met IMAP-server mislukt.';
 $messages['servererror'] = 'Serverfout!';
 $messages['servererrormsg'] = 'Serverfout: $msg';
 $messages['dberror'] = 'Databasefout!';
+$messages['requesttimedout'] = 'Opdracht duurde te lang';
 $messages['errorreadonly'] = 'Niet in staat om de bewerking uit te voeren. Map is alleen-lezen.';
 $messages['errornoperm'] = 'Niet in staat om de bewerking uit te voeren. Toestemming geweigerd.';
 $messages['invalidrequest'] = 'Ongeldige aanvraag! Er zijn geen gegevens opgeslagen.';
@@ -84,8 +85,8 @@ $messages['searching'] = 'Zoeken...';
 $messages['checking'] = 'Controleren...';
 $messages['nospellerrors'] = 'Geen spelfouten gevonden.';
 $messages['folderdeleted'] = 'Map successvol verwijderd.';
-$messages['foldersubscribed'] = 'Folder succesvol geabonneerd.';
-$messages['folderunsubscribed'] = 'Folder succesvol uitgeschreven.';
+$messages['foldersubscribed'] = 'Succesvol geabonneerd op map.';
+$messages['folderunsubscribed'] = 'Abonnement op map succesvol opgezegd.';
 $messages['folderpurged'] = 'Folder met succes geleegd.';
 $messages['folderexpunged'] = 'Folder succesvol geleegd.';
 $messages['deletedsuccessfully'] = 'Met succes verwijderd.';
index 9146517fb93808648f6c1bd8b428a71ed6edf4fa..d932057ae9f8690b52cf5658d645a62f462348ad 100644 (file)
@@ -1,21 +1,17 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/nn_NO/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Per-Stian Vatne <psv@orsta.org>                               |
-| Update: Odin Omdal Hørthe <odin.omdal@gmail.com>                      |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 5290 2011-09-28 17:09:50Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/nn_NO/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $labels = array();
@@ -44,7 +40,8 @@ $labels['date'] = 'Dato';
 $labels['size'] = 'Storleik';
 $labels['priority'] = 'Prioritet';
 $labels['organization'] = 'Organisasjon';
-$labels['mailboxlist'] = 'Katalogar';
+$labels['mailboxlist'] = 'Mapper';
+$labels['folders'] = 'Mapper';
 $labels['messagesfromto'] = 'Meldingar $from til $to av $count';
 $labels['threadsfromto'] = 'Trådar $from til $to ($count stk)';
 $labels['messagenrof'] = 'Melding $nr av $count';
@@ -74,6 +71,7 @@ $labels['feb'] = 'Feb';
 $labels['mar'] = 'Mar';
 $labels['apr'] = 'Apr';
 $labels['may'] = 'Mai';
+$labels['longmay'] = 'Mai';
 $labels['jun'] = 'Jun';
 $labels['jul'] = 'Jul';
 $labels['aug'] = 'Aug';
@@ -85,7 +83,6 @@ $labels['longjan'] = 'Januar';
 $labels['longfeb'] = 'Februar';
 $labels['longmar'] = 'Mars';
 $labels['longapr'] = 'April';
-$labels['longmay'] = 'Mai';
 $labels['longjun'] = 'Juni';
 $labels['longjul'] = 'Juli';
 $labels['longaug'] = 'August';
@@ -95,6 +92,7 @@ $labels['longnov'] = 'November';
 $labels['longdec'] = 'Desember';
 $labels['today'] = 'I dag';
 $labels['checkmail'] = 'Sjå etter nye meldingar';
+$labels['compose'] = 'Skriv ei melding';
 $labels['writenewmessage'] = 'Skriv ei ny melding';
 $labels['replytomessage'] = 'Svar på meldinga';
 $labels['replytoallmessage'] = 'Svar til sendar og alle mottakarar';
@@ -121,6 +119,7 @@ $labels['moreactions'] = 'Fleire handlingar';
 $labels['select'] = 'Vel';
 $labels['all'] = 'Alle';
 $labels['none'] = 'Ingen';
+$labels['nonesort'] = 'Ingen';
 $labels['currpage'] = 'Gjeldande side';
 $labels['unread'] = 'Uleste';
 $labels['flagged'] = 'Flagga';
@@ -140,7 +139,6 @@ $labels['expand_only_unread'] = 'berre med ulesne epostar';
 $labels['fromto'] = 'Sendar/Mottakar';
 $labels['flag'] = 'Flagg';
 $labels['attachment'] = 'Vedlegg';
-$labels['nonesort'] = 'Ingen';
 $labels['sentdate'] = 'Sendtdato';
 $labels['arrival'] = 'Mottaksdato';
 $labels['asc'] = 'Alfabetisk';
@@ -161,7 +159,6 @@ $labels['searchmod'] = 'Søkeutsagn';
 $labels['msgtext'] = 'Heile eposten';
 $labels['openinextwin'] = 'Opna i nytt vindauga';
 $labels['emlsave'] = 'Last ned (.eml)';
-$labels['compose'] = 'Skriv ei melding';
 $labels['editasnew'] = 'Rediger som ny';
 $labels['savemessage'] = 'Lagra kladd';
 $labels['sendmessage'] = 'Send meldinga no';
@@ -224,13 +221,14 @@ $labels['notes'] = 'Notatar';
 $labels['male'] = 'Mann';
 $labels['female'] = 'Kvinne';
 $labels['assistant'] = 'Assistent';
+$labels['typeassistant'] = 'Assistent';
 $labels['allfields'] = 'Alle felt';
 $labels['search'] = 'Søk';
 $labels['advsearch'] = 'Avansert søk';
 $labels['other'] = 'Andre';
+$labels['typeother'] = 'Andre';
 $labels['typehome'] = 'Heim';
 $labels['typework'] = 'Jobb';
-$labels['typeother'] = 'Andre';
 $labels['typemobile'] = 'Mobil';
 $labels['typemain'] = 'Hovud';
 $labels['typehomefax'] = 'Heimefax';
@@ -238,7 +236,6 @@ $labels['typeworkfax'] = 'Jobbfax';
 $labels['typecar'] = 'Bil';
 $labels['typepager'] = 'Personsøkjar';
 $labels['typevideo'] = 'VIdeo';
-$labels['typeassistant'] = 'Assistent';
 $labels['typehomepage'] = 'Heimeside';
 $labels['typeblog'] = 'Blogg';
 $labels['typeprofile'] = 'Profil';
@@ -343,7 +340,6 @@ $labels['mainoptions'] = 'Hovudinnstillingar';
 $labels['section'] = 'Seksjon';
 $labels['maintenance'] = 'Vedlikehald';
 $labels['newmessage'] = 'Ny epost';
-$labels['listoptions'] = 'Liste-innstillingar';
 $labels['signatureoptions'] = 'Signatur-innstillingar';
 $labels['whenreplying'] = 'Når du svarar';
 $labels['replytopposting'] = 'start ny epost oppante originalen';
@@ -359,7 +355,6 @@ $labels['insertsignature'] = 'Sett inn signatur';
 $labels['previewpanemarkread'] = 'Merk forehandsviste epostar som leste';
 $labels['afternseconds'] = 'etter $n sekund';
 $labels['folder'] = 'Mappe';
-$labels['folders'] = 'Mapper';
 $labels['foldername'] = 'Mappenamn';
 $labels['subscribed'] = 'Abonnert';
 $labels['messagecount'] = 'Meldingar';
@@ -400,4 +395,3 @@ $labels['japanese'] = 'Japansk';
 $labels['korean'] = 'Koreansk';
 $labels['chinese'] = 'Kinesisk';
 
-?>
index 17376600b8d23635beca8a988ca75b2810e9430a..b038f40e90f5362670f9da48e31aceb2722221ab 100644 (file)
@@ -1,28 +1,24 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/nn_NO/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Per-Stian Vatne <psv@orsta.org>                               |
-| Update: Odin Omdal Hørthe <odin.omdal@gmail.com>                      |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 4410 2011-01-12 18:25:02Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/nn_NO/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $messages = array();
 $messages['loginfailed'] = 'Feil ved innlogging';
 $messages['cookiesdisabled'] = 'Nettlesaren din tillet ikkje informasjonskapslar (cookies)';
 $messages['sessionerror'] = 'Sesjonen din er ulovleg eller har gått ut på tid';
-$messages['imaperror'] = 'Feil ved tilkopling til IMAP-tenar';
+$messages['storageerror'] = 'Feil ved tilkopling til IMAP-tenar';
 $messages['servererror'] = 'Tenarfeil!';
 $messages['invalidrequest'] = 'Eg forstår ingen ting! Ingen data lagra.';
 $messages['nomessagesfound'] = 'Ingen meldingar i denne postkassa';
@@ -67,7 +63,6 @@ $messages['nosubjectwarning'] = 'Emnefeltet er tomt. Vil du skriva inn eitt emne
 $messages['nobodywarning'] = 'Senda melding utan tekst?';
 $messages['notsentwarning'] = 'Meldinga er ikkje sendt. Vil du kasta ho?';
 $messages['noldapserver'] = 'Vel LDAP-tenar å søkja i';
-$messages['nocontactsreturned'] = 'Fann ingen kontaktar';
 $messages['nosearchname'] = 'Skriv inn kontaktnamn eller epostadressa';
 $messages['notuploadedwarning'] = 'Ikkje alle vedlegga er lasta opp. Vent eller avslutt opplastinga.';
 $messages['searchsuccessful'] = 'Fann $nr meldingar';
@@ -112,4 +107,3 @@ $messages['emailformaterror'] = 'Ukorrekt e-postadresse: $email';
 $messages['toomanyrecipients'] = 'For mange mottakarar. Senk talet til maksimalt $max.';
 $messages['maxgroupmembersreached'] = 'Du kan berre ha $max grupper, du er over grensa søta.';
 
-?>
index 3ca453c49f4c10c46df987384d8df77f2aa263e3..40e705ac9dac327556b4e30909655673a0e8c5dd 100644 (file)
@@ -1,25 +1,16 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/pl_PL/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Tomasz Pajor        <t.pajor@kei.pl>                          |
-|         Sławomir Cichoń     <slawek.cichon@gmail.com>                 |
-|         Janusz Zamecki      <janusz@zamecki.eu>                       |
-|         Mariusz Szulerecki  <nob@force.eu.org>                        |
-|         Wojciech Szczepucha <donkoyote@gmail.com>                     |
-|         Aleksander Machniak <alec@alec.pl>                            |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 5681 2012-01-01 13:36:22Z alec $
-
+ +-----------------------------------------------------------------------+
+ | localization/pl_PL/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Szymon Sieciński                                             |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
@@ -43,15 +34,19 @@ $labels['to'] = 'Do';
 $labels['cc'] = 'Kopia';
 $labels['bcc'] = 'Ukryta kopia';
 $labels['replyto'] = 'Odpowiedź do';
+$labels['followupto'] = 'Kontynuacja do';
 $labels['date'] = 'Data';
 $labels['size'] = 'Rozmiar';
-$labels['readstatus'] = 'Przeczytano';
 $labels['priority'] = 'Priorytet';
 $labels['organization'] = 'Organizacja';
+$labels['readstatus'] = 'Przeczytano';
+$labels['listoptions'] = 'Opcje listy...';
 $labels['mailboxlist'] = 'Foldery';
+$labels['folders'] = 'Foldery';
 $labels['messagesfromto'] = 'Wiadomości od $from do $to z $count';
 $labels['threadsfromto'] = 'Wątki od $from do $to z $count';
 $labels['messagenrof'] = 'Wiadomość $nr z $count';
+$labels['fromtoshort'] = '$from - $to z $count';
 $labels['copy'] = 'Kopiuj';
 $labels['move'] = 'Przenieś';
 $labels['moveto'] = 'Przenieś do...';
@@ -76,20 +71,20 @@ $labels['saturday'] = 'Sobota';
 $labels['jan'] = 'sty';
 $labels['feb'] = 'lut';
 $labels['mar'] = 'mar';
-$labels['apr'] = 'kwi';
-$labels['may'] = 'maj';
-$labels['jun'] = 'cze';
-$labels['jul'] = 'lip';
-$labels['aug'] = 'sie';
-$labels['sep'] = 'wrz';
-$labels['oct'] = 'paź';
-$labels['nov'] = 'lis';
-$labels['dec'] = 'gru';
+$labels['apr'] = 'Kwi';
+$labels['may'] = 'Maj';
+$labels['longmay'] = 'Maj';
+$labels['jun'] = 'Cze';
+$labels['jul'] = 'Lip';
+$labels['aug'] = 'Sie';
+$labels['sep'] = 'Wrz';
+$labels['oct'] = 'Paź';
+$labels['nov'] = 'Lis';
+$labels['dec'] = 'Gru';
 $labels['longjan'] = 'styczeń';
 $labels['longfeb'] = 'luty';
 $labels['longmar'] = 'marzec';
 $labels['longapr'] = 'kwiecień';
-$labels['longmay'] = 'maj';
 $labels['longjun'] = 'czerwiec';
 $labels['longjul'] = 'lipiec';
 $labels['longaug'] = 'sierpień';
@@ -98,10 +93,18 @@ $labels['longoct'] = 'październik';
 $labels['longnov'] = 'listopad';
 $labels['longdec'] = 'grudzień';
 $labels['today'] = 'Dzisiaj';
+$labels['refresh'] = 'Odśwież';
 $labels['checkmail'] = 'Sprawdź skrzynkę';
+$labels['compose'] = 'Utwórz';
 $labels['writenewmessage'] = 'Utwórz nową wiadomość';
+$labels['reply'] = 'Odpowiedz';
 $labels['replytomessage'] = 'Odpowiedz nadawcy';
 $labels['replytoallmessage'] = 'Odpowiedz wszystkim';
+$labels['replyall'] = 'Odpowiedz wszystkim';
+$labels['replylist'] = 'Odpowiedz na listę';
+$labels['forward'] = 'Przekaż';
+$labels['forwardinline'] = 'Prześlij w treści';
+$labels['forwardattachment'] = 'Prześlij jako załącznik';
 $labels['forwardmessage'] = 'Prześlij dalej';
 $labels['deletemessage'] = 'Usuń wiadomości';
 $labels['movemessagetotrash'] = 'Przenieś wiadomości do Kosza';
@@ -112,15 +115,20 @@ $labels['nextmessage'] = 'Następna wiadomość';
 $labels['lastmessage'] = 'Ostatnia wiadomość';
 $labels['backtolist'] = 'Pokaż listę wiadomości';
 $labels['viewsource'] = 'Pokaż źródło';
+$labels['mark'] = 'Oznacz';
 $labels['markmessages'] = 'Oznacz wiadomości';
 $labels['markread'] = 'Jako przeczytane';
 $labels['markunread'] = 'Jako nieprzeczytane';
 $labels['markflagged'] = 'Jako oflagowane';
 $labels['markunflagged'] = 'Jako nieoflagowane';
-$labels['messageactions'] = 'Więcej akcji...';
+$labels['moreactions'] = 'Więcej akcji...';
+$labels['more'] = 'Więcej';
+$labels['back'] = 'Wstecz';
+$labels['options'] = 'Ustawienia';
 $labels['select'] = 'Zaznacz';
 $labels['all'] = 'Wszystkie';
 $labels['none'] = 'Brak';
+$labels['nonesort'] = 'Brak';
 $labels['currpage'] = 'Bieżąca strona';
 $labels['unread'] = 'Nieprzeczytane';
 $labels['flagged'] = 'Oznaczone';
@@ -140,7 +148,6 @@ $labels['expand_only_unread'] = 'tylko nieprzeczytane';
 $labels['fromto'] = 'Od/Do';
 $labels['flag'] = 'Flaga';
 $labels['attachment'] = 'Załącznik';
-$labels['nonesort'] = 'Brak';
 $labels['sentdate'] = 'Data wysyłki';
 $labels['arrival'] = 'Data odbioru';
 $labels['asc'] = 'rosnąco';
@@ -149,6 +156,7 @@ $labels['listcolumns'] = 'Kolumny';
 $labels['listsorting'] = 'Porządek sortowania';
 $labels['listorder'] = 'Kierunek sortowania';
 $labels['listmode'] = 'Typ listy';
+$labels['folderactions'] = 'Działania na folderach...';
 $labels['compact'] = 'Porządkuj';
 $labels['empty'] = 'Opróżnij';
 $labels['quota'] = 'Użyte miejsce';
@@ -160,7 +168,6 @@ $labels['searchmod'] = 'Parametry wyszukiwania';
 $labels['msgtext'] = 'Cała wiadomość';
 $labels['openinextwin'] = 'Otwórz w nowym oknie';
 $labels['emlsave'] = 'Pobierz (.eml)';
-$labels['compose'] = 'Utwórz wiadomość';
 $labels['editasnew'] = 'Edytuj jako nową';
 $labels['savemessage'] = 'Zapisz kopię roboczą';
 $labels['sendmessage'] = 'Wyślij teraz';
@@ -168,12 +175,20 @@ $labels['addattachment'] = 'Dołącz plik';
 $labels['charset'] = 'Kodowanie znaków';
 $labels['editortype'] = 'Typ edytora';
 $labels['returnreceipt'] = 'Potwierdzenie odbioru';
+$labels['dsn'] = 'Status dostarczenia (DSN)';
+$labels['mailreplyintro'] = 'W dniu $date, $sender napisał(a):';
+$labels['originalmessage'] = 'Wiadomość oryginalna';
+$labels['editidents'] = 'Edytuj tożsamości';
+$labels['spellcheck'] = 'Pisownia';
 $labels['checkspelling'] = 'Sprawdź pisownię';
 $labels['resumeediting'] = 'Zakończ sprawdzanie pisowni';
 $labels['revertto'] = 'Powróć do';
+$labels['attach'] = 'Załącz';
 $labels['attachments'] = 'Załączniki';
-$labels['upload'] = 'Wyślij';
+$labels['upload'] = 'Prześlij';
+$labels['uploadprogress'] = '$percent ($current z $total)';
 $labels['close'] = 'Zamknij';
+$labels['messageoptions'] = 'Opcje wiadomości...';
 $labels['low'] = 'Bardzo niski';
 $labels['lowest'] = 'Niski';
 $labels['normal'] = 'Normalny';
@@ -182,6 +197,7 @@ $labels['highest'] = 'Bardzo wysoki';
 $labels['nosubject'] = '(brak tematu)';
 $labels['showimages'] = 'Wyświetl obrazki';
 $labels['alwaysshow'] = 'Zawsze wyświetlaj obrazki od $sender';
+$labels['isdraft'] = 'To jest kopia robocza wiadomości.';
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = 'Zwykły tekst';
 $labels['savesentmessagein'] = 'Zapisz wiadomość w';
@@ -190,6 +206,7 @@ $labels['maxuploadsize'] = 'Maksymalny rozmiar pliku to $size';
 $labels['addcc'] = 'Dodaj Cc';
 $labels['addbcc'] = 'Dodaj Bcc';
 $labels['addreplyto'] = 'Dodaj Reply-To';
+$labels['addfollowupto'] = 'Dodaj Followup-To';
 $labels['mdnrequest'] = 'Nadawca zażądał potwierdzenia przeczytania tej wiadomości. Czy chcesz go powiadomić?';
 $labels['receiptread'] = 'Potwierdzenie otrzymania';
 $labels['yourmessage'] = 'To jest potwierdzenie dostarczenia Twojej wiadomości';
@@ -197,13 +214,65 @@ $labels['receiptnote'] = 'Uwaga: To potwierdzenie dostarczenia wiadomości oznac
 $labels['name'] = 'Nazwa';
 $labels['firstname'] = 'Imię';
 $labels['surname'] = 'Nazwisko';
+$labels['middlename'] = 'Drugie imię';
+$labels['nameprefix'] = 'Prefiks';
+$labels['namesuffix'] = 'Sufiks';
+$labels['nickname'] = 'Pseudonim';
+$labels['jobtitle'] = 'Zawód';
+$labels['department'] = 'Oddział';
+$labels['gender'] = 'Płeć';
+$labels['maidenname'] = 'N. panieńskie';
 $labels['email'] = 'E-Mail';
+$labels['phone'] = 'Telefon';
+$labels['address'] = 'Adres';
+$labels['street'] = 'Ulica';
+$labels['locality'] = 'Miasto';
+$labels['zipcode'] = 'Kod';
+$labels['region'] = 'Region';
+$labels['country'] = 'Kraj';
+$labels['birthday'] = 'Urodziny';
+$labels['anniversary'] = 'Jubileusz';
+$labels['website'] = 'Strona internetowa';
+$labels['instantmessenger'] = 'Komunikator';
+$labels['notes'] = 'Notatki';
+$labels['male'] = 'mężczyzna';
+$labels['female'] = 'kobieta';
+$labels['manager'] = 'Kierownik';
+$labels['assistant'] = 'Asystent';
+$labels['typeassistant'] = 'Asystent';
+$labels['spouse'] = 'Małżonek';
+$labels['allfields'] = 'Wszystkie pola';
+$labels['search'] = 'Szukaj';
+$labels['advsearch'] = 'Wyszukiwanie zaawansowane';
+$labels['advanced'] = 'Zaawansowane';
+$labels['other'] = 'Inne';
+$labels['typeother'] = 'Inne';
+$labels['typehome'] = 'Dom';
+$labels['typework'] = 'Praca';
+$labels['typemobile'] = 'Komórkowy';
+$labels['typemain'] = 'Główny';
+$labels['typehomefax'] = 'Fax domowy';
+$labels['typeworkfax'] = 'Fax firmowy';
+$labels['typecar'] = 'Samochód';
+$labels['typepager'] = 'Pager';
+$labels['typevideo'] = 'Wideo';
+$labels['typehomepage'] = 'Strona domowa';
+$labels['typeblog'] = 'Blog';
+$labels['typeprofile'] = 'Profil';
+$labels['addfield'] = 'Dodaj pole...';
 $labels['addcontact'] = 'Dodaj nowy kontakt do książki adresowej';
 $labels['editcontact'] = 'Edytuj kontakt';
+$labels['contacts'] = 'Kontakty';
+$labels['contactproperties'] = 'Właściwości';
+$labels['personalinfo'] = 'Informacje osobiste';
 $labels['edit'] = 'Edytuj';
 $labels['cancel'] = 'Anuluj';
 $labels['save'] = 'Zapisz';
 $labels['delete'] = 'Usuń';
+$labels['rename'] = 'Zmień nazwę';
+$labels['addphoto'] = 'Dodaj';
+$labels['replacephoto'] = 'Zamień';
+$labels['uploadphoto'] = 'Wyślij zdjęcie';
 $labels['newcontact'] = 'Dodaj nowy kontakt';
 $labels['deletecontact'] = 'Usuń zaznaczone kontakty';
 $labels['composeto'] = 'Utwórz wiadomość do wybranych kontaktów';
@@ -212,7 +281,9 @@ $labels['print'] = 'Drukuj';
 $labels['export'] = 'Eksportuj';
 $labels['exportvcards'] = 'Eksport kontaktów w formacie vCard';
 $labels['newcontactgroup'] = 'Utwórz nową grupę';
-$labels['groupactions'] = 'Działania na grupach...';
+$labels['grouprename'] = 'Zmień nazwę grupy';
+$labels['groupdelete'] = 'Usuń grupę';
+$labels['groupremoveselected'] = 'Usuń wybrane kontakty z grupy';
 $labels['previouspage'] = 'Poprzednia strona';
 $labels['firstpage'] = 'Pierwsza strona';
 $labels['nextpage'] = 'Następna strona';
@@ -220,13 +291,17 @@ $labels['lastpage'] = 'Ostatnia strona';
 $labels['group'] = 'Grupa';
 $labels['groups'] = 'Grupy';
 $labels['personaladrbook'] = 'Kontakty osobiste';
+$labels['searchsave'] = 'Zapisz wyszukiwanie';
+$labels['searchdelete'] = 'Usuń wyszukiwanie';
 $labels['import'] = 'Importuj';
 $labels['importcontacts'] = 'Import kontaktów';
 $labels['importfromfile'] = 'Import z pliku:';
+$labels['importtarget'] = 'Dodaj nowe kontakty do książki adresowej:';
 $labels['importreplace'] = 'Zastąp całą książkę adresową';
 $labels['importtext'] = 'Możesz dodać kontakty z istniejącej książki adresowej.<br/>Aktualnie możliwy jest import kontaktów w formacie <a href="http://en.wikipedia.org/wiki/VCard">vCard</a>.';
 $labels['done'] = 'Wykonane';
 $labels['settingsfor'] = 'Ustawienia dla';
+$labels['about'] = 'O programie';
 $labels['preferences'] = 'Preferencje';
 $labels['userpreferences'] = 'Preferencje użytkownika';
 $labels['editpreferences'] = 'Edytuj preferencje';
@@ -238,6 +313,8 @@ $labels['edititem'] = 'Edytuj';
 $labels['preferhtml'] = 'Domyślny HTML';
 $labels['defaultcharset'] = 'Domyślny zestaw znaków';
 $labels['htmlmessage'] = 'Wiadomość HTML';
+$labels['dateformat'] = 'Format daty';
+$labels['timeformat'] = 'Format czasu';
 $labels['prettydate'] = 'Ładne daty';
 $labels['setdefault'] = 'Domyślna';
 $labels['autodetect'] = '- wybór automatyczny -';
@@ -266,6 +343,7 @@ $labels['readwhendeleted'] = 'Podczas usuwania oznacz wiadomość jako przeczyta
 $labels['flagfordeletion'] = 'Oznacz wiadomość do usunięcia zamiast ją usuwać';
 $labels['skipdeleted'] = 'Ukryj wiadomości oznaczone do usunięcia';
 $labels['deletealways'] = 'Usuń wiadomości, gdy przenoszenie do Kosza zawiedzie';
+$labels['deletejunk'] = 'Kasuj wiadomości bezpośrednio w folderze Spam';
 $labels['showremoteimages'] = 'Wyświetlaj obrazki w wiadomościach';
 $labels['fromknownsenders'] = 'od znanych nadawców';
 $labels['always'] = 'zawsze';
@@ -282,16 +360,16 @@ $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['reqmdn'] = 'Zawsze żądaj potwierdzenia odbioru';
 $labels['advancedoptions'] = '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ą';
+$labels['defaultfont'] = 'Czcionka wiadomości HTML';
 $labels['mainoptions'] = 'Opcje główne';
+$labels['browseroptions'] = 'Opcje przeglądarki';
 $labels['section'] = 'Sekcja';
 $labels['maintenance'] = 'Konserwacja';
 $labels['newmessage'] = 'Nowa wiadomość';
-$labels['listoptions'] = 'Opcje list';
 $labels['signatureoptions'] = 'Opcje podpisów';
 $labels['whenreplying'] = 'Podczas odpowiadania rozpocznij wiadomość';
 $labels['replytopposting'] = 'powyżej cytowanej treści';
@@ -306,8 +384,20 @@ $labels['abovequote'] = 'ponad cytowaną treścią';
 $labels['insertsignature'] = 'Wstaw podpis';
 $labels['previewpanemarkread'] = 'Oznacz podglądane wiadomości jako przeczytane';
 $labels['afternseconds'] = 'po $n sekundach';
+$labels['reqmdn'] = 'Zawsze żądaj potwierdzenia odbioru';
+$labels['reqdsn'] = 'Zawsze żądaj statusu dostarczenia (DSN)';
+$labels['replysamefolder'] = 'Umieszczaj odpowiedzi w folderze wiadomości, na którą odpowiadam';
+$labels['defaultaddressbook'] = 'Nowe kontakty dodawaj do wybranej książki adresowej';
+$labels['autocompletesingle'] = 'Nie pokazuj alternatywnych adresów przy autouzupełnianiu';
+$labels['listnamedisplay'] = 'Wyświetl kontakty jako';
+$labels['spellcheckbeforesend'] = 'Przed wysłaniem wiadomości sprawdzaj pisownię';
+$labels['spellcheckoptions'] = 'Opcje sprawdzania pisowni';
+$labels['spellcheckignoresyms'] = 'Ignoruj słowa zawierające symbole';
+$labels['spellcheckignorenums'] = 'Ignoruj słowa zawierające cyfry';
+$labels['spellcheckignorecaps'] = 'Ignoruj słowa pisane wielkimi literami';
+$labels['addtodict'] = 'Dodaj do słownika';
+$labels['mailtoprotohandler'] = 'Zainstaluj obsługę linków mailto:';
 $labels['folder'] = 'Folder';
-$labels['folders'] = 'Foldery';
 $labels['foldername'] = 'Nazwa folderu';
 $labels['subscribed'] = 'Zasubskrybowany';
 $labels['messagecount'] = 'Wiadomości';
@@ -315,9 +405,26 @@ $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';
+$labels['parentfolder'] = 'Folder nadrzędny';
+$labels['location'] = 'Położenie';
+$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['sortby'] = 'Sortuj wg';
 $labels['sortasc'] = 'Rosnąco';
 $labels['sortdesc'] = 'Malejąco';
+$labels['undo'] = 'Cofnij';
+$labels['plugin'] = 'Wtyczka';
+$labels['version'] = 'Wersja';
+$labels['source'] = 'Źródła';
+$labels['license'] = 'Licencja';
+$labels['support'] = 'Wsparcie techniczne';
 $labels['B'] = 'B';
 $labels['KB'] = 'KB';
 $labels['MB'] = 'MB';
@@ -340,106 +447,4 @@ $labels['vietnamese'] = 'wietnamski';
 $labels['japanese'] = 'japoński';
 $labels['korean'] = 'koreański';
 $labels['chinese'] = 'chiński';
-$labels['folderactions'] = 'Działania na folderach...';
-$labels['contacts'] = 'Kontakty';
-$labels['messageoptions'] = 'Opcje wiadomości...';
-$labels['followupto'] = 'Kontynuacja do';
-$labels['replyall'] = 'Odpowiedz wszystkim';
-$labels['replylist'] = 'Odpowiedz na listę';
-$labels['forwardinline'] = 'Prześlij w treści';
-$labels['forwardattachment'] = 'Prześlij jako załącznik';
-$labels['editidents'] = 'Edytuj tożsamości';
-$labels['addfollowupto'] = 'Dodaj Followup-To';
-$labels['dsn'] = 'Status dostarczenia (DSN)';
-$labels['reqdsn'] = 'Zawsze żądaj statusu dostarczenia (DSN)';
-$labels['replysamefolder'] = 'Umieszczaj odpowiedzi w folderze wiadomości, na którą odpowiadam';
-$labels['contactproperties'] = 'Właściwości kontaktu';
-$labels['properties'] = 'Właściwości';
-$labels['folderproperties'] = 'Właściwości folderu';
-$labels['parentfolder'] = 'Folder nadrzędny';
-$labels['location'] = 'Położenie';
-$labels['info'] = 'Informacje';
-$labels['getfoldersize'] = 'Kliknij aby pobrać rozmiar folderu';
-$labels['changesubscription'] = 'Kliknij aby zmienić subskrypcję';
-$labels['rename'] = 'Zmień nazwę';
-$labels['middlename'] = 'Drugie imię';
-$labels['nameprefix'] = 'Prefiks';
-$labels['namesuffix'] = 'Sufiks';
-$labels['nickname'] = 'Pseudonim';
-$labels['jobtitle'] = 'Zawód';
-$labels['department'] = 'Oddział';
-$labels['gender'] = 'Płeć';
-$labels['maidenname'] = 'N. panieńskie';
-$labels['phone'] = 'Telefon';
-$labels['address'] = 'Adres';
-$labels['street'] = 'Ulica';
-$labels['locality'] = 'Miasto';
-$labels['zipcode'] = 'Kod';
-$labels['region'] = 'Region';
-$labels['country'] = 'Kraj';
-$labels['birthday'] = 'Urodziny';
-$labels['anniversary'] = 'Jubileusz';
-$labels['website'] = 'Strona internetowa';
-$labels['instantmessenger'] = 'Komunikator';
-$labels['notes'] = 'Notatki';
-$labels['male'] = 'mężczyzna';
-$labels['female'] = 'kobieta';
-$labels['manager'] = 'Kierownik';
-$labels['assistant'] = 'Asystent';
-$labels['spouse'] = 'Małżonek';
-$labels['typehome'] = 'Dom';
-$labels['typework'] = 'Praca';
-$labels['typeother'] = 'Inny';
-$labels['typemobile'] = 'Komórkowy';
-$labels['typemain'] = 'Główny';
-$labels['typehomefax'] = 'Fax domowy';
-$labels['typeworkfax'] = 'Fax firmowy';
-$labels['typecar'] = 'Samochód';
-$labels['typepager'] = 'Pager';
-$labels['typevideo'] = 'Wideo';
-$labels['typeassistant'] = 'Asystent';
-$labels['typehomepage'] = 'Strona domowa';
-$labels['typeblog'] = 'Blog';
-$labels['typeprofile'] = 'Profil';
-$labels['addfield'] = 'Dodaj pole...';
-$labels['personalinfo'] = 'Informacje osobiste';
-$labels['addphoto'] = 'Dodaj';
-$labels['replacephoto'] = 'Zamień';
-$labels['foldertype'] = 'Typ folderu';
-$labels['personalfolder'] = 'Folder prywatny';
-$labels['otherfolder'] = 'Folder innego użytkownika'; 
-$labels['sharedfolder'] = 'Folder współdzielony';
-$labels['defaultaddressbook'] = 'Nowe kontakty dodawaj do wybranej książki adresowej';
-$labels['spellcheckbeforesend'] = 'Przed wysłaniem wiadomości sprawdzaj pisownię';
-$labels['allfields'] = 'Wszystkie pola';
-$labels['search'] = 'Szukaj';
-$labels['advsearch'] = 'Wyszukiwanie zaawansowane';
-$labels['other'] = 'Inne';
-$labels['importtarget'] = 'Dodaj nowe kontakty do książki adresowej:';
-$labels['grouprename'] = 'Zmień nazwę grupy';
-$labels['groupdelete'] = 'Usuń grupę';
-$labels['undo'] = 'Cofnij';
-$labels['mailreplyintro'] = 'W dniu $date, $sender napisał(a):';
-$labels['uploadprogress'] = '$percent ($current z $total)';
-$labels['originalmessage'] = 'Wiadomość oryginalna';
-$labels['moreactions'] = 'Więcej akcji...';
-$labels['searchsave'] = 'Zapisz wyszukiwanie';
-$labels['searchdelete'] = 'Usuń wyszukiwanie';
-$labels['spellcheckoptions'] = 'Opcje sprawdzania pisowni';
-$labels['spellcheckignoresyms'] = 'Ignoruj słowa zawierające symbole';
-$labels['spellcheckignorenums'] = 'Ignoruj słowa zawierające cyfry';
-$labels['spellcheckignorecaps'] = 'Ignoruj słowa pisane wielkimi literami';
-$labels['addtodict'] = 'Dodaj do słownika';
-$labels['dateformat'] = 'Format daty';
-$labels['timeformat'] = 'Format czasu';
-$labels['isdraft'] = 'To jest kopia robocza wiadomości.';
-$labels['autocompletesingle'] = 'Nie pokazuj alternatywnych adresów przy autouzupełnianiu';
-$labels['plugin'] = 'Wtyczka';
-$labels['version'] = 'Wersja';
-$labels['source'] = 'Źródła';
-$labels['license'] = 'Licencja';
-$labels['about'] = 'O programie';
-$labels['support'] = 'Wsparcie techniczne';
-$labels['defaultfont'] = 'Czcionka wiadomości HTML';
 
-?>
index 6a509a6e3eca30484c53e39215497241f6ba06f0..9593ba478aeda5d9d9db41651d467baba8fbb2c7 100644 (file)
@@ -1,34 +1,30 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/pl_PL/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Tomasz Pajor        <t.pajor@kei.pl>                          |
-| Author: Sławomir Cichoń     <slawek.cichon@gmail.com>                 |
-|         Janusz Zamecki      <janusz@zamecki.eu>                       |
-|         Mariusz Szulerecki  <nob@force.eu.org>                        |
-|         Wojciech Szczepucha <donkoyote@gmail.com>                     |
-|         Aleksander Machniak <alec@alec.pl>                            |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 5569 2011-12-07 14:47:32Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/pl_PL/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Aleksander Machniak <alec@alec.pl>                            |
+ +-----------------------------------------------------------------------+
 */
 
 $messages = array();
+$messages['errortitle'] = 'Wystąpił błąd!';
 $messages['loginfailed'] = 'Błąd logowania!';
 $messages['cookiesdisabled'] = 'Twoja przeglądarka nie obsługuje ciasteczek!';
 $messages['sessionerror'] = 'Błąd sesji bądź sesja wygasła!';
-$messages['imaperror'] = 'Błąd połączenia z serwerem!';
+$messages['storageerror'] = 'Błąd połączenia z serwerem!';
 $messages['servererror'] = 'Błąd serwera!';
 $messages['servererrormsg'] = 'Błąd serwera: $msg';
+$messages['dberror'] = 'Błąd bazy danych!';
+$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ń.';
 $messages['invalidrequest'] = 'Błędne żądanie! Nie zapisano danych.';
 $messages['nomessagesfound'] = 'Brak wiadomości w skrzynce.';
 $messages['loggedout'] = 'Użytkownik wylogował się poprawnie.';
@@ -45,10 +41,12 @@ $messages['messagesaved'] = 'Wiadomość została zapisana w folderze Kopie robo
 $messages['successfullysaved'] = 'Zapisano.';
 $messages['addedsuccessfully'] = 'Kontakt został dodany.';
 $messages['contactexists'] = 'Kontakt o podanym adresie e-mail już istnieje!';
+$messages['contactnameexists'] = 'Kontakt z podaną nazwą już istnieje!';
 $messages['blockedimages'] = 'Ze względów bezpieczeństwa zewnętrzne obrazki zostały zablokowane.';
 $messages['encryptedmessage'] = 'Przepraszamy, nie można wyświetlić zaszyfrowanej wiadomości!';
 $messages['nocontactsfound'] = 'Nie znaleziono kontaktu!';
 $messages['contactnotfound'] = 'Szukany kontakt nie został odnaleziony.';
+$messages['contactsearchonly'] = 'Użyj wyszukiwarki aby wyświetlić kontakty.';
 $messages['sendingfailed'] = 'Nie udało się wysłać wiadomości!';
 $messages['senttooquickly'] = 'Musisz poczekać $sec sek. aby móc wysłać tą wiadomość!';
 $messages['errorsavingsent'] = 'Wystąpił błąd podczas zapisu wysłanej wiadomości!';
@@ -62,9 +60,12 @@ $messages['deletegroupconfirm'] = 'Czy na pewno chcesz usunąć wybraną grupę?
 $messages['deletemessagesconfirm'] = 'Czy na pewno chcesz usunąć wybrane wiadomości?';
 $messages['deletefolderconfirm'] = 'Czy na pewno chcesz usunąć wybrany folder?';
 $messages['purgefolderconfirm'] = 'Czy na pewno chcesz usunąć wszystkie wiadomości w tym folderze?';
+$messages['contactdeleting'] = 'Usuwanie kontaktów...';
 $messages['groupdeleting'] = 'Usuwanie grupy...';
 $messages['folderdeleting'] = 'Usuwanie folderu...';
 $messages['foldermoving'] = 'Przenoszenie folderu...';
+$messages['foldersubscribing'] = 'Subskrybowanie folderu...';
+$messages['folderunsubscribing'] = 'Odsubskrybowanie folderu...';
 $messages['formincomplete'] = 'Uzupełnij formularz!';
 $messages['noemailwarning'] = 'Podaj poprawny adres e-mail!';
 $messages['nonamewarning'] = 'Podaj nazwę!';
@@ -75,15 +76,19 @@ $messages['nosubjectwarning'] = 'Nie podano tematu wiadomości. Czy chcesz go te
 $messages['nobodywarning'] = 'Ta wiadomość jest pusta, czy mimo to chcesz ją wysłać?';
 $messages['notsentwarning'] = 'Wiadomość nie została wysłana. Czy chcesz usunąć tę wiadomość?';
 $messages['noldapserver'] = 'Wybierz serwer LDAP!';
-$messages['nocontactsreturned'] = 'Nie znaleziono kontaktów!';
 $messages['nosearchname'] = 'Podaj nazwę kontaktu lub jego adres e-mail.';
 $messages['notuploadedwarning'] = 'Nie wszystkie załączniki zostały pobrane. Poczekaj lub anuluj pobieranie.';
 $messages['searchsuccessful'] = 'Liczba znalezionych wiadomości: $nr.';
+$messages['contactsearchsuccessful'] = 'Znaleziono $nr kontaktów.';
 $messages['searchnomatch'] = 'Nic nie znaleziono.';
 $messages['searching'] = 'Wyszukiwanie...';
 $messages['checking'] = 'Sprawdzanie...';
 $messages['nospellerrors'] = 'Nie znaleziono błędów w pisowni.';
 $messages['folderdeleted'] = 'Folder został pomyślnie usunięty.';
+$messages['foldersubscribed'] = 'Folder został pomyślnie zasubskrybowany.';
+$messages['folderunsubscribed'] = 'Folder został pomyślnie odsubskrybowany.';
+$messages['folderpurged'] = 'Folder został pomyślnie opróżniony.';
+$messages['folderexpunged'] = 'Folder został pomyślnie uporządkowany.';
 $messages['deletedsuccessfully'] = 'Usunięto.';
 $messages['converting'] = 'Konwertowanie tekstu...';
 $messages['messageopenerror'] = 'Nie można załadować wiadomości z serwera.';
@@ -95,10 +100,14 @@ $messages['sourceisreadonly'] = 'Źródło adresu jest tylko do odczytu.';
 $messages['errorsavingcontact'] = 'Nie można było zapisać adresu kontaktu.';
 $messages['movingmessage'] = 'Przenoszenie wiadomości...';
 $messages['copyingmessage'] = 'Kopiowanie wiadomości...';
+$messages['copyingcontact'] = 'Kopiowanie kontaktów...';
 $messages['deletingmessage'] = 'Usuwanie wiadomości...';
 $messages['markingmessage'] = 'Oznaczanie wiadomości...';
+$messages['addingmember'] = 'Dodawanie kontaktów do grupy...';
+$messages['removingmember'] = 'Usuwanie kontaktów z grupy...';
 $messages['receiptsent'] = 'Pomyślnie wysłano potwierdzenie dostarczenia.';
 $messages['errorsendingreceipt'] = 'Nie można wysłać potwierdzenia.';
+$messages['deleteidentityconfirm'] = 'Czy na pewno chcesz usunąć tą tożsamość?';
 $messages['nodeletelastidentity'] = 'Nie można skasować tej tożsamości, ponieważ jest ostatnią.';
 $messages['forbiddencharacter'] = 'Nazwa folderu zawiera niedozwolony znak.';
 $messages['selectimportfile'] = 'Proszę wybrać plik do wysłania.';
@@ -108,6 +117,7 @@ $messages['contactremovedfromgroup'] = 'Kontakty zostały pomyślnie usunięte z
 $messages['importwait'] = 'Importowanie, proszę czekać...';
 $messages['importerror'] = 'Błąd! Pobrany plik nie jest poprawnym plikiem vCard.';
 $messages['importconfirm'] = '<b>Pomyślnie dodano $inserted kontaktów, pominięto $skipped istniejących wpisów</b>:<p><em>$names</em></p>.';
+$messages['importconfirmskipped'] = '<b>Pominięto $skipped istniejących wpisów.</b>';
 $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ć?';
@@ -124,45 +134,27 @@ $messages['maxgroupmembersreached'] = 'Liczba członków grupy nie może być wi
 $messages['internalerror'] = 'Wystąpił wewnętrzny błąd systemu. Spróbuj jeszcze raz.';
 $messages['contactdelerror'] = 'Usuwanie kontaktów nie powiodło się.';
 $messages['contactdeleted'] = 'Kontakt(y) został(y) usunięte.';
+$messages['contactrestoreerror'] = 'Przywracanie kontaktów nie powiodło się.';
+$messages['contactrestored'] = 'Kontakt(y) zostały przywrócone.';
 $messages['groupdeleted'] = 'Grupa została usunięta.';
 $messages['grouprenamed'] = 'Nazwa grupy została zmieniona.';
 $messages['groupcreated'] = 'Grupa została utworzona.';
+$messages['savedsearchdeleted'] = 'Wyszukiwanie usunięto pomyślnie.';
+$messages['savedsearchdeleteerror'] = 'Nie można usunąć wyszukiwania.';
+$messages['savedsearchcreated'] = 'Wyszukiwanie zapisano pomyślnie.';
+$messages['savedsearchcreateerror'] = 'Nie można zapisać wyszukiwania.';
 $messages['messagedeleted'] = 'Wiadomości zostały usunięte.';
 $messages['messagemoved'] = 'Wiadomości zostały przeniesione.';
 $messages['messagecopied'] = 'Wiadomości zostały skopiowane.';
 $messages['messagemarked'] = 'Wiadomości zostały oznaczone.';
 $messages['autocompletechars'] = 'Wprowadź co najmniej $min znak(ów) aby skorzystać z autouzupełniania.';
-$messages['foldersubscribing'] = 'Subskrybowanie folderu...';
-$messages['folderunsubscribing'] = 'Odsubskrybowanie folderu...';
-$messages['foldersubscribed'] = 'Folder został pomyślnie zasubskrybowany.';
-$messages['folderunsubscribed'] = 'Folder został pomyślnie odsubskrybowany.';
-$messages['folderpurged'] = 'Folder został pomyślnie opróżniony.';
-$messages['folderexpunged'] = 'Folder został pomyślnie uporządkowany.';
+$messages['autocompletemore'] = 'Znaleziono więcej pasujących wpisów. Wprowadź więcej znaków.';
 $messages['namecannotbeempty'] = 'Nazwa nie może być pusta.';
 $messages['nametoolong'] = 'Nazwa jest zbyt długa.';
 $messages['folderupdated'] = 'Folder został pomyślnie zaktualizowany.';
 $messages['foldercreated'] = 'Folder został pomyślnie utworzony.';
-$messages['errorreadonly'] = 'Nie można wykonać operacji. Folder tylko do odczytu.';
-$messages['errornoperm'] = 'Nie można wykonać operacji. Brak uprawnień.';
-$messages['importconfirmskipped'] = '<b>Pominięto $skipped istniejących wpisów.</b>';
 $messages['invalidimageformat'] = 'Niepoprawny format obrazka.';
 $messages['mispellingsfound'] = 'Wykryto błędy pisowni w tej wiadomości.';
-$messages['contactrestoreerror'] = 'Przywracanie kontaktów nie powiodło się.';
-$messages['contactrestored'] = 'Kontakt(y) zostały przywrócone.';
-$messages['dberror'] = 'Błąd bazy danych!';
-$messages['contactnameexists'] = 'Kontakt z podaną nazwą już istnieje!';
-$messages['copyingcontact'] = 'Kopiowanie kontaktów...';
-$messages['addingmember'] = 'Dodawanie kontaktów do grupy...';
-$messages['removingmember'] = 'Usuwanie kontaktów z grupy...';
 $messages['parentnotwritable'] = 'Nie można utworzyć/przenieść folderu w wybrane miejsce. Brak upranień.';
-$messages['contactsearchsuccessful'] = 'Znaleziono $nr kontaktów.';
-$messages['savedsearchdeleted'] = 'Wyszukiwanie usunięto pomyślnie.';
-$messages['savedsearchdeleteerror'] = 'Nie można usunąć wyszukiwania.';
-$messages['savedsearchcreated'] = 'Wyszukiwanie zapisano pomyślnie.';
-$messages['savedsearchcreateerror'] = 'Nie można zapisać wyszukiwania.';
-$messages['contactsearchonly'] = 'Użyj wyszukiwarki aby wyświetlić kontakty.';
-$messages['contactdeleting'] = 'Usuwanie kontaktów...';
-$messages['autocompletemore'] = 'Znaleziono więcej pasujących wpisów. Wprowadź więcej znaków.';
 $messages['messagetoobig'] = 'Ta część wiadomości jest zbyt duża aby ją przetworzyć.';
 
-?>
index e7692e7bc30086b7374af20bbf281c42df3de8fc..5c927019b4507b33374f1238723a87ac655513b1 100755 (executable)
 <?php
 
-
-
-// login page
-$labels['welcome']   = '$product ته ښه راغلاست ';
-$labels['username']  = 'کارن نوم';
-$labels['password']  = 'پټنوم';
-$labels['server']    = 'برابرونکی';
-$labels['login']     = 'ننوتون';
-
-// taskbar
-$labels['logout']   = 'وتون';
-$labels['mail']     = 'برېښناليک';
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ps/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$labels = array();
+$labels['welcome'] = '$product ته ښه راغلاست';
+$labels['username'] = 'کارن نوم';
+$labels['password'] = 'پټنوم';
+$labels['server'] = 'برابرونکی';
+$labels['login'] = 'ننوتون';
+$labels['logout'] = 'وتون';
+$labels['mail'] = 'برېښناليک';
 $labels['settings'] = 'ځاني برابرونې';
 $labels['addressbook'] = 'پتې کتاب';
-
-// mailbox names
-$labels['inbox']  = 'راغلي ليکونه';
+$labels['inbox'] = 'راغلي ليکونه';
 $labels['drafts'] = 'بارليک';
-$labels['sent']   = 'لېږل شوي ليکونه';
-$labels['trash']  = 'کثافت دانۍ';
-$labels['junk']   = 'جنک';
-
-// message listing
-$labels['subject'] = ' مضمون';
-$labels['from']    = 'استوونکی';
-$labels['to']      = 'ترلاسه کوونکی';
-$labels['cc']      = 'لمېسل';
-$labels['bcc']     = 'پټليکی';
+$labels['sent'] = 'لېږل شوي ليکونه';
+$labels['trash'] = 'کثافت دانۍ';
+$labels['junk'] = 'جنک';
+$labels['subject'] = 'مضمون';
+$labels['from'] = 'استوونکی';
+$labels['to'] = 'ترلاسه کوونکی';
+$labels['cc'] = 'لمېسل';
+$labels['bcc'] = 'پټليکی';
 $labels['replyto'] = 'ځوابول';
-$labels['date']    = 'نېټه';
-$labels['size']    = 'کچه ';
+$labels['date'] = 'نېټه';
+$labels['size'] = 'کچه';
 $labels['priority'] = 'لومړيتوب';
 $labels['organization'] = 'ټولنه';
-
 $labels['mailboxlist'] = 'پوښۍ';
-$labels['messagesfromto'] = 'له ټاکلي استوزو څخه ټاکلي شمېرل شوو استوزو ته ';
+$labels['folders'] = 'پوښۍ';
+$labels['messagesfromto'] = 'له ټاکلي استوزو څخه ټاکلي شمېرل شوو استوزو ته';
 $labels['messagenrof'] = 'له $nr ځخه استوزو $count استوزو ته';
-
-$labels['moveto']   = 'ته خوځوي';
+$labels['copy'] = 'لمېسل';
+$labels['moveto'] = 'ته خوځوي';
 $labels['download'] = 'ښکته کول';
-
-$labels['filename'] = ' فايل نوم';
+$labels['filename'] = 'فايل نوم';
 $labels['filesize'] = 'فايل کچه';
-
-$labels['preferhtml'] = 'ايچ ټي ام ايل ښوون';
-$labels['htmlmessage'] = 'ايچ ټي ام ايل استوزه';
-$labels['prettydate'] = ' په زړه پورې نېټې';
-
 $labels['addtoaddressbook'] = 'د پتو کتاب ته يې ورزيات کړئ';
-
-// weekdays short
-$labels['sun'] = 'يوه نۍ ';
+$labels['sun'] = 'يوه نۍ';
 $labels['mon'] = 'دوه نۍ';
 $labels['tue'] = 'درې نۍ';
 $labels['wed'] = 'څلورنۍ';
 $labels['thu'] = 'پنځنۍ';
 $labels['fri'] = 'جمعه';
 $labels['sat'] = 'نۍ';
-
-// weekdays long
-$labels['sunday']    = 'يوه نۍ';
-$labels['monday']    = 'دوه نۍ';
-$labels['tuesday']   = 'درې نۍ';
+$labels['sunday'] = 'يوه نۍ';
+$labels['monday'] = 'دوه نۍ';
+$labels['tuesday'] = 'درې نۍ';
 $labels['wednesday'] = 'منځنۍ';
-$labels['thursday']  = 'پنځنۍ';
-$labels['friday']    = 'جمعه';
-$labels['saturday']  = 'نۍ';
-
-// months short
-$labels['jan'] = 'حنوري';
-$labels['feb'] = 'فبروري';
-$labels['mar'] = 'مارچ';
-$labels['apr'] = 'اپريل';
-$labels['may'] = 'مئ';
-$labels['jun'] = 'جون';
-$labels['jul']         = 'جولاي';
-$labels['aug'] = 'اګست';
-$labels['sep'] = 'سپتمپر';
-$labels['oct'] = 'اکتوبر';
-$labels['nov'] = 'نومبر';
-$labels['dec'] = 'ډسمبر';
-
-// months long
-$labels['longjan']     = 'جنوري';
-$labels['longfeb']     = 'فبروري';
-$labels['longmar']     = 'مارچ';
-$labels['longapr']     = 'اپريل';
-$labels['longmay']     = 'مئ';
-$labels['longjun']     = 'جون';
-$labels['longjul']     = 'جولای';
-$labels['longaug']     = 'اګست';
-$labels['longsep']     = 'سپتمبر';
-$labels['longoct']     = 'اکتوبر';
-$labels['longnov']     = 'نومبر';
-$labels['longdec']     = 'ډسمبر';
-
-$labels['today'] = 'نن ';
-
-// toolbar buttons
-$labels['checkmail']        = 'نوي استوزي وګوره';
-$labels['writenewmessage']  = 'نوي استوزي جوړول ';
-$labels['replytomessage']   = 'استوونکي ته ځواب ورکړئ';
-$labels['replytoallmessage'] = 'استوونکي او ټولو ترلاسه کوونکو ته ځواب لېږل ';
-$labels['forwardmessage']   = 'استوزه بل ته استول ';
-$labels['deletemessage']    = 'استوزه ړنګول ';
+$labels['thursday'] = 'پنځنۍ';
+$labels['friday'] = 'جمعه';
+$labels['saturday'] = 'نۍ';
+$labels['jan'] = 'حنوري';
+$labels['feb'] = 'فبروري';
+$labels['mar'] = 'مارچ';
+$labels['apr'] = 'اپريل';
+$labels['may'] = 'مئ';
+$labels['longmay'] = 'مئ';
+$labels['jun'] = 'جون';
+$labels['jul'] = 'جولاي';
+$labels['aug'] = 'اګست';
+$labels['sep'] = 'سپتمپر';
+$labels['oct'] = 'اکتوبر';
+$labels['nov'] = 'نومبر';
+$labels['dec'] = 'ډسمبر';
+$labels['longjan'] = 'جنوري';
+$labels['longfeb'] = 'فبروري';
+$labels['longmar'] = 'مارچ';
+$labels['longapr'] = 'اپريل';
+$labels['longjun'] = 'جون';
+$labels['longjul'] = 'جولای';
+$labels['longaug'] = 'اګست';
+$labels['longsep'] = 'سپتمبر';
+$labels['longoct'] = 'اکتوبر';
+$labels['longnov'] = 'نومبر';
+$labels['longdec'] = 'ډسمبر';
+$labels['today'] = 'نن';
+$labels['checkmail'] = 'نوي استوزي وګوره';
+$labels['compose'] = 'استوزه وليکه';
+$labels['writenewmessage'] = 'نوي استوزي جوړول';
+$labels['replytomessage'] = 'استوونکي ته ځواب ورکړئ';
+$labels['replytoallmessage'] = 'استوونکي او ټولو ترلاسه کوونکو ته ځواب لېږل';
+$labels['forwardmessage'] = 'استوزه بل ته استول';
+$labels['deletemessage'] = 'استوزه ړنګول';
 $labels['movemessagetotrash'] = 'استوزه کثافت داني ته واستوه';
-$labels['printmessage']     = 'دا استوزه چاپ کړه ';
-$labels['previousmessage']  = 'پخوانۍ استوزه وښيه ';
-$labels['previousmessages'] = 'د استوزو پخوانی غونډ وښيه ';
-$labels['firstmessage']     = 'لومړی استوزه وښيه ';
-$labels['firstmessages']    = 'د استوزو لومړی غونډ وښيه ';
-$labels['nextmessage']      = 'ورپسې استوزه وښيه  ';
-$labels['nextmessages']     = 'د استوزو ورپسې غونډ وښيه ';
-$labels['lastmessage']      = 'پای /آخري استوزه وښيه ';
-$labels['lastmessages']     = 'داستوزو پای غونډ وښيه ';
-$labels['backtolist']       = 'بيرته د استوزو لست ته ';
-$labels['viewsource']       = 'سرچينه وښيه ';
-$labels['markmessages']     = 'استوزي په نښه کړئ ';
-$labels['markread']         = 'لوستل شوي په توګه ';
-$labels['markunread']       = 'د نالوستل شوي په توګه ';
-$labels['markflagged']         = 'د بي کاره په توګه';
-$labels['markunflagged']       = 'د کارونې په توګه';
-
-$labels['select'] = 'ټاکل ';
-$labels['all'] = 'ټول ';
-$labels['none'] = 'هېڅ ';
-$labels['unread'] = 'نالوستي ';
+$labels['printmessage'] = 'دا استوزه چاپ کړه';
+$labels['previousmessage'] = 'پخوانۍ استوزه وښيه';
+$labels['firstmessage'] = 'لومړی استوزه وښيه';
+$labels['nextmessage'] = 'ورپسې استوزه وښيه';
+$labels['lastmessage'] = 'پای /آخري استوزه وښيه';
+$labels['backtolist'] = 'بيرته د استوزو لست ته';
+$labels['viewsource'] = 'سرچينه وښيه';
+$labels['markmessages'] = 'استوزي په نښه کړئ';
+$labels['markread'] = 'لوستل شوي په توګه';
+$labels['markunread'] = 'د نالوستل شوي په توګه';
+$labels['markflagged'] = 'د بي کاره په توګه';
+$labels['markunflagged'] = 'د کارونې په توګه';
+$labels['select'] = 'ټاکل';
+$labels['all'] = 'ټول';
+$labels['none'] = 'هېڅ';
+$labels['nonesort'] = 'هېڅ';
+$labels['unread'] = 'نالوستي';
 $labels['flagged'] = 'بې کاره';
 $labels['unanswered'] = 'ناځواب شوي';
 $labels['filter'] = 'چڼول';
-
-$labels['compact'] = 'کېښکلی ';
-$labels['empty'] = 'تش ';
-$labels['purge'] = 'لرول ';
-
-$labels['quota'] = 'ټيکلي لارښود ';
-$labels['unknown']  = 'نامعلوم ';
-$labels['unlimited']  = 'بي کچه ';
-
-$labels['quicksearch']  = 'ژر پلټنه ';
-$labels['resetsearch']  = 'د پلټنې بياسمون ';
-
+$labels['compact'] = 'کېښکلی';
+$labels['empty'] = 'تش';
+$labels['quota'] = 'ټيکلي لارښود';
+$labels['unknown'] = 'نامعلوم';
+$labels['unlimited'] = 'بي کچه';
+$labels['quicksearch'] = 'ژر پلټنه';
+$labels['resetsearch'] = 'د پلټنې بياسمون';
 $labels['openinextwin'] = 'په نوي کړکۍ کې پرانيزه';
-
-// message compose
-$labels['compose']        = 'استوزه وليکه ';
-$labels['savemessage']    = 'دا ګارليک خوندي کړه ';
-$labels['sendmessage']    = 'اوس يې واستوه';
-$labels['addattachment']  = 'يو فايل ونښلوه ';
-$labels['charset']        = 'چيرست';
-$labels['editortype']     = 'د ټايب سمونګر ';
-$labels['returnreceipt']  = 'د رسليک راګرځېدل ';
-
-$labels['checkspelling'] = 'ليکدود کتنه ';
-$labels['resumeediting'] = 'کارمخينې سمونه ';
-$labels['revertto']      = 'ته بېرته اړول ';
-
-$labels['attachments'] = 'نښلني ';
-$labels['upload'] = 'پورته کول ';
-$labels['close']  = 'بندول ';
-
-$labels['low']     = 'ټيټ ';
-$labels['lowest']  = 'خورا ټيټ ';
-$labels['normal']  = 'نورمال ';
-$labels['high']    = 'لوړ ';
-$labels['highest'] = 'خورا لوړ ';
-
-$labels['nosubject']  = 'هېڅ موضوع';
-$labels['showimages'] = 'انځورونه وښيه ';
+$labels['savemessage'] = 'دا ګارليک خوندي کړه';
+$labels['sendmessage'] = 'اوس يې واستوه';
+$labels['addattachment'] = 'يو فايل ونښلوه';
+$labels['charset'] = 'چيرست';
+$labels['editortype'] = 'د ټايب سمونګر';
+$labels['returnreceipt'] = 'د رسليک راګرځېدل';
+$labels['checkspelling'] = 'ليکدود کتنه';
+$labels['resumeediting'] = 'کارمخينې سمونه';
+$labels['revertto'] = 'ته بېرته اړول';
+$labels['attachments'] = 'نښلني';
+$labels['upload'] = 'پورته کول';
+$labels['close'] = 'بندول';
+$labels['low'] = 'ټيټ';
+$labels['lowest'] = 'خورا ټيټ';
+$labels['normal'] = 'نورمال';
+$labels['high'] = 'لوړ';
+$labels['highest'] = 'خورا لوړ';
+$labels['nosubject'] = 'هېڅ موضوع';
+$labels['showimages'] = 'انځورونه وښيه';
 $labels['alwaysshow'] = 'تل له $استوونکي څخه انځورونه وښيه';
-
 $labels['htmltoggle'] = 'ايچ ټی ايمل ال';
-$labels['plaintoggle'] = 'ساده متن ';
+$labels['plaintoggle'] = 'ساده متن';
 $labels['savesentmessagein'] = 'استول شوي استوزه په خوندي کړه';
 $labels['dontsave'] = 'مه ساته';
 $labels['maxuploadsize'] = 'لږترلږه د اجازه شوي فايل کچه $وي';
-
-$labels['addcc'] = 'څرګندليک ';
-$labels['addbcc'] = 'پټليک ';
-$labels['addreplyto'] = 'ته ورزيات کړه ';
-
-// mdn
-$labels['mdnrequest'] = 'ددې استوزي استوونکی پوښتي چېد استوزي لوستلو سره سم تاسې خبر کړي،.    غواړئ چې استوونکی خبرشي؟ ';
-$labels['receiptread'] = 'رسليک راګرځېدل (لوستل ';
-$labels['yourmessage'] = ' دا رسليک راګرځېدل ستاسې استوزي لپاره دی ';
+$labels['addcc'] = 'څرګندليک';
+$labels['addbcc'] = 'پټليک';
+$labels['addreplyto'] = 'ته ورزيات کړه';
+$labels['mdnrequest'] = 'ددې استوزي استوونکی پوښتي چېد استوزي لوستلو سره سم تاسې خبر کړي،.    غواړئ چې استوونکی خبرشي؟';
+$labels['receiptread'] = 'رسليک راګرځېدل (لوستل';
+$labels['yourmessage'] = 'دا رسليک راګرځېدل ستاسې استوزي لپاره دی';
 $labels['receiptnote'] = 'يادونه: دا رسليک تاسې ته يوازې ددې خبرتيا درکوي چې کله استوزی د ترلاسه کوونکي په کمپيوټر کې څرګند شي،  ددې هيڅ ډاډګيرنه نشته چې ترلاسه کوونکي د  استوزي متن لوستی او يا پرې پوه شوی دی';
-
-// address boook
-$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['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';
-$labels['print']          = 'چاپ ';
-$labels['export']         = 'بهرول ';
-$labels['exportvcards']   = 'اړيکلوري د ويکارډ په بڼه واستوئ';
-
-$labels['previouspage']   = 'پخوانی غونډ وښيه  ';
-$labels['firstpage']      = 'لومړی غونډ وښيه  ';
-$labels['nextpage']       = 'ورپسې غونډ وښيه ';
-$labels['lastpage']       = ' پای غونډ وښيه ';
-
-$labels['groups'] = 'ډلې ';
-$labels['personaladrbook'] = 'ځاني پتې ';
-
+$labels['print'] = 'چاپ';
+$labels['export'] = 'بهرول';
+$labels['exportvcards'] = 'اړيکلوري د ويکارډ په بڼه واستوئ';
+$labels['previouspage'] = 'پخوانی غونډ وښيه';
+$labels['firstpage'] = 'لومړی غونډ وښيه';
+$labels['nextpage'] = 'ورپسې غونډ وښيه';
+$labels['lastpage'] = 'پای غونډ وښيه';
+$labels['groups'] = 'ډلې';
+$labels['personaladrbook'] = 'ځاني پتې';
 $labels['import'] = 'رانقلول';
 $labels['importcontacts'] = 'اړيکلوري نقل کړئ';
 $labels['importfromfile'] = 'له فايل څخه رانقل کړئ';
 $labels['importreplace'] = 'ټول ادرس کتاب بدل کړئ';
 $labels['importtext'] = 'تاسې کولی شئ‌چې يو اړيکلوری له شته پتې کتاب څخه پورته کړئ<br/>موږ همدا اوس له  <a href="http://en.wikipedia.org/wiki/VCard">vCard</a>پتې رانقلوو . د فايلونو بڼې';
 $labels['done'] = 'ترسره شو';
-
-// settings
-$labels['settingsfor']  = 'لپاره برابرونې ';
-
-$labels['preferences']  = 'غورونې ';
-$labels['userpreferences']  = 'کارن غورونې ';
-$labels['editpreferences']  = 'د کارن غورونو سمون ';
-
-$labels['identities']  = 'پېژندنې ';
-$labels['manageidentities']  = 'ددې حساب پېژندنو برابرول ';
-$labels['newidentity']  = 'نوي پېژندنه ';
-
-$labels['newitem']  = 'نوی توک ';
-$labels['edititem']  = 'توک سمون ';
-
-$labels['setdefault']  = 'تلوالي برابرول ';
-$labels['autodetect']  = 'په خپلواکه توګه';
-$labels['language']  = 'ژبه ';
-$labels['timezone']  = 'سيميز وخت ';
-$labels['pagesize']  = 'په هر مخ پرتې کښې ';
-$labels['signature'] = 'لاسليک ';
-$labels['dstactive']  = 'ورځنيو کارونو لنډيز ساتل';
-$labels['htmleditor'] = 'ايچ ټي‌ام ايل استوزي وليکه ';
-$labels['htmlsignature'] = 'ايچ ټي ام ايل لاسليک ';
-$labels['previewpane'] = ' پخوانی چوکاټ وښييه ';
+$labels['settingsfor'] = 'لپاره برابرونې';
+$labels['preferences'] = 'غورونې';
+$labels['userpreferences'] = 'کارن غورونې';
+$labels['editpreferences'] = 'د کارن غورونو سمون';
+$labels['identities'] = 'پېژندنې';
+$labels['manageidentities'] = 'ددې حساب پېژندنو برابرول';
+$labels['newidentity'] = 'نوي پېژندنه';
+$labels['newitem'] = 'نوی توک';
+$labels['edititem'] = 'توک سمون';
+$labels['preferhtml'] = 'ايچ ټي ام ايل ښوون';
+$labels['htmlmessage'] = 'ايچ ټي ام ايل استوزه';
+$labels['prettydate'] = 'په زړه پورې نېټې';
+$labels['setdefault'] = 'تلوالي برابرول';
+$labels['autodetect'] = 'په خپلواکه توګه';
+$labels['language'] = 'ژبه';
+$labels['timezone'] = 'سيميز وخت';
+$labels['pagesize'] = 'په هر مخ پرتې کښې';
+$labels['signature'] = 'لاسليک';
+$labels['dstactive'] = 'ورځنيو کارونو لنډيز ساتل';
+$labels['htmleditor'] = 'ايچ ټي‌ام ايل استوزي وليکه';
+$labels['htmlsignature'] = 'ايچ ټي ام ايل لاسليک';
+$labels['previewpane'] = 'پخوانی چوکاټ وښييه';
 $labels['skin'] = 'انټرفيس بڼه';
 $labels['logoutclear'] = 'کثافت داني د وتنې په وخت کې پاکه کړه';
 $labels['logoutcompact'] = 'د وتنې په وخت کې ليکبکس ونښلوه';
@@ -265,11 +224,10 @@ $labels['showremoteimages'] = 'انځورونه له لري په ليکه کې 
 $labels['fromknownsenders'] = 'له اشنا استوونکو څخه';
 $labels['always'] = 'تل';
 $labels['showinlineimages'] = 'نښلول شوي انځورونه تر استوزې لاندې ښکاره کړه';
-$labels['autosavedraft']  = 'بارليک په خپل سري توګه  خوندي‌کړه ';
-$labels['everynminutes']  = 'هر ه ګڼه په دقيقو کې  ';
-$labels['keepaliveevery']  = 'هر دقيقې $n';
-$labels['keepalive']  = 'نوي استوزي وګوره په';
-$labels['never']  = 'هېڅ ';
+$labels['autosavedraft'] = 'بارليک په خپل سري توګه  خوندي‌کړه';
+$labels['everynminutes'] = 'هر ه ګڼه په دقيقو کې';
+$labels['keepalive'] = 'نوي استوزي وګوره په';
+$labels['never'] = 'هېڅ';
 $labels['messagesdisplaying'] = 'استوزي ښيي';
 $labels['messagescomposition'] = 'استوزي ليکي';
 $labels['mimeparamfolding'] = 'د نښلول شوو نومونه';
@@ -279,25 +237,19 @@ $labels['2047folding'] = 'Full RFC 2047 (نور)';
 $labels['advancedoptions'] = 'پرمختللي لارې';
 $labels['focusonnewmessage'] = 'فوکاس براوسر کړکۍ په نوي استوزي کې';
 $labels['checkallfolders'] = 'په ټولو پوښيو کې نوي استوزي وګورئ';
-
-$labels['folder']  = 'پوښۍ ';
-$labels['folders']  = 'پوښۍ';
-$labels['foldername']  = 'پوښۍ نوم ';
-$labels['subscribed']  = 'ګډ شو ';
-$labels['messagecount'] = 'استوزي ';
-$labels['create']  = 'جوړول، رامنځ ته کول ';
-$labels['createfolder']  = 'نوې پوښۍ جوړ کړه ';
-$labels['managefolders']  = 'پوښيو څارل ';
+$labels['folder'] = 'پوښۍ';
+$labels['foldername'] = 'پوښۍ نوم';
+$labels['subscribed'] = 'ګډ شو';
+$labels['messagecount'] = 'استوزي';
+$labels['create'] = 'جوړول، رامنځ ته کول';
+$labels['createfolder'] = 'نوې پوښۍ جوړ کړه';
+$labels['managefolders'] = 'پوښيو څارل';
 $labels['specialfolders'] = 'ځانګړي پوښۍۍ';
-
-$labels['sortby'] = ' اڼل  ';
-$labels['sortasc']  = 'له پورته نه ښکته خوا ته برابرول ';
+$labels['sortby'] = 'اڼل';
+$labels['sortasc'] = 'له پورته نه ښکته خوا ته برابرول';
 $labels['sortdesc'] = 'له ښکته نه پورته خوا ته برابرول';
-
-// units
 $labels['B'] = 'بي';
 $labels['KB'] = 'کي بي';
 $labels['MB'] = 'ام بي';
 $labels['GB'] = 'جي بي';
 
-?>
index f29475c6d35c7a9f2adc67e15ae37f4582b78a14..d4b5da62cf008757061c634e14a14e65fc401023 100755 (executable)
@@ -1,9 +1,24 @@
 <?php
 
-$messages['loginfailed']  = 'ننوتنه په بري سره ترسره نه شوه ';
-$messages['cookiesdisabled'] = 'ستاسو لټوني ککوړي ونه منل ';
-$messages['sessionerror'] = ' ستاسې ناسته ناباوري يا له مينځه تللې ده';
-$messages['imaperror'] = 'له ای ميپ سرور سره پيوستون په بري سره ترسره نه شو ';
+/*
+ +-----------------------------------------------------------------------+
+ | localization/ps/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
+*/
+
+$messages = array();
+$messages['loginfailed'] = 'ننوتنه په بري سره ترسره نه شوه';
+$messages['cookiesdisabled'] = 'ستاسو لټوني ککوړي ونه منل';
+$messages['sessionerror'] = 'ستاسې ناسته ناباوري يا له مينځه تللې ده';
+$messages['storageerror'] = 'له ای ميپ سرور سره پيوستون په بري سره ترسره نه شو';
 $messages['nomessagesfound'] = 'ليکبکس کې هېڅ استوزي ونه مونده';
 $messages['loggedout'] = 'تاسې له ناستې څخه په بشپړه توګه وويستل شوئ الله په امان';
 $messages['mailboxempty'] = 'ليکبکس تش دی';
@@ -17,7 +32,7 @@ $messages['messagesaved'] = 'استوزه په بارليک کې خوندي شو
 $messages['successfullysaved'] = 'په بري‌سره خوندي شوه';
 $messages['addedsuccessfully'] = 'اړيکلوری په بري سره پتې کتاب ته ور زيات شو';
 $messages['contactexists'] = 'يو اړيکلوری له دې برېښناليک پتې سره شتون لري';
-$messages['blockedimages'] = 'ستاسو د پټتيآ خوندي کېدو لپاره ، له لري انځورنه په دې استوزي‌کې بند کړئ ';
+$messages['blockedimages'] = 'ستاسو د پټتيآ خوندي کېدو لپاره ، له لري انځورنه په دې استوزي‌کې بند کړئ';
 $messages['encryptedmessage'] = 'دا يوه پټه استوزه ده او نه څرګندېږي. بښنه غواړو';
 $messages['nocontactsfound'] = 'هېڅ اړيکلوری يې ونه موند';
 $messages['contactnotfound'] = 'وړاندی شوی اړيکلوری ونه مونده';
@@ -27,23 +42,22 @@ $messages['errorsavingsent'] = 'دخوندي کولو او لېږلو پر  مه
 $messages['errorsaving'] = 'دخوندي کولو پر  مهال يوه تيروتنه رامنځ ته شوه';
 $messages['errormoving'] = 'استوزه ونه خوځول شوه';
 $messages['errordeleting'] = 'استوزه ړنګه نه شوه';
-$messages['deletecontactconfirm']  = ' په رښتيا سره غواړئ چې ټاکل شوی اړيکلوری ړنګ کړئ؟ ';
+$messages['deletecontactconfirm'] = 'په رښتيا سره غواړئ چې ټاکل شوی اړيکلوری ړنګ کړئ؟';
 $messages['deletemessagesconfirm'] = 'په رښتيا سره غواړئ چې ټاکل شوي استوزي‌ړنګ کړئ؟';
-$messages['deletefolderconfirm']  = 'په رښتيآ سره غواړئ چې دا پوښۍ ړنګه کړئ؟';
-$messages['purgefolderconfirm']  = 'په رښتيا سره غواړئ چې ددې پوښۍ ټول استوزي‌ړنګ کړئ؟';
+$messages['deletefolderconfirm'] = 'په رښتيآ سره غواړئ چې دا پوښۍ ړنګه کړئ؟';
+$messages['purgefolderconfirm'] = 'په رښتيا سره غواړئ چې ددې پوښۍ ټول استوزي‌ړنګ کړئ؟';
 $messages['folderdeleting'] = 'پوښۍ ړنګوي';
 $messages['foldermoving'] = 'پوښۍ خوځوي';
 $messages['formincomplete'] = 'دا پورمه بشپړه ډکه شوې نه ده';
 $messages['noemailwarning'] = 'مهرباني وکړئ د يوه شته برېښناليک پته ورځای کړئ';
-$messages['nonamewarning']  = 'مهرباني‌وکړئ يو نوم وليکئ';
+$messages['nonamewarning'] = 'مهرباني‌وکړئ يو نوم وليکئ';
 $messages['nopagesizewarning'] = 'مهرباني‌وکړئ د پاڼې کچه ورکړئ';
 $messages['nosenderwarning'] = 'مهرباني وکړئ د استول شوي برېښناليک پته وليکئ';
 $messages['norecipientwarning'] = 'مهرباني‌وکړئ لږ تر لږه يو ترلاسه کوونکی وليکئ';
-$messages['nosubjectwarning']  = 'د مضمون ډګر تش دی يا تاسو غواړئ چې همدا اوس يو له هغو څخه وليکئ';
+$messages['nosubjectwarning'] = 'د مضمون ډګر تش دی يا تاسو غواړئ چې همدا اوس يو له هغو څخه وليکئ';
 $messages['nobodywarning'] = 'دا استوزه پرته له متن څخه استوئ؟';
 $messages['notsentwarning'] = 'استوزه نه ده لېږل شوې. غواړئ چې استوزه مو لرې وغورځوئ';
 $messages['noldapserver'] = 'مهرباني وکړئ يو ال ډپ سرور د پلټلو لپاره وټاکئ';
-$messages['nocontactsreturned'] = 'هېڅ يو اړيکلوری يې ونه موند';
 $messages['nosearchname'] = 'مهرباني وکړئ  د يو اړيکلوري‌نوم يا برېښناليک پته وليکئ';
 $messages['searchsuccessful'] = 'استوزي ومونده$';
 $messages['searchnomatch'] = 'د پلټلو بيا راګرځېدل هېڅ سمون ونه خوړه';
@@ -51,7 +65,7 @@ $messages['searching'] = 'پلټي';
 $messages['checking'] = 'ګوري';
 $messages['nospellerrors'] = 'هېڅ ليکدودي‌تيروتنه ونه مونده';
 $messages['folderdeleted'] = 'پوښۍ په بشپړه توګه ړنګه شوه';
-$messages['deletedsuccessfully'] = "په بشپړه توګه ړنګ شول";
+$messages['deletedsuccessfully'] = 'په بشپړه توګه ړنګ شول';
 $messages['converting'] = 'له استوزي څخه بڼې ړنګېږي';
 $messages['messageopenerror'] = 'له سرور څخه استوزي پرمخ نه شي تلی';
 $messages['fileuploaderror'] = 'دفايل پورته کول په بري سره سرته ونه رسيده';
@@ -59,7 +73,7 @@ $messages['filesizeerror'] = 'د پورته شوي فايل کچه بايد لږ
 $messages['copysuccess'] = 'په بشپړه توګه $پتې کاپي شوې';
 $messages['copyerror'] = 'هېڅ يوه پته يې کاپي‌نه شوای کړای';
 $messages['sourceisreadonly'] = 'ددې پتې يوازې سرچينه لوستل کېږي';
-$messages['errorsavingcontact'] = ' د پتې اړيکلوری يې خوندي‌نه شو کړای ';
+$messages['errorsavingcontact'] = 'د پتې اړيکلوری يې خوندي‌نه شو کړای';
 $messages['movingmessage'] = 'استوزه خوځوي';
 $messages['receiptsent'] = 'يو لوستل شوی رسليک په بشپړه توګه واستول شو';
 $messages['errorsendingreceipt'] = 'رسليک يې ونه شوای ليږلی';
@@ -74,4 +88,3 @@ $messages['opnotpermitted'] = 'چار اجازه نه لري';
 $messages['nofromaddress'] = 'په ټاکل شوي پيژندنه کې برېښناليک پتې له لاسه ورکړي';
 $messages['editorwarning'] = 'که د متن بڼو له منځه تللو ګواښ وي نو د متن سمون پرانيزئ. غواړئ چې دوام ورکړئ';
 
-?>
index 6a2d9db8abc594529197229f87fd92b29307dd72..5abdf205d41c3b2d6771729d87721c41d5848956 100644 (file)
@@ -1,25 +1,16 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/pt_BR/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Anderson S. Ferreira <anderson@cnpm.embrapa.br>               |
-|         Robson F. Ramaldes <rframaldes@gmail.com>                     |
-|         Alessandro Lenzi <alessandro@mistymountain.com.br>            |
-|         Gervasio Antonio <gdsa32-translations@yahoo.com.br>           |
-|         Victor Benincasa <vbenincasa@gmail.com>                       |
-|         Jarbas Peixoto Junior <jarbas.peixoto@gmail.com>              |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 5326 2011-10-10 09:39:58Z netbit $
-
+ +-----------------------------------------------------------------------+
+ | localization/pt_BR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Victor Benincasa <vbenincasa@gmail.com>                       |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
@@ -30,7 +21,7 @@ $labels['server'] = 'Servidor';
 $labels['login'] = 'Entrar';
 $labels['logout'] = 'Sair';
 $labels['mail'] = 'E-mail';
-$labels['settings'] = 'Configurações pessoais';
+$labels['settings'] = 'Configurações';
 $labels['addressbook'] = 'Catálogo de endereços';
 $labels['inbox'] = 'Caixa de entrada';
 $labels['drafts'] = 'Rascunhos';
@@ -38,10 +29,10 @@ $labels['sent'] = 'Enviados';
 $labels['trash'] = 'Lixeira';
 $labels['junk'] = 'Spam';
 $labels['subject'] = 'Assunto';
-$labels['from'] = 'Remetente';
+$labels['from'] = 'De';
 $labels['to'] = 'Para';
 $labels['cc'] = 'Cópia';
-$labels['bcc'] = 'Cópia Oculta (Bcc)';
+$labels['bcc'] = 'Cópia Oculta (Cco)';
 $labels['replyto'] = 'Responder para';
 $labels['followupto'] = 'Encaminhar para';
 $labels['date'] = 'Data';
@@ -49,24 +40,27 @@ $labels['size'] = 'Tamanho';
 $labels['priority'] = 'Prioridade';
 $labels['organization'] = 'Organização';
 $labels['readstatus'] = 'Status de leitura';
+$labels['listoptions'] = 'Lista de opções...';
 $labels['mailboxlist'] = 'Pastas';
+$labels['folders'] = 'Pastas';
 $labels['messagesfromto'] = 'Mensagens $from - $to de $count';
 $labels['threadsfromto'] = 'Tópicos $from - $to de $count';
 $labels['messagenrof'] = 'Mensagem $nr de $count';
+$labels['fromtoshort'] = '$from - $to de $count';
 $labels['copy'] = 'Copiar';
 $labels['move'] = 'Mover';
 $labels['moveto'] = 'Mover para...';
-$labels['download'] = 'Download';
-$labels['filename'] = 'Arquivo';
+$labels['download'] = 'Baixar';
+$labels['filename'] = 'Nome do arquivo';
 $labels['filesize'] = 'Tamanho';
 $labels['addtoaddressbook'] = 'Incluir no catálogo de endereços';
-$labels['sun'] = 'Dom';
-$labels['mon'] = 'Seg';
-$labels['tue'] = 'Ter';
-$labels['wed'] = 'Qua';
-$labels['thu'] = 'Qui';
-$labels['fri'] = 'Sex';
-$labels['sat'] = 'Sáb';
+$labels['sun'] = 'Dom.';
+$labels['mon'] = 'Seg.';
+$labels['tue'] = 'Ter.';
+$labels['wed'] = 'Qua.';
+$labels['thu'] = 'Qui.';
+$labels['fri'] = 'Sex.';
+$labels['sat'] = 'Sáb.';
 $labels['sunday'] = 'Domingo';
 $labels['monday'] = 'Segunda-feira';
 $labels['tuesday'] = 'Terça-feira';
@@ -74,23 +68,23 @@ $labels['wednesday'] = 'Quarta-feira';
 $labels['thursday'] = 'Quinta-feira';
 $labels['friday'] = 'Sexta-feira';
 $labels['saturday'] = 'Sábado';
-$labels['jan'] = 'Jan';
-$labels['feb'] = 'Fev';
-$labels['mar'] = 'Mar';
-$labels['apr'] = 'Abr';
-$labels['may'] = 'Mai';
-$labels['jun'] = 'Jun';
-$labels['jul'] = 'Jul';
-$labels['aug'] = 'Ago';
-$labels['sep'] = 'Set';
-$labels['oct'] = 'Out';
-$labels['nov'] = 'Nov';
-$labels['dec'] = 'Dez';
+$labels['jan'] = 'Jan.';
+$labels['feb'] = 'Fev.';
+$labels['mar'] = 'Mar.';
+$labels['apr'] = 'Abr.';
+$labels['may'] = 'Mai.';
+$labels['longmay'] = 'Mai.';
+$labels['jun'] = 'Jun.';
+$labels['jul'] = 'Jul.';
+$labels['aug'] = 'Ago.';
+$labels['sep'] = 'Set.';
+$labels['oct'] = 'Out.';
+$labels['nov'] = 'Nov.';
+$labels['dec'] = 'Dez.';
 $labels['longjan'] = 'Janeiro';
 $labels['longfeb'] = 'Fevereiro';
 $labels['longmar'] = 'Março';
 $labels['longapr'] = 'Abril';
-$labels['longmay'] = 'Maio';
 $labels['longjun'] = 'Junho';
 $labels['longjul'] = 'Julho';
 $labels['longaug'] = 'Agosto';
@@ -99,12 +93,16 @@ $labels['longoct'] = 'Outubro';
 $labels['longnov'] = 'Novembro';
 $labels['longdec'] = 'Dezembro';
 $labels['today'] = 'Hoje';
+$labels['refresh'] = 'Atualizar';
 $labels['checkmail'] = 'Verificar se há novas mensagens';
+$labels['compose'] = 'Criar email';
 $labels['writenewmessage'] = 'Criar nova mensagem';
+$labels['reply'] = 'Responder';
 $labels['replytomessage'] = 'Responder para o remetente';
 $labels['replytoallmessage'] = 'Responder para o remetente e todos destinatários';
 $labels['replyall'] = 'Responder a todos';
 $labels['replylist'] = 'Responder para a lista';
+$labels['forward'] = 'Encaminhar';
 $labels['forwardinline'] = 'Encaminhar junto ao corpo da mensagem';
 $labels['forwardattachment'] = 'Encaminhar como anexo';
 $labels['forwardmessage'] = 'Encaminhar a mensagem';
@@ -117,22 +115,27 @@ $labels['nextmessage'] = 'Próxima Mensagem';
 $labels['lastmessage'] = 'Última Mensagem';
 $labels['backtolist'] = 'Voltar para a lista de mensagens';
 $labels['viewsource'] = 'Exibir código-fonte';
+$labels['mark'] = 'Marcar';
 $labels['markmessages'] = 'Marcar mensagens';
 $labels['markread'] = 'como lidas';
 $labels['markunread'] = 'como não lidas';
-$labels['markflagged'] = 'como sinalizadas';
-$labels['markunflagged'] = 'como não sinalizadas';
+$labels['markflagged'] = 'Como sinalizadas';
+$labels['markunflagged'] = 'Como não sinalizadas';
 $labels['moreactions'] = 'Mais ações...';
+$labels['more'] = 'Mais';
+$labels['back'] = 'Voltar';
+$labels['options'] = 'Opções';
 $labels['select'] = 'Selecionar';
 $labels['all'] = 'Todas';
 $labels['none'] = 'Nenhuma';
+$labels['nonesort'] = 'Nenhuma';
 $labels['currpage'] = 'Página atual';
 $labels['unread'] = 'Não lidas';
-$labels['flagged'] = 'Sinalizada';
+$labels['flagged'] = 'Marcada';
 $labels['unanswered'] = 'Não respondida';
 $labels['deleted'] = 'Excluída';
 $labels['invert'] = 'Inverter';
-$labels['filter'] = 'Exibir';
+$labels['filter'] = 'Filtrar';
 $labels['list'] = 'Lista';
 $labels['threads'] = 'Tópicos';
 $labels['expand-all'] = 'Expandir Tudo';
@@ -142,10 +145,9 @@ $labels['threaded'] = 'Agrupado';
 $labels['autoexpand_threads'] = 'Expandir mensagens agrupadas';
 $labels['do_expand'] = 'todos os tópicos';
 $labels['expand_only_unread'] = 'somente com mensagem(s) não lidas';
-$labels['fromto'] = 'Remetente/Destinatário';
-$labels['flag'] = 'Marca';
+$labels['fromto'] = 'De/Para';
+$labels['flag'] = 'Sinalizador';
 $labels['attachment'] = 'Anexo';
-$labels['nonesort'] = 'Nenhuma';
 $labels['sentdate'] = 'Data de envio';
 $labels['arrival'] = 'Data de recebimento';
 $labels['asc'] = 'crescente';
@@ -153,11 +155,11 @@ $labels['desc'] = 'decrescente';
 $labels['listcolumns'] = 'Lista de colunas';
 $labels['listsorting'] = 'Coluna para ordenação';
 $labels['listorder'] = 'Ordem da classificação';
-$labels['listmode'] = 'Modo da listagem';
+$labels['listmode'] = 'Visualização em lista';
 $labels['folderactions'] = 'Ações para as pastas...';
 $labels['compact'] = 'Compactar';
 $labels['empty'] = 'Esvaziar';
-$labels['quota'] = 'Utilização';
+$labels['quota'] = 'Uso de disco';
 $labels['unknown'] = 'desconhecido';
 $labels['unlimited'] = 'ilimitado';
 $labels['quicksearch'] = 'Pesquisa rápida';
@@ -165,24 +167,25 @@ $labels['resetsearch'] = 'Limpar';
 $labels['searchmod'] = 'Opções da pesquisa';
 $labels['msgtext'] = 'Mensagem inteira';
 $labels['openinextwin'] = 'Abrir em nova janela';
-$labels['emlsave'] = 'Download (.eml)';
-$labels['compose'] = 'Escrever mensagem';
+$labels['emlsave'] = 'Baixar (formato .eml)';
 $labels['editasnew'] = 'Editar como novo';
-$labels['savemessage'] = 'Salvar Rascunho';
-$labels['sendmessage'] = 'Enviar';
+$labels['savemessage'] = 'Salvar como Rascunho';
+$labels['sendmessage'] = 'Enviar agora';
 $labels['addattachment'] = 'Anexar um arquivo';
 $labels['charset'] = 'Codificação';
 $labels['editortype'] = 'Tipo de editor';
-$labels['returnreceipt'] = 'Solicitar confirmação de recebimento';
+$labels['returnreceipt'] = 'Confirmação de recebimento';
 $labels['dsn'] = 'Recibo de entrega';
 $labels['mailreplyintro'] = 'Em $date, $sender escreveu:';
 $labels['originalmessage'] = 'Mensagem original';
 $labels['editidents'] = 'Editar identidades';
+$labels['spellcheck'] = 'Revisar';
 $labels['checkspelling'] = 'Verificar ortografia';
 $labels['resumeediting'] = 'Continuar a edição';
 $labels['revertto'] = 'Reverter para';
+$labels['attach'] = 'Anexar';
 $labels['attachments'] = 'Anexos';
-$labels['upload'] = 'Enviar';
+$labels['upload'] = 'Enviar arquivo';
 $labels['uploadprogress'] = '$percent ($current de $total)';
 $labels['close'] = 'Fechar';
 $labels['messageoptions'] = 'Opções da mensagem...';
@@ -194,6 +197,7 @@ $labels['highest'] = 'Mais alta';
 $labels['nosubject'] = '(sem assunto)';
 $labels['showimages'] = 'Exibir imagens';
 $labels['alwaysshow'] = 'Sempre exibir imagens de $sender';
+$labels['isdraft'] = 'Esta é uma mensagem de rascunho.';
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = 'Texto simples';
 $labels['savesentmessagein'] = 'Salvar mensagens enviadas em';
@@ -204,11 +208,11 @@ $labels['addbcc'] = 'Adicionar Cópia Oculta';
 $labels['addreplyto'] = 'Adicionar Responder para';
 $labels['addfollowupto'] = 'Adicionar Encaminhar para';
 $labels['mdnrequest'] = 'O remetente desta mensagem deseja ser notificado quando você ler esta mensagem. Você permite o envio desta notificação?';
-$labels['receiptread'] = 'Confirmação de Leitura (Exibida)';
+$labels['receiptread'] = 'Confirmação de Leitura (exibida)';
 $labels['yourmessage'] = 'Esta é uma confirmação de leitura da sua mensagem';
 $labels['receiptnote'] = 'Nota: Esta confirmação de leitura somente informa que a mensagem foi aberta no computador do destinatário. Não há garantia que o destinatário tenha lido ou compreendido o conteúdo da mensagem.';
-$labels['name'] = 'Nome para exibição';
-$labels['firstname'] = 'Primeiro nome';
+$labels['name'] = 'Nome de exibição';
+$labels['firstname'] = 'Primeiro Nome';
 $labels['surname'] = 'Sobrenome';
 $labels['middlename'] = 'Segundo Nome';
 $labels['nameprefix'] = 'Prefixo';
@@ -226,36 +230,37 @@ $labels['locality'] = 'Cidade';
 $labels['zipcode'] = 'CEP';
 $labels['region'] = 'Estado';
 $labels['country'] = 'País';
-$labels['birthday'] = 'Nascimento';
+$labels['birthday'] = 'Data de nascimento';
 $labels['anniversary'] = 'Aniversário';
-$labels['website'] = 'Website';
+$labels['website'] = 'Site';
 $labels['instantmessenger'] = 'Mensagem instantânea (IM)';
 $labels['notes'] = 'Anotações';
 $labels['male'] = 'masculino';
 $labels['female'] = 'feminino';
 $labels['manager'] = 'Gerente';
 $labels['assistant'] = 'Assistente';
+$labels['typeassistant'] = 'Assistente';
 $labels['spouse'] = 'Cônjuge';
 $labels['allfields'] = 'Todos os campos';
 $labels['search'] = 'Pesquisar';
 $labels['advsearch'] = 'Pesquisa Avançada';
-$labels['other'] = 'Outros';
+$labels['advanced'] = 'Avançado';
+$labels['other'] = 'Outro';
+$labels['typeother'] = 'Outro';
 $labels['typehome'] = 'Residencial';
 $labels['typework'] = 'Trabalho';
-$labels['typeother'] = 'Outro';
 $labels['typemobile'] = 'Celular';
 $labels['typemain'] = 'Principal';
 $labels['typehomefax'] = 'Fax Residencial';
 $labels['typeworkfax'] = 'Fax do Trabalho';
 $labels['typecar'] = 'Carro';
 $labels['typepager'] = 'Pager';
-$labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Assistente';
+$labels['typevideo'] = 'Vídeo';
 $labels['typehomepage'] = 'Página pessoal';
 $labels['typeblog'] = 'Blog';
 $labels['typeprofile'] = 'Perfil';
 $labels['addfield'] = 'Adicionar campo...';
-$labels['addcontact'] = 'Incluir novo contato';
+$labels['addcontact'] = 'Adicionar novo contato';
 $labels['editcontact'] = 'Editar contato';
 $labels['contacts'] = 'Contatos';
 $labels['contactproperties'] = 'Propriedades do contato';
@@ -263,13 +268,14 @@ $labels['personalinfo'] = 'Informações pessoais';
 $labels['edit'] = 'Editar';
 $labels['cancel'] = 'Cancelar';
 $labels['save'] = 'Salvar';
-$labels['delete'] = 'Apagar';
+$labels['delete'] = 'Excluir';
 $labels['rename'] = 'Renomear';
 $labels['addphoto'] = 'Adicionar';
-$labels['replacephoto'] = 'Alterar';
+$labels['replacephoto'] = 'Substituir';
+$labels['uploadphoto'] = 'Enviar foto';
 $labels['newcontact'] = 'Criar novo contato';
-$labels['deletecontact'] = 'Apagar contatos selecionados';
-$labels['composeto'] = 'Enviar mensagem para';
+$labels['deletecontact'] = 'Exclui os contatos selecionados';
+$labels['composeto'] = 'Compor mensagem para';
 $labels['contactsfromto'] = 'Contatos $from - $to de $count';
 $labels['print'] = 'Imprimir';
 $labels['export'] = 'Exportar';
@@ -277,8 +283,9 @@ $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';
 $labels['previouspage'] = 'Página Anterior';
-$labels['firstpage'] = 'Primeira Página ';
+$labels['firstpage'] = 'Primeira Página';
 $labels['nextpage'] = 'Próxima Página';
 $labels['lastpage'] = 'Última Página';
 $labels['group'] = 'Grupo';
@@ -288,12 +295,13 @@ $labels['searchsave'] = 'Salvar pesquisa';
 $labels['searchdelete'] = 'Excluir pesquisa';
 $labels['import'] = 'Importar';
 $labels['importcontacts'] = 'Importar contatos';
-$labels['importfromfile'] = 'Importar de arquivo:';
-$labels['importtarget'] = 'Adicionar novos contatos para o catálogo de endereços:';
+$labels['importfromfile'] = 'Importar do arquivo:';
+$labels['importtarget'] = 'Adicionar novos contatos ao catálogo de endereços:';
 $labels['importreplace'] = 'Substituir o catálogo de endereços atual';
 $labels['importtext'] = 'Você pode enviar contatos de um catálogo de endereços existente.<br/>Os contatos devem ser enviados no formato <a href="http://en.wikipedia.org/wiki/VCard">vCard</a>.';
-$labels['done'] = 'Finalizado';
+$labels['done'] = 'Concluído';
 $labels['settingsfor'] = 'Configurações para';
+$labels['about'] = 'Sobre';
 $labels['preferences'] = 'Preferências';
 $labels['userpreferences'] = 'Preferências do usuário';
 $labels['editpreferences'] = 'Editar preferências do usuário';
@@ -302,21 +310,21 @@ $labels['manageidentities'] = 'Gerenciar identidades desta conta';
 $labels['newidentity'] = 'Nova identidade';
 $labels['newitem'] = 'Novo item';
 $labels['edititem'] = 'Editar item';
-$labels['preferhtml'] = 'Exibir formatação HTML em mensagens';
+$labels['preferhtml'] = 'Exibir em HTML';
 $labels['defaultcharset'] = 'Conjunto padrão de caracteres';
 $labels['htmlmessage'] = 'Mensagem HTML';
 $labels['dateformat'] = 'Formato da data';
 $labels['timeformat'] = 'Formato da hora';
 $labels['prettydate'] = 'Exibir datas amigáveis';
-$labels['setdefault'] = 'Padrão';
+$labels['setdefault'] = 'Definir como padrão';
 $labels['autodetect'] = 'Automático';
 $labels['language'] = 'Idioma';
 $labels['timezone'] = 'Fuso horário';
 $labels['pagesize'] = 'Mensagens por página';
 $labels['signature'] = 'Assinatura';
 $labels['dstactive'] = 'Horário de verão';
-$labels['htmleditor'] = 'Criar mensagens formatadas em HTML';
-$labels['htmlonreply'] = 'em resposta de mensagens HTML';
+$labels['htmleditor'] = 'Criar mensagens em HTML';
+$labels['htmlonreply'] = 'em resposta à mensagem em HTML somente';
 $labels['htmlsignature'] = 'Assinatura em HTML';
 $labels['previewpane'] = 'Exibir pré-visualização';
 $labels['skin'] = 'Aparência da interface (tema)';
@@ -327,14 +335,15 @@ $labels['serversettings'] = 'Configurações do Servidor';
 $labels['mailboxview'] = 'Exibição da Caixa de Correio';
 $labels['mdnrequests'] = 'Envio de Confirmação de Leitura para o remetente';
 $labels['askuser'] = 'solicite minha confirmação';
-$labels['autosend'] = 'envie automaticamente';
-$labels['autosendknown'] = 'solicite minha confirmação, e envie automat. para os meus contatos';
-$labels['autosendknownignore'] = 'ignore, e envie automaticamente para os meus contatos';
-$labels['ignore'] = 'ignore';
+$labels['autosend'] = 'enviar confirmação';
+$labels['autosendknown'] = 'enviar confirmação para os meus contatos, caso contrário, pergunte-me';
+$labels['autosendknownignore'] = 'enviar confirmação para os meus contatos, caso contrário, ignore';
+$labels['ignore'] = 'ignorar';
 $labels['readwhendeleted'] = 'Marcar a mensagem como lida ao excluir';
 $labels['flagfordeletion'] = 'Marcar a mensagem para exclusão ao invés de excluir';
 $labels['skipdeleted'] = 'Não exibir mensagens excluídas';
-$labels['deletealways'] = 'Apagar as mensagens se movê-las para a lixeira falhar';
+$labels['deletealways'] = 'Excluir as mensagens se movê-las para a lixeira falhar';
+$labels['deletejunk'] = 'Apagar as mensagens da pasta de SPAM sem movê-las para a lixeira';
 $labels['showremoteimages'] = 'Exibir imagens externas';
 $labels['fromknownsenders'] = 'de remetentes conhecidos';
 $labels['always'] = 'sempre';
@@ -345,7 +354,7 @@ $labels['keepalive'] = 'Verificar se há novas mensagens';
 $labels['never'] = 'nunca';
 $labels['immediately'] = 'imediatamente';
 $labels['messagesdisplaying'] = 'Exibição de mensagens';
-$labels['messagescomposition'] = 'Envio de mensagens';
+$labels['messagescomposition'] = 'Redigir mensagens';
 $labels['mimeparamfolding'] = 'Nomes de anexos';
 $labels['2231folding'] = 'RFC 2231 Integral (Thunderbird)';
 $labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
@@ -354,67 +363,75 @@ $labels['force7bit'] = 'Usar codificação MIME para caracteres 8-bit';
 $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';
-$labels['displaynext'] = 'Exibir a mensagem seguinte após apagar/mover uma mensagem';
+$labels['displaynext'] = 'Exibir a mensagem seguinte após excluir/mover uma mensagem';
+$labels['defaultfont'] = 'Fonte padrão para mensagens HTML';
 $labels['mainoptions'] = 'Opções Principais';
+$labels['browseroptions'] = 'Opções de navegação';
 $labels['section'] = 'Seção';
 $labels['maintenance'] = 'Manutenção';
-$labels['newmessage'] = 'Novas Mensagens';
-$labels['listoptions'] = 'Opções de Exibição';
+$labels['newmessage'] = 'Nova mensagem';
 $labels['signatureoptions'] = 'Opções de Assinatura';
 $labels['whenreplying'] = 'Quando responder';
 $labels['replytopposting'] = 'iniciar nova mensagem acima da original';
 $labels['replybottomposting'] = 'iniciar nova mensagem abaixo da original';
 $labels['replyremovesignature'] = 'Remover assinatura original da mensagem ao respondê-la';
 $labels['autoaddsignature'] = 'Adicionar assinatura automaticamente';
-$labels['newmessageonly'] = 'somente para novas mensagens';
-$labels['replyandforwardonly'] = 'somente respostas e encaminhamentos';
+$labels['newmessageonly'] = 'somente em novas mensagens';
+$labels['replyandforwardonly'] = 'somente em respostas e encaminhamentos';
 $labels['replysignaturepos'] = 'Inserir assinatura ao responder ou encaminhar';
 $labels['belowquote'] = 'abaixo da citação';
 $labels['abovequote'] = 'acima da citação';
 $labels['insertsignature'] = 'Inserir assinatura';
-$labels['previewpanemarkread'] = 'Marcar mensagem pré-visualizada como lida';
+$labels['previewpanemarkread'] = 'Marcar mensagens pré-visualizadas como lidas';
 $labels['afternseconds'] = 'depois de $n segundos';
 $labels['reqmdn'] = 'Sempre pedir confirmação de leitura';
 $labels['reqdsn'] = 'Sempre pedir confirmação de entrega';
-$labels['replysamefolder'] = 'Guardar as respostas na mesma pasta da mensagem original';
-$labels['defaultaddressbook'] = 'Adicionar novos contatos para o catálogo de endereços:';
+$labels['replysamefolder'] = 'Colocar as respostas na mesma pasta da mensagem original';
+$labels['defaultaddressbook'] = 'Adicionar novos contatos para o catálogo de endereços selecionado';
+$labels['autocompletesingle'] = 'Ignorar endereços alternativos no autocompletar';
+$labels['listnamedisplay'] = 'Listar contatos como';
 $labels['spellcheckbeforesend'] = 'Verificar ortografia antes de enviar uma mensagem';
-$labels['spellcheckoptions'] = 'Opções do Verificador de Ortografia';
+$labels['spellcheckoptions'] = 'Opções do Verificador Ortográfico';
 $labels['spellcheckignoresyms'] = 'Ignorar palavras com símbolos';
 $labels['spellcheckignorenums'] = 'Ignorar palavras com números';
-$labels['spellcheckignorecaps'] = 'Ignorar palavras em maiúsculo';
+$labels['spellcheckignorecaps'] = 'Ignorar palavras com todas letras maiúsculas';
 $labels['addtodict'] = 'Adicionar ao dicionário';
+$labels['mailtoprotohandler'] = 'Associar links de e-mail (mailto:) para envio de mensagem através do webmail';
 $labels['folder'] = 'Pasta';
-$labels['folders'] = 'Pastas';
 $labels['foldername'] = 'Nome da pasta';
-$labels['subscribed'] = 'Ativo';
+$labels['subscribed'] = 'Inscrito';
 $labels['messagecount'] = 'Mensagens';
 $labels['create'] = 'Criar';
 $labels['createfolder'] = 'Criar nova pasta';
 $labels['managefolders'] = 'Gerenciar pastas';
 $labels['specialfolders'] = 'Pastas especiais';
 $labels['properties'] = 'Propriedades';
-$labels['folderproperties'] = 'Opções de pasta';
-$labels['parentfolder'] = 'Pasta origem';
+$labels['folderproperties'] = 'Propriedades da pasta';
+$labels['parentfolder'] = 'Pasta pai';
 $labels['location'] = 'Localização';
 $labels['info'] = 'Informação';
-$labels['getfoldersize'] = 'Obter tamanho da pasta';
+$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['sortby'] = 'Ordenado por';
+$labels['sortby'] = 'Ordenar por';
 $labels['sortasc'] = 'Ascendente';
 $labels['sortdesc'] = 'Descendente';
 $labels['undo'] = 'Desfazer';
+$labels['plugin'] = 'Plugin';
+$labels['version'] = 'Versão';
+$labels['source'] = 'Fonte';
+$labels['license'] = 'Licença';
+$labels['support'] = 'Obter suporte';
 $labels['B'] = 'B';
 $labels['KB'] = 'KB';
 $labels['MB'] = 'MB';
 $labels['GB'] = 'GB';
 $labels['unicode'] = 'Unicode';
 $labels['english'] = 'Inglês';
-$labels['westerneuropean'] = 'Europa Ocidental';
+$labels['westerneuropean'] = 'Oeste Europeu';
 $labels['easterneuropean'] = 'Leste Europeu';
 $labels['southeasterneuropean'] = 'Sudeste Europeu';
 $labels['baltic'] = 'Báltico';
@@ -431,4 +448,3 @@ $labels['japanese'] = 'Japonês';
 $labels['korean'] = 'Coreano';
 $labels['chinese'] = 'Chinês';
 
-?>
index 5f2df76416af6f95ae87b87820c9115f1ee9642a..1022be797132631f564f21f47796a1b163aa17fa 100644 (file)
@@ -1,75 +1,68 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/pt_BR/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Anderson S. Ferreira <anderson@cnpm.embrapa.br>               |
-|         Robson F. Ramaldes <rframaldes@gmail.com>                     |
-|         Alessandro Lenzi <alessandro@mistymountain.com.br>            |
-|         Gervasio Antonio <gdsa32-translations@yahoo.com.br>           |
-|         Victor Benincasa <vbenincasa@gmail.com>                       |
-|         Jarbas Peixoto Junior <jarbas.peixoto@gmail.com>              |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 5326 2011-10-10 09:39:58Z netbit $
-
+ +-----------------------------------------------------------------------+
+ | localization/pt_BR/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Victor Benincasa <vbenincasa@gmail.com>                       |
+ +-----------------------------------------------------------------------+
 */
 
 $messages = array();
+$messages['errortitle'] = 'Ocorreu um erro!';
 $messages['loginfailed'] = 'Falha no login';
-$messages['cookiesdisabled'] = 'Seu navegador não suporta cookies';
+$messages['cookiesdisabled'] = 'Seu navegador não aceita cookies';
 $messages['sessionerror'] = 'A sessão do seu navegador é inválida ou expirou';
-$messages['imaperror'] = 'Falha na conexão com o servidor IMAP';
+$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['dberror'] = 'Erro no banco de dados!';
+$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';
 $messages['invalidrequest'] = 'Requisição inválida! Nenhum dado foi salvo.';
-$messages['nomessagesfound'] = 'Nenhuma mensagem foi encontrada';
-$messages['loggedout'] = 'Sua sessão foi finalizada com sucesso. Até breve!';
+$messages['nomessagesfound'] = 'Nenhuma mensagem encontrada nessa caixa de mensagens';
+$messages['loggedout'] = 'Sua sessão foi finalizada com sucesso. Até logo!';
 $messages['mailboxempty'] = 'A caixa de mensagens está vazia';
 $messages['loading'] = 'Carregando...';
-$messages['uploading'] = 'Enviando anexo...';
-$messages['uploadingmany'] = 'Enviando anexos...';
-$messages['loadingdata'] = 'Carregando informações...';
+$messages['uploading'] = 'Enviando arquivo...';
+$messages['uploadingmany'] = 'Enviando arquivos...';
+$messages['loadingdata'] = 'Carregando dados...';
 $messages['checkingmail'] = 'Verificando se há novas mensagens...';
 $messages['sendingmessage'] = 'Enviando mensagem...';
 $messages['messagesent'] = 'Mensagem enviada com sucesso';
 $messages['savingmessage'] = 'Salvando Mensagem...';
-$messages['messagesaved'] = 'Mensagem gravada como rascunho';
-$messages['successfullysaved'] = 'Gravado com sucesso';
+$messages['messagesaved'] = 'Mensagem salva em Rascunhos';
+$messages['successfullysaved'] = 'Salvo com sucesso';
 $messages['addedsuccessfully'] = 'Contato incluído com sucesso.';
 $messages['contactexists'] = 'Já existe um contato com esse mesmo e-mail.';
 $messages['contactnameexists'] = 'Já existe um contato com o mesmo nome.';
-$messages['blockedimages'] = 'Para proteger sua privacidade, as imagens desta mensagem foram bloqueadas.';
-$messages['encryptedmessage'] = 'Esta mensagem está criptografada e não pode ser exibida. Desculpe.';
-$messages['nocontactsfound'] = 'Nenhum contato foi encontrado.';
+$messages['blockedimages'] = 'Para proteger sua privacidade, as imagens remotas desta mensagem foram bloqueadas.';
+$messages['encryptedmessage'] = 'Esta é uma mensagem criptografada e não pode ser exibida. Desculpe.';
+$messages['nocontactsfound'] = 'Nenhum contato encontrado.';
 $messages['contactnotfound'] = 'O contato solicitado não foi encontrado.';
 $messages['contactsearchonly'] = 'Informe os termos de pesquisa para localizar os contatos';
 $messages['sendingfailed'] = 'Falha no envio da mensagem.';
 $messages['senttooquickly'] = 'Aguarde $sec s para enviar a mensagem.';
 $messages['errorsavingsent'] = 'Ocorreu um erro ao salvar a mensagem enviada.';
 $messages['errorsaving'] = 'Ocorreu um erro ao salvar.';
-$messages['errormoving'] = 'Não foi possível mover a mensagem.';
+$messages['errormoving'] = 'Não foi possível mover a(s) mensagem(ns).';
 $messages['errorcopying'] = 'Não foi possível copiar a(s) mensagem(ns).';
-$messages['errordeleting'] = 'Não foi possível apagar a mensagem.';
-$messages['errormarking'] = 'Não foi possível marcar a mensagem.';
+$messages['errordeleting'] = 'Não foi possível apagar a(s) mensagem(ns).';
+$messages['errormarking'] = 'Não foi possível marcar a(s) mensagem(ns).';
 $messages['deletecontactconfirm'] = 'Deseja realmente excluir o(s) contato(s) selecionado(s)?';
 $messages['deletegroupconfirm'] = 'Deseja realmente excluir o grupo selecionado?';
 $messages['deletemessagesconfirm'] = 'Deseja realmente excluir a(s) mensagem(s) selecionada(s)?';
 $messages['deletefolderconfirm'] = 'Deseja realmente excluir esta pasta?';
 $messages['purgefolderconfirm'] = 'Deseja realmente excluir todas mensagens desta pasta?';
-$messages['contactdeleting'] = 'Apagando contato(s)...';
+$messages['contactdeleting'] = 'Excluindo contato(s)...';
 $messages['groupdeleting'] = 'Excluindo grupo...';
-$messages['folderdeleting'] = 'Apagando pasta...';
+$messages['folderdeleting'] = 'Excluindo pasta...';
 $messages['foldermoving'] = 'Movendo pasta...';
 $messages['foldersubscribing'] = 'Ativando pasta...';
 $messages['folderunsubscribing'] = 'Desativando pasta...';
@@ -79,18 +72,18 @@ $messages['nonamewarning'] = 'Por favor, informe o nome';
 $messages['nopagesizewarning'] = 'Por favor, informe o tamanho da página';
 $messages['nosenderwarning'] = 'Por favor, informe o e-mail do remetente';
 $messages['norecipientwarning'] = 'Por favor, informe pelo menos um destinatário';
-$messages['nosubjectwarning'] = 'O campo "Assunto" não foi preenchido. Deseja incluí-lo agora?';
+$messages['nosubjectwarning'] = 'O campo "Assunto" está vazio. Deseja incluí-lo agora?';
 $messages['nobodywarning'] = 'Enviar a mensagem sem texto?';
-$messages['notsentwarning'] = 'A mensagem não foi enviada, deseja excluí-la?';
+$messages['notsentwarning'] = 'A mensagem não foi enviada. Deseja descartar sua mensagem?';
 $messages['noldapserver'] = 'Por favor, selecione um servidor LDAP para a pesquisa';
-$messages['nosearchname'] = 'Por favor, informe o nome do contado ou seu endereço de e-mail';
+$messages['nosearchname'] = 'Por favor, informe o nome do contato ou seu endereço de e-mail.';
 $messages['notuploadedwarning'] = 'Há anexos ainda não enviados. Aguarde ou cancele o envio.';
 $messages['searchsuccessful'] = '$nr mensagens encontradas.';
 $messages['contactsearchsuccessful'] = '$nr contatos encontrados.';
 $messages['searchnomatch'] = 'A pesquisa não encontrou resultados';
 $messages['searching'] = 'Pesquisando...';
 $messages['checking'] = 'Verificando...';
-$messages['nospellerrors'] = 'Nenhum erro ortográfico foi encontrado';
+$messages['nospellerrors'] = 'Nenhum erro ortográfico encontrado';
 $messages['folderdeleted'] = 'Pasta excluída com sucesso';
 $messages['foldersubscribed'] = 'Pasta ativada com sucesso';
 $messages['folderunsubscribed'] = 'Pasta desativada com sucesso';
@@ -105,37 +98,38 @@ $messages['copysuccess'] = '$nr endereço(s) copiado(s) com sucesso';
 $messages['copyerror'] = 'Não foi possível copiar os endereços';
 $messages['sourceisreadonly'] = 'Esta fonte de endereço é somente leitura';
 $messages['errorsavingcontact'] = 'Não foi possível salvar o endereço de contato';
-$messages['movingmessage'] = 'Movendo mensagem...';
-$messages['copyingmessage'] = 'Copiando mensagem...';
+$messages['movingmessage'] = 'Movendo mensagem(ns)...';
+$messages['copyingmessage'] = 'Copiando mensagem(ns)...';
 $messages['copyingcontact'] = 'Copiando contato(s)...';
-$messages['deletingmessage'] = 'Excluindo mensagem(s)...';
-$messages['markingmessage'] = 'Marcando mensagem(s)...';
+$messages['deletingmessage'] = 'Excluindo mensagem(ns)...';
+$messages['markingmessage'] = 'Marcando mensagem(ns)...';
 $messages['addingmember'] = 'Adicionando contato(s) para o grupo...';
 $messages['removingmember'] = 'Removendo contato(s) do grupo...';
 $messages['receiptsent'] = 'Confirmação de recebimento enviada com sucesso';
 $messages['errorsendingreceipt'] = 'Não foi possível enviar a confirmação de recebimento';
-$messages['nodeletelastidentity'] = 'Você não pode excluir a única identidade';
+$messages['deleteidentityconfirm'] = 'Você realmente deseja excluir esta identidade?';
+$messages['nodeletelastidentity'] = 'Você não pode excluir sua única identidade';
 $messages['forbiddencharacter'] = 'O nome da pasta contém um caractere não permitido';
-$messages['selectimportfile'] = 'Selecione o arquivo para envio';
+$messages['selectimportfile'] = 'Selecione o arquivo a ser enviado.';
 $messages['addresswriterror'] = 'O catálogo de endereços selecionado não tem permissão de modificação';
-$messages['contactaddedtogroup'] = 'Adicionado os contatos a este grupo com sucesso';
-$messages['contactremovedfromgroup'] = 'Removido contatos deste grupo com sucesso';
+$messages['contactaddedtogroup'] = 'Contatos adicionados a este grupo com sucesso.';
+$messages['contactremovedfromgroup'] = 'Contatos removidos deste grupo com sucesso.';
 $messages['importwait'] = 'Importando, aguarde por favor...';
 $messages['importerror'] = 'Falha na importação! O arquivo enviado não é um arquivo vCard válido.';
 $messages['importconfirm'] = '<b>Foram importados com sucesso $inserted contatos</b>';
 $messages['importconfirmskipped'] = '<b>Ignorado(s) $skipped registro(s) já existente(s)</b>';
 $messages['opnotpermitted'] = 'Operação não permitida!';
-$messages['nofromaddress'] = 'Falta o endereço de email na identidade selecionada';
+$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['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';
-$messages['smtpfromerror'] = 'Erro SMTP ($code): Falha ao definir o remetente "$from" ($msg)';
-$messages['smtptoerror'] = 'Erro SMTP ($code): Falha ao adicionar o destinatário "$to" ($msg)';
-$messages['smtprecipientserror'] = 'Erro SMTP: Não é possível processar a lista destinatários';
+$messages['smtpconnerror'] = 'Erro SMTP ($code): Conexão ao servidor falhou.';
+$messages['smtpautherror'] = 'Erro SMTP ($code): Falha na autenticação.';
+$messages['smtpfromerror'] = 'Erro SMTP ($code): Falha ao definir o remetente "$from" ($msg).';
+$messages['smtptoerror'] = 'Erro SMTP ($code): Falha ao adicionar o destinatário "$to" ($msg).';
+$messages['smtprecipientserror'] = 'Erro SMTP: Não é possível processar a lista destinatários.';
 $messages['smtperror'] = 'Erro SMTP: $msg';
 $messages['emailformaterror'] = 'Endereço de e-mail inválido: $email';
-$messages['toomanyrecipients'] = 'Muitos destinatários. Reduza o número de destinatários para $max.';
+$messages['toomanyrecipients'] = 'Há muitos destinatários. Reduza o número de destinatários para $max.';
 $messages['maxgroupmembersreached'] = 'O número de membros do grupo excede o máximo de $max';
 $messages['internalerror'] = 'Ocorreu um erro interno. Por favor tente novamente.';
 $messages['contactdelerror'] = 'Não foi possível excluir o(s) contato(s).';
@@ -143,8 +137,8 @@ $messages['contactdeleted'] = 'Contato(s) excluído(s) com sucesso.';
 $messages['contactrestoreerror'] = 'Não foi possivel recuperar o(s) contato(s) excluído(s).';
 $messages['contactrestored'] = 'Contato(s) recuperado(s) com sucesso.';
 $messages['groupdeleted'] = 'Grupo excluído com sucesso';
-$messages['grouprenamed'] = 'Grupo renomeado com sucesso';
-$messages['groupcreated'] = 'Grupo criado com sucesso';
+$messages['grouprenamed'] = 'Grupo renomeado com sucesso.';
+$messages['groupcreated'] = 'Grupo criado com sucesso.';
 $messages['savedsearchdeleted'] = 'Pesquisa excluída com sucesso.';
 $messages['savedsearchdeleteerror'] = 'Não foi possível excluir a pesquisa.';
 $messages['savedsearchcreated'] = 'Pesquisa criada com sucesso.';
@@ -154,13 +148,13 @@ $messages['messagemoved'] = 'Mensagem(s) movida(s) com sucesso';
 $messages['messagecopied'] = 'Mensagem(s) copiada(s) com sucesso';
 $messages['messagemarked'] = 'Mensagem(s) marcada(s) com sucesso';
 $messages['autocompletechars'] = 'Digite pelo menos $min caractere(s) para auto-completar';
-$messages['autocompletemore'] = 'Muitos registros encontrados. Por favor, digite mais caracteres.';
+$messages['autocompletemore'] = 'Mais registros foram encontrados. Por favor, digite mais caracteres.';
 $messages['namecannotbeempty'] = 'Nome não pode ser vazio';
 $messages['nametoolong'] = 'Nome é muito longo';
 $messages['folderupdated'] = 'Pasta atualizada com sucesso';
 $messages['foldercreated'] = 'Pasta criada com sucesso';
 $messages['invalidimageformat'] = 'Formato de imagem inválido.';
-$messages['mispellingsfound'] = 'Foram detectados erros de ortografia.';
+$messages['mispellingsfound'] = 'Foram detectados erros de ortografia na mensagem.';
 $messages['parentnotwritable'] = 'Sem permissão para criar/mover a pasta dentro da pasta selecionada.';
+$messages['messagetoobig'] = 'A mensagem é muito grande para ser processada.';
 
-?>
index e864c65a3dee2cea870dff24951bdc8d56d521de..5b2c10fdfde9123113a1311c8ebbf58414b36980 100644 (file)
@@ -1,24 +1,16 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/pt_PT/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Authors: Sergio Rocha <sergio.rocha@makeitsimple.pt>                  |
-|          João Vale <jpvale@gmail.com>                                |
-|          Fernando Silva <fernando.silva@openquest.pt>                 |
-|          Nuno Costa <nuno@criacaoweb.net>                             |
-|          Teotónio Ricardo <teotonio.ricardo@webtuga.pt>              |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 5569 2011-12-07 14:47:32Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/pt_PT/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: David                                                         |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
@@ -28,9 +20,9 @@ $labels['password'] = 'Palavra-passe';
 $labels['server'] = 'Servidor';
 $labels['login'] = 'Entrar';
 $labels['logout'] = 'Sair';
-$labels['mail'] = 'Lista de mensagens';
-$labels['settings'] = 'Configurações pessoais';
-$labels['addressbook'] = 'Lista de contactos';
+$labels['mail'] = 'Mensagens';
+$labels['settings'] = 'Definições';
+$labels['addressbook'] = 'Contactos';
 $labels['inbox'] = 'A Receber';
 $labels['drafts'] = 'Rascunhos';
 $labels['sent'] = 'Itens Enviados';
@@ -48,10 +40,13 @@ $labels['size'] = 'Tamanho';
 $labels['priority'] = 'Prioridade';
 $labels['organization'] = 'Organização';
 $labels['readstatus'] = 'Estado de leitura';
+$labels['listoptions'] = 'Lista de opções...';
 $labels['mailboxlist'] = 'Pastas';
+$labels['folders'] = 'Pastas';
 $labels['messagesfromto'] = 'Mensagens de $from a $to de $count';
 $labels['threadsfromto'] = 'Tópicos de $from a $to de $count';
 $labels['messagenrof'] = 'Mensagem $nr de $count';
+$labels['fromtoshort'] = '$from – $to de $count';
 $labels['copy'] = 'Copiar';
 $labels['move'] = 'Mover';
 $labels['moveto'] = 'mover para...';
@@ -77,7 +72,8 @@ $labels['jan'] = 'Jan';
 $labels['feb'] = 'Fev';
 $labels['mar'] = 'Mar';
 $labels['apr'] = 'Abr';
-$labels['may'] = 'Mai';
+$labels['may'] = 'Maio';
+$labels['longmay'] = 'Maio';
 $labels['jun'] = 'Jun';
 $labels['jul'] = 'Jul';
 $labels['aug'] = 'Ago';
@@ -89,7 +85,6 @@ $labels['longjan'] = 'Janeiro';
 $labels['longfeb'] = 'Fevereiro';
 $labels['longmar'] = 'Março';
 $labels['longapr'] = 'Abril';
-$labels['longmay'] = 'Maio';
 $labels['longjun'] = 'Junho';
 $labels['longjul'] = 'Julho';
 $labels['longaug'] = 'Agosto';
@@ -98,12 +93,16 @@ $labels['longoct'] = 'Outubro';
 $labels['longnov'] = 'Novembro';
 $labels['longdec'] = 'Dezembro';
 $labels['today'] = 'Hoje';
-$labels['checkmail'] = 'Verificar novas mensagens';
+$labels['refresh'] = 'Actualizar';
+$labels['checkmail'] = 'Verificar existência de novas mensagens';
+$labels['compose'] = 'Nova mensagem';
 $labels['writenewmessage'] = 'Criar nova mensagem';
+$labels['reply'] = 'Responder';
 $labels['replytomessage'] = 'Responder';
 $labels['replytoallmessage'] = 'Responder a todos';
 $labels['replyall'] = 'Responder a todos';
 $labels['replylist'] = 'Lista de resposta';
+$labels['forward'] = 'Reencaminhar';
 $labels['forwardinline'] = 'Reencaminhar';
 $labels['forwardattachment'] = 'Reencaminhar como anexo';
 $labels['forwardmessage'] = 'Reencaminhar';
@@ -116,15 +115,20 @@ $labels['nextmessage'] = 'Próxima mensagem';
 $labels['lastmessage'] = 'Última mensagem';
 $labels['backtolist'] = 'Voltar';
 $labels['viewsource'] = 'Mostrar código fonte';
+$labels['mark'] = 'Marcar';
 $labels['markmessages'] = 'Marcar mensagens';
-$labels['markread'] = 'Como lidas';
-$labels['markunread'] = 'Como não lidas';
+$labels['markread'] = 'Como lida(s)';
+$labels['markunread'] = 'Como não lida(s)';
 $labels['markflagged'] = 'Com sinalização';
 $labels['markunflagged'] = 'Sem sinalização';
 $labels['moreactions'] = 'Mais acções...';
+$labels['more'] = 'Mais';
+$labels['back'] = 'Voltar';
+$labels['options'] = 'Opções';
 $labels['select'] = 'Seleccionar';
 $labels['all'] = 'Todas';
-$labels['none'] = 'Nenhuma';
+$labels['none'] = 'Nenhum';
+$labels['nonesort'] = 'Nenhum';
 $labels['currpage'] = 'Página actual';
 $labels['unread'] = 'Não lidas';
 $labels['flagged'] = 'Sinalizadas';
@@ -144,7 +148,6 @@ $labels['expand_only_unread'] = 'só com mensagens não lidas';
 $labels['fromto'] = 'Remetente/Destinatário';
 $labels['flag'] = 'Sinalizador';
 $labels['attachment'] = 'Anexo';
-$labels['nonesort'] = 'Nenhum';
 $labels['sentdate'] = 'Data de envio';
 $labels['arrival'] = 'Data de recepção';
 $labels['asc'] = 'Ascendente';
@@ -155,7 +158,7 @@ $labels['listorder'] = 'Ordenação';
 $labels['listmode'] = 'Modo de visualização';
 $labels['folderactions'] = 'Acções das pastas...';
 $labels['compact'] = 'Compactar';
-$labels['empty'] = 'Vazio';
+$labels['empty'] = 'Esvaziar';
 $labels['quota'] = 'Espaço utilizado';
 $labels['unknown'] = 'desconhecido';
 $labels['unlimited'] = 'ilimitado';
@@ -165,33 +168,34 @@ $labels['searchmod'] = 'Pesquisar em';
 $labels['msgtext'] = 'Mensagem completa';
 $labels['openinextwin'] = 'Abrir numa nova janela';
 $labels['emlsave'] = 'Guardar como (.eml)';
-$labels['compose'] = 'Escrever mensagem';
-$labels['editasnew'] = 'Editar como novo';
-$labels['savemessage'] = 'Guardar rascunho';
+$labels['editasnew'] = 'Editar como nova';
+$labels['savemessage'] = 'Guardar como rascunho';
 $labels['sendmessage'] = 'Enviar';
 $labels['addattachment'] = 'Adicionar anexo';
 $labels['charset'] = 'Charset';
 $labels['editortype'] = 'Tipo de editor';
-$labels['returnreceipt'] = 'Confirmação de leitura';
+$labels['returnreceipt'] = 'Recibo de leitura';
 $labels['dsn'] = 'Recibo de entrega';
 $labels['mailreplyintro'] = 'Em $date, $sender escreveu:';
 $labels['originalmessage'] = 'Mensagem Original';
 $labels['editidents'] = 'Editar entidades';
+$labels['spellcheck'] = 'Corrector Ortográfico';
 $labels['checkspelling'] = 'Verificar ortografia';
 $labels['resumeediting'] = 'Continuar a edição';
 $labels['revertto'] = 'Reverter para';
+$labels['attach'] = 'Anexar';
 $labels['attachments'] = 'Anexos';
 $labels['upload'] = 'Carregar';
 $labels['uploadprogress'] = '$percent ($current de $total)';
 $labels['close'] = 'Fechar';
 $labels['messageoptions'] = 'Opções de mensagens...';
 $labels['low'] = 'Baixa';
-$labels['lowest'] = 'Mais baixa';
+$labels['lowest'] = 'Muito baixa';
 $labels['normal'] = 'Normal';
 $labels['high'] = 'Alta';
-$labels['highest'] = 'Mais alta';
+$labels['highest'] = 'Muito alta';
 $labels['nosubject'] = '(sem assunto)';
-$labels['showimages'] = 'Exibir imagens';
+$labels['showimages'] = 'Mostrar imagens';
 $labels['alwaysshow'] = 'Mostrar sempre imagens a partir de $sender';
 $labels['isdraft'] = 'Esta é uma mensagem de rascunho.';
 $labels['htmltoggle'] = 'HTML';
@@ -202,7 +206,7 @@ $labels['maxuploadsize'] = 'Tamanho máximo permitido do ficheiro é $size';
 $labels['addcc'] = 'Adicionar Cc';
 $labels['addbcc'] = 'Adicionar Bcc';
 $labels['addreplyto'] = 'Adicionar Responder para';
-$labels['addfollowupto'] = 'Adicionar Reencaminhar-Para';
+$labels['addfollowupto'] = 'Adicionar Reencaminhar para';
 $labels['mdnrequest'] = 'O remetente desta mensagem pediu para ser notificado quando esta mensagem fosse lida. Deseja enviar uma notificação?';
 $labels['receiptread'] = 'Recibo de leitura';
 $labels['yourmessage'] = 'Isto é um recibo de leitura da sua mensagem';
@@ -235,14 +239,16 @@ $labels['male'] = 'masculino';
 $labels['female'] = 'feminino';
 $labels['manager'] = 'Gerente';
 $labels['assistant'] = 'Assistente';
+$labels['typeassistant'] = 'Assistente';
 $labels['spouse'] = 'Cônjuge';
 $labels['allfields'] = 'Todos os campos';
-$labels['search'] = 'Pesquisa';
+$labels['search'] = 'Pesquisar';
 $labels['advsearch'] = 'Pesquisa avançada';
+$labels['advanced'] = 'Pesquisa avançada';
 $labels['other'] = 'Outro';
+$labels['typeother'] = 'Outro';
 $labels['typehome'] = 'Residência';
 $labels['typework'] = 'Empresa';
-$labels['typeother'] = 'Outro';
 $labels['typemobile'] = 'Telemóvel';
 $labels['typemain'] = 'Principal';
 $labels['typehomefax'] = 'Fax da residência';
@@ -250,7 +256,6 @@ $labels['typeworkfax'] = 'Fax da empresa';
 $labels['typecar'] = 'Carro';
 $labels['typepager'] = 'Pager';
 $labels['typevideo'] = 'Vídeo';
-$labels['typeassistant'] = 'Assistente';
 $labels['typehomepage'] = 'Página Inicial';
 $labels['typeblog'] = 'Blog';
 $labels['typeprofile'] = 'Perfil';
@@ -258,7 +263,7 @@ $labels['addfield'] = 'Adicionar campo...';
 $labels['addcontact'] = 'Criar novo contacto';
 $labels['editcontact'] = 'Editar contacto';
 $labels['contacts'] = 'Contactos';
-$labels['contactproperties'] = 'Propriedades dos contactos';
+$labels['contactproperties'] = 'Dados do contacto';
 $labels['personalinfo'] = 'Informação pessoal';
 $labels['edit'] = 'Editar';
 $labels['cancel'] = 'Cancelar';
@@ -267,9 +272,10 @@ $labels['delete'] = 'Eliminar';
 $labels['rename'] = 'Renomear';
 $labels['addphoto'] = 'Adicionar';
 $labels['replacephoto'] = 'Substituir';
+$labels['uploadphoto'] = 'Carregar foto';
 $labels['newcontact'] = 'Criar novo contacto';
-$labels['deletecontact'] = 'Eliminar contactos seleccionados';
-$labels['composeto'] = 'Escrever mensagem para';
+$labels['deletecontact'] = 'Eliminar contacto(s) seleccionado(s)';
+$labels['composeto'] = 'Nova mensagem para';
 $labels['contactsfromto'] = 'Contactos $from - $to of $count';
 $labels['print'] = 'Imprimir';
 $labels['export'] = 'Exportar';
@@ -277,21 +283,22 @@ $labels['exportvcards'] = 'Exportar contactos no formato vCard';
 $labels['newcontactgroup'] = 'Criar novo grupo de contactos';
 $labels['grouprename'] = 'Renomear grupo';
 $labels['groupdelete'] = 'Eliminar grupo';
-$labels['previouspage'] = 'Exibir página anterior';
-$labels['firstpage'] = 'Exibir primeira página';
-$labels['nextpage'] = 'Exibir próxima página';
-$labels['lastpage'] = 'Exibir última página';
+$labels['groupremoveselected'] = 'Remover o(s) contacto(s) seleccionado(s) do grupo';
+$labels['previouspage'] = 'Página anterior';
+$labels['firstpage'] = 'Primeira página';
+$labels['nextpage'] = 'Página seguinte';
+$labels['lastpage'] = 'Última página';
 $labels['group'] = 'Grupo';
 $labels['groups'] = 'Grupos';
 $labels['personaladrbook'] = 'Endereços pessoais';
 $labels['searchsave'] = 'Guardar pesquisa';
 $labels['searchdelete'] = 'Eliminar pesquisa';
 $labels['import'] = 'Importar';
-$labels['importcontacts'] = 'Importar contactos';
+$labels['importcontacts'] = 'Importação de contactos';
 $labels['importfromfile'] = 'Importar do ficheiro:';
 $labels['importtarget'] = 'Adicionar novo contacto ao livro de endereços:';
-$labels['importreplace'] = 'Substituir todo o livro de endereços';
-$labels['importtext'] = 'Pode submeter contactos a partir de um livro de endereços. Actualmente suportamos importação de endereços no formato vCard.';
+$labels['importreplace'] = 'Substituir todo o livro de endereços.';
+$labels['importtext'] = 'Pode submeter contactos a partir de um livro de endereços.<br/>Actualmente apenas é suportada a importação de endereços no formato <a href="http://en.wikipedia.org/wiki/VCard">vCard</a>.';
 $labels['done'] = 'Terminado';
 $labels['settingsfor'] = 'Configurações para';
 $labels['about'] = 'Acerca';
@@ -303,7 +310,7 @@ $labels['manageidentities'] = 'Gerir identidades para esta conta';
 $labels['newidentity'] = 'Nova identidade';
 $labels['newitem'] = 'Novo item';
 $labels['edititem'] = 'Editar item';
-$labels['preferhtml'] = 'Exibir mensagens em HTML';
+$labels['preferhtml'] = 'Mostrar mensagens em HTML';
 $labels['defaultcharset'] = 'Conjunto de caracteres predefinido';
 $labels['htmlmessage'] = 'Mensagem em HTML';
 $labels['dateformat'] = 'Formato da data';
@@ -320,7 +327,7 @@ $labels['htmleditor'] = 'Escrever mensagens em HTML';
 $labels['htmlonreply'] = 'apenas em resposta a mensagens HTML';
 $labels['htmlsignature'] = 'Assinatura em HTML';
 $labels['previewpane'] = 'Mostrar pré-visualização';
-$labels['skin'] = 'Interface skin [tema]';
+$labels['skin'] = 'Aspecto [tema]';
 $labels['logoutclear'] = 'Esvaziar a Reciclagem ao sair';
 $labels['logoutcompact'] = 'Compactar Caixa de Entrada ao sair';
 $labels['uisettings'] = 'Interface do utilizador';
@@ -336,17 +343,18 @@ $labels['readwhendeleted'] = 'Marcar a mensagem como lida ao eliminar';
 $labels['flagfordeletion'] = 'Marcar a mensagem para eliminação, em vez de a eliminar';
 $labels['skipdeleted'] = 'Não mostrar mensagens eliminadas';
 $labels['deletealways'] = 'Se ao mover mensagens para a reciclagem falhar, eliminá-las';
+$labels['deletejunk'] = 'Eliminar diretamente as mensagens no Spam';
 $labels['showremoteimages'] = 'Mostrar imagens externas';
 $labels['fromknownsenders'] = 'de remetentes conhecidos';
 $labels['always'] = 'sempre';
 $labels['showinlineimages'] = 'Mostrar imagens anexadas abaixo da mensagem';
 $labels['autosavedraft'] = 'Guardar rascunho automaticamente';
 $labels['everynminutes'] = 'a cada $n minuto(s)';
-$labels['keepalive'] = 'Verificar novas mensagens em';
+$labels['keepalive'] = 'Verificar existência de novas mensagens';
 $labels['never'] = 'nunca';
 $labels['immediately'] = 'imediatamente';
 $labels['messagesdisplaying'] = 'Visualização de mensagens';
-$labels['messagescomposition'] = 'Composição de mensagens ';
+$labels['messagescomposition'] = 'Composição de mensagens';
 $labels['mimeparamfolding'] = 'Nome dos anexos';
 $labels['2231folding'] = 'Total RFC 2231 (Thunderbird)';
 $labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
@@ -354,40 +362,42 @@ $labels['2047folding'] = 'Total RFC 2047 (outro)';
 $labels['force7bit'] = 'Usar codificação MIME para caracteres de 8 bits';
 $labels['advancedoptions'] = 'Opções avançadas';
 $labels['focusonnewmessage'] = 'Activar a janela do navegador na nova mensagem';
-$labels['checkallfolders'] = 'Verificar todas as pastas para novas mensagens';
+$labels['checkallfolders'] = 'Verificar por novas mensagens em todas as pastas';
 $labels['displaynext'] = 'Depois de mover/eliminar uma mensagem, mostrar a próxima mensagem';
+$labels['defaultfont'] = 'Tipo de letra padrão para mensagens HTML';
 $labels['mainoptions'] = 'Opções';
+$labels['browseroptions'] = 'Opções do browser';
 $labels['section'] = 'Secção';
 $labels['maintenance'] = 'Manutenção';
 $labels['newmessage'] = 'Nova Mensagem';
-$labels['listoptions'] = 'Listar opções';
 $labels['signatureoptions'] = 'Opções de Assinatura';
 $labels['whenreplying'] = 'Ao responder';
 $labels['replytopposting'] = 'criar nova mensagem acima da original';
 $labels['replybottomposting'] = 'criar nova mensagem abaixo da original';
 $labels['replyremovesignature'] = 'Ao responder, remover a assinatura original da mensagem';
 $labels['autoaddsignature'] = 'Adicionar assinatura automaticamente';
-$labels['newmessageonly'] = 'nova mensagem apenas';
-$labels['replyandforwardonly'] = 'respostas e reenvios apenas';
+$labels['newmessageonly'] = 'apenas em novas mensagens';
+$labels['replyandforwardonly'] = 'apenas em respostas e reenvios';
 $labels['replysignaturepos'] = 'Ao responder ou reencaminhar colocar assinatura';
 $labels['belowquote'] = 'depois da citação';
 $labels['abovequote'] = 'antes da citação';
 $labels['insertsignature'] = 'Inserir assinatura';
-$labels['previewpanemarkread'] = 'Marcar mensagem pré-visualizada como lida';
+$labels['previewpanemarkread'] = 'Marcar mensagem como lida';
 $labels['afternseconds'] = 'após $n segundos';
 $labels['reqmdn'] = 'Pedir sempre um recibo de leitura';
 $labels['reqdsn'] = 'Pedir sempre um recibo de entrega';
-$labels['replysamefolder'] = 'Guardar as respostas na mesma pasta da mensagem original';
+$labels['replysamefolder'] = 'Guardar respostas na mesma pasta da mensagem original';
 $labels['defaultaddressbook'] = 'Adicionar novo contacto ao livro de endereços selecionado';
 $labels['autocompletesingle'] = 'Ignorar endereços de email alternativos no preenchimento automático';
+$labels['listnamedisplay'] = 'Listar contactos como';
 $labels['spellcheckbeforesend'] = 'Verificar ortografia antes de enviar a mensagem';
 $labels['spellcheckoptions'] = 'Opções de verificação ortográfica';
 $labels['spellcheckignoresyms'] = 'Ignorar palavras com símbolos';
 $labels['spellcheckignorenums'] = 'Ignorar palavras com números';
 $labels['spellcheckignorecaps'] = 'Ignorar palavras em maiúsculas';
 $labels['addtodict'] = 'Adicionar ao dicionário';
+$labels['mailtoprotohandler'] = 'Registar manipulador de protocolo para mailto: links';
 $labels['folder'] = 'Pasta';
-$labels['folders'] = 'Pastas';
 $labels['foldername'] = 'Nome da pasta';
 $labels['subscribed'] = 'Subscrita';
 $labels['messagecount'] = 'Mensagens';
@@ -438,4 +448,3 @@ $labels['japanese'] = 'Japonês';
 $labels['korean'] = 'Coreano';
 $labels['chinese'] = 'Chinês';
 
-?>
index ccf8791022ff5df3a717cbbf569e1f82e16b0ac2..f4c18207d2237a8bfbda8249d104c63d3b031356 100644 (file)
@@ -1,68 +1,63 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/pt_PT/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Authors: Sergio Rocha <sergio.rocha@makeitsimple.pt>                  |
-|          João Vale <jpvale@gmail.com>                                |
-|          Nuno Costa <nuno@criacaoweb.net>                              |
-|          Teotónio Ricardo <teotonio.ricardo@webtuga.pt>               |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 5569 2011-12-07 14:47:32Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/pt_PT/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: David                                                         |
+ +-----------------------------------------------------------------------+
 */
 
 $messages = array();
-$messages['loginfailed'] = 'O utilizador ou palavra-passe que introduziu está incorrecto.';
+$messages['errortitle'] = 'Ocorreu um erro!';
+$messages['loginfailed'] = 'O utilizador ou palavra-passe que introduziu não correspondem.';
 $messages['cookiesdisabled'] = 'O seu navegador não suporta cookies';
-$messages['sessionerror'] = 'A sua sessão é inválida ou expirou';
-$messages['imaperror'] = 'A ligação ao servidor IMAP falhou';
+$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['dberror'] = 'Erro na base de dados!';
+$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.';
 $messages['invalidrequest'] = 'Pedido inválido! Não foi guardada nenhuma informação.';
-$messages['nomessagesfound'] = 'Nenhuma mensagem encontrada na caixa de entrada';
-$messages['loggedout'] = 'A sua sessão foi terminada com sucesso. Até breve!';
+$messages['nomessagesfound'] = 'Não existem mensagens nesta pasta.';
+$messages['loggedout'] = 'A sua sessão foi encerrada com sucesso. Até breve!';
 $messages['mailboxempty'] = 'A caixa de entrada está vazia';
 $messages['loading'] = 'A carregar...';
 $messages['uploading'] = 'A enviar ficheiro...';
-$messages['uploadingmany'] = 'A carregar ficheiros...';
-$messages['loadingdata'] = 'A carregar informações...';
-$messages['checkingmail'] = 'A verificar novas mensagens...';
+$messages['uploadingmany'] = 'A enviar ficheiros...';
+$messages['loadingdata'] = 'A carregar dados...';
+$messages['checkingmail'] = 'A verificar existência de novas mensagens...';
 $messages['sendingmessage'] = 'A enviar mensagem...';
 $messages['messagesent'] = 'Mensagem enviada com sucesso';
 $messages['savingmessage'] = 'A guardar mensagem...';
 $messages['messagesaved'] = 'Mensagem guardada como rascunho';
 $messages['successfullysaved'] = 'Guardado com sucesso';
 $messages['addedsuccessfully'] = 'Contacto adicionado com sucesso';
-$messages['contactexists'] = 'Já existe um contacto com esse e-mail';
+$messages['contactexists'] = 'Já existe um contacto com este e-mail';
 $messages['contactnameexists'] = 'Já existe um contacto com este nome.';
 $messages['blockedimages'] = 'Para proteger a sua privacidade, as imagens desta mensagem foram bloqueadas';
-$messages['encryptedmessage'] = 'Esta mensagem está encriptada e não pode ser exibida. Desculpe.';
+$messages['encryptedmessage'] = 'Esta mensagem está encriptada e não pode ser apresentada. Desculpe!';
 $messages['nocontactsfound'] = 'Nenhum contacto encontrado';
 $messages['contactnotfound'] = 'O contacto especificado não foi encontrado';
 $messages['contactsearchonly'] = 'Insira os termos de pesquisa para localizar os contactos';
 $messages['sendingfailed'] = 'Falha no envio da mensagem';
-$messages['senttooquickly'] = 'Por favor espere $sec seg(s). antes de enviar esta mensagem';
+$messages['senttooquickly'] = 'Por favor espere $sec seg(s) antes de enviar esta mensagem';
 $messages['errorsavingsent'] = 'Ocorreu um erro ao guardar a mensagem enviada';
 $messages['errorsaving'] = 'Ocorreu um erro ao guardar';
 $messages['errormoving'] = 'Não foi possível mover a mensagem';
 $messages['errorcopying'] = 'Não foi possível copiar a mensagem';
-$messages['errordeleting'] = 'Não foi possível apagar a mensagem';
+$messages['errordeleting'] = 'Não foi possível eliminar a mensagem';
 $messages['errormarking'] = 'Não foi possível marcar a mensagem.';
-$messages['deletecontactconfirm'] = 'Deseja realmente eliminar o(s) contacto(s) selecionado(s)?';
+$messages['deletecontactconfirm'] = 'Deseja realmente eliminar o(s) contacto(s) seleccionado(s)?';
 $messages['deletegroupconfirm'] = 'Tem a certeza que pretende eliminar o grupo seleccionado?';
-$messages['deletemessagesconfirm'] = 'Deseja realmente eliminar a(s) mensagem(ns) selecionada(s)?';
+$messages['deletemessagesconfirm'] = 'Deseja realmente eliminar a(s) mensagem(ns) seleccionada(s)?';
 $messages['deletefolderconfirm'] = 'Deseja realmente eliminar esta pasta?';
 $messages['purgefolderconfirm'] = 'Deseja realmente eliminar todas mensagens desta pasta?';
 $messages['contactdeleting'] = 'A eliminar contacto(s)...';
@@ -72,16 +67,16 @@ $messages['foldermoving'] = 'A mover pasta...';
 $messages['foldersubscribing'] = 'A subscrever pasta...';
 $messages['folderunsubscribing'] = 'A cancelar subscrição da pasta...';
 $messages['formincomplete'] = 'Os campos não foram completamente preenchidos';
-$messages['noemailwarning'] = 'Por favor escreva um endereço de e-mail válido';
-$messages['nonamewarning'] = 'Por favor escreva o nome';
-$messages['nopagesizewarning'] = 'Por favor escreva o tamanho da página';
-$messages['nosenderwarning'] = 'Por favor insira o endereço de e-mail do remetente';
-$messages['norecipientwarning'] = 'Por favor escreva pelo menos um destinatário';
+$messages['noemailwarning'] = 'Por favor, introduza um endereço de e-mail válido.';
+$messages['nonamewarning'] = 'Por favor, escreva um nome.';
+$messages['nopagesizewarning'] = 'Por favor, escreva o tamanho da página';
+$messages['nosenderwarning'] = 'Por favor, introsuza o endereço de e-mail do remetente';
+$messages['norecipientwarning'] = 'Por favor, insira pelo menos um destinatário';
 $messages['nosubjectwarning'] = 'O campo "Assunto" não foi preenchido. Deseja incluí-lo agora?';
 $messages['nobodywarning'] = 'Enviar a mensagem sem texto?';
 $messages['notsentwarning'] = 'A mensagem não foi enviada, deseja apagá-la?';
-$messages['noldapserver'] = 'Seleccione um servidor LDAP para a pesquisa';
-$messages['nosearchname'] = 'Por favor, escreva o nome do contacto ou endereço de e-mail';
+$messages['noldapserver'] = 'Seleccione um servidor LDAP para efectuar a pesquisa';
+$messages['nosearchname'] = 'Por favor, insira o nome do contacto ou endereço de e-mail';
 $messages['notuploadedwarning'] = 'Nem todos os anexos foram ainda enviados. Por favor aguarde ou cancele o envio.';
 $messages['searchsuccessful'] = '$nr mensagens encontradas';
 $messages['contactsearchsuccessful'] = '$nr contactos encontrados.';
@@ -96,70 +91,70 @@ $messages['folderpurged'] = 'Pasta eliminada com sucesso';
 $messages['folderexpunged'] = 'Pasta compactada com sucesso.';
 $messages['deletedsuccessfully'] = 'Eliminado com sucesso';
 $messages['converting'] = 'A remover a formatação...';
-$messages['messageopenerror'] = 'Não foi possível carregar a mensagem';
+$messages['messageopenerror'] = 'Não foi possível carregar a mensagem.';
 $messages['fileuploaderror'] = 'Falha ao carregar o ficheiro';
-$messages['filesizeerror'] = 'O ficheiro excede o tamanho máximo permitido - $size';
+$messages['filesizeerror'] = 'O ficheiro excede o tamanho máximo permitido de $size';
 $messages['copysuccess'] = 'Foram copiados $nr endereços com sucesso';
 $messages['copyerror'] = 'Não foi possível copiar os endereços';
 $messages['sourceisreadonly'] = 'Esta origem de endereços é só de leitura';
 $messages['errorsavingcontact'] = 'Não foi possível guardar o endereço deste contacto';
-$messages['movingmessage'] = 'A mover mensagem...';
-$messages['copyingmessage'] = 'A copiar mensagem...';
+$messages['movingmessage'] = 'A mover mensagem(ns)...';
+$messages['copyingmessage'] = 'A copiar mensagem(ns)...';
 $messages['copyingcontact'] = 'A copiar contacto(s)...';
-$messages['deletingmessage'] = 'A eliminar mensagens...';
-$messages['markingmessage'] = 'A marcar mensagens...';
+$messages['deletingmessage'] = 'A eliminar mensagem(ns)...';
+$messages['markingmessage'] = 'A marcar mensagem(ns)...';
 $messages['addingmember'] = 'A adicionar contacto(s) ao grupo...';
 $messages['removingmember'] = 'A remover contacto(s) do grupo...';
-$messages['receiptsent'] = 'Recibo de leitura enviadocom sucesso';
+$messages['receiptsent'] = 'Recibo de leitura enviado com sucesso';
 $messages['errorsendingreceipt'] = 'Não foi possível enviar o recibo';
-$messages['nodeletelastidentity'] = 'Esta é a última identidade, não é possível eliminá-la.';
+$messages['deleteidentityconfirm'] = 'Pretende realmente eliminar esta identidade?';
+$messages['nodeletelastidentity'] = 'Esta é a sua última identidade, não é possível eliminá-la.';
 $messages['forbiddencharacter'] = 'O nome da pasta contém um caractere inválido';
-$messages['selectimportfile'] = 'Por favor seleccione um ficheiro para carregar';
-$messages['addresswriterror'] = 'Não é possível escrever no livro de endereços seleccionado';
-$messages['contactaddedtogroup'] = 'Contacto adicionado com sucesso a este grupo';
-$messages['contactremovedfromgroup'] = 'Contacto removido com sucesso deste grupo';
+$messages['selectimportfile'] = 'Por favor, seleccione um ficheiro para enviar.';
+$messages['addresswriterror'] = 'Não é possível escrever no livro de endereços seleccionado.';
+$messages['contactaddedtogroup'] = 'Contacto adicionado com sucesso a este grupo.';
+$messages['contactremovedfromgroup'] = 'Contacto removido com sucesso deste grupo.';
 $messages['importwait'] = 'A importar, por favor aguarde...';
 $messages['importerror'] = 'A importação falhou! O ficheiro submetido não é um ficheiro vCard válido.';
-$messages['importconfirm'] = '<b>$inserted contactos importados com sucesso, $skipped contactos já existentes ignorados</b>:<p><em>$names</em></p>';
+$messages['importconfirm'] = '<b>$inserted contactos importados com sucesso, $skipped contactos já existentes foram ignorados</b>:<p><em>$names</em></p>';
 $messages['importconfirmskipped'] = 'Ignoradas $skipped entradas já existentes.';
 $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['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';
-$messages['smtpfromerror'] = 'Erro SMTP ($code): Falha ao definir o remetente "$from" ($msg)';
-$messages['smtptoerror'] = 'Erro SMTP ($code): Falha ao adicionar o destinatário: "$to" ($msg)';
-$messages['smtprecipientserror'] = 'Erro SMTP: Impossível analisar a lista de destinatários';
+$messages['smtpconnerror'] = 'Erro SMTP ($code): A ligação ao servidor falhou.';
+$messages['smtpautherror'] = 'Erro SMTP ($code): A autenticação falhou.';
+$messages['smtpfromerror'] = 'Erro SMTP ($code): Falha ao definir o remetente "$from" ($msg).';
+$messages['smtptoerror'] = 'Erro SMTP ($code): Falha ao adicionar o destinatário: "$to" ($msg).';
+$messages['smtprecipientserror'] = 'Erro SMTP: Impossível analisar a lista de destinatários.';
 $messages['smtperror'] = 'Erro SMTP: $msg';
 $messages['emailformaterror'] = 'Endereço de e-mail incorrecto: $email';
 $messages['toomanyrecipients'] = 'Demasiados destinatários. Reduza o numero de destinatários para o máximo de $max.';
 $messages['maxgroupmembersreached'] = 'O número de membros do grupo ultrapassa o máximo permitido de $max.';
-$messages['internalerror'] = 'Ocorreu um erro interno. Por favor, tente de novamente.';
-$messages['contactdelerror'] = 'Não foi possível eliminar os contactos';
-$messages['contactdeleted'] = 'Contactos eliminados com sucesso';
+$messages['internalerror'] = 'Ocorreu um erro interno. Por favor, tente novamente.';
+$messages['contactdelerror'] = 'Não foi possível eliminar o(s) contacto(s).';
+$messages['contactdeleted'] = 'Contacto(s) eliminado(s) com sucesso.';
 $messages['contactrestoreerror'] = 'Não foi possível restaurar o(s) contacto(s) eliminados.';
 $messages['contactrestored'] = 'Contacto(s) restaurado(s) com sucesso.';
-$messages['groupdeleted'] = 'Grupo eliminado com sucesso';
-$messages['grouprenamed'] = 'Grupo renomeado com sucesso';
-$messages['groupcreated'] = 'Grupo criado com sucesso';
-$messages['savedsearchdeleted'] = 'Pesquisa guardada eliminada com sucesso.';
+$messages['groupdeleted'] = 'Grupo eliminado com sucesso.';
+$messages['grouprenamed'] = 'Grupo renomeado com sucesso.';
+$messages['groupcreated'] = 'Grupo criado com sucesso.';
+$messages['savedsearchdeleted'] = 'A pesquisa guardada foi eliminada com sucesso.';
 $messages['savedsearchdeleteerror'] = 'Não foi possível eliminar a pesquisa guardada.';
 $messages['savedsearchcreated'] = 'Pesquisa guardada criada com sucesso.';
 $messages['savedsearchcreateerror'] = 'Não foi possível criar a pesquisa guardada.';
-$messages['messagedeleted'] = 'Mensagens eliminadas com sucesso';
-$messages['messagemoved'] = 'Mensagens movidas com sucesso';
-$messages['messagecopied'] = 'Mensagens copiadas com sucesso';
-$messages['messagemarked'] = 'Mensagens marcadas com sucesso';
-$messages['autocompletechars'] = 'Indique pelo menos $min caracteres para auto completar';
-$messages['autocompletemore'] = 'Muitos registros encontrados. Por favor, insira mais caracteres.';
-$messages['namecannotbeempty'] = 'O nome não pode estar em branco';
-$messages['nametoolong'] = 'O nome é demasiado longo';
-$messages['folderupdated'] = 'Actualização da pasta concluída com sucesso';
-$messages['foldercreated'] = 'Pasta criada com sucesso';
-$messages['invalidimageformat'] = 'Formato de imagem não suportado';
-$messages['mispellingsfound'] = 'Foram detectados erros de ortografia nesta mensagem';
-$messages['parentnotwritable'] = 'Não é possível criar/mover esta pasta para a pasta seleccionada. Acesso negado.';
+$messages['messagedeleted'] = 'Mensagem(ns) eliminada(s) com sucesso.';
+$messages['messagemoved'] = 'Mensagem(ns) movida(s) com sucesso.';
+$messages['messagecopied'] = 'Mensagem(ns) copiada(s) com sucesso.';
+$messages['messagemarked'] = 'Mensage(m)ns marcada(s) com sucesso.';
+$messages['autocompletechars'] = 'Indique pelo menos $min caracteres para o auto preenchimento.';
+$messages['autocompletemore'] = 'Demasiados registos encontrados. Por favor, insira mais caracteres.';
+$messages['namecannotbeempty'] = 'O nome não pode estar em branco.';
+$messages['nametoolong'] = 'O nome é demasiado longo.';
+$messages['folderupdated'] = 'Actualização da pasta concluída com sucesso.';
+$messages['foldercreated'] = 'Pasta criada com sucesso.';
+$messages['invalidimageformat'] = 'O formato da imagem não é suportado.';
+$messages['mispellingsfound'] = 'Foram detectados erros de ortografia nesta mensagem.';
+$messages['parentnotwritable'] = 'Não é possível criar/mover esta pasta para a pasta seleccionada. O acesso foi negado.';
 $messages['messagetoobig'] = 'A mensagem é demasiado grande para ser processada.';
 
-?>
index 86286719fdf045103e89e33a00dea4dfbc759248..a53939c40b0ef60c19922b04340e781458234216 100644 (file)
@@ -1,21 +1,17 @@
 <?php
 
 /*
-+-----------------------------------------------------------------------+
-| language/ro_RO/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Daniel Anechitoaie - danieLs <daniels@safereaction.ro>        |
-|         Zeno Popovici <zeno.popovici at ulbsibiu.ro>                  |
-|         Cristian Nastase <cristian.nastase@itcaffe.net>               |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 4410 2011-01-12 18:25:02Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/ro_RO/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Iorga Vladut Mihai <iorga.vladutz@cucap.ro>                   |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $labels = array();
@@ -39,15 +35,19 @@ $labels['to'] = 'Destinatar';
 $labels['cc'] = 'Copie (CC)';
 $labels['bcc'] = 'Copie oarbă (BCC)';
 $labels['replyto'] = 'Răspunde la';
+$labels['followupto'] = 'Followup-To';
 $labels['date'] = 'Data';
 $labels['size'] = 'Mărime';
 $labels['priority'] = 'Prioritate';
 $labels['organization'] = 'Organizaţie';
-$labels['reply-to'] = 'Răspunde la';
+$labels['readstatus'] = 'Starea de citit';
+$labels['listoptions'] = 'Listează opţiunile...';
 $labels['mailboxlist'] = 'Dosare';
+$labels['folders'] = 'Dosare';
 $labels['messagesfromto'] = 'Mesaje de la $from până la $to din $count';
 $labels['threadsfromto'] = 'Grupuri de la $from până la $to din $count';
 $labels['messagenrof'] = '$nr mesaje din $count';
+$labels['fromtoshort'] = '$from - $to din $count';
 $labels['copy'] = 'Copiază';
 $labels['move'] = 'Mută';
 $labels['moveto'] = 'Mută in...';
@@ -74,6 +74,7 @@ $labels['feb'] = 'Feb';
 $labels['mar'] = 'Mar';
 $labels['apr'] = 'Apr';
 $labels['may'] = 'Mai';
+$labels['longmay'] = 'Mai';
 $labels['jun'] = 'Iun';
 $labels['jul'] = 'Iul';
 $labels['aug'] = 'Aug';
@@ -85,7 +86,6 @@ $labels['longjan'] = 'Ianuarie';
 $labels['longfeb'] = 'Februarie';
 $labels['longmar'] = 'Martie';
 $labels['longapr'] = 'Aprilie';
-$labels['longmay'] = 'Mai';
 $labels['longjun'] = 'Iunie';
 $labels['longjul'] = 'Iulie';
 $labels['longaug'] = 'August';
@@ -94,33 +94,42 @@ $labels['longoct'] = 'Octombrie';
 $labels['longnov'] = 'Noiembrie';
 $labels['longdec'] = 'Decembrie';
 $labels['today'] = 'Astăzi';
+$labels['refresh'] = 'Actualizează';
 $labels['checkmail'] = 'Verifică mesaje noi';
+$labels['compose'] = 'Scrie un mesaj';
 $labels['writenewmessage'] = 'Scrie mesaj nou';
+$labels['reply'] = 'Răspunde';
 $labels['replytomessage'] = 'Răspunde la mesaj';
 $labels['replytoallmessage'] = 'Răspunde la toţi';
+$labels['replyall'] = 'Răspunde la toţi';
+$labels['replylist'] = 'Lista de răspuns';
+$labels['forward'] = 'Înaintează';
+$labels['forwardinline'] = 'Înaintează ca citat';
+$labels['forwardattachment'] = 'Înaintează ca ataşament';
 $labels['forwardmessage'] = 'Trimite mesajul mai departe';
 $labels['deletemessage'] = 'Trimite mesajul la gunoi';
 $labels['movemessagetotrash'] = 'Mută mesajul la gunoi';
 $labels['printmessage'] = 'Listează mesajul';
 $labels['previousmessage'] = 'Afişează mesajul anterior';
-$labels['previousmessages'] = 'Afişează setul anterior de mesaje';
 $labels['firstmessage'] = 'Afişează primul mesaj';
-$labels['firstmessages'] = 'Afişează primul set de mesaje';
 $labels['nextmessage'] = 'Afişează următorul mesaj';
-$labels['nextmessages'] = 'Afişează setul următor de mesaje';
 $labels['lastmessage'] = 'Afişează ultimul mesaj';
-$labels['lastmessages'] = 'Afişează ultimul set de mesaje';
 $labels['backtolist'] = 'Înapoi la lista cu mesaje';
 $labels['viewsource'] = 'Afişează sursa';
+$labels['mark'] = 'Marchează';
 $labels['markmessages'] = 'Marchează mesajele';
 $labels['markread'] = 'Ca citit';
 $labels['markunread'] = 'Ca necitit';
 $labels['markflagged'] = 'Ca marcat';
 $labels['markunflagged'] = 'Ca nemarcat';
-$labels['messageactions'] = 'Mai multe acţiuni...';
+$labels['moreactions'] = 'Mai multe acțiuni...';
+$labels['more'] = 'Mai multe';
+$labels['back'] = 'Înapoi';
+$labels['options'] = 'Opţiuni';
 $labels['select'] = 'Selectează';
 $labels['all'] = 'Toate';
-$labels['none'] = 'Nici unul';
+$labels['none'] = 'Fără sortare';
+$labels['nonesort'] = 'Fără sortare';
 $labels['currpage'] = 'Pagina curentă';
 $labels['unread'] = 'Necitite';
 $labels['flagged'] = 'Marcat';
@@ -140,7 +149,6 @@ $labels['expand_only_unread'] = 'doar pe cele cu mesaje necitite';
 $labels['fromto'] = 'Expeditor/Destinatar';
 $labels['flag'] = 'Marcaj';
 $labels['attachment'] = 'Ataşament';
-$labels['nonesort'] = 'Fără sortare';
 $labels['sentdate'] = 'Data trimiterii';
 $labels['arrival'] = 'Data primirii';
 $labels['asc'] = 'ascendent';
@@ -149,9 +157,9 @@ $labels['listcolumns'] = 'Arată coloane';
 $labels['listsorting'] = 'Sortează după';
 $labels['listorder'] = 'Ordinea de sortare';
 $labels['listmode'] = 'Mod de vizualizare';
+$labels['folderactions'] = 'Actiuni asupra folder-ului...';
 $labels['compact'] = 'Compactează';
 $labels['empty'] = 'Goleşte';
-$labels['purge'] = 'Curăţă';
 $labels['quota'] = 'Spaţiu folosit';
 $labels['unknown'] = 'necunoscut';
 $labels['unlimited'] = 'nelimitat';
@@ -161,7 +169,6 @@ $labels['searchmod'] = 'Parametrii de căutare';
 $labels['msgtext'] = 'Tot mesajul';
 $labels['openinextwin'] = 'Deschide într-o fereastră nouă';
 $labels['emlsave'] = 'Salvează în format .eml';
-$labels['compose'] = 'Scrie un mesaj';
 $labels['editasnew'] = 'Editează ca nou';
 $labels['savemessage'] = 'Salvează această ciornă';
 $labels['sendmessage'] = 'Trimite mesaj';
@@ -169,12 +176,20 @@ $labels['addattachment'] = 'Ataşează fişier';
 $labels['charset'] = 'Set de caractere';
 $labels['editortype'] = 'Tip de editor';
 $labels['returnreceipt'] = 'Returnează confirmare de primire';
+$labels['dsn'] = 'Notificare despre starea trimiterii';
+$labels['mailreplyintro'] = 'În $date, $sender a scris:';
+$labels['originalmessage'] = 'Mesaj original';
+$labels['editidents'] = 'Editează identităţi';
+$labels['spellcheck'] = 'Ortografie';
 $labels['checkspelling'] = 'Verifică ortografie';
 $labels['resumeediting'] = 'Reia editarea';
 $labels['revertto'] = 'Revino la';
+$labels['attach'] = 'Ataşează';
 $labels['attachments'] = 'Ataşamente';
 $labels['upload'] = 'Încarcă';
+$labels['uploadprogress'] = '$percent ($current din $total)';
 $labels['close'] = 'Închide';
+$labels['messageoptions'] = 'Opţiuni mesaj...';
 $labels['low'] = 'Mică';
 $labels['lowest'] = 'Cea mai mică';
 $labels['normal'] = 'Normală';
@@ -183,14 +198,16 @@ $labels['highest'] = 'Cea mai mare';
 $labels['nosubject'] = '(fără subiect)';
 $labels['showimages'] = 'Afişează imagini';
 $labels['alwaysshow'] = 'Afişează întotdeauna imaginile de la $sender';
+$labels['isdraft'] = 'Acesta este un mesaj schiţă.';
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = 'Text simplu';
 $labels['savesentmessagein'] = 'Salvează mesajele în';
 $labels['dontsave'] = 'Nu salva';
 $labels['maxuploadsize'] = 'Mărimea maximă admisă a fişierului este $size';
-$labels['addcc'] = 'Adaugă Cc ';
+$labels['addcc'] = 'Adaugă Cc';
 $labels['addbcc'] = 'Adaugă Bcc';
 $labels['addreplyto'] = 'Adaugă Raspunde-La';
+$labels['addfollowupto'] = 'Adaugă Followup-To';
 $labels['mdnrequest'] = 'Expeditorul acestui mesaj a solicitat să fie notificat la cititrea mesajului. Doriţi să notificaţi expeditorul?';
 $labels['receiptread'] = 'Returnează confirmare (citit)';
 $labels['yourmessage'] = 'Aceasta este o confirmare de primire a mesajului dumneavoastră.';
@@ -198,13 +215,65 @@ $labels['receiptnote'] = 'Notă: Această confirmare doar vă informează că me
 $labels['name'] = 'Numele Contactului';
 $labels['firstname'] = 'Nume';
 $labels['surname'] = 'Prenume';
+$labels['middlename'] = 'Iniţiala tatălui';
+$labels['nameprefix'] = 'Prefix';
+$labels['namesuffix'] = 'Sufix';
+$labels['nickname'] = 'Poreclă';
+$labels['jobtitle'] = 'Funcția';
+$labels['department'] = 'Departament';
+$labels['gender'] = 'Sex';
+$labels['maidenname'] = 'Nume de fată';
 $labels['email'] = 'E-Mail';
+$labels['phone'] = 'Telefon';
+$labels['address'] = 'Adresă';
+$labels['street'] = 'Stradă';
+$labels['locality'] = 'Oraș';
+$labels['zipcode'] = 'Cod poştal';
+$labels['region'] = 'Stat/Judeţ';
+$labels['country'] = 'Țară';
+$labels['birthday'] = 'Ziua de naştere:';
+$labels['anniversary'] = 'Aniversare';
+$labels['website'] = 'Pagină web';
+$labels['instantmessenger'] = 'IM (Mesaj Instant)';
+$labels['notes'] = 'Notițe';
+$labels['male'] = 'masculin';
+$labels['female'] = 'feminin';
+$labels['manager'] = 'Manager';
+$labels['assistant'] = 'Asistent';
+$labels['typeassistant'] = 'Asistent';
+$labels['spouse'] = 'Soț/soție';
+$labels['allfields'] = 'Toate câmpurile';
+$labels['search'] = 'Căutare';
+$labels['advsearch'] = 'Căutare avansată';
+$labels['advanced'] = 'Avansat';
+$labels['other'] = 'Altele';
+$labels['typeother'] = 'Altele';
+$labels['typehome'] = 'Pagina Principală';
+$labels['typework'] = 'Servici';
+$labels['typemobile'] = 'Mobil';
+$labels['typemain'] = 'Principal';
+$labels['typehomefax'] = 'Fax acasă';
+$labels['typeworkfax'] = 'Fax serviciu';
+$labels['typecar'] = 'Mașină';
+$labels['typepager'] = 'Pager';
+$labels['typevideo'] = 'Video';
+$labels['typehomepage'] = 'Pagină de pornire';
+$labels['typeblog'] = 'Blog';
+$labels['typeprofile'] = 'Profil';
+$labels['addfield'] = 'Adaugă câmp...';
 $labels['addcontact'] = 'Adaugă contactul selectat în agendă';
 $labels['editcontact'] = 'Modifică contact';
+$labels['contacts'] = 'Contacte';
+$labels['contactproperties'] = 'Proprietăţile contactului...';
+$labels['personalinfo'] = 'Informații personale';
 $labels['edit'] = 'Editează';
 $labels['cancel'] = 'Renunţă';
 $labels['save'] = 'Salvează';
 $labels['delete'] = 'Şterge';
+$labels['rename'] = 'Redenumeşte';
+$labels['addphoto'] = 'Adaugă';
+$labels['replacephoto'] = 'Înlocuiește';
+$labels['uploadphoto'] = 'Încarcă poya';
 $labels['newcontact'] = 'Creează contact nou';
 $labels['deletecontact'] = 'Şterge contactul selectat';
 $labels['composeto'] = 'Compune e-mail pentru';
@@ -213,7 +282,8 @@ $labels['print'] = 'Listează';
 $labels['export'] = 'Exportă';
 $labels['exportvcards'] = 'Exportă contactele în format vCard';
 $labels['newcontactgroup'] = 'Creează un nou grup de contacte';
-$labels['groupactions'] = 'Acţiuni pentru grupurile de contacte ...';
+$labels['grouprename'] = 'Redenumește grupul';
+$labels['groupdelete'] = 'Șterge grupul';
 $labels['previouspage'] = 'Pagina anterioară';
 $labels['firstpage'] = 'Arată primul set';
 $labels['nextpage'] = 'Pagina următoare';
@@ -221,13 +291,17 @@ $labels['lastpage'] = 'Arată ultimul set';
 $labels['group'] = 'Grup';
 $labels['groups'] = 'Grupuri';
 $labels['personaladrbook'] = 'Adrese personale';
+$labels['searchsave'] = 'Salvează căutarea';
+$labels['searchdelete'] = 'Şterge căutarea';
 $labels['import'] = 'Importă';
 $labels['importcontacts'] = 'Importă contacte';
 $labels['importfromfile'] = 'Importă din fişier:';
+$labels['importtarget'] = 'Adaugă contactele noi în agenda:';
 $labels['importreplace'] = 'Înlocuieşte întreaga agendă';
 $labels['importtext'] = 'Puteţi încărca contacte dintr-o agendă existentă. Se pot importa adresele în format vCard.';
 $labels['done'] = 'Finalizat';
 $labels['settingsfor'] = 'Setări pentru';
+$labels['about'] = 'Despre';
 $labels['preferences'] = 'Preferinţe';
 $labels['userpreferences'] = 'Preferinţe utilizator';
 $labels['editpreferences'] = 'Modifică preferinţe utilizator';
@@ -239,6 +313,8 @@ $labels['edititem'] = 'Editează obiect';
 $labels['preferhtml'] = 'Format HTML';
 $labels['defaultcharset'] = 'Set implicit de caractere';
 $labels['htmlmessage'] = 'Mesaj HTML';
+$labels['dateformat'] = 'Format dată';
+$labels['timeformat'] = 'Format oră';
 $labels['prettydate'] = 'Dată formatată';
 $labels['setdefault'] = 'Setează implicit';
 $labels['autodetect'] = 'Automat';
@@ -248,6 +324,7 @@ $labels['pagesize'] = 'Rânduri pe pagină';
 $labels['signature'] = 'Semnătură';
 $labels['dstactive'] = 'Reglare automată oră de vară';
 $labels['htmleditor'] = 'Scrie mesaje HTML';
+$labels['htmlonreply'] = 'la răspunsul doar către un mesaj HTML';
 $labels['htmlsignature'] = 'Semnatură HTML';
 $labels['previewpane'] = 'Previzualizare mail';
 $labels['skin'] = 'Temă interfaţă';
@@ -259,6 +336,8 @@ $labels['mailboxview'] = 'Afişare căsuţă poştală';
 $labels['mdnrequests'] = 'Notificări expeditor';
 $labels['askuser'] = 'întreabă utilizatorul';
 $labels['autosend'] = 'trimite automat';
+$labels['autosendknown'] = 'trimite confirmarea de primire către contactele mele, în rest întreabă-mă';
+$labels['autosendknownignore'] = 'trimite confirmarea de primire către contactele mele, în rest ignoră';
 $labels['ignore'] = 'ignoră';
 $labels['readwhendeleted'] = 'Marchează mesajul ca şi citit la ştergere';
 $labels['flagfordeletion'] = 'Marchează mesajul pentru ştergere în loc de a-l şterge direct';
@@ -284,11 +363,12 @@ $labels['advancedoptions'] = 'Opţiuni avansate';
 $labels['focusonnewmessage'] = 'Focalizare pe fereastra browser-ului la mesaje noi';
 $labels['checkallfolders'] = 'Verifică toate dosarele pentru mesaje noi';
 $labels['displaynext'] = 'După ştergerea sau mutarea unui mesaj afişează-l pe următorul din listă';
+$labels['defaultfont'] = 'Font-ul implicit al mesajului HTML';
 $labels['mainoptions'] = 'Opţiuni principale';
+$labels['browseroptions'] = 'Optiuni browser';
 $labels['section'] = 'Secţiune';
 $labels['maintenance'] = 'Mentenanţă';
 $labels['newmessage'] = 'Mesaj nou';
-$labels['listoptions'] = 'Opţiuni listă';
 $labels['signatureoptions'] = 'Opţiuni semnătură';
 $labels['whenreplying'] = 'Când răspundeţi';
 $labels['replytopposting'] = 'începeţi mesajul nou deasupra originalului';
@@ -303,8 +383,20 @@ $labels['abovequote'] = 'deasupra citatului';
 $labels['insertsignature'] = 'Introduce o semnătură';
 $labels['previewpanemarkread'] = 'Marchează mesajele previzualizate ca citite';
 $labels['afternseconds'] = 'după $n secunde';
+$labels['reqmdn'] = 'Cere întotdeauna o confirmare de primire';
+$labels['reqdsn'] = 'Cere întotdeauna o notificare a stării de trimitere';
+$labels['replysamefolder'] = 'Pune răspunsurile în folder-ul mesajului la care se răspunde';
+$labels['defaultaddressbook'] = 'Adaugă noile contacte la agenda selectată';
+$labels['autocompletesingle'] = 'Sari peste adresele e-mail alternative la autocompletare';
+$labels['listnamedisplay'] = 'Listează contactele ca';
+$labels['spellcheckbeforesend'] = 'Verifică ortografia înainte de a trimite un mesaj';
+$labels['spellcheckoptions'] = 'Opţiuni verificare ortografie';
+$labels['spellcheckignoresyms'] = 'Ignoră cuvintele cu simboluri';
+$labels['spellcheckignorenums'] = 'Ignoră cuvintele cu numere';
+$labels['spellcheckignorecaps'] = 'Ignoră cuvintele din litere mari';
+$labels['addtodict'] = 'Adaugă la dicţionar';
+$labels['mailtoprotohandler'] = 'Îregistrează handler protocol pentru mailto: link-uri';
 $labels['folder'] = 'Dosar';
-$labels['folders'] = 'Dosare';
 $labels['foldername'] = 'Nume dosar';
 $labels['subscribed'] = 'Înscris';
 $labels['messagecount'] = 'Mesaje';
@@ -312,9 +404,26 @@ $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';
+$labels['parentfolder'] = 'Dosar părinte';
+$labels['location'] = 'Locație';
+$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['sortby'] = 'Sortează după';
 $labels['sortasc'] = 'Sortează ascendent';
 $labels['sortdesc'] = 'Sortează descendent';
+$labels['undo'] = 'Anulaţi/Revocați';
+$labels['plugin'] = 'Plugin';
+$labels['version'] = 'Versiune';
+$labels['source'] = 'Sursă';
+$labels['license'] = 'Licență';
+$labels['support'] = 'Cere asistenţă';
 $labels['B'] = 'O';
 $labels['KB'] = 'KO';
 $labels['MB'] = 'MO';
@@ -338,4 +447,3 @@ $labels['japanese'] = 'Japonez';
 $labels['korean'] = 'Coreean';
 $labels['chinese'] = 'Chinezesc';
 
-?>
\ No newline at end of file
index 4bcaa19c65f1004b82c74fb4bb091985c216f336..afaba87a10d72977c32f041f0cc93696b29d1885 100644 (file)
@@ -1,35 +1,37 @@
 <?php
 
 /*
-+-----------------------------------------------------------------------+
-| language/ro_RO/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Daniel Anechitoaie - danieLs <daniels@safereaction.ro>        |
-|         Zeno Popovici <zeno.popovici at ulbsibiu.ro>                  |
-|         Cristian Nastase <cristian.nastase@itcaffe.net>               |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 4410 2011-01-12 18:25:02Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/ro_RO/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Iorga Vladut Mihai <iorga.vladutz@cucap.ro>                   |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $messages = array();
+$messages['errortitle'] = 'A avut loc o EROARE!';
 $messages['loginfailed'] = 'Autentificare eşuată';
 $messages['cookiesdisabled'] = 'Browserul dumneavoastră nu acceptă cookies';
 $messages['sessionerror'] = 'Sesiunea dumneavoastră este invalidă sau a expirat';
-$messages['imaperror'] = 'Conectarea la serverul IMAP a eşuat';
+$messages['storageerror'] = 'Conectarea la serverul IMAP a eşuat';
 $messages['servererror'] = 'Eroare de server!';
+$messages['servererrormsg'] = 'Eroare Server: $msg';
+$messages['dberror'] = 'Eroare bază de date!';
+$messages['errorreadonly'] = 'Nu se poate efectua operaţia. Dosarul este doar-citire.';
+$messages['errornoperm'] = 'Nu se poate efectua operaţia. Acces interzis.';
 $messages['invalidrequest'] = 'Solicitare invalidă! Datele nu au fost salvate.';
 $messages['nomessagesfound'] = 'Nu a fost găsit nici un mesaj în această căsuţă poştală';
 $messages['loggedout'] = 'Sesiune încheiată cu succes. La revedere!';
 $messages['mailboxempty'] = 'Căsuţa poştală este goală';
 $messages['loading'] = 'Se încarcă...';
 $messages['uploading'] = 'Fişierul se încarcă...';
+$messages['uploadingmany'] = 'Încarc fişierele...';
 $messages['loadingdata'] = 'Se încarcă informaţiile...';
 $messages['checkingmail'] = 'Se caută mesaje noi...';
 $messages['sendingmessage'] = 'Trimitere mesaj...';
@@ -39,10 +41,12 @@ $messages['messagesaved'] = 'Mesajul a fost salvat în Ciorne';
 $messages['successfullysaved'] = 'Salvarea s-a efectuat cu succes';
 $messages['addedsuccessfully'] = 'Contactul a fost adăugat cu succes în agendă';
 $messages['contactexists'] = 'Mai există un contact cu această adresă de e-mail';
+$messages['contactnameexists'] = 'Există deja un contact cu acelaşi nume.';
 $messages['blockedimages'] = 'Pentru a vă proteja intimitatea, imaginile externe au fost blocate.';
 $messages['encryptedmessage'] = 'Acesta este un mesaj criptat şi nu poate fi afişat. Ne pare rău.';
 $messages['nocontactsfound'] = 'Nu s-a găsit nici un contact';
 $messages['contactnotfound'] = 'Contactul solicitat nu a fost găsit.';
+$messages['contactsearchonly'] = 'Introdu nişte termeni decăutare pentru a găsi contactele';
 $messages['sendingfailed'] = 'Nu s-a reuşit trimiterea mesajului';
 $messages['senttooquickly'] = 'Vă rugăm aşteptaţi $sec sec. înainte de a trimite acest mesaj';
 $messages['errorsavingsent'] = 'A intervenit o eroare în timp ce se efectua salvarea mesajului trimis';
@@ -52,11 +56,16 @@ $messages['errorcopying'] = 'Mesajul(e) nu a(u) putut fi copiat(e)';
 $messages['errordeleting'] = 'Mesajul(e) nu a(u) putut fi şters(e)';
 $messages['errormarking'] = 'Mesajul(e) nu a(u) putut fi marcat(e)';
 $messages['deletecontactconfirm'] = 'Sunteţi sigur că doriţi să ştergeţi contactul(ele) selectate?';
+$messages['deletegroupconfirm'] = 'Chiar vrei să ştergi grupul selectat?';
 $messages['deletemessagesconfirm'] = 'Chiar doriţi să ştergeţi mesajele selectate ?';
 $messages['deletefolderconfirm'] = 'Sunteţi sigur că doriţi să ştergeţi acest dosar?';
 $messages['purgefolderconfirm'] = 'Sunteţi sigur că doriţi să ştergeţi toate mesajele din acest dosar?';
+$messages['contactdeleting'] = 'Şterg contactul(ele)...';
+$messages['groupdeleting'] = 'Şterg grupul...';
 $messages['folderdeleting'] = 'Se şterge dosarul...';
 $messages['foldermoving'] = 'Se mută dosarul...';
+$messages['foldersubscribing'] = 'Abonez dosarul...';
+$messages['folderunsubscribing'] = 'Dezabonez dosarul...';
 $messages['formincomplete'] = 'Formularul nu a fost completat corect';
 $messages['noemailwarning'] = 'Vă rugăm să introduceţi o adresă de e-mail validă';
 $messages['nonamewarning'] = 'Vă rugăm să introduceţi un nume';
@@ -67,15 +76,19 @@ $messages['nosubjectwarning'] = 'Mesajul nu are subiect. Vreţi să introduceţi
 $messages['nobodywarning'] = 'Trimiteţi acest mesaj fără text?';
 $messages['notsentwarning'] = 'Mesajul nu a fost trimis. Vreţi să renunţaţi la el?';
 $messages['noldapserver'] = 'Vă rugăm să alegeţi un server ldap pentru căutare';
-$messages['nocontactsreturned'] = 'Nu s-a găsit nici un contact';
 $messages['nosearchname'] = 'Vă rugăm să introduceţi un nume de contact sau adresă de e-mail';
 $messages['notuploadedwarning'] = 'Nu toate fişierele au fost ataşate. Vă rugăm să aşteptaţi sau să anulaţi încărcarea acestora.';
 $messages['searchsuccessful'] = '$nr mesaje găsite';
+$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['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.';
+$messages['folderunsubscribed'] = 'Dosarul a fost dezabonat cu succes.';
+$messages['folderpurged'] = 'Dosarul a fost golit cu succes.';
+$messages['folderexpunged'] = 'Dosarul a fost comprimat cu succes.';
 $messages['deletedsuccessfully'] = 'Mesaj şters cu succes !';
 $messages['converting'] = 'Resetez mesajul la parametrii iniţiali...';
 $messages['messageopenerror'] = 'Nu s-a putut încărca mesajul din server';
@@ -87,8 +100,14 @@ $messages['sourceisreadonly'] = 'Sursa acestei adrese este "read-only"(se poate
 $messages['errorsavingcontact'] = 'Nu s-a putut salva adresa de contact';
 $messages['movingmessage'] = 'Mutare mesaj....';
 $messages['copyingmessage'] = 'Copiere mesaj...';
+$messages['copyingcontact'] = 'Copiez contact(ele)...';
+$messages['deletingmessage'] = 'Şterg mesaj(ele)...';
+$messages['markingmessage'] = 'Marchez mesaj(ele)...';
+$messages['addingmember'] = 'Adaug contact(ele) la grup...';
+$messages['removingmember'] = 'Şterg contact(ele) din grup...';
 $messages['receiptsent'] = 'Confirmarea de citire a fost trimisă cu succes';
 $messages['errorsendingreceipt'] = 'Confirmarea nu a putut fi trimisă';
+$messages['deleteidentityconfirm'] = 'Chiar vrei să ştergi aceasă identitate?';
 $messages['nodeletelastidentity'] = 'Nu puteţi şterge această identitate, este ultima.';
 $messages['forbiddencharacter'] = 'Numele dosarului conţine un caracter nepermis.';
 $messages['selectimportfile'] = 'Va rugăm să selectaţi fişierul pentru încărcare';
@@ -98,6 +117,7 @@ $messages['contactremovedfromgroup'] = 'Contactele au fost şterse cu succes din
 $messages['importwait'] = 'Datele sunt importate, vă rugăm să aşteptaţi...';
 $messages['importerror'] = 'Importul a eşuat! Fişierul încărcat nu este un fişier vCard valid.';
 $messages['importconfirm'] = 'Contactele $inserted au fost importate cu succes, $skipped intrări au fost ignorate deoarece ele există deja:$names';
+$messages['importconfirmskipped'] = '<b>Am sărit peste $skipped înregistrări</b>';
 $messages['opnotpermitted'] = 'Operaţia nu este permisă!';
 $messages['nofromaddress'] = 'Nu există o adresă de e-mail în identitatea selectată';
 $messages['editorwarning'] = 'Trecerea în mod text a editorului va cauza pierderea formatării textului. Doriţi să continuaţi?';
@@ -111,5 +131,30 @@ $messages['smtperror'] = 'Eroare SMTP: $msg';
 $messages['emailformaterror'] = 'Adresă de e-mail incorectă: $email';
 $messages['toomanyrecipients'] = 'Prea mulţi destinatari. Reduceţi numărul de destinatari la $max.';
 $messages['maxgroupmembersreached'] = 'Numărul de membri ai grupului depăşeşte maximul de $max.';
+$messages['internalerror'] = 'A avut loc o eroare internă. Încearcă mai târziu.';
+$messages['contactdelerror'] = 'Nu am putut şterge contact(ele).';
+$messages['contactdeleted'] = 'Contact(ele) au fost şterse cu succes.';
+$messages['contactrestoreerror'] = 'Nu am putut restaura contact(ele) şterse.';
+$messages['contactrestored'] = 'Contact(ele) au fost restaurate cu succes.';
+$messages['groupdeleted'] = 'Grupul a fost şters cu succes.';
+$messages['grouprenamed'] = 'Grupul a fost redenumit cu succes.';
+$messages['groupcreated'] = 'Grupul a fost creat cu succes.';
+$messages['savedsearchdeleted'] = 'Căutarea salvată a fost ştearsă cu succes.';
+$messages['savedsearchdeleteerror'] = 'Nu a putut şterge căutarea salvată.';
+$messages['savedsearchcreated'] = 'Căutarea a fost salvată cu succes.';
+$messages['savedsearchcreateerror'] = 'Nu am putut salva căutarea.';
+$messages['messagedeleted'] = 'Mesaj(ele) a(u) fost şters(e) cu succes.';
+$messages['messagemoved'] = 'Mesaj(ele) a(u) fost mutat(e) cu succes.';
+$messages['messagecopied'] = 'Mesaj(ele) a(u) fost copiat(e) cu succes.';
+$messages['messagemarked'] = 'Mesaj(ele) a(u) fost marcat(e) cu succes.';
+$messages['autocompletechars'] = 'Introdu măcar $min caractere pentru autocompletare.';
+$messages['autocompletemore'] = 'Au fost găsite mai multe înregistrări. Introdu mai multe caractere.';
+$messages['namecannotbeempty'] = '"Nume" nu poate fi gol.';
+$messages['nametoolong'] = 'Numele este prea lung.';
+$messages['folderupdated'] = 'Dosar actualizat cu succes.';
+$messages['foldercreated'] = 'Dosar creat cu succes.';
+$messages['invalidimageformat'] = 'Tip invalid de imagine.';
+$messages['mispellingsfound'] = 'Au fost găsite greşeli de ortografie în mesaj.';
+$messages['parentnotwritable'] = 'Nu pot crea/muta dosarul în dosarul părinte selectat. Fără drepturi de acces.';
+$messages['messagetoobig'] = 'Partea de mesaj este prea mare pentru a o procesa.';
 
-?>
index a89e530361c56adfd638f1626c9b983f63b729f3..8b69d22dd26c4b470f54a1e89fcda1ebe98ebbb3 100644 (file)
@@ -1,22 +1,16 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/ru_RU/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Artur Smolkin <artsmolkin@gmail.com>                          |
-| Updates: Sergey Dukachev <iam@dukess.ru>                              |
-| Support: www.roundcube.ru                                             |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 5290 2011-09-28 17:09:50Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/ru_RU/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Lanigiro Nainiarku <r00f@itx.com.ua>                          |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
@@ -46,10 +40,13 @@ $labels['size'] = 'Размер';
 $labels['priority'] = 'Приоритет';
 $labels['organization'] = 'Организация';
 $labels['readstatus'] = 'Статус прочтения';
+$labels['listoptions'] = 'Настройки списка...';
 $labels['mailboxlist'] = 'Папки';
+$labels['folders'] = 'Папки';
 $labels['messagesfromto'] = 'Сообщения с $from по $to из $count';
 $labels['threadsfromto'] = 'Обсуждения с $from по $to из $count';
 $labels['messagenrof'] = 'Сообщение $nr из $count';
+$labels['fromtoshort'] = '$from – $to из $count';
 $labels['copy'] = 'Копировать';
 $labels['move'] = 'Переместить';
 $labels['moveto'] = 'Переместить в...';
@@ -76,6 +73,7 @@ $labels['feb'] = 'Фев';
 $labels['mar'] = 'Мар';
 $labels['apr'] = 'Апр';
 $labels['may'] = 'Май';
+$labels['longmay'] = 'Май';
 $labels['jun'] = 'Июн';
 $labels['jul'] = 'Июл';
 $labels['aug'] = 'Авг';
@@ -87,7 +85,6 @@ $labels['longjan'] = 'Январь';
 $labels['longfeb'] = 'Февраль';
 $labels['longmar'] = 'Март';
 $labels['longapr'] = 'Апрель';
-$labels['longmay'] = 'Май';
 $labels['longjun'] = 'Июнь';
 $labels['longjul'] = 'Июль';
 $labels['longaug'] = 'Август';
@@ -96,12 +93,16 @@ $labels['longoct'] = 'Октябрь';
 $labels['longnov'] = 'Ноябрь';
 $labels['longdec'] = 'Декабрь';
 $labels['today'] = 'Сегодня';
+$labels['refresh'] = 'Обновить';
 $labels['checkmail'] = 'Доставить почту';
+$labels['compose'] = 'Написать сообщение';
 $labels['writenewmessage'] = 'Новое сообщение';
+$labels['reply'] = 'Ответить';
 $labels['replytomessage'] = 'Ответить';
 $labels['replytoallmessage'] = 'Ответить по списку или отправителю и всем получателям';
 $labels['replyall'] = 'Ответить всем';
 $labels['replylist'] = 'Ответить в список рассылки';
+$labels['forward'] = 'Переслать';
 $labels['forwardinline'] = 'Переслать в теле письма';
 $labels['forwardattachment'] = 'Переслать как вложение';
 $labels['forwardmessage'] = 'Переслать';
@@ -114,15 +115,20 @@ $labels['nextmessage'] = 'Показать следующее сообщение
 $labels['lastmessage'] = 'Показать последнее сообщение';
 $labels['backtolist'] = 'К списку сообщений';
 $labels['viewsource'] = 'Исходный текст';
+$labels['mark'] = 'Пометить';
 $labels['markmessages'] = 'Пометить сообщение';
 $labels['markread'] = 'Как прочитанное';
 $labels['markunread'] = 'Как непрочитанное';
 $labels['markflagged'] = 'Установить флаг';
 $labels['markunflagged'] = 'Снять флаг';
-$labels['messageactions'] = 'Еще действия...';
+$labels['moreactions'] = 'Дополнительные действия...';
+$labels['more'] = 'Еще';
+$labels['back'] = 'Назад';
+$labels['options'] = 'Параметры';
 $labels['select'] = 'Выбрать';
 $labels['all'] = 'Все';
-$labels['none'] = 'Ничего';
+$labels['none'] = 'Отсутствует';
+$labels['nonesort'] = 'Отсутствует';
 $labels['currpage'] = 'Текущая страница';
 $labels['unread'] = 'Непрочитанные';
 $labels['flagged'] = 'Помеченные';
@@ -142,7 +148,6 @@ $labels['expand_only_unread'] = 'только с непрочитанными с
 $labels['fromto'] = 'Отправитель/Получатель';
 $labels['flag'] = 'Флаг';
 $labels['attachment'] = 'Вложение';
-$labels['nonesort'] = 'Отсутствует';
 $labels['sentdate'] = 'Дата отправки';
 $labels['arrival'] = 'Дата получения';
 $labels['asc'] = 'по возрастанию';
@@ -163,7 +168,6 @@ $labels['searchmod'] = 'Варианты поиска';
 $labels['msgtext'] = 'Всё сообщение';
 $labels['openinextwin'] = 'Открыть в новом окне';
 $labels['emlsave'] = 'Сохранить (.eml)';
-$labels['compose'] = 'Написать сообщение';
 $labels['editasnew'] = 'Редактировать как новое';
 $labels['savemessage'] = 'Сохранить черновик';
 $labels['sendmessage'] = 'Отправить сейчас';
@@ -175,9 +179,11 @@ $labels['dsn'] = 'Уведомление о состоянии доставки'
 $labels['mailreplyintro'] = '$sender писал $date:';
 $labels['originalmessage'] = 'Исходное сообщение';
 $labels['editidents'] = 'Изменить данные';
+$labels['spellcheck'] = 'Орфография';
 $labels['checkspelling'] = 'Проверить орфографию';
 $labels['resumeediting'] = 'Продолжить редактирование';
 $labels['revertto'] = 'Отменить правки';
+$labels['attach'] = 'Вложить';
 $labels['attachments'] = 'Вложения';
 $labels['upload'] = 'Загрузить';
 $labels['uploadprogress'] = '$percent ($current из $total)';
@@ -191,6 +197,7 @@ $labels['highest'] = 'Высоч.';
 $labels['nosubject'] = '(без темы)';
 $labels['showimages'] = 'Показать изображения';
 $labels['alwaysshow'] = 'Всегда показывать изображенияв письмах от $sender';
+$labels['isdraft'] = 'Это черновик.';
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = 'Текст';
 $labels['savesentmessagein'] = 'Сохранить в';
@@ -232,14 +239,16 @@ $labels['male'] = 'мужской';
 $labels['female'] = 'женский';
 $labels['manager'] = 'Менеджер';
 $labels['assistant'] = 'Помощник';
+$labels['typeassistant'] = 'Помощник';
 $labels['spouse'] = 'Супруг';
 $labels['allfields'] = 'Все поля';
 $labels['search'] = 'Поиск';
 $labels['advsearch'] = 'Расширенный поиск';
-$labels['other'] = 'Прочие';
+$labels['advanced'] = 'Дополнительно';
+$labels['other'] = 'Другое';
+$labels['typeother'] = 'Другое';
 $labels['typehome'] = 'Дом';
 $labels['typework'] = 'Работа';
-$labels['typeother'] = 'Другое';
 $labels['typemobile'] = 'Мобильный';
 $labels['typemain'] = 'Основной';
 $labels['typehomefax'] = 'Домашний факс';
@@ -247,7 +256,6 @@ $labels['typeworkfax'] = 'Рабочий факс';
 $labels['typecar'] = 'Автомобиль';
 $labels['typepager'] = 'Пэйджер';
 $labels['typevideo'] = 'Видео';
-$labels['typeassistant'] = 'Помощник';
 $labels['typehomepage'] = 'Домашняя страница';
 $labels['typeblog'] = 'Блог';
 $labels['typeprofile'] = 'Профиль';
@@ -264,6 +272,7 @@ $labels['delete'] = 'Удалить';
 $labels['rename'] = 'Переименовать';
 $labels['addphoto'] = 'Добавить';
 $labels['replacephoto'] = 'Заменить';
+$labels['uploadphoto'] = 'Загрузить фотографию';
 $labels['newcontact'] = 'Создать новый контакт';
 $labels['deletecontact'] = 'Удалить выбранные контакты';
 $labels['composeto'] = 'Создать сообщение для выбранных контактов';
@@ -272,9 +281,9 @@ $labels['print'] = 'Печать';
 $labels['export'] = 'Экспорт';
 $labels['exportvcards'] = 'Экспортировать контакты в формате vCard';
 $labels['newcontactgroup'] = 'Создать группу контактов';
-$labels['groupactions'] = 'Действия для групп контактов';
 $labels['grouprename'] = 'Переименовать группу';
 $labels['groupdelete'] = 'Удалить группу';
+$labels['groupremoveselected'] = 'Удалить выбранные контакты из группы';
 $labels['previouspage'] = 'Показать предыдущий';
 $labels['firstpage'] = 'Показать первый';
 $labels['nextpage'] = 'Показать следующий';
@@ -282,6 +291,8 @@ $labels['lastpage'] = 'Показать последний';
 $labels['group'] = 'Группа';
 $labels['groups'] = 'Группы';
 $labels['personaladrbook'] = 'Персональные адреса';
+$labels['searchsave'] = 'Сохранить запрос';
+$labels['searchdelete'] = 'Удалить запрос';
 $labels['import'] = 'Импортировать';
 $labels['importcontacts'] = 'Импортировать контакты';
 $labels['importfromfile'] = 'Импортировать из файла:';
@@ -290,6 +301,7 @@ $labels['importreplace'] = 'Заменить всю адресную книгу'
 $labels['importtext'] = 'Вы можете загрузить контакты из существующей адресной книги. На данный момент поддерживается загрузка в формате vCard.';
 $labels['done'] = 'Завершено';
 $labels['settingsfor'] = 'Настройки для';
+$labels['about'] = 'О программе';
 $labels['preferences'] = 'Настройки';
 $labels['userpreferences'] = 'Настройки пользователя';
 $labels['editpreferences'] = 'Редактировать настройки пользователя';
@@ -301,6 +313,8 @@ $labels['edititem'] = 'Правка';
 $labels['preferhtml'] = 'Предпочитать HTML';
 $labels['defaultcharset'] = 'Набор символов по-умолчанию';
 $labels['htmlmessage'] = 'Сообщение HTML';
+$labels['dateformat'] = 'Формат даты';
+$labels['timeformat'] = 'Формат времени';
 $labels['prettydate'] = 'Красивые даты';
 $labels['setdefault'] = 'Использовать по умолчанию';
 $labels['autodetect'] = 'Определять автоматически';
@@ -329,6 +343,7 @@ $labels['readwhendeleted'] = 'Помечать как прочитанное п
 $labels['flagfordeletion'] = 'Помечать для удаления вместо удаления';
 $labels['skipdeleted'] = 'Не показывать удаленные сообщения';
 $labels['deletealways'] = 'Удалять сообщения, если не получается поместить их в корзину';
+$labels['deletejunk'] = 'Удалять сообщения из папки СПАМ минуя Корзину';
 $labels['showremoteimages'] = 'Показывать удаленные изображения';
 $labels['fromknownsenders'] = 'от известных отправителей';
 $labels['always'] = 'всегда';
@@ -349,11 +364,12 @@ $labels['advancedoptions'] = 'Дополнительные настройки';
 $labels['focusonnewmessage'] = 'Фокусировать окно браузера при новом сообщении';
 $labels['checkallfolders'] = 'Проверять новые сообщения во всех папках';
 $labels['displaynext'] = 'Показать следующее сообщение, после удаления или перемещения данного';
+$labels['defaultfont'] = 'Шрифт по умолчанию HTML сообщения';
 $labels['mainoptions'] = 'Основные настройки';
+$labels['browseroptions'] = 'Настройки обозревателя';
 $labels['section'] = 'Раздел';
 $labels['maintenance'] = 'Обслуживание';
 $labels['newmessage'] = 'Новое сообщение';
-$labels['listoptions'] = 'Список настроек';
 $labels['signatureoptions'] = 'Опции подписи';
 $labels['whenreplying'] = 'При ответе';
 $labels['replytopposting'] = 'начать новое сообщение перед цитируемым';
@@ -372,9 +388,16 @@ $labels['reqmdn'] = 'Всегда запрашивать уведомление
 $labels['reqdsn'] = 'Всегда запрашивать уведомление о состоянии доставки';
 $labels['replysamefolder'] = 'Помещать ответы в ту же папку, где находится оригинал';
 $labels['defaultaddressbook'] = 'Добавить новые контакты в выбранную адресную книгу';
+$labels['autocompletesingle'] = 'Пропускать дополнительные адреса в автозавершении';
+$labels['listnamedisplay'] = 'Выводить список контактов как';
 $labels['spellcheckbeforesend'] = 'Проверять орфографию перед отправкой';
+$labels['spellcheckoptions'] = 'Параметры проверки орфографии';
+$labels['spellcheckignoresyms'] = 'Пропускать слова с символами';
+$labels['spellcheckignorenums'] = 'Пропускать слова с цифрами';
+$labels['spellcheckignorecaps'] = 'Пропускать слова из прописных букв';
+$labels['addtodict'] = 'Добавить в словарь';
+$labels['mailtoprotohandler'] = 'Зарегистрировать обработчик для ссылок mailto:';
 $labels['folder'] = 'Папка';
-$labels['folders'] = 'Папки';
 $labels['foldername'] = 'Имя папки';
 $labels['subscribed'] = 'Подписан';
 $labels['messagecount'] = 'Сообщения';
@@ -397,6 +420,11 @@ $labels['sortby'] = 'Сортировать по';
 $labels['sortasc'] = 'Возрастанию';
 $labels['sortdesc'] = 'Убыванию';
 $labels['undo'] = 'Отмена';
+$labels['plugin'] = 'Модуль';
+$labels['version'] = 'Версия';
+$labels['source'] = 'Источник';
+$labels['license'] = 'Лицензия';
+$labels['support'] = 'Поддержка';
 $labels['B'] = 'Б';
 $labels['KB'] = 'КБ';
 $labels['MB'] = 'МБ';
@@ -420,4 +448,3 @@ $labels['japanese'] = 'Японский';
 $labels['korean'] = 'Корейский';
 $labels['chinese'] = 'Китайский';
 
-?>
index 52e848403a710c8421a67544a8d98ad16067b47c..eeb298279bac4c2072b89363bf415d29eaff538b 100644 (file)
@@ -1,31 +1,28 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/ru_RU/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Artur Smolkin <artsmolkin@ya.ru>                              |
-| Updates: Sergey Dukachev <iam@dukess.ru>                              |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 5290 2011-09-28 17:09:50Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/ru_RU/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Sergey Dukachev <admin@mfitness.ru>                           |
+ +-----------------------------------------------------------------------+
 */
 
 $messages = array();
+$messages['errortitle'] = 'Произошла ошибка!';
 $messages['loginfailed'] = 'Неудачная попытка входа';
 $messages['cookiesdisabled'] = 'Ваш броузер не принимает cookie';
 $messages['sessionerror'] = 'Ваша сессия устарела';
-$messages['imaperror'] = 'Неудачное соединение с IMAP сервером';
+$messages['storageerror'] = 'Неудачное соединение с IMAP сервером';
 $messages['servererror'] = 'Ошибка сервера!';
 $messages['servererrormsg'] = 'Ошибка сервера: $msg';
 $messages['dberror'] = 'Ошибка базы данных!';
+$messages['requesttimedout'] = 'Превышено время ожидания запроса';
 $messages['errorreadonly'] = 'Невозможно выполнить операцию. Папка доступна только для чтения';
 $messages['errornoperm'] = 'Невозможно выполнить операцию. Доступ запрещён';
 $messages['invalidrequest'] = 'Неверный запрос! Информация не сохранена.';
@@ -49,6 +46,7 @@ $messages['blockedimages'] = 'В целях безопасности загру
 $messages['encryptedmessage'] = 'Сообщение зашифровано и не может быть показано. Обратитесь к администратору сервера.';
 $messages['nocontactsfound'] = 'Контакты не найдены';
 $messages['contactnotfound'] = 'Требуемый контакт не найден';
+$messages['contactsearchonly'] = 'Введите условия для поиска контактов';
 $messages['sendingfailed'] = 'Не удалось отправить сообщение';
 $messages['senttooquickly'] = 'Вы должны подождать $sec сек. для отправки сообщения';
 $messages['errorsavingsent'] = 'Произошла ошибка при сохранении отправленного сообщения';
@@ -62,6 +60,7 @@ $messages['deletegroupconfirm'] = 'Вы действительно хотите
 $messages['deletemessagesconfirm'] = 'Вы действительно хотите удалить выбранные сообщения?';
 $messages['deletefolderconfirm'] = 'Вы действительно хотите удалить эту папку?';
 $messages['purgefolderconfirm'] = 'Вы действительно хотите удалить все сообщения в этой папке?';
+$messages['contactdeleting'] = 'Удаление контакта(ов)...';
 $messages['groupdeleting'] = 'Удаление группы...';
 $messages['folderdeleting'] = 'Удаление папки...';
 $messages['foldermoving'] = 'Перемещение папки...';
@@ -77,10 +76,10 @@ $messages['nosubjectwarning'] = 'Поле Тема не заполнено. Хо
 $messages['nobodywarning'] = 'Отправить сообщение без текста?';
 $messages['notsentwarning'] = 'Сообщение не было отправлено. Вы хотите отказаться от отправки?';
 $messages['noldapserver'] = 'Пожалуйста, выберите LDAP сервер для поиска';
-$messages['nocontactsreturned'] = 'Контакты не найдены';
 $messages['nosearchname'] = 'Пожалуйста, введите имя или адрес E-Mail';
 $messages['notuploadedwarning'] = 'Вложения загружены не полностью. Подождите или отмените загрузку.';
 $messages['searchsuccessful'] = 'Найденных сообщений - $nr';
+$messages['contactsearchsuccessful'] = '$nr контактов найдено.';
 $messages['searchnomatch'] = 'Сообщений не найдено';
 $messages['searching'] = 'Поиск...';
 $messages['checking'] = 'Проверка...';
@@ -108,6 +107,7 @@ $messages['addingmember'] = 'Добавление контакта(ов) в гр
 $messages['removingmember'] = 'Удаление контакта(ов) из группы...';
 $messages['receiptsent'] = 'Уведомление о прочтении отправлено';
 $messages['errorsendingreceipt'] = 'Уведомление о прочтении не отправлено';
+$messages['deleteidentityconfirm'] = 'Вы на самом деле хотите удалить эту сущность?';
 $messages['nodeletelastidentity'] = 'Вы не можете удалить этот профиль, он у вас последний';
 $messages['forbiddencharacter'] = 'Имя папки содержит недопустимые символы';
 $messages['selectimportfile'] = 'Выберите файл для загрузки';
@@ -127,7 +127,6 @@ $messages['smtpautherror'] = 'SMTP Error ($code): Ошибка авториза
 $messages['smtpfromerror'] = 'SMTP Error ($code): Невозможно установить отправителя "$from" ($msg)';
 $messages['smtptoerror'] = 'SMTP Error ($code): Невозможно добавить получателя "$to" ($msg)';
 $messages['smtprecipientserror'] = 'SMTP Error: Невозможно обработать список получателей';
-$messages['smtpdsnerror'] = 'SMTP Error: Уведомления о состоянии доставки не поддерживаются';
 $messages['smtperror'] = 'SMTP Error ($code): $msg';
 $messages['emailformaterror'] = 'Неверный адрес: $email';
 $messages['toomanyrecipients'] = 'Слишком много получателей, уменьшите их количество до $max.';
@@ -137,14 +136,19 @@ $messages['contactdelerror'] = 'Не могу удалить контакт(ы)'
 $messages['contactdeleted'] = 'Контакт(ы) успешно удален(ы)';
 $messages['contactrestoreerror'] = 'Не удалось восстановить удалённый(е) контакт(ы).';
 $messages['contactrestored'] = 'Контакт(ы) успешно восстановлены.';
-$messages['groupdeleted'] = 'Группа успешно удалена ';
+$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'] = 'Папка обновлена';
@@ -152,5 +156,5 @@ $messages['foldercreated'] = 'Папка создана';
 $messages['invalidimageformat'] = 'Неверный формат изображения';
 $messages['mispellingsfound'] = 'В сообщении обнаружены орфографические ошибки';
 $messages['parentnotwritable'] = 'Не удается создать/переместить папку в выбранную родительскую папку. Нет прав доступа.';
+$messages['messagetoobig'] = 'Часть сообщения слишком велика для обработки.';
 
-?>
index 578ba29c22a69c3d036e25fd00f19ac9e92c7d36..d7e7115acf0ae240e55c8f4a68b409cee594563d 100644 (file)
 
 /*
  +-----------------------------------------------------------------------+
- | language/si/labels.inc                                                |
+ | localization/si_LK/labels.inc                                         |
  |                                                                       |
  | Language file of the Roundcube Webmail client                         |
- | Copyright (C) 2005-2010, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Melanga Dissanayake <Melanga.Dissanayake@pabcbank.com>        |
+ | Author: පසිඳු කාවින්ද <info@pk-soft.tk>       |
  +-----------------------------------------------------------------------+
-
- @version $Id: labels.inc 4410 2011-01-12 18:25:02Z thomasb $
-
 */
 
 $labels = array();
-$labels['welcome'] = '$product à\86යà·\94à¶¶à·\9cà·\80à¶±à·\8a';
-$labels['username'] = 'නම';
+$labels['welcome'] = '$product à·\80à·\99à¶­ à¶´à·\92à·\85à·\92à¶\9cà¶±à·\92මà·\94';
+$labels['username'] = 'à¶´à¶»à·\92à·\81à·\93à¶½à¶\9a à¶±à·\8fමය';
 $labels['password'] = 'මුරපදය';
 $labels['server'] = 'පද්ධතිය';
-$labels['login'] = 'à¶\85à¶­à·\94à¶½à·\8aà·\80à·\93ම';
+$labels['login'] = 'à¶´à·\92à·\80à·\92à·\83à·\94ම';
 $labels['logout'] = 'පිටවීම';
-$labels['mail'] = 'විද්යුත් තැපෑල';
-$labels['settings'] = 'à¶´à·\9cදà·\8aà¶\9cà¶½à·\92à¶\9a à¶\9aà¶§à·\8aà¶§à¶½ à¶\85à¶\82à¶\9c';
+$labels['mail'] = 'විද්‍යුත් තැපැල';
+$labels['settings'] = 'à·\83à·\90à¶\9aà·\83à·\94මà·\8a';
 $labels['addressbook'] = 'ලිපින පොත';
-$labels['inbox'] = 'ඇතුල්වීම්';
+$labels['inbox'] = 'Inbox';
 $labels['drafts'] = 'කටු සටහන්';
-$labels['sent'] = 'à¶´à·\92à¶§à·\80à·\94මà·\8a';
-$labels['trash'] = 'ලටපට';
+$labels['sent'] = 'යà·\90à·\80à·\96';
+$labels['trash'] = 'à¶\89à·\80තලන à¶¶à¶³à·\94à¶±';
 $labels['junk'] = 'සුන්බුන්';
 $labels['subject'] = 'මාතෘකාව';
-$labels['from'] = 'යà·\80à¶±à·\8aà¶±à·\8f';
-$labels['to'] = 'ලබනà·\8aà¶±à·\8f';
-$labels['cc'] = 'පිටපත් කිරීම්';
-$labels['bcc'] = 'අඳ පිටපත් කිරීම්';
+$labels['from'] = 'à·\80à·\99à¶­à·\92à¶±à·\8a';
+$labels['to'] = 'à·\80à·\99à¶­';
+$labels['cc'] = 'Cc';
+$labels['bcc'] = 'Bcc';
 $labels['replyto'] = 'පිළිතුරු සඳහා';
 $labels['date'] = 'දිනය';
-$labels['size'] = 'ප්රමාණය';
-$labels['priority'] = 'ප්රමුඛතාව';
+$labels['size'] = 'ප්රමාණය';
+$labels['priority'] = 'ප්‍රමුඛත්වය';
 $labels['organization'] = 'සංවිධානය';
-$labels['reply-to'] = 'පිළිතුරු සඳහා';
-$labels['mailboxlist'] = 'ෆෝල්ඩරය';
-$labels['messagesfromto'] = '$from ගෙන් $to පනිවුඩ $count';
-$labels['messagenrof'] = 'පනිවුඩය $count න් $nr ';
-$labels['moveto'] = 'ගෙනයෑම...';
-$labels['download'] = 'බාගතකිරීම';
+$labels['mailboxlist'] = 'බහාලුම්';
+$labels['folders'] = 'බහාලුම්';
+$labels['messagesfromto'] = '$from වෙතින් $to වෙත පණිවිඩ $count';
+$labels['messagenrof'] = 'පණිවිඩ $count න් $nr';
+$labels['copy'] = 'පිටපත් කරන්න';
+$labels['move'] = 'ගෙනයන්න';
+$labels['moveto'] = 'ගෙන යන්න...';
+$labels['download'] = 'බාගත කරන්න';
 $labels['filename'] = 'ගොනුවේ නම';
-$labels['filesize'] = 'ගොනුවේ ප්රමාණය';
-$labels['preferhtml'] = 'HTML විදහා පෙන්වීම';
-$labels['htmlmessage'] = 'HTML පනිවුඩය';
-$labels['prettydate'] = 'සුරුබුහුටි දින';
-$labels['addtoaddressbook'] = 'ලිපින පොතට එකතු කරන්න';
-$labels['sun'] = 'ඉරිදා';
-$labels['mon'] = 'සඳුදා';
-$labels['tue'] = 'අගහ';
-$labels['wed'] = 'බදාදා';
-$labels['thu'] = 'බ්රහස්';
-$labels['fri'] = 'සිකුරා';
-$labels['sat'] = 'සෙනසු';
+$labels['filesize'] = 'ගොනුවේ ප්‍රමාණය';
+$labels['addtoaddressbook'] = 'ලිපින පොතට එක් කරන්න';
+$labels['sun'] = 'ඉ';
+$labels['mon'] = 'ස';
+$labels['tue'] = 'අ';
+$labels['wed'] = 'බ';
+$labels['thu'] = 'බ්‍ර';
+$labels['fri'] = 'සි';
+$labels['sat'] = 'සෙ';
 $labels['sunday'] = 'ඉරිදා';
 $labels['monday'] = 'සඳුදා';
-$labels['tuesday'] = 'à¶\85à¶\9cහරුවාදා';
+$labels['tuesday'] = 'à¶\85à¶\9fහරුවාදා';
 $labels['wednesday'] = 'බදාදා';
-$labels['thursday'] = 'බ්රහස්පතිනිදා';
+$labels['thursday'] = 'බ්‍රහස්පතින්දා';
 $labels['friday'] = 'සිකුරාදා';
 $labels['saturday'] = 'සෙනසුරාදා';
+$labels['jan'] = 'ජන';
+$labels['feb'] = 'පෙබ';
+$labels['mar'] = 'මාර්';
+$labels['apr'] = 'අප්‍රේ';
+$labels['may'] = 'මැයි';
+$labels['longmay'] = 'මැයි';
+$labels['jun'] = 'ජූනි';
+$labels['jul'] = 'ජූලි';
+$labels['aug'] = 'අගෝ';
+$labels['sep'] = 'සැප්';
+$labels['oct'] = 'ඔක්';
+$labels['nov'] = 'නොවැ';
+$labels['dec'] = 'දෙසැ';
+$labels['longjan'] = 'ජනවාරි';
+$labels['longfeb'] = 'පෙබරවාරි';
+$labels['longmar'] = 'මාර්තු';
+$labels['longapr'] = 'අප්‍රේල්';
+$labels['longjun'] = 'ජූනි';
+$labels['longjul'] = 'ජූලි';
+$labels['longaug'] = 'අගෝස්තු';
+$labels['longsep'] = 'සැප්තැම්බර්';
+$labels['longoct'] = 'ඔක්තෝම්බර්';
+$labels['longnov'] = 'නොවැම්බර්';
+$labels['longdec'] = 'දෙසැම්බර්';
 $labels['today'] = 'අද';
-$labels['checkmail'] = 'අඵත් පනිවුඩ සඳහා පිරික්සීම';
-$labels['writenewmessage'] = 'අඵත් පනිවුඩක්';
-$labels['replytomessage'] = 'පනිවුඩයට පිළිතුරු';
+$labels['checkmail'] = 'අඵත් පණිවිඩ සඳහා පිරික්සීම';
+$labels['compose'] = 'පණිවිඩයක් සෑදීම';
+$labels['writenewmessage'] = 'අඵත් පණිවිඩයක්';
+$labels['reply'] = 'පිළිතුරු දෙන්න';
+$labels['replytomessage'] = 'පණිවිඩයට පිළිතුරු';
 $labels['replytoallmessage'] = 'එවන්නාට සහ සැමට පිළිතුරු';
-$labels['forwardmessage'] = 'පනිවුඩය ඉදිරියට';
-$labels['deletemessage'] = 'පනිවුඩය ලටපට තුලට ගෙනයන්න';
-$labels['movemessagetotrash'] = 'පණිවුඩය ලටපට වෙත ගෙන යන්න';
-$labels['printmessage'] = 'පනිවුඩය මුද්රනය කරන්න';
-$labels['previousmessage'] = 'කලින් පනිවුඩය පෙන්නන්න';
-$labels['previousmessages'] = 'කලින් පනිවුඩ කට්ටලය පෙන්නන්න';
-$labels['firstmessage'] = 'පළමුවන පනිවුඩය පෙන්නන්න';
-$labels['firstmessages'] = 'පළමුවන පනිවුඩ කට්ටලය පෙන්නන්න';
-$labels['nextmessage'] = 'මීළඟ පනිවුඩය පෙන්නන්න';
-$labels['nextmessages'] = 'මීළඟ පනිවුඩ කට්ටලය පෙන්නන්න';
-$labels['lastmessage'] = 'අවසාන පනිවුඩය පෙන්නන්න';
-$labels['lastmessages'] = 'අවසාන පනිවුඩ කට්ටලය පෙන්නන්න';
-$labels['backtolist'] = 'නැවතත් පනිවුඩ ලැයිස්තුවට';
-$labels['viewsource'] = 'මූලාශ්රය පෙන්නන්න';
-$labels['markmessages'] = 'පණිවුඩ';
-$labels['markread'] = 'කියවු ලෙස සළකුණු කරන්න';
-$labels['markunread'] = 'නොකියවු ලෙස සළකුණු කරන්න';
-$labels['select'] = 'තෝරාගන්න';
-$labels['all'] = 'සියලු';
-$labels['none'] = 'තෝරානොගත්';
+$labels['forward'] = 'ඉදිරියට';
+$labels['forwardmessage'] = 'පණිවිඩය ඉදිරියට';
+$labels['deletemessage'] = 'පණිවිඩය මකන්න';
+$labels['movemessagetotrash'] = 'පණිවිඩය ලටපට වෙත ගෙන යන්න';
+$labels['printmessage'] = 'මෙම පණිවිඩය මුද්‍රණය කරන්න';
+$labels['previousmessage'] = 'කලින් පණිවිඩය පෙන්නන්න';
+$labels['firstmessage'] = 'පළමුවන පණිවිඩය පෙන්නන්න';
+$labels['nextmessage'] = 'මීළඟ පණිවිඩය පෙන්නන්න';
+$labels['lastmessage'] = 'අවසාන පණිවිඩය පෙන්නන්න';
+$labels['backtolist'] = 'නැවතත් පණිවිඩ ලැයිස්තුවට';
+$labels['viewsource'] = 'මූලාශ්‍රය පෙන්වන්න';
+$labels['mark'] = 'සලකුණු කරන්න';
+$labels['markmessages'] = 'පණිවිඩ සලකුණු කරන්න';
+$labels['markread'] = 'කියවු ලෙස';
+$labels['markunread'] = 'නොකියවු ලෙස';
+$labels['moreactions'] = 'තවත් ක්‍රියා...';
+$labels['more'] = 'තවත්';
+$labels['back'] = 'ආපසු';
+$labels['options'] = 'විකල්ප';
+$labels['select'] = 'තෝරන්න';
+$labels['all'] = 'සියල්ල';
+$labels['none'] = 'කිසිවක් නැත';
+$labels['nonesort'] = 'කිසිවක් නැත';
+$labels['currpage'] = 'දැනට ඇති පිටුව';
 $labels['unread'] = 'නොකියවූ';
+$labels['deleted'] = 'මකා දැමූ';
+$labels['filter'] = 'පෙරන්න';
+$labels['list'] = 'ලැයිස්තුව';
+$labels['expand-all'] = 'සියල්ල දිගහරින්න';
+$labels['collapse-all'] = 'සියල්ල හකුළන්න';
+$labels['fromto'] = 'වෙතින්/වෙත';
+$labels['attachment'] = 'ඇමුණුම';
+$labels['sentdate'] = 'යැවූ දිනය';
+$labels['arrival'] = 'ලගාවූ දිනය';
+$labels['asc'] = 'ආරෝහණ';
+$labels['desc'] = 'අවරෝහණ';
+$labels['folderactions'] = 'බහාලුම් ක්‍රියා...';
 $labels['compact'] = 'සංයුක්ත';
-$labels['empty'] = 'රික්ත';
-$labels['purge'] = 'විරේචන';
-$labels['quota'] = 'භාවිතය';
-$labels['unknown'] = 'නාඳුනන';
+$labels['empty'] = 'හිස්';
+$labels['unknown'] = 'නොදනී';
 $labels['unlimited'] = 'අසීමිත';
 $labels['quicksearch'] = 'ඉක්මන් සෙවුම';
 $labels['resetsearch'] = 'සෙවුම යලි පිහිටවීම';
-$labels['compose'] = 'පනිවුඩයක් සෑදීම';
-$labels['savemessage'] = 'කටු සටහනේ තැන්පත කරන්න';
-$labels['sendmessage'] = 'පනිවුඩය දැන් යවන්න';
-$labels['addattachment'] = 'ගොනුවක් ඇතුලත් කිරීම';
+$labels['msgtext'] = 'සම්පූර්ණ පණිවිඩය';
+$labels['openinextwin'] = 'නව කවුළුවක විවෘත කරන්න';
+$labels['savemessage'] = 'කටු සටහනක් ලෙස සුරකින්න';
+$labels['sendmessage'] = 'පණිවිඩය යවන්න';
+$labels['addattachment'] = 'ගොනුවක් අමුණන්න';
 $labels['charset'] = 'අකුරැ කට්ටලය';
 $labels['editortype'] = 'සම්පාදන ආකාරය';
 $labels['returnreceipt'] = 'නැවත ලබන්නා';
-$labels['checkspelling'] = 'à·\80à¶ à¶± à¶´à¶»à·\93à¶\9aà·\8aà·\82à·\8fà·\80';
+$labels['checkspelling'] = 'à\85à¶\9aà·\8aâ\80\8dà·\82à¶» à·\80à·\92à¶±à·\8aâ\80\8dයà·\8fà·\83ය à¶´à¶»à·\92à¶\9aà·\8aâ\80\8dà·\82à·\8fà¶\9aරනà·\8aà¶±';
 $labels['resumeediting'] = 'සම්පාදන නැවත ඇරඹීම';
 $labels['revertto'] = 'ආපසු ඒම';
-$labels['attachments'] = 'ගොනු';
+$labels['attach'] = 'අමුණන්න';
+$labels['attachments'] = 'ඇමුණුම්';
 $labels['upload'] = 'ඇතුල් කරීම';
-$labels['close'] = 'à·\80à·\90à·\83à·\93ම';
+$labels['close'] = 'à·\80à·\83à¶±à·\8aà¶±';
 $labels['low'] = 'අඩු';
 $labels['lowest'] = 'අඩුම';
-$labels['normal'] = 'à·\83මà¶\9a';
+$labels['normal'] = 'à·\83à·\8fමà·\8fà¶±à·\8aâ\80\8dය';
 $labels['high'] = 'ඉහළ';
 $labels['highest'] = 'ඉහළම';
-$labels['nosubject'] = '(මාතෘකාව නොමැත)';
-$labels['showimages'] = 'à¶»à·\96à¶´ à¶´à·\99à¶±à·\8aà¶±න්න';
+$labels['nosubject'] = '(මාතෘකාව නොමැත)';
+$labels['showimages'] = 'à¶»à·\96à¶´ à¶´à·\99à¶±à·\8aà·\80න්න';
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = 'පැහැදිලි අකුරු';
 $labels['addcc'] = 'Cc එක් කරන්න';
@@ -130,58 +168,149 @@ $labels['mdnrequest'] = 'මෙම පණිවුඩය එවන්නා ඔ
 $labels['receiptread'] = 'ලැබීම් ලදුපත (කියවීම)';
 $labels['yourmessage'] = 'මෙය ඔබගේ පණිවුඩයේ ලැබීම් ලදුපතයි';
 $labels['receiptnote'] = 'සටහන: ලැබීම් ලදුපත මගින් මෙම පණිවුඩය කියවූ බව හෝ තේරුම් ගත් බව ගම්‍ය නොවේ. පණිවුඩය ලබන්නාට පෙන්නුම් කල බවටට සාක්ෂියක් පමණි';
-$labels['name'] = 'නම පෙන්නන්න';
-$labels['firstname'] = 'පළමු නම';
-$labels['surname'] = 'අවසාන නම';
-$labels['email'] = 'ද්යුත් තැපෑල';
-$labels['addcontact'] = 'ලිපින පොතට එකතු කරන්න';
+$labels['name'] = 'ප්‍රදර්ශනය වන නම';
+$labels['firstname'] = 'මුල් නම';
+$labels['surname'] = 'අවසන් නම';
+$labels['nickname'] = 'සුරතල් නම';
+$labels['jobtitle'] = 'රැකියා තනතුර';
+$labels['department'] = 'දෙපාර්තමේන්තුව';
+$labels['gender'] = 'ස්ත්‍රි/පුරුෂ භාවය';
+$labels['email'] = 'විද්‍යුත් තැපෑල';
+$labels['phone'] = 'දුරකථනය';
+$labels['address'] = 'ලිපිනය';
+$labels['locality'] = 'නගරය';
+$labels['region'] = 'ප්‍රාන්තය/පළාත';
+$labels['country'] = 'රට';
+$labels['birthday'] = 'උපන්දිනය';
+$labels['anniversary'] = 'සංවත්සරය';
+$labels['website'] = 'වෙබ් අඩවිය';
+$labels['instantmessenger'] = 'IM';
+$labels['notes'] = 'සටහන්';
+$labels['male'] = 'පුරුෂ';
+$labels['female'] = 'ස්ත්‍රී';
+$labels['manager'] = 'කළමණාකරු';
+$labels['assistant'] = 'සහායක';
+$labels['typeassistant'] = 'සහායක';
+$labels['search'] = 'සොයන්න';
+$labels['advanced'] = 'සංකීර්ණ‍';
+$labels['other'] = 'වෙනත්';
+$labels['typeother'] = 'වෙනත්';
+$labels['typehome'] = 'නිවස';
+$labels['typework'] = 'රක්ෂාව';
+$labels['typemobile'] = 'ජංගම';
+$labels['typemain'] = 'ප්‍රධාන';
+$labels['typehomefax'] = 'ගෘහස්ථ ෆැක්ස්';
+$labels['typepager'] = 'පේජරය';
+$labels['typevideo'] = 'වීඩියෝ';
+$labels['typeblog'] = 'බ්ලොග්';
+$labels['typeprofile'] = 'පැතිකඩ';
+$labels['addcontact'] = 'නව සබඳතාවය එක් කරන්න';
 $labels['editcontact'] = 'ලිපිනය වෙනස් කිරීම';
-$labels['edit'] = 'වෙනස් කිරීම';
-$labels['cancel'] = 'අවලංගු කරීම';
-$labels['save'] = 'තැන්පත් කිරීම';
-$labels['delete'] = 'මකා දැමීම';
+$labels['contacts'] = 'සබඳතා';
+$labels['personalinfo'] = 'පුද්ගලික තොරතුරු';
+$labels['edit'] = 'සංස්කරණය';
+$labels['cancel'] = 'අවලංගු කරන්න';
+$labels['save'] = 'සුරකින්න';
+$labels['delete'] = 'මකන්න';
+$labels['rename'] = 'නම වෙනස් කරන්න';
+$labels['addphoto'] = 'එක් කරන්න';
 $labels['newcontact'] = 'අඵත් ලිපින පතක් සෑදීම';
-$labels['deletecontact'] = 'තෝරාගත් ලිපින මකා දැමන්න';
+$labels['deletecontact'] = 'තෝරාගත් ලිපින මකාමන්න';
 $labels['composeto'] = 'පනිවුඩයක් සෑදීම';
 $labels['contactsfromto'] = '$from ගෙන් $to ලිපින $count';
-$labels['print'] = 'මුද්රණය';
-$labels['export'] = 'නිර්යාත';
-$labels['previouspage'] = 'කලින් කට්ටලය පෙන්නන්න';
-$labels['firstpage'] = 'පළමුවන කට්ටලය පෙන්නන්න';
-$labels['nextpage'] = 'මීළඟ කට්ටලය පෙන්නන්න';
-$labels['lastpage'] = 'අවසාන කට්ටලය පෙන්නන්න';
+$labels['print'] = 'මුද්‍රණය කරන්න';
+$labels['export'] = 'අපනයනය';
+$labels['previouspage'] = 'පෙර පිටුව පෙන්වන්න';
+$labels['firstpage'] = 'පළමුවන පිටුව පෙන්වන්න';
+$labels['nextpage'] = 'මීළඟ පිටුව පෙන්වන්න';
+$labels['lastpage'] = 'අවසාන පිටුව පෙන්වන්න';
+$labels['group'] = 'කණ්ඩායම';
 $labels['groups'] = 'කණ්ඩායම්';
-$labels['personaladrbook'] = 'පොද්ගලික ලිපිනය';
-$labels['settingsfor'] = 'සඳහා කට්ටල අංග';
+$labels['personaladrbook'] = 'පුද්ගලික ලිපිනය';
+$labels['import'] = 'ආනයනය කරන්න';
+$labels['done'] = 'අවසානයි';
+$labels['settingsfor'] = 'සඳහා සැකසුම්';
+$labels['about'] = 'පිළිබඳ';
 $labels['preferences'] = 'අභිමතය';
 $labels['userpreferences'] = 'පරිශීලක අභිමතය';
 $labels['editpreferences'] = 'පරිශීලක අභිමතය වෙනස් කිරීම්';
-$labels['identities'] = 'අනන්නයතාව';
+$labels['identities'] = 'අනන්‍යතාවන්';
 $labels['manageidentities'] = 'මෙම ගිණුමෙ අනන්නයතාව හැසිරවීම';
 $labels['newidentity'] = 'අඵත් අනන්නයතාව';
 $labels['newitem'] = 'අඵත් අයිතම';
 $labels['edititem'] = 'අයිතම වෙනස් කිරීම්';
+$labels['preferhtml'] = 'HTML විදහා පෙන්වීම';
+$labels['htmlmessage'] = 'HTML පණිවිඩය';
+$labels['prettydate'] = 'සුරුබුහුටි දින';
 $labels['setdefault'] = 'පළමු තත්වයට';
+$labels['autodetect'] = 'ස්වයංක්‍රීය';
 $labels['language'] = 'භාෂාව';
 $labels['timezone'] = 'කාල කලාපය';
-$labels['pagesize'] = 'පිටුවකටඅ පේළි';
 $labels['signature'] = 'අත්සන';
 $labels['dstactive'] = 'දිවා එළිය ඉතිරි කිරීම';
-$labels['htmleditor'] = 'HTML à¶´à¶±à·\92à·\80à·\94ඩයක් සෑදීම';
+$labels['htmleditor'] = 'HTML à¶´à¶«à·\92à·\80à·\92ඩයක් සෑදීම';
 $labels['htmlsignature'] = 'HTML අත්සන';
 $labels['previewpane'] = 'පූර්වදර්ශන කොටස පෙන්නන්න';
-$labels['autosavedraft'] = 'ස්වයංක්රීයව කටු සටහනේ තැන්පත් කරන්න';
+$labels['uisettings'] = 'පරිශීලක අතුරුමුහුණත';
+$labels['askuser'] = 'මගෙන් විමසන්න';
+$labels['ignore'] = 'නොසලකා හරින්න';
+$labels['always'] = 'සැමවිට';
+$labels['autosavedraft'] = 'ස්වයංක්‍රීයව කටු සටහන සුරකින්න';
 $labels['never'] = 'කිසි විටෙකත් නැති';
-$labels['folder'] = 'ෆෝල්ඩරය';
-$labels['folders'] = 'ෆෝල්ඩර';
-$labels['foldername'] = 'ෆෝල්ඩරයේ නම';
+$labels['immediately'] = 'හැකි ඉක්මනින්';
+$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
+$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
+$labels['2047folding'] = 'Full RFC 2047 (වෙනත්)';
+$labels['section'] = 'අංශය';
+$labels['maintenance'] = 'නඩත්තු කිරීම';
+$labels['newmessage'] = 'අලුත් පණිවිඩයක්';
+$labels['autoaddsignature'] = 'ස්වයංක්‍රීයව අත්සන ඇතුලත් කරන්න';
+$labels['newmessageonly'] = 'අලුත් පණිවිඩය පමණක්';
+$labels['insertsignature'] = 'අත්සන ඇතුලත් කරන්න';
+$labels['afternseconds'] = 'තත්පර $nකට පසු';
+$labels['spellcheckignoresyms'] = 'සලකුණු සහිත වචන නොසලකා හරින්න';
+$labels['spellcheckignorenums'] = 'අංක සහිත වචන නොසලකා හරින්න';
+$labels['addtodict'] = 'ශබ්ද කෝෂයට එක් කරන්න';
+$labels['folder'] = 'බහාලුම';
+$labels['foldername'] = 'බහාලුමේ නම';
 $labels['subscribed'] = 'සාමාජික';
-$labels['messagecount'] = 'පනිවුඩ';
-$labels['create'] = 'සෑදීම';
-$labels['createfolder'] = 'අඵත් ෆෝල්ඩරයක් සෑදීම';
-$labels['managefolders'] = 'හැසිරවීම හැසිරවීම';
-$labels['sortby'] = 'චිසින් වර්ග කිරීම';
+$labels['messagecount'] = 'පණිවිඩ';
+$labels['create'] = 'තනන්න';
+$labels['createfolder'] = 'නව බහාලුමක් තනන්න';
+$labels['managefolders'] = 'බහාලුම් කළමනාකරණය කරන්න';
+$labels['specialfolders'] = 'විශේෂ බහාලුම්';
+$labels['properties'] = 'වත්කම්';
+$labels['folderproperties'] = 'බහාලුමේ වත්කම්';
+$labels['location'] = 'ස්ථානය';
+$labels['info'] = 'තොරතුරු';
+$labels['foldertype'] = 'බහාලුම් වර්ගය';
+$labels['personalfolder'] = 'පුද්ගලික බහාලුම';
+$labels['sharedfolder'] = 'පොදු බහාලුම';
+$labels['sortby'] = 'වර්ග කරන්න';
 $labels['sortasc'] = 'ආරෝහණ වර්ග කිරීම';
 $labels['sortdesc'] = 'අවරෝහණ වර්ග කිරීම';
+$labels['plugin'] = 'ප්ලගිනය';
+$labels['version'] = 'අනුවාදය';
+$labels['source'] = 'මූලාශ්‍රය';
+$labels['license'] = 'බලපත්‍රය';
+$labels['support'] = 'සහය ලබාගන්න';
+$labels['B'] = 'B';
+$labels['KB'] = 'KB';
+$labels['MB'] = 'MB';
+$labels['GB'] = 'GB';
+$labels['unicode'] = 'යුනිකේත';
+$labels['english'] = 'ඉංග්‍රීසි';
+$labels['westerneuropean'] = 'බටහිර යුරෝපීය';
+$labels['baltic'] = 'බෝල්ටික්';
+$labels['arabic'] = 'අරාබි';
+$labels['greek'] = 'ග්‍රීක';
+$labels['hebrew'] = 'හීබෲ';
+$labels['turkish'] = 'තුර්කි';
+$labels['nordic'] = 'නොර්ඩික්';
+$labels['thai'] = 'තායි';
+$labels['celtic'] = 'සෙල්ටික්';
+$labels['vietnamese'] = 'වියට්නාම';
+$labels['japanese'] = 'ජපන්';
+$labels['korean'] = 'කොරියානු';
+$labels['chinese'] = 'චීන';
 
-?>
\ No newline at end of file
index cc59f3c9f68fe998aadc0440a13883c8c1dee027..23a70193530c646f7479954f5b8865bc7c64dbd4 100644 (file)
@@ -1,80 +1,90 @@
 <?php
-/*
 
+/*
  +-----------------------------------------------------------------------+
- | language/si/messages.inc                                              |
+ | localization/si_LK/messages.inc                                       |
  |                                                                       |
  | Language file of the Roundcube Webmail client                         |
- | Copyright (C) 2005-2010, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Melanga Dissanayake <Melanga.Dissanayake@pabcbank.com>        |
+ | Author: Mohamed Rizmi <Unknown>                                       |
  +-----------------------------------------------------------------------+
-
- @version $Id: messages.inc 4410 2011-01-12 18:25:02Z thomasb $
-
+ @version $Id$
 */
 
 $messages = array();
-$messages['loginfailed'] = 'ඇතුල්වීම අසාර්ථකයි';
+$messages['errortitle'] = 'දෝෂයක් මතුවිය!';
+$messages['loginfailed'] = 'ඇතුල්වීම අසාර්ථකයි.';
 $messages['cookiesdisabled'] = 'ඔබේ බෞසරය කුකී බාර ගන්නේ නැත';
 $messages['sessionerror'] = 'ඔබේ වාරය අවලංගු හෝ කාලය ඉකුත් වී ඇත';
-$messages['imaperror'] = 'IMAP සම්බන්ධතාවය අසාර්ථකයි';
+$messages['dberror'] = 'දත්ත ගබඩාවේ දෝෂය!';
 $messages['nomessagesfound'] = 'ලියුම් පෙට්ටියේ පනිවුඩ නැත';
 $messages['loggedout'] = 'ඔබගේ වාරය සාර්ථකව අවසන් විය. අයුබොවන්!';
 $messages['mailboxempty'] = 'ලියුම් පෙට්ටිය හිස්';
 $messages['loading'] = 'පූරනය...';
 $messages['loadingdata'] = 'දත්ත පූරනය...';
-$messages['checkingmail'] = 'à¶\85à¶½à·\94à¶­à·\8a à¶´à¶±à·\92à·\80à·\94à¶© à¶´à¶»à·\93à¶\9aà·\8aà·\82à·\8f à¶\9aà·\92à¶»à·\93ම...';
-$messages['sendingmessage'] = 'à¶´à¶±à·\92à·\80à·\94ඩය à¶ºà·\90à·\80à·\93ම...';
-$messages['messagesent'] = 'à¶´à¶±à·\92à·\80à·\94ඩය à·\83à·\8fà¶»à·\8aà¶®à¶\9aà·\80 à¶ºà·\80à¶± à¶½à¶¯à·\93';
-$messages['savingmessage'] = 'à¶´à¶±à·\92à·\80à·\94ඩය à¶­à·\90à¶±à·\8aà¶´à¶­à·\8a à¶\9aà·\93à¶»à·\93ම...';
+$messages['checkingmail'] = 'à¶\85à¶½à·\94à¶­à·\8a à¶´à¶«à·\92à·\80à·\92à¶© à¶´à¶»à·\93à¶\9aà·\8aà·\82à·\8f à¶\9aරමà·\92à¶±à·\8a...';
+$messages['sendingmessage'] = 'à¶´à¶«à·\92à·\80à·\92ඩය à¶ºà·\80මà·\92à¶±à·\8a...';
+$messages['messagesent'] = 'à¶´à¶«à·\92à·\80à·\92ඩය à·\83à·\8fà¶»à·\8aà¶®à¶\9aà·\80 à¶ºà·\80à¶± à¶½à¶¯à·\93.';
+$messages['savingmessage'] = 'à¶´à¶«à·\92à·\80à·\92ඩය à·\83à·\94à¶»à¶\9aà·\92මà·\92à¶±à·\8a...';
 $messages['messagesaved'] = 'පනිවුඩය කටු සටහනේ තැන්පත් විය';
-$messages['successfullysaved'] = 'à·\83à·\8fà¶»à·\8aà¶®à¶\9aà·\80 à¶­à·\90à¶±à·\8aà¶´à¶­ à·\80à·\92ය';
-$messages['addedsuccessfully'] = 'ලිපිනය සාර්ථකව ලිපින පොතට එකතු කරන ලදී';
-$messages['contactexists'] = 'ඉහත ලිපිනය සහිත විද්යුත් තැපැල් ලිපිනයක් ලිපින පොතේ ඇත';
+$messages['successfullysaved'] = 'à·\83à·\94à¶»à·\90à¶\9aà·\93ම à·\83à·\8fà¶»à·\8aà¶®à¶\9aයà·\92.';
+$messages['addedsuccessfully'] = 'ලිපිනය සාර්ථකව ලිපින පොතට එකතු කරන ලදී.';
+$messages['contactexists'] = 'ඉහත ලිපිනය සහිත විද්යුත් තැපැල් ලිපිනයක් ලිපින පොතේ ඇත.';
 $messages['blockedimages'] = 'ඔබගෙ පොද්ගලිකත්වය හේතුවෙන්, දුරස්ථ රූප අවහිර කර ඇත.';
 $messages['encryptedmessage'] = 'මෙම පනිවුඩය රහස් කේතනය කර ඇති බැවින් පෙන්විය නොහැක. සමාවන්න!';
 $messages['nocontactsfound'] = 'ලිපින සොයා ගත නොහැක';
 $messages['contactnotfound'] = 'ඉල්ලූ ලිපිනය සොයාගත නොහැක';
-$messages['sendingfailed'] = 'පනිවුඩය යැවීම අසාර්ථකයි';
-$messages['errorsaving'] = 'පනිවුඩය තැන්පත් කීරීමේදී දොෂයක් සිදු විය';
+$messages['sendingfailed'] = 'පණිවිඩය යැවීම අසාර්ථකයි.';
+$messages['senttooquickly'] = 'කරුණාකර මෙම පණිවිඩය යැවීමට පෙර තත්පර $secක් රැදී සිටින්න.';
+$messages['errorsaving'] = 'පණිවිඩය සුරැකීමේදී දෝෂයක් මතුවිය.';
 $messages['errormoving'] = 'පනිවුඩය ගෙන යාමට නොහැක';
-$messages['errordeleting'] = 'පනිවුඩය මකා දැමීමට නොහැක';
+$messages['errorcopying'] = 'පණිවිඩ(ය) පිටපත් කල නොහැක.';
+$messages['errordeleting'] = 'පණිවිඩ(ය) මකා දැමීමට නොහැක.';
+$messages['errormarking'] = 'පණිවිඩ(ය) සලකුණු කල නොහැක.';
 $messages['deletecontactconfirm'] = 'තෝරා ඇති ලිපින ඔබට මකා දැමීමට සැබවින්ම වුවමනාද?';
-$messages['deletemessagesconfirm'] = 'තෝරා ඇත පනිවුඩ ඔබට මකා දැමීමට සැබවින්ම වුවමනාද?';
-$messages['deletefolderconfirm'] = 'ෆෝල්ඩරය මකා දැමීමට සැබවින්ම වුවමනාද?';
-$messages['purgefolderconfirm'] = 'මෙම ෆෝල්ඩරයේ ඇති සියලුම පනිවුඩ ඔබට මකා දැමීමට සැබවින්ම වුවමනාද?';
-$messages['formincomplete'] = 'පෝරමය සම්පූර්ණයෙන් පුරවා නොමැත';
-$messages['noemailwarning'] = 'කරුණාකර වලංගු විද්යුත් තැපැල් ලිපිනයක් ඇතුලත් කරන්න';
-$messages['nonamewarning'] = 'කරුණාකර නම ඇතුලත් කරන්න';
-$messages['nopagesizewarning'] = 'කරුණාකර පිටුවේ ප්රමානය ඇතුලත් කරන්න';
+$messages['deletemessagesconfirm'] = 'තෝරා ඇති පණිවිඩ(ය) ඔබට මකා දැමීමට සැබවින්ම වුවමනාද?';
+$messages['deletefolderconfirm'] = 'ඔබට මෙම බහාලුම මකා දැමීමට සැබවින්ම වුවමනාද?';
+$messages['purgefolderconfirm'] = 'මෙම බහාලමේ ඇති සියලුම පණිවිඩ ඔබට මකා දැමීමට සැබවින්ම වුවමනාද?';
+$messages['folderdeleting'] = 'බහාලුම මකාදමමින්...';
+$messages['formincomplete'] = 'පෝරමය සම්පූර්ණයෙන් පුරවා නොමැත.';
+$messages['noemailwarning'] = 'කරුණාකර වලංගු විද්යුත් ලිපිනයක් ඇතුලත් කරන්න.';
+$messages['nonamewarning'] = 'කරුණාකර නම ඇතුලත් කරන්න.';
+$messages['nopagesizewarning'] = 'කරුණාකර පිටුවේ ප්‍රමාණය ඇතුලත් කරන්න.';
 $messages['norecipientwarning'] = 'කරුණාකර යටත් පිරිසෙයින් එක් ලබන්නෙකු හෝ ඇතුලත් කරන්න';
-$messages['nosubjectwarning'] = '"මà·\8fà¶­à·\98à¶\9aà·\8fà·\80" à·\84à·\92à·\83à·\8a. à¶¸à·\8fà¶­à·\98à¶\9aà·\8fà·\80à¶\9aà·\8a à¶\85තුලත් කිරීමට ඔබ කැමතිද?';
+$messages['nosubjectwarning'] = '"මà·\8fà¶­à·\98à¶\9aà·\8fà·\80" à·\84à·\92à·\83à·\8a. à¶¸à·\8fà¶­à·\98à¶\9aà·\8fà·\80à¶\9aà·\8a à¶\87තුලත් කිරීමට ඔබ කැමතිද?';
 $messages['nobodywarning'] = 'මෙම හිස් පනිවුඩය යවන්නද?';
-$messages['notsentwarning'] = 'à¶´à¶±à·\92à·\80à·\94ඩය යැවීමට නොහැකි විය. ඔබට එය බැහැර කිරීමට වුවමනාද?';
+$messages['notsentwarning'] = 'à¶´à¶«à·\92à·\80à·\92ඩය යැවීමට නොහැකි විය. ඔබට එය බැහැර කිරීමට වුවමනාද?';
 $messages['noldapserver'] = 'සෙවුම සඳහා කරුණාකර ldap සම්බන්ධතාවයක් තෝරා ගන්න';
-$messages['nocontactsreturned'] = 'ලිපින/ය සොයා ගත නොහැක';
 $messages['nosearchname'] = 'කරුණාකර ලිපිනයෙහි නම හෝ විද්යුත් තැපැල් ලිපිනය ඇතුලත් කරන්න';
 $messages['searchsuccessful'] = '$nr පනිවුඩය හමු විය';
-$messages['searchnomatch'] = 'සෙවුමට අදාල ගැලපීමක් නොමැත';
-$messages['searching'] = 'සොයමින් පවතී...';
-$messages['checking'] = 'à¶´à·\92à¶»à·\92à¶\9aà·\8aà·\83මà·\92à¶±à·\8a à¶´à·\80à¶­à·\93...';
+$messages['searchnomatch'] = 'සෙවුමට අදාල ගැලපීමක් නොමැත.';
+$messages['searching'] = 'සොයමින්...';
+$messages['checking'] = 'à¶´à¶»à·\92à¶\9aà·\8aâ\80\8dà·\82à·\8fà¶\9aරමà·\92à¶±à·\8a...';
 $messages['nospellerrors'] = 'වියාකරන දොෂ නොමැත';
-$messages['folderdeleted'] = 'à·\86à·\9dà¶½à·\8aඩරය à·\83à·\8fà¶»à·\8aà¶®à¶\9aà·\80 à¶¸à¶\9aà·\8f à¶¯à¶¸à¶± à¶½à¶¯à·\93';
-$messages['deletedsuccessfully'] = 'සාර්ථකව මකා දමන ලදී';
+$messages['folderdeleted'] = 'à¶¶à·\84à·\8fà¶½à·\94ම à·\83à·\8fà¶»à·\8aà¶®à¶\9aà·\80 à¶¸à¶\9aà·\8f à¶¯à¶¸à¶± à¶½à¶¯à·\93.';
+$messages['deletedsuccessfully'] = 'සාර්ථකව මකාදමන ලදී.';
 $messages['converting'] = 'පනිවුඩයෙන් ආකෘතීකරණය ඉවත් කිරීම';
 $messages['messageopenerror'] = 'පනිවුඩය පූරනය කිරීමට නොහැක';
 $messages['fileuploaderror'] = 'ගොනුව ඇතුලත් කිරීමට නොහැක';
 $messages['filesizeerror'] = 'ඇතුලත් කල ගොනුවෙ ප්රමාණය උපරිම අගය $size ඉක්මවා ඇත';
 $messages['copysuccess'] = '$nr ලිපිනය සාර්ථකව පිටපත් කරන ලදී';
-$messages['copyerror'] = 'කවර ලිපිනයක්වත් හෝ පිටපත් කල නොහැක';
 $messages['sourceisreadonly'] = 'මෙම ලිපින මූලාශ්රය කියවීම සඳහා පමනි';
 $messages['errorsavingcontact'] = 'ලිපිනය තැන්පත් කීරීමට නොහැක';
-$messages['movingmessage'] = 'පනිවුඩය ගෙනයමින් පවතී...';
-$messages['receiptsent'] = 'කියවීම් භාර ගැනීම සාර්ථකව යවන ලදී';
+$messages['movingmessage'] = 'පණිවිඩ(ය) ගෙනයමින්...';
+$messages['copyingmessage'] = 'පණිවිඩ(ය) පිටපත් කරමින්...';
+$messages['deletingmessage'] = 'පණිවිඩ(ය) මකා දමමින්...';
+$messages['markingmessage'] = 'පණිවිඩ(ය) සලකුණු කරමින්...';
 $messages['errorsendingreceipt'] = 'කියවීම් භාර ගැනීම යැවීමට නොහැක';
 $messages['nodeletelastidentity'] = 'අවසාන අනන්‍යතාවය මකා දැමිය නොහැක';
+$messages['importwait'] = 'ආනයනය කරමින්, කරුණාකර රැදී සිටින්න...';
+$messages['emailformaterror'] = 'අවලංගු විද්‍යුත් තැපැල් ලිපිනය: $email';
+$messages['messagedeleted'] = 'පණිවිඩ(ය) මකා දැමීම සාර්ථකයි.';
+$messages['messagemoved'] = 'පණිවිඩ(ය) ගෙනයෑම සාර්ථකයි.';
+$messages['messagecopied'] = 'පණිවිඩ(ය) පිටපත් කිරීම සාර්ථකයි.';
+$messages['messagemarked'] = 'පණිවිඩ(ය) සලකුණු කිරීම සාර්ථකයි.';
+$messages['namecannotbeempty'] = 'නම හිස්ව තැබිය නොහැක.';
+$messages['nametoolong'] = 'නම දිග වැඩිය.';
 
-?>
index 367338991872e6faadcb187db718e4ee078f7f16..3103601441f58328dbe56f22441f5919c114bab8 100644 (file)
@@ -1,24 +1,16 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/sk_SK/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Marek Kutnar <marek19@zmail.sk>                               |
-|         Lukas Kraic  <lukas.kraic@truni.sk>                           |
-|         Peter Mann   <peter.mann@tuke.sk>                             |
-|         Ales Pospichal   <ales@pospichalales.info>                    |
-|         Martin Lacina        <martin@whistler.sk>                            |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 5585 2011-12-09 19:28:20Z alec $
-
+ +-----------------------------------------------------------------------+
+ | localization/sk_SK/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: panda                                                         |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
@@ -48,10 +40,13 @@ $labels['size'] = 'Veľkosť';
 $labels['priority'] = 'Priorita';
 $labels['organization'] = 'Organizácia';
 $labels['readstatus'] = 'Čítať stav';
-$labels['mailboxlist'] = 'Adresár';
+$labels['listoptions'] = 'Nastavenia zoznamu...';
+$labels['mailboxlist'] = 'Priečinky';
+$labels['folders'] = 'Priečinky';
 $labels['messagesfromto'] = 'Správy od $from do $to z $count';
-$labels['threadsfromto'] = 'Konverzácie od $from do $to z $count ';
+$labels['threadsfromto'] = 'Konverzácie od $from do $to z $count';
 $labels['messagenrof'] = 'Správa $nr z $count';
+$labels['fromtoshort'] = '$from – $to z $count';
 $labels['copy'] = 'Kopírovať';
 $labels['move'] = 'Presunúť';
 $labels['moveto'] = 'presunúť do...';
@@ -78,6 +73,7 @@ $labels['feb'] = 'Feb';
 $labels['mar'] = 'Mar';
 $labels['apr'] = 'Apr';
 $labels['may'] = 'Máj';
+$labels['longmay'] = 'Máj';
 $labels['jun'] = 'Jún';
 $labels['jul'] = 'Júl';
 $labels['aug'] = 'Aug';
@@ -89,7 +85,6 @@ $labels['longjan'] = 'Január';
 $labels['longfeb'] = 'Február';
 $labels['longmar'] = 'Marec';
 $labels['longapr'] = 'Apríl';
-$labels['longmay'] = 'Máj';
 $labels['longjun'] = 'Jún';
 $labels['longjul'] = 'Júl';
 $labels['longaug'] = 'August';
@@ -98,12 +93,16 @@ $labels['longoct'] = 'Október';
 $labels['longnov'] = 'November';
 $labels['longdec'] = 'December';
 $labels['today'] = 'Dnes';
+$labels['refresh'] = 'Obnoviť';
 $labels['checkmail'] = 'Skontrolovať nové správy';
+$labels['compose'] = 'Vytvoriť správu';
 $labels['writenewmessage'] = 'Vytvoriť novú správu';
+$labels['reply'] = 'Odpovedať';
 $labels['replytomessage'] = 'Odpovedať';
 $labels['replytoallmessage'] = 'Odpovedať všetkým';
 $labels['replyall'] = 'Odpovedať všetkým';
 $labels['replylist'] = 'Zoznam odpovedí';
+$labels['forward'] = 'Dopredu';
 $labels['forwardinline'] = 'Poslať ďalej';
 $labels['forwardattachment'] = 'Poslať ďalej ako prílohu';
 $labels['forwardmessage'] = 'Poslať ďalej';
@@ -116,15 +115,20 @@ $labels['nextmessage'] = 'Zobraziť ďalšiu správu';
 $labels['lastmessage'] = 'Zobraziť poslednú správu';
 $labels['backtolist'] = 'Späť na zoznam správ';
 $labels['viewsource'] = 'Ukázať zdroj správy';
+$labels['mark'] = 'Označiť';
 $labels['markmessages'] = 'Označiť správy';
 $labels['markread'] = 'Ako prečítané';
 $labels['markunread'] = 'Ako neprečítané';
 $labels['markflagged'] = 'Ako označené';
 $labels['markunflagged'] = 'Ako neoznačené';
-$labels['messageactions'] = 'Ďalšie akcie...';
+$labels['moreactions'] = 'Ďalšie akcie...';
+$labels['more'] = 'Ďalšie';
+$labels['back'] = 'Dozadu';
+$labels['options'] = 'Možnosti';
 $labels['select'] = 'Výber';
 $labels['all'] = 'Všetky';
-$labels['none'] = 'Žiadne';
+$labels['none'] = 'Nič';
+$labels['nonesort'] = 'Nič';
 $labels['currpage'] = 'Aktuálna stránka';
 $labels['unread'] = 'Neprečítané';
 $labels['flagged'] = 'Označené';
@@ -144,7 +148,6 @@ $labels['expand_only_unread'] = 'len s neprečítanými správami';
 $labels['fromto'] = 'Odosielateľ/Príjemca';
 $labels['flag'] = 'Vlajka';
 $labels['attachment'] = 'Príloha';
-$labels['nonesort'] = 'Nič';
 $labels['sentdate'] = 'Dátum odoslania';
 $labels['arrival'] = 'Dátum prijatia';
 $labels['asc'] = 'vzostupne';
@@ -165,7 +168,6 @@ $labels['searchmod'] = 'Parametre hľadanie';
 $labels['msgtext'] = 'Celá správa';
 $labels['openinextwin'] = 'Otvoriť v novom okne';
 $labels['emlsave'] = 'Stiahnuť';
-$labels['compose'] = 'Vytvoriť správu';
 $labels['editasnew'] = 'Upraviť ako novú';
 $labels['savemessage'] = 'Uložiť do rozpísaných';
 $labels['sendmessage'] = 'Odoslať správu';
@@ -174,10 +176,14 @@ $labels['charset'] = 'Znaková sada';
 $labels['editortype'] = 'Typ editora';
 $labels['returnreceipt'] = 'Potvrdenie o doručení';
 $labels['dsn'] = 'Doručenie oznámenia o stave';
+$labels['mailreplyintro'] = '$date odosielateľ napísal:';
+$labels['originalmessage'] = 'Pôvodná správa';
 $labels['editidents'] = 'Editovať identity';
+$labels['spellcheck'] = 'Pravopis';
 $labels['checkspelling'] = 'Skontrolovať pravopis';
 $labels['resumeediting'] = 'Pokračovať v úpravách';
 $labels['revertto'] = 'Vrátiť sa na';
+$labels['attach'] = 'Priložiť';
 $labels['attachments'] = 'Prílohy';
 $labels['upload'] = 'Nahrať';
 $labels['uploadprogress'] = '$percent ($current z $total)';
@@ -191,6 +197,7 @@ $labels['highest'] = 'Najvyššia';
 $labels['nosubject'] = '(bez predmetu)';
 $labels['showimages'] = 'Ukázať obrázky';
 $labels['alwaysshow'] = 'Vždy zobraziť obrázky od $sender';
+$labels['isdraft'] = 'Toto je rozpísaná správa';
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = 'Čistý text';
 $labels['savesentmessagein'] = 'Ukladať odoslané správy do';
@@ -232,14 +239,16 @@ $labels['male'] = 'muž';
 $labels['female'] = 'žena';
 $labels['manager'] = 'Manažér';
 $labels['assistant'] = 'Asistent';
+$labels['typeassistant'] = 'Asistent';
 $labels['spouse'] = 'Partner';
 $labels['allfields'] = 'Všetky polia';
 $labels['search'] = 'Hľadať';
 $labels['advsearch'] = 'Rozšírené vyhľadávanie';
-$labels['other'] = 'Iné';
+$labels['advanced'] = 'Rozšírené';
+$labels['other'] = 'Ostatné';
+$labels['typeother'] = 'Ostatné';
 $labels['typehome'] = 'Domov';
 $labels['typework'] = 'Práca';
-$labels['typeother'] = 'Ostatné';
 $labels['typemobile'] = 'Mobil';
 $labels['typemain'] = 'Hlavný';
 $labels['typehomefax'] = 'Domáci fax';
@@ -247,8 +256,9 @@ $labels['typeworkfax'] = 'Fax - práca';
 $labels['typecar'] = 'Auto';
 $labels['typepager'] = 'Pager';
 $labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Asistent';
 $labels['typehomepage'] = 'Domovská stránka';
+$labels['typeblog'] = 'Blog';
+$labels['typeprofile'] = 'Profil';
 $labels['addfield'] = 'Pridať položku...';
 $labels['addcontact'] = 'Pridať nový kontakt';
 $labels['editcontact'] = 'Upraviť kontakt';
@@ -262,6 +272,7 @@ $labels['delete'] = 'Zmazať';
 $labels['rename'] = 'Premenovať';
 $labels['addphoto'] = 'Pridať';
 $labels['replacephoto'] = 'Nahradiť';
+$labels['uploadphoto'] = 'Nahrať fotku';
 $labels['newcontact'] = 'Vytvoriť nový kontakt';
 $labels['deletecontact'] = 'Zmazať zvolené kontakty';
 $labels['composeto'] = 'Vytvoriť správu pre';
@@ -270,9 +281,9 @@ $labels['print'] = 'Tlač';
 $labels['export'] = 'Export';
 $labels['exportvcards'] = 'Exportovať kontakty vo formáte vCard';
 $labels['newcontactgroup'] = 'Vytvoriť novú skupinu kontaktov';
-$labels['groupactions'] = 'Akcie pre skupiny kontaktov';
 $labels['grouprename'] = 'Premenovať skupinu';
 $labels['groupdelete'] = 'Zmazať skupinu';
+$labels['groupremoveselected'] = 'Odstrániť vybrané kontakty zo skupiny';
 $labels['previouspage'] = 'Predchádzajúca stránka';
 $labels['firstpage'] = 'Prvá stránka';
 $labels['nextpage'] = 'Nasledujúca stránka';
@@ -280,6 +291,8 @@ $labels['lastpage'] = 'Posledná stránka';
 $labels['group'] = 'Skupina';
 $labels['groups'] = 'Skupiny';
 $labels['personaladrbook'] = 'Osobné adresy';
+$labels['searchsave'] = 'Uložiť vyhľadávanie';
+$labels['searchdelete'] = 'Zmazať vyhľadávanie';
 $labels['import'] = 'Import';
 $labels['importcontacts'] = 'Importovať kontakty';
 $labels['importfromfile'] = 'Importovať zo súboru:';
@@ -288,6 +301,7 @@ $labels['importreplace'] = 'Nahradiť celý zoznam kontaktov';
 $labels['importtext'] = 'Môžete nahrať kontakty z existujúcich adresárov. Podporujeme import adries vo formáte vCard.';
 $labels['done'] = 'Hotovo';
 $labels['settingsfor'] = 'Nastavenia pre';
+$labels['about'] = 'O programe';
 $labels['preferences'] = 'Vlastnosti';
 $labels['userpreferences'] = 'Používateľské nastavenia';
 $labels['editpreferences'] = 'Upraviť používateľské nastavenia';
@@ -299,6 +313,8 @@ $labels['edititem'] = 'Upraviť položku';
 $labels['preferhtml'] = 'Uprednostniť HTML zobrazenie';
 $labels['defaultcharset'] = 'Predvolené kódovanie';
 $labels['htmlmessage'] = 'HTML správa';
+$labels['dateformat'] = 'Formát dátumu';
+$labels['timeformat'] = 'Formát času';
 $labels['prettydate'] = 'Krajší dátum';
 $labels['setdefault'] = 'Obnoviť pôvodné';
 $labels['autodetect'] = 'Automaticky';
@@ -323,10 +339,11 @@ $labels['autosend'] = 'poslať potvrdenie automaticky';
 $labels['autosendknown'] = 'poslať potvrdenie iba mojím kontaktom';
 $labels['autosendknownignore'] = 'poslať potvrdenie mojím kontaktom, inak ignorovať';
 $labels['ignore'] = 'ignorovať';
-$labels['readwhendeleted'] = 'Označiť správu ';
+$labels['readwhendeleted'] = 'Označiť správu';
 $labels['flagfordeletion'] = 'Pri odstránení správy iba označiť správu ako odstránenú';
 $labels['skipdeleted'] = 'Nezobrazovať zmazané správy';
 $labels['deletealways'] = 'Odstrániť správy, ak zlyhá ich presun do koša';
+$labels['deletejunk'] = 'Hneď mazať správy v Spame';
 $labels['showremoteimages'] = 'Zobrazovať obrázky uložené mimo mail';
 $labels['fromknownsenders'] = 'od známych užívateľov';
 $labels['always'] = 'vždy';
@@ -347,11 +364,12 @@ $labels['advancedoptions'] = 'Rozšírené nastavenia';
 $labels['focusonnewmessage'] = 'Aktivovať okno prehliadača pri príchozí správe';
 $labels['checkallfolders'] = 'Kontrolovať nové správy vo všetkých zložkách';
 $labels['displaynext'] = 'Zobraziť ďalšiu správu po zmazanie / prenosu správy';
+$labels['defaultfont'] = 'Prednastavený font HTML správ';
 $labels['mainoptions'] = 'Hlavné nastavenia';
+$labels['browseroptions'] = 'Nastavenia prehliadania';
 $labels['section'] = 'Sekcia';
 $labels['maintenance'] = 'Údržba';
 $labels['newmessage'] = 'Nová správa';
-$labels['listoptions'] = 'Nastavenia stránkovanie';
 $labels['signatureoptions'] = 'Nastavenia podpísania';
 $labels['whenreplying'] = 'Pri odpovedaní';
 $labels['replytopposting'] = 'začať novú správu nad pôvodňou';
@@ -370,9 +388,16 @@ $labels['reqmdn'] = 'Vždy požadovať doručenku';
 $labels['reqdsn'] = 'Vždy vyžadovať potvrdenie o doručení správy';
 $labels['replysamefolder'] = 'Umietniť odpoveď do adresára, kde je umiestnená správa, na ktorú sa odpovedalo';
 $labels['defaultaddressbook'] = 'Pridať nové kontakty do zvoleného adresára';
+$labels['autocompletesingle'] = 'Vynechať alternatívnu emailovú adresu pri automatickom dopĺňaní';
+$labels['listnamedisplay'] = 'Zobraziť kontakt ako';
 $labels['spellcheckbeforesend'] = 'Skontrolovať pravopis pred odoslaním správy';
+$labels['spellcheckoptions'] = 'Voľby kontroly pravopisu';
+$labels['spellcheckignoresyms'] = 'Ignorovať slová so symbolmi';
+$labels['spellcheckignorenums'] = 'Ignorovať slová s číslami';
+$labels['spellcheckignorecaps'] = 'Ignorovať slová písané veľkými písmenami';
+$labels['addtodict'] = 'Pridať do slovníka';
+$labels['mailtoprotohandler'] = 'Zaregistrovať handler pre odkazy „mailto:“';
 $labels['folder'] = 'Priečinok';
-$labels['folders'] = 'Priečinky';
 $labels['foldername'] = 'Názov priečinku';
 $labels['subscribed'] = 'Prihlásený k odberu';
 $labels['messagecount'] = 'Počet správ';
@@ -395,6 +420,11 @@ $labels['sortby'] = 'Triediť podľa';
 $labels['sortasc'] = 'Triediť vzostupne';
 $labels['sortdesc'] = 'Triediť zostupne';
 $labels['undo'] = 'Vrátiť';
+$labels['plugin'] = 'Zásuvný modul';
+$labels['version'] = 'Verzia';
+$labels['source'] = 'Zdroj';
+$labels['license'] = 'Licencia';
+$labels['support'] = 'Získať podporu';
 $labels['B'] = 'B';
 $labels['KB'] = 'KB';
 $labels['MB'] = 'MB';
@@ -418,4 +448,3 @@ $labels['japanese'] = 'Japončina';
 $labels['korean'] = 'Korejčina';
 $labels['chinese'] = 'Čínština';
 
-?>
index ef5bbf403bf76e4a12a00bc0973428d3492877e4..417e5c951492b75fc9d92eebbbd09dba29eacd97 100644 (file)
@@ -1,34 +1,28 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/sk/messages.inc                                              |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Marek Kutnar <marek19@zmail.sk>                               |
-|         Lukas Kraic  <lukas.kraic@truni.sk>                           |
-|         Peter Mann   <peter.mann@tuke.sk>                             |
-|         Ales Pospichal   <ales@pospichalales.info>                    |
-|         Martin Lacina        <martin@whistler.sk>                            |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 5139 2011-08-28 09:47:15Z alec $
-
+ +-----------------------------------------------------------------------+
+ | localization/sk_SK/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: panda                                                         |
+ +-----------------------------------------------------------------------+
 */
 
 $messages = array();
+$messages['errortitle'] = 'Vyskytla sa chyba!';
 $messages['loginfailed'] = 'Chybné prihlásenie';
 $messages['cookiesdisabled'] = 'Váš internetový prehliadač nepodporuje cookies, ktoré sú potrebné pre prihlásenie';
 $messages['sessionerror'] = 'Vaše prihlásenie je neplatné alebo vypršala jeho platnosť';
-$messages['imaperror'] = 'Nepodarilo sa spojiť s IMAP serverom';
+$messages['storageerror'] = 'Nepodarilo sa spojiť s IMAP serverom';
 $messages['servererror'] = 'Chyba servera!';
 $messages['servererrormsg'] = 'Chyba servera: $msg';
 $messages['dberror'] = 'Databázová chyba!';
+$messages['requesttimedout'] = 'Čas požiadavky vypršal';
 $messages['errorreadonly'] = 'Nemožno vykonať operáciu. Adresár je len na čítanie';
 $messages['errornoperm'] = 'Nemožno vykonať operáciu. Prístup odmietnutý';
 $messages['invalidrequest'] = 'Chybný požiadavek. Žiadne údaje neboli uložené.';
@@ -47,10 +41,12 @@ $messages['messagesaved'] = 'Správa bola uložená medzi Rozpísané správy';
 $messages['successfullysaved'] = 'Úspešne uložená';
 $messages['addedsuccessfully'] = 'Kontakt bol pridaný do adresára';
 $messages['contactexists'] = 'Kontakt s touto e-mailovou adresou už existuje';
+$messages['contactnameexists'] = 'Kontakt s rovnakým menom už existuje.';
 $messages['blockedimages'] = 'Z bezpečnostných dôvodov sú v správe zablokované obrázky.';
 $messages['encryptedmessage'] = 'Táto správa je zašifrovaná, a nie je možné ju zobraziť!';
 $messages['nocontactsfound'] = 'Nemáte žiadne kontakty';
 $messages['contactnotfound'] = 'Požadovaný kontakt nebol nájdený';
+$messages['contactsearchonly'] = 'Zadaj nejaký vyhľadávací výraz pre hľadanie kontaktov.';
 $messages['sendingfailed'] = 'Odosielanie správy zlyhalo';
 $messages['senttooquickly'] = 'Počkajte $sec sekúnd pred odoslaním tejto správy';
 $messages['errorsavingsent'] = 'Pri ukladaní odoslanej správy nastala chyba';
@@ -60,9 +56,12 @@ $messages['errorcopying'] = 'Správa sa nedá skopírovať';
 $messages['errordeleting'] = 'Správa sa nedá zmazať';
 $messages['errormarking'] = 'Správa sa nedá označiť';
 $messages['deletecontactconfirm'] = 'Ste si istý, že chcete zmazať zvolený(é) kontakt(y)?';
+$messages['deletegroupconfirm'] = 'Skutočne chceš zmazať vybranú skupinu?';
 $messages['deletemessagesconfirm'] = 'Ste si istý, že chcete zmazať zvolenú(é) správu(y)?';
 $messages['deletefolderconfirm'] = 'Ste si istý, že chcete zmazať tento priečinok?';
 $messages['purgefolderconfirm'] = 'Ste si istý, že chcete zmazať všetky správy v tomto priečinku?';
+$messages['contactdeleting'] = 'Mažem kontakt(y)...';
+$messages['groupdeleting'] = 'Mažem skupinu...';
 $messages['folderdeleting'] = 'Odstraňuje sa priečinok ...';
 $messages['foldermoving'] = 'Prečinok sa presúva ...';
 $messages['foldersubscribing'] = 'Prihlasujem sa k adresáru...';
@@ -77,10 +76,10 @@ $messages['nosubjectwarning'] = 'Predmet správy je prázdny. Chcete ho teraz za
 $messages['nobodywarning'] = 'Chcete odoslať správu bez textu?';
 $messages['notsentwarning'] = 'Správa nebola odoslaná, chcete ju zrušiť?';
 $messages['noldapserver'] = 'Prosím, zvoľte LDAP server na vyhľadávanie';
-$messages['nocontactsreturned'] = 'Neboli nájdené žiadne kontakty';
 $messages['nosearchname'] = 'Prosím vložte meno alebo emailovú adresu';
 $messages['notuploadedwarning'] = 'Ešte neboli nahrané všetky prílohy. Počkajte prosím alebo nahrávanie zrušte.';
 $messages['searchsuccessful'] = 'nájdených $nr správ';
+$messages['contactsearchsuccessful'] = 'Bolo nájdených $nr kontaktov.';
 $messages['searchnomatch'] = 'Hľadaný výraz nebol nájdený';
 $messages['searching'] = 'Vyhľadáva sa...';
 $messages['checking'] = 'Kontroluje sa...';
@@ -101,10 +100,14 @@ $messages['sourceisreadonly'] = 'Tento zdroj adries je len na čítanie';
 $messages['errorsavingcontact'] = 'Nedá sa uložiť adresa kontaktu';
 $messages['movingmessage'] = 'Správa sa presúva...';
 $messages['copyingmessage'] = 'Správa sa kopíruje...';
+$messages['copyingcontact'] = 'Kopírujem kontakt(y)';
 $messages['deletingmessage'] = 'Mažem správu(y)...';
 $messages['markingmessage'] = 'Označujem správu(y)...';
+$messages['addingmember'] = 'Pridávam kontakt(y) do skupiny...';
+$messages['removingmember'] = 'Odoberám kontakt(y) zo skupiny';
 $messages['receiptsent'] = 'Potvrdenie o prijatí správy bolo odoslané';
 $messages['errorsendingreceipt'] = 'Potvrdenie o prijatí správy sa nedalo odoslať';
+$messages['deleteidentityconfirm'] = 'Skutočne chcete zmazať túto identitu?';
 $messages['nodeletelastidentity'] = 'Identita sa nedá odstrániť, je posledná a musí zostať.';
 $messages['forbiddencharacter'] = 'Názov priečinka obsahuje nepovolený znak';
 $messages['selectimportfile'] = 'Zvoľte súbor, ktorý chcete načítať';
@@ -124,7 +127,6 @@ $messages['smtpautherror'] = 'Chyba SMTP: Autorizácie zlyhala';
 $messages['smtpfromerror'] = 'Chyba SMTP: Nemožno nastaviť odosielateľa ($msg)';
 $messages['smtptoerror'] = 'Chyba SMTP: Nemožno pridať príjemca ($msg)';
 $messages['smtprecipientserror'] = 'Chyba SMTP: Nemožno spracovať zoznam príjemcov';
-$messages['smtpdsnerror'] = 'SMTP chyba: Oznámenie o doručení nie je podporované';
 $messages['smtperror'] = 'Chyba SMTP: $msg';
 $messages['emailformaterror'] = 'Neplatná e-mailová adresa: $email';
 $messages['toomanyrecipients'] = 'Príliš veľa príjemcov. Zmenšite počet príjemcov na $max.';
@@ -137,17 +139,22 @@ $messages['contactrestored'] = 'Kontakty boli úspešne obnovené';
 $messages['groupdeleted'] = 'Skupina bola vymazaná';
 $messages['grouprenamed'] = 'Skupina bola premenovaná';
 $messages['groupcreated'] = 'Skupina bola vytvorená';
+$messages['savedsearchdeleted'] = 'Uložené vyhľadávanie bolo vymazané.';
+$messages['savedsearchdeleteerror'] = 'Nemôžem zmazať uložené vyhľadávanie.';
+$messages['savedsearchcreated'] = 'Uložené vyhľadávanie bolo vytvorené.';
+$messages['savedsearchcreateerror'] = 'Nemôžem vytvoriť uložené vyhľadávanie';
 $messages['messagedeleted'] = 'Správa(y) bola vymazaná';
 $messages['messagemoved'] = 'Správa(y) bola presunutá';
 $messages['messagecopied'] = 'Správa(y) bola skopírovaná';
 $messages['messagemarked'] = 'Správa(y) bola označená';
 $messages['autocompletechars'] = 'Zadajte najmenej $min znamkov pre automatické dopĺňanie';
+$messages['autocompletemore'] = 'Bolo nájdených viac záznamov. Napíšte prosím viac znakov.';
 $messages['namecannotbeempty'] = 'Meno nemôže byť prázdne';
 $messages['nametoolong'] = 'Meno je príliš dlhé';
 $messages['folderupdated'] = 'Adresár bol aktualizovaný';
 $messages['foldercreated'] = 'Adresár bol vytvorený';
 $messages['invalidimageformat'] = 'Zlý formát obrázku';
 $messages['mispellingsfound'] = 'V správe boli nájdené pravopisné chyby';
-$messages['itemsdeleted'] = 'Bolo vymazaných $num položiek.';
+$messages['parentnotwritable'] = 'Nemôžem vytvoriť/presunúť adresár do zvoleného nadradeného adresára. Nemáte oprávnenia na zmenu.';
+$messages['messagetoobig'] = 'Časť správy je príliš veľká na spracovanie.';
 
-?>
index 8a460f0b2531b80289d4f81e0e5ad8581bc18c59..c1ab9712de5292e42e87beba0151da4348e9cd4d 100644 (file)
@@ -1,21 +1,16 @@
 <?php
 
 /*
-+-----------------------------------------------------------------------+
-| language/sl_SI/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Andrej Sossi <asossi@dotcom.ts.it>                            |
-|         Andrej Mocilnik <amocilnik@dotcom.ts.it>                      |
-|         Barbara Krasovec <barbarak@arnes.si>                          |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 5569 2011-12-07 14:47:32Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/sl_SI/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Teja Cetinski <teja.cetinski@gmail.com>                       |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
@@ -45,10 +40,13 @@ $labels['size'] = 'Velikost';
 $labels['priority'] = 'Prioriteta';
 $labels['organization'] = 'Organizacija';
 $labels['readstatus'] = 'Status';
+$labels['listoptions'] = 'Možnosti prikaza...';
 $labels['mailboxlist'] = 'Mape';
+$labels['folders'] = 'Mape';
 $labels['messagesfromto'] = 'Sporočila $from do $to od $count';
 $labels['threadsfromto'] = 'Nit $from do $to od $count';
 $labels['messagenrof'] = 'Sporočilo $nr od $count';
+$labels['fromtoshort'] = '$from – $to od $count';
 $labels['copy'] = 'Kopiraj';
 $labels['move'] = 'Premakni';
 $labels['moveto'] = 'Premakni v...';
@@ -75,6 +73,7 @@ $labels['feb'] = 'Feb';
 $labels['mar'] = 'Mar';
 $labels['apr'] = 'Apr';
 $labels['may'] = 'Maj';
+$labels['longmay'] = 'Maj';
 $labels['jun'] = 'Jun';
 $labels['jul'] = 'Jul';
 $labels['aug'] = 'Avg';
@@ -86,7 +85,6 @@ $labels['longjan'] = 'Januar';
 $labels['longfeb'] = 'Februar';
 $labels['longmar'] = 'Marec';
 $labels['longapr'] = 'April';
-$labels['longmay'] = 'Maj';
 $labels['longjun'] = 'Junij';
 $labels['longjul'] = 'Julij';
 $labels['longaug'] = 'Avgust';
@@ -95,12 +93,16 @@ $labels['longoct'] = 'Oktober';
 $labels['longnov'] = 'November';
 $labels['longdec'] = 'December';
 $labels['today'] = 'Danes';
+$labels['refresh'] = 'Osveži';
 $labels['checkmail'] = 'Preglej nova sporočila';
+$labels['compose'] = 'Sestavi sporočilo';
 $labels['writenewmessage'] = 'Novo sporočilo';
+$labels['reply'] = 'Odgovori';
 $labels['replytomessage'] = 'Odgovori';
 $labels['replytoallmessage'] = 'Odgovori listi ali vsem prejemnikom';
 $labels['replyall'] = 'Odgovori vsem';
 $labels['replylist'] = 'Odgovori listi';
+$labels['forward'] = 'Posreduj';
 $labels['forwardinline'] = 'Posreduj medvrstično';
 $labels['forwardattachment'] = 'Posreduj kot priponko';
 $labels['forwardmessage'] = 'Posreduj';
@@ -113,15 +115,20 @@ $labels['nextmessage'] = 'Prikaži naslednje sporočilo';
 $labels['lastmessage'] = 'Prikaži zadnje sporočilo';
 $labels['backtolist'] = 'Nazaj na seznam sporočil';
 $labels['viewsource'] = 'Prikaži izvirno kodo';
+$labels['mark'] = 'Označi';
 $labels['markmessages'] = 'Označi sporočilo';
 $labels['markread'] = 'Kot prebrano';
 $labels['markunread'] = 'Kot neprebrano';
 $labels['markflagged'] = 'Kot označeno';
 $labels['markunflagged'] = 'Kot neoznačeno';
 $labels['moreactions'] = 'Več možnosti...';
+$labels['more'] = 'Več';
+$labels['back'] = 'Nazaj';
+$labels['options'] = 'Možnosti';
 $labels['select'] = 'Izberi';
 $labels['all'] = 'Vse';
-$labels['none'] = 'Ničesar';
+$labels['none'] = 'Brez';
+$labels['nonesort'] = 'Brez';
 $labels['currpage'] = 'Trenutna stran';
 $labels['unread'] = 'Neprebrano';
 $labels['flagged'] = 'Označeno';
@@ -141,7 +148,6 @@ $labels['expand_only_unread'] = 'samo niti z neprebranimi sporočili';
 $labels['fromto'] = 'Pošiljatelj/Prejemnik';
 $labels['flag'] = 'Oznaka';
 $labels['attachment'] = 'Priponka';
-$labels['nonesort'] = 'Brez';
 $labels['sentdate'] = 'Datum pošiljanja';
 $labels['arrival'] = 'Datum prejema';
 $labels['asc'] = 'naraščajoče';
@@ -162,7 +168,6 @@ $labels['searchmod'] = 'Spremembe iskanja';
 $labels['msgtext'] = 'Celotno sporočilo';
 $labels['openinextwin'] = 'Odpri v novem oknu';
 $labels['emlsave'] = 'Prenos datoteke (.eml)';
-$labels['compose'] = 'Sestavi sporočilo';
 $labels['editasnew'] = 'Uredi kot novo';
 $labels['savemessage'] = 'Shrani kot osnutek';
 $labels['sendmessage'] = 'Pošlji sporočilo';
@@ -174,9 +179,11 @@ $labels['dsn'] = 'Status dostave sporočila';
 $labels['mailreplyintro'] = '$date, je $sender napisal';
 $labels['originalmessage'] = 'Izvorno sporočilo';
 $labels['editidents'] = 'Uredi identitete';
+$labels['spellcheck'] = 'Črkovanje';
 $labels['checkspelling'] = 'Preglej pravopis';
 $labels['resumeediting'] = 'Nadaljuj z urejanjem';
 $labels['revertto'] = 'Razveljavi';
+$labels['attach'] = 'Pripni';
 $labels['attachments'] = 'Priponke';
 $labels['upload'] = 'Naloži';
 $labels['uploadprogress'] = '$percent ($current od $total)';
@@ -231,15 +238,17 @@ $labels['notes'] = 'Opombe';
 $labels['male'] = 'moški';
 $labels['female'] = 'ženska';
 $labels['manager'] = 'Vodja';
-$labels['assistant'] = 'Asistent';
+$labels['assistant'] = 'Pomoč';
+$labels['typeassistant'] = 'Pomoč';
 $labels['spouse'] = 'Zakonec';
 $labels['allfields'] = 'Vsa polja';
 $labels['search'] = 'Iskanje';
 $labels['advsearch'] = 'Napredno iskanje';
+$labels['advanced'] = 'Napredno';
 $labels['other'] = 'Ostalo';
+$labels['typeother'] = 'Ostalo';
 $labels['typehome'] = 'Doma';
 $labels['typework'] = 'Služba';
-$labels['typeother'] = 'Ostalo';
 $labels['typemobile'] = 'Mobilni telefon';
 $labels['typemain'] = 'Osnovno';
 $labels['typehomefax'] = 'Domači fax';
@@ -247,7 +256,6 @@ $labels['typeworkfax'] = 'Službeni fax';
 $labels['typecar'] = 'Avto';
 $labels['typepager'] = 'Pozivnik';
 $labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Pomoč';
 $labels['typehomepage'] = 'Domača stran';
 $labels['typeblog'] = 'Blog';
 $labels['typeprofile'] = 'Profil';
@@ -264,6 +272,7 @@ $labels['delete'] = 'Izbriši';
 $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';
@@ -274,6 +283,7 @@ $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';
 $labels['previouspage'] = 'Prejšnja stran';
 $labels['firstpage'] = 'Prva stran';
 $labels['nextpage'] = 'Naslednja stran';
@@ -333,6 +343,7 @@ $labels['readwhendeleted'] = 'Označi izbrisano sporočilo kot prebrano';
 $labels['flagfordeletion'] = 'Ne izbriši sporočila, le označi kot izbrisano';
 $labels['skipdeleted'] = 'Ne prikaži izbrisanih sporočil';
 $labels['deletealways'] = 'Če premikanje sporočil v Smeti spodleti, naj bodo izbrisana.';
+$labels['deletejunk'] = 'Neposredno izbriši sporočila v mapi Nezaželena sporočila';
 $labels['showremoteimages'] = 'Prikaži medvrstične slike';
 $labels['fromknownsenders'] = 'od znanih pošiljateljev';
 $labels['always'] = 'vedno';
@@ -353,11 +364,12 @@ $labels['advancedoptions'] = 'Dodatne možnosti';
 $labels['focusonnewmessage'] = 'Usmeri okno brskalnika na novo sporočilo';
 $labels['checkallfolders'] = 'Preglej nova sporočila za vse mape';
 $labels['displaynext'] = 'Po izbrisu/premikanju sporočila prikaži naslednje sporočilo';
+$labels['defaultfont'] = 'Privzeta pisava HTML sporočil';
 $labels['mainoptions'] = 'Osnovne nastavitve';
+$labels['browseroptions'] = 'Možnosti brskalnika';
 $labels['section'] = 'Nastavitve';
 $labels['maintenance'] = 'Vzdrževanje';
 $labels['newmessage'] = 'Novo sporočilo';
-$labels['listoptions'] = 'Prikaži seznam možnosti';
 $labels['signatureoptions'] = 'Nastavitve podpisa';
 $labels['whenreplying'] = 'Pri odgovoru';
 $labels['replytopposting'] = 'začni z novim sporočilom nad izvornim sporočilom';
@@ -377,14 +389,15 @@ $labels['reqdsn'] = 'Vedno zahtevaj obvestilo o statusu dostave';
 $labels['replysamefolder'] = 'Shrani odgovore na sporočilo v mapo izvornega sporočila';
 $labels['defaultaddressbook'] = 'Dodaj nove stike v izbran imenik';
 $labels['autocompletesingle'] = 'Preskoči nadomestni e-naslov pri samodejnem dokončanju';
+$labels['listnamedisplay'] = 'Prikaži seznam stikov kot';
 $labels['spellcheckbeforesend'] = 'Preveri črkovanje pred pošiljanjem sporočila';
 $labels['spellcheckoptions'] = 'Možnosti črkovanja';
 $labels['spellcheckignoresyms'] = 'Ne upoštevaj besed, ki vsebujejo simbole';
 $labels['spellcheckignorenums'] = 'Ne upoštevaj besed, ki vsebujejo številke';
 $labels['spellcheckignorecaps'] = 'Ne upoštevaj besed, ki vsebujejo samo velike črke';
 $labels['addtodict'] = 'Dodaj v slovar';
+$labels['mailtoprotohandler'] = 'Registriraj upravljavca protokola za e-naslov: povezave';
 $labels['folder'] = 'Mapa';
-$labels['folders'] = 'Mape';
 $labels['foldername'] = 'Ime mape';
 $labels['subscribed'] = 'Vpisan';
 $labels['messagecount'] = 'Sporočila';
@@ -435,4 +448,3 @@ $labels['japanese'] = 'Japonsko';
 $labels['korean'] = 'Korejsko';
 $labels['chinese'] = 'Kitajsko';
 
-?>
index 1aa199ce392d3b08127af9a6f65343d02520ea68..a360e952f053159a905e0d936526c093838b53b4 100644 (file)
@@ -1,27 +1,28 @@
 <?php
 
 /*
-+-----------------------------------------------------------------------+
-| language/sl_SI/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2008-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author:   Barbara Krasovec -  barbarak@arnes.si                       |
-+-----------------------------------------------------------------------+
-
+ +-----------------------------------------------------------------------+
+ | localization/sl_SI/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Teja Cetinski <teja.cetinski@gmail.com>                       |
+ +-----------------------------------------------------------------------+
 */
 
 $messages = array();
+$messages['errortitle'] = 'Prišlo je do napake!';
 $messages['loginfailed'] = 'Prijava ni uspela';
 $messages['cookiesdisabled'] = 'Vaš spletni brskalnik ne sprejema piškotkov.';
 $messages['sessionerror'] = 'Seja je neveljavna ali je potekla.';
-$messages['imaperror'] = 'Povezava z IMAP strežnikom je spodletela.';
+$messages['storageerror'] = 'Povezava z IMAP strežnikom je spodletela.';
 $messages['servererror'] = 'Napaka strežnika!';
-$messages['servererrormsg'] = 'Napaka strežnikaČ $msg';
+$messages['servererrormsg'] = 'Napaka strežnika $msg';
 $messages['dberror'] = 'Napaka v bazi';
+$messages['requesttimedout'] = 'Zahteva je potekla';
 $messages['errorreadonly'] = 'Operacije ni bilo mogoče izvršiti. Mapa je na voljo samo za branje.';
 $messages['errornoperm'] = 'Operacije ni bilo mogoče izvršiti. Dostop zavrnjen.';
 $messages['invalidrequest'] = 'Neveljavna zahteva. Podatki niso bili shranjeni.';
@@ -106,6 +107,7 @@ $messages['addingmember'] = 'Dodajanje stika/ov v skupino...';
 $messages['removingmember'] = 'Odstranjevanje stika/ov iz skupine..';
 $messages['receiptsent'] = 'Sporočilo o branju je bilo uspešno poslano';
 $messages['errorsendingreceipt'] = 'Sporočila o branju ni bilo mogoče poslati';
+$messages['deleteidentityconfirm'] = 'Ste prepričani, da želite izbrisati to identiteto?';
 $messages['nodeletelastidentity'] = 'Te identitete ni mogoče izbrisati, saj je edina.';
 $messages['forbiddencharacter'] = 'Ime mape vsebuje nedovoljen znak';
 $messages['selectimportfile'] = 'Izberite datoteko, ki jo želite prenesti';
@@ -154,5 +156,5 @@ $messages['foldercreated'] = 'Mapa je bila uspešno ustvarjena';
 $messages['invalidimageformat'] = 'Neveljaven format slike';
 $messages['mispellingsfound'] = 'V sporočilu so bile najdene napake v črkovanju';
 $messages['parentnotwritable'] = 'Podmape v tej mapi ni bilo mogoče ustvariti/premakniti. Nimate pravic.';
+$messages['messagetoobig'] = 'Sporočilo je preveliko za obdelavo.';
 
-?>
index 80cc3d111e5f7ad1e56119cdc64309db259d4860..707234ea664b3a4b30e3402107eaefa77a18a08d 100644 (file)
@@ -1,20 +1,17 @@
 <?php
 
 /*
-
  +-----------------------------------------------------------------------+
- | language/sq_AL/labels.inc                                             |
+ | localization/sq_AL/labels.inc                                         |
  |                                                                       |
  | Language file of the Roundcube Webmail client                         |
- | Copyright (C) 2005-2010, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Dashamir Hoxha <dhoxha@albaniaonline.net>                     |
+ | Author: Thomas <Unknown>                                              |
  +-----------------------------------------------------------------------+
-
- @version $Id: labels.inc 4410 2011-01-12 18:25:02Z thomasb $
-
+ @version $Id$
 */
 
 $labels = array();
@@ -42,17 +39,15 @@ $labels['date'] = 'Data';
 $labels['size'] = 'Madhësia';
 $labels['priority'] = 'Përparësia';
 $labels['organization'] = 'Organizata';
-$labels['reply-to'] = 'Reply-To';
-$labels['mailboxlist'] = 'Dosjet';
+$labels['mailboxlist'] = 'Kutitë';
+$labels['folders'] = 'Kutitë';
 $labels['messagesfromto'] = 'Mesazhet $from në $to nga $count';
 $labels['messagenrof'] = 'Mesazhi $nr nga $count';
+$labels['copy'] = 'Kopje';
 $labels['moveto'] = 'ço te...';
 $labels['download'] = 'shkarko';
 $labels['filename'] = 'Emër skedari';
 $labels['filesize'] = 'Madhësi skedari';
-$labels['preferhtml'] = 'Shfaq HTML';
-$labels['htmlmessage'] = 'Mesazh HTML';
-$labels['prettydate'] = 'Data të këndshme';
 $labels['addtoaddressbook'] = 'Shto në librin e adresave';
 $labels['sun'] = 'Dje';
 $labels['mon'] = 'Hën';
@@ -70,6 +65,7 @@ $labels['friday'] = 'e premte';
 $labels['saturday'] = 'e shtunë';
 $labels['today'] = 'sot';
 $labels['checkmail'] = 'Shiko për mesazhe të reja';
+$labels['compose'] = 'Shkruaj një mesazh';
 $labels['writenewmessage'] = 'Krijo një mesazh të ri';
 $labels['replytomessage'] = 'Ktheji përgjigje mesazhit';
 $labels['replytoallmessage'] = 'Ktheji përgjigje dërguesit dhe të gjithë marrësve';
@@ -78,13 +74,9 @@ $labels['deletemessage'] = 'Fshije mesazhin';
 $labels['movemessagetotrash'] = 'Hidhe mesazhin në kosh';
 $labels['printmessage'] = 'Shtype këtë mesazh';
 $labels['previousmessage'] = 'Shfaq mesazhin e mëparshëm';
-$labels['previousmessages'] = 'Shfaq grupin e mëparshëm të mesazheve';
 $labels['firstmessage'] = 'Shfaq mesazhin e parë';
-$labels['firstmessages'] = 'Shfaq grupin e parë të mesazheve';
 $labels['nextmessage'] = 'Shfaq mesazhin pasardhës';
-$labels['nextmessages'] = 'Shfaq grupin tjetër të mesazheve';
 $labels['lastmessage'] = 'Shfaq mesazhin e fundit';
-$labels['lastmessages'] = 'Shfaq grupin e fundit të mesazheve';
 $labels['backtolist'] = 'Kthehu te lista e mesazheve';
 $labels['viewsource'] = 'Shfaq tekstin';
 $labels['markmessages'] = 'Shëno mesazhet';
@@ -93,16 +85,15 @@ $labels['markunread'] = 'Si të palexuara';
 $labels['select'] = 'Zgjidh';
 $labels['all'] = 'Të gjitha';
 $labels['none'] = 'Asnjë';
+$labels['nonesort'] = 'Asnjë';
 $labels['unread'] = 'Palexuar';
 $labels['compact'] = 'Zvogëlo';
 $labels['empty'] = 'Boshatis';
-$labels['purge'] = 'Pastro';
 $labels['quota'] = 'Përdorimi i diskut';
 $labels['unknown'] = 'i panjohur';
 $labels['unlimited'] = 'i pakufizuar';
 $labels['quicksearch'] = 'Kërkim i shpejtë';
 $labels['resetsearch'] = 'Pastro kërkimin';
-$labels['compose'] = 'Shkruaj një mesazh';
 $labels['savemessage'] = 'Ruaje si draft';
 $labels['sendmessage'] = 'Dërgoje mesazhin tani';
 $labels['addattachment'] = 'Bashkangjit një skedar';
@@ -162,6 +153,9 @@ $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';
 $labels['setdefault'] = 'Bëje identitet kryesor';
 $labels['language'] = 'Gjuha';
 $labels['timezone'] = 'Brezi orar';
@@ -174,7 +168,6 @@ $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['messagecount'] = 'Mesazhe';
@@ -185,4 +178,3 @@ $labels['sortby'] = 'Rradhit sipas';
 $labels['sortasc'] = 'Rradhitje rritëse';
 $labels['sortdesc'] = 'Rradhitje zbritëse';
 
-?>
index fbd60ed72c2114b7d003568229a7e6ed23af1d3f..feb3c6e74c21ea30a17a4a0b47711f15e0600643 100644 (file)
@@ -1,27 +1,24 @@
 <?php
 
 /*
-
  +-----------------------------------------------------------------------+
- | language/sq_AL/messages.inc                                           |
+ | localization/sq_AL/messages.inc                                       |
  |                                                                       |
  | Language file of the Roundcube Webmail client                         |
- | Copyright (C) 2005-2010, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Dashamir Hoxha <dhoxha@albaniaonline.net>                     |
+ | Author: Thomas <Unknown>                                              |
  +-----------------------------------------------------------------------+
-
- @version $Id: messages.inc 4410 2011-01-12 18:25:02Z thomasb $
-
+ @version $Id$
 */
 
 $messages = array();
 $messages['loginfailed'] = 'Hyrja dështoi';
 $messages['cookiesdisabled'] = 'Shfletuesi juaj nuk i pranon sheqerkat';
 $messages['sessionerror'] = 'Sesioni juaj është i pavlefshëm ose i ka kaluar afati';
-$messages['imaperror'] = 'Lidhja me serverin IMAP dështoi';
+$messages['storageerror'] = 'Lidhja me serverin IMAP dështoi';
 $messages['nomessagesfound'] = 'Nuk ka mesazhe në këtë kuti postare';
 $messages['loggedout'] = 'Sesionin e mbyllët me sukses. Mirupafshim!';
 $messages['mailboxempty'] = 'Kutia postare është bosh';
@@ -56,7 +53,6 @@ $messages['nosubjectwarning'] = 'Fusha e temës është bosh. Dëshironi të sh
 $messages['nobodywarning'] = 'Ta dërgoj mesazhin pa tekst?';
 $messages['notsentwarning'] = 'Mesazhi nuk u dërgua. Doni ta hidhni poshtë mesazhin?';
 $messages['noldapserver'] = 'Ju lutem jepni një server ldap për të kërkuar';
-$messages['nocontactsreturned'] = 'Nuk gjeta kontakte';
 $messages['nosearchname'] = 'Ju lutem jepni një adresë email ose një emër kontakti';
 $messages['searchsuccessful'] = 'U gjetën $nr mesazhe';
 $messages['searchnomatch'] = 'Kërkimi nuk gjeti gjë';
@@ -78,4 +74,3 @@ $messages['receiptsent'] = 'U dërgua me sukses një njoftim leximi';
 $messages['errorsendingreceipt'] = 'Nuk mund të dërgohet njoftimi';
 $messages['nodeletelastidentity'] = 'Ju nuk mund ta fshini këtë identitet sepse nuk ju ka mbetur tjetër.';
 
-?>
index d5a7435ba583a9e509efd88d7ce332396f08313a..4ee7fbef63d182cc6ad31c0ad4988b7b2492d0d6 100644 (file)
@@ -1,20 +1,16 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/sr_cyrillic/labels.inc                                       |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Branko Kokanovic <branko.kokanovic@gmail.com                  |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 4627 2011-03-31 13:47:22Z yllar $
-
+ +-----------------------------------------------------------------------+
+ | localization/sr_CS/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: gpredrag <gavrilovic@gmail.com>                               |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
@@ -28,7 +24,7 @@ $labels['mail'] = 'Сандуче';
 $labels['settings'] = 'Подешавања';
 $labels['addressbook'] = 'Именик';
 $labels['inbox'] = 'Примљене';
-$labels['drafts'] = 'Снимљене';
+$labels['drafts'] = 'U pripremi';
 $labels['sent'] = 'Послате';
 $labels['trash'] = 'Канта';
 $labels['junk'] = 'Смеће';
@@ -43,10 +39,13 @@ $labels['size'] = 'Величина';
 $labels['priority'] = 'Приоритет';
 $labels['organization'] = 'Организација';
 $labels['readstatus'] = 'Статус поруке';
+$labels['listoptions'] = 'Излистај опције...';
 $labels['mailboxlist'] = 'Фасцикле';
+$labels['folders'] = 'Фасцикле';
 $labels['messagesfromto'] = 'Поруке $from до $to од укупно $count';
 $labels['threadsfromto'] = 'Страница $from до $to од $count';
 $labels['messagenrof'] = 'Порука број $nr од $count';
+$labels['fromtoshort'] = '$from – $to од $count';
 $labels['copy'] = 'Копирај';
 $labels['move'] = 'Пребаци';
 $labels['moveto'] = 'Пребаци у...';
@@ -73,6 +72,7 @@ $labels['feb'] = 'Феб';
 $labels['mar'] = 'Мар';
 $labels['apr'] = 'Апр';
 $labels['may'] = 'Мај';
+$labels['longmay'] = 'Мај';
 $labels['jun'] = 'Јун';
 $labels['jul'] = 'Јул';
 $labels['aug'] = 'Авг';
@@ -84,7 +84,6 @@ $labels['longjan'] = 'Јануар';
 $labels['longfeb'] = 'Фебруар';
 $labels['longmar'] = 'Март';
 $labels['longapr'] = 'Април';
-$labels['longmay'] = 'Мај';
 $labels['longjun'] = 'Јуни';
 $labels['longjul'] = 'Јули';
 $labels['longaug'] = 'Август';
@@ -93,35 +92,41 @@ $labels['longoct'] = 'Октобар';
 $labels['longnov'] = 'Новембар';
 $labels['longdec'] = 'Децембар';
 $labels['today'] = 'Данас';
+$labels['refresh'] = 'Освежи';
 $labels['checkmail'] = 'Провера нових порука';
+$labels['compose'] = 'Нова порука';
 $labels['writenewmessage'] = 'Нова порука';
+$labels['reply'] = 'Одговори';
 $labels['replytomessage'] = 'Одговори на поруку';
 $labels['replytoallmessage'] = 'Одговори пошиљаоцу и свим примаоцима';
 $labels['replyall'] = 'Одговори свима';
 $labels['replylist'] = 'Листа за одговоре';
+$labels['forward'] = 'Проследи';
+$labels['forwardattachment'] = 'Проследи као прилог';
 $labels['forwardmessage'] = 'Проследи поруку';
 $labels['deletemessage'] = 'Избриши поруку';
 $labels['movemessagetotrash'] = 'Пребаци поруку у канту';
 $labels['printmessage'] = 'Одштампај поруку';
 $labels['previousmessage'] = 'Прикажи претходну поруку';
-$labels['previousmessages'] = 'Прикажи претходни скуп порука';
 $labels['firstmessage'] = 'Прикажи прву поруку';
-$labels['firstmessages'] = 'Прикажи први скуп порука';
 $labels['nextmessage'] = 'Прикажи следећу поруку';
-$labels['nextmessages'] = 'Прикажи следећи скуп порука';
 $labels['lastmessage'] = 'Прикажи последњу поруку';
-$labels['lastmessages'] = 'Прикажи последњи скуп порука';
 $labels['backtolist'] = 'Повратак на листу порука';
 $labels['viewsource'] = 'Прикажи поруку у изворном облику';
+$labels['mark'] = 'Означи';
 $labels['markmessages'] = 'Обележи поруке';
 $labels['markread'] = 'Као прочитано';
 $labels['markunread'] = 'Као непрочитано';
 $labels['markflagged'] = 'Као означено';
 $labels['markunflagged'] = 'Као неозначено';
-$labels['messageactions'] = 'Више поставки';
+$labels['moreactions'] = 'Остале радње...';
+$labels['more'] = 'Више';
+$labels['back'] = 'Назад';
+$labels['options'] = 'Опције';
 $labels['select'] = 'Одабери';
 $labels['all'] = 'Све';
-$labels['none'] = 'Ниједну';
+$labels['none'] = 'Ништа';
+$labels['nonesort'] = 'Ништа';
 $labels['currpage'] = 'Тренутна страница';
 $labels['unread'] = 'Непрочитане';
 $labels['flagged'] = 'Означено';
@@ -130,9 +135,20 @@ $labels['deleted'] = 'Обрисано';
 $labels['invert'] = 'Уведи';
 $labels['filter'] = 'Филтер';
 $labels['list'] = 'Листа';
-$labels['nonesort'] = 'Ништа';
+$labels['threads'] = 'Нити';
+$labels['expand-all'] = 'Прошири све';
+$labels['collapse-all'] = 'Сажми све';
+$labels['expand_only_unread'] = 'само са непрочитаним порукама';
+$labels['fromto'] = 'Од/За';
+$labels['flag'] = 'Застава';
+$labels['attachment'] = 'Прилог';
 $labels['sentdate'] = 'Датум послато';
 $labels['arrival'] = 'Датум стигло';
+$labels['asc'] = 'растући';
+$labels['desc'] = 'опадајући';
+$labels['listcolumns'] = 'Лист колона';
+$labels['listsorting'] = 'Сортирање колонe';
+$labels['listmode'] = 'Лист режим приказивања';
 $labels['folderactions'] = 'Поставке фасцикле';
 $labels['compact'] = 'Компакција';
 $labels['empty'] = 'Испразни';
@@ -143,7 +159,7 @@ $labels['quicksearch'] = 'Брза претрага';
 $labels['resetsearch'] = 'Прикажи све поруке';
 $labels['msgtext'] = 'Цела порука';
 $labels['openinextwin'] = 'Отвори у новом прозору';
-$labels['compose'] = 'Нова порука';
+$labels['emlsave'] = 'Довнлоад (.eml)';
 $labels['editasnew'] = 'Модификуј као ново';
 $labels['savemessage'] = 'Сачувај у Снимљене';
 $labels['sendmessage'] = 'Пошаљи поруку';
@@ -152,12 +168,17 @@ $labels['charset'] = 'Скуп карактера';
 $labels['editortype'] = 'Врста едитора';
 $labels['returnreceipt'] = 'Потврда о приспећу';
 $labels['dsn'] = 'Обавештење о статусу слања поруке';
+$labels['mailreplyintro'] = 'Дана $date, $sender је написао:';
+$labels['originalmessage'] = 'Оригинална порука';
 $labels['editidents'] = 'Модификуј псеудониме';
+$labels['spellcheck'] = 'Провера правописа';
 $labels['checkspelling'] = 'Провера правописа';
 $labels['resumeediting'] = 'Повратак у режим писања';
 $labels['revertto'] = 'Врати се на';
-$labels['attachments'] = 'Прилози ';
+$labels['attach'] = 'Приложи';
+$labels['attachments'] = 'Прилози';
 $labels['upload'] = 'Додај';
+$labels['uploadprogress'] = '$percent ($current од $total)';
 $labels['close'] = 'Затвори';
 $labels['messageoptions'] = 'Опције поруке';
 $labels['low'] = 'Низак';
@@ -184,6 +205,8 @@ $labels['name'] = 'Пуно име';
 $labels['firstname'] = 'Име';
 $labels['surname'] = 'Презиме';
 $labels['middlename'] = 'Средње име';
+$labels['nameprefix'] = 'Префикс';
+$labels['namesuffix'] = 'Суфикс';
 $labels['nickname'] = 'Надимак';
 $labels['jobtitle'] = 'Пословна титула';
 $labels['department'] = 'Оделење';
@@ -195,24 +218,37 @@ $labels['address'] = 'Адреса';
 $labels['street'] = 'Улица';
 $labels['locality'] = 'Град';
 $labels['zipcode'] = 'Поштански број';
+$labels['region'] = 'република/провинција';
 $labels['country'] = 'Држава';
 $labels['birthday'] = 'Датум рођења';
+$labels['anniversary'] = 'Годишњица';
 $labels['website'] = 'Вебсајт';
 $labels['instantmessenger'] = 'ИМ';
+$labels['notes'] = 'Белешке';
 $labels['male'] = 'мушко';
 $labels['female'] = 'женско';
 $labels['manager'] = 'Менаџер';
 $labels['assistant'] = 'Асистент';
+$labels['typeassistant'] = 'Асистент';
+$labels['spouse'] = 'Супружник';
+$labels['allfields'] = 'Сва поља';
+$labels['search'] = 'Тражи';
+$labels['advsearch'] = 'Напредна претрага';
+$labels['advanced'] = 'Напредно';
+$labels['other'] = 'Остало';
+$labels['typeother'] = 'Остало';
 $labels['typehome'] = 'Кућа';
 $labels['typework'] = 'Посао';
-$labels['typeother'] = 'Остало';
 $labels['typemobile'] = 'Мобилни Телефон';
+$labels['typemain'] = 'Главна';
 $labels['typehomefax'] = 'Кућни факс';
 $labels['typeworkfax'] = 'Пословни факс';
 $labels['typecar'] = 'Ауто';
 $labels['typepager'] = 'Пејџер';
 $labels['typevideo'] = 'Видео';
-$labels['typeassistant'] = 'Асистент';
+$labels['typehomepage'] = 'Почетна страница';
+$labels['typeblog'] = 'Блог';
+$labels['typeprofile'] = 'Профил';
 $labels['addfield'] = 'Додај поље';
 $labels['addcontact'] = 'Додај нови контакт';
 $labels['editcontact'] = 'Измени контакт';
@@ -226,6 +262,7 @@ $labels['delete'] = 'Обриши';
 $labels['rename'] = 'Преименуј';
 $labels['addphoto'] = 'Додај';
 $labels['replacephoto'] = 'Измени';
+$labels['uploadphoto'] = 'Постави фотографију';
 $labels['newcontact'] = 'Додај нови контакт';
 $labels['deletecontact'] = 'Обриши одабране контакте';
 $labels['composeto'] = 'Напиши поруку...';
@@ -234,7 +271,9 @@ $labels['print'] = 'Штампај';
 $labels['export'] = 'Извези';
 $labels['exportvcards'] = 'Извези конакте у vCard формату';
 $labels['newcontactgroup'] = 'Креирај нову контакт групу';
-$labels['groupactions'] = 'Радње за контакт групу';
+$labels['grouprename'] = 'Преименуј групу';
+$labels['groupdelete'] = 'Обриши групу';
+$labels['groupremoveselected'] = 'Избриши изабране контакте из групе';
 $labels['previouspage'] = 'Прикажи претходну страну';
 $labels['firstpage'] = 'Прикажи први скуп';
 $labels['nextpage'] = 'Прикажи следећу страну';
@@ -242,13 +281,17 @@ $labels['lastpage'] = 'Прикажи последњи скуп';
 $labels['group'] = 'Група';
 $labels['groups'] = 'Групе';
 $labels['personaladrbook'] = 'Личне адресе';
+$labels['searchsave'] = 'Сачувај претрагу';
+$labels['searchdelete'] = 'Избриши претрагу';
 $labels['import'] = 'Увези';
 $labels['importcontacts'] = 'Увези контакте';
 $labels['importfromfile'] = 'Увези из датотеке:';
+$labels['importtarget'] = 'Додај нове контакте у адресар';
 $labels['importreplace'] = 'Измени цели адресар';
 $labels['importtext'] = 'Можете да сачувате контакте већ постојећег адресара.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> data format.';
 $labels['done'] = 'Готово';
 $labels['settingsfor'] = 'Подешавања за';
+$labels['about'] = 'Инфо';
 $labels['preferences'] = 'Подешавања';
 $labels['userpreferences'] = 'Општа подешавања';
 $labels['editpreferences'] = 'Измена општих подешавања';
@@ -259,6 +302,8 @@ $labels['newitem'] = 'Нова ставка';
 $labels['edititem'] = 'Измена ставке';
 $labels['preferhtml'] = 'Предност дај ХТМЛ формату';
 $labels['htmlmessage'] = 'ХТМЛ формат поруке';
+$labels['dateformat'] = 'Формат датума';
+$labels['timeformat'] = 'Формат времена';
 $labels['prettydate'] = 'Форматирани датум';
 $labels['setdefault'] = 'Подеси подразумевано';
 $labels['autodetect'] = 'Аутоматски';
@@ -278,16 +323,31 @@ $labels['uisettings'] = 'Кориснички интерфејс';
 $labels['serversettings'] = 'Поставке сервера';
 $labels['mailboxview'] = 'Преглед сандучета';
 $labels['askuser'] = 'питај ме';
+$labels['ignore'] = 'игнорисати';
+$labels['skipdeleted'] = 'Не приказуј избрисане поруке';
+$labels['deletealways'] = 'Ако слање поруке у отпад не успе, обришите их';
+$labels['always'] = 'увек';
+$labels['showinlineimages'] = 'Покажи приложене слике испод поруке';
 $labels['autosavedraft'] = 'Аутоматски чувај у Снимљене';
+$labels['keepalive'] = 'Проверити нове поруке на';
 $labels['never'] = 'никад';
 $labels['immediately'] = 'одмах';
 $labels['messagesdisplaying'] = 'прикажи поруке';
 $labels['messagescomposition'] = 'састави поруке';
 $labels['mimeparamfolding'] = 'имена прилога';
+$labels['2231folding'] = 'Full RFC 2231 (тхундербирд )';
+$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
+$labels['2047folding'] = 'Full RFC 2047 (други)';
+$labels['advancedoptions'] = 'Напредне опције';
+$labels['focusonnewmessage'] = 'Фокусирати прозор претраживача на новој поруци';
+$labels['checkallfolders'] = 'Проверите све фасцикле за нове поруке';
+$labels['displaynext'] = 'Након Избрисања/Премјештења поруке приказати следећу поруку';
+$labels['defaultfont'] = 'Подразумевани фонт за ХТМЛ поруке';
 $labels['mainoptions'] = 'Главне поставке';
+$labels['browseroptions'] = 'Опције претраживача';
 $labels['section'] = 'Секција';
+$labels['maintenance'] = 'Поправке';
 $labels['newmessage'] = 'Нова порука';
-$labels['listoptions'] = 'Опције листе';
 $labels['signatureoptions'] = 'Опције потписа';
 $labels['whenreplying'] = 'При одговору';
 $labels['replytopposting'] = 'Почни нову поруку преко оригинала';
@@ -305,8 +365,14 @@ $labels['afternseconds'] = 'након $n секунди';
 $labels['reqmdn'] = 'Увек затражи повратну скрипту';
 $labels['reqdsn'] = 'Увек затражи обавештење о статусу слања поруке';
 $labels['replysamefolder'] = 'Сачувај одговоре у фасциклу поруке на коју се одговара';
+$labels['defaultaddressbook'] = 'Додајте нове контакте у изабрани Адресар';
+$labels['listnamedisplay'] = 'Листи контакате као';
+$labels['spellcheckbeforesend'] = 'Проверите правопис пре слања поруке';
+$labels['spellcheckoptions'] = 'Опције  Провере  правописа';
+$labels['spellcheckignoresyms'] = 'игнориши  речи са симболима';
+$labels['spellcheckignorenums'] = 'игнориши  речи са бројевима';
+$labels['addtodict'] = 'Додај у речник';
 $labels['folder'] = 'Фасцикла';
-$labels['folders'] = 'Фасцикле';
 $labels['foldername'] = 'Име фасцикле';
 $labels['subscribed'] = 'Потписана';
 $labels['messagecount'] = 'Поруке';
@@ -321,9 +387,19 @@ $labels['location'] = 'Локација';
 $labels['info'] = 'Информација';
 $labels['getfoldersize'] = 'Кликните за приказ величине фасцикле';
 $labels['changesubscription'] = 'Кликните да бисте променили опис';
+$labels['foldertype'] = 'типа фасцикле';
+$labels['personalfolder'] = 'Приватна фасцикла';
+$labels['otherfolder'] = 'Фасцикла Других Корисникa';
+$labels['sharedfolder'] = 'Јавна фасцикла';
 $labels['sortby'] = 'Сортирај по';
 $labels['sortasc'] = 'Сортирај растуће';
 $labels['sortdesc'] = 'Сортирај опадајуће';
+$labels['undo'] = 'Унатраг';
+$labels['plugin'] = 'Додаци';
+$labels['version'] = 'Верзија';
+$labels['source'] = 'Извор';
+$labels['license'] = 'Лиценца';
+$labels['support'] = 'подршка';
 $labels['B'] = 'Б';
 $labels['KB'] = 'КБ';
 $labels['MB'] = 'МБ';
@@ -333,6 +409,7 @@ $labels['english'] = 'Енглески';
 $labels['westerneuropean'] = 'Западна Европа';
 $labels['easterneuropean'] = 'Источна Европа';
 $labels['southeasterneuropean'] = 'Јужно-источна Европа';
+$labels['baltic'] = 'Балтички';
 $labels['cyrillic'] = 'Ћирилица';
 $labels['arabic'] = 'Арапски';
 $labels['greek'] = 'Грчки';
@@ -340,9 +417,9 @@ $labels['hebrew'] = 'Хебрејски';
 $labels['turkish'] = 'Турски';
 $labels['nordic'] = 'Нордички';
 $labels['thai'] = 'Тајландски';
+$labels['celtic'] = 'келтски';
 $labels['vietnamese'] = 'Вијетнамски';
 $labels['japanese'] = 'Јапански';
 $labels['korean'] = 'Кореански';
 $labels['chinese'] = 'Кинески';
 
-?>
index 78fa677b4c4b92cdeabac7cd70234a1ae4b2ee76..b87bcb4ec051072e726df13d50208ac61333621b 100644 (file)
@@ -1,30 +1,27 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/sr_cyrillic/messages.inc                                     |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Branko Kokanovic <branko.kokanovic@gmail.com>                 |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 4627 2011-03-31 13:47:22Z yllar $
-
+ +-----------------------------------------------------------------------+
+ | localization/sr_CS/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $messages = array();
 $messages['loginfailed'] = 'Неуспешно пријављивање';
 $messages['cookiesdisabled'] = 'Ваш интернет прегледач не подржава колачиће';
 $messages['sessionerror'] = 'Сесија није валидна или је истекла';
-$messages['imaperror'] = 'Неуспешна конекција на IMAP сервер';
+$messages['storageerror'] = 'Неуспешна конекција на IMAP сервер';
 $messages['servererror'] = 'Грешка на серверу!';
 $messages['servererrormsg'] = 'Грешка на серверу: $msg';
-$messages['errorreadonly'] = 'Операција неуспела. Фасицкло је ';
+$messages['errorreadonly'] = 'Операција неуспела. Фасицкло је';
 $messages['errornoperm'] = 'Извршење операције није могуће. Одбијен захтев за дозволу..';
 $messages['invalidrequest'] = 'Погрешан захтев! Подаци нису сачувани.';
 $messages['nomessagesfound'] = 'Немате порука у сандучету';
@@ -71,7 +68,6 @@ $messages['nosubjectwarning'] = 'Поље \'Наслов\' је празно. Ж
 $messages['nobodywarning'] = 'Да ли желите да пошаљете поруку без текста?';
 $messages['notsentwarning'] = 'Порука није послата. Да ли желите да одбаците ову поруку?';
 $messages['noldapserver'] = 'Унесите LDAP сервер за претрагу';
-$messages['nocontactsreturned'] = 'Није пронађен ниједан контакт';
 $messages['nosearchname'] = 'Унесите име или е-мејл адресу';
 $messages['notuploadedwarning'] = 'Нису сви прилози отпремљени. Молимо сачекајте или откажите отпремање.';
 $messages['searchsuccessful'] = 'Број пронађених порука: $nr';
@@ -102,7 +98,7 @@ $messages['errorsendingreceipt'] = 'Неуспело слање обавеште
 $messages['nodeletelastidentity'] = 'Не можете обрисати овај идентитет, он Вам је последњи.';
 $messages['forbiddencharacter'] = 'Име фасцикле садржи недозвољено слово';
 $messages['selectimportfile'] = 'Молимо Вас да изаберете датотеку за отпремање';
-$messages['addresswriterror'] = 'У изабраном адресару нису дозвољене промене ';
+$messages['addresswriterror'] = 'У изабраном адресару нису дозвољене промене';
 $messages['contactaddedtogroup'] = 'Контакти успешно додати групи';
 $messages['contactremovedfromgroup'] = 'Контакти успешно одстрањени из групе';
 $messages['importwait'] = 'Увоз података, молимо сачекајте...';
@@ -118,7 +114,6 @@ $messages['smtpautherror'] = 'SMTP Error ($code): Аутентификација
 $messages['smtpfromerror'] = 'SMTP Error ($code): Неуспешно додавање пошиљаоца "$from" ($msg)';
 $messages['smtptoerror'] = 'SMTP Error ($code): Неуспешно додавање примаоца "$to" ($msg)';
 $messages['smtprecipientserror'] = 'SMTP Error ($code): Није могуће расчланити листу прималаца';
-$messages['smtpdsnerror'] = 'SMTP Error ($code): Нема подршке за обавештења о статусу испоруке';
 $messages['smtperror'] = 'SMTP Error ($code): $msg';
 $messages['emailformaterror'] = 'Имејл адреса није валидна: $email';
 $messages['toomanyrecipients'] = 'Превише прималаца. Смањите број прималаца на $max.';
@@ -140,4 +135,3 @@ $messages['folderupdated'] = 'фасцикла успешно ажурирана
 $messages['foldercreated'] = 'Фасцикла успешно креирана';
 $messages['invalidimageformat'] = 'Формат слике није валидан';
 
-?>
index 947a5aedc62e279b3ced65eaf66e0225b1d6d831..bb83922ccb936bea2a20f7a47baf5cf62eb71f1f 100644 (file)
@@ -1,22 +1,16 @@
-a<?php
+<?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/sv_SE/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Jonas Nasholm <rcm@bitfuse.net>                               |
-|         Fredrik Nygren <f.nygren@gmail.com>                           |
-|         Andreas Henriksson <andreas@fatal.se>                         |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 5290 2011-09-28 17:09:50Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/sv_SE/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Anders Wallenquist <anders.wallenquist@vertel.se>             |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
@@ -46,10 +40,13 @@ $labels['size'] = 'Storlek';
 $labels['priority'] = 'Prioritet';
 $labels['organization'] = 'Organisation';
 $labels['readstatus'] = 'Lässtatus';
+$labels['listoptions'] = 'Listalternativ...';
 $labels['mailboxlist'] = 'Kataloger';
+$labels['folders'] = 'Kataloger';
 $labels['messagesfromto'] = 'Meddelande $from till $to av $count';
 $labels['threadsfromto'] = 'Tråd $from till $to av $count';
 $labels['messagenrof'] = 'Meddelande $nr av $count';
+$labels['fromtoshort'] = '$from – $to av $count';
 $labels['copy'] = 'Kopiera';
 $labels['move'] = 'Flytta';
 $labels['moveto'] = 'Flytta till:';
@@ -57,51 +54,55 @@ $labels['download'] = 'Ladda ner';
 $labels['filename'] = 'Filnamn';
 $labels['filesize'] = 'Filstorlek';
 $labels['addtoaddressbook'] = 'Lägg till i adressbok';
-$labels['sun'] = 'Sön';
-$labels['mon'] = 'Mån';
-$labels['tue'] = 'Tis';
-$labels['wed'] = 'Ons';
-$labels['thu'] = 'Tor';
-$labels['fri'] = 'Fre';
-$labels['sat'] = 'Lör';
-$labels['sunday'] = 'Söndag';
-$labels['monday'] = 'Måndag';
-$labels['tuesday'] = 'Tisdag';
-$labels['wednesday'] = 'Onsdag';
-$labels['thursday'] = 'Torsdag';
-$labels['friday'] = 'Fredag';
-$labels['saturday'] = 'Lördag';
-$labels['jan'] = 'Jan';
-$labels['feb'] = 'Feb';
-$labels['mar'] = 'Mar';
-$labels['apr'] = 'Apr';
-$labels['may'] = 'Maj';
-$labels['jun'] = 'Jun';
-$labels['jul'] = 'Jul';
-$labels['aug'] = 'Aug';
-$labels['sep'] = 'Sep';
-$labels['oct'] = 'Okt';
-$labels['nov'] = 'Nov';
-$labels['dec'] = 'Dec';
-$labels['longjan'] = 'Januari';
-$labels['longfeb'] = 'Februari';
-$labels['longmar'] = 'Mars';
-$labels['longapr'] = 'April';
-$labels['longmay'] = 'Maj';
-$labels['longjun'] = 'Juni';
-$labels['longjul'] = 'Juli';
-$labels['longaug'] = 'Augusti';
-$labels['longsep'] = 'September';
-$labels['longoct'] = 'Oktober';
-$labels['longnov'] = 'November';
-$labels['longdec'] = 'December';
+$labels['sun'] = 'sön';
+$labels['mon'] = 'mån';
+$labels['tue'] = 'tis';
+$labels['wed'] = 'ons';
+$labels['thu'] = 'tor';
+$labels['fri'] = 'fre';
+$labels['sat'] = 'lör';
+$labels['sunday'] = 'söndag';
+$labels['monday'] = 'måndag';
+$labels['tuesday'] = 'tisdag';
+$labels['wednesday'] = 'onsdag';
+$labels['thursday'] = 'torsdag';
+$labels['friday'] = 'fredag';
+$labels['saturday'] = 'lördag';
+$labels['jan'] = 'jan';
+$labels['feb'] = 'feb';
+$labels['mar'] = 'mar';
+$labels['apr'] = 'apr';
+$labels['may'] = 'maj';
+$labels['longmay'] = 'maj';
+$labels['jun'] = 'jun';
+$labels['jul'] = 'jul';
+$labels['aug'] = 'aug';
+$labels['sep'] = 'sep';
+$labels['oct'] = 'okt';
+$labels['nov'] = 'nov';
+$labels['dec'] = 'dec';
+$labels['longjan'] = 'januari';
+$labels['longfeb'] = 'februari';
+$labels['longmar'] = 'mars';
+$labels['longapr'] = 'april';
+$labels['longjun'] = 'juni';
+$labels['longjul'] = 'juli';
+$labels['longaug'] = 'augusti';
+$labels['longsep'] = 'september';
+$labels['longoct'] = 'oktober';
+$labels['longnov'] = 'november';
+$labels['longdec'] = 'december';
 $labels['today'] = 'Idag';
+$labels['refresh'] = 'Uppdatera';
 $labels['checkmail'] = 'Hämta nya meddelanden';
+$labels['compose'] = 'Nytt meddelande';
 $labels['writenewmessage'] = 'Nytt meddelande';
+$labels['reply'] = 'Svara';
 $labels['replytomessage'] = 'Svara avsändaren';
 $labels['replytoallmessage'] = 'Svara avsändaren och alla mottagare';
 $labels['replyall'] = 'Svara alla';
 $labels['replylist'] = 'Svara lista';
+$labels['forward'] = 'Vidarebefordra';
 $labels['forwardinline'] = 'Vidarebefordra infogat';
 $labels['forwardattachment'] = 'Vidarebefordra som bilaga';
 $labels['forwardmessage'] = 'Vidarebefordra meddelande';
@@ -114,15 +115,20 @@ $labels['nextmessage'] = 'Visa nästa meddelande';
 $labels['lastmessage'] = 'Visa sista meddelandet';
 $labels['backtolist'] = 'Tillbaka till meddelandelistan';
 $labels['viewsource'] = 'Visa källkod';
+$labels['mark'] = 'Märk';
 $labels['markmessages'] = 'Märk meddelande';
 $labels['markread'] = 'Läst';
 $labels['markunread'] = 'Oläst';
 $labels['markflagged'] = 'Flaggat';
 $labels['markunflagged'] = 'Oflaggat';
 $labels['moreactions'] = 'Ytterligare hantering...';
+$labels['more'] = 'Fler';
+$labels['back'] = 'Tillbaka';
+$labels['options'] = 'Alternativ';
 $labels['select'] = 'Välj';
 $labels['all'] = 'Alla';
 $labels['none'] = 'Ingen';
+$labels['nonesort'] = 'Ingen';
 $labels['currpage'] = 'Sida';
 $labels['unread'] = 'Olästa';
 $labels['flagged'] = 'Flaggade';
@@ -142,7 +148,6 @@ $labels['expand_only_unread'] = 'Trådar med olästa meddelanden';
 $labels['fromto'] = 'Avsändare/Mottagare';
 $labels['flag'] = 'Flagga';
 $labels['attachment'] = 'Bilaga';
-$labels['nonesort'] = 'Ingen';
 $labels['sentdate'] = 'Datum skickat';
 $labels['arrival'] = 'Datum mottaget';
 $labels['asc'] = 'Stigande';
@@ -163,7 +168,6 @@ $labels['searchmod'] = 'Sökalternativ';
 $labels['msgtext'] = 'Hela meddelandet';
 $labels['openinextwin'] = 'Öppna i nytt fönster';
 $labels['emlsave'] = 'Spara (.eml)';
-$labels['compose'] = 'Nytt meddelande';
 $labels['editasnew'] = 'Redigera som nytt';
 $labels['savemessage'] = 'Spara utkast';
 $labels['sendmessage'] = 'Skicka meddelande';
@@ -175,9 +179,11 @@ $labels['dsn'] = 'Leveransstatusmeddelande';
 $labels['mailreplyintro'] = '$date skrev $sender:';
 $labels['originalmessage'] = 'Ursprungligt meddelande';
 $labels['editidents'] = 'Ändra identiteter';
+$labels['spellcheck'] = 'Rättstava';
 $labels['checkspelling'] = 'Kontrollera stavning';
 $labels['resumeediting'] = 'Återuppta redigering';
 $labels['revertto'] = 'Återgå till';
+$labels['attach'] = 'Bifoga';
 $labels['attachments'] = 'Bilagor';
 $labels['upload'] = 'Bifoga';
 $labels['uploadprogress'] = '$percent ($current av $total)';
@@ -191,6 +197,7 @@ $labels['highest'] = 'Högst';
 $labels['nosubject'] = '(inget ämne)';
 $labels['showimages'] = 'Visa bilder';
 $labels['alwaysshow'] = 'Visa alltid bilder från $sender';
+$labels['isdraft'] = 'Detta meddelande är ett utkast.';
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = 'Text';
 $labels['savesentmessagein'] = 'Spara kopia i';
@@ -232,14 +239,16 @@ $labels['male'] = 'Man';
 $labels['female'] = 'Kvinna';
 $labels['manager'] = 'Chef';
 $labels['assistant'] = 'Assistent';
+$labels['typeassistant'] = 'Assistent';
 $labels['spouse'] = 'Make/Maka';
 $labels['allfields'] = 'Alla fält';
 $labels['search'] = 'Sök';
-$labels['advsearch'] = 'Sök avancerat';
-$labels['other'] = 'Annan';
+$labels['advsearch'] = 'Avancerad sökning';
+$labels['advanced'] = 'Avancerad';
+$labels['other'] = 'Annat';
+$labels['typeother'] = 'Annat';
 $labels['typehome'] = 'Hem';
 $labels['typework'] = 'Arbete';
-$labels['typeother'] = 'Annat';
 $labels['typemobile'] = 'Mobil';
 $labels['typemain'] = 'Huvudsakligt';
 $labels['typehomefax'] = 'Fax hem';
@@ -247,7 +256,6 @@ $labels['typeworkfax'] = 'Fax arbete';
 $labels['typecar'] = 'Bil';
 $labels['typepager'] = 'Personsökare';
 $labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Assistent';
 $labels['typehomepage'] = 'Webbsida';
 $labels['typeblog'] = 'Blog';
 $labels['typeprofile'] = 'Profil';
@@ -264,6 +272,7 @@ $labels['delete'] = 'Ta bort';
 $labels['rename'] = 'Ändra namn';
 $labels['addphoto'] = 'Lägg till';
 $labels['replacephoto'] = 'Ersätt';
+$labels['uploadphoto'] = 'Ladda upp foto';
 $labels['newcontact'] = 'Ny kontakt';
 $labels['deletecontact'] = 'Ta bort vald kontakt';
 $labels['composeto'] = 'Nytt meddelande till vald kontakt';
@@ -274,6 +283,7 @@ $labels['exportvcards'] = 'Exportera kontakter';
 $labels['newcontactgroup'] = 'Ny kontaktgrupp';
 $labels['grouprename'] = 'Ändra gruppnamn';
 $labels['groupdelete'] = 'Ta bort grupp';
+$labels['groupremoveselected'] = 'Ta bort markerade kontakter från gruppen';
 $labels['previouspage'] = 'Visa föregående sida';
 $labels['firstpage'] = 'Visa första sidan';
 $labels['nextpage'] = 'Visa nästa sida';
@@ -291,6 +301,7 @@ $labels['importreplace'] = 'Ersätt samtliga kontakter i adressboken';
 $labels['importtext'] = 'Kontakter kan importeras från en befintlig adressbok.<br/>För närvarande stöds import av adresser i <a href="http://en.wikipedia.org/wiki/VCard">vCard</a>-format.';
 $labels['done'] = 'Klart';
 $labels['settingsfor'] = 'Inställningar för';
+$labels['about'] = 'Om';
 $labels['preferences'] = 'Inställningar';
 $labels['userpreferences'] = 'Användarinställningar';
 $labels['editpreferences'] = 'Ändra användarinställningar';
@@ -332,6 +343,7 @@ $labels['readwhendeleted'] = 'Märk meddelande som läst vid borttagning';
 $labels['flagfordeletion'] = 'Flagga meddelande för borttagning istället för att ta bort direkt';
 $labels['skipdeleted'] = 'Visa inte borttagna meddelanden';
 $labels['deletealways'] = 'Ta bort meddelande om flyttning till Papperskorg misslyckas';
+$labels['deletejunk'] = 'Radera automatiskt meddelanden i skräpmappen';
 $labels['showremoteimages'] = 'Visa externt länkade bilder i meddelande';
 $labels['fromknownsenders'] = 'Från kända avsändare';
 $labels['always'] = 'Alltid';
@@ -352,13 +364,14 @@ $labels['advancedoptions'] = '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';
+$labels['defaultfont'] = 'Standardtypsnitt i HTML-meddelande';
 $labels['mainoptions'] = 'Huvudalternativ';
+$labels['browseroptions'] = 'Webbläsaralternativ';
 $labels['section'] = 'Avdelning';
 $labels['maintenance'] = 'Underhåll';
 $labels['newmessage'] = 'Nytt meddelande';
-$labels['listoptions'] = 'Listalternativ';
 $labels['signatureoptions'] = 'Signaturalternativ';
-$labels['whenreplying'] = 'Vid svar';
+$labels['whenreplying'] = 'Vid svar fortsätt skriv';
 $labels['replytopposting'] = 'Ovanför befintligt meddelande';
 $labels['replybottomposting'] = 'Nedanför befintligt meddelande';
 $labels['replyremovesignature'] = 'Ta bort befintlig signatur från meddelandet vid svar';
@@ -375,14 +388,16 @@ $labels['reqmdn'] = 'Begär alltid mottagarkvitto';
 $labels['reqdsn'] = 'Begär alltid leveransstatusmeddelande';
 $labels['replysamefolder'] = 'Placera svar i samma katalog som besvarat meddelande';
 $labels['defaultaddressbook'] = 'Lägg till nya kontakter i vald adressbok';
+$labels['autocompletesingle'] = 'Hoppa över alternativa adresser vid automatisk komplettering';
+$labels['listnamedisplay'] = 'Lista kontakter som';
 $labels['spellcheckbeforesend'] = 'Kontrollera stavning innan meddelanden skickas';
 $labels['spellcheckoptions'] = 'Rättstavningsalternativ';
 $labels['spellcheckignoresyms'] = 'Ignorera ord med symboler';
 $labels['spellcheckignorenums'] = 'Ignorera ord med siffror';
 $labels['spellcheckignorecaps'] = 'Ignorera ord med enbart stora bokstäver';
 $labels['addtodict'] = 'Lägg till i ordlista';
+$labels['mailtoprotohandler'] = 'Ange program för hantering av mailto-länkar';
 $labels['folder'] = 'Katalog';
-$labels['folders'] = 'Kataloger';
 $labels['foldername'] = 'Katalognamn';
 $labels['subscribed'] = 'Prenumererad';
 $labels['messagecount'] = 'Meddelanden';
@@ -395,7 +410,7 @@ $labels['folderproperties'] = 'Katalogegenskaper';
 $labels['parentfolder'] = 'Överliggande katalog';
 $labels['location'] = 'Plats';
 $labels['info'] = 'Information';
-$labels['getfoldersize'] = 'Klicka för katalogstorlek';
+$labels['getfoldersize'] = 'Beräkna katalogstorlek';
 $labels['changesubscription'] = 'Klicka för att ändra prenumeration';
 $labels['foldertype'] = 'Katalogtyp';
 $labels['personalfolder'] = 'Privat katalog';
@@ -405,6 +420,11 @@ $labels['sortby'] = 'Sortera på';
 $labels['sortasc'] = 'Sortera stigande';
 $labels['sortdesc'] = 'Sortera fallande';
 $labels['undo'] = 'Ångra';
+$labels['plugin'] = 'Plugin';
+$labels['version'] = 'Version';
+$labels['source'] = 'Källkod';
+$labels['license'] = 'Licens';
+$labels['support'] = 'Hjälp';
 $labels['B'] = 'B';
 $labels['KB'] = 'KB';
 $labels['MB'] = 'MB';
@@ -428,4 +448,3 @@ $labels['japanese'] = 'Japansk';
 $labels['korean'] = 'Koreansk';
 $labels['chinese'] = 'Kinesisk';
 
-?>
index 5af843f1ad61a9c74bf1c8977bc057f53d39afb2..3ef43b52723b9080f085512d875add1568a495d3 100644 (file)
@@ -1,32 +1,28 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/sv_SE/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Jonas Nasholm <rcm@bitfuse.net>                               |
-|         Fredrik Nygren <f.nygren@gmail.com>                           |
-|         Andreas Henriksson <andreas@fatal.se>                         |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 5290 2011-09-28 17:09:50Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/sv_SE/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Jonas Nasholm                                                 |
+ +-----------------------------------------------------------------------+
 */
 
 $messages = array();
+$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['imaperror'] = 'Anslutning till IMAP-servern misslyckades';
+$messages['storageerror'] = 'Anslutning till IMAP-servern misslyckades';
 $messages['servererror'] = 'Serverfel!';
 $messages['servererrormsg'] = 'Serverfel: $msg';
 $messages['dberror'] = 'Databasfel!';
+$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';
 $messages['invalidrequest'] = 'Ogiltig begäran! Informationen sparades inte.';
@@ -111,6 +107,7 @@ $messages['addingmember'] = 'Lägger till kontakter i gruppen...';
 $messages['removingmember'] = 'Tar bort kontakter från gruppen...';
 $messages['receiptsent'] = 'Mottagarkvitto har skickats';
 $messages['errorsendingreceipt'] = 'Mottagarkvitto kunde inte skickas';
+$messages['deleteidentityconfirm'] = 'Vill du verkligen ta bort denna identitet?';
 $messages['nodeletelastidentity'] = 'Du kan inte ta bort identiteten, den är din sista.';
 $messages['forbiddencharacter'] = 'Katalognamnet innehåller otillåtna tecken';
 $messages['selectimportfile'] = 'Välj en fil att ladda upp';
@@ -127,10 +124,9 @@ $messages['editorwarning'] = 'Genom att växla till text-läge går formateringe
 $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';
-$messages['smtpfromerror'] = 'SMTP-fel ($code): Kan inte sätta avsändaradress till "$from"';
-$messages['smtptoerror'] = 'SMTP-fel ($code): Kan inte lägga till mottagaradress "$to"';
+$messages['smtpfromerror'] = 'SMTP-fel ($code): Kan inte sätta avsändaradress till "$from';
+$messages['smtptoerror'] = 'SMTP-fel ($code): Kan inte lägga till mottagaradress "$to';
 $messages['smtprecipientserror'] = 'SMTP-fel: Felaktigt formaterad lista med mottagaradresser';
-$messages['smtpdsnerror'] = 'SMTP-fel: Inget stöd för leveransstatusmeddelande';
 $messages['smtperror'] = 'SMTP-fel: $msg';
 $messages['emailformaterror'] = 'Felaktig adress: $email';
 $messages['toomanyrecipients'] = 'Förmånga mottagare. Minska antalet till högst $max.';
@@ -160,5 +156,5 @@ $messages['foldercreated'] = 'Katalog skapad';
 $messages['invalidimageformat'] = 'Ogiltigt bildfilsformat';
 $messages['mispellingsfound'] = 'Stavfel hittades i meddelandet';
 $messages['parentnotwritable'] = 'Katalogen kunde inte skapas eller flyttas. Åtkomsträttighet saknas.';
+$messages['messagetoobig'] = 'Denna del av meddelandet är alltför stor för att hantera.';
 
-?>
index eacd89e9f219891afe48eddcb7d66269cf334c2d..79fb1a0ca9d51fdad2f804456ceb8a21c3058067 100644 (file)
@@ -1,17 +1,17 @@
 <?php
 
 /*
-+-----------------------------------------------------------------------+
-| language/_NEW_/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2008-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author:                                                               |
-+-----------------------------------------------------------------------+
-
+ +-----------------------------------------------------------------------+
+ | localization/ta_IN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $labels = array();
@@ -39,17 +39,15 @@ $labels['date'] = 'தேதி';
 $labels['size'] = 'அளவு';
 $labels['priority'] = 'முக்கியத்துவம்';
 $labels['organization'] = 'நிறுவனம்';
-$labels['reply-to'] = 'பதிலளி';
-$labels['mailboxlist'] = 'அடைவு';
+$labels['mailboxlist'] = 'அடைவுகள்';
+$labels['folders'] = 'அடைவுகள்';
 $labels['messagesfromto'] = 'செய்திகள் $countல் $from லிருந்து $to வரை';
 $labels['messagenrof'] = '$countல் $nr வது செய்தி';
+$labels['copy'] = 'நகல்';
 $labels['moveto'] = 'இதற்கு அனுப்பு...';
 $labels['download'] = 'பதிவிறக்கு';
 $labels['filename'] = 'கோப்பு பெயர்';
 $labels['filesize'] = 'கோப்பு அளவு';
-$labels['preferhtml'] = 'HTML காட்டு';
-$labels['htmlmessage'] = 'HTML செய்தி';
-$labels['prettydate'] = 'நல்ல தேதி';
 $labels['addtoaddressbook'] = 'தொடர்புகளுக்கு சேர்க்கவும்';
 $labels['sun'] = 'ஞாயிறு';
 $labels['mon'] = 'திங்கள்';
@@ -70,6 +68,7 @@ $labels['feb'] = 'பிப்ரவரி';
 $labels['mar'] = 'மார்ச்';
 $labels['apr'] = 'ஏப்ரல்';
 $labels['may'] = 'மே';
+$labels['longmay'] = 'மே';
 $labels['jun'] = 'சூன்';
 $labels['jul'] = 'சூலை';
 $labels['aug'] = 'ஆகஸ்ட்';
@@ -81,7 +80,6 @@ $labels['longjan'] = 'சனவரி';
 $labels['longfeb'] = 'பிப்ரவரி';
 $labels['longmar'] = 'மார்ச்';
 $labels['longapr'] = 'ஏப்ரல்';
-$labels['longmay'] = 'மே';
 $labels['longjun'] = 'சூன்';
 $labels['longjul'] = 'சூலை';
 $labels['longaug'] = 'ஆகஸ்ட்';
@@ -91,6 +89,7 @@ $labels['longnov'] = 'நவம்பர்';
 $labels['longdec'] = 'டிசம்பர்';
 $labels['today'] = 'இன்று';
 $labels['checkmail'] = 'புது அஞ்சல்களை பார்க்கவும்';
+$labels['compose'] = 'அஞ்சல் எழுது';
 $labels['writenewmessage'] = 'புது அஞ்சல் எழுதவும்';
 $labels['replytomessage'] = 'அனுப்புனருக்கு பதிலளி';
 $labels['replytoallmessage'] = 'அனுப்புனர் மற்றும் எல்லா பெறுனர்களுக்கும் பதிலளி';
@@ -99,13 +98,9 @@ $labels['deletemessage'] = 'செய்தியை நீக்கு';
 $labels['movemessagetotrash'] = 'செய்தியை குப்பைக்கு நகர்த்து';
 $labels['printmessage'] = 'செய்தியை அச்சிடவும்';
 $labels['previousmessage'] = 'முந்திய செய்தியை காட்டவும்';
-$labels['previousmessages'] = 'முந்திய செய்திகள் குழுவை காட்டவும்';
 $labels['firstmessage'] = 'முதல் செய்தியை காட்டவும்';
-$labels['firstmessages'] = 'முதல் செய்திகள் குழுவை காட்டவும்';
 $labels['nextmessage'] = 'அடுத்த செய்தியை காட்டு';
-$labels['nextmessages'] = 'அடுத்த செய்திகள் குழுவை காட்டு';
 $labels['lastmessage'] = 'கடைசி செய்தியை காட்டு';
-$labels['lastmessages'] = 'கடைசி செய்திகள் குழுவை காட்டு';
 $labels['backtolist'] = 'செய்தி பட்டியலுக்கு செல்லவும்';
 $labels['viewsource'] = 'மூலத்தை காட்டு';
 $labels['markmessages'] = 'செய்திகளை குறியிடு';
@@ -113,10 +108,10 @@ $labels['markread'] = 'படித்ததாக குறியிடு';
 $labels['markunread'] = 'படிக்காததாக குறியிடு';
 $labels['markflagged'] = 'நட்சத்திரமிட்டதாக குறியிடு';
 $labels['markunflagged'] = 'நட்சத்திரமிடாததாக குறியிடு';
-$labels['messageactions'] = 'மேலும் செயல்கள்';
 $labels['select'] = 'தேர்ந்தெடு';
 $labels['all'] = 'எல்லாம்';
 $labels['none'] = 'எதுவுமில்லை';
+$labels['nonesort'] = 'எதுவுமில்லை';
 $labels['unread'] = 'படிக்காதது';
 $labels['flagged'] = 'நட்சத்திரமிட்டது';
 $labels['unanswered'] = 'பதிலளிக்காதது';
@@ -125,7 +120,6 @@ $labels['invert'] = 'தலைகீழ்';
 $labels['filter'] = 'வடிப்பான்';
 $labels['compact'] = 'குறுகிய';
 $labels['empty'] = 'காலி';
-$labels['purge'] = 'நீக்கு';
 $labels['quota'] = 'பயன்பாட்டு அளவு';
 $labels['unknown'] = 'தெரியாத';
 $labels['unlimited'] = 'அளவில்லா';
@@ -135,7 +129,6 @@ $labels['searchmod'] = 'மாற்றிகளை தேடு';
 $labels['msgtext'] = 'முழு செய்தி';
 $labels['openinextwin'] = 'புது சாளரத்தில் திற';
 $labels['emlsave'] = 'பதிவிறக்கு (.eml)';
-$labels['compose'] = 'அஞ்சல் எழுது';
 $labels['editasnew'] = 'புதியதாக திருத்து';
 $labels['savemessage'] = 'இந்த வரைவை சேமி';
 $labels['sendmessage'] = 'இப்போது அனுப்பு';
@@ -207,6 +200,9 @@ $labels['manageidentities'] = 'இந்த கணக்கிற்கான 
 $labels['newidentity'] = 'புது அடையாளம்';
 $labels['newitem'] = 'புது உருப்படி';
 $labels['edititem'] = 'உருப்படியை திருத்து';
+$labels['preferhtml'] = 'HTML காட்டு';
+$labels['htmlmessage'] = 'HTML செய்தி';
+$labels['prettydate'] = 'நல்ல தேதி';
 $labels['setdefault'] = 'இயல்பை அமை';
 $labels['autodetect'] = 'தானியங்கி';
 $labels['language'] = 'மொழி';
@@ -252,7 +248,6 @@ $labels['mainoptions'] = 'முக்கிய விருப்பங்க
 $labels['section'] = 'பிரிவு';
 $labels['maintenance'] = 'பராமரிப்பு';
 $labels['newmessage'] = 'புது செய்தி';
-$labels['listoptions'] = 'விருப்பங்களை பட்டியலிடு';
 $labels['signatureoptions'] = 'கையொப்ப விருப்பங்கள்';
 $labels['whenreplying'] = 'பதிலளிக்கும் போது';
 $labels['replytopposting'] = 'புது செய்தியை அசலின் மேல் துவக்கு';
@@ -266,7 +261,6 @@ $labels['belowquote'] = 'மேற்கோளுக்கு கீழே';
 $labels['abovequote'] = 'மேற்கோளுக்கு மேலே';
 $labels['insertsignature'] = 'கையோப்பமிடு';
 $labels['folder'] = 'அடைவு';
-$labels['folders'] = 'அடைவுகள்';
 $labels['foldername'] = 'அடைவு பெயர்';
 $labels['subscribed'] = 'சந்தா';
 $labels['messagecount'] = 'செய்திகள்';
@@ -282,4 +276,3 @@ $labels['KB'] = 'KB';
 $labels['MB'] = 'MB';
 $labels['GB'] = 'GB';
 
-?>
index 0b92be639e5525aae459465e571e3a0f07f1f6a5..7322542c246e31f478251a3efb2c2700062b2972 100644 (file)
@@ -1,24 +1,24 @@
 <?php
 
 /*
-+-----------------------------------------------------------------------+
-| language/_NEW_/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2008-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author:                                                               |
-+-----------------------------------------------------------------------+
-
+ +-----------------------------------------------------------------------+
+ | localization/ta_IN/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $messages = array();
 $messages['loginfailed'] = 'நுழைவு தோல்வியடைந்தது';
 $messages['cookiesdisabled'] = 'உங்கள் உலாவி நினைவிகளை அனுமதிப்பதில்லை';
 $messages['sessionerror'] = 'உங்கள் அமர்வு செல்லாது அல்லது முடிவுற்றது';
-$messages['imaperror'] = 'IMAP சேவையகத்திற்கான இணைப்பு தோல்வியடைந்தது';
+$messages['storageerror'] = 'IMAP சேவையகத்திற்கான இணைப்பு தோல்வியடைந்தது';
 $messages['servererror'] = 'சேவையக பிழை!';
 $messages['invalidrequest'] = 'செல்லாத வேண்டுகோள்! எந்த தரவும் சேமிக்கப்படவில்லை.';
 $messages['nomessagesfound'] = 'இந்த தபால் பெட்டியில் எந்த தரவும் சேமிக்கப்படவில்லை';
@@ -62,7 +62,6 @@ $messages['nosubjectwarning'] = 'தலைப்பு காலியாக உ
 $messages['nobodywarning'] = 'உரையில்லாமல் இந்த செய்தியை அனுப்ப வேண்டுமா?';
 $messages['notsentwarning'] = 'செய்தி அனுப்பப்படவில்லை. உங்கள் செய்தியை நிராகரிக்க விரும்புகிறீர்களா?';
 $messages['noldapserver'] = 'தயவு செய்து தேடுவதற்கு Idap சேவையகத்தை தேர்ந்தெடுங்கள்';
-$messages['nocontactsreturned'] = 'எந்த தொடர்புகளும் காணப்படவில்லை';
 $messages['nosearchname'] = 'தயவு செய்து தொடர்பின் பெயரோ மின்னஞ்சல் முகவரியோ எழுதுங்கள்';
 $messages['notuploadedwarning'] = 'எல்லா இணைப்புகளும் ஏற்றப்படவில்லை. தயவு செய்து காத்திருங்கள் அல்லது ஏற்றத்தை ரத்து செய்யுங்கள்.';
 $messages['searchsuccessful'] = '$nr செய்திகள் கண்டுபிடிக்கப்பட்டது';
@@ -100,6 +99,5 @@ $messages['smtpfromerror'] = 'SMTP பிழை ($code): அனுப்பு
 $messages['smtptoerror'] = 'SMTP பிழை ($code): "$to" பெறுனரை சேர்பதில் தோல்வி';
 $messages['smtprecipientserror'] = 'SMTP பிழை : பெறுனர் பட்டியலை பிரிக்க முடியவில்லை';
 $messages['smtperror'] = 'SMTP பிழை: $msg';
-$messages['emailformaterror'] = 'தவறான மின்னஞ்சல் முகவரி: $email     ';
+$messages['emailformaterror'] = 'தவறான மின்னஞ்சல் முகவரி: $email';
 
-?>
index 041805faaeecf7750aeba636f962ad8bd279f46a..63a1fc481eaf5e16cd97cd1feb2d5bbcedc144ba 100644 (file)
@@ -1,20 +1,17 @@
 <?php
 
 /*
-
  +-----------------------------------------------------------------------+
- | language/th_TH/labels.inc                                             |
+ | localization/th_TH/labels.inc                                         |
  |                                                                       |
  | Language file of the Roundcube Webmail client                         |
- | Copyright (C) 2005-2010, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Wiraphan Treeratphan <webmaster@modoeye.com>                  |
+ | Author: Thomas <Unknown>                                              |
  +-----------------------------------------------------------------------+
-
- @version $Id: labels.inc 4410 2011-01-12 18:25:02Z thomasb $
-
+ @version $Id$
 */
 
 $labels = array();
@@ -32,7 +29,6 @@ $labels['drafts'] = 'กล่องจดหมายร่าง';
 $labels['sent'] = 'กล่องขาออก';
 $labels['trash'] = 'ถังขยะ';
 $labels['junk'] = 'กล่องจดหมายขยะ';
-$labels['spam'] = 'กล่องจดหมายขยะ';
 $labels['subject'] = 'หัวจดหมาย';
 $labels['from'] = 'ผู้ส่ง';
 $labels['to'] = 'ผู้รับ';
@@ -43,17 +39,15 @@ $labels['date'] = 'วันที่';
 $labels['size'] = 'ขนาด';
 $labels['priority'] = 'ระดับความสำคัญ';
 $labels['organization'] = 'องค์กร';
-$labels['reply-to'] = 'ตอบกลับ';
 $labels['mailboxlist'] = 'กล่องจดหมาย';
+$labels['folders'] = 'กล่องจดหมาย';
 $labels['messagesfromto'] = 'จดหมายจาก $from ถึง $to จำนวน $count ฉบับ';
 $labels['messagenrof'] = 'จดหมายฉบับที่ $nr จาก $count ฉบับ';
+$labels['copy'] = 'คัดลอก';
 $labels['moveto'] = 'ย้ายไป...';
 $labels['download'] = 'ดาวน์โหลด';
 $labels['filename'] = 'ชื่อไฟล์';
 $labels['filesize'] = 'ขนาดไฟล์';
-$labels['preferhtml'] = 'อ่านแบบ HTML';
-$labels['htmlmessage'] = 'จดหมาย HTML';
-$labels['prettydate'] = 'แสดงวันที่แบบย่อ';
 $labels['addtoaddressbook'] = 'บันทึกในสมุดรายชื่อ';
 $labels['sun'] = 'อ';
 $labels['mon'] = 'จ';
@@ -71,6 +65,7 @@ $labels['friday'] = 'วันศุกร์';
 $labels['saturday'] = 'วันเสาร์';
 $labels['today'] = 'วันนี้';
 $labels['checkmail'] = 'ตรวจสอบจดหมายใหม่';
+$labels['compose'] = 'เขียนจดหมายใหม่';
 $labels['writenewmessage'] = 'สร้างจดหมายใหม่';
 $labels['replytomessage'] = 'ตอบกลับจดหมาย';
 $labels['replytoallmessage'] = 'ตอบกลับถึงทุกคนในจดหมาย';
@@ -78,26 +73,23 @@ $labels['forwardmessage'] = 'ส่งต่อจดหมาย';
 $labels['deletemessage'] = 'ลบจดหมาย';
 $labels['printmessage'] = 'พิมพ์จดหมาย';
 $labels['previousmessage'] = 'แสดงจดหมายฉบับที่แล้ว';
-$labels['previousmessages'] = 'จดหมายฉบับก่อนหน้า';
 $labels['firstmessage'] = 'แสดงจดหมายฉบับแรก';
 $labels['nextmessage'] = 'แสดงจดหมายฉบับต่อไป';
-$labels['nextmessages'] = 'จดหมายฉบับถัดไป';
 $labels['lastmessage'] = 'แสดงจดหมายฉบับล่าสุด';
 $labels['backtolist'] = 'กลับไปยังรายการจดหมาย';
 $labels['viewsource'] = 'แสดง source';
 $labels['select'] = 'เลือก';
 $labels['all'] = 'ทั้งหมด';
 $labels['none'] = 'ไม่เลือก';
+$labels['nonesort'] = 'ไม่เลือก';
 $labels['unread'] = 'จดหมายที่ไม่ได้อ่าน';
 $labels['compact'] = 'แบบย่อ';
 $labels['empty'] = 'ว่างเปล่า';
-$labels['purge'] = 'ลบทั้งหมด';
 $labels['quota'] = 'พื้นที่ใช้งาน';
 $labels['unknown'] = 'ไม่ทราบ';
 $labels['unlimited'] = 'ไม่จำกัด';
 $labels['quicksearch'] = 'ค้นหาแบบด่วน';
 $labels['resetsearch'] = 'ล้างการค้นหา';
-$labels['compose'] = 'เขียนจดหมายใหม่';
 $labels['savemessage'] = 'บันทึกฉบับร่าง';
 $labels['sendmessage'] = 'ส่งจดหมาย';
 $labels['addattachment'] = 'แนบไฟล์';
@@ -145,6 +137,9 @@ $labels['manageidentities'] = 'จัดการชื่อแสดงตั
 $labels['newidentity'] = 'ชื่อแสดงตัวใหม่';
 $labels['newitem'] = 'New item';
 $labels['edititem'] = 'Edit item';
+$labels['preferhtml'] = 'อ่านแบบ HTML';
+$labels['htmlmessage'] = 'จดหมาย HTML';
+$labels['prettydate'] = 'แสดงวันที่แบบย่อ';
 $labels['setdefault'] = 'ตั้งเป็นค่าใช้งาน';
 $labels['language'] = 'ภาษา';
 $labels['timezone'] = 'เขตเวลา';
@@ -157,7 +152,6 @@ $labels['previewpane'] = 'แสดงหน้าต่างตัวอย่
 $labels['autosavedraft'] = 'บันทึกเป็นจดหมายร่างอัตโนมัติ';
 $labels['never'] = 'ไม่ใช้';
 $labels['folder'] = 'กล่องจดหมาย';
-$labels['folders'] = 'กล่องจดหมาย';
 $labels['foldername'] = 'ชื่อกล่องจดหมาย';
 $labels['subscribed'] = 'ลงชื่อ';
 $labels['create'] = 'สร้าง';
@@ -167,4 +161,3 @@ $labels['sortby'] = 'เรียงตาม';
 $labels['sortasc'] = 'เรียงจากหน้าไปหลัง';
 $labels['sortdesc'] = 'เรียงจากหลังไปหน้า';
 
-?>
\ No newline at end of file
index d97d463f068f5e8065b699683caa012ba1d62c8c..5673b031bfbe6513fcdff36eb45384655e40ce1f 100644 (file)
@@ -1,27 +1,24 @@
 <?php
 
 /*
-
  +-----------------------------------------------------------------------+
- | language/th_TH/messages.inc                                           |
+ | localization/th_TH/messages.inc                                       |
  |                                                                       |
  | Language file of the Roundcube Webmail client                         |
- | Copyright (C) 2005-2010, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Wiraphan Treeratphan <webmaster@modoeye.com>                  |
+ | Author: Thomas <Unknown>                                              |
  +-----------------------------------------------------------------------+
-
- @version $Id: messages.inc 4410 2011-01-12 18:25:02Z thomasb $
-
+ @version $Id$
 */
 
 $messages = array();
-$messages['loginfailed']  = 'ไม่สามารถเข้าสู่ระบบได้';
+$messages['loginfailed'] = 'ไม่สามารถเข้าสู่ระบบได้';
 $messages['cookiesdisabled'] = 'Browser ของคุณไม่ได้เปิดการใช้งาน Cookie ไว้';
 $messages['sessionerror'] = 'Your session is invalid or expired';
-$messages['imaperror'] = 'ไม่สามารถติดต่อ IMAP Server ได้';
+$messages['storageerror'] = 'ไม่สามารถติดต่อ IMAP Server ได้';
 $messages['nomessagesfound'] = 'ไม่มีจดหมายในกล่องจดหมายนี้';
 $messages['loggedout'] = 'ทำการออกจากระบบเรียบร้อย';
 $messages['mailboxempty'] = 'กล่องจดหมายนี้ว่างเปล่า';
@@ -39,25 +36,23 @@ $messages['blockedimages'] = 'เพื่อปกป้องความส
 $messages['encryptedmessage'] = 'จดหมายถูกเข้ารหัสไม่สามารถแสดงผลได้';
 $messages['nocontactsfound'] = 'ไม่พบรายชื่อที่ค้นหา';
 $messages['contactnotfound'] = 'ไม่พบรายชื่อที่ค้นหา';
-
 $messages['sendingfailed'] = 'การส่งจดหมายล้มเหลว';
 $messages['errorsaving'] = 'เกิดข้อผิดพลาดระหว่างการบันทึก';
 $messages['errormoving'] = 'ไม่สามารถย้ายจดหมายได้';
 $messages['errordeleting'] = 'ไม่สามารถลบจดหมายได้';
-$messages['deletecontactconfirm']  = 'คุณมั่นใจที่ต้องการลบรายชื่อที่เลือกใช่หรือไม่?';
+$messages['deletecontactconfirm'] = 'คุณมั่นใจที่ต้องการลบรายชื่อที่เลือกใช่หรือไม่?';
 $messages['deletemessagesconfirm'] = 'คุณมั่นใจที่ต้องการลบจดหมายที่เลือกใช่หรือไม่?';
-$messages['deletefolderconfirm']  = 'คุณมั่นใจที่ต้องการลบแฟ้มนี้หรือไม่?';
-$messages['purgefolderconfirm']  = 'คุณมั่นใจที่ต้องการลบจดหมายทั้งหมดในแฟ้มนี้ใช่หรือไม่?';
+$messages['deletefolderconfirm'] = 'คุณมั่นใจที่ต้องการลบแฟ้มนี้หรือไม่?';
+$messages['purgefolderconfirm'] = 'คุณมั่นใจที่ต้องการลบจดหมายทั้งหมดในแฟ้มนี้ใช่หรือไม่?';
 $messages['formincomplete'] = 'ฟอร์มยังไม่ครบถ้วนสมบูรณ์';
 $messages['noemailwarning'] = 'โปรดใส่อีเมล์ให้ถูกต้อง';
-$messages['nonamewarning']  = 'โปรดใส่ชื่อ';
+$messages['nonamewarning'] = 'โปรดใส่ชื่อ';
 $messages['nopagesizewarning'] = 'โปรดใส่จำนวนหน้า';
 $messages['norecipientwarning'] = 'โปรดใส่ผู้รับอย่างน้อย 1 ชื่อ';
-$messages['nosubjectwarning']  = 'หัวจดหมายว่างเปล่า คุณต้องการใส่หัวจดหมายเดี๋ยวนี้หรือไม่?';
+$messages['nosubjectwarning'] = 'หัวจดหมายว่างเปล่า คุณต้องการใส่หัวจดหมายเดี๋ยวนี้หรือไม่?';
 $messages['nobodywarning'] = 'คุณต้องการส่งจดหมายโดยไม่มีข้อความใช่หรือไม่?';
 $messages['notsentwarning'] = 'จดหมายยังไม่ถูกส่ง คุณต้องการยกเลิกหรือไม่?';
 $messages['noldapserver'] = 'โปรดเลือก LDAP Server เพื่อค้นหา';
-$messages['nocontactsreturned'] = 'ไม่พบรายชื่อ';
 $messages['nosearchname'] = 'โปรดใสชื่อหรืออีเมล์';
 $messages['searchsuccessful'] = 'พบจดหมายจำนวน $nr ฉบับ';
 $messages['searchnomatch'] = 'การค้นหาไม่พบ';
@@ -65,15 +60,13 @@ $messages['searching'] = 'กำลังค้นหา...';
 $messages['checking'] = 'กำลังตรวจสอบ...';
 $messages['nospellerrors'] = 'ไม่พบคำที่สะกดผิด';
 $messages['folderdeleted'] = 'ลบแฟ้มเสร็จสมบูรณ์';
-$messages['deletedsuccessfully'] = "ลบเสร็จสมบูรณ์";
+$messages['deletedsuccessfully'] = 'ลบเสร็จสมบูรณ์';
 $messages['converting'] = 'นำเอาหารจัดรูปแบบในจดหมายออก...';
 $messages['messageopenerror'] = 'ไม่สามารถอ่านจดหมายจาก Server ได้';
 $messages['fileuploaderror'] = 'การอัพโหลดล้มเหลว';
 $messages['filesizeerror'] = 'ไฟล์มีขนาดใหญ่เกิน $size';
-
 $messages['copysuccess'] = 'คัดลอกจดหมายจำนวน $nr ฉบับเรียบร้อย';
 $messages['copyerror'] = 'ไม่สามารถคัดลอกได้';
 $messages['sourceisreadonly'] = 'จดหมายนี้เป็นแบบอ่านอย่างเดียว';
 $messages['errorsavingcontact'] = 'ไม่สามารถบันทึกรายชื่อได้';
 
-?>
\ No newline at end of file
index 9409f953e4c54285661b810b7b55ee1a623a7d4e..61369fb751561a319ca184dfa6a8a85a60929714 100644 (file)
@@ -1,27 +1,22 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/tr_TR/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2011, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Hasan Cansız <hasancansiz@yahoo.com>                          |
-| Author: Gökdeniz Karadağ <gokdenizk@gmail.com>                        |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 5290 2011-09-28 17:09:50Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/tr_TR/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: ismail yenigul                                                |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
 $labels['welcome'] = '$product, Hoş Geldiniz';
 $labels['username'] = 'Kullanıcı Adı';
-$labels['password'] = 'Şifre';
+$labels['password'] = 'Parola';
 $labels['server'] = 'Sunucu';
 $labels['login'] = 'Oturum Aç';
 $labels['logout'] = 'Oturumu Kapat';
@@ -44,14 +39,17 @@ $labels['date'] = 'Tarih';
 $labels['size'] = 'Boyut';
 $labels['priority'] = 'Öncelik';
 $labels['organization'] = 'Kuruluş';
-$labels['readstatus'] = 'Okundu durumu';
+$labels['readstatus'] = 'Okunma durumu';
+$labels['listoptions'] = 'Seçenekleri listele...';
 $labels['mailboxlist'] = 'Klasörler';
+$labels['folders'] = 'Klasörler';
 $labels['messagesfromto'] = 'Postalar: $from - $to , Toplam: $count';
-$labels['threadsfromto'] = 'Dizilmler: $from - $to, Toplam $count';
+$labels['threadsfromto'] = 'Postalar: $from - $to, Toplam $count';
 $labels['messagenrof'] = 'Posta: $nr / $count';
+$labels['fromtoshort'] = '$from - $to , Toplam: $count';
 $labels['copy'] = 'Kopyala';
 $labels['move'] = 'Taşı';
-$labels['moveto'] = 'Buraya taşı...';
+$labels['moveto'] = 'Şuraya taşı...';
 $labels['download'] = 'İndir';
 $labels['filename'] = 'Dosya Adı';
 $labels['filesize'] = 'Dosya Boyutu';
@@ -59,11 +57,11 @@ $labels['addtoaddressbook'] = 'Adres Defterine Ekle';
 $labels['sun'] = 'Paz';
 $labels['mon'] = 'Pzt';
 $labels['tue'] = 'Sal';
-$labels['wed'] = 'Çar';
+$labels['wed'] = 'Ç';
 $labels['thu'] = 'Per';
 $labels['fri'] = 'Cum';
-$labels['sat'] = 'Cmt';
-$labels['sunday'] = 'Pazar';
+$labels['sat'] = 'Cts';
+$labels['sunday'] = 'Paz';
 $labels['monday'] = 'Pazartesi';
 $labels['tuesday'] = 'Salı';
 $labels['wednesday'] = 'Çarşamba';
@@ -75,6 +73,7 @@ $labels['feb'] = 'Şub';
 $labels['mar'] = 'Mar';
 $labels['apr'] = 'Nis';
 $labels['may'] = 'May';
+$labels['longmay'] = 'May';
 $labels['jun'] = 'Haz';
 $labels['jul'] = 'Tem';
 $labels['aug'] = 'Ağu';
@@ -86,7 +85,6 @@ $labels['longjan'] = 'Ocak';
 $labels['longfeb'] = 'Şubat';
 $labels['longmar'] = 'Mart';
 $labels['longapr'] = 'Nisan';
-$labels['longmay'] = 'Mayıs';
 $labels['longjun'] = 'Haziran';
 $labels['longjul'] = 'Temmuz';
 $labels['longaug'] = 'Ağustos';
@@ -95,33 +93,42 @@ $labels['longoct'] = 'Ekim';
 $labels['longnov'] = 'Kasım';
 $labels['longdec'] = 'Aralık';
 $labels['today'] = 'Bugün';
-$labels['checkmail'] = 'Yeni postaları kontrol et';
+$labels['refresh'] = 'Yenile';
+$labels['checkmail'] = 'Yeni Postaları Kontrol Et';
+$labels['compose'] = 'E-Posta Yaz';
 $labels['writenewmessage'] = 'Yeni posta oluştur';
-$labels['replytomessage'] = 'Gönderene yanıtla';
-$labels['replytoallmessage'] = 'Gönderene ve tüm alıcılara yanıtla';
-$labels['replyall'] = 'Tümüne yanıtla';
-$labels['replylist'] = 'Listeye yanıtla';
+$labels['reply'] = 'Yanıtla';
+$labels['replytomessage'] = 'Gönderene Yanıt Ver';
+$labels['replytoallmessage'] = 'Gönderene ve Tüm Alıcılara Yanıt Ver';
+$labels['replyall'] = 'Tümüne Yanıt Ver';
+$labels['replylist'] = 'Listeye Yanıt Ver';
+$labels['forward'] = 'İlet';
 $labels['forwardinline'] = 'Postanın içinde ilet';
-$labels['forwardattachment'] = 'Eklenti olarak ilet';
-$labels['forwardmessage'] = 'Postayı ilet';
-$labels['deletemessage'] = 'Postayı sil';
-$labels['movemessagetotrash'] = 'Postayı çöpe taşı';
-$labels['printmessage'] = 'Bu postayı yazdır';
-$labels['previousmessage'] = 'Önceki postayı göster';
-$labels['firstmessage'] = 'İlk postayı göster';
-$labels['nextmessage'] = 'Sonraki postayı göster';
-$labels['lastmessage'] = 'Son postayı göster';
-$labels['backtolist'] = 'Posta listesine dön';
-$labels['viewsource'] = 'Kaynağı göster';
-$labels['markmessages'] = 'Postaları işaretle';
-$labels['markread'] = 'okunmuş olarak';
-$labels['markunread'] = 'okunmamış olarak';
-$labels['markflagged'] = 'işaretli olarak';
-$labels['markunflagged'] = 'işaretsiz olarak';
-$labels['messageactions'] = 'Diğer eylemler...';
+$labels['forwardattachment'] = 'Eklenti Olarak İlet';
+$labels['forwardmessage'] = 'Postayı İlet';
+$labels['deletemessage'] = 'Postayı Sil';
+$labels['movemessagetotrash'] = 'Postayı Çöpe Taşı';
+$labels['printmessage'] = 'Bu Postayı Yazdır';
+$labels['previousmessage'] = 'Önceki Postayı Göster';
+$labels['firstmessage'] = 'İlk Postayı Göster';
+$labels['nextmessage'] = 'Sonraki Postayı Göster';
+$labels['lastmessage'] = 'Son Postayı Göster';
+$labels['backtolist'] = 'Posta Listesine Dön';
+$labels['viewsource'] = 'Kaynağı Göster';
+$labels['mark'] = 'İşaretle';
+$labels['markmessages'] = 'Postaları İşaretle';
+$labels['markread'] = 'Okunmuş Olarak';
+$labels['markunread'] = 'Okunmamış Olarak';
+$labels['markflagged'] = 'İşaretli Olarak';
+$labels['markunflagged'] = 'İşaretsiz Olarak';
+$labels['moreactions'] = 'Diğer İşlemler';
+$labels['more'] = 'Daha Fazla';
+$labels['back'] = 'Geri';
+$labels['options'] = 'Seçenekler';
 $labels['select'] = 'Seç';
 $labels['all'] = 'Hepsini';
-$labels['none'] = 'Hiçbirini';
+$labels['none'] = 'Yok';
+$labels['nonesort'] = 'Yok';
 $labels['currpage'] = 'Şimdiki sayfa';
 $labels['unread'] = 'Okunmamışları';
 $labels['flagged'] = 'İşaretlenmişleri';
@@ -141,7 +148,6 @@ $labels['expand_only_unread'] = 'sadece okunmamış posta içeren dizilimler';
 $labels['fromto'] = 'Gönderici/Alıcı';
 $labels['flag'] = 'İşaret';
 $labels['attachment'] = 'Eklenti';
-$labels['nonesort'] = 'Yok';
 $labels['sentdate'] = 'Gönderim tarihi';
 $labels['arrival'] = 'Alım tarihi';
 $labels['asc'] = 'artan';
@@ -162,7 +168,6 @@ $labels['searchmod'] = 'Arama detayları';
 $labels['msgtext'] = 'Tüm posta gövdesi';
 $labels['openinextwin'] = 'Yeni pencerede aç';
 $labels['emlsave'] = 'İndir (.eml)';
-$labels['compose'] = 'Yeni posta oluştur';
 $labels['editasnew'] = 'Postayı yeni olarak düzenle';
 $labels['savemessage'] = 'Taslak olarak kaydet';
 $labels['sendmessage'] = 'Postayı gönder';
@@ -174,9 +179,11 @@ $labels['dsn'] = 'Teslimat durumu bildirisi';
 $labels['mailreplyintro'] = '$date, $sender yazmış:';
 $labels['originalmessage'] = 'Özgün ileti';
 $labels['editidents'] = 'Kimlikleri düzenle';
+$labels['spellcheck'] = 'Yazım denetimi';
 $labels['checkspelling'] = 'Yazım denetimi yap';
 $labels['resumeediting'] = 'Düzenlemeye devam et';
 $labels['revertto'] = 'Geri çevir:';
+$labels['attach'] = 'Ekle';
 $labels['attachments'] = 'Ekler';
 $labels['upload'] = 'Yükle';
 $labels['uploadprogress'] = '$percent ($current / $total)';
@@ -190,6 +197,7 @@ $labels['highest'] = 'En yüksek';
 $labels['nosubject'] = '(Konu Belirtilmemiş)';
 $labels['showimages'] = 'Resimleri göster';
 $labels['alwaysshow'] = '$sender tarafından gönderilen resimleri her zaman göster';
+$labels['isdraft'] = 'Bu posta taslaktır.';
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = 'Düz metin';
 $labels['savesentmessagein'] = 'Gönderileni buraya kaydet';
@@ -231,14 +239,16 @@ $labels['male'] = 'erkek';
 $labels['female'] = 'kadın';
 $labels['manager'] = 'Yönetici';
 $labels['assistant'] = 'Asistan';
+$labels['typeassistant'] = 'Asistan';
 $labels['spouse'] = 'Eş';
 $labels['allfields'] = 'Tüm alanlar';
 $labels['search'] = 'Ara';
 $labels['advsearch'] = 'Gelişmiş ara';
+$labels['advanced'] = 'Gelişmiş';
 $labels['other'] = 'Diğer';
+$labels['typeother'] = 'Diğer';
 $labels['typehome'] = 'Ev';
 $labels['typework'] = 'İş';
-$labels['typeother'] = 'Diğer';
 $labels['typemobile'] = 'Cep telefonu';
 $labels['typemain'] = 'Ana';
 $labels['typehomefax'] = 'Ev Faks';
@@ -246,7 +256,6 @@ $labels['typeworkfax'] = 'İş Faks';
 $labels['typecar'] = 'Araba';
 $labels['typepager'] = 'Çağrı cihazı';
 $labels['typevideo'] = 'Görüntülü';
-$labels['typeassistant'] = 'Asistan';
 $labels['typehomepage'] = 'Ev sayfası';
 $labels['typeblog'] = 'Günlük';
 $labels['typeprofile'] = 'Profil';
@@ -263,6 +272,7 @@ $labels['delete'] = 'Sil';
 $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['deletecontact'] = 'Seçili kişileri sil';
 $labels['composeto'] = 'Seçili kişiye posta gönder';
@@ -271,9 +281,9 @@ $labels['print'] = 'Yazdır';
 $labels['export'] = 'Dışa aktar';
 $labels['exportvcards'] = 'vCard olarak dışa aktar';
 $labels['newcontactgroup'] = 'Yeni kişi grubu oluştur';
-$labels['groupactions'] = 'Kişi grupları için eylemler...';
 $labels['grouprename'] = 'Grubu yeniden adlandır';
 $labels['groupdelete'] = 'Grubu sil';
+$labels['groupremoveselected'] = 'Seçili kontaktları gruptan sil';
 $labels['previouspage'] = 'Öncekileri göster';
 $labels['firstpage'] = 'İlkini göster';
 $labels['nextpage'] = 'Sonrakileri göster';
@@ -281,6 +291,8 @@ $labels['lastpage'] = 'Sonuncuyu göster';
 $labels['group'] = 'Grup';
 $labels['groups'] = 'Gruplar';
 $labels['personaladrbook'] = 'Adresler';
+$labels['searchsave'] = 'Aramayı kaydet';
+$labels['searchdelete'] = 'Aramayı sil';
 $labels['import'] = 'İçe aktar';
 $labels['importcontacts'] = 'Kişileri içe aktar';
 $labels['importfromfile'] = 'Dosyadan içe aktar:';
@@ -289,6 +301,7 @@ $labels['importreplace'] = 'Tüm adres defterinin yerine geçsin';
 $labels['importtext'] = 'Mevcut bir adres defterindeki kişileri yükleyebilirsiniz.<br/><a href="http://en.wikipedia.org/wiki/VCard">vCard</a> dosyalarından adresleri içe aktarmayı destekliyoruz.';
 $labels['done'] = 'Tamam';
 $labels['settingsfor'] = 'Ayarlar';
+$labels['about'] = 'Hakkında';
 $labels['preferences'] = 'Tercihler';
 $labels['userpreferences'] = 'Kullanıcı tercihleri';
 $labels['editpreferences'] = 'Kullanıcı tercihlerini düzenle';
@@ -300,6 +313,8 @@ $labels['edititem'] = 'Öğe düzenle';
 $labels['preferhtml'] = 'HTML görüntüle';
 $labels['defaultcharset'] = 'Varsayılan Karakter Kümesi';
 $labels['htmlmessage'] = 'HTML Posta';
+$labels['dateformat'] = 'Tarih biçimi';
+$labels['timeformat'] = 'Zaman biçimi';
 $labels['prettydate'] = 'Tarihi kısaltarak göster';
 $labels['setdefault'] = 'Varsayılan olarak ata';
 $labels['autodetect'] = 'Otomatik';
@@ -328,6 +343,7 @@ $labels['readwhendeleted'] = 'Silinen postaları okunmuş olarak işaretle';
 $labels['flagfordeletion'] = 'Postaları silmek yerine silinecek olarak işaretle';
 $labels['skipdeleted'] = 'Silinmiş postaları gösterme';
 $labels['deletealways'] = 'Postaların çöpe taşınmasında sorun çıkarsa, postaları sil';
+$labels['deletejunk'] = 'İstenmeyenler klasöründeki mesajları doğrudan sil';
 $labels['showremoteimages'] = 'Uzaktan yüklenen resimleri göster';
 $labels['fromknownsenders'] = 'bilinen göndericilerden';
 $labels['always'] = 'her zaman';
@@ -348,11 +364,12 @@ $labels['advancedoptions'] = 'Gelişmiş seçenekler';
 $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';
+$labels['defaultfont'] = 'HTML postalar için varsayılan yazı tipi';
 $labels['mainoptions'] = 'Ana Seçenekler';
+$labels['browseroptions'] = 'Tarayıcı Seçenekleri';
 $labels['section'] = 'Bölüm';
 $labels['maintenance'] = 'Bakım';
 $labels['newmessage'] = 'Yeni Posta';
-$labels['listoptions'] = 'Liste Seçenekleri';
 $labels['signatureoptions'] = 'İmza Seçenekleri';
 $labels['whenreplying'] = 'Yanıtlarken';
 $labels['replytopposting'] = 'yeni postayı alıntı metninin üstünden başlat';
@@ -371,19 +388,26 @@ $labels['reqmdn'] = 'Her zaman alındı onayı iste';
 $labels['reqdsn'] = 'Her zaman teslimat durumu bildirisi iste';
 $labels['replysamefolder'] = 'Yanıtları, yanıtlanan postanın bulunduğu klasöre kaydet';
 $labels['defaultaddressbook'] = 'Yeni kişileri seçili adres defterine ekle';
+$labels['autocompletesingle'] = 'Otomatik tamamlamalarda alternatif e-posta adreslerini atla';
+$labels['listnamedisplay'] = 'Kişiyi görüntüle';
 $labels['spellcheckbeforesend'] = 'Posta göndermeden önce yazım denetimi yap';
+$labels['spellcheckoptions'] = 'Yazım Denetimi Seçenekleri';
+$labels['spellcheckignoresyms'] = 'İçinde semboller geçen kelimeleri gözardı et';
+$labels['spellcheckignorenums'] = 'İçinde rakam geçen kelimleri göz ardı et';
+$labels['spellcheckignorecaps'] = 'Tümü büyük harf olan kelimleri göz ardı et';
+$labels['addtodict'] = 'Sözlüğe Ekle';
+$labels['mailtoprotohandler'] = 'mailto: bağlantıları için protokol işleyici kayıt et';
 $labels['folder'] = 'Klasör';
-$labels['folders'] = 'Klasörler';
-$labels['foldername'] = 'Klasör ismi';
+$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['specialfolders'] = 'Özel klasörler';
+$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';
-$labels['parentfolder'] = 'Üst klasör';
+$labels['folderproperties'] = 'Klasör Ã\96zellikleri';
+$labels['parentfolder'] = 'Ana Dizin';
 $labels['location'] = 'Konum';
 $labels['info'] = 'Bilgi';
 $labels['getfoldersize'] = 'Klasör büyüklüğünü öğrenmek için tıklayın';
@@ -396,12 +420,17 @@ $labels['sortby'] = 'Sırala';
 $labels['sortasc'] = 'Artarak';
 $labels['sortdesc'] = 'Azalarak';
 $labels['undo'] = 'Geri al';
+$labels['plugin'] = 'Eklenti';
+$labels['version'] = 'Sürüm';
+$labels['source'] = 'Kaynak';
+$labels['license'] = 'Lisans';
+$labels['support'] = 'Destek Al';
 $labels['B'] = 'B';
 $labels['KB'] = 'KB';
 $labels['MB'] = 'MB';
 $labels['GB'] = 'GB';
 $labels['unicode'] = 'Unicode';
-$labels['english'] = 'İngilizce ';
+$labels['english'] = 'İngilizce';
 $labels['westerneuropean'] = 'Batı Avrupa';
 $labels['easterneuropean'] = 'Doğu Avrupa';
 $labels['southeasterneuropean'] = 'Güneydoğu Avrupa';
@@ -419,4 +448,3 @@ $labels['japanese'] = 'Japonca';
 $labels['korean'] = 'Korece';
 $labels['chinese'] = 'Çince';
 
-?>
index aed1172060fb8ab76618bffe760d2eb2a3178652..23ba0480fd811fdf997b7fcf27b3c80cc3044eef 100644 (file)
@@ -1,32 +1,29 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/tr_TR/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2011, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Hasan Cansız <hasancansiz@yahoo.com>                          |
-| Author: Gökdeniz Karadağ <gokdenizk@gmail.com>                        |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 5290 2011-09-28 17:09:50Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/tr_TR/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: ismail yenigul                                                |
+ +-----------------------------------------------------------------------+
 */
 
 $messages = array();
+$messages['errortitle'] = 'Bir hata oluştu!';
 $messages['loginfailed'] = 'Giriş Başarısız';
 $messages['cookiesdisabled'] = 'Tarayıcınız çerezleri kabul etmiyor';
 $messages['sessionerror'] = 'Oturumunuz sona ermiş veya hatalı';
-$messages['imaperror'] = 'IMAP sunucusuna bağlanılamadı';
+$messages['storageerror'] = 'IMAP sunucusuna bağlanılamadı';
 $messages['servererror'] = 'Sunucu Hatası!';
 $messages['servererrormsg'] = 'Sunucu hatası: $msg';
 $messages['dberror'] = 'Veritabanı Hatası!';
-$messages['errorreadonly'] = 'İşlem gerçekleştirilemedi. Klasör sadece okunabilir';
+$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.';
 $messages['invalidrequest'] = 'Geçersiz İstek! Veri kaydedilmedi';
 $messages['nomessagesfound'] = 'Posta kutusunda ileti bulunamadı';
@@ -49,6 +46,7 @@ $messages['blockedimages'] = 'Kişisel gizliliğinizi korumak amacıyla postadak
 $messages['encryptedmessage'] = 'Bu şifrelenmiş bir posta olduğu için gösterilemiyor. Özür dilerim!';
 $messages['nocontactsfound'] = 'Kişi bulunamadı';
 $messages['contactnotfound'] = 'İstenen kişi bulunamadı';
+$messages['contactsearchonly'] = 'Kişi aramak için arama terimleri giriniz';
 $messages['sendingfailed'] = 'Posta gönderilemedi';
 $messages['senttooquickly'] = 'Lütfen bu postayı göndermeden önce $sec saniye bekleyin';
 $messages['errorsavingsent'] = 'Gönderilen postayı kaydederken hata oluştu';
@@ -62,6 +60,7 @@ $messages['deletegroupconfirm'] = 'Seçili grupları silmek istediğinizden emin
 $messages['deletemessagesconfirm'] = 'Seçili postaları silmek istediğinizden emin misiniz?';
 $messages['deletefolderconfirm'] = 'Bu klasörü silmek istediğinizden emin misiniz?';
 $messages['purgefolderconfirm'] = 'Bu klasördeki tüm postaları silmek istediğinizden emin misiniz?';
+$messages['contactdeleting'] = 'Kişi(er) siliniyor...';
 $messages['groupdeleting'] = 'Grup siliniyor...';
 $messages['folderdeleting'] = 'Klasör siliniyor...';
 $messages['foldermoving'] = 'Klasör taşınıyor...';
@@ -77,10 +76,10 @@ $messages['nosubjectwarning'] = '"Konu" kutusu boş bırakılmış. Şimdi bir k
 $messages['nobodywarning'] = 'Postayı boş olarak gönder?';
 $messages['notsentwarning'] = 'Posta gönderilmedi. Postanızı iptal etmek istiyor musunuz?';
 $messages['noldapserver'] = 'Lütfen arama için bir LDAP sunucu seçin';
-$messages['nocontactsreturned'] = 'Kişi bulunamadı';
 $messages['nosearchname'] = 'Lütfen bir kişi ismi veya e-posta adresi girin';
 $messages['notuploadedwarning'] = 'Henüz tüm ekli dosyalar yüklenmedi. Lütfen bekleyin ya da yüklemeyi iptal edin.';
 $messages['searchsuccessful'] = '$nr posta bulundu';
+$messages['contactsearchsuccessful'] = '$nr kişi bulundu';
 $messages['searchnomatch'] = 'Aramanıza uygun hiçbir sonuç bulunamadı';
 $messages['searching'] = 'Aranıyor...';
 $messages['checking'] = 'Denetleniyor...';
@@ -108,6 +107,7 @@ $messages['addingmember'] = 'Gruba kişi(ler) ekleniyor...';
 $messages['removingmember'] = 'Gruptan kişi(ler) siliniyor...';
 $messages['receiptsent'] = 'Okundu onayı gönderildi';
 $messages['errorsendingreceipt'] = 'Okundu onayı gönderilemedi';
+$messages['deleteidentityconfirm'] = 'Bu kimliği silmek istediğinizden emin misiniz?';
 $messages['nodeletelastidentity'] = 'Son kimliğiniz olduğu için bu kimliği silemezsiniz';
 $messages['forbiddencharacter'] = 'Klasör ismi yasaklanmış bir karakter içeriyor';
 $messages['selectimportfile'] = 'Lütfen yüklenecek dosyayı seçin';
@@ -127,7 +127,6 @@ $messages['smtpautherror'] = 'SMTP Hatası ($code): Kimlik doğrulama başarıs
 $messages['smtpfromerror'] = 'SMTP Hatası ($code): Gönderen adresi "$from" olarak ayarlanamadı ($msg)';
 $messages['smtptoerror'] = 'SMTP Hatası ($code): "$to" alıcısı eklenemedi ($msg)';
 $messages['smtprecipientserror'] = 'SMTP Hatası: Posta alıcılarının listesi ayrıştırılamadı';
-$messages['smtpdsnerror'] = 'SMTP hatası: Teslimat durumu bildirileri desteklenmiyor';
 $messages['smtperror'] = 'SMTP Hatası: $msg';
 $messages['emailformaterror'] = 'Hatalı e-posta adresi: $email';
 $messages['toomanyrecipients'] = 'Çok fazla alıcı. En fazla $max alıcı girebilirsiniz.';
@@ -140,11 +139,16 @@ $messages['contactrestored'] = 'Kişi(ler) başarıyla geri getirildi.';
 $messages['groupdeleted'] = 'Grup silindi';
 $messages['grouprenamed'] = 'Grup ismi değiştirildi';
 $messages['groupcreated'] = 'Grup oluşturuldu';
+$messages['savedsearchdeleted'] = 'Kayıtlı arama silindi.';
+$messages['savedsearchdeleteerror'] = 'Kayıtlı arama silinemedi.';
+$messages['savedsearchcreated'] = 'Kayıtlı arama oluşturuldu.';
+$messages['savedsearchcreateerror'] = 'Kayıtlı arama oluşturulamadı.';
 $messages['messagedeleted'] = 'Posta(lar) silindi';
 $messages['messagemoved'] = 'Posta(lar) taşındı';
 $messages['messagecopied'] = 'Posta(lar) kopyalandı';
 $messages['messagemarked'] = 'Posta(lar) işaretlendi';
 $messages['autocompletechars'] = 'otomatik tamamlama için en az $min karakter girin';
+$messages['autocompletemore'] = 'Fazla sayıda eşleşen öğe bulundu. Lütfen daha fazla karakter yazın.';
 $messages['namecannotbeempty'] = 'İsim alanı boş olamaz';
 $messages['nametoolong'] = 'İsim çok uzun';
 $messages['folderupdated'] = 'Klasör güncellendi';
@@ -152,5 +156,5 @@ $messages['foldercreated'] = 'Klasör oluşturuldu';
 $messages['invalidimageformat'] = 'Geçerli bir resim biçimi değil.';
 $messages['mispellingsfound'] = 'Postada yazım hataları tespit edildi.';
 $messages['parentnotwritable'] = 'Klasör, seçilen üst klasöre taşınamıyor. Erişim izni yok.';
+$messages['messagetoobig'] = 'Bu ileti parçası işlenemeyecek kadar büyük.';
 
-?>
index d4fbd75ad21f841dfe5e90c77aef6986039d300f..c373a3a2d6b2be3b60f9bb26556fe700e7274b28 100644 (file)
@@ -1,20 +1,17 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/uk_UA/labels.inc                                             |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Volodymyr M. Kononenko aka kvm <vmkononenko@gmail.com>        |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 5569 2011-12-07 14:47:32Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/uk_UA/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $labels = array();
@@ -45,6 +42,7 @@ $labels['priority'] = 'Пріоритет';
 $labels['organization'] = 'Організація';
 $labels['readstatus'] = 'Статус прочитання';
 $labels['mailboxlist'] = 'Папки';
+$labels['folders'] = 'Папки';
 $labels['messagesfromto'] = 'Повідомлення з $from по $to із $count';
 $labels['threadsfromto'] = 'Обговорення з $from по $to із $count';
 $labels['messagenrof'] = 'Лист $nr із $count';
@@ -73,7 +71,8 @@ $labels['jan'] = 'січ';
 $labels['feb'] = 'лют';
 $labels['mar'] = 'бер';
 $labels['apr'] = 'квіт';
-$labels['may'] = 'тр';
+$labels['may'] = 'Травень';
+$labels['longmay'] = 'Травень';
 $labels['jun'] = 'чер';
 $labels['jul'] = 'лип';
 $labels['aug'] = 'сер';
@@ -85,7 +84,6 @@ $labels['longjan'] = 'Січень';
 $labels['longfeb'] = 'Лютий';
 $labels['longmar'] = 'Березень';
 $labels['longapr'] = 'Квітень';
-$labels['longmay'] = 'Травень';
 $labels['longjun'] = 'Червень';
 $labels['longjul'] = 'Липень';
 $labels['longaug'] = 'Серпень';
@@ -95,6 +93,7 @@ $labels['longnov'] = 'Листопад';
 $labels['longdec'] = 'Грудень';
 $labels['today'] = 'Сьогодні';
 $labels['checkmail'] = 'Перевірити пошту';
+$labels['compose'] = 'Написати листа';
 $labels['writenewmessage'] = 'Написати листа';
 $labels['replytomessage'] = 'Відповісти відправнику';
 $labels['replytoallmessage'] = 'Відповісти до листа або відправнику та усім отримувачам';
@@ -120,7 +119,8 @@ $labels['markunflagged'] = 'Зняти зірочку';
 $labels['moreactions'] = 'Інші дії...';
 $labels['select'] = 'Вибрати';
 $labels['all'] = 'Всі';
-$labels['none'] = 'Жодного';
+$labels['none'] = 'Не сортувати';
+$labels['nonesort'] = 'Не сортувати';
 $labels['currpage'] = 'Поточна сторінка';
 $labels['unread'] = 'Непрочитані';
 $labels['flagged'] = 'Із зірочкою';
@@ -134,13 +134,12 @@ $labels['expand-all'] = 'Розкрити всі';
 $labels['expand-unread'] = 'Розкрити непрочитані';
 $labels['collapse-all'] = 'Згорнути всі';
 $labels['threaded'] = 'Гілками';
-$labels['autoexpand_threads'] = 'Розкривати гілки ';
+$labels['autoexpand_threads'] = 'Розкривати гілки';
 $labels['do_expand'] = 'усі гілки';
 $labels['expand_only_unread'] = 'тільки з непрочитаними листами';
 $labels['fromto'] = 'Відправник/Одержувач';
 $labels['flag'] = 'Позначка';
 $labels['attachment'] = 'Вкладення';
-$labels['nonesort'] = 'Не сортувати';
 $labels['sentdate'] = 'Дата відправлення';
 $labels['arrival'] = 'Дата оримання';
 $labels['asc'] = 'за зростанням';
@@ -161,7 +160,6 @@ $labels['searchmod'] = 'Де шукати';
 $labels['msgtext'] = 'В усьому листі';
 $labels['openinextwin'] = 'Відкрити в новому вікні';
 $labels['emlsave'] = 'Зберегти (.eml)';
-$labels['compose'] = 'Написати листа';
 $labels['editasnew'] = 'Редагувати як новий';
 $labels['savemessage'] = 'Зберегти чернетку';
 $labels['sendmessage'] = 'Надіслати зараз';
@@ -189,6 +187,7 @@ $labels['highest'] = 'Найвищий';
 $labels['nosubject'] = '(без теми)';
 $labels['showimages'] = 'Показувати зображення';
 $labels['alwaysshow'] = 'Завжди показувати зображення від $sender';
+$labels['isdraft'] = 'Це чернетка.';
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = 'Звичайний текст';
 $labels['savesentmessagein'] = 'зберегти надісланого листа в';
@@ -230,14 +229,15 @@ $labels['male'] = 'чоловічий';
 $labels['female'] = 'жіночий';
 $labels['manager'] = 'Менеждер';
 $labels['assistant'] = 'Помічник';
+$labels['typeassistant'] = 'Помічник';
 $labels['spouse'] = 'Шлюбний партнер';
 $labels['allfields'] = 'Усі поля';
 $labels['search'] = 'Пошук';
 $labels['advsearch'] = 'Розширений пошук';
 $labels['other'] = 'Інше';
+$labels['typeother'] = 'Інше';
 $labels['typehome'] = 'Дім';
 $labels['typework'] = 'Робота';
-$labels['typeother'] = 'Інше';
 $labels['typemobile'] = 'Мобільний';
 $labels['typemain'] = 'Основний';
 $labels['typehomefax'] = 'Домашній факс';
@@ -245,7 +245,6 @@ $labels['typeworkfax'] = 'Робочий факс';
 $labels['typecar'] = 'Автомобіль';
 $labels['typepager'] = 'Пейджер';
 $labels['typevideo'] = 'Відео';
-$labels['typeassistant'] = 'Помічник';
 $labels['typehomepage'] = 'Домашня сторінка';
 $labels['typeblog'] = 'Блог';
 $labels['typeprofile'] = 'Профіль';
@@ -289,6 +288,7 @@ $labels['importreplace'] = 'Замінити всю адресну книгу';
 $labels['importtext'] = 'Ви можете завантажити контакти з існуючої адресної книги. На даний момент підтримується імпортування контактів з формату vCard';
 $labels['done'] = 'Готово';
 $labels['settingsfor'] = 'Налаштування для';
+$labels['about'] = 'Про програму';
 $labels['preferences'] = 'Параметри';
 $labels['userpreferences'] = 'Налаштування користувача';
 $labels['editpreferences'] = 'Редагувати налаштування користувача';
@@ -350,11 +350,11 @@ $labels['advancedoptions'] = 'Додаткові параметри';
 $labels['focusonnewmessage'] = 'Фокусувати вікно браузера при новому листі';
 $labels['checkallfolders'] = 'Перевіряти нові листи у всіх папках';
 $labels['displaynext'] = 'Після видалення/переміщення листа відображати наступний';
+$labels['defaultfont'] = 'Шрифт за замовчуванням HTML повідомлення';
 $labels['mainoptions'] = 'Основні налаштування';
 $labels['section'] = 'Розділ';
 $labels['maintenance'] = 'Додатково';
 $labels['newmessage'] = 'Новий лист';
-$labels['listoptions'] = 'Список налаштувань';
 $labels['signatureoptions'] = 'Налаштування підпису';
 $labels['whenreplying'] = 'При відповіді';
 $labels['replytopposting'] = 'починати новий лист перед цитованим';
@@ -373,6 +373,7 @@ $labels['reqmdn'] = 'Завжди вимагати повідомлення пр
 $labels['reqdsn'] = 'Завжди вимагати повідомлення про статус доставки';
 $labels['replysamefolder'] = 'Розмістити відповіді у тій же папці, де знаходиться оригінал';
 $labels['defaultaddressbook'] = 'Додати нові контакти до обраної адресної книги';
+$labels['autocompletesingle'] = 'Пропускати додаткові адреси в автозавершенні';
 $labels['spellcheckbeforesend'] = 'Перевірити орфографію перед відправкою повідомлення';
 $labels['spellcheckoptions'] = 'Налаштування перевірки орфографії';
 $labels['spellcheckignoresyms'] = 'Ігнорувати слова із символами';
@@ -380,7 +381,6 @@ $labels['spellcheckignorenums'] = 'Ігнорувати слова із числ
 $labels['spellcheckignorecaps'] = 'Ігнорувати слова із великими буквами';
 $labels['addtodict'] = 'Додати до словника';
 $labels['folder'] = 'Папка';
-$labels['folders'] = 'Папки';
 $labels['foldername'] = 'Назва папки';
 $labels['subscribed'] = 'Підписані';
 $labels['messagecount'] = 'Листи';
@@ -403,6 +403,11 @@ $labels['sortby'] = 'Відсортувати за';
 $labels['sortasc'] = 'Сортувати за зростанням';
 $labels['sortdesc'] = 'Сортувати за спаданням';
 $labels['undo'] = 'Відмінити';
+$labels['plugin'] = 'Доповнення';
+$labels['version'] = 'Версія';
+$labels['source'] = 'Джерело';
+$labels['license'] = 'Ліцензія';
+$labels['support'] = 'Отримати підтримку';
 $labels['B'] = 'б';
 $labels['KB'] = 'Кб';
 $labels['MB'] = 'Мб';
@@ -426,4 +431,3 @@ $labels['japanese'] = 'Японське';
 $labels['korean'] = 'Корейське';
 $labels['chinese'] = 'Китайське';
 
-?>
index e302710097d965d14f968820b470135dbbf66ff9..d3e90f777c8f33fd581c5d3659ec9ab172b2592d 100644 (file)
@@ -1,27 +1,24 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| language/uk_UA/messages.inc                                           |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Volodymyr M. Kononenko aka kvm <vmkononenko@gmail.com>        |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 5569 2011-12-07 14:47:32Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/uk_UA/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas <Unknown>                                              |
+ +-----------------------------------------------------------------------+
+ @version $Id$
 */
 
 $messages = array();
 $messages['loginfailed'] = 'Невдала спроба входу';
 $messages['cookiesdisabled'] = 'Ваш переглядач не приймає cookie';
 $messages['sessionerror'] = 'Ваша сесія застаріла';
-$messages['imaperror'] = 'Невдале з`єднання з IMAP сервером';
+$messages['storageerror'] = 'Невдале з`єднання з IMAP сервером';
 $messages['servererror'] = 'Помилка сервера!';
 $messages['servererrormsg'] = 'Помилка сервера: $msg';
 $messages['dberror'] = 'Помилка бази даних!';
@@ -128,7 +125,6 @@ $messages['smtpautherror'] = 'Помилка SMTP-сервера ($code): Нев
 $messages['smtpfromerror'] = 'Помилка SMTP-сервера ($code): Не вдалося вказати відправника "$from" ($msg)';
 $messages['smtptoerror'] = 'Помилка SMTP-сервера ($code): Не вдалося додати отримувача "$to" ($msg)';
 $messages['smtprecipientserror'] = 'Помилка SMTP: Не вдалося обробити список отримувачів';
-$messages['smtpdsnerror'] = 'Помилка SMTP: Не підтримуються повідомлення про статус доставки';
 $messages['smtperror'] = 'Помилка SMTP: $msg';
 $messages['emailformaterror'] = 'Невірна електронна адреса: $email';
 $messages['toomanyrecipients'] = 'Занадто багато отримувачів. Зменшіть їх число до $max.';
@@ -144,7 +140,7 @@ $messages['groupcreated'] = 'Група створена успішно';
 $messages['savedsearchdeleted'] = 'Збережений пошук вдало видалено.';
 $messages['savedsearchdeleteerror'] = 'Неможливо видалити збережений пошук.';
 $messages['savedsearchcreated'] = 'Збережений пошук вдало створено.';
-$messages['savedsearchcreateerror'] = 'Не вдалось створити збережений пошук. ';
+$messages['savedsearchcreateerror'] = 'Не вдалось створити збережений пошук.';
 $messages['messagedeleted'] = 'Лист(и) видалено успішно';
 $messages['messagemoved'] = 'Лист(и) переміщено успішно';
 $messages['messagecopied'] = 'Лист(и) скопійовано успішно';
@@ -158,5 +154,5 @@ $messages['foldercreated'] = 'Папка створена';
 $messages['invalidimageformat'] = 'Невірний формат зображення';
 $messages['mispellingsfound'] = 'Знайдено орфографічні помилки у повідомленні.';
 $messages['parentnotwritable'] = 'Неможливо створити/перемістити папку до обраної батьківської папки. Нема прав доступу.';
+$messages['messagetoobig'] = 'Частина повідомлення занадто велика для опрацювання.';
 
-?>
index b7e5fa8d19c5806b7eec3308b0757236cd4e4ddf..23b8bb55eea8a7fa9b79ca732e5a120724be8e54 100644 (file)
 <?php
 
 /*
-
  +-----------------------------------------------------------------------+
- | language/vn/labels.inc                                                |
+ | localization/vi_VN/labels.inc                                         |
  |                                                                       |
  | Language file of the Roundcube Webmail client                         |
- | Copyright (C) 2005-2010, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Vinh Bui <bqvinh@buivinh.info>                                |
+ | Author: Kenny Tran <kennethanh@gmail.com>                             |
  +-----------------------------------------------------------------------+
-
- @version $Id: labels.inc 4410 2011-01-12 18:25:02Z thomasb $
-
 */
 
 $labels = array();
-
-// login page
-$labels['welcome']   = 'Xin mời sử dụng $product';
-$labels['username']  = 'Tên người dùng';
-$labels['password']  = 'Mật khẩu';
-$labels['server']    = 'Máy chủ?';
-$labels['login']     = 'Đăng nhập';
-
-// taskbar
-$labels['logout']   = 'Đăng xuất';
-$labels['mail']     = 'E-Mail';
+$labels['welcome'] = 'Chào bạn đã đến với $product';
+$labels['username'] = 'Tên truy nhập';
+$labels['password'] = 'Mật khẩu';
+$labels['server'] = 'Máy chủ';
+$labels['login'] = 'Đăng nhập';
+$labels['logout'] = 'Thoát';
+$labels['mail'] = 'Thư';
 $labels['settings'] = 'Thiết lập';
 $labels['addressbook'] = 'Sổ địa chỉ';
-
-// mailbox names
-$labels['inbox']  = 'Inbox';
-$labels['drafts'] = 'Drafts';
-$labels['sent']   = 'Sent';
-$labels['trash']  = 'Trash';
-$labels['junk']   = 'Junk';
-
-// message listing
+$labels['inbox'] = 'Hộp thư';
+$labels['drafts'] = 'Thư nháp';
+$labels['sent'] = 'Đã gửi';
+$labels['trash'] = 'Sọt rác';
+$labels['junk'] = 'Thư rác';
 $labels['subject'] = 'Tiêu đề';
-$labels['from']    = 'Người gửi';
-$labels['to']      = 'Người nhận';
-$labels['cc']      = 'Đồng nhận';
-$labels['bcc']     = 'Đồng nhận (2)';
-$labels['replyto'] = 'Trả lời o';
-$labels['date']    = 'Ngày';
-$labels['size']    = 'D.Lượng';
-$labels['priority'] = 'Ưu tiên';
-$labels['organization'] = 'Cơ quan';
-
-// aliases
-$labels['reply-to'] = $labels['replyto'];
-
-$labels['mailboxlist'] = 'Thư mục';
+$labels['from'] = 'Từ';
+$labels['to'] = 'Tới';
+$labels['cc'] = 'Người đồng nhận (người nhận nhìn thấy địa chỉ email của ngừoi khác cùng được nhận thư)';
+$labels['bcc'] = 'Người đồng nhận (ngừoi nhận không thấy email của người khác cùng được nhận thư)';
+$labels['replyto'] = 'Trả lời cho';
+$labels['followupto'] = 'Đánh dấu thư cần theo dõi';
+$labels['date'] = 'Ngày';
+$labels['size'] = 'Dung lượng';
+$labels['priority'] = 'Mức độ ưu tiên';
+$labels['organization'] = 'Tổ chức';
+$labels['readstatus'] = 'Đọc trạng thái';
+$labels['listoptions'] = 'Lựa chọn danh sách';
+$labels['mailboxlist'] = 'Giữ liệu';
+$labels['folders'] = 'Giữ liệu';
 $labels['messagesfromto'] = 'Thư $from - $to / $count';
+$labels['threadsfromto'] = 'Dòng thư từ $from đến $to của tổng $count';
 $labels['messagenrof'] = 'Thư $nr / $count';
-
-$labels['moveto']   = 'chuyển đến...';
-$labels['download'] = 'tải xuống';
-
-$labels['filename'] = 'Tên file';
-$labels['filesize'] = 'Dung lượng';
-
-$labels['preferhtml'] = 'Dùng HTML';
-$labels['htmlmessage'] = 'Thư kiểu HTML';
-$labels['prettydate'] = 'Hiển thị ngày đầy đủ';
-
-$labels['addtoaddressbook'] = 'Thêm và sổ địa chỉ';
-
-// weekdays short
-$labels['sun'] = 'CN';
-$labels['mon'] = 'T2';
-$labels['tue'] = 'T3';
-$labels['wed'] = 'T4';
-$labels['thu'] = 'T5';
-$labels['fri'] = 'T6';
-$labels['sat'] = 'T7';
-
-// weekdays long
-$labels['sunday']    = 'Chủ nhật';
-$labels['monday']    = 'Thứ hai';
-$labels['tuesday']   = 'Thứ ba';
-$labels['wednesday'] = 'Thứ tư';
-$labels['thursday']  = 'Thứ năm';
-$labels['friday']    = 'Thứ sáu';
-$labels['saturday']  = 'Thứ bẩy';
-
+$labels['fromtoshort'] = '$from - $to của $count';
+$labels['copy'] = 'Sao chép';
+$labels['move'] = 'Chuyển';
+$labels['moveto'] = 'Chuyển tới';
+$labels['download'] = 'Tải về';
+$labels['filename'] = 'Tên tập tin';
+$labels['filesize'] = 'Dung lượng tập tin';
+$labels['addtoaddressbook'] = 'Thêm vào sổ địa chỉ';
+$labels['sun'] = 'Chủ Nhật';
+$labels['mon'] = 'Thứ Hai';
+$labels['tue'] = 'Thứ Ba';
+$labels['wed'] = 'Thứ Tư';
+$labels['thu'] = 'Thứ Năm';
+$labels['fri'] = 'Thứ Sáu';
+$labels['sat'] = 'Thứ Bảy';
+$labels['sunday'] = 'Chủ Nhật';
+$labels['monday'] = 'Thứ Hai';
+$labels['tuesday'] = 'Thứ Ba';
+$labels['wednesday'] = 'Thứ Tư';
+$labels['thursday'] = 'Thứ Năm';
+$labels['friday'] = 'Thứ Sáu';
+$labels['saturday'] = 'Thứ Bảy';
+$labels['jan'] = 'Tháng Một';
+$labels['feb'] = 'Tháng Hai';
+$labels['mar'] = 'Tháng Ba';
+$labels['apr'] = 'Tháng Tư';
+$labels['may'] = 'Tháng Năm';
+$labels['longmay'] = 'Tháng Năm';
+$labels['jun'] = 'Tháng Sáu';
+$labels['jul'] = 'Tháng Bảy';
+$labels['aug'] = 'Tháng Tám';
+$labels['sep'] = 'Tháng Chín';
+$labels['oct'] = 'Tháng Mười';
+$labels['nov'] = 'Tháng Mười Một';
+$labels['dec'] = 'Tháng Mười Hai';
+$labels['longjan'] = 'Tháng Một';
+$labels['longfeb'] = 'Tháng Hai';
+$labels['longmar'] = 'Tháng Ba';
+$labels['longapr'] = 'Tháng Tư';
+$labels['longjun'] = 'Tháng Sáu';
+$labels['longjul'] = 'Tháng Bảy';
+$labels['longaug'] = 'Tháng Tám';
+$labels['longsep'] = 'Tháng Chín';
+$labels['longoct'] = 'Tháng Mười';
+$labels['longnov'] = 'Tháng Mười Một';
+$labels['longdec'] = 'Tháng Mười Hai';
 $labels['today'] = 'Hôm nay';
-
-// toolbar buttons
-$labels['checkmail']        = 'Kiểm tra thư mới';
-$labels['writenewmessage']  = 'Soạn thư mới';
-$labels['replytomessage']   = 'Trả lời thư';
-$labels['replytoallmessage'] = 'Trả lời tất cả';
-$labels['forwardmessage']   = 'Chuyển thư';
-$labels['deletemessage']    = 'Xóa thư';
-$labels['printmessage']     = 'In thư';
-$labels['previousmessages'] = 'Hiển thị các thư trước';
-$labels['nextmessages']     = 'Hiển thị các thư sau';
-$labels['backtolist']       = 'Trở về danh sách thư';
-$labels['viewsource']       = 'Hiển thị mã nguồn';
-
+$labels['refresh'] = 'Làm mới lại';
+$labels['checkmail'] = 'Kiểm tra thư mới';
+$labels['compose'] = 'Soạn thư';
+$labels['writenewmessage'] = 'Viết thư mới';
+$labels['reply'] = 'Trả lời thư';
+$labels['replytomessage'] = 'Trả lời thư người gửi';
+$labels['replytoallmessage'] = 'Trả lời theo danh sách hoặc tới người gửi và tất cả người nhận';
+$labels['replyall'] = 'Trả lời tất cả';
+$labels['replylist'] = 'Danh sách trả lời';
+$labels['forward'] = 'Chuyển tiếp';
+$labels['forwardinline'] = 'Chuyển tiếp thư';
+$labels['forwardattachment'] = 'Chuyển tiếp như đính kèm';
+$labels['forwardmessage'] = 'Chuyển tiếp thư';
+$labels['deletemessage'] = 'Xóa thư';
+$labels['movemessagetotrash'] = 'Chuyển thư vào thùng rác';
+$labels['printmessage'] = 'In thư này';
+$labels['previousmessage'] = 'Hiển thị thư trước đó';
+$labels['firstmessage'] = 'Hiển thị thư đầu tiên';
+$labels['nextmessage'] = 'Hiển thị thư tiếp theo';
+$labels['lastmessage'] = 'Hiển thị thư cuối';
+$labels['backtolist'] = 'Quay lại danh sách thư';
+$labels['viewsource'] = 'Hiển thị nguồn';
+$labels['mark'] = 'Đánh dấu';
+$labels['markmessages'] = 'Đánh dấu các thư';
+$labels['markread'] = 'Là đã đọc';
+$labels['markunread'] = 'Là chưa đọc';
+$labels['markflagged'] = 'Là quan trọng';
+$labels['markunflagged'] = 'Là không quan trọng';
+$labels['moreactions'] = 'Thêm hành động...';
+$labels['more'] = 'Thêm';
+$labels['back'] = 'Quay lại';
+$labels['options'] = 'Tuỳ chọn';
 $labels['select'] = 'Chọn';
-$labels['all'] = 'Toàn bộ';
-$labels['none'] = 'Bỏ chọn';
+$labels['all'] = 'Tất cả';
+$labels['none'] = 'Không có';
+$labels['nonesort'] = 'Không có';
+$labels['currpage'] = 'Trang hiện thời';
 $labels['unread'] = 'Chưa đọc';
-
-$labels['compact'] = 'Rút gọn';
-$labels['empty'] = 'Xóa rỗng';
-$labels['purge'] = 'Tối giản';
-
-$labels['quota'] = 'Hạn mức';
-$labels['unknown']  = 'không rõ';
-$labels['unlimited']  = 'không hạn chế';
-
-$labels['quicksearch']  = 'Tìm nhanh';
-$labels['resetsearch']  = 'Xóa bỏ tìm kiếm';
-
-// message compose
-$labels['compose']  = 'Soạn thư';
-$labels['savemessage']  = 'Lưu thư đang soạn';
-$labels['sendmessage']  = 'Gửi thư';
-$labels['addattachment']  = 'Gửi kèm';
-$labels['charset']  = 'Bộ ký tự';
+$labels['flagged'] = 'Đã đánh dấu';
+$labels['unanswered'] = 'Chưa được trả lời';
+$labels['deleted'] = 'Đã được xóa';
+$labels['invert'] = 'Đảo ngược';
+$labels['filter'] = 'Lọc';
+$labels['list'] = 'Danh sách';
+$labels['threads'] = 'Dòng thư';
+$labels['expand-all'] = 'Mở rộng tất cả';
+$labels['expand-unread'] = 'Mở rộng thư chưa đọc';
+$labels['collapse-all'] = 'Đóng hết';
+$labels['threaded'] = 'Đã được phân loại';
+$labels['autoexpand_threads'] = 'Mở rộng các dòng thư';
+$labels['do_expand'] = 'Tất cả các dòng thư';
+$labels['expand_only_unread'] = 'Chỉ với những thư chưa đọc';
+$labels['fromto'] = 'Từ/Đến';
+$labels['flag'] = 'Đánh dấu';
+$labels['attachment'] = 'Đính kèm';
+$labels['sentdate'] = 'Ngày đã gửi';
+$labels['arrival'] = 'Ngày đến';
+$labels['asc'] = 'Tăng dần';
+$labels['desc'] = 'Giảm dần';
+$labels['listcolumns'] = 'Các cột danh sách';
+$labels['listsorting'] = 'Phân loại cột';
+$labels['listorder'] = 'Sắp xếp thứ tự';
+$labels['listmode'] = 'Hình thức xem danh sách';
+$labels['folderactions'] = 'Ứng xử với giữ liệu...';
+$labels['compact'] = 'Nén';
+$labels['empty'] = 'Rỗng';
+$labels['quota'] = 'Lượng đĩa sử dụng';
+$labels['unknown'] = 'Không rõ';
+$labels['unlimited'] = 'Không hạn chế';
+$labels['quicksearch'] = 'Tìm nhanh';
+$labels['resetsearch'] = 'Thiết lập lại tìm kiếm';
+$labels['searchmod'] = 'Tìm kiếm với từ khóa và ký tự đặc biệt [() : " - ]';
+$labels['msgtext'] = 'Toàn bộ thư';
+$labels['openinextwin'] = 'Mở bằng cửa sổ mới';
+$labels['emlsave'] = 'Tải về';
+$labels['editasnew'] = 'Sửa thành mới';
+$labels['savemessage'] = 'Lưu dạng nháp';
+$labels['sendmessage'] = 'Gửi thư';
+$labels['addattachment'] = 'Đính kèm tập tin';
+$labels['charset'] = 'Bảng mã';
+$labels['editortype'] = 'Loại soạn thảo';
 $labels['returnreceipt'] = 'Báo nhận';
-
+$labels['dsn'] = 'Thông báo tình trạng phân phát thư';
+$labels['mailreplyintro'] = 'Vào ngày $date, $sender viết:';
+$labels['originalmessage'] = 'Thư gốc';
+$labels['editidents'] = 'Chỉnh sửa nhận diện';
+$labels['spellcheck'] = 'Đánh vần';
 $labels['checkspelling'] = 'Kiểm tra chính tả';
-$labels['resumeediting'] = 'Soạn thảo';
-$labels['revertto'] = 'Chuyển về';
-
-$labels['attachments'] = 'Gửi kèm';
+$labels['resumeediting'] = 'Tiếp tục soạn thảo';
+$labels['revertto'] = 'Trở lại với';
+$labels['attach'] = 'Đính kèm';
+$labels['attachments'] = 'Các đính kèm';
 $labels['upload'] = 'Tải lên';
-$labels['close']  = 'Đóng';
-
-$labels['low']     = 'Thấp';
-$labels['lowest']  = 'Thấp nhất';
-$labels['normal']  = 'Bình thường';
-$labels['high']    = 'Khẩn';
+$labels['uploadprogress'] = '$percent ($current từ $total)';
+$labels['close'] = 'Đóng';
+$labels['messageoptions'] = 'Tùy chọn cho thư...';
+$labels['low'] = 'Thấp';
+$labels['lowest'] = 'Thấp nhất';
+$labels['normal'] = 'Bình thường';
+$labels['high'] = 'Khẩn';
 $labels['highest'] = 'Thượng khẩn';
-
-$labels['nosubject']  = '(no subject)';
+$labels['nosubject'] = '(Không có chủ đề)';
 $labels['showimages'] = 'Hiển thị ảnh';
-
-// address boook
-$labels['name']      = 'Tên hiển thị';
-$labels['firstname'] = 'Tên';
-$labels['surname']   = 'Họ';
-$labels['email']     = 'E-Mail';
-
-$labels['addcontact'] = 'Thêm mới địa chỉ';
-$labels['editcontact'] = 'Sửa địa chỉ cũ';
-
-$labels['edit']   = 'Sửa đổi';
-$labels['cancel'] = 'Ngưng';
-$labels['save']   = 'Lưu';
+$labels['alwaysshow'] = 'Luôn hiển thị hình ảnh từ người gửi';
+$labels['isdraft'] = 'Đây là thư nháp';
+$labels['htmltoggle'] = 'Khối HTML';
+$labels['plaintoggle'] = 'Văn bản thô';
+$labels['savesentmessagein'] = 'Lưu thư đã gửi trong';
+$labels['dontsave'] = 'Không lưu';
+$labels['maxuploadsize'] = 'Dung lượng tập tin tối đa cho phép là $size';
+$labels['addcc'] = 'Thêm Cc';
+$labels['addbcc'] = 'Thêm Bcc';
+$labels['addreplyto'] = 'Thêm trả lời tới';
+$labels['addfollowupto'] = 'Thêm sự theo dõi tới';
+$labels['mdnrequest'] = 'Người gửi thư này yêu cầu được thông báo khi bạn đã đọc thư này. Bạn có muốn thông báo cho người gửi không?';
+$labels['receiptread'] = 'Hồi đáp biên nhận (đã đọc)';
+$labels['yourmessage'] = 'Đây là hồi đáp biên nhận cho thư của bạn';
+$labels['receiptnote'] = 'Lưu ý: Biên nhận này chỉ báo rằng thư đã được hiển thị trên máy tính của người nhận. Không bảo đảm rằng người nhận đó đã có đọc hoặc hiểu nội dung thư.';
+$labels['name'] = 'Tên hiển thị';
+$labels['firstname'] = 'Tên Gọi';
+$labels['surname'] = 'Tên Họ';
+$labels['middlename'] = 'Tên đệm';
+$labels['nameprefix'] = 'Tiền tố';
+$labels['namesuffix'] = 'Hậu tố';
+$labels['nickname'] = 'Biệt danh';
+$labels['jobtitle'] = 'Chức danh Công việc';
+$labels['department'] = 'Khoa/Ban';
+$labels['gender'] = 'Giới tính';
+$labels['maidenname'] = 'Tên thời con gái';
+$labels['email'] = 'Thư điện tử';
+$labels['phone'] = 'Điện thoại';
+$labels['address'] = 'Địa chỉ';
+$labels['street'] = 'Đường';
+$labels['locality'] = 'Thành phố';
+$labels['zipcode'] = 'Mã bưu điện';
+$labels['region'] = 'Bang/Tỉnh';
+$labels['country'] = 'Quốc gia';
+$labels['birthday'] = 'Ngày sinh';
+$labels['anniversary'] = 'Kỷ niệm';
+$labels['website'] = 'Trang Web';
+$labels['instantmessenger'] = 'Tin nhắn';
+$labels['notes'] = 'Các ghi chú';
+$labels['male'] = 'Nam';
+$labels['female'] = 'Nữ';
+$labels['manager'] = 'Người quản lý';
+$labels['assistant'] = 'Trợ lý';
+$labels['typeassistant'] = '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['advsearch'] = 'Tìm kiếm nâng cao';
+$labels['advanced'] = 'Nâng cao';
+$labels['other'] = 'Loại khác';
+$labels['typeother'] = 'Loại khác';
+$labels['typehome'] = 'Thư mục chính';
+$labels['typework'] = 'Cơ quan';
+$labels['typemobile'] = 'Số di động';
+$labels['typemain'] = 'Chính';
+$labels['typehomefax'] = 'Điện thư ở Nhà';
+$labels['typeworkfax'] = 'Điện thư cơ quan';
+$labels['typecar'] = 'Xe';
+$labels['typepager'] = 'Máy nhắn tin';
+$labels['typevideo'] = 'Video';
+$labels['typehomepage'] = 'Trang nhà';
+$labels['typeblog'] = 'Nhật ký Mạng';
+$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ệ';
+$labels['personalinfo'] = 'Thông tin cá nhân';
+$labels['edit'] = 'Chỉnh sửa';
+$labels['cancel'] = 'Huỷ';
+$labels['save'] = 'Lưu';
 $labels['delete'] = 'Xóa';
-
-$labels['newcontact']     = 'Thêm mới địa chỉ liên hệ';
-$labels['deletecontact']  = 'Xóa địa chỉ được chọn';
-$labels['composeto']      = 'Soạn thư cho';
-$labels['contactsfromto'] = 'Địa chỉ từ $from - $to / $count';
-$labels['print']          = 'In thư';
-$labels['export']         = 'Export';
-
-$labels['previouspage']   = 'Trang trước';
-$labels['nextpage']       = 'Trang tiếp';
-
-// LDAP search
-$labels['ldapsearch'] = 'LDAP directory search';
-
-$labels['ldappublicsearchname']    = 'Tên địa chỉ';
-$labels['ldappublicsearchtype'] = 'Khớp toàn bộ?';
-$labels['ldappublicserverselect'] = 'Chọn máy chủ';
-$labels['ldappublicsearchfield'] = 'Tìm trên';
-$labels['ldappublicsearchform'] = 'Tìm địa chỉ liên hệ';
-$labels['ldappublicsearch'] = 'Tìm kiếm';
-
-// settings
-$labels['settingsfor']  = 'Thiết lập cho';
-
-$labels['preferences']  = 'Tham số';
-$labels['userpreferences']  = 'Tham số người dùng';
-$labels['editpreferences']  = 'Sửa đổi';
-
-$labels['identities']  = 'Người dùng';
-$labels['manageidentities']  = 'Quản trị người dùng';
-$labels['newidentity']  = 'Người dùng mới';
-
-$labels['newitem']  = 'Thêm mới';
-$labels['edititem']  = 'Sửa đổi';
-
-$labels['setdefault']  = 'Thiết lập mặc định';
-$labels['language']  = 'Ngôn ngữ';
-$labels['timezone']  = 'Múi giờ';
-$labels['pagesize']  = 'Số dòng trên trang';
+$labels['rename'] = 'Đổi tên';
+$labels['addphoto'] = 'Thêm';
+$labels['replacephoto'] = 'Thay thế';
+$labels['uploadphoto'] = 'Tải ảnh lên';
+$labels['newcontact'] = 'Tạo thẻ 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';
+$labels['print'] = 'In thư';
+$labels['export'] = 'Trích xuất';
+$labels['exportvcards'] = 'Xuất các liên lạc 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';
+$labels['previouspage'] = 'Hiển thị trang trước';
+$labels['firstpage'] = 'Hiển thị đầu tiên';
+$labels['nextpage'] = 'Hiển thị trang tiếp theo';
+$labels['lastpage'] = 'Hiển thị trang cuối';
+$labels['group'] = 'Nhóm';
+$labels['groups'] = 'Các nhóm';
+$labels['personaladrbook'] = 'Các địa chỉ cá nhân';
+$labels['searchsave'] = 'Lưu tìm kiếm';
+$labels['searchdelete'] = 'Xóa tìm kiếm';
+$labels['import'] = 'Nhập';
+$labels['importcontacts'] = 'Nhập liên lạc';
+$labels['importfromfile'] = 'Nhập từ tệp:';
+$labels['importtarget'] = 'Thêm liên lạc mới vào sổ địa chỉ';
+$labels['importreplace'] = 'Thay thế toàn bộ sổ địa chỉ';
+$labels['importtext'] = 'Bạn có thể tải liên lạc lên từ sổ địa chỉ sẵn có.<br/> Chúng tôi hỗ trợ nhập địa chỉ từ <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> data format.';
+$labels['done'] = 'Hoàn tất';
+$labels['settingsfor'] = 'Thiết lập cho';
+$labels['about'] = 'Lời ngõ';
+$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ư kiểu HTML';
+$labels['dateformat'] = 'Định dạng ngày';
+$labels['timeformat'] = 'Định dạng thời gian';
+$labels['prettydate'] = 'Ngày tháng đầy đủ';
+$labels['setdefault'] = 'Thiết lập mặc định';
+$labels['autodetect'] = 'Tự động';
+$labels['language'] = 'Ngôn ngữ';
+$labels['timezone'] = 'Múi giờ';
+$labels['pagesize'] = 'Số dòng trên trang';
 $labels['signature'] = 'Chữ ký';
-$labels['dstactive']  = 'Giờ mùa hè';
-
-$labels['folder']  = 'Thư mục';
-$labels['folders']  = 'Thư mục';
-$labels['foldername']  = 'Tên thư mục';
-$labels['subscribed']  = 'Cho sử dụng';
-$labels['create']  = 'Tạo';
-$labels['createfolder']  = 'Tạo thư mục mới';
-$labels['managefolders']  = 'Quản trị thư mục';
-
-$labels['sortby'] = 'Sắp xếp';
-$labels['sortasc']  = 'Xếp tăng dần';
-$labels['sortdesc'] = 'Xếp giảm dần';
+$labels['dstactive'] = 'Giờ mùa hè';
+$labels['htmleditor'] = 'Soạn thư dạng HTML';
+$labels['htmlonreply'] = 'Chỉ trả lời thư bằng dạng HTML';
+$labels['htmlsignature'] = 'Chữ ký HTML';
+$labels['previewpane'] = 'Hiển thị ô Xem thử';
+$labels['skin'] = 'Bề mặt giao diện';
+$labels['logoutclear'] = 'Xóa sạch rác khi thoát';
+$labels['logoutcompact'] = 'Nén gọn hộp thư lại khi thoát';
+$labels['uisettings'] = 'Giao diện người dùng';
+$labels['serversettings'] = 'Thiết lập máy chủ';
+$labels['mailboxview'] = 'Trình cảnh hộp thư';
+$labels['mdnrequests'] = 'Yêu cầu gửi lại biên nhận';
+$labels['askuser'] = 'Hỏi tôi';
+$labels['autosend'] = 'Gửi biên nhận';
+$labels['autosendknown'] = 'Gửi biên nhận tới liên lạc của tôi, nếu không thì hỏi tôi';
+$labels['autosendknownignore'] = 'Gửi biên nhận tới liên lạc của tôi, nếu không thì bỏ qua';
+$labels['ignore'] = 'Bỏ qua';
+$labels['readwhendeleted'] = 'Đánh dấu thư là đã đọc khi xóa';
+$labels['flagfordeletion'] = 'Đánh dấu thư để xóa thay vì xóa liền';
+$labels['skipdeleted'] = 'Không hiển thị thư đã xóa';
+$labels['deletealways'] = 'Nếu việc chuyển thư vào thùng rác bị lỗi thì xóa luôn.';
+$labels['deletejunk'] = 'Xóa thư trực tiếp trong thùng rác';
+$labels['showremoteimages'] = 'Hiển thị ảnh nội tuyến từ xa';
+$labels['fromknownsenders'] = 'Từ người gửi đã biết';
+$labels['always'] = 'luôn luôn';
+$labels['showinlineimages'] = 'Hiển thị ảnh đính kèm phía dưới thư';
+$labels['autosavedraft'] = 'Tự động lưu bản nháp';
+$labels['everynminutes'] = 'cứ mỗi $n phút';
+$labels['keepalive'] = 'Kiểm tra thư đến';
+$labels['never'] = 'không bao giờ';
+$labels['immediately'] = 'ngay lập tức';
+$labels['messagesdisplaying'] = 'Đang hiển thị thư';
+$labels['messagescomposition'] = 'Đang soạn thư';
+$labels['mimeparamfolding'] = 'Tên đính kèm';
+$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['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ả giữ liệu';
+$labels['displaynext'] = 'Sau khi xóa thư/chuyển hiển thị thư kế tiếp';
+$labels['defaultfont'] = 'Phông chữ mặc định của thư có mã HTML';
+$labels['mainoptions'] = 'Tùy chọn chính';
+$labels['browseroptions'] = 'Tùy chọn Trình duyệt';
+$labels['section'] = 'Mục';
+$labels['maintenance'] = 'Bảo trì';
+$labels['newmessage'] = 'Thư mới';
+$labels['signatureoptions'] = 'Chữ ký tuỳ chọn';
+$labels['whenreplying'] = 'Khi trả lời';
+$labels['replytopposting'] = 'bắt đầu viết thư mới trên nội dung của thư cũ';
+$labels['replybottomposting'] = 'bắt đầu thư mới dưới nội dung thư cũ';
+$labels['replyremovesignature'] = 'Khi trả lời bỏ chữ ký cũ khỏi nội dung thư';
+$labels['autoaddsignature'] = 'Tự động thêm chữ ký';
+$labels['newmessageonly'] = 'chỉ thư mới';
+$labels['replyandforwardonly'] = 'chỉ trả lời và chuyển tiếp thư';
+$labels['replysignaturepos'] = 'Khi trả lời hoặc chuyển tiếp thư thêm vào chữ ký';
+$labels['belowquote'] = 'dưới phần trích dẫn';
+$labels['abovequote'] = 'trên phẩn trích dẫn';
+$labels['insertsignature'] = 'Chèn chữ ký';
+$labels['previewpanemarkread'] = 'Đánh dẫu thư xem thử là đã đọc';
+$labels['afternseconds'] = 'sau $n giây';
+$labels['reqmdn'] = 'Luôn yêu cầu hồi đáp biên nhận';
+$labels['reqdsn'] = 'Luôn yêu cẩu thông báo trạng thái thư đã gửi';
+$labels['replysamefolder'] = 'Nhập các thư trả lời nhận được vào cùng giữ liệu của thư mà bạn đã trả lời';
+$labels['defaultaddressbook'] = 'Tạo liên hệ mới trong sổ địa chỉ đã chọn';
+$labels['autocompletesingle'] = 'Bỏ qua địa chỉ email thay thế trong năng tự động gõ';
+$labels['listnamedisplay'] = 'Hiện thị danh sách liên lạc như';
+$labels['spellcheckbeforesend'] = 'Kiểm tra chính tả trước khi gửi thư';
+$labels['spellcheckoptions'] = 'Tùy chọn kiểm tra chính tả';
+$labels['spellcheckignoresyms'] = 'Bỏ qua từ kèm biểu tượng';
+$labels['spellcheckignorenums'] = 'Bỏ qua các từ kèm số';
+$labels['spellcheckignorecaps'] = 'Bỏ qua các từ được viết hoa';
+$labels['addtodict'] = 'Thêm vào từ điển';
+$labels['mailtoprotohandler'] = 'Đăng ký giao thức cho mailto: liên kết';
+$labels['folder'] = 'Giữ liệu';
+$labels['foldername'] = 'Tên giữ liệu';
+$labels['subscribed'] = 'Đã đăng ký';
+$labels['messagecount'] = 'Các tin nhắn';
+$labels['create'] = 'Tạo';
+$labels['createfolder'] = 'Tạo giữ liệu mới';
+$labels['managefolders'] = 'Quản lý giữ liệu';
+$labels['specialfolders'] = 'Giữ liệu đặc biệt';
+$labels['properties'] = 'Các thuộc tính';
+$labels['folderproperties'] = 'Thuộc tính giữ liệu';
+$labels['parentfolder'] = 'Giữ liệu gốc';
+$labels['location'] = 'Địa điểm';
+$labels['info'] = 'Thông tin';
+$labels['getfoldersize'] = 'Nhấp chuột để xem kích thước giữ liệu';
+$labels['changesubscription'] = 'Nhấp chuột để đổi cách đóng góp';
+$labels['foldertype'] = 'Kiểu giữ liệu';
+$labels['personalfolder'] = 'Giữ liệu cá nhân';
+$labels['otherfolder'] = 'Các giữ liệu khác của người dùng';
+$labels['sharedfolder'] = 'Giữ liệu chung';
+$labels['sortby'] = 'Soạn theo';
+$labels['sortasc'] = 'Soạn tăng dần';
+$labels['sortdesc'] = 'Soạn giảm dần';
+$labels['undo'] = 'Hoàn lại';
+$labels['plugin'] = 'Phần bổ sung';
+$labels['version'] = 'Phiên bản';
+$labels['source'] = 'Nguồn';
+$labels['license'] = 'Bản quyền';
+$labels['support'] = 'Nhận hỗ trợ';
+$labels['B'] = 'B';
+$labels['KB'] = 'KB';
+$labels['MB'] = 'MB';
+$labels['GB'] = 'GB';
+$labels['unicode'] = 'Unicode';
+$labels['english'] = 'Tiếng Anh';
+$labels['westerneuropean'] = 'Tiếng Tây Âu';
+$labels['easterneuropean'] = 'Tiếng Đông Âu';
+$labels['southeasterneuropean'] = 'Tiếng Đông-Nam Âu';
+$labels['baltic'] = 'Tiếng Ban-tích (Ấn-Âu)';
+$labels['cyrillic'] = 'Tiếng Ki-rin';
+$labels['arabic'] = 'Tiếng Ả Rập';
+$labels['greek'] = 'Tiếng Hy Lạp';
+$labels['hebrew'] = 'Tiếng Do Thái';
+$labels['turkish'] = 'Tiếng Thổ Nhĩ Kỳ';
+$labels['nordic'] = 'Tiếng Bắc Âu';
+$labels['thai'] = 'Tiếng Thái Lan';
+$labels['celtic'] = 'Tiếng Xen-tơ';
+$labels['vietnamese'] = 'Tiếng Việt Nam';
+$labels['japanese'] = 'Tiếng Nhật Bản';
+$labels['korean'] = 'Tiếng Hàn Quốc';
+$labels['chinese'] = 'Tiếng Trung Hoa';
 
-?>
\ No newline at end of file
index ad9d0a841eef14d055e16dcbb693a947b9278f9d..7f6facd09dab003e19ac73d0b5264be8735f3fbe 100644 (file)
 <?php
 
 /*
-
  +-----------------------------------------------------------------------+
- | language/vn/messages.inc                                              |
+ | localization/vi_VN/messages.inc                                       |
  |                                                                       |
  | Language file of the Roundcube Webmail client                         |
- | Copyright (C) 2005-2010, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
  |                                                                       |
  +-----------------------------------------------------------------------+
- | Author: Vinh Bui <bqvinh@buivinh.info>                                |
+ | Author: Kenny Tran <kennethanh@gmail.com>                             |
  +-----------------------------------------------------------------------+
-
- @version $Id: messages.inc 4410 2011-01-12 18:25:02Z thomasb $
-
 */
 
 $messages = array();
-$messages['loginfailed']  = 'Không đăng nhập được';
+$messages['errortitle'] = 'Xuất hiện 1 lỗi';
+$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['imaperror'] = 'Không kết nối được với máy chủ IMAP';
-$messages['nomessagesfound'] = 'Không có thư trong hòm thư này';
-$messages['loggedout'] = 'Phiên làm việc đã kết thúc. Hẹn gặp lại!';
+$messages['storageerror'] = 'Không kết nối được với máy chủ IMAP';
+$messages['servererror'] = 'Lỗi máy chủ';
+$messages['servererrormsg'] = 'Lỗi 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. Giữ liệu chỉ cho phép đọc.';
+$messages['errornoperm'] = 'Không thể thực hiện thao tác. Sự cho phép bị từ chối.';
+$messages['invalidrequest'] = 'Yêu cầu không hợp lệ! Không có dữ liệu nào được lưu.';
+$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['mailboxempty'] = 'Hộp thư rỗng';
-$messages['loading'] = 'Vui lòng chờ trong giây lát...';
+$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['loadingdata'] = 'Đang nạp dữ liệu...';
 $messages['checkingmail'] = 'Kiểm tra thư mới...';
 $messages['sendingmessage'] = 'Đang gửi thư...';
-$messages['messagesent'] = 'Thư đã được gửi';
+$messages['messagesent'] = 'Thư đã được gửi thành công.';
 $messages['savingmessage'] = 'Đang lưu thư...';
-$messages['messagesaved'] = 'Thư đã được gửi vào ngăn Drafts';
+$messages['messagesaved'] = 'Thư đã được lưu lại vào hộp thư Nháp.';
 $messages['successfullysaved'] = 'Đã lưu thành công';
-$messages['addedsuccessfully'] = 'Địa chỉ liên hệ đã được lưu';
-$messages['contactexists'] = 'Địa chỉ liên hệ với e-mail này đã được lưu trước đâ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['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 địa chỉ liên hệ';
+$messages['nocontactsfound'] = 'Không tìm thấy liên hệ.';
+$messages['contactnotfound'] = 'Không tìm thấy liên lạc được yêu cầu';
+$messages['contactsearchonly'] = 'Gõ một vài từ tìm kiếm để tìm liên hệ';
 $messages['sendingfailed'] = 'Không gửi được thư';
-$messages['errorsaving'] = 'Lỗi khi lưu';
+$messages['senttooquickly'] = 'Xin đợi vài giây trước khi gửi thư này';
+$messages['errorsavingsent'] = 'Xuất hiện một lỗi trong khi lưu thư đã gửi';
+$messages['errorsaving'] = 'Lỗi trong quá trình lưu.';
 $messages['errormoving'] = 'Không thể chuyển được thư';
+$messages['errorcopying'] = 'Không thể sao chép thư';
 $messages['errordeleting'] = 'Không thể xóa được thư';
-$messages['deletecontactconfirm']  = 'Xóa bỏ các địa chỉ được chọn?';
-$messages['deletefolderconfirm']  = 'Xóa bỏ thư mục này?';
-$messages['purgefolderconfirm']  = 'Xóa toàn bộ thư trong thư mục nào?';
-$messages['formincomplete'] = 'Mẫu chưa được điền xong';
-$messages['noemailwarning'] = 'Nhập địa chỉ email';
-$messages['nonamewarning']  = 'Nhập tên';
-$messages['nopagesizewarning'] = 'Nhập kích cỡ của trang';
-$messages['norecipientwarning'] = 'Thư cần có it nhất 1 người nhận';
-$messages['nosubjectwarning']  = 'Mục "Tiêu đề" chưa có. Điền tiêu đề ?';
-$messages['nobodywarning'] = 'Thư không nội dung, vẫn tiếp tục gửi?';
+$messages['errormarking'] = 'Không thể đánh dấu (các) thư';
+$messages['deletecontactconfirm'] = 'Bạn có thực sự muốn xoá liên hệ đã chọn?';
+$messages['deletegroupconfirm'] = 'Bạn có thực sự muốn xóa nhóm đã chọn?';
+$messages['deletemessagesconfirm'] = 'Bạn thực sự có muốn xóa (các) thư đã chọn?';
+$messages['deletefolderconfirm'] = 'Bạn có thực sự muốn xóa giữ liệu này?';
+$messages['purgefolderconfirm'] = 'Bạn có thực sự muốn xóa toàn bộ thư trong giữ liệu này?';
+$messages['contactdeleting'] = 'Đang xóa (các) liên lạc...';
+$messages['groupdeleting'] = 'Đang xóa nhóm...';
+$messages['folderdeleting'] = 'Đang xóa giữ liệu...';
+$messages['foldermoving'] = 'Đang chuyển giữ liệu...';
+$messages['foldersubscribing'] = 'Nhập vào giữ liệu...';
+$messages['folderunsubscribing'] = 'Không nhập giữ liệu...';
+$messages['formincomplete'] = 'Mẫu đơn chưa được hoàn toàn điền xong.';
+$messages['noemailwarning'] = 'Xin nhập địa chỉ email hợp lệ.';
+$messages['nonamewarning'] = 'Xin nhập tên.';
+$messages['nopagesizewarning'] = 'Xin nhập kích cỡ của trang.';
+$messages['nosenderwarning'] = 'Xin nhập địa chỉ email người gửi';
+$messages['norecipientwarning'] = 'Xin nhập it nhất 1 người nhận.';
+$messages['nosubjectwarning'] = 'Mục "Tiêu đề" vẫn còn trống. Bạn có muốn nhập tiêu đề bây giờ không?';
+$messages['nobodywarning'] = 'Gửi thư không có nội dung?';
 $messages['notsentwarning'] = 'Thư chưa được gửi. Bỏ qua thư đang soạn?';
 $messages['noldapserver'] = 'Chọn máy chủ ldap server để tìm';
-$messages['nocontactsreturned'] = 'Không tìm thấy địa chỉ';
-$messages['nosearchname'] = 'Nhập địa chỉ hoặc email';
-$messages['searchsuccessful'] = '$nr messages found';
-$messages['searchnomatch'] = 'Không tìm thấy';
-$messages['searching'] = 'Tìm kiếm...';
-$messages['checking'] = 'Kiểm tra...';
-$messages['nospellerrors'] = 'Không có lỗi chính tả';
-$messages['folderdeleted'] = 'Thư mục đã được xóa';
+$messages['nosearchname'] = 'Nhập liên hệ hoặc địa chỉ email.';
+$messages['notuploadedwarning'] = 'Tất cả các đính kèm vẫn chưa được tải lên hết. Xin đợi hoặc hủy việc tải lên.';
+$messages['searchsuccessful'] = '$nr thư đã tìm được.';
+$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['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.';
+$messages['folderunsubscribed'] = 'Giữ liệu không nhập vào thành công.';
+$messages['folderpurged'] = 'Giữ liệu được làm trống rỗng thành công.';
+$messages['folderexpunged'] = 'Giữ liệu đã được nén lại thành công.';
+$messages['deletedsuccessfully'] = 'Đã xóa thành công';
+$messages['converting'] = 'Loại bỏ định dạng...';
+$messages['messageopenerror'] = 'Không thể tải thư từ máy chủ';
+$messages['fileuploaderror'] = 'Tải tập tin lên thất bại';
+$messages['filesizeerror'] = 'Tập tin được tải lên vượt quá dung lượng tối đa....';
+$messages['copysuccess'] = 'Sao chép thành công $nr địa chỉ.';
+$messages['copyerror'] = 'Không thể sao chép đỉa chỉ nào.';
+$messages['sourceisreadonly'] = 'Nguồn địa chỉ này chỉ cho đọc';
+$messages['errorsavingcontact'] = 'Không thể lưu địa chỉ liên lạc';
+$messages['movingmessage'] = 'Đang chuyển thư...';
+$messages['copyingmessage'] = 'Đang sao chép thư...';
+$messages['copyingcontact'] = 'Đang sao chép liên lạc...';
+$messages['deletingmessage'] = 'Đang xóa thư...';
+$messages['markingmessage'] = 'Đánh dấu thư...';
+$messages['addingmember'] = 'Đang thêm liên lạc vào nhóm...';
+$messages['removingmember'] = 'Đang xóa liên lạc từ nhóm...';
+$messages['receiptsent'] = 'Gửi thành công ghi nhận đã đọc';
+$messages['errorsendingreceipt'] = 'Không thể gửi ghi nhận';
+$messages['deleteidentityconfirm'] = 'Bạn có thực sự muốn xóa nhận diện này?';
+$messages['nodeletelastidentity'] = 'Bạn không thể xóa nhận diện này, đó là cái cuối cùng của bạn.';
+$messages['forbiddencharacter'] = 'Tên giữ liệu chứa một ký tự bị cấm.';
+$messages['selectimportfile'] = 'Xin chọn hồ sơ để tải lên.';
+$messages['addresswriterror'] = 'Sổ địa chỉ đã chọn không thể viết lại được';
+$messages['contactaddedtogroup'] = 'Thêm liên lạc vào nhóm này thành công';
+$messages['contactremovedfromgroup'] = 'Xóa liên lạc khỏi nhóm này thành công';
+$messages['importwait'] = 'Đang nhập, xin chờ...';
+$messages['importerror'] = 'Nhập thất bại! Tập tin tải lên không phải là tập tin vCard hợp lệ.';
+$messages['importconfirm'] = 'Đã nhập $inserted liên hệ đã chèn vào thành công.';
+$messages['importconfirmskipped'] = 'Đã bỏ qua được $skipped mục tồn tại.';
+$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 diện 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ừoi 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.';
+$messages['smtpfromerror'] = 'Lỗi SMTP ($code):  Không thể bố trí người gửi "$from" ($msg).';
+$messages['smtptoerror'] = 'Lỗi SMTP ($code):  Không thể bố trí người nhận "$to" ($msg).';
+$messages['smtprecipientserror'] = 'Lỗi SMTP: không thể phân loại danh sách người nhận';
+$messages['smtperror'] = 'Lỗi SMTP: $msg';
+$messages['emailformaterror'] = 'Địa chỉ email không hợp lệ';
+$messages['toomanyrecipients'] = 'Quá nhiều người nhận. Hãy giảm số lượng người nhận xuống tối đa là $max.';
+$messages['maxgroupmembersreached'] = 'Số lượng thành viên trong nhóm vượt quá mức tối đa là $max.';
+$messages['internalerror'] = 'Xuất hiện một lỗi nội bộ. Xin hãy thử lại';
+$messages['contactdelerror'] = 'Không thể xóa liên lạc';
+$messages['contactdeleted'] = 'Liên lạc được xóa thành công';
+$messages['contactrestoreerror'] = 'Không thể khôi phục liên lạc đã xóa';
+$messages['contactrestored'] = 'Liên lạc được khôi phục thành công';
+$messages['groupdeleted'] = 'Nhóm được xóa thành công';
+$messages['grouprenamed'] = 'Nhóm được đặt tên lại thành công';
+$messages['groupcreated'] = 'Nhóm được tạo thành công';
+$messages['savedsearchdeleted'] = 'Tìm kiếm đã lưu được xóa thành công';
+$messages['savedsearchdeleteerror'] = 'Không thể xóa tìm kiếm đã lưu';
+$messages['savedsearchcreated'] = 'Tìm kiếm đã lưu được tạo thành công';
+$messages['savedsearchcreateerror'] = 'Không thể tạo tìm kiếm đã lưu';
+$messages['messagedeleted'] = 'Thư được xóa thành công';
+$messages['messagemoved'] = 'Thư được chuyển đi thành công';
+$messages['messagecopied'] = 'Thư được sao chép thành công';
+$messages['messagemarked'] = 'Thư được đánh dấu thành công';
+$messages['autocompletechars'] = 'Phải nhập ít nhất $min ký tự để năng tự động gõ';
+$messages['autocompletemore'] = 'Nhiều dữ liệu phù hợp hơn được tìm thấy. Hãy gõ thêm  ký tự.';
+$messages['namecannotbeempty'] = 'Tên không được để trống';
+$messages['nametoolong'] = 'Tên quá dài';
+$messages['folderupdated'] = 'Giữ liệu được cập nhật thành công';
+$messages['foldercreated'] = 'Giữ liệu được tạo thành công';
+$messages['invalidimageformat'] = 'Không phải là định dạng ảnh hợp lệ.';
+$messages['mispellingsfound'] = 'Lỗi chính tả được phát hiện trong thư';
+$messages['parentnotwritable'] = 'Không thể tạo/chuyển folder vào folder gốc đã chọn. Không có quyền truy cập.';
+$messages['messagetoobig'] = 'Một phần thư quá lớn để xử lý nó.';
 
-?>
\ No newline at end of file
index 442f4a6032b4927c5dc61d1f86bb9c61307ad568..62bd376c0f49b7a609bf9432340111182df21510 100644 (file)
@@ -1,47 +1,33 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| localization/zh_CN/labels.inc                                         |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, Roundcube Dev. - Switzerland                 |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Xue zhong sheng <xue.zhongsheng@gmail.com>                    |
-|         Zhang Huang bin <michaelbibby@gmail.com>                      |
-|         Kelphon Tang <kelphon@kingstor.com>                          |
-+-----------------------------------------------------------------------+
-
-@version $Id: labels.inc 5569 2011-12-07 14:47:32Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/zh_CN/labels.inc                                         |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Christopher Meng <cickumqt@gmail.com>                         |
+ +-----------------------------------------------------------------------+
 */
 
 $labels = array();
-
-// login page
 $labels['welcome'] = '欢迎使用 $product';
 $labels['username'] = '用户名';
 $labels['password'] = '密码';
 $labels['server'] = '服务器';
 $labels['login'] = '登录';
-
-// taskbar
 $labels['logout'] = '注销';
 $labels['mail'] = '邮件';
 $labels['settings'] = '设置';
 $labels['addressbook'] = '通讯录';
-
-// mailbox names
 $labels['inbox'] = '收件箱';
-$labels['drafts'] = '草稿';
-$labels['sent'] = '已发送邮件';
-$labels['trash'] = 'å\9b\9eæ\94¶ç«\99';
+$labels['drafts'] = '草稿';
+$labels['sent'] = '已发送';
+$labels['trash'] = 'å·²å\88 é\99¤é\82®ä»¶';
 $labels['junk'] = '垃圾邮件';
-
-// message listing
 $labels['subject'] = '主题';
 $labels['from'] = '发件人';
 $labels['to'] = '收件人';
@@ -52,34 +38,28 @@ $labels['followupto'] = '投递组';
 $labels['date'] = '日期';
 $labels['size'] = '大小';
 $labels['priority'] = '优先级';
-$labels['organization'] = '组织';
-$labels['reply-to'] = '回复至';
-
-$labels['mailboxlist'] = '邮件夹';
+$labels['organization'] = '公司';
+$labels['readstatus'] = '阅读状态';
+$labels['mailboxlist'] = '目录管理';
+$labels['folders'] = '目录管理';
 $labels['messagesfromto'] = '第 $from 到 $to,共 $count 封邮件';
 $labels['threadsfromto'] = '第 $from 到 $to,共 $count 个主题';
 $labels['messagenrof'] = '第 $nr 封邮件,共 $count 封';
-
+$labels['fromtoshort'] = '自 $from – $to 统计 $count';
 $labels['copy'] = '复制';
 $labels['move'] = '移动';
-$labels['moveto'] = '移动';
+$labels['moveto'] = '移动';
 $labels['download'] = '下载';
-
 $labels['filename'] = '文件名';
 $labels['filesize'] = '文件大小';
-
-$labels['addtoaddressbook'] = '添加到通讯录';
-
-// weekdays short
+$labels['addtoaddressbook'] = '添加至通讯录';
 $labels['sun'] = '周日';
-$labels['mon'] = '周一';
-$labels['tue'] = '周二';
-$labels['wed'] = '周三';
-$labels['thu'] = '周四';
-$labels['fri'] = '周五';
-$labels['sat'] = '周六';
-
-// weekdays long
+$labels['mon'] = '星期一';
+$labels['tue'] = '星期二';
+$labels['wed'] = '星期三';
+$labels['thu'] = '星期四';
+$labels['fri'] = '星期五';
+$labels['sat'] = '星期六';
 $labels['sunday'] = '星期日';
 $labels['monday'] = '星期一';
 $labels['tuesday'] = '星期二';
@@ -87,13 +67,12 @@ $labels['wednesday'] = '星期三';
 $labels['thursday'] = '星期四';
 $labels['friday'] = '星期五';
 $labels['saturday'] = '星期六';
-
-// months short
 $labels['jan'] = '一月';
 $labels['feb'] = '二月';
 $labels['mar'] = '三月';
 $labels['apr'] = '四月';
 $labels['may'] = '五月';
+$labels['longmay'] = '五月';
 $labels['jun'] = '六月';
 $labels['jul'] = '七月';
 $labels['aug'] = '八月';
@@ -101,13 +80,10 @@ $labels['sep'] = '九月';
 $labels['oct'] = '十月';
 $labels['nov'] = '十一月';
 $labels['dec'] = '十二月';
-
-// months long
 $labels['longjan'] = '一月';
 $labels['longfeb'] = '二月';
 $labels['longmar'] = '三月';
 $labels['longapr'] = '四月';
-$labels['longmay'] = '五月';
 $labels['longjun'] = '六月';
 $labels['longjul'] = '七月';
 $labels['longaug'] = '八月';
@@ -115,17 +91,18 @@ $labels['longsep'] = '九月';
 $labels['longoct'] = '十月';
 $labels['longnov'] = '十一月';
 $labels['longdec'] = '十二月';
-
-$labels['today'] = '今日';
-
-// toolbar buttons
-$labels['checkmail']        = '收取新邮件';
-$labels['writenewmessage'] = '写新邮件';
+$labels['today'] = '今天';
+$labels['refresh'] = '刷新';
+$labels['checkmail'] = '收取新邮件';
+$labels['compose'] = '写邮件';
+$labels['writenewmessage'] = '写邮件';
+$labels['reply'] = '回复';
 $labels['replytomessage'] = '回复发件人';
 $labels['replytoallmessage'] = '回复所有';
-$labels['replyall']         = '回复全部';
-$labels['replylist']        = '回复列表';
-$labels['forwardinline']    = '直接转发';
+$labels['replyall'] = '回复全部';
+$labels['replylist'] = '回复列表';
+$labels['forward'] = '转发';
+$labels['forwardinline'] = '直接转发';
 $labels['forwardattachment'] = '以附件转发';
 $labels['forwardmessage'] = '转发邮件';
 $labels['deletemessage'] = '删除邮件';
@@ -137,16 +114,20 @@ $labels['nextmessage'] = '下一封';
 $labels['lastmessage'] = '最后一封';
 $labels['backtolist'] = '返回邮件列表';
 $labels['viewsource'] = '显示邮件源文件';
+$labels['mark'] = '标记';
 $labels['markmessages'] = '标记邮件';
 $labels['markread'] = '已读';
 $labels['markunread'] = '未读';
 $labels['markflagged'] = '已标记';
 $labels['markunflagged'] = '未标记';
-$labels['messageactions'] = '更多操作...';
-
+$labels['moreactions'] = '更多动作...';
+$labels['more'] = '更多';
+$labels['back'] = '后退';
+$labels['options'] = '选项';
 $labels['select'] = '选择';
 $labels['all'] = '全部';
 $labels['none'] = '无';
+$labels['nonesort'] = '无';
 $labels['currpage'] = '当前页';
 $labels['unread'] = '未读';
 $labels['flagged'] = '已标记';
@@ -154,21 +135,18 @@ $labels['unanswered'] = '未回复';
 $labels['deleted'] = '删除';
 $labels['invert'] = '反选';
 $labels['filter'] = '过滤';
-
 $labels['list'] = '列表';
 $labels['threads'] = '主题';
 $labels['expand-all'] = '展开全部';
 $labels['expand-unread'] = '展开未读';
 $labels['collapse-all'] = '收合全部';
 $labels['threaded'] = '线索';
-
 $labels['autoexpand_threads'] = '展开消息主题';
 $labels['do_expand'] = '所有主题';
 $labels['expand_only_unread'] = '仅未读消息';
 $labels['fromto'] = '发件人/收件人';
 $labels['flag'] = '标志';
 $labels['attachment'] = '附件';
-$labels['nonesort'] = '无';
 $labels['sentdate'] = '发送日期';
 $labels['arrival'] = '到达日期';
 $labels['asc'] = '升序';
@@ -177,25 +155,18 @@ $labels['listcolumns'] = '列表列';
 $labels['listsorting'] = '排序列';
 $labels['listorder'] = '排序';
 $labels['listmode'] = '列表视图样式';
-
 $labels['folderactions'] = '目录操作...';
 $labels['compact'] = '压缩';
 $labels['empty'] = '清空';
-
 $labels['quota'] = '邮箱容量';
 $labels['unknown'] = '未知';
 $labels['unlimited'] = '无限制';
-
 $labels['quicksearch'] = '快速查找';
 $labels['resetsearch'] = '清空查找内容';
 $labels['searchmod'] = '搜寻模式';
 $labels['msgtext'] = '整个邮件';
-
 $labels['openinextwin'] = '在新窗口中打开';
 $labels['emlsave'] = '下载(.eml)';
-
-// message compose
-$labels['compose']        = '写新邮件';
 $labels['editasnew'] = '编辑为新邮件';
 $labels['savemessage'] = '保存为草稿';
 $labels['sendmessage'] = '立即发送';
@@ -203,105 +174,96 @@ $labels['addattachment'] = '添加附件';
 $labels['charset'] = '字符集';
 $labels['editortype'] = '编辑器类型';
 $labels['returnreceipt'] = '邮件回执';
-$labels['dsn']            = '投递状态提示';
+$labels['dsn'] = '投递状态提示';
 $labels['mailreplyintro'] = '于 $date, $sender 回复:';
-
-$labels['editidents']    = '编辑身份';
+$labels['originalmessage'] = '原始信件';
+$labels['editidents'] = '编辑身份';
+$labels['spellcheck'] = '拼写';
 $labels['checkspelling'] = '拼写检查';
 $labels['resumeediting'] = '重新编辑';
 $labels['revertto'] = '恢复至';
-
+$labels['attach'] = '附加';
 $labels['attachments'] = '附件';
 $labels['upload'] = '上传';
 $labels['uploadprogress'] = '$percent ($current / $total)';
 $labels['close'] = '关闭';
-$labels['messageoptions']  = '邮件选项...';
-
+$labels['messageoptions'] = '邮件选项...';
 $labels['low'] = '低';
 $labels['lowest'] = '最低';
 $labels['normal'] = '普通';
 $labels['high'] = '高';
 $labels['highest'] = '最高';
-
 $labels['nosubject'] = '(无主题)';
 $labels['showimages'] = '显示图片';
 $labels['alwaysshow'] = '总是在来自 $sender 的邮件中显示图片';
-
+$labels['isdraft'] = '这是邮件草稿';
 $labels['htmltoggle'] = 'HTML';
 $labels['plaintoggle'] = '纯文本';
 $labels['savesentmessagein'] = '将已发送邮件保存到';
 $labels['dontsave'] = '不保存';
 $labels['maxuploadsize'] = '允许的最大文件大小是 $size';
-
 $labels['addcc'] = '添加抄送';
 $labels['addbcc'] = '添加密送';
 $labels['addreplyto'] = '添加回复';
 $labels['addfollowupto'] = '添加投递组';
-
-// mdn
 $labels['mdnrequest'] = '发件人要求在您阅读这封邮件时发送通知。您是否希望通知发件人?';
 $labels['receiptread'] = '发送回执(已读)';
 $labels['yourmessage'] = '这是您的邮件回执';
 $labels['receiptnote'] = '注意:回执只表示邮件在收件人的电脑上被打开过,不表示收件人已经阅读或已理解邮件的内容。';
-
-// address boook
 $labels['name'] = '显示名称';
 $labels['firstname'] = '名字';
 $labels['surname'] = '姓氏';
-$labels['middlename']   = '中名';
-$labels['nameprefix']   = '前缀';
-$labels['namesuffix']   = '后缀';
-$labels['nickname']     = '昵称';
-$labels['jobtitle']     = '职位';
-$labels['organization'] = '公司';
-$labels['department']   = '部门';
-$labels['gender']       = 'Gender';
-$labels['maidenname']   = '娘家姓';
-$labels['email']        = 'Email';
-$labels['phone']        = '电话';
-$labels['address']      = '地址';
-$labels['street']       = '街道';
-$labels['locality']     = '城市';
-$labels['zipcode']      = '邮编';
-$labels['region']       = '省份';
-$labels['country']      = '国家';
-$labels['birthday']     = '生日';
-$labels['anniversary']  = '纪念日';
-$labels['website']      = '主页';
+$labels['middlename'] = '中名';
+$labels['nameprefix'] = '前缀';
+$labels['namesuffix'] = '后缀';
+$labels['nickname'] = '昵称';
+$labels['jobtitle'] = '职位';
+$labels['department'] = '部门';
+$labels['gender'] = 'Gender';
+$labels['maidenname'] = '娘家姓';
+$labels['email'] = 'Email';
+$labels['phone'] = '电话';
+$labels['address'] = '地址';
+$labels['street'] = '街道';
+$labels['locality'] = '城市';
+$labels['zipcode'] = '邮编';
+$labels['region'] = '省份';
+$labels['country'] = '国家';
+$labels['birthday'] = '生日';
+$labels['anniversary'] = '纪念日';
+$labels['website'] = '主页';
 $labels['instantmessenger'] = 'QQ';
 $labels['notes'] = '备注';
-$labels['male']   = '男';
+$labels['male'] = '男';
 $labels['female'] = '女';
 $labels['manager'] = '经理';
 $labels['assistant'] = '助理';
+$labels['typeassistant'] = '助理';
 $labels['spouse'] = '配偶';
 $labels['allfields'] = '所有项目';
 $labels['search'] = '查询';
 $labels['advsearch'] = '高级查询';
+$labels['advanced'] = '高级选项';
 $labels['other'] = '其他';
-
-$labels['typehome']   = '家庭';
-$labels['typework']   = '工作';
-$labels['typeother']  = '其他';
-$labels['typemobile']  = '手机';
-$labels['typemain']  = '主';
-$labels['typehomefax']  = '家庭传真';
-$labels['typeworkfax']  = '工作传真';
-$labels['typecar']  = '车牌';
-$labels['typepager']  = '呼机';
-$labels['typevideo']  = '视频';
-$labels['typeassistant']  = '助理';
-$labels['typehomepage']  = '主页';
+$labels['typeother'] = '其他';
+$labels['typehome'] = '家庭';
+$labels['typework'] = '工作';
+$labels['typemobile'] = '手机';
+$labels['typemain'] = '主';
+$labels['typehomefax'] = '家庭传真';
+$labels['typeworkfax'] = '工作传真';
+$labels['typecar'] = '车牌';
+$labels['typepager'] = '呼机';
+$labels['typevideo'] = '视频';
+$labels['typehomepage'] = '主页';
 $labels['typeblog'] = '博客';
 $labels['typeprofile'] = '资历';
-
 $labels['addfield'] = '增加项..';
 $labels['addcontact'] = '添加联系人';
 $labels['editcontact'] = '编辑联系人';
 $labels['contacts'] = '联系人';
 $labels['contactproperties'] = '联系人信息';
 $labels['personalinfo'] = '个人信息';
-
 $labels['edit'] = '编辑';
 $labels['cancel'] = '取消';
 $labels['save'] = '保存';
@@ -309,7 +271,7 @@ $labels['delete'] = '删除';
 $labels['rename'] = '更名';
 $labels['addphoto'] = '上传';
 $labels['replacephoto'] = '覆盖';
-
+$labels['uploadphoto'] = '上传照片';
 $labels['newcontact'] = '新建联系人';
 $labels['deletecontact'] = '删除选中的联系人';
 $labels['composeto'] = '写信给';
@@ -318,19 +280,18 @@ $labels['print'] = '打印';
 $labels['export'] = '导出';
 $labels['exportvcards'] = '以 vCard 格式导出联系人';
 $labels['newcontactgroup'] = '创建新的组';
-$labels['groupactions'] = '组操作...';
-$labels['grouprename']    = '重命名组';
-$labels['groupdelete']    = '删除组';
-
+$labels['grouprename'] = '重命名组';
+$labels['groupdelete'] = '删除组';
+$labels['groupremoveselected'] = '从分组中移除选中的联系人';
 $labels['previouspage'] = '上一页';
 $labels['firstpage'] = '第一页';
 $labels['nextpage'] = '下一页';
 $labels['lastpage'] = '最后一页';
-
 $labels['group'] = '分组';
 $labels['groups'] = '分组';
 $labels['personaladrbook'] = '个人通讯录';
-
+$labels['searchsave'] = '保存搜索';
+$labels['searchdelete'] = '删除搜索';
 $labels['import'] = '导入';
 $labels['importcontacts'] = '导入联系人';
 $labels['importfromfile'] = '从文件导入';
@@ -338,24 +299,21 @@ $labels['importtarget'] = '增加新联系人到通讯录:';
 $labels['importreplace'] = '替换整个地址簿';
 $labels['importtext'] = '你可以从已有的地址簿导入联系人。目前支持从 vCard 数据格式导入地址簿。';
 $labels['done'] = '完成';
-
-// settings
 $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['dateformat'] = '日期格式';
+$labels['timeformat'] = '时间格式';
 $labels['prettydate'] = '短日期格式';
 $labels['setdefault'] = '设为默认';
 $labels['autodetect'] = '自动';
@@ -384,6 +342,7 @@ $labels['readwhendeleted'] = '删除后标记为已读';
 $labels['flagfordeletion'] = '标记邮件为已删除而不是实际删除';
 $labels['skipdeleted'] = '不显示标记为已删除的邮件';
 $labels['deletealways'] = '如果移动邮件到回收站失败,则删除';
+$labels['deletejunk'] = '在、';
 $labels['showremoteimages'] = '显示内嵌的图片';
 $labels['fromknownsenders'] = '来自已知发件人';
 $labels['always'] = '总是';
@@ -404,11 +363,12 @@ $labels['advancedoptions'] = '高级选项';
 $labels['focusonnewmessage'] = '新邮件到达时将窗口提升为焦点窗口';
 $labels['checkallfolders'] = '检查所有邮件夹里的新邮件';
 $labels['displaynext'] = '当邮件删掉/移动后显示下一封邮件';
+$labels['defaultfont'] = '默认的HTML格式字体';
 $labels['mainoptions'] = '主要选项';
+$labels['browseroptions'] = '浏览器选项';
 $labels['section'] = '项目';
 $labels['maintenance'] = '维护';
 $labels['newmessage'] = '新邮件';
-$labels['listoptions'] = '列表选项';
 $labels['signatureoptions'] = '签名选项';
 $labels['whenreplying'] = '当回复时';
 $labels['replytopposting'] = '在原文上面开始新邮件';
@@ -427,10 +387,14 @@ $labels['reqmdn'] = '总是要求回执';
 $labels['reqdsn'] = '总是要求投递状态通知';
 $labels['replysamefolder'] = '保存回复邮件到邮件相同的目录';
 $labels['defaultaddressbook'] = '增加联系人到所选通讯录';
+$labels['autocompletesingle'] = '跳过自动完成的电子邮件地址';
 $labels['spellcheckbeforesend'] = '发邮件前进行拼写检查';
-
+$labels['spellcheckoptions'] = '拼写检查选项';
+$labels['spellcheckignoresyms'] = '忽略带符号的单词';
+$labels['spellcheckignorenums'] = '忽略带数字的单词';
+$labels['spellcheckignorecaps'] = '忽略所有大写字母的单词';
+$labels['addtodict'] = '添加到字典中';
 $labels['folder'] = '目录管理';
-$labels['folders'] = '目录管理';
 $labels['foldername'] = '邮件夹名称';
 $labels['subscribed'] = '已订阅';
 $labels['messagecount'] = '邮件数量';
@@ -446,22 +410,22 @@ $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'] = '递减排序';
 $labels['undo'] = '撤销';
-
-// units
+$labels['plugin'] = '插件';
+$labels['version'] = '版本';
+$labels['source'] = '源';
+$labels['license'] = '许可协议';
+$labels['support'] = '获取支持';
 $labels['B'] = 'B';
 $labels['KB'] = 'KB';
 $labels['MB'] = 'MB';
 $labels['GB'] = 'GB';
-
-// character sets
 $labels['unicode'] = 'Unicode';
 $labels['english'] = '英语';
 $labels['westerneuropean'] = '西欧';
@@ -481,4 +445,3 @@ $labels['japanese'] = '日文';
 $labels['korean'] = '韩语';
 $labels['chinese'] = '中文';
 
-?>
\ No newline at end of file
index 28df0e54c6ce2870b669f598e9b3ba3cdec162b1..f15f779979e5481c2dc0f4a9f14fee03e1f54b7e 100644 (file)
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| localization/zh_CN/messages.inc                                       |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, Roundcube Dev. - Switzerland                 |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: Xue zhong sheng <xue.zhongsheng@gmail.com>                    |
-|         Zhang Huang bin <michaelbibby@gmail.com>                      |
-|         Kelphon Tang <kelphon@kingstor.com>                          |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 5569 2011-12-07 14:47:32Z thomasb $
-
+ +-----------------------------------------------------------------------+
+ | localization/zh_CN/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Christopher Meng <cickumqt@gmail.com>                         |
+ +-----------------------------------------------------------------------+
 */
 
 $messages = array();
-$messages['loginfailed'] = '登录失败';
-$messages['cookiesdisabled'] = '您的浏览器不接受 cookies';
-$messages['sessionerror'] = '会话已过期';
-$messages['imaperror'] = '连接到邮件服务器失败';
+$messages['errortitle'] = '发生错误!';
+$messages['loginfailed'] = '登录失败。';
+$messages['cookiesdisabled'] = '您的浏览器不接受 cookies。';
+$messages['sessionerror'] = '会话已过期。';
+$messages['storageerror'] = '连接到邮件服务器失败。';
 $messages['servererror'] = '服务器错误!';
 $messages['servererrormsg'] = '服务器错误: $msg';
-$messages['databaserror'] = '数据库错误!';
-$messages['errorreadonly'] = '不可对只读文件夹进行操作';
+$messages['dberror'] = '数据库错误!';
+$messages['requesttimedout'] = '请求超时';
+$messages['errorreadonly'] = '不可对只读文件夹进行操作。';
 $messages['errornoperm'] = '无权限操作';
 $messages['invalidrequest'] = '无效的请求!数据保存失败。';
-$messages['nomessagesfound'] = '此邮件夹内无邮件';
-$messages['loggedout'] = '您已成功注销';
+$messages['nomessagesfound'] = '此邮件夹内无邮件';
+$messages['loggedout'] = '您已成功注销,再见!';
 $messages['mailboxempty'] = '邮件夹为空';
-$messages['loading'] = '正在加载...';
+$messages['loading'] = '正在载入...';
 $messages['uploading'] = '正在上传文件...';
-$messages['uploadingmany'] = '正在上传多个文件...';
-$messages['loadingdata'] = '正在加载数据...';
-$messages['checkingmail'] = '检查新邮件...';
+$messages['uploadingmany'] = '正在上传文件...';
+$messages['loadingdata'] = '正在载入数据...';
+$messages['checkingmail'] = 'æ­£å\9c¨æ£\80æ\9f¥æ\96°é\82®ä»¶...';
 $messages['sendingmessage'] = '正在发送邮件...';
-$messages['messagesent'] = '邮件发送成功';
-$messages['savingmessage'] = '正在储存邮件...';
-$messages['messagesaved'] = '邮件已暂存到草稿箱';
-$messages['successfullysaved'] = '保存成功';
-$messages['addedsuccessfully'] = '成功添加联系人';
-$messages['contactexists'] = '当前联系人的电子邮件地址已存在';
-$messages['contactnameexists'] = '已存在同名的联系人.';
-$messages['blockedimages'] = '为保护隐私,此邮件中的远程图片未显示';
-$messages['encryptedmessage'] = '因此邮件已加密,无法正常显示';
-$messages['nocontactsfound'] = '未找到联系人';
-$messages['contactnotfound'] = '未找到指定的联系人';
-$messages['sendingfailed'] = '发送失败';
-$messages['senttooquickly'] = '您需要等待 $sec 秒才能发送邮件';
-$messages['errorsavingsent'] = '保存已发送邮件时出现错误';
-$messages['errorsaving'] = '保存过程中发生错误';
-$messages['errormoving'] = '无法移动邮件';
-$messages['errorcopying'] = '无法复制邮件';
-$messages['errordeleting'] = '无法删除邮件';
-$messages['errormarking'] = '无法标记邮件';
+$messages['messagesent'] = '邮件发送成功。';
+$messages['savingmessage'] = '正在保存邮件...';
+$messages['messagesaved'] = '邮件已暂存到草稿箱。';
+$messages['successfullysaved'] = '保存成功。';
+$messages['addedsuccessfully'] = '成功添加联系人。';
+$messages['contactexists'] = '当前联系人的电子邮件地址已存在。';
+$messages['contactnameexists'] = '已存在同名的联系人。';
+$messages['blockedimages'] = '为保护隐私,此邮件中的远程图片未显示。';
+$messages['encryptedmessage'] = '抱歉!该邮件已被加密,无法显示。';
+$messages['nocontactsfound'] = '未找到联系人。';
+$messages['contactnotfound'] = '未找到指定的联系人。';
+$messages['contactsearchonly'] = '请输入联系人的搜索条件';
+$messages['sendingfailed'] = '发送失败。';
+$messages['senttooquickly'] = '您需要等待 $sec 秒才能发送邮件。';
+$messages['errorsavingsent'] = '保存已发送邮件时发生错误。';
+$messages['errorsaving'] = '保存时发生错误。';
+$messages['errormoving'] = '无法移动邮件。';
+$messages['errorcopying'] = '无法复制邮件。';
+$messages['errordeleting'] = '无法删除邮件。';
+$messages['errormarking'] = '无法标记邮件。';
 $messages['deletecontactconfirm'] = '确定要删除已选中的联系人?';
-$messages['deletegroupconfirm']  = '确定要删除以选中的组?';
+$messages['deletegroupconfirm'] = '确定要删除以选中的组?';
 $messages['deletemessagesconfirm'] = '确定要删除已选中的邮件?';
 $messages['deletefolderconfirm'] = '确定要删除已选中的邮件夹?';
 $messages['purgefolderconfirm'] = '是否确认要删除当前邮件夹中的所有邮件?';
+$messages['contactdeleting'] = '正在删除联系人...';
 $messages['groupdeleting'] = '正在删除组...';
-$messages['folderdeleting'] = '正在删除邮件夹';
-$messages['foldermoving'] = '正在移动目录...';
-$messages['foldersubscribing'] = '注册文件夹中...';
-$messages['folderunsubscribing'] = '解除注册中...';
-$messages['formincomplete'] = '当前表单未填写完整,请完整填写';
-$messages['noemailwarning'] = '请输入一个有效的邮件地址';
-$messages['nonamewarning'] = '请输入名字';
+$messages['folderdeleting'] = '正在删除文件夹...';
+$messages['foldermoving'] = '正在移动文件夹...';
+$messages['foldersubscribing'] = '订阅文件夹中...';
+$messages['folderunsubscribing'] = '退订中...';
+$messages['formincomplete'] = '当前表单未填写完整,请完整填写';
+$messages['noemailwarning'] = '请输入一个有效的邮件地址';
+$messages['nonamewarning'] = '请输入名字';
 $messages['nopagesizewarning'] = '请输入每页显示的邮件数量';
-$messages['nosenderwarning'] = '请输入发件人的邮件地址';
-$messages['norecipientwarning'] = '至少需要一个收件人';
+$messages['nosenderwarning'] = '请输入发件人地址。';
+$messages['norecipientwarning'] = '至少需要一个收件人';
 $messages['nosubjectwarning'] = '主题为空。您要输入一个主题吗?';
 $messages['nobodywarning'] = '要发送无正文的邮件吗?';
-$messages['notsentwarning'] = '邮件未发送。您确定要离开并废弃当前邮件吗?';
-$messages['noldapserver'] = '请选择一个LDAP服务器进行查找';
-$messages['nocontactsreturned'] = '未找到联系人';
-$messages['nosearchname'] = '请输入一个联系人姓名或电子邮件地址';
+$messages['notsentwarning'] = '邮件未发送。您确定要离开并舍弃当前邮件吗?';
+$messages['noldapserver'] = '请选择一个LDAP服务器进行查找。';
+$messages['nosearchname'] = '请输入一个联系人姓名或电子邮件地址。';
 $messages['notuploadedwarning'] = '附件还没有全部上传,请等待或者取消上传。';
-$messages['searchsuccessful'] = '共找到 $nr 封邮件';
+$messages['searchsuccessful'] = '共找到 $nr 封邮件。';
+$messages['contactsearchsuccessful'] = '共找到 $nr 位联系人。';
 $messages['searchnomatch'] = '未找到任何符合条件的邮件';
-$messages['searching'] = 'æ­£å\9c¨æ\9f¥æ\89¾...';
+$messages['searching'] = 'æ­£å\9c¨æ\90\9cç´¢...';
 $messages['checking'] = '正在检查...';
 $messages['nospellerrors'] = '未发现拼写错误';
-$messages['folderdeleted'] = '邮件夹已被成功删除';
-$messages['foldersubscribed'] = '成功注册文件夹';
-$messages['folderunsubscribed'] = '成功解除注册的文件夹';
-$messages['folderpurged'] = 'æ¸\85空æ\96\87件夹æ\88\90å\8a\9f';
-$messages['folderexpunged'] = '文件夹已清空';
-$messages['deletedsuccessfully'] = '删除成功';
+$messages['folderdeleted'] = '文件夹已被成功删除。';
+$messages['foldersubscribed'] = '成功订阅文件夹。';
+$messages['folderunsubscribed'] = '成功退订的文件夹。';
+$messages['folderpurged'] = 'æ\88\90å\8a\9fæ¸\85空æ\96\87件夹ã\80\82';
+$messages['folderexpunged'] = '文件夹已清空';
+$messages['deletedsuccessfully'] = '删除成功';
 $messages['converting'] = '格式转换中...';
-$messages['messageopenerror'] = '无法从服务器上加载邮件内容';
-$messages['fileuploaderror'] = '文件上传失败';
-$messages['filesizeerror'] = '上传的文件超过了 $size 的大小限制';
-$messages['copysuccess'] = '成功复制 $nr 个地址';
-$messages['copyerror'] = '无法复制地址';
-$messages['sourceisreadonly'] = '源地址为只读';
-$messages['errorsavingcontact'] = '无法保存联系人的地址';
+$messages['messageopenerror'] = '无法从服务器上加载邮件内容';
+$messages['fileuploaderror'] = '文件上传失败';
+$messages['filesizeerror'] = '上传的文件超过了 $size 的大小限制';
+$messages['copysuccess'] = '成功复制 $nr 个地址';
+$messages['copyerror'] = '无法复制地址';
+$messages['sourceisreadonly'] = '源地址为只读';
+$messages['errorsavingcontact'] = '无法保存联系人的地址';
 $messages['movingmessage'] = '移动邮件到...';
 $messages['copyingmessage'] = '复制邮件到...';
 $messages['copyingcontact'] = '复制联系人...';
@@ -107,50 +105,56 @@ $messages['deletingmessage'] = '正在删除邮件...';
 $messages['markingmessage'] = '正在标记邮件...';
 $messages['addingmember'] = '正在添加联系人到组...';
 $messages['removingmember'] = '正在从组中删除联系人...';
-$messages['receiptsent'] = '成功发送了一个已读回执';
-$messages['errorsendingreceipt'] = '无法发送回执';
+$messages['receiptsent'] = '成功发送了一个已读回执。';
+$messages['errorsendingreceipt'] = '无法发送回执。';
+$messages['deleteidentityconfirm'] = '您真的想删除这个验证信息吗?';
 $messages['nodeletelastidentity'] = '无法删除这个身份,这是最后一个。';
-$messages['forbiddencharacter'] = '目录名包含隐藏字符';
-$messages['selectimportfile'] = '请选择要上传的文件';
-$messages['addresswriterror'] = '已选择的地址簿不可写';
-$messages['contactaddedtogroup'] = '成功添加联系人到这个分组';
-$messages['contactremovedfromgroup'] = 'æ\88\90å\8a\9fä»\8eè¿\99个å\88\86ç»\84ç§»é\99¤è\81\94系人';
+$messages['forbiddencharacter'] = '目录名包含隐藏字符';
+$messages['selectimportfile'] = '请选择要上传的文件';
+$messages['addresswriterror'] = '已选择的地址簿不可写';
+$messages['contactaddedtogroup'] = '成功添加联系人至该分组。';
+$messages['contactremovedfromgroup'] = 'æ\88\90å\8a\9fä»\8e该å\88\86ç»\84ç§»é\99¤è\81\94系人ã\80\82';
 $messages['importwait'] = '正在导入,请稍后...';
 $messages['importerror'] = '导入失败!所上传的文件不是有效的 vCard 文件。';
-$messages['importconfirm'] = '<b>成功导入 $inserted 联系人,$skipped 乎略已存在的联系人</b>:<p><em>$names</em></p>';
-$messages['importconfirmskipped'] = '<b>跳过已存在 $skipped 项目</b>';
-$messages['opnotpermitted'] = '不允许的操作';
-$messages['nofromaddress'] = '选种的身份中没有邮件地址';
+$messages['importconfirm'] = '<b>成功导入 $inserted 联系人</b>';
+$messages['importconfirmskipped'] = '<b>跳过已存在 $skipped 项目</b>';
+$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['smtpdsnerror'] = 'SMTP 错误: 不支持邮件送达通知';
+$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['toomanyrecipients'] = '收件人太多,请减少人数至 $max。';
+$messages['maxgroupmembersreached'] = '组员数量超过最大值 $max';
+$messages['internalerror'] = '遇到一个内部错误,请重试';
+$messages['contactdelerror'] = '无法删除联系人';
+$messages['contactdeleted'] = '删除联系人成功';
+$messages['contactrestoreerror'] = '无法恢复已删除的联系人';
+$messages['contactrestored'] = '联系人恢复成功';
+$messages['groupdeleted'] = '成功删除组';
+$messages['grouprenamed'] = '组改名成功';
 $messages['groupcreated'] = '成功创建组';
-$messages['messagedeleted'] = '删除邮件成功';
-$messages['messagemoved'] = '转移邮件成功';
+$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['invalidimageformat'] = '非法的图像类型。';
+$messages['mispellingsfound'] = '检查到拼写错误。';
+$messages['parentnotwritable'] = '无法创建和转移到所选的目录,权限不足。';
+$messages['messagetoobig'] = '由于邮件部分过大无法处理。';
+
index e0159cf2e672c14bd11dbb8c7076b69f7b8aba85..ea029acd409401af8f57b2831ece029f8930a32d 100644 (file)
@@ -11,7 +11,7 @@
  +-----------------------------------------------------------------------+
  | Author: Nansen <Unknown>                                              |
  +-----------------------------------------------------------------------+
- @version $Id: labels.inc 5741 2012-01-08 16:20:12Z thomasb $
+ @version $Id$
 */
 
 $labels = array();
@@ -22,7 +22,7 @@ $labels['server'] = '伺服器';
 $labels['login'] = '登入';
 $labels['logout'] = '登出';
 $labels['mail'] = '電子郵件';
-$labels['settings'] = '個人設定';
+$labels['settings'] = '設定';
 $labels['addressbook'] = '通訊錄';
 $labels['inbox'] = '收件匣';
 $labels['drafts'] = '草稿匣';
@@ -41,11 +41,13 @@ $labels['size'] = '大小';
 $labels['priority'] = '優先順序';
 $labels['organization'] = '組織';
 $labels['readstatus'] = '讀信狀態';
+$labels['listoptions'] = '列表選項...';
 $labels['mailboxlist'] = '資料夾';
 $labels['folders'] = '資料夾';
 $labels['messagesfromto'] = '郵件 $from 至 $to,共有 $count 封郵件';
 $labels['threadsfromto'] = '郵件串 $from 至 $to,共有 $count 個';
 $labels['messagenrof'] = '第 $nr 封郵件,共有 $count 封';
+$labels['fromtoshort'] = '自 $from – $to 統計 $count';
 $labels['copy'] = '複製';
 $labels['move'] = '移動';
 $labels['moveto'] = '移至...';
@@ -120,7 +122,7 @@ $labels['markread'] = '標示為已讀取';
 $labels['markunread'] = '標示為未讀取';
 $labels['markflagged'] = '標上旗標';
 $labels['markunflagged'] = '移除旗標';
-$labels['moreactions'] = '資料夾動...';
+$labels['moreactions'] = '資料夾動...';
 $labels['more'] = '更多';
 $labels['back'] = '上一頁';
 $labels['options'] = '選項';
@@ -167,7 +169,7 @@ $labels['searchmod'] = '修改搜尋';
 $labels['msgtext'] = '整封郵件';
 $labels['openinextwin'] = '在新視窗開啟';
 $labels['emlsave'] = '下載(.eml)';
-$labels['editasnew'] = '新郵件編輯';
+$labels['editasnew'] = '新郵件編輯';
 $labels['savemessage'] = '儲存成草稿';
 $labels['sendmessage'] = '立即寄出';
 $labels['addattachment'] = '增加附件檔案';
@@ -175,15 +177,17 @@ $labels['charset'] = '郵件編碼';
 $labels['editortype'] = '編輯器類型';
 $labels['returnreceipt'] = '要求讀取回條';
 $labels['dsn'] = '傳送狀態通知';
-$labels['mailreplyintro'] = '$sender 於 $data 寫到:';
+$labels['mailreplyintro'] = '$sender 於 $date 寫到:';
 $labels['originalmessage'] = '郵件顯示設定';
 $labels['editidents'] = '編輯身份資訊';
+$labels['spellcheck'] = '拼字';
 $labels['checkspelling'] = '拼字檢查';
 $labels['resumeediting'] = '繼續編輯';
 $labels['revertto'] = '恢復至';
 $labels['attach'] = '附件';
 $labels['attachments'] = '附加檔案';
 $labels['upload'] = '上傳';
+$labels['uploadprogress'] = '$percent ($current / $total)';
 $labels['close'] = '關閉';
 $labels['messageoptions'] = '郵件選項...';
 $labels['low'] = '低';
@@ -269,6 +273,7 @@ $labels['delete'] = '刪除';
 $labels['rename'] = '重新命名';
 $labels['addphoto'] = '新增';
 $labels['replacephoto'] = '取代';
+$labels['uploadphoto'] = '上傳相片';
 $labels['newcontact'] = '建立新聯絡人資料';
 $labels['deletecontact'] = '刪除所選擇的聯絡人';
 $labels['composeto'] = '寄信至所選擇的聯絡人';
@@ -279,13 +284,14 @@ $labels['exportvcards'] = '匯出通訊錄為 vCard 格式';
 $labels['newcontactgroup'] = '新增聯絡人群組';
 $labels['grouprename'] = '重新命名群組';
 $labels['groupdelete'] = '刪除群組';
+$labels['groupremoveselected'] = '從群組中刪除選擇的聯絡人';
 $labels['previouspage'] = '顯示上一頁';
 $labels['firstpage'] = '顯示第一頁';
 $labels['nextpage'] = '顯示下一頁';
 $labels['lastpage'] = '顯示最後一頁';
 $labels['group'] = '群組';
 $labels['groups'] = '群組';
-$labels['personaladrbook'] = '個人住址';
+$labels['personaladrbook'] = '個人通訊錄';
 $labels['searchsave'] = '儲存搜尋結果';
 $labels['searchdelete'] = '刪除搜尋結果';
 $labels['import'] = '匯入通訊錄';
@@ -338,6 +344,7 @@ $labels['readwhendeleted'] = '將刪除的郵件標示為已讀取';
 $labels['flagfordeletion'] = '刪除郵件時將原始郵件標示為已刪除';
 $labels['skipdeleted'] = '不要顯示已刪除的郵件';
 $labels['deletealways'] = '如果移到垃圾桶失敗,就直接刪除';
+$labels['deletejunk'] = '直接從垃圾郵件刪除';
 $labels['showremoteimages'] = '顯示遠端郵件內文中的圖片';
 $labels['fromknownsenders'] = '從已知的寄件者';
 $labels['always'] = '總是接受';
@@ -353,13 +360,14 @@ $labels['mimeparamfolding'] = '附加檔案名稱的編碼方式';
 $labels['2231folding'] = '完全 RFC 2231 模式(Thunderbird)';
 $labels['miscfolding'] = 'RFC 2047/2231 混合模式(MS Outlook)';
 $labels['2047folding'] = '完全 RFC 2047 模式(其他)';
-$labels['force7bit'] = '使用MIME編碼對於8位元字元';
+$labels['force7bit'] = '使用 MIME 編碼對於 8 位元字元';
 $labels['advancedoptions'] = '顯示進階設定選項';
 $labels['focusonnewmessage'] = '收到新郵件時使瀏覽器獲得焦點';
 $labels['checkallfolders'] = '檢查所有資料夾中的新郵件';
 $labels['displaynext'] = '郵件刪除/移動時顯示下一個郵件';
 $labels['defaultfont'] = 'HTML格式預設字型';
 $labels['mainoptions'] = '主要選項';
+$labels['browseroptions'] = '瀏覽選項';
 $labels['section'] = '分類';
 $labels['maintenance'] = '管理';
 $labels['newmessage'] = '新郵件';
@@ -381,12 +389,15 @@ $labels['reqmdn'] = '永遠索取讀取回條';
 $labels['reqdsn'] = '總是要求傳送狀態通知';
 $labels['replysamefolder'] = '將回覆與回覆信件放置於相同資料夾';
 $labels['defaultaddressbook'] = '新增連絡人至指定通訊錄';
+$labels['autocompletesingle'] = '在自動完成中略過另一個email';
+$labels['listnamedisplay'] = '標記聯絡人為';
 $labels['spellcheckbeforesend'] = '寄送前執行拼字檢查';
 $labels['spellcheckoptions'] = '拼字檢查選項';
 $labels['spellcheckignoresyms'] = '忽略符號';
 $labels['spellcheckignorenums'] = '忽略數字';
 $labels['spellcheckignorecaps'] = '忽略大寫字母';
 $labels['addtodict'] = '加入詞典';
+$labels['mailtoprotohandler'] = '註冊mailto:協定處理程式';
 $labels['folder'] = '資料夾';
 $labels['foldername'] = '資料夾名稱';
 $labels['subscribed'] = '顯示';
index c68a61738199e2eec14e7790f60a2e2d04c45031..8209786825319758a1675dd8c2c49af215d1725f 100644 (file)
@@ -1,31 +1,28 @@
 <?php
 
 /*
-
-+-----------------------------------------------------------------------+
-| localization/zh_TW/messages.inc                                       |
-|                                                                       |
-| Language file of the Roundcube Webmail client                         |
-| Copyright (C) 2005-2010, The Roundcube Dev Team                       |
-| Licensed under the GNU GPL                                            |
-|                                                                       |
-+-----------------------------------------------------------------------+
-| Author: WayneSan <waynesan@zerozone.tw>                               |
-|         kourge <kourge@gmail.com>                                     |
-|         Ting-Hung Chiu <earrl@mmlab.cse.yzu.edu.tw>                   |
-+-----------------------------------------------------------------------+
-
-@version $Id: messages.inc 4627 2011-03-31 13:47:22Z yllar $
-
+ +-----------------------------------------------------------------------+
+ | localization/zh_TW/messages.inc                                       |
+ |                                                                       |
+ | Language file of the Roundcube Webmail client                         |
+ | Copyright (C) 2012, The Roundcube Dev Team                            |
+ | Licensed under the GNU General Public License                         |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Nansen                                                        |
+ +-----------------------------------------------------------------------+
 */
 
 $messages = array();
+$messages['errortitle'] = '發生錯誤!';
 $messages['loginfailed'] = '登入失敗';
 $messages['cookiesdisabled'] = '你的瀏覽器不接受 cookies';
 $messages['sessionerror'] = '你的工作階段已失效或過期';
-$messages['imaperror'] = '連線到 IMAP 伺服器失敗';
+$messages['storageerror'] = '連線到 IMAP 伺服器失敗';
 $messages['servererror'] = '伺服器錯誤!';
 $messages['servererrormsg'] = '伺服器錯誤:$msg';
+$messages['dberror'] = '資料庫錯誤!';
+$messages['requesttimedout'] = '要求逾時';
 $messages['errorreadonly'] = '動作無法完成。資料夾唯讀';
 $messages['errornoperm'] = '動作無法完成。權限不符';
 $messages['invalidrequest'] = '要求無效!未儲存任何資料。';
@@ -33,7 +30,8 @@ $messages['nomessagesfound'] = '此郵件匣沒有任何郵件';
 $messages['loggedout'] = '你已成功地登出並結束工作階段了。再見!';
 $messages['mailboxempty'] = '郵件匣是空的';
 $messages['loading'] = '載入中...';
-$messages['uploading'] = '上傳檔案中…';
+$messages['uploading'] = '上傳檔案中...';
+$messages['uploadingmany'] = '上傳檔案中...';
 $messages['loadingdata'] = '載入資料中...';
 $messages['checkingmail'] = '檢查新郵件...';
 $messages['sendingmessage'] = '寄出郵件中...';
@@ -43,10 +41,12 @@ $messages['messagesaved'] = '訊息已經存至';
 $messages['successfullysaved'] = '儲存成功';
 $messages['addedsuccessfully'] = '聯絡人已經成功地新增至通訊錄';
 $messages['contactexists'] = '此聯絡人的電子郵件位址已存在';
+$messages['contactnameexists'] = '已存在相同名稱的連絡人';
 $messages['blockedimages'] = '為了保護你的隱私,此郵件中的遠端圖片已經被阻擋。';
 $messages['encryptedmessage'] = '此郵件經過加密,因此無法顯示。抱歉!';
 $messages['nocontactsfound'] = '沒有找到任何聯絡人';
 $messages['contactnotfound'] = '找不到要求的聯絡人';
+$messages['contactsearchonly'] = '輸入關鍵字找尋連絡人';
 $messages['sendingfailed'] = '郵件寄出失敗';
 $messages['senttooquickly'] = '你寄出的郵件太過於頻繁,請稍候 $sec 秒後再試一次。';
 $messages['errorsavingsent'] = '儲存寄件備份時發生錯誤';
@@ -56,9 +56,12 @@ $messages['errorcopying'] = '無法訊息';
 $messages['errordeleting'] = '無法刪除此郵件';
 $messages['errormarking'] = '無法標上旗標';
 $messages['deletecontactconfirm'] = '你確定要刪除已選擇的聯絡人?';
+$messages['deletegroupconfirm'] = '您確定要刪除選擇的群組嗎?';
 $messages['deletemessagesconfirm'] = '你確定要刪除已選擇的郵件?';
 $messages['deletefolderconfirm'] = '你確定要刪除這個資料夾嗎?';
 $messages['purgefolderconfirm'] = '你確定要刪除這個資料夾裡面所有的郵件嗎?';
+$messages['contactdeleting'] = '刪除連絡人...';
+$messages['groupdeleting'] = '刪除存組...';
 $messages['folderdeleting'] = '刪除資料夾中...';
 $messages['foldermoving'] = '移動資料夾中...';
 $messages['foldersubscribing'] = '訂閱資料夾...';
@@ -73,10 +76,10 @@ $messages['nosubjectwarning'] = '「主旨」欄是空的。你要輸入一個
 $messages['nobodywarning'] = '要傳送沒有內文的郵件嗎?';
 $messages['notsentwarning'] = '郵件尚未寄出。你確定要離開並且捨棄此郵件?';
 $messages['noldapserver'] = '請選擇一個 LDAP 伺服器進行搜尋';
-$messages['nocontactsreturned'] = '沒有找到任何聯絡人';
 $messages['nosearchname'] = '請輸入一個聯絡人姓名或電子郵件位址';
 $messages['notuploadedwarning'] = '尚有附加檔案未上傳完畢,請等待或取消上傳';
 $messages['searchsuccessful'] = '共找到 $nr 封郵件';
+$messages['contactsearchsuccessful'] = '找到連絡人 $nr';
 $messages['searchnomatch'] = '找不到任何符合的郵件';
 $messages['searching'] = '搜尋中...';
 $messages['checking'] = '檢查中...';
@@ -97,10 +100,14 @@ $messages['sourceisreadonly'] = '此來源位址是唯讀的';
 $messages['errorsavingcontact'] = '無法儲存連絡人的位址';
 $messages['movingmessage'] = '移動郵件中...';
 $messages['copyingmessage'] = '複製訊息...';
+$messages['copyingcontact'] = '複製群組...';
 $messages['deletingmessage'] = '刪除訊息...';
 $messages['markingmessage'] = '標示訊息...';
+$messages['addingmember'] = '新增連絡人至群組';
+$messages['removingmember'] = '從群組刪除連絡人';
 $messages['receiptsent'] = '閱讀回條傳送成功';
 $messages['errorsendingreceipt'] = '無法傳送回條';
+$messages['deleteidentityconfirm'] = '您確定要刪除這位連絡人嗎?';
 $messages['nodeletelastidentity'] = '你不能刪除此身份,因為只剩一個身份。';
 $messages['forbiddencharacter'] = '資料夾名稱中包含非法的字元';
 $messages['selectimportfile'] = '請選擇一個上傳的檔案';
@@ -120,7 +127,6 @@ $messages['smtpautherror'] = 'SMTP 錯誤($code):認證失敗';
 $messages['smtpfromerror'] = 'SMTP 錯誤($code):無法設寄建者「$from」($msg)';
 $messages['smtptoerror'] = 'SMTP 錯誤($code):無法加收件者「$to」($msg)';
 $messages['smtprecipientserror'] = 'SMTP 錯誤:無法分析收件者';
-$messages['smtpdsnerror'] = 'SMTP 錯誤:不支援傳送狀態通知';
 $messages['smtperror'] = 'SMTP 錯誤:$msg';
 $messages['emailformaterror'] = '錯誤電子郵件:$email';
 $messages['toomanyrecipients'] = '太多收件人。請減少至 $max 人';
@@ -128,18 +134,27 @@ $messages['maxgroupmembersreached'] = '太多群組成員,超過最大人數 $
 $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'] = '無法建立/移動資料夾至指定的上層目錄 (No access rights)';
+$messages['messagetoobig'] = '郵件太大無法處理';
 
-?>
index 5e526e1aa1ffddc89fd7b0000fa95689b59b75bf..40b2a79d13ce564818e0471649b443a8a6af3c08 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2007, The Roundcube Dev Team                            |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Copy a contact record from one direcotry to another                 |
index 3f8885efbe1e37a0017ed1f398291fb039476f40..1e2142c9c1be7757c2a72e2b07d096a4ff14d41c 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2009, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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 contacts (CIDs) from the users address book    |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: delete.inc 5967 2012-03-05 19:59:07Z alec $
+ $Id$
 
 */
 
@@ -83,7 +86,7 @@ if (($search_request = $_REQUEST['_search']) && isset($_SESSION['search'][$searc
         $source->set_search_set($set);
 
         // get records
-        $result = $source->list_records(array('name', 'email'));
+        $result = $source->list_records(array('name', 'firstname', 'surname', 'email'));
 
         if (!$result->count) {
             unset($search[$s]);
@@ -104,20 +107,20 @@ if (($search_request = $_REQUEST['_search']) && isset($_SESSION['search'][$searc
 
     // create resultset object
     $count  = count($records);
-    $first  = ($page-1) * $CONFIG['pagesize'];
+    $first  = ($page-1) * $PAGE_SIZE;
     $result = new rcube_result_set($count, $first);
 
     // get records from the next page to add to the list
-    $pages = ceil((count($records) + $delcnt) / $CONFIG['pagesize']);
+    $pages = ceil((count($records) + $delcnt) / $PAGE_SIZE);
     if ($_GET['_from'] != 'show' && $pages > 1 && $page < $pages) {
         // sort the records
         ksort($records, SORT_LOCALE_STRING);
 
-        $first += $CONFIG['pagesize'];
+        $first += $PAGE_SIZE;
         // create resultset object
         $res = new rcube_result_set($count, $first - $delcnt);
 
-        if ($CONFIG['pagesize'] < $count) {
+        if ($PAGE_SIZE < $count) {
             $records = array_slice($records, $first - $delcnt, $delcnt);
         }
 
@@ -133,7 +136,7 @@ else {
     $result = $CONTACTS->count();
 
     // get records from the next page to add to the list
-    $pages = ceil(($result->count + $delcnt) / $CONFIG['pagesize']);
+    $pages = ceil(($result->count + $delcnt) / $PAGE_SIZE);
     if ($_GET['_from'] != 'show' && $pages > 1 && $page < $pages) {
         $CONTACTS->set_page($page);
         $records = $CONTACTS->list_records(null, -$delcnt);
@@ -141,7 +144,7 @@ else {
 }
 
 // update message count display
-$OUTPUT->set_env('pagecount', ceil($result->count / $CONFIG['pagesize']));
+$OUTPUT->set_env('pagecount', ceil($result->count / $PAGE_SIZE));
 $OUTPUT->command('set_rowcount', rcmail_get_rowcount_text($result));
 
 if (!empty($_SESSION['contact_undo'])) {
index 4b1b6cc71497e128cd6f54f1546212962cf6818f..abed2c56649a401da3d54811851b98ab7ee43c26 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2007, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Show edit form for a contact entry or to add a new one              |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: edit.inc 5681 2012-01-01 13:36:22Z alec $
+ $Id$
 
 */
 
@@ -33,8 +36,8 @@ if ($RCMAIL->action == 'edit') {
         $OUTPUT->set_env('cid', $record['ID']);
     }
 
-    // adding not allowed here
-    if ($CONTACTS->readonly) {
+    // editing not allowed here
+    if ($CONTACTS->readonly || $record['readonly']) {
         $OUTPUT->show_message('sourceisreadonly');
         rcmail_overwrite_action('show');
         return;
@@ -176,9 +179,8 @@ function rcmail_upload_photo_form($attrib)
 {
   global $OUTPUT;
 
-  // add ID if not given
-  if (!$attrib['id'])
-    $attrib['id'] = 'rcmUploadbox';
+  // set defaults
+  $attrib += array('id' => 'rcmUploadform', 'buttons' => 'yes');
 
   // find max filesize value
   $max_filesize = parse_bytes(ini_get('upload_max_filesize'));
@@ -192,19 +194,19 @@ function rcmail_upload_photo_form($attrib)
   $button = new html_inputfield(array('type' => 'button'));
 
   $out = html::div($attrib,
-    $OUTPUT->form_tag(array('name' => 'uploadform', 'method' => 'post', 'enctype' => 'multipart/form-data'),
+    $OUTPUT->form_tag(array('id' => $attrib['id'].'Frm', 'name' => 'uploadform', 'method' => 'post', 'enctype' => 'multipart/form-data'),
       $hidden->show() .
       html::div(null, $input->show()) .
       html::div('hint', rcube_label(array('name' => 'maxuploadsize', 'vars' => array('size' => $max_filesize)))) .
-      html::div('buttons',
+      (get_boolean($attrib['buttons']) ? html::div('buttons',
         $button->show(rcube_label('close'), array('class' => 'button', 'onclick' => "$('#$attrib[id]').hide()")) . ' ' .
         $button->show(rcube_label('upload'), array('class' => 'button mainaction', 'onclick' => JS_OBJECT_NAME . ".command('upload-photo', this.form)"))
-      )
+      ) : '')
     )
   );
 
   $OUTPUT->add_label('addphoto','replacephoto');
-  $OUTPUT->add_gui_object('uploadbox', $attrib['id']);
+  $OUTPUT->add_gui_object('uploadform', $attrib['id'].'Frm');
   return $out;
 }
 
index 988dabf51def3fd3e2d677b178219946da5783dc..f6fad71b07b713d36f0b42b18a9a52132cef27da 100644 (file)
@@ -7,7 +7,10 @@
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2008-2011, The Roundcube Dev Team                       |
  | Copyright (C) 2011, Kolab Systems AG                                  |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Export the selected address book as vCard file                      |
@@ -86,7 +89,7 @@ while ($result && ($row = $result->next())) {
         foreach ($row as $key => $values) {
             list($field, $section) = explode(':', $key);
             foreach ((array)$values as $value) {
-                if (is_array($value) || strlen($value))
+                if (is_array($value) || @strlen($value))
                     $vcard->set($field, $value, strtoupper($section));
             }
         }
index c32576f15bebe3a338300ad1d8ac931a66c341e7..52a2a1462f360977966562fdd67f5e68093d410f 100644 (file)
@@ -5,8 +5,11 @@
  | program/steps/addressbook/func.inc                                    |
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
- | Copyright (C) 2005-2007, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2005-2012, 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:                                                              |
  |   Provide addressbook functionality and GUI objects                   |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: func.inc 5967 2012-03-05 19:59:07Z alec $
+ $Id$
 
 */
 
@@ -56,6 +59,7 @@ $CONTACT_COLTYPES = array(
   // TODO: define fields for vcards like GEO, KEY
 );
 
+$PAGE_SIZE = $RCMAIL->config->get('addressbook_pagesize', $RCMAIL->config->get('pagesize', 50));
 
 // Addressbook UI
 if (!$RCMAIL->action && !$OUTPUT->ajax_call) {
@@ -108,7 +112,7 @@ if ($undo = $_SESSION['contact_undo']) {
 // instantiate a contacts object according to the given source
 function rcmail_contact_source($source=null, $init_env=false, $writable=false)
 {
-    global $RCMAIL, $OUTPUT, $CONFIG, $CONTACT_COLTYPES;
+    global $RCMAIL, $OUTPUT, $CONTACT_COLTYPES, $PAGE_SIZE;
 
     if (!strlen($source)) {
         $source = get_input_value('_source', RCUBE_INPUT_GPC);
@@ -116,7 +120,7 @@ function rcmail_contact_source($source=null, $init_env=false, $writable=false)
 
     // Get object
     $CONTACTS = $RCMAIL->get_address_book($source, $writable);
-    $CONTACTS->set_pagesize($CONFIG['pagesize']);
+    $CONTACTS->set_pagesize($PAGE_SIZE);
 
     // set list properties and session vars
     if (!empty($_GET['_page']))
@@ -140,8 +144,13 @@ function rcmail_contact_source($source=null, $init_env=false, $writable=false)
         $CONTACT_COLTYPES = array_intersect_key($CONTACT_COLTYPES, $contact_cols);
         // add associative coltypes definition
         if (!$CONTACTS->coltypes[0]) {
-            foreach ($CONTACTS->coltypes as $col => $colprop)
+            foreach ($CONTACTS->coltypes as $col => $colprop) {
+                if (is_array($colprop['childs'])) {
+                    foreach ($colprop['childs'] as $childcol => $childprop)
+                        $colprop['childs'][$childcol] = array_merge((array)$CONTACT_COLTYPES[$col]['childs'][$childcol], $childprop);
+                }
                 $CONTACT_COLTYPES[$col] = $CONTACT_COLTYPES[$col] ? array_merge($CONTACT_COLTYPES[$col], $colprop) : $colprop;
+            }
         }
     }
 
@@ -330,6 +339,7 @@ function rcmail_js_contacts_list($result, $prefix='')
 
     while ($row = $result->next()) {
         $a_row_cols = array();
+        $classes = array('person');  // org records will follow some day
 
         // build contact ID with source ID
         if (isset($row['sourceid'])) {
@@ -342,7 +352,10 @@ function rcmail_js_contacts_list($result, $prefix='')
             $a_row_cols[$col] = Q($val);
         }
 
-        $OUTPUT->command($prefix.'add_contact_row', $row['ID'], $a_row_cols);
+        if ($row['readonly'])
+            $classes[] = 'readonly';
+
+        $OUTPUT->command($prefix.'add_contact_row', $row['ID'], $a_row_cols, join(' ', $classes));
     }
 }
 
@@ -373,13 +386,16 @@ function rcmail_rowcount_display($attrib)
 
     $OUTPUT->add_gui_object('countdisplay', $attrib['id']);
 
+    if ($attrib['label'])
+      $_SESSION['contactcountdisplay'] = $attrib['label'];
+
     return html::span($attrib, rcube_label('loading'));
 }
 
 
 function rcmail_get_rowcount_text($result=null)
 {
-    global $CONTACTS, $CONFIG;
+    global $CONTACTS, $PAGE_SIZE;
 
     // read nr of contacts
     if (!$result) {
@@ -390,10 +406,10 @@ function rcmail_get_rowcount_text($result=null)
         $out = rcube_label('nocontactsfound');
     else
         $out = rcube_label(array(
-            'name'  => 'contactsfromto',
+            'name'  => $_SESSION['contactcountdisplay'] ? $_SESSION['contactcountdisplay'] : 'contactsfromto',
             'vars'  => array(
             'from'  => $result->first + 1,
-            'to'    => min($result->count, $result->first + $CONFIG['pagesize']),
+            'to'    => min($result->count, $result->first + $PAGE_SIZE),
             'count' => $result->count)
         ));
 
@@ -418,7 +434,6 @@ function rcmail_get_type_label($type)
 function rcmail_contact_form($form, $record, $attrib = null)
 {
     global $RCMAIL, $CONFIG;
-    static $jqueryui_loaded = 0;
 
     // Allow plugins to modify contact form content
     $plugin = $RCMAIL->plugins->exec_hook('contact_form', array(
@@ -568,8 +583,13 @@ function rcmail_contact_form($form, $record, $attrib = null)
                 if (empty($values) && $colprop['visible'])
                     $values[] = '';
 
+                if (!is_array($values)) {
+                    // $values can be an object, don't use (array)$values syntax
+                    $values = !empty($values) ? array($values) : array();
+                }
+
                 $rows = '';
-                foreach ((array)$values as $i => $val) {
+                foreach ($values as $i => $val) {
                     if ($subtypes[$i])
                         $subtype = $subtypes[$i];
 
@@ -578,7 +598,12 @@ function rcmail_contact_form($form, $record, $attrib = null)
                         $composite = array(); $j = 0;
                         $template = $RCMAIL->config->get($col . '_template', '{'.join('} {', array_keys($colprop['childs'])).'}');
                         foreach ($colprop['childs'] as $childcol => $cp) {
-                            $childvalue = $val[$childcol] ? $val[$childcol] : $val[$j];
+                            if (!empty($val) && is_array($val)) {
+                                $childvalue = $val[$childcol] ? $val[$childcol] : $val[$j];
+                            }
+                            else {
+                                $childvalue = '';
+                            }
 
                             if ($edit_mode) {
                                 if ($colprop['subtypes'] || $colprop['limit'] != 1) $cp['array'] = true;
@@ -593,7 +618,7 @@ function rcmail_contact_form($form, $record, $attrib = null)
 
                         $coltypes[$field] += (array)$colprop;
                         $coltypes[$field]['count']++;
-                        $val = strtr($template, $composite);
+                        $val = preg_replace('/\{\w+\}/', '', strtr($template, $composite));
                     }
                     else if ($edit_mode) {
                         // call callback to render/format value
@@ -605,17 +630,11 @@ function rcmail_contact_form($form, $record, $attrib = null)
                         if ($colprop['subtypes'] || $colprop['limit'] != 1)
                             $colprop['array'] = true;
 
-                        // load jquery UI datepickert for date fields
+                        // load jquery UI datepicker for date fields
                         if ($colprop['type'] == 'date') {
-                            if (!$jqueryui_loaded++) {
-                                $RCMAIL->plugins->load_plugin('jqueryui');
-                                $RCMAIL->output->set_env('date_format', strtr($RCMAIL->config->get('date_format', 'Y-m-d'), array('y'=>'y', 'Y'=>'yy', 'm'=>'mm', 'n'=>'m', 'd'=>'dd', 'j'=>'d')));
-                                foreach (array('jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec') as $month)
-                                    $month_names[] = rcube_label($month);
-                                $RCMAIL->output->set_env('month_names', $month_names);
-                            }
                             $colprop['class'] .= ($colprop['class'] ? ' ' : '') . 'datepicker';
-                            $val = format_date($val, $RCMAIL->config->get('date_format', 'Y-m-d'), false);
+                            if (!$colprop['render_func'])
+                                $val = rcmail_format_date_col($val);
                         }
 
                         $val = rcmail_get_edit_field($col, $val, $colprop, $colprop['type']);
@@ -660,7 +679,7 @@ function rcmail_contact_form($form, $record, $attrib = null)
                 }
             }
 
-            if (!$content)
+            if (!$content && (!$edit_mode || !$select_add->_count))
                 continue;
 
             // also render add-field selector
@@ -691,9 +710,6 @@ function rcmail_contact_photo($attrib)
 {
     global $SOURCE_ID, $CONTACTS, $CONTACT_COLTYPES, $RCMAIL, $CONFIG;
 
-    if (!$CONTACT_COLTYPES['photo'])
-        return '';
-
     if ($result = $CONTACTS->get_result())
         $record = $result->first();
 
@@ -711,7 +727,7 @@ function rcmail_contact_photo($attrib)
     $img = html::img(array('src' => $photo_img, 'border' => 1, 'alt' => ''));
     $content = html::div($attrib, $img);
 
-    if ($RCMAIL->action == 'edit' || $RCMAIL->action == 'add') {
+    if ($CONTACT_COLTYPES['photo'] && ($RCMAIL->action == 'edit' || $RCMAIL->action == 'add')) {
         $RCMAIL->output->add_gui_object('contactphoto', $attrib['id']);
         $hidden = new html_hiddenfield(array('name' => '_photo', 'id' => 'ff_photo', 'value' => $ff_value));
         $content .= $hidden->show();
index a7be494912cd2c9c5872cf12ed969d62c6e01b1f..201eb0634ad7fdfa741a37fc2bc218e4e6663c49 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2010, The Roundcube Dev Team                            |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Create/delete/rename contact groups and assign/remove contacts      |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: groups.inc 4850 2011-06-14 13:45:26Z alec $
+ $Id$
 
 */
 
@@ -47,8 +50,10 @@ if ($RCMAIL->action == 'group-addmembers') {
 
     if ($result)
       $OUTPUT->show_message('contactaddedtogroup');
-    else
+    else if ($plugin['abort'] || $CONTACTS->get_error())
       $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error');
+    else
+      $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'nogroupassignmentschanged');
   }
 }
 
@@ -61,10 +66,12 @@ else if ($RCMAIL->action == 'group-delmembers') {
     else
       $result = $plugin['result'];
 
-    if ($result)
+    if ($result){
       $OUTPUT->show_message('contactremovedfromgroup');
-    else
+      $OUTPUT->command('remove_group_contacts',array('source' => $source, 'gid' => $gid));
+    }else{
       $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error');
+    }
   }
 }
 
index 63a6dae30928f48be02c41c7467af8a19e20953c..018c980ebf0e200c7871b989b4433211eceee3f3 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2008-2009, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Import contacts from a vCard or CSV file                            |
@@ -161,10 +164,11 @@ if ($_FILES['_file']['tmp_name'] && is_uploaded_file($_FILES['_file']['tmp_name'
       $CONTACTS->delete_all();
 
     foreach ($vcards as $vcard) {
-      $email = $vcard->email[0];
+      $email    = $vcard->email[0];
+      $a_record = $vcard->get_assoc();
 
-      // skip entries without an e-mail address
-      if (empty($email)) {
+      // skip entries without an e-mail address or invalid
+      if (empty($email) || !$CONTACTS->validate($a_record, true)) {
         $IMPORT_STATS->nomail++;
         continue;
       }
@@ -185,7 +189,6 @@ if ($_FILES['_file']['tmp_name'] && is_uploaded_file($_FILES['_file']['tmp_name'
         }
       }
 
-      $a_record = $vcard->get_assoc();
       $a_record['vcard'] = $vcard->export();
 
       $plugin = $RCMAIL->plugins->exec_hook('contact_create', array('record' => $a_record, 'source' => null));
index f5742225ac75cd65240e930d5e74c7d763cc1981..cc3fc3e11aec9a84a0bce1977b82ac77bf651293 100644 (file)
@@ -5,8 +5,11 @@
  | program/steps/addressbook/list.inc                                    |
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
- | Copyright (C) 2005-2007, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2005-2012, 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:                                                              |
  |   Send contacts list to client (as remote response)                   |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: list.inc 5967 2012-03-05 19:59:07Z alec $
+ $Id$
 
 */
 
@@ -31,7 +34,7 @@ if (!empty($_REQUEST['_search']) && isset($_SESSION['search'][$_REQUEST['_search
         $page = isset($_SESSION['page']) ? $_SESSION['page'] : 1;
 
     $_SESSION['page'] = $page;
-    $sort_col = $this->config->get('addressbook_sort_col', 'name');
+    $sort_col = $RCMAIL->config->get('addressbook_sort_col', 'name');
 
     // Get records from all sources
     foreach ($search as $s => $set) {
@@ -43,7 +46,7 @@ if (!empty($_REQUEST['_search']) && isset($_SESSION['search'][$_REQUEST['_search
         $source->set_search_set($set);
 
         // get records
-        $result = $source->list_records(array('name', 'email'));
+        $result = $source->list_records(array('name', 'firstname', 'surname', 'email'));
 
         while ($row = $result->next()) {
             $row['sourceid'] = $s;
@@ -57,13 +60,13 @@ if (!empty($_REQUEST['_search']) && isset($_SESSION['search'][$_REQUEST['_search
     ksort($records, SORT_LOCALE_STRING);
 
     // create resultset object
-    $count  = count($records);
-    $first  = ($page-1) * $CONFIG['pagesize'];
+    $count    = count($records);
+    $first  = ($page-1) * $PAGE_SIZE;
     $result = new rcube_result_set($count, $first);
 
     // we need only records for current page
-    if ($CONFIG['pagesize'] < $count) {
-        $records = array_slice($records, $first, $CONFIG['pagesize']);
+    if ($PAGE_SIZE < $count) {
+        $records = array_slice($records, $first, $PAGE_SIZE);
     }
 
     $result->records = array_values($records);
@@ -73,8 +76,8 @@ else {
     $CONTACTS = rcmail_contact_source(null, true);
 
     // get contacts for this user
-    $result = $CONTACTS->list_records(array('name'));
-    
+    $result = $CONTACTS->list_records(array('name', 'firstname', 'surname', 'email'));
+
     if (!$result->count && $result->searchonly) {
         $OUTPUT->show_message('contactsearchonly', 'notice');
         $OUTPUT->command('command', 'advanced-search');
@@ -82,7 +85,7 @@ else {
 }
 
 // update message count display
-$OUTPUT->set_env('pagecount', ceil($result->count / $CONFIG['pagesize']));
+$OUTPUT->set_env('pagecount', ceil($result->count / $PAGE_SIZE));
 $OUTPUT->command('set_rowcount', rcmail_get_rowcount_text($result));
 
 // create javascript list
index c40ecdf72192a59b2c512725533faceb27bb9dda..965d717581730b6650384755108307f90f289a7e 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2007, The Roundcube Dev Team                            |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Compose a recipient list with all selected contacts                 |
index 6ce9bd43e1879e72b97d28ec869c229c81bdbd83..e80f8010b11672f2e53ec35df6731e6102328477 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2011, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Save a contact entry or to add a new one                            |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: save.inc 5873 2012-02-11 13:50:04Z thomasb $
+ $Id$
 
 */
 
@@ -180,18 +183,24 @@ else {
     $insert_id = $plugin['result'];
 
   if ($insert_id) {
+    $CONTACTS->reset();
+
     // add new contact to the specified group
     if ($CONTACTS->groups && $CONTACTS->group_id) {
       $plugin = $RCMAIL->plugins->exec_hook('group_addmembers', array(
         'group_id' => $CONTACTS->group_id, 'ids' => $insert_id, 'source' => $source));
 
+      $counts = $CONTACTS->count();
+
       if (!$plugin['abort']) {
-        if (($maxnum = $RCMAIL->config->get('max_group_members', 0)) && ($CONTACTS->count()->count + 1 > $maxnum))
+        if (($maxnum = $RCMAIL->config->get('max_group_members', 0)) && ($counts->count + 1 > $maxnum))
           $OUTPUT->show_message('maxgroupmembersreached', 'warning', array('max' => $maxnum));
 
         $CONTACTS->add_to_group($gid, $plugin['ids']);
       }
     }
+    else
+      $counts = $CONTACTS->count();
 
     if ((string)$source === (string)$orig_source) {
       // add contact row or jump to the page where it should appear
@@ -203,7 +212,7 @@ else {
 
       // update record count display
       $CONTACTS->reset();
-      $OUTPUT->command('parent.set_rowcount', rcmail_get_rowcount_text());
+      $OUTPUT->command('parent.set_rowcount', rcmail_get_rowcount_text($counts));
     }
     else {
       // re-set iframe
index 9415de4ee60069273c0547ff1a24f3ddc1701335..344c42dd42179e034b93c874436f243c5cb8d7aa 100644 (file)
@@ -7,7 +7,10 @@
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2011, The Roundcube Dev Team                       |
  | Copyright (C) 2011, Kolab Systems AG                                  |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Search action (and form) for address book contacts                  |
@@ -88,7 +91,7 @@ $OUTPUT->send('contactsearch');
 
 function rcmail_contact_search()
 {
-    global $RCMAIL, $OUTPUT, $CONFIG, $SEARCH_MODS_DEFAULT;
+    global $RCMAIL, $OUTPUT, $SEARCH_MODS_DEFAULT, $PAGE_SIZE;
 
     $adv = isset($_POST['_adv']);
     $sid = get_input_value('_sid', RCUBE_INPUT_GET);
@@ -179,7 +182,7 @@ function rcmail_contact_search()
         }
 
         // get records
-        $result = $source->list_records(array('name', 'email'));
+        $result = $source->list_records(array('name', 'firstname', 'surname', 'email'));
 
         while ($row = $result->next()) {
             $row['sourceid'] = $s['id'];
@@ -199,8 +202,8 @@ function rcmail_contact_search()
     $result = new rcube_result_set($count);
 
     // cut first-page records
-    if ($CONFIG['pagesize'] < $count) {
-        $records = array_slice($records, 0, $CONFIG['pagesize']);
+    if ($PAGE_SIZE < $count) {
+        $records = array_slice($records, 0, $PAGE_SIZE);
     }
 
     $result->records = array_values($records);
@@ -229,16 +232,19 @@ function rcmail_contact_search()
 
     // update message count display
     $OUTPUT->command('set_env', 'search_request', $search_request);
-    $OUTPUT->command('set_env', 'pagecount', ceil($result->count / $CONFIG['pagesize']));
+    $OUTPUT->command('set_env', 'pagecount', ceil($result->count / $PAGE_SIZE));
     $OUTPUT->command('set_rowcount', rcmail_get_rowcount_text($result));
     // Re-set current source
     $OUTPUT->command('set_env', 'search_id', $sid);
     $OUTPUT->command('set_env', 'source', '');
     $OUTPUT->command('set_env', 'group', '');
 
-    // unselect currently selected directory/group
-    if (!$sid)
+    if (!$sid) {
+        // unselect currently selected directory/group
         $OUTPUT->command('unselect_directory');
+        // enable "Save search" command
+        $OUTPUT->command('enable_command', 'search-create', true);
+    }
     $OUTPUT->command('update_group_commands');
 
     // send response
index 7d00ed1cd568848371cdb857bfb60ca55d319bb2..bf65bebe4b574f4a3d1afb6229ee1bcf494321a1 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2009, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Show contact details                                                |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: show.inc 5681 2012-01-01 13:36:22Z alec $
+ $Id$
 
 */
 
@@ -30,6 +33,7 @@ $SOURCE_ID = $source;
 
 // read contact record
 if ($cid && ($record = $CONTACTS->get_record($cid, true))) {
+    $OUTPUT->set_env('readonly', $CONTACTS->readonly || $record['readonly']);
     $OUTPUT->set_env('cid', $record['ID']);
 }
 
@@ -203,7 +207,7 @@ function rcmail_contact_record_groups($contact_id)
     $RCMAIL->output->add_gui_object('editform', 'form');
     $RCMAIL->output->add_label('addingmember', 'removingmember');
 
-    return $form_start . $table->show() . $form_end;
+    return $form_start . html::tag('fieldset', 'contactfieldgroup contactgroups', $table->show()) . $form_end;
 }
 
 
index 3515c0ada305719ea3989f80671814ca986758ab..4283ed18572b4e9a503dcd86a1356bc6596e9ba3 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2011, Kolab Systems AG                                  |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Undelete contacts (CIDs) from last delete action                    |
@@ -15,7 +18,7 @@
  | Author: Aleksander Machniak <machniak@kolabsys.com>                   |
  +-----------------------------------------------------------------------+
 
- $Id: undo.inc 5967 2012-03-05 19:59:07Z alec $
+ $Id$
 
 */
 
index 6aeaea6c86ad2b6404ae8f85d204d19ad47bf7d1..195bac563583c528bd8a0fa91cf15503169aa26f 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2011, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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 contact photo uploads                                       |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: upload_photo.inc 5110 2011-08-22 14:33:02Z alec $
+ $Id$
 
 */
 
@@ -28,20 +31,19 @@ $OUTPUT->reset();
 
 if ($filepath = $_FILES['_photo']['tmp_name']) {
     // check file type and resize image
-    $imageprop = rcmail::imageprops($_FILES['_photo']['tmp_name']);
+    $image     = new rcube_image($_FILES['_photo']['tmp_name']);
+    $imageprop = $image->props();
 
     if (in_array(strtolower($imageprop['type']), $IMAGE_TYPES)
-       && $imageprop['width'] && $imageprop['height']
+        && $imageprop['width'] && $imageprop['height']
     ) {
-        $maxsize = intval($RCMAIL->config->get('contact_photo_size', 160));
-        $tmpfname = tempnam($RCMAIL->config->get('temp_dir'), 'rcmImgConvert');
+        $maxsize   = intval($RCMAIL->config->get('contact_photo_size', 160));
+        $tmpfname  = tempnam($RCMAIL->config->get('temp_dir'), 'rcmImgConvert');
         $save_hook = 'attachment_upload';
 
         // scale image to a maximum size
-        if (($imageprop['width'] > $maxsize || $imageprop['height'] > $maxsize) &&
-            (rcmail::imageconvert(array('in' => $filepath, 'out' => $tmpfname,
-                'size' => $maxsize.'x'.$maxsize, 'type' => $imageprop['type'])) !== false)) {
-            $filepath = $tmpfname;
+        if (($imageprop['width'] > $maxsize || $imageprop['height'] > $maxsize) && $image->resize($maxsize, $tmpfname)) {
+            $filepath  = $tmpfname;
             $save_hook = 'attachment_save';
         }
 
@@ -54,8 +56,9 @@ if ($filepath = $_FILES['_photo']['tmp_name']) {
             'group' => 'contact',
         ));
     }
-    else
+    else {
         $attachment['error'] = rcube_label('invalidimageformat');
+    }
 
     if ($attachment['status'] && !$attachment['abort']) {
         $file_id = $attachment['id'];
index 766dcc8cfedcf0b8cf252f75a65e85fa2e5bf6e7..74768116eda3227f577cc72eb8587e9c1e7bad58 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2009, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Add the submitted contact to the users address book                 |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: addcontact.inc 5873 2012-02-11 13:50:04Z thomasb $
+ $Id$
 
 */
 
@@ -37,7 +40,7 @@ if ($abook == null || !is_object($CONTACTS)) {
 
 if (!empty($_POST['_address']) && is_object($CONTACTS))
 {
-  $contact_arr = $IMAP->decode_address_list(get_input_value('_address', RCUBE_INPUT_POST, true), 1, false);
+  $contact_arr = rcube_mime::decode_address_list(get_input_value('_address', RCUBE_INPUT_POST, true), 1, false);
 
   if (!empty($contact_arr[1]['mailto'])) {
     $contact = array(
index 3a85fa5a02acd32b26e8470054e5ce8b1b0e7268..ff9424fd672ad01a841238e8a265c14f2a7dbbb4 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2009, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Upload, remove, display attachments in compose form                 |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: attachments.inc 5543 2011-12-05 07:24:36Z alec $
+ $Id$
 
 */
 
@@ -126,6 +129,7 @@ if (is_array($_FILES['_attachments']['tmp_name'])) {
         'href' => "#delete",
         'onclick' => sprintf("return %s.command('remove-attachment','rcmfile%s', this)", JS_OBJECT_NAME, $id),
         'title' => rcube_label('delete'),
+        'class' => 'delete',
       ), $button);
 
       $content .= Q($attachment['name']);
@@ -134,6 +138,7 @@ if (is_array($_FILES['_attachments']['tmp_name'])) {
         'html' => $content,
         'name' => $attachment['name'],
         'mimetype' => $attachment['mimetype'],
+        'classname' => rcmail_filetype2classname($attachment['mimetype'], $attachment['name']),
         'complete' => true), $uploadid);
     }
     else {  // upload failed
index 70e777ab5f6ffc1eda47d56e5c37316cacd41e89..95d61184155f8ccda449d391f870b5116bb0a5e9 100644 (file)
@@ -7,7 +7,10 @@
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2008-2011, Roundcube Dev Team                           |
  | Copyright (C) 2011, Kolab Systems AG                                  |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Perform a search on configured address books for the address        |
@@ -16,7 +19,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: autocomplete.inc 5635 2011-12-21 10:07:42Z alec $
+ $Id$
 
 */
 
@@ -26,10 +29,10 @@ if ($RCMAIL->action == 'group-expand') {
     $members = array();
     $abook->set_group($gid);
     $abook->set_pagesize(1000);  // TODO: limit number of group members by config
-    $result = $abook->list_records(array('email','name'));
+    $result = $abook->list_records(array('name', 'firstname', 'surname', 'email'));
     while ($result && ($sql_arr = $result->iterate())) {
       foreach ((array)$sql_arr['email'] as $email) {
-        $members[] = format_email_recipient($email, $sql_arr['name']);
+        $members[] = format_email_recipient($email, rcube_addressbook::compose_list_name($sql_arr));
         break;  // only expand one email per contact
       }
     }
@@ -64,7 +67,7 @@ if (!empty($book_types) && strlen($search)) {
     $abook = $RCMAIL->get_address_book($id);
     $abook->set_pagesize($MAXNUM);
 
-    if ($result = $abook->search(array('email','name'), $search, $mode, true, true, 'email')) {
+    if ($result = $abook->search(array('name', 'firstname', 'surname', 'email'), $search, $mode, true, true, 'email')) {
       while ($sql_arr = $result->iterate()) {
         // Contact can have more than one e-mail address
         $email_arr = (array)$abook->get_col_values('email', $sql_arr, true);
@@ -75,6 +78,7 @@ if (!empty($book_types) && strlen($search)) {
             continue;
           }
 
+          $sql_arr['name'] = rcube_addressbook::compose_list_name($sql_arr);
           $contact = format_email_recipient($email, $sql_arr['name']);
 
           // skip entries that don't match
index 3b6b4ecad17ef79877a345b94f717a6b625a2f36..34f9989ceda143b429ad62cb614f88076b8130c1 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2010, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Check for recent messages, in all mailboxes                         |
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: check_recent.inc 5266 2011-09-22 07:49:33Z alec $
+ $Id$
 
 */
 
-$current = $IMAP->get_mailbox_name();
+$current = $RCMAIL->storage->get_folder();
 $check_all = !empty($_GET['_refresh']) || (bool)$RCMAIL->config->get('check_all_folders');
 
 // list of folders to check
 if ($check_all) {
-    $a_mailboxes = $IMAP->list_mailboxes('', '*', 'mail');
+    $a_mailboxes = $RCMAIL->storage->list_folders_subscribed('', '*', 'mail');
 }
 else {
     $a_mailboxes = (array) $current;
@@ -37,11 +40,11 @@ foreach ($a_mailboxes as $mbox_name) {
     $is_current = $mbox_name == $current;
     if ($is_current) {
         // Synchronize mailbox cache, handle flag changes
-        $IMAP->mailbox_sync($mbox_name);
+        $RCMAIL->storage->folder_sync($mbox_name);
     }
 
     // Get mailbox status
-    $status = $IMAP->mailbox_status($mbox_name);
+    $status = $RCMAIL->storage->folder_status($mbox_name);
 
     if ($status & 1) {
         // trigger plugin hook
@@ -49,7 +52,8 @@ foreach ($a_mailboxes as $mbox_name) {
             array('mailbox' => $mbox_name, 'is_current' => $is_current));
     }
 
-    rcmail_send_unread_count($mbox_name, true);
+    rcmail_send_unread_count($mbox_name, true, null,
+      (!$is_current && ($status & 1)) ? 'recent' : '');
 
     if ($status && $is_current) {
         // refresh saved search set
@@ -57,7 +61,7 @@ foreach ($a_mailboxes as $mbox_name) {
         if ($search_request && isset($_SESSION['search'])
             && $_SESSION['search_request'] == $search_request
         ) {
-            $_SESSION['search'] = $IMAP->refresh_search();
+            $_SESSION['search'] = $RCMAIL->storage->refresh_search();
         }
 
         if (!empty($_GET['_quota']))
@@ -67,28 +71,32 @@ foreach ($a_mailboxes as $mbox_name) {
         if (empty($_GET['_list']))
             continue;
 
-        // get overall message count; allow caching because rcube_imap::mailbox_status() did a refresh
-        $all_count = $IMAP->messagecount(null, $IMAP->threading ? 'THREADS' : 'ALL');
+        // get overall message count; allow caching because rcube_storage::folder_status() did a refresh
+        $list_mode = $RCMAIL->storage->get_threading() ? 'THREADS' : 'ALL';
+        $all_count = $RCMAIL->storage->count(null, $list_mode, false, false);
+        $page      = $RCMAIL->storage->get_page();
+        $page_size = $RCMAIL->storage->get_pagesize();
 
         // check current page if we're not on the first page
-        if ($all_count && $IMAP->list_page > 1) {
-            $remaining = $all_count - $IMAP->page_size * ($IMAP->list_page - 1);
+        if ($all_count && $page > 1) {
+            $remaining = $all_count - $page_size * ($page - 1);
             if ($remaining <= 0) {
-                $IMAP->set_page($IMAP->list_page-1);
-                $_SESSION['page'] = $IMAP->list_page;
+                $page -= 1;
+                $RCMAIL->storage->set_page($page);
+                $_SESSION['page'] = $page;
             }
         }
 
         $OUTPUT->set_env('messagecount', $all_count);
-        $OUTPUT->set_env('pagecount', ceil($all_count/$IMAP->page_size));
+        $OUTPUT->set_env('pagecount', ceil($all_count/$page_size));
         $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text($all_count), $mbox_name);
-        $OUTPUT->set_env('current_page', $all_count ? $IMAP->list_page : 1);
+        $OUTPUT->set_env('current_page', $all_count ? $page : 1);
 
         // remove old rows (and clear selection if new list is empty)
         $OUTPUT->command('message_list.clear', $all_count ? false : true);
 
         if ($all_count) {
-            $a_headers = $IMAP->list_headers($mbox_name, null, $_SESSION['sort_col'], $_SESSION['sort_order']);
+            $a_headers = $RCMAIL->storage->list_messages($mbox_name, null, rcmail_sort_column(), rcmail_sort_order());
             // add message rows
             rcmail_js_message_list($a_headers, false);
             // remove messages that don't exists from list selection array
index c11d35620e9bfbfb79c16319191f82fdee02a1a6..064983a9ac4d27badbcbbf493a30c6bdcf5d7bb8 100644 (file)
@@ -5,8 +5,11 @@
  | program/steps/mail/compose.inc                                        |
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
- | Copyright (C) 2005-2011, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2005-2012, 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:                                                              |
  |   Compose a new mail message with all headers and attachments         |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: compose.inc 5683 2012-01-01 19:10:53Z alec $
+ $Id$
 
 */
 
@@ -26,7 +29,6 @@ define('RCUBE_COMPOSE_DRAFT', 0x0108);
 define('RCUBE_COMPOSE_EDIT', 0x0109);
 
 $MESSAGE_FORM = null;
-$MESSAGE      = null;
 $COMPOSE_ID   = get_input_value('_id', RCUBE_INPUT_GET);
 $COMPOSE      = null;
 
@@ -56,7 +58,7 @@ if (!is_array($COMPOSE))
   $_SESSION['compose_data_'.$COMPOSE_ID] = array(
     'id'      => $COMPOSE_ID,
     'param'   => request2param(RCUBE_INPUT_GET),
-    'mailbox' => $IMAP->get_mailbox_name(),
+    'mailbox' => $RCMAIL->storage->get_folder(),
   );
   $COMPOSE =& $_SESSION['compose_data_'.$COMPOSE_ID];
 
@@ -116,7 +118,11 @@ if (!is_array($COMPOSE))
   }
 
   // redirect to a unique URL with all parameters stored in session
-  $OUTPUT->redirect(array('_action' => 'compose', '_id' => $COMPOSE['id']));
+  $OUTPUT->redirect(array(
+    '_action' => 'compose',
+    '_id'     => $COMPOSE['id'],
+    '_search' => $_REQUEST['_search'],
+  ));
 }
 
 
@@ -134,17 +140,20 @@ if (!empty($CONFIG['drafts_mbox'])) {
   $OUTPUT->set_env('draft_autosave', $CONFIG['draft_autosave']);
 }
 // set current mailbox in client environment
-$OUTPUT->set_env('mailbox', $IMAP->get_mailbox_name());
+$OUTPUT->set_env('mailbox', $RCMAIL->storage->get_folder());
 $OUTPUT->set_env('sig_above', $RCMAIL->config->get('sig_above', false));
 $OUTPUT->set_env('top_posting', $RCMAIL->config->get('top_posting', false));
 $OUTPUT->set_env('recipients_separator', trim($RCMAIL->config->get('recipients_separator', ',')));
 
-// use jquery UI for showing prompt() dialogs
-$RCMAIL->plugins->load_plugin('jqueryui');
+// default font for HTML editor
+$font = rcube_fontdefs($RCMAIL->config->get('default_font', 'Verdana'));
+if ($font && !is_array($font)) {
+  $OUTPUT->set_env('default_font', $font);
+}
 
 // get reference message and set compose mode
 if ($msg_uid = $COMPOSE['param']['draft_uid']) {
-  $RCMAIL->imap->set_mailbox($CONFIG['drafts_mbox']);
+  $RCMAIL->storage->set_folder($CONFIG['drafts_mbox']);
   $compose_mode = RCUBE_COMPOSE_DRAFT;
 }
 else if ($msg_uid = $COMPOSE['param']['reply_uid'])
@@ -175,11 +184,11 @@ if (!empty($msg_uid))
   $MESSAGE = new rcube_message($msg_uid);
 
   // make sure message is marked as read
-  if ($MESSAGE && $MESSAGE->headers && empty($MESSAGE->headers->flags['SEEN']))
-    $IMAP->set_flag($msg_uid, 'SEEN');
+  if ($MESSAGE->headers && empty($MESSAGE->headers->flags['SEEN']))
+    $RCMAIL->storage->set_flag($msg_uid, 'SEEN');
 
   if (!empty($MESSAGE->headers->charset))
-    $IMAP->set_charset($MESSAGE->headers->charset);
+    $RCMAIL->storage->set_charset($MESSAGE->headers->charset);
 
   if ($compose_mode == RCUBE_COMPOSE_REPLY)
   {
@@ -235,15 +244,19 @@ if (!empty($msg_uid))
       $MESSAGE->forward_attachment = true;
   }
 }
+else {
+  $MESSAGE = new stdClass();
+}
 
 $MESSAGE->compose = array();
 
 // get user's identities
-$MESSAGE->identities = $USER->list_identities();
+$MESSAGE->identities = $RCMAIL->user->list_identities();
 if (count($MESSAGE->identities))
 {
   foreach ($MESSAGE->identities as $idx => $ident) {
-    $email = mb_strtolower(rcube_idn_to_utf8($ident['email']));
+    $ident['email'] = format_email($ident['email']);
+    $email = format_email(rcube_idn_to_utf8($ident['email']));
 
     $MESSAGE->identities[$idx]['email_ascii'] = $ident['email'];
     $MESSAGE->identities[$idx]['ident']       = format_email_recipient($ident['email'], $ident['name']);
@@ -265,19 +278,19 @@ else if (count($MESSAGE->identities)) {
   // extract all recipients of the reply-message
   if (is_object($MESSAGE->headers) && in_array($compose_mode, array(RCUBE_COMPOSE_REPLY, RCUBE_COMPOSE_FORWARD)))
   {
-    $a_to = $IMAP->decode_address_list($MESSAGE->headers->to);
+    $a_to = rcube_mime::decode_address_list($MESSAGE->headers->to, null, true, $MESSAGE->headers->charset);
     foreach ($a_to as $addr) {
       if (!empty($addr['mailto'])) {
-        $a_recipients[] = strtolower($addr['mailto']);
+        $a_recipients[] = format_email($addr['mailto']);
         $a_names[]      = $addr['name'];
       }
     }
 
     if (!empty($MESSAGE->headers->cc)) {
-      $a_cc = $IMAP->decode_address_list($MESSAGE->headers->cc);
+      $a_cc = rcube_mime::decode_address_list($MESSAGE->headers->cc, null, true, $MESSAGE->headers->charset);
       foreach ($a_cc as $addr) {
         if (!empty($addr['mailto'])) {
-          $a_recipients[] = strtolower($addr['mailto']);
+          $a_recipients[] = format_email($addr['mailto']);
           $a_names[]      = $addr['name'];
         }
       }
@@ -285,16 +298,12 @@ else if (count($MESSAGE->identities)) {
   }
 
   $from_idx         = null;
-  $default_identity = null;
+  $found_idx        = null;
+  $default_identity = 0; // default identity is always first on the list
   $return_path      = $MESSAGE->headers->others['return-path'];
 
   // Select identity
   foreach ($MESSAGE->identities as $idx => $ident) {
-    // save default identity ID
-    if ($ident['standard']) {
-      $default_identity = $idx;
-    }
-
     // use From header
     if (in_array($compose_mode, array(RCUBE_COMPOSE_DRAFT, RCUBE_COMPOSE_EDIT))) {
       if ($MESSAGE->headers->from == $ident['ident']) {
@@ -309,13 +318,22 @@ else if (count($MESSAGE->identities)) {
     }
     // use replied message recipients
     else if (($found = array_search($ident['email_ascii'], $a_recipients)) !== false) {
-      // match identity name, prefer default identity
-      if ($from_idx === null || ($a_names[$found] && $ident['name'] && $a_names[$found] == $ident['name'])) {
+      if ($found_idx === null) {
+        $found_idx = $idx;
+      }
+      // match identity name
+      if ($a_names[$found] && $ident['name'] && $a_names[$found] == $ident['name']) {
         $from_idx = $idx;
+        break;
       }
     }
   }
 
+  // If matching by name+address doesn't found any amtches, get first found address (identity)
+  if ($from_idx === null) {
+    $from_idx = $found_idx;
+  }
+
   // Fallback using Return-Path
   if ($from_idx === null && $return_path) {
     foreach ($MESSAGE->identities as $idx => $ident) {
@@ -326,12 +344,7 @@ else if (count($MESSAGE->identities)) {
     }
   }
 
-  // Still no ID, use default/first identity
-  if ($from_idx === null) {
-    $from_idx = $default_identity !== null ? $default_identity : key(reset($MESSAGE->identities));
-  }
-
-  $ident   = $MESSAGE->identities[$from_idx];
+  $ident   = $MESSAGE->identities[$from_idx !== null ? $from_idx : $default_identity];
   $from_id = $ident['identity_id'];
 
   $MESSAGE->compose['from_email'] = $ident['email'];
@@ -402,11 +415,11 @@ foreach ($parts as $header) {
   else if (in_array($compose_mode, array(RCUBE_COMPOSE_DRAFT, RCUBE_COMPOSE_EDIT))) {
     // get drafted headers
     if ($header=='to' && !empty($MESSAGE->headers->to))
-      $fvalue = $MESSAGE->get_header('to');
+      $fvalue = $MESSAGE->get_header('to', true);
     else if ($header=='cc' && !empty($MESSAGE->headers->cc))
-      $fvalue = $MESSAGE->get_header('cc');
+      $fvalue = $MESSAGE->get_header('cc', true);
     else if ($header=='bcc' && !empty($MESSAGE->headers->bcc))
-      $fvalue = $MESSAGE->get_header('bcc');
+      $fvalue = $MESSAGE->get_header('bcc', true);
     else if ($header=='replyto' && !empty($MESSAGE->headers->others['mail-reply-to']))
       $fvalue = $MESSAGE->get_header('mail-reply-to');
     else if ($header=='replyto' && !empty($MESSAGE->headers->replyto))
@@ -417,14 +430,14 @@ 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 = $IMAP->decode_address_list($fvalue, null, $decode_header);
+    $to_addresses = rcube_mime::decode_address_list($fvalue, null, $decode_header, $MESSAGE->headers->charset);
     $fvalue = array();
 
     foreach ($to_addresses as $addr_part) {
       if (empty($addr_part['mailto']))
         continue;
 
-      $mailto = mb_strtolower(rcube_idn_to_utf8($addr_part['mailto']));
+      $mailto = format_email(rcube_idn_to_utf8($addr_part['mailto']));
 
       if (!in_array($mailto, $a_recipients)
         && ($header == 'to' || empty($MESSAGE->compose['from_email']) || $mailto != $MESSAGE->compose['from_email'])
@@ -520,7 +533,7 @@ function rcmail_compose_headers($attrib)
 
 function rcmail_compose_header_from($attrib)
 {
-  global $MESSAGE, $OUTPUT;
+  global $MESSAGE, $OUTPUT, $RCMAIL, $compose_mode;
 
   // pass the following attributes to the form class
   $field_attrib = array('name' => '_from');
@@ -531,6 +544,8 @@ function rcmail_compose_header_from($attrib)
   if (count($MESSAGE->identities))
   {
     $a_signatures = array();
+    $separator    = $RCMAIL->config->get('sig_above')
+      && ($compose_mode == RCUBE_COMPOSE_REPLY || $compose_mode == RCUBE_COMPOSE_FORWARD) ? '---' : '-- ';
 
     $field_attrib['onchange'] = JS_OBJECT_NAME.".change_identity(this)";
     $select_from = new html_select($field_attrib);
@@ -544,13 +559,27 @@ function rcmail_compose_header_from($attrib)
       // add signature to array
       if (!empty($sql_arr['signature']) && empty($COMPOSE['param']['nosig']))
       {
-        $a_signatures[$identity_id]['text'] = $sql_arr['signature'];
-        $a_signatures[$identity_id]['is_html'] = ($sql_arr['html_signature'] == 1) ? true : false;
-        if ($a_signatures[$identity_id]['is_html'])
-        {
-            $h2t = new html2text($a_signatures[$identity_id]['text'], false, false);
-            $a_signatures[$identity_id]['plain_text'] = trim($h2t->get_text());
+        $text = $html = $sql_arr['signature'];
+
+        if ($sql_arr['html_signature']) {
+            $h2t  = new html2text($sql_arr['signature'], false, false);
+            $text = trim($h2t->get_text());
+        }
+        else {
+            $html = htmlentities($html, ENT_NOQUOTES, RCMAIL_CHARSET);
+        }
+
+        if (!preg_match('/^--[ -]\r?\n/m', $text)) {
+            $text = $separator . "\n" . $text;
+            $html = $separator . "<br>" . $html;
+        }
+
+        if (!$sql_arr['html_signature']) {
+            $html = "<pre>" . $html . "</pre>";
         }
+
+        $a_signatures[$identity_id]['text'] = $text;
+        $a_signatures[$identity_id]['html'] = $html;
       }
     }
 
@@ -581,10 +610,10 @@ function rcmail_compose_editor_mode()
   $html_editor = intval($RCMAIL->config->get('htmleditor'));
 
   if ($compose_mode == RCUBE_COMPOSE_DRAFT || $compose_mode == RCUBE_COMPOSE_EDIT) {
-    $useHtml = $MESSAGE->has_html_part();
+    $useHtml = $MESSAGE->has_html_part(false);
   }
   else if ($compose_mode == RCUBE_COMPOSE_REPLY) {
-    $useHtml = ($html_editor == 1 || ($html_editor == 2 && $MESSAGE->has_html_part()));
+    $useHtml = ($html_editor == 1 || ($html_editor == 2 && $MESSAGE->has_html_part(false)));
   }
   else { // RCUBE_COMPOSE_FORWARD or NEW
     $useHtml = ($html_editor == 1);
@@ -616,40 +645,22 @@ function rcmail_prepare_message_body()
   }
   // reply/edit/draft/forward
   else if ($compose_mode) {
-    $has_html_part = $MESSAGE->has_html_part();
     $isHtml = rcmail_compose_editor_mode();
 
-    if ($isHtml) {
-      if ($has_html_part) {
-        $body = $MESSAGE->first_html_part();
-      }
-      else {
-        $body = $MESSAGE->first_text_part();
-        // try to remove the signature
-        if ($RCMAIL->config->get('strip_existing_sig', true))
-          $body = rcmail_remove_signature($body);
-        // add HTML formatting
-        $body = rcmail_plain_body($body);
-        if ($body)
-          $body = '<pre>' . $body . '</pre>';
+    if (!empty($MESSAGE->parts)) {
+      foreach ($MESSAGE->parts as $part) {
+        // skip no-content and attachment parts (#1488557)
+        if ($part->type != 'content' || !$part->size || $MESSAGE->is_attachment($part)) {
+          continue;
+        }
+
+        if ($part_body = rcmail_compose_part_body($part, $isHtml)) {
+          $body .= ($body ? ($isHtml ? '<br/>' : "\n") : '') . $part_body;
+        }
       }
     }
     else {
-      if ($has_html_part) {
-        // use html part if it has been used for message (pre)viewing
-        // decrease line length for quoting
-        $len = $compose_mode == RCUBE_COMPOSE_REPLY ? $LINE_LENGTH-2 : $LINE_LENGTH;
-        $txt = new html2text($MESSAGE->first_html_part(), false, true, $len);
-        $body = $txt->get_text();
-      }
-      else {
-        $body = $MESSAGE->first_text_part($part);
-        if ($body && $part && $part->ctype_secondary == 'plain'
-            && $part->ctype_parameters['format'] == 'flowed'
-        ) {
-          $body = rcube_message::unfold_flowed($body);
-        }
-      }
+      $body = rcmail_compose_part_body($MESSAGE, $isHtml);
     }
 
     // compose reply-body
@@ -675,9 +686,9 @@ function rcmail_prepare_message_body()
   if ($isHtml && preg_match('#<img src="\./program/blocked\.gif"#', $body)) {
     if ($attachment = rcmail_save_image('program/blocked.gif', 'image/gif')) {
       $COMPOSE['attachments'][$attachment['id']] = $attachment;
-      $body = preg_replace('#\./program/blocked\.gif#',
-        $RCMAIL->comm_path.'&_action=display-attachment&_file=rcmfile'.$attachment['id'].'&_id='.$COMPOSE['id'],
-        $body);
+      $url = sprintf('%s&_id=%s&_action=display-attachment&_file=rcmfile%s',
+        $RCMAIL->comm_path, $COMPOSE['id'], $attachment['id']);
+      $body = preg_replace('#\./program/blocked\.gif#', $url, $body);
     }
   }
 
@@ -686,6 +697,70 @@ function rcmail_prepare_message_body()
   return $body;
 }
 
+function rcmail_compose_part_body($part, $isHtml = false)
+{
+    global $RCMAIL, $MESSAGE, $compose_mode;
+
+    // Check if we have enough memory to handle the message in it
+    // #1487424: we need up to 10x more memory than the body
+    if (!rcmail_mem_check($part->size * 10)) {
+        return '';
+    }
+
+    if (empty($part->ctype_parameters) || empty($part->ctype_parameters['charset'])) {
+        $part->ctype_parameters['charset'] = $MESSAGE->headers->charset;
+    }
+
+    // fetch part if not available
+    if (!isset($part->body)) {
+        $part->body = $MESSAGE->get_part_content($part->mime_id);
+    }
+
+    // message is cached but not exists (#1485443), or other error
+    if ($part->body === false) {
+        return '';
+    }
+
+    $body = $part->body;
+
+    if ($isHtml) {
+        if ($part->ctype_secondary == 'html') {
+        }
+        else {
+            // try to remove the signature
+            if ($RCMAIL->config->get('strip_existing_sig', true)) {
+                $body = rcmail_remove_signature($body);
+            }
+            // add HTML formatting
+            $body = rcmail_plain_body($body);
+            if ($body) {
+                $body = '<pre>' . $body . '</pre>';
+            }
+        }
+    }
+    else {
+        if ($part->ctype_secondary == 'html') {
+            // use html part if it has been used for message (pre)viewing
+            // decrease line length for quoting
+            $len = $compose_mode == RCUBE_COMPOSE_REPLY ? $LINE_LENGTH-2 : $LINE_LENGTH;
+            $txt = new html2text($body, false, true, $len);
+            $body = $txt->get_text();
+        }
+        else {
+            if ($part->ctype_secondary == 'plain' && $part->ctype_parameters['format'] == 'flowed') {
+                $body = rcube_mime::unfold_flowed($body);
+            }
+
+            // try to remove the signature
+            if ($RCMAIL->config->get('strip_existing_sig', true)) {
+                $body = rcmail_remove_signature($body);
+            }
+        }
+    }
+
+    return $body;
+}
+
 function rcmail_compose_body($attrib)
 {
   global $RCMAIL, $CONFIG, $OUTPUT, $MESSAGE, $compose_mode, $LINE_LENGTH, $HTML_MODE, $MESSAGE_BODY;
@@ -713,6 +788,7 @@ function rcmail_compose_body($attrib)
 
   // If desired, set this textarea to be editable by TinyMCE
   if ($isHtml) {
+    $MESSAGE_BODY = htmlentities($MESSAGE_BODY, ENT_NOQUOTES, RCMAIL_CHARSET);
     $attrib['class'] = 'mce_editor';
     $textarea = new html_textarea($attrib);
     $out .= $textarea->show($MESSAGE_BODY);
@@ -733,14 +809,14 @@ function rcmail_compose_body($attrib)
   // include HTML editor
   rcube_html_editor();
 
-  // include GoogieSpell
+  // Set language list
   if (!empty($CONFIG['enable_spellcheck'])) {
     $engine           = $RCMAIL->config->get('spellcheck_engine','googie');
     $dictionary       = (bool) $RCMAIL->config->get('spellcheck_dictionary');
     $spellcheck_langs = (array) $RCMAIL->config->get('spellcheck_languages',
       array('da'=>'Dansk', 'de'=>'Deutsch', 'en' => 'English', 'es'=>'Español',
             'fr'=>'Français', 'it'=>'Italiano', 'nl'=>'Nederlands', 'pl'=>'Polski',
-            'pt'=>'Português', 'fi'=>'Suomi', 'sv'=>'Svenska'));
+            'pt'=>'Português', 'ru'=>'Русский', 'fi'=>'Suomi', 'sv'=>'Svenska'));
 
     // googie works only with two-letter codes
     if ($engine == 'googie') {
@@ -762,14 +838,18 @@ function rcmail_compose_body($attrib)
     if (!$spellcheck_langs[$lang])
       $lang = 'en';
 
+    $OUTPUT->set_env('spell_langs', $spellcheck_langs);
+    $OUTPUT->set_env('spell_lang', $lang);
+
     $editor_lang_set = array();
     foreach ($spellcheck_langs as $key => $name) {
       $editor_lang_set[] = ($key == $lang ? '+' : '') . JQ($name).'='.JQ($key);
     }
 
+    // include GoogieSpell
     $OUTPUT->include_script('googiespell.js');
     $OUTPUT->add_script(sprintf(
-      "var googie = new GoogieSpell('\$__skin_path/images/googiespell/','?_task=utils&_action=spell&lang=', %s);\n".
+      "var googie = new GoogieSpell('%s/images/googiespell/','%s&lang=', %s);\n".
       "googie.lang_chck_spell = \"%s\";\n".
       "googie.lang_rsm_edt = \"%s\";\n".
       "googie.lang_close = \"%s\";\n".
@@ -778,9 +858,11 @@ function rcmail_compose_body($attrib)
       "googie.lang_learn_word = \"%s\";\n".
       "googie.setLanguages(%s);\n".
       "googie.setCurrentLanguage('%s');\n".
-      "googie.setSpellContainer('spellcheck-control');\n".
+      "googie.setDecoration(false);\n".
       "googie.decorateTextarea('%s');\n".
       "%s.set_env('spellcheck', googie);",
+      $RCMAIL->output->get_skin_path(),
+      $RCMAIL->url(array('_task' => 'utils', '_action' => 'spell')),
       !empty($dictionary) ? 'true' : 'false',
       JQ(Q(rcube_label('checkspelling'))),
       JQ(Q(rcube_label('resumeediting'))),
@@ -808,7 +890,7 @@ function rcmail_create_reply_body($body, $bodyIsHtml)
   global $RCMAIL, $MESSAGE, $LINE_LENGTH;
 
   // build reply prefix
-  $from = array_pop($RCMAIL->imap->decode_address_list($MESSAGE->get_header('from'), 1, false));
+  $from = array_pop(rcube_mime::decode_address_list($MESSAGE->get_header('from'), 1, false, $MESSAGE->headers->charset));
   $prefix = rcube_label(array(
     'name' => 'mailreplyintro',
     'vars' => array(
@@ -819,13 +901,10 @@ function rcmail_create_reply_body($body, $bodyIsHtml)
 
   if (!$bodyIsHtml) {
     $body = preg_replace('/\r?\n/', "\n", $body);
-
-    // try to remove the signature
-    if ($RCMAIL->config->get('strip_existing_sig', true))
-      $body = rcmail_remove_signature($body);
+    $body = trim($body, "\n");
 
     // soft-wrap and quote message text
-    $body = rcmail_wrap_and_quote(rtrim($body, "\n"), $LINE_LENGTH);
+    $body = rcmail_wrap_and_quote($body, $LINE_LENGTH);
 
     $prefix .= "\n";
     $suffix = '';
@@ -869,8 +948,7 @@ function rcmail_create_forward_body($body, $bodyIsHtml)
   $date    = format_date($MESSAGE->headers->date, $RCMAIL->config->get('date_long'));
   $charset = $RCMAIL->output->get_charset();
 
-  if (!$bodyIsHtml)
-  {
+  if (!$bodyIsHtml) {
     $prefix = "\n\n\n-------- " . rcube_label('originalmessage') . " --------\n";
     $prefix .= rcube_label('subject') . ': ' . $MESSAGE->subject . "\n";
     $prefix .= rcube_label('date')    . ': ' . $date . "\n";
@@ -883,9 +961,9 @@ function rcmail_create_forward_body($body, $bodyIsHtml)
       $prefix .= rcube_label('replyto') . ': ' . $MESSAGE->get_header('replyto') . "\n";
 
     $prefix .= "\n";
+    $body = trim($body, "\r\n");
   }
-  else
-  {
+  else {
     // set is_safe flag (we need this for html body washing)
     rcmail_check_safe($MESSAGE);
     // clean up html tags
@@ -900,18 +978,18 @@ function rcmail_create_forward_body($body, $bodyIsHtml)
         "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">%s: </th><td>%s</td></tr>",
       rcube_label('subject'), Q($MESSAGE->subject),
       rcube_label('date'), Q($date),
-      rcube_label('from'), htmlspecialchars(Q($MESSAGE->get_header('from'), 'replace'), ENT_COMPAT, $charset),
-      rcube_label('to'), htmlspecialchars(Q($MESSAGE->get_header('to'), 'replace'), ENT_COMPAT, $charset));
+      rcube_label('from'), Q($MESSAGE->get_header('from'), 'replace'),
+      rcube_label('to'), Q($MESSAGE->get_header('to'), 'replace'));
 
     if ($MESSAGE->headers->cc)
       $prefix .= sprintf("<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">%s: </th><td>%s</td></tr>",
         rcube_label('cc'),
-        htmlspecialchars(Q($MESSAGE->get_header('cc'), 'replace'), ENT_COMPAT, $charset));
+        Q($MESSAGE->get_header('cc'), 'replace'));
 
     if ($MESSAGE->headers->replyto && $MESSAGE->headers->replyto != $MESSAGE->headers->from)
       $prefix .= sprintf("<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">%s: </th><td>%s</td></tr>",
         rcube_label('replyto'),
-        htmlspecialchars(Q($MESSAGE->get_header('replyto'), 'replace'), ENT_COMPAT, $charset));
+        Q($MESSAGE->get_header('replyto'), 'replace'));
 
     $prefix .= "</tbody></table><br>";
   }
@@ -947,7 +1025,8 @@ function rcmail_remove_signature($body)
 {
   global $RCMAIL;
 
-  $len = strlen($body);
+  $body = str_replace("\r\n", "\n", $body);
+  $len  = strlen($body);
   $sig_max_lines = $RCMAIL->config->get('sig_max_lines', 15);
 
   while (($sp = strrpos($body, "-- \n", $sp ? -$len+$sp-1 : 0)) !== false) {
@@ -990,7 +1069,8 @@ function rcmail_write_compose_attachments(&$message, $bodyIsHtml)
       if (!$skip && ($attachment = rcmail_save_attachment($message, $pid))) {
         $COMPOSE['attachments'][$attachment['id']] = $attachment;
         if ($bodyIsHtml && ($part->content_id || $part->content_location)) {
-          $url = $RCMAIL->comm_path.'&_action=display-attachment&_file=rcmfile'.$attachment['id'].'&_id='.$COMPOSE['id'];
+          $url = sprintf('%s&_id=%s&_action=display-attachment&_file=rcmfile%s',
+            $RCMAIL->comm_path, $COMPOSE['id'], $attachment['id']);
           if ($part->content_id)
             $cid_map['cid:'.$part->content_id] = $url;
           else
@@ -1015,7 +1095,8 @@ function rcmail_write_inline_attachments(&$message)
     if (($part->content_id || $part->content_location) && $part->filename) {
       if ($attachment = rcmail_save_attachment($message, $pid)) {
         $COMPOSE['attachments'][$attachment['id']] = $attachment;
-        $url = $RCMAIL->comm_path.'&_action=display-attachment&_file=rcmfile'.$attachment['id'].'&_id='.$COMPOSE['id'];
+          $url = sprintf('%s&_id=%s&_action=display-attachment&_file=rcmfile%s',
+            $RCMAIL->comm_path, $COMPOSE['id'], $attachment['id']);
         if ($part->content_id)
           $cid_map['cid:'.$part->content_id] = $url;
         else
@@ -1048,12 +1129,12 @@ function rcmail_write_forward_attachment(&$message)
     $temp_dir = unslashify($RCMAIL->config->get('temp_dir'));
     $path = tempnam($temp_dir, 'rcmAttmnt');
     if ($fp = fopen($path, 'w')) {
-      $RCMAIL->imap->get_raw_body($message->uid, $fp);
+      $RCMAIL->storage->get_raw_body($message->uid, $fp);
       fclose($fp);
     } else
       return false;
   } else {
-    $data = $RCMAIL->imap->get_raw_body($message->uid);
+    $data = $RCMAIL->storage->get_raw_body($message->uid);
   }
 
   $attachment = array(
@@ -1227,16 +1308,16 @@ function rcmail_compose_attachment_list($attrib)
     else
       $button = Q(rcube_label('delete'));
 
-    foreach ($COMPOSE['attachments'] as $id => $a_prop)
-    {
+    foreach ($COMPOSE['attachments'] as $id => $a_prop) {
       if (empty($a_prop))
         continue;
 
-      $out .= html::tag('li', array('id' => 'rcmfile'.$id),
+      $out .= html::tag('li', array('id' => 'rcmfile'.$id, 'class' => rcmail_filetype2classname($a_prop['mimetype'], $a_prop['name'])),
         html::a(array(
             'href' => "#delete",
             'title' => rcube_label('delete'),
-            'onclick' => sprintf("return %s.command('remove-attachment','rcmfile%s', this)", JS_OBJECT_NAME, $id)),
+            'onclick' => sprintf("return %s.command('remove-attachment','rcmfile%s', this)", JS_OBJECT_NAME, $id),
+            'class' => 'delete'),
           $button) . Q($a_prop['name']));
 
         $jslist['rcmfile'.$id] = array('name' => $a_prop['name'], 'complete' => true, 'mimetype' => $a_prop['mimetype']);
@@ -1261,9 +1342,8 @@ function rcmail_compose_attachment_form($attrib)
 {
   global $OUTPUT;
 
-  // add ID if not given
-  if (!$attrib['id'])
-    $attrib['id'] = 'rcmUploadbox';
+  // set defaults
+  $attrib += array('id' => 'rcmUploadbox', 'buttons' => 'yes');
 
   // Get filesize, enable upload progress bar
   $max_filesize = rcube_upload_init();
@@ -1271,17 +1351,17 @@ function rcmail_compose_attachment_form($attrib)
   $button = new html_inputfield(array('type' => 'button'));
 
   $out = html::div($attrib,
-    $OUTPUT->form_tag(array('name' => 'uploadform', 'method' => 'post', 'enctype' => 'multipart/form-data'),
+    $OUTPUT->form_tag(array('id' => $attrib['id'].'Frm', 'name' => 'uploadform', 'method' => 'post', 'enctype' => 'multipart/form-data'),
       html::div(null, rcmail_compose_attachment_field(array('size' => $attrib['attachmentfieldsize']))) .
       html::div('hint', rcube_label(array('name' => 'maxuploadsize', 'vars' => array('size' => $max_filesize)))) .
-      html::div('buttons',
+      (get_boolean($attrib['buttons']) ? html::div('buttons',
         $button->show(rcube_label('close'), array('class' => 'button', 'onclick' => "$('#$attrib[id]').hide()")) . ' ' .
         $button->show(rcube_label('upload'), array('class' => 'button mainaction', 'onclick' => JS_OBJECT_NAME . ".command('send-attachment', this.form)"))
-      )
+      ) : '')
     )
   );
 
-  $OUTPUT->add_gui_object('uploadbox', $attrib['id']);
+  $OUTPUT->add_gui_object('uploadform', $attrib['id'].'Frm');
   return $out;
 }
 
@@ -1343,7 +1423,7 @@ function rcmail_receipt_checkbox($attrib)
   $attrib['value'] = '1';
   $checkbox = new html_checkbox($attrib);
 
-  if ($MESSAGE && in_array($compose_mode, array(RCUBE_COMPOSE_DRAFT, RCUBE_COMPOSE_EDIT)))
+  if (in_array($compose_mode, array(RCUBE_COMPOSE_DRAFT, RCUBE_COMPOSE_EDIT)))
     $mdn_default = (bool) $MESSAGE->headers->mdn_to;
   else
     $mdn_default = $RCMAIL->config->get('mdn_default');
@@ -1424,18 +1504,18 @@ function rcmail_store_target_selection($attrib)
 
 function rcmail_check_sent_folder($folder, $create=false)
 {
-  global $IMAP;
+  global $RCMAIL;
 
-  if ($IMAP->mailbox_exists($folder, true)) {
+  if ($RCMAIL->storage->folder_exists($folder, true)) {
     return true;
   }
 
   // folder may exist but isn't subscribed (#1485241)
   if ($create) {
-    if (!$IMAP->mailbox_exists($folder))
-      return $IMAP->create_mailbox($folder, true);
+    if (!$RCMAIL->storage->folder_exists($folder))
+      return $RCMAIL->storage->create_folder($folder, true);
     else
-      return $IMAP->subscribe($folder);
+      return $RCMAIL->storage->subscribe($folder);
   }
 
   return false;
@@ -1469,6 +1549,58 @@ function get_form_tags($attrib)
 }
 
 
+function rcmail_addressbook_list($attrib = array())
+{
+    global $RCMAIL, $OUTPUT;
+
+    $attrib += array('id' => 'rcmdirectorylist');
+
+    $out = '';
+    $line_templ = html::tag('li', array(
+        'id' => 'rcmli%s', 'class' => '%s'),
+        html::a(array('href' => '#list',
+            'rel' => '%s',
+            'onclick' => "return ".JS_OBJECT_NAME.".command('list-adresses','%s',this)"), '%s'));
+
+    foreach ($RCMAIL->get_address_sources() as $j => $source) {
+        $id = strval(strlen($source['id']) ? $source['id'] : $j);
+        $js_id = JQ($id);
+
+        // set class name(s)
+        $class_name = 'addressbook';
+        if ($source['class_name'])
+            $class_name .= ' ' . $source['class_name'];
+
+        $out .= sprintf($line_templ,
+            html_identifier($id),
+            $class_name,
+            $source['id'],
+            $js_id, (!empty($source['name']) ? Q($source['name']) : Q($id)));
+    }
+
+    $OUTPUT->add_gui_object('addressbookslist', $attrib['id']);
+
+    return html::tag('ul', $attrib, $out, html::$common_attrib);
+}
+
+// return the contacts list as HTML table
+function rcmail_contacts_list($attrib = array())
+{
+    global $OUTPUT;
+
+    $attrib += array('id' => 'rcmAddressList');
+
+    // set client env
+    $OUTPUT->add_gui_object('contactslist', $attrib['id']);
+    $OUTPUT->set_env('pagecount', 0);
+    $OUTPUT->set_env('current_page', 0);
+    $OUTPUT->include_script('list.js');
+
+    return rcube_table_output($attrib, array(), array('name'), 'ID');
+}
+
+
+
 // register UI objects
 $OUTPUT->add_handlers(array(
   'composeheaders' => 'rcmail_compose_headers',
@@ -1482,8 +1614,8 @@ $OUTPUT->add_handlers(array(
   'receiptcheckbox' => 'rcmail_receipt_checkbox',
   'dsncheckbox' => 'rcmail_dsn_checkbox',
   'storetarget' => 'rcmail_store_target_selection',
+  'addressbooks' => 'rcmail_addressbook_list',
+  'addresslist' => 'rcmail_contacts_list',
 ));
 
 $OUTPUT->send('compose');
-
-
index edd5ba1c7cb56ebc6a9249f5093c419b5f7ba0e2..af8e9b8b9246b44525dd35914545bad237136be2 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2010, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Copy the submitted messages to a specific mailbox                   |
@@ -15,7 +18,7 @@
  | Author: Aleksander Machniak <alec@alec.pl>                            |
  +-----------------------------------------------------------------------+
 
- $Id: copy.inc 4410 2011-01-12 18:25:02Z thomasb $
+ $Id$
 
 */
 
@@ -29,7 +32,7 @@ if (!empty($_POST['_uid']) && !empty($_POST['_target_mbox'])) {
     $target = get_input_value('_target_mbox', RCUBE_INPUT_POST, true);
     $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true);
 
-    $copied = $IMAP->copy_message($uids, $target, $mbox);
+    $copied = $RCMAIL->storage->copy_message($uids, $target, $mbox);
 
     if (!$copied) {
         // send error message
index 80936a0049c2b2880de439c7f6bc3fe2d700343f..ee94f56a795e2f725fe84df6c33069eca4ddd9b1 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2009, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Implement folder operations line EXPUNGE and Clear                  |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: folders.inc 5266 2011-09-22 07:49:33Z alec $
+ $Id$
 */
 
 // only process ajax requests
@@ -27,7 +30,7 @@ $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true);
 // send EXPUNGE command
 if ($RCMAIL->action == 'expunge') {
 
-    $success = $IMAP->expunge($mbox);
+    $success = $RCMAIL->storage->expunge_folder($mbox);
 
     // reload message list if current mailbox
     if ($success) {
@@ -48,7 +51,7 @@ if ($RCMAIL->action == 'expunge') {
 // clear mailbox
 else if ($RCMAIL->action == 'purge')
 {
-    $delimiter = $IMAP->get_hierarchy_delimiter();
+    $delimiter = $RCMAIL->storage->get_hierarchy_delimiter();
     $trash_regexp = '/^' . preg_quote($CONFIG['trash_mbox'] . $delimiter, '/') . '/';
     $junk_regexp  = '/^' . preg_quote($CONFIG['junk_mbox'] . $delimiter, '/') . '/';
 
@@ -56,7 +59,7 @@ else if ($RCMAIL->action == 'purge')
     if ($mbox == $CONFIG['trash_mbox'] || $mbox == $CONFIG['junk_mbox']
         || preg_match($trash_regexp, $mbox) || preg_match($junk_regexp, $mbox)
     ) {
-        $success = $IMAP->clear_mailbox($mbox);
+        $success = $RCMAIL->storage->clear_folder($mbox);
 
         if ($success) {
             $OUTPUT->show_message('folderpurged', 'confirmation');
index 00c4d084e8af057ad578445691e98b1552a74fab..9b5b4f9d69f8306bbebf67a309c823a529aea4df 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2010, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Provide webmail functionality and GUI objects                       |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: func.inc 5715 2012-01-05 10:28:24Z alec $
+ $Id$
 
 */
 
@@ -28,31 +31,17 @@ $SEARCH_MODS_DEFAULT = array(
     $DRAFTS_MBOX => array('subject'=>1, 'to'=>1)
 );
 
-// actions that do not require imap connection here
-$NOIMAP_ACTIONS = array('addcontact', 'autocomplete', 'upload', 'display-attachment', 'remove-attachment', 'get');
-
-// always instantiate imap object (but not yet connect to server)
-$RCMAIL->imap_init();
-
-// log in to imap server
-if (!in_array($RCMAIL->action, $NOIMAP_ACTIONS) && !$RCMAIL->imap_connect()) {
-  $RCMAIL->kill_session();
-
-  if ($OUTPUT->ajax_call)
-    $OUTPUT->redirect(array(), 2000);
-
-  $OUTPUT->set_env('task', 'login');
-  $OUTPUT->send('login');
-}
+// always instantiate storage object (but not connect to server yet)
+$RCMAIL->storage_init();
 
 // set imap properties and session vars
 if (strlen(trim($mbox = get_input_value('_mbox', RCUBE_INPUT_GPC, true))))
-  $IMAP->set_mailbox(($_SESSION['mbox'] = $mbox));
-else if ($IMAP)
-  $_SESSION['mbox'] = $IMAP->get_mailbox_name();
+  $RCMAIL->storage->set_folder(($_SESSION['mbox'] = $mbox));
+else if ($RCMAIL->storage)
+  $_SESSION['mbox'] = $RCMAIL->storage->get_folder();
 
 if (!empty($_GET['_page']))
-  $IMAP->set_page(($_SESSION['page'] = intval($_GET['_page'])));
+  $RCMAIL->storage->set_page(($_SESSION['page'] = intval($_GET['_page'])));
 
 // set default sort col/order to session
 if (!isset($_SESSION['sort_col']))
@@ -69,45 +58,51 @@ if (isset($_GET['_threads'])) {
     unset($a_threading[$_SESSION['mbox']]);
   $RCMAIL->user->save_prefs(array('message_threading' => $a_threading));
 }
-$IMAP->set_threading($a_threading[$_SESSION['mbox']]);
+$RCMAIL->storage->set_threading($a_threading[$_SESSION['mbox']]);
 
 // set message set for search result
 if (!empty($_REQUEST['_search']) && isset($_SESSION['search'])
     && $_SESSION['search_request'] == $_REQUEST['_search']
 ) {
-  $IMAP->set_search_set($_SESSION['search']);
+  $RCMAIL->storage->set_search_set($_SESSION['search']);
   $OUTPUT->set_env('search_request', $_REQUEST['_search']);
   $OUTPUT->set_env('search_text', $_SESSION['last_text_search']);
 }
 
 // set main env variables, labels and page title
 if (empty($RCMAIL->action) || $RCMAIL->action == 'list') {
-  $mbox_name = $IMAP->get_mailbox_name();
+  $mbox_name = $RCMAIL->storage->get_folder();
 
   if (empty($RCMAIL->action)) {
     // initialize searching result if search_filter is used
     if ($_SESSION['search_filter'] && $_SESSION['search_filter'] != 'ALL') {
       $search_request = md5($mbox_name.$_SESSION['search_filter']);
 
-      $IMAP->search($mbox_name, $_SESSION['search_filter'], RCMAIL_CHARSET, $_SESSION['sort_col']);
-      $_SESSION['search'] = $IMAP->get_search_set();
+      $RCMAIL->storage->search($mbox_name, $_SESSION['search_filter'], RCMAIL_CHARSET, rcmail_sort_column());
+      $_SESSION['search'] = $RCMAIL->storage->get_search_set();
       $_SESSION['search_request'] = $search_request;
       $OUTPUT->set_env('search_request', $search_request);
-      }
+    }
 
       $search_mods = $RCMAIL->config->get('search_mods', $SEARCH_MODS_DEFAULT);
       $OUTPUT->set_env('search_mods', $search_mods);
   }
 
+  $threading = (bool) $RCMAIL->storage->get_threading();
+
   // set current mailbox and some other vars in client environment
   $OUTPUT->set_env('mailbox', $mbox_name);
-  $OUTPUT->set_env('pagesize', $IMAP->page_size);
-  $OUTPUT->set_env('quota', $IMAP->get_capability('QUOTA'));
-  $OUTPUT->set_env('delimiter', $IMAP->get_hierarchy_delimiter());
-  $OUTPUT->set_env('threading', (bool) $IMAP->threading);
-  $OUTPUT->set_env('threads', $IMAP->threading || $IMAP->get_capability('THREAD'));
+  $OUTPUT->set_env('pagesize', $RCMAIL->storage->get_pagesize());
+  $OUTPUT->set_env('delimiter', $RCMAIL->storage->get_hierarchy_delimiter());
+  $OUTPUT->set_env('threading', $threading);
+  $OUTPUT->set_env('threads', $threading || $RCMAIL->storage->get_capability('THREAD'));
   $OUTPUT->set_env('preview_pane_mark_read', $RCMAIL->config->get('preview_pane_mark_read', 0));
+  if ($RCMAIL->storage->get_capability('QUOTA')) {
+    $OUTPUT->set_env('quota', true);
+  }
 
+  if ($CONFIG['delete_junk'])
+    $OUTPUT->set_env('delete_junk', true);
   if ($CONFIG['flag_for_deletion'])
     $OUTPUT->set_env('flag_for_deletion', true);
   if ($CONFIG['read_when_deleted'])
@@ -130,16 +125,79 @@ if (empty($RCMAIL->action) || $RCMAIL->action == 'list') {
       'movingmessage', 'copyingmessage', 'deletingmessage', 'markingmessage',
       'copy', 'move', 'quota');
 
-  $OUTPUT->set_pagetitle(rcmail_localize_foldername($IMAP->mod_mailbox($mbox_name)));
+  $OUTPUT->set_pagetitle(rcmail_localize_foldername($RCMAIL->storage->mod_folder($mbox_name)));
 }
 
+/**
+ * Returns 'to' if current folder is configured Sent or Drafts
+ * or their subfolders, otherwise returns 'from'.
+ *
+ * @return string Column name
+ */
+function rcmail_message_list_smart_column_name()
+{
+  global $RCMAIL;
+
+  $delim       = $RCMAIL->storage->get_hierarchy_delimiter();
+  $mbox        = $RCMAIL->storage->get_folder();
+  $sent_mbox   = $RCMAIL->config->get('sent_mbox');
+  $drafts_mbox = $RCMAIL->config->get('drafts_mbox');
+
+  if (strpos($mbox.$delim, $sent_mbox.$delim) === 0 || strpos($mbox.$delim, $drafts_mbox.$delim) === 0) {
+    return 'to';
+  }
+
+  return 'from';
+}
+
+/**
+ * Returns configured messages list sorting column name
+ * The name is context-sensitive, which means if sorting is set to 'fromto'
+ * it will return 'from' or 'to' according to current folder type.
+ *
+ * @return string Column name
+ */
+function rcmail_sort_column()
+{
+  global $RCMAIL;
+
+  if (isset($_SESSION['sort_col'])) {
+    $column = $_SESSION['sort_col'];
+  }
+  else {
+    $column = $RCMAIL->config->get('message_sort_col');
+  }
+
+  // get name of smart From/To column in folder context
+  if ($column == 'fromto') {
+    $column = rcmail_message_list_smart_column_name();
+  }
+
+  return $column;
+}
+
+/**
+ * Returns configured message list sorting order
+ *
+ * @return string Sorting order (ASC|DESC)
+ */
+function rcmail_sort_order()
+{
+  global $RCMAIL;
+
+  if (isset($_SESSION['sort_order'])) {
+    return $_SESSION['sort_order'];
+  }
+
+  return $RCMAIL->config->get('message_sort_order');
+}
 
 /**
  * return the message list as HTML table
  */
 function rcmail_message_list($attrib)
 {
-  global $IMAP, $CONFIG, $OUTPUT;
+  global $CONFIG, $OUTPUT;
 
   // add some labels to client
   $OUTPUT->add_label('from', 'to');
@@ -160,15 +218,6 @@ function rcmail_message_list($attrib)
 
   // save some variables for use in ajax list
   $_SESSION['list_attrib'] = $attrib;
-
-  $mbox = $IMAP->get_mailbox_name();
-  $delim = $IMAP->get_hierarchy_delimiter();
-
-  // show 'to' instead of 'from' in sent/draft messages
-  if ((strpos($mbox.$delim, $CONFIG['sent_mbox'].$delim)===0 || strpos($mbox.$delim, $CONFIG['drafts_mbox'].$delim)===0)
-      && (($f = array_search('from', $a_show_cols)) !== false) && array_search('to', $a_show_cols) === false)
-    $a_show_cols[$f] = 'to';
-
   // make sure 'threads' and 'subject' columns are present
   if (!in_array('subject', $a_show_cols))
     array_unshift($a_show_cols, 'subject');
@@ -204,7 +253,7 @@ function rcmail_message_list($attrib)
  */
 function rcmail_js_message_list($a_headers, $insert_top=FALSE, $a_show_cols=null)
 {
-  global $CONFIG, $IMAP, $RCMAIL, $OUTPUT;
+  global $CONFIG, $RCMAIL, $OUTPUT;
 
   if (empty($a_show_cols)) {
     if (!empty($_SESSION['list_attrib']['columns']))
@@ -218,8 +267,7 @@ function rcmail_js_message_list($a_headers, $insert_top=FALSE, $a_show_cols=null
     $head_replace = true;
   }
 
-  $mbox = $IMAP->get_mailbox_name();
-  $delim = $IMAP->get_hierarchy_delimiter();
+  $mbox = $RCMAIL->storage->get_folder();
 
   // make sure 'threads' and 'subject' columns are present
   if (!in_array('subject', $a_show_cols))
@@ -229,11 +277,6 @@ function rcmail_js_message_list($a_headers, $insert_top=FALSE, $a_show_cols=null
 
   $_SESSION['list_attrib']['columns'] = $a_show_cols;
 
-  // show 'to' instead of 'from' in sent/draft messages
-  if ((strpos($mbox.$delim, $CONFIG['sent_mbox'].$delim)===0 || strpos($mbox.$delim, $CONFIG['drafts_mbox'].$delim)===0)
-      && (($f = array_search('from', $a_show_cols)) !== false) && array_search('to', $a_show_cols) === false)
-    $a_show_cols[$f] = 'to';
-
   // Make sure there are no duplicated columns (#1486999)
   $a_show_cols = array_unique($a_show_cols);
 
@@ -247,7 +290,12 @@ function rcmail_js_message_list($a_headers, $insert_top=FALSE, $a_show_cols=null
 
   $thead = $head_replace ? rcmail_message_list_head($_SESSION['list_attrib'], $a_show_cols) : NULL;
 
-  $OUTPUT->command('set_message_coltypes', $a_show_cols, $thead);
+  // get name of smart From/To column in folder context
+  if (($f = array_search('fromto', $a_show_cols)) !== false) {
+    $smart_col = rcmail_message_list_smart_column_name();
+  }
+
+  $OUTPUT->command('set_message_coltypes', $a_show_cols, $thead, $smart_col);
 
   if (empty($a_headers))
     return;
@@ -266,20 +314,20 @@ function rcmail_js_message_list($a_headers, $insert_top=FALSE, $a_show_cols=null
     $a_msg_cols = array();
     $a_msg_flags = array();
 
-    $IMAP->set_charset(!empty($header->charset) ? $header->charset : $CONFIG['default_charset']);
-
     // format each col; similar as in rcmail_message_list()
     foreach ($a_show_cols as $col) {
-      if (in_array($col, array('from', 'to', 'cc', 'replyto')))
-        $cont = Q(rcmail_address_string($header->$col, 3), 'show');
-      else if ($col=='subject') {
-        $cont = trim($IMAP->decode_header($header->$col));
+      $col_name = $col == 'fromto' ? $smart_col : $col;
+
+      if (in_array($col_name, array('from', 'to', 'cc', 'replyto')))
+        $cont = rcmail_address_string($header->$col_name, 3, false, null, $header->charset);
+      else if ($col == 'subject') {
+        $cont = trim(rcube_mime::decode_header($header->$col, $header->charset));
         if (!$cont) $cont = rcube_label('nosubject');
         $cont = Q($cont);
       }
-      else if ($col=='size')
+      else if ($col == 'size')
         $cont = show_bytes($header->$col);
-      else if ($col=='date')
+      else if ($col == 'date')
         $cont = format_date($header->date);
       else
         $cont = Q($header->$col);
@@ -319,7 +367,7 @@ function rcmail_js_message_list($a_headers, $insert_top=FALSE, $a_show_cols=null
       $insert_top);
   }
 
-  if ($IMAP->threading) {
+  if ($RCMAIL->storage->get_threading()) {
     $OUTPUT->command('init_threads', (array) $roots, $mbox);
   }
 }
@@ -330,8 +378,6 @@ function rcmail_js_message_list($a_headers, $insert_top=FALSE, $a_show_cols=null
  */
 function rcmail_message_list_head($attrib, $a_show_cols)
 {
-  global $CONFIG;
-
   $skin_path = $_SESSION['skin_path'];
   $image_tag = html::img(array('src' => "%s%s", 'alt' => "%s"));
 
@@ -340,7 +386,7 @@ function rcmail_message_list_head($attrib, $a_show_cols)
   $sort_order = $_SESSION['sort_order'];
 
   // define sortable columns
-  $a_sort_cols = array('subject', 'date', 'from', 'to', 'size', 'cc');
+  $a_sort_cols = array('subject', 'date', 'from', 'to', 'fromto', 'size', 'cc');
 
   if (!empty($attrib['optionsmenuicon'])) {
     $onclick = 'return ' . JS_OBJECT_NAME . ".command('menu-open', 'messagelistmenu')";
@@ -358,6 +404,11 @@ function rcmail_message_list_head($attrib, $a_show_cols)
 
   $cells = array();
 
+  // get name of smart From/To column in folder context
+  if (($f = array_search('fromto', $a_show_cols)) !== false) {
+    $smart_col = rcmail_message_list_smart_column_name();
+  }
+
   foreach ($a_show_cols as $col) {
     // get column name
     switch ($col) {
@@ -372,6 +423,9 @@ function rcmail_message_list_head($attrib, $a_show_cols)
       case 'threads':
         $col_name = $list_menu;
         break;
+      case 'fromto':
+        $col_name = Q(rcube_label($smart_col));
+        break;
       default:
         $col_name = Q(rcube_label($col));
     }
@@ -379,6 +433,8 @@ function rcmail_message_list_head($attrib, $a_show_cols)
     // make sort links
     if (in_array($col, $a_sort_cols))
       $col_name = html::a(array('href'=>"./#sort", 'onclick' => 'return '.JS_OBJECT_NAME.".command('sort','".$col."',this)", 'title' => rcube_label('sortby')), $col_name);
+    else if ($col_name[0] != '<')
+      $col_name = '<span class="' . $col .'">' . $col_name . '</span>';
 
     $sort_class = $col == $sort_col ? " sorted$sort_order" : '';
     $class_name = $col.$sort_class;
@@ -395,7 +451,7 @@ function rcmail_message_list_head($attrib, $a_show_cols)
  * return an HTML iframe for loading mail content
  */
 function rcmail_messagecontent_frame($attrib)
-  {
+{
   global $OUTPUT, $RCMAIL;
 
   if (empty($attrib['id']))
@@ -408,11 +464,11 @@ function rcmail_messagecontent_frame($attrib)
   $OUTPUT->set_env('blankpage', $attrib['src'] ? $OUTPUT->abs_url($attrib['src']) : 'program/blank.gif');
 
   return html::iframe($attrib);
-  }
+}
 
 
 function rcmail_messagecount_display($attrib)
-  {
+{
   global $RCMAIL;
 
   if (!$attrib['id'])
@@ -423,33 +479,35 @@ function rcmail_messagecount_display($attrib)
   $content =  $RCMAIL->action != 'show' ? rcmail_get_messagecount_text() : rcube_label('loading');
 
   return html::span($attrib, $content);
-  }
+}
 
 
 function rcmail_get_messagecount_text($count=NULL, $page=NULL)
-  {
-  global $RCMAIL, $IMAP;
+{
+  global $RCMAIL;
 
-  if ($page===NULL)
-    $page = $IMAP->list_page;
+  if ($page === NULL) {
+    $page = $RCMAIL->storage->get_page();
+  }
 
-  $start_msg = ($page-1) * $IMAP->page_size + 1;
+  $page_size = $RCMAIL->storage->get_pagesize();
+  $start_msg = ($page-1) * $page_size + 1;
 
   if ($count!==NULL)
     $max = $count;
   else if ($RCMAIL->action)
-    $max = $IMAP->messagecount(NULL, $IMAP->threading ? 'THREADS' : 'ALL');
+    $max = $RCMAIL->storage->count(NULL, $RCMAIL->storage->get_threading() ? 'THREADS' : 'ALL');
 
   if ($max==0)
     $out = rcube_label('mailboxempty');
   else
-    $out = rcube_label(array('name' => $IMAP->threading ? 'threadsfromto' : 'messagesfromto',
+    $out = rcube_label(array('name' => $RCMAIL->storage->get_threading() ? 'threadsfromto' : 'messagesfromto',
             'vars' => array('from'  => $start_msg,
-            'to'    => min($max, $start_msg + $IMAP->page_size - 1),
+            'to'    => min($max, $start_msg + $page_size - 1),
             'count' => $max)));
 
   return Q($out);
-  }
+}
 
 
 function rcmail_mailbox_name_display($attrib)
@@ -468,23 +526,24 @@ function rcmail_mailbox_name_display($attrib)
 function rcmail_get_mailbox_name_text()
 {
   global $RCMAIL;
-  return rcmail_localize_foldername($RCMAIL->imap->get_mailbox_name());
+  return rcmail_localize_foldername($RCMAIL->storage->get_folder());
 }
 
 
-function rcmail_send_unread_count($mbox_name, $force=false, $count=null)
+function rcmail_send_unread_count($mbox_name, $force=false, $count=null, $mark='')
 {
   global $RCMAIL;
 
   $old_unseen = rcmail_get_unseen_count($mbox_name);
 
   if ($count === null)
-    $unseen = $RCMAIL->imap->messagecount($mbox_name, 'UNSEEN', $force);
+    $unseen = $RCMAIL->storage->count($mbox_name, 'UNSEEN', $force);
   else
     $unseen = $count;
 
   if ($unseen != $old_unseen || ($mbox_name == 'INBOX'))
-    $RCMAIL->output->command('set_unread_count', $mbox_name, $unseen, ($mbox_name == 'INBOX'));
+    $RCMAIL->output->command('set_unread_count', $mbox_name, $unseen,
+      ($mbox_name == 'INBOX'), $unseen && $mark ? $mark : '');
 
   rcmail_set_unseen_count($mbox_name, $unseen);
 
@@ -589,7 +648,7 @@ function rcmail_wash_html($html, $p, $cid_replaces)
   // fix (unknown/malformed) HTML tags before "wash"
   $html = preg_replace_callback('/(<[\/]*)([^\s>]+)/', 'rcmail_html_tag_callback', $html);
 
-  // charset was converted to UTF-8 in rcube_imap::get_message_part(),
+  // charset was converted to UTF-8 in rcube_storage::get_message_part(),
   // change/add charset specification in HTML accordingly,
   // washtml cannot work without that
   $meta = '<meta http-equiv="Content-Type" content="text/html; charset='.RCMAIL_CHARSET.'" />';
@@ -681,7 +740,9 @@ function rcmail_print_body($part, $p = array())
   else if ($data['type'] == 'enriched') {
     $part->ctype_secondary = 'html';
     require_once(INSTALL_PATH . 'program/lib/enriched.inc');
-    $body = Q(enriched_to_html($data['body']), 'show');
+    $body = enriched_to_html($data['body']);
+    $body = rcmail_wash_html($body, $data, $part->replaces);
+    $part->ctype_secondary = 'html';
   }
   else {
     // assert plaintext
@@ -730,8 +791,8 @@ function rcmail_plain_body($body, $flowed=false)
 
   // find/mark quoted lines...
   for ($n=0, $cnt=count($body); $n < $cnt; $n++) {
-    if ($body[$n][0] == '>' && preg_match('/^(>+\s*)+/', $body[$n], $regs)) {
-      $q = strlen(preg_replace('/\s/', '', $regs[0]));
+    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) {
@@ -870,7 +931,7 @@ function rcmail_html_tag_callback($matches)
  */
 function rcmail_message_headers($attrib, $headers=NULL)
   {
-  global $IMAP, $OUTPUT, $MESSAGE, $PRINT_MODE, $RCMAIL;
+  global $OUTPUT, $MESSAGE, $PRINT_MODE, $RCMAIL;
   static $sa_attrib;
 
   // keep header table attrib
@@ -888,10 +949,13 @@ function rcmail_message_headers($attrib, $headers=NULL)
 
   // show these headers
   $standard_headers = array('subject', 'from', 'to', 'cc', 'bcc', 'replyto',
-    'mail-reply-to', 'mail-followup-to', 'date');
+    'mail-reply-to', 'mail-followup-to', 'date', 'priority');
+  $exclude_headers = $attrib['exclude'] ? explode(',', $attrib['exclude']) : array();
   $output_headers = array();
 
   foreach ($standard_headers as $hkey) {
+    $ishtml = false;
+
     if ($headers[$hkey])
       $value = $headers[$hkey];
     else if ($headers['others'][$hkey])
@@ -899,56 +963,99 @@ function rcmail_message_headers($attrib, $headers=NULL)
     else
       continue;
 
+    if (in_array($hkey, $exclude_headers))
+      continue;
+
+    $header_title = rcube_label(preg_replace('/(^mail-|-)/', '', $hkey));
+
     if ($hkey == 'date') {
       if ($PRINT_MODE)
         $header_value = format_date($value, $RCMAIL->config->get('date_long', 'x'));
       else
         $header_value = format_date($value);
     }
+    else if ($hkey == 'priority') {
+      if ($value) {
+        $header_value = html::span('prio' . $value, rcmail_localized_priority($value));
+      }
+      else
+        continue;
+    }
     else if ($hkey == 'replyto') {
-      if ($headers['replyto'] != $headers['from'])
-        $header_value = rcmail_address_string($value, null, true, $attrib['addicon']);
+      if ($headers['replyto'] != $headers['from']) {
+        $header_value = rcmail_address_string($value, $attrib['max'], true, $attrib['addicon'], $headers['charset'], $header_title);
+        $ishtml = true;
+      }
       else
         continue;
     }
     else if ($hkey == 'mail-reply-to') {
       if ($headers['mail-replyto'] != $headers['reply-to']
         && $headers['reply-to'] != $headers['from']
-      )
-        $header_value = rcmail_address_string($value, null, true, $attrib['addicon']);
+      ) {
+        $header_value = rcmail_address_string($value, $attrib['max'], true, $attrib['addicon'], $headers['charset'], $header_title);
+        $ishtml = true;
+      }
       else
         continue;
     }
     else if ($hkey == 'mail-followup-to') {
-      $header_value = rcmail_address_string($value, null, true, $attrib['addicon']);
+      $header_value = rcmail_address_string($value, $attrib['max'], true, $attrib['addicon'], $headers['charset'], $header_title);
+      $ishtml = true;
+    }
+    else if (in_array($hkey, array('from', 'to', 'cc', 'bcc'))) {
+      $header_value = rcmail_address_string($value, $attrib['max'], true, $attrib['addicon'], $headers['charset'], $header_title);
+      $ishtml = true;
     }
-    else if (in_array($hkey, array('from', 'to', 'cc', 'bcc')))
-      $header_value = rcmail_address_string($value, null, true, $attrib['addicon']);
     else if ($hkey == 'subject' && empty($value))
       $header_value = rcube_label('nosubject');
     else
-      $header_value = trim($IMAP->decode_header($value));
+      $header_value = trim(rcube_mime::decode_header($value, $headers['charset']));
 
     $output_headers[$hkey] = array(
-        'title' => rcube_label(preg_replace('/(^mail-|-)/', '', $hkey)),
-        'value' => $header_value, 'raw' => $value
+        'title' => $header_title,
+        'value' => $header_value,
+        'raw' => $value,
+        'html' => $ishtml,
     );
   }
 
   $plugin = $RCMAIL->plugins->exec_hook('message_headers_output',
-    array('output' => $output_headers, 'headers' => $MESSAGE->headers));
+    array('output' => $output_headers, 'headers' => $MESSAGE->headers, 'exclude' => $exclude_headers));
+
+  // single header value is requested
+  if (!empty($attrib['valueof']))
+    return Q($plugin['output'][$attrib['valueof']]['value'], ($attrib['valueof'] == 'subject' ? 'strict' : 'show'));
 
   // compose html table
   $table = new html_table(array('cols' => 2));
 
   foreach ($plugin['output'] as $hkey => $row) {
     $table->add(array('class' => 'header-title'), Q($row['title']));
-    $table->add(array('class' => 'header '.$hkey), Q($row['value'], ($hkey == 'subject' ? 'strict' : 'show')));
+    $table->add(array('class' => 'header '.$hkey), $row['html'] ? $row['value'] : Q($row['value'], ($hkey == 'subject' ? 'strict' : 'show')));
   }
 
   return $table->show($attrib);
 }
 
+/**
+ * Convert Priority header value into a localized string
+ */
+function rcmail_localized_priority($value)
+{
+  $labels_map = array(
+    '1' => 'highest',
+    '2' => 'high',
+    '3' => 'normal',
+    '4' => 'low',
+    '5' => 'lowest',
+  );
+  
+  if ($value && $labels_map[$value])
+    return rcube_label($labels_map[$value]);
+    
+  return '';
+}
 
 /**
  * return block to show full message headers
@@ -957,8 +1064,8 @@ function rcmail_message_full_headers($attrib, $headers=NULL)
 {
   global $OUTPUT;
 
-  $html = html::div(array('class' => "more-headers show-headers", 'onclick' => "return ".JS_OBJECT_NAME.".command('load-headers','',this)"), '');
-  $html .= html::div(array('id' => "all-headers", 'class' => "all", 'style' => 'display:none'), html::div(array('id' => 'headers-source'), ''));
+  $html = html::div(array('id' => "all-headers", 'class' => "all", 'style' => 'display:none'), html::div(array('id' => 'headers-source'), ''));
+  $html .= html::div(array('class' => "more-headers show-headers", 'onclick' => "return ".JS_OBJECT_NAME.".command('show-headers','',this)"), '');
 
   $OUTPUT->add_gui_object('all_headers_row', 'all-headers');
   $OUTPUT->add_gui_object('all_headers_box', 'headers-source');
@@ -974,8 +1081,8 @@ function rcmail_message_full_headers($attrib, $headers=NULL)
  * @return string HTML content showing the message body
  */
 function rcmail_message_body($attrib)
-  {
-  global $CONFIG, $OUTPUT, $MESSAGE, $IMAP, $RCMAIL, $REMOTE_OBJECTS;
+{
+  global $CONFIG, $OUTPUT, $MESSAGE, $RCMAIL, $REMOTE_OBJECTS;
 
   if (!is_array($MESSAGE->parts) && empty($MESSAGE->body))
     return '';
@@ -991,14 +1098,20 @@ function rcmail_message_body($attrib)
     if (preg_match('/^headertable([a-z]+)$/i', $attr, $regs))
       $header_attrib[$regs[1]] = $value;
 
-  if (!empty($MESSAGE->parts))
-    {
-    foreach ($MESSAGE->parts as $i => $part)
-      {
+  if (!empty($MESSAGE->parts)) {
+    foreach ($MESSAGE->parts as $i => $part) {
       if ($part->type == 'headers')
         $out .= rcmail_message_headers(sizeof($header_attrib) ? $header_attrib : NULL, $part->headers);
-      else if ($part->type == 'content' && $part->size)
-        {
+      else if ($part->type == 'content' && $part->size) {
+        // Check if we have enough memory to handle the message in it
+        // #1487424: we need up to 10x more memory than the body
+        if (!rcmail_mem_check($part->size * 10)) {
+          $out .= html::span('part-notice', rcube_label('messagetoobig'). ' '
+            . html::a('?_task=mail&_action=get&_download=1&_uid='.$MESSAGE->uid.'&_part='.$part->mime_id
+              .'&_mbox='. urlencode($RCMAIL->storage->get_folder()), rcube_label('download')));
+          continue;
+        }
+
         if (empty($part->ctype_parameters) || empty($part->ctype_parameters['charset']))
           $part->ctype_parameters['charset'] = $MESSAGE->headers->charset;
 
@@ -1032,16 +1145,25 @@ function rcmail_message_body($attrib)
         }
         else
           $out .= html::div('message-part', $plugin['prefix'] . $body);
-        }
       }
     }
+  }
   else {
-    $plugin = $RCMAIL->plugins->exec_hook('message_body_prefix', array(
-      'part' => $MESSAGE, 'prefix' => ''));
+    // Check if we have enough memory to handle the message in it
+    // #1487424: we need up to 10x more memory than the body
+    if (!rcmail_mem_check(strlen($MESSAGE->body) * 10)) {
+      $out .= html::span('part-notice', rcube_label('messagetoobig'). ' '
+        . html::a('?_task=mail&_action=get&_download=1&_uid='.$MESSAGE->uid.'&_part=0'
+          .'&_mbox='. urlencode($RCMAIL->storage->get_folder()), rcube_label('download')));
+    }
+    else {
+      $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(Q($MESSAGE->body, 'strict', false))));
+      $out .= html::div('message-part', $plugin['prefix'] . html::tag('pre', array(),
+        rcmail_plain_body(Q($MESSAGE->body, 'strict', false))));
     }
+  }
 
   // list images after mail body
   if ($CONFIG['inline_images'] && !empty($MESSAGE->attachments)) {
@@ -1064,7 +1186,7 @@ function rcmail_message_body($attrib)
             'title' => $attach_prop->filename,
             'alt' => $attach_prop->filename,
           )));
-        }
+      }
     }
   }
 
@@ -1073,7 +1195,7 @@ function rcmail_message_body($attrib)
     $OUTPUT->set_env('blockedobjects', true);
 
   return html::div($attrib, $out);
-  }
+}
 
 
 /**
@@ -1097,26 +1219,24 @@ function rcmail_resolve_base($body)
 function rcmail_html4inline($body, $container_id, $body_id='', &$attributes=null, $allow_remote=false)
 {
   $last_style_pos = 0;
-  $body_lc = strtolower($body);
   $cont_id = $container_id.($body_id ? ' div.'.$body_id : '');
 
   // find STYLE tags
-  while (($pos = strpos($body_lc, '<style', $last_style_pos)) && ($pos2 = strpos($body_lc, '</style>', $pos)))
+  while (($pos = stripos($body, '<style', $last_style_pos)) && ($pos2 = stripos($body, '</style>', $pos)))
   {
-    $pos = strpos($body_lc, '>', $pos)+1;
+    $pos = strpos($body, '>', $pos)+1;
 
     // replace all css definitions with #container [def]
     $styles = rcmail_mod_css_styles(
       substr($body, $pos, $pos2-$pos), $cont_id, $allow_remote);
 
-    $body = substr($body, 0, $pos) . $styles . substr($body, $pos2);
-    $body_lc = strtolower($body);
+    $body = substr_replace($body, $styles, $pos, $pos2-$pos);
     $last_style_pos = $pos2;
   }
 
   // modify HTML links to open a new window if clicked
   $GLOBALS['rcmail_html_container_id'] = $container_id;
-  $body = preg_replace_callback('/<(a|link)\s+([^>]+)>/Ui', 'rcmail_alter_html_link', $body);
+  $body = preg_replace_callback('/<(a|link|area)\s+([^>]+)>/Ui', 'rcmail_alter_html_link', $body);
   unset($GLOBALS['rcmail_html_container_id']);
 
   $body = preg_replace(array(
@@ -1205,7 +1325,8 @@ function rcmail_alter_html_link($matches)
   $end = '>';
 
   // Remove non-printable characters in URL (#1487805)
-  $attrib['href'] = preg_replace('/[\x00-\x1F]/', '', $attrib['href']);
+  if ($attrib['href'])
+    $attrib['href'] = preg_replace('/[\x00-\x1F]/', '', $attrib['href']);
 
   if ($tag == 'link' && preg_match('/^https?:\/\//i', $attrib['href'])) {
     $tempurl = 'tmp-' . md5($attrib['href']) . '.css';
@@ -1220,22 +1341,30 @@ function rcmail_alter_html_link($matches)
       JS_OBJECT_NAME,
       JQ($mailto[1].$mailto[3]));
   }
+  else if (empty($attrib['href']) && !$attrib['name']) {
+    $attrib['href'] = './#NOP';
+    $attrib['onclick'] = 'return false';
+  }
   else if (!empty($attrib['href']) && $attrib['href'][0] != '#') {
     $attrib['target'] = '_blank';
   }
 
-  return "<$tag" . html::attrib_string($attrib, array('href','name','target','onclick','id','class','style','title','rel','type','media')) . $end;
+  // allowed attributes for a|link|area tags
+  $allow = array('href','name','target','onclick','id','class','style','title',
+    'rel','type','media','alt','coords','nohref','hreflang','shape');
+
+  return "<$tag" . html::attrib_string($attrib, $allow) . $end;
 }
 
 
 /**
  * decode address string and re-format it as HTML links
  */
-function rcmail_address_string($input, $max=null, $linked=false, $addicon=null)
+function rcmail_address_string($input, $max=null, $linked=false, $addicon=null, $default_charset=null, $title=null)
 {
-  global $IMAP, $RCMAIL, $PRINT_MODE, $CONFIG;
+  global $RCMAIL, $PRINT_MODE, $CONFIG;
 
-  $a_parts = $IMAP->decode_address_list($input);
+  $a_parts = rcube_mime::decode_address_list($input, null, true, $default_charset);
 
   if (!sizeof($a_parts))
     return $input;
@@ -1243,6 +1372,7 @@ function rcmail_address_string($input, $max=null, $linked=false, $addicon=null)
   $c = count($a_parts);
   $j = 0;
   $out = '';
+  $allvalues = array();
 
   if ($addicon && !isset($_SESSION['writeable_abook'])) {
     $_SESSION['writeable_abook'] = $RCMAIL->get_address_sources(true) ? true : false;
@@ -1250,7 +1380,6 @@ function rcmail_address_string($input, $max=null, $linked=false, $addicon=null)
 
   foreach ($a_parts as $part) {
     $j++;
-
     $name   = $part['name'];
     $mailto = $part['mailto'];
     $string = $part['string'];
@@ -1281,35 +1410,55 @@ function rcmail_address_string($input, $max=null, $linked=false, $addicon=null)
       }
 
       if ($addicon && $_SESSION['writeable_abook']) {
-        $address = html::span(null, $address . html::a(array(
+        $address .= html::a(array(
             'href' => "#add",
-            'onclick' => sprintf("return %s.command('add-contact','%s',this)", JS_OBJECT_NAME, urlencode($string)),
+            'onclick' => sprintf("return %s.command('add-contact','%s',this)", JS_OBJECT_NAME, $string),
             'title' => rcube_label('addtoaddressbook'),
             'class' => 'rcmaddcontact',
           ),
           html::img(array(
             'src' => $CONFIG['skin_path'] . $addicon,
             'alt' => "Add contact",
-          ))));
+          )));
       }
-      $out .= $address;
     }
     else {
+      $address = '';
       if ($name)
-        $out .= Q($name);
+        $address .= Q($name);
       if ($mailto)
-        $out .= (strlen($out) ? ' ' : '') . sprintf('&lt;%s&gt;', Q($mailto));
+        $address .= (strlen($address) ? ' ' : '') . sprintf('&lt;%s&gt;', Q($mailto));
     }
 
-    if ($c>$j)
-      $out .= ','.($max ? '&nbsp;' : ' ');
+    $address = html::span('adr', $address);
+    $allvalues[] = $address;
 
-    if ($max && $j==$max && $c>$j) {
-      $out .= '...';
-      break;
+    if (!$moreadrs)
+      $out .= ($out ? ', ' : '') . $address;
+
+    if ($max && $j == $max && $c > $j) {
+      if ($linked) {
+        $moreadrs = $c - $j;
+      }
+      else {
+        $out .= '...';
+        break;
+      }
     }
   }
 
+  if ($moreadrs) {
+      $out .= ' ' . html::a(array(
+          'href' => '#more',
+          'class' => 'morelink',
+          'onclick' => sprintf("return %s.show_popup_dialog('%s','%s')",
+            JS_OBJECT_NAME,
+            JQ(join(', ', $allvalues)),
+            JQ($title))
+        ),
+        Q(rcube_label(array('name' => 'andnmore', 'vars' => array('nr' => $moreadrs)))));
+  }
+
   return $out;
 }
 
@@ -1327,7 +1476,7 @@ function rcmail_address_string($input, $max=null, $linked=false, $addicon=null)
 function rcmail_wrap_and_quote($text, $length = 72)
 {
   // Rebuild the message body with a maximum of $max chars, while keeping quoted message.
-  $max = min(77, $length + 8);
+  $max = max(75, $length + 8);
   $lines = preg_split('/\r?\n/', trim($text));
   $out = '';
 
@@ -1352,7 +1501,7 @@ function rcmail_wrap_and_quote($text, $length = 72)
     $out .= $line . "\n";
   }
 
-  return $out;
+  return rtrim($out, "\n");
 }
 
 
@@ -1380,7 +1529,7 @@ function rcmail_draftinfo_decode($str)
 }
 
 
-function rcmail_message_part_controls()
+function rcmail_message_part_controls($attrib)
 {
   global $MESSAGE;
 
@@ -1393,13 +1542,13 @@ function rcmail_message_part_controls()
 
   if (!empty($part->filename)) {
     $table->add('title', Q(rcube_label('filename')));
-    $table->add(null, Q($part->filename));
-    $table->add(null, '[' . html::a('?'.str_replace('_frame=', '_download=', $_SERVER['QUERY_STRING']), Q(rcube_label('download'))) . ']');
+    $table->add('header', Q($part->filename));
+    $table->add('download-link', html::a(array('href' => './?'.str_replace('_frame=', '_download=', $_SERVER['QUERY_STRING'])), Q(rcube_label('download'))));
   }
 
   if (!empty($part->size)) {
     $table->add('title', Q(rcube_label('filesize')));
-    $table->add(null, Q(show_bytes($part->size)));
+    $table->add('header', Q(show_bytes($part->size)));
   }
 
   return $table->show($attrib);
@@ -1444,17 +1593,18 @@ function rcmail_compose_cleanup($id)
  */
 function rcmail_send_mdn($message, &$smtp_error)
 {
-  global $RCMAIL, $IMAP;
+  global $RCMAIL;
 
   if (!is_object($message) || !is_a($message, 'rcube_message'))
     $message = new rcube_message($message);
 
   if ($message->headers->mdn_to && empty($message->headers->flags['MDNSENT']) &&
-    ($IMAP->check_permflag('MDNSENT') || $IMAP->check_permflag('*')))
+    ($RCMAIL->storage->check_permflag('MDNSENT') || $RCMAIL->storage->check_permflag('*')))
   {
     $identity = $RCMAIL->user->get_identity();
     $sender = format_email_recipient($identity['email'], $identity['name']);
-    $recipient = array_shift($IMAP->decode_address_list($message->headers->mdn_to));
+    $recipient = array_shift(rcube_mime::decode_address_list(
+      $message->headers->mdn_to, 1, true, $message->headers->charset));
     $mailto = $recipient['mailto'];
 
     $compose = new Mail_mime("\r\n");
@@ -1481,7 +1631,7 @@ function rcmail_send_mdn($message, &$smtp_error)
       $headers['User-Agent'] = $agent;
 
     $body = rcube_label("yourmessage") . "\r\n\r\n" .
-      "\t" . rcube_label("to") . ': ' . rcube_imap::decode_mime_string($message->headers->to, $message->headers->charset) . "\r\n" .
+      "\t" . rcube_label("to") . ': ' . rcube_mime::decode_mime_string($message->headers->to, $message->headers->charset) . "\r\n" .
       "\t" . rcube_label("subject") . ': ' . $message->subject . "\r\n" .
       "\t" . rcube_label("sent") . ': ' . format_date($message->headers->date, $RCMAIL->config->get('date_long')) . "\r\n" .
       "\r\n" . rcube_label("receiptnote") . "\r\n";
@@ -1505,7 +1655,7 @@ function rcmail_send_mdn($message, &$smtp_error)
 
     if ($sent)
     {
-      $IMAP->set_flag($message->uid, 'MDNSENT');
+      $RCMAIL->storage->set_flag($message->uid, 'MDNSENT');
       return true;
     }
   }
@@ -1568,7 +1718,7 @@ function rcmail_message_error($uid=null)
 
   // Set env variables for messageerror.html template
   if ($RCMAIL->action == 'show') {
-    $mbox_name = $RCMAIL->imap->get_mailbox_name();
+    $mbox_name = $RCMAIL->storage->get_folder();
     $RCMAIL->output->set_env('mailbox', $mbox_name);
     $RCMAIL->output->set_env('uid', null);
   }
index 0c11eb23395bf81ab53459b41072276b8292c7a1..924433df315e6ec76b4d2737057e2b02a9b13bb4 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2011, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Delivering a specific part of a mail message                        |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: get.inc 5635 2011-12-21 10:07:42Z alec $
+ $Id$
 
 */
 
@@ -36,7 +39,7 @@ if (!empty($_GET['_preload'])) {
 ob_end_clean();
 
 // Now we need IMAP connection
-if (!$RCMAIL->imap_connect()) {
+if (!$RCMAIL->storage_connect()) {
   // Get action is often executed simultanously.
   // Some servers have MAXPERIP or other limits.
   // To workaround this we'll wait for some time
@@ -66,11 +69,14 @@ if (!empty($_GET['_uid'])) {
 
 // show part page
 if (!empty($_GET['_frame'])) {
+  if (($part_id = get_input_value('_part', RCUBE_INPUT_GPC)) && ($part = $MESSAGE->mime_parts[$part_id]) && $part->filename)
+    $OUTPUT->set_pagetitle($part->filename);
+
   $OUTPUT->send('messagepart');
   exit;
 }
 
-else if ($pid = get_input_value('_part', RCUBE_INPUT_GET)) {
+else if (strlen($pid = get_input_value('_part', RCUBE_INPUT_GET))) {
 
   if ($part = $MESSAGE->mime_parts[$pid]) {
     $ctype_primary = strtolower($part->ctype_primary);
@@ -79,7 +85,7 @@ else if ($pid = get_input_value('_part', RCUBE_INPUT_GET)) {
 
     // allow post-processing of the message body
     $plugin = $RCMAIL->plugins->exec_hook('message_part_get',
-      array('id' => $part->mime_id, 'mimetype' => $mimetype, 'part' => $part, 'download' => !empty($_GET['_download'])));
+      array('uid' => $MESSAGE->uid, 'id' => $part->mime_id, 'mimetype' => $mimetype, 'part' => $part, 'download' => !empty($_GET['_download'])));
 
     if ($plugin['abort'])
       exit;
@@ -109,18 +115,30 @@ else if ($pid = get_input_value('_part', RCUBE_INPUT_GET)) {
 
     // deliver part content
     if ($ctype_primary == 'text' && $ctype_secondary == 'html' && empty($plugin['download'])) {
-      // get part body if not available
-      if (!$part->body)
-        $part->body = $MESSAGE->get_part_content($part->mime_id);
+      // Check if we have enough memory to handle the message in it
+      // #1487424: we need up to 10x more memory than the body
+      if (!rcmail_mem_check($part->size * 10)) {
+        $out = '<body>' . rcube_label('messagetoobig'). ' '
+          . html::a('?_task=mail&_action=get&_download=1&_uid='.$MESSAGE->uid.'&_part='.$part->mime_id
+            .'&_mbox='. urlencode($RCMAIL->storage->get_folder()), rcube_label('download')) . '</body></html>';
+      }
+      else {
+        // get part body if not available
+        if (!$part->body)
+          $part->body = $MESSAGE->get_part_content($part->mime_id);
+
+        $out = rcmail_print_body($part, array('safe' => $MESSAGE->is_safe, 'inline_html' => false));
+      }
 
       $OUTPUT = new rcube_html_page();
-      $OUTPUT->write(rcmail_print_body($part, array('safe' => $MESSAGE->is_safe, 'inline_html' => false)));
+      $OUTPUT->write($out);
     }
     else {
       // don't kill the connection if download takes more than 30 sec.
       @set_time_limit(0);
 
-      $filename = $part->filename ? $part->filename : ($MESSAGE->subject ? $MESSAGE->subject : 'roundcube') . '.'.$ctype_secondary;
+      $ext      = '.' . ($mimetype == 'text/plain' ? 'txt' : $ctype_secondary);
+      $filename = $part->filename ? $part->filename : ($MESSAGE->subject ? $MESSAGE->subject : 'roundcube') . $ext;
       $filename = preg_replace('[\r\n]', '', $filename);
 
       if ($browser->ie && $browser->ver < 7)
@@ -142,7 +160,7 @@ else if ($pid = get_input_value('_part', RCUBE_INPUT_GET)) {
           $stdout = fopen('php://output', 'w');
           stream_filter_register('rcube_content', 'rcube_content_filter') or die('Failed to register content filter');
           stream_filter_append($stdout, 'rcube_content');
-          $IMAP->get_message_part($MESSAGE->uid, $part->mime_id, $part, false, $stdout);
+          $RCMAIL->storage->get_message_part($MESSAGE->uid, $part->mime_id, $part, false, $stdout);
         }
       }
       else {
@@ -150,7 +168,7 @@ else if ($pid = get_input_value('_part', RCUBE_INPUT_GET)) {
         if ($part->body)
           echo $part->body;
         else if ($part->size)
-          $IMAP->get_message_part($MESSAGE->uid, $part->mime_id, $part, true);
+          $RCMAIL->storage->get_message_part($MESSAGE->uid, $part->mime_id, $part, true);
       }
     }
 
index 74e2bb6bcf43361fc7b17e6ac380eb0c3517b7a8..0d2e94b961036c6236ba1c49537807938be22887 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2009, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Check all mailboxes for unread messages and update GUI              |
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: getunread.inc 4735 2011-05-06 08:14:48Z alec $
+ $Id$
 
 */
 
-$a_folders = $IMAP->list_mailboxes('', '*', 'mail');
+$a_folders = $RCMAIL->storage->list_folders_subscribed('', '*', 'mail');
 
 if (!empty($a_folders))
 {
-  $current = $IMAP->get_mailbox_name();
+  $current = $RCMAIL->storage->get_folder();
   $inbox = ($current == 'INBOX');
   $check_all = (bool)$RCMAIL->config->get('check_all_folders');
 
@@ -33,7 +36,7 @@ if (!empty($a_folders))
     if (!$check_all && $unseen_old !== null && $mbox_row != $current)
       $unseen = $unseen_old;
     else
-      $unseen = $IMAP->messagecount($mbox_row, 'UNSEEN', $unseen_old === null);
+      $unseen = $RCMAIL->storage->count($mbox_row, 'UNSEEN', $unseen_old === null);
 
     if ($unseen || $unseen_old === null) {
       $OUTPUT->command('set_unread_count', $mbox_row, $unseen, $inbox && $mbox_row == 'INBOX');
index 53f6f758b62adca9cda1d482ab13bcc73028b3ce..3bb087a5995e23d3c22b3f459cde517530b5f50f 100644 (file)
@@ -5,7 +5,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2007, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Fetch message headers in raw format for display                     |
  | Author: Aleksander Machniak <alec@alec.pl>                            |
  +-----------------------------------------------------------------------+
 
- $Id: headers.inc 4410 2011-01-12 18:25:02Z thomasb $
+ $Id$
 
 */
 
 if ($uid = get_input_value('_uid', RCUBE_INPUT_POST))
 {
-    $source = $IMAP->get_raw_headers($uid);
+    $source = $RCMAIL->storage->get_raw_headers($uid);
 
     if ($source !== false) {
-        $source = htmlspecialchars(trim($source));
+        $source = trim(rcube_charset::clean($source));
+        $source = htmlspecialchars($source);
         $source = preg_replace(
             array(
                 '/\n[\t\s]+/',
index 3505d481ac1d98db4f30aea1aa27838597efb6f2..73131e48fa4c7b560b6b7f213b04a4ac75905611 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2007, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Send message list to client (as remote response)                    |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: list.inc 5266 2011-09-22 07:49:33Z alec $
+ $Id$
 
 */
 
@@ -34,12 +37,6 @@ if ($sort = get_input_value('_sort', RCUBE_INPUT_GET))
   $_SESSION['sort_col'] = $save_arr['message_sort_col'] = $sort_col;
   $_SESSION['sort_order'] = $save_arr['message_sort_order'] = $sort_order;
 }
-else
-{
-  // use session settings if set, defaults if not
-  $sort_col   = isset($_SESSION['sort_col'])   ? $_SESSION['sort_col']   : $CONFIG['message_sort_col'];
-  $sort_order = isset($_SESSION['sort_order']) ? $_SESSION['sort_order'] : $CONFIG['message_sort_order'];
-}
 
 // is there a set of columns for this request?
 if ($cols = get_input_value('_cols', RCUBE_INPUT_GET))
@@ -51,30 +48,31 @@ if ($cols = get_input_value('_cols', RCUBE_INPUT_GET))
 if ($save_arr)
   $RCMAIL->user->save_prefs($save_arr);
 
-$mbox_name = $IMAP->get_mailbox_name();
+$mbox_name = $RCMAIL->storage->get_folder();
+$threading = (bool) $RCMAIL->storage->get_threading();
 
 // Synchronize mailbox cache, handle flag changes
-$IMAP->mailbox_sync($mbox_name);
+$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_filter']);
-  $IMAP->search($mbox_name, $_SESSION['search_filter'], RCMAIL_CHARSET, $sort_col);
-  $_SESSION['search'] = $IMAP->get_search_set();
+  $RCMAIL->storage->search($mbox_name, $_SESSION['search_filter'], RCMAIL_CHARSET, rcmail_sort_column());
+  $_SESSION['search'] = $RCMAIL->storage->get_search_set();
   $_SESSION['search_request'] = $search_request;
   $OUTPUT->set_env('search_request', $search_request);
 }
 
 // fetch message headers
-if ($count = $IMAP->messagecount($mbox_name, $IMAP->threading ? 'THREADS' : 'ALL', !empty($_REQUEST['_refresh'])))
-  $a_headers = $IMAP->list_headers($mbox_name, NULL, $sort_col, $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'] = $IMAP->get_search_set();
+  $_SESSION['search'] = $RCMAIL->storage->get_search_set();
 }
 // remove old search data
 else if (empty($_REQUEST['_search']) && isset($_SESSION['search'])) {
@@ -91,11 +89,11 @@ if (empty($search_request) && empty($a_headers)) {
 rcmail_send_unread_count($mbox_name, !empty($_REQUEST['_refresh']), $unseen);
 
 // update message count display
-$pages = ceil($count/$IMAP->page_size);
+$pages = ceil($count/$RCMAIL->storage->get_pagesize());
 $OUTPUT->set_env('messagecount', $count);
 $OUTPUT->set_env('pagecount', $pages);
-$OUTPUT->set_env('threading', (bool) $IMAP->threading);
-$OUTPUT->set_env('current_page', $count ? $IMAP->list_page : 1);
+$OUTPUT->set_env('threading', $threading);
+$OUTPUT->set_env('current_page', $count ? $RCMAIL->storage->get_page() : 1);
 $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text($count), $mbox_name);
 $OUTPUT->command('set_mailboxname', rcmail_get_mailbox_name_text());
 
@@ -108,7 +106,7 @@ if (isset($a_headers) && count($a_headers))
 }
 else {
   // handle IMAP errors (e.g. #1486905)
-  if ($err_code = $IMAP->get_error_code()) {
+  if ($err_code = $RCMAIL->storage->get_error_code()) {
     rcmail_display_server_error();
   }
   else if ($search_request)
diff --git a/program/steps/mail/list_contacts.inc b/program/steps/mail/list_contacts.inc
new file mode 100644 (file)
index 0000000..6954e11
--- /dev/null
@@ -0,0 +1,90 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | program/steps/mail/list_contacts.inc                                  |
+ |                                                                       |
+ | This file is part of the Roundcube Webmail client                     |
+ | Copyright (C) 2012, 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:                                                              |
+ |   Send contacts list to client (as remote response)                   |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas Bruederli <roundcube@gmail.com>                        |
+ +-----------------------------------------------------------------------+
+
+ $Id$
+
+*/
+
+$jsenv = array();
+$source = get_input_value('_source', RCUBE_INPUT_GPC);
+$CONTACTS = $RCMAIL->get_address_book($source);
+$PAGE_SIZE = $RCMAIL->config->get('addressbook_pagesize', $RCMAIL->config->get('pagesize', 50));
+
+if ($CONTACTS && $CONTACTS->ready) {
+    // set list properties
+    $CONTACTS->set_pagesize($PAGE_SIZE);
+    $CONTACTS->set_page(max(1, intval($_GET['_page'])));
+
+    // list groups of this source (on page one)
+    if ($CONTACTS->groups && $CONTACTS->list_page == 1) {
+        foreach ($CONTACTS->list_groups() as $group) {
+            $CONTACTS->reset();
+            $CONTACTS->set_group($group['ID']);
+            $group_prop = $CONTACTS->get_group($group['ID']);
+
+            // group (distribution list) with email address(es)
+            if ($group_prop['email']) {
+                foreach ((array)$group_prop['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(
+                        'contactgroup' => html::span(array('title' => $email), Q($group['name']))), 'group');
+                }
+            }
+            // show group with count
+            else if (($result = $CONTACTS->count()) && $result->count) {
+                $row_id = 'E'.$group['ID'];
+                $jsresult[$row_id] = $group['name'];
+                $OUTPUT->command('add_contact_row', $row_id, array(
+                    'contactgroup' => Q($group['name'] . ' (' . intval($result->count) . ')')), 'group');
+            }
+        }
+    }
+
+    // get contacts for this user
+    $CONTACTS->set_group(0);
+    $result = $CONTACTS->list_records(array('name', 'firstname', 'surname', 'email'));
+
+    if (!$result->count && $result->searchonly) {
+        $OUTPUT->show_message('contactsearchonly', 'notice');
+    }
+    else if (!empty($result) && $result->count > 0) {
+        // create javascript list
+        while ($row = $result->next()) {
+            $name = rcube_addressbook::compose_list_name($row);
+
+            // add record for every email address of the contact
+            foreach ($CONTACTS->get_col_values('email', $row, true) as $i => $email) {
+                $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), Q($name ? $name : $email))), 'person');
+            }
+        }
+    }
+}
+
+// update env
+$OUTPUT->set_env('contactdata', $jsresult);
+$OUTPUT->set_env('pagecount', ceil($result->count / $PAGE_SIZE));
+$OUTPUT->command('set_page_buttons');
+
+// send response
+$OUTPUT->send();
index 2d50391a2fdcf55c9017c74044258c66f16a0e53..83bd7ab069cd4e245cda31858f93e6d62498526c 100644 (file)
@@ -5,7 +5,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2009, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Mark the submitted messages with the specified flag                 |
@@ -14,7 +17,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: mark.inc 5266 2011-09-22 07:49:33Z alec $
+ $Id$
 
 */
 
@@ -30,18 +33,20 @@ $a_flags_map = array(
   'flagged' => 'FLAGGED',
   'unflagged' => 'UNFLAGGED');
 
+$threading = (bool) $RCMAIL->storage->get_threading();
+
 if (($uids = get_input_value('_uid', RCUBE_INPUT_POST)) && ($flag = get_input_value('_flag', RCUBE_INPUT_POST)))
 {
   $flag = $a_flags_map[$flag] ? $a_flags_map[$flag] : strtoupper($flag);
 
   if ($flag == 'DELETED' && $CONFIG['skip_deleted'] && $_POST['_from'] != 'show') {
     // count messages before changing anything
-    $old_count = $IMAP->messagecount(NULL, $IMAP->threading ? 'THREADS' : 'ALL');
-    $old_pages = ceil($old_count / $IMAP->page_size);
+    $old_count = $RCMAIL->storage->count(NULL, $threading ? 'THREADS' : 'ALL');
+    $old_pages = ceil($old_count / $RCMAIL->storage->get_pagesize());
     $count = sizeof(explode(',', $uids));
   }
 
-  $marked = $IMAP->set_flag($uids, $flag);
+  $marked = $RCMAIL->storage->set_flag($uids, $flag);
 
   if (!$marked) {
     // send error message
@@ -57,14 +62,14 @@ if (($uids = get_input_value('_uid', RCUBE_INPUT_POST)) && ($flag = get_input_va
 
   if ($flag == 'DELETED' && $CONFIG['read_when_deleted'] && !empty($_POST['_ruid'])) {
     $ruids = get_input_value('_ruid', RCUBE_INPUT_POST);
-    $read = $IMAP->set_flag($ruids, 'SEEN');
+    $read = $RCMAIL->storage->set_flag($ruids, 'SEEN');
 
     if ($read && !$CONFIG['skip_deleted'])
       $OUTPUT->command('flag_deleted_as_read', $ruids);
   }
 
   if ($flag == 'SEEN' || $flag == 'UNSEEN' || ($flag == 'DELETED' && !$CONFIG['skip_deleted'])) {
-    rcmail_send_unread_count($IMAP->get_mailbox_name());
+    rcmail_send_unread_count($RCMAIL->storage->get_folder());
   }
   else if ($flag == 'DELETED' && $CONFIG['skip_deleted']) {
     if ($_POST['_from'] == 'show') {
@@ -73,31 +78,35 @@ if (($uids = get_input_value('_uid', RCUBE_INPUT_POST)) && ($flag = get_input_va
       else
         $OUTPUT->command('command', 'list');
     } else {
+      $search_request = get_input_value('_search', RCUBE_INPUT_GPC);
       // refresh saved search set after moving some messages
-      if (($search_request = get_input_value('_search', RCUBE_INPUT_GPC)) && $IMAP->search_set) {
-        $_SESSION['search'] = $IMAP->refresh_search();
+      if ($search_request && $RCMAIL->storage->get_search_set()) {
+        $_SESSION['search'] = $RCMAIL->storage->refresh_search();
       }
 
-      $msg_count      = $IMAP->messagecount(NULL, $IMAP->threading ? 'THREADS' : 'ALL');
-      $pages          = ceil($msg_count / $IMAP->page_size);
-      $nextpage_count = $old_count - $IMAP->page_size * $IMAP->list_page;
-      $remaining      = $msg_count - $IMAP->page_size * ($IMAP->list_page - 1);
+      $msg_count      = $RCMAIL->storage->count(NULL, $threading ? 'THREADS' : 'ALL');
+      $page_size      = $RCMAIL->storage->get_pagesize();
+      $page           = $RCMAIL->storage->get_page();
+      $pages          = ceil($msg_count / $page_size);
+      $nextpage_count = $old_count - $page_size * $page;
+      $remaining      = $msg_count - $page_size * ($page - 1);
 
       // jump back one page (user removed the whole last page)
-      if ($IMAP->list_page > 1 && $remaining == 0) {
-        $IMAP->set_page($IMAP->list_page-1);
-        $_SESSION['page'] = $IMAP->list_page;
+      if ($page > 1 && $remaining == 0) {
+        $page -= 1;
+        $RCMAIL->storage->set_page($page);
+        $_SESSION['page'] = $page;
         $jump_back = true;
       }
 
       // update message count display
       $OUTPUT->set_env('messagecount', $msg_count);
-      $OUTPUT->set_env('current_page', $IMAP->list_page);
+      $OUTPUT->set_env('current_page', $page);
       $OUTPUT->set_env('pagecount', $pages);
 
       // update mailboxlist
-      $mbox = $IMAP->get_mailbox_name();
-      $unseen_count = $msg_count ? $IMAP->messagecount($mbox, 'UNSEEN') : 0;
+      $mbox = $RCMAIL->storage->get_folder();
+      $unseen_count = $msg_count ? $RCMAIL->storage->count($mbox, 'UNSEEN') : 0;
       $old_unseen = rcmail_get_unseen_count($mbox);
 
       if ($old_unseen != $unseen_count) {
@@ -106,16 +115,14 @@ if (($uids = get_input_value('_uid', RCUBE_INPUT_POST)) && ($flag = get_input_va
       }
       $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text($msg_count), $mbox);
 
-      if ($IMAP->threading)
+      if ($threading) {
            $count = get_input_value('_count', RCUBE_INPUT_POST);
+      }
 
       // add new rows from next page (if any)
       if ($count && $uids != '*' && ($jump_back || $nextpage_count > 0)) {
-        $sort_col   = isset($_SESSION['sort_col'])   ? $_SESSION['sort_col']   : $CONFIG['message_sort_col'];
-        $sort_order = isset($_SESSION['sort_order']) ? $_SESSION['sort_order'] : $CONFIG['message_sort_order'];
-
-        $a_headers = $IMAP->list_headers($mbox, NULL, $sort_col, $sort_order,
-           $jump_back ? NULL : $count);
+        $a_headers = $RCMAIL->storage->list_messages($mbox, NULL,
+          rcmail_sort_column(), rcmail_sort_order(), $jump_back ? NULL : $count);
 
         rcmail_js_message_list($a_headers, false);
       }
index 30928d499aa0d0f3e8ebd09b7ec1852a5af6d920..a9e4bd82fcf707aa31181d2b5481b5c628f515a2 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2009, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Move the submitted messages to a specific mailbox or delete them    |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: move_del.inc 5266 2011-09-22 07:49:33Z alec $
+ $Id$
 
 */
 
@@ -24,8 +27,9 @@ if (!$OUTPUT->ajax_call)
   return;
 
 // count messages before changing anything
-$old_count = $IMAP->messagecount(NULL, $IMAP->threading ? 'THREADS' : 'ALL');
-$old_pages = ceil($old_count / $IMAP->page_size);
+$threading = (bool) $RCMAIL->storage->get_threading();
+$old_count = $RCMAIL->storage->count(NULL, $threading ? 'THREADS' : 'ALL');
+$old_pages = ceil($old_count / $RCMAIL->storage->get_pagesize());
 
 // move messages
 if ($RCMAIL->action=='moveto' && !empty($_POST['_uid']) && strlen($_POST['_target_mbox'])) {
@@ -33,7 +37,7 @@ if ($RCMAIL->action=='moveto' && !empty($_POST['_uid']) && strlen($_POST['_targe
     $target = get_input_value('_target_mbox', RCUBE_INPUT_POST, true);
     $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true);
 
-    $moved = $IMAP->move_message($uids, $target, $mbox);
+    $moved = $RCMAIL->storage->move_message($uids, $target, $mbox);
 
     if (!$moved) {
         // send error message
@@ -54,7 +58,7 @@ else if ($RCMAIL->action=='delete' && !empty($_POST['_uid'])) {
     $count = sizeof(explode(',', ($uids = get_input_value('_uid', RCUBE_INPUT_POST))));
     $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true);
 
-    $del = $IMAP->delete_message($uids, $mbox);
+    $del = $RCMAIL->storage->delete_message($uids, $mbox);
 
     if (!$del) {
         // send error message
@@ -75,9 +79,11 @@ else {
     exit;
 }
 
+$search_request = get_input_value('_search', RCUBE_INPUT_GPC);
+
 // refresh saved search set after moving some messages
-if (($search_request = get_input_value('_search', RCUBE_INPUT_GPC)) && $IMAP->search_set) {
-    $_SESSION['search'] = $IMAP->refresh_search();
+if ($search_request && $RCMAIL->storage->get_search_set()) {
+    $_SESSION['search'] = $RCMAIL->storage->refresh_search();
 }
 
 if ($_POST['_from'] == 'show')
@@ -89,26 +95,29 @@ if ($_POST['_from'] == 'show')
 }
 else
 {
-  $msg_count      = $IMAP->messagecount(NULL, $IMAP->threading ? 'THREADS' : 'ALL');
-  $pages          = ceil($msg_count / $IMAP->page_size);
-  $nextpage_count = $old_count - $IMAP->page_size * $IMAP->list_page;
-  $remaining      = $msg_count - $IMAP->page_size * ($IMAP->list_page - 1);
+  $msg_count      = $RCMAIL->storage->count(NULL, $threading ? 'THREADS' : 'ALL');
+  $page_size      = $RCMAIL->storage->get_pagesize();
+  $page           = $RCMAIL->storage->get_page();
+  $pages          = ceil($msg_count / $page_size);
+  $nextpage_count = $old_count - $page_size * $page;
+  $remaining      = $msg_count - $page_size * ($page - 1);
 
   // jump back one page (user removed the whole last page)
-  if ($IMAP->list_page > 1 && $remaining == 0) {
-    $IMAP->set_page($IMAP->list_page-1);
-    $_SESSION['page'] = $IMAP->list_page;
+  if ($page > 1 && $remaining == 0) {
+    $page -= 1;
+    $RCMAIL->storage->set_page($page);
+    $_SESSION['page'] = $page;
     $jump_back = true;
   }
 
   // update message count display
   $OUTPUT->set_env('messagecount', $msg_count);
-  $OUTPUT->set_env('current_page', $IMAP->list_page);
+  $OUTPUT->set_env('current_page', $page);
   $OUTPUT->set_env('pagecount', $pages);
 
   // update mailboxlist
-  $mbox = $IMAP->get_mailbox_name();
-  $unseen_count = $msg_count ? $IMAP->messagecount($mbox, 'UNSEEN') : 0;
+  $mbox = $RCMAIL->storage->get_folder();
+  $unseen_count = $msg_count ? $RCMAIL->storage->count($mbox, 'UNSEEN') : 0;
   $old_unseen = rcmail_get_unseen_count($mbox);
 
   if ($old_unseen != $unseen_count) {
@@ -123,16 +132,14 @@ else
   $OUTPUT->command('set_quota', rcmail_quota_content());
   $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text($msg_count), $mbox);
 
-  if ($IMAP->threading)
+  if ($threading) {
     $count = get_input_value('_count', RCUBE_INPUT_POST);
+  }
 
   // add new rows from next page (if any)
   if ($addrows && $count && $uids != '*' && ($jump_back || $nextpage_count > 0)) {
-    $sort_col   = isset($_SESSION['sort_col'])   ? $_SESSION['sort_col']   : $CONFIG['message_sort_col'];
-    $sort_order = isset($_SESSION['sort_order']) ? $_SESSION['sort_order'] : $CONFIG['message_sort_order'];
-
-    $a_headers = $IMAP->list_headers($mbox, NULL, $sort_col, $sort_order,
-      $jump_back ? NULL : $count);
+    $a_headers = $RCMAIL->storage->list_messages($mbox, NULL,
+      rcmail_sort_column(), rcmail_sort_order(), $jump_back ? NULL : $count);
 
     rcmail_js_message_list($a_headers, false);
   }
index 974b3b46f3908357a96f16cae3f46ec9fb99c886..7a49786635836c0f3bd6c26ba02c4b97f58f2f6b 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2009, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Updates message page navigation controls                            |
 
 */
 
-$uid = get_input_value('_uid', RCUBE_INPUT_GET);
-
-// Select mailbox first, for better performance
-$mbox_name = $IMAP->get_mailbox_name();
-$IMAP->select_mailbox($mbox_name);
-
-// Get messages count (only messages, no threads here)
-$cnt  = $IMAP->messagecount(NULL, 'ALL');
-
-if ($_SESSION['sort_col'] == 'date' && $_SESSION['sort_order'] == 'DESC'
-    && empty($_REQUEST['_search']) && !$CONFIG['skip_deleted'] && !$IMAP->threading
-) {
-    // this assumes that we are sorted by date_DESC
-    $seq   = $IMAP->get_id($uid);
-    $index = $cnt - $seq;
-
-    $prev  = $IMAP->get_uid($seq + 1);
-    $first = $IMAP->get_uid($cnt);
-    $next  = $IMAP->get_uid($seq - 1);
-    $last  = $IMAP->get_uid(1);
-}
-else {
-    // Only if we use custom sorting
-    $a_msg_index = $IMAP->message_index(NULL, $_SESSION['sort_col'], $_SESSION['sort_order']);
-
-    $index = array_search($IMAP->get_id($uid), $a_msg_index);
+$uid   = get_input_value('_uid', RCUBE_INPUT_GET);
+$index = $RCMAIL->storage->index(null, rcmail_sort_column(), rcmail_sort_order());
+$cnt   = $index->count_messages();
 
-    $count = count($a_msg_index);
-    $prev  = isset($a_msg_index[$index-1]) ? $IMAP->get_uid($a_msg_index[$index-1]) : -1;
-    $first = $count > 1 ? $IMAP->get_uid($a_msg_index[0]) : -1;
-    $next  = isset($a_msg_index[$index+1]) ? $IMAP->get_uid($a_msg_index[$index+1]) : -1;
-    $last  = $count > 1 ? $IMAP->get_uid($a_msg_index[$count-1]) : -1;
+if ($cnt && ($pos = $index->exists($uid, true)) !== false) {
+    $prev  = $pos ? $index->get_element($pos-1) : 0;
+    $first = $pos ? $index->get_element('FIRST') : 0;
+    $next  = $pos < $cnt-1 ? $index->get_element($pos+1) : 0;
+    $last  = $pos < $cnt-1 ? $index->get_element('LAST') : 0;
 }
 
 // Set UIDs and activate navigation buttons
-if ($prev > 0) {
+if ($prev) {
     $OUTPUT->set_env('prev_uid', $prev);
     $OUTPUT->command('enable_command', 'previousmessage', 'firstmessage', true);
 }
-if ($next > 0) {
+if ($next) {
     $OUTPUT->set_env('next_uid', $next);
     $OUTPUT->command('enable_command', 'nextmessage', 'lastmessage', true);
 }
-if ($first > 0)
+if ($first)
     $OUTPUT->set_env('first_uid', $first);
-if ($last > 0)
+if ($last)
     $OUTPUT->set_env('last_uid', $last);
 
 // Don't need a real messages count value
@@ -73,7 +53,7 @@ $OUTPUT->set_env('messagecount', 1);
 // Set rowcount text
 $OUTPUT->command('set_rowcount', rcube_label(array(
     'name' => 'messagenrof',
-    'vars' => array('nr'  => $index+1, 'count' => $cnt)
+    'vars' => array('nr'  => $pos+1, 'count' => $cnt)
 )));
 
 $OUTPUT->send();
index e6fb629ab8c02133c398a18a5ed41bf14819326c..f20694272d8e94059fc8ea9b349661caa2b2fb1f 100644 (file)
@@ -4,22 +4,25 @@
  | steps/mail/search.inc                                                 |
  |                                                                       |
  | Search functions for rc webmail                                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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: Benjamin Smith <defitro@gmail.com>                            |
  |         Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: search.inc 5527 2011-12-02 09:58:03Z alec $
+ $Id$
 
 */
 
 $REMOTE_REQUEST = TRUE;
 
 // reset list_page and old search results
-$IMAP->set_page(1);
-$IMAP->set_search_set(NULL);
+$RCMAIL->storage->set_page(1);
+$RCMAIL->storage->set_search_set(NULL);
 $_SESSION['page'] = 1;
 
 // using encodeURI with javascript "should" give us
@@ -103,34 +106,36 @@ if (!empty($subject)) {
     $search_str .= sprintf(" %s {%d}\r\n%s", $sub, strlen($search), $search);
 }
 
-$search_str = trim($search_str);
+$search_str  = trim($search_str);
+$sort_column = rcmail_sort_column();
 
 // execute IMAP search
 if ($search_str)
-  $IMAP->search($mbox, $search_str, $imap_charset, $_SESSION['sort_col']);
-
-// Get the headers
-$result_h = $IMAP->list_headers($mbox, 1, $_SESSION['sort_col'], $_SESSION['sort_order']);
-$count = $IMAP->messagecount(NULL, $IMAP->threading ? 'THREADS' : 'ALL');
+  $RCMAIL->storage->search($mbox, $search_str, $imap_charset, $sort_column);
 
 // save search results in session
 if (!is_array($_SESSION['search']))
   $_SESSION['search'] = array();
 
 if ($search_str) {
-  $_SESSION['search'] = $IMAP->get_search_set();
+  $_SESSION['search'] = $RCMAIL->storage->get_search_set();
   $_SESSION['last_text_search'] = $str;
 }
 $_SESSION['search_request'] = $search_request;
 
+
+// Get the headers
+$result_h = $RCMAIL->storage->list_messages($mbox, 1, $sort_column, rcmail_sort_order());
+$count = $RCMAIL->storage->count($mbox, $RCMAIL->storage->get_threading() ? 'THREADS' : 'ALL');
+
 // Make sure we got the headers
 if (!empty($result_h)) {
   rcmail_js_message_list($result_h);
   if ($search_str)
-    $OUTPUT->show_message('searchsuccessful', 'confirmation', array('nr' => $IMAP->messagecount(NULL, 'ALL')));
+    $OUTPUT->show_message('searchsuccessful', 'confirmation', array('nr' => $RCMAIL->storage->count(NULL, 'ALL')));
 }
 // handle IMAP errors (e.g. #1486905)
-else  if ($err_code = $IMAP->get_error_code()) {
+else  if ($err_code = $RCMAIL->storage->get_error_code()) {
   rcmail_display_server_error();
 }
 else {
@@ -140,8 +145,6 @@ else {
 // update message count display
 $OUTPUT->set_env('search_request', $search_str ? $search_request : '');
 $OUTPUT->set_env('messagecount', $count);
-$OUTPUT->set_env('pagecount', ceil($count/$IMAP->page_size));
+$OUTPUT->set_env('pagecount', ceil($count/$RCMAIL->storage->get_pagesize()));
 $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text($count, 1), $mbox);
 $OUTPUT->send();
-
-
index 15ccd65f7ae9aa1cdefa2383320a84804cf98abf..6b5dcbcc9685058c90f66a0e082c54ac384a8310 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2011, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Compose a new mail message with all headers and attachments         |
@@ -16,7 +19,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: sendmail.inc 5952 2012-03-03 13:20:14Z alec $
+ $Id$
 
 */
 
@@ -72,13 +75,18 @@ function rcmail_encrypt_header($what)
 // get identity record
 function rcmail_get_identity($id)
 {
-  global $USER, $OUTPUT;
+  global $RCMAIL, $message_charset;
 
-  if ($sql_arr = $USER->get_identity($id)) {
+  if ($sql_arr = $RCMAIL->user->get_identity($id)) {
     $out = $sql_arr;
+
+    if ($message_charset != RCMAIL_CHARSET) {
+      foreach ($out as $k => $v)
+        $out[$k] = rcube_charset_convert($v, RCMAIL_CHARSET, $message_charset);
+    }
+
     $out['mailto'] = $sql_arr['email'];
-    $out['string'] = format_email_recipient($sql_arr['email'],
-      rcube_charset_convert($sql_arr['name'], RCMAIL_CHARSET, $OUTPUT->get_charset()));
+    $out['string'] = format_email_recipient($sql_arr['email'], $sql_arr['name']);
 
     return $out;
   }
@@ -97,7 +105,7 @@ function rcmail_get_identity($id)
  */
 function rcmail_fix_emoticon_paths(&$mime_message)
 {
-  global $CONFIG;
+  global $RCMAIL;
 
   $body = $mime_message->getHTMLBody();
 
@@ -122,8 +130,9 @@ function rcmail_fix_emoticon_paths(&$mime_message)
 
         if (! in_array($image_name, $included_images)) {
           // add the image to the MIME message
-          if (! $mime_message->addHTMLImage($img_file, 'image/gif', '', true, $image_name))
-            $OUTPUT->show_message("emoticonerror", 'error');
+          if (!$mime_message->addHTMLImage($img_file, 'image/gif', '', true, $image_name)) {
+            $RCMAIL->output->show_message("emoticonerror", 'error');
+          }
           array_push($included_images, $image_name);
         }
 
@@ -401,6 +410,15 @@ $isHtml = (bool) get_input_value('_is_html', RCUBE_INPUT_POST);
 // fetch message body
 $message_body = get_input_value('_message', RCUBE_INPUT_POST, TRUE, $message_charset);
 
+if ($isHtml) {
+  $font   = rcube_fontdefs($RCMAIL->config->get('default_font', 'Verdana'));
+  $bstyle = $font && is_string($font) ? " style='font-family: $font'" : '';
+
+  // append doctype and html/body wrappers
+  $message_body = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">' .
+    "\r\n<html><body$bstyle>\r\n" . $message_body;
+}
+
 if (!$savedraft) {
   if ($isHtml) {
     // remove signature's div ID
@@ -410,16 +428,13 @@ if (!$savedraft) {
     $bstyle = 'padding-left:5px; border-left:#1010ff 2px solid; margin-left:5px; width:100%';
     $message_body = preg_replace('/<blockquote>/',
       '<blockquote type="cite" style="'.$bstyle.'">', $message_body);
-
-    // append doctype and html/body wrappers
-    $message_body = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">' .
-      "\r\n<html><body>\r\n" . $message_body;
   }
 
   // Check spelling before send
   if ($CONFIG['spellcheck_before_send'] && $CONFIG['enable_spellcheck']
     && empty($COMPOSE['spell_checked']) && !empty($message_body)
   ) {
+    $message_body = str_replace("\r\n", "\n", $message_body);
     $spellchecker = new rcube_spellchecker(get_input_value('_lang', RCUBE_INPUT_GPC));
     $spell_result = $spellchecker->check($message_body, $isHtml);
 
@@ -447,8 +462,10 @@ if (!$savedraft) {
 
   if ($footer)
     $message_body .= "\r\n" . $footer;
-  if ($isHtml)
-    $message_body .= "\r\n</body></html>\r\n";
+}
+
+if ($isHtml) {
+  $message_body .= "\r\n</body></html>\r\n";
 }
 
 // set line length for body wrapping
@@ -491,14 +508,9 @@ if ($isHtml) {
   $h2t = new html2text($plugin['body'], false, true, 0);
   $plainTextPart = rc_wordwrap($h2t->get_text(), $LINE_LENGTH, "\r\n");
   $plainTextPart = wordwrap($plainTextPart, 998, "\r\n", true);
-  if (!$plainTextPart) {
-    // empty message body breaks attachment handling in drafts
-    $plainTextPart = "\r\n";
-  }
-  else {
-    // make sure all line endings are CRLF (#1486712)
-    $plainTextPart = preg_replace('/\r?\n/', "\r\n", $plainTextPart);
-  }
+
+  // make sure all line endings are CRLF (#1486712)
+  $plainTextPart = preg_replace('/\r?\n/', "\r\n", $plainTextPart);
 
   $plugin = $RCMAIL->plugins->exec_hook('message_outgoing_body',
     array('body' => $plainTextPart, 'type' => 'alternative', 'message' => $MAIL_MIME));
@@ -517,15 +529,11 @@ else {
 
   // compose format=flowed content if enabled
   if ($flowed = $RCMAIL->config->get('send_format_flowed', true))
-    $message_body = rcube_message::format_flowed($message_body, min($LINE_LENGTH+2, 79));
+    $message_body = rcube_mime::format_flowed($message_body, min($LINE_LENGTH+2, 79));
   else
     $message_body = rc_wordwrap($message_body, $LINE_LENGTH, "\r\n");
 
   $message_body = wordwrap($message_body, 998, "\r\n", true);
-  if (!strlen($message_body)) { 
-    // empty message body breaks attachment handling in drafts 
-    $message_body = "\r\n"; 
-  }
 
   $MAIL_MIME->setTXTBody($message_body, false, true);
 }
@@ -631,9 +639,9 @@ if (!$savedraft)
 
   // set replied/forwarded flag
   if ($COMPOSE['reply_uid'])
-    $IMAP->set_flag($COMPOSE['reply_uid'], 'ANSWERED', $COMPOSE['mailbox']);
+    $RCMAIL->storage->set_flag($COMPOSE['reply_uid'], 'ANSWERED', $COMPOSE['mailbox']);
   else if ($COMPOSE['forward_uid'])
-    $IMAP->set_flag($COMPOSE['forward_uid'], 'FORWARDED', $COMPOSE['mailbox']);
+    $RCMAIL->storage->set_flag($COMPOSE['forward_uid'], 'FORWARDED', $COMPOSE['mailbox']);
 
 } // End of SMTP Delivery Block
 
@@ -646,12 +654,12 @@ else
 
 if ($store_target) {
   // check if folder is subscribed
-  if ($IMAP->mailbox_exists($store_target, true))
+  if ($RCMAIL->storage->folder_exists($store_target, true))
     $store_folder = true;
   // folder may be existing but not subscribed (#1485241)
-  else if (!$IMAP->mailbox_exists($store_target))
-    $store_folder = $IMAP->create_mailbox($store_target, true);
-  else if ($IMAP->subscribe($store_target))
+  else if (!$RCMAIL->storage->folder_exists($store_target))
+    $store_folder = $RCMAIL->storage->create_folder($store_target, true);
+  else if ($RCMAIL->storage->subscribe($store_target))
     $store_folder = true;
 
   // append message to sent box
@@ -681,35 +689,37 @@ if ($store_target) {
             'message' => "Could not create message: ".$msg->getMessage()),
             TRUE, FALSE);
     else {
-      $saved = $IMAP->save_message($store_target, $msg, $headers, $mailbody_file ? true : false);
+      $saved = $RCMAIL->storage->save_message($store_target, $msg, $headers, $mailbody_file ? true : false);
     }
 
     if ($mailbody_file) {
       unlink($mailbody_file);
       $mailbody_file = null;
     }
+  }
 
-    // raise error if saving failed
-    if (!$saved) {
-      raise_error(array('code' => 800, 'type' => 'imap',
-           'file' => __FILE__, 'line' => __LINE__,
-            'message' => "Could not save message in $store_target"), TRUE, FALSE);
+  // raise error if saving failed
+  if (!$saved) {
+    raise_error(array('code' => 800, 'type' => 'imap',
+       'file' => __FILE__, 'line' => __LINE__,
+       'message' => "Could not save message in $store_target"), TRUE, FALSE);
 
-      if ($savedraft) {
-        $OUTPUT->show_message('errorsaving', 'error');
-        $OUTPUT->send('iframe');
-      }
+    if ($savedraft) {
+      $OUTPUT->show_message('errorsaving', 'error');
+      // start the auto-save timer again
+      $OUTPUT->command('auto_save_start');
+      $OUTPUT->send('iframe');
     }
   }
 
   if ($olddraftmessageid) {
     // delete previous saved draft
     // @TODO: use message UID (remember to check UIDVALIDITY) to skip this SEARCH
-    $a_deleteid = $IMAP->search_once($CONFIG['drafts_mbox'],
-        'HEADER Message-ID '.$olddraftmessageid, true);
+    $delete_idx = $RCMAIL->storage->search_once($CONFIG['drafts_mbox'],
+        'HEADER Message-ID '.$olddraftmessageid);
 
-    if (!empty($a_deleteid)) {
-      $deleted = $IMAP->delete_message($a_deleteid, $CONFIG['drafts_mbox']);
+    if ($del_uid = $delete_idx->get_element('FIRST')) {
+      $deleted = $RCMAIL->storage->delete_message($del_uid, $CONFIG['drafts_mbox']);
 
       // raise error if deletion of old draft failed
       if (!$deleted)
@@ -730,8 +740,8 @@ if ($savedraft) {
 
   // remember new draft-uid ($saved could be an UID or TRUE here)
   if (is_bool($saved)) {
-    $draftuids = $IMAP->search_once($CONFIG['drafts_mbox'], 'HEADER Message-ID '.$msgid, true);
-    $saved     = $draftuids[0];
+    $draft_idx = $RCMAIL->storage->search_once($CONFIG['drafts_mbox'], 'HEADER Message-ID '.$msgid);
+    $saved     = $draft_idx->get_element('FIRST');
   }
   $COMPOSE['param']['draft_uid'] = $saved;
   $plugin = $RCMAIL->plugins->exec_hook('message_draftsaved', array('msgid' => $msgid, 'uid' => $saved, 'folder' => $store_target));
index a108453fd610120e12f3e27de48496eaa9a9529c..3498630b5c265cf775256a08c019228e493d4ba3 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2008-2009, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Send a message disposition notification for a specific mail         |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: sendmdn.inc 4410 2011-01-12 18:25:02Z thomasb $
+ $Id$
 
 */
 
index d1cfabc903bcfb13e96a0bb5ce92fe41e4e7a68c..c6c6d96363cd39964c6f0b72e5aebf173d495ed8 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2009, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Display a mail message similar as a usual mail application does     |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: show.inc 5801 2012-01-19 07:32:08Z alec $
+ $Id$
 
 */
 
@@ -30,14 +33,14 @@ if ($uid = get_input_value('_uid', RCUBE_INPUT_GET)) {
     rcmail_message_error($uid);
   }
 
-  $mbox_name = $IMAP->get_mailbox_name();
+  $mbox_name = $RCMAIL->storage->get_folder();
 
   // show images?
   rcmail_check_safe($MESSAGE);
 
   // set message charset as default
   if (!empty($MESSAGE->headers->charset))
-    $IMAP->set_charset($MESSAGE->headers->charset);
+    $RCMAIL->storage->set_charset($MESSAGE->headers->charset);
 
   $OUTPUT->set_pagetitle(abbreviate_string($MESSAGE->subject, 128, '...', true));
 
@@ -47,18 +50,21 @@ if ($uid = get_input_value('_uid', RCUBE_INPUT_GET)) {
   $OUTPUT->set_env('safemode', $MESSAGE->is_safe);
   $OUTPUT->set_env('sender', $MESSAGE->sender['string']);
   $OUTPUT->set_env('permaurl', rcmail_url('show', array('_uid' => $MESSAGE->uid, '_mbox' => $mbox_name)));
-  $OUTPUT->set_env('delimiter', $IMAP->get_hierarchy_delimiter());
+  $OUTPUT->set_env('delimiter', $RCMAIL->storage->get_hierarchy_delimiter());
   $OUTPUT->set_env('mailbox', $mbox_name);
-  if ($CONFIG['drafts_mbox']) {
-    $OUTPUT->set_env('drafts_mailbox', $CONFIG['drafts_mbox']);
-  }
 
   // mimetypes supported by the browser (default settings)
   $mimetypes = $RCMAIL->config->get('client_mimetypes', 'text/plain,text/html,text/xml,image/jpeg,image/gif,image/png,application/x-javascript,application/pdf,application/x-shockwave-flash');
   $OUTPUT->set_env('mimetypes', is_string($mimetypes) ? explode(',', $mimetypes) : (array)$mimetypes);
 
+  if ($CONFIG['drafts_mbox'])
+    $OUTPUT->set_env('drafts_mailbox', $CONFIG['drafts_mbox']);
   if ($CONFIG['trash_mbox'])
     $OUTPUT->set_env('trash_mailbox', $CONFIG['trash_mbox']);
+  if ($CONFIG['junk_mbox'])
+    $OUTPUT->set_env('junk_mailbox', $CONFIG['junk_mbox']);
+  if ($CONFIG['delete_junk'])
+    $OUTPUT->set_env('delete_junk', true);
   if ($CONFIG['flag_for_deletion'])
     $OUTPUT->set_env('flag_for_deletion', true);
   if ($CONFIG['read_when_deleted'])
@@ -80,7 +86,7 @@ if ($uid = get_input_value('_uid', RCUBE_INPUT_GET)) {
   if ($MESSAGE->headers->mdn_to
       && empty($MESSAGE->headers->flags['MDNSENT'])
       && empty($MESSAGE->headers->flags['SEEN'])
-      && ($IMAP->check_permflag('MDNSENT') || $IMAP->check_permflag('*'))
+      && ($RCMAIL->storage->check_permflag('MDNSENT') || $RCMAIL->storage->check_permflag('*'))
       && $mbox_name != $CONFIG['drafts_mbox']
       && $mbox_name != $CONFIG['sent_mbox']
   ) {
@@ -133,7 +139,7 @@ function rcmail_message_attachments($attrib)
         $title = '';
       }
 
-        $ol .= html::tag('li', null,
+        $ol .= html::tag('li', rcmail_filetype2classname($attach_prop->mimetype, $attach_prop->filename),
           html::a(array(
             'href' => $MESSAGE->get_part_url($attach_prop->mime_id, false),
             'onclick' => sprintf(
@@ -178,8 +184,8 @@ function rcmail_message_buttons()
 {
   global $MESSAGE, $RCMAIL, $CONFIG;
 
-  $mbox  = $RCMAIL->imap->get_mailbox_name();
-  $delim = $RCMAIL->imap->get_hierarchy_delimiter();
+  $mbox  = $RCMAIL->storage->get_folder();
+  $delim = $RCMAIL->storage->get_hierarchy_delimiter();
   $dbox  = $CONFIG['drafts_mbox'];
 
   // the message is not a draft
@@ -251,7 +257,7 @@ else
 if ($MESSAGE && $MESSAGE->headers && empty($MESSAGE->headers->flags['SEEN']) &&
   ($RCMAIL->action == 'show' || ($RCMAIL->action == 'preview' && intval($CONFIG['preview_pane_mark_read']) == 0)))
 {
-  if ($IMAP->set_flag($MESSAGE->uid, 'SEEN')) {
+  if ($RCMAIL->storage->set_flag($MESSAGE->uid, 'SEEN')) {
     if ($count = rcmail_get_unseen_count($mbox_name)) {
       rcmail_set_unseen_count($mbox_name, $count - 1);
     }
index 62992cbb7a3812d532aac49f9893c93cc6fef3a0..536c6b3dac8075ba1effca82bcd89e232a39e3f2 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2009, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Display a mail message similar as a usual mail application does     |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: viewsource.inc 4410 2011-01-12 18:25:02Z thomasb $
+ $Id$
 
 */
 
@@ -24,12 +27,13 @@ ob_end_clean();
 // similar code as in program/steps/mail/get.inc
 if ($uid = get_input_value('_uid', RCUBE_INPUT_GET))
 {
-  $headers = $IMAP->get_headers($uid);
+  $headers = $RCMAIL->storage->get_message_headers($uid);
   $charset = $headers->charset ? $headers->charset : $CONFIG['default_charset'];
   header("Content-Type: text/plain; charset={$charset}");
 
   if (!empty($_GET['_save'])) {
-    $filename = ($headers->subject ? $IMAP->decode_header($headers->subject) : 'roundcube') . '.eml';
+    $subject = rcube_mime::decode_header($headers->subject, $headers->charset);
+    $filename = ($subject ? $subject : $RCMAIL->config->get('product_name', 'email')) . '.eml';
     $browser = $RCMAIL->output->browser;
 
     if ($browser->ie && $browser->ver < 7)
@@ -43,7 +47,7 @@ if ($uid = get_input_value('_uid', RCUBE_INPUT_GET))
     header("Content-Disposition: attachment; filename=\"$filename\"");
   }
 
-  $IMAP->print_raw_body($uid);
+  $RCMAIL->storage->print_raw_body($uid, empty($_GET['_save']));
 }
 else
 {
diff --git a/program/steps/settings/about.inc b/program/steps/settings/about.inc
new file mode 100644 (file)
index 0000000..657c10b
--- /dev/null
@@ -0,0 +1,132 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | program/steps/settings/about.inc                                      |
+ |                                                                       |
+ | This file is part of the Roundcube Webmail client                     |
+ | Copyright (C) 2005-2011, The Roundcube Dev Team                       |
+ | Copyright (C) 2011, 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:                                                              |
+ |   Display license information about program and enabled plugins       |
+ |                                                                       |
+ +-----------------------------------------------------------------------+
+ | Author: Aleksander Machniak <alec@alec.pl>                            |
+ +-----------------------------------------------------------------------+
+
+ $Id: identities.inc 4410 2011-01-12 18:25:02Z thomasb $
+
+*/
+
+
+function rcmail_supportlink($attrib)
+{
+  global $RCMAIL;
+
+  if ($url = $RCMAIL->config->get('support_url')) {
+    $label = $attrib['label'] ? $attrib['label'] : 'support';
+    $attrib['href'] = $url;
+    return html::a($attrib, rcube_label($label));
+  }
+}
+
+function rcmail_plugins_list($attrib)
+{
+  global $RCMAIL;
+
+  if (!$attrib['id'])
+    $attrib['id'] = 'rcmpluginlist';
+
+  $plugins = array_filter((array) $RCMAIL->config->get('plugins'));
+  $plugins = array_flip($plugins);
+
+  foreach ($plugins as $name => $plugin) {
+    rcube_plugin_data($name, $plugins);
+  }
+
+  if (empty($plugins)) {
+    return '';
+  }
+
+  ksort($plugins, SORT_LOCALE_STRING);
+
+  $table = new html_table($attrib);
+
+  // add table header
+  $table->add_header('name', rcube_label('plugin'));
+  $table->add_header('version', rcube_label('version'));
+  $table->add_header('license', rcube_label('license'));
+  $table->add_header('source', rcube_label('source'));
+
+  foreach ($plugins as $name => $data) {
+    $uri = $data['srcuri'] ? $data['srcuri'] : $data['uri'];
+    if ($uri && stripos($uri, 'http') !== 0) {
+      $uri = 'http://' . $uri;
+    }
+
+    $table->add_row();
+    $table->add('name', Q($data['name'] ? $data['name'] : $name));
+    $table->add('version', Q($data['version']));
+    $table->add('license', $data['license_uri'] ? html::a(array('target' => '_blank', href=> Q($data['license_uri'])),
+        Q($data['license'])) : $data['license']);
+    $table->add('source', $uri ? html::a(array('target' => '_blank', href=> Q($uri)),
+        Q(rcube_label('download'))) : '');
+  }
+
+  return $table->show();
+}
+
+function rcube_plugin_data($name, &$plugins = array())
+{
+  // XPaths of plugin metadata elements
+  $metadata = array(
+    'name'    => 'string(//rc:package/rc:name)',
+    'version' => 'string(//rc:package/rc:version/rc:release)',
+    'license' => 'string(//rc:package/rc:license)',
+    'license_uri' => 'string(//rc:package/rc:license/@uri)',
+    'srcuri' => 'string(//rc:package/rc:srcuri)',
+    'uri' => 'string(//rc:package/rc:uri)',
+  );
+
+  $package = INSTALL_PATH . "/plugins/$name/package.xml";
+  if (file_exists($package) && ($file = file_get_contents($package))) {
+    $doc = new DOMDocument();
+    $doc->loadXML($file);
+    $xpath = new DOMXPath($doc);
+    $xpath->registerNamespace('rc', "http://pear.php.net/dtd/package-2.0");
+    $data = array();
+
+    foreach ($metadata as $key => $path) {
+      $data[$key] = $xpath->evaluate($path);
+    }
+
+    $plugins[$name] = $data;
+
+    // dependent required plugins (can be used, but not included in config)
+    $deps = $xpath->evaluate('//rc:package/rc:dependencies/rc:required/rc:package/rc:name');
+    $cnt  = $deps->length;
+
+    for ($i=0; $i<$cnt; $i++) {
+      $dn = $deps->item($i)->nodeValue;
+      if (!array_key_exists($dn, $plugins)) {
+        rcube_plugin_data($dn, $plugins);
+      }
+    }
+  }
+  else {
+    unset($plugins[$name]);
+  }
+}
+
+
+$OUTPUT->set_pagetitle(rcube_label('about'));
+
+$OUTPUT->add_handler('supportlink', 'rcmail_supportlink');
+$OUTPUT->add_handler('pluginlist', 'rcmail_plugins_list');
+
+$OUTPUT->send('about');
index 6f0cf94bb37901f358b99e7f81983f018c159ee0..b482c3302be212f78dd17ea88cca60aaac3af2da 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2009, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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            |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: delete_identity.inc 4668 2011-04-19 20:41:24Z thomasb $
+ $Id$
 
 */
 
@@ -32,7 +35,7 @@ if ($iid && preg_match('/^[0-9]+(,[0-9]+)*$/', $iid))
 {
   $plugin = $RCMAIL->plugins->exec_hook('identity_delete', array('id' => $iid));
   
-  $deleted = !$plugin['abort'] ? $USER->delete_identity($iid) : $plugin['result'];
+  $deleted = !$plugin['abort'] ? $RCMAIL->user->delete_identity($iid) : $plugin['result'];
 
   if ($deleted > 0 && $deleted !== false)
     $OUTPUT->show_message('deletedsuccessfully', 'confirmation', null, false);
index e7db49c02b155199e1a853f0af28a33ab9a75577..644c86e2c36e0ad573c5090277c49f77262f4cfa 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2009, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Provide functionality to create/edit a folder                       |
  | Author: Aleksander Machniak <alec@alec.pl>                            |
  +-----------------------------------------------------------------------+
 
- $Id: edit_folder.inc 5402 2011-11-09 10:03:54Z alec $
+ $Id$
 
 */
 
 // WARNING: folder names in UI are encoded with RCMAIL_CHARSET
 
-// init IMAP connection
-$RCMAIL->imap_connect();
-
 function rcmail_folder_form($attrib)
 {
     global $RCMAIL;
 
+    $storage = $RCMAIL->get_storage();
+
     // edited folder name (empty in create-folder mode)
     $mbox      = trim(get_input_value('_mbox', RCUBE_INPUT_GPC, true));
     $mbox_imap = rcube_charset_convert($mbox, RCMAIL_CHARSET, 'UTF7-IMAP');
@@ -36,13 +38,13 @@ function rcmail_folder_form($attrib)
     $parent      = trim(get_input_value('_path', RCUBE_INPUT_GPC, true));
     $parent_imap = rcube_charset_convert($parent, RCMAIL_CHARSET, 'UTF7-IMAP');
 
-    $threading_supported = $RCMAIL->imap->get_capability('THREAD');
-    $delimiter = $RCMAIL->imap->get_hierarchy_delimiter();
+    $threading_supported = $storage->get_capability('THREAD');
+    $delimiter = $storage->get_hierarchy_delimiter();
 
     // Get mailbox parameters
     if (strlen($mbox)) {
         $options   = rcmail_folder_options($mbox_imap);
-        $namespace = $RCMAIL->imap->get_namespace();
+        $namespace = $storage->get_namespace();
 
         $path   = explode($delimiter, $mbox_imap);
         $folder = array_pop($path);
@@ -57,14 +59,14 @@ function rcmail_folder_form($attrib)
 
         // allow creating subfolders of INBOX folder
         if ($path == 'INBOX') {
-            $path = $RCMAIL->imap->mod_mailbox($path, 'in');
+            $path = $storage->mod_folder($path, 'in');
         }
     }
 
     // remove personal namespace prefix
     if (strlen($path)) {
         $path_id = $path;
-        $path    = $RCMAIL->imap->mod_mailbox($path.$delimiter);
+        $path    = $storage->mod_folder($path.$delimiter);
         if ($path[strlen($path)-1] == $delimiter) {
             $path = substr($path, 0, -1);
         }
@@ -113,6 +115,15 @@ function rcmail_folder_form($attrib)
     }
     else {
         $selected = isset($_POST['_parent']) ? $_POST['_parent'] : $path_id;
+        $exceptions = array($mbox_imap);
+
+        // Exclude 'prefix' namespace from parent folders list (#1488349)
+        // If INBOX. namespace exists, folders created as INBOX subfolders
+        // will be listed at the same level - selecting INBOX as a parent does nothing
+        if ($prefix = $storage->get_namespace('prefix')) {
+            $exceptions[] = substr($prefix, 0, -1);
+        }
+
         $select = rcmail_mailbox_select(array(
             'name'        => '_parent',
             'noselection' => '---',
@@ -120,7 +131,7 @@ function rcmail_folder_form($attrib)
             'maxlength'   => 150,
             'unsubscribed' => true,
             'skip_noinferiors' => true,
-            'exceptions'  => array($mbox_imap),
+            'exceptions'  => $exceptions,
         ));
 
         $form['props']['fieldsets']['location']['content']['path'] = array(
@@ -193,7 +204,7 @@ function rcmail_folder_form($attrib)
         );
 
         if ((!$options['noselect'] && !$options['is_root']) || $mbox_imap == 'INBOX') {
-            $msgcount = $RCMAIL->imap->messagecount($mbox_imap, 'ALL', true, false);
+            $msgcount = $storage->count($mbox_imap, 'ALL', true, false);
 
             // Size
             if ($msgcount) {
@@ -236,7 +247,7 @@ function rcmail_folder_form($attrib)
     // Set form tags and hidden fields
     list($form_start, $form_end) = get_form_tags($attrib, 'save-folder', null, $hidden_fields);
 
-    unset($attrib['form']);
+    unset($attrib['form'], $attrib['id']);
 
     // return the complete edit form as table
     $out = "$form_start\n";
@@ -246,14 +257,14 @@ function rcmail_folder_form($attrib)
         if (!empty($tab['fieldsets']) && is_array($tab['fieldsets'])) {
             $content = '';
             foreach ($tab['fieldsets'] as $fieldset) {
-                $subcontent = rcmail_get_form_part($fieldset);
+                $subcontent = rcmail_get_form_part($fieldset, $attrib);
                 if ($subcontent) {
                     $content .= html::tag('fieldset', null, html::tag('legend', null, Q($fieldset['name'])) . $subcontent) ."\n";
                 }
             }
         }
         else {
-            $content = rcmail_get_form_part($tab);
+            $content = rcmail_get_form_part($tab, $attrib);
         }
 
         if ($content) {
@@ -268,7 +279,7 @@ function rcmail_folder_form($attrib)
     return $out;
 }
 
-function rcmail_get_form_part($form)
+function rcmail_get_form_part($form, $attrib = array())
 {
     $content = '';
 
@@ -278,10 +289,10 @@ function rcmail_get_form_part($form)
             $colprop['id'] = '_'.$col;
             $label = !empty($colprop['label']) ? $colprop['label'] : rcube_label($col);
 
-            $table->add('title', sprintf('<label for="%s">%s</label>', $colprop['id'], Q($label)));
+            $table->add('title', html::label($colprop['id'], Q($label)));
             $table->add(null, $colprop['value']);
         }
-        $content = $table->show();
+        $content = $table->show($attrib);
     }
     else {
         $content = $form['content'];
index 599fddb7f02d727ba8413f6b26667d1d19796d57..f557993eb0d5b9ba0ff98297dba232748964b92f 100644 (file)
@@ -5,8 +5,11 @@
  | program/steps/settings/edit_identity.inc                              |
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
- | Copyright (C) 2005-2007, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2005-2011, 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:                                                              |
  |   Show edit form for a identity record or to add a new one            |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: edit_identity.inc 5139 2011-08-28 09:47:15Z alec $
+ $Id$
 
 */
 
@@ -23,7 +26,7 @@ define('IDENTITIES_LEVEL', intval($RCMAIL->config->get('identities_level', 0)));
 
 // edit-identity
 if (($_GET['_iid'] || $_POST['_iid']) && $RCMAIL->action=='edit-identity') {
-  $IDENTITY_RECORD = $USER->get_identity(get_input_value('_iid', RCUBE_INPUT_GPC));
+  $IDENTITY_RECORD = $RCMAIL->user->get_identity(get_input_value('_iid', RCUBE_INPUT_GPC));
 
   if (is_array($IDENTITY_RECORD))
     $OUTPUT->set_env('iid', $IDENTITY_RECORD['identity_id']);
@@ -88,15 +91,15 @@ function rcube_identity_form($attrib)
     $form['signature']['content']['signature']['class'] = 'mce_editor';
   }
 
+  $IDENTITY_RECORD['signature'] = htmlentities($IDENTITY_RECORD['signature'], ENT_NOQUOTES, RCMAIL_CHARSET);
+
   // disable some field according to access level
   if (IDENTITIES_LEVEL == 1 || IDENTITIES_LEVEL == 3) {
     $form['addressing']['content']['email']['disabled'] = true;
     $form['addressing']['content']['email']['class'] = 'disabled';
   }
 
-  $IDENTITY_RECORD['email']    = rcube_idn_to_utf8($IDENTITY_RECORD['email']);
-  $IDENTITY_RECORD['reply-to'] = rcube_idn_to_utf8($IDENTITY_RECORD['reply-to']);
-  $IDENTITY_RECORD['bcc']      = rcube_idn_to_utf8($IDENTITY_RECORD['bcc']);
+  $IDENTITY_RECORD['email'] = rcube_idn_to_utf8($IDENTITY_RECORD['email']);
 
   // Allow plugins to modify identity form content
   $plugin = $RCMAIL->plugins->exec_hook('identity_form', array(
@@ -111,7 +114,7 @@ function rcube_identity_form($attrib)
     array('name' => '_iid', 'value' => $IDENTITY_RECORD['identity_id']));
 
   unset($plugin);
-  unset($attrib['form']);
+  unset($attrib['form'], $attrib['id']);
 
   // return the complete edit form as table
   $out = "$form_start\n";
@@ -131,10 +134,10 @@ function rcube_identity_form($attrib)
         $value = !empty($colprop['value']) ? $colprop['value'] :
             rcmail_get_edit_field($col, $IDENTITY_RECORD[$col], $colprop, $colprop['type']);
 
-        $table->add('title', sprintf('<label for="%s">%s</label>', $colprop['id'], Q($label)));
+        $table->add('title', html::label($colprop['id'], Q($label)));
         $table->add(null, $value);
       }
-      $content = $table->show();
+      $content = $table->show($attrib);
     }
     else {
       $content = $fieldset['content'];
@@ -151,6 +154,7 @@ function rcube_identity_form($attrib)
 $OUTPUT->include_script('list.js');
 $OUTPUT->add_handler('identityform', 'rcube_identity_form');
 $OUTPUT->set_env('identities_level', IDENTITIES_LEVEL);
+$OUTPUT->add_label('deleteidentityconfirm');
 
 $OUTPUT->set_pagetitle(rcube_label(($RCMAIL->action=='add-identity' ? 'newidentity' : 'edititem')));
 
index 73a4642820c6a0c3109df7ad3b93d7a726bc9f4b..d0abb2843b9d1f8f39ffeb94922d7f402d24acb5 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2007, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Provide functionality for user's settings & preferences             |
@@ -48,8 +51,13 @@ function rcmail_user_prefs_form($attrib)
         if ($option['advanced'])
              $table->set_row_attribs('advanced');
 
-        $table->add('title', $option['title']);
-           $table->add(null, $option['content']);
+        if (isset($option['title'])) {
+          $table->add('title', $option['title']);
+             $table->add(null, $option['content']);
+        }
+        else {
+          $table->add(array('colspan' => 2), $option['content']);
+        }
       }
 
       $out .= html::tag('fieldset', null, html::tag('legend', null, $block['name']) . $table->show($attrib));
index bde7b5a5b7409ef80108c3b6b1e19aab92f29932..d97666f2afbc6705a2489e375fe33fa07e36683b 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2009, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Provide functionality of folders management                         |
  | Author: Aleksander Machniak <alec@alec.pl>                            |
  +-----------------------------------------------------------------------+
 
- $Id: folders.inc 5635 2011-12-21 10:07:42Z alec $
+ $Id$
 
 */
 
 // WARNING: folder names in UI are encoded with RCMAIL_CHARSET
 
 // init IMAP connection
-$RCMAIL->imap_connect();
+$STORAGE = $RCMAIL->get_storage();
 
 // subscribe mailbox
 if ($RCMAIL->action == 'subscribe')
 {
     $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true, 'UTF7-IMAP');
     if (strlen($mbox)) {
-        $result = $IMAP->subscribe(array($mbox));
+        $result = $STORAGE->subscribe(array($mbox));
 
         // Handle virtual (non-existing) folders
-        if (!$result && $IMAP->get_error_code() == -1 &&
-            $IMAP->get_response_code() == rcube_imap::TRYCREATE
+        if (!$result && $STORAGE->get_error_code() == -1 &&
+            $STORAGE->get_response_code() == rcube_storage::TRYCREATE
         ) {
-            $result = $IMAP->create_mailbox($mbox, true);
+            $result = $STORAGE->create_folder($mbox, true);
             if ($result) {
                 // @TODO: remove 'virtual' class of folder's row
             }
@@ -44,8 +47,8 @@ if ($RCMAIL->action == 'subscribe')
 
         if ($result) {
             // Handle subscription of protected folder (#1487656)
-            if ($CONFIG['protect_default_folders'] == true
-                && in_array($mbox, $CONFIG['default_imap_folders'])
+            if ($RCMAIL->config->get('protect_default_folders')
+                && in_array($mbox, (array)$RCMAIL->config->get('default_folders'))
             ) {
                 $OUTPUT->command('disable_subscription', $mbox);
             }
@@ -62,7 +65,7 @@ else if ($RCMAIL->action == 'unsubscribe')
 {
     $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true, 'UTF7-IMAP');
     if (strlen($mbox)) {
-        $result = $IMAP->unsubscribe(array($mbox));
+        $result = $STORAGE->unsubscribe(array($mbox));
         if ($result)
             $OUTPUT->show_message('folderunsubscribed', 'confirmation');
         else
@@ -80,11 +83,16 @@ else if ($RCMAIL->action == 'delete-folder')
         $plugin = $RCMAIL->plugins->exec_hook('folder_delete', array('name' => $mbox));
 
         if (!$plugin['abort']) {
-            $deleted = $IMAP->delete_mailbox($plugin['name']);
+            $deleted = $STORAGE->delete_folder($plugin['name']);
         }
         else {
             $deleted = $plugin['result'];
         }
+
+        // #1488692: update session
+        if ($deleted && $_SESSION['mbox'] === $mbox) {
+            $RCMAIL->session->remove('mbox');
+        }
     }
 
     if ($OUTPUT->ajax_call && $deleted) {
@@ -126,19 +134,19 @@ else if ($RCMAIL->action == 'purge')
 {
     $mbox_utf8 = get_input_value('_mbox', RCUBE_INPUT_POST, true);
     $mbox      = rcube_charset_convert($mbox_utf8, RCMAIL_CHARSET, 'UTF7-IMAP');
-    $delimiter = $IMAP->get_hierarchy_delimiter();
+    $delimiter = $STORAGE->get_hierarchy_delimiter();
     $trash_regexp = '/^' . preg_quote($CONFIG['trash_mbox'] . $delimiter, '/') . '/';
 
     // we should only be purging trash (or their subfolders)
     if (!strlen($CONFIG['trash_mbox']) || $mbox == $CONFIG['trash_mbox']
         || preg_match($trash_regexp, $mbox)
     ) {
-        $success = $IMAP->clear_mailbox($mbox);
+        $success = $STORAGE->delete_message('*', $mbox);
         $delete = true;
     }
     // copy to Trash
     else {
-        $success = $IMAP->move_message('1:*', $CONFIG['trash_mbox'], $mbox);
+        $success = $STORAGE->move_message('1:*', $CONFIG['trash_mbox'], $mbox);
         $delete = false;
     }
 
@@ -164,7 +172,7 @@ else if ($RCMAIL->action == 'folder-size')
 {
     $name = trim(get_input_value('_mbox', RCUBE_INPUT_POST, true));
 
-    $size = $IMAP->get_mailbox_size($name);
+    $size = $STORAGE->folder_size($name);
 
     // @TODO: check quota and show percentage usage of specified mailbox?
 
@@ -183,7 +191,7 @@ if ($OUTPUT->ajax_call)
 // build table with all folders listed by server
 function rcube_subscription_form($attrib)
 {
-    global $RCMAIL, $IMAP, $CONFIG, $OUTPUT;
+    global $RCMAIL, $OUTPUT;
 
     list($form_start, $form_end) = get_form_tags($attrib, 'folders');
     unset($attrib['form']);
@@ -199,21 +207,26 @@ function rcube_subscription_form($attrib)
         $table->add_header('subscribed', '');
     }
 
+    $STORAGE = $RCMAIL->get_storage();
+
     // get folders from server
-    $IMAP->clear_cache('mailboxes', true);
+    $STORAGE->clear_cache('mailboxes', true);
 
-    $a_unsubscribed = $IMAP->list_unsubscribed();
-    $a_subscribed   = $IMAP->list_mailboxes('', '*', null, null, true); // unsorted
-    $delimiter      = $IMAP->get_hierarchy_delimiter();
-    $namespace      = $IMAP->get_namespace();
+    $a_unsubscribed = $STORAGE->list_folders();
+    $a_subscribed   = $STORAGE->list_folders_subscribed('', '*', null, null, true); // unsorted
+    $delimiter      = $STORAGE->get_hierarchy_delimiter();
+    $namespace      = $STORAGE->get_namespace();
     $a_js_folders   = array();
     $seen           = array();
     $list_folders   = array();
 
+    $default_folders = (array) $RCMAIL->config->get('default_folders');
+    $protect_default = $RCMAIL->config->get('protect_default_folders');
+
     // pre-process folders list
     foreach ($a_unsubscribed as $i => $folder) {
         $folder_id     = $folder;
-        $folder        = $IMAP->mod_mailbox($folder);
+        $folder        = $STORAGE->mod_folder($folder);
         $foldersplit   = explode($delimiter, $folder);
         $name          = rcube_charset_convert(array_pop($foldersplit), 'UTF7-IMAP');
         $parent_folder = join($delimiter, $foldersplit);
@@ -269,7 +282,7 @@ function rcube_subscription_form($attrib)
         $idx        = $i + 1;
         $sub_key    = array_search($folder['id'], $a_subscribed);
         $subscribed = $sub_key !== false;
-        $protected  = ($CONFIG['protect_default_folders'] == true && in_array($folder['id'], $CONFIG['default_imap_folders']));
+        $protected  = $protect_default && in_array($folder['id'], $default_folders);
         $noselect   = false;
         $classes    = array($i%2 ? 'even' : 'odd');
 
@@ -283,7 +296,7 @@ function rcube_subscription_form($attrib)
         }
 
         if (!$protected) {
-            $attrs = $IMAP->mailbox_attributes($folder['id']);
+            $attrs = $STORAGE->folder_attributes($folder['id']);
             $noselect = in_array('\\Noselect', $attrs);
         }
 
@@ -316,8 +329,8 @@ function rcube_subscription_form($attrib)
                 }
             }
         }
-        // check if the folder is shared, then disable subscription option on it
-        if (!$disabled && $folder['virtual'] && !empty($namespace)) {
+        // check if the folder is shared, then disable subscription option on it (if not subscribed already)
+        if (!$disabled && !$subscribed && $folder['virtual'] && !empty($namespace)) {
             $tmp_ns = array_merge((array)$namespace['other'], (array)$namespace['shared']);
             foreach ($tmp_ns as $item) {
                 if (strpos($folder['id'], $item[0]) === 0) {
@@ -342,7 +355,7 @@ function rcube_subscription_form($attrib)
 
     $OUTPUT->add_gui_object('subscriptionlist', $attrib['id']);
     $OUTPUT->set_env('subscriptionrows', $a_js_folders);
-    $OUTPUT->set_env('defaultfolders', $CONFIG['default_imap_folders']);
+    $OUTPUT->set_env('defaultfolders', $default_folders);
     $OUTPUT->set_env('delimiter', $delimiter);
 
     return $form_start . $table->show($attrib) . $form_end;
@@ -367,13 +380,14 @@ function rcmail_rename_folder($oldname, $newname)
 {
     global $RCMAIL;
 
-    $delimiter = $RCMAIL->imap->get_hierarchy_delimiter();
+    $storage   = $RCMAIL->get_storage();
+    $delimiter = $storage->get_hierarchy_delimiter();
 
     $plugin = $RCMAIL->plugins->exec_hook('folder_rename', array(
         'oldname' => $oldname, 'newname' => $newname));
 
     if (!$plugin['abort']) {
-        $renamed =  $RCMAIL->imap->rename_mailbox($oldname, $newname);
+        $renamed =  $storage->rename_folder($oldname, $newname);
     }
     else {
         $renamed = $plugin['result'];
@@ -387,15 +401,20 @@ function rcmail_rename_folder($oldname, $newname)
         foreach ($a_threaded as $key => $val) {
             if ($key == $oldname) {
                 unset($a_threaded[$key]);
-               $a_threaded[$newname] = true;
+                $a_threaded[$newname] = true;
             }
             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)] = true;
             }
         }
         $RCMAIL->user->save_prefs(array('message_threading' => $a_threaded));
 
+        // #1488692: update session
+        if ($_SESSION['mbox'] === $oldname) {
+            $_SESSION['mbox'] = $newname;
+        }
+
         return true;
     }
 
@@ -405,7 +424,10 @@ function rcmail_rename_folder($oldname, $newname)
 
 $OUTPUT->set_pagetitle(rcube_label('folders'));
 $OUTPUT->include_script('list.js');
-$OUTPUT->set_env('quota', $IMAP->get_capability('QUOTA'));
+$OUTPUT->set_env('prefix_ns', $STORAGE->get_namespace('prefix'));
+if ($STORAGE->get_capability('QUOTA')) {
+    $OUTPUT->set_env('quota', true);
+}
 
 // add some labels to client
 $OUTPUT->add_label('deletefolderconfirm', 'purgefolderconfirm', 'folderdeleting',
index 93b05d92a2be7647e891b0a3afab64e4b2fa12ec..57a2819dbf4c15e0d56f2c29cf4c642d74970980 100644 (file)
@@ -5,8 +5,11 @@
  | program/steps/settings/func.inc                                       |
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
- | Copyright (C) 2005-2007, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2005-2012, 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:                                                              |
  |   Provide functionality for user's settings & preferences             |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: func.inc 5873 2012-02-11 13:50:04Z thomasb $
+ $Id$
 
 */
 
@@ -63,14 +66,14 @@ function rcmail_sections_list($attrib)
 
 function rcmail_identities_list($attrib)
 {
-  global $OUTPUT, $USER, $RCMAIL;
+  global $OUTPUT, $RCMAIL;
 
   // add id to message list table if not specified
   if (!strlen($attrib['id']))
     $attrib['id'] = 'rcmIdentitiesList';
 
   // get identities list and define 'mail' column
-  $list = $USER->list_identities();
+  $list = $RCMAIL->user->list_identities();
   foreach ($list as $idx => $row)
     $list[$idx]['mail'] = trim($row['name'] . ' <' . rcube_idn_to_utf8($row['email']) .'>');
 
@@ -156,8 +159,8 @@ function rcmail_user_prefs($current=null)
     case 'general':
 
     $blocks = array(
-      'main' => array('name' => Q(rcube_label('mainoptions'))),
-      'list' => array('name' => Q(rcube_label('listoptions'))),
+      'main'    => array('name' => Q(rcube_label('mainoptions'))),
+      'browser' => array('name' => Q(rcube_label('browseroptions'))),
     );
 
     // language selection
@@ -175,50 +178,32 @@ function rcmail_user_prefs($current=null)
       );
     }
 
-    // show page size selection
+    // timezone selection
     if (!isset($no_override['timezone'])) {
       $field_id = 'rcmfd_timezone';
-      $select_timezone = new html_select(array('name' => '_timezone', 'id' => $field_id, 'onchange' => "$('#rcmfd_dst').attr('disabled', this.selectedIndex==0)"));
+      $select_timezone = new html_select(array('name' => '_timezone', 'id' => $field_id));
       $select_timezone->add(rcube_label('autodetect'), 'auto');
-      $select_timezone->add('(GMT -11:00) Midway Island, Samoa', '-11');
-      $select_timezone->add('(GMT -10:00) Hawaii', '-10');
-      $select_timezone->add('(GMT -9:30) Marquesas Islands', '-9.5');
-      $select_timezone->add('(GMT -9:00) Alaska', '-9');
-      $select_timezone->add('(GMT -8:00) Pacific Time (US/Canada)', '-8');
-      $select_timezone->add('(GMT -7:00) Mountain Time (US/Canada)', '-7');
-      $select_timezone->add('(GMT -6:00) Central Time (US/Canada), Mexico City', '-6');
-      $select_timezone->add('(GMT -5:00) Eastern Time (US/Canada), Bogota, Lima', '-5');
-      $select_timezone->add('(GMT -4:30) Caracas', '-4.5');
-      $select_timezone->add('(GMT -4:00) Atlantic Time (Canada), La Paz', '-4');
-      $select_timezone->add('(GMT -3:30) Nfld Time (Canada), Nfld, S. Labador', '-3.5');
-      $select_timezone->add('(GMT -3:00) Brazil, Buenos Aires, Georgetown', '-3');
-      $select_timezone->add('(GMT -2:00) Mid-Atlantic', '-2');
-      $select_timezone->add('(GMT -1:00) Azores, Cape Verde Islands', '-1');
-      $select_timezone->add('(GMT) Western Europe, London, Lisbon, Casablanca', '0');
-      $select_timezone->add('(GMT +1:00) Central European Time', '1');
-      $select_timezone->add('(GMT +2:00) EET: Tallinn, Helsinki, Kaliningrad, South Africa', '2');
-      $select_timezone->add('(GMT +3:00) Baghdad, Kuwait, Riyadh, Moscow, Nairobi', '3');
-      $select_timezone->add('(GMT +3:30) Tehran', '3.5');
-      $select_timezone->add('(GMT +4:00) Abu Dhabi, Muscat, Baku, Tbilisi', '4');
-      $select_timezone->add('(GMT +4:30) Kabul', '4.5');
-      $select_timezone->add('(GMT +5:00) Ekaterinburg, Islamabad, Karachi', '5');
-      $select_timezone->add('(GMT +5:30) Chennai, Kolkata, Mumbai, New Delhi', '5.5');
-      $select_timezone->add('(GMT +5:45) Kathmandu', '5.75');
-      $select_timezone->add('(GMT +6:00) Almaty, Dhaka, Colombo', '6');
-      $select_timezone->add('(GMT +6:30) Cocos Islands, Myanmar', '6.5');
-      $select_timezone->add('(GMT +7:00) Bangkok, Hanoi, Jakarta', '7');
-      $select_timezone->add('(GMT +8:00) Beijing, Perth, Singapore, Taipei', '8');
-      $select_timezone->add('(GMT +8:45) Caiguna, Eucla, Border Village', '8.75');
-      $select_timezone->add('(GMT +9:00) Tokyo, Seoul, Yakutsk', '9');
-      $select_timezone->add('(GMT +9:30) Adelaide, Darwin', '9.5');
-      $select_timezone->add('(GMT +10:00) EAST/AEST: Sydney, Guam, Vladivostok', '10');
-      $select_timezone->add('(GMT +10:30) New South Wales', '10.5');
-      $select_timezone->add('(GMT +11:00) Magadan, Solomon Islands', '11');
-      $select_timezone->add('(GMT +11:30) Norfolk Island', '11.5');
-      $select_timezone->add('(GMT +12:00) Auckland, Wellington, Kamchatka', '12');
-      $select_timezone->add('(GMT +12:45) Chatham Islands', '12.75');
-      $select_timezone->add('(GMT +13:00) Tonga, Pheonix Islands', '13');
-      $select_timezone->add('(GMT +14:00) Kiribati', '14');
+
+      $zones = array();
+      foreach (DateTimeZone::listIdentifiers() as $i => $tzs) {
+        try {
+          $tz = new DateTimeZone($tzs);
+          $date = new DateTime('2012-12-21', $tz);
+          $offset = $date->format('Z') + 45000;
+          $sortkey = sprintf('%06d.%s', $offset, $tzs);
+          $zones[$sortkey] = array($tzs, $date->format('P'));
+        }
+        catch (Exception $e) {}
+      }
+
+      ksort($zones);
+      foreach ($zones as $zone) {
+        list($tzs, $offset) = $zone;
+        $select_timezone->add('(GMT ' . $offset . ') ' . strtr($tzs, '_', ' '), $tzs);
+      }
+
+      if (is_numeric($config['timezone']))
+        timezone_name_from_abbr("", $config['timezone'] * 3600, 0);
 
       $blocks['main']['options']['timezone'] = array(
         'title' => html::label($field_id, Q(rcube_label('timezone'))),
@@ -226,17 +211,6 @@ function rcmail_user_prefs($current=null)
       );
     }
 
-    // daylight savings
-    if (!isset($no_override['dst_active'])) {
-      $field_id = 'rcmfd_dst';
-      $input_dst = new html_checkbox(array('name' => '_dst_active', 'id' => $field_id, 'value' => 1, 'disabled' => ($config['timezone'] === 'auto')));
-
-      $blocks['main']['options']['dstactive'] = array(
-        'title' => html::label($field_id, Q(rcube_label('dstactive'))),
-        'content' => $input_dst->show($config['dst_active']),
-      );
-    }
-
     // date/time formatting
     if (!isset($no_override['time_format'])) {
       $reftime = mktime(7,30,0);
@@ -275,17 +249,6 @@ function rcmail_user_prefs($current=null)
       );
     }
 
-    // show page size selection
-    if (!isset($no_override['pagesize'])) {
-      $field_id = 'rcmfd_pgsize';
-      $input_pagesize = new html_inputfield(array('name' => '_pagesize', 'id' => $field_id, 'size' => 5));
-
-      $blocks['list']['options']['pagesize'] = array(
-        'title' => html::label($field_id, Q(rcube_label('pagesize'))),
-        'content' => $input_pagesize->show($config['pagesize']),
-      );
-    }
-
     // show drop-down for available skins
     if (!isset($no_override['skin'])) {
       $skins = rcmail_get_skins();
@@ -304,6 +267,16 @@ function rcmail_user_prefs($current=null)
       }
     }
 
+    $product_name = $RCMAIL->config->get('product_name', 'Roundcube Webmail');
+    $RCMAIL->output->add_script(sprintf("%s.check_protocol_handler('%s', '#mailtoprotohandler');",
+      JS_OBJECT_NAME, JQ($product_name)), 'foot');
+
+    $blocks['browser']['options']['mailtoprotohandler'] = array(
+      'content' => html::a(array(
+        'href' => '#',
+        'id' => 'mailtoprotohandler'), Q(rcube_label('mailtoprotohandler'))),
+    );
+
     break;
 
     // Mailbox view (mail screen)
@@ -318,7 +291,7 @@ function rcmail_user_prefs($current=null)
     if (!isset($no_override['preview_pane'])) {
       $field_id = 'rcmfd_preview';
       $input_preview = new html_checkbox(array('name' => '_preview_pane', 'id' => $field_id, 'value' => 1,
-        'onchange' => JS_OBJECT_NAME.'.toggle_preview_pane(this)'));
+        'onchange' => "$('#rcmfd_preview_pane_mark_read').prop('disabled', !this.checked)"));
 
       $blocks['main']['options']['preview_pane'] = array(
         'title' => html::label($field_id, Q(rcube_label('previewpane'))),
@@ -361,8 +334,8 @@ function rcmail_user_prefs($current=null)
       );
     }
 
-    $RCMAIL->imap_connect();
-    $threading_supported = $RCMAIL->imap->get_capability('THREAD');
+    $storage             = $RCMAIL->get_storage();
+    $threading_supported = $storage->get_capability('THREAD');
 
     if (!isset($no_override['autoexpand_threads']) && $threading_supported) {
       $field_id = 'rcmfd_autoexpand_threads';
@@ -377,6 +350,19 @@ function rcmail_user_prefs($current=null)
       );
     }
 
+    // show page size selection
+    if (!isset($no_override['mail_pagesize'])) {
+      $field_id = 'rcmfd_mail_pagesize';
+      $input_pagesize = new html_inputfield(array('name' => '_mail_pagesize', 'id' => $field_id, 'size' => 5));
+
+      $size = intval($config['mail_pagesize'] ? $config['mail_pagesize'] : $config['pagesize']);
+
+      $blocks['main']['options']['pagesize'] = array(
+        'title' => html::label($field_id, Q(rcube_label('pagesize'))),
+        'content' => $input_pagesize->show($size ? $size : 50),
+      );
+    }
+
     if (!isset($no_override['keep_alive'])) {
       $field_id = 'rcmfd_keep_alive';
       $select_keep_alive = new html_select(array('name' => '_keep_alive', 'id' => $field_id));
@@ -416,7 +402,7 @@ function rcmail_user_prefs($current=null)
     if (!isset($no_override['prefer_html'])) {
       $field_id = 'rcmfd_htmlmsg';
       $input_preferhtml = new html_checkbox(array('name' => '_prefer_html', 'id' => $field_id, 'value' => 1,
-        'onchange' => JS_OBJECT_NAME.'.toggle_prefer_html(this)'));
+        'onchange' => "$('#rcmfd_show_images').prop('disabled', !this.checked).val(0)"));
 
       $blocks['main']['options']['prefer_html'] = array(
         'title' => html::label($field_id, Q(rcube_label('preferhtml'))),
@@ -430,8 +416,8 @@ function rcmail_user_prefs($current=null)
       $blocks['main']['options']['default_charset'] = array(
         'title' => html::label($field_id, Q(rcube_label('defaultcharset'))),
         'content' => $RCMAIL->output->charset_selector(array(
-         'name' => '_default_charset', 'selected' => $config['default_charset']
-         ))
+          'name' => '_default_charset', 'selected' => $config['default_charset']
+        ))
       );
     }
 
@@ -481,7 +467,6 @@ function rcmail_user_prefs($current=null)
       'sig'        => array('name' => Q(rcube_label('signatureoptions'))),
     );
 
-    // Show checkbox for HTML Editor
     if (!isset($no_override['htmleditor'])) {
       $field_id = 'rcmfd_htmleditor';
       $select_htmleditor = new html_select(array('name' => '_htmleditor', 'id' => $field_id));
@@ -564,7 +549,8 @@ function rcmail_user_prefs($current=null)
 
     if (!isset($no_override['top_posting'])) {
       $field_id = 'rcmfd_top_posting';
-      $select_replymode = new html_select(array('name' => '_top_posting', 'id' => $field_id, 'onchange' => "\$('#rcmfd_sig_above').attr('disabled',this.selectedIndex==0)"));
+      $select_replymode = new html_select(array('name' => '_top_posting', 'id' => $field_id,
+        'onchange' => "\$('#rcmfd_sig_above').attr('disabled',this.selectedIndex==0)"));
       $select_replymode->add(rcube_label('replybottomposting'), 0);
       $select_replymode->add(rcube_label('replytopposting'), 1);
 
@@ -634,6 +620,37 @@ function rcmail_user_prefs($current=null)
       );
     }
 
+    if (!isset($no_override['forward_attachment'])) {
+      $field_id = 'rcmfd_forward_attachment';
+      $select = new html_select(array('name' => '_forward_attachment', 'id' => $field_id));
+      $select->add(rcube_label('inline'), 0);
+      $select->add(rcube_label('asattachment'), 1);
+
+      $blocks['main']['options']['forward_attachment'] = array(
+        'title' => html::label($field_id, Q(rcube_label('forwardmode'))),
+        'content' => $select->show(intval($config['forward_attachment'])),
+      );
+    }
+
+    if (!isset($no_override['default_font'])) {
+      $field_id     = 'rcmfd_default_font';
+      $fonts        = rcube_fontdefs();
+      $default_font = $config['default_font'] ? $config['default_font'] : 'Verdana';
+
+      $select = '<select name="_default_font" id="'.$field_id.'">';
+      foreach ($fonts as $fname => $font)
+        $select .= '<option value="'.$fname.'"'
+          . ($fname == $default_font ? ' selected="selected"' : '')
+          . ' style=\'font-family: ' . $font . '\'>'
+          . Q($fname) . '</option>';
+      $select .= '</select>';
+
+      $blocks['main']['options']['default_font'] = array(
+        'title' => html::label($field_id, Q(rcube_label('defaultfont'))),
+        'content' => $select
+      );
+    }
+
     break;
 
 
@@ -689,6 +706,19 @@ function rcmail_user_prefs($current=null)
       );
     }
 
+    // show addressbook page size selection
+    if (!isset($no_override['addressbook_pagesize'])) {
+      $field_id = 'rcmfd_addressbook_pagesize';
+      $input_pagesize = new html_inputfield(array('name' => '_addressbook_pagesize', 'id' => $field_id, 'size' => 5));
+
+      $size = intval($config['addressbook_pagesize'] ? $config['addressbook_pagesize'] : $config['pagesize']);
+
+      $blocks['main']['options']['pagesize'] = array(
+        'title' => html::label($field_id, Q(rcube_label('pagesize'))),
+        'content' => $input_pagesize->show($size ? $size : 50),
+      );
+    }
+
     if (!isset($no_override['autocomplete_single'])) {
       $field_id = 'rcmfd_autocomplete_single';
       $checkbox = new html_checkbox(array('name' => '_autocomplete_single', 'id' => $field_id, 'value' => 1));
@@ -709,10 +739,7 @@ function rcmail_user_prefs($current=null)
     );
 
     // Configure special folders
-    if (!isset($no_override['default_imap_folders'])) {
-
-      $RCMAIL->imap_connect();
-
+    if (!isset($no_override['default_folders'])) {
       // load folders list only when needed
       if ($current) {
         $select = rcmail_mailbox_select(array(
@@ -804,6 +831,16 @@ function rcmail_user_prefs($current=null)
       );
     }
 
+    if (!isset($no_override['delete_junk'])) {
+      $field_id = 'rcmfd_delete_junk';
+      $input_delete_junk = new html_checkbox(array('name' => '_delete_junk', 'id' => $field_id, 'value' => 1));
+
+      $blocks['main']['options']['delete_junk'] = array(
+        'title' => html::label($field_id, Q(rcube_label('deletejunk'))),
+        'content' => $input_delete_junk->show($config['delete_junk']?1:0),
+      );
+    }
+
     // Trash purging on logout
     if (!isset($no_override['logout_purge'])) {
       $field_id = 'rcmfd_logout_purge';
@@ -877,7 +914,7 @@ function rcmail_folder_options($mailbox)
 {
     global $RCMAIL;
 
-    $options = $RCMAIL->imap->mailbox_info($mailbox);
+    $options = $RCMAIL->get_storage()->folder_info($mailbox);
     $options['protected'] = $options['is_root'] || ($options['special'] && $RCMAIL->config->get('protect_default_folders'));
 
     return $options;
@@ -893,13 +930,17 @@ function rcmail_folder_options($mailbox)
  */
 function rcmail_update_folder_row($name, $oldname=null, $subscribe=false, $class_name=null)
 {
-    global $IMAP, $CONFIG, $OUTPUT;
+    global $RCMAIL, $OUTPUT;
+
+    $default_folders = (array) $RCMAIL->config->get('default_folders');
+    $protect_folders = $RCMAIL->config->get('protect_default_folders');
 
-    $delimiter    = $IMAP->get_hierarchy_delimiter();
+    $storage      = $RCMAIL->get_storage();
+    $delimiter    = $storage->get_hierarchy_delimiter();
     $name_utf8    = rcube_charset_convert($name, 'UTF7-IMAP');
-    $protected    = ($CONFIG['protect_default_folders'] == true && in_array($name, $CONFIG['default_imap_folders']));
+    $protected    = $protect_folders && in_array($name, $default_folders);
 
-    $foldersplit  = explode($delimiter, $IMAP->mod_mailbox($name));
+    $foldersplit  = explode($delimiter, $storage->mod_folder($name));
     $level        = count($foldersplit) - 1;
     $display_name = str_repeat('&nbsp;&nbsp;&nbsp;&nbsp;', $level)
         . Q($protected ? rcmail_localize_foldername($name) : rcube_charset_convert($foldersplit[$level], 'UTF7-IMAP'));
index 857ada061aef5df20936f9d702285701542c8179..74897496735e91191399bd2d0f7fad07c4829163 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2007, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Manage identities of a user account                                 |
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: identities.inc 4410 2011-01-12 18:25:02Z thomasb $
+ $Id$
 
 */
 
 define('IDENTITIES_LEVEL', intval($RCMAIL->config->get('identities_level', 0)));
 
 $OUTPUT->set_pagetitle(rcube_label('identities'));
-
 $OUTPUT->include_script('list.js');
 
 
@@ -43,5 +45,6 @@ function rcmail_identity_frame($attrib)
 
 $OUTPUT->add_handler('identityframe', 'rcmail_identity_frame');
 $OUTPUT->set_env('identities_level', IDENTITIES_LEVEL);
+$OUTPUT->add_label('deleteidentityconfirm');
 
 $OUTPUT->send('identities');
index 7af2c316e5355747394309816c0a7dd6d4d91d1b..84a4a44eb7e875b6f719c2e6cc07f9d36a243a85 100644 (file)
@@ -1,12 +1,15 @@
 <?php
 
-/*
+/**
  +-----------------------------------------------------------------------+
  | program/steps/settings/save_folder.inc                                |
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
- | Copyright (C) 2005-2009, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2005-2012, 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:                                                              |
  |   Provide functionality to create/edit a folder                       |
  | Author: Aleksander Machniak <alec@alec.pl>                            |
  +-----------------------------------------------------------------------+
 
- $Id: save_folder.inc 5096 2011-08-19 08:07:05Z alec $
+ $Id$
 
 */
 
 // WARNING: folder names in UI are encoded with RCMAIL_CHARSET
 
 // init IMAP connection
-$RCMAIL->imap_connect();
+$STORAGE = $RCMAIL->get_storage();
 
 
 $name = trim(get_input_value('_name', RCUBE_INPUT_POST, true));
@@ -33,7 +36,7 @@ $name_imap = rcube_charset_convert($name, RCMAIL_CHARSET, 'UTF7-IMAP');
 $old_imap  = rcube_charset_convert($old, RCMAIL_CHARSET, 'UTF7-IMAP');
 // $path is in UTF7-IMAP already
 
-$delimiter = $IMAP->get_hierarchy_delimiter();
+$delimiter = $STORAGE->get_hierarchy_delimiter();
 $options = strlen($old_imap) ? rcmail_folder_options($old_imap) : array();
 
 // Folder name checks
@@ -66,21 +69,24 @@ else {
         $name_imap = $path . $delimiter . $name_imap;
     }
     else {
-        $name_imap = $RCMAIL->imap->mod_mailbox($name_imap, 'in');
+        $name_imap = $STORAGE->mod_folder($name_imap, 'in');
     }
 }
 
 // Check access rights to the parent folder
 if (!$error && strlen($path) && (!strlen($old_imap) || $old_imap != $name_imap)) {
-    $parent_opts = $RCMAIL->imap->mailbox_info($path);
+    $parent_opts = $STORAGE->folder_info($path);
     if ($parent_opts['namespace'] != 'personal'
-        && (empty($parent_opts['rights']) || !preg_match('/[ck]/', implode($parent_opts)))
+        && (empty($parent_opts['rights']) || !preg_match('/[ck]/', implode($parent_opts['rights'])))
     ) {
         $error = rcube_label('parentnotwritable');
     }
 }
 
-if (!$error) {
+if ($error) {
+    $OUTPUT->command('display_message', $error, 'error');
+}
+else {
     $folder['name']     = $name_imap;
     $folder['oldname']  = $old_imap;
     $folder['class']    = '';
@@ -103,7 +109,7 @@ if (!$error && !strlen($old)) {
     $folder = $plugin['record'];
 
     if (!$plugin['abort']) {
-        $created = $IMAP->create_mailbox($folder['name'], $folder['subscribe']);
+        $created = $STORAGE->create_folder($folder['name'], $folder['subscribe']);
     }
     else {
         $created = $plugin['result'];
@@ -143,7 +149,7 @@ else if (!$error) {
 
     if (!$plugin['abort']) {
         if ($rename) {
-            $updated = $RCMAIL->imap->rename_mailbox($folder['oldname'], $folder['name']);
+            $updated = $STORAGE->rename_folder($folder['oldname'], $folder['name']);
         }
         else {
             $updated = true;
@@ -167,7 +173,7 @@ 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)] = true;
                     }
                 }
             }
@@ -180,7 +186,12 @@ else if (!$error) {
         }
 
         $OUTPUT->show_message('folderupdated', 'confirmation');
+
         if ($rename) {
+            // #1488692: update session
+            if ($_SESSION['mbox'] === $folder['oldname']) {
+                $_SESSION['mbox'] = $folder['name'];
+            }
             rcmail_update_folder_row($folder['name'], $folder['oldname'], $folder['subscribe'], $folder['class']);
             $OUTPUT->send('iframe');
         }
index e2318f110dfbc70e3c61ad611abad042b594151c..c488196ad5eceb9022adfdf61d5ce19b5fdda033 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2009, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Save an identity record or to add a new one                         |
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: save_identity.inc 4829 2011-06-02 12:26:59Z alec $
+ $Id$
 
 */
 
 define('IDENTITIES_LEVEL', intval($RCMAIL->config->get('identities_level', 0)));
 
 $a_save_cols = array('name', 'email', 'organization', 'reply-to', 'bcc', 'standard', 'signature', 'html_signature');
-$a_html_cols = array('signature', 'name', 'organization');
 $a_boolean_cols = array('standard', 'html_signature');
 $updated = $default_id = false;
 
@@ -40,7 +42,7 @@ foreach ($a_save_cols as $col)
 {
   $fname = '_'.$col;
   if (isset($_POST[$fname]))
-    $save_data[$col] = get_input_value($fname, RCUBE_INPUT_POST, in_array($col, $a_html_cols));
+    $save_data[$col] = get_input_value($fname, RCUBE_INPUT_POST, true);
 }
 
 // set "off" values for checkboxes that were not checked, and therefore
@@ -57,15 +59,18 @@ if (IDENTITIES_LEVEL == 1 || IDENTITIES_LEVEL == 3)
   unset($save_data['email']);
 
 // Validate e-mail addresses
-foreach (array('email', 'reply-to', 'bcc') as $item) {
-  if ($email = $save_data[$item]) {
-    $ascii_email = rcube_idn_to_ascii($email);
-    if (!check_email($ascii_email)) {
-      // show error message
-      $OUTPUT->show_message('emailformaterror', 'error', array('email' => $email), false);
-      rcmail_overwrite_action('edit-identity');
-      return;
-    }
+$email_checks = array(rcube_idn_to_ascii($save_data['email']));
+foreach (array('reply-to', 'bcc') as $item) {
+  foreach (rcube_mime::decode_address_list($save_data[$item], null, false) as $rcpt)
+    $email_checks[] = rcube_idn_to_ascii($rcpt['mailto']);
+}
+
+foreach ($email_checks as $email) {
+  if ($email && !check_email($email)) {
+    // show error message
+    $OUTPUT->show_message('emailformaterror', 'error', array('email' => rcube_idn_to_utf8($email)), false);
+    rcmail_overwrite_action('edit-identity');
+    return;
   }
 }
 
@@ -78,13 +83,8 @@ if ($_POST['_iid'])
 
   if ($save_data['email'])
     $save_data['email'] = rcube_idn_to_ascii($save_data['email']);
-  if ($save_data['bcc'])
-    $save_data['bcc'] = rcube_idn_to_ascii($save_data['bcc']);
-  if ($save_data['reply-to'])
-    $save_data['reply-to'] = rcube_idn_to_ascii($save_data['reply-to']);
-
   if (!$plugin['abort'])
-    $updated = $USER->update_identity($iid, $save_data);
+    $updated = $RCMAIL->user->update_identity($iid, $save_data);
   else
     $updated = $plugin['result'];
 
@@ -96,7 +96,7 @@ if ($_POST['_iid'])
 
     if ($_POST['_framed']) {
       // update the changed col in list
-      // ...
+      $OUTPUT->command('parent.update_identity_row', $iid, Q(trim($save_data['name'] . ' <' . rcube_idn_to_utf8($save_data['email']) .'>')));
     }
   }
   else {
@@ -117,14 +117,10 @@ else if (IDENTITIES_LEVEL < 2)
   $save_data = $plugin['record'];
 
   if ($save_data['email'])
-    $save_data['email']    = rcube_idn_to_ascii($save_data['email']);
-  if ($save_data['bcc'])
-    $save_data['bcc']      = rcube_idn_to_ascii($save_data['bcc']);
-  if ($save_data['reply-to'])
-    $save_data['reply-to'] = rcube_idn_to_ascii($save_data['reply-to']);
+    $save_data['email'] = rcube_idn_to_ascii($save_data['email']);
 
   if (!$plugin['abort'])
-    $insert_id = $save_data['email'] ? $USER->insert_identity($save_data) : null;
+    $insert_id = $save_data['email'] ? $RCMAIL->user->insert_identity($save_data) : null;
   else
     $insert_id = $plugin['result'];
 
@@ -135,6 +131,11 @@ else if (IDENTITIES_LEVEL < 2)
 
     if (!empty($_POST['_standard']))
       $default_id = $insert_id;
+
+    if ($_POST['_framed']) {
+      // add a new row to the list
+      $OUTPUT->command('parent.update_identity_row', $insert_id, Q(trim($save_data['name'] . ' <' . rcube_idn_to_utf8($save_data['email']) .'>')), true);
+    }
   }
   else {
     // show error message
@@ -149,7 +150,11 @@ else
 
 // mark all other identities as 'not-default'
 if ($default_id)
-  $USER->set_default($default_id);
+  $RCMAIL->user->set_default($default_id);
 
 // go to next step
-rcmail_overwrite_action('identities');
+if (!empty($_REQUEST['_framed'])) {
+  rcmail_overwrite_action('edit-identity');
+}
+else
+  rcmail_overwrite_action('identities');
index 9e58069cc626ef79fb71687cdfce0f6c98eb62b1..cacc359e95dc45c1eeb0af43ac762b71a425a110 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2009, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Save user preferences to DB and to the current session              |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: save_prefs.inc 5873 2012-02-11 13:50:04Z thomasb $
+ $Id$
 
 */
 
@@ -29,15 +32,13 @@ switch ($CURR_SECTION)
   case 'general':
     $a_user_prefs = array(
       'language'     => isset($_POST['_language']) ? get_input_value('_language', RCUBE_INPUT_POST) : $CONFIG['language'],
-      'timezone'     => isset($_POST['_timezone']) ? (is_numeric($_POST['_timezone']) ? floatval($_POST['_timezone']) : get_input_value('_timezone', RCUBE_INPUT_POST)) : $CONFIG['timezone'],
-      'dst_active'   => isset($_POST['_dst_active']) ? TRUE : FALSE,
-      'pagesize'     => is_numeric($_POST['_pagesize']) ? max(2, intval($_POST['_pagesize'])) : $CONFIG['pagesize'],
+      'timezone'     => isset($_POST['_timezone']) ? get_input_value('_timezone', RCUBE_INPUT_POST) : $CONFIG['timezone'],
       'date_format'  => isset($_POST['_date_format']) ? get_input_value('_date_format', RCUBE_INPUT_POST) : $CONFIG['date_format'],
       'time_format'  => isset($_POST['_time_format']) ? get_input_value('_time_format', RCUBE_INPUT_POST) : ($CONFIG['time_format'] ? $CONFIG['time_format'] : 'H:i'),
       'prettydate'   => isset($_POST['_pretty_date']) ? TRUE : FALSE,
       'skin'        => isset($_POST['_skin']) ? get_input_value('_skin', RCUBE_INPUT_POST) : $CONFIG['skin'],
     );
-    
+
     // compose derived date/time format strings
     if ((isset($_POST['_date_format']) || isset($_POST['_time_format'])) && $a_user_prefs['date_format'] && $a_user_prefs['time_format']) {
       $a_user_prefs['date_short'] = 'D ' . $a_user_prefs['time_format'];
@@ -54,6 +55,7 @@ switch ($CURR_SECTION)
       'mdn_requests'         => isset($_POST['_mdn_requests']) ? intval($_POST['_mdn_requests']) : 0,
       'keep_alive'           => isset($_POST['_keep_alive']) ? intval($_POST['_keep_alive'])*60 : $CONFIG['keep_alive'],
       'check_all_folders'    => isset($_POST['_check_all_folders']) ? TRUE : FALSE,
+      'mail_pagesize'        => is_numeric($_POST['_mail_pagesize']) ? max(2, intval($_POST['_mail_pagesize'])) : $CONFIG['mail_pagesize'],
     );
 
   break;
@@ -86,16 +88,19 @@ switch ($CURR_SECTION)
       'top_posting'        => !empty($_POST['_top_posting']),
       'strip_existing_sig' => isset($_POST['_strip_existing_sig']),
       'sig_above'          => !empty($_POST['_sig_above']) && !empty($_POST['_top_posting']),
+      'default_font'       => get_input_value('_default_font', RCUBE_INPUT_POST),
+      'forward_attachment' => !empty($_POST['_forward_attachment']),
     );
 
   break;
 
   case 'addressbook':
     $a_user_prefs = array(
-      'default_addressbook' => get_input_value('_default_addressbook', RCUBE_INPUT_POST, true),
-      'autocomplete_single' => isset($_POST['_autocomplete_single']) ? TRUE : FALSE,
+      'default_addressbook'  => get_input_value('_default_addressbook', RCUBE_INPUT_POST, true),
+      'autocomplete_single'  => isset($_POST['_autocomplete_single']) ? TRUE : FALSE,
       'addressbook_sort_col' => get_input_value('_addressbook_sort_col', RCUBE_INPUT_POST),
       'addressbook_name_listing' => intval(get_input_value('_addressbook_name_listing', RCUBE_INPUT_POST)),
+      'addressbook_pagesize' => is_numeric($_POST['_addressbook_pagesize']) ? max(2, intval($_POST['_addressbook_pagesize'])) : $CONFIG['addressbook_pagesize'],
     );
 
   break;
@@ -106,6 +111,7 @@ switch ($CURR_SECTION)
       'skip_deleted'      => isset($_POST['_skip_deleted']) ? TRUE : FALSE,
       'flag_for_deletion' => isset($_POST['_flag_for_deletion']) ? TRUE : FALSE,
       'delete_always'    => isset($_POST['_delete_always']) ? TRUE : FALSE,
+      'delete_junk'      => isset($_POST['_delete_junk']) ? TRUE : FALSE,
       'logout_purge'      => isset($_POST['_logout_purge']) ? TRUE : FALSE,
       'logout_expunge'    => isset($_POST['_logout_expunge']) ? TRUE : FALSE,
     );
@@ -150,13 +156,6 @@ switch ($CURR_SECTION)
     else if ($RCMAIL->config->get('skin') != $a_user_prefs['skin'])
       $OUTPUT->command('reload', 500);
 
-    // force min size
-    if ($a_user_prefs['pagesize'] < 1)
-      $a_user_prefs['pagesize'] = 10;
-
-    if (isset($CONFIG['max_pagesize']) && ($a_user_prefs['pagesize'] > $CONFIG['max_pagesize']))
-      $a_user_prefs['pagesize'] = (int) $CONFIG['max_pagesize'];
-
     $a_user_prefs['timezone'] = (string) $a_user_prefs['timezone'];
 
   break;
@@ -169,18 +168,35 @@ switch ($CURR_SECTION)
         $a_user_prefs['keep_alive'] = min($CONFIG['session_lifetime']*60, $a_user_prefs['keep_alive']);
     }
 
+    // force min size
+    if ($a_user_prefs['mail_pagesize'] < 1)
+      $a_user_prefs['mail_pagesize'] = 10;
+
+    if (isset($CONFIG['max_pagesize']) && ($a_user_prefs['mail_pagesize'] > $CONFIG['max_pagesize']))
+      $a_user_prefs['mail_pagesize'] = (int) $CONFIG['max_pagesize'];
+
+  break;
+  case 'addressbook':
+
+    // force min size
+    if ($a_user_prefs['addressbook_pagesize'] < 1)
+      $a_user_prefs['addressbook_pagesize'] = 10;
+
+    if (isset($CONFIG['max_pagesize']) && ($a_user_prefs['addressbook_pagesize'] > $CONFIG['max_pagesize']))
+      $a_user_prefs['addressbook_pagesize'] = (int) $CONFIG['max_pagesize'];
+
   break;
   case 'folders':
 
-    // special handling for 'default_imap_folders'
-    if (in_array('default_imap_folders', (array)$CONFIG['dont_override'])) {
+    // special handling for 'default_folders'
+    if (in_array('default_folders', (array)$CONFIG['dont_override'])) {
       foreach (array('drafts_mbox','sent_mbox','junk_mbox','trash_mbox') as $p)
         $a_user_prefs[$p] = $CONFIG[$p];
     } else {
-      $a_user_prefs['default_imap_folders'] = array('INBOX');
+      $a_user_prefs['default_folders'] = array('INBOX');
       foreach (array('drafts_mbox','sent_mbox','junk_mbox','trash_mbox') as $p) {
         if ($a_user_prefs[$p])
-          $a_user_prefs['default_imap_folders'][] = $a_user_prefs[$p];
+          $a_user_prefs['default_folders'][] = $a_user_prefs[$p];
       }
     }
 
@@ -189,7 +205,7 @@ switch ($CURR_SECTION)
 
 // Save preferences
 if (!$plugin['abort'])
-  $saved = $USER->save_prefs($a_user_prefs);
+  $saved = $RCMAIL->user->save_prefs($a_user_prefs);
 else
   $saved = $plugin['result'];
 
index 98e9d20516cc920d254953736ad5423e53d3d466..13440600cf3cfec309b06666e6635af34a8de4a8 100644 (file)
@@ -5,8 +5,11 @@
  | program/steps/utils/error.inc                                         |
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
- | Copyright (C) 2005-2011, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ | Copyright (C) 2005-2012, 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:                                                              |
  |   Display error message page                                          |
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: error.inc 4685 2011-04-22 17:48:58Z alec $
+ $Id$
 
 */
 
 
 // browser is not compatible with this application
 if ($ERROR_CODE==409) {
-  $user_agent = $GLOBALS['HTTP_SERVER_VARS']['HTTP_USER_AGENT'];
+  $user_agent = htmlentities($_SERVER['HTTP_USER_AGENT']);
   $__error_title = 'Your browser does not suit the requirements for this application';
   $__error_text = <<<EOF
 <i>Supported browsers:</i><br />
-&raquo; &nbsp;Netscape 7+<br />
-&raquo; &nbsp;Microsoft Internet Explorer 6+<br />
-&raquo; &nbsp;Mozilla Firefox 1.0+<br />
-&raquo; &nbsp;Opera 8.0+<br />
-&raquo; &nbsp;Safari 1.2+<br />
+&raquo; &nbsp;Microsoft Internet Explorer 7+<br />
+&raquo; &nbsp;Mozilla Firefox 3+<br />
+&raquo; &nbsp;Chrome 10+<br />
+&raquo; &nbsp;Safari 4+<br />
+&raquo; &nbsp;Opera 8+<br />
 <br />
 &raquo; &nbsp;JavaScript enabled<br />
 &raquo; &nbsp;Support for XMLHTTPRequest<br />
index fdb0787f4026adefe8b1308f3fdd739b5bea7136..811957ae4777f5b4fa51c5dd25124589958abf94 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2010, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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 HTML message to plain text                                  |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: html2text.inc 4410 2011-01-12 18:25:02Z thomasb $
+ $Id$
 
 */
 
index fd366a3aa2abf892726a0228da7093ef90c51042..3e85c0ae990744827e16e570b4d49a9aea93d48c 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2010, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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 rows from cache tables                                       |
@@ -15,7 +18,7 @@
  | Author: Dennis P. Nikolaenko <dennis@nikolaenko.ru>                   |
  +-----------------------------------------------------------------------+
 
- $Id: killcache.inc 5578 2011-12-09 07:23:04Z alec $
+ $Id$
 
 */
 
index af6d60d5e9577fbc4df0e2395684b158cb533d98..d635f979d01a7c80ba76e1fb0649652576814cae 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2007-2011, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Modify CSS source from a URL                                        |
@@ -15,7 +18,7 @@
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
 
- $Id: modcss.inc 4488 2011-02-03 21:12:35Z thomasb $
+ $Id$
 
 */
 
index 49e99e0bbd3ac551a163585a3c8c4d5ad775410f..2c60f6d4e9eba8ae2323f3443fbdbf7dbf3acd7f 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2010, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Save preferences setting in database                                |
@@ -15,7 +18,7 @@
  | Author: Aleksander Machniak <alec@alec.pl>                            |
  +-----------------------------------------------------------------------+
 
- $Id: save_pref.inc 4410 2011-01-12 18:25:02Z thomasb $
+ $Id$
 
 */
 
index 65623ecb558cf266ac91309b441cefe8a26c9836..cf341de3104822bf040c43d66b5579b0bf60006e 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2011, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Invoke the configured or default spell checking engine.             |
@@ -15,7 +18,7 @@
  | Author: Kris Steinhoff <steinhof@umich.edu>                           |
  +-----------------------------------------------------------------------+
 
- $Id: spell.inc 5181 2011-09-06 13:39:45Z alec $
+ $Id$
 
 */
 
index 4567e13ba83a227205067c5d52d39dcb36d56c13..57ab9c69a08168bb6d11a53556092f024339998d 100644 (file)
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2005-2011, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | 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:                                                              |
  |   Spellchecker for TinyMCE                                            |
@@ -15,7 +18,7 @@
  | Author: Aleksander Machniak <alec@alec.pl>                            |
  +-----------------------------------------------------------------------+
 
- $Id: spell_html.inc 5181 2011-09-06 13:39:45Z alec $
+ $Id$
 
 */
 
diff --git a/skins/classic/README b/skins/classic/README
new file mode 100644 (file)
index 0000000..ba690d7
--- /dev/null
@@ -0,0 +1,23 @@
+ROUNDCUBE WEBMAIL DEFAULT SKIN
+==============================
+
+This skin package contains the current development theme of the Roundcube
+Webmail software. It can be used, modified and redistributed according to
+the terms described in the LICENSE section.
+
+For information about building or modifiying Roundcube skins please visit
+http://trac.roundcube.net/wiki/Doc_Skins
+
+The theme uses icons originally designed by Stephen Horlander and Kevin Gerich
+for Mozilla.org. In case of redistribution giving credit to these artwork
+creators is mandatory.
+
+
+LICENSE
+-------
+The contents of this folder are subject to the Creative Commons
+Attribution-ShareAlike License. It is allowed to copy, distribute,
+transmit and to adapt the work by keeping credits to the original
+autors in the README file.
+See http://creativecommons.org/licenses/by-sa/3.0/ for details.
+
diff --git a/skins/classic/addressbook.css b/skins/classic/addressbook.css
new file mode 100644 (file)
index 0000000..ad7aeff
--- /dev/null
@@ -0,0 +1,406 @@
+/***** Roundcube|Mail address book task styles *****/
+
+#abooktoolbar
+{
+  position: absolute;
+  top: 45px;
+  left: 225px;
+  height: 35px;
+}
+
+#abooktoolbar a
+{
+  padding-right: 10px;
+}
+
+#abooktoolbar a.button,
+#abooktoolbar a.buttonPas,
+#abooktoolbar span.separator {
+  display: block;
+  float: left;
+  width: 32px;
+  height: 32px;
+  padding: 0;
+  margin-right: 10px;
+  overflow: hidden;
+  background: url(images/abook_toolbar.png) 0 0 no-repeat transparent;
+  opacity: 0.99; /* this is needed to make buttons appear correctly in Chrome */
+}
+
+#abooktoolbar a.buttonPas {
+  opacity: 0.35;
+}
+
+#abooktoolbar a.addcontactSel {
+  background-position: 0 -32px;
+}
+
+#abooktoolbar a.compose {
+  background-position: -32px 0;
+}
+
+#abooktoolbar a.composeSel {
+  background-position: -32px -32px;
+}
+
+#abooktoolbar a.delete {
+  background-position: -64px 0;
+}
+
+#abooktoolbar a.deleteSel {
+  background-position: -64px -32px;
+}
+
+#abooktoolbar a.import {
+  background-position: -96px 0;
+}
+
+#abooktoolbar a.importSel {
+  background-position: -96px -32px;
+}
+
+#abooktoolbar a.export {
+  background-position: -128px 0;
+}
+
+#abooktoolbar a.exportSel {
+  background-position: -128px -32px;
+}
+
+#abooktoolbar span.separator {
+  width: 5px;
+  background-position: -162px 0;
+}
+
+#abooktoolbar a.search {
+  background-position: -170px 0;
+}
+
+#abooktoolbar a.searchSel {
+  background-position: -170px -32px;
+}
+
+#abookcountbar
+{
+  margin-top: 4px;
+  margin-left: 4px;
+  min-width: 250px;
+}
+
+#addressscreen
+{
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 205px;
+}
+
+#directorylistbox
+{
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  left: 0;
+  width: 195px;
+  border: 1px solid #999999;
+  background-color: #F9F9F9;
+  overflow: hidden;
+}
+
+#directorylistbox input
+{
+  margin: 0px;
+  font-size: 11px;
+  width: 90%;
+}
+
+#addresslist
+{
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  border: 1px solid #999999;
+  background-color: #F9F9F9;
+  overflow: hidden;
+}
+
+#contactgroupslist
+{
+  border-top: 1px solid #999;
+}
+
+#addresslist
+{
+  left: 0px;
+  width: 280px;
+}
+
+#directorylist
+{
+  list-style: none;
+  margin: 0;
+  padding: 0;
+  background-color: #FFFFFF;
+}
+
+#directorylist li
+{
+  display: block;
+  font-size: 11px;
+  background: url(images/icons/folders.png) 5px -108px no-repeat;
+  border-bottom: 1px solid #EBEBEB;
+  white-space: nowrap;
+}
+
+#directorylist li a
+{
+  cursor: default;
+  display: block;
+  padding-left: 25px;
+  padding-top: 2px;
+  padding-bottom: 2px;
+  text-decoration: none;
+  white-space: nowrap;
+}
+
+#directorylist li.contactgroup
+{
+  padding-left: 15px;
+  background-position: 20px -143px;
+}
+
+#directorylist li.contactsearch
+{
+  background-position: 6px -162px;
+}
+
+#directorylist li.selected
+{
+  background-color: #929292;
+  border-bottom: 1px solid #898989;
+}
+
+#directorylist li.selected a
+{
+  color: #FFF;
+  font-weight: bold;
+}
+
+#directorylist li.droptarget
+{
+  background-color: #FFFFA6;
+}
+
+#contacts-table
+{
+  width: 100%;
+  table-layout: fixed;
+}
+
+#contacts-table tbody td
+{
+  cursor: default;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+}
+
+#contacts-box
+{
+  position: absolute;
+  top: 0px;
+  left: 290px;
+  right: 0px;
+  bottom: 0px;
+  border: 1px solid #999999;
+  overflow: hidden;
+}
+
+body.iframe,
+#contact-frame
+{
+  background-color: #F2F2F2;
+  border: none;
+  min-height: 100%; /* Chrome 14 bug */
+}
+
+#contacttabs
+{
+       position: relative;
+       padding-bottom: 12px;
+}
+
+#contacttabs div.tabsbar {
+       top: 0;
+       left: 2px;
+}
+
+#contacttabs fieldset.tabbed {
+       position: relative;
+       top: 22px;
+       min-height: 5em;
+}
+
+#contacthead
+{
+       margin-bottom: 1em;
+       border: 0;
+       padding: 0;
+}
+
+#contacthead .names span.namefield,
+#contacthead .names input
+{
+       font-size: 140%;
+}
+
+#contacthead .displayname span.namefield
+{
+       font-size: 120%;
+}
+
+#contacthead span.nickname:before,
+#contacthead span.nickname:after,
+#contacthead input.ff_nickname:before,
+#contacthead input.ff_nickname:after
+{
+       content: '"';
+}
+
+#contacthead input
+{
+       margin-right: 6px;
+       margin-bottom: 0.2em;
+}
+
+#contacthead .names input,
+#contacthead .addnames input
+{
+       width: 180px;
+}
+
+#contacthead input.ff_prefix,
+#contacthead input.ff_suffix
+{
+       width: 90px;
+}
+
+#contacthead .addnames input.ff_name
+{
+       width: 374px;
+}
+
+#contactphoto
+{
+       float: right;
+       width: 60px;
+       margin-left: 3em;
+       margin-right: 4px;
+}
+
+#contactpic
+{
+       width: 60px;
+       min-height: 60px;
+       border: 1px solid #ccc;
+       background: white;
+}
+
+#contactpic img {
+       width: 60px;
+}
+
+#contactphoto .formlinks
+{
+       margin-top: 0.5em;
+       text-align: center;
+}
+
+fieldset.contactfieldgroup
+{
+       border: 0;
+       margin: 0.5em 0;
+       padding: 0.2em 2px;
+}
+
+fieldset.contactfieldgroupmulti
+{
+       padding: 0.5em 2px;
+}
+
+fieldset.contactfieldgroup legend
+{
+       font-size: 0.9em;
+}
+
+.contactfieldgroup .row
+{
+       position: relative;
+       margin: 0.2em 0;
+}
+
+.contactfieldgroup .contactfieldlabel
+{
+       position: absolute;
+       top: 0;
+       left: 2px;
+       width: 110px;
+       white-space: nowrap;
+       overflow: hidden;
+       text-overflow: ellipsis;
+       color: #666;
+       font-weight: bold;
+}
+
+.contactfieldgroup .contactfieldlabel select
+{
+       width: 100%;
+       background: none;
+       border: 0;
+       color: #666;
+       font-weight: bold;
+       padding-left: 0;
+}
+
+.contactfieldgroup .contactfieldcontent
+{
+       padding-left: 120px;
+       min-height: 1em;
+       line-height: 1.3em;
+}
+
+.contactfieldgroup .contactfield {
+       line-height: 1.3em;
+}
+
+.contactcontrolleraddress .contactfieldcontent input {
+       margin-bottom: 0.1em;
+}
+
+.contactfieldcontent .contactfieldbutton {
+       vertical-align: middle;
+       margin-left: 0.5em;
+}
+
+#upload-form
+{
+       padding: 6px;
+}
+
+#upload-form div
+{
+       padding: 2px;
+}
+
+#sourcename
+{
+  color: #666;
+  font-size: 10px;
+  margin: -5px 0 8px 2px;
+}
+
+#contact-title
+{
+  /* fixes issue where tabs were overlapping box title when scrolling */
+  z-index: 10;
+}
diff --git a/skins/classic/common.css b/skins/classic/common.css
new file mode 100644 (file)
index 0000000..5c94b67
--- /dev/null
@@ -0,0 +1,977 @@
+/***** Roundcube|Mail basic styles *****/
+
+body
+{
+  font-family: "Lucida Grande", Verdana, Arial, Helvetica, sans-serif;
+  margin: 8px;
+  background-color: #F6F6F6;
+  color: #000;
+  font-size: 12px;
+}
+
+body.iframe
+{
+  margin: 20px 0 0 0;
+  background-color: #FFF;
+}
+
+body.extwin
+{
+  margin: 10px;
+}
+
+td, th, div, p, select, input, textarea
+{
+  font-size: 12px;
+  font-family: inherit;
+}
+
+th
+{
+  font-weight: normal;
+}
+
+h3
+{
+  font-size: 18px;
+}
+
+a, a:active, a:visited
+{
+  color: #000;
+  outline: none;
+}
+
+a.button, a.button:visited, a.tab, a.tab:visited, a.axislist
+{
+  color: #000;
+  text-decoration: none;
+}
+
+a.tab
+{
+  width: 80px;
+  display: block;
+  text-align: center;
+}
+
+hr
+{
+  height: 1px;
+  background-color: #666;
+  border-style: none;
+}
+
+input[type="text"],
+input[type="button"],
+input[type="password"],
+textarea
+{
+  border: 1px solid #666;
+  color: #333;
+  background-color: #FFF;
+}
+
+input, textarea
+{
+  color: black;
+  padding: 1px 3px;
+}
+
+input.placeholder,
+textarea.placeholder,
+input:-moz-placeholder,
+textarea:-moz-placeholder
+{
+  color: #aaa;
+}
+
+input.button
+{
+  height: 20px;
+  color: #333333;
+  font-size: 12px;
+  padding-left: 8px;
+  padding-right: 8px;
+  background: url(images/buttons/bg.gif) repeat-x #f0f0f0;
+  border: 1px solid #a4a4a4;
+}
+
+input.button:hover
+{
+  color: black;
+}
+
+input.button[disabled],
+input.button[disabled]:hover
+{
+  color: #aaa;
+  border-color: #ccc;
+}
+
+input.mainaction
+{
+  font-weight: bold;
+  border: 1px solid #999;
+}
+
+img
+{
+  border: 0;
+}
+
+.alttext
+{
+  font-size: 11px;
+}
+
+.hint
+{
+  color: #666;
+  font-size: 11px;
+}
+
+.formlinks a,
+.formlinks a:visited
+{
+  color: #CC0000;
+  font-size: 11px;
+  text-decoration: none;
+}
+
+.formlinks a.disabled,
+.formlinks a.disabled:visited
+{
+  color: #999999;
+}
+
+/** common user interface objects */
+
+#mainscreen
+{
+  position: absolute;
+  top: 85px;
+  right: 20px;
+  bottom: 20px;
+  left: 20px;
+}
+
+body > #logo
+{
+  margin-left: 12px;
+  cursor: pointer;
+}
+
+#taskbar
+{
+  position: absolute;
+  top: 0px;
+  right: 0px;
+  height: 24px;
+  left: 250px;
+  background: url(images/taskbar.png) top right no-repeat;
+  padding: 10px 6px 5px 0px;
+  text-align: right;
+  white-space: nowrap;
+  z-index: 2;
+}
+
+#taskbar a
+{
+  font-size: 11px;
+  color: #666666;
+  text-decoration: none;
+  padding: 6px 12px 6px 26px;
+  background: url(images/taskicons.gif) no-repeat;
+}
+
+#taskbar a:hover
+{
+  color: #333333;
+}
+
+#taskbar a.button-mail
+{
+  background-position: 0 0;
+}
+
+#taskbar a.button-addressbook
+{
+  background-position: 0 -25px;
+}
+
+#taskbar a.button-settings
+{
+  background-position: 0 -50px;
+}
+
+#taskbar a.button-logout
+{
+  background-position: 0 -75px;
+}
+
+body > #message
+{
+  position: absolute;
+  display: none;
+  top: -1px;
+  margin-left: -225px;
+  left: 50%;
+  z-index: 5000;
+  opacity: 0.85;
+}
+
+body > #message div
+{
+  width: 400px;
+  margin: 0px;
+  min-height: 22px;
+  padding: 8px 10px 8px 46px;
+}
+
+body > #message div.notice,
+body > #messagebody .part-notice,
+#message-objects div.notice
+{
+  background: url(images/display/icons.png) 6px 3px no-repeat;
+  background-color: #F7FDCB;
+  border: 1px solid #C2D071;
+}
+
+body > #message div.error,
+body > #message div.warning,
+#message-objects div.warning,
+#message-objects div.error
+{
+  background: url(images/display/icons.png) 6px -97px no-repeat;
+  background-color: #EF9398;
+  border: 1px solid #DC5757;
+}
+
+body > #message div.confirmation,
+#message-objects div.confirmation
+{
+  background: url(images/display/icons.png) 6px -47px no-repeat;
+  background-color: #A6EF7B;
+  border: 1px solid #76C83F;
+}
+
+body > #message div.loading,
+#message-objects div.loading
+{
+  background: url(images/display/loading.gif) 6px 3px no-repeat;
+  background-color: #EBEBEB;
+  border: 1px solid #CCCCCC;
+}
+
+body > #message a
+{
+  cursor: pointer;
+  text-decoration: underline;
+}
+
+.box
+{
+  border: 1px solid #999;
+}
+
+.boxtitle
+{
+  height: 12px !important;
+  padding: 2px 10px 5px 5px;
+  border-bottom: 1px solid #999;
+  color: #333;
+  font-size: 11px;
+  font-weight: bold;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+  white-space: nowrap;
+  background: url(images/listheader.gif) top left repeat-x #CCC;
+}
+
+.boxtitle .rightalign
+{
+  float: right;
+}
+
+body.iframe .boxtitle
+{
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100%;
+}
+
+.boxcontent
+{
+  padding: 15px 10px 10px 10px;
+  background-color: #F2F2F2;
+}
+
+.boxcontent table td.title
+{
+  color: #666;
+  padding-right: 10px;
+}
+
+.boxlistcontent
+{
+  position: absolute;
+  top: 20px;
+  bottom: 22px;
+  left: 0;
+  right: 0;
+  width: 100%;
+  overflow-y: auto;
+  overflow-x: hidden;
+}
+
+.boxsubject
+{
+  position: absolute;
+  top: 0px;
+  left: 0px;
+  right: 0px;
+  overflow: hidden;
+  height: 22px;
+  border-bottom: 1px solid #999;
+  background: url(images/listheader.gif) top left repeat-x #CCC;
+}
+
+.boxfooter
+{
+  position: absolute;
+  bottom: 0px;
+  left: 0px;
+  right: 0px;
+  overflow: hidden;
+  height: 22px;
+  border-top: 1px solid #999;
+  background: url(images/listheader.gif) top left repeat-x #CCC;
+}
+
+.boxfooter a.button,
+.boxfooter a.buttonPas
+{
+  display: block;
+  float: left;
+  width: 34px;
+  height: 22px;
+  padding: 0px;
+  margin: 0;
+  overflow: hidden;
+  background: url(images/icons/groupactions.png) 0 0 no-repeat transparent;
+  opacity: 0.99; /* this is needed to make buttons appear correctly in Chrome */
+}
+
+.boxfooter a.groupactions
+{
+  background-position: 0 -26px;
+}
+
+.boxfooter a.delgroup {
+  background-position: 0 -49px;
+}
+
+.boxfooter a.buttonPas
+{
+  opacity: 0.35;
+}
+
+.pagenav span
+{
+  color: #444;
+  font-size: 11px;
+  text-shadow: white 1px 1px;
+  white-space: nowrap;
+}
+
+.pagenav a.button,
+.pagenav a.buttonPas
+{
+  display: block;
+  float: left;
+  width: 11px;
+  height: 11px;
+  padding: 0;
+  margin: 1px;
+  margin-top: 2px;
+  overflow: hidden;
+  background: url(images/pagenav.gif) 0 0 no-repeat transparent;
+  opacity: 0.99; /* this is needed to make buttons appear correctly in Chrome */
+}
+
+.pagenav a.buttonPas {
+  opacity: 0.35;
+}
+
+.pagenav a.firstpageSel {
+  background-position: 0 -11px;
+}
+
+.pagenav a.prevpage {
+  background-position: -11px 0;
+}
+
+.pagenav a.prevpageSel {
+  background-position: -11px -11px;
+}
+
+.pagenav a.nextpage {
+  background-position: -22px 0;
+}
+
+.pagenav a.nextpageSel {
+  background-position: -22px -11px;
+}
+
+.pagenav a.lastpage {
+  background-position: -33px 0;
+}
+
+.pagenav a.lastpageSel {
+  background-position: -33px -11px;
+}
+
+.splitter
+{
+  user-select: none;
+  -moz-user-select: none;
+  -khtml-user-select: none;
+  position: absolute;
+  background: url(images/dimple.png) center no-repeat;
+}
+
+.splitter-h
+{
+  cursor: n-resize; cursor: row-resize;
+  background-position: center 2px;
+}
+
+.splitter-v
+{
+  cursor: e-resize; cursor: col-resize;
+  background-position: 2px center;
+}
+
+.popupmenu
+{
+  position: absolute;
+  top: 32px;
+  left: 90px;
+  width: auto;
+  display: none;
+  background-color: #fff;
+  background-color: rgba(255, 255, 255, 0.95);
+  border: 1px solid #999;
+  padding: 4px;
+  z-index: 240;
+  border-radius: 3px;
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -moz-box-shadow: 1px 1px 12px #999;
+  -webkit-box-shadow: #999 1px 1px 12px;
+}
+
+.popupmenu ul
+{
+  margin: -4px 0;
+  padding: 0;
+  list-style: none;
+}
+
+.popupmenu ul li
+{
+  font-size: 11px;
+  white-space: nowrap;
+  min-width: 100px;
+  margin: 3px -4px;
+}
+
+.popupmenu li a
+{
+  display: block;
+  color: #a0a0a0;
+  padding: 2px 10px;
+  text-decoration: none;
+  min-height: 14px;
+  background: transparent;
+}
+
+.popupmenu li a.active,
+.popupmenu li a.active:active,
+.popupmenu li a.active:visited
+{
+  color: #333;
+}
+
+.popupmenu li a.active:hover,
+.popupmenu.selectable li a.selected:hover
+{
+  color: #fff;
+  background-color: #c00;
+}
+
+.popupmenu li.block input
+{
+  float: left;
+}
+
+.popupmenu.selectable li a.selected
+{
+  background: url(images/messageicons.png) 2px -372px no-repeat;
+}
+
+.popupmenu.selectable li a
+{
+  padding-left: 20px;
+}
+
+.darkbg
+{
+  background-color: #F2F2F2 !important;
+}
+
+.dropbutton,
+.dropbutton span
+{
+  float: left;
+  height: 32px;
+}
+
+.dropbutton:hover
+{
+/*  background: url(images/dbutton.png) 0 0 no-repeat transparent; */
+}
+
+.dropbutton span
+{
+  width: 9px;
+  background: url(images/dbutton.png) -53px 0 no-repeat transparent;
+}
+
+.dropbutton span:hover
+{
+  cursor: pointer;
+  background-position: -74px 0;
+}
+
+img.uploading
+{
+  width: 16px;
+  height: 16px;
+}
+
+/***** common table settings ******/
+
+table.records-table thead tr td
+{
+  height: 20px;
+  padding: 0px 4px 0px 4px;
+  vertical-align: middle;
+  border-bottom: 1px solid #999999;
+  color: #333333;
+  background: url(images/listheader.gif) top left repeat-x #CCC;
+  font-size: 11px;
+  font-weight: bold;
+}
+
+table.records-table tbody tr td
+{
+  height: 16px;
+  padding: 2px 4px 2px 4px;
+  font-size: 11px;
+  white-space: nowrap;
+  border-bottom: 1px solid #EBEBEB;
+  overflow: hidden;
+  text-align: left;  
+}
+
+table.records-table tr
+{
+  background-color: #FFFFFF;
+}
+
+table.records-table tr.selected td
+{
+  color: #FFFFFF;
+  background-color: #CC3333;
+}
+
+table.records-table tr.focused td
+{
+}
+
+table.records-table tr.unfocused td
+{
+  color: #FFFFFF;
+  background-color: #929292;
+}
+
+
+/***** mac-style quicksearch field *****/
+
+#quicksearchbar
+{
+  position: absolute;
+  top: 55px;
+  right: 10px;
+  width: 190px;
+  height: 20px;
+  text-align: right;
+  background: url(images/searchfield.gif) top left no-repeat;
+}
+
+#searchreset
+{
+  position: absolute;
+  top: 3px;
+  right: 12px;
+  text-decoration: none;
+}
+
+#searchmenulink
+{
+ position: absolute;
+ top: 3px;
+ right: 168px;
+}
+
+#quicksearchbar img
+{
+  vertical-align: middle;
+}
+
+#quicksearchbox
+{
+  position: absolute;
+  top: 2px;
+  left: 24px;
+  width: 140px;
+  height: 15px;
+  font-size: 11px;
+  padding: 0px;
+  border: none;
+}
+
+/***** roundcube webmail pre-defined classes *****/
+
+#rcmversion
+{
+  position: absolute;
+  bottom: 10px;
+  right: 20px;
+  text-align: right;
+  white-space: nowrap;
+  font-size: 8pt;
+  color: #999;
+}
+
+#rcmdraglayer
+{
+  min-width: 300px;
+  width: auto !important;
+  width: 300px;
+  border: 1px solid #999999;
+  background-color: #fff;
+  padding-left: 8px;
+  padding-right: 8px;
+  padding-top: 3px;
+  padding-bottom: 3px;
+  font-size: 11px;
+  white-space: nowrap;
+  opacity: 0.82;
+  border-radius: 3px;
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  -moz-box-shadow: 1px 1px 12px #999;
+  -webkit-box-shadow: #999 1px 1px 12px;
+}
+
+.draglayercopy:before
+{
+  position: absolute;
+  bottom: -5px;
+  left: -6px;
+  content: " ";
+  width: 14px;
+  height: 14px;
+  background: url(images/messageactions.png) -2px -128px no-repeat;
+}
+
+a.rcmContactAddress
+{
+  text-decoration: none;
+}
+
+a.rcmContactAddress:hover
+{
+  text-decoration: underline;
+}
+
+#rcmKSearchpane
+{
+  background-color: #F9F9F9;
+  border: 1px solid #CCCCCC;
+}
+
+#rcmKSearchpane ul
+{
+  margin: 0px;
+  padding: 2px;
+  list-style-image: none;
+  list-style-type: none;
+}
+
+#rcmKSearchpane ul li
+{
+  display: block;
+  height: 16px;
+  font-size: 11px;
+  padding-left: 6px;
+  padding-top: 2px;
+  padding-right: 6px;
+  white-space: nowrap;
+  cursor: pointer;
+}
+
+#rcmKSearchpane ul li.selected
+{
+  color: #ffffff;
+  background-color: #CC3333;
+}
+
+#login-form
+{
+  margin-left: auto;
+  margin-right: auto;
+  margin-top: 50px;
+  width: 400px;
+  border: 1px solid #999;
+}
+
+#login-form table td.title
+{
+  text-align: right;
+  white-space: nowrap;
+}
+
+#login-form table
+{
+  width: 1%;
+  margin: auto;
+}
+
+#login-form table td.input input
+{
+  width: 200px;
+}
+
+#login-bottomline
+{
+       width: 400px;
+       margin: 5em auto;
+       font-size: 85%;
+       text-align: center;
+       color: #333;
+}
+
+#console
+{
+  opacity: 0.8;
+}
+
+.disabled,
+a.disabled
+{
+  color: #999;
+}
+
+font.bold
+{
+  font-weight: bold;
+}
+
+
+/***** onclick menu list *****/
+
+ul.toolbarmenu
+{
+  margin: -4px 0 -4px 0;
+  padding: 0;
+  list-style: none;
+}
+
+ul.toolbarmenu li
+{
+  font-size: 11px;
+  white-space: nowrap;
+  min-width: 130px;
+  margin: 2px -4px;
+}
+
+ul.toolbarmenu li a
+{
+  display: block;
+  color: #a0a0a0;
+  padding: 1px 12px 3px 28px;
+  text-decoration: none;
+  min-height: 14px;
+}
+
+ul.toolbarmenu li a.active,
+ul.toolbarmenu li a.active:active,
+ul.toolbarmenu li a.active:visited
+{
+  color: #333;
+}
+
+ul.toolbarmenu li input
+{
+  vertical-align: middle;
+}
+
+ul.toolbarmenu li hr
+{
+  color: #ccc;
+  width: 130px;
+  height: 1px;
+  margin: 2px 1px 2px 1px;
+}
+
+ul.toolbarmenu li img
+{
+  float: left;
+  margin: 0 2px;
+}
+
+div.popupmenu ul li.separator_below,
+ul.toolbarmenu li.separator_below
+{
+  border-bottom: 1px solid #ccc;
+  margin-bottom: 2px;
+  padding-bottom: 2px;
+}
+
+div.popupmenu ul li.separator_above,
+ul.toolbarmenu li.separator_above
+{
+  border-top: 1px solid #ccc;
+  margin-top: 2px;
+  padding-top: 2px;
+}
+
+#searchmenu
+{
+  width: 160px;
+}
+
+#searchmenu ul.toolbarmenu
+{
+  margin: 0;
+}
+
+#searchmenu ul.toolbarmenu li
+{
+  margin: 1px 4px 1px;
+}
+
+
+/***** tabbed interface elements *****/
+
+div.tabsbar,
+#tabsbar
+{
+  position: absolute;
+  top: 50px;
+  left: 220px;
+  right: 20px;
+  height: 22px;
+  border-bottom: 1px solid #999999;
+  white-space: nowrap;
+}
+
+div.tabsbar
+{
+  top: 35px;
+  left: 12px;
+  right: 12px;
+}
+
+span.tablink,
+span.tablink-selected
+{
+  float: left;
+  height: 23px !important;
+  height: 22px;
+  overflow: hidden;
+  background: url(images/tabs-left.gif) top left no-repeat;
+}
+
+span.tablink
+{
+  cursor: pointer;
+}
+
+span.tablink-selected
+{
+  cursor: default;
+  background-position: 0px -23px;
+}
+
+span.tablink a,
+span.tablink-selected a
+{
+  display: inline-block;
+  padding: 5px 10px 0 5px;
+  margin-left: 5px;
+  height: 23px;
+  color: #555555;
+  max-width: 185px;
+  text-decoration: none;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+  background: url(images/tabs-right.gif) top right no-repeat;
+}
+
+span.tablink-selected a
+{
+  cursor: inherit;
+  color: #000000;
+  background-position: right -23px;
+}
+
+fieldset
+{
+  margin-bottom: 1em;
+  border: 1px solid #999999;
+  padding: 4px 8px 9px 8px; 
+}
+
+legend
+{
+  color: #999999;
+}
+
+fieldset.tabbed
+{
+  margin-top: 22px;
+  padding-top: 12px;
+}
+
+.quota_text {
+  text-align: center;
+  font-size: 10px;
+  color: #666;
+  border: 1px solid #999;
+  cursor: default;
+}
+.quota_bg { background-color: white; }
+.quota_high { background: url(images/quota-colors.png) repeat-x 0 -28px #f90509; }
+.quota_mid { background: url(images/quota-colors.png) repeat-x 0 -14px #e3e909; }
+.quota_low { background: url(images/quota-colors.png) repeat-x 0 0px #05f905; }
+.quota_text_high { color: white; }
+.quota_text_mid { color: #666; }
+.quota_text_low { color: #666; }
diff --git a/skins/classic/editor_content.css b/skins/classic/editor_content.css
new file mode 100644 (file)
index 0000000..aabed07
--- /dev/null
@@ -0,0 +1,31 @@
+/* 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/classic/functions.js b/skins/classic/functions.js
new file mode 100644 (file)
index 0000000..73c43f6
--- /dev/null
@@ -0,0 +1,822 @@
+/**
+ * Roundcube functions for default skin interface
+ */
+
+/**
+ * Settings
+ */
+
+function rcube_init_settings_tabs()
+{
+  var el, cl, container = $('#tabsbar'),
+    last_tab = $('span:last', container),
+    tab = '#settingstabdefault',
+    action = window.rcmail && rcmail.env.action ? rcmail.env.action : null;
+
+  // move About tab to the end
+  if (last_tab && last_tab.attr('id') != 'settingstababout' && (el = $('#settingstababout'))) {
+    cl = el.clone(true);
+    el.remove();
+    last_tab.after(cl);
+  }
+
+  // get selected tab
+  if (action)
+    tab = '#settingstab' + (action == 'preferences' ? 'default' : (action.indexOf('identity')>0 ? 'identities' : action.replace(/\./g, '')));
+
+  $(tab).addClass('tablink-selected');
+  $('a', tab).removeAttr('onclick').click(function() { return false; });
+}
+
+// Fieldsets-to-tabs converter
+// Warning: don't place "caller" <script> inside page element (id)
+function rcube_init_tabs(id, current)
+{
+  var content = $('#'+id),
+    fs = content.children('fieldset');
+
+  if (!fs.length)
+    return;
+
+  current = current ? current : 0;
+
+  // first hide not selected tabs
+  fs.each(function(idx) { if (idx != current) $(this).hide(); });
+
+  // create tabs container
+  var tabs = $('<div>').addClass('tabsbar').appendTo(content);
+
+  // convert fildsets into tabs
+  fs.each(function(idx) {
+    var tab, a, elm = $(this), legend = elm.children('legend');
+
+    // create a tab
+    a   = $('<a>').text(legend.text()).attr('href', '#');
+    tab = $('<span>').attr({'id': 'tab'+idx, 'class': 'tablink'})
+        .click(function() { rcube_show_tab(id, idx); return false })
+
+    // remove legend
+    legend.remove();
+    // style fieldset
+    elm.addClass('tabbed');
+    // style selected tab
+    if (idx == current)
+      tab.addClass('tablink-selected');
+
+    // add the tab to container
+    tab.append(a).appendTo(tabs);
+  });
+}
+
+function rcube_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('tablink-selected', idx==index);
+  });
+}
+
+/**
+ * Mail UI
+ */
+
+function rcube_mail_ui()
+{
+  this.popups = {
+    markmenu:       {id:'markmessagemenu'},
+    replyallmenu:   {id:'replyallmenu'},
+    forwardmenu:    {id:'forwardmenu', editable:1},
+    searchmenu:     {id:'searchmenu', editable:1},
+    messagemenu:    {id:'messagemenu'},
+    listmenu:       {id:'listmenu', editable:1},
+    dragmessagemenu:{id:'dragmessagemenu', sticky:1},
+    groupmenu:      {id:'groupoptionsmenu', above:1},
+    mailboxmenu:    {id:'mailboxoptionsmenu', above:1},
+    composemenu:    {id:'composeoptionsmenu', editable:1, overlap:1},
+    spellmenu:      {id:'spellmenu'},
+    // 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 }
+  };
+
+  var obj;
+  for (var k in this.popups) {
+    obj = $('#'+this.popups[k].id)
+    if (obj.length)
+      this.popups[k].obj = obj;
+    else {
+      delete this.popups[k];
+    }
+  }
+}
+
+rcube_mail_ui.prototype = {
+
+show_popup: function(popup, show, config)
+{
+  var obj;
+  // auto-register menu object
+  if (!this.popups[popup] && (obj = $('#'+popup)) && obj.length)
+    this.popups[popup] = $.extend(config, {id: popup, obj: obj});
+
+  if (typeof this[popup] == 'function')
+    return this[popup](show);
+  else
+    return this.show_popupmenu(popup, show);
+},
+
+show_popupmenu: function(popup, show)
+{
+  var obj = this.popups[popup].obj,
+    above = this.popups[popup].above,
+    ref = rcube_find_object(popup+'link');
+
+  if (typeof show == 'undefined')
+    show = obj.is(':visible') ? false : true;
+  else if (this.popups[popup].toggle && show && this.popups[popup].obj.is(':visible') )
+    show = false;
+
+  if (show && ref) {
+    var parent = $(ref).parent(),
+      win = $(window),
+      pos = parent.hasClass('dropbutton') ? parent.offset() : $(ref).offset();
+
+    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() - 30;
+
+    obj.css({ left:pos.left, top:(pos.top + (above ? -obj.height() : ref.offsetHeight)) });
+  }
+
+  obj[show?'show':'hide']();
+
+  if (bw.ie6 && this.popups[popup].overlap) {
+    $('select').css('visibility', show?'hidden':'inherit');
+    $('select', obj).css('visibility', 'inherit');
+  }
+},
+
+dragmessagemenu: function(show)
+{
+  this.popups.dragmessagemenu.obj[show?'show':'hide']();
+},
+
+forwardmenu: function(show)
+{
+  $("input[name='forwardtype'][value="+(rcmail.env.forward_attachment ? 1 : 0)+"]", this.popups.forwardmenu.obj)
+    .prop('checked', true);
+  this.show_popupmenu('forwardmenu', show);
+},
+
+uploadmenu: function(show)
+{
+  if (typeof show == 'object') // called as event handler
+    show = false;
+
+  // clear upload form
+  if (!show) {
+    try { $('#attachment-form form')[0].reset(); }
+    catch(e){}  // ignore errors
+  }
+
+  this.show_popupmenu('uploadmenu', show);
+
+  if (!document.all && this.popups.uploadmenu.obj.is(':visible'))
+    $('#attachment-form input[type=file]').click();
+},
+
+searchmenu: function(show)
+{
+  var obj = this.popups.searchmenu.obj,
+    ref = rcube_find_object('searchmenulink');
+
+  if (typeof show == 'undefined')
+    show = obj.is(':visible') ? false : true;
+
+  if (show && ref) {
+    var pos = $(ref).offset();
+    obj.css({left:pos.left, top:(pos.top + ref.offsetHeight + 2)});
+
+    if (rcmail.env.search_mods) {
+      var n, all,
+        list = $('input:checkbox[name="s_mods[]"]', obj),
+        mbox = rcmail.env.mailbox,
+        mods = rcmail.env.search_mods;
+
+      if (rcmail.env.task == 'mail') {
+        mods = mods[mbox] ? mods[mbox] : mods['*'];
+        all = 'text';
+      }
+      else {
+        all = '*';
+      }
+
+      if (mods[all])
+        list.map(function() {
+          this.checked = true;
+          this.disabled = this.value != all;
+        });
+      else {
+        list.prop('disabled', false).prop('checked', false);
+        for (n in mods)
+          $('#s_mod_' + n).prop('checked', true);
+      }
+    }
+  }
+  obj[show?'show':'hide']();
+},
+
+set_searchmod: function(elem)
+{
+  var all, m, task = rcmail.env.task,
+    mods = rcmail.env.search_mods,
+    mbox = rcmail.env.mailbox;
+
+  if (!mods)
+    mods = {};
+
+  if (task == 'mail') {
+    if (!mods[mbox])
+      mods[mbox] = rcube_clone_object(mods['*']);
+    m = mods[mbox];
+    all = 'text';
+  }
+  else { //addressbook
+    m = mods;
+    all = '*';
+  }
+
+  if (!elem.checked)
+    delete(m[elem.value]);
+  else
+    m[elem.value] = 1;
+
+  // mark all fields
+  if (elem.value != all)
+    return;
+
+  $('input:checkbox[name="s_mods[]"]').map(function() {
+    if (this == elem)
+      return;
+
+    this.checked = true;
+    if (elem.checked) {
+      this.disabled = true;
+      delete m[this.value];
+    }
+    else {
+      this.disabled = false;
+      m[this.value] = 1;
+    }
+  });
+},
+
+listmenu: function(show)
+{
+  var obj = this.popups.listmenu.obj,
+    ref = rcube_find_object('listmenulink');
+
+  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);
+    });
+  }
+
+  obj[show?'show':'hide']();
+
+  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")
+    // IE6 complains if you set this attribute using either method:
+    //$('#listmenu fieldset').css({'height':'auto !important'});
+    //$('#listmenu fieldset').css("height","auto !important");
+      .height(maxheight);
+  };
+},
+
+open_listmenu: function(e)
+{
+  this.listmenu();
+},
+
+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(),
+    cols = $('input[name="list_col[]"]:checked')
+      .map(function(){ return this.value; }).get();
+
+  rcmail.set_list_options(cols, sort, ord, thread == 'thread' ? 1 : 0);
+},
+
+spellmenu: function(show)
+{
+  var link, li,
+    lang = rcmail.spellcheck_lang(),
+    menu = this.popups.spellmenu.obj,
+    ul = $('ul', menu);
+
+  if (!ul.length) {
+    ul = $('<ul>');
+
+    for (i in rcmail.env.spell_langs) {
+      li = $('<li>');
+      link = $('<a href="#">').text(rcmail.env.spell_langs[i])
+        .addClass('active').data('lang', i)
+        .click(function() {
+          rcmail.spellcheck_lang_set($(this).data('lang'));
+        });
+
+      link.appendTo(li);
+      li.appendTo(ul);
+    }
+
+    ul.appendTo(menu);
+  }
+
+  // select current language
+  $('li', ul).each(function() {
+    var el = $('a', this);
+    if (el.data('lang') == lang)
+      el.addClass('selected');
+    else if (el.hasClass('selected'))
+      el.removeClass('selected');
+  });
+
+  this.show_popupmenu('spellmenu', show);
+},
+
+body_mouseup: function(evt, p)
+{
+  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
+      && (!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)))
+    ) {
+      window.setTimeout('rcmail_ui.show_popup("'+i+'",false);', 50);
+    }
+  }
+},
+
+target_overlaps: function (target, elementid)
+{
+  var element = rcube_find_object(elementid);
+  while (target.parentNode) {
+    if (target.parentNode == element)
+      return true;
+    target = target.parentNode;
+  }
+  return false;
+},
+
+body_keydown: function(evt, p)
+{
+  if (rcube_event.get_keycode(evt) == 27) {
+    for (var k in this.popups) {
+      if (this.popups[k].obj.is(':visible'))
+        this.show_popup(k, false);
+    }
+  }
+},
+
+switch_preview_pane: function(elem)
+{
+  var uid, prev_frm = $('#mailpreviewframe');
+
+  if (elem.checked) {
+    rcmail.env.contentframe = 'messagecontframe';
+    if (mailviewsplit.layer) {
+      mailviewsplit.resize();
+      mailviewsplit.layer.elm.style.display = '';
+    }
+    else
+      mailviewsplit.init();
+
+    if (bw.opera) {
+      $('#messagelistcontainer').css({height: ''});
+    }
+    prev_frm.show();
+
+    if (uid = rcmail.message_list.get_single_selection())
+      rcmail.show_message(uid, false, true);
+  }
+  else {
+    prev_frm.hide();
+    if (bw.ie6 || bw.ie7) {
+      var fr = document.getElementById('mailcontframe');
+      fr.style.bottom = 0;
+      fr.style.height = parseInt(fr.parentNode.offsetHeight)+'px';
+    }
+    else {
+      $('#mailcontframe').css({height: 'auto', bottom: 0});
+      if (bw.opera)
+        $('#messagelistcontainer').css({height: 'auto'});
+    }
+    if (mailviewsplit.layer)
+      mailviewsplit.layer.elm.style.display = 'none';
+
+    rcmail.env.contentframe = null;
+    rcmail.show_contentframe(false);
+  }
+
+  rcmail.command('save-pref', {name: 'preview_pane', value: (elem.checked?1:0)});
+},
+
+/* Message composing */
+init_compose_form: function()
+{
+  var f, field, fields = ['cc', 'bcc', 'replyto', 'followupto'],
+    div = document.getElementById('compose-div'),
+    headers_div = document.getElementById('compose-headers-div');
+
+  // Show input elements with non-empty value
+  for (f=0; f<fields.length; f++) {
+    if ((field = $('#_'+fields[f])) && field.length && field.val() != '')
+      rcmail_ui.show_header_form(fields[f]);
+  }
+
+  // prevent from form data loss when pressing ESC key in IE
+  if (bw.ie) {
+    var form = rcube_find_object('form');
+    form.onkeydown = function (e) {
+      if (rcube_event.get_keycode(e) == 27)
+        rcube_event.cancel(e);
+    };
+  }
+
+  $(window).resize(function() {
+    rcmail_ui.resize_compose_body();
+  });
+
+  $('#compose-container').resize(function() {
+    rcmail_ui.resize_compose_body();
+  });
+
+  div.style.top = (parseInt(headers_div.offsetHeight, 10) + 3) + 'px';
+  $(window).resize();
+},
+
+resize_compose_body: function()
+{
+  var div = $('#compose-div .boxlistcontent'), w = div.width(), h = div.height();
+  w -= 8;  // 2 x 3px padding + 2 x 1px border
+  h -= 4;
+
+  $('#compose-body_tbl').width((w+6)+'px').height('');
+  $('#compose-body_ifr').width((w+6)+'px').height((h-54)+'px');
+  $('#compose-body').width(w+'px').height(h+'px');
+  $('#googie_edit_layer').height(h+'px');
+},
+
+resize_compose_body_ev: function()
+{
+  window.setTimeout(function(){rcmail_ui.resize_compose_body();}, 100);
+},
+
+show_header_form: function(id)
+{
+  var row, s,
+    link = document.getElementById(id + '-link');
+
+  if ((s = this.next_sibling(link)))
+    s.style.display = 'none';
+  else if ((s = this.prev_sibling(link)))
+    s.style.display = 'none';
+
+  link.style.display = 'none';
+
+  if ((row = document.getElementById('compose-' + id))) {
+    var div = document.getElementById('compose-div'),
+      headers_div = document.getElementById('compose-headers-div');
+    $(row).show();
+    div.style.top = (parseInt(headers_div.offsetHeight, 10) + 3) + 'px';
+    this.resize_compose_body();
+  }
+
+  return false;
+},
+
+hide_header_form: function(id)
+{
+  var row, ns,
+    link = document.getElementById(id + '-link'),
+    parent = link.parentNode,
+    links = parent.getElementsByTagName('a');
+
+  link.style.display = '';
+
+  for (var i=0; i<links.length; i++)
+    if (links[i].style.display != 'none')
+      for (var j=i+1; j<links.length; j++)
+        if (links[j].style.display != 'none')
+          if ((ns = this.next_sibling(links[i]))) {
+            ns.style.display = '';
+            break;
+          }
+
+  document.getElementById('_' + id).value = '';
+
+  if ((row = document.getElementById('compose-' + id))) {
+    var div = document.getElementById('compose-div'),
+      headers_div = document.getElementById('compose-headers-div');
+    row.style.display = 'none';
+    div.style.top = (parseInt(headers_div.offsetHeight, 10) + 1) + 'px';
+    this.resize_compose_body();
+  }
+
+  return false;
+},
+
+next_sibling: function(elm)
+{
+  var ns = elm.nextSibling;
+  while (ns && ns.nodeType == 3)
+    ns = ns.nextSibling;
+  return ns;
+},
+
+prev_sibling: function(elm)
+{
+  var ps = elm.previousSibling;
+  while (ps && ps.nodeType == 3)
+    ps = ps.previousSibling;
+  return ps;
+}
+
+};
+
+/**
+ * Scroller
+ */
+
+function rcmail_scroller(list, top, bottom)
+{
+  var ref = this;
+
+  this.list = $(list);
+  this.top = $(top);
+  this.bottom = $(bottom);
+  this.step_size = 6;
+  this.step_time = 20;
+  this.delay = 500;
+
+  this.top
+    .mouseenter(function() { ref.ts = window.setTimeout(function() { ref.scroll('down'); }, ref.delay); })
+    .mouseout(function() { if (ref.ts) window.clearTimeout(ref.ts); });
+
+  this.bottom
+    .mouseenter(function() { ref.ts = window.setTimeout(function() { ref.scroll('up'); }, ref.delay); })
+    .mouseout(function() { if (ref.ts) window.clearTimeout(ref.ts); });
+
+  this.scroll = function(dir)
+  {
+    var ref = this, size = this.step_size;
+
+    if (!rcmail.drag_active)
+      return;
+
+    if (dir == 'down')
+      size *= -1;
+
+    this.list.get(0).scrollTop += size;
+    this.ts = window.setTimeout(function() { ref.scroll(dir); }, this.step_time);
+  };
+};
+
+
+// Events handling in iframes (eg. preview pane)
+function iframe_events()
+{
+  // this==iframe
+  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' });
+};
+
+// Abbreviate mailbox names to fit width of the container
+function rcube_render_mailboxlist()
+{
+  var list = $('#mailboxlist > li a, #mailboxlist ul:visible > li a');
+
+  // it's too slow with really big number of folders, especially on IE
+  if (list.length > 500 * (bw.ie ? 0.2 : 1))
+    return;
+
+  list.each(function(){
+    var elem = $(this),
+      text = elem.data('text');
+
+    if (!text) {
+      text = elem.text().replace(/\s+\(.+$/, '');
+      elem.data('text', text);
+    }
+    if (text.length < 6)
+      return;
+
+    var abbrev = fit_string_to_size(text, elem, elem.width() - elem.children('span.unreadcount').width());
+    if (abbrev != text)
+      elem.attr('title', text);
+    elem.contents().filter(function(){ return (this.nodeType == 3); }).get(0).data = abbrev;
+  });
+};
+
+// inspired by https://gist.github.com/24261/7fdb113f1e26111bd78c0c6fe515f6c0bf418af5
+function fit_string_to_size(str, elem, len)
+{
+  var w, span, result = str, ellip = '...';
+
+  if (!rcmail.env.tmp_span) {
+    // it should be appended to elem to use the same css style
+    // but for performance reasons we'll append it to body (once)
+    span = $('<b>').css({visibility: 'hidden', padding: '0px'})
+      .appendTo($('body', document)).get(0);
+    rcmail.env.tmp_span = span;
+  }
+  else {
+    span = rcmail.env.tmp_span;
+  }
+  span.innerHTML = result;
+
+  // on first run, check if string fits into the length already.
+  w = span.offsetWidth;
+  if (w > len) {
+    var cut = Math.max(1, Math.floor(str.length * ((w - len) / w) / 2)),
+      mid = Math.floor(str.length / 2),
+      offLeft = mid,
+      offRight = mid;
+
+    while (true) {
+      offLeft = mid - cut;
+      offRight = mid + cut;
+      span.innerHTML = str.substring(0,offLeft) + ellip + str.substring(offRight);
+
+      // break loop if string fits size
+      if (offLeft < 3 || span.offsetWidth)
+        break;
+
+      cut++;
+    }
+
+    // build resulting string
+    result = str.substring(0,offLeft) + ellip + str.substring(offRight);
+  }
+
+  return result;
+};
+
+function update_quota(data)
+{
+  percent_indicator(rcmail.gui_objects.quotadisplay, data);
+};
+
+// percent (quota) indicator
+function percent_indicator(obj, data)
+{
+  if (!data || !obj)
+    return false;
+
+  var limit_high = 80,
+    limit_mid  = 55,
+    width = data.width ? data.width : rcmail.env.indicator_width ? rcmail.env.indicator_width : 100,
+    height = data.height ? data.height : rcmail.env.indicator_height ? rcmail.env.indicator_height : 14,
+    quota = data.percent ? Math.abs(parseInt(data.percent)) : 0,
+    quota_width = parseInt(quota / 100 * width),
+    pos = $(obj).position();
+
+  // workarounds for Opera and Webkit bugs
+  pos.top = Math.max(0, pos.top);
+  pos.left = Math.max(0, pos.left);
+
+  rcmail.env.indicator_width = width;
+  rcmail.env.indicator_height = height;
+
+  // overlimit
+  if (quota_width > width) {
+    quota_width = width;
+    quota = 100;
+  }
+
+  if (data.title)
+    data.title = rcmail.get_label('quota') + ': ' +  data.title;
+
+  // main div
+  var main = $('<div>');
+  main.css({position: 'absolute', top: pos.top, left: pos.left,
+      width: width + 'px', height: height + 'px', zIndex: 100, lineHeight: height + 'px'})
+    .attr('title', data.title).addClass('quota_text').html(quota + '%');
+  // used bar
+  var bar1 = $('<div>');
+  bar1.css({position: 'absolute', top: pos.top + 1, left: pos.left + 1,
+      width: quota_width + 'px', height: height + 'px', zIndex: 99});
+  // background
+  var bar2 = $('<div>');
+  bar2.css({position: 'absolute', top: pos.top + 1, left: pos.left + 1,
+      width: width + 'px', height: height + 'px', zIndex: 98})
+       .addClass('quota_bg');
+
+  if (quota >= limit_high) {
+    main.addClass(' quota_text_high');
+    bar1.addClass('quota_high');
+  }
+  else if(quota >= limit_mid) {
+    main.addClass(' quota_text_mid');
+    bar1.addClass('quota_mid');
+  }
+  else {
+    main.addClass(' quota_text_low');
+    bar1.addClass('quota_low');
+  }
+
+  // replace quota image
+  $(obj).html('').append(bar1).append(bar2).append(main);
+  // update #quotaimg title
+  $('#quotaimg').attr('title', data.title);
+};
+
+// Optional parameters used by TinyMCE
+var rcmail_editor_settings = {
+  skin : "default", // "default", "o2k7"
+  skin_variant : "" // "", "silver", "black"
+};
+
+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' });
+
+  if (rcmail.env.quota_content)
+    update_quota(rcmail.env.quota_content);
+  rcmail.addEventListener('setquota', update_quota);
+
+  $('iframe').load(iframe_events)
+    .contents().mouseup(function(e){rcmail_ui.body_mouseup(e)});
+
+  if (rcmail.env.task == 'mail') {
+    rcmail.addEventListener('menu-open', 'open_listmenu', rcmail_ui);
+    rcmail.addEventListener('menu-save', 'save_listmenu', rcmail_ui);
+    rcmail.addEventListener('aftersend-attachment', 'uploadmenu', rcmail_ui);
+    rcmail.addEventListener('aftertoggle-editor', 'resize_compose_body_ev', rcmail_ui);
+    rcmail.gui_object('message_dragmenu', 'dragmessagemenu');
+
+    if (rcmail.gui_objects.mailboxlist) {
+      rcmail.addEventListener('responseaftermark', rcube_render_mailboxlist);
+      rcmail.addEventListener('responseaftergetunread', rcube_render_mailboxlist);
+      rcmail.addEventListener('responseaftercheck-recent', rcube_render_mailboxlist);
+      rcmail.addEventListener('aftercollapse-folder', rcube_render_mailboxlist);
+
+      new rcmail_scroller('#mailboxlist-content', '#mailboxlist-title', '#mailboxlist-footer');
+    }
+
+    if (rcmail.env.action == 'compose')
+      rcmail_ui.init_compose_form();
+  }
+  else if (rcmail.env.task == 'addressbook') {
+    rcmail.addEventListener('afterupload-photo', function(){ rcmail_ui.show_popup('uploadform', false); });
+
+    if (rcmail.gui_objects.folderlist)
+      new rcmail_scroller('#directorylist-content', '#directorylist-title', '#directorylist-footer');
+  }
+  else if (rcmail.env.task == 'settings') {
+    if (rcmail.gui_objects.subscriptionlist)
+      new rcmail_scroller('#folderlist-content', '#folderlist-title', '#folderlist-footer');
+  }
+}
diff --git a/skins/classic/googiespell.css b/skins/classic/googiespell.css
new file mode 100644 (file)
index 0000000..8adadc2
--- /dev/null
@@ -0,0 +1,119 @@
+/***** modified styles for GoogieSpell *****/
+
+.googie_window {
+  font-size: 11px;
+  width: 185px;
+  margin: 0;
+  padding: 0;
+}
+
+.googie_edit_layer {
+  background-color: #ffffff;
+  padding: 0 4px;
+  font-size: 9pt;
+  font-family: monospace;
+  border: 1px solid #999;
+}
+
+.googie_edit_layer span {
+  font-family: monospace;
+}
+
+.googie_list {
+  width: 100%;
+  margin: 0;
+  padding: 0;
+}
+
+.googie_list td {
+  font-size: 11px;
+  padding-left: 10px;
+  padding-right: 10px;
+  padding-top: 2px;
+  padding-bottom: 2px;
+  cursor: pointer;
+  list-style-type: none;
+}
+
+.googie_list_onhover {
+  color: #FFFFFF;
+  background-color: #CC3333;
+}
+
+.googie_list_onout {
+  background-color: #fff;
+}
+
+.googie_list_selected {
+  background-color: #cccccc;
+  font-weight: bold;
+}
+
+.googie_list_close {
+  font-size: 11px;
+  color: #b91414;
+}
+
+.googie_list_onhover .googie_list_close {
+  color: #FFFFFF;
+}
+
+.googie_list_revert {
+  font-size: 11px;
+  color: #b91414;
+}
+
+.googie_list_revert:hover {
+  color: #fff;
+}
+
+.googie_link {
+  color: #b91414;
+  text-decoration: underline;
+  cursor: pointer;
+  font-size: 9pt;
+  font-family: monospace;
+}
+
+.googie_check_spelling_link {
+  color: #CC0000;
+  font-size: 11px;
+  text-decoration: none;
+  cursor: pointer;
+}
+
+.googie_check_spelling_link:hover {
+  text-decoration: underline;
+}
+
+.googie_no_style {
+  text-decoration: none;
+}
+
+.googie_check_spelling_ok,
+.googie_resume_editing {
+  color: green;
+  font-size: 11px;
+  cursor: pointer;
+}
+
+.googie_check_spelling_ok:hover,
+.googie_resume_editing:hover {
+  text-decoration: underline;
+}
+
+.googie_lang_3d_click img {
+  vertical-align: middle;
+  border-top: 1px solid #555;
+  border-left: 1px solid #555;
+  border-right: 1px solid #b1b1b1;
+  border-bottom: 1px solid #b1b1b1;
+}
+
+.googie_lang_3d_on img {
+  vertical-align: middle;
+  border-top: 1px solid #b1b1b1;
+  border-left: 1px solid #b1b1b1;
+  border-right: 1px solid #555;
+  border-bottom: 1px solid #555;
+}
diff --git a/skins/classic/ie6hacks.css b/skins/classic/ie6hacks.css
new file mode 100644 (file)
index 0000000..ac95386
--- /dev/null
@@ -0,0 +1,178 @@
+/* CSS hacks for IE versions 5,6 */
+
+#taskbar
+{
+  background: url(images/taskbar.gif) top right no-repeat;
+}
+
+img
+{
+  behavior: url(skins/classic/pngbehavior.htc);
+}
+
+#logo
+{
+  width: 178px;
+  height: 47px;
+}
+
+body > #message div.notice,
+body > #message div.error,
+body > #message div.warning,
+body > #message div.confirmation,
+#message-objects div.notice,
+#message-objects div.error,
+#message-objects div.warning,
+#message-objects div.confirmation
+{
+  background-image: url(images/display/icons.gif);
+}
+
+#messagemenu li a
+{
+  background-image: url(images/messageactions.gif);
+}
+
+#mailboxlist li
+{
+  background-image: url(images/icons/folders.gif);
+}
+
+#attachment-list
+{
+  height: expression(Math.min(16, parseInt(document.documentElement.clientHeight))+'px');
+}
+
+#messagetoolbar a
+{
+  display: block;
+  float: left;
+  padding-right: 10px;
+}
+
+.boxfooter a.button,
+.boxfooter a.buttonPas
+{
+  background-image: url(images/icons/groupactions.gif);
+}
+
+.pagenav
+{
+  width: 250px;
+}
+
+.pagenav a.button,
+.pagenav a.buttonPas
+{
+  background-image: url(images/pagenav.gif);
+}
+
+#listcontrols a.button,
+#listcontrols a.buttonPas {
+  background-image: url(images/mail_footer.gif);
+}
+
+#messagetoolbar a.button,
+#messagetoolbar a.buttonPas {
+  background-image: url(images/mail_toolbar.gif);
+}
+
+#abooktoolbar a.button,
+#abooktoolbar a.buttonPas,
+#abooktoolbar span.separator {
+  background-image: url(images/abook_toolbar.gif);
+}
+
+ul.toolbarmenu li a,
+.popupmenu li a
+{
+  clear: left;
+  height: expression(Math.min(14, parseInt(document.documentElement.clientHeight))+'px');
+  width: expression(Math.min(130, parseInt(document.documentElement.clientWidth))+'px');
+}
+
+ul.toolbarmenu li.separator_below
+{
+  padding-bottom: 3px;
+}
+
+.boxfooter
+{
+  width: 100%;
+  bottom: -1px;
+}
+
+.boxtitle,
+#directorylist li a
+{
+  width: auto;
+}
+
+#directorylist li
+{
+  background-image: url(images/icons/folders.gif);
+}
+
+.boxlistcontent
+{
+  top: 21px;
+  height: expression((parseInt(this.parentNode.offsetHeight)-24-parseInt(this.style.top?this.style.top:21))+'px');
+}
+
+#compose-div .boxlistcontent
+{
+  height: expression((parseInt(this.parentNode.offsetHeight)-23-parseInt(this.style.top?this.style.top:21))+'px');
+}
+
+#folder-manager
+{
+  height: expression((parseInt(document.documentElement.clientHeight)-105)+'px');
+}
+
+#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: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
+{
+  background-image: url(images/messageicons.gif);
+}
+
+#messagelist tr td div.collapsed,
+#messagelist tr td div.expanded {
+       background-color: #fff;
+}
+
+body.iframe .boxtitle
+{
+  position: absolute;
+}
+
+#subscription-table
+{
+  width: auto;
+}
+
+#sourcename
+{
+  zoom: 1;
+}
diff --git a/skins/classic/iehacks.css b/skins/classic/iehacks.css
new file mode 100644 (file)
index 0000000..2bd3ce8
--- /dev/null
@@ -0,0 +1,305 @@
+
+input, textarea
+{
+  border-style: expression(this.type=='checkbox' || this.type=='radio' || this.id=='quicksearchbox' ? 'none' : 'solid');
+  border-width: expression(this.type=='checkbox' || this.type=='radio' ? '0' : '1px');
+  border-color: expression(this.type=='checkbox' || this.type=='radio' ? '' : '#666666');
+  background-color: expression(this.type=='checkbox' || this.type=='radio' ? 'transparent' : '#ffffff');
+}
+
+body.iframe
+{
+  margin-top: 0px;
+}
+
+body.iframe div.boxcontent
+{
+  margin-top: 20px;
+  z-index: 2;
+}
+
+body.iframe div.boxtitle
+{
+  z-index: 100;
+}
+
+body.iframe #prefs-details
+{
+  padding-top: 1px;
+}
+
+#login-form form
+{
+  margin-top: 0;
+}
+
+.pagenav a.buttonPas
+{
+  filter: alpha(opacity=35);
+}
+
+body > #message
+{
+  filter: alpha(opacity=85);
+}
+
+.popupmenu
+{
+  background-color: #ffffff;
+}
+
+#tabsbar,
+#partheader
+{
+  width: expression((parseInt(document.documentElement.clientWidth)-240)+'px');
+}
+
+#mainscreen
+{
+  height: expression((parseInt(document.documentElement.clientHeight)-105)+'px');
+}
+
+#mainscreen,
+#messagepartcontainer
+{
+  width: expression((parseInt(document.documentElement.clientWidth)-40)+'px');
+}
+
+#messagetoolbar
+{
+  width: expression((parseInt(document.documentElement.clientWidth)-215)+'px');
+  z-index: 240;
+}
+
+#messagetoolbar select.mboxlist
+{
+  margin: 0 8px;
+  top: 8px;
+}
+
+div.messageheaderbox
+{
+  margin-top: 0px;
+}
+
+body.iframe div.messageheaderbox
+{
+  margin-top: 6px;
+}
+
+#abooktoolbar a.buttonPas
+{
+  filter: alpha(opacity=35);
+  background-image: url(images/abook_toolbar.gif);
+}
+
+#messagetoolbar a.buttonPas
+{
+  filter: alpha(opacity=35);
+  background-image: url(images/mail_toolbar.gif);
+}
+
+#listcontrols a.buttonPas
+{
+  filter: alpha(opacity=35);
+}
+
+#quicksearchbar
+{
+  z-index: 250;
+}
+
+#addresslist,
+#sectionslist,
+#identities-list,
+#mailleftcontainer,
+#mailrightcontainer,
+#compose-container,
+#compose-attachments,
+#mailcontframe,
+#mailboxlist-container,
+#mailrightcontent,
+#messageframe,
+#identity-details,
+#contacts-box,
+#prefs-box,
+#folder-box,
+#directorylistbox,
+#addressscreen
+{
+  height: expression(parseInt(this.parentNode.offsetHeight)+'px');
+}
+
+#mailrightcontainer
+{
+  width: expression((parseInt(this.parentNode.offsetWidth)-170)+'px');
+}
+
+#messagepartcontainer
+{
+  height: expression((parseInt(document.documentElement.clientHeight)-90)+'px');
+}
+
+#mailrightcontent
+{
+  width: 100%;
+}
+
+#compose-div
+{
+  height: expression((parseInt(this.parentNode.offsetHeight)-1-parseInt(document.getElementById('compose-headers').offsetHeight))+'px');
+}
+
+#compose-attachments ul li
+{
+  width: 1000px; /* for IE7 */
+}
+
+#compose-attachments li a
+{
+  float: left; /* for IE7 */
+}
+
+#messagelist
+{
+  width: inherit;
+  *width: auto; /* IE6/7 conditional hack */
+  border-collapse: collapse;
+}
+
+#messagelist thead tr td,
+#messagelist tbody tr td
+{
+  height: 18px;
+}
+
+#messagelist tbody tr.unroot td.subject
+{
+  text-decoration: underline;
+}
+
+#messageframe
+{
+  width: expression((parseInt(this.parentNode.offsetWidth)-180)+'px');
+  overflow: hidden;
+}
+
+#countcontrols
+{
+  width: 24em;
+  padding-right: 10px;
+}
+
+body.iframe 
+{
+  width: expression((parseInt(document.documentElement.clientWidth))+'px');
+}
+
+div.message-part pre,
+div.message-htmlpart pre,
+div.message-part div.pre
+{
+  word-wrap: break-word;
+}
+
+#addressscreen
+{
+  width: expression((parseInt(document.documentElement.clientWidth)-245)+'px');
+}
+
+#contacts-table
+{
+  width: expression(document.getElementById('addresslist').clientWidth);
+}
+
+#contacts-box,
+#prefs-box,
+#folder-box
+{
+  width: expression((parseInt(this.parentNode.offsetWidth)-555)+'px');
+  overflow: hidden;
+}
+
+#rcmdraglayer
+{
+  filter: alpha(opacity=82);
+  padding-left: 20px;
+}
+
+div.draglayercopy
+{
+  border-color: #00cc00;
+  background: url(images/messageactions.png) 0 -125px no-repeat #fff;
+}
+
+html.ie8 .draglayercopy:before
+{
+  content: "";
+  display: none;
+}
+
+ul.toolbarmenu
+{
+  margin: 0 0 -4px 0;
+}
+
+.popupmenu ul li,
+ul.toolbarmenu li
+{
+  min-width: auto;
+}
+
+.popupmenu ul li a,
+ul.toolbarmenu li a
+{
+  min-height: auto;
+}
+
+.popupmenu li.block a
+{
+  clear: none;
+  display: inline-block;
+  padding-left: 2px;
+}
+
+#console
+{
+  filter: alpha(opacity=80);
+}
+
+table.records-table thead tr td
+{
+  height: 19px;
+}
+
+#listmenu fieldset
+{
+  margin: 0 4px;
+  padding: 0.8em;
+}
+
+#listcontrols input
+{
+  margin-top: 2px;
+}
+
+#contact-details
+{
+  margin-top: 20px;
+}
+
+#contact-details form {
+  margin-top: -1px;
+}
+
+.contactfieldgroup legend
+{
+       padding: 0 0 0.5em 0;
+       margin-left: -4px;
+}
+
+/* fix "jumping" login form in IE7 */
+#login-form div.boxcontent
+{
+  overflow: hidden;
+}
diff --git a/skins/classic/images/abook_toolbar.gif b/skins/classic/images/abook_toolbar.gif
new file mode 100644 (file)
index 0000000..2e8f4e2
Binary files /dev/null and b/skins/classic/images/abook_toolbar.gif differ
diff --git a/skins/classic/images/abook_toolbar.png b/skins/classic/images/abook_toolbar.png
new file mode 100644 (file)
index 0000000..feb95c0
Binary files /dev/null and b/skins/classic/images/abook_toolbar.png differ
diff --git a/skins/classic/images/blank.gif b/skins/classic/images/blank.gif
new file mode 100644 (file)
index 0000000..7dd464e
Binary files /dev/null and b/skins/classic/images/blank.gif differ
diff --git a/skins/classic/images/buttons/add_act.png b/skins/classic/images/buttons/add_act.png
new file mode 100644 (file)
index 0000000..e94fcd6
Binary files /dev/null and b/skins/classic/images/buttons/add_act.png differ
diff --git a/skins/classic/images/buttons/add_pas.png b/skins/classic/images/buttons/add_pas.png
new file mode 100644 (file)
index 0000000..9f67c52
Binary files /dev/null and b/skins/classic/images/buttons/add_pas.png differ
diff --git a/skins/classic/images/buttons/add_sel.png b/skins/classic/images/buttons/add_sel.png
new file mode 100644 (file)
index 0000000..2a3719f
Binary files /dev/null and b/skins/classic/images/buttons/add_sel.png differ
diff --git a/skins/classic/images/buttons/bg.gif b/skins/classic/images/buttons/bg.gif
new file mode 100644 (file)
index 0000000..be39f4a
Binary files /dev/null and b/skins/classic/images/buttons/bg.gif differ
diff --git a/skins/classic/images/cleardot.png b/skins/classic/images/cleardot.png
new file mode 100644 (file)
index 0000000..98c3bfc
Binary files /dev/null and b/skins/classic/images/cleardot.png differ
diff --git a/skins/classic/images/contactpic.png b/skins/classic/images/contactpic.png
new file mode 100644 (file)
index 0000000..bdb6cdc
Binary files /dev/null and b/skins/classic/images/contactpic.png differ
diff --git a/skins/classic/images/dbutton.png b/skins/classic/images/dbutton.png
new file mode 100644 (file)
index 0000000..7a85e3c
Binary files /dev/null and b/skins/classic/images/dbutton.png differ
diff --git a/skins/classic/images/dimple.png b/skins/classic/images/dimple.png
new file mode 100644 (file)
index 0000000..4de496c
Binary files /dev/null and b/skins/classic/images/dimple.png differ
diff --git a/skins/classic/images/display/icons.gif b/skins/classic/images/display/icons.gif
new file mode 100644 (file)
index 0000000..e6dfb1b
Binary files /dev/null and b/skins/classic/images/display/icons.gif differ
diff --git a/skins/classic/images/display/icons.png b/skins/classic/images/display/icons.png
new file mode 100644 (file)
index 0000000..7bf4278
Binary files /dev/null and b/skins/classic/images/display/icons.png differ
diff --git a/skins/classic/images/display/loading.gif b/skins/classic/images/display/loading.gif
new file mode 100644 (file)
index 0000000..747c656
Binary files /dev/null and b/skins/classic/images/display/loading.gif differ
diff --git a/skins/classic/images/display/loading_blue.gif b/skins/classic/images/display/loading_blue.gif
new file mode 100644 (file)
index 0000000..2ea6b19
Binary files /dev/null and b/skins/classic/images/display/loading_blue.gif differ
diff --git a/skins/classic/images/favicon.ico b/skins/classic/images/favicon.ico
new file mode 100644 (file)
index 0000000..b3bd18c
Binary files /dev/null and b/skins/classic/images/favicon.ico differ
diff --git a/skins/classic/images/googiespell/change_lang.gif b/skins/classic/images/googiespell/change_lang.gif
new file mode 100644 (file)
index 0000000..8145183
Binary files /dev/null and b/skins/classic/images/googiespell/change_lang.gif differ
diff --git a/skins/classic/images/googiespell/indicator.gif b/skins/classic/images/googiespell/indicator.gif
new file mode 100644 (file)
index 0000000..b556bb0
Binary files /dev/null and b/skins/classic/images/googiespell/indicator.gif differ
diff --git a/skins/classic/images/googiespell/ok.gif b/skins/classic/images/googiespell/ok.gif
new file mode 100644 (file)
index 0000000..04727e2
Binary files /dev/null and b/skins/classic/images/googiespell/ok.gif differ
diff --git a/skins/classic/images/googiespell/spellc.gif b/skins/classic/images/googiespell/spellc.gif
new file mode 100644 (file)
index 0000000..6ed9360
Binary files /dev/null and b/skins/classic/images/googiespell/spellc.gif differ
diff --git a/skins/classic/images/icons/attachment.png b/skins/classic/images/icons/attachment.png
new file mode 100644 (file)
index 0000000..0fcf464
Binary files /dev/null and b/skins/classic/images/icons/attachment.png differ
diff --git a/skins/classic/images/icons/blank.gif b/skins/classic/images/icons/blank.gif
new file mode 100644 (file)
index 0000000..7dd464e
Binary files /dev/null and b/skins/classic/images/icons/blank.gif differ
diff --git a/skins/classic/images/icons/collapsed.png b/skins/classic/images/icons/collapsed.png
new file mode 100644 (file)
index 0000000..07cc1ec
Binary files /dev/null and b/skins/classic/images/icons/collapsed.png differ
diff --git a/skins/classic/images/icons/columnpicker.gif b/skins/classic/images/icons/columnpicker.gif
new file mode 100644 (file)
index 0000000..e776519
Binary files /dev/null and b/skins/classic/images/icons/columnpicker.gif differ
diff --git a/skins/classic/images/icons/delete.png b/skins/classic/images/icons/delete.png
new file mode 100644 (file)
index 0000000..f1cf0ae
Binary files /dev/null and b/skins/classic/images/icons/delete.png differ
diff --git a/skins/classic/images/icons/deleted.png b/skins/classic/images/icons/deleted.png
new file mode 100644 (file)
index 0000000..cffb7f5
Binary files /dev/null and b/skins/classic/images/icons/deleted.png differ
diff --git a/skins/classic/images/icons/dot.png b/skins/classic/images/icons/dot.png
new file mode 100644 (file)
index 0000000..99f7365
Binary files /dev/null and b/skins/classic/images/icons/dot.png differ
diff --git a/skins/classic/images/icons/down_small.gif b/skins/classic/images/icons/down_small.gif
new file mode 100644 (file)
index 0000000..f865893
Binary files /dev/null and b/skins/classic/images/icons/down_small.gif differ
diff --git a/skins/classic/images/icons/expanded.png b/skins/classic/images/icons/expanded.png
new file mode 100644 (file)
index 0000000..87e77a4
Binary files /dev/null and b/skins/classic/images/icons/expanded.png differ
diff --git a/skins/classic/images/icons/extwin.png b/skins/classic/images/icons/extwin.png
new file mode 100644 (file)
index 0000000..1ab4d77
Binary files /dev/null and b/skins/classic/images/icons/extwin.png differ
diff --git a/skins/classic/images/icons/flagged.png b/skins/classic/images/icons/flagged.png
new file mode 100644 (file)
index 0000000..98215f6
Binary files /dev/null and b/skins/classic/images/icons/flagged.png differ
diff --git a/skins/classic/images/icons/folders.gif b/skins/classic/images/icons/folders.gif
new file mode 100644 (file)
index 0000000..eb06bd8
Binary files /dev/null and b/skins/classic/images/icons/folders.gif differ
diff --git a/skins/classic/images/icons/folders.png b/skins/classic/images/icons/folders.png
new file mode 100644 (file)
index 0000000..2580fd1
Binary files /dev/null and b/skins/classic/images/icons/folders.png differ
diff --git a/skins/classic/images/icons/forwarded.png b/skins/classic/images/icons/forwarded.png
new file mode 100644 (file)
index 0000000..1ea246f
Binary files /dev/null and b/skins/classic/images/icons/forwarded.png differ
diff --git a/skins/classic/images/icons/forwarded_replied.png b/skins/classic/images/icons/forwarded_replied.png
new file mode 100644 (file)
index 0000000..4830ecf
Binary files /dev/null and b/skins/classic/images/icons/forwarded_replied.png differ
diff --git a/skins/classic/images/icons/glass.gif b/skins/classic/images/icons/glass.gif
new file mode 100644 (file)
index 0000000..9a705b4
Binary files /dev/null and b/skins/classic/images/icons/glass.gif differ
diff --git a/skins/classic/images/icons/glass.png b/skins/classic/images/icons/glass.png
new file mode 100644 (file)
index 0000000..eb1b1dc
Binary files /dev/null and b/skins/classic/images/icons/glass.png differ
diff --git a/skins/classic/images/icons/glass_roll.png b/skins/classic/images/icons/glass_roll.png
new file mode 100644 (file)
index 0000000..b11b598
Binary files /dev/null and b/skins/classic/images/icons/glass_roll.png differ
diff --git a/skins/classic/images/icons/groupactions.gif b/skins/classic/images/icons/groupactions.gif
new file mode 100644 (file)
index 0000000..913c835
Binary files /dev/null and b/skins/classic/images/icons/groupactions.gif differ
diff --git a/skins/classic/images/icons/groupactions.png b/skins/classic/images/icons/groupactions.png
new file mode 100644 (file)
index 0000000..91f84be
Binary files /dev/null and b/skins/classic/images/icons/groupactions.png differ
diff --git a/skins/classic/images/icons/minus.gif b/skins/classic/images/icons/minus.gif
new file mode 100644 (file)
index 0000000..4ec02c8
Binary files /dev/null and b/skins/classic/images/icons/minus.gif differ
diff --git a/skins/classic/images/icons/plus.gif b/skins/classic/images/icons/plus.gif
new file mode 100644 (file)
index 0000000..854b5eb
Binary files /dev/null and b/skins/classic/images/icons/plus.gif differ
diff --git a/skins/classic/images/icons/rename.png b/skins/classic/images/icons/rename.png
new file mode 100644 (file)
index 0000000..7844b00
Binary files /dev/null and b/skins/classic/images/icons/rename.png differ
diff --git a/skins/classic/images/icons/replied.png b/skins/classic/images/icons/replied.png
new file mode 100644 (file)
index 0000000..4a52132
Binary files /dev/null and b/skins/classic/images/icons/replied.png differ
diff --git a/skins/classic/images/icons/reset.gif b/skins/classic/images/icons/reset.gif
new file mode 100644 (file)
index 0000000..a9a53d5
Binary files /dev/null and b/skins/classic/images/icons/reset.gif differ
diff --git a/skins/classic/images/icons/silhouette.png b/skins/classic/images/icons/silhouette.png
new file mode 100644 (file)
index 0000000..ac07735
Binary files /dev/null and b/skins/classic/images/icons/silhouette.png differ
diff --git a/skins/classic/images/icons/sort.gif b/skins/classic/images/icons/sort.gif
new file mode 100644 (file)
index 0000000..f8f2756
Binary files /dev/null and b/skins/classic/images/icons/sort.gif differ
diff --git a/skins/classic/images/icons/unflagged.png b/skins/classic/images/icons/unflagged.png
new file mode 100644 (file)
index 0000000..12023f0
Binary files /dev/null and b/skins/classic/images/icons/unflagged.png differ
diff --git a/skins/classic/images/icons/unread.png b/skins/classic/images/icons/unread.png
new file mode 100644 (file)
index 0000000..31f6406
Binary files /dev/null and b/skins/classic/images/icons/unread.png differ
diff --git a/skins/classic/images/icons/unread_children.png b/skins/classic/images/icons/unread_children.png
new file mode 100644 (file)
index 0000000..45e671d
Binary files /dev/null and b/skins/classic/images/icons/unread_children.png differ
diff --git a/skins/classic/images/icons/up_small.gif b/skins/classic/images/icons/up_small.gif
new file mode 100644 (file)
index 0000000..40deb89
Binary files /dev/null and b/skins/classic/images/icons/up_small.gif differ
diff --git a/skins/classic/images/listheader.gif b/skins/classic/images/listheader.gif
new file mode 100644 (file)
index 0000000..bf77a11
Binary files /dev/null and b/skins/classic/images/listheader.gif differ
diff --git a/skins/classic/images/mail_footer.gif b/skins/classic/images/mail_footer.gif
new file mode 100644 (file)
index 0000000..302b558
Binary files /dev/null and b/skins/classic/images/mail_footer.gif differ
diff --git a/skins/classic/images/mail_footer.png b/skins/classic/images/mail_footer.png
new file mode 100644 (file)
index 0000000..e2f24b2
Binary files /dev/null and b/skins/classic/images/mail_footer.png differ
diff --git a/skins/classic/images/mail_toolbar.gif b/skins/classic/images/mail_toolbar.gif
new file mode 100644 (file)
index 0000000..9856b42
Binary files /dev/null and b/skins/classic/images/mail_toolbar.gif differ
diff --git a/skins/classic/images/mail_toolbar.png b/skins/classic/images/mail_toolbar.png
new file mode 100644 (file)
index 0000000..6ccc9bd
Binary files /dev/null and b/skins/classic/images/mail_toolbar.png differ
diff --git a/skins/classic/images/messageactions.gif b/skins/classic/images/messageactions.gif
new file mode 100644 (file)
index 0000000..b73fbb3
Binary files /dev/null and b/skins/classic/images/messageactions.gif differ
diff --git a/skins/classic/images/messageactions.png b/skins/classic/images/messageactions.png
new file mode 100644 (file)
index 0000000..c09f60f
Binary files /dev/null and b/skins/classic/images/messageactions.png differ
diff --git a/skins/classic/images/messageicons.gif b/skins/classic/images/messageicons.gif
new file mode 100644 (file)
index 0000000..a914a95
Binary files /dev/null and b/skins/classic/images/messageicons.gif differ
diff --git a/skins/classic/images/messageicons.png b/skins/classic/images/messageicons.png
new file mode 100644 (file)
index 0000000..ca7b230
Binary files /dev/null and b/skins/classic/images/messageicons.png differ
diff --git a/skins/classic/images/pagenav.gif b/skins/classic/images/pagenav.gif
new file mode 100644 (file)
index 0000000..a4644a4
Binary files /dev/null and b/skins/classic/images/pagenav.gif differ
diff --git a/skins/classic/images/quota-colors.png b/skins/classic/images/quota-colors.png
new file mode 100644 (file)
index 0000000..4c1f17e
Binary files /dev/null and b/skins/classic/images/quota-colors.png differ
diff --git a/skins/classic/images/quota.gif b/skins/classic/images/quota.gif
new file mode 100644 (file)
index 0000000..9896d4c
Binary files /dev/null and b/skins/classic/images/quota.gif differ
diff --git a/skins/classic/images/quota.png b/skins/classic/images/quota.png
new file mode 100644 (file)
index 0000000..e729d32
Binary files /dev/null and b/skins/classic/images/quota.png differ
diff --git a/skins/classic/images/roundcube_logo.png b/skins/classic/images/roundcube_logo.png
new file mode 100644 (file)
index 0000000..4323c6b
Binary files /dev/null and b/skins/classic/images/roundcube_logo.png differ
diff --git a/skins/classic/images/searchfield.gif b/skins/classic/images/searchfield.gif
new file mode 100644 (file)
index 0000000..969f277
Binary files /dev/null and b/skins/classic/images/searchfield.gif differ
diff --git a/skins/classic/images/tabs-left.gif b/skins/classic/images/tabs-left.gif
new file mode 100644 (file)
index 0000000..c1bf45a
Binary files /dev/null and b/skins/classic/images/tabs-left.gif differ
diff --git a/skins/classic/images/tabs-right.gif b/skins/classic/images/tabs-right.gif
new file mode 100644 (file)
index 0000000..9eba9a3
Binary files /dev/null and b/skins/classic/images/tabs-right.gif differ
diff --git a/skins/classic/images/taskbar.gif b/skins/classic/images/taskbar.gif
new file mode 100644 (file)
index 0000000..b6fc91c
Binary files /dev/null and b/skins/classic/images/taskbar.gif differ
diff --git a/skins/classic/images/taskbar.png b/skins/classic/images/taskbar.png
new file mode 100644 (file)
index 0000000..5fa3660
Binary files /dev/null and b/skins/classic/images/taskbar.png differ
diff --git a/skins/classic/images/taskicons.gif b/skins/classic/images/taskicons.gif
new file mode 100644 (file)
index 0000000..feaa9a1
Binary files /dev/null and b/skins/classic/images/taskicons.gif differ
diff --git a/skins/classic/images/taskicons.png b/skins/classic/images/taskicons.png
new file mode 100644 (file)
index 0000000..feaa9a1
Binary files /dev/null and b/skins/classic/images/taskicons.png differ
diff --git a/skins/classic/images/tree.gif b/skins/classic/images/tree.gif
new file mode 100644 (file)
index 0000000..c78f15e
Binary files /dev/null and b/skins/classic/images/tree.gif differ
diff --git a/skins/classic/images/watermark.gif b/skins/classic/images/watermark.gif
new file mode 100644 (file)
index 0000000..d235d03
Binary files /dev/null and b/skins/classic/images/watermark.gif differ
diff --git a/skins/classic/includes/header.html b/skins/classic/includes/header.html
new file mode 100644 (file)
index 0000000..08d777a
--- /dev/null
@@ -0,0 +1,2 @@
+<roundcube:object name="logo" src="/images/roundcube_logo.png" id="logo" border="0" onclick="location.href='./?_page=1'" />
+<roundcube:object name="message" id="message" />
diff --git a/skins/classic/includes/links.html b/skins/classic/includes/links.html
new file mode 100644 (file)
index 0000000..6d8d03c
--- /dev/null
@@ -0,0 +1,14 @@
+<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" />
+<roundcube:if condition="in_array(env:task, array('mail', 'addressbook', 'settings'))" />
+<link rel="stylesheet" type="text/css" href="/<roundcube:var name="env:task" />.css" />
+<roundcube:endif />
+<roundcube:if condition="browser:ie" />
+<!--[if lte IE 8]><link rel="stylesheet" type="text/css" href="/iehacks.css" /><![endif]-->
+<!--[if lte IE 6]><link rel="stylesheet" type="text/css" href="/ie6hacks.css" /><![endif]-->
+<roundcube:endif />
+<roundcube:if condition="browser:safari" />
+<link rel="stylesheet" type="text/css" href="/safari.css" />
+<roundcube:endif />
\ No newline at end of file
diff --git a/skins/classic/includes/messagetoolbar.html b/skins/classic/includes/messagetoolbar.html
new file mode 100644 (file)
index 0000000..3f4995b
--- /dev/null
@@ -0,0 +1,65 @@
+<div id="messagetoolbar">
+<roundcube:if condition="template:name == 'message'" />
+<roundcube:button command="list" type="link" class="button back" classAct="button back" classSel="button backSel" title="backtolist" content=" " />
+<roundcube:else />
+<roundcube:button command="checkmail" type="link" class="button checkmail" classAct="button checkmail" classSel="button checkmailSel" title="checkmail" content=" " />
+<roundcube:endif />
+<roundcube:button command="compose" type="link" class="button compose" classAct="button compose" classSel="button composeSel" title="writenewmessage" content=" " />
+<roundcube:button command="reply" type="link" class="buttonPas reply" classAct="button reply" classSel="button replySel" title="replytomessage" content=" " />
+<span class="dropbutton">
+<roundcube:button command="reply-all" type="link" class="buttonPas replyAll" classAct="button replyAll" classSel="button replyAllSel" title="replytoallmessage" content=" " />
+<span id="replyallmenulink" onclick="rcmail_ui.show_popup('replyallmenu');return false"></span>
+</span>
+<span class="dropbutton">
+<roundcube:button command="forward" type="link" class="buttonPas forward" classAct="button forward" classSel="button forwardSel" title="forwardmessage" content=" " />
+<span id="forwardmenulink" onclick="rcmail_ui.show_popup('forwardmenu');return false"></span>
+</span>
+<roundcube:button command="delete" type="link" class="buttonPas delete" classAct="button delete" classSel="button deleteSel" title="deletemessage" content=" " />
+<roundcube:container name="toolbar" id="messagetoolbar" />
+<roundcube:if condition="template:name == 'mail'" />
+<roundcube:button name="markmenulink" id="markmenulink" type="link" class="button markmessage" title="markmessages" onclick="rcmail_ui.show_popup('markmenu');return false" content=" " />                                                                   
+<roundcube:endif />
+<roundcube:button name="messagemenulink" id="messagemenulink" type="link" class="button messagemenu" title="moreactions" onclick="rcmail_ui.show_popup('messagemenu');return false" content=" " />
+<roundcube:if condition="template:name == 'message'" />
+<roundcube:object name="mailboxlist" type="select" noSelection="moveto" maxlength="25" onchange="rcmail.command('moveto', this.options[this.selectedIndex].value)" class="mboxlist" folder_filter="mail" />
+<roundcube:endif />
+</div>
+
+<div id="forwardmenu" class="popupmenu">
+    <ul>
+        <li><roundcube:button command="forward" 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: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: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" label="editasnew" classAct="editlink active" /></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:container name="messagemenu" id="messagemenu" />
+  </ul>
+</div>
+
+<roundcube:if condition="template:name == 'mail'" />
+<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:container name="markmenu" id="markmessagemenu" />
+  </ul>
+</div>
+<roundcube:endif />
diff --git a/skins/classic/includes/settingstabs.html b/skins/classic/includes/settingstabs.html
new file mode 100644 (file)
index 0000000..0aea80b
--- /dev/null
@@ -0,0 +1,8 @@
+<div id="tabsbar">
+<span id="settingstabdefault" class="tablink"><roundcube:button command="preferences" type="link" label="preferences" title="editpreferences" /></span>
+<span id="settingstabfolders" class="tablink"><roundcube:button command="folders" type="link" label="folders" title="managefolders" class="tablink" /></span>
+<span id="settingstabidentities" class="tablink"><roundcube:button command="identities" type="link" label="identities" title="manageidentities" class="tablink" /></span>
+<span id="settingstababout" class="tablink"><roundcube:button command="about" type="link" label="about" title="about" class="tablink" /></span>
+<roundcube:container name="tabs" id="tabsbar" />
+<script type="text/javascript"> if (window.rcmail) rcmail.add_onload(rcube_init_settings_tabs); </script>
+</div>
diff --git a/skins/classic/includes/taskbar.html b/skins/classic/includes/taskbar.html
new file mode 100644 (file)
index 0000000..dfb547b
--- /dev/null
@@ -0,0 +1,7 @@
+<div id="taskbar">
+<roundcube:button command="mail" label="mail" class="button-mail" />
+<roundcube:button command="addressbook" label="addressbook" class="button-addressbook" />
+<roundcube:container name="taskbar" id="taskbar" />
+<roundcube:button command="settings" label="settings" class="button-settings" />
+<roundcube:button command="logout" label="logout" class="button-logout" />
+</div>
\ No newline at end of file
diff --git a/skins/classic/mail.css b/skins/classic/mail.css
new file mode 100644 (file)
index 0000000..f4d7f2a
--- /dev/null
@@ -0,0 +1,1529 @@
+/***** Roundcube|Mail mail task styles *****/
+
+
+#messagetoolbar
+{
+  position: absolute;
+  top: 47px;
+  left: 205px;
+  right: 10px;
+  height: 35px;
+  min-width: 650px;
+  white-space: nowrap;
+/*  border: 1px solid #cccccc; */
+}
+
+#messagetoolbar a,
+#messagetoolbar select
+{
+  display: block;
+  float: left;
+  padding-right: 10px;
+}
+
+#messagetoolbar a.button,
+#messagetoolbar a.buttonPas {
+  display: block;
+  float: left;
+  width: 32px;
+  height: 32px;
+  padding: 0;
+  margin: 0 5px;
+  overflow: hidden;
+  background: url(images/mail_toolbar.png) 0 0 no-repeat transparent;
+  opacity: 0.99; /* this is needed to make buttons appear correctly in Chrome */
+}
+
+#messagetoolbar a.buttonPas {
+  opacity: 0.35;
+}
+
+#messagetoolbar a.button.selected {
+  background-color: #ddd;
+  margin-left: 4px;
+  margin-right: 4px;
+  margin-top: -1px;
+  border: 1px solid #ccc;
+  border-radius: 3px;
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+}
+
+#messagetoolbar a.checkmailSel {
+  background-position: 0 -32px;
+}
+
+#messagetoolbar a.back {
+  background-position: -32px 0;
+}
+
+#messagetoolbar a.backSel {
+  background-position: -32px -32px;
+}
+
+#messagetoolbar a.compose {
+  background-position: -64px 0;
+}
+
+#messagetoolbar a.composeSel {
+  background-position: -64px -32px;
+}
+
+#messagetoolbar a.reply {
+  background-position: -96px 0;
+}
+
+#messagetoolbar a.replySel {
+  background-position: -96px -32px;
+}
+
+#messagetoolbar a.replyAll {
+  background-position: -128px 0;
+}
+
+#messagetoolbar a.replyAllSel {
+  background-position: -128px -32px;
+}
+
+#messagetoolbar a.forward {
+  background-position: -160px 0;
+}
+
+#messagetoolbar a.forwardSel {
+  background-position: -160px -32px;
+}
+
+#messagetoolbar a.delete {
+  background-position: -192px 0;
+}
+
+#messagetoolbar a.deleteSel {
+  background-position: -192px -32px;
+}
+
+#messagetoolbar a.markmessage {
+  background-position: -256px 0;
+}
+
+#messagetoolbar a.messagemenu {
+  background-position: -288px 0;
+}
+
+#messagetoolbar a.spellcheck {
+  background-position: -384px 0;
+}
+
+#messagetoolbar a.spellcheckSel {
+  background-position: -384px -32px;
+}
+
+#messagetoolbar a.attach {
+  background-position: -352px 0;
+}
+
+#messagetoolbar a.attachSel {
+  background-position: -352px -32px;
+}
+
+#messagetoolbar a.insertsig {
+  background-position: -448px 0;
+}
+
+#messagetoolbar a.insertsigSel {
+  background-position: -448px -32px;
+}
+
+#messagetoolbar a.savedraft {
+  background-position: -322px 0;
+}
+
+#messagetoolbar a.savedraftSel {
+  background-position: -322px -32px;
+}
+
+#messagetoolbar a.send {
+  background-position: -416px 0;
+}
+
+#messagetoolbar a.sendSel {
+  background-position: -416px -32px;
+}
+
+#messagetoolbar select.mboxlist
+{
+  position: relative;
+  margin: 0 8px;
+  top: 7px;
+}
+
+#messagetoolbar select.mboxlist option
+{
+  padding-left: 15px;
+}
+
+#messagetoolbar select.mboxlist option[value=""]
+{
+  padding-left: 2px;
+}
+
+#messagemenu li a.active:hover,
+#markmessagemenu li a.active:hover
+{
+  color: #fff;
+  background-color: #c00;
+}
+
+#messagemenu li a
+{
+  background: url(images/messageactions.png) no-repeat 7px 0;
+  background-position: 7px 20px;
+}
+
+#messagemenu li a.printlink
+{
+  background-position: 7px 1px;
+}
+
+#messagemenu li a.downloadlink
+{
+  background-position: 7px -17px;
+}
+
+#messagemenu li a.sourcelink
+{
+  background-position: 7px -35px;
+}
+
+#messagemenu li a.openlink
+{
+  background-position: 7px -53px;
+}
+
+#messagemenu li a.editlink
+{
+  background-position: 7px -71px;
+}
+
+#markmessagemenu li a,
+#compose-attachments li a
+{
+  background: url(images/messageicons.png) no-repeat;
+}
+
+#markmessagemenu li a.readlink
+{
+  background-position: 7px -51px;
+}
+
+#markmessagemenu li a.unreadlink
+{
+  background-position: 7px -119px;
+}
+
+#markmessagemenu li a.flaggedlink
+{
+  background-position: 7px -153px;
+}
+
+#markmessagemenu li a.unflaggedlink
+{
+  background-position: 7px -136px;
+}
+
+#searchfilter
+{
+  white-space: nowrap;
+  position: absolute;
+  right: 198px;
+  vertical-align: middle;
+}
+
+#searchfilter label
+{
+  font-size: 11px;
+}
+
+#mailleftcontainer
+{
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  width: 195px;
+}
+
+#mailrightcontainer
+{
+  position: absolute;
+  top: 0;
+  left: 170px;
+  bottom: 0;
+  right: 0;
+  min-width: 600px;
+}
+
+#mailrightcontent
+{
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+}
+
+#messagepartcontainer
+{
+  position: absolute;
+  top: 80px;
+  left: 20px;
+  right: 20px;
+  bottom: 20px;
+}
+
+#mailcontframe
+{
+  position: absolute;
+  width: 100%;
+  top: 0;
+  bottom: 0;
+  border: 1px solid #999999;
+  background-color: #F9F9F9;
+  overflow: hidden;
+}
+
+#mailpreviewframe
+{
+  position: absolute;
+  width: 100%;
+  top: 205px;
+  bottom: 0px;
+  border: 1px solid #999999;
+  background-color: #F9F9F9;
+}
+
+#messagecontframe
+{
+  position: relative;
+  top: 0px;
+  left: 0px;
+  right: 0px;
+  bottom: 0px;
+  width: 100%;
+  height: 100%;
+  min-height: 100%; /* Chrome 14 bug */
+}
+
+#messagepartframe
+{
+  width: 100%;
+  height: 100%;
+  min-height: 100%; /* Chrome 14 bug */
+  border: 1px solid #999999;
+  background-color: #F9F9F9;
+}
+
+
+#partheader
+{
+  position: absolute;
+  top: 10px;
+  left: 220px;
+  right: 20px;
+  height: 40px;
+}
+
+#partheader table td
+{
+  padding-left: 2px;
+  padding-right: 4px;
+  vertical-align: middle;
+  font-size: 11px;
+}
+
+#partheader table td.title
+{
+  color: #666666;
+  font-weight: bold;
+}
+
+
+/** mailbox list styles */
+
+#mailboxlist-container
+{
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  bottom: 0;
+  border: 1px solid #999;
+  background-color: #F9F9F9;
+}
+
+#mailboxlist
+{
+  position:relative;
+  height: auto;
+  margin: 0px;
+  padding: 0px;
+  list-style-image: none;
+  list-style-type: none;
+  overflow: hidden;
+  white-space: nowrap;
+  background-color: #FFF;
+}
+
+#mailboxlist li
+{
+  display: block;
+  position: relative;
+  font-size: 11px;
+  background: url(images/icons/folders.png) 5px 0 no-repeat;
+  border-bottom: 1px solid #EBEBEB;
+}
+
+#mailboxlist li ul li:last-child
+{
+  border-bottom: none;
+}
+
+#mailboxlist li div
+{
+  position: absolute;
+  left: 8px !important;
+  left: -16px;
+  top: 1px;
+  width: 14px;
+  height: 16px;
+}
+
+#mailboxlist li div.collapsed,
+#mailboxlist li div.expanded
+{
+  cursor: pointer;
+}
+
+#mailboxlist li div.collapsed
+{
+  background: url(images/icons/collapsed.png) bottom right no-repeat;
+}
+
+#mailboxlist li div.expanded
+{
+  background: url(images/icons/expanded.png) bottom right no-repeat;
+}
+
+#mailboxlist li.inbox
+{
+  background-position: 5px -18px;
+}
+
+#mailboxlist li.drafts
+{
+  background-position: 5px -37px;
+}
+
+#mailboxlist li.sent
+{
+  background-position: 5px -54px;
+}
+
+#mailboxlist li.junk
+{
+  background-position: 5px -73px;
+}
+
+#mailboxlist li.trash
+{
+  background-position: 5px -91px;
+}
+
+#mailboxlist li a
+{
+  cursor: default;
+  display: block;
+  position: relative;
+  padding-left: 25px;
+  padding-top: 2px;
+  padding-bottom: 2px;
+  text-decoration: none;
+  height: 15px;
+}
+
+#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;
+  padding-left: 15px;
+  background-position: 25px 1px;
+  background-color: #FFF;
+  color: blue;
+  font-weight: normal;
+}
+
+#listcontrols
+{
+  position: relative;
+  white-space: nowrap;
+  line-height: 22px;
+  padding: 0 4px;
+  width: auto;
+  min-width: 300px;
+}
+
+#listcontrols a,
+#listcontrols span
+{
+  display: block;
+  float: left;
+  font-size: 11px;
+}
+
+#listcontrols span input
+{
+  vertical-align: middle;
+}
+
+#listcontrols a.button,
+#listcontrols a.buttonPas
+{
+  display: block;
+  float: left;
+  width: 15px;
+  height: 15px;
+  padding: 0;
+  margin-top: 4px;
+  margin-right: 2px;
+  overflow: hidden;
+  background: url(images/mail_footer.png) 0 0 no-repeat transparent;
+  opacity: 0.99; /* this is needed to make buttons appear correctly in Chrome */
+}
+
+#listcontrols a.buttonPas
+{
+  opacity: 0.35;
+}
+
+#listcontrols a.all {
+  background-position: -30px 0;
+}
+
+#listcontrols a.allsel {
+  background-position: -30px -15px;
+}
+
+#listcontrols a.page {
+  background-position: -135px 0;
+}
+
+#listcontrols a.pagesel {
+  background-position: -135px -15px;
+}
+
+#listcontrols a.unread {
+  background-position: -45px 0;
+}
+
+#listcontrols a.unreadsel {
+  background-position: -45px -15px;
+}
+
+#listcontrols a.invert {
+  background-position: -60px 0;
+}
+
+#listcontrols a.invertsel {
+  background-position: -60px -15px;
+}
+
+#listcontrols a.none {
+  background-position: -75px 0;
+}
+
+#listcontrols a.nonesel {
+  background-position: -75px -15px;
+}
+
+#listcontrols a.expand-all {
+  background-position: -90px 0;
+}
+
+#listcontrols a.expand-allsel {
+  background-position: -90px -15px;
+}
+
+#listcontrols a.collapse-all {
+  background-position: -105px 0;
+}
+
+#listcontrols a.collapse-allsel {
+  background-position: -105px -15px;
+}
+
+#listcontrols a.expand-unread {
+  background-position: -120px 0;
+}
+
+#listcontrols a.expand-unreadsel {
+  background-position: -120px -15px;
+}
+
+#countcontrols
+{
+  position: absolute;
+  top: 4px;
+  right: 4px;
+  white-space: nowrap;
+  font-size: 11px;
+}
+
+#countcontrols a.button,
+#countcontrols a.buttonPas
+{
+  float: right;
+}
+
+
+/** message list styles */
+
+body.messagelist
+{
+  margin: 0px;
+  background-color: #F9F9F9;
+}
+
+#messagelist
+{
+  width: 100%;
+  display: table;
+  table-layout: fixed;
+}
+
+#messagelist thead tr td
+{
+  height: 20px;
+  padding: 0 4px 0 2px;
+  vertical-align: middle;
+  border-bottom: 1px solid #999999;
+  color: #333333;
+  background: url(images/listheader.gif) top left repeat-x #CCC;
+  font-size: 11px;
+  font-weight: bold;
+}
+
+#messagelist thead tr td.sortedASC,
+#messagelist thead tr td.sortedDESC
+{
+  background-position: 0 -26px;
+}
+
+#messagelist thead tr td.sortedASC a
+{
+  background: url(images/icons/sort.gif) right 0 no-repeat;
+}
+
+#messagelist thead tr td.sortedDESC a
+{
+  background: url(images/icons/sort.gif) right -14px no-repeat;
+}
+
+#messagelist thead tr td a
+{
+  display: block;
+  width: auto !important;
+  width: 100%;
+  color: #333333;
+  text-decoration: none;
+}
+
+#messagelist thead tr td.size
+{
+  text-align: left;
+}
+
+#messagelist thead tr td.subject
+{
+  padding-left: 18px;
+  width: 99%;
+}
+
+#messagelist tbody tr td
+{
+  height: 20px;
+  padding: 0;
+  font-size: 11px;
+  overflow: hidden;
+  vertical-align: middle;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+  border-bottom: 1px solid #EBEBEB;
+  cursor: default;
+}
+
+#messagelist tbody tr td a
+{
+  color: #000;
+  text-decoration: none;
+  white-space: nowrap;
+  cursor: inherit;
+}
+
+#messagelist td img
+{
+  vertical-align: middle;
+  display: inline-block;
+}
+
+#messagelist tbody tr td.flag,
+#messagelist tbody tr td.status,
+#messagelist tbody tr td.subject span.status
+{
+  cursor: pointer;
+}
+
+#messagelist tr td.flag span,
+#messagelist tr td.status span,
+#messagelist tr td.attachment span,
+#messagelist tr td.priority span
+{
+  display: block;
+  width: 15px;
+}
+
+#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
+{
+  display: inline-block;
+  vertical-align: middle;
+  height: 17px;
+  width: 15px;
+  background: url(images/messageicons.png) center no-repeat;
+}
+
+#messagelist tr td.attachment span.attachment
+{
+  background-position: 0 -170px;
+}
+
+#messagelist tr td.attachment span.report
+{
+  background-position: 0 -255px;
+}
+
+#messagelist tr td.priority span.priority
+{
+  background-position: 0 -309px;
+}
+
+#messagelist tr td.priority span.prio5
+{
+  background-position: 0 -358px;
+}
+
+#messagelist tr td.priority span.prio4
+{
+  background-position: 0 -340px;
+}
+
+#messagelist tr td.priority span.prio3
+{
+  background-position: 0 -324px;
+}
+
+#messagelist tr td.priority span.prio2
+{
+  background-position: 0 -309px;
+}
+
+#messagelist tr td.priority span.prio1
+{
+  background-position: 0 -290px;
+}
+
+#messagelist tr td.flag span.flagged
+{
+  background-position: 0 -153px;
+}
+
+#messagelist tr td.flag span.unflagged:hover
+{
+  background-position: 0 -136px;
+}
+
+#messagelist tr td.subject span.msgicon,
+#messagelist tr td.subject span.unreadchildren
+{
+  background-position: 0 -51px;
+  margin: 0 2px;
+}
+
+#messagelist tr td.subject span.replied
+{
+  background-position: 0 -85px;
+}
+
+#messagelist tr td.subject span.forwarded
+{
+  background-position: 0 -68px;
+}
+
+#messagelist tr td.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
+{
+  background-position: 0 17px; /* no icon */
+}
+
+#messagelist tr td.status span.msgicon:hover
+{
+  background-position: 0 -272px;
+}
+
+#messagelist tr td.status span.deleted,
+#messagelist tr td.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
+{
+  background-position: 0 -119px;
+}
+
+#messagelist tr td div.collapsed
+{
+  background-position: 0 -221px;
+  cursor: pointer;
+}
+
+#messagelist tr td div.expanded
+{
+  background-position: 0 -204px;
+  cursor: pointer;
+}
+
+#messagelist tr td.threads div.listmenu
+{
+  background-position: 0 -238px;
+  cursor: pointer;
+}
+
+#messagelist tbody tr td.subject
+{
+  width: 99%;
+}
+
+#messagelist tbody tr td.subject a
+{
+  cursor: default;
+  vertical-align: middle; /* #1487091 */
+}
+
+/* thread parent message with unread children */
+#messagelist tbody tr.unroot td.subject a
+{
+  text-decoration: underline;
+}
+
+#messagelist tr td.attachment,
+#messagelist tr td.threads,
+#messagelist tr td.status,
+#messagelist tr td.flag,
+#messagelist tr td.priority
+{
+  width: 17px;
+  padding: 0 0 0 2px;
+}
+
+#messagelist tr td.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
+{
+  width: 180px;
+  padding: 0 2px;
+}
+
+#messagelist tr td.date
+{
+  width: 118px;
+  padding: 0 2px;
+}
+
+#messagelist tr.message
+{
+  background-color: #FFF;
+}
+
+#messagelist tr.unread
+{
+  font-weight: bold;
+  background-color: #FFFFFF;
+}
+
+#messagelist tr.flagged td,
+#messagelist tr.flagged td a
+{
+  color: #CC0000;
+}
+
+#messagelist tr.selected td
+{
+  color: #FFFFFF;
+  background-color: #CC3333;
+}
+
+#messagelist tr.unfocused td
+{
+  color: #FFFFFF;
+  background-color: #929292;
+}
+
+#messagelist tr.selected td a
+{
+  color: #FFFFFF;
+}
+
+#messagelist tr.unfocused td a
+{
+  color: #FFFFFF;
+}
+
+#messagelist tr.deleted td,
+#messagelist tr.deleted td a
+{
+  color: #CCCCCC;
+}
+
+#listmenu
+{
+  padding: 6px;
+}
+
+#listmenu legend
+{
+  color: #999999;
+}
+
+#listmenu fieldset
+{
+  border: 1px solid #999999;
+  margin: 0 5px;
+  float: left;
+}
+
+#listmenu div
+{
+  padding: 8px 0 3px 0;
+  text-align: center;
+  clear: both;
+}
+
+/***** tree indicators *****/
+
+td span.branch div
+{
+  float: left;
+  height: 16px;
+}
+
+td span.branch div.tree
+{
+  height: 17px;
+  width: 15px;
+  background: url(images/tree.gif) 0px 0px no-repeat;
+}
+
+td span.branch div.l1
+{
+  background-position: 0px 0px; /* L */
+}
+
+td span.branch div.l2
+{
+  background-position: -30px 0px; /* | */
+}
+
+td span.branch div.l3
+{
+  background-position: -15px 0px; /* |- */
+}
+
+
+/** message view styles */
+
+#messageframe
+{
+  position: absolute;
+  top: 0;
+  left: 180px;
+  right: 0;
+  bottom: 0;
+  border: 1px solid #999;
+  background-color: #FFF;
+  overflow: auto;
+  z-index: 1;
+}
+
+div.messageheaderbox
+{
+  margin: -14px 8px 0px 8px;
+  border: 1px solid #ccc;
+}
+
+table.headers-table
+{
+  width: 100%;
+  background-color: #EBEBEB;
+}
+
+#messagebody #full-headers,
+#messagebody table.headers-table
+{
+  width: auto;
+  margin: 6px 8px;
+  background-color: #F4F4F4;
+}
+
+table.headers-table tr td
+{
+  font-size: 11px;
+  border-bottom:1px solid #FFFFFF;
+}
+
+table.headers-table tr td.header-title
+{
+  width: 1%;
+  color: #666666;
+  font-weight: bold;
+  text-align: right;
+  white-space: nowrap;
+  padding: 0 4px 0 8px;
+}
+
+table.headers-table tr td.header
+{
+  width: 99%;
+}
+
+table.headers-table tr td.subject
+{
+  font-weight: bold;
+}
+
+table.headers-table tr td.header span
+{
+  white-space: nowrap;
+}
+
+#attachment-list
+{
+  margin: 0;
+  padding: 0 4px 0 8px;
+  min-height: 16px;
+  list-style-image: none;
+  list-style-type: none;
+  background: url(images/icons/attachment.png) 4px 2px no-repeat #DFDFDF;
+}
+
+#messageframe #attachment-list
+{
+  border-bottom: 1px solid #ccc;
+}
+
+.messageheaderbox #attachment-list
+{
+  border-top: 1px solid #ccc;
+}
+
+#attachment-list:after
+{
+  content: ".";
+  display: block;
+  height: 0;
+  font-size: 0;
+  clear: both;
+  visibility: hidden;
+}
+
+#attachment-list li
+{
+  float: left;
+  height: 18px;
+  font-size: 11px;
+  padding: 2px 0px 0px 15px;
+  white-space: nowrap;
+}
+
+#attachment-list li a
+{
+  text-decoration: none;
+}
+
+#attachment-list li a:hover
+{
+  text-decoration: underline;
+}
+
+#messagebody
+{
+  position:relative;
+  padding-bottom: 10px;
+  background-color: #FFFFFF;
+}
+
+div.message-part,
+div.message-htmlpart
+{
+  padding: 10px 8px;
+  border-top: 1px solid #ccc;
+/*  overflow: hidden; */
+}
+
+#messagebody div:first-child
+{
+  border-top: 0;
+}
+
+div.message-part a,
+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
+{
+  color: #666666;
+}
+
+div.message-part blockquote
+{
+  color: blue;
+  border-left: 2px solid blue;
+  border-right: 2px solid blue;
+  background-color: #F6F6F6;
+  margin: 2px 0px;
+  padding: 1px 8px 1px 10px;
+}
+
+div.message-part blockquote blockquote
+{
+  color: green;
+  border-left: 2px solid green;
+  border-right: 2px solid green;
+}
+
+div.message-part blockquote blockquote blockquote
+{
+  color: #990000;
+  border-left: 2px solid #bb0000;
+  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;
+}
+
+#message-objects div,
+#messagebody span.part-notice
+{
+  margin: 8px;
+  min-height: 20px;
+  padding: 10px 10px 6px 46px;
+}
+
+#message-objects div a,
+#messagebody span.part-notice a
+{
+  color: #666666;
+  padding-left: 10px;
+}
+
+#message-objects div a:hover,
+#messagebody span.part-notice a:hover
+{
+  color: #333333;
+}
+
+#messageviewlink
+{
+  position: absolute;
+  top: 8px;
+  right: 10px;
+  width: 15px;
+  height: 15px;
+  border: 0;
+}
+
+#full-headers
+{
+  color: #666666;
+  text-align: center;
+  padding: 2px 6px;
+  border-bottom: 1px solid #ccc;
+  background-color: #EBEBEB;
+}
+
+.messageheaderbox #full-headers
+{
+  border-bottom: 0;
+}
+
+div.more-headers
+{
+  cursor: pointer;
+  height: 8px;
+  border-bottom: 0;
+}
+
+div.show-headers
+{
+  background: url(images/icons/down_small.gif) no-repeat center;
+}
+
+div.hide-headers
+{
+  background: url(images/icons/up_small.gif) no-repeat center;
+}
+
+#headers-source
+{
+  margin: 2px 0;
+  padding: 0.5em;
+  height: 145px;
+  background: white;
+  overflow: auto;
+  font-size: 11px;
+  border: 1px solid #CCC;
+  display: none;
+  text-align: left;
+  color: #333;
+}
+
+
+/** message compose styles */
+
+#compose-container
+{
+  position: absolute;
+  top: 0;
+  left: 185px;
+  right: 0;
+  bottom: 0;
+  margin: 0;
+}
+
+#compose-div
+{
+  position: absolute;
+  top: 85px;
+  bottom: 0;
+  margin: 0;
+  width: 100%;
+}
+
+#compose-div .boxfooter
+{
+  height: 22px;
+  background: none;
+  border-top: 0;
+}
+
+#compose-div .boxlistcontent
+{
+  bottom: 23px;
+}
+
+#compose-body
+{
+  position: absolute;
+  left: 0;
+  right: 0;
+  top: 0;
+  bottom: 0;
+  margin: 0;
+  font-size: 9pt;
+  font-family: monospace;
+  border: 1px solid #999;
+  resize: none;
+}
+
+#compose-body_tbl
+{
+  border: 1px solid #999;
+}
+
+#compose-body_tbl td
+{
+  border: none;
+}
+
+#compose-body_tbl tr.mceFirst td.mceToolbar
+{
+  border-bottom: 1px solid #ccc;
+}
+
+#compose-headers
+{
+  width: 100%;
+}
+
+#compose-headers td.editfield
+{
+  padding-right: 8px;
+  width: 95%;
+}
+
+#compose-headers td.top
+{
+  vertical-align: top;
+}
+
+#compose-headers td.title,
+#compose-subject td.title
+{
+  width: 80px !important;
+  font-size: 11px;
+  font-weight: bold;
+  padding-right: 10px;
+  white-space: nowrap;
+  color: #666;
+}
+
+#compose-headers td textarea,
+#compose-headers td input
+{
+  resize: none;
+  width: 100%;
+  border: 1px solid #999;
+}
+
+#compose-headers td textarea
+{
+  height: 32px;
+}
+
+input.from_address
+{
+  width: 80% !important;
+}
+
+#compose-cc,
+#compose-bcc,
+#compose-replyto,
+#compose-followupto
+{
+  display: none;
+}
+
+#compose-editorfooter
+{
+  position: absolute;
+  right: 0;
+  bottom: 0;
+  text-align: right;
+}
+
+#compose-editorfooter label
+{
+  font-size: 11px;
+  font-weight: bold;
+  color: #666;
+}
+
+#compose-buttons
+{
+  position: absolute;
+  left: 0;
+  bottom: 0;
+  width: auto;
+}
+
+#compose-attachments
+{
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  width: 175px;
+  border: 1px solid #999;
+  background-color: #F9F9F9;
+}
+
+#compose-attachments ul
+{
+  margin: 0px;
+  padding: 0px;
+  background-color: #FFF;
+  list-style-image: none;
+  list-style-type: none;
+}
+
+#compose-attachments ul li
+{
+  height: 18px;
+  font-size: 11px;
+  padding-left: 2px;
+  padding-top: 2px;
+  padding-right: 4px;
+  border-bottom: 1px solid #EBEBEB;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+}
+
+#compose-attachments li a
+{
+  text-indent: -5000px;
+  width: 17px;
+  height: 16px;
+  display: inline-block;
+  text-decoration: none;
+}
+
+#compose-attachments li img
+{
+  vertical-align: middle;
+}
+
+#compose-attachments li a.delete,
+#compose-attachments li a.cancelupload
+{
+  background-position: 0px -392px;
+}
+
+#compose-attachments li span
+{
+  line-height: 18px;
+  vertical-align: middle;
+}
+
+#attachment-form
+{
+  padding: 6px;
+}
+
+#attachment-form div
+{
+  padding: 2px;
+}
+
+#attachment-form div.buttons
+{
+  margin-top: 4px;
+}
+
+#quota
+{
+  position: absolute;
+  top: 3px;
+  right: 8px;
+  width: 100px;
+}
+
+#quotaimg
+{
+  position: absolute;
+  top: 3px;
+  right: 6px;
+  z-index: 101;
+}
diff --git a/skins/classic/pngbehavior.htc b/skins/classic/pngbehavior.htc
new file mode 100644 (file)
index 0000000..fb5f1c8
--- /dev/null
@@ -0,0 +1,84 @@
+<public:component lightWeight="true">
+<public:attach event="onpropertychange" onevent="propertyChanged()" />
+<public:attach event="onbeforeprint" onevent="beforePrint()" for="window"/>
+<public:attach event="onafterprint" onevent="afterPrint()" for="window"/>
+<script>
+
+/*
+ * PNG Behavior
+ *
+ * This script was created by Erik Arvidsson (http://webfx.eae.net/contact.html#erik)
+ * for WebFX (http://webfx.eae.net)
+ * Copyright 2002-2004
+ *
+ * For usage see license at http://webfx.eae.net/license.html
+ *
+ * Version: 1.02
+ * Created: 2001-??-?? First working version
+ * Updated: 2002-03-28 Fixed issue when starting with a non png image and
+ *                      switching between non png images
+ *          2003-01-06 Fixed RegExp to correctly work with IE 5.0x
+ *          2004-05-09  When printing revert to original
+ *
+ */
+
+var supported = /MSIE ((5\.5)|6)/.test(navigator.userAgent) && navigator.platform == "Win32",
+  realSrc,
+  blankSrc = "skins/default/images/blank.gif",
+  isPrinting = false;
+
+if (supported) fixImage();
+
+function propertyChanged() {
+       if (!supported || isPrinting) return;
+
+       var pName = event.propertyName;
+       if (pName != "src") return;
+       // if not set to blank
+       if (!new RegExp(blankSrc).test(src))
+               fixImage();
+};
+
+function fixImage() {
+       // get src
+       var src = element.src;
+
+       // check for real change
+       if (src == realSrc && /\.png$/i.test(src)) {
+               element.src = blankSrc;
+               return;
+       }
+
+       if ( ! new RegExp(blankSrc).test(src)) {
+               // backup old src
+               realSrc = src;
+       }
+
+       // test for png
+       if (/\.png$/i.test(realSrc)) {
+               // set blank image
+               element.src = blankSrc;
+               // set filter
+               element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft." +
+                                       "AlphaImageLoader(src='" + src + "',sizingMethod='scale')";
+       }
+       else {
+               // remove filter
+               element.runtimeStyle.filter = "";
+       }
+}
+
+function beforePrint() {
+       isPrinting = true;
+       element.src = realSrc;
+       element.runtimeStyle.filter = "";
+       realSrc = null;
+}
+
+function afterPrint() {
+       isPrinting = false;
+       fixImage();
+}
+
+</script>
+</public:component>
diff --git a/skins/classic/print.css b/skins/classic/print.css
new file mode 100644 (file)
index 0000000..129770d
--- /dev/null
@@ -0,0 +1,137 @@
+/***** Roundcube|Mail message print styles *****/
+
+body
+{
+  font-family: "Lucida Grande", Verdana, Arial, Helvetica, sans-serif;
+  background-color: #ffffff;
+  color: #000000;
+  margin: 2mm;
+}
+
+body, td, th, span, div, p
+{
+  font-size: 9pt;
+  color: #000000;
+}
+
+h3
+{
+  font-size: 18px;
+  color: #000000;
+}
+
+a, a:active, a:visited
+{
+  color: #000000;
+}
+
+body > #logo
+{
+  float: right;
+  margin: 0 5mm 3mm 5mm;
+}
+
+table.headers-table
+{
+  table-layout: fixed;
+  margin-top: 14px;
+}
+
+table.headers-table tr td
+{
+  font-size: 9pt;
+}
+
+table.headers-table td.header-title
+{
+  color: #666666;
+  font-weight: bold;
+  text-align: right;
+  vertical-align: top;
+  padding-right: 4mm;
+  white-space: nowrap;
+}
+
+table.headers-table tr td.subject
+{
+  width: 90%;
+  font-weight: bold;
+}
+
+#attachment-list
+{
+  margin-top: 3mm;
+  padding-top: 3mm;
+  border-top: 1pt solid #cccccc;
+}
+
+#attachment-list li
+{
+  font-size: 9pt;
+}
+
+#attachment-list li a
+{
+  text-decoration: none;
+}
+
+#attachment-list li a:hover
+{
+  text-decoration: underline;
+}
+
+#messagebody
+{
+  margin-top: 5mm;
+  border-top: none;
+}
+
+div.message-part
+{
+  padding: 2mm;
+  margin-top: 5mm;
+  margin-bottom: 5mm;
+  border-top: 1pt solid #cccccc;
+}
+
+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) */
+}
+
+div.message-part blockquote
+{
+  color: blue;
+  border-left: 2px solid blue;
+  border-right: 2px solid blue;
+  background-color: #F6F6F6;
+  margin: 2px 0px;
+  padding: 1px 8px 1px 10px;
+}
+
+div.message-part blockquote blockquote
+{
+  color: green;
+  border-left: 2px solid green;
+  border-right: 2px solid green;
+}
+
+div.message-part blockquote blockquote blockquote
+{
+  color: #990000;
+  border-left: 2px solid #bb0000;
+  border-right: 2px solid #bb0000;
+}
diff --git a/skins/classic/safari.css b/skins/classic/safari.css
new file mode 100644 (file)
index 0000000..a1be85a
--- /dev/null
@@ -0,0 +1,22 @@
+body
+{
+  height: 100%;
+}
+
+html>body*#messagelist[id$="messagelist"]:not([class="none"]) { width: 99.8%; }
+html>body*#messagelist[id$="messagelist"]:not([class="none"]) tr td.flag,
+html>body*#messagelist[id$="messagelist"]:not([class="none"]) tr td.icon { width: 20px; }
+html>body*input[type$="file"]:not([class="none"]) { background-color: transparent; border: 0; }
+
+div.message-part pre,
+div.message-htmlpart pre,
+div.message-part div.pre
+{
+  word-wrap: break-word;
+}
+
+#messagelist thead tr td,
+#messagelist tbody tr td
+{
+  height: 18px;
+}
diff --git a/skins/classic/settings.css b/skins/classic/settings.css
new file mode 100644 (file)
index 0000000..24c4382
--- /dev/null
@@ -0,0 +1,215 @@
+/***** Roundcube|Mail settings task styles *****/
+
+#rcmfd_timezone
+{
+  width: 300px;
+}
+
+#folder-manager.droptarget
+{
+  border: 1px solid #CC3333;
+  background-color: #FFFFA6;
+}
+
+#identities-table,
+#subscription-table,
+#sections-table
+{
+  width: 100%;
+  table-layout: fixed;
+}
+
+#subscription-table input
+{
+  font: inherit;
+}
+
+#subscription-table tbody td,
+#identities-table tbody td,
+#sections-table tbody td
+{
+  cursor: default;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+  height: 18px;
+}
+
+#subscription-table tr.virtual td
+{
+  color: #666;
+}
+
+#subscription-table tr.root td
+{
+  font-size: 10%;
+  height: 5px;
+}
+
+#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 td.subscribed
+{
+  text-align: right;
+  padding-right: 12px;
+}
+
+#folder-box,
+#prefs-box,
+#identity-box
+{
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  border: 1px solid #999999;
+  overflow: hidden;
+  background-color: #F2F2F2;
+}
+
+#identity-details table td.title,
+#folder-details table td.title
+{
+  font-weight: bold;
+  text-align: right;
+}
+
+#bottomboxes
+{
+  position: absolute;
+  width: 600px;
+  height: 95px;
+  left: 0;
+  bottom: 0;
+}
+
+#identities-list,
+#folder-manager,
+#sectionslist
+{
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  border: 1px solid #999999;
+  background-color: #F9F9F9;
+  overflow: hidden;
+}
+
+body.iframe,
+#prefs-frame,
+#folder-frame,
+#identity-frame
+{
+  background-color: #F2F2F2;
+  border: none;
+  min-height: 100%; /* Chrome 14 bug */
+}
+
+#prefs-title,
+#folder-title,
+#identity-title
+{
+  /* fixes issue where tabs were overlapping box title when scrolling */
+  z-index: 10;
+}
+
+#formfooter
+{
+  width: 100%;
+}
+
+#formfooter .footerleft
+{
+  padding: 0 2px 10px;
+  white-space: nowrap;
+  float: left;
+}
+
+#formfooter .footerright
+{
+  padding: 0 2px 10px;
+  white-space: nowrap;
+  text-align: right;
+  float: right;
+}
+
+#quota
+{
+  position: absolute;
+  top: 3px;
+  right: 8px;
+  width: 100px;
+}
+
+#quotaimg
+{
+  position: absolute;
+  top: 3px;
+  right: 6px;
+  z-index: 101;
+}
+
+#rcmfd_signature
+{
+  font-family: monospace;
+}
+
+div.readtext
+{
+  width: 42em;
+  padding: 20px;
+}
+
+#license
+{
+  min-height: 200px;
+  padding-bottom: 2em;
+  background: url(images/watermark.gif) no-repeat center;
+}
+
+#license .sysname
+{
+  font-size: 18px;
+  font-weight: bold;
+}
+
+#license .copyright
+{
+  font-weight: bold;
+}
+
+#license .license,
+#license .links
+{
+  margin-top: 1.5em;
+}
+
+#pluginlist
+{
+  border: 1px solid #999;
+  width: 100%;
+}
+
+#pluginlist td.version
+{
+  text-align: center;
+}
+
+div.crop
+{
+  overflow: auto;
+}
diff --git a/skins/classic/splitter.js b/skins/classic/splitter.js
new file mode 100644 (file)
index 0000000..59ebb51
--- /dev/null
@@ -0,0 +1,203 @@
+
+/**
+ * Roundcube splitter GUI class
+ *
+ * @constructor
+ */
+function rcube_splitter(attrib)
+{
+  this.p1id = attrib.p1;
+  this.p2id = attrib.p2;
+  this.id = attrib.id ? attrib.id : this.p1id + '_' + this.p2id + '_splitter';
+  this.orientation = attrib.orientation;
+  this.horizontal = (this.orientation == 'horizontal' || this.orientation == 'h');
+  this.offset = bw.ie6 ? 2 : 0;
+  this.pos = attrib.start ? attrib.start * 1 : 0;
+  this.relative = attrib.relative ? true : false;
+  this.drag_active = false;
+  this.callback = attrib.callback;
+
+  this.init = function()
+  {
+    this.p1 = document.getElementById(this.p1id);
+    this.p2 = document.getElementById(this.p2id);
+
+    // create and position the handle for this splitter
+    this.p1pos = this.relative ? $(this.p1).position() : $(this.p1).offset();
+    this.p2pos = this.relative ? $(this.p2).position() : $(this.p2).offset();
+
+    if (this.horizontal) {
+      var top = this.p1pos.top + this.p1.offsetHeight;
+      this.layer = new rcube_layer(this.id, {x: 0, y: top, height: 10, 
+           width: '100%', vis: 1, parent: this.p1.parentNode});
+    }
+    else {
+      var left = this.p1pos.left + this.p1.offsetWidth;
+      this.layer = new rcube_layer(this.id, {x: left, y: 0, width: 10, 
+           height: '100%', vis: 1,  parent: this.p1.parentNode});
+    }
+
+    this.elm = this.layer.elm;
+    this.elm.className = 'splitter '+(this.horizontal ? 'splitter-h' : 'splitter-v');
+    this.elm.unselectable = 'on';
+
+    // add the mouse event listeners
+    rcube_event.add_listener({element: this.elm, event:'mousedown', object:this, method:'onDragStart'});
+    if (bw.ie)
+      rcube_event.add_listener({element: window, event:'resize', object:this, method:'onResize'});
+
+    // read saved position from cookie
+    var cookie = bw.get_cookie(this.id);
+    if (cookie && !isNaN(cookie)) {
+      this.pos = parseFloat(cookie);
+      this.resize();
+    }
+    else if (this.pos) {
+      this.resize();
+      this.set_cookie();
+    }
+  };
+
+  /**
+   * Set size and position of all DOM objects
+   * according to the saved splitter position
+   */
+  this.resize = function()
+  {
+    if (this.horizontal) {
+      var lh = this.layer.height - this.offset * 2;
+      this.p1.style.height = Math.floor(this.pos - this.p1pos.top - lh / 2) + 'px';
+      this.p2.style.top = Math.ceil(this.pos + lh / 2) + 'px';
+      this.layer.move(this.layer.x, Math.round(this.pos - lh / 2 + 1));
+      if (bw.ie) {
+        var new_height = parseInt(this.p2.parentNode.offsetHeight, 10) - parseInt(this.p2.style.top, 10) - (bw.ie8 ? 2 : 0);
+        this.p2.style.height = (new_height > 0 ? new_height : 0) + 'px';
+      }
+    }
+    else {
+      this.p1.style.width = Math.floor(this.pos - this.p1pos.left - this.layer.width / 2) + 'px';
+      this.p2.style.left = Math.ceil(this.pos + this.layer.width / 2) + 'px';
+      this.layer.move(Math.round(this.pos - this.layer.width / 2 + 1), this.layer.y);
+      if (bw.ie) {
+        var new_width = parseInt(this.p2.parentNode.offsetWidth, 10) - parseInt(this.p2.style.left, 10) ;
+        this.p2.style.width = (new_width > 0 ? new_width : 0) + 'px';
+      }
+    }
+    $(this.p2).resize();
+    $(this.p1).resize();
+  };
+
+  /**
+   * Handler for mousedown events
+   */
+  this.onDragStart = function(e)
+  {
+    // disable text selection while dragging the splitter
+    if (bw.konq || bw.chrome || bw.safari)
+      document.body.style.webkitUserSelect = 'none';
+
+    this.p1pos = this.relative ? $(this.p1).position() : $(this.p1).offset();
+    this.p2pos = this.relative ? $(this.p2).position() : $(this.p2).offset();
+    this.drag_active = true;
+
+    // start listening to mousemove events
+    rcube_event.add_listener({element:document, event:'mousemove', object:this, method:'onDrag'});
+    rcube_event.add_listener({element:document, event:'mouseup', object:this, method:'onDragStop'});
+
+    // enable dragging above iframes
+    $('iframe').each(function() {
+      $('<div class="iframe-splitter-fix"></div>')
+        .css({background: '#fff',
+          width: this.offsetWidth+'px', height: this.offsetHeight+'px',
+          position: 'absolute', opacity: '0.001', zIndex: 1000
+        })
+        .css($(this).offset())
+        .appendTo('body');
+      });
+  };
+
+  /**
+   * Handler for mousemove events
+   */
+  this.onDrag = function(e)
+  {
+    if (!this.drag_active)
+      return false;
+
+    var pos = rcube_event.get_mouse_pos(e);
+
+    if (this.relative) {
+      var parent = $(this.p1.parentNode).offset();
+      pos.x -= parent.left;
+      pos.y -= parent.top;
+    }
+
+    if (this.horizontal) {
+      if (((pos.y - this.layer.height * 1.5) > this.p1pos.top) && ((pos.y + this.layer.height * 1.5) < (this.p2pos.top + this.p2.offsetHeight))) {
+        this.pos = pos.y;
+        this.resize();
+      }
+    }
+    else {
+      if (((pos.x - this.layer.width * 1.5) > this.p1pos.left) && ((pos.x + this.layer.width * 1.5) < (this.p2pos.left + this.p2.offsetWidth))) {
+        this.pos = pos.x;
+        this.resize();
+      }
+    }
+
+    this.p1pos = this.relative ? $(this.p1).position() : $(this.p1).offset();
+    this.p2pos = this.relative ? $(this.p2).position() : $(this.p2).offset();
+    return false;
+  };
+
+  /**
+   * Handler for mouseup events
+   */
+  this.onDragStop = function(e)
+  {
+    // resume the ability to highlight text
+    if (bw.konq || bw.chrome || bw.safari)
+      document.body.style.webkitUserSelect = 'auto';
+
+    // cancel the listening for drag events
+    rcube_event.remove_listener({element:document, event:'mousemove', object:this, method:'onDrag'});
+    rcube_event.remove_listener({element:document, event:'mouseup', object:this, method:'onDragStop'});
+    this.drag_active = false;
+
+    // remove temp divs
+    $('div.iframe-splitter-fix').each(function() { this.parentNode.removeChild(this); });
+
+    this.set_cookie();
+
+    if (typeof this.callback == 'function')
+      this.callback(this);
+
+    return bw.safari ? true : rcube_event.cancel(e);
+  };
+
+  /**
+   * Handler for window resize events
+   */
+  this.onResize = function(e)
+  {
+    if (this.horizontal) {
+      var new_height = parseInt(this.p2.parentNode.offsetHeight, 10) - parseInt(this.p2.style.top, 10) - (bw.ie8 ? 2 : 0);
+      this.p2.style.height = (new_height > 0 ? new_height : 0) +'px';
+    }
+    else {
+      var new_width = parseInt(this.p2.parentNode.offsetWidth, 10) - parseInt(this.p2.style.left, 10);
+      this.p2.style.width = (new_width > 0 ? new_width : 0) + 'px';
+    }
+  };
+
+  /**
+   * Saves splitter position in cookie
+   */
+  this.set_cookie = function()
+  {
+    var exp = new Date();
+    exp.setYear(exp.getFullYear() + 1);
+    bw.set_cookie(this.id, this.pos, exp);
+  };
+
+} // end class rcube_splitter
diff --git a/skins/classic/templates/about.html b/skins/classic/templates/about.html
new file mode 100644 (file)
index 0000000..f511806
--- /dev/null
@@ -0,0 +1,35 @@
+<!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><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<script type="text/javascript" src="/functions.js"></script>
+</head>
+<body>
+
+<roundcube:include file="/includes/taskbar.html" />
+<roundcube:include file="/includes/header.html" />
+<roundcube:include file="/includes/settingstabs.html" />
+
+<div id="mainscreen" class="box darkbg crop">
+<div class="readtext">
+<div id="license">
+<roundcube:object name="aboutcontent" />
+<h2 class="sysname">Roundcube Webmail <roundcube:object name="version" /></h2>
+<p class="copyright">Copyright &copy; 2005-2012, 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/>
+Some <a href="http://roundcube.net/license">exceptions</a> for skins &amp; plugins apply.
+</p>
+<p class="links"><roundcube:object name="supportlink" label="support" target="_blank" /></p>
+</div>
+
+<h4>Installed plugins</h4>
+<roundcube:object name="pluginlist" id="pluginlist" class="records-table" cellspacing="0" />
+
+</div>
+</div>
+
+</body>
+</html>
diff --git a/skins/classic/templates/addressbook.html b/skins/classic/templates/addressbook.html
new file mode 100644 (file)
index 0000000..d77bb38
--- /dev/null
@@ -0,0 +1,110 @@
+<!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><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<script type="text/javascript" src="/splitter.js"></script>
+<script type="text/javascript" src="/functions.js"></script>
+<style type="text/css">
+#addresslist { width: <roundcube:exp expression="!empty(cookie:addressviewsplitter) ? cookie:addressviewsplitter-5 : 245" />px; }
+#contacts-box { left: <roundcube:exp expression="!empty(cookie:addressviewsplitter) ? cookie:addressviewsplitter+5 : 255" />px;
+       <roundcube:exp expression="browser:ie ? ('width:expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:addressviewsplitter) ? cookie:addressviewsplitter+5 : 255).')+\\'px\\');') : ''" />
+#directorylistbox { width: <roundcube:exp expression="!empty(cookie:addressviewsplitterd) ? cookie:addressviewsplitterd-5 : 195" />px; }
+#addressscreen { left: <roundcube:exp expression="!empty(cookie:addressviewsplitterd) ? cookie:addressviewsplitterd+5 : 205" />px;
+       <roundcube:exp expression="browser:ie ? ('width:expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:addressviewsplitterd) ? cookie:addressviewsplitterd+5 : 205).')+\\'px\\');') : ''" />
+}
+</style>
+
+</head>
+<body onload="rcube_init_mail_ui()">
+
+<roundcube:include file="/includes/taskbar.html" />
+<roundcube:include file="/includes/header.html" />
+
+<div id="abooktoolbar">
+<roundcube:button command="add" type="link" class="buttonPas addcontact" classAct="button addcontact" classSel="button addcontactSel" title="newcontact" content=" " />
+<roundcube:button command="compose" type="link" class="buttonPas compose" classAct="button compose" classSel="button composeSel" title="composeto" content=" " />
+<roundcube:button command="delete" type="link" class="buttonPas delete" classAct="button delete" classSel="button deleteSel" title="deletecontact" content=" " />
+<span class="separator">&nbsp;</span>
+<roundcube:button command="import" type="link" class="buttonPas import" classAct="button import" classSel="button importSel" title="importcontacts" content=" " />
+<roundcube:button command="export" type="link" class="buttonPas export" classAct="button export" classSel="button exportSel" title="exportvcards" content=" " />
+<roundcube:button command="advanced-search" type="link" class="buttonPas search" classAct="button search" classSel="button searchSel" title="advsearch" content=" " />
+<roundcube:container name="toolbar" id="abooktoolbar" />
+</div>
+
+<div id="quicksearchbar">
+<roundcube:button name="searchmenulink" id="searchmenulink" image="/images/icons/glass_roll.png" onclick="rcmail_ui.show_popup('searchmenu');return false" title="searchmod" width="16" height="16" />
+<roundcube:object name="searchform" id="quicksearchbox" />
+<roundcube:button command="reset-search" id="searchreset" image="/images/icons/reset.gif" title="resetsearch" width="13" height="13" />
+</div>
+
+<div id="searchmenu" class="popupmenu">
+  <ul class="toolbarmenu">
+    <li><input type="checkbox" name="s_mods[]" value="name" id="s_mod_name" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_name"><roundcube:label name="name" /></label></li>
+    <li><input type="checkbox" name="s_mods[]" value="firstname" id="s_mod_firstname" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_firstname"><roundcube:label name="firstname" /></label></li>
+    <li><input type="checkbox" name="s_mods[]" value="surname" id="s_mod_surname" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_surname"><roundcube:label name="surname" /></label></li>
+    <li><input type="checkbox" name="s_mods[]" value="email" id="s_mod_email" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_email"><roundcube:label name="email" /></label></li>
+    <li><input type="checkbox" name="s_mods[]" value="*" id="s_mod_all" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_all"><roundcube:label name="allfields" /></label></li>
+  </ul>
+</div>
+
+<div id="mainscreen">
+
+<div id="directorylistbox">
+<div id="directorylist-title" class="boxtitle"><roundcube:label name="groups" /></div>
+<div id="directorylist-content" class="boxlistcontent">
+  <roundcube:object name="directorylist" id="directorylist" />
+  <roundcube:object name="groupslist" id="contactgroupslist" />
+</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 name="groupmenulink" id="groupmenulink" type="link" title="moreactions" class="button groupactions" onclick="rcmail_ui.show_popup('groupmenu');return false" content=" " />
+</div>
+</div>
+
+<div id="addressscreen">
+
+<div id="addresslist">
+<div class="boxtitle"><roundcube:label name="contacts" /></div>
+<div class="boxlistcontent">
+<roundcube:object name="addresslist" id="contacts-table" class="records-table" cellspacing="0" summary="Contacts list" noheader="true" />
+</div>
+<div class="boxfooter">
+<div id="abookcountbar" class="pagenav">
+  <roundcube:button command="firstpage" type="link" class="buttonPas firstpage" classAct="button firstpage" classSel="button firstpageSel" title="firstpage" content=" " />
+  <roundcube:button command="previouspage" type="link" class="buttonPas prevpage" classAct="button prevpage" classSel="button prevpageSel" title="previouspage" content=" " />
+  <roundcube:object name="recordsCountDisplay" style="padding:0 .5em; float:left" />
+  <roundcube:button command="nextpage" type="link" class="buttonPas nextpage" classAct="button nextpage" classSel="button nextpageSel" title="nextpage" content=" " />
+  <roundcube:button command="lastpage" type="link" class="buttonPas lastpage" classAct="button lastpage" classSel="button lastpageSel" title="lastpage" content=" " />
+</div>
+</div>
+</div>
+
+<script type="text/javascript">
+  var addrviewsplit = new rcube_splitter({id:'addressviewsplitter', p1: 'addresslist', p2: 'contacts-box', orientation: 'v', relative: true, start: 250});
+  rcmail.add_onload('addrviewsplit.init()');
+
+  var addrviewsplitd = new rcube_splitter({id:'addressviewsplitterd', p1: 'directorylistbox', p2: 'addressscreen', orientation: 'v', relative: true, start: 200});
+  rcmail.add_onload('addrviewsplitd.init()');
+</script>
+
+<div id="contacts-box">
+<roundcube:object name="addressframe" id="contact-frame" width="100%" height="100%" frameborder="0" src="/watermark.html" />
+</div>
+
+</div>
+</div>
+
+<div id="groupoptionsmenu" class="popupmenu">
+  <ul>
+    <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="group-remove-selected" label="groupremoveselected" classAct="active" /></li>
+    <li class="separator_above"><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>
+
+</body>
+</html>
diff --git a/skins/classic/templates/compose.html b/skins/classic/templates/compose.html
new file mode 100644 (file)
index 0000000..040b413
--- /dev/null
@@ -0,0 +1,159 @@
+<!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><roundcube:object name="productname" /> :: <roundcube:label name="compose" /></title>
+<roundcube:include file="/includes/links.html" />
+<roundcube:if condition="config:enable_spellcheck" />
+<link rel="stylesheet" type="text/css" href="/googiespell.css" />
+<roundcube:endif />
+<script type="text/javascript" src="/functions.js"></script>
+<script type="text/javascript" src="/splitter.js"></script>
+<style type="text/css">
+#compose-attachments { width: <roundcube:exp expression="!empty(cookie:composesplitterv) ? cookie:composesplitterv-5 : 175" />px; }
+#compose-container { left: <roundcube:exp expression="!empty(cookie:composesplitterv) ? cookie:composesplitterv+5 : 185" />px;
+<roundcube:exp expression="browser:ie ? ('width: expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:composesplitterv) ? cookie:composesplitterv+5 : 180).')+\\'px\\');') : ''" />
+}
+</style>
+</head>
+<body onload="rcube_init_mail_ui()">
+
+<roundcube:include file="/includes/taskbar.html" />
+<roundcube:include file="/includes/header.html" />
+
+<form name="form" action="./" method="post">
+
+<div id="messagetoolbar">
+    <roundcube:button command="list" type="link" class="button back" classAct="button back" classSel="button backSel" title="backtolist" content=" " />
+    <roundcube:button command="send" type="link" class="buttonPas send" classAct="button send" classSel="button sendSel" title="sendmessage" content=" " />
+<roundcube:if condition="config:enable_spellcheck" />
+    <span class="dropbutton">
+        <roundcube:button command="spellcheck" type="link" class="buttonPas spellcheck" classAct="button spellcheck" classSel="button spellcheckSel" title="checkspelling" content=" " />
+        <span id="spellmenulink" onclick="rcmail_ui.show_popup('spellmenu');return false"></span>
+    </span>
+<roundcube:endif />
+    <roundcube:button name="addattachment" type="link" class="button attach" classAct="button attach" classSel="button attachSel" title="addattachment" onclick="rcmail_ui.show_popup('uploadmenu', true);return false" content=" " />
+    <roundcube:button command="insert-sig" type="link" class="buttonPas insertsig" classAct="button insertsig" classSel="button insertsigSel" title="insertsignature" content=" " />
+    <roundcube:button command="savedraft" type="link" class="buttonPas savedraft" classAct="button savedraft" classSel="button savedraftSel" title="savemessage" content=" " />
+    <roundcube:container name="toolbar" id="compose-toolbar" />
+    <roundcube:button name="messageoptions" id="composemenulink" type="link" class="button messagemenu" title="messageoptions" onclick="rcmail_ui.show_popup('composemenu', true);return false" content=" " />
+</div>
+
+<div id="mainscreen">
+
+<div id="compose-attachments">
+<div class="boxtitle"><roundcube:label name="attachments" /></div>
+<div class="boxlistcontent">
+    <roundcube:object name="composeAttachmentList" id="attachmentslist" loadingIcon="/images/display/loading_blue.gif" />
+</div>
+<div class="boxfooter">
+  <roundcube:button name="uploadmenulink" id="uploadmenulink" type="link" title="addattachment" class="button addgroup" onclick="rcmail_ui.show_popup('uploadmenu', true);return false" content=" " />
+</div>
+</div>
+
+<script type="text/javascript">
+  var composesplitv = new rcube_splitter({id:'composesplitterv', p1: 'compose-attachments', p2: 'compose-container', orientation: 'v', relative: true, start: 175});
+  rcmail.add_onload('composesplitv.init()');
+</script>
+
+<div id="compose-container">
+    <div id="compose-headers-div" style="width: 100%;">
+        <table border="0" cellspacing="0" cellpadding="1" id="compose-headers">
+        <tr>
+            <td class="title"><label for="_from"><roundcube:label name="from" /></label></td>
+            <td class="editfield formlinks">
+                <roundcube:object name="composeHeaders" part="from" form="form" id="_from" tabindex="1" />
+                <a href="#identities" onclick="return rcmail.command('identities')"><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="2" tabindex="2" /></td>
+        </tr><tr id="compose-cc">
+            <td class="title top">
+                <a href="#cc" onclick="return rcmail_ui.hide_header_form('cc');"><img src="/images/icons/minus.gif" alt="" width="13" height="11" title="<roundcube:label name='delete' />" /></a>
+                <label for="_cc"><roundcube:label name="cc" /></label>
+            </td>
+            <td class="editfield"><roundcube:object name="composeHeaders" part="cc" form="form" id="_cc" cols="70" rows="2" tabindex="3" /></td>
+        </tr><tr id="compose-bcc">
+            <td class="title top">
+                <a href="#bcc" onclick="return rcmail_ui.hide_header_form('bcc');"><img src="/images/icons/minus.gif" alt="" width="13" height="11" title="<roundcube:label name='delete' />" /></a>
+                <label for="_bcc"><roundcube:label name="bcc" /></label>
+            </td>
+            <td class="editfield"><roundcube:object name="composeHeaders" part="bcc" form="form" id="_bcc" cols="70" rows="2" tabindex="4" /></td>
+        </tr><tr id="compose-replyto">
+            <td class="title top">
+                <a href="#replyto" onclick="return rcmail_ui.hide_header_form('replyto');"><img src="/images/icons/minus.gif" alt="" width="13" height="11" title="<roundcube:label name='delete' />" /></a>
+                <label for="_replyto"><roundcube:label name="replyto" /></label>
+            </td>
+            <td class="editfield"><roundcube:object name="composeHeaders" part="replyto" form="form" id="_replyto" size="70" tabindex="5" /></td>
+        </tr><tr id="compose-followupto">
+            <td class="title top">
+                <a href="#followupto" onclick="return rcmail_ui.hide_header_form('followupto');"><img src="/images/icons/minus.gif" alt="" width="13" height="11" title="<roundcube:label name='delete' />" /></a>
+                <label for="_followupto"><roundcube:label name="followupto" /></label>
+            </td>
+            <td class="editfield"><roundcube:object name="composeHeaders" part="followupto" form="form" id="_followupto" size="70" tabindex="7" /></td>
+        </tr><tr>
+            <td></td>
+            <td class="formlinks">
+                <a href="#cc" onclick="return rcmail_ui.show_header_form('cc')" id="cc-link"><roundcube:label name="addcc" /></a>
+                <span class="separator">|</span>
+                <a href="#bcc" onclick="return rcmail_ui.show_header_form('bcc')" id="bcc-link"><roundcube:label name="addbcc" /></a>
+                <span class="separator">|</span>
+                <a href="#reply-to" onclick="return rcmail_ui.show_header_form('replyto')" id="replyto-link"><roundcube:label name="addreplyto" /></a>
+                <span class="separator">|</span>
+                <a href="#followup-to" onclick="return rcmail_ui.show_header_form('followupto')" id="followupto-link"><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>
+        </tr>
+        </table>
+    </div>
+    <div id="compose-div">
+        <div class="boxlistcontent" style="overflow: hidden; top: 0">
+            <roundcube:object name="composeBody" id="compose-body" form="form" cols="70" rows="20" tabindex="9" />
+        </div>
+        <div class="boxfooter">
+            <div id="compose-buttons">
+                <roundcube:button type="input" command="send" class="button mainaction" label="sendmessage" tabindex="10" />
+                <roundcube:button type="input" command="list" class="button" label="cancel" tabindex="11" />
+            </div>
+            <div id="compose-editorfooter">
+                <roundcube:if condition="!in_array('htmleditor', (array)config:dont_override)" />
+                <span>
+                    <label><roundcube:label name="editortype" /></label>
+                    <roundcube:object name="editorSelector" editorid="compose-body" tabindex="12" />
+                </span>
+                <roundcube:endif />
+            </div>
+        </div>
+    </div>
+</div>
+
+</div>
+
+<div id="composeoptionsmenu" class="popupmenu">
+    <table>
+    <tr>
+        <td><label for="rcmcomposereceipt"><roundcube:label name="returnreceipt" />:</label></td>
+        <td><roundcube:object name="receiptCheckBox" form="form" id="rcmcomposereceipt" /></td>
+    </tr><tr>
+        <td><label for="rcmcomposedsn"><roundcube:label name="dsn" />:</label></td>
+        <td><roundcube:object name="dsnCheckBox" form="form" id="rcmcomposedsn" /></td>
+    </tr><tr>
+        <td><label for="rcmcomposepriority"><roundcube:label name="priority" />:</label></td>
+        <td><roundcube:object name="prioritySelector" form="form" id="rcmcomposepriority" /></td>
+    </tr><tr>
+        <td><label><roundcube:label name="savesentmessagein" />:</label></td>
+        <td><roundcube:object name="storetarget" maxlength="30" /></td>
+    </tr>
+    </table>
+</div>
+
+<div id="spellmenu" class="popupmenu selectable"></div>
+
+</form>
+
+<roundcube:object name="composeAttachmentForm" id="attachment-form" attachmentFieldSize="40" class="popupmenu" />
+
+</body>
+</html>
diff --git a/skins/classic/templates/contact.html b/skins/classic/templates/contact.html
new file mode 100644 (file)
index 0000000..d74a78b
--- /dev/null
@@ -0,0 +1,29 @@
+<!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><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<script type="text/javascript" src="/functions.js"></script>
+</head>
+<body class="iframe">
+
+<div id="contact-title" class="boxtitle"><roundcube:label name="contactproperties" /></div>
+<div id="contact-details" class="boxcontent">
+  <roundcube:if condition="strlen(env:sourcename)" />
+    <div id="sourcename"><roundcube:label name="addressbook" />: <roundcube:var name="env:sourcename" /></div>
+  <roundcube:endif />
+
+  <div id="contactphoto"><roundcube:object name="contactphoto" id="contactpic" placeholder="/images/contactpic.png" /></div>
+  <roundcube:object name="contacthead" id="contacthead" />
+  <div style="clear:both"></div>
+  <div id="contacttabs">
+    <roundcube:object name="contactdetails" />
+  </div>
+  <p>
+    <roundcube:button command="edit" type="input" class="button" label="editcontact" condition="!ENV:readonly" />
+  </p>
+</div>
+<script type="text/javascript">rcube_init_tabs('contacttabs')</script>
+
+</body>
+</html>
diff --git a/skins/classic/templates/contactadd.html b/skins/classic/templates/contactadd.html
new file mode 100644 (file)
index 0000000..67b7bcd
--- /dev/null
@@ -0,0 +1,40 @@
+<!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><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<script type="text/javascript" src="/functions.js"></script>
+</head>
+<body class="iframe" onload="rcube_init_mail_ui()">
+
+<div id="contact-title" class="boxtitle"><roundcube:label name="addcontact" /></div>
+<div id="contact-details" class="boxcontent">
+<form name="editform" method="post" action="./">
+  <roundcube:if condition="strlen(env:sourcename)" />
+    <div id="sourcename"><roundcube:label name="addressbook" />: <roundcube:object name="sourceselector" class="hint" id="sourceselect" /></div>
+  <roundcube:endif />
+  <div id="contactphoto">
+    <roundcube:object name="contactphoto" id="contactpic" placeholder="/images/contactpic.png" />
+    <div class="formlinks">
+      <roundcube:button command="upload-photo" id="uploadformlink" type="link" label="addphoto" class="disabled" classAct="active" onclick="rcmail_ui.show_popup('uploadform', true);return false" condition="env:photocol" /><br/>
+      <roundcube:button command="delete-photo" type="link" label="delete" class="disabled" classAct="active" condition="env:photocol" />
+    </div>
+  </div>
+  <roundcube:object name="contactedithead" id="contacthead" size="16" form="editform" />
+  <div style="clear:both"></div>
+  <div id="contacttabs">
+    <roundcube:object name="contacteditform" size="40" textareacols="60" deleteIcon="/images/icons/delete.png" form="editform" />
+  </div>
+  <p>
+    <input type="button" value="<roundcube:label name="cancel" />" class="button" onclick="history.back()" />&nbsp;
+    <roundcube:button command="save" type="input" class="button mainaction" label="save" />
+  </p>
+</form>
+</div>
+
+<roundcube:object name="photoUploadForm" id="upload-form" size="30" class="popupmenu" />
+
+<script type="text/javascript">rcube_init_tabs('contacttabs')</script>
+
+</body>
+</html>
diff --git a/skins/classic/templates/contactedit.html b/skins/classic/templates/contactedit.html
new file mode 100644 (file)
index 0000000..77e4661
--- /dev/null
@@ -0,0 +1,41 @@
+<!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><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<script type="text/javascript" src="/functions.js"></script>
+</head>
+<body class="iframe" onload="rcube_init_mail_ui()">
+
+<div id="contact-title" class="boxtitle"><roundcube:label name="editcontact" /></div>
+<div id="contact-details" class="boxcontent">
+<form name="editform" method="post" action="./">
+  <roundcube:if condition="strlen(env:sourcename)" />
+    <div id="sourcename"><roundcube:label name="addressbook" />: <roundcube:var name="env:sourcename" /></div>
+  <roundcube:endif />
+  <div id="contactphoto">
+    <roundcube:object name="contactphoto" id="contactpic" placeholder="/images/contactpic.png" />
+    <div class="formlinks">
+      <roundcube:button command="upload-photo" id="uploadformlink" type="link" label="replacephoto" class="disabled" classAct="active" onclick="rcmail_ui.show_popup('uploadform', true);return false" condition="env:photocol" /><br/>
+      <roundcube:button command="delete-photo" type="link" label="delete" class="disabled" classAct="active" condition="env:photocol" />
+    </div>
+  </div>
+  <roundcube:object name="contactedithead" id="contacthead" size="16" form="editform" />
+  <div style="clear:both"></div>
+  
+  <div id="contacttabs">
+    <roundcube:object name="contacteditform" size="40" textareacols="60" deleteIcon="/images/icons/delete.png" form="editform" />
+  </div>
+  <p>
+    <roundcube:button command="show" type="input" class="button" label="cancel" />&nbsp;
+    <roundcube:button command="save" type="input" class="button mainaction" label="save" />
+  </p>
+</form>
+</div>
+
+<roundcube:object name="photoUploadForm" id="upload-form" size="30" class="popupmenu" />
+
+<script type="text/javascript">rcube_init_tabs('contacttabs')</script>
+
+</body>
+</html>
diff --git a/skins/classic/templates/contactsearch.html b/skins/classic/templates/contactsearch.html
new file mode 100644 (file)
index 0000000..23cbec4
--- /dev/null
@@ -0,0 +1,18 @@
+<!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><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<script type="text/javascript" src="/functions.js"></script>
+</head>
+<body class="iframe">
+
+<div id="contact-title" class="boxtitle"><roundcube:label name="advsearch" /></div>
+<div id="contact-details" class="boxcontent">
+  <roundcube:object name="searchform" id="advsearchform" size=30 />
+  <p><roundcube:button command="save" type="input" class="button mainaction" label="search" /></p>
+</div>
+<script type="text/javascript">rcube_init_tabs('advsearchform')</script>
+
+</body>
+</html>
diff --git a/skins/classic/templates/error.html b/skins/classic/templates/error.html
new file mode 100644 (file)
index 0000000..fdd7c88
--- /dev/null
@@ -0,0 +1,16 @@
+<!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><roundcube:object name="productname" /> :: ERROR</title>
+<roundcube:include file="/includes/links.html" />
+</head>
+<body>
+
+<roundcube:object name="logo" src="/images/roundcube_logo.png" id="logo" border="0" />
+
+<div style="width:400px; margin:60px auto;">
+$__page_content
+</div>
+
+</body>
+</html>
diff --git a/skins/classic/templates/folderedit.html b/skins/classic/templates/folderedit.html
new file mode 100644 (file)
index 0000000..28b9a55
--- /dev/null
@@ -0,0 +1,26 @@
+<!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><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<script type="text/javascript" src="/functions.js"></script>
+</head>
+<body class="iframe">
+
+<div id="folder-title" class="boxtitle"><roundcube:label name="folderproperties" /></div>
+
+<div id="folder-details" class="boxcontent">
+  <roundcube:object name="folderdetails" />
+  <div id="formfooter">
+    <div class="footerleft">
+      <roundcube:if condition="!strlen(request:_mbox)" />
+        <input type="button" value="<roundcube:label name="cancel" />" class="button" onclick="history.back()" />&nbsp;
+      <roundcube:endif />
+      <roundcube:button command="save" type="input" class="button mainaction" label="save" />
+    </div>
+  </div>
+</div>
+<script type="text/javascript">rcube_init_tabs('folder-details > form')</script>
+
+</body>
+</html>
diff --git a/skins/classic/templates/folders.html b/skins/classic/templates/folders.html
new file mode 100644 (file)
index 0000000..1ae8809
--- /dev/null
@@ -0,0 +1,62 @@
+<!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><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<script type="text/javascript" src="/functions.js"></script>
+<script type="text/javascript" src="/splitter.js"></script>
+<style type="text/css">
+#folder-manager { width: <roundcube:exp expression="!empty(cookie:folderviewsplitter) ? cookie:folderviewsplitter-5 : 295" />px; }
+#folder-box { left: <roundcube:exp expression="!empty(cookie:folderviewsplitter) ? cookie:folderviewsplitter+5 : 305" />px;
+    <roundcube:exp expression="browser:ie ? ('width:expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:folderviewsplitter) ? cookie:folderviewsplitter+5 : 305).')+\\'px\\');') : ''" />
+}
+</style>
+</head>
+<body onload="rcube_init_mail_ui()">
+
+<roundcube:include file="/includes/taskbar.html" />
+<roundcube:include file="/includes/header.html" />
+<roundcube:include file="/includes/settingstabs.html" />
+
+<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-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" />
+</div>
+<div id="folderlist-footer" class="boxfooter">
+    <roundcube:button command="create-folder" type="link" title="createfolder" class="buttonPas addgroup" classAct="button addgroup" content=" " />
+    <roundcube:button name="mailboxmenulink" id="mailboxmenulink" type="link" title="folderactions" class="button groupactions" onclick="rcmail_ui.show_popup('mailboxmenu');return false" content=" " />
+
+    <roundcube:if condition="env:quota" />
+    <img id="quotaimg" src="/images/quota.<roundcube:exp expression="browser:ie && browser:ver < 7 ? 'gif' : 'png'" />" alt="" width="102" height="16" />
+    <div id="quota">
+        <roundcube:object name="quotaDisplay" display="image" width="100" height="14" id="quotadisplay" />
+    </div>
+    <roundcube:endif />
+</div>
+</div>
+
+<script type="text/javascript">
+    var folderviewsplit = new rcube_splitter({id:'folderviewsplitter', p1: 'folder-manager', p2: 'folder-box', orientation: 'v', relative: true, start: 300 });
+    rcmail.add_onload('folderviewsplit.init()');
+</script>
+
+<div id="folder-box">
+    <roundcube:object name="folderframe" id="folder-frame" width="100%" height="100%" frameborder="0" src="/watermark.html" />
+</div>
+
+</div>
+
+<div id="mailboxoptionsmenu" class="popupmenu">
+  <ul>
+    <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>
+
+</body>
+</html>
diff --git a/skins/classic/templates/identities.html b/skins/classic/templates/identities.html
new file mode 100644 (file)
index 0000000..464afd5
--- /dev/null
@@ -0,0 +1,46 @@
+<!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><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<script type="text/javascript" src="/functions.js"></script>
+<script type="text/javascript" src="/splitter.js"></script>
+<style type="text/css">
+#identities-list { width: <roundcube:exp expression="!empty(cookie:identviewsplitter) ? cookie:identviewsplitter-5 : 295" />px; }
+#identity-box { left: <roundcube:exp expression="!empty(cookie:identviewsplitter) ? cookie:identviewsplitter+5 : 305" />px;
+  <roundcube:exp expression="browser:ie ? ('width:expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:identviewsplitter) ? cookie:identviewsplitter+5 : 305).')+\\'px\\');') : ''" />
+}
+</style>
+
+</head>
+<body>
+
+<roundcube:include file="/includes/taskbar.html" />
+<roundcube:include file="/includes/header.html" />
+<roundcube:include file="/includes/settingstabs.html" />
+
+<div id="mainscreen">
+
+<div id="identities-list">
+<div id="identity-title" class="boxtitle"><roundcube:label name="identities" /></div>
+<div class="boxlistcontent">
+<roundcube:object name="identitiesList" id="identities-table" class="records-table" cellspacing="0" summary="Identities list" noheader="true" editIcon="" />
+</div>
+<div class="boxfooter">
+<roundcube:button command="add" type="link" title="newidentity" class="buttonPas addgroup" classAct="button addgroup" content=" " condition="config:identities_level:0<2" /><roundcube:button command="delete" type="link" title="delete" class="buttonPas delgroup" classAct="button delgroup" content=" " condition="config:identities_level:0<2" />
+</div>
+</div>
+
+<script type="text/javascript">
+  var identviewsplit = new rcube_splitter({id:'identviewsplitter', p1: 'identities-list', p2: 'identity-box', orientation: 'v', relative: true, start: 300 });
+  rcmail.add_onload('identviewsplit.init()');
+</script>
+
+<div id="identity-box">
+  <roundcube:object name="identityframe" id="identity-frame" width="100%" height="100%" frameborder="0" src="/watermark.html" />
+</div>
+
+</div>
+
+</body>
+</html>
diff --git a/skins/classic/templates/identityedit.html b/skins/classic/templates/identityedit.html
new file mode 100644 (file)
index 0000000..3b33752
--- /dev/null
@@ -0,0 +1,33 @@
+<!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><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<script type="text/javascript" src="/functions.js"></script>
+<script type="text/javascript" src="/splitter.js"></script>
+<style type="text/css">
+#identities-list { width: <roundcube:exp expression="!empty(cookie:identviewsplitter) ? cookie:identviewsplitter-5 : 295" />px; }
+#identity-details { left: <roundcube:exp expression="!empty(cookie:identviewsplitter) ? cookie:identviewsplitter+5 : 305" />px;
+  <roundcube:exp expression="browser:ie ? ('width:expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:identviewsplitter) ? cookie:identviewsplitter+5 : 305).')+\\'px\\');') : ''" />
+}
+</style>
+
+</head>
+<body class="iframe">
+
+<div id="identity-title" class="boxtitle"><roundcube:object name="steptitle" /></div>
+
+<div id="identity-details" class="boxcontent">
+  <roundcube:object name="identityform" id="identity-form" size="40" textareacols="70" textarearows="6" />
+
+  <script type="text/javascript">rcube_init_tabs('identity-form')</script>
+
+  <div id="formfooter">
+    <div class="footerleft">
+      <roundcube:button command="save" type="input" class="button mainaction" label="save" />
+    </div>
+  </div>
+</div>
+
+</body>
+</html>
diff --git a/skins/classic/templates/importcontacts.html b/skins/classic/templates/importcontacts.html
new file mode 100644 (file)
index 0000000..05c7eb7
--- /dev/null
@@ -0,0 +1,26 @@
+<!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><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+</head>
+<body>
+
+<roundcube:include file="/includes/taskbar.html" />
+<roundcube:include file="/includes/header.html" />
+
+<div id="mainscreen" class="box darkbg">
+<div class="boxtitle"><roundcube:label name="importcontacts" /></div>
+
+<div class="boxcontent">
+<roundcube:object name="importstep" />
+
+<p><br />
+<roundcube:object name="importnav" class="button" />
+</p>
+
+</div>
+</div>
+
+</body>
+</html>
diff --git a/skins/classic/templates/login.html b/skins/classic/templates/login.html
new file mode 100644 (file)
index 0000000..63e09bb
--- /dev/null
@@ -0,0 +1,51 @@
+<!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><roundcube:object name="pagetitle" /></title>
+<meta name="Robots" content="noindex,nofollow" />
+<roundcube:include file="/includes/links.html" />
+</head>
+<body>
+
+<roundcube:object name="logo" src="/images/roundcube_logo.png" id="logo" border="0" style="margin:0 11px" />
+
+<roundcube:object name="message" id="message" />
+
+<div id="login-form">
+<div class="boxtitle"><roundcube:label name="welcome" /></div>
+<div class="boxcontent">
+
+<form name="form" action="./" method="post">
+<roundcube:object name="loginform" form="form" />
+
+<p style="text-align:center;"><input type="submit" class="button mainaction" value="<roundcube:label name='login' />" /></p>
+
+</form>
+</div>
+</div>
+
+<div id="login-bottomline">
+  <roundcube:var name="config:product_name"> <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 />
+  <roundcube:container name="loginfooter" id="bottomline" />
+</div>
+
+<roundcube:object name="preloader" images="
+    /images/icons/folders.png
+    /images/mail_footer.png
+    /images/taskicons.gif
+    /images/display/loading.gif
+    /images/pagenav.gif
+    /images/mail_toolbar.png
+    /images/searchfield.gif
+    /images/messageicons.png
+    /images/icons/reset.gif
+    /images/abook_toolbar.png
+    /images/icons/groupactions.png
+    /images/watermark.gif
+" />
+
+</body>
+</html>
diff --git a/skins/classic/templates/mail.html b/skins/classic/templates/mail.html
new file mode 100644 (file)
index 0000000..96fe72e
--- /dev/null
@@ -0,0 +1,207 @@
+<!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><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<script type="text/javascript" src="/splitter.js"></script>
+<script type="text/javascript" src="/functions.js"></script>
+<style type="text/css">
+<roundcube:if condition="config:preview_pane == true" />
+#mailcontframe { height: <roundcube:exp expression="!empty(cookie:mailviewsplitter) ? cookie:mailviewsplitter-5 : 195" />px; }
+#mailpreviewframe { top: <roundcube:exp expression="!empty(cookie:mailviewsplitter) ? cookie:mailviewsplitter+5 : 205" />px;
+<roundcube:exp expression="browser:ie ? ('height: expression((parseInt(this.parentNode.offsetHeight)-'.(!empty(cookie:mailviewsplitter) ? cookie:mailviewsplitter+25 : 245).')+\\'px\\');') : ''" />
+}
+<roundcube:endif />
+#mailleftcontainer { width: <roundcube:exp expression="!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv-5 : 175" />px; }
+#mailrightcontainer { left: <roundcube:exp expression="!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv+5 : 185" />px;
+<roundcube:exp expression="browser:ie ? ('width: expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv+5 : 180).')+\\'px\\');') : ''" />
+}
+</style>
+</head>
+<body onload="rcube_init_mail_ui()">
+
+<roundcube:include file="/includes/taskbar.html" />
+<roundcube:include file="/includes/header.html" />
+
+<div id="mainscreen">
+<div id="mailleftcontainer">
+<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" 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=" " />
+
+<roundcube:if condition="env:quota" />
+<img id="quotaimg" src="/images/quota.<roundcube:exp expression="browser:ie && browser:ver < 7 ? 'gif' : 'png'" />" alt="" width="102" height="16" />
+<div id="quota">
+  <roundcube:object name="quotaDisplay" display="image" width="100" height="14" id="quotadisplay" />
+</div>
+<roundcube:endif />
+</div>
+</div>
+
+<script type="text/javascript">
+  var mailviewsplitv = new rcube_splitter({id:'mailviewsplitterv', p1: 'mailleftcontainer', p2: 'mailrightcontainer', orientation: 'v', relative: true, start: 165, callback: rcube_render_mailboxlist });
+  rcmail.add_onload('mailviewsplitv.init()');
+</script>
+
+</div>
+
+<div id="mailrightcontainer">
+<div id="mailrightcontent">
+<div id="mailcontframe">
+<div id="messagelistcontainer" class="boxlistcontent" style="top:0">
+<roundcube:object name="messages"
+  id="messagelist"
+  cellspacing="0"
+  columns=""
+  summary="Message list"
+  optionsmenuIcon="true" />
+</div>
+<div class="boxfooter">
+    <div id="listcontrols" class="pagenav">
+        <span><roundcube:label name="select" />:&nbsp;</span>
+        <roundcube:button command="select-all" type="link" title="all" class="buttonPas all" classAct="button all" classSel="button allsel" content=" " />
+        <roundcube:button command="select-all" type="link" prop="page" title="currpage" class="buttonPas page" classAct="button page" classSel="button pagesel" content=" " />
+        <roundcube:button command="select-all" type="link" prop="unread" title="unread" class="buttonPas unread" classAct="button unread" classSel="button unreadsel" content=" " />
+        <roundcube:button command="select-all" type="link" prop="invert" title="invert" class="buttonPas invert" classAct="button invert" classSel="button invertsel" content=" " />
+        <roundcube:button command="select-none" type="link" title="none" class="buttonPas none" classAct="button none" classSel="button nonesel" content=" " />
+        <roundcube:container name="listcontrols" id="listcontrols" />
+    <roundcube:if condition="env:threads" />
+        <span style="margin-left: 12px"><roundcube:label name="threads" />:&nbsp;</span>
+        <roundcube:button command="expand-all" type="link" title="expand-all" class="buttonPas expand-all" classAct="button expand-all" classSel="button expand-allsel" content=" "  />
+        <roundcube:button command="expand-unread" type="link" title="expand-unread" class="buttonPas expand-unread" classAct="button expand-unread" classSel="button expand-unreadsel" content=" " />
+        <roundcube:button command="collapse-all" type="link" title="collapse-all" class="buttonPas collapse-all" classAct="button collapse-all" classSel="button collapse-allsel" content=" " />
+    <roundcube:endif />
+    <roundcube:if condition="!in_array('preview_pane', (array)config:dont_override)" />
+        <span style="margin-left: 12px"><label for="prevpaneswitch"><roundcube:label name="previewpane" />:</label>
+            <input type="checkbox" id="prevpaneswitch" onclick="rcmail_ui.switch_preview_pane(this)"<roundcube:exp expression="config:preview_pane == true ? ' checked=checked' : ''" /> />
+        </span>
+    <roundcube:endif />
+    </div>
+    <div id="countcontrols" class="pagenav">
+        <roundcube:button command="lastpage" type="link" class="buttonPas lastpage" classAct="button lastpage" classSel="button lastpageSel" title="lastpage" content=" " />
+        <roundcube:button command="nextpage" type="link" class="buttonPas nextpage" classAct="button nextpage" classSel="button nextpageSel" title="nextpage" content=" " />
+        <roundcube:object name="messageCountDisplay" style="padding:0 .5em; float:right" />
+        <roundcube:button command="previouspage" type="link" class="buttonPas prevpage" classAct="button prevpage" classSel="button prevpageSel" title="previouspage" content=" " />
+        <roundcube:button command="firstpage" type="link" class="buttonPas firstpage" classAct="button firstpage" classSel="button firstpageSel" title="firstpage" content=" " />
+    </div>
+</div>
+</div>
+
+<script type="text/javascript">
+  var mailviewsplit = new rcube_splitter({id:'mailviewsplitter', p1: 'mailcontframe', p2: 'mailpreviewframe', orientation: 'h', relative: true, start: 205});
+<roundcube:if condition="config:preview_pane == true" />
+  rcmail.add_onload('mailviewsplit.init()');
+<roundcube:endif />
+</script>
+
+<div id="mailpreviewframe"<roundcube:if condition="config:preview_pane != true" /> style="display:none"<roundcube:endif />>
+<roundcube:object name="messagecontentframe" id="messagecontframe" width="100%" height="100%" frameborder="0" src="/watermark.html" />
+</div>
+</div>
+
+</div>
+</div>
+
+<roundcube:include file="/includes/messagetoolbar.html" />
+
+<div id="searchmenu" class="popupmenu">
+  <ul class="toolbarmenu">
+    <li><input type="checkbox" name="s_mods[]" value="subject" id="s_mod_subject" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_subject"><roundcube:label name="subject" /></label></li>
+    <li><input type="checkbox" name="s_mods[]" value="from" id="s_mod_from" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_from"><roundcube:label name="from" /></label></li>
+    <li><input type="checkbox" name="s_mods[]" value="to" id="s_mod_to" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_to"><roundcube:label name="to" /></label></li>
+    <li><input type="checkbox" name="s_mods[]" value="cc" id="s_mod_cc" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_cc"><roundcube:label name="cc" /></label></li>
+    <li><input type="checkbox" name="s_mods[]" value="bcc" id="s_mod_bcc" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_bcc"><roundcube:label name="bcc" /></label></li>
+    <li><input type="checkbox" name="s_mods[]" value="text" id="s_mod_text" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_text"><roundcube:label name="msgtext" /></label></li>
+  </ul>
+</div>
+
+<div id="quicksearchbar">
+<div id="searchfilter">
+  <label for="rcmlistfilter"><roundcube:label name="filter" /></label>:
+  <roundcube:object name="searchfilter" class="searchfilter" />
+</div>
+<roundcube:button name="searchmenulink" id="searchmenulink" image="/images/icons/glass_roll.png" onclick="rcmail_ui.show_popup('searchmenu');return false" title="searchmod" width="16" height="16" />
+<roundcube:object name="searchform" id="quicksearchbox" />
+<roundcube:button command="reset-search" id="searchreset" image="/images/icons/reset.gif" title="resetsearch" width="13" height="13" />
+</div>
+
+<div id="dragmessagemenu" class="popupmenu">
+  <ul>
+    <li><roundcube:button command="moveto" onclick="return rcmail.drag_menu_action('moveto')" label="move" classAct="active" /></li>
+    <li><roundcube:button command="copy" onclick="return rcmail.drag_menu_action('copy')" label="copy" classAct="active" /></li>
+  </ul>
+</div>
+
+<div id="mailboxoptionsmenu" class="popupmenu">
+  <ul>
+    <li><roundcube:button command="expunge" type="link" label="compact" classAct="active" /></li>
+    <li class="separator_below"><roundcube:button command="purge" type="link" label="empty" classAct="active" /></li>
+    <li><roundcube:button command="folders" task="settings" type="link" label="managefolders" classAct="active" /></li>
+    <roundcube:container name="mailboxoptions" id="mailboxoptionsmenu" />
+  </ul>
+</div>
+
+<div id="listmenu" class="popupmenu">
+<roundcube:if condition="env:threads" />
+<fieldset class="thinbordered"><legend><roundcube:label name="listmode" /></legend>
+  <ul class="toolbarmenu">
+    <li><input type="radio" name="view" value="list" id="view_default" /><label for="view_default"><roundcube:label name="list" /></label></li>
+    <li><input type="radio" name="view" value="thread" id="view_thread" /><label for="view_thread"><roundcube:label name="threads" /></label></li>
+  </ul>
+</fieldset>
+<roundcube:endif />
+<roundcube:if condition="!in_array('list_cols', (array)config:dont_override)" />
+<fieldset class="thinbordered"><legend><roundcube:label name="listcolumns" /></legend>
+  <ul class="toolbarmenu">
+    <li><input type="checkbox" name="list_col[]" value="threads" id="cols_threads" checked="checked" disabled="disabled" /><label for="cols_threads" class="disabled"><roundcube:label name="threads" /></label></li>
+    <li><input type="checkbox" name="list_col[]" value="subject" id="cols_subject" checked="checked" disabled="disabled" /><label for="cols_subject" class="disabled"><roundcube:label name="subject" /></label></li>
+    <li><input type="checkbox" name="list_col[]" value="fromto" id="cols_fromto" /><label for="cols_fromto"><roundcube:label name="fromto" /></label></li>
+    <li><input type="checkbox" name="list_col[]" value="from" id="cols_from" /><label for="cols_from"><roundcube:label name="from" /></label></li>
+    <li><input type="checkbox" name="list_col[]" value="to" id="cols_to" /><label for="cols_to"><roundcube:label name="to" /></label></li>
+    <li><input type="checkbox" name="list_col[]" value="replyto" id="cols_replyto" /><label for="cols_replyto"><roundcube:label name="replyto" /></label></li>
+    <li><input type="checkbox" name="list_col[]" value="cc" id="cols_cc" /><label for="cols_cc"><roundcube:label name="cc" /></label></li>
+    <li><input type="checkbox" name="list_col[]" value="date" id="cols_date" /><label for="cols_date"><roundcube:label name="date" /></label></li>
+    <li><input type="checkbox" name="list_col[]" value="size" id="cols_size" /><label for="cols_size"><roundcube:label name="size" /></label></li>
+    <li><input type="checkbox" name="list_col[]" value="status" id="cols_status" /><label for="cols_status"><roundcube:label name="readstatus" /></label></li>
+    <li><input type="checkbox" name="list_col[]" value="attachment" id="cols_attachment" /><label for="cols_attachment"><roundcube:label name="attachment" /></label></li>
+    <li><input type="checkbox" name="list_col[]" value="flag" id="cols_flag" /><label for="cols_flag"><roundcube:label name="flag" /></label></li>
+    <li><input type="checkbox" name="list_col[]" value="priority" id="cols_priority" /><label for="cols_priority"><roundcube:label name="priority" /></label></li>
+  </ul>
+</fieldset>
+<roundcube:endif />
+<roundcube:if condition="!in_array('message_sort_col', (array)config:dont_override)" />
+<fieldset class="thinbordered"><legend><roundcube:label name="listsorting" /></legend>
+  <ul class="toolbarmenu">
+    <li><input type="radio" name="sort_col" value="" id="sort_default" /><label for="sort_default"><roundcube:label name="nonesort" /></label></li>
+    <li><input type="radio" name="sort_col" value="arrival" id="sort_arrival" /><label for="sort_arrival"><roundcube:label name="arrival" /></label></li>
+    <li><input type="radio" name="sort_col" value="date" id="sort_date" /><label for="sort_date"><roundcube:label name="sentdate" /></label></li>
+    <li><input type="radio" name="sort_col" value="subject" id="sort_subject" /><label for="sort_subject"><roundcube:label name="subject" /></label></li>
+    <li><input type="radio" name="sort_col" value="fromto" id="sort_fromto" /><label for="sort_fromto"><roundcube:label name="fromto" /></label></li>
+    <li><input type="radio" name="sort_col" value="from" id="sort_from" /><label for="sort_from"><roundcube:label name="from" /></label></li>
+    <li><input type="radio" name="sort_col" value="to" id="sort_to" /><label for="sort_to"><roundcube:label name="to" /></label></li>
+    <li><input type="radio" name="sort_col" value="to" id="sort_replyto" /><label for="sort_replyto"><roundcube:label name="replyto" /></label></li>
+    <li><input type="radio" name="sort_col" value="cc" id="sort_cc" /><label for="sort_cc"><roundcube:label name="cc" /></label></li>
+    <li><input type="radio" name="sort_col" value="size" id="sort_size" /><label for="sort_size"><roundcube:label name="size" /></label></li>
+  </ul>
+</fieldset>
+<roundcube:endif />
+<roundcube:if condition="!in_array('message_sort_order', (array)config:dont_override)" />
+<fieldset><legend><roundcube:label name="listorder" /></legend> 
+         <ul class="toolbarmenu"> 
+           <li><input type="radio" name="sort_ord" value="ASC" id="sort_asc" /><label for="sort_asc"><roundcube:label name="asc" /></label></li> 
+           <li><input type="radio" name="sort_ord" value="DESC" id="sort_desc" /><label for="sort_desc"><roundcube:label name="desc" /></label></li> 
+         </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>
+
+</body>
+</html>
diff --git a/skins/classic/templates/message.html b/skins/classic/templates/message.html
new file mode 100644 (file)
index 0000000..714540b
--- /dev/null
@@ -0,0 +1,70 @@
+<!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><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<script type="text/javascript" src="/splitter.js"></script>
+<script type="text/javascript" src="/functions.js"></script>
+<style type="text/css">
+#mailboxlist-container { width: <roundcube:exp expression="!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv-5 : 170" />px; }
+#messageframe { left: <roundcube:exp expression="!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv+5 : 180" />px;
+<roundcube:exp expression="browser:ie ? ('width: expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv+5 : 180).')+\\'px\\');') : ''" />
+}
+</style>
+</head>
+<body onload="rcube_init_mail_ui()">
+
+<roundcube:include file="/includes/taskbar.html" />
+<roundcube:include file="/includes/header.html" />
+<roundcube:include file="/includes/messagetoolbar.html" />
+
+<div id="mainscreen">
+<div id="mailleftcontainer">
+<div id="mailboxlist-container">
+<div id="mailboxlist-title" class="boxtitle"><roundcube:label name="mailboxlist" /></div>
+<div class="boxlistcontent">
+<roundcube:object name="mailboxlist" id="mailboxlist" maxlength="25" />
+</div>
+<div class="boxfooter">
+  <roundcube:button name="mailboxmenulink" id="mailboxmenulink" type="link" title="folderactions" class="button groupactions" onclick="rcmail_ui.show_popup('mailboxmenu');return false" content=" " />
+</div>
+</div>
+</div>
+
+<div id="messageframe">
+<div class="boxlistcontent" style="top:0; overflow-x:auto">
+<roundcube:object name="messageHeaders" class="headers-table" cellspacing="0" cellpadding="2" addicon="/images/icons/silhouette.png" summary="Message headers" />
+<roundcube:object name="messageFullHeaders" id="full-headers" />
+<roundcube:object name="messageAttachments" id="attachment-list" />
+<roundcube:object name="messageObjects" id="message-objects" />
+<roundcube:object name="messageBody" id="messagebody" />
+</div>
+<div class="boxfooter">
+<div id="countcontrols" class="pagenav">
+  <roundcube:button command="lastmessage" type="link" class="buttonPas lastpage" classAct="button lastpage" classSel="button lastpageSel" title="lastmessage" content=" " />
+  <roundcube:button command="nextmessage" type="link" class="buttonPas nextpage" classAct="button nextpage" classSel="button nextpageSel" title="nextmessage" content=" " />
+  <roundcube:object name="messageCountDisplay" style="padding:0 .5em; float:right" />
+  <roundcube:button command="previousmessage" type="link" class="buttonPas prevpage" classAct="button prevpage" classSel="button prevpageSel" title="previousmessage" content=" " />
+  <roundcube:button command="firstmessage" type="link" class="buttonPas firstpage" classAct="button firstpage" classSel="button firstpageSel" title="firstmessage" content=" " />
+</div>
+</div>
+</div>
+
+</div>
+
+<script type="text/javascript">
+    var mailviewsplitv = new rcube_splitter({id:'mailviewsplitterv', p1: 'mailboxlist-container', p2: 'messageframe', orientation: 'v', relative: true, start: 165});
+    rcmail.add_onload('mailviewsplitv.init()');
+</script>
+
+<div id="mailboxoptionsmenu" class="popupmenu">
+  <ul>
+    <li><roundcube:button command="expunge" type="link" label="compact" classAct="active" /></li>
+    <li class="separator_below"><roundcube:button command="purge" type="link" label="empty" classAct="active" /></li>
+    <li><roundcube:button command="folders" task="settings" type="link" label="managefolders" classAct="active" /></li>
+    <roundcube:container name="mailboxoptions" id="mailboxoptionsmenu" />
+  </ul>
+</div>
+
+</body>
+</html>
diff --git a/skins/classic/templates/messageerror.html b/skins/classic/templates/messageerror.html
new file mode 100644 (file)
index 0000000..9af45f4
--- /dev/null
@@ -0,0 +1,78 @@
+<!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><roundcube:object name='productname' /> :: <roundcube:label name='servererror' /></title>
+<roundcube:include file="/includes/links.html" />
+
+<roundcube:if condition="env:action!='show'" />
+
+</head>
+<body class="iframe" style="background-color:#F2F2F2;">
+
+<div style="margin:20px auto; text-align:center">
+<img src="/images/watermark.gif" width="260" height="228" alt="" />
+</div>
+
+</body>
+
+<roundcube:else />
+
+<script type="text/javascript" src="/splitter.js"></script>
+<script type="text/javascript" src="/functions.js"></script>
+<style type="text/css">
+#mailboxlist-container { width: <roundcube:exp expression="!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv-5 : 170" />px; }
+#messageframe { left: <roundcube:exp expression="!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv+5 : 180" />px;
+<roundcube:exp expression="browser:ie ? ('width: expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv+5 : 180).')+\\'px\\');') : ''" />
+}
+</style>
+</head>
+
+<body onload="rcube_init_mail_ui()">
+
+<roundcube:include file="/includes/taskbar.html" />
+<roundcube:include file="/includes/header.html" />
+
+<div id="messagetoolbar">
+<roundcube:button command="list" type="link" class="button back" classAct="button back" classSel="button backSel" title="backtolist" content=" " />
+<roundcube:button command="compose" type="link" class="button compose" classAct="button compose" classSel="button composeSel" title="writenewmessage" content=" " />
+</div>
+
+<div id="mainscreen">
+<div id="mailleftcontainer">
+<div id="mailboxlist-container">
+<div class="boxtitle"><roundcube:label name="mailboxlist" /></div>
+<div class="boxlistcontent">
+<roundcube:object name="mailboxlist" id="mailboxlist" folder_filter="mail" />
+</div>
+<div class="boxfooter">
+  <roundcube:button name="mailboxmenulink" id="mailboxmenulink" type="link" title="folderactions" class="button groupactions" onclick="rcmail_ui.show_popup('mailboxmenu');return false" content=" " />
+</div>
+</div>
+</div>
+
+<div id="messageframe" style="background-color:#F2F2F2;">
+<div style="margin:20px auto; text-align:center">
+<img src="/images/watermark.gif" width="260" height="228" alt="" />
+</div>
+</div>
+
+</div>
+
+<script type="text/javascript">
+    var mailviewsplitv = new rcube_splitter({id:'mailviewsplitterv', p1: 'mailboxlist-container', p2: 'messageframe', orientation: 'v', relative: true, start: 165});
+    rcmail.add_onload('mailviewsplitv.init()');
+</script>
+
+<div id="mailboxoptionsmenu" class="popupmenu">
+  <ul>
+    <li><roundcube:button command="expunge" type="link" label="compact" classAct="active" /></li>
+    <li class="separator_below"><roundcube:button command="purge" type="link" label="empty" classAct="active" /></li>
+    <li><roundcube:button command="folders" task="settings" type="link" label="managefolders" classAct="active" /></li>
+    <roundcube:container name="mailboxoptions" id="mailboxoptionsmenu" />
+  </ul>
+</div>
+
+</body>
+<roundcube:endif />
+
+</html>
diff --git a/skins/classic/templates/messagepart.html b/skins/classic/templates/messagepart.html
new file mode 100644 (file)
index 0000000..ce7dbe2
--- /dev/null
@@ -0,0 +1,25 @@
+<!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><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+</head>
+<body class="extwin">
+
+<roundcube:include file="/includes/header.html" />
+
+<div id="partheader">
+<roundcube:object name="messagePartControls" cellpadding="2" cellspacing="0" />
+
+<div style="position:absolute; top:2px; right:0; width:12em; text-align:right">
+  [<a href="#close" class="closelink" onclick="self.close()"><roundcube:label name="close" /></a>]
+</div>
+</div>
+
+
+<div id="messagepartcontainer">
+<roundcube:object name="messagePartFrame" id="messagepartframe" width="100%" height="100%" />
+</div>
+
+</body>
+</html>
diff --git a/skins/classic/templates/messagepreview.html b/skins/classic/templates/messagepreview.html
new file mode 100644 (file)
index 0000000..a606311
--- /dev/null
@@ -0,0 +1,20 @@
+<!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><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+</head>
+<body class="iframe">
+
+<div class="messageheaderbox">
+<roundcube:button command="permaurl" image="/images/icons/extwin.png" width="15" height="15" title="openinextwin" id="messageviewlink" target="_blank" />
+<roundcube:object name="messageHeaders" class="headers-table" cellspacing="0" cellpadding="2" addicon="/images/icons/silhouette.png" summary="Message headers" />
+<roundcube:object name="messageFullHeaders" id="full-headers" />
+<roundcube:object name="messageAttachments" id="attachment-list" />
+</div>
+
+<roundcube:object name="messageObjects" id="message-objects" />
+<roundcube:object name="messageBody" id="messagebody" />
+
+</body>
+</html>
diff --git a/skins/classic/templates/messageprint.html b/skins/classic/templates/messageprint.html
new file mode 100644 (file)
index 0000000..fa7822a
--- /dev/null
@@ -0,0 +1,19 @@
+<!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><roundcube:object name="pagetitle" /></title>
+<link rel="shortcut icon" href="/images/favicon.ico"/>
+<link rel="stylesheet" type="text/css" href="/print.css" />
+</head>
+<body>
+
+<roundcube:object name="logo" src="/images/roundcube_logo.png" id="logo" border="0" />
+
+<div id="printmessageframe">
+<roundcube:object name="messageHeaders" class="headers-table" cellspacing="0" cellpadding="2" />
+<roundcube:object name="messageAttachments" id="attachment-list" />
+<roundcube:object name="messageBody" id="messagebody" showImages="false" />
+</div>
+
+</body>
+</html>
diff --git a/skins/classic/templates/plugin.html b/skins/classic/templates/plugin.html
new file mode 100644 (file)
index 0000000..cec7013
--- /dev/null
@@ -0,0 +1,23 @@
+<!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><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<script type="text/javascript" src="/functions.js"></script>
+</head>
+<body>
+
+<roundcube:include file="/includes/taskbar.html" />
+<roundcube:include file="/includes/header.html" />
+<roundcube:if condition="env:task == 'settings'" />
+  <roundcube:include file="/includes/settingstabs.html" />
+<roundcube:endif />
+
+<div id="mainscreen">
+<roundcube:object name="plugin.body" />
+</div>
+  
+<roundcube:object name="plugin.footer" />
+
+</body>
+</html>
diff --git a/skins/classic/templates/settings.html b/skins/classic/templates/settings.html
new file mode 100644 (file)
index 0000000..0cd623f
--- /dev/null
@@ -0,0 +1,41 @@
+<!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><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<script type="text/javascript" src="/functions.js"></script>
+<script type="text/javascript" src="/splitter.js"></script>
+
+<style type="text/css">
+#sectionslist { width: <roundcube:exp expression="!empty(cookie:prefsviewsplitter) ? cookie:prefsviewsplitter-5 : 190" />px; }
+#prefs-box { left: <roundcube:exp expression="!empty(cookie:prefsviewsplitter) ? cookie:prefsviewsplitter+5 : 200" />px;
+<roundcube:exp expression="browser:ie ? ('width:expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:prefsviewsplitter) ? cookie:prefsviewsplitter+5 : 200).')+\\'px\\');') : ''" />
+}
+</style>
+
+</head>
+<body>
+
+<roundcube:include file="/includes/taskbar.html" />
+<roundcube:include file="/includes/header.html" />
+<roundcube:include file="/includes/settingstabs.html" />
+
+<div id="mainscreen">
+
+<div id="sectionslist">
+<roundcube:object name="sectionslist" id="sections-table" class="records-table" cellspacing="0" />
+</div>
+
+<script type="text/javascript">
+  var prefviewsplit = new rcube_splitter({id:'prefsviewsplitter', p1: 'sectionslist', p2: 'prefs-box', orientation: 'v', relative: true, start: 195});
+  rcmail.add_onload('prefviewsplit.init()');
+</script>
+
+<div id="prefs-box">
+<roundcube:object name="prefsframe" id="prefs-frame" width="100%" height="100%" frameborder="0" src="/watermark.html" />
+</div>
+
+</div>
+
+</body>
+</html>
diff --git a/skins/classic/templates/settingsedit.html b/skins/classic/templates/settingsedit.html
new file mode 100644 (file)
index 0000000..642eb09
--- /dev/null
@@ -0,0 +1,22 @@
+<!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><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<script type="text/javascript" src="/functions.js"></script>
+</head>
+<body class="iframe">
+
+<div id="prefs-title" class="boxtitle"><roundcube:object name="sectionname" /></div>
+
+<div id="prefs-details" class="boxcontent">
+  <roundcube:object name="userprefs" form="form" />
+  <div id="formfooter">
+    <div class="footerleft">
+      <roundcube:button command="save" type="input" class="button mainaction" label="save" />
+    </div>
+  </div>
+</div>
+
+</body>
+</html>
diff --git a/skins/classic/watermark.html b/skins/classic/watermark.html
new file mode 100644 (file)
index 0000000..c16a503
--- /dev/null
@@ -0,0 +1,19 @@
+<!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></title>
+  <!--[if IE]>
+  <style type="text/css">
+    body { width: expression((parseInt(document.documentElement.clientWidth)-20)+'px'); }
+  </style>
+  <![endif]-->
+</head>
+
+<body style="background-color:#F2F2F2;">
+
+<div style="margin:20px auto; text-align:center">
+<img src="images/watermark.gif" width="260" height="228" alt="" />
+</div>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/skins/default/README b/skins/default/README
deleted file mode 100644 (file)
index ba690d7..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-ROUNDCUBE WEBMAIL DEFAULT SKIN
-==============================
-
-This skin package contains the current development theme of the Roundcube
-Webmail software. It can be used, modified and redistributed according to
-the terms described in the LICENSE section.
-
-For information about building or modifiying Roundcube skins please visit
-http://trac.roundcube.net/wiki/Doc_Skins
-
-The theme uses icons originally designed by Stephen Horlander and Kevin Gerich
-for Mozilla.org. In case of redistribution giving credit to these artwork
-creators is mandatory.
-
-
-LICENSE
--------
-The contents of this folder are subject to the Creative Commons
-Attribution-ShareAlike License. It is allowed to copy, distribute,
-transmit and to adapt the work by keeping credits to the original
-autors in the README file.
-See http://creativecommons.org/licenses/by-sa/3.0/ for details.
-
diff --git a/skins/default/addressbook.css b/skins/default/addressbook.css
deleted file mode 100644 (file)
index c604c75..0000000
+++ /dev/null
@@ -1,399 +0,0 @@
-/***** Roundcube|Mail address book task styles *****/
-
-#abooktoolbar
-{
-  position: absolute;
-  top: 45px;
-  left: 225px;
-  height: 35px;
-}
-
-#abooktoolbar a
-{
-  padding-right: 10px;
-}
-
-#abooktoolbar a.button,
-#abooktoolbar a.buttonPas,
-#abooktoolbar span.separator {
-  display: block;
-  float: left;
-  width: 32px;
-  height: 32px;
-  padding: 0;
-  margin-right: 10px;
-  overflow: hidden;
-  background: url(images/abook_toolbar.png) 0 0 no-repeat transparent;
-  opacity: 0.99; /* this is needed to make buttons appear correctly in Chrome */
-}
-
-#abooktoolbar a.buttonPas {
-  opacity: 0.35;
-}
-
-#abooktoolbar a.addcontactSel {
-  background-position: 0 -32px;
-}
-
-#abooktoolbar a.compose {
-  background-position: -32px 0;
-}
-
-#abooktoolbar a.composeSel {
-  background-position: -32px -32px;
-}
-
-#abooktoolbar a.delete {
-  background-position: -64px 0;
-}
-
-#abooktoolbar a.deleteSel {
-  background-position: -64px -32px;
-}
-
-#abooktoolbar a.import {
-  background-position: -96px 0;
-}
-
-#abooktoolbar a.importSel {
-  background-position: -96px -32px;
-}
-
-#abooktoolbar a.export {
-  background-position: -128px 0;
-}
-
-#abooktoolbar a.exportSel {
-  background-position: -128px -32px;
-}
-
-#abooktoolbar span.separator {
-  width: 5px;
-  background-position: -162px 0;
-}
-
-#abooktoolbar a.search {
-  background-position: -170px 0;
-}
-
-#abooktoolbar a.searchSel {
-  background-position: -170px -32px;
-}
-
-#abookcountbar
-{
-  margin-top: 4px;
-  margin-left: 4px;
-}
-
-#addressscreen
-{
-  position: absolute;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 205px;
-}
-
-#directorylistbox
-{
-  position: absolute;
-  top: 0;
-  bottom: 0;
-  left: 0;
-  width: 195px;
-  border: 1px solid #999999;
-  background-color: #F9F9F9;
-  overflow: hidden;
-}
-
-#directorylistbox input
-{
-  margin: 0px;
-  font-size: 11px;
-  width: 90%;
-}
-
-#addresslist
-{
-  position: absolute;
-  top: 0;
-  bottom: 0;
-  border: 1px solid #999999;
-  background-color: #F9F9F9;
-  overflow: hidden;
-}
-
-#contactgroupslist
-{
-  border-top: 1px solid #999;
-}
-
-#addresslist
-{
-  left: 0px;
-  width: 280px;
-}
-
-#directorylist
-{
-  list-style: none;
-  margin: 0;
-  padding: 0;
-  background-color: #FFFFFF;
-}
-
-#directorylist li
-{
-  display: block;
-  font-size: 11px;
-  background: url(images/icons/folders.png) 5px -108px no-repeat;
-  border-bottom: 1px solid #EBEBEB;
-  white-space: nowrap;
-}
-
-#directorylist li a
-{
-  cursor: default;
-  display: block;
-  padding-left: 25px;
-  padding-top: 2px;
-  padding-bottom: 2px;
-  text-decoration: none;
-  white-space: nowrap;
-}
-
-#directorylist li.contactgroup
-{
-  padding-left: 15px;
-  background-position: 20px -143px;
-}
-
-#directorylist li.contactsearch
-{
-  background-position: 6px -162px;
-}
-
-#directorylist li.selected
-{
-  background-color: #929292;
-  border-bottom: 1px solid #898989;
-}
-
-#directorylist li.selected a
-{
-  color: #FFF;
-  font-weight: bold;
-}
-
-#directorylist li.droptarget
-{
-  background-color: #FFFFA6;
-}
-
-#contacts-table
-{
-  width: 100%;
-  table-layout: fixed;
-}
-
-#contacts-table tbody td
-{
-  cursor: default;
-  text-overflow: ellipsis;
-  -o-text-overflow: ellipsis;
-}
-
-#contacts-box
-{
-  position: absolute;
-  top: 0px;
-  left: 290px;
-  right: 0px;
-  bottom: 0px;
-  border: 1px solid #999999;
-  overflow: hidden;
-}
-
-body.iframe,
-#contact-frame
-{
-  background-color: #F2F2F2;
-  border: none;
-  min-height: 100%; /* Chrome 14 bug */
-}
-
-#contacttabs
-{
-       position: relative;
-       padding-bottom: 12px;
-}
-
-#contacttabs div.tabsbar {
-       top: 0;
-       left: 2px;
-}
-
-#contacttabs fieldset.tabbed {
-       position: relative;
-       top: 22px;
-       min-height: 5em;
-}
-
-#contacthead
-{
-       margin-bottom: 1em;
-       border: 0;
-       padding: 0;
-}
-
-#contacthead .names span.namefield,
-#contacthead .names input
-{
-       font-size: 140%;
-}
-
-#contacthead .displayname span.namefield
-{
-       font-size: 120%;
-}
-
-#contacthead span.nickname:before,
-#contacthead span.nickname:after,
-#contacthead input.ff_nickname:before,
-#contacthead input.ff_nickname:after
-{
-       content: '"';
-}
-
-#contacthead input
-{
-       margin-right: 6px;
-       margin-bottom: 0.2em;
-}
-
-#contacthead .names input,
-#contacthead .addnames input
-{
-       width: 180px;
-}
-
-#contacthead input.ff_prefix,
-#contacthead input.ff_suffix
-{
-       width: 90px;
-}
-
-#contacthead .addnames input.ff_name
-{
-       width: 374px;
-}
-
-#contactphoto
-{
-       float: right;
-       width: 60px;
-       margin-left: 3em;
-       margin-right: 4px;
-}
-
-#contactpic
-{
-       width: 60px;
-       min-height: 60px;
-       border: 1px solid #ccc;
-       background: white;
-}
-
-#contactpic img {
-       width: 60px;
-}
-
-#contactphoto .formlinks
-{
-       margin-top: 0.5em;
-       text-align: center;
-}
-
-fieldset.contactfieldgroup
-{
-       border: 0;
-       margin: 0.5em 0;
-       padding: 0.2em 2px;
-}
-
-fieldset.contactfieldgroupmulti
-{
-       padding: 0.5em 2px;
-}
-
-fieldset.contactfieldgroup legend
-{
-       font-size: 0.9em;
-}
-
-.contactfieldgroup .row
-{
-       position: relative;
-       margin: 0.2em 0;
-}
-
-.contactfieldgroup .contactfieldlabel
-{
-       position: absolute;
-       top: 0;
-       left: 2px;
-       width: 110px;
-       white-space: nowrap;
-       overflow: hidden;
-       text-overflow: ellipsis;
-       color: #666;
-       font-weight: bold;
-}
-
-.contactfieldgroup .contactfieldlabel select
-{
-       width: 100%;
-       background: none;
-       border: 0;
-       color: #666;
-       font-weight: bold;
-       padding-left: 0;
-}
-
-.contactfieldgroup .contactfieldcontent
-{
-       padding-left: 120px;
-       min-height: 1em;
-       line-height: 1.3em;
-}
-
-.contactfieldgroup .contactfield {
-       line-height: 1.3em;
-}
-
-.contactcontrolleraddress .contactfieldcontent input {
-       margin-bottom: 0.1em;
-}
-
-.contactfieldcontent .contactfieldbutton {
-       vertical-align: middle;
-       margin-left: 0.5em;
-}
-
-#upload-form
-{
-       padding: 6px;
-}
-
-#upload-form div
-{
-       padding: 2px;
-}
-
-#sourcename
-{
-  color: #666;
-  font-size: 10px;
-  margin: -5px 0 8px 2px;
-}
diff --git a/skins/default/common.css b/skins/default/common.css
deleted file mode 100644 (file)
index f7abd06..0000000
+++ /dev/null
@@ -1,951 +0,0 @@
-/***** Roundcube|Mail basic styles *****/
-
-body
-{
-  font-family: "Lucida Grande", Verdana, Arial, Helvetica, sans-serif;
-  margin: 8px;
-  background-color: #F6F6F6;
-  color: #000;
-  font-size: 12px;
-}
-
-body.iframe
-{
-  margin: 20px 0 0 0;
-  background-color: #FFF;
-}
-
-body.extwin
-{
-  margin: 10px;
-}
-
-td, th, div, p, select, input, textarea
-{
-  font-size: 12px;
-  font-family: inherit;
-}
-
-th
-{
-  font-weight: normal;
-}
-
-h3
-{
-  font-size: 18px;
-}
-
-a, a:active, a:visited
-{
-  color: #000;
-  outline: none;
-}
-
-a.button, a.button:visited, a.tab, a.tab:visited, a.axislist
-{
-  color: #000;
-  text-decoration: none;
-}
-
-a.tab
-{
-  width: 80px;
-  display: block;
-  text-align: center;
-}
-
-hr
-{
-  height: 1px;
-  background-color: #666;
-  border-style: none;
-}
-
-input[type="text"],
-input[type="button"],
-input[type="password"],
-textarea
-{
-  border: 1px solid #666;
-  color: #333;
-  background-color: #FFF;
-}
-
-input, textarea
-{
-  color: black;
-  padding: 1px 3px;
-}
-
-input.placeholder,
-textarea.placeholder
-{
-  color: #aaa;
-}
-
-input.button
-{
-  height: 20px;
-  color: #333333;
-  font-size: 12px;
-  padding-left: 8px;
-  padding-right: 8px;
-  background: url(images/buttons/bg.gif) repeat-x #f0f0f0;
-  border: 1px solid #a4a4a4;
-}
-
-input.button:hover
-{
-  color: black;
-}
-
-input.button[disabled],
-input.button[disabled]:hover
-{
-  color: #aaa;
-  border-color: #ccc;
-}
-
-input.mainaction
-{
-  font-weight: bold;
-  border: 1px solid #999;
-}
-
-img
-{
-  border: 0;
-}
-
-.alttext
-{
-  font-size: 11px;
-}
-
-.hint
-{
-  color: #666;
-  font-size: 11px;
-}
-
-.formlinks a,
-.formlinks a:visited
-{
-  color: #CC0000;
-  font-size: 11px;
-  text-decoration: none;
-}
-
-.formlinks a.disabled,
-.formlinks a.disabled:visited
-{
-  color: #999999;
-}
-
-/** common user interface objects */
-
-#mainscreen
-{
-  position: absolute;
-  top: 85px;
-  right: 20px;
-  bottom: 20px;
-  left: 20px;
-}
-
-body > #header
-{
-  position: absolute;
-  top: 8px;
-  left: 19px;
-  width: 170px;
-  height: 40px;
-  z-index: 100;
-}
-
-#taskbar
-{
-  position: absolute;
-  top: 0px;
-  right: 0px;
-  height: 24px;
-  width: 100%;
-  background: url(images/taskbar.png) top right no-repeat;
-  padding: 10px 6px 5px 0px;
-  text-align: right;
-  white-space: nowrap;
-  z-index: 2;
-}
-
-#taskbar a
-{
-  font-size: 11px;
-  color: #666666;
-  text-decoration: none;
-  padding: 6px 12px 6px 26px;
-  background: url(images/taskicons.gif) no-repeat;
-}
-
-#taskbar a:hover
-{
-  color: #333333;
-}
-
-#taskbar a.button-mail
-{
-  background-position: 0 0;
-}
-
-#taskbar a.button-addressbook
-{
-  background-position: 0 -25px;
-}
-
-#taskbar a.button-settings
-{
-  background-position: 0 -50px;
-}
-
-#taskbar a.button-logout
-{
-  background-position: 0 -75px;
-}
-
-body > #message
-{
-  position: absolute;
-  display: none;
-  top: -1px;
-  margin-left: -225px;
-  left: 50%;
-  z-index: 5000;
-  opacity: 0.85;
-}
-
-body > #message div
-{
-  width: 400px;
-  margin: 0px;
-  min-height: 22px;
-  padding: 8px 10px 8px 46px;
-}
-
-body > #message div.notice,
-#message-objects div.notice
-{
-  background: url(images/display/icons.png) 6px 3px no-repeat;
-  background-color: #F7FDCB;
-  border: 1px solid #C2D071;
-}
-
-body > #message div.error,
-body > #message div.warning,
-#message-objects div.warning,
-#message-objects div.error
-{
-  background: url(images/display/icons.png) 6px -97px no-repeat;
-  background-color: #EF9398;
-  border: 1px solid #DC5757;
-}
-
-body > #message div.confirmation,
-#message-objects div.confirmation
-{
-  background: url(images/display/icons.png) 6px -47px no-repeat;
-  background-color: #A6EF7B;
-  border: 1px solid #76C83F;
-}
-
-body > #message div.loading,
-#message-objects div.loading
-{
-  background: url(images/display/loading.gif) 6px 3px no-repeat;
-  background-color: #EBEBEB;
-  border: 1px solid #CCCCCC;
-}
-
-body > #message a
-{
-  cursor: pointer;
-  text-decoration: underline;
-}
-
-.box
-{
-  border: 1px solid #999;
-}
-
-.boxtitle
-{
-  height: 12px !important;
-  padding: 2px 10px 5px 5px;
-  border-bottom: 1px solid #999;
-  color: #333;
-  font-size: 11px;
-  font-weight: bold;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  -o-text-overflow: ellipsis;
-  white-space: nowrap;
-  background: url(images/listheader.gif) top left repeat-x #CCC;
-}
-
-.boxtitle .rightalign
-{
-  float: right;
-}
-
-body.iframe .boxtitle
-{
-  position: fixed;
-  top: 0;
-  left: 0;
-  width: 100%;
-}
-
-.boxcontent
-{
-  padding: 15px 10px 10px 10px;
-  background-color: #F2F2F2;
-}
-
-.boxcontent table td.title
-{
-  color: #666;
-  padding-right: 10px;
-}
-
-.boxlistcontent
-{
-  position: absolute;
-  top: 20px;
-  bottom: 22px;
-  left: 0;
-  right: 0;
-  width: 100%;
-  overflow-y: auto;
-  overflow-x: hidden;
-}
-
-.boxsubject
-{
-  position: absolute;
-  top: 0px;
-  left: 0px;
-  right: 0px;
-  overflow: hidden;
-  height: 22px;
-  border-bottom: 1px solid #999;
-  background: url(images/listheader.gif) top left repeat-x #CCC;
-}
-
-.boxfooter
-{
-  position: absolute;
-  bottom: 0px;
-  left: 0px;
-  right: 0px;
-  overflow: hidden;
-  height: 22px;
-  border-top: 1px solid #999;
-  background: url(images/listheader.gif) top left repeat-x #CCC;
-}
-
-.boxfooter a.button,
-.boxfooter a.buttonPas
-{
-  display: block;
-  float: left;
-  width: 34px;
-  height: 22px;
-  padding: 0px;
-  margin: 0;
-  overflow: hidden;
-  background: url(images/icons/groupactions.png) 0 0 no-repeat transparent;
-  opacity: 0.99; /* this is needed to make buttons appear correctly in Chrome */
-}
-
-.boxfooter a.groupactions
-{
-  background-position: 0 -26px;
-}
-
-.boxfooter a.buttonPas
-{
-  opacity: 0.35;
-}
-
-.pagenav
-{
-  min-width: 250px;
-}
-
-.pagenav span
-{
-  color: #444;
-  font-size: 11px;
-  text-shadow: white 1px 1px;
-  white-space: nowrap;
-}
-
-.pagenav a.button,
-.pagenav a.buttonPas
-{
-  display: block;
-  float: left;
-  width: 11px;
-  height: 11px;
-  padding: 0;
-  margin: 1px;
-  overflow: hidden;
-  background: url(images/pagenav.gif) 0 0 no-repeat transparent;
-  opacity: 0.99; /* this is needed to make buttons appear correctly in Chrome */
-}
-
-.pagenav a.buttonPas {
-  opacity: 0.35;
-}
-
-.pagenav a.firstpageSel {
-  background-position: 0 -11px;
-}
-
-.pagenav a.prevpage {
-  background-position: -11px 0;
-}
-
-.pagenav a.prevpageSel {
-  background-position: -11px -11px;
-}
-
-.pagenav a.nextpage {
-  background-position: -22px 0;
-}
-
-.pagenav a.nextpageSel {
-  background-position: -22px -11px;
-}
-
-.pagenav a.lastpage {
-  background-position: -33px 0;
-}
-
-.pagenav a.lastpageSel {
-  background-position: -33px -11px;
-}
-
-.splitter
-{
-  user-select: none;
-  -moz-user-select: none;
-  -khtml-user-select: none;
-  position: absolute;
-  background: url(images/dimple.png) center no-repeat;
-}
-
-.splitter-h
-{
-  cursor: n-resize; cursor: row-resize;
-  background-position: center 2px;
-}
-
-.splitter-v
-{
-  cursor: e-resize; cursor: col-resize;
-  background-position: 2px center;
-}
-
-.popupmenu
-{
-  position: absolute;
-  top: 32px;
-  left: 90px;
-  width: auto;
-  display: none;
-  background-color: #fff;
-  background-color: rgba(255, 255, 255, 0.95);
-  border: 1px solid #999;
-  padding: 4px;
-  z-index: 240;
-  border-radius: 3px;
-  -moz-border-radius: 3px;
-  -webkit-border-radius: 3px;
-  -moz-box-shadow: 1px 1px 12px #999;
-  -webkit-box-shadow: #999 1px 1px 12px;
-}
-
-.popupmenu ul
-{
-  margin: -4px 0;
-  padding: 0;
-  list-style: none;
-}
-
-.popupmenu ul li
-{
-  font-size: 11px;
-  white-space: nowrap;
-  min-width: 100px;
-  margin: 3px -4px;
-}
-
-.popupmenu li a
-{
-  display: block;
-  color: #a0a0a0;
-  padding: 2px 10px;
-  text-decoration: none;
-  min-height: 14px;
-}
-
-.popupmenu li a.active,
-.popupmenu li a.active:active,
-.popupmenu li a.active:visited
-{
-  color: #333;
-}
-
-.popupmenu li a.active:hover
-{
-  color: #fff;
-  background-color: #c00;
-}
-
-.popupmenu li.block input
-{
-  float: left;
-}
-
-.darkbg
-{
-  background-color: #F2F2F2 !important;
-}
-
-.dropbutton,
-.dropbutton span
-{
-  float: left;
-  height: 32px;
-}
-
-.dropbutton:hover
-{
-/*  background: url(images/dbutton.png) 0 0 no-repeat transparent; */
-}
-
-.dropbutton span
-{
-  width: 9px;
-  background: url(images/dbutton.png) -53px 0 no-repeat transparent;
-}
-
-.dropbutton span:hover
-{
-  cursor: pointer;
-  background-position: -74px 0;
-}
-
-
-/***** common table settings ******/
-
-table.records-table thead tr td
-{
-  height: 20px;
-  padding: 0px 4px 0px 4px;
-  vertical-align: middle;
-  border-bottom: 1px solid #999999;
-  color: #333333;
-  background: url(images/listheader.gif) top left repeat-x #CCC;
-  font-size: 11px;
-  font-weight: bold;
-}
-
-table.records-table tbody tr td
-{
-  height: 16px;
-  padding: 2px 4px 2px 4px;
-  font-size: 11px;
-  white-space: nowrap;
-  border-bottom: 1px solid #EBEBEB;
-  overflow: hidden;
-  text-align: left;  
-}
-
-table.records-table tr
-{
-  background-color: #FFFFFF;
-}
-
-table.records-table tr.selected td
-{
-  color: #FFFFFF;
-  background-color: #CC3333;
-}
-
-table.records-table tr.focused td
-{
-}
-
-table.records-table tr.unfocused td
-{
-  color: #FFFFFF;
-  background-color: #929292;
-}
-
-
-/***** mac-style quicksearch field *****/
-
-#quicksearchbar
-{
-  position: absolute;
-  top: 55px;
-  right: 30px;
-  width: 190px;
-  height: 20px;
-  text-align: right;
-  background: url(images/searchfield.gif) top left no-repeat;
-}
-
-#searchreset
-{
-  position: absolute;
-  top: 3px;
-  right: 12px;
-  text-decoration: none;
-}
-
-#searchmenulink
-{
- position: absolute;
- top: 3px;
- right: 168px;
-}
-
-#quicksearchbar img
-{
-  vertical-align: middle;
-}
-
-#quicksearchbox
-{
-  position: absolute;
-  top: 2px;
-  left: 24px;
-  width: 140px;
-  height: 15px;
-  font-size: 11px;
-  padding: 0px;
-  border: none;
-}
-
-/***** roundcube webmail pre-defined classes *****/
-
-#rcmversion
-{
-  position: absolute;
-  bottom: 10px;
-  right: 20px;
-  text-align: right;
-  white-space: nowrap;
-  font-size: 8pt;
-  color: #999;
-}
-
-#rcmdraglayer
-{
-  min-width: 300px;
-  width: auto !important;
-  width: 300px;
-  border: 1px solid #999999;
-  background-color: #fff;
-  padding-left: 8px;
-  padding-right: 8px;
-  padding-top: 3px;
-  padding-bottom: 3px;
-  font-size: 11px;
-  white-space: nowrap;
-  opacity: 0.82;
-  border-radius: 3px;
-  -moz-border-radius: 3px;
-  -webkit-border-radius: 3px;
-  -moz-box-shadow: 1px 1px 12px #999;
-  -webkit-box-shadow: #999 1px 1px 12px;
-}
-
-.draglayercopy:before
-{
-  position: absolute;
-  bottom: -5px;
-  left: -6px;
-  content: " ";
-  width: 14px;
-  height: 14px;
-  background: url(images/messageactions.png) -2px -128px no-repeat;
-}
-
-a.rcmContactAddress
-{
-  text-decoration: none;
-}
-
-a.rcmContactAddress:hover
-{
-  text-decoration: underline;
-}
-
-#rcmKSearchpane
-{
-  background-color: #F9F9F9;
-  border: 1px solid #CCCCCC;
-}
-
-#rcmKSearchpane ul
-{
-  margin: 0px;
-  padding: 2px;
-  list-style-image: none;
-  list-style-type: none;
-}
-
-#rcmKSearchpane ul li
-{
-  display: block;
-  height: 16px;
-  font-size: 11px;
-  padding-left: 6px;
-  padding-top: 2px;
-  padding-right: 6px;
-  white-space: nowrap;
-  cursor: pointer;
-}
-
-#rcmKSearchpane ul li.selected
-{
-  color: #ffffff;
-  background-color: #CC3333;
-}
-
-#login-form
-{
-  margin-left: auto;
-  margin-right: auto;
-  margin-top: 50px;
-  width: 400px;
-  border: 1px solid #999;
-}
-
-#login-form table td.title
-{
-  text-align: right;
-  white-space: nowrap;
-}
-
-#login-form table
-{
-  width: 1%;
-  margin: auto;
-}
-
-#login-form table td.input input
-{
-  width: 200px;
-}
-
-#console
-{
-  opacity: 0.8;
-}
-
-.disabled
-{
-  color: #999;
-}
-
-font.bold
-{
-  font-weight: bold;
-}
-
-
-/***** onclick menu list *****/
-
-ul.toolbarmenu
-{
-  margin: -4px 0 -4px 0;
-  padding: 0;
-  list-style: none;
-}
-
-ul.toolbarmenu li
-{
-  font-size: 11px;
-  white-space: nowrap;
-  min-width: 130px;
-  margin: 2px -4px;
-}
-
-ul.toolbarmenu li a
-{
-  display: block;
-  color: #a0a0a0;
-  padding: 1px 12px 3px 28px;
-  text-decoration: none;
-  min-height: 14px;
-}
-
-ul.toolbarmenu li a.active,
-ul.toolbarmenu li a.active:active,
-ul.toolbarmenu li a.active:visited
-{
-  color: #333;
-}
-
-ul.toolbarmenu li input
-{
-  vertical-align: middle;
-}
-
-ul.toolbarmenu li hr
-{
-  color: #ccc;
-  width: 130px;
-  height: 1px;
-  margin: 2px 1px 2px 1px;
-}
-
-ul.toolbarmenu li img
-{
-  float: left;
-  margin: 0 2px;
-}
-
-div.popupmenu ul li.separator_below,
-ul.toolbarmenu li.separator_below
-{
-  border-bottom: 1px solid #ccc;
-  margin-bottom: 2px;
-  padding-bottom: 2px;
-}
-
-div.popupmenu ul li.separator_above,
-ul.toolbarmenu li.separator_above
-{
-  border-top: 1px solid #ccc;
-  margin-top: 2px;
-  padding-top: 2px;
-}
-
-#searchmenu
-{
-  width: 160px;
-}
-
-#searchmenu ul.toolbarmenu
-{
-  margin: 0;
-}
-
-#searchmenu ul.toolbarmenu li
-{
-  margin: 1px 4px 1px;
-}
-
-
-/***** tabbed interface elements *****/
-
-div.tabsbar,
-#tabsbar
-{
-  position: absolute;
-  top: 50px;
-  left: 220px;
-  right: 20px;
-  height: 22px;
-  border-bottom: 1px solid #999999;
-  white-space: nowrap;
-}
-
-div.tabsbar
-{
-  top: 35px;
-  left: 12px;
-  right: 12px;
-}
-
-span.tablink,
-span.tablink-selected
-{
-  float: left;
-  height: 23px !important;
-  height: 22px;
-  overflow: hidden;
-  background: url(images/tabs-left.gif) top left no-repeat;
-}
-
-span.tablink
-{
-  cursor: pointer;
-}
-
-span.tablink-selected
-{
-  cursor: default;
-  background-position: 0px -23px;
-}
-
-span.tablink a,
-span.tablink-selected a
-{
-  display: inline-block;
-  padding: 5px 10px 0 5px;
-  margin-left: 5px;
-  height: 23px;
-  color: #555555;
-  max-width: 185px;
-  text-decoration: none;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  -o-text-overflow: ellipsis;
-  background: url(images/tabs-right.gif) top right no-repeat;
-}
-
-span.tablink-selected a
-{
-  cursor: inherit;
-  color: #000000;
-  background-position: right -23px;
-}
-
-fieldset
-{
-  margin-bottom: 1em;
-  border: 1px solid #999999;
-  padding: 4px 8px 9px 8px; 
-}
-
-legend
-{
-  color: #999999;
-}
-
-fieldset.tabbed
-{
-  margin-top: 22px;
-  padding-top: 12px;
-}
-
-.quota_text {
-  text-align: center;
-  font-size: 10px;
-  color: #666;
-  border: 1px solid #999;
-  cursor: default;
-}
-.quota_bg { background-color: white; }
-.quota_high { background: url(images/quota-colors.png) repeat-x 0 -28px #f90509; }
-.quota_mid { background: url(images/quota-colors.png) repeat-x 0 -14px #e3e909; }
-.quota_low { background: url(images/quota-colors.png) repeat-x 0 0px #05f905; }
-.quota_text_high { color: white; }
-.quota_text_mid { color: #666; }
-.quota_text_low { color: #666; }
diff --git a/skins/default/editor_content.css b/skins/default/editor_content.css
deleted file mode 100644 (file)
index aabed07..0000000
+++ /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/default/functions.js b/skins/default/functions.js
deleted file mode 100644 (file)
index 8482e37..0000000
+++ /dev/null
@@ -1,666 +0,0 @@
-/**
- * Roundcube functions for default skin interface
- */
-
-/**
- * Settings
- */
-
-function rcube_init_settings_tabs()
-{
-  var tab = '#settingstabdefault';
-  if (window.rcmail && rcmail.env.action)
-    tab = '#settingstab' + (rcmail.env.action=='preferences' ? 'default' : (rcmail.env.action.indexOf('identity')>0 ? 'identities' : rcmail.env.action.replace(/\./g, '')));
-
-  $(tab).addClass('tablink-selected');
-  $(tab + '> a').removeAttr('onclick').click(function() { return false; });
-}
-
-function rcube_show_advanced(visible)
-{
-  $('tr.advanced').css('display', (visible ? (bw.ie ? 'block' : 'table-row') : 'none'));
-}
-
-// Fieldsets-to-tabs converter
-// Warning: don't place "caller" <script> inside page element (id)
-function rcube_init_tabs(id, current)
-{
-  var content = $('#'+id),
-    fs = content.children('fieldset');
-
-  if (!fs.length)
-    return;
-
-  current = current ? current : 0;
-
-  // first hide not selected tabs
-  fs.each(function(idx) { if (idx != current) $(this).hide(); });
-
-  // create tabs container
-  var tabs = $('<div>').addClass('tabsbar').appendTo(content);
-
-  // convert fildsets into tabs
-  fs.each(function(idx) {
-    var tab, a, elm = $(this), legend = elm.children('legend');
-
-    // create a tab
-    a   = $('<a>').text(legend.text()).attr('href', '#');
-    tab = $('<span>').attr({'id': 'tab'+idx, 'class': 'tablink'})
-        .click(function() { rcube_show_tab(id, idx); return false })
-
-    // remove legend
-    legend.remove();
-    // style fieldset
-    elm.addClass('tabbed');
-    // style selected tab
-    if (idx == current)
-      tab.addClass('tablink-selected');
-
-    // add the tab to container
-    tab.append(a).appendTo(tabs);
-  });
-}
-
-function rcube_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('tablink-selected', idx==index);
-  });
-}
-
-/**
- * Mail UI
- */
-
-function rcube_mail_ui()
-{
-  this.popups = {
-    markmenu:       {id:'markmessagemenu'},
-    replyallmenu:   {id:'replyallmenu'},
-    forwardmenu:    {id:'forwardmenu', editable:1},
-    searchmenu:     {id:'searchmenu', editable:1},
-    messagemenu:    {id:'messagemenu'},
-    listmenu:       {id:'listmenu', editable:1},
-    dragmessagemenu:{id:'dragmessagemenu', sticky:1},
-    groupmenu:      {id:'groupoptionsmenu', above:1},
-    mailboxmenu:    {id:'mailboxoptionsmenu', above:1},
-    composemenu:    {id:'composeoptionsmenu', editable:1, overlap:1},
-    // 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 }
-  };
-
-  var obj;
-  for (var k in this.popups) {
-    obj = $('#'+this.popups[k].id)
-    if (obj.length)
-      this.popups[k].obj = obj;
-    else {
-      delete this.popups[k];
-    }
-  }
-}
-
-rcube_mail_ui.prototype = {
-
-show_popup: function(popup, show, config)
-{
-  var obj;
-  // auto-register menu object
-  if (!this.popups[popup] && (obj = $('#'+popup)) && obj.length)
-    this.popups[popup] = $.extend(config, {id: popup, obj: obj});
-
-  if (typeof this[popup] == 'function')
-    return this[popup](show);
-  else
-    return this.show_popupmenu(popup, show);
-},
-
-show_popupmenu: function(popup, show)
-{
-  var obj = this.popups[popup].obj,
-    above = this.popups[popup].above,
-    ref = rcube_find_object(popup+'link');
-
-  if (typeof show == 'undefined')
-    show = obj.is(':visible') ? false : true;
-  else if (this.popups[popup].toggle && show && this.popups[popup].obj.is(':visible') )
-    show = false;
-
-  if (show && ref) {
-    var parent = $(ref).parent(),
-      win = $(window),
-      pos = parent.hasClass('dropbutton') ? parent.offset() : $(ref).offset();
-
-    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() - 30;
-
-    obj.css({ left:pos.left, top:(pos.top + (above ? -obj.height() : ref.offsetHeight)) });
-  }
-
-  obj[show?'show':'hide']();
-
-  if (bw.ie6 && this.popups[popup].overlap) {
-    $('select').css('visibility', show?'hidden':'inherit');
-    $('select', obj).css('visibility', 'inherit');
-  }
-},
-
-dragmessagemenu: function(show)
-{
-  this.popups.dragmessagemenu.obj[show?'show':'hide']();
-},
-
-forwardmenu: function(show)
-{
-  $("input[name='forwardtype'][value="+(rcmail.env.forward_attachment ? 1 : 0)+"]", this.popups.forwardmenu.obj)
-    .prop('checked', true);
-  this.show_popupmenu('forwardmenu', show);
-},
-
-uploadmenu: function(show)
-{
-  if (typeof show == 'object') // called as event handler
-    show = false;
-
-  // clear upload form
-  if (!show) {
-    try { $('#attachment-form form')[0].reset(); }
-    catch(e){}  // ignore errors
-  }
-
-  this.show_popupmenu('uploadmenu', show);
-
-  if (!document.all && this.popups.uploadmenu.obj.is(':visible'))
-    $('#attachment-form input[type=file]').click();
-},
-
-searchmenu: function(show)
-{
-  var obj = this.popups.searchmenu.obj,
-    ref = rcube_find_object('searchmenulink');
-
-  if (typeof show == 'undefined')
-    show = obj.is(':visible') ? false : true;
-
-  if (show && ref) {
-    var pos = $(ref).offset();
-    obj.css({left:pos.left, top:(pos.top + ref.offsetHeight + 2)});
-
-    if (rcmail.env.search_mods) {
-      var n, all,
-        list = $('input:checkbox[name="s_mods[]"]', obj),
-        mbox = rcmail.env.mailbox,
-        mods = rcmail.env.search_mods;
-
-      if (rcmail.env.task == 'mail') {
-        mods = mods[mbox] ? mods[mbox] : mods['*'];
-        all = 'text';
-      }
-      else {
-        all = '*';
-      }
-
-      if (mods[all])
-        list.map(function() {
-          this.checked = true;
-          this.disabled = this.value != all;
-        });
-      else {
-        list.prop('disabled', false).prop('checked', false);
-        for (n in mods)
-          $('#s_mod_' + n).prop('checked', true);
-      }
-    }
-  }
-  obj[show?'show':'hide']();
-},
-
-set_searchmod: function(elem)
-{
-  var all, m, task = rcmail.env.task,
-    mods = rcmail.env.search_mods,
-    mbox = rcmail.env.mailbox;
-
-  if (!mods)
-    mods = {};
-
-  if (task == 'mail') {
-    if (!mods[mbox])
-      mods[mbox] = rcube_clone_object(mods['*']);
-    m = mods[mbox];
-    all = 'text';
-  }
-  else { //addressbook
-    m = mods;
-    all = '*';
-  }
-
-  if (!elem.checked)
-    delete(m[elem.value]);
-  else
-    m[elem.value] = 1;
-
-  // mark all fields
-  if (elem.value != all)
-    return;
-
-  $('input:checkbox[name="s_mods[]"]').map(function() {
-    if (this == elem)
-      return;
-
-    this.checked = true;
-    if (elem.checked) {
-      this.disabled = true;
-      delete m[this.value];
-    }
-    else {
-      this.disabled = false;
-      m[this.value] = 1;
-    }
-  });
-},
-
-listmenu: function(show)
-{
-  var obj = this.popups.listmenu.obj,
-    ref = rcube_find_object('listmenulink');
-
-  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);
-    // list columns
-    var found, cols = $('input[name="list_col[]"]');
-    for (var i=0; i<cols.length; i++) {
-      if (cols[i].value != 'from')
-        found = jQuery.inArray(cols[i].value, rcmail.env.coltypes) != -1;
-      else
-        found = (jQuery.inArray('from', rcmail.env.coltypes) != -1
-               || jQuery.inArray('to', rcmail.env.coltypes) != -1);
-      $(cols[i]).prop('checked', found);
-    }
-  }
-
-  obj[show?'show':'hide']();
-
-  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")
-    // IE6 complains if you set this attribute using either method:
-    //$('#listmenu fieldset').css({'height':'auto !important'});
-    //$('#listmenu fieldset').css("height","auto !important");
-      .height(maxheight);
-  };
-},
-
-open_listmenu: function(e)
-{
-  this.listmenu();
-},
-
-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(),
-    cols = $('input[name="list_col[]"]:checked')
-      .map(function(){ return this.value; }).get();
-
-  rcmail.set_list_options(cols, sort, ord, thread == 'thread' ? 1 : 0);
-},
-
-body_mouseup: function(evt, p)
-{
-  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
-      && (!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)))
-    ) {
-      window.setTimeout('rcmail_ui.show_popup("'+i+'",false);', 50);
-    }
-  }
-},
-
-target_overlaps: function (target, elementid)
-{
-  var element = rcube_find_object(elementid);
-  while (target.parentNode) {
-    if (target.parentNode == element)
-      return true;
-    target = target.parentNode;
-  }
-  return false;
-},
-
-body_keydown: function(evt, p)
-{
-  if (rcube_event.get_keycode(evt) == 27) {
-    for (var k in this.popups) {
-      if (this.popups[k].obj.is(':visible'))
-        this.show_popup(k, false);
-    }
-  }
-},
-
-switch_preview_pane: function(elem)
-{
-  var uid, prev_frm = $('#mailpreviewframe');
-
-  if (elem.checked) {
-    rcmail.env.contentframe = 'messagecontframe';
-    if (mailviewsplit.layer) {
-      mailviewsplit.resize();
-      mailviewsplit.layer.elm.style.display = '';
-    }
-    else
-      mailviewsplit.init();
-
-    if (bw.opera) {
-      $('#messagelistcontainer').css({height: ''});
-    }
-    prev_frm.show();
-
-    if (uid = rcmail.message_list.get_single_selection())
-      rcmail.show_message(uid, false, true);
-  }
-  else {
-    prev_frm.hide();
-    if (bw.ie6 || bw.ie7) {
-      var fr = document.getElementById('mailcontframe');
-      fr.style.bottom = 0;
-      fr.style.height = parseInt(fr.parentNode.offsetHeight)+'px';
-    }
-    else {
-      $('#mailcontframe').css({height: 'auto', bottom: 0});
-      if (bw.opera)
-        $('#messagelistcontainer').css({height: 'auto'});
-    }
-    if (mailviewsplit.layer)
-      mailviewsplit.layer.elm.style.display = 'none';
-
-    rcmail.env.contentframe = null;
-    rcmail.show_contentframe(false);
-  }
-
-  rcmail.command('save-pref', {name: 'preview_pane', value: (elem.checked?1:0)});
-},
-
-/* Message composing */
-init_compose_form: function()
-{
-  var f, field, fields = ['cc', 'bcc', 'replyto', 'followupto'],
-    div = document.getElementById('compose-div'),
-    headers_div = document.getElementById('compose-headers-div');
-
-  // Show input elements with non-empty value
-  for (f=0; f<fields.length; f++) {
-    if ((field = $('#_'+fields[f])) && field.length && field.val() != '')
-      rcmail_ui.show_header_form(fields[f]);
-  }
-
-  // prevent from form data loss when pressing ESC key in IE
-  if (bw.ie) {
-    var form = rcube_find_object('form');
-    form.onkeydown = function (e) {
-      if (rcube_event.get_keycode(e) == 27)
-        rcube_event.cancel(e);
-    };
-  }
-
-  $(window).resize(function() {
-    rcmail_ui.resize_compose_body();
-  });
-
-  $('#compose-container').resize(function() {
-    rcmail_ui.resize_compose_body();
-  });
-
-  div.style.top = (parseInt(headers_div.offsetHeight, 10) + 3) + 'px';
-  $(window).resize();
-},
-
-resize_compose_body: function()
-{
-  var div = $('#compose-div .boxlistcontent'), w = div.width(), h = div.height();
-  w -= 8;  // 2 x 3px padding + 2 x 1px border
-  h -= 4;
-
-  $('#compose-body').width(w+'px').height(h+'px');
-
-  if (window.tinyMCE && tinyMCE.get('compose-body')) {
-    $('#compose-body_tbl').width((w+6)+'px').height('');
-    $('#compose-body_ifr').width((w+6)+'px').height((h-54)+'px');
-  }
-  else {
-    $('#googie_edit_layer').height(h+'px');
-  }
-},
-
-resize_compose_body_ev: function()
-{
-  window.setTimeout(function(){rcmail_ui.resize_compose_body();}, 100);
-},
-
-show_header_form: function(id)
-{
-  var row, s,
-    link = document.getElementById(id + '-link');
-
-  if ((s = this.next_sibling(link)))
-    s.style.display = 'none';
-  else if ((s = this.prev_sibling(link)))
-    s.style.display = 'none';
-
-  link.style.display = 'none';
-
-  if ((row = document.getElementById('compose-' + id))) {
-    var div = document.getElementById('compose-div'),
-      headers_div = document.getElementById('compose-headers-div');
-    row.style.display = (document.all && !window.opera) ? 'block' : 'table-row';
-    div.style.top = (parseInt(headers_div.offsetHeight, 10) + 3) + 'px';
-    this.resize_compose_body();
-  }
-
-  return false;
-},
-
-hide_header_form: function(id)
-{
-  var row, ns,
-    link = document.getElementById(id + '-link'),
-    parent = link.parentNode,
-    links = parent.getElementsByTagName('a');
-
-  link.style.display = '';
-
-  for (var i=0; i<links.length; i++)
-    if (links[i].style.display != 'none')
-      for (var j=i+1; j<links.length; j++)
-           if (links[j].style.display != 'none')
-          if ((ns = this.next_sibling(links[i]))) {
-               ns.style.display = '';
-               break;
-             }
-
-  document.getElementById('_' + id).value = '';
-
-  if ((row = document.getElementById('compose-' + id))) {
-    var div = document.getElementById('compose-div'),
-      headers_div = document.getElementById('compose-headers-div');
-    row.style.display = 'none';
-    div.style.top = (parseInt(headers_div.offsetHeight, 10) + 1) + 'px';
-    this.resize_compose_body();
-  }
-
-  return false;
-},
-
-next_sibling: function(elm)
-{
-  var ns = elm.nextSibling;
-  while (ns && ns.nodeType == 3)
-    ns = ns.nextSibling;
-  return ns;
-},
-
-prev_sibling: function(elm)
-{
-  var ps = elm.previousSibling;
-  while (ps && ps.nodeType == 3)
-    ps = ps.previousSibling;
-  return ps;
-}
-
-};
-
-
-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' });
-
-  $('iframe').load(iframe_events)
-    .contents().mouseup(function(e){rcmail_ui.body_mouseup(e)});
-
-  if (rcmail.env.task == 'mail') {
-    rcmail.addEventListener('menu-open', 'open_listmenu', rcmail_ui);
-    rcmail.addEventListener('menu-save', 'save_listmenu', rcmail_ui);
-    rcmail.addEventListener('aftersend-attachment', 'uploadmenu', rcmail_ui);
-    rcmail.addEventListener('aftertoggle-editor', 'resize_compose_body_ev', rcmail_ui);
-    rcmail.gui_object('message_dragmenu', 'dragmessagemenu');
-
-    if (rcmail.gui_objects.mailboxlist) {
-      rcmail.addEventListener('responseaftermark', rcube_render_mailboxlist);
-      rcmail.addEventListener('responseaftergetunread', rcube_render_mailboxlist);
-      rcmail.addEventListener('responseaftercheck-recent', rcube_render_mailboxlist);
-      rcmail.addEventListener('aftercollapse-folder', rcube_render_mailboxlist);
-    }
-
-    if (rcmail.env.action == 'compose')
-      rcmail_ui.init_compose_form();
-  }
-  else if (rcmail.env.task == 'addressbook') {
-    rcmail.addEventListener('afterupload-photo', function(){ rcmail_ui.show_popup('uploadform', false); });
-  }
-}
-
-// Events handling in iframes (eg. preview pane)
-function iframe_events()
-{
-  // this==iframe
-  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' });
-}
-
-// Abbreviate mailbox names to fit width of the container
-function rcube_render_mailboxlist()
-{
-  var list = $('#mailboxlist > li a, #mailboxlist ul:visible > li a');
-
-  // it's too slow with really big number of folders, especially on IE
-  if (list.length > 500 * (bw.ie ? 0.2 : 1))
-    return;
-
-  list.each(function(){
-    var elem = $(this),
-      text = elem.data('text');
-
-    if (!text) {
-      text = elem.text().replace(/\s+\(.+$/, '');
-      elem.data('text', text);
-    }
-    if (text.length < 6)
-      return;
-
-    var abbrev = fit_string_to_size(text, elem, elem.width() - elem.children('span.unreadcount').width());
-    if (abbrev != text)
-      elem.attr('title', text);
-    elem.contents().filter(function(){ return (this.nodeType == 3); }).get(0).data = abbrev;
-  });
-}
-
-// inspired by https://gist.github.com/24261/7fdb113f1e26111bd78c0c6fe515f6c0bf418af5
-function fit_string_to_size(str, elem, len)
-{
-  var w, span, result = str, ellip = '...';
-
-  if (!rcmail.env.tmp_span) {
-    // it should be appended to elem to use the same css style
-    // but for performance reasons we'll append it to body (once)
-    span = $('<b>').css({visibility: 'hidden', padding: '0px'})
-      .appendTo($('body', document)).get(0);
-    rcmail.env.tmp_span = span;
-  }
-  else {
-    span = rcmail.env.tmp_span;
-  }
-  span.innerHTML = result;
-
-  // on first run, check if string fits into the length already.
-  w = span.offsetWidth;
-  if (w > len) {
-    var cut = Math.max(1, Math.floor(str.length * ((w - len) / w) / 2)),
-      mid = Math.floor(str.length / 2),
-      offLeft = mid,
-      offRight = mid;
-
-    while (true) {
-      offLeft = mid - cut;
-      offRight = mid + cut;
-      span.innerHTML = str.substring(0,offLeft) + ellip + str.substring(offRight);
-
-      // break loop if string fits size
-      if (offLeft < 3 || span.offsetWidth)
-        break;
-
-      cut++;
-    }
-
-    // build resulting string
-    result = str.substring(0,offLeft) + ellip + str.substring(offRight);
-  }
-
-  return result;
-}
-
-// Optional parameters used by TinyMCE
-var rcmail_editor_settings = {
-  skin : "default", // "default", "o2k7"
-  skin_variant : "" // "", "silver", "black"
-};
diff --git a/skins/default/googiespell.css b/skins/default/googiespell.css
deleted file mode 100644 (file)
index 8adadc2..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-/***** modified styles for GoogieSpell *****/
-
-.googie_window {
-  font-size: 11px;
-  width: 185px;
-  margin: 0;
-  padding: 0;
-}
-
-.googie_edit_layer {
-  background-color: #ffffff;
-  padding: 0 4px;
-  font-size: 9pt;
-  font-family: monospace;
-  border: 1px solid #999;
-}
-
-.googie_edit_layer span {
-  font-family: monospace;
-}
-
-.googie_list {
-  width: 100%;
-  margin: 0;
-  padding: 0;
-}
-
-.googie_list td {
-  font-size: 11px;
-  padding-left: 10px;
-  padding-right: 10px;
-  padding-top: 2px;
-  padding-bottom: 2px;
-  cursor: pointer;
-  list-style-type: none;
-}
-
-.googie_list_onhover {
-  color: #FFFFFF;
-  background-color: #CC3333;
-}
-
-.googie_list_onout {
-  background-color: #fff;
-}
-
-.googie_list_selected {
-  background-color: #cccccc;
-  font-weight: bold;
-}
-
-.googie_list_close {
-  font-size: 11px;
-  color: #b91414;
-}
-
-.googie_list_onhover .googie_list_close {
-  color: #FFFFFF;
-}
-
-.googie_list_revert {
-  font-size: 11px;
-  color: #b91414;
-}
-
-.googie_list_revert:hover {
-  color: #fff;
-}
-
-.googie_link {
-  color: #b91414;
-  text-decoration: underline;
-  cursor: pointer;
-  font-size: 9pt;
-  font-family: monospace;
-}
-
-.googie_check_spelling_link {
-  color: #CC0000;
-  font-size: 11px;
-  text-decoration: none;
-  cursor: pointer;
-}
-
-.googie_check_spelling_link:hover {
-  text-decoration: underline;
-}
-
-.googie_no_style {
-  text-decoration: none;
-}
-
-.googie_check_spelling_ok,
-.googie_resume_editing {
-  color: green;
-  font-size: 11px;
-  cursor: pointer;
-}
-
-.googie_check_spelling_ok:hover,
-.googie_resume_editing:hover {
-  text-decoration: underline;
-}
-
-.googie_lang_3d_click img {
-  vertical-align: middle;
-  border-top: 1px solid #555;
-  border-left: 1px solid #555;
-  border-right: 1px solid #b1b1b1;
-  border-bottom: 1px solid #b1b1b1;
-}
-
-.googie_lang_3d_on img {
-  vertical-align: middle;
-  border-top: 1px solid #b1b1b1;
-  border-left: 1px solid #b1b1b1;
-  border-right: 1px solid #555;
-  border-bottom: 1px solid #555;
-}
diff --git a/skins/default/ie6hacks.css b/skins/default/ie6hacks.css
deleted file mode 100644 (file)
index 53a2e5e..0000000
+++ /dev/null
@@ -1,178 +0,0 @@
-/* CSS hacks for IE versions 5,6 */
-
-#taskbar
-{
-  background: url(images/taskbar.gif) top right no-repeat;
-}
-
-img
-{
-  behavior: url(skins/default/pngbehavior.htc);
-}
-
-#logo
-{
-  width: 178px;
-  height: 47px;
-}
-
-body > #message div.notice,
-body > #message div.error,
-body > #message div.warning,
-body > #message div.confirmation,
-#message-objects div.notice,
-#message-objects div.error,
-#message-objects div.warning,
-#message-objects div.confirmation
-{
-  background-image: url(images/display/icons.gif);
-}
-
-#messagemenu li a
-{
-  background-image: url(images/messageactions.gif);
-}
-
-#mailboxlist li
-{
-  background-image: url(images/icons/folders.gif);
-}
-
-#attachment-list
-{
-  height: expression(Math.min(16, parseInt(document.documentElement.clientHeight))+'px');
-}
-
-#messagetoolbar a
-{
-  display: block;
-  float: left;
-  padding-right: 10px;
-}
-
-.boxfooter a.button,
-.boxfooter a.buttonPas
-{
-  background-image: url(images/icons/groupactions.gif);
-}
-
-.pagenav
-{
-  width: 250px;
-}
-
-.pagenav a.button,
-.pagenav a.buttonPas
-{
-  background-image: url(images/pagenav.gif);
-}
-
-#listcontrols a.button,
-#listcontrols a.buttonPas {
-  background-image: url(images/mail_footer.gif);
-}
-
-#messagetoolbar a.button,
-#messagetoolbar a.buttonPas {
-  background-image: url(images/mail_toolbar.gif);
-}
-
-#abooktoolbar a.button,
-#abooktoolbar a.buttonPas,
-#abooktoolbar span.separator {
-  background-image: url(images/abook_toolbar.gif);
-}
-
-ul.toolbarmenu li a,
-.popupmenu li a
-{
-  clear: left;
-  height: expression(Math.min(14, parseInt(document.documentElement.clientHeight))+'px');
-  width: expression(Math.min(130, parseInt(document.documentElement.clientWidth))+'px');
-}
-
-ul.toolbarmenu li.separator_below
-{
-  padding-bottom: 3px;
-}
-
-.boxfooter
-{
-  width: 100%;
-  bottom: -1px;
-}
-
-.boxtitle,
-#directorylist li a
-{
-  width: auto;
-}
-
-#directorylist li
-{
-  background-image: url(images/icons/folders.gif);
-}
-
-.boxlistcontent
-{
-  top: 21px;
-  height: expression((parseInt(this.parentNode.offsetHeight)-24-parseInt(this.style.top?this.style.top:21))+'px');
-}
-
-#compose-div .boxlistcontent
-{
-  height: expression((parseInt(this.parentNode.offsetHeight)-23-parseInt(this.style.top?this.style.top:21))+'px');
-}
-
-#folder-manager
-{
-  height: expression((parseInt(document.documentElement.clientHeight)-105)+'px');
-}
-
-#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: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
-{
-  background-image: url(images/messageicons.gif);
-}
-
-#messagelist tr td div.collapsed,
-#messagelist tr td div.expanded {
-       background-color: #fff;
-}
-
-body.iframe .boxtitle
-{
-  position: absolute;
-}
-
-#subscription-table
-{
-  width: auto;
-}
-
-#sourcename
-{
-  zoom: 1;
-}
diff --git a/skins/default/iehacks.css b/skins/default/iehacks.css
deleted file mode 100644 (file)
index d09be3d..0000000
+++ /dev/null
@@ -1,295 +0,0 @@
-
-input, textarea
-{
-  border-style: expression(this.type=='checkbox' || this.type=='radio' || this.id=='quicksearchbox' ? 'none' : 'solid');
-  border-width: expression(this.type=='checkbox' || this.type=='radio' ? '0' : '1px');
-  border-color: expression(this.type=='checkbox' || this.type=='radio' ? '' : '#666666');
-  background-color: expression(this.type=='checkbox' || this.type=='radio' ? 'transparent' : '#ffffff');
-}
-
-body.iframe
-{
-  margin-top: 0px;
-}
-
-body.iframe div.boxcontent
-{
-  margin-top: 20px;
-  z-index: 2;
-}
-
-body.iframe div.boxtitle
-{
-  z-index: 100;
-}
-
-body.iframe #prefs-details
-{
-  padding-top: 1px;
-}
-
-#login-form form
-{
-  margin-top: 0;
-}
-
-.pagenav a.buttonPas
-{
-  filter: alpha(opacity=35);
-}
-
-body > #message
-{
-  filter: alpha(opacity=85);
-}
-
-.popupmenu
-{
-  background-color: #ffffff;
-}
-
-#tabsbar,
-#partheader
-{
-  width: expression((parseInt(document.documentElement.clientWidth)-240)+'px');
-}
-
-#mainscreen
-{
-  height: expression((parseInt(document.documentElement.clientHeight)-105)+'px');
-}
-
-#mainscreen,
-#messagepartcontainer
-{
-  width: expression((parseInt(document.documentElement.clientWidth)-40)+'px');
-}
-
-#messagetoolbar
-{
-  width: expression((parseInt(document.documentElement.clientWidth)-215)+'px');
-  z-index: 240;
-}
-
-#messagetoolbar select.mboxlist
-{
-  margin: 0 8px;
-  top: 8px;
-}
-
-div.messageheaderbox
-{
-  margin-top: 0px;
-}
-
-body.iframe div.messageheaderbox
-{
-  margin-top: 6px;
-}
-
-#abooktoolbar a.buttonPas
-{
-  filter: alpha(opacity=35);
-  background-image: url(images/abook_toolbar.gif);
-}
-
-#messagetoolbar a.buttonPas
-{
-  filter: alpha(opacity=35);
-  background-image: url(images/mail_toolbar.gif);
-}
-
-#listcontrols a.buttonPas
-{
-  filter: alpha(opacity=35);
-}
-
-#quicksearchbar
-{
-  z-index: 250;
-}
-
-#addresslist,
-#sectionslist,
-#identities-list,
-#mailleftcontainer,
-#mailrightcontainer,
-#compose-container,
-#compose-attachments,
-#mailcontframe,
-#mailboxlist-container,
-#mailrightcontent,
-#messageframe,
-#identity-details,
-#contacts-box,
-#prefs-box,
-#folder-box,
-#directorylistbox,
-#addressscreen
-{
-  height: expression(parseInt(this.parentNode.offsetHeight)+'px');
-}
-
-#mailrightcontainer
-{
-  width: expression((parseInt(this.parentNode.offsetWidth)-170)+'px');
-}
-
-#messagepartcontainer
-{
-  height: expression((parseInt(document.documentElement.clientHeight)-90)+'px');
-}
-
-#mailrightcontent
-{
-  width: 100%;
-}
-
-#compose-div
-{
-  height: expression((parseInt(this.parentNode.offsetHeight)-1-parseInt(document.getElementById('compose-headers').offsetHeight))+'px');
-}
-
-#messagelist
-{
-  width: inherit;
-  *width: auto; /* IE6/7 conditional hack */
-  border-collapse: collapse;
-}
-
-#messagelist thead tr td,
-#messagelist tbody tr td
-{
-  height: 18px;
-}
-
-#messagelist tbody tr.unroot td.subject
-{
-  text-decoration: underline;
-}
-
-#messageframe
-{
-  width: expression((parseInt(this.parentNode.offsetWidth)-180)+'px');
-  overflow: hidden;
-}
-
-#countcontrols
-{
-  width: 24em;
-  padding-right: 10px;
-}
-
-body.iframe 
-{
-  width: expression((parseInt(document.documentElement.clientWidth))+'px');
-}
-
-div.message-part pre,
-div.message-htmlpart pre,
-div.message-part div.pre
-{
-  word-wrap: break-word;
-}
-
-#addressscreen
-{
-  width: expression((parseInt(document.documentElement.clientWidth)-245)+'px');
-}
-
-#contacts-table
-{
-  width: expression(document.getElementById('addresslist').clientWidth);
-}
-
-#contacts-box,
-#prefs-box,
-#folder-box
-{
-  width: expression((parseInt(this.parentNode.offsetWidth)-555)+'px');
-  overflow: hidden;
-}
-
-#rcmdraglayer
-{
-  filter: alpha(opacity=82);
-  padding-left: 20px;
-}
-
-div.draglayercopy
-{
-  border-color: #00cc00;
-  background: url(images/messageactions.png) 0 -125px no-repeat #fff;
-}
-
-html.ie8 .draglayercopy:before
-{
-  content: "";
-  display: none;
-}
-
-ul.toolbarmenu
-{
-  margin: 0 0 -4px 0;
-}
-
-.popupmenu ul li,
-ul.toolbarmenu li
-{
-  min-width: auto;
-}
-
-.popupmenu ul li a,
-ul.toolbarmenu li a
-{
-  min-height: auto;
-}
-
-.popupmenu li.block a
-{
-  clear: none;
-  display: inline-block;
-  padding-left: 2px;
-}
-
-#console
-{
-  filter: alpha(opacity=80);
-}
-
-table.records-table thead tr td
-{
-  height: 19px;
-}
-
-#listmenu fieldset
-{
-  margin: 0 4px;
-  padding: 0.8em;
-}
-
-#listcontrols input
-{
-  margin-top: 2px;
-}
-
-#contact-details
-{
-  margin-top: 20px;
-}
-
-#contact-details form {
-  margin-top: -1px;
-}
-
-.contactfieldgroup legend
-{
-       padding: 0 0 0.5em 0;
-       margin-left: -4px;
-}
-
-/* fix "jumping" login form in IE7 */
-#login-form div.boxcontent
-{
-  overflow: hidden;
-}
diff --git a/skins/default/images/abook_toolbar.gif b/skins/default/images/abook_toolbar.gif
deleted file mode 100644 (file)
index 2e8f4e2..0000000
Binary files a/skins/default/images/abook_toolbar.gif and /dev/null differ
diff --git a/skins/default/images/abook_toolbar.png b/skins/default/images/abook_toolbar.png
deleted file mode 100644 (file)
index feb95c0..0000000
Binary files a/skins/default/images/abook_toolbar.png and /dev/null differ
diff --git a/skins/default/images/blank.gif b/skins/default/images/blank.gif
deleted file mode 100644 (file)
index 7dd464e..0000000
Binary files a/skins/default/images/blank.gif and /dev/null differ
diff --git a/skins/default/images/buttons/add_act.png b/skins/default/images/buttons/add_act.png
deleted file mode 100644 (file)
index e94fcd6..0000000
Binary files a/skins/default/images/buttons/add_act.png and /dev/null differ
diff --git a/skins/default/images/buttons/add_pas.png b/skins/default/images/buttons/add_pas.png
deleted file mode 100644 (file)
index 9f67c52..0000000
Binary files a/skins/default/images/buttons/add_pas.png and /dev/null differ
diff --git a/skins/default/images/buttons/add_sel.png b/skins/default/images/buttons/add_sel.png
deleted file mode 100644 (file)
index 2a3719f..0000000
Binary files a/skins/default/images/buttons/add_sel.png and /dev/null differ
diff --git a/skins/default/images/buttons/bg.gif b/skins/default/images/buttons/bg.gif
deleted file mode 100644 (file)
index be39f4a..0000000
Binary files a/skins/default/images/buttons/bg.gif and /dev/null differ
diff --git a/skins/default/images/cleardot.png b/skins/default/images/cleardot.png
deleted file mode 100644 (file)
index 98c3bfc..0000000
Binary files a/skins/default/images/cleardot.png and /dev/null differ
diff --git a/skins/default/images/contactpic.png b/skins/default/images/contactpic.png
deleted file mode 100644 (file)
index bdb6cdc..0000000
Binary files a/skins/default/images/contactpic.png and /dev/null differ
diff --git a/skins/default/images/dbutton.png b/skins/default/images/dbutton.png
deleted file mode 100644 (file)
index 7a85e3c..0000000
Binary files a/skins/default/images/dbutton.png and /dev/null differ
diff --git a/skins/default/images/dimple.png b/skins/default/images/dimple.png
deleted file mode 100644 (file)
index 4de496c..0000000
Binary files a/skins/default/images/dimple.png and /dev/null differ
diff --git a/skins/default/images/display/icons.gif b/skins/default/images/display/icons.gif
deleted file mode 100644 (file)
index e6dfb1b..0000000
Binary files a/skins/default/images/display/icons.gif and /dev/null differ
diff --git a/skins/default/images/display/icons.png b/skins/default/images/display/icons.png
deleted file mode 100644 (file)
index 7bf4278..0000000
Binary files a/skins/default/images/display/icons.png and /dev/null differ
diff --git a/skins/default/images/display/loading.gif b/skins/default/images/display/loading.gif
deleted file mode 100644 (file)
index 747c656..0000000
Binary files a/skins/default/images/display/loading.gif and /dev/null differ
diff --git a/skins/default/images/display/loading_blue.gif b/skins/default/images/display/loading_blue.gif
deleted file mode 100644 (file)
index 2ea6b19..0000000
Binary files a/skins/default/images/display/loading_blue.gif and /dev/null differ
diff --git a/skins/default/images/favicon.ico b/skins/default/images/favicon.ico
deleted file mode 100644 (file)
index b3bd18c..0000000
Binary files a/skins/default/images/favicon.ico and /dev/null differ
diff --git a/skins/default/images/googiespell/change_lang.gif b/skins/default/images/googiespell/change_lang.gif
deleted file mode 100644 (file)
index 8145183..0000000
Binary files a/skins/default/images/googiespell/change_lang.gif and /dev/null differ
diff --git a/skins/default/images/googiespell/indicator.gif b/skins/default/images/googiespell/indicator.gif
deleted file mode 100644 (file)
index b556bb0..0000000
Binary files a/skins/default/images/googiespell/indicator.gif and /dev/null differ
diff --git a/skins/default/images/googiespell/ok.gif b/skins/default/images/googiespell/ok.gif
deleted file mode 100644 (file)
index 04727e2..0000000
Binary files a/skins/default/images/googiespell/ok.gif and /dev/null differ
diff --git a/skins/default/images/googiespell/spellc.gif b/skins/default/images/googiespell/spellc.gif
deleted file mode 100644 (file)
index 6ed9360..0000000
Binary files a/skins/default/images/googiespell/spellc.gif and /dev/null differ
diff --git a/skins/default/images/icons/attachment.png b/skins/default/images/icons/attachment.png
deleted file mode 100644 (file)
index 0fcf464..0000000
Binary files a/skins/default/images/icons/attachment.png and /dev/null differ
diff --git a/skins/default/images/icons/blank.gif b/skins/default/images/icons/blank.gif
deleted file mode 100644 (file)
index 7dd464e..0000000
Binary files a/skins/default/images/icons/blank.gif and /dev/null differ
diff --git a/skins/default/images/icons/collapsed.png b/skins/default/images/icons/collapsed.png
deleted file mode 100644 (file)
index 07cc1ec..0000000
Binary files a/skins/default/images/icons/collapsed.png and /dev/null differ
diff --git a/skins/default/images/icons/columnpicker.gif b/skins/default/images/icons/columnpicker.gif
deleted file mode 100644 (file)
index e776519..0000000
Binary files a/skins/default/images/icons/columnpicker.gif and /dev/null differ
diff --git a/skins/default/images/icons/delete.png b/skins/default/images/icons/delete.png
deleted file mode 100644 (file)
index f1cf0ae..0000000
Binary files a/skins/default/images/icons/delete.png and /dev/null differ
diff --git a/skins/default/images/icons/deleted.png b/skins/default/images/icons/deleted.png
deleted file mode 100644 (file)
index cffb7f5..0000000
Binary files a/skins/default/images/icons/deleted.png and /dev/null differ
diff --git a/skins/default/images/icons/dot.png b/skins/default/images/icons/dot.png
deleted file mode 100644 (file)
index 99f7365..0000000
Binary files a/skins/default/images/icons/dot.png and /dev/null differ
diff --git a/skins/default/images/icons/down_small.gif b/skins/default/images/icons/down_small.gif
deleted file mode 100644 (file)
index f865893..0000000
Binary files a/skins/default/images/icons/down_small.gif and /dev/null differ
diff --git a/skins/default/images/icons/expanded.png b/skins/default/images/icons/expanded.png
deleted file mode 100644 (file)
index 87e77a4..0000000
Binary files a/skins/default/images/icons/expanded.png and /dev/null differ
diff --git a/skins/default/images/icons/extwin.png b/skins/default/images/icons/extwin.png
deleted file mode 100644 (file)
index 1ab4d77..0000000
Binary files a/skins/default/images/icons/extwin.png and /dev/null differ
diff --git a/skins/default/images/icons/flagged.png b/skins/default/images/icons/flagged.png
deleted file mode 100644 (file)
index 98215f6..0000000
Binary files a/skins/default/images/icons/flagged.png and /dev/null differ
diff --git a/skins/default/images/icons/folders.gif b/skins/default/images/icons/folders.gif
deleted file mode 100644 (file)
index eb06bd8..0000000
Binary files a/skins/default/images/icons/folders.gif and /dev/null differ
diff --git a/skins/default/images/icons/folders.png b/skins/default/images/icons/folders.png
deleted file mode 100644 (file)
index 2580fd1..0000000
Binary files a/skins/default/images/icons/folders.png and /dev/null differ
diff --git a/skins/default/images/icons/forwarded.png b/skins/default/images/icons/forwarded.png
deleted file mode 100644 (file)
index 1ea246f..0000000
Binary files a/skins/default/images/icons/forwarded.png and /dev/null differ
diff --git a/skins/default/images/icons/forwarded_replied.png b/skins/default/images/icons/forwarded_replied.png
deleted file mode 100644 (file)
index 4830ecf..0000000
Binary files a/skins/default/images/icons/forwarded_replied.png and /dev/null differ
diff --git a/skins/default/images/icons/glass.gif b/skins/default/images/icons/glass.gif
deleted file mode 100644 (file)
index 9a705b4..0000000
Binary files a/skins/default/images/icons/glass.gif and /dev/null differ
diff --git a/skins/default/images/icons/glass.png b/skins/default/images/icons/glass.png
deleted file mode 100644 (file)
index eb1b1dc..0000000
Binary files a/skins/default/images/icons/glass.png and /dev/null differ
diff --git a/skins/default/images/icons/glass_roll.png b/skins/default/images/icons/glass_roll.png
deleted file mode 100644 (file)
index b11b598..0000000
Binary files a/skins/default/images/icons/glass_roll.png and /dev/null differ
diff --git a/skins/default/images/icons/groupactions.gif b/skins/default/images/icons/groupactions.gif
deleted file mode 100644 (file)
index 1564904..0000000
Binary files a/skins/default/images/icons/groupactions.gif and /dev/null differ
diff --git a/skins/default/images/icons/groupactions.png b/skins/default/images/icons/groupactions.png
deleted file mode 100644 (file)
index 9e39bca..0000000
Binary files a/skins/default/images/icons/groupactions.png and /dev/null differ
diff --git a/skins/default/images/icons/minus.gif b/skins/default/images/icons/minus.gif
deleted file mode 100644 (file)
index 4ec02c8..0000000
Binary files a/skins/default/images/icons/minus.gif and /dev/null differ
diff --git a/skins/default/images/icons/plus.gif b/skins/default/images/icons/plus.gif
deleted file mode 100644 (file)
index 854b5eb..0000000
Binary files a/skins/default/images/icons/plus.gif and /dev/null differ
diff --git a/skins/default/images/icons/rename.png b/skins/default/images/icons/rename.png
deleted file mode 100644 (file)
index 7844b00..0000000
Binary files a/skins/default/images/icons/rename.png and /dev/null differ
diff --git a/skins/default/images/icons/replied.png b/skins/default/images/icons/replied.png
deleted file mode 100644 (file)
index 4a52132..0000000
Binary files a/skins/default/images/icons/replied.png and /dev/null differ
diff --git a/skins/default/images/icons/reset.gif b/skins/default/images/icons/reset.gif
deleted file mode 100644 (file)
index a9a53d5..0000000
Binary files a/skins/default/images/icons/reset.gif and /dev/null differ
diff --git a/skins/default/images/icons/silhouette.png b/skins/default/images/icons/silhouette.png
deleted file mode 100644 (file)
index ac07735..0000000
Binary files a/skins/default/images/icons/silhouette.png and /dev/null differ
diff --git a/skins/default/images/icons/sort.gif b/skins/default/images/icons/sort.gif
deleted file mode 100644 (file)
index f8f2756..0000000
Binary files a/skins/default/images/icons/sort.gif and /dev/null differ
diff --git a/skins/default/images/icons/unflagged.png b/skins/default/images/icons/unflagged.png
deleted file mode 100644 (file)
index 12023f0..0000000
Binary files a/skins/default/images/icons/unflagged.png and /dev/null differ
diff --git a/skins/default/images/icons/unread.png b/skins/default/images/icons/unread.png
deleted file mode 100644 (file)
index 31f6406..0000000
Binary files a/skins/default/images/icons/unread.png and /dev/null differ
diff --git a/skins/default/images/icons/unread_children.png b/skins/default/images/icons/unread_children.png
deleted file mode 100644 (file)
index 45e671d..0000000
Binary files a/skins/default/images/icons/unread_children.png and /dev/null differ
diff --git a/skins/default/images/icons/up_small.gif b/skins/default/images/icons/up_small.gif
deleted file mode 100644 (file)
index 40deb89..0000000
Binary files a/skins/default/images/icons/up_small.gif and /dev/null differ
diff --git a/skins/default/images/listheader.gif b/skins/default/images/listheader.gif
deleted file mode 100644 (file)
index bf77a11..0000000
Binary files a/skins/default/images/listheader.gif and /dev/null differ
diff --git a/skins/default/images/mail_footer.gif b/skins/default/images/mail_footer.gif
deleted file mode 100644 (file)
index 302b558..0000000
Binary files a/skins/default/images/mail_footer.gif and /dev/null differ
diff --git a/skins/default/images/mail_footer.png b/skins/default/images/mail_footer.png
deleted file mode 100644 (file)
index e2f24b2..0000000
Binary files a/skins/default/images/mail_footer.png and /dev/null differ
diff --git a/skins/default/images/mail_toolbar.gif b/skins/default/images/mail_toolbar.gif
deleted file mode 100644 (file)
index 9856b42..0000000
Binary files a/skins/default/images/mail_toolbar.gif and /dev/null differ
diff --git a/skins/default/images/mail_toolbar.png b/skins/default/images/mail_toolbar.png
deleted file mode 100644 (file)
index 6ccc9bd..0000000
Binary files a/skins/default/images/mail_toolbar.png and /dev/null differ
diff --git a/skins/default/images/messageactions.gif b/skins/default/images/messageactions.gif
deleted file mode 100644 (file)
index b73fbb3..0000000
Binary files a/skins/default/images/messageactions.gif and /dev/null differ
diff --git a/skins/default/images/messageactions.png b/skins/default/images/messageactions.png
deleted file mode 100644 (file)
index c09f60f..0000000
Binary files a/skins/default/images/messageactions.png and /dev/null differ
diff --git a/skins/default/images/messageicons.gif b/skins/default/images/messageicons.gif
deleted file mode 100644 (file)
index 80423dd..0000000
Binary files a/skins/default/images/messageicons.gif and /dev/null differ
diff --git a/skins/default/images/messageicons.png b/skins/default/images/messageicons.png
deleted file mode 100644 (file)
index d45f065..0000000
Binary files a/skins/default/images/messageicons.png and /dev/null differ
diff --git a/skins/default/images/pagenav.gif b/skins/default/images/pagenav.gif
deleted file mode 100644 (file)
index a4644a4..0000000
Binary files a/skins/default/images/pagenav.gif and /dev/null differ
diff --git a/skins/default/images/quota-colors.png b/skins/default/images/quota-colors.png
deleted file mode 100644 (file)
index 4c1f17e..0000000
Binary files a/skins/default/images/quota-colors.png and /dev/null differ
diff --git a/skins/default/images/quota.gif b/skins/default/images/quota.gif
deleted file mode 100644 (file)
index 9896d4c..0000000
Binary files a/skins/default/images/quota.gif and /dev/null differ
diff --git a/skins/default/images/quota.png b/skins/default/images/quota.png
deleted file mode 100644 (file)
index e729d32..0000000
Binary files a/skins/default/images/quota.png and /dev/null differ
diff --git a/skins/default/images/roundcube_logo.png b/skins/default/images/roundcube_logo.png
deleted file mode 100644 (file)
index 1a4783e..0000000
Binary files a/skins/default/images/roundcube_logo.png and /dev/null differ
diff --git a/skins/default/images/searchfield.gif b/skins/default/images/searchfield.gif
deleted file mode 100644 (file)
index 969f277..0000000
Binary files a/skins/default/images/searchfield.gif and /dev/null differ
diff --git a/skins/default/images/tabs-left.gif b/skins/default/images/tabs-left.gif
deleted file mode 100644 (file)
index c1bf45a..0000000
Binary files a/skins/default/images/tabs-left.gif and /dev/null differ
diff --git a/skins/default/images/tabs-right.gif b/skins/default/images/tabs-right.gif
deleted file mode 100644 (file)
index 9eba9a3..0000000
Binary files a/skins/default/images/tabs-right.gif and /dev/null differ
diff --git a/skins/default/images/taskbar.gif b/skins/default/images/taskbar.gif
deleted file mode 100644 (file)
index b6fc91c..0000000
Binary files a/skins/default/images/taskbar.gif and /dev/null differ
diff --git a/skins/default/images/taskbar.png b/skins/default/images/taskbar.png
deleted file mode 100644 (file)
index 5fa3660..0000000
Binary files a/skins/default/images/taskbar.png and /dev/null differ
diff --git a/skins/default/images/taskicons.gif b/skins/default/images/taskicons.gif
deleted file mode 100644 (file)
index feaa9a1..0000000
Binary files a/skins/default/images/taskicons.gif and /dev/null differ
diff --git a/skins/default/images/taskicons.png b/skins/default/images/taskicons.png
deleted file mode 100644 (file)
index feaa9a1..0000000
Binary files a/skins/default/images/taskicons.png and /dev/null differ
diff --git a/skins/default/images/tree.gif b/skins/default/images/tree.gif
deleted file mode 100644 (file)
index c78f15e..0000000
Binary files a/skins/default/images/tree.gif and /dev/null differ
diff --git a/skins/default/images/watermark.gif b/skins/default/images/watermark.gif
deleted file mode 100644 (file)
index d235d03..0000000
Binary files a/skins/default/images/watermark.gif and /dev/null differ
diff --git a/skins/default/includes/header.html b/skins/default/includes/header.html
deleted file mode 100644 (file)
index 37db1e8..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<div id="header"><a href="./"><roundcube:object name="logo" src="/images/roundcube_logo.png" id="logo" border="0" alt="Logo" /></a></div>
-
-<roundcube:object name="message" id="message" />
diff --git a/skins/default/includes/links.html b/skins/default/includes/links.html
deleted file mode 100644 (file)
index 8267322..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<link rel="index" href="$__comm_path" />
-<link rel="shortcut icon" href="/images/favicon.ico"/>
-<link rel="stylesheet" type="text/css" href="/common.css" />
-<roundcube:if condition="in_array(env:task, array('mail', 'addressbook', 'settings'))" />
-<link rel="stylesheet" type="text/css" href="/<roundcube:var name="env:task" />.css" />
-<roundcube:endif />
-<roundcube:if condition="browser:ie" />
-<!--[if lte IE 8]><link rel="stylesheet" type="text/css" href="/iehacks.css" /><![endif]-->
-<!--[if lte IE 6]><link rel="stylesheet" type="text/css" href="/ie6hacks.css" /><![endif]-->
-<roundcube:endif />
-<roundcube:if condition="browser:safari" />
-<link rel="stylesheet" type="text/css" href="/safari.css" />
-<roundcube:endif />
\ No newline at end of file
diff --git a/skins/default/includes/messagetoolbar.html b/skins/default/includes/messagetoolbar.html
deleted file mode 100644 (file)
index 57bed8a..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-<div id="messagetoolbar">
-<roundcube:if condition="template:name == 'message'" />
-<roundcube:button command="list" type="link" class="button back" classAct="button back" classSel="button backSel" title="backtolist" content=" " />
-<roundcube:else />
-<roundcube:button command="checkmail" type="link" class="button checkmail" classAct="button checkmail" classSel="button checkmailSel" title="checkmail" content=" " />
-<roundcube:endif />
-<roundcube:button command="compose" type="link" class="button compose" classAct="button compose" classSel="button composeSel" title="writenewmessage" content=" " />
-<roundcube:button command="reply" type="link" class="buttonPas reply" classAct="button reply" classSel="button replySel" title="replytomessage" content=" " />
-<span class="dropbutton">
-<roundcube:button command="reply-all" type="link" class="buttonPas replyAll" classAct="button replyAll" classSel="button replyAllSel" title="replytoallmessage" content=" " />
-<span id="replyallmenulink" onclick="rcmail_ui.show_popup('replyallmenu');return false"></span>
-</span>
-<span class="dropbutton">
-<roundcube:button command="forward" type="link" class="buttonPas forward" classAct="button forward" classSel="button forwardSel" title="forwardmessage" content=" " />
-<span id="forwardmenulink" onclick="rcmail_ui.show_popup('forwardmenu');return false"></span>
-</span>
-<roundcube:button command="delete" type="link" class="buttonPas delete" classAct="button delete" classSel="button deleteSel" title="deletemessage" content=" " />
-<roundcube:container name="toolbar" id="messagetoolbar" />
-<roundcube:if condition="template:name == 'mail'" />
-<roundcube:button name="markmenulink" id="markmenulink" type="link" class="button markmessage" title="markmessages" onclick="rcmail_ui.show_popup('markmenu');return false" content=" " />                                                                   
-<roundcube:endif />
-<roundcube:button name="messagemenulink" id="messagemenulink" type="link" class="button messagemenu" title="moreactions" onclick="rcmail_ui.show_popup('messagemenu');return false" content=" " />
-<roundcube:if condition="template:name == 'message'" />
-<roundcube:object name="mailboxlist" type="select" noSelection="moveto" maxlength="25" onchange="rcmail.command('moveto', this.options[this.selectedIndex].value)" class="mboxlist" folder_filter="mail" />
-<roundcube:endif />
-</div>
-
-<div id="forwardmenu" class="popupmenu">
-    <ul class="toolbarmenu">
-        <li class="block">
-            <input type="radio" name="forwardtype" value="0" onchange="rcmail.command('save-pref', {name: 'forward_attachment', value: 0, env: 'forward_attachment'});" />
-            <roundcube:button command="forward" label="forwardinline" prop="sub" classAct="forwardlink active" class="forwardlink" />
-        </li>
-        <li class="block">
-            <input type="radio" name="forwardtype" value="1" onchange="rcmail.command('save-pref', {name: 'forward_attachment', value: 1, env: 'forward_attachment'})" />
-            <roundcube:button command="forward-attachment" label="forwardattachment" prop="sub" classAct="forwardattachmentlink active" class="forwardattachmentlink" />
-        </li>    
-        <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: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" label="editasnew" classAct="editlink active" /></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:container name="messagemenu" id="messagemenu" />
-  </ul>
-</div>
-
-<roundcube:if condition="template:name == 'mail'" />
-<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:container name="markmenu" id="markmessagemenu" />
-  </ul>
-</div>
-<roundcube:endif />
diff --git a/skins/default/includes/settingstabs.html b/skins/default/includes/settingstabs.html
deleted file mode 100644 (file)
index ce6d234..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<div id="tabsbar">
-<span id="settingstabdefault" class="tablink"><roundcube:button command="preferences" type="link" label="preferences" title="editpreferences" /></span>
-<span id="settingstabfolders" class="tablink"><roundcube:button command="folders" type="link" label="folders" title="managefolders" class="tablink" /></span>
-<span id="settingstabidentities" class="tablink"><roundcube:button command="identities" type="link" label="identities" title="manageidentities" class="tablink" /></span>
-<roundcube:container name="tabs" id="tabsbar" />
-<script type="text/javascript"> if (window.rcmail) rcmail.add_onload(rcube_init_settings_tabs); </script>
-</div>
diff --git a/skins/default/includes/taskbar.html b/skins/default/includes/taskbar.html
deleted file mode 100644 (file)
index dfb547b..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<div id="taskbar">
-<roundcube:button command="mail" label="mail" class="button-mail" />
-<roundcube:button command="addressbook" label="addressbook" class="button-addressbook" />
-<roundcube:container name="taskbar" id="taskbar" />
-<roundcube:button command="settings" label="settings" class="button-settings" />
-<roundcube:button command="logout" label="logout" class="button-logout" />
-</div>
\ No newline at end of file
diff --git a/skins/default/mail.css b/skins/default/mail.css
deleted file mode 100644 (file)
index 4dfc206..0000000
+++ /dev/null
@@ -1,1467 +0,0 @@
-/***** Roundcube|Mail mail task styles *****/
-
-
-#messagetoolbar
-{
-  position: absolute;
-  top: 47px;
-  left: 205px;
-  right: 10px;
-  height: 35px;
-  min-width: 650px;
-  white-space: nowrap;
-/*  border: 1px solid #cccccc; */
-}
-
-#messagetoolbar a
-{
-  display: block;
-  float: left;
-  padding-right: 10px;
-}
-
-#messagetoolbar a.button,
-#messagetoolbar a.buttonPas {
-  display: block;
-  float: left;
-  width: 32px;
-  height: 32px;
-  padding: 0;
-  margin: 0 5px;
-  overflow: hidden;
-  background: url(images/mail_toolbar.png) 0 0 no-repeat transparent;
-  opacity: 0.99; /* this is needed to make buttons appear correctly in Chrome */
-}
-
-#messagetoolbar a.buttonPas {
-  opacity: 0.35;
-}
-
-#messagetoolbar a.checkmailSel {
-  background-position: 0 -32px;
-}
-
-#messagetoolbar a.back {
-  background-position: -32px 0;
-}
-
-#messagetoolbar a.backSel {
-  background-position: -32px -32px;
-}
-
-#messagetoolbar a.compose {
-  background-position: -64px 0;
-}
-
-#messagetoolbar a.composeSel {
-  background-position: -64px -32px;
-}
-
-#messagetoolbar a.reply {
-  background-position: -96px 0;
-}
-
-#messagetoolbar a.replySel {
-  background-position: -96px -32px;
-}
-
-#messagetoolbar a.replyAll {
-  background-position: -128px 0;
-}
-
-#messagetoolbar a.replyAllSel {
-  background-position: -128px -32px;
-}
-
-#messagetoolbar a.forward {
-  background-position: -160px 0;
-}
-
-#messagetoolbar a.forwardSel {
-  background-position: -160px -32px;
-}
-
-#messagetoolbar a.delete {
-  background-position: -192px 0;
-}
-
-#messagetoolbar a.deleteSel {
-  background-position: -192px -32px;
-}
-
-#messagetoolbar a.markmessage {
-  background-position: -256px 0;
-}
-
-#messagetoolbar a.messagemenu {
-  background-position: -288px 0;
-}
-
-#messagetoolbar a.spellcheck {
-  background-position: -384px 0;
-}
-
-#messagetoolbar a.spellcheckSel {
-  background-position: -384px -32px;
-}
-
-#messagetoolbar a.attach {
-  background-position: -352px 0;
-}
-
-#messagetoolbar a.attachSel {
-  background-position: -352px -32px;
-}
-
-#messagetoolbar a.insertsig {
-  background-position: -448px 0;
-}
-
-#messagetoolbar a.insertsigSel {
-  background-position: -448px -32px;
-}
-
-#messagetoolbar a.savedraft {
-  background-position: -322px 0;
-}
-
-#messagetoolbar a.savedraftSel {
-  background-position: -322px -32px;
-}
-
-#messagetoolbar a.send {
-  background-position: -416px 0;
-}
-
-#messagetoolbar a.sendSel {
-  background-position: -416px -32px;
-}
-
-#messagetoolbar select.mboxlist
-{
-  position: relative;
-  margin: 0 8px;
-  top: 6px;
-}
-
-#messagetoolbar select.mboxlist option
-{
-  padding-left: 15px;
-}
-
-#messagetoolbar select.mboxlist option[value=""]
-{
-  padding-left: 2px;
-}
-
-#messagemenu li a.active:hover,
-#markmessagemenu li a.active:hover
-{
-  color: #fff;
-  background-color: #c00;
-}
-
-#messagemenu li a
-{
-  background: url(images/messageactions.png) no-repeat 7px 0;
-  background-position: 7px 20px;
-}
-
-#messagemenu li a.printlink
-{
-  background-position: 7px 1px;
-}
-
-#messagemenu li a.downloadlink
-{
-  background-position: 7px -17px;
-}
-
-#messagemenu li a.sourcelink
-{
-  background-position: 7px -35px;
-}
-
-#messagemenu li a.openlink
-{
-  background-position: 7px -53px;
-}
-
-#messagemenu li a.editlink
-{
-  background-position: 7px -71px;
-}
-
-#markmessagemenu li a
-{
-  background: url(images/messageicons.png) no-repeat;
-}
-
-#markmessagemenu li a.readlink
-{
-  background-position: 7px -51px;
-}
-
-#markmessagemenu li a.unreadlink
-{
-  background-position: 7px -119px;
-}
-
-#markmessagemenu li a.flaggedlink
-{
-  background-position: 7px -153px;
-}
-
-#markmessagemenu li a.unflaggedlink
-{
-  background-position: 7px -136px;
-}
-
-#searchfilter
-{
-  white-space: nowrap;
-  position: absolute;
-  right: 198px;
-  vertical-align: middle;
-}
-
-#searchfilter label
-{
-  font-size: 11px;
-}
-
-#mailleftcontainer
-{
-  position: absolute;
-  top: 0;
-  left: 0;
-  bottom: 0;
-  width: 195px;
-}
-
-#mailrightcontainer
-{
-  position: absolute;
-  top: 0;
-  left: 170px;
-  bottom: 0;
-  right: 0;
-  min-width: 600px;
-}
-
-#mailrightcontent
-{
-  position: absolute;
-  top: 0;
-  left: 0;
-  right: 0;
-  bottom: 0;
-}
-
-#messagepartcontainer
-{
-  position: absolute;
-  top: 80px;
-  left: 20px;
-  right: 20px;
-  bottom: 20px;
-}
-
-#mailcontframe
-{
-  position: absolute;
-  width: 100%;
-  top: 0;
-  bottom: 0;
-  border: 1px solid #999999;
-  background-color: #F9F9F9;
-  overflow: hidden;
-}
-
-#mailpreviewframe
-{
-  position: absolute;
-  width: 100%;
-  top: 205px;
-  bottom: 0px;
-  border: 1px solid #999999;
-  background-color: #F9F9F9;
-}
-
-#messagecontframe
-{
-  position: relative;
-  top: 0px;
-  left: 0px;
-  right: 0px;
-  bottom: 0px;
-  width: 100%;
-  height: 100%;
-  min-height: 100%; /* Chrome 14 bug */
-}
-
-#messagepartframe
-{
-  width: 100%;
-  height: 100%;
-  min-height: 100%; /* Chrome 14 bug */
-  border: 1px solid #999999;
-  background-color: #F9F9F9;
-}
-
-
-#partheader
-{
-  position: absolute;
-  top: 10px;
-  left: 220px;
-  right: 20px;
-  height: 40px;
-}
-
-#partheader table td
-{
-  padding-left: 2px;
-  padding-right: 4px;
-  vertical-align: middle;
-  font-size: 11px;
-}
-
-#partheader table td.title
-{
-  color: #666666;
-  font-weight: bold;
-}
-
-
-/** mailbox list styles */
-
-#mailboxlist-container
-{
-  position: absolute;
-  top: 0;
-  left: 0;
-  width: 100%;
-  bottom: 0;
-  border: 1px solid #999;
-  background-color: #F9F9F9;
-  overflow: hidden;
-}
-
-#mailboxlist
-{
-  position:relative;
-  height: auto;
-  margin: 0px;
-  padding: 0px;
-  list-style-image: none;
-  list-style-type: none;
-  overflow: hidden;
-  white-space: nowrap;
-  background-color: #FFF;
-}
-
-#mailboxlist li
-{
-  display: block;
-  position: relative;
-  font-size: 11px;
-  background: url(images/icons/folders.png) 5px 0 no-repeat;
-  border-bottom: 1px solid #EBEBEB;
-}
-
-#mailboxlist li ul li:last-child
-{
-  border-bottom: none;
-}
-
-#mailboxlist li div
-{
-  position: absolute;
-  left: 8px !important;
-  left: -16px;
-  top: 1px;
-  width: 14px;
-  height: 16px;
-}
-
-#mailboxlist li div.collapsed,
-#mailboxlist li div.expanded
-{
-  cursor: pointer;
-}
-
-#mailboxlist li div.collapsed
-{
-  background: url(images/icons/collapsed.png) bottom right no-repeat;
-}
-
-#mailboxlist li div.expanded
-{
-  background: url(images/icons/expanded.png) bottom right no-repeat;
-}
-
-#mailboxlist li.inbox
-{
-  background-position: 5px -18px;
-}
-
-#mailboxlist li.drafts
-{
-  background-position: 5px -37px;
-}
-
-#mailboxlist li.sent
-{
-  background-position: 5px -54px;
-}
-
-#mailboxlist li.junk
-{
-  background-position: 5px -73px;
-}
-
-#mailboxlist li.trash
-{
-  background-position: 5px -91px;
-}
-
-#mailboxlist li a
-{
-  cursor: default;
-  display: block;
-  position: relative;
-  padding-left: 25px;
-  padding-top: 2px;
-  padding-bottom: 2px;
-  text-decoration: none;
-  height: 15px;
-}
-
-#mailboxlist li.unread
-{
-  font-weight: bold;
-}
-
-#mailboxlist li.virtual > a
-{
-  color: #666;
-}
-
-#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;
-  padding-left: 15px;
-  background-position: 25px 1px;
-  background-color: #FFF;
-  color: blue;
-  font-weight: normal;
-}
-
-#listcontrols
-{
-  position: relative;
-  white-space: nowrap;
-  left: 4px;
-  line-height: 22px;
-  width: auto;
-  min-width: 300px;
-}
-
-#listcontrols a,
-#listcontrols span
-{
-  display: block;
-  float: left;
-  font-size: 11px;
-}
-
-#listcontrols input
-{
-  margin-top: 6px;
-}
-
-#listcontrols a.button,
-#listcontrols a.buttonPas
-{
-  display: block;
-  float: left;
-  width: 15px;
-  height: 15px;
-  padding: 0;
-  margin-top: 4px;
-  margin-right: 2px;
-  overflow: hidden;
-  background: url(images/mail_footer.png) 0 0 no-repeat transparent;
-  opacity: 0.99; /* this is needed to make buttons appear correctly in Chrome */
-}
-
-#listcontrols a.buttonPas
-{
-  opacity: 0.35;
-}
-
-#listcontrols a.all {
-  background-position: -30px 0;
-}
-
-#listcontrols a.allsel {
-  background-position: -30px -15px;
-}
-
-#listcontrols a.page {
-  background-position: -135px 0;
-}
-
-#listcontrols a.pagesel {
-  background-position: -135px -15px;
-}
-
-#listcontrols a.unread {
-  background-position: -45px 0;
-}
-
-#listcontrols a.unreadsel {
-  background-position: -45px -15px;
-}
-
-#listcontrols a.invert {
-  background-position: -60px 0;
-}
-
-#listcontrols a.invertsel {
-  background-position: -60px -15px;
-}
-
-#listcontrols a.none {
-  background-position: -75px 0;
-}
-
-#listcontrols a.nonesel {
-  background-position: -75px -15px;
-}
-
-#listcontrols a.expand-all {
-  background-position: -90px 0;
-}
-
-#listcontrols a.expand-allsel {
-  background-position: -90px -15px;
-}
-
-#listcontrols a.collapse-all {
-  background-position: -105px 0;
-}
-
-#listcontrols a.collapse-allsel {
-  background-position: -105px -15px;
-}
-
-#listcontrols a.expand-unread {
-  background-position: -120px 0;
-}
-
-#listcontrols a.expand-unreadsel {
-  background-position: -120px -15px;
-}
-
-#countcontrols
-{
-  position: absolute;
-  top: 4px;
-  right: 4px;
-  min-width: 25em;
-  white-space: nowrap;
-  font-size: 11px;
-}
-
-#countcontrols a.button,
-#countcontrols a.buttonPas
-{
-  float: right;
-}
-
-
-/** message list styles */
-
-body.messagelist
-{
-  margin: 0px;
-  background-color: #F9F9F9;
-}
-
-#messagelist
-{
-  width: 100%;
-  display: table;
-  table-layout: fixed;
-}
-
-#messagelist thead tr td
-{
-  height: 20px;
-  padding: 0 4px 0 2px;
-  vertical-align: middle;
-  border-bottom: 1px solid #999999;
-  color: #333333;
-  background: url(images/listheader.gif) top left repeat-x #CCC;
-  font-size: 11px;
-  font-weight: bold;
-}
-
-#messagelist thead tr td.sortedASC,
-#messagelist thead tr td.sortedDESC
-{
-  background-position: 0 -26px;
-}
-
-#messagelist thead tr td.sortedASC a
-{
-  background: url(images/icons/sort.gif) right 0 no-repeat;
-}
-
-#messagelist thead tr td.sortedDESC a
-{
-  background: url(images/icons/sort.gif) right -14px no-repeat;
-}
-
-#messagelist thead tr td a
-{
-  display: block;
-  width: auto !important;
-  width: 100%;
-  color: #333333;
-  text-decoration: none;
-}
-
-#messagelist thead tr td.size
-{
-  text-align: left;
-}
-
-#messagelist thead tr td.subject
-{
-  padding-left: 18px;
-}
-
-#messagelist tbody tr td
-{
-  height: 20px;
-  padding: 0;
-  font-size: 11px;
-  overflow: hidden;
-  vertical-align: middle;
-  white-space: nowrap;
-  text-overflow: ellipsis;
-  -o-text-overflow: ellipsis;
-  border-bottom: 1px solid #EBEBEB;
-  cursor: default;
-}
-
-#messagelist tbody tr td a
-{
-  color: #000;
-  text-decoration: none;
-  white-space: nowrap;
-  cursor: inherit;
-}
-
-#messagelist td img
-{
-  vertical-align: middle;
-  display: inline-block;
-}
-
-#messagelist tbody tr td.flag,
-#messagelist tbody tr td.status,
-#messagelist tbody tr td.subject span.status
-{
-  cursor: pointer;
-}
-
-#messagelist tr td.flag span,
-#messagelist tr td.status span,
-#messagelist tr td.attachment span,
-#messagelist tr td.priority span
-{
-  display: block;
-  width: 15px;
-}
-
-#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
-{
-  display: inline-block;
-  vertical-align: middle;
-  height: 17px;
-  width: 15px;
-  background: url(images/messageicons.png) center no-repeat;
-}
-
-#messagelist tr td.attachment span.attachment
-{
-  background-position: 0 -170px;
-}
-
-#messagelist tr td.attachment span.report
-{
-  background-position: 0 -255px;
-}
-
-#messagelist tr td.priority span.priority
-{
-  background-position: 0 -309px;
-}
-
-#messagelist tr td.priority span.prio5
-{
-  background-position: 0 -358px;
-}
-
-#messagelist tr td.priority span.prio4
-{
-  background-position: 0 -340px;
-}
-
-#messagelist tr td.priority span.prio3
-{
-  background-position: 0 -324px;
-}
-
-#messagelist tr td.priority span.prio2
-{
-  background-position: 0 -309px;
-}
-
-#messagelist tr td.priority span.prio1
-{
-  background-position: 0 -290px;
-}
-
-#messagelist tr td.flag span.flagged
-{
-  background-position: 0 -153px;
-}
-
-#messagelist tr td.flag span.unflagged:hover
-{
-  background-position: 0 -136px;
-}
-
-#messagelist tr td.subject span.msgicon,
-#messagelist tr td.subject span.unreadchildren
-{
-  background-position: 0 -51px;
-  margin: 0 2px;
-}
-
-#messagelist tr td.subject span.replied
-{
-  background-position: 0 -85px;
-}
-
-#messagelist tr td.subject span.forwarded
-{
-  background-position: 0 -68px;
-}
-
-#messagelist tr td.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
-{
-  background-position: 0 17px; /* no icon */
-}
-
-#messagelist tr td.status span.msgicon:hover
-{
-  background-position: 0 -272px;
-}
-
-#messagelist tr td.status span.deleted,
-#messagelist tr td.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
-{
-  background-position: 0 -119px;
-}
-
-#messagelist tr td div.collapsed
-{
-  background-position: 0 -221px;
-  cursor: pointer;
-}
-
-#messagelist tr td div.expanded
-{
-  background-position: 0 -204px;
-  cursor: pointer;
-}
-
-#messagelist tr td.threads div.listmenu
-{
-  background-position: 0 -238px;
-  cursor: pointer;
-}
-
-#messagelist tbody tr td.subject
-{
-  width: 99%;
-}
-
-#messagelist tbody tr td.subject a
-{
-  cursor: default;
-  vertical-align: middle; /* #1487091 */
-}
-
-/* thread parent message with unread children */
-#messagelist tbody tr.unroot td.subject a
-{
-  text-decoration: underline;
-}
-
-#messagelist tr td.attachment,
-#messagelist tr td.threads,
-#messagelist tr td.status,
-#messagelist tr td.flag,
-#messagelist tr td.priority
-{
-  width: 17px;
-  padding: 0 0 0 2px;
-}
-
-#messagelist tr td.size
-{
-  width: 60px;
-  text-align: right;
-  padding: 0 2px;
-}
-
-#messagelist tr td.from,
-#messagelist tr td.to,
-#messagelist tr td.cc,
-#messagelist tr td.replyto
-{
-  width: 180px;
-  padding: 0 2px;
-}
-
-#messagelist tr td.date
-{
-  width: 118px;
-  padding: 0 2px;
-}
-
-#messagelist tr.message
-{
-  background-color: #FFF;
-}
-
-#messagelist tr.unread
-{
-  font-weight: bold;
-  background-color: #FFFFFF;
-}
-
-#messagelist tr.flagged td,
-#messagelist tr.flagged td a
-{
-  color: #CC0000;
-}
-
-#messagelist tr.selected td
-{
-  color: #FFFFFF;
-  background-color: #CC3333;
-}
-
-#messagelist tr.unfocused td
-{
-  color: #FFFFFF;
-  background-color: #929292;
-}
-
-#messagelist tr.selected td a
-{
-  color: #FFFFFF;
-}
-
-#messagelist tr.unfocused td a
-{
-  color: #FFFFFF;
-}
-
-#messagelist tr.deleted td,
-#messagelist tr.deleted td a
-{
-  color: #CCCCCC;
-}
-
-#listmenu
-{
-  padding: 6px;
-}
-
-#listmenu legend
-{
-  color: #999999;
-}
-
-#listmenu fieldset
-{
-  border: 1px solid #999999;
-  margin: 0 5px;
-  float: left;
-}
-
-#listmenu div
-{
-  padding: 8px 0 3px 0;
-  text-align: center;
-  clear: both;
-}
-
-/***** tree indicators *****/
-
-td span.branch div
-{
-  float: left;
-  height: 16px;
-}
-
-td span.branch div.tree
-{
-  height: 17px;
-  width: 15px;
-  background: url(images/tree.gif) 0px 0px no-repeat;
-}
-
-td span.branch div.l1
-{
-  background-position: 0px 0px; /* L */
-}
-
-td span.branch div.l2
-{
-  background-position: -30px 0px; /* | */
-}
-
-td span.branch div.l3
-{
-  background-position: -15px 0px; /* |- */
-}
-
-
-/** message view styles */
-
-#messageframe
-{
-  position: absolute;
-  top: 0;
-  left: 180px;
-  right: 0;
-  bottom: 0;
-  border: 1px solid #999;
-  background-color: #FFF;
-  overflow: auto;
-  z-index: 1;
-}
-
-div.messageheaderbox
-{
-  margin: -14px 8px 0px 8px;
-  border: 1px solid #ccc;
-}
-
-table.headers-table
-{
-  width: 100%;
-  background-color: #EBEBEB;
-}
-
-#messagebody #full-headers,
-#messagebody table.headers-table
-{
-  width: auto;
-  margin: 6px 8px;
-  background-color: #F4F4F4;
-}
-
-table.headers-table tr td
-{
-  font-size: 11px;
-  border-bottom:1px solid #FFFFFF;
-}
-
-table.headers-table tr td.header-title
-{
-  width: 1%;
-  color: #666666;
-  font-weight: bold;
-  text-align: right;
-  white-space: nowrap;
-  padding: 0 4px 0 8px;
-}
-
-table.headers-table tr td.header
-{
-  width: 99%;
-}
-
-table.headers-table tr td.subject
-{
-  font-weight: bold;
-}
-
-table.headers-table tr td.header span
-{
-  white-space: nowrap;
-}
-
-#attachment-list
-{
-  margin: 0;
-  padding: 0 4px 0 8px;
-  min-height: 16px;
-  list-style-image: none;
-  list-style-type: none;
-  background: url(images/icons/attachment.png) 4px 2px no-repeat #DFDFDF;
-}
-
-#messageframe #attachment-list
-{
-  border-bottom: 1px solid #ccc;
-}
-
-.messageheaderbox #attachment-list
-{
-  border-top: 1px solid #ccc;
-}
-
-#attachment-list:after
-{
-  content: ".";
-  display: block;
-  height: 0;
-  font-size: 0;
-  clear: both;
-  visibility: hidden;
-}
-
-#attachment-list li
-{
-  float: left;
-  height: 18px;
-  font-size: 11px;
-  padding: 2px 0px 0px 15px;
-  white-space: nowrap;
-}
-
-#attachment-list li a
-{
-  text-decoration: none;
-}
-
-#attachment-list li a:hover
-{
-  text-decoration: underline;
-}
-
-#messagebody
-{
-  position:relative;
-  padding-bottom: 10px;
-  background-color: #FFFFFF;
-}
-
-div.message-part,
-div.message-htmlpart
-{
-  padding: 10px 8px;
-  border-top: 1px solid #ccc;
-/*  overflow: hidden; */
-}
-
-#messagebody div:first-child
-{
-  border-top: 0;
-}
-
-div.message-part a,
-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;
-  white-space: -moz-pre-wrap !important;
-  white-space: pre-wrap !important;
-  white-space: pre;
-}
-
-div.message-part span.sig
-{
-  color: #666666;
-}
-
-div.message-part blockquote
-{
-  color: blue;
-  border-left: 2px solid blue;
-  border-right: 2px solid blue;
-  background-color: #F6F6F6;
-  margin: 2px 0px 2px 0px;
-  padding: 1px 8px 1px 10px;
-}
-
-div.message-part blockquote blockquote
-{
-  color: green;
-  border-left: 2px solid green;
-  border-right: 2px solid green;
-}
-
-div.message-part blockquote blockquote blockquote
-{
-  color: #990000;
-  border-left: 2px solid #bb0000;
-  border-right: 2px solid #bb0000;
-}
-
-body.iframe div.message-htmlpart
-{
-  margin: 8px;
-}
-
-div.message-htmlpart div.rcmBody
-{
-  margin: 8px;
-}
-
-#message-objects div
-{
-  margin: 8px;
-  min-height: 20px;
-  padding: 10px 10px 6px 46px;
-}
-
-#message-objects div a
-{
-  color: #666666;
-  padding-left: 10px;
-}
-
-#message-objects div a:hover
-{
-  color: #333333;
-}
-
-#messageviewlink
-{
-  position: absolute;
-  top: 8px;
-  right: 10px;
-  width: 15px;
-  height: 15px;
-  border: 0;
-}
-
-#full-headers
-{
-  color: #666666;
-  text-align: center;
-  padding: 2px 6px;
-  border-bottom: 1px solid #ccc;
-  background-color: #EBEBEB;
-}
-
-.messageheaderbox #full-headers
-{
-  border-bottom: 0;
-}
-
-div.more-headers
-{
-  cursor: pointer;
-  height: 8px;
-  border-bottom: 0;
-}
-
-div.show-headers
-{
-  background: url(images/icons/down_small.gif) no-repeat center;
-}
-
-div.hide-headers
-{
-  background: url(images/icons/up_small.gif) no-repeat center;
-}
-
-#headers-source
-{
-  margin: 0 0 2px 0;
-  padding: 0.5em;
-  height: 145px;
-  background: white;
-  overflow: auto;
-  font-size: 11px;
-  border: 1px solid #999999;
-  display: none;
-  text-align: left;
-  color: #333;
-}
-
-
-/** message compose styles */
-
-#compose-container
-{
-  position: absolute;
-  top: 0;
-  left: 185px;
-  right: 0;
-  bottom: 0;
-  margin: 0;
-}
-
-#compose-div
-{
-  position: absolute;
-  top: 85px;
-  bottom: 0;
-  margin: 0;
-  width: 100%;
-}
-
-#compose-div .boxfooter
-{
-  height: 22px;
-  background: none;
-  border-top: 0;
-}
-
-#compose-div .boxlistcontent
-{
-  bottom: 23px;
-}
-
-#compose-body
-{
-  position: absolute;
-  left: 0;
-  right: 0;
-  top: 0;
-  bottom: 0;
-  margin: 0;
-  font-size: 9pt;
-  font-family: monospace;
-  border: 1px solid #999;
-  resize: none;
-}
-
-#compose-headers
-{
-  width: 100%;
-}
-
-#compose-headers td.editfield
-{
-  padding-right: 8px;
-  width: 95%;
-}
-
-#compose-headers td.top
-{
-  vertical-align: top;
-}
-
-#compose-headers td.title,
-#compose-subject td.title
-{
-  width: 80px !important;
-  font-size: 11px;
-  font-weight: bold;
-  padding-right: 10px;
-  white-space: nowrap;
-  color: #666;
-}
-
-#compose-headers td textarea,
-#compose-headers td input
-{
-  resize: none;
-  width: 100%;
-  border: 1px solid #999;
-}
-
-#compose-headers td textarea
-{
-  height: 32px;
-}
-
-input.from_address
-{
-  width: 80% !important;
-}
-
-#compose-cc,
-#compose-bcc,
-#compose-replyto,
-#compose-followupto
-{
-  display: none;
-}
-
-#compose-editorfooter
-{
-  position: absolute;
-  right: 0;
-  bottom: 0;
-  text-align: right;
-}
-
-#compose-editorfooter label
-{
-  font-size: 11px;
-  font-weight: bold;
-  color: #666;
-}
-
-#compose-buttons
-{
-  position: absolute;
-  left: 0;
-  bottom: 0;
-  width: auto;
-}
-
-#compose-attachments
-{
-  position: absolute;
-  top: 0;
-  left: 0;
-  bottom: 0;
-  width: 175px;
-  border: 1px solid #999;
-  background-color: #F9F9F9;
-}
-
-#compose-attachments ul
-{
-  margin: 0px;
-  padding: 0px;
-  background-color: #FFF;
-  list-style-image: none;
-  list-style-type: none;
-}
-
-#compose-attachments ul li
-{
-  height: 18px;
-  font-size: 11px;
-  padding-left: 2px;
-  padding-top: 2px;
-  padding-right: 4px;
-  border-bottom: 1px solid #EBEBEB;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  -o-text-overflow: ellipsis;
-}
-
-#compose-attachments ul li img
-{
-  padding-right: 2px;
-  vertical-align: middle;
-}
-
-#attachment-form
-{
-  padding: 6px;
-}
-
-#attachment-form div
-{
-  padding: 2px;
-}
-
-#attachment-form div.buttons
-{
-  margin-top: 4px;
-}
-
-#quota
-{
-  position: absolute;
-  top: 3px;
-  right: 8px;
-  width: 100px;
-}
-
-#quotaimg
-{
-  position: absolute;
-  top: 3px;
-  right: 6px;
-  z-index: 101;
-}
diff --git a/skins/default/pngbehavior.htc b/skins/default/pngbehavior.htc
deleted file mode 100644 (file)
index fb5f1c8..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-<public:component lightWeight="true">
-<public:attach event="onpropertychange" onevent="propertyChanged()" />
-<public:attach event="onbeforeprint" onevent="beforePrint()" for="window"/>
-<public:attach event="onafterprint" onevent="afterPrint()" for="window"/>
-<script>
-
-/*
- * PNG Behavior
- *
- * This script was created by Erik Arvidsson (http://webfx.eae.net/contact.html#erik)
- * for WebFX (http://webfx.eae.net)
- * Copyright 2002-2004
- *
- * For usage see license at http://webfx.eae.net/license.html
- *
- * Version: 1.02
- * Created: 2001-??-?? First working version
- * Updated: 2002-03-28 Fixed issue when starting with a non png image and
- *                      switching between non png images
- *          2003-01-06 Fixed RegExp to correctly work with IE 5.0x
- *          2004-05-09  When printing revert to original
- *
- */
-
-var supported = /MSIE ((5\.5)|6)/.test(navigator.userAgent) && navigator.platform == "Win32",
-  realSrc,
-  blankSrc = "skins/default/images/blank.gif",
-  isPrinting = false;
-
-if (supported) fixImage();
-
-function propertyChanged() {
-       if (!supported || isPrinting) return;
-
-       var pName = event.propertyName;
-       if (pName != "src") return;
-       // if not set to blank
-       if (!new RegExp(blankSrc).test(src))
-               fixImage();
-};
-
-function fixImage() {
-       // get src
-       var src = element.src;
-
-       // check for real change
-       if (src == realSrc && /\.png$/i.test(src)) {
-               element.src = blankSrc;
-               return;
-       }
-
-       if ( ! new RegExp(blankSrc).test(src)) {
-               // backup old src
-               realSrc = src;
-       }
-
-       // test for png
-       if (/\.png$/i.test(realSrc)) {
-               // set blank image
-               element.src = blankSrc;
-               // set filter
-               element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft." +
-                                       "AlphaImageLoader(src='" + src + "',sizingMethod='scale')";
-       }
-       else {
-               // remove filter
-               element.runtimeStyle.filter = "";
-       }
-}
-
-function beforePrint() {
-       isPrinting = true;
-       element.src = realSrc;
-       element.runtimeStyle.filter = "";
-       realSrc = null;
-}
-
-function afterPrint() {
-       isPrinting = false;
-       fixImage();
-}
-
-</script>
-</public:component>
diff --git a/skins/default/print.css b/skins/default/print.css
deleted file mode 100644 (file)
index afdf674..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-/***** Roundcube|Mail message print styles *****/
-
-body
-{
-  font-family: "Lucida Grande", Verdana, Arial, Helvetica, sans-serif;
-  background-color: #ffffff;
-  color: #000000;
-  margin: 2mm;
-}
-
-body, td, th, span, div, p
-{
-  font-size: 9pt;
-  color: #000000;
-}
-
-h3
-{
-  font-size: 18px;
-  color: #000000;
-}
-
-a, a:active, a:visited
-{
-  color: #000000;
-}
-
-#header
-{
-  float: right;
-  margin: 0 5mm 3mm 5mm;
-}
-
-table.headers-table
-{
-  table-layout: fixed;
-  margin-top: 14px;
-}
-
-table.headers-table tr td
-{
-  font-size: 9pt;
-}
-
-table.headers-table td.header-title
-{
-  color: #666666;
-  font-weight: bold;
-  text-align: right;
-  vertical-align: top;
-  padding-right: 4mm;
-  white-space: nowrap;
-}
-
-table.headers-table tr td.subject
-{
-  width: 90%;
-  font-weight: bold;
-}
-  
-#attachment-list
-{
-  margin-top: 3mm;
-  padding-top: 3mm;
-  border-top: 1pt solid #cccccc;
-}
-
-#attachment-list li
-{
-  font-size: 9pt;
-}
-
-#attachment-list li a
-{
-  text-decoration: none;
-}
-
-#attachment-list li a:hover
-{
-  text-decoration: underline;
-}
-
-#messagebody
-{
-  margin-top: 5mm;
-  border-top: none;
-}
-
-div.message-part
-{
-  padding: 2mm;
-  margin-top: 5mm;
-  margin-bottom: 5mm;
-  border-top: 1pt solid #cccccc;
-}
-
-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) */
-}
-
-div.message-part blockquote
-{
-  color: blue;
-  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;
-}
-
-div.message-part blockquote blockquote
-{
-  color: green;
-  border-left: 2px solid green;
-  border-right: 2px solid green;
-}
-
-div.message-part blockquote blockquote blockquote
-{
-  color: #990000;
-  border-left: 2px solid #bb0000;
-  border-right: 2px solid #bb0000;
-}
diff --git a/skins/default/safari.css b/skins/default/safari.css
deleted file mode 100644 (file)
index a1be85a..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-body
-{
-  height: 100%;
-}
-
-html>body*#messagelist[id$="messagelist"]:not([class="none"]) { width: 99.8%; }
-html>body*#messagelist[id$="messagelist"]:not([class="none"]) tr td.flag,
-html>body*#messagelist[id$="messagelist"]:not([class="none"]) tr td.icon { width: 20px; }
-html>body*input[type$="file"]:not([class="none"]) { background-color: transparent; border: 0; }
-
-div.message-part pre,
-div.message-htmlpart pre,
-div.message-part div.pre
-{
-  word-wrap: break-word;
-}
-
-#messagelist thead tr td,
-#messagelist tbody tr td
-{
-  height: 18px;
-}
diff --git a/skins/default/settings.css b/skins/default/settings.css
deleted file mode 100644 (file)
index cb29097..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-/***** Roundcube|Mail settings task styles *****/
-
-#rcmfd_timezone
-{
-  width: 300px;
-}
-
-#folder-manager.droptarget
-{
-  border: 1px solid #CC3333;
-  background-color: #FFFFA6;
-}
-
-#identities-table,
-#subscription-table,
-#sections-table
-{
-  width: 100%;
-  table-layout: fixed;
-}
-
-#subscription-table input
-{
-  font: inherit;
-}
-
-#subscription-table tbody td,
-#identities-table tbody td,
-#sections-table tbody td
-{
-  cursor: default;
-  text-overflow: ellipsis;
-  -o-text-overflow: ellipsis;
-  height: 18px;
-}
-
-#subscription-table tr.virtual td
-{
-  color: #666;
-}
-
-#subscription-table tr.root td
-{
-  font-size: 10%;
-  height: 5px;
-}
-
-#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 td.subscribed
-{
-  text-align: right;
-  padding-right: 12px;
-}
-
-#identity-frame
-{
-  position: relative;
-  margin-top: 20px;
-  border: 1px solid #999999;
-}
-
-#identity-details,
-#folder-box,
-#prefs-box
-{
-  position: absolute;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  border: 1px solid #999999;
-  overflow: auto;
-  background-color: #F2F2F2;
-}
-
-#identity-details table td.title,
-#folder-details table td.title
-{
-  font-weight: bold;
-  text-align: right;
-}
-
-input.disabled
-{
-  color: #999999;
-}
-
-#bottomboxes
-{
-  position: absolute;
-  width: 600px;
-  height: 95px;
-  left: 0;
-  bottom: 0;
-}
-
-#identities-list,
-#folder-manager,
-#sectionslist
-{
-  position: absolute;
-  top: 0;
-  left: 0;
-  bottom: 0;
-  border: 1px solid #999999;
-  background-color: #F9F9F9;
-  overflow: hidden;
-}
-
-body.iframe,
-#prefs-frame,
-#folder-frame
-{
-  background-color: #F2F2F2;
-  border: none;
-  min-height: 100%; /* Chrome 14 bug */
-}
-
-#formfooter
-{
-  width: 100%;
-}
-
-#formfooter .footerleft
-{
-  padding-left: 15px;
-  white-space: nowrap;
-  float: left;
-}
-
-#formfooter .footerright
-{
-  padding-right: 15px;
-  white-space: nowrap;
-  text-align: right;
-  float: right;
-}
-
-#quota
-{
-  position: absolute;
-  top: 3px;
-  right: 8px;
-  width: 100px;
-}
-
-#quotaimg
-{
-  position: absolute;
-  top: 3px;
-  right: 6px;
-  z-index: 101;
-}
-
-#rcmfd_signature
-{
-  font-family: monospace;
-}
diff --git a/skins/default/splitter.js b/skins/default/splitter.js
deleted file mode 100644 (file)
index 59ebb51..0000000
+++ /dev/null
@@ -1,203 +0,0 @@
-
-/**
- * Roundcube splitter GUI class
- *
- * @constructor
- */
-function rcube_splitter(attrib)
-{
-  this.p1id = attrib.p1;
-  this.p2id = attrib.p2;
-  this.id = attrib.id ? attrib.id : this.p1id + '_' + this.p2id + '_splitter';
-  this.orientation = attrib.orientation;
-  this.horizontal = (this.orientation == 'horizontal' || this.orientation == 'h');
-  this.offset = bw.ie6 ? 2 : 0;
-  this.pos = attrib.start ? attrib.start * 1 : 0;
-  this.relative = attrib.relative ? true : false;
-  this.drag_active = false;
-  this.callback = attrib.callback;
-
-  this.init = function()
-  {
-    this.p1 = document.getElementById(this.p1id);
-    this.p2 = document.getElementById(this.p2id);
-
-    // create and position the handle for this splitter
-    this.p1pos = this.relative ? $(this.p1).position() : $(this.p1).offset();
-    this.p2pos = this.relative ? $(this.p2).position() : $(this.p2).offset();
-
-    if (this.horizontal) {
-      var top = this.p1pos.top + this.p1.offsetHeight;
-      this.layer = new rcube_layer(this.id, {x: 0, y: top, height: 10, 
-           width: '100%', vis: 1, parent: this.p1.parentNode});
-    }
-    else {
-      var left = this.p1pos.left + this.p1.offsetWidth;
-      this.layer = new rcube_layer(this.id, {x: left, y: 0, width: 10, 
-           height: '100%', vis: 1,  parent: this.p1.parentNode});
-    }
-
-    this.elm = this.layer.elm;
-    this.elm.className = 'splitter '+(this.horizontal ? 'splitter-h' : 'splitter-v');
-    this.elm.unselectable = 'on';
-
-    // add the mouse event listeners
-    rcube_event.add_listener({element: this.elm, event:'mousedown', object:this, method:'onDragStart'});
-    if (bw.ie)
-      rcube_event.add_listener({element: window, event:'resize', object:this, method:'onResize'});
-
-    // read saved position from cookie
-    var cookie = bw.get_cookie(this.id);
-    if (cookie && !isNaN(cookie)) {
-      this.pos = parseFloat(cookie);
-      this.resize();
-    }
-    else if (this.pos) {
-      this.resize();
-      this.set_cookie();
-    }
-  };
-
-  /**
-   * Set size and position of all DOM objects
-   * according to the saved splitter position
-   */
-  this.resize = function()
-  {
-    if (this.horizontal) {
-      var lh = this.layer.height - this.offset * 2;
-      this.p1.style.height = Math.floor(this.pos - this.p1pos.top - lh / 2) + 'px';
-      this.p2.style.top = Math.ceil(this.pos + lh / 2) + 'px';
-      this.layer.move(this.layer.x, Math.round(this.pos - lh / 2 + 1));
-      if (bw.ie) {
-        var new_height = parseInt(this.p2.parentNode.offsetHeight, 10) - parseInt(this.p2.style.top, 10) - (bw.ie8 ? 2 : 0);
-        this.p2.style.height = (new_height > 0 ? new_height : 0) + 'px';
-      }
-    }
-    else {
-      this.p1.style.width = Math.floor(this.pos - this.p1pos.left - this.layer.width / 2) + 'px';
-      this.p2.style.left = Math.ceil(this.pos + this.layer.width / 2) + 'px';
-      this.layer.move(Math.round(this.pos - this.layer.width / 2 + 1), this.layer.y);
-      if (bw.ie) {
-        var new_width = parseInt(this.p2.parentNode.offsetWidth, 10) - parseInt(this.p2.style.left, 10) ;
-        this.p2.style.width = (new_width > 0 ? new_width : 0) + 'px';
-      }
-    }
-    $(this.p2).resize();
-    $(this.p1).resize();
-  };
-
-  /**
-   * Handler for mousedown events
-   */
-  this.onDragStart = function(e)
-  {
-    // disable text selection while dragging the splitter
-    if (bw.konq || bw.chrome || bw.safari)
-      document.body.style.webkitUserSelect = 'none';
-
-    this.p1pos = this.relative ? $(this.p1).position() : $(this.p1).offset();
-    this.p2pos = this.relative ? $(this.p2).position() : $(this.p2).offset();
-    this.drag_active = true;
-
-    // start listening to mousemove events
-    rcube_event.add_listener({element:document, event:'mousemove', object:this, method:'onDrag'});
-    rcube_event.add_listener({element:document, event:'mouseup', object:this, method:'onDragStop'});
-
-    // enable dragging above iframes
-    $('iframe').each(function() {
-      $('<div class="iframe-splitter-fix"></div>')
-        .css({background: '#fff',
-          width: this.offsetWidth+'px', height: this.offsetHeight+'px',
-          position: 'absolute', opacity: '0.001', zIndex: 1000
-        })
-        .css($(this).offset())
-        .appendTo('body');
-      });
-  };
-
-  /**
-   * Handler for mousemove events
-   */
-  this.onDrag = function(e)
-  {
-    if (!this.drag_active)
-      return false;
-
-    var pos = rcube_event.get_mouse_pos(e);
-
-    if (this.relative) {
-      var parent = $(this.p1.parentNode).offset();
-      pos.x -= parent.left;
-      pos.y -= parent.top;
-    }
-
-    if (this.horizontal) {
-      if (((pos.y - this.layer.height * 1.5) > this.p1pos.top) && ((pos.y + this.layer.height * 1.5) < (this.p2pos.top + this.p2.offsetHeight))) {
-        this.pos = pos.y;
-        this.resize();
-      }
-    }
-    else {
-      if (((pos.x - this.layer.width * 1.5) > this.p1pos.left) && ((pos.x + this.layer.width * 1.5) < (this.p2pos.left + this.p2.offsetWidth))) {
-        this.pos = pos.x;
-        this.resize();
-      }
-    }
-
-    this.p1pos = this.relative ? $(this.p1).position() : $(this.p1).offset();
-    this.p2pos = this.relative ? $(this.p2).position() : $(this.p2).offset();
-    return false;
-  };
-
-  /**
-   * Handler for mouseup events
-   */
-  this.onDragStop = function(e)
-  {
-    // resume the ability to highlight text
-    if (bw.konq || bw.chrome || bw.safari)
-      document.body.style.webkitUserSelect = 'auto';
-
-    // cancel the listening for drag events
-    rcube_event.remove_listener({element:document, event:'mousemove', object:this, method:'onDrag'});
-    rcube_event.remove_listener({element:document, event:'mouseup', object:this, method:'onDragStop'});
-    this.drag_active = false;
-
-    // remove temp divs
-    $('div.iframe-splitter-fix').each(function() { this.parentNode.removeChild(this); });
-
-    this.set_cookie();
-
-    if (typeof this.callback == 'function')
-      this.callback(this);
-
-    return bw.safari ? true : rcube_event.cancel(e);
-  };
-
-  /**
-   * Handler for window resize events
-   */
-  this.onResize = function(e)
-  {
-    if (this.horizontal) {
-      var new_height = parseInt(this.p2.parentNode.offsetHeight, 10) - parseInt(this.p2.style.top, 10) - (bw.ie8 ? 2 : 0);
-      this.p2.style.height = (new_height > 0 ? new_height : 0) +'px';
-    }
-    else {
-      var new_width = parseInt(this.p2.parentNode.offsetWidth, 10) - parseInt(this.p2.style.left, 10);
-      this.p2.style.width = (new_width > 0 ? new_width : 0) + 'px';
-    }
-  };
-
-  /**
-   * Saves splitter position in cookie
-   */
-  this.set_cookie = function()
-  {
-    var exp = new Date();
-    exp.setYear(exp.getFullYear() + 1);
-    bw.set_cookie(this.id, this.pos, exp);
-  };
-
-} // end class rcube_splitter
diff --git a/skins/default/templates/addressbook.html b/skins/default/templates/addressbook.html
deleted file mode 100644 (file)
index 1930deb..0000000
+++ /dev/null
@@ -1,109 +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><roundcube:object name="pagetitle" /></title>
-<roundcube:include file="/includes/links.html" />
-<script type="text/javascript" src="/splitter.js"></script>
-<script type="text/javascript" src="/functions.js"></script>
-<style type="text/css">
-#addresslist { width: <roundcube:exp expression="!empty(cookie:addressviewsplitter) ? cookie:addressviewsplitter-5 : 245" />px; }
-#contacts-box { left: <roundcube:exp expression="!empty(cookie:addressviewsplitter) ? cookie:addressviewsplitter+5 : 255" />px;
-       <roundcube:exp expression="browser:ie ? ('width:expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:addressviewsplitter) ? cookie:addressviewsplitter+5 : 255).')+\\'px\\');') : ''" />
-#directorylistbox { width: <roundcube:exp expression="!empty(cookie:addressviewsplitterd) ? cookie:addressviewsplitterd-5 : 195" />px; }
-#addressscreen { left: <roundcube:exp expression="!empty(cookie:addressviewsplitterd) ? cookie:addressviewsplitterd+5 : 205" />px;
-       <roundcube:exp expression="browser:ie ? ('width:expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:addressviewsplitterd) ? cookie:addressviewsplitterd+5 : 205).')+\\'px\\');') : ''" />
-}
-</style>
-
-</head>
-<body onload="rcube_init_mail_ui()">
-
-<roundcube:include file="/includes/taskbar.html" />
-<roundcube:include file="/includes/header.html" />
-
-<div id="abooktoolbar">
-<roundcube:button command="add" type="link" class="buttonPas addcontact" classAct="button addcontact" classSel="button addcontactSel" title="newcontact" content=" " />
-<roundcube:button command="compose" type="link" class="buttonPas compose" classAct="button compose" classSel="button composeSel" title="composeto" content=" " />
-<roundcube:button command="delete" type="link" class="buttonPas delete" classAct="button delete" classSel="button deleteSel" title="deletecontact" content=" " />
-<span class="separator">&nbsp;</span>
-<roundcube:button command="import" type="link" class="buttonPas import" classAct="button import" classSel="button importSel" title="importcontacts" content=" " />
-<roundcube:button command="export" type="link" class="buttonPas export" classAct="button export" classSel="button exportSel" title="exportvcards" content=" " />
-<roundcube:button command="advanced-search" type="link" class="buttonPas search" classAct="button search" classSel="button searchSel" title="advsearch" content=" " />
-<roundcube:container name="toolbar" id="abooktoolbar" />
-</div>
-
-<div id="quicksearchbar">
-<roundcube:button name="searchmenulink" id="searchmenulink" image="/images/icons/glass_roll.png" onclick="rcmail_ui.show_popup('searchmenu');return false" title="searchmod" />
-<roundcube:object name="searchform" id="quicksearchbox" />
-<roundcube:button command="reset-search" id="searchreset" image="/images/icons/reset.gif" title="resetsearch" />
-</div>
-
-<div id="searchmenu" class="popupmenu">
-  <ul class="toolbarmenu">
-    <li><input type="checkbox" name="s_mods[]" value="name" id="s_mod_name" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_name"><roundcube:label name="name" /></label></li>
-    <li><input type="checkbox" name="s_mods[]" value="firstname" id="s_mod_firstname" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_firstname"><roundcube:label name="firstname" /></label></li>
-    <li><input type="checkbox" name="s_mods[]" value="surname" id="s_mod_surname" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_surname"><roundcube:label name="surname" /></label></li>
-    <li><input type="checkbox" name="s_mods[]" value="email" id="s_mod_email" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_email"><roundcube:label name="email" /></label></li>
-    <li><input type="checkbox" name="s_mods[]" value="*" id="s_mod_all" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_all"><roundcube:label name="allfields" /></label></li>
-  </ul>
-</div>
-
-<div id="mainscreen">
-
-<div id="directorylistbox">
-<div id="directorylist-title" class="boxtitle"><roundcube:label name="groups" /></div>
-<div class="boxlistcontent">
-  <roundcube:object name="directorylist" id="directorylist" />
-  <roundcube:object name="groupslist" id="contactgroupslist" />
-</div>
-<div class="boxfooter">
-  <roundcube:button command="group-create" type="link" title="newcontactgroup" 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>
-
-<div id="addressscreen">
-
-<div id="addresslist">
-<div class="boxtitle"><roundcube:label name="contacts" /></div>
-<div class="boxlistcontent">
-<roundcube:object name="addresslist" id="contacts-table" class="records-table" cellspacing="0" summary="Contacts list" noheader="true" />
-</div>
-<div class="boxfooter">
-<div id="abookcountbar" class="pagenav">
-  <roundcube:button command="firstpage" type="link" class="buttonPas firstpage" classAct="button firstpage" classSel="button firstpageSel" title="firstpage" content=" " />
-  <roundcube:button command="previouspage" type="link" class="buttonPas prevpage" classAct="button prevpage" classSel="button prevpageSel" title="previouspage" content=" " />
-  <roundcube:object name="recordsCountDisplay" style="padding:0 .5em; float:left" />
-  <roundcube:button command="nextpage" type="link" class="buttonPas nextpage" classAct="button nextpage" classSel="button nextpageSel" title="nextpage" content=" " />
-  <roundcube:button command="lastpage" type="link" class="buttonPas lastpage" classAct="button lastpage" classSel="button lastpageSel" title="lastpage" content=" " />
-</div>
-</div>
-</div>
-
-<script type="text/javascript">
-  var addrviewsplit = new rcube_splitter({id:'addressviewsplitter', p1: 'addresslist', p2: 'contacts-box', orientation: 'v', relative: true, start: 250});
-  rcmail.add_onload('addrviewsplit.init()');
-
-  var addrviewsplitd = new rcube_splitter({id:'addressviewsplitterd', p1: 'directorylistbox', p2: 'addressscreen', orientation: 'v', relative: true, start: 200});
-  rcmail.add_onload('addrviewsplitd.init()');
-</script>
-
-<div id="contacts-box">
-<roundcube:object name="addressframe" id="contact-frame" width="100%" height="100%" frameborder="0" src="/watermark.html" />
-</div>
-
-</div>
-</div>
-
-<div id="groupoptionsmenu" class="popupmenu">
-  <ul>
-    <li><roundcube:button command="group-rename" label="grouprename" classAct="active" /></li>
-    <li><roundcube:button command="group-delete" label="groupdelete" classAct="active" /></li>
-    <li class="separator_above"><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>
-
-</body>
-</html>
diff --git a/skins/default/templates/compose.html b/skins/default/templates/compose.html
deleted file mode 100644 (file)
index 4921bbf..0000000
+++ /dev/null
@@ -1,151 +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><roundcube:object name="productname" /> :: <roundcube:label name="compose" /></title>
-<roundcube:include file="/includes/links.html" />
-<link rel="stylesheet" type="text/css" href="/googiespell.css" />
-<script type="text/javascript" src="/functions.js"></script>
-<script type="text/javascript" src="/splitter.js"></script>
-<style type="text/css">
-#compose-attachments { width: <roundcube:exp expression="!empty(cookie:composesplitterv) ? cookie:composesplitterv-5 : 175" />px; }
-#compose-container { left: <roundcube:exp expression="!empty(cookie:composesplitterv) ? cookie:composesplitterv+5 : 185" />px;
-<roundcube:exp expression="browser:ie ? ('width: expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:composesplitterv) ? cookie:composesplitterv+5 : 180).')+\\'px\\');') : ''" />
-}
-</style>
-</head>
-<body onload="rcube_init_mail_ui()">
-
-<roundcube:include file="/includes/taskbar.html" />
-<roundcube:include file="/includes/header.html" />
-
-<form name="form" action="./" method="post">
-
-<div id="messagetoolbar">
-    <roundcube:button command="list" type="link" class="button back" classAct="button back" classSel="button backSel" title="backtolist" content=" " />
-    <roundcube:button command="send" type="link" class="buttonPas send" classAct="button send" classSel="button sendSel" title="sendmessage" content=" " />
-    <roundcube:button command="spellcheck" type="link" class="buttonPas spellcheck" classAct="button spellcheck" classSel="button spellcheckSel" title="checkspelling" content=" " />
-    <roundcube:button name="addattachment" type="link" class="button attach" classAct="button attach" classSel="button attachSel" title="addattachment" onclick="rcmail_ui.show_popup('uploadmenu', true);return false" content=" " />
-    <roundcube:button command="insert-sig" type="link" class="buttonPas insertsig" classAct="button insertsig" classSel="button insertsigSel" title="insertsignature" content=" " />
-    <roundcube:button command="savedraft" type="link" class="buttonPas savedraft" classAct="button savedraft" classSel="button savedraftSel" title="savemessage" content=" " />
-    <roundcube:container name="toolbar" id="compose-toolbar" />
-    <roundcube:button name="messageoptions" id="composemenulink" type="link" class="button messagemenu" title="messageoptions" onclick="rcmail_ui.show_popup('composemenu', true);return false" content=" " />
-</div>
-
-<div id="mainscreen">
-
-<div id="compose-attachments">
-<div class="boxtitle"><roundcube:label name="attachments" /></div>
-<div class="boxlistcontent">
-    <roundcube:object name="composeAttachmentList" deleteIcon="/images/icons/delete.png" cancelIcon="/images/icons/delete.png" loadingIcon="/images/display/loading_blue.gif" />
-</div>
-<div class="boxfooter">
-  <roundcube:button name="uploadmenulink" id="uploadmenulink" type="link" title="addattachment" class="button addgroup" onclick="rcmail_ui.show_popup('uploadmenu', true);return false" content=" " />
-</div>
-</div>
-
-<script type="text/javascript">
-  var composesplitv = new rcube_splitter({id:'composesplitterv', p1: 'compose-attachments', p2: 'compose-container', orientation: 'v', relative: true, start: 175});
-  rcmail.add_onload('composesplitv.init()');
-</script>
-
-<div id="compose-container">
-    <div id="compose-headers-div" style="width: 100%;">
-        <table border="0" cellspacing="0" cellpadding="1" id="compose-headers">
-        <tr>
-            <td class="title"><label for="_from"><roundcube:label name="from" /></label></td>
-            <td class="editfield formlinks">
-                <roundcube:object name="composeHeaders" part="from" form="form" id="_from" tabindex="1" />
-                <a href="#identities" onclick="return rcmail.command('identities')"><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="2" tabindex="2" /></td>
-        </tr><tr id="compose-cc">
-            <td class="title top">
-                <a href="#cc" onclick="return rcmail_ui.hide_header_form('cc');"><img src="/images/icons/minus.gif" alt="" title="<roundcube:label name='delete' />" /></a>
-                <label for="_cc"><roundcube:label name="cc" /></label>
-            </td>
-            <td class="editfield"><roundcube:object name="composeHeaders" part="cc" form="form" id="_cc" cols="70" rows="2" tabindex="3" /></td>
-        </tr><tr id="compose-bcc">
-            <td class="title top">
-                <a href="#bcc" onclick="return rcmail_ui.hide_header_form('bcc');"><img src="/images/icons/minus.gif" alt="" title="<roundcube:label name='delete' />" /></a>
-                <label for="_bcc"><roundcube:label name="bcc" /></label>
-            </td>
-            <td colspan="2" class="editfield"><roundcube:object name="composeHeaders" part="bcc" form="form" id="_bcc" cols="70" rows="2" tabindex="4" /></td>
-        </tr><tr id="compose-replyto">
-            <td class="title top">
-                <a href="#replyto" onclick="return rcmail_ui.hide_header_form('replyto');"><img src="/images/icons/minus.gif" alt="" title="<roundcube:label name='delete' />" /></a>
-                <label for="_replyto"><roundcube:label name="replyto" /></label>
-            </td>
-            <td class="editfield"><roundcube:object name="composeHeaders" part="replyto" form="form" id="_replyto" size="70" tabindex="5" /></td>
-        </tr><tr id="compose-followupto">
-            <td class="title top">
-                <a href="#followupto" onclick="return rcmail_ui.hide_header_form('followupto');"><img src="/images/icons/minus.gif" alt="" title="<roundcube:label name='delete' />" /></a>
-                <label for="_followupto"><roundcube:label name="followupto" /></label>
-            </td>
-            <td class="editfield"><roundcube:object name="composeHeaders" part="followupto" form="form" id="_followupto" size="70" tabindex="7" /></td>
-        </tr><tr>
-            <td></td>
-            <td class="formlinks">
-                <a href="#cc" onclick="return rcmail_ui.show_header_form('cc')" id="cc-link"><roundcube:label name="addcc" /></a>
-                <span class="separator">|</span>
-                <a href="#bcc" onclick="return rcmail_ui.show_header_form('bcc')" id="bcc-link"><roundcube:label name="addbcc" /></a>
-                <span class="separator">|</span>
-                <a href="#reply-to" onclick="return rcmail_ui.show_header_form('replyto')" id="replyto-link"><roundcube:label name="addreplyto" /></a>
-                <span class="separator">|</span>
-                <a href="#followup-to" onclick="return rcmail_ui.show_header_form('followupto')" id="followupto-link"><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>
-        </tr>
-        </table>
-    </div>
-    <div id="compose-div">
-        <div class="boxlistcontent" style="overflow: hidden; top: 0">
-            <roundcube:object name="composeBody" id="compose-body" form="form" cols="70" rows="20" tabindex="9" />
-        </div>
-        <div class="boxfooter">
-            <div id="compose-buttons">
-                <roundcube:button type="input" command="send" class="button mainaction" label="sendmessage" tabindex="10" />
-                <roundcube:button type="input" command="list" class="button" label="cancel" tabindex="11" />
-            </div>
-            <div id="compose-editorfooter">
-                <span id="spellcheck-control" style="margin-right:10px"></span>
-                <roundcube:if condition="!in_array('htmleditor', (array)config:dont_override)" />
-                <span>
-                    <label><roundcube:label name="editortype" /></label>
-                    <roundcube:object name="editorSelector" editorid="compose-body" tabindex="12" />
-                </span>
-                <roundcube:endif />
-            </div>
-        </div>
-    </div>
-</div>
-
-</div>
-
-<div id="composeoptionsmenu" class="popupmenu">
-    <table>
-    <tr>
-        <td><label for="rcmcomposereceipt"><roundcube:label name="returnreceipt" />:</label></td>
-        <td><roundcube:object name="receiptCheckBox" form="form" id="rcmcomposereceipt" /></td>
-    </tr><tr>
-        <td><label for="rcmcomposedsn"><roundcube:label name="dsn" />:</label></td>
-        <td><roundcube:object name="dsnCheckBox" form="form" id="rcmcomposedsn" /></td>
-    </tr><tr>
-        <td><label for="rcmcomposepriority"><roundcube:label name="priority" />:</label></td>
-        <td><roundcube:object name="prioritySelector" form="form" id="rcmcomposepriority" /></td>
-    </tr><tr>
-        <td><label><roundcube:label name="savesentmessagein" />:</label></td>
-        <td><roundcube:object name="storetarget" maxlength="30" /></td>
-    </tr>
-    </table>
-</div>
-
-</form>
-
-<roundcube:object name="composeAttachmentForm" id="attachment-form" attachmentFieldSize="40" class="popupmenu" />
-
-</body>
-</html>
diff --git a/skins/default/templates/contact.html b/skins/default/templates/contact.html
deleted file mode 100644 (file)
index d74a78b..0000000
+++ /dev/null
@@ -1,29 +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><roundcube:object name="pagetitle" /></title>
-<roundcube:include file="/includes/links.html" />
-<script type="text/javascript" src="/functions.js"></script>
-</head>
-<body class="iframe">
-
-<div id="contact-title" class="boxtitle"><roundcube:label name="contactproperties" /></div>
-<div id="contact-details" class="boxcontent">
-  <roundcube:if condition="strlen(env:sourcename)" />
-    <div id="sourcename"><roundcube:label name="addressbook" />: <roundcube:var name="env:sourcename" /></div>
-  <roundcube:endif />
-
-  <div id="contactphoto"><roundcube:object name="contactphoto" id="contactpic" placeholder="/images/contactpic.png" /></div>
-  <roundcube:object name="contacthead" id="contacthead" />
-  <div style="clear:both"></div>
-  <div id="contacttabs">
-    <roundcube:object name="contactdetails" />
-  </div>
-  <p>
-    <roundcube:button command="edit" type="input" class="button" label="editcontact" condition="!ENV:readonly" />
-  </p>
-</div>
-<script type="text/javascript">rcube_init_tabs('contacttabs')</script>
-
-</body>
-</html>
diff --git a/skins/default/templates/contactadd.html b/skins/default/templates/contactadd.html
deleted file mode 100644 (file)
index 67b7bcd..0000000
+++ /dev/null
@@ -1,40 +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><roundcube:object name="pagetitle" /></title>
-<roundcube:include file="/includes/links.html" />
-<script type="text/javascript" src="/functions.js"></script>
-</head>
-<body class="iframe" onload="rcube_init_mail_ui()">
-
-<div id="contact-title" class="boxtitle"><roundcube:label name="addcontact" /></div>
-<div id="contact-details" class="boxcontent">
-<form name="editform" method="post" action="./">
-  <roundcube:if condition="strlen(env:sourcename)" />
-    <div id="sourcename"><roundcube:label name="addressbook" />: <roundcube:object name="sourceselector" class="hint" id="sourceselect" /></div>
-  <roundcube:endif />
-  <div id="contactphoto">
-    <roundcube:object name="contactphoto" id="contactpic" placeholder="/images/contactpic.png" />
-    <div class="formlinks">
-      <roundcube:button command="upload-photo" id="uploadformlink" type="link" label="addphoto" class="disabled" classAct="active" onclick="rcmail_ui.show_popup('uploadform', true);return false" condition="env:photocol" /><br/>
-      <roundcube:button command="delete-photo" type="link" label="delete" class="disabled" classAct="active" condition="env:photocol" />
-    </div>
-  </div>
-  <roundcube:object name="contactedithead" id="contacthead" size="16" form="editform" />
-  <div style="clear:both"></div>
-  <div id="contacttabs">
-    <roundcube:object name="contacteditform" size="40" textareacols="60" deleteIcon="/images/icons/delete.png" form="editform" />
-  </div>
-  <p>
-    <input type="button" value="<roundcube:label name="cancel" />" class="button" onclick="history.back()" />&nbsp;
-    <roundcube:button command="save" type="input" class="button mainaction" label="save" />
-  </p>
-</form>
-</div>
-
-<roundcube:object name="photoUploadForm" id="upload-form" size="30" class="popupmenu" />
-
-<script type="text/javascript">rcube_init_tabs('contacttabs')</script>
-
-</body>
-</html>
diff --git a/skins/default/templates/contactedit.html b/skins/default/templates/contactedit.html
deleted file mode 100644 (file)
index 77e4661..0000000
+++ /dev/null
@@ -1,41 +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><roundcube:object name="pagetitle" /></title>
-<roundcube:include file="/includes/links.html" />
-<script type="text/javascript" src="/functions.js"></script>
-</head>
-<body class="iframe" onload="rcube_init_mail_ui()">
-
-<div id="contact-title" class="boxtitle"><roundcube:label name="editcontact" /></div>
-<div id="contact-details" class="boxcontent">
-<form name="editform" method="post" action="./">
-  <roundcube:if condition="strlen(env:sourcename)" />
-    <div id="sourcename"><roundcube:label name="addressbook" />: <roundcube:var name="env:sourcename" /></div>
-  <roundcube:endif />
-  <div id="contactphoto">
-    <roundcube:object name="contactphoto" id="contactpic" placeholder="/images/contactpic.png" />
-    <div class="formlinks">
-      <roundcube:button command="upload-photo" id="uploadformlink" type="link" label="replacephoto" class="disabled" classAct="active" onclick="rcmail_ui.show_popup('uploadform', true);return false" condition="env:photocol" /><br/>
-      <roundcube:button command="delete-photo" type="link" label="delete" class="disabled" classAct="active" condition="env:photocol" />
-    </div>
-  </div>
-  <roundcube:object name="contactedithead" id="contacthead" size="16" form="editform" />
-  <div style="clear:both"></div>
-  
-  <div id="contacttabs">
-    <roundcube:object name="contacteditform" size="40" textareacols="60" deleteIcon="/images/icons/delete.png" form="editform" />
-  </div>
-  <p>
-    <roundcube:button command="show" type="input" class="button" label="cancel" />&nbsp;
-    <roundcube:button command="save" type="input" class="button mainaction" label="save" />
-  </p>
-</form>
-</div>
-
-<roundcube:object name="photoUploadForm" id="upload-form" size="30" class="popupmenu" />
-
-<script type="text/javascript">rcube_init_tabs('contacttabs')</script>
-
-</body>
-</html>
diff --git a/skins/default/templates/contactsearch.html b/skins/default/templates/contactsearch.html
deleted file mode 100644 (file)
index 23cbec4..0000000
+++ /dev/null
@@ -1,18 +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><roundcube:object name="pagetitle" /></title>
-<roundcube:include file="/includes/links.html" />
-<script type="text/javascript" src="/functions.js"></script>
-</head>
-<body class="iframe">
-
-<div id="contact-title" class="boxtitle"><roundcube:label name="advsearch" /></div>
-<div id="contact-details" class="boxcontent">
-  <roundcube:object name="searchform" id="advsearchform" size=30 />
-  <p><roundcube:button command="save" type="input" class="button mainaction" label="search" /></p>
-</div>
-<script type="text/javascript">rcube_init_tabs('advsearchform')</script>
-
-</body>
-</html>
diff --git a/skins/default/templates/error.html b/skins/default/templates/error.html
deleted file mode 100644 (file)
index 60af53b..0000000
+++ /dev/null
@@ -1,16 +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><roundcube:object name="productname" /> :: ERROR</title>
-<roundcube:include file="/includes/links.html" />
-</head>
-<body>
-
-<div id="header"><roundcube:object name="logo" src="/images/roundcube_logo.png" id="logo" border="0" alt="Logo" /></div>
-
-<div style="width:400px; margin:60px auto;">
-$__page_content
-</div>
-
-</body>
-</html>
diff --git a/skins/default/templates/folderedit.html b/skins/default/templates/folderedit.html
deleted file mode 100644 (file)
index c5fa249..0000000
+++ /dev/null
@@ -1,24 +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><roundcube:object name="pagetitle" /></title>
-<roundcube:include file="/includes/links.html" />
-<script type="text/javascript" src="/functions.js"></script>
-</head>
-<body class="iframe">
-
-<div id="folder-title" class="boxtitle"><roundcube:label name="folderproperties" /></div>
-
-<div id="folder-details" class="boxcontent">
-  <roundcube:object name="folderdetails" />
-  <p>
-    <roundcube:if condition="!strlen(request:_mbox)" />
-    <input type="button" value="<roundcube:label name="cancel" />" class="button" onclick="history.back()" />&nbsp;
-    <roundcube:endif />
-    <roundcube:button command="save" type="input" class="button mainaction" label="save" />
-  </p>
-</div>
-<script type="text/javascript">rcube_init_tabs('folder-details > form')</script>
-
-</body>
-</html>
diff --git a/skins/default/templates/folders.html b/skins/default/templates/folders.html
deleted file mode 100644 (file)
index 923027d..0000000
+++ /dev/null
@@ -1,62 +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><roundcube:object name="pagetitle" /></title>
-<roundcube:include file="/includes/links.html" />
-<script type="text/javascript" src="/functions.js"></script>
-<script type="text/javascript" src="/splitter.js"></script>
-<style type="text/css">
-#folder-manager { width: <roundcube:exp expression="!empty(cookie:folderviewsplitter) ? cookie:folderviewsplitter-5 : 295" />px; }
-#folder-box { left: <roundcube:exp expression="!empty(cookie:folderviewsplitter) ? cookie:folderviewsplitter+5 : 305" />px;
-    <roundcube:exp expression="browser:ie ? ('width:expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:folderviewsplitter) ? cookie:folderviewsplitter+5 : 305).')+\\'px\\');') : ''" />
-}
-</style>
-</head>
-<body onload="rcube_init_mail_ui()">
-
-<roundcube:include file="/includes/taskbar.html" />
-<roundcube:include file="/includes/header.html" />
-<roundcube:include file="/includes/settingstabs.html" />
-
-<div id="mainscreen">
-
-<div id="folder-manager">
-<div id="folder-title" class="boxtitle"><span class="rightalign"><roundcube:label name="subscribed" /></span><roundcube:label name="folders" /></div>
-<div class="boxlistcontent">
-    <roundcube:object name="foldersubscription" form="subscriptionform" id="subscription-table" noheader="true"
-        cellpadding="1" cellspacing="0" summary="Folder subscription table" class="records-table" />
-</div>
-<div class="boxfooter">
-    <roundcube:button command="create-folder" type="link" title="createfolder" class="buttonPas addgroup" classAct="button addgroup" content=" " />
-    <roundcube:button name="mailboxmenulink" id="mailboxmenulink" type="link" title="folderactions" class="button groupactions" onclick="rcmail_ui.show_popup('mailboxmenu');return false" content=" " />
-
-    <roundcube:if condition="env:quota" />
-    <img id="quotaimg" src="/images/quota.<roundcube:exp expression="browser:ie && browser:ver < 7 ? 'gif' : 'png'" />" alt="" />
-    <div id="quota">
-        <roundcube:object name="quotaDisplay" display="image" width="100" height="14" id="quotadisplay" />
-    </div>
-    <roundcube:endif />
-</div>
-</div>
-
-<script type="text/javascript">
-    var folderviewsplit = new rcube_splitter({id:'folderviewsplitter', p1: 'folder-manager', p2: 'folder-box', orientation: 'v', relative: true, start: 300 });
-    rcmail.add_onload('folderviewsplit.init()');
-</script>
-
-<div id="folder-box">
-    <roundcube:object name="folderframe" id="folder-frame" width="100%" height="100%" frameborder="0" src="/watermark.html" />
-</div>
-
-</div>
-
-<div id="mailboxoptionsmenu" class="popupmenu">
-  <ul>
-    <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>
-
-</body>
-</html>
diff --git a/skins/default/templates/identities.html b/skins/default/templates/identities.html
deleted file mode 100644 (file)
index f40f394..0000000
+++ /dev/null
@@ -1,48 +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><roundcube:object name="pagetitle" /></title>
-<roundcube:include file="/includes/links.html" />
-<script type="text/javascript" src="/functions.js"></script>
-<script type="text/javascript" src="/splitter.js"></script>
-<style type="text/css">
-#identities-list { width: <roundcube:exp expression="!empty(cookie:identviewsplitter) ? cookie:identviewsplitter-5 : 295" />px; }
-#identity-details { left: <roundcube:exp expression="!empty(cookie:identviewsplitter) ? cookie:identviewsplitter+5 : 305" />px;
-  <roundcube:exp expression="browser:ie ? ('width:expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:identviewsplitter) ? cookie:identviewsplitter+5 : 305).')+\\'px\\');') : ''" />
-}
-</style>
-
-</head>
-<body>
-
-<roundcube:include file="/includes/taskbar.html" />
-<roundcube:include file="/includes/header.html" />
-<roundcube:include file="/includes/settingstabs.html" />
-
-<div id="mainscreen">
-
-<div id="identities-list">
-<div id="identity-title" class="boxtitle"><roundcube:label name="identities" /></div>
-<div class="boxlistcontent">
-<roundcube:object name="identitiesList" id="identities-table" class="records-table" cellspacing="0" summary="Identities list" noheader="true" editIcon="" />
-</div>
-<div class="boxfooter">
-<roundcube:button command="add" type="link" title="newidentity" class="buttonPas addgroup" classAct="button addgroup" content=" " condition="config:identities_level:0<2" />
-</div>
-</div>
-
-<script type="text/javascript">
-  var identviewsplit = new rcube_splitter({id:'identviewsplitter', p1: 'identities-list', p2: 'identity-details', orientation: 'v', relative: true, start: 300 });
-  rcmail.add_onload('identviewsplit.init()');
-</script>
-
-<div id="identity-details">
-  <div style="margin:10px auto; text-align:center">
-  <img src="/images/watermark.gif" width="260" height="228" alt="" />
-  </div>
-</div>
-
-</div>
-
-</body>
-</html>
diff --git a/skins/default/templates/identityedit.html b/skins/default/templates/identityedit.html
deleted file mode 100644 (file)
index c8d065d..0000000
+++ /dev/null
@@ -1,56 +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><roundcube:object name="pagetitle" /></title>
-<roundcube:include file="/includes/links.html" />
-<script type="text/javascript" src="/functions.js"></script>
-<script type="text/javascript" src="/splitter.js"></script>
-<style type="text/css">
-#identities-list { width: <roundcube:exp expression="!empty(cookie:identviewsplitter) ? cookie:identviewsplitter-5 : 295" />px; }
-#identity-details { left: <roundcube:exp expression="!empty(cookie:identviewsplitter) ? cookie:identviewsplitter+5 : 305" />px;
-  <roundcube:exp expression="browser:ie ? ('width:expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:identviewsplitter) ? cookie:identviewsplitter+5 : 305).')+\\'px\\');') : ''" />
-}
-</style>
-
-</head>
-<body>
-
-<roundcube:include file="/includes/taskbar.html" />
-<roundcube:include file="/includes/header.html" />
-<roundcube:include file="/includes/settingstabs.html" />
-
-<div id="mainscreen">
-
-<div id="identities-list">
-<div id="identity-title" class="boxtitle"><roundcube:label name="identities" /></div>
-<div class="boxlistcontent">
-<roundcube:object name="identitiesList" id="identities-table" class="records-table" cellspacing="0" summary="Identities list" noheader="true" editIcon="" />
-</div>
-<div class="boxfooter">
-<roundcube:button command="add" type="link" title="newidentity" class="buttonPas addgroup" classAct="button addgroup" content=" " condition="config:identities_level:0<2" />
-</div>
-</div>
-
-<script type="text/javascript">
-  var identviewsplit = new rcube_splitter({id:'identviewsplitter', p1: 'identities-list', p2: 'identity-details', orientation: 'v', relative: true, start: 300 });
-  rcmail.add_onload('identviewsplit.init()');
-</script>
-
-<div id="identity-details">
-<div id="identity-title" class="boxtitle"><roundcube:object name="steptitle" /></div>
-
-<div class="boxcontent">
-<roundcube:object name="identityform" id="identity-form" size="40" textareacols="70" textarearows="6" />
-<p>
-<roundcube:button command="delete" type="input" class="button" label="delete" condition="env:action=='edit-identity'" style="margin-right:0.5em" />
-<roundcube:button command="save" type="input" class="button mainaction" label="save" />
-</p>
-</div>
-<script type="text/javascript">rcube_init_tabs('identity-form')</script>
-
-</div>
-
-</div>
-
-</body>
-</html>
diff --git a/skins/default/templates/importcontacts.html b/skins/default/templates/importcontacts.html
deleted file mode 100644 (file)
index 05c7eb7..0000000
+++ /dev/null
@@ -1,26 +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><roundcube:object name="pagetitle" /></title>
-<roundcube:include file="/includes/links.html" />
-</head>
-<body>
-
-<roundcube:include file="/includes/taskbar.html" />
-<roundcube:include file="/includes/header.html" />
-
-<div id="mainscreen" class="box darkbg">
-<div class="boxtitle"><roundcube:label name="importcontacts" /></div>
-
-<div class="boxcontent">
-<roundcube:object name="importstep" />
-
-<p><br />
-<roundcube:object name="importnav" class="button" />
-</p>
-
-</div>
-</div>
-
-</body>
-</html>
diff --git a/skins/default/templates/login.html b/skins/default/templates/login.html
deleted file mode 100644 (file)
index 7fb4370..0000000
+++ /dev/null
@@ -1,43 +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><roundcube:object name="pagetitle" /></title>
-<meta name="Robots" content="noindex,nofollow" />
-<roundcube:include file="/includes/links.html" />
-</head>
-<body>
-
-<roundcube:object name="logo" src="/images/roundcube_logo.png" id="logo" border="0" style="margin:0 11px" />
-
-<roundcube:object name="message" id="message" />
-
-<div id="login-form">
-<div class="boxtitle"><roundcube:label name="welcome" /></div>
-<div class="boxcontent">
-
-<form name="form" action="./" method="post">
-<roundcube:object name="loginform" form="form" />
-
-<p style="text-align:center;"><input type="submit" class="button mainaction" value="<roundcube:label name='login' />" /></p>
-
-</form>
-</div>
-</div>
-
-<roundcube:object name="preloader" images="
-    /images/icons/folders.png
-    /images/mail_footer.png
-    /images/taskicons.gif
-    /images/display/loading.gif
-    /images/pagenav.gif
-    /images/mail_toolbar.png
-    /images/searchfield.gif
-    /images/messageicons.png
-    /images/icons/reset.gif
-    /images/abook_toolbar.png
-    /images/icons/groupactions.png
-    /images/watermark.gif
-" />
-
-</body>
-</html>
diff --git a/skins/default/templates/mail.html b/skins/default/templates/mail.html
deleted file mode 100644 (file)
index 30b56aa..0000000
+++ /dev/null
@@ -1,202 +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><roundcube:object name="pagetitle" /></title>
-<roundcube:include file="/includes/links.html" />
-<script type="text/javascript" src="/splitter.js"></script>
-<script type="text/javascript" src="/functions.js"></script>
-<style type="text/css">
-<roundcube:if condition="config:preview_pane == true" />
-#mailcontframe { height: <roundcube:exp expression="!empty(cookie:mailviewsplitter) ? cookie:mailviewsplitter-5 : 195" />px; }
-#mailpreviewframe { top: <roundcube:exp expression="!empty(cookie:mailviewsplitter) ? cookie:mailviewsplitter+5 : 205" />px;
-<roundcube:exp expression="browser:ie ? ('height: expression((parseInt(this.parentNode.offsetHeight)-'.(!empty(cookie:mailviewsplitter) ? cookie:mailviewsplitter+25 : 245).')+\\'px\\');') : ''" />
-}
-<roundcube:endif />
-#mailleftcontainer { width: <roundcube:exp expression="!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv-5 : 175" />px; }
-#mailrightcontainer { left: <roundcube:exp expression="!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv+5 : 185" />px;
-<roundcube:exp expression="browser:ie ? ('width: expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv+5 : 180).')+\\'px\\');') : ''" />
-}
-</style>
-</head>
-<body onload="rcube_init_mail_ui()">
-
-<roundcube:include file="/includes/taskbar.html" />
-<roundcube:include file="/includes/header.html" />
-
-<div id="mainscreen">
-<div id="mailleftcontainer">
-<div id="mailboxlist-container">
-<div id="mailboxlist-title" class="boxtitle"><roundcube:label name="mailboxlist" /></div>
-<div class="boxlistcontent">
-<roundcube:object name="mailboxlist" id="mailboxlist" folder_filter="mail" />
-</div>
-<div class="boxfooter">
-  <roundcube:button name="mailboxmenulink" id="mailboxmenulink" type="link" title="folderactions" class="button groupactions" onclick="rcmail_ui.show_popup('mailboxmenu');return false" content=" " />
-
-<roundcube:if condition="env:quota" />
-<img id="quotaimg" src="/images/quota.<roundcube:exp expression="browser:ie && browser:ver < 7 ? 'gif' : 'png'" />" alt="" />
-<div id="quota">
-  <roundcube:object name="quotaDisplay" display="image" width="100" height="14" id="quotadisplay" />
-</div>
-<roundcube:endif />
-</div>
-</div>
-
-<script type="text/javascript">
-  var mailviewsplitv = new rcube_splitter({id:'mailviewsplitterv', p1: 'mailleftcontainer', p2: 'mailrightcontainer', orientation: 'v', relative: true, start: 165, callback: rcube_render_mailboxlist });
-  rcmail.add_onload('mailviewsplitv.init()');
-</script>
-
-</div>
-
-<div id="mailrightcontainer">
-<div id="mailrightcontent">
-<div id="mailcontframe">
-<div id="messagelistcontainer" class="boxlistcontent" style="top:0">
-<roundcube:object name="messages"
-  id="messagelist"
-  cellspacing="0"
-  columns=""
-  summary="Message list"
-  optionsmenuIcon="true" />
-</div>
-<div class="boxfooter">
-    <div id="listcontrols" class="pagenav">
-        <span><roundcube:label name="select" />:&nbsp;</span>
-        <roundcube:button command="select-all" type="link" title="all" class="buttonPas all" classAct="button all" classSel="button allsel" content=" " />
-        <roundcube:button command="select-all" type="link" prop="page" title="currpage" class="buttonPas page" classAct="button page" classSel="button pagesel" content=" " />
-        <roundcube:button command="select-all" type="link" prop="unread" title="unread" class="buttonPas unread" classAct="button unread" classSel="button unreadsel" content=" " />
-        <roundcube:button command="select-all" type="link" prop="invert" title="invert" class="buttonPas invert" classAct="button invert" classSel="button invertsel" content=" " />
-        <roundcube:button command="select-none" type="link" title="none" class="buttonPas none" classAct="button none" classSel="button nonesel" content=" " />
-        <roundcube:container name="listcontrols" id="listcontrols" />
-    <roundcube:if condition="env:threads" />
-        <span style="margin-left: 12px"><roundcube:label name="threads" />:&nbsp;</span>
-        <roundcube:button command="expand-all" type="link" title="expand-all" class="buttonPas expand-all" classAct="button expand-all" classSel="button expand-allsel" content=" "  />
-        <roundcube:button command="expand-unread" type="link" title="expand-unread" class="buttonPas expand-unread" classAct="button expand-unread" classSel="button expand-unreadsel" content=" " />
-        <roundcube:button command="collapse-all" type="link" title="collapse-all" class="buttonPas collapse-all" classAct="button collapse-all" classSel="button collapse-allsel" content=" " />
-    <roundcube:endif />
-    <roundcube:if condition="!in_array('preview_pane', (array)config:dont_override)" />
-        <label><span style="margin-left: 12px"><roundcube:label name="previewpane" />:&nbsp;</span>
-        <input type="checkbox" onclick="rcmail_ui.switch_preview_pane(this)"<roundcube:exp expression="config:preview_pane == true ? ' checked=checked' : ''" /> /></label>
-    <roundcube:endif />
-    </div>
-    <div id="countcontrols" class="pagenav">
-        <roundcube:button command="lastpage" type="link" class="buttonPas lastpage" classAct="button lastpage" classSel="button lastpageSel" title="lastpage" content=" " />
-        <roundcube:button command="nextpage" type="link" class="buttonPas nextpage" classAct="button nextpage" classSel="button nextpageSel" title="nextpage" content=" " />
-        <roundcube:object name="messageCountDisplay" style="padding:0 .5em; float:right" />
-        <roundcube:button command="previouspage" type="link" class="buttonPas prevpage" classAct="button prevpage" classSel="button prevpageSel" title="previouspage" content=" " />
-        <roundcube:button command="firstpage" type="link" class="buttonPas firstpage" classAct="button firstpage" classSel="button firstpageSel" title="firstpage" content=" " />
-    </div>
-</div>
-</div>
-
-<script type="text/javascript">
-  var mailviewsplit = new rcube_splitter({id:'mailviewsplitter', p1: 'mailcontframe', p2: 'mailpreviewframe', orientation: 'h', relative: true, start: 205});
-<roundcube:if condition="config:preview_pane == true" />
-  rcmail.add_onload('mailviewsplit.init()');
-<roundcube:endif />
-</script>
-
-<div id="mailpreviewframe"<roundcube:if condition="config:preview_pane != true" /> style="display:none"<roundcube:endif />>
-<roundcube:object name="messagecontentframe" id="messagecontframe" width="100%" height="100%" frameborder="0" src="/watermark.html" />
-</div>
-</div>
-
-</div>
-</div>
-
-<roundcube:include file="/includes/messagetoolbar.html" />
-
-<div id="searchmenu" class="popupmenu">
-  <ul class="toolbarmenu">
-    <li><input type="checkbox" name="s_mods[]" value="subject" id="s_mod_subject" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_subject"><roundcube:label name="subject" /></label></li>
-    <li><input type="checkbox" name="s_mods[]" value="from" id="s_mod_from" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_from"><roundcube:label name="from" /></label></li>
-    <li><input type="checkbox" name="s_mods[]" value="to" id="s_mod_to" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_to"><roundcube:label name="to" /></label></li>
-    <li><input type="checkbox" name="s_mods[]" value="cc" id="s_mod_cc" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_cc"><roundcube:label name="cc" /></label></li>
-    <li><input type="checkbox" name="s_mods[]" value="bcc" id="s_mod_bcc" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_bcc"><roundcube:label name="bcc" /></label></li>
-    <li><input type="checkbox" name="s_mods[]" value="text" id="s_mod_text" onclick="rcmail_ui.set_searchmod(this)" /><label for="s_mod_text"><roundcube:label name="msgtext" /></label></li>
-  </ul>
-</div>
-
-<div id="quicksearchbar">
-<div id="searchfilter">
-  <label for="rcmlistfilter"><roundcube:label name="filter" /></label>:
-  <roundcube:object name="searchfilter" class="searchfilter" />
-</div>
-<roundcube:button name="searchmenulink" id="searchmenulink" image="/images/icons/glass_roll.png" onclick="rcmail_ui.show_popup('searchmenu');return false" title="searchmod" />
-<roundcube:object name="searchform" id="quicksearchbox" />
-<roundcube:button command="reset-search" id="searchreset" image="/images/icons/reset.gif" title="resetsearch" />
-</div>
-
-<div id="dragmessagemenu" class="popupmenu">
-  <ul>
-    <li><roundcube:button command="moveto" onclick="return rcmail.drag_menu_action('moveto')" label="move" classAct="active" /></li>
-    <li><roundcube:button command="copy" onclick="return rcmail.drag_menu_action('copy')" label="copy" classAct="active" /></li>
-  </ul>
-</div>
-
-<div id="mailboxoptionsmenu" class="popupmenu">
-  <ul>
-    <li><roundcube:button command="expunge" type="link" label="compact" classAct="active" /></li>
-    <li class="separator_below"><roundcube:button command="purge" type="link" label="empty" classAct="active" /></li>
-    <li><roundcube:button command="folders" task="settings" type="link" label="managefolders" classAct="active" /></li>
-    <roundcube:container name="mailboxoptions" id="mailboxoptionsmenu" />
-  </ul>
-</div>
-
-<div id="listmenu" class="popupmenu">
-<roundcube:if condition="env:threads" />
-<fieldset class="thinbordered"><legend><roundcube:label name="listmode" /></legend>
-  <ul class="toolbarmenu">
-    <li><input type="radio" name="view" value="list" id="view_default" /><label for="view_default"><roundcube:label name="list" /></label></li>
-    <li><input type="radio" name="view" value="thread" id="view_thread" /><label for="view_thread"><roundcube:label name="threads" /></label></li>
-  </ul>
-</fieldset>
-<roundcube:endif />
-<roundcube:if condition="!in_array('list_cols', (array)config:dont_override)" />
-<fieldset class="thinbordered"><legend><roundcube:label name="listcolumns" /></legend>
-  <ul class="toolbarmenu">
-    <li><input type="checkbox" name="list_col[]" value="threads" id="cols_threads" checked="checked" disabled="disabled" /><label for="cols_threads" class="disabled"><roundcube:label name="threads" /></label></li>
-    <li><input type="checkbox" name="list_col[]" value="subject" id="cols_subject" checked="checked" disabled="disabled" /><label for="cols_subject" class="disabled"><roundcube:label name="subject" /></label></li>
-    <li><input type="checkbox" name="list_col[]" value="from" id="cols_fromto" /><label for="cols_fromto"><roundcube:label name="fromto" /></label></li>
-    <li><input type="checkbox" name="list_col[]" value="replyto" id="cols_replyto" /><label for="cols_replyto"><roundcube:label name="replyto" /></label></li>
-    <li><input type="checkbox" name="list_col[]" value="cc" id="cols_cc" /><label for="cols_cc"><roundcube:label name="cc" /></label></li>
-    <li><input type="checkbox" name="list_col[]" value="date" id="cols_date" /><label for="cols_date"><roundcube:label name="date" /></label></li>
-    <li><input type="checkbox" name="list_col[]" value="size" id="cols_size" /><label for="cols_size"><roundcube:label name="size" /></label></li>
-    <li><input type="checkbox" name="list_col[]" value="status" id="cols_status" /><label for="cols_status"><roundcube:label name="readstatus" /></label></li>
-    <li><input type="checkbox" name="list_col[]" value="attachment" id="cols_attachment" /><label for="cols_attachment"><roundcube:label name="attachment" /></label></li>
-    <li><input type="checkbox" name="list_col[]" value="flag" id="cols_flag" /><label for="cols_flag"><roundcube:label name="flag" /></label></li>
-    <li><input type="checkbox" name="list_col[]" value="priority" id="cols_priority" /><label for="cols_priority"><roundcube:label name="priority" /></label></li>
-  </ul>
-</fieldset>
-<roundcube:endif />
-<roundcube:if condition="!in_array('message_sort_col', (array)config:dont_override)" />
-<fieldset class="thinbordered"><legend><roundcube:label name="listsorting" /></legend>
-  <ul class="toolbarmenu">
-    <li><input type="radio" name="sort_col" value="" id="sort_default" /><label for="sort_default"><roundcube:label name="nonesort" /></label></li>
-    <li><input type="radio" name="sort_col" value="arrival" id="sort_arrival" /><label for="sort_arrival"><roundcube:label name="arrival" /></label></li>
-    <li><input type="radio" name="sort_col" value="date" id="sort_date" /><label for="sort_date"><roundcube:label name="sentdate" /></label></li>
-    <li><input type="radio" name="sort_col" value="subject" id="sort_subject" /><label for="sort_subject"><roundcube:label name="subject" /></label></li>
-    <li><input type="radio" name="sort_col" value="from" id="sort_fromto" /><label for="sort_fromto"><roundcube:label name="fromto" /></label></li>
-    <li><input type="radio" name="sort_col" value="to" id="sort_replyto" /><label for="sort_replyto"><roundcube:label name="replyto" /></label></li>
-    <li><input type="radio" name="sort_col" value="cc" id="sort_cc" /><label for="sort_cc"><roundcube:label name="cc" /></label></li>
-    <li><input type="radio" name="sort_col" value="size" id="sort_size" /><label for="sort_size"><roundcube:label name="size" /></label></li>
-  </ul>
-</fieldset>
-<roundcube:endif />
-<roundcube:if condition="!in_array('message_sort_order', (array)config:dont_override)" />
-<fieldset><legend><roundcube:label name="listorder" /></legend> 
-         <ul class="toolbarmenu"> 
-           <li><input type="radio" name="sort_ord" value="ASC" id="sort_asc" /><label for="sort_asc"><roundcube:label name="asc" /></label></li> 
-           <li><input type="radio" name="sort_ord" value="DESC" id="sort_desc" /><label for="sort_desc"><roundcube:label name="desc" /></label></li> 
-         </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>
-
-</body>
-</html>
diff --git a/skins/default/templates/message.html b/skins/default/templates/message.html
deleted file mode 100644 (file)
index 714540b..0000000
+++ /dev/null
@@ -1,70 +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><roundcube:object name="pagetitle" /></title>
-<roundcube:include file="/includes/links.html" />
-<script type="text/javascript" src="/splitter.js"></script>
-<script type="text/javascript" src="/functions.js"></script>
-<style type="text/css">
-#mailboxlist-container { width: <roundcube:exp expression="!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv-5 : 170" />px; }
-#messageframe { left: <roundcube:exp expression="!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv+5 : 180" />px;
-<roundcube:exp expression="browser:ie ? ('width: expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv+5 : 180).')+\\'px\\');') : ''" />
-}
-</style>
-</head>
-<body onload="rcube_init_mail_ui()">
-
-<roundcube:include file="/includes/taskbar.html" />
-<roundcube:include file="/includes/header.html" />
-<roundcube:include file="/includes/messagetoolbar.html" />
-
-<div id="mainscreen">
-<div id="mailleftcontainer">
-<div id="mailboxlist-container">
-<div id="mailboxlist-title" class="boxtitle"><roundcube:label name="mailboxlist" /></div>
-<div class="boxlistcontent">
-<roundcube:object name="mailboxlist" id="mailboxlist" maxlength="25" />
-</div>
-<div class="boxfooter">
-  <roundcube:button name="mailboxmenulink" id="mailboxmenulink" type="link" title="folderactions" class="button groupactions" onclick="rcmail_ui.show_popup('mailboxmenu');return false" content=" " />
-</div>
-</div>
-</div>
-
-<div id="messageframe">
-<div class="boxlistcontent" style="top:0; overflow-x:auto">
-<roundcube:object name="messageHeaders" class="headers-table" cellspacing="0" cellpadding="2" addicon="/images/icons/silhouette.png" summary="Message headers" />
-<roundcube:object name="messageFullHeaders" id="full-headers" />
-<roundcube:object name="messageAttachments" id="attachment-list" />
-<roundcube:object name="messageObjects" id="message-objects" />
-<roundcube:object name="messageBody" id="messagebody" />
-</div>
-<div class="boxfooter">
-<div id="countcontrols" class="pagenav">
-  <roundcube:button command="lastmessage" type="link" class="buttonPas lastpage" classAct="button lastpage" classSel="button lastpageSel" title="lastmessage" content=" " />
-  <roundcube:button command="nextmessage" type="link" class="buttonPas nextpage" classAct="button nextpage" classSel="button nextpageSel" title="nextmessage" content=" " />
-  <roundcube:object name="messageCountDisplay" style="padding:0 .5em; float:right" />
-  <roundcube:button command="previousmessage" type="link" class="buttonPas prevpage" classAct="button prevpage" classSel="button prevpageSel" title="previousmessage" content=" " />
-  <roundcube:button command="firstmessage" type="link" class="buttonPas firstpage" classAct="button firstpage" classSel="button firstpageSel" title="firstmessage" content=" " />
-</div>
-</div>
-</div>
-
-</div>
-
-<script type="text/javascript">
-    var mailviewsplitv = new rcube_splitter({id:'mailviewsplitterv', p1: 'mailboxlist-container', p2: 'messageframe', orientation: 'v', relative: true, start: 165});
-    rcmail.add_onload('mailviewsplitv.init()');
-</script>
-
-<div id="mailboxoptionsmenu" class="popupmenu">
-  <ul>
-    <li><roundcube:button command="expunge" type="link" label="compact" classAct="active" /></li>
-    <li class="separator_below"><roundcube:button command="purge" type="link" label="empty" classAct="active" /></li>
-    <li><roundcube:button command="folders" task="settings" type="link" label="managefolders" classAct="active" /></li>
-    <roundcube:container name="mailboxoptions" id="mailboxoptionsmenu" />
-  </ul>
-</div>
-
-</body>
-</html>
diff --git a/skins/default/templates/messageerror.html b/skins/default/templates/messageerror.html
deleted file mode 100644 (file)
index 9af45f4..0000000
+++ /dev/null
@@ -1,78 +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><roundcube:object name='productname' /> :: <roundcube:label name='servererror' /></title>
-<roundcube:include file="/includes/links.html" />
-
-<roundcube:if condition="env:action!='show'" />
-
-</head>
-<body class="iframe" style="background-color:#F2F2F2;">
-
-<div style="margin:20px auto; text-align:center">
-<img src="/images/watermark.gif" width="260" height="228" alt="" />
-</div>
-
-</body>
-
-<roundcube:else />
-
-<script type="text/javascript" src="/splitter.js"></script>
-<script type="text/javascript" src="/functions.js"></script>
-<style type="text/css">
-#mailboxlist-container { width: <roundcube:exp expression="!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv-5 : 170" />px; }
-#messageframe { left: <roundcube:exp expression="!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv+5 : 180" />px;
-<roundcube:exp expression="browser:ie ? ('width: expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv+5 : 180).')+\\'px\\');') : ''" />
-}
-</style>
-</head>
-
-<body onload="rcube_init_mail_ui()">
-
-<roundcube:include file="/includes/taskbar.html" />
-<roundcube:include file="/includes/header.html" />
-
-<div id="messagetoolbar">
-<roundcube:button command="list" type="link" class="button back" classAct="button back" classSel="button backSel" title="backtolist" content=" " />
-<roundcube:button command="compose" type="link" class="button compose" classAct="button compose" classSel="button composeSel" title="writenewmessage" content=" " />
-</div>
-
-<div id="mainscreen">
-<div id="mailleftcontainer">
-<div id="mailboxlist-container">
-<div class="boxtitle"><roundcube:label name="mailboxlist" /></div>
-<div class="boxlistcontent">
-<roundcube:object name="mailboxlist" id="mailboxlist" folder_filter="mail" />
-</div>
-<div class="boxfooter">
-  <roundcube:button name="mailboxmenulink" id="mailboxmenulink" type="link" title="folderactions" class="button groupactions" onclick="rcmail_ui.show_popup('mailboxmenu');return false" content=" " />
-</div>
-</div>
-</div>
-
-<div id="messageframe" style="background-color:#F2F2F2;">
-<div style="margin:20px auto; text-align:center">
-<img src="/images/watermark.gif" width="260" height="228" alt="" />
-</div>
-</div>
-
-</div>
-
-<script type="text/javascript">
-    var mailviewsplitv = new rcube_splitter({id:'mailviewsplitterv', p1: 'mailboxlist-container', p2: 'messageframe', orientation: 'v', relative: true, start: 165});
-    rcmail.add_onload('mailviewsplitv.init()');
-</script>
-
-<div id="mailboxoptionsmenu" class="popupmenu">
-  <ul>
-    <li><roundcube:button command="expunge" type="link" label="compact" classAct="active" /></li>
-    <li class="separator_below"><roundcube:button command="purge" type="link" label="empty" classAct="active" /></li>
-    <li><roundcube:button command="folders" task="settings" type="link" label="managefolders" classAct="active" /></li>
-    <roundcube:container name="mailboxoptions" id="mailboxoptionsmenu" />
-  </ul>
-</div>
-
-</body>
-<roundcube:endif />
-
-</html>
diff --git a/skins/default/templates/messagepart.html b/skins/default/templates/messagepart.html
deleted file mode 100644 (file)
index ce7dbe2..0000000
+++ /dev/null
@@ -1,25 +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><roundcube:object name="pagetitle" /></title>
-<roundcube:include file="/includes/links.html" />
-</head>
-<body class="extwin">
-
-<roundcube:include file="/includes/header.html" />
-
-<div id="partheader">
-<roundcube:object name="messagePartControls" cellpadding="2" cellspacing="0" />
-
-<div style="position:absolute; top:2px; right:0; width:12em; text-align:right">
-  [<a href="#close" class="closelink" onclick="self.close()"><roundcube:label name="close" /></a>]
-</div>
-</div>
-
-
-<div id="messagepartcontainer">
-<roundcube:object name="messagePartFrame" id="messagepartframe" width="100%" height="100%" />
-</div>
-
-</body>
-</html>
diff --git a/skins/default/templates/messagepreview.html b/skins/default/templates/messagepreview.html
deleted file mode 100644 (file)
index a606311..0000000
+++ /dev/null
@@ -1,20 +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><roundcube:object name="pagetitle" /></title>
-<roundcube:include file="/includes/links.html" />
-</head>
-<body class="iframe">
-
-<div class="messageheaderbox">
-<roundcube:button command="permaurl" image="/images/icons/extwin.png" width="15" height="15" title="openinextwin" id="messageviewlink" target="_blank" />
-<roundcube:object name="messageHeaders" class="headers-table" cellspacing="0" cellpadding="2" addicon="/images/icons/silhouette.png" summary="Message headers" />
-<roundcube:object name="messageFullHeaders" id="full-headers" />
-<roundcube:object name="messageAttachments" id="attachment-list" />
-</div>
-
-<roundcube:object name="messageObjects" id="message-objects" />
-<roundcube:object name="messageBody" id="messagebody" />
-
-</body>
-</html>
diff --git a/skins/default/templates/messageprint.html b/skins/default/templates/messageprint.html
deleted file mode 100644 (file)
index 3102239..0000000
+++ /dev/null
@@ -1,19 +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><roundcube:object name="pagetitle" /></title>
-<link rel="shortcut icon" href="/images/favicon.ico"/>
-<link rel="stylesheet" type="text/css" href="/print.css" />
-</head>
-<body>
-
-<div id="header"><roundcube:object name="logo" src="/images/roundcube_logo.png" id="logo" border="0" alt="Logo" /></div>
-
-<div id="printmessageframe">
-<roundcube:object name="messageHeaders" class="headers-table" cellspacing="0" cellpadding="2" />
-<roundcube:object name="messageAttachments" id="attachment-list" />
-<roundcube:object name="messageBody" id="messagebody" showImages="false" />
-</div>
-
-</body>
-</html>
diff --git a/skins/default/templates/plugin.html b/skins/default/templates/plugin.html
deleted file mode 100644 (file)
index cec7013..0000000
+++ /dev/null
@@ -1,23 +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><roundcube:object name="pagetitle" /></title>
-<roundcube:include file="/includes/links.html" />
-<script type="text/javascript" src="/functions.js"></script>
-</head>
-<body>
-
-<roundcube:include file="/includes/taskbar.html" />
-<roundcube:include file="/includes/header.html" />
-<roundcube:if condition="env:task == 'settings'" />
-  <roundcube:include file="/includes/settingstabs.html" />
-<roundcube:endif />
-
-<div id="mainscreen">
-<roundcube:object name="plugin.body" />
-</div>
-  
-<roundcube:object name="plugin.footer" />
-
-</body>
-</html>
diff --git a/skins/default/templates/settings.html b/skins/default/templates/settings.html
deleted file mode 100644 (file)
index 0cd623f..0000000
+++ /dev/null
@@ -1,41 +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><roundcube:object name="pagetitle" /></title>
-<roundcube:include file="/includes/links.html" />
-<script type="text/javascript" src="/functions.js"></script>
-<script type="text/javascript" src="/splitter.js"></script>
-
-<style type="text/css">
-#sectionslist { width: <roundcube:exp expression="!empty(cookie:prefsviewsplitter) ? cookie:prefsviewsplitter-5 : 190" />px; }
-#prefs-box { left: <roundcube:exp expression="!empty(cookie:prefsviewsplitter) ? cookie:prefsviewsplitter+5 : 200" />px;
-<roundcube:exp expression="browser:ie ? ('width:expression((parseInt(this.parentNode.offsetWidth)-'.(!empty(cookie:prefsviewsplitter) ? cookie:prefsviewsplitter+5 : 200).')+\\'px\\');') : ''" />
-}
-</style>
-
-</head>
-<body>
-
-<roundcube:include file="/includes/taskbar.html" />
-<roundcube:include file="/includes/header.html" />
-<roundcube:include file="/includes/settingstabs.html" />
-
-<div id="mainscreen">
-
-<div id="sectionslist">
-<roundcube:object name="sectionslist" id="sections-table" class="records-table" cellspacing="0" />
-</div>
-
-<script type="text/javascript">
-  var prefviewsplit = new rcube_splitter({id:'prefsviewsplitter', p1: 'sectionslist', p2: 'prefs-box', orientation: 'v', relative: true, start: 195});
-  rcmail.add_onload('prefviewsplit.init()');
-</script>
-
-<div id="prefs-box">
-<roundcube:object name="prefsframe" id="prefs-frame" width="100%" height="100%" frameborder="0" src="/watermark.html" />
-</div>
-
-</div>
-
-</body>
-</html>
diff --git a/skins/default/templates/settingsedit.html b/skins/default/templates/settingsedit.html
deleted file mode 100644 (file)
index ec980a8..0000000
+++ /dev/null
@@ -1,23 +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><roundcube:object name="pagetitle" /></title>
-<roundcube:include file="/includes/links.html" />
-<script type="text/javascript" src="/functions.js"></script>
-</head>
-<body class="iframe">
-
-<div id="prefs-title" class="boxtitle"><roundcube:object name="sectionname" /></div>
-
-<div id="prefs-details" class="boxcontent">
-<roundcube:object name="userprefs" form="form" />
-</div>
-
-<div id="formfooter">
-<div class="footerleft">
-<roundcube:button command="save" type="input" class="button mainaction" label="save" />
-</div>
-</div>
-
-</body>
-</html>
diff --git a/skins/default/watermark.html b/skins/default/watermark.html
deleted file mode 100644 (file)
index c16a503..0000000
+++ /dev/null
@@ -1,19 +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></title>
-  <!--[if IE]>
-  <style type="text/css">
-    body { width: expression((parseInt(document.documentElement.clientWidth)-20)+'px'); }
-  </style>
-  <![endif]-->
-</head>
-
-<body style="background-color:#F2F2F2;">
-
-<div style="margin:20px auto; text-align:center">
-<img src="images/watermark.gif" width="260" height="228" alt="" />
-</div>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/skins/larry/README b/skins/larry/README
new file mode 100644 (file)
index 0000000..cd4a736
--- /dev/null
@@ -0,0 +1,22 @@
+Roundcube Webmail Skin "Larry"
+==============================
+
+This skin package contains the default theme of the Roundcube Webmail
+software. It can be used, modified and redistributed according to
+the terms described in the LICENSE section.
+
+For information about building or modifiying Roundcube skins please visit
+http://trac.roundcube.net/wiki/Doc_Skins
+
+Screendesign by FLINT / Büro für Gestaltung, Bern, Switzerland
+http://bueroflint.com
+
+
+LICENSE
+-------
+The contents of this folder are subject to the Creative Commons
+Attribution-ShareAlike License. It is allowed to copy, distribute,
+transmit and to adapt the work by keeping credits to the original
+autors in the README file.
+See http://creativecommons.org/licenses/by-sa/3.0/ for details.
+
diff --git a/skins/larry/addressbook.css b/skins/larry/addressbook.css
new file mode 100644 (file)
index 0000000..70f07e4
--- /dev/null
@@ -0,0 +1,299 @@
+/**
+ * Roundcube webmail styles for the Address Book section
+ *
+ * Copyright (c) 2012, The Roundcube Dev Team
+ * Screendesign by FLINT / Büro für Gestaltung, bueroflint.com
+ *
+ * The contents are subject to the Creative Commons Attribution-ShareAlike
+ * License. It is allowed to copy, distribute, transmit and to adapt the work
+ * by keeping credits to the original autors in the README file.
+ * See http://creativecommons.org/licenses/by-sa/3.0/ for details.
+ *
+ * $Id$
+ */
+
+#addressview-left {
+       position: absolute;
+       top: 0;
+       left: 0;
+       width: 220px;
+       bottom: 0;
+       z-index: 2;
+}
+
+#addressview-right {
+       position: absolute;
+       top: 0;
+       left: 232px;
+       right: 0;
+       bottom: 0;
+       z-index: 3;
+}
+
+#addressbooktoolbar {
+       position: absolute;
+       top: -6px;
+       left: 0;
+       right: 260px;
+       height: 40px;
+       white-space: nowrap;
+       z-index: 10;
+}
+
+#directorylistbox {
+       position: absolute;
+       top: 42px;
+       left: 0;
+       width: 100%;
+       bottom: 0;
+}
+
+#addresslist {
+       position: absolute;
+       top: 42px;
+       left: 0;
+       width: 280px;
+       bottom: 0;
+}
+
+#contacts-box {
+       position: absolute;
+       top: 42px;
+       left: 292px;
+       right: 0;
+       bottom: 0;
+}
+
+#addressview-left #quicksearchbar input {
+       width: 156px;
+}
+
+#directorylist li a,
+#contacts-table .contact td.name {
+       background-image: url(images/listicons.png);
+       background-position: -100px 0;
+       background-repeat: no-repeat;
+       overflow: hidden;
+       padding-left: 36px;
+       text-overflow: ellipsis;
+}
+
+#contacts-table .contact.readonly td {
+       font-style: italic;
+}
+
+#directorylist li.addressbook a {
+       background-position: 6px -766px;
+}
+
+#directorylist li.addressbook.selected a {
+       background-position: 6px -791px;
+}
+
+#directorylist li.contactgroup a {
+       padding-left: 62px;
+       background-position: 32px -1555px;
+}
+
+#directorylist li.contactgroup.selected a {
+       background-position: 32px -1579px;
+}
+
+#directorylist li.contactgroup input {
+       margin-left: 36px;
+}
+
+#directorylist li.contactsearch a {
+       background-position: 6px -1651px;
+}
+
+#directorylist li.contactsearch.selected a {
+       background-position: 6px -1675px;
+}
+
+#directorylist li.contactsearch input {
+       margin-left: 8px;
+}
+
+#contacts-table .contact td.name {
+       background-position: 6px -1603px;
+}
+
+#contacts-table .contact.selected td.name,
+#contacts-table .contact.unfocused td.name {
+       background-position: 6px -1627px;
+       font-weight: bold;
+}
+
+#contact-frame {
+       position: absolute;
+       top: 0;
+       left: 0;
+       right: 0;
+       bottom: 28px;
+       border: 0;
+       border-radius: 4px;
+}
+
+#headerbuttons {
+       position: absolute;
+       top: 48px;
+       right: 10px;
+       width: auto;
+       z-index: 10;
+}
+
+#sourcename {
+       color: #999;
+       font-size: 10px;
+       margin: -5px 0 8px 2px;
+}
+
+#contactphoto {
+       float: left;
+       margin: 0 18px 20px 0;
+       width: 112px;
+}
+
+#contactpic {
+       width: 112px;
+       min-height: 112px;
+       background: white;
+}
+
+#contactpic img {
+       width: 112px;
+}
+
+#contacthead {
+       border: 0;
+       margin: 0 16em 1em 0;
+       padding: 0;
+       line-height: 1.5em;
+       font-size: 12px;
+}
+
+form #contacthead {
+       margin-right: 0;
+}
+
+#contacthead .names span.namefield,
+#contacthead .names input {
+       font-size: 140%;
+       font-weight: bold;
+}
+
+#contacthead .displayname span.namefield {
+       font-size: 120%;
+       font-weight: bold;
+}
+
+#contacthead span.nickname:before,
+#contacthead span.nickname:after {
+       content: '"';
+}
+
+#contacthead input {
+       margin-right: 6px;
+       margin-bottom: 0.2em;
+}
+
+#contacthead .names input,
+#contacthead .addnames input {
+       width: 180px;
+}
+
+#contacthead input.ff_prefix,
+#contacthead input.ff_suffix {
+       width: 90px;
+}
+
+.contactfieldgroup {
+       border: 0;
+       border-radius: 5px;
+       background: #f7f7f7;
+       background: -moz-linear-gradient(top, #f7f7f7 0%, #eee 100%);
+       background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f7f7f7), color-stop(100%,#eee));
+       background: -o-linear-gradient(top, #f7f7f7 0%, #eee 100%);
+       background: -ms-linear-gradient(top, #f7f7f7 0%, #eee 100%);
+       background: linear-gradient(top, #f7f7f7 0%, #eee 100%);
+       margin: 0 0 12px 0;
+       padding: 8px;
+}
+
+.contactfieldgroup legend {
+       display: block;
+       margin: 0 -8px;
+       width: 100%;
+       font-weight: bold;
+       text-shadow: 0px 1px 1px #fff;
+       padding: 6px 8px 3px 8px;
+       background: #f0f0f0;
+       background: -moz-linear-gradient(top, #f0f0f0 0%, #d6d6d6 100%);
+       background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f0f0f0), color-stop(100%,#d6d6d6));
+       background: -o-linear-gradient(top, #f0f0f0 0%, #d6d6d6 100%);
+       background: -ms-linear-gradient(top, #f0f0f0 0%, #d6d6d6 100%);
+       background: linear-gradient(top, #f0f0f0 0%, #d6d6d6 100%);
+       border-bottom: 1px solid #cfcfcf;
+       border-radius: 5px 5px 0 0;
+}
+
+.contactfieldgroup .row {
+       position: relative;
+       margin: 0.2em 0;
+}
+
+.contactfieldgroup .contactfieldlabel {
+       position: absolute;
+       top: 0;
+       left: 2px;
+       width: 110px;
+       white-space: nowrap;
+       overflow: hidden;
+       text-overflow: ellipsis;
+       color: #666;
+}
+
+.contactfieldgroup .contactfieldlabel select {
+       width: 100%;
+       color: #666;
+}
+
+.contactfieldgroup .contactfieldcontent {
+       padding-left: 120px;
+       min-height: 1em;
+       line-height: 1.3em;
+}
+
+.contactfieldgroup .contactfield {
+       line-height: 1.3em;
+}
+
+.contactcontrolleraddress .contactfieldcontent input {
+       margin-bottom: 0.1em;
+}
+
+.contactfieldcontent.composite {
+       padding-bottom: 8px;
+}
+
+.contactfieldcontent .contactfieldbutton {
+       vertical-align: middle;
+       margin-left: 0.5em;
+}
+
+.contactfield .ff_notes {
+       width: 99%;
+}
+
+a.deletebutton {
+       position: relative;
+       left: 5px;
+       top: -3px;
+       display: inline-block;
+       width: 24px;
+       height: 18px;
+       text-decoration: none;
+       text-indent: -5000px;
+       background: url(images/buttons.png) -7px -377px no-repeat;
+}
diff --git a/skins/larry/editor_content.css b/skins/larry/editor_content.css
new file mode 100644 (file)
index 0000000..aabed07
--- /dev/null
@@ -0,0 +1,31 @@
+/* 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/googiespell.css b/skins/larry/googiespell.css
new file mode 100644 (file)
index 0000000..d2f1cea
--- /dev/null
@@ -0,0 +1,97 @@
+/***** modified styles for GoogieSpell *****/
+
+.googie_window {
+  font-size: 11px;
+  width: 185px;
+  margin: 0;
+  padding: 0;
+}
+
+.googie_edit_layer {
+       position: relative;
+       top: 1px;
+       left: 1px;
+  padding: 8px;
+  font-size: 9pt;
+  font-family: monospace;
+  background-color: #fff;
+  border: 0;
+}
+
+.googie_edit_layer span {
+  font-family: monospace;
+}
+
+.googie_list {
+  width: 100%;
+  margin: 0;
+  padding: 0;
+       border-spacing: 0;
+}
+
+.googie_list td {
+  min-width: 80px;
+  width: auto;
+}
+
+.googie_list td.googie_list_selected {
+  background: #4db0d2;
+}
+
+.googie_list_close {
+  font-size: 11px;
+  color: #b91414;
+}
+
+.googie_list_onhover .googie_list_close {
+  color: #fff;
+}
+
+.googie_list_revert {
+  font-size: 11px;
+  color: #b91414;
+}
+
+.googie_list_revert:hover {
+  color: #fff;
+}
+
+.googie_link {
+  color: #b91414;
+  text-decoration: underline;
+  cursor: pointer;
+  font-size: 9pt;
+  font-family: monospace;
+}
+
+.googie_check_spelling_link {
+  color: #0069A6;
+  font-size: 11px;
+  text-decoration: underline;
+  cursor: pointer;
+}
+
+.googie_no_style {
+  text-decoration: none;
+}
+
+.googie_check_spelling_ok,
+.googie_resume_editing {
+  color: green;
+  font-size: 11px;
+  cursor: pointer;
+  text-decoration: underline;
+}
+
+.googie_check_spelling_ok:hover,
+.googie_resume_editing:hover {
+  text-decoration: underline;
+}
+
+.googie_lang_3d_click img,
+.googie_lang_3d_on img {
+  vertical-align: middle;
+  cursor: pointer;
+  border: 0;
+}
+
diff --git a/skins/larry/ie7hacks.css b/skins/larry/ie7hacks.css
new file mode 100644 (file)
index 0000000..893ffdf
--- /dev/null
@@ -0,0 +1,189 @@
+/**
+ * Roundcube webmail CSS hacks for IE 7
+ *
+ * Copyright (c) 2012, The Roundcube Dev Team
+ *
+ * The contents are subject to the Creative Commons Attribution-ShareAlike
+ * License. It is allowed to copy, distribute, transmit and to adapt the work
+ * by keeping credits to the original autors in the README file.
+ * See http://creativecommons.org/licenses/by-sa/3.0/ for details.
+ */
+
+/* #1488618 */
+#mainscreen {
+  height: expression((parseInt(document.documentElement.clientHeight)-108)+'px');
+}
+#mainscreen.offset {
+  height: expression((parseInt(document.documentElement.clientHeight)-150)+'px');
+}
+
+input.button {
+       display: inline;
+       font-size: 90%;
+}
+
+a.iconbutton,
+a.deletebutton,
+.boxpagenav a.icon,
+.pagenav a.button span.inner,
+.boxfooter .listbutton .inner,
+.attachmentslist li a.delete,
+.attachmentslist li a.cancelupload,
+.previewheader .iconlink {
+       /* workaround for text-indent which also offsets the background image */
+       text-indent: 0;
+       font-size: 0;
+       line-height: 0;
+       overflow: hidden;
+       text-align: right;
+       text-decoration: none;
+}
+
+.boxpagenav a.icon {
+       color: #bbd3da;
+}
+
+.pagenav a.button,
+.pagenav a.button span.inner,
+.previewheader .iconlink,
+#uploadform a.iconlink {
+       display: inline;
+}
+
+.pagenavbuttons {
+       top: 4px;
+}
+
+.dropbutton .dropbuttontip {
+       right: -2px;
+}
+
+#login-form .box-inner form {
+       margin: 0;
+}
+
+#login-form #message div {
+       float: left;
+       display: block;
+       width: 200px;
+       margin-left: 130px;
+       white-space: nowrap;
+       text-align: left;
+}
+
+#messageheader.previewheader .iconlink {
+       color: #fff;
+       height: 14px;
+}
+
+#uploadform a.iconlink {
+       text-indent: 0px;
+}
+
+.boxfooter .countdisplay {
+       top: -12px;
+}
+
+ul.toolbarmenu li a {
+       width: 140px;
+}
+
+#threadselectmenu li a {
+       width: 160px;
+}
+
+#messagemenu li a {
+       width: 170px;
+}
+
+#rcmKSearchpane {
+       width: 400px;
+}
+#rcmKSearchpane ul li {
+       width: 380px;
+       text-overflow: ellipsis;
+}
+
+
+table.listing,
+table.records-table {
+       display: block;
+       width: auto;
+       border-collapse: expression('separate', cellSpacing = '0');
+}
+
+.records-table tbody td span {
+       white-space: nowrap;
+}
+
+table.listing {
+       width: 100%;
+}
+
+ul.toolbarmenu li label {
+       margin: 0;
+       padding: 3px 8px;
+}
+
+#quicksearchbar input {
+       padding-top: 4px;
+       padding-bottom: 2px;
+}
+
+#messagelistfooter #listcontrols,
+#messagelistfooter #listselectors,
+#messagelistfooter #countcontrols,
+.pagenav .countdisplay {
+       display: inline;
+}
+
+#messagelistfooter #countcontrols {
+       position: relative;
+       top: -4px;
+}
+
+#messagecontframe,
+#preferences-frame {
+       position: absolute;
+       left: 0;
+       right: 0;
+       top: 0;
+       bottom: 0;
+}
+
+#composeoptionsbox {
+       padding-top: 2px;
+}
+
+#composeoptionstoggle {
+       display: inline;
+       top: 3px;
+}
+
+.propform {
+       margin: 0;
+}
+
+.propform fieldset legend {
+       color: #333;
+       margin-left: -5px;
+       padding-left: 0;
+}
+
+.contactfieldgroup legend {
+       margin-left: -14px;
+}
+
+.contactfieldcontent .contactfieldbutton {
+       top: -6px;
+}
+
+.tabsbar {
+       height: 15px;
+       padding-bottom: 15px;
+}
+
+.tabsbar .tablink {
+       padding: 0 1px 0 0;
+}
+
diff --git a/skins/larry/iehacks.css b/skins/larry/iehacks.css
new file mode 100644 (file)
index 0000000..93f483c
--- /dev/null
@@ -0,0 +1,161 @@
+/**
+ * Roundcube webmail CSS hacks for IE < 9
+ *
+ * Copyright (c) 2012, The Roundcube Dev Team
+ *
+ * The contents are subject to the Creative Commons Attribution-ShareAlike
+ * License. It is allowed to copy, distribute, transmit and to adapt the work
+ * by keeping credits to the original autors in the README file.
+ * See http://creativecommons.org/licenses/by-sa/3.0/ for details.
+ *
+ * $Id$
+ */
+
+input.button {
+       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#e6e6e6', GradientType=0);
+}
+
+.formbuttons input.button {
+       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7b7b7b', endColorstr='#606060', GradientType=0);
+}
+
+.formbuttons input.button:active {
+       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5c5c5c', endColorstr='#7b7b7b', GradientType=0);
+}
+
+input.button.mainaction {
+       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#505050', endColorstr='#2a2e31', GradientType=0);
+}
+
+input.button.mainaction:active {
+       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#2a2e31', endColorstr='#505050', GradientType=0);
+}
+
+a.button {
+       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#e6e6e6', GradientType=0);
+}
+
+a.button.pressed,
+a.button:active,
+input.button:active {
+       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e6e6e6', endColorstr='#f9f9f9', GradientType=0);
+}
+
+.pagenav.dark a.button {
+       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#d8d8d8', endColorstr='#bababa', GradientType=0);
+}
+
+.pagenav.dark a.button.pressed {
+       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bababa', endColorstr='#d8d8d8', GradientType=0);
+}
+
+#message.statusbar {
+       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eaeaea', endColorstr='#c8c8c8', GradientType=0);
+}
+
+.ui-dialog.popupmessage .ui-dialog-titlebar {
+       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e3e3e3', endColorstr='#cfcfcf', GradientType=0);
+}
+
+.ui-dialog.popupmessage .ui-widget-content {
+       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#dcdcdc', GradientType=0);
+}
+
+#topnav {
+       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#404040', endColorstr='#060606', GradientType=0);
+}
+
+.records-table tr.selected td {
+       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#019bc6', endColorstr='#017cb4', GradientType=0);
+}
+
+.contentbox .boxtitle,
+body.iframe .boxtitle {
+       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#dfdfdf', GradientType=0);
+}
+
+#login-form input.button {
+       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#e2e2e2', GradientType=0);
+}
+
+#login-form input.button:active {
+       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#dcdcdc', endColorstr='#f9f9f9', GradientType=0);
+}
+
+.toolbar a.button {
+       filter: none;
+}
+
+a.menuselector {
+       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f8f8f8', endColorstr='#dddddd', GradientType=0);
+}
+
+a.menuselector:active {
+       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#dddddd', endColorstr='#f8f8f8', GradientType=0);
+}
+
+.googie_list td.googie_list_onhover,
+ul.toolbarmenu li a.active:hover,
+#rcmKSearchpane ul li.selected {
+       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00aad6', endColorstr='#008fc9', GradientType=0);
+}
+
+.tabsbar .tablink {
+       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f8f8f8', endColorstr='#d3d3d3 50%, #f8f8f8', GradientType=0);
+}
+
+.tabsbar .selected a {
+       background-color: #fff;
+       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#efefef', GradientType=0);
+}
+
+.toolbar a.button.disabled,
+.boxpagenav a.icon.disabled,
+.pagenav a.button.disabled span.inner,
+.boxfooter .listbutton.disabled .inner,
+.dropbutton a.button.disabled + .dropbuttontip {
+       background-image: url(images/buttons.gif);
+}
+
+/*** addressbook.css ***/
+
+.contactfieldgroup {
+       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f7f7f7', endColorstr='#eeeeee', GradientType=0);
+}
+
+.contactfieldgroup legend {
+       margin: -8px -8px 8px -8px;
+       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f0f0f0', endColorstr='#d6d6d6', GradientType=0);
+}
+
+
+/*** mail.css ***/
+
+#messagelistfooter {
+       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb', endColorstr='#c6c6c6', GradientType=0);
+}
+
+#mailboxlist li.mailbox .unreadcount {
+       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#82acb5', endColorstr='#6a939f', GradientType=0);
+}
+
+#mailboxlist li.mailbox.selected > a .unreadcount {
+       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#005d76', endColorstr='#004558', GradientType=0);
+}
+
+#messageheader, #partheader, #composeheaders {
+       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f0f0f0', GradientType=0);
+}
+
+#previewheaderstoggle {
+       filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbfbfb', endColorstr='#e9e9e9', GradientType=1);
+}
+
+#composeoptionsbox {
+       border-top: 1px solid #999;
+}
+
+#messagelist tbody tr td span.branch div {
+       float: left;
+       height: 18px;
+}
diff --git a/skins/larry/images/addcontact.png b/skins/larry/images/addcontact.png
new file mode 100644 (file)
index 0000000..1d9c0a1
Binary files /dev/null and b/skins/larry/images/addcontact.png differ
diff --git a/skins/larry/images/ajaxloader.gif b/skins/larry/images/ajaxloader.gif
new file mode 100644 (file)
index 0000000..ea0b346
Binary files /dev/null and b/skins/larry/images/ajaxloader.gif differ
diff --git a/skins/larry/images/buttons.gif b/skins/larry/images/buttons.gif
new file mode 100644 (file)
index 0000000..9ae334b
Binary files /dev/null and b/skins/larry/images/buttons.gif differ
diff --git a/skins/larry/images/buttons.png b/skins/larry/images/buttons.png
new file mode 100644 (file)
index 0000000..0d3b5cc
Binary files /dev/null and b/skins/larry/images/buttons.png differ
diff --git a/skins/larry/images/contactpic.png b/skins/larry/images/contactpic.png
new file mode 100644 (file)
index 0000000..b4719f8
Binary files /dev/null and b/skins/larry/images/contactpic.png differ
diff --git a/skins/larry/images/favicon.ico b/skins/larry/images/favicon.ico
new file mode 100644 (file)
index 0000000..b3bd18c
Binary files /dev/null and b/skins/larry/images/favicon.ico differ
diff --git a/skins/larry/images/filetypes.png b/skins/larry/images/filetypes.png
new file mode 100644 (file)
index 0000000..ad5d65f
Binary files /dev/null and b/skins/larry/images/filetypes.png differ
diff --git a/skins/larry/images/googiespell/change_lang.gif b/skins/larry/images/googiespell/change_lang.gif
new file mode 100644 (file)
index 0000000..8145183
Binary files /dev/null and b/skins/larry/images/googiespell/change_lang.gif differ
diff --git a/skins/larry/images/googiespell/indicator.gif b/skins/larry/images/googiespell/indicator.gif
new file mode 100644 (file)
index 0000000..b556bb0
Binary files /dev/null and b/skins/larry/images/googiespell/indicator.gif differ
diff --git a/skins/larry/images/googiespell/ok.gif b/skins/larry/images/googiespell/ok.gif
new file mode 100644 (file)
index 0000000..d5a309f
Binary files /dev/null and b/skins/larry/images/googiespell/ok.gif differ
diff --git a/skins/larry/images/googiespell/spellc.gif b/skins/larry/images/googiespell/spellc.gif
new file mode 100644 (file)
index 0000000..6ed9360
Binary files /dev/null and b/skins/larry/images/googiespell/spellc.gif differ
diff --git a/skins/larry/images/linen.jpg b/skins/larry/images/linen.jpg
new file mode 100644 (file)
index 0000000..fa5df61
Binary files /dev/null and b/skins/larry/images/linen.jpg differ
diff --git a/skins/larry/images/linen_header.jpg b/skins/larry/images/linen_header.jpg
new file mode 100644 (file)
index 0000000..040a4e2
Binary files /dev/null and b/skins/larry/images/linen_header.jpg differ
diff --git a/skins/larry/images/linen_login.jpg b/skins/larry/images/linen_login.jpg
new file mode 100644 (file)
index 0000000..46a15ab
Binary files /dev/null and b/skins/larry/images/linen_login.jpg differ
diff --git a/skins/larry/images/listicons.png b/skins/larry/images/listicons.png
new file mode 100644 (file)
index 0000000..9554658
Binary files /dev/null and b/skins/larry/images/listicons.png differ
diff --git a/skins/larry/images/login_shadow.png b/skins/larry/images/login_shadow.png
new file mode 100644 (file)
index 0000000..9dbf586
Binary files /dev/null and b/skins/larry/images/login_shadow.png differ
diff --git a/skins/larry/images/messages.png b/skins/larry/images/messages.png
new file mode 100644 (file)
index 0000000..5144a66
Binary files /dev/null and b/skins/larry/images/messages.png differ
diff --git a/skins/larry/images/overflowshadow.png b/skins/larry/images/overflowshadow.png
new file mode 100644 (file)
index 0000000..54dfdaf
Binary files /dev/null and b/skins/larry/images/overflowshadow.png differ
diff --git a/skins/larry/images/quota.png b/skins/larry/images/quota.png
new file mode 100644 (file)
index 0000000..8e09128
Binary files /dev/null and b/skins/larry/images/quota.png differ
diff --git a/skins/larry/images/roundcube_logo.png b/skins/larry/images/roundcube_logo.png
new file mode 100644 (file)
index 0000000..7d576b2
Binary files /dev/null and b/skins/larry/images/roundcube_logo.png differ
diff --git a/skins/larry/images/selector.png b/skins/larry/images/selector.png
new file mode 100644 (file)
index 0000000..560f2a1
Binary files /dev/null and b/skins/larry/images/selector.png differ
diff --git a/skins/larry/images/splitter.png b/skins/larry/images/splitter.png
new file mode 100644 (file)
index 0000000..40ab487
Binary files /dev/null and b/skins/larry/images/splitter.png differ
diff --git a/skins/larry/images/watermark.jpg b/skins/larry/images/watermark.jpg
new file mode 100644 (file)
index 0000000..c8250bf
Binary files /dev/null and b/skins/larry/images/watermark.jpg differ
diff --git a/skins/larry/includes/footer.html b/skins/larry/includes/footer.html
new file mode 100644 (file)
index 0000000..ee93fcf
--- /dev/null
@@ -0,0 +1,11 @@
+<script type="text/javascript">
+
+// UI startup
+var UI = new rcube_mail_ui();
+$(document).ready(function(){
+       UI.set('errortitle', '<roundcube:label name="errortitle" quoting="javascript" />');
+       UI.init();
+});
+
+</script>
+
diff --git a/skins/larry/includes/header.html b/skins/larry/includes/header.html
new file mode 100644 (file)
index 0000000..b088e4f
--- /dev/null
@@ -0,0 +1,28 @@
+<div id="header">
+<div id="topline">
+       <div class="topleft">
+               <roundcube:button name="about" type="link" label="about" class="about-link" onclick="UI.show_about(this);return false" />
+               <roundcube:if condition="config:support_url" />
+               <a href="<roundcube:var name='config:support_url' />" target="_blank" class="support-link" id="supportlink"><roundcube:label name="support" /></a>
+               <roundcube:endif />
+       </div>
+       <div class="topright">
+       <span class="username"><roundcube:object name="username" /></span>
+       <roundcube:button command="logout" label="logout" class="button-logout" />
+       </div>
+</div>
+
+<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" />
+       </div>
+       <roundcube:object name="logo" src="/images/roundcube_logo.png" id="toplogo" border="0" alt="Logo" />
+</div>
+
+<br style="clear:both" />
+</div>
+
+
diff --git a/skins/larry/includes/links.html b/skins/larry/includes/links.html
new file mode 100644 (file)
index 0000000..8bd8012
--- /dev/null
@@ -0,0 +1,10 @@
+<meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
+<link rel="shortcut icon" href="/images/favicon.ico"/>
+<link rel="stylesheet" type="text/css" href="/styles.css" />
+<roundcube:if condition="in_array(env:task, array('mail','addressbook','settings'))" />
+<link rel="stylesheet" type="text/css" href="/<roundcube:var name="env:task" />.css" />
+<roundcube:endif />
+<!--[if IE 9]><link rel="stylesheet" type="text/css" href="/svggradients.css" /><![endif]-->
+<!--[if lte IE 8]><link rel="stylesheet" type="text/css" href="/iehacks.css" /><![endif]-->
+<!--[if lte IE 7]><link rel="stylesheet" type="text/css" href="/ie7hacks.css" /><![endif]-->
+<script type="text/javascript" src="/ui.js"></script>
\ No newline at end of file
diff --git a/skins/larry/includes/mailtoolbar.html b/skins/larry/includes/mailtoolbar.html
new file mode 100644 (file)
index 0000000..f750e06
--- /dev/null
@@ -0,0 +1,57 @@
+<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>
+</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>
+</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'" />
+<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:if condition="template:name == 'mail'" />
+<roundcube:button name="markmenulink" id="markmessagemenulink" type="link" class="button markmessage" label="mark" title="markmessages" onclick="UI.show_popup('markmessagemenu');return false" />
+<roundcube:endif />
+<roundcube:button name="messagemenulink" id="messagemenulink" type="link" class="button more" label="more" title="moreactions" onclick="UI.show_popup('messagemenu');return false" />
+
+<div id="forwardmenu" class="popupmenu">
+       <ul class="toolbarmenu">
+               <li><roundcube:button command="forward" 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: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>
+               <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" 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="open" label="openinextwin" target="_blank" class="icon" classAct="icon active" innerclass="icon extwin" /></li>
+       <roundcube:container name="messagemenu" id="messagemenu" />
+  </ul>
+</div>
+
+<roundcube:if condition="template:name == 'mail'" />
+<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>
+       <roundcube:container name="markmenu" id="markmessagemenu" />
+  </ul>
+</div>
+<roundcube:endif />
diff --git a/skins/larry/includes/settingstabs.html b/skins/larry/includes/settingstabs.html
new file mode 100644 (file)
index 0000000..bb26fc6
--- /dev/null
@@ -0,0 +1,9 @@
+<div id="settings-sections" class="uibox listbox">
+<h2 class="boxtitle"><roundcube:label name="settings" /></h2>
+<div id="settings-tabs" class="scroller">
+       <span id="settingstabpreferences" class="listitem preferences"><roundcube:button command="preferences" type="link" label="preferences" title="editpreferences" /></span>
+       <span id="settingstabfolders" class="listitem folders"><roundcube:button command="folders" type="link" label="folders" title="managefolders" /></span>
+       <span id="settingstabidentities" class="listitem identities"><roundcube:button command="identities" type="link" label="identities" title="manageidentities" /></span>
+       <roundcube:container name="tabs" id="settings-tabs" />
+</div>
+</div>
diff --git a/skins/larry/mail.css b/skins/larry/mail.css
new file mode 100644 (file)
index 0000000..e5c0ae0
--- /dev/null
@@ -0,0 +1,1292 @@
+/**
+ * Roundcube webmail styles for the Email section
+ *
+ * Copyright (c) 2012, The Roundcube Dev Team
+ * Screendesign by FLINT / Büro für Gestaltung, bueroflint.com
+ *
+ * The contents are subject to the Creative Commons Attribution-ShareAlike
+ * License. It is allowed to copy, distribute, transmit and to adapt the work
+ * by keeping credits to the original autors in the README file.
+ * See http://creativecommons.org/licenses/by-sa/3.0/ for details.
+ *
+ * $Id$
+ */
+
+#mailview-left {
+       position: absolute;
+       top: 0;
+       left: 0;
+       width: 220px;
+       bottom: 0;
+       z-index: 2;
+}
+
+#mailview-right {
+       position: absolute;
+       top: 0;
+       left: 232px;
+       right: 0;
+       bottom: 0;
+       z-index: 3;
+}
+
+#mailview-top {
+       position: absolute;
+       top: 42px;
+       left: 0;
+       width: 100%;
+       bottom: 28px;
+}
+
+#mailview-top.fullheight {
+       border-radius: 4px 4px 0 0;
+}
+
+#mailview-bottom {
+       position: absolute;
+       left: 0;
+       bottom: 0;
+       width: 100%;
+       height: 26px;
+}
+
+#folderlist-header {
+       width: 100%;
+       height: 12px;
+       top: 32px;
+}
+
+#mailboxcontainer,
+#messagelistcontainer {
+       position: absolute;
+       top: 42px;
+       left: 0;
+       width: 100%;
+       bottom: 0;
+}
+
+#messagelistcontainer {
+       top: 0;
+       bottom: 30px;
+       overflow: auto;
+}
+
+#messagelistfooter {
+       position: absolute;
+       bottom: 0;
+       left: 0;
+       right: 0;
+       height: 22px;
+       padding: 4px 8px;
+       border-top: 1px solid #ddd;
+       background: #ebebeb;
+       background: -moz-linear-gradient(top, #ebebeb 0%, #c6c6c6 100%);
+       background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ebebeb), color-stop(100%,#c6c6c6));
+       background: -o-linear-gradient(top, #ebebeb 0%, #c6c6c6 100%);
+       background: -ms-linear-gradient(top, #ebebeb 0%, #c6c6c6 100%);
+       background: linear-gradient(top, #ebebeb 0%, #c6c6c6 100%);
+       border-radius: 0 0 4px 4px;
+}
+
+#mailview-top.fullheight #messagelistfooter {
+       border-radius: 0;
+}
+
+#messagelistfooter.rightalign {
+       text-align: right;
+}
+
+#messagelistfooter #countcontrols {
+       display: inline-block;
+}
+
+#messagelistfooter #listcontrols,
+#messagelistfooter #listselectors {
+       display: inline-block;
+       margin-right: 2em;
+       vertical-align: middle;
+}
+
+#messagelistfooter #listselectors .menuselector {
+       margin-top: -2px;
+}
+
+a.iconbutton.listmode {
+       width: 26px;
+       height: 20px;
+       background-position: 0 -477px;
+}
+
+a.iconbutton.threadmode {
+       width: 26px;
+       height: 20px;
+       background-position: 0 -497px;
+}
+
+a.iconbutton.listmode.selected {
+       background-position: -26px -477px;
+}
+
+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;
+}
+
+#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;
+}
+
+#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.archive > a {
+       background-position: 6px -1699px;
+}
+
+#mailboxlist li.mailbox.archive.selected > a {
+       background-position: 6px -1723px;
+}
+
+#mailboxlist li.unread {
+       font-weight: bold;
+}
+
+#mailboxlist li.virtual > a {
+       color: #aaa;
+}
+
+#mailboxlist li.recent > a {
+       color: #017cb4;
+}
+
+#mailboxlist li.mailbox ul {
+       list-style: none;
+       margin: 0;
+       padding: 0;
+       border-top: 1px solid #bbd3da;
+}
+
+#mailboxlist li.mailbox ul li {
+       padding-left: 26px;
+}
+
+#mailboxlist li.mailbox ul li a {
+       background-position: 6px -93px;
+}
+
+#mailboxlist li.mailbox ul li.selected > a {
+       background-position: 6px -117px;
+}
+
+#mailboxlist li.mailbox ul li:last-child {
+       border-bottom: 0;
+}
+
+#mailboxlist li.mailbox div.collapsed,
+#mailboxlist li.mailbox div.expanded {
+       position: absolute;
+       top: 13px;
+       left: 19px;
+       width: 13px;
+       height: 13px;
+       background: url(images/listicons.png) -3px -144px no-repeat;
+       cursor: pointer;
+}
+
+#mailboxlist li.mailbox div.expanded {
+       background-position: -3px -168px;
+}
+
+#mailboxlist li.mailbox.selected > div.collapsed {
+       background-position: -23px -144px;
+}
+
+#mailboxlist li.mailbox.selected > div.expanded {
+       background-position: -23px -168px;
+}
+
+
+#mailboxlist li.mailbox ul li div.collapsed,
+#mailboxlist li.mailbox ul li div.expanded {
+       left: 43px;
+       top: 14px;
+}
+
+#mailboxlist li.mailbox .unreadcount {
+       position: absolute;
+       top: 3px;
+       right: 6px;
+       min-width: 1.8em;
+       padding: 2px 4px;
+       background: #82acb5;
+       background: -moz-linear-gradient(top, #82acb5 0%, #6a939f 100%);
+       background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#82acb5), color-stop(100%,#6a939f));
+       background: -o-linear-gradient(top, #82acb5 0%, #6a939f 100%);
+       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;
+       font-weight: bold;
+       text-shadow: none;
+}
+
+#mailboxlist li.mailbox.selected > a .unreadcount {
+       background: #005d76;
+       background: -moz-linear-gradient(top, #005d76 0%, #004558 100%);
+       background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#005d76), color-stop(100%,#004558));
+       background: -o-linear-gradient(top, #005d76 0%, #004558 100%);
+       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 {
+       background: #017cb4;
+       background: -moz-linear-gradient(top, #017cb4 0%, #006ca4 100%);
+       background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#017cb4), color-stop(100%,#006ca4));
+       background: -o-linear-gradient(top, #017cb4 0%, #006ca4 100%);
+       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 {
+       position: absolute;
+       right: 256px;
+       width: auto;
+       top: 7px;
+}
+
+#searchfilter select {
+       height: 26px;
+}
+
+#mailview-left select.mailboxlist {
+       position: relative;
+       top: 10px;
+       width: 100%;
+}
+
+#messagetoolbar {
+       position: absolute;
+       top: -6px;
+       right: 390px;
+       left: 0;
+       height: 40px;
+       white-space: nowrap;
+       z-index: 10;
+}
+
+#messagetoolbar.fullwidth {
+       right: 0;
+}
+
+#messagetoolbar .toolbarselect {
+       position: absolute;
+       bottom: 6px;
+       right: 3px;
+}
+
+#messagesearchtools {
+       position: absolute;
+       right: 0;
+       top: 0;
+       width: 240px;
+}
+
+#mailpreviewtoggle {
+       display: block;
+       position: absolute;
+       top: 6px;
+       right: 6px;
+       width: 20px;
+       height: 18px;
+       background: url(images/buttons.png) -3px -458px no-repeat;
+}
+
+#mailpreviewtoggle.enabled {
+       background-position: -28px -458px;
+}
+
+
+/*** message list ***/
+
+#messagelist thead td: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 {
+       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;
+}
+
+#messagelist tr td.threads {
+       width: 26px;
+}
+
+.webkit #messagelist tr td.threads {
+       width: 30px;
+}
+
+#messagelist tr td.threads,
+#messagelist tr td.threads + td {
+       border-left: 0;
+}
+
+
+#messagelist tr td.size {
+       width: 60px;
+       text-align: right;
+}
+
+#messagelist tr td.fromto,
+#messagelist tr td.from,
+#messagelist tr td.to,
+#messagelist tr td.cc,
+#messagelist tr td.replyto {
+       width: 200px;
+}
+
+#messagelist tr td.date {
+       width: 125px;
+}
+
+#messagelist tr.message {
+/*     background-color: #fff; */
+}
+
+#messagelist tr.thread.expanded td {
+       background-color: #ededed;
+}
+
+#messagelist tr.unread {
+       font-weight: bold;
+/*     background-color: #fff; */
+}
+
+#messagelist tr.flagged td,
+#messagelist tr.flagged td a {
+       color: #f30;
+}
+
+#messagelist thead tr td.sortedASC a,
+#messagelist thead tr td.sortedDESC a {
+       color: #004458;
+       text-decoration: underline;
+       background: url(images/listicons.png) right -912px no-repeat;
+}
+
+#messagelist thead tr td.sortedASC a {
+       background-position: right -944px;
+}
+
+#messagelist td img {
+       vertical-align: middle;
+       display: inline-block;
+}
+
+#messagelist tbody td a {
+       color: #333;
+       text-decoration: none;
+       white-space: nowrap;
+       cursor: default;
+}
+
+#messagelist tbody tr td.flag,
+#messagelist tbody tr td.status,
+#messagelist tbody tr td.subject span.status {
+       cursor: pointer;
+}
+
+#messagelist tr td.flag span,
+#messagelist tr td.status span,
+#messagelist tr td.attachment span,
+#messagelist tr td.priority span {
+       display: block;
+       width: 20px;
+}
+
+#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 {
+       display: inline-block;
+       vertical-align: middle;
+       height: 18px;
+       width: 20px;
+       padding: 0;
+       background: url(images/listicons.png) -100px 0 no-repeat;
+}
+
+#messagelist tbody tr td.attachment span.attachment {
+       background-position: 0 -996px;
+}
+
+#messagelist thead tr td.attachment span.attachment {
+       background-position: -24px -996px;
+}
+
+#messagelist tbody tr td.attachment span.report {
+       background-position: -24px -1116px;
+}
+
+#messagelist tr td.priority span.prio5 {
+       background-position: 0 -1905px;
+}
+
+#messagelist tr td.priority span.prio4 {
+       background-position: 0 -1885px;
+}
+
+#messagelist tr td.priority span.prio2 {
+       background-position: 0 -1865px;
+}
+
+#messagelist tr td.priority span.prio1 {
+       background-position: 0 -1845px;
+}
+
+#messagelist tbody tr td.flag span.flagged {
+       background-position: 0 -1036px;
+}
+
+#messagelist thead tr td.flag span.flagged {
+       background-position: -24px -1036px;
+}
+
+#messagelist tr td.status span.msgicon:hover {
+       background-position: -23px -1056px;
+}
+
+#messagelist tr td.flag span.unflagged:hover {
+       background-position: -23px -1076px;
+}
+
+#messagelist tr td.subject span.msgicon,
+#messagelist tr td.subject span.unreadchildren {
+       background-position: 0 -1056px;
+       margin: 0 1px 0 0;
+       width: 24px;
+}
+
+#messagelist tr td.subject span.replied {
+       background-position: 0 -1076px;
+}
+
+#messagelist tr td.subject span.forwarded {
+       background-position: 0 -1096px;
+}
+
+#messagelist tr td.subject span.replied.forwarded {
+       background-position: 0 -1116px;
+}
+
+#messagelist tr td.status span.msgicon,
+#messagelist tr td.flag span.unflagged,
+#messagelist tr td.status span.unreadchildren {
+       background-position: 0 1056px; /* no icon */
+}
+/*
+#messagelist tr td.status span.msgicon:hover {
+       background-position: 0 -272px;
+}
+*/
+#messagelist tr td.status span.deleted,
+#messagelist tr td.status span.deleted:hover,
+#messagelist tr td.subject span.deleted {
+       background-position: -22px -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;
+}
+
+#messagelist thead tr td.status span.status {
+       background-position: -24px -1016px;
+}
+
+#messagelist tr td div.collapsed {
+       background-position: 0 -1136px;
+       cursor: pointer;
+}
+
+#messagelist tr td div.expanded {
+       background-position: 0 -1156px;
+       cursor: pointer;
+}
+
+#messagelist tr td.threads div.listmenu {
+       background-position: 0 -976px;
+       cursor: pointer;
+       width: 26px;
+}
+
+#messagelist thead tr td.subject,
+#messagelist tbody tr td.subject {
+       width: 99%;
+       white-space: nowrap;
+}
+
+#messagelist tbody tr td.subject a {
+       cursor: default;
+       vertical-align: middle; /* #1487091 */
+}
+
+/* thread parent message with unread children */
+#messagelist tbody tr.unroot td.subject a {
+       text-decoration: underline;
+}
+
+/**** tree indicators ****/
+
+#messagelist tbody tr td span.branch div {
+       display: inline-block;
+}
+
+#messagelist tbody tr td span.branch div.tree {
+       width: 15px;
+}
+
+#listoptions ul.proplist {
+       min-width: 16em;
+}
+
+/**** message view ****/
+
+#mailpreviewframe {
+       display: none;
+       position: absolute;
+       top: 0;
+       left: 0;
+       width: 100%;
+       bottom: 28px;
+}
+
+#messagecontframe {
+       border: 0;
+       border-radius: 4px 4px 0 0;
+}
+
+#messagecontent {
+       position: absolute;
+       top: 110px;
+       left: 0;
+       width: 100%;
+       bottom: 27px;
+       overflow: auto;
+       border-radius: 4px 4px 0 0;
+}
+
+#messageheader,
+#partheader,
+#composeheaders {
+       position: relative;
+       padding: 3px 0;
+       background: #f9f9f9;
+       background: -moz-linear-gradient(top, #fff 0%, #f0f0f0 100%);
+       background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#fff), color-stop(100%,#f0f0f0));
+       background: -o-linear-gradient(top, #fff 0%, #f0f0f0 100%);
+       background: -ms-linear-gradient(top, #fff 0%, #f0f0f0 100%);
+       background: linear-gradient(top, #fff 0%, #f0f0f0 100%);
+       border-bottom: 1px solid #dfdfdf;
+}
+
+#mailview-right #messageheader {
+       border-radius: 4px 4px 0 0;
+       padding-left: 26px;
+       /* avoid headers eating up all the vertical space */
+       max-height: 50%;
+       overflow: auto;
+}
+
+h2.subject {
+       font-size: 15px;
+       margin: 0 15em 0 0;
+       padding: 4px 8px 2px 8px;
+       white-space: nowrap;
+       overflow: hidden;
+       text-overflow: ellipsis;
+}
+
+h3.subject {
+       font-size: 14px;
+       margin: 0 8em 0 0;
+       padding: 8px 8px 4px 8px;
+       white-space: nowrap;
+       overflow: hidden;
+       text-overflow: ellipsis;
+}
+
+.headers-table td {
+       color: #666;
+       padding: 2px 8px;
+}
+
+.headers-table td.header,
+.ui-dialog-content.popup span.adr {
+       font-weight: bold;
+}
+
+.headers-table td.header-title {
+       white-space: nowrap;
+}
+
+.headers-table td.header a,
+.ui-dialog-content.popup span.adr a {
+       color: #666;
+       text-decoration: none;
+}
+
+.headers-table td.header a:hover,
+.ui-dialog-content.popup span.adr a:hover {
+       text-decoration: underline;
+}
+
+.headers-table td.subject {
+       color: #333;
+       font-size: 110%;
+       font-weight: bold;
+}
+
+.headers-table td.header span,
+.ui-dialog-content.popup span.adr {
+       white-space: nowrap;
+}
+
+.headers-table td.header a.morelink {
+       color: #0069a6;
+       white-space: nowrap;
+       font-weight: normal;
+}
+
+.rcmaddcontact {
+       position: relative;
+       top: 1px;
+       margin-left: 0.5em;
+}
+
+.rcmaddcontact imp {
+       width: 20px;
+       height: 13px;
+}
+
+#preview-allheaders {
+       display: none;
+}
+
+#preview-allheaders td.header-title,
+#preview-shortheaders td.header-title {
+       padding-left: 0;
+}
+
+#preview-shortheaders td.header {
+       padding-right: 18px;
+}
+
+#previewheaderstoggle {
+       display: block;
+       position: absolute;
+       top: 0;
+       left: 0;
+       bottom: 0;
+       width: 18px;
+       padding: 0;
+       outline: none;
+       background: #f2f2f2;
+       background: -moz-linear-gradient(left, #fbfbfb 0, #e9e9e9 100%);
+       background: -webkit-gradient(linear, left top, right top, color-stop(0,#fbfbfb), color-stop(100%,#e9e9e9));
+       background: -o-linear-gradient(left, #fbfbfb 0, #e9e9e9 100%);
+       background: -ms-linear-gradient(left, #fbfbfb 0, #e9e9e9 100%);
+       background: linear-gradient(left, #fbfbfb 0, #e9e9e9 100%);
+       border-right: 1px solid #dfdfdf;
+       border-radius: 3px 0 0 0; /* for Opera */
+}
+
+#previewheaderstoggle .iconlink {
+       display: inline-block;
+       position: absolute;
+       top: 8px;
+       left: 0;
+       width: 18px;
+       height: 16px;
+       background: url(images/buttons.png) -27px -242px no-repeat;
+}
+
+#previewheaderstoggle.remove .iconlink {
+       top: auto;
+       bottom: 5px;
+       background-position: -5px -242px;
+}
+
+#full-headers {
+       position: relative;
+}
+
+div.more-headers {
+       position: absolute;
+       top: -12px;
+       right: 10px;
+       width: 12px;
+       height: 10px;
+       cursor: pointer;
+       background: url(images/buttons.png) center -1619px no-repeat;
+}
+
+div.hide-headers {
+       background-position: center -1629px;
+}
+
+#all-headers {
+       position: relative;
+       margin: 4px 10px;
+       padding: 0;
+       height: 180px;
+       border: 1px solid #ccc;
+       border-radius: 4px;
+       background: #fdfdfd;
+}
+
+#headers-source {
+       display: none;
+       position: absolute;
+       top: 0;
+       left: 0;
+       right: 0;
+       bottom: 0;
+       padding: 3px 5px;
+       overflow: auto;
+       text-align: left;
+       color: #333;
+}
+
+#messageheader.previewheader #all-headers {
+       margin-left: 0;
+}
+
+#messageheader.previewheader {
+       position: relative;
+       height: auto;
+       min-height: 52px;
+       padding: 0 0 3px 26px;
+}
+
+#messageheader.previewheader h3.subject {
+       padding: 8px 8px 2px 0;
+}
+
+#messageheader #countcontrols {
+       position: absolute;
+       top: 8px;
+       right: 8px;
+       width: 18em;
+       text-align: right;
+       white-space: nowrap;
+}
+
+#messageheader .pagenav .countdisplay {
+       min-width: 0;
+       padding-right: 0.5em;
+       white-space: nowrap;
+}
+
+#messagecontent .leftcol,
+#messagepreview .leftcol {
+       margin-right: 252px;
+       overflow-x: auto;
+}
+
+#messagecontent .rightcol,
+#messagepreview .rightcol {
+       float: right;
+/*
+       position: absolute;
+       top: 10px;
+       right: 10px;
+       height: 90%;
+*/
+       width: 230px;
+       margin: 8px;
+       min-height: 200px;
+       background: #f0f0f0;
+       padding: 8px;
+}
+
+#messagebody {
+       margin: 8px;
+}
+
+#message-objects div,
+#messagebody span.part-notice {
+       margin: 8px;
+}
+
+#message-objects div.notice,
+#message-buttons div.notice {
+       display: block;
+       color: #960;
+       border: 1px solid #ffdf0e;
+       background-color: #fef893;
+       background-position: 5px -85px;
+       padding: 6px 12px 4px 30px;
+       white-space: normal;
+}
+
+#message-objects div a.button,
+#messagebody span.part-notice a.button {
+       margin-left: 10px;
+}
+
+div.message-part,
+div.message-htmlpart {
+       padding: 0 2px 10px 2px;
+       border-top: 2px solid #f0f0f0;
+}
+
+#messagebody div:first-child {
+       border-top: 0;
+}
+
+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 {
+       color: #666666;
+}
+
+div.message-part blockquote {
+       color: blue;
+       border-left: 2px solid blue;
+       border-right: 2px solid blue;
+       background-color: #F6F6F6;
+       margin: 2px 0px 2px 0px;
+       padding: 1px 8px 1px 10px;
+}
+
+div.message-part blockquote blockquote {
+       color: green;
+       border-left: 2px solid green;
+       border-right: 2px solid green;
+}
+
+div.message-part blockquote blockquote blockquote {
+       color: #990000;
+       border-left: 2px solid #bb0000;
+       border-right: 2px solid #bb0000;
+}
+
+#messagebody > hr {
+       color: #fff;
+       background: #fff;
+       border: 0;
+       border-bottom: 2px solid #f0f0f0;
+}
+
+#messagebody > p > img {
+       max-width: 80%;
+}
+
+#messagepartcontainer {
+       position: absolute;
+       top: 60px;
+       left: 0px;
+       right: 0px;
+       bottom: 0px;
+}
+
+#messagepartframe {
+       border: 0;
+}
+
+/*** message composition ***/
+
+#composeview-left {
+       position: absolute;
+       top: 0;
+       left: 0;
+       width: 250px;
+       bottom: 0;
+}
+
+#composeview-right {
+       position: absolute;
+       top: 0;
+       left: 262px;
+       right: 0;
+       bottom: 0;
+}
+
+#compose-contacts {
+       position: absolute;
+       top: 42px;
+       left: 0;
+       width: 100%;
+       bottom: 0;
+}
+
+#compose-contacts #directorylist {
+       border-bottom: 4px solid #c7e3ef;
+}
+
+#compose-contacts .scroller {
+       top: 65px;
+       border-top: 1px solid #fff;
+}
+
+#contacts-table {
+       table-layout: fixed;
+}
+
+#contacts-table td {
+       width: 100%;
+}
+
+#contacts-table td span {
+       display: block;
+}
+
+#compose-contacts li a, #contacts-table td {
+       background: url(images/listicons.png) -100px 0 no-repeat;
+       overflow: hidden;
+       padding-left: 36px;
+       text-overflow: ellipsis;
+}
+
+#contacts-table tr:first-child td {
+       border-top: 0;
+}
+
+#compose-contacts li.addressbook a {
+       background-position: 6px -766px;
+}
+
+#compose-contacts li.addressbook.selected a {
+       background-position: 6px -791px;
+}
+
+#contacts-table td.contactgroup {
+       background-position: 6px -1555px;
+}
+
+#contacts-table tr.unfocused td.contactgroup,
+#contacts-table tr.selected td.contactgroup {
+       background-position: 6px -1579px;
+}
+
+#contacts-table td.contact {
+       background-position: 6px -1603px;
+}
+
+#contacts-table tr.unfocused td.contact,
+#contacts-table tr.selected td.contact {
+       background-position: 6px -1627px;
+}
+
+
+#compose-content {
+       position: absolute;
+       top: 42px;
+       left: 0;
+       width: 100%;
+       bottom: 28px;
+       border-bottom-left-radius: 0;
+       border-bottom-right-radius: 0;
+       overflow: hidden;
+}
+
+#composeheaders {
+       border-radius: 4px 4px 0 0;
+       -webkit-box-shadow: 0 2px 3px 0 #999;
+       -moz-box-shadow: 0 2px 3px 0 #999;
+       box-shadow: 0 2px 3px 0 #999;
+       border-bottom: 0;
+}
+
+#composebuttons {
+       position: absolute;
+       top: 8px;
+       right: 8px;
+       width: auto;
+       white-space: nowrap;
+       z-index: 100;
+}
+
+.compose-headers {
+       width: 99%;
+       margin: 4px 0;
+}
+
+.compose-headers td {
+       padding: 4px 4px 4px 8px;
+}
+
+.compose-headers td.title {
+       width: 11%;
+       white-space: nowrap;
+}
+
+.compose-headers td.title label {
+       float: left;
+}
+
+.compose-headers td.title a.iconbutton {
+       float: right;
+       position: relative;
+       top: -2px;
+       width: 15px;
+}
+
+.compose-headers td.editfield {
+       width: 90%;
+       padding-left: 4px;
+}
+
+.compose-headers td.editfield a.iconlink {
+       margin-left: 0.5em;
+}
+
+.compose-headers td.formlinks {
+       padding: 0 4px;
+}
+
+.compose-headers td.top {
+       vertical-align: top;
+       padding-top: 10px;
+}
+
+.compose-headers td textarea,
+.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 {
+       display: none;
+}
+
+#composeoptionsbox {
+       padding: 4px 8px 0 8px;
+       background: #d2d2d2;
+       border-bottom: 1px solid #e8e8e8;
+       -webkit-box-shadow: 0 2px 3px 0 #999;
+       -moz-box-shadow: 0 2px 3px 0 #999;
+       box-shadow: 0 2px 3px 0 #999;
+       white-space: nowrap;
+}
+
+#composeoptions {
+       display: none;
+       padding: 2px 0;
+       white-space: normal;
+}
+
+.composeoption {
+       padding-right: 22px;
+       white-space: nowrap;
+}
+
+#composeoptions .composeoption {
+       display: inline-block;
+       padding: 4px 28px 4px 0;
+}
+
+#composeoptions .composeoption:last-child {
+       padding-right: 4px;
+}
+
+#composeoptionstoggle {
+       display: inline-block;
+       position: relative;
+       top: -1px;
+       left: 6px;
+       width: 20px;
+       height: 18px;
+       background: url(images/buttons.png) -3px -1640px no-repeat;
+       text-decoration: none;
+}
+
+#composeoptionstoggle.enabled {
+       background-position: -28px -1640px;
+}
+
+#composeview-bottom {
+       position: relative;
+       width: 100%;
+       height: 200px;
+}
+
+#composebodycontainer {
+       position: absolute;
+       top: 0;
+       left: 0;
+       right: 260px;
+       bottom: 0;
+}
+
+#composebody {
+       position: absolute;
+       top: 1px;
+       left: 0;
+       bottom: 0;
+       width: 99%;
+       border: 0;
+       border-radius: 0;
+       padding: 8px 0 8px 8px;
+       box-shadow: none;
+       resize: none;
+       font-family: monospace;
+       font-size: 9pt;
+       outline: none;
+}
+
+#composebody:active,
+#composebody:focus {
+}
+
+#compose-attachments {
+       position: absolute;
+       right: 0;
+       top: 1px;
+       bottom: 0;
+       width: 240px;
+       background: #f0f0f0;
+       border-left: 1px solid #ddd;
+       padding: 8px;
+       overflow: auto;
+}
+
+.defaultSkin table.mceLayout,
+.defaultSkin table.mceLayout tr.mceLast td {
+       border: 0 !important;
+}
+
+#composebody_toolbargroup {
+       border-bottom: 1px solid #ddd;
+}
+
+#uploadform a.iconlink {
+       margin-left: 1em;
+       text-indent: -5000px;
+}
+
+#uploadform form div {
+       margin: 4px 0;
+}
+
diff --git a/skins/larry/print.css b/skins/larry/print.css
new file mode 100644 (file)
index 0000000..484905d
--- /dev/null
@@ -0,0 +1,126 @@
+/**
+ * Roundcube webmail styles for message printing
+ *
+ * Copyright (c) 2012, The Roundcube Dev Team
+ *
+ * The contents are subject to the Creative Commons Attribution-ShareAlike
+ * License. It is allowed to copy, distribute, transmit and to adapt the work
+ * by keeping credits to the original autors in the README file.
+ * See http://creativecommons.org/licenses/by-sa/3.0/ for details.
+ *
+ * $Id$
+ */
+body {
+       font-family: "Lucida Grande", Verdana, Arial, Helvetica, sans-serif;
+       background-color: #fff;
+       color: #000;
+       margin: 2mm;
+}
+
+body, td, th, span, div, p {
+       font-size: 9pt;
+       color: #000;
+}
+
+h3 {
+       font-size: 18px;
+       color: #000;
+}
+
+a, a:active, a:visited {
+       color: #000;
+}
+
+#header {
+       float: right;
+       margin: 0 5mm 3mm 5mm;
+}
+
+table.headers-table {
+       table-layout: fixed;
+       margin-top: 14px;
+}
+
+table.headers-table tr td {
+       font-size: 9pt;
+}
+
+table.headers-table td.header-title {
+       color: #666;
+       font-size: 85%;
+       padding-right: 4mm;
+       white-space: nowrap;
+}
+
+table.headers-table tr td.subject {
+       width: 90%;
+       font-weight: bold;
+       font-size: 120%;
+}
+       
+#attachment-list {
+       margin-top: 3mm;
+       padding-top: 3mm;
+       border-top: 1pt solid #ccc;
+}
+
+#attachment-list li {
+       font-size: 9pt;
+}
+
+#attachment-list li a {
+       text-decoration: none;
+}
+
+#attachment-list li a:hover {
+       text-decoration: underline;
+}
+
+#messagebody {
+       margin-top: 5mm;
+       border-top: none;
+}
+
+div.message-part {
+       padding: 2mm;
+       margin-top: 5mm;
+       margin-bottom: 5mm;
+       border-top: 1pt solid #ccc;
+}
+
+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) */
+}
+
+div.message-part blockquote {
+       color: blue;
+       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;
+}
+
+div.message-part blockquote blockquote {
+       color: green;
+       border-left: 2px solid green;
+       border-right: 2px solid green;
+}
+
+div.message-part blockquote blockquote blockquote {
+       color: #900;
+       border-left: 2px solid #b00;
+       border-right: 2px solid #b00;
+}
diff --git a/skins/larry/settings.css b/skins/larry/settings.css
new file mode 100644 (file)
index 0000000..e0047f9
--- /dev/null
@@ -0,0 +1,238 @@
+/**
+ * Roundcube webmail styles for the Settings section
+ *
+ * Copyright (c) 2012, The Roundcube Dev Team
+ * Screendesign by FLINT / Büro für Gestaltung, bueroflint.com
+ *
+ * The contents are subject to the Creative Commons Attribution-ShareAlike
+ * License. It is allowed to copy, distribute, transmit and to adapt the work
+ * by keeping credits to the original autors in the README file.
+ * See http://creativecommons.org/licenses/by-sa/3.0/ for details.
+ *
+ * $Id$
+ */
+
+#settings-sections {
+       position: absolute;
+       top: 0;
+       left: 0;
+       width: 220px;
+       bottom: 0;
+}
+
+#pluginbody,
+#settings-right {
+       position: absolute;
+       top: 0;
+       left: 232px;
+       right: 0;
+       bottom: 0;
+}
+
+#sectionslist {
+       position: absolute;
+       top: 0;
+       left: 0;
+       width: 260px;
+       bottom: 0;
+}
+
+#preferences-box {
+       position: absolute;
+       top: 0;
+       left: 272px;
+       right: 0;
+       bottom: 0;
+}
+
+#preferences-frame {
+       border: 0;
+       border-radius: 4px 4px 0 0;
+}
+
+#sections-table tbody td.section,
+#settings-sections span.listitem a,
+#settings-sections span.tablink a {
+       padding-left: 36px;
+       background-image: url(images/listicons.png);
+       background-position: -100px 0;
+       background-repeat: no-repeat;
+}
+
+/* note: support span.tablink because this is used by plugins */
+#settings-sections span.listitem a,
+#settings-sections span.tablink a {
+       background-position: 6px -862px;
+}
+
+#settings-sections span.selected a,
+#settings-sections span.tablink.selected a {
+       background-position: 6px -887px;
+}
+
+#settings-sections span.preferences a {
+       background-position: 6px -431px;
+}
+
+#settings-sections span.preferences.selected a {
+       background-position: 6px -455px;
+}
+
+#settings-sections span.folders a,
+#sections-table #rcmrowfolders td.section {
+       background-position: 6px 2px;
+}
+
+#settings-sections span.folders.selected a,
+#sections-table #rcmrowfolders.selected td.section {
+       background-position: 6px -22px;
+}
+
+#settings-sections span.identities a {
+       background-position: 6px -478px;
+}
+
+#settings-sections span.identities.selected a {
+       background-position: 6px -502px;
+}
+
+#settings-sections span.filter a {
+       background-position: 6px -1746px;
+}
+
+#settings-sections span.filter.selected a {
+       background-position: 6px -1770px;
+}
+
+#settings-sections span.password a {
+       background-position: 6px -1795px;
+}
+
+#settings-sections span.password.selected a {
+       background-position: 6px -1819px;
+}
+
+#sections-table #rcmrowgeneral td.section {
+       background-position: 6px -573px;
+}
+
+#sections-table #rcmrowgeneral.selected td.section {
+       background-position: 6px -598px;
+}
+
+#sections-table #rcmrowmailbox td.section {
+       background-position: 6px -621px;
+}
+
+#sections-table #rcmrowmailbox.selected td.section {
+       background-position: 6px -646px;
+}
+
+#sections-table #rcmrowcompose td.section {
+       background-position: 6px -670px;
+}
+
+#sections-table #rcmrowcompose.selected td.section {
+       background-position: 6px -695px;
+}
+
+#sections-table #rcmrowmailview td.section {
+       background-position: 6px -718px;
+}
+
+#sections-table #rcmrowmailview.selected td.section {
+       background-position: 6px -742px;
+}
+
+#sections-table #rcmrowaddressbook td.section {
+       background-position: 6px -766px;
+}
+
+#sections-table #rcmrowaddressbook.selected td.section {
+       background-position: 6px -791px;
+}
+
+#sections-table #rcmrowserver td.section {
+       background-position: 6px -814px;
+}
+
+#sections-table #rcmrowserver.selected td.section {
+       background-position: 6px -838px;
+}
+
+#sections-table #rcmrowcalendar td.section {
+       background-position: 6px -526px;
+}
+
+#sections-table #rcmrowcalendar.selected td.section {
+       background-position: 6px -550px;
+}
+
+#folderslist,
+#identitieslist {
+       position: absolute;
+       top: 0;
+       left: 0;
+       width: 260px;
+       bottom: 0;
+}
+
+#identities-table {
+       width: 100%;
+       table-layout: fixed;
+}
+
+#identities-table tbody td.mail {
+       width: 100%;
+       overflow: hidden;
+       text-overflow: ellipsis;
+}
+
+#folder-details,
+#identity-details {
+       position: absolute;
+       top: 0;
+       left: 272px;
+       right: 0;
+       bottom: 0;
+}
+
+#subscription-table {
+       table-layout: fixed;
+}
+
+#subscription-table tr.root td {
+       font-size: 5%;
+       height: 5px;
+       padding: 2px;
+}
+
+#subscription-table td.name {
+       width: 85%;
+       overflow: hidden;
+       text-overflow: ellipsis;
+}
+
+#subscription-table td.subscribed {
+       min-width: 30px;
+       padding: 3px 12px 3px 3px;
+       text-align: right;
+}
+
+#pluginlist td.version {
+       width: 5em;
+}
+
+.webkit #pluginlist td.version {
+       width: 6em;
+}
+
+#pluginlist td.license,
+#pluginlist td.source {
+       width: 8em;
+}
+
+.webkit #pluginlist td.license,
+.webkit #pluginlist td.source {
+       width: 9em;
+}
diff --git a/skins/larry/styles.css b/skins/larry/styles.css
new file mode 100644 (file)
index 0000000..1999698
--- /dev/null
@@ -0,0 +1,2047 @@
+/**
+ * Roundcube webmail styles for skin "Larry"
+ *
+ * Copyright (c) 2012, The Roundcube Dev Team
+ * Screendesign by FLINT / Büro für Gestaltung, bueroflint.com
+ *
+ * The contents are subject to the Creative Commons Attribution-ShareAlike
+ * License. It is allowed to copy, distribute, transmit and to adapt the work
+ * by keeping credits to the original autors in the README file.
+ * See http://creativecommons.org/licenses/by-sa/3.0/ for details.
+ *
+ * $Id$
+ */
+
+body {
+       font-family: "Lucida Grande", Verdana, Arial, Helvetica, sans-serif;
+       font-size: 11px;
+       color: #333;
+       background: url(images/linen.jpg) repeat #d1d5d8;
+       margin: 0;
+}
+
+body.noscroll {
+       /* also avoids bounce effect in Chrome and Safari */
+       overflow: hidden;
+}
+
+a {
+       color: #0069a6;
+}
+
+a:visited {
+       color: #0186ba;
+}
+
+img {
+  border: 0;
+}
+
+input[type="text"],
+input[type="password"],
+textarea {
+       margin: 0; /* Safari by default adds a margin */
+       padding: 4px;
+       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.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.placeholder,
+textarea.placeholder {
+       color: #aaa;
+}
+
+.bold {
+       font-weight: bold;
+}
+
+/*** buttons ***/
+
+input.button {
+       display: inline-block;
+       margin: 0 2px;
+       padding: 2px 5px;
+       color: #525252;
+       text-shadow: 0px 1px 1px #fff;
+       border: 1px solid #c0c0c0;
+       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%);
+       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;
+}
+
+.formbuttons input.button {
+       color: #ddd;
+       font-size: 110%;
+       text-shadow: 0px 1px 1px #333;
+       padding: 4px 12px;
+       border-color: #465864;
+       border-radius: 5px;
+       background: #7a7b7d;
+       background: -moz-linear-gradient(top, #7b7b7b 0%, #606060 100%); /* FF3.6+ */
+       background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#7b7b7b), color-stop(100%,#606060)); /* Chrome,Safari4+ */
+       background: -o-linear-gradient(top, #7b7b7b 0%, #606060 100%); /* Opera 11.10+ */
+       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,
+.formbuttons input.button:focus,
+input.button.mainaction:hover,
+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 {
+       color: #fff;
+       background: -moz-linear-gradient(top, #5c5c5c 0%, #7b7b7b 100%);
+       background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#5c5c5c), color-stop(100%,#7b7b7b));
+       background: -o-linear-gradient(top, #5c5c5c 0%, #7b7b7b 100%);
+       background: -ms-linear-gradient(top, #5c5c5c 0%, #7b7b7b 100%);
+       background: linear-gradient(top, #5c5c5c 0%, #7b7b7b 100%);
+}
+
+input.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%);
+       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 {
+       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%);
+}
+
+input.button[disabled],
+input.button[disabled]:hover,
+input.button.mainaction[disabled] {
+       color: #aaa !important;
+}
+
+input.mainaction {
+       font-weight: bold;
+}
+
+/** link buttons **/
+
+a.button {
+       display: inline-block;
+       margin: 0 2px;
+       padding: 2px 5px;
+       color: #525252;
+       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%);
+       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;
+}
+
+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;
+}
+
+label.disabled,
+a.button.disabled {
+       color: #999;
+}
+
+a.button.disabled,
+input.button.disabled,
+input.button[disabled],
+a.button.disabled:hover,
+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);
+}
+
+a.button.pressed,
+a.button:active,
+input.button:active {
+       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%);
+}
+
+.pagenav.dark a.button {
+       font-weight: bold;
+       border-color: #e6e6e6;
+       background: #d8d8d8;
+       background: -moz-linear-gradient(top, #d8d8d8 0%, #bababa 100%);
+       background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#d8d8d8), color-stop(100%,#bababa));
+       background: -o-linear-gradient(top, #d8d8d8 0%, #bababa 100%);
+       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 {
+       background: #bababa;
+       background: -moz-linear-gradient(top, #bababa 0%, #d8d8d8 100%);
+       background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#bababa), color-stop(100%,#d8d8d8));
+       background: -o-linear-gradient(top, #bababa 0%, #d8d8d8 100%);
+       background: -ms-linear-gradient(top, #bababa 0%, #d8d8d8 100%);
+       background: linear-gradient(top, #bababa 0%, #d8d8d8 100%);
+}
+
+.pagenav a.button {
+       padding: 1px 3px;
+       height: 16px;
+       vertical-align: middle;
+       margin-bottom: 1px;
+}
+
+.pagenav a.button span.inner {
+       display: inline-block;
+       width: 16px;
+       height: 13px;
+       text-indent: 1000px;
+       overflow: hidden;
+       background: url(images/buttons.png) -6px -211px no-repeat;
+}
+
+.pagenav a.prevpage span.inner {
+       background-position: -7px -226px;
+}
+
+.pagenav a.nextpage span.inner {
+       background-position: -28px -226px;
+}
+
+.pagenav a.lastpage span.inner {
+       background-position: -28px -211px;
+}
+
+.pagenav a.pageup span.inner {
+       background-position: -7px -241px;
+}
+
+.pagenav a.pagedown span.inner {
+       background-position: -29px -241px;
+}
+
+.pagenav a.reply span.inner {
+       background-position: -7px -256px;
+}
+
+.pagenav a.forward span.inner {
+       background-position: -29px -256px;
+}
+
+.pagenav a.replyall span.inner {
+       background-position: -7px -271px;
+}
+
+.pagenav a.extwin span.inner {
+       background-position: -29px -271px;
+}
+
+.pagenav .countdisplay {
+       display: inline-block;
+       padding: 3px 1em 0 1em;
+       text-shadow: 0px 1px 1px #fff;
+       min-width: 16em;
+}
+
+.pagenavbuttons {
+       position: relative;
+       top: -2px;
+}
+
+a.iconbutton {
+       display: inline-block;
+       width: 24px;
+       height: 18px;
+       text-decoration: none;
+       text-indent: -5000px;
+       background: url(images/buttons.png) -1000px 0 no-repeat;
+}
+
+a.iconbutton.disabled {
+       opacity: 0.4;
+       filter: alpha(opacity=40);
+       cursor: default;
+}
+
+a.iconbutton.searchoptions {
+       background-position: -2px -317px;
+}
+
+a.iconbutton.reset {
+       background-position: -25px -317px;
+}
+
+a.iconbutton.cancel {
+       background-position: -7px -377px;
+}
+
+a.iconlink {
+       display: inline-block;
+       color: #888;
+       text-decoration: none;
+       white-space: nowrap;
+       padding: 2px 8px 2px 20px;
+       background: url(images/buttons.png) -1000px 0 no-repeat;
+}
+
+a.iconlink:hover {
+       text-decoration: underline;
+}
+
+a.iconlink.delete {
+       background-position: -7px -337px;
+}
+
+a.iconlink.add {
+       background-position: -7px -357px;
+}
+
+a.iconlink.remove {
+       background-position: -7px -378px;
+}
+
+a.iconlink.cancel {
+       background-position: -7px -397px;
+}
+
+a.iconlink.edit {
+       background-position: -7px -417px;
+}
+
+a.iconlink.upload {
+       background-position: -6px -437px;
+}
+
+
+/*** message bar ***/
+
+#message div.loading,
+#message div.warning,
+#message div.error,
+#message div.notice,
+#message div.confirmation,
+#message-objects div.notice {
+       color: #555;
+       font-weight: bold;
+       padding: 6px 30px 6px 25px;
+       display: inline-block;
+       white-space: nowrap;
+       background: url(images/messages.png) 0 5px no-repeat;
+       cursor: default;
+}
+
+#message div.warning {
+       color: #960;
+       background-position: 0 -86px;
+}
+
+#message div.error {
+       color: #cf2734;
+       background-position: 0 -55px;
+}
+
+#message div.confirmation {
+       color: #093;
+       background-position: 0 -25px;
+}
+
+#message div.loading {
+       background: url(images/ajaxloader.gif) 2px 6px no-repeat;
+}
+
+#message div a,
+#message div span {
+       padding-right: 0.5em;
+       text-decoration: none;
+}
+
+#message div a:hover {
+       text-decoration: underline;
+       cursor: pointer;
+}
+
+#message.statusbar {
+       position: absolute;
+       bottom: 0;
+       left: 0;
+       right: 0;
+       height: 27px;
+       padding-left: 8px;
+       border-top: 1px solid #ddd;
+       border-radius: 0 0 4px 4px;
+       background: #eaeaea;
+       background: -moz-linear-gradient(top, #eaeaea 0%, #c8c8c8 100%);
+       background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#eaeaea), color-stop(100%,#c8c8c8));
+       background: -o-linear-gradient(top, #eaeaea 0%, #c8c8c8 100%);
+       background: -ms-linear-gradient(top, #eaeaea 0%, #c8c8c8 100%);
+       background: linear-gradient(top, #eaeaea 0%, #c8c8c8 100%);
+       white-space: nowrap;
+       overflow: hidden;
+       text-overflow: ellipsis;
+}
+
+.ui-dialog.error .ui-dialog-title,
+.ui-dialog.warning .ui-dialog-title,
+.ui-dialog.confirmation .ui-dialog-title {
+       padding-left: 25px;
+       background: url(images/messages.png) 0 5px no-repeat;
+       text-shadow: 0 1px 1px #fff;
+}
+
+.ui-dialog.warning .ui-dialog-title {
+       color: #960;
+       background-position: 0 -90px;
+}
+
+.ui-dialog.error .ui-dialog-title {
+       color: #cf2734;
+       background-position: 0 -60px;
+}
+
+.ui-dialog.confirmation .ui-dialog-title {
+       color: #093;
+       background-position: 0 -30px;
+}
+
+.ui-dialog.popupmessage .ui-dialog-titlebar {
+       padding: 8px 1em 4px 1em;
+       background: #e3e3e3;
+       background: -moz-linear-gradient(top, #e3e3e3 0%, #cfcfcf 100%);
+       background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#e3e3e3), color-stop(100%,#cfcfcf));
+       background: -o-linear-gradient(top, #e3e3e3 0%, #cfcfcf 100%);
+       background: -ms-linear-gradient(top, #e3e3e3 0%, #cfcfcf 100%);
+       background: linear-gradient(top, #e3e3e3 0%, #cfcfcf 100%);
+}
+
+.ui-dialog.popupmessage .ui-widget-content {
+       font-size: 12px;
+       background: #eee;
+       background: -moz-linear-gradient(top, #eee 0%, #dcdcdc 100%);
+       background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#eee), color-stop(100%,#dcdcdc));
+       background: -o-linear-gradient(top, #eee 0%, #dcdcdc 100%);
+       background: -ms-linear-gradient(top, #eee 0%, #dcdcdc 100%);
+       background: linear-gradient(top, #eee 0%, #dcdcdc 100%);
+}
+
+
+/*** basic page layout ***/
+
+#topline {
+       height: 18px;
+       background: url(images/linen_header.jpg) repeat #666;
+       border-bottom: 1px solid #4f4f4f;
+       padding: 2px 0 2px 10px;
+       color: #aaa;
+}
+
+#topnav {
+       height: 46px;
+       margin-bottom: 10px;
+       padding: 0 0 0 10px;
+       background: #111;
+       background: -moz-linear-gradient(top, #404040 0%, #060606 100%);
+       background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#404040), color-stop(100%,#060606));
+       background: -o-linear-gradient(top, #404040 0%, #060606 100%);
+       background: -ms-linear-gradient(top, #404040 0%, #060606 100%);
+       background: linear-gradient(top, #404040 0%, #060606 100%);
+}
+
+#topline a,
+#topnav a {
+       color: #eee;
+       text-decoration: none;
+}
+
+#topline a:hover {
+       text-decoration: underline;
+}
+
+#toplogo {
+       padding-top: 2px;
+}
+
+.topleft {
+       float: left;
+}
+
+.topright {
+       float: right;
+}
+
+.closelink {
+       display: inline-block;
+       padding: 2px 10px 2px 20px;
+}
+
+#topline span.username {
+       padding-right: 1em;
+}
+
+#topline .topleft a {
+       display: inline-block;
+       padding: 2px 0.8em 0 0;
+       color: #aaa;
+}
+
+#topline a.button-logout {
+       display: inline-block;
+       padding: 2px 10px 2px 20px;
+       background: url(images/buttons.png) -6px -193px no-repeat;
+       color: #fff;
+}
+
+
+/*** taskbar ***/
+
+#taskbar a {
+       display: inline-block;
+       height: 34px;
+       padding: 12px 10px 0 6px;
+}
+
+#taskbar a span.button-inner {
+       display: inline-block;
+       font-size: 110%;
+       font-weight: normal;
+       text-shadow: 0px 1px 1px black;
+       padding: 5px 0 0 34px;
+       height: 19px;
+       background: url(images/buttons.png) -1000px 0 no-repeat;
+}
+
+#taskbar a.button-selected {
+       color: #3cf;
+       background-color: #2c2c2c;
+}
+
+#taskbar a.button-mail span.button-inner {
+       background-position: 0 2px;
+}
+
+#taskbar a.button-mail:hover span.button-inner,
+#taskbar a.button-mail.button-selected span.button-inner {
+       background-position: 0 -22px;
+}
+
+#taskbar a.button-addressbook span.button-inner {
+       background-position: 0 -48px;
+}
+
+#taskbar a.button-addressbook:hover span.button-inner,
+#taskbar a.button-addressbook.button-selected span.button-inner {
+       background-position: 0 -72px;
+}
+
+#taskbar a.button-settings span.button-inner {
+       background-position: 0 -96px;
+}
+
+#taskbar a.button-settings:hover span.button-inner,
+#taskbar a.button-settings.button-selected span.button-inner {
+       background-position: 0 -120px;
+}
+
+#taskbar a.button-calendar span.button-inner {
+       background-position: 0 -144px;
+}
+
+#taskbar a.button-calendar:hover span.button-inner,
+#taskbar a.button-calendar.button-selected span.button-inner {
+       background-position: 0 -168px;
+}
+
+#mainscreen {
+       position: absolute;
+       top: 88px;
+       left: 10px;
+       right: 10px;
+       bottom: 20px;
+}
+
+#mainscreen.offset {
+       top: 130px;
+}
+
+#mainscreen .offset {
+       margin-top: 42px;
+}
+
+.uibox {
+       border: 1px solid #a3a3a3;
+       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;
+}
+
+.minwidth {
+       position: absolute;
+       top: 0;
+       left: 0;
+       bottom: 0;
+       width: 100%;
+       min-width: 1150px;
+}
+
+.scroller {
+       overflow: auto;
+}
+
+.readtext {
+       width: 42em;
+       padding: 12px;
+       font-size: 12px;
+}
+
+.readtext > h1,
+.readtext > h2,
+.readtext > h3 {
+       margin-top: 0;
+}
+
+.watermark {
+       background-image: url(images/watermark.jpg);
+       background-position: center;
+       background-repeat: no-repeat;
+}
+
+/*** lists ***/
+
+.listbox {
+       background: #d9ecf4;
+       overflow: hidden;
+}
+
+.listbox .scroller {
+       position: absolute;
+       top: 0;
+       left: 0;
+       width: 100%;
+       bottom: 0;
+       overflow-x: hidden;
+       overflow-y: auto;
+}
+
+.listbox .scroller.withfooter {
+       bottom: 42px;
+}
+
+.listbox .boxtitle + .scroller {
+       top: 34px;
+}
+
+.boxtitle,
+.uibox .listing thead td {
+       font-size: 12px;
+       font-weight: bold;
+       padding: 10px 8px 3px 8px;
+       height: 20px;  /* doesn't affect table-cells in FF */
+       margin: 0;
+       text-shadow: 0px 1px 1px #fff;
+       border-bottom: 1px solid #bbd3da;
+       white-space: nowrap;
+}
+
+.uibox .listing thead td {
+       padding-bottom: 8px;
+       height: auto;
+}
+
+.uibox .boxtitle,
+.uibox .listing thead td {
+       background: #b0ccd7;
+       color: #004458;
+       border-radius: 4px 4px 0 0;
+}
+
+.listbox .listitem,
+.listbox .tablink,
+.listing tbody td,
+.listing li {
+       display: block;
+       border-top: 1px solid #fff;
+       border-bottom: 1px solid #bbd3da;
+       cursor: default;
+       font-weight: normal;
+}
+
+.listbox .listitem a,
+.listbox .tablink a,
+.listing tbody td,
+.listing li a {
+       display: block;
+       color: #376572;
+       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 */
+       white-space: nowrap;
+}
+
+.listing tbody td {
+       display: table-cell;
+       padding-bottom: 5px;
+       height: auto;
+       min-height: 14px;
+}
+
+.webkit .listing tbody td {
+       height: 14px;
+}
+
+.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 {
+       color: #004458;
+       font-weight: bold;
+       background-color: #c7e3ef;
+}
+
+ul.listing {
+       display: block;
+       list-style: none;
+       margin: 0;
+       padding: 0;
+}
+
+ul.listing li {
+       background-color: #d9ecf4;
+}
+
+ul.listing li.droptarget,
+table.listing tr.droptarget td {
+       background-color: #e8e798;
+}
+
+table.listing,
+table.layout {
+       border: 0;
+       width: 100%;
+       border-spacing: 0;
+}
+
+table.layout td {
+       vertical-align: top;
+}
+
+.listbox .boxfooter {
+       position: absolute;
+       bottom: 0;
+       left: 0;
+       width: 100%;
+       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;
+       white-space: nowrap;
+       overflow: hidden;
+}
+
+.uibox .boxfooter {
+       border-radius: 0 0 4px 4px;
+}
+
+.boxfooter .listbutton {
+       display: inline-block;
+       text-decoration: none;
+       width: 48px;
+       border-right: 1px solid #fff;
+       background: #c7e3ef;
+       padding: 3px 0;
+       margin-top: 1px;
+}
+
+.uibox .boxfooter .listbutton:first-child {
+       border-radius: 0 0 0 4px;
+}
+
+.boxfooter .listbutton .inner {
+       display: inline-block;
+       width: 48px;
+       height: 35px;
+       text-indent: -5000px;
+       background: url(images/buttons.png) -1000px 0 no-repeat;
+}
+
+.boxfooter .listbutton.add .inner {
+       background-position: 10px -1301px;
+}
+
+.boxfooter .listbutton.delete .inner {
+       background-position: 10px -1342px;
+}
+
+.boxfooter .listbutton.groupactions .inner {
+       background-position: 5px -1382px;
+}
+
+.boxfooter .listbutton.addto .inner {
+       background-position: 5px -1422px;
+}
+
+.boxfooter .listbutton.addcc .inner {
+       background-position: 5px -1462px;
+}
+
+.boxfooter .listbutton.addbcc {
+       width: 54px;
+}
+
+.boxfooter .listbutton.addbcc .inner {
+       width: 54px;
+       background-position: 2px -1502px;
+}
+
+.boxfooter .listbutton.removegroup .inner {
+       background-position: 5px -1540px;
+}
+
+.boxfooter .listbutton.disabled .inner {
+       opacity: 0.4;
+       filter: alpha(opacity=40);
+}
+
+.boxfooter .countdisplay {
+       display: inline-block;
+       position: relative;
+       top: 10px;
+       color: #69929e;
+       padding: 3px 6px;
+}
+
+.boxpagenav {
+       position: absolute;
+       top: 10px;
+       right: 6px;
+       width: auto;
+}
+
+.boxpagenav a.icon {
+       display: inline-block;
+       padding: 1px 3px;
+       height: 13px;
+       width: 14px;
+       text-indent: 1000px;
+       vertical-align: bottom;
+       overflow: hidden;
+       background: url(images/buttons.png) -4px -286px no-repeat;
+}
+
+.boxpagenav a.icon.prevpage {
+       background-position: -4px -301px;
+}
+
+.boxpagenav a.icon.nextpage {
+       background-position: -28px -301px;
+}
+
+.boxpagenav a.icon.lastpage {
+       background-position: -28px -286px;
+}
+
+.boxpagenav a.icon.disabled {
+       opacity: 0.4;
+       filter: alpha(opacity=40);
+}
+
+.centerbox {
+       width: 40em;
+       margin: 16px auto;
+}
+
+.errorbox {
+       width: 40em;
+       padding: 20px;
+}
+
+.errorbox h3 {
+       font-size: 16px;
+       margin-top: 0;
+}
+
+
+/*** Records table ***/
+
+table.records-table {
+       display: table;
+       width: 100%;
+       table-layout: fixed;
+       border-collapse: collapse;
+       border-spacing: 0;
+       border: 1px solid #bbd3da;
+}
+
+.boxlistcontent .records-table {
+       border: 0;
+}
+
+.records-table thead td {
+       color: #69939e;
+       font-size: 11px;
+       font-weight: bold;
+       background: #d6eaf3;
+       background: -moz-linear-gradient(left, #e3f2f6 0, #d6eaf3 14px, #d6eaf3 100%);
+       background: -webkit-gradient(linear, left top, right top, color-stop(0,#e3f2f6), color-stop(8%,#d6eaf3), color-stop(100%,#d6eaf3));
+       background: -o-linear-gradient(left, #e3f2f6 0, #d6eaf3 14px, #d6eaf3 100%);
+       background: -ms-linear-gradient(left, #e3f2f6 0, #d6eaf3 14px ,#d6eaf3 100%);
+       background: linear-gradient(left, #e3f2f6 0, #d6eaf3 14px, #d6eaf3 100%);
+       border-left: 1px solid #bbd3da;
+       padding: 8px 7px;
+       overflow: hidden;
+       text-overflow: ellipsis;
+}
+
+.records-table.sortheader thead td {
+       padding: 0;
+}
+
+.records-table thead td a,
+.records-table thead td span {
+       display: block;
+       padding: 7px 7px;
+       color: #69939e;
+       text-decoration: none;
+       overflow: hidden;
+       text-overflow: ellipsis;
+}
+
+.records-table tbody td {
+       padding: 2px 7px;
+       border-bottom: 1px solid #ddd;
+       border-left: 1px dotted #bbd3da;
+       white-space: nowrap;
+       cursor: default;
+       overflow: hidden;
+       text-overflow: ellipsis;
+       background-color: #fff;
+}
+
+.records-table thead tr td:first-child,
+.records-table tbody tr td:first-child {
+       border-left: 0;
+}
+
+.records-table tr.selected td {
+       color: #fff !important;
+       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%);
+}
+
+.records-table tr.selected td a,
+.records-table tr.selected td span {
+       color: #fff !important;
+}
+
+.records-table tr.unfocused td {
+       color: #fff !important;
+       background: #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;
+}
+
+
+/*** iFrames ***/
+
+#aboutframe {
+       width: 97%;
+       height: 100%;
+       border: 0;
+       padding: 0;
+}
+
+body.iframe {
+       background: #fff;
+       margin: 38px 0 10px 0;
+}
+
+body.iframe.floatingbuttons {
+       margin-bottom: 40px;
+}
+
+body.iframe.fullheight {
+       margin: 0;
+}
+
+.contentbox .boxtitle,
+body.iframe .boxtitle {
+       color: #777;
+       background: #eee;
+       background: -moz-linear-gradient(top, #eee 0%, #dfdfdf 100%);
+       background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#eee), color-stop(100%,#dfdfdf));
+       background: -o-linear-gradient(top, #eee 0%, #dfdfdf 100%);
+       background: -ms-linear-gradient(top, #eee 0%, #dfdfdf 100%);
+       background: linear-gradient(top, #eee 0%, #dfdfdf 100%);
+       border-bottom: 1px solid #ccc;
+}
+
+body.iframe .boxtitle {
+       position: fixed;
+       top: 0;
+       left: 0;
+       width: 100%;
+       z-index: 100;
+}
+
+body.iframe .footerleft.floating {
+       position: fixed;
+       left: 0;
+       bottom: 0;
+       width: 100%;
+       z-index: 110;
+       background: #fff;
+       padding-top: 8px;
+       padding-bottom: 12px;
+}
+
+body.iframe .footerleft.floating:before {
+       content: " ";
+       position: absolute;
+       top: -6px;
+       left: 0;
+       width: 100%;
+       height: 6px;
+       background: url(images/overflowshadow.png) top center no-repeat;
+}
+
+.boxcontent {
+       padding: 10px;
+}
+
+.contentbox .scroller {
+       position: absolute;
+       top: 34px;
+       left: 0;
+       right: 0;
+       bottom: 28px;
+       overflow: auto;
+}
+
+.iframebox {
+       position: absolute;
+       top: 0;
+       left: 0;
+       right: 0;
+       bottom: 28px;
+}
+
+.footerleft {
+       padding: 0 12px 4px 12px;
+}
+
+.propform fieldset {
+       margin-bottom: 20px;
+       border: 0;
+       padding: 0;
+}
+
+.propform fieldset legend {
+       display: block;
+       font-size: 14px;
+       font-weight: bold;
+       padding-bottom: 10px;
+       margin-bottom: 0;
+}
+
+.propform fieldset fieldset legend {
+       color: #666;
+       font-size: 12px;
+}
+
+fieldset.floating {
+       float: left;
+       margin-right: 10px;
+       margin-bottom: 10px;
+}
+
+table.propform {
+       width: 100%;
+       border-spacing: 0;
+       border-collapse: collapse;
+}
+
+ul.proplist li,
+table.propform td {
+       width: 80%;
+       padding: 4px 10px;
+       background: #eee;
+       border-bottom: 2px solid #fff;
+}
+
+table.propform td.title {
+       width: 20%;
+       color: #333;
+       padding-right: 20px;
+       white-space: nowrap;
+}
+
+table.propform .mceLayout td {
+       padding: 0;
+       border-bottom: 0;
+}
+
+ul.proplist {
+       list-style: none;
+       margin: 0;
+       padding: 0;
+}
+
+ul.proplist li {
+       width: auto;
+}
+
+#pluginbody {
+       position: absolute;
+       top: 0;
+       left: 0;
+       right: 0;
+       bottom: 0;
+}
+
+
+/*** Login form ***/
+
+#login-form {
+       position: relative;
+       width: 580px;
+       margin: 20ex auto 2ex auto;
+}
+
+#login-form .box-inner {
+       width: 430px;
+       background: url(images/linen_login.jpg) top left no-repeat #5c5c5c;
+       margin: 0 50px;
+       padding: 10px 24px 24px 24px;
+       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 {
+       background: url(images/login_shadow.png) top center no-repeat;
+       margin-top: -3px;
+       padding-top: 10px;
+}
+
+#login-form td.input {
+       width: 80%;
+       padding: 8px;
+}
+
+#login-form input[type="text"],
+#login-form input[type="password"] {
+       width: 100%;
+       border-color: #666;
+}
+
+#login-form input.button {
+       color: #444;
+       text-shadow: 0px 1px 1px #fff;
+       border-color: #f9f9f9;
+       background: #f9f9f9;
+       background: -moz-linear-gradient(top, #f9f9f9 0%, #e2e2e2 100%);
+       background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f9f9f9), color-stop(100%,#e2e2e2));
+       background: -o-linear-gradient(top, #f9f9f9 0%, #e2e2e2 100%);
+       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 {
+       color: #333;
+       background: -moz-linear-gradient(top, #dcdcdc 0%, #f9f9f9 100%);
+       background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#dcdcdc), color-stop(100%,#f9f9f9));
+       background: -o-linear-gradient(top, #dcdcdc 0%, #f9f9f9 100%);
+       background: -ms-linear-gradient(top, #dcdcdc 0%, #f9f9f9 100%);
+       background: linear-gradient(top, #dcdcdc 0%, #f9f9f9 100%);
+}
+
+#login-form form table {
+       width: 98%;
+}
+
+#login-form td.title {
+       width: 20%;
+       white-space: nowrap;
+       color: #cecece;
+       text-shadow: 0px 1px 1px black;
+       text-align: right;
+       padding-right: 1em;
+}
+
+#login-form p.formbuttons {
+       margin-top: 2em;
+       text-align: center;
+}
+
+#login-form #logo {
+       margin-bottom: 20px;
+}
+
+#login-form #message {
+       min-height: 40px;
+       padding: 5px 25px;
+       text-align: center;
+}
+
+#login-form #message div {
+       display: inline-block;
+       padding-right: 0;
+}
+
+#bottomline {
+       font-size: 90%;
+       text-align: center;
+       margin-top: 2em;
+}
+
+
+
+/*** quicksearch **/
+
+#quicksearchbar {
+       position: absolute;
+       right: 1px;
+       top: 0;
+       width: 240px;
+}
+
+#quicksearchbar input {
+       width: 176px;
+       margin: 0;
+       margin-top: 7px;
+       padding: 3px 30px 3px 34px;
+       height: 18px;
+       background: #f1f1f1;
+       border-color: #ababab;
+       font-weight: bold;
+       font-size: 11px;
+}
+
+#quicksearchbar #searchmenulink {
+       position: absolute;
+       top: 12px;
+       left: 6px;
+}
+
+#quicksearchbar #searchreset {
+       position: absolute;
+       top: 11px;
+       right: 1px;
+}
+
+
+/*** toolbar ***/
+
+.toolbar .spacer {
+       display: inline-block;
+       width: 24px;
+       height: 40px;
+       padding: 0;
+}
+
+.toolbar a.button {
+       text-align: center;
+       font-size: 10px;
+       color: #555;
+       min-width: 50px;
+       max-width: 75px;
+       height: 13px;
+       overflow: hidden;
+       text-overflow: ellipsis;
+       white-space: nowrap;
+       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;
+}
+
+.toolbar a.button.disabled {
+       opacity: 0.4;
+       filter: alpha(opacity=40);
+}
+
+.dropbutton {
+       display: inline-block;
+       position: relative;
+}
+
+.dropbutton .dropbuttontip {
+       display: block;
+       position: absolute;
+       right: 0;
+       top: 0;
+       height: 42px;
+       width: 18px;
+       background: url(images/buttons.png) 0 -1255px no-repeat;
+       cursor: pointer;
+}
+
+.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 {
+       background-position: 0 -1255px;
+}
+
+.dropbutton a.button {
+    margin-left: 0;
+    padding-left: 0;
+    margin-right: 0;
+    padding-right: 0;
+}
+
+.toolbar a.button.back {
+       background-position: 0 -1216px;
+}
+
+.toolbar a.button.checkmail {
+       background-position: center -1176px;
+}
+
+.toolbar a.button.compose {
+       background-position: center -530px;
+}
+
+.toolbar a.button.reply {
+       background-position: center -570px;
+}
+
+.toolbar a.button.reply-all {
+       min-width: 64px;
+       background-position: left -610px;
+}
+
+.toolbar a.button.forward {
+       min-width: 64px;
+       background-position: left -650px;
+}
+
+.toolbar a.button.delete {
+       background-position: center -690px;
+}
+
+.toolbar a.button.archive {
+       background-position: center -730px;
+}
+
+.toolbar a.button.junk {
+       background-position: center -770px;
+}
+
+.toolbar a.button.print {
+       background-position: center -810px;
+}
+
+.toolbar a.button.markmessage {
+       background-position: center -1094px;
+}
+
+.toolbar a.button.more {
+       background-position: center -850px;
+}
+
+.toolbar a.button.attach {
+       background-position: center -890px;
+}
+
+.toolbar a.button.spellcheck {
+       min-width: 64px;
+       background-position: left -930px;
+}
+
+.toolbar a.button.spellcheck.selected {
+       background-position: left -1580px;
+       color: #1978a1;
+}
+
+.toolbar a.button.insertsig {
+       background-position: center -1135px;
+}
+
+.toolbar a.button.search {
+       background-position: center -970px;
+}
+
+.toolbar a.button.import {
+       background-position: center -1012px;
+}
+
+.toolbar a.button.export {
+       background-position: center -1054px;
+}
+
+a.menuselector {
+       display: inline-block;
+       border: 1px solid #ababab;
+       border-radius: 4px;
+       background: #f8f8f8;
+       background: -moz-linear-gradient(top, #f8f8f8 0%, #dddddd 100%);
+       background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f8f8f8), color-stop(100%,#dddddd));
+       background: -o-linear-gradient(top, #f8f8f8 0%, #dddddd 100%);
+       background: -ms-linear-gradient(top, #f9f9f9 0%, #dddddd 100%);
+       background: linear-gradient(top, #f8f8f8 0%, #dddddd 100%);
+       text-decoration: none;
+       color: #333;
+       cursor: pointer;
+       white-space: nowrap;
+}
+
+a.menuselector .handle {
+       display: inline-block;
+       padding: 0 32px 0 6px;
+       height: 20px;
+       line-height: 19px;
+       text-shadow: 0px 1px 1px #fff;
+       background: url(images/selector.png) right center no-repeat;
+       border-radius: 4px;
+}
+
+a.menuselector:active {
+       background: #dddddd;
+       background: -moz-linear-gradient(top, #dddddd 0%, #f8f8f8 100%);
+       background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#dddddd), color-stop(100%,#f8f8f8));
+       background: -o-linear-gradient(top, #dddddd 0%, #f8f8f8 100%);
+       background: -ms-linear-gradient(top, #dddddd 0%, #f8f8f8 100%);
+       background: linear-gradient(top, #dddddd 0%, #f8f8f8 100%);
+       text-decoration: none;
+}
+
+select.decorated {
+       position: relative;
+       z-index: 10;
+       opacity: 0;
+       height: 22px;
+       cursor: pointer;
+       filter: alpha(opacity=0);
+       -khtml-appearance: none;
+       -webkit-appearance: none;
+}
+
+html.opera select.decorated {
+       opacity: 1;
+}
+
+select.decorated option {
+       color: #fff;
+       background: #444;
+       border: 0;
+       border-top: 1px solid #5a5a5a;
+       border-bottom: 1px solid #333;
+       text-shadow: 0px 1px 1px #333;
+       padding: 4px 6px;
+       outline: none;
+}
+
+
+/*** quota indicator ***/
+
+#quotadisplay {
+       left: 6px;
+       font-size: 12px;
+       font-weight: bold;
+       text-shadow: 0px 1px 1px #fff;
+       padding-left: 30px;
+       height: 18px;
+       background: url(images/quota.png) -100px 0 no-repeat;
+}
+
+/*** popup menus ***/
+
+.popupmenu,
+#rcmKSearchpane {
+       display: none;
+       position: absolute;
+       top: 32px;
+       left: 90px;
+       width: auto;
+       background: #444;
+       border: 1px solid #999;
+       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 {
+       border-radius: 0 0 4px 4px;
+       border-top: 0;
+}
+
+ul.toolbarmenu,
+#rcmKSearchpane ul {
+       margin: 0;
+       padding: 0;
+       list-style: none;
+}
+
+.googie_list td,
+ul.toolbarmenu li,
+#rcmKSearchpane ul li {
+       color: #fff;
+       white-space: nowrap;
+       min-width: 130px;
+       margin: 0;
+       border-top: 1px solid #5a5a5a;
+       border-bottom: 1px solid #333;
+}
+
+.googie_list tr:first-child td,
+ul.toolbarmenu li:first-child,
+select.decorated option:first-child {
+       border-top: 0;
+}
+
+.googie_list tr:last-child td,
+ul.toolbarmenu li:last-child,
+select.decorated option:last-child {
+       border-bottom: 0;
+}
+
+.googie_list td span,
+ul.toolbarmenu li a {
+       display: block;
+       color: #666;
+       text-shadow: 0px 1px 1px #333;
+       text-decoration: none;
+       min-height: 14px;
+       padding: 6px 10px 6px 10px;
+}
+
+.googie_list td span {
+       padding: 3px 10px;
+}
+
+.googie_list td span,
+ul.toolbarmenu li a.active {
+       color: #fff;
+       cursor: default;
+}
+
+.googie_list td.googie_list_onhover,
+ul.toolbarmenu li a.active:hover,
+#rcmKSearchpane ul li.selected,
+select.decorated option:hover,
+select.decorated option[selected='selected'] {
+       background-color: #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%);
+}
+
+ul.toolbarmenu.iconized li a,
+ul.toolbarmenu.selectable li a {
+       padding-left: 30px;
+}
+
+ul.toolbarmenu.selectable li a.selected {
+       background: url(images/messages.png) 4px -27px no-repeat;
+}
+
+ul.toolbarmenu li label {
+       display: block;
+       color: #fff;
+       padding: 4px 8px;
+       text-shadow: 0px 1px 1px #333;
+}
+
+ul.toolbarmenu li a.icon {
+       color: #eee;
+       padding: 2px 6px;
+}
+
+ul.toolbarmenu li span.icon {
+       display: block;
+       min-height: 14px;
+       padding: 4px 4px 1px 24px;
+       height: 17px;
+       background-image: url(images/listicons.png);
+       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 {
+       background-position: 0 -1220px;
+}
+
+ul.toolbarmenu li span.unread {
+       background-position: 0 -1196px;
+}
+
+ul.toolbarmenu li span.flagged {
+       background-position: 0 -1244px;
+}
+
+ul.toolbarmenu li span.unflagged {
+       background-position: 0 -1268px;
+}
+
+ul.toolbarmenu li span.mail {
+       background-position: 0 -1293px;
+}
+
+ul.toolbarmenu li span.list {
+       background-position: 0 -1317px;
+}
+
+ul.toolbarmenu li span.invert {
+       background-position: 0 -1340px;
+}
+
+ul.toolbarmenu li span.cross {
+       background-position: 0 -1365px;
+}
+
+ul.toolbarmenu li span.print {
+       background-position: 0 -1436px;
+}
+
+ul.toolbarmenu li span.download {
+       background-position: 0 -1412px;
+}
+
+ul.toolbarmenu li span.edit {
+       background-position: 0 -1388px;
+}
+
+ul.toolbarmenu li span.viewsource {
+       background-position: 0 -1460px;
+}
+
+ul.toolbarmenu li span.extwin {
+       background-position: 0 -1484px;
+}
+
+ul.toolbarmenu li span.conversation {
+       background-position: 0 -1532px;
+}
+
+#rcmKSearchpane {
+       border-radius: 0 0 4px 4px;
+       border-top: 0;
+}
+
+#rcmKSearchpane ul li {
+       text-shadow: 0px 1px 1px #333;
+       text-decoration: none;
+       min-height: 14px;
+       padding: 6px 10px 6px 10px;
+       border: 0;
+       cursor: default;
+}
+
+.popupdialog {
+       display: none;
+       padding: 10px;
+}
+
+.popupdialog .formbuttons {
+       margin: 20px 0 4px 0;
+}
+
+.ui-dialog .prompt input {
+       display: block;
+       margin: 8px 0;
+}
+
+.hint {
+       margin: 4px 0;
+       color: #999;
+       text-shadow: 0px 1px 1px #fff;
+}
+
+.splitter {
+       user-select: none;
+       -moz-user-select: none;
+       -khtml-user-select: none;
+       position: absolute;
+       background: url(images/splitter.png) center no-repeat;
+}
+
+.splitter-h {
+       height: 10px;
+       width: 100%;
+       cursor: n-resize;
+       cursor: row-resize;
+       background-position: center 0;
+}
+
+.splitter-v {
+       width: 10px;
+       height: 100%;
+       cursor: e-resize;
+       cursor: col-resize;
+       background-position: 0 center;
+}
+
+#rcmdraglayer {
+       min-width: 260px;
+       width: auto !important;
+       width: 260px;
+       padding: 6px 8px;
+       background: #444;
+       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;
+}
+
+#rcmdraglayer:after {
+       content: "";
+       position: absolute;
+       top: 6px;
+       left: -6px;
+       border-style: solid;
+       border-width: 6px 6px 6px 0;
+       border-color: transparent #444;
+       /* reduce the damage in FF3.0 */
+       display: block; 
+       width: 0;
+       z-index: 251;
+}
+
+.draglayercopy:before {
+       position: absolute;
+       bottom: -6px;
+       left: -6px;
+       content: " ";
+       width: 16px;
+       height: 16px;
+       background: url(images/buttons.png) -7px -358px no-repeat;
+       z-index: 255;
+}
+
+
+/*** attachment list ***/
+
+.attachmentslist {
+       list-style: none;
+       margin: 0;
+       padding: 0;
+       overflow: hidden;
+       text-overflow: ellipsis;
+}
+
+.attachmentslist li {
+       display: block;
+       position: relative;
+       background: url(images/filetypes.png) 0 0 no-repeat;
+       margin-bottom: 1px;
+}
+
+.attachmentslist li.pdf {
+       background-position: 0 -26px;
+}
+
+.attachmentslist li.doc,
+.attachmentslist li.docx,
+.attachmentslist li.msword {
+       background-position: 0 -52px;
+}
+
+.attachmentslist li.odt {
+       background-position: 0 -78px;
+}
+
+.attachmentslist li.xls,
+.attachmentslist li.xlsx,
+.attachmentslist li.msexcel {
+       background-position: 0 -104px;
+}
+
+.attachmentslist li.ods {
+       background-position: 0 -130px;
+}
+
+.attachmentslist li.zip,
+.attachmentslist li.gz {
+       background-position: 0 -156px;
+}
+
+.attachmentslist li.rar {
+       background-position: 0 -182px;
+}
+
+.attachmentslist li.image {
+       background-position: 0 -208px;
+}
+
+.attachmentslist li.jpg,
+.attachmentslist li.jpeg {
+       background-position: 0 -234px;
+}
+
+.attachmentslist li.png {
+       background-position: 0 -260px;
+}
+
+.attachmentslist li.m4p {
+       background-position: 0 -286px;
+}
+
+.attachmentslist li.mp3,
+.attachmentslist li.audio {
+       background-position: 0 -312px;
+}
+
+.attachmentslist li.video {
+       background-position: 0 -338px;
+}
+
+.attachmentslist li.txt,
+.attachmentslist li.text {
+       background-position: 0 -416px;
+}
+
+.attachmentslist li.ics,
+.attachmentslist li.calendar {
+       background-position: 0 -364px;
+}
+
+.attachmentslist li.vcard {
+       background-position: 0 -390px;
+}
+
+.attachmentslist li.html {
+       background-position: 0 -442px;
+}
+
+.attachmentslist li a,
+#compose-attachments ul li {
+       display: block;
+       color: #333;
+       font-weight: bold;
+       padding: 8px 4px 3px 30px;
+       text-shadow: 0px 1px 1px #fff;
+       text-decoration: none;
+       white-space: nowrap;
+       overflow: hidden;
+       text-overflow: ellipsis;
+}
+
+#compose-attachments ul li {
+       padding-right: 28px;
+}
+
+.attachmentslist li a:hover {
+       text-decoration: underline;
+}
+
+.attachmentslist li.uploading {
+       background: url(images/ajaxloader.gif) 2px 6px no-repeat;
+}
+
+.attachmentslist li a.delete,
+.attachmentslist li a.cancelupload {
+       position: absolute;
+       top: 6px;
+       right: 0;
+       width: 24px;
+       height: 18px;
+       padding: 0;
+       text-decoration: none;
+       text-indent: -5000px;
+       background: url(images/buttons.png) -7px -337px no-repeat;
+}
+
+.attachmentslist li a.cancelupload {
+       background-position: -7px -377px;
+}
+
+
+/*** fieldset tabs ***/
+
+.tabsbar {
+       margin-bottom: 12px;
+       padding-top: 15px;
+       height: 27px;
+       white-space: nowrap;
+}
+
+.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%);
+}
+
+.tabsbar .tablink:last-child {
+       background: none;
+}
+
+.tabsbar .tablink:last-child a {
+       border-right: 0;
+}
+
+.tabsbar .tablink a {
+       padding: 15px;
+       color: #999;
+       font-size: 12px;
+       font-weight: bold;
+       text-decoration: none;
+       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 {
+       border: 0;
+       padding: 0;
+       margin-left: 0;
+}
diff --git a/skins/larry/svggradient.php b/skins/larry/svggradient.php
new file mode 100644 (file)
index 0000000..8daf517
--- /dev/null
@@ -0,0 +1,45 @@
+<?php
+
+/**
+ * Render SVG gradients for IE 9
+ *
+ * Copyright (c) 2012, The Roundcube Dev Team
+ *
+ * The contents are subject to the Creative Commons Attribution-ShareAlike
+ * License. It is allowed to copy, distribute, transmit and to adapt the work
+ * by keeping credits to the original autors in the README file.
+ * See http://creativecommons.org/licenses/by-sa/3.0/ for details.
+ *
+ * $Id$
+ */
+
+ini_set('error_reporting', E_ALL &~ (E_NOTICE | E_STRICT));
+
+header('Content-Type: image/svg+xml');
+header("Expires: ".gmdate("D, d M Y H:i:s", time()+864000)." GMT");
+header("Cache-Control: max-age=864000");
+header("Pragma: ");
+
+$svg_stops = '';
+$color_stops = explode(';', preg_replace('/[^a-f0-9,;%]/i', '', $_GET['c']));
+$gradient_coords = !empty($_GET['h']) ? 'x1="0%" y1="0%" x2="100%" y2="0%"' : 'x1="0%" y1="0%" x2="0%" y2="100%"';
+$last = count($color_stops) - 1;
+foreach ($color_stops as $i => $stop) {
+       list($color, $offset) = explode(',', $stop);
+       if ($offset)
+               $offset = intval($offset);
+       else
+               $offset = $i == $last ? 100 : 0;
+
+       $svg_stops .= '<stop offset="' . $offset . '%" stop-color="#' . $color . '" stop-opacity="1"/>';
+}
+
+?>
+<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="none" version="1.0" width="100%" height="100%">
+<defs>
+  <linearGradient id="LG1" <?php echo $gradient_coords; ?> spreadMethod="pad">
+    <?php echo $svg_stops; ?>
+  </linearGradient>
+</defs>
+<rect width="100%" height="100%" style="fill:url(#LG1);"/>
+</svg>
diff --git a/skins/larry/svggradients.css b/skins/larry/svggradients.css
new file mode 100644 (file)
index 0000000..5b3fedb
--- /dev/null
@@ -0,0 +1,178 @@
+/**
+ * Roundcube webmail SVG-based gradients for IE 9
+ *
+ * Copyright (c) 2012, The Roundcube Dev Team
+ *
+ * The contents are subject to the Creative Commons Attribution-ShareAlike
+ * License. It is allowed to copy, distribute, transmit and to adapt the work
+ * by keeping credits to the original autors in the README file.
+ * See http://creativecommons.org/licenses/by-sa/3.0/ for details.
+ *
+ * $Id$
+ */
+
+input.button {
+       background-image: url(svggradient.php?c=f9f9f9;e6e6e6);
+}
+
+.formbuttons input.button {
+       background-image: url(svggradient.php?c=7b7b7b;606060);
+}
+
+.formbuttons input.button:active {
+       background-image: url(svggradient.php?c=5c5c5c;7b7b7b);
+}
+
+input.button.mainaction {
+       background-image: url(svggradient.php?c=505050;2a2e31);
+}
+
+input.button.mainaction:active {
+       background-image: url(svggradient.php?c=2a2e31;505050);
+}
+
+a.button {
+       background-image: url(svggradient.php?c=f9f9f9;e6e6e6);
+}
+
+a.button.pressed,
+a.button:active,
+input.button:active {
+       background-image: url(svggradient.php?c=e6e6e6;f9f9f9);
+}
+
+.pagenav.dark a.button {
+       background-image: url(svggradient.php?c=d8d8d8;bababa);
+}
+
+.pagenav.dark a.button.pressed {
+       background-image: url(svggradient.php?c=bababa;d8d8d8);
+}
+
+#message.statusbar {
+       background-image: url(svggradient.php?c=eaeaea;c8c8c8);
+}
+
+.ui-dialog.popupmessage .ui-dialog-titlebar {
+       background-image: url(svggradient.php?c=e3e3e3;cfcfcf);
+}
+
+.ui-dialog.popupmessage .ui-widget-content {
+       background-image: url(svggradient.php?c=eeeeee;dcdcdc);
+}
+
+#topnav {
+       background-image: url(svggradient.php?c=404040;060606);
+}
+
+.records-table tr.selected td {
+       background-image: url(svggradient.php?c=019bc6;017cb4);
+}
+
+.contentbox .boxtitle,
+body.iframe .boxtitle {
+       background-image: url(svggradient.php?c=eeeeee;dfdfdf);
+/*     background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20preserveAspectRatio%3D%22none%22%20version%3D%221.0%22%20width%3D%22100%25%22%20height%3D%22100%25%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22mLG1%22%20x1%3D%220%25%22%20y1%3D%220%25%22%20x2%3D%220%25%22%20y2%3D%22100%25%22%20spreadMethod%3D%22pad%22%3E%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%23eeeeee%22%20stop-opacity%3D%221%22/%3E%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23dfdfdf%22%20stop-opacity%3D%221%22/%3E%3C/linearGradient%3E%3C/defs%3E%3Crect%20width%3D%22100%25%22%20height%3D%22100%25%22%20style%3D%22fill%3Aurl%28%23mLG1%29%3B%22/%3E%3C/svg%3E);*/
+}
+
+#login-form input.button {
+       background-image: url(svggradient.php?c=f9f9f9;e2e2e2);
+}
+
+#login-form input.button:active {
+       background-image: url(svggradient.php?c=dcdcdc;f9f9f9);
+}
+
+.toolbar a.button {
+       filter: none;
+}
+
+a.menuselector {
+       background-image: url(svggradient.php?c=f8f8f8;dddddd);
+}
+
+a.menuselector:active {
+       background-image: url(svggradient.php?c=dddddd;f8f8f8);
+}
+
+.googie_list td.googie_list_onhover,
+ul.toolbarmenu li a.active:hover,
+#rcmKSearchpane ul li.selected {
+       background-image: url(svggradient.php?c=00aad6;008fc9);
+}
+
+.tabsbar .tablink {
+       background-image: url(svggradient.php?c=f8f8f8;d3d3d3,50;f8f8f8);
+       outline: none;
+}
+
+.tabsbar .tablink.selected a {
+       background-image: url(svggradient.php?c=ffffff;efefef);
+       outline: none;
+}
+
+
+/*** addressbook.css ***/
+
+.contactfieldgroup {
+       background-image: url(svggradient.php?c=f7f7f7;eeeeee);
+}
+
+.contactfieldgroup legend {
+       background-image: url(svggradient.php?c=f0f0f0;d6d6d6);
+}
+
+
+/*** mail.css ***/
+
+#mailboxlist li.mailbox .unreadcount {
+       background-image: url(svggradient.php?c=82acb5;6a939f);
+}
+
+#mailboxlist li.mailbox.selected .unreadcount {
+       background-image: url(svggradient.php?c=005d76;004558);
+}
+
+#messageheader, #partheader, #composeheaders {
+       background-image: url(svggradient.php?c=ffffff;f0f0f0);
+}
+
+#previewheaderstoggle {
+       background-image: url(svggradient.php?c=fbfbfb;e9e9e9&h=1);
+}
+
+#messagelistfooter {
+       background-image: url(svggradient.php?c=ebebeb;c6c6c6);
+}
+
+/*** jqueryui theme ***/
+
+.ui-menu .ui-menu-item a.ui-state-hover,
+.ui-menu .ui-menu-item a.ui-state-active {
+       background-image: url(svggradient.php?c=00aad6;008fc9) !important;
+}
+
+.ui-button.ui-state-default {
+       background-image: url(svggradient.php?c=f9f9f9;e6e6e6) !important;
+}
+
+.ui-button.ui-state-active {
+       background-image: url(svggradient.php?c=e6e6e6;f9f9f9) !important;
+}
+
+.ui-tabs .ui-tabs-nav li {
+       background-image: url(svggradient.php?c=f8f8f8;d3d3d3,50;d3d3d3) !important;
+}
+
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected a {
+       background-image: url(svggradient.php?c=fafafa,40;e4e4e4) !important;
+}
+
+.ui-datepicker td a.ui-state-default {
+       background-image: url(svggradient.php?c=e6e6e6;d6d6d6) !important;
+}
+
+.ui-datepicker td a.ui-state-active {
+       background-image: url(svggradient.php?c=00acd4;008fc7) !important;
+}
+
diff --git a/skins/larry/templates/about.html b/skins/larry/templates/about.html
new file mode 100644 (file)
index 0000000..4fddfc5
--- /dev/null
@@ -0,0 +1,28 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+</head>
+<body class="ui-widget-content">
+
+<div class="readtext">
+<roundcube:object name="aboutcontent" />
+
+<h2 class="sysname">Roundcube Webmail <roundcube:object name="version" /></h2>
+<p class="copyright">Copyright &copy; 2005-2012, 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/>
+Some <a href="http://roundcube.net/license">exceptions</a> for skins &amp; plugins apply.
+</p>
+
+</div>
+
+<div class="readtext">
+<h3><roundcube:label name="installedplugins" en_US="Installed plugins" /></h3>
+<roundcube:object name="pluginlist" id="pluginlist" class="records-table" />
+</div>
+
+</body>
+</html>
diff --git a/skins/larry/templates/addressbook.html b/skins/larry/templates/addressbook.html
new file mode 100644 (file)
index 0000000..c39c2fe
--- /dev/null
@@ -0,0 +1,102 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+</head>
+<body class="noscroll">
+
+<roundcube:include file="/includes/header.html" />
+
+<div id="mainscreen">
+
+<!-- toolbar -->
+<div id="addressbooktoolbar" class="toolbar">
+       <roundcube:button command="import" type="link" class="button import disabled" classAct="button import" classSel="button import pressed" label="import" title="importcontacts" />
+       <roundcube:button command="export" type="link" class="button export disabled" classAct="button export" classSel="button export pressed" label="export" title="exportvcards" />
+       <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>
+
+<div id="addressview-left">
+
+<!-- sources/groups list -->
+<div id="directorylistbox" class="uibox listbox">
+<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="listing" />
+</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;" />
+</div>
+</div>
+
+</div><!-- end addressview-left -->
+
+<div id="addressview-right">
+
+<!-- search box -->
+<div id="quicksearchbar">
+<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=" " />
+</div>
+
+<!-- contacts list -->
+<div id="addresslist" class="uibox listbox">
+<h2 class="boxtitle"><roundcube:label name="contacts" /></h2>
+<div class="scroller withfooter">
+<roundcube:object name="addresslist" id="contacts-table" class="listing" noheader="true" />
+</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" />
+</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>
+
+
+<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" />
+       </div>
+       <roundcube:object name="message" id="message" class="statusbar" />
+</div>
+
+
+</div><!-- end addressview-right -->
+
+</div><!-- end mainscreen -->
+
+
+<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)" /> <roundcube:label name="name" /></label></li>
+               <li><label><input type="checkbox" name="s_mods[]" value="firstname" id="s_mod_firstname" onclick="UI.set_searchmod(this)" /> <roundcube:label name="firstname" /></label></li>
+               <li><label><input type="checkbox" name="s_mods[]" value="surname" id="s_mod_surname" onclick="UI.set_searchmod(this)" /> <roundcube:label name="surname" /></label></li>
+               <li><label><input type="checkbox" name="s_mods[]" value="email" id="s_mod_email" onclick="UI.set_searchmod(this)" /> <roundcube:label name="email" /></label></li>
+               <li><label><input type="checkbox" name="s_mods[]" value="*" id="s_mod_all" onclick="UI.set_searchmod(this)" /> <roundcube:label name="allfields" /></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>
+
+<roundcube:include file="/includes/footer.html" />
+
+</body>
+</html>
diff --git a/skins/larry/templates/compose.html b/skins/larry/templates/compose.html
new file mode 100644 (file)
index 0000000..43ac0f0
--- /dev/null
@@ -0,0 +1,188 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<roundcube:if condition="config:enable_spellcheck" />
+<link rel="stylesheet" type="text/css" href="/googiespell.css" />
+<roundcube:endif />
+</head>
+<body>
+
+<div class="minwidth">
+<roundcube:include file="/includes/header.html" />
+
+<div id="mainscreen">
+
+<div id="composeview-left">
+
+<!-- inline address book -->
+<div id="compose-contacts" class="uibox listbox">
+<h2 class="boxtitle"><roundcube:label name="contacts" /></h2>
+       <roundcube:object name="addressbooks" id="directorylist" class="listing" />
+       <div class="scroller withfooter">
+               <roundcube:object name="addresslist" id="contacts-table" class="listing" noheader="true" />
+       </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;|" />
+</div>
+</div>
+
+</div>
+
+<div id="composeview-right">
+
+<!-- toolbar -->
+<div id="messagetoolbar" class="fullwidth">
+<div id="mailtoolbar" class="toolbar">
+       <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>
+       </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" />
+       <roundcube:container name="toolbar" id="compose-toolbar" />
+</div>
+</div>
+
+<form name="form" action="./" method="post" id="compose-content" class="uibox">
+
+<!-- message headers -->
+<div id="composeheaders">
+
+<table class="headers-table compose-headers">
+<tbody>
+       <tr>
+               <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>
+               </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>
+       </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>
+               </td>
+               <td class="editfield"><roundcube:object name="composeHeaders" part="cc" form="form" id="_cc" cols="70" rows="1" tabindex="3" /></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>
+               </td>
+               <td colspan="2" class="editfield"><roundcube:object name="composeHeaders" part="bcc" form="form" id="_bcc" cols="70" rows="1" tabindex="4" /></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>
+               </td>
+               <td class="editfield"><roundcube:object name="composeHeaders" part="replyto" form="form" id="_replyto" size="70" tabindex="5" /></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>
+               </td>
+               <td class="editfield"><roundcube:object name="composeHeaders" part="followupto" form="form" id="_followupto" size="70" tabindex="7" /></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>
+               </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>
+       </tr>
+</tbody>
+</table>
+
+<div id="composebuttons" class="formbuttons">
+       <roundcube:button type="input" command="send" class="button mainaction" label="sendmessage" tabindex="11" />
+       <roundcube:button type="input" command="savedraft" class="button" label="savemessage" tabindex="12" />
+       <roundcube:button type="input" command="list" class="button" label="cancel" tabindex="13" />
+</div>
+
+</div>
+
+<!-- (collapsable) message options -->
+<div id="composeoptionsbox">
+       <span class="composeoption">
+               <label><roundcube:label name="options" />
+                       <a href="#options" id="composeoptionstoggle">&nbsp;</a></label>
+       </span>
+       
+       <div id="composeoptions">
+               <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>
+               </span>
+               <roundcube:endif />
+               <span class="composeoption">
+                       <label for="rcmcomposepriority"><roundcube:label name="priority" />
+                               <roundcube:object name="prioritySelector" form="form" id="rcmcomposepriority" /></label>
+               </span>
+               <span class="composeoption">
+                       <label><roundcube:object name="receiptCheckBox" form="form" id="rcmcomposereceipt" /> <roundcube:label name="returnreceipt" /></label>
+               </span>
+               <span class="composeoption">
+                       <label><roundcube:object name="dsnCheckBox" form="form" id="rcmcomposedsn" /> <roundcube:label name="dsn" /></label>
+               </span>
+               <span class="composeoption">
+                       <label><roundcube:label name="savesentmessagein" /> <roundcube:object name="storetarget" maxlength="30" style="max-width:12em" /></label>
+               </span>
+               <roundcube:container name="composeoptions" id="composeoptions" />
+       </div>
+</div>
+
+<!-- message compose body -->
+<div id="composeview-bottom">
+       <div id="composebodycontainer">
+               <roundcube:object name="composeBody" id="composebody" form="form" cols="70" rows="20" tabindex="9" />
+       </div>
+       <div id="compose-attachments" class="rightcol">
+               <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" tabindex="10" />
+               </div>
+               <roundcube:object name="composeAttachmentList" id="attachment-list" class="attachmentslist" />
+       </div>
+</div>
+
+</form>
+
+<div id="mailview-bottom" class="uibox">
+       <roundcube:object name="message" id="message" class="statusbar" />
+</div>
+
+</div><!-- end mailview-right -->
+
+</div><!-- end mainscreen -->
+
+</div><!-- end minwidth -->
+
+<div id="upload-dialog" class="propform popupdialog" title="<roundcube:label name='addattachment' />">
+       <roundcube:object name="composeAttachmentForm" id="uploadform" attachmentFieldSize="40" buttons="no" />
+       <div class="formbuttons">
+               <roundcube:button command="send-attachment" type="input" class="button mainaction" label="upload" />
+               <roundcube:button name="close" type="input" class="button" label="cancel" onclick="UI.show_uploadform()" />
+       </div>
+</div>
+
+<div id="spellmenu" class="popupmenu"></div>
+
+<roundcube:include file="/includes/footer.html" />
+
+</body>
+</html>
diff --git a/skins/larry/templates/contact.html b/skins/larry/templates/contact.html
new file mode 100644 (file)
index 0000000..d252049
--- /dev/null
@@ -0,0 +1,33 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+</head>
+<body class="iframe">
+
+<h1 class="boxtitle"><roundcube:label name="contactproperties" /></h1>
+
+<div id="contact-details" class="boxcontent">
+       <roundcube:if condition="strlen(env:sourcename)" />
+               <div id="sourcename"><roundcube:label name="addressbook" />: <roundcube:var name="env:sourcename" /></div>
+       <roundcube:endif />
+
+       <div id="contactphoto"><roundcube:object name="contactphoto" id="contactpic" placeholder="/images/contactpic.png" /></div>
+       <roundcube:object name="contacthead" id="contacthead" />
+       <br style="clear:both" />
+
+       <div id="contacttabs" class="tabbed">
+               <roundcube:object name="contactdetails" />
+       </div>
+
+</div>
+
+<div id="headerbuttons" class="formbuttons">
+       <roundcube:button command="edit" type="input" class="button mainaction" label="editcontact" condition="!ENV:readonly" />
+</div>
+
+<roundcube:include file="/includes/footer.html" />
+
+</body>
+</html>
diff --git a/skins/larry/templates/contactedit.html b/skins/larry/templates/contactedit.html
new file mode 100644 (file)
index 0000000..2f0c111
--- /dev/null
@@ -0,0 +1,55 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+</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>
+
+<form name="editform" method="post" action="./" 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">
+               <roundcube:object name="contactphoto" id="contactpic" placeholder="/images/contactpic.png" />
+               <roundcube:if condition="env:photocol" />
+               <div class="formlinks">
+                       <roundcube:button command="upload-photo" id="uploadformlink" type="link" label="replacephoto" class="iconlink upload disabled" classAct="iconlink upload active" onclick="UI.show_uploadform();return false" condition="env:photocol" /><br/>
+                       <roundcube:button command="delete-photo" type="link" label="delete" class="iconlink delete disabled" classAct="iconlink delete active" condition="env:photocol" />
+               </div>
+               <roundcube:endif />
+       </div>
+
+       <roundcube:object name="contactedithead" id="contacthead" size="16" form="editform" />
+       <br style="clear:both" />
+
+       <div id="contacttabs" class="tabbed">
+               <roundcube:object name="contacteditform" size="40" textareacols="60" form="editform" />
+       </div>
+
+</form>
+
+<div class="footerleft formbuttons">
+       <roundcube:button command="save" type="input" class="button mainaction" label="save" />
+       <roundcube:button command="show" type="input" class="button" label="cancel" condition="env:action=='edit'" />
+       <roundcube:button name="cancel" type="input" class="button" label="cancel" onclick="history.back()" condition="env:action=='add'" />
+</div>
+
+<div id="upload-dialog" class="propform popupdialog" title="<roundcube:label name='uploadphoto' />">
+       <roundcube:object name="photoUploadForm" id="upload-form" size="30" buttons="no" />
+       <div class="formbuttons">
+               <roundcube:button command="upload-photo" type="input" class="button mainaction" label="upload" />
+               <roundcube:button name="close" type="input" class="button" label="cancel" onclick="UI.show_uploadform()" />
+       </div>
+</div>
+
+<roundcube:include file="/includes/footer.html" />
+
+</body>
+</html>
diff --git a/skins/larry/templates/contactsearch.html b/skins/larry/templates/contactsearch.html
new file mode 100644 (file)
index 0000000..e622ddf
--- /dev/null
@@ -0,0 +1,21 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+</head>
+<body class="iframe">
+
+<h1 class="boxtitle"><roundcube:label name="advsearch" /></h1>
+
+<div id="contact-details" class="boxcontent">
+       <roundcube:object name="searchform" id="advsearchform" class="tabbed" size=30 />
+       <p class="formbuttons">
+               <roundcube:button command="save" type="input" class="button mainaction" label="search" />
+       </p>
+</div>
+
+<roundcube:include file="/includes/footer.html" />
+
+</body>
+</html>
diff --git a/skins/larry/templates/error.html b/skins/larry/templates/error.html
new file mode 100644 (file)
index 0000000..cd0fc96
--- /dev/null
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+</head>
+<body>
+
+<roundcube:include file="/includes/header.html" />
+
+<div class="uibox centerbox errorbox">
+$__page_content
+</div>
+
+</body>
+</html>
diff --git a/skins/larry/templates/folderedit.html b/skins/larry/templates/folderedit.html
new file mode 100644 (file)
index 0000000..18d2469
--- /dev/null
@@ -0,0 +1,25 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+</head>
+<body class="iframe">
+
+<h1 class="boxtitle"><roundcube:label name="folderproperties" /></h1>
+
+<div class="boxcontent">
+<roundcube:object name="folderdetails" class="propform" />
+</div>
+
+<div class="footerleft formbuttons">
+       <roundcube:button command="save" type="input" class="button mainaction" label="save" />
+       <roundcube:if condition="!strlen(request:_mbox)" />
+       <input type="button" value="<roundcube:label name="cancel" />" class="button" onclick="history.back()" />&nbsp;
+       <roundcube:endif />
+</div>
+
+<roundcube:include file="/includes/footer.html" />
+
+</body>
+</html>
diff --git a/skins/larry/templates/folders.html b/skins/larry/templates/folders.html
new file mode 100644 (file)
index 0000000..988ff95
--- /dev/null
@@ -0,0 +1,52 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+</head>
+<body class="noscroll">
+
+<roundcube:include file="/includes/header.html" />
+
+<div id="mainscreen" class="offset">
+
+<roundcube:include file="/includes/settingstabs.html" />
+
+<div id="settings-right">
+
+<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>
+<div id="folderslist-content" class="scroller withfooter">
+<roundcube:object name="foldersubscription" form="subscriptionform" id="subscription-table" class="listing" noheader="true" />
+</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:if condition="env:quota" />
+               <roundcube:object name="quotaDisplay" id="quotadisplay" class="countdisplay" display="text" />
+       <roundcube:endif />
+</div>
+</div>
+
+<div id="folder-details" class="uibox contentbox">
+       <div class="iframebox">
+               <roundcube:object name="folderframe" id="preferences-frame" style="width:100%; height:100%" frameborder="0" src="/watermark.html" />
+       </div>
+       <roundcube:object name="message" id="message" class="statusbar" />
+</div>
+
+</div>
+
+</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>
+</html>
diff --git a/skins/larry/templates/identities.html b/skins/larry/templates/identities.html
new file mode 100644 (file)
index 0000000..d9270b6
--- /dev/null
@@ -0,0 +1,41 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+</head>
+<body class="noscroll">
+
+<roundcube:include file="/includes/header.html" />
+
+<div id="mainscreen" class="offset">
+
+<roundcube:include file="/includes/settingstabs.html" />
+
+<div id="settings-right">
+       
+<div id="identitieslist" class="uibox listbox">
+<h2 class="boxtitle"><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="" />
+</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" />
+</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" />
+       </div>
+       <roundcube:object name="message" id="message" class="statusbar" />
+</div>
+
+</div>
+
+</div>
+
+<roundcube:include file="/includes/footer.html" />
+
+</body>
+</html>
diff --git a/skins/larry/templates/identityedit.html b/skins/larry/templates/identityedit.html
new file mode 100644 (file)
index 0000000..8d5e622
--- /dev/null
@@ -0,0 +1,22 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+</head>
+<body class="iframe">
+
+<h1 class="boxtitle"><roundcube:object name="steptitle" /></h1>
+
+<div id="preferences-details" class="boxcontent">
+<roundcube:object name="identityform" class="propform" size="40" textareacols="40" textarearows="6" />
+</div>
+
+<div class="footerleft formbuttons">
+       <roundcube:button command="save" type="input" class="button mainaction" label="save" />
+</div>
+
+<roundcube:include file="/includes/footer.html" />
+
+</body>
+</html>
diff --git a/skins/larry/templates/importcontacts.html b/skins/larry/templates/importcontacts.html
new file mode 100644 (file)
index 0000000..89aea0a
--- /dev/null
@@ -0,0 +1,36 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+</head>
+<body>
+
+<roundcube:include file="/includes/header.html" />
+
+<div id="mainscreen">
+
+<div id="addressbooktoolbar" class="toolbar">
+       <roundcube:button command="list" type="link" class="button back disabled" classAct="button back" classSel="button back pressed" label="back" />
+</div>
+
+<div class="offset uibox contentbox">
+<h2 class="boxtitle"><roundcube:label name="importcontacts" /></h2>
+
+<div class="boxcontent readtext">
+<roundcube:object name="importstep" />
+
+<br/>
+
+<p class="formbuttons">
+       <roundcube:object name="importnav" class="button" />
+</p>
+
+</div>
+
+</div>
+
+<roundcube:include file="/includes/footer.html" />
+
+</body>
+</html>
diff --git a/skins/larry/templates/login.html b/skins/larry/templates/login.html
new file mode 100644 (file)
index 0000000..8aac930
--- /dev/null
@@ -0,0 +1,51 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<meta name="Robots" content="noindex,nofollow" />
+<roundcube:include file="/includes/links.html" />
+</head>
+<body>
+
+<div id="login-form">
+<div class="box-inner">
+<roundcube:object name="logo" src="/images/roundcube_logo.png" id="logo" border="0" />
+
+<form name="form" action="./" method="post">
+<roundcube:object name="loginform" form="form" size="40" />
+
+<p class="formbuttons"><input type="submit" class="button mainaction" value="<roundcube:label name='login' />" /></p>
+
+</form>
+</div>
+
+<div class="box-bottom">
+       <roundcube:object name="message" id="message" />
+</div>
+
+<div id="bottomline">
+       <roundcube:var name="config:product_name"> <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 />
+       <roundcube:container name="loginfooter" id="bottomline" />
+</div>
+</div>
+
+<roundcube:include file="/includes/footer.html" />
+
+<roundcube:object name="preloader" images="
+  /images/ajaxloader.gif
+  /images/buttons.png
+  /images/addcontact.png
+  /images/filetypes.png
+  /images/listicons.png
+  /images/messages.png
+  /images/quota.png
+  /images/selector.png
+  /images/splitter.png
+  /images/watermark.jpg
+" />
+
+</body>
+</html>
diff --git a/skins/larry/templates/mail.html b/skins/larry/templates/mail.html
new file mode 100644 (file)
index 0000000..8b205ef
--- /dev/null
@@ -0,0 +1,233 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<style type="text/css">
+<roundcube:if condition="config:preview_pane == true" />
+       #mailview-top { height: <roundcube:exp expression="!empty(cookie:mailviewsplitter) ? cookie:mailviewsplitter-48 : 276" />px; }
+       #mailview-bottom { top: <roundcube:exp expression="!empty(cookie:mailviewsplitter) ? cookie:mailviewsplitter+6 : 330" />px; height: auto; }
+       #mailpreviewframe { display: block; }
+<roundcube:endif />
+</style>
+</head>
+<body>
+
+<div class="minwidth">
+<roundcube:include file="/includes/header.html" />
+
+<div id="mainscreen">
+
+<!-- toolbar -->
+<div id="messagetoolbar" class="toolbar">
+       <roundcube:button command="checkmail" type="link" class="button checkmail disabled" classAct="button checkmail" classSel="button checkmail pressed" label="refresh" title="checkmail" />
+       <roundcube:button command="compose" type="link" class="button compose disabled" classAct="button compose" classSel="button compose pressed" label="compose" title="writenewmessage" />
+       <span class="spacer"></span>
+       <roundcube:include file="/includes/mailtoolbar.html" />
+</div>
+
+<div id="mailview-left">
+
+<!-- folders list -->
+<div id="folderlist-header"></div>
+<div id="mailboxcontainer" class="uibox listbox">
+<div id="folderlist-content" class="scroller withfooter">
+<roundcube:object name="mailboxlist" id="mailboxlist" class="listing" 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:if condition="env:quota" />
+               <roundcube:object name="quotaDisplay" id="quotadisplay" class="countdisplay" display="text" />
+       <roundcube:endif />
+</div>
+</div>
+
+</div>
+
+<div id="mailview-right">
+
+<div id="messagesearchtools">
+
+<!-- search filter -->
+<div id="searchfilter">
+       <roundcube:object name="searchfilter" class="searchfilter decorated" />
+</div>
+
+<!-- search box -->
+<div id="quicksearchbar">
+<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=" " />
+</div>
+
+</div>
+
+<roundcube:if condition="config:preview_pane == true" />
+<div id="mailview-top" class="uibox">
+<roundcube:else />
+<div id="mailview-top" class="uibox fullheight">
+<roundcube:endif />
+
+<!-- messagelist -->
+<div id="messagelistcontainer" class="boxlistcontent">
+<roundcube:object name="messages"
+       id="messagelist"
+       class="records-table sortheader"
+       optionsmenuIcon="true" />
+</div>
+
+<!-- list footer -->
+<div id="messagelistfooter">
+       <div id="listcontrols">
+               <roundcube:if condition="env:threads" />
+                       <a href="#list" class="iconbutton listmode" id="maillistmode" title="<roundcube:label name='list' />">List</a>
+                       <a href="#threads" class="iconbutton threadmode" id="mailthreadmode" title="<roundcube:label name='threads' />">Threads</a>
+               <roundcube:else />
+                       <a href="#list" class="iconbutton listmode selected" title="<roundcube:label name='list' />" onclick="return false">List</a>
+                       <a href="#threads" class="iconbutton threadmode disabled" title="<roundcube:label name='threads' />" onclick="return false">Threads</a>
+               <roundcube:endif />
+       </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>
+       <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>
+       <roundcube:endif />
+       </div>
+
+       <div id="countcontrols" class="pagenav dark">
+               <roundcube:object name="messageCountDisplay" class="countdisplay" />
+               <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;|" />
+               </span>
+       </div>
+
+       <roundcube:container name="listcontrols" id="listcontrols" />
+
+       <a href="#preview" id="mailpreviewtoggle" title="<roundcube:label name='previewpane' />"></a>
+</div>
+
+</div><!-- end mailview-top -->
+
+<div id="mailview-bottom" class="uibox">
+
+<div id="mailpreviewframe">
+<roundcube:object name="messagecontentframe" id="messagecontframe" style="width:100%; height:100%" frameborder="0" src="/watermark.html" />
+</div>
+
+<roundcube:object name="message" id="message" class="statusbar" />
+
+</div><!-- end mailview-bottom -->
+
+</div><!-- end mailview-right -->
+
+</div><!-- end mainscreen -->
+
+<div><!-- end minwidth -->
+
+<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)" /> <roundcube:label name="subject" /></label></li>
+               <li><label><input type="checkbox" name="s_mods[]" value="from" id="s_mod_from" onclick="UI.set_searchmod(this)" /> <roundcube:label name="from" /></label></li>
+               <li><label><input type="checkbox" name="s_mods[]" value="to" id="s_mod_to" onclick="UI.set_searchmod(this)" /> <roundcube:label name="to" /></label></li>
+               <li><label><input type="checkbox" name="s_mods[]" value="cc" id="s_mod_cc" onclick="UI.set_searchmod(this)" /> <roundcube:label name="cc" /></label></li>
+               <li><label><input type="checkbox" name="s_mods[]" value="bcc" id="s_mod_bcc" onclick="UI.set_searchmod(this)" /> <roundcube:label name="bcc" /></label></li>
+               <li><label><input type="checkbox" name="s_mods[]" value="text" id="s_mod_text" onclick="UI.set_searchmod(this)" /> <roundcube:label name="msgtext" /></label></li>
+       </ul>
+</div>
+
+<div id="dragmessagemenu" class="popupmenu">
+       <ul class="toolbarmenu">
+               <li><roundcube:button command="moveto" onclick="return rcmail.drag_menu_action('moveto')" label="move" classAct="active" /></li>
+               <li><roundcube:button command="copy" onclick="return rcmail.drag_menu_action('copy')" label="copy" classAct="active" /></li>
+       </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 class="separator_below"><roundcube:button command="purge" type="link" label="empty" classAct="active" /></li>
+               <li><roundcube:button command="folders" task="settings" type="link" label="managefolders" classAct="active" /></li>
+               <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>
+       </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>
+       </ul>
+</div>
+
+<div id="listoptions" class="propform popupdialog">
+<roundcube:if condition="!in_array('list_cols', (array)config:dont_override)" />
+       <fieldset class="floating">
+               <legend><roundcube:label name="listcolumns" /></legend>
+               <ul class="proplist">
+                       <li><label class="disabled"><input type="checkbox" name="list_col[]" value="threads" checked="checked" disabled="disabled" /> <roundcube:label name="threads" /></label></li>
+                       <li><label class="disabled"><input type="checkbox" name="list_col[]" value="subject" checked="checked" disabled="disabled" /> <roundcube:label name="subject" /></label></li>
+                       <li><label><input type="checkbox" name="list_col[]" value="fromto" /> <roundcube:label name="fromto" /></label></li>
+                       <li><label><input type="checkbox" name="list_col[]" value="from" /> <roundcube:label name="from" /></label></li>
+                       <li><label><input type="checkbox" name="list_col[]" value="to" /> <roundcube:label name="to" /></label></li>
+                       <li><label><input type="checkbox" name="list_col[]" value="replyto" /> <roundcube:label name="replyto" /></label></li>
+                       <li><label><input type="checkbox" name="list_col[]" value="cc" /> <roundcube:label name="cc" /></label></li>
+                       <li><label><input type="checkbox" name="list_col[]" value="date" /> <roundcube:label name="date" /></label></li>
+                       <li><label><input type="checkbox" name="list_col[]" value="size" /> <roundcube:label name="size" /></label></li>
+                       <li><label><input type="checkbox" name="list_col[]" value="status" /> <roundcube:label name="readstatus" /></label></li>
+                       <li><label><input type="checkbox" name="list_col[]" value="attachment" /> <roundcube:label name="attachment" /></label></li>
+                       <li><label><input type="checkbox" name="list_col[]" value="flag" /> <roundcube:label name="flag" /></label></li>
+                       <li><label><input type="checkbox" name="list_col[]" value="priority" /> <roundcube:label name="priority" /></label></li>
+               </ul>
+       </fieldset>
+       <roundcube:endif />
+       <roundcube:if condition="!in_array('message_sort_col', (array)config:dont_override)" />
+       <fieldset class="floating">
+               <legend><roundcube:label name="listsorting" /></legend>
+               <ul class="proplist">
+                       <li><label><input type="radio" name="sort_col" value="" /> <roundcube:label name="nonesort" /></label></li>
+                       <li><label><input type="radio" name="sort_col" value="arrival" /> <roundcube:label name="arrival" /></label></li>
+                       <li><label><input type="radio" name="sort_col" value="date" /> <roundcube:label name="sentdate" /></label></li>
+                       <li><label><input type="radio" name="sort_col" value="subject" /> <roundcube:label name="subject" /></label></li>
+                       <li><label><input type="radio" name="sort_col" value="fromto" /> <roundcube:label name="fromto" /></label></li>
+                       <li><label><input type="radio" name="sort_col" value="from" /> <roundcube:label name="from" /></label></li>
+                       <li><label><input type="radio" name="sort_col" value="to" /> <roundcube:label name="to" /></label></li>
+                       <li><label><input type="radio" name="sort_col" value="cc" /> <roundcube:label name="cc" /></label></li>
+                       <li><label><input type="radio" name="sort_col" value="size" /> <roundcube:label name="size" /></label></li>
+               </ul>
+       </fieldset>
+       <roundcube:endif />
+       <roundcube:if condition="!in_array('message_sort_order', (array)config:dont_override)" />
+       <fieldset class="floating">
+               <legend><roundcube:label name="listorder" /></legend>
+               <ul class="proplist">
+                       <li><label><input type="radio" name="sort_ord" value="ASC" /> <roundcube:label name="asc" /></label></li>
+                       <li><label><input type="radio" name="sort_ord" value="DESC" /> <roundcube:label name="desc" /></label></li>
+               </ul>
+       </fieldset>
+       <roundcube:endif />
+       <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" />
+       </div>
+</div>
+
+<roundcube:include file="/includes/footer.html" />
+
+</body>
+</html>
diff --git a/skins/larry/templates/message.html b/skins/larry/templates/message.html
new file mode 100644 (file)
index 0000000..141d66e
--- /dev/null
@@ -0,0 +1,71 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+</head>
+<body class="noscroll">
+
+<roundcube:include file="/includes/header.html" />
+
+<div id="mainscreen">
+
+<!-- toolbar -->
+<div id="messagetoolbar" class="toolbar fullwidth">
+       <roundcube:button command="list" type="link" class="button back disabled" classAct="button back" classSel="button back pressed" label="back" />
+       <span class="spacer"></span>
+       <roundcube:include file="/includes/mailtoolbar.html" />
+       <div class="toolbarselect">
+               <roundcube:object name="mailboxlist" type="select" noSelection="moveto" maxlength="25" onchange="rcmail.command('moveto', this.options[this.selectedIndex].value)" class="mailboxlist decorated" folder_filter="mail" />
+       </div>
+</div>
+
+<div id="mailview-left">
+
+<!-- folders list -->
+<div id="mailboxcontainer" class="uibox listbox">
+<div class="scroller">
+<roundcube:object name="mailboxlist" id="mailboxlist" class="listing" folder_filter="mail" unreadwrap="%s" />
+</div>
+</div>
+
+</div>
+
+<div id="mailview-right" class="offset uibox">
+
+<div id="messageheader">
+<span id="previewheaderstoggle"></span>
+
+<h2 class="subject"><roundcube:object name="messageHeaders" valueOf="subject" /></h2>
+<roundcube:object name="messageHeaders" class="headers-table" addicon="/images/addcontact.png" exclude="subject" max="20" />
+<roundcube:object name="messageFullHeaders" id="full-headers" />
+
+<!-- record navigation -->
+<div id="countcontrols" class="pagenav">
+       <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;" />
+</div>
+
+</div>
+
+<div id="messagecontent">
+<div class="rightcol">
+<roundcube:object name="messageAttachments" id="attachment-list" class="attachmentslist" />
+</div>
+<div class="leftcol">
+<roundcube:object name="messageObjects" id="message-objects" />
+<roundcube:object name="messageBody" id="messagebody" />
+</div>
+</div>
+
+<roundcube:object name="message" id="message" class="statusbar" />
+
+</div><!-- end mailview-right -->
+
+</div><!-- end mainscreen -->
+
+<roundcube:include file="/includes/footer.html" />
+
+</body>
+</html>
diff --git a/skins/larry/templates/messageerror.html b/skins/larry/templates/messageerror.html
new file mode 100644 (file)
index 0000000..3c3c9ac
--- /dev/null
@@ -0,0 +1,52 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+</head>
+<roundcube:if condition="env:action != 'show'" />
+<body class="iframe fullheight">
+
+<div id="mainscreen" class="watermark" style="top:0"></div>
+
+<roundcube:else />
+<body>
+
+<roundcube:include file="/includes/header.html" />
+
+<div id="mainscreen">
+
+<!-- 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>
+</div>
+
+<div id="mailview-left">
+
+<!-- folders list -->
+<div id="mailboxcontainer" class="uibox listbox">
+<div class="scroller">
+       <roundcube:object name="mailboxlist" id="mailboxlist" class="listing" folder_filter="mail" unreadwrap="%s" />
+</div>
+</div>
+
+</div>
+
+<div id="mailview-right" class="offset uibox">
+
+<div id="messagecontent" class="watermark"></div>
+
+<roundcube:object name="message" id="message" class="statusbar" />
+
+</div><!-- end mailview-right -->
+
+</div><!-- end mainscreen -->
+
+<roundcube:include file="/includes/footer.html" />
+
+<roundcube:endif />
+
+</body>
+</html>
diff --git a/skins/larry/templates/messagepart.html b/skins/larry/templates/messagepart.html
new file mode 100644 (file)
index 0000000..db07829
--- /dev/null
@@ -0,0 +1,36 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+</head>
+<body class="extwin">
+
+<div id="header">
+<div id="topline">
+       <div class="topright">
+               <a href="#close" class="closelink" onclick="self.close()"><roundcube:label name="close" /></a>
+       </div>
+</div>
+
+<div id="topnav">
+       <roundcube:object name="logo" src="/images/roundcube_logo.png" id="toplogo" border="0" alt="Logo" />
+</div>
+
+<br style="clear:both" />
+</div>
+
+<div id="mainscreen">
+
+<div id="partheader" class="uibox">
+<roundcube:object name="messagePartControls" class="headers-table" />
+</div>
+
+<div id="messagepartcontainer" class="uibox">
+<roundcube:object name="messagePartFrame" id="messagepartframe" style="width:100%; height:100%" />
+</div>
+
+</div>
+
+</body>
+</html>
diff --git a/skins/larry/templates/messagepreview.html b/skins/larry/templates/messagepreview.html
new file mode 100644 (file)
index 0000000..62e90ad
--- /dev/null
@@ -0,0 +1,56 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+</head>
+<body class="iframe fullheight">
+
+<div id="messageheader" class="previewheader">
+<h3 class="subject"><roundcube:object name="messageHeaders" valueOf="subject" /></h3>
+
+<a href="#details" id="previewheaderstoggle"><span class="iconlink"></span></a>
+
+<table class="headers-table" id="preview-shortheaders"><tbody><tr>
+<roundcube:if condition="env:mailbox == config:drafts_mbox || env:mailbox == config:sent_mbox">
+       <td class="header-title"><roundcube:label name="to" /></td>
+       <td class="header from"><roundcube:object name="messageHeaders" valueOf="to" max="3" addicon="/images/addcontact.png" /></td>
+<roundcube:else />
+       <td class="header-title"><roundcube:label name="from" /></td>
+       <td class="header from"><roundcube:object name="messageHeaders" valueOf="from" addicon="/images/addcontact.png" /></td>
+<roundcube:endif />
+       <td class="header-title"><roundcube:label name="date" /></td>
+       <td class="header date"><span><roundcube:object name="messageHeaders" valueOf="date" /></span></td>
+</tr></tbody></table>
+
+<roundcube:object name="messageHeaders" id="preview-allheaders" class="headers-table" addicon="/images/addcontact.png" max="10" exclude="subject,replyto" />
+
+<roundcube:object name="messageFullHeaders" id="full-headers" />
+
+<!-- record navigation -->
+<div id="countcontrols" class="pagenav">
+<roundcube:if condition="env:mailbox != config:drafts_mbox">
+       <roundcube:button command="reply" type="link" class="button reply" classSel="button reply pressed" innerClass="inner" title="replytomessage" content="&lt;-" />
+       <roundcube:button command="reply-all" type="link" class="button replyall" classSel="button replyall pressed" innerClass="inner" title="replytoallmessage" content="&lt;&lt;-" />
+       <roundcube:button command="forward" type="link" class="button forward" classSel="button forward pressed" innerClass="inner" title="forwardmessage" content="-&gt;" />
+       &nbsp;
+<roundcube:endif />
+       <roundcube:button command="permaurl" type="link" class="button extwin" classSel="button extwin pressed" innerClass="inner" title="openinextwin" content="[]" target="_blank" />
+</div>
+
+</div>
+
+<div id="messagepreview">
+<div class="rightcol">
+<roundcube:object name="messageAttachments" id="attachment-list" class="attachmentslist" />
+</div>
+<div class="leftcol">
+<roundcube:object name="messageObjects" id="message-objects" />
+<roundcube:object name="messageBody" id="messagebody" />
+</div>
+</div>
+
+<roundcube:include file="/includes/footer.html" />
+
+</body>
+</html>
diff --git a/skins/larry/templates/messageprint.html b/skins/larry/templates/messageprint.html
new file mode 100644 (file)
index 0000000..d01c70b
--- /dev/null
@@ -0,0 +1,19 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<link rel="shortcut icon" href="/images/favicon.ico"/>
+<link rel="stylesheet" type="text/css" href="/print.css" />
+</head>
+<body>
+
+<div id="header"><roundcube:object name="logo" src="/images/roundcube_logo.png" id="toplogo" border="0" alt="Logo" /></div>
+
+<div id="printmessageframe">
+<roundcube:object name="messageHeaders" class="headers-table" />
+<roundcube:object name="messageAttachments" id="attachment-list" />
+<roundcube:object name="messageBody" id="messagebody" showImages="false" />
+</div>
+
+</body>
+</html>
diff --git a/skins/larry/templates/plugin.html b/skins/larry/templates/plugin.html
new file mode 100644 (file)
index 0000000..341f604
--- /dev/null
@@ -0,0 +1,29 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+</head>
+<body class="noscroll">
+
+<roundcube:include file="/includes/header.html" />
+
+<div id="mainscreen" class="offset">
+
+<roundcube:if condition="env:task == 'settings'" />
+       <roundcube:include file="/includes/settingstabs.html" />
+<roundcube:endif />
+
+<div id="pluginbody" class="uibox contentbox">
+<roundcube:object name="plugin.body" />
+<roundcube:object name="message" id="message" class="statusbar" />
+</div>
+
+</div>
+
+<roundcube:object name="plugin.footer" />
+
+<roundcube:include file="/includes/footer.html" />
+
+</body>
+</html>
diff --git a/skins/larry/templates/settings.html b/skins/larry/templates/settings.html
new file mode 100644 (file)
index 0000000..427e0a4
--- /dev/null
@@ -0,0 +1,37 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+</head>
+<body class="noscroll">
+
+<roundcube:include file="/includes/header.html" />
+
+<div id="mainscreen" class="offset">
+
+<roundcube:include file="/includes/settingstabs.html" />
+
+<div id="settings-right">
+
+<div id="sectionslist" class="uibox listbox">
+<div class="scroller">
+       <roundcube:object name="sectionslist" id="sections-table" class="listing" />
+</div>
+</div>
+
+<div id="preferences-box" class="uibox contentbox">
+       <div class="iframebox">
+               <roundcube:object name="prefsframe" id="preferences-frame" style="width:100%; height:100%" frameborder="0" src="/watermark.html" />
+       </div>
+       <roundcube:object name="message" id="message" class="statusbar" />
+</div>
+
+</div>
+
+</div>
+
+<roundcube:include file="/includes/footer.html" />
+
+</body>
+</html>
diff --git a/skins/larry/templates/settingsedit.html b/skins/larry/templates/settingsedit.html
new file mode 100644 (file)
index 0000000..1a80f58
--- /dev/null
@@ -0,0 +1,22 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+</head>
+<body class="iframe">
+
+<h1 class="boxtitle"><roundcube:object name="sectionname" /></h1>
+
+<div id="preferences-details" class="boxcontent">
+<roundcube:object name="userprefs" form="form" class="propform" />
+</div>
+
+<div class="footerleft formbuttons">
+       <roundcube:button command="save" type="input" class="button mainaction" label="save" />
+</div>
+
+<roundcube:include file="/includes/footer.html" />
+
+</body>
+</html>
diff --git a/skins/larry/ui.js b/skins/larry/ui.js
new file mode 100644 (file)
index 0000000..0d6ee9e
--- /dev/null
@@ -0,0 +1,1151 @@
+/**
+ * Roundcube functions for default skin interface
+ *
+ * Copyright (c) 2011, The Roundcube Dev Team
+ *
+ * The contents are subject to the Creative Commons Attribution-ShareAlike
+ * License. It is allowed to copy, distribute, transmit and to adapt the work
+ * by keeping credits to the original autors in the README file.
+ * See http://creativecommons.org/licenses/by-sa/3.0/ for details.
+ *
+ * $Id$
+ */
+
+
+function rcube_mail_ui()
+{
+  var env = {};
+  var popups = {};
+  var popupconfig = {
+    forwardmenu:        { editable:1 },
+    searchmenu:         { editable:1, callback:searchmenu },
+    listoptions:        { editable:1 },
+    dragmessagemenu:    { sticky:1 },
+    groupmenu:          { above:1 },
+    mailboxmenu:        { above:1 },
+    composeoptionsmenu: { editable:1, overlap: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 }
+  };
+
+  var me = this;
+  var mailviewsplit;
+  var compose_headers = {};
+
+  // export public methods
+  this.set = setenv;
+  this.init = init;
+  this.init_tabs = init_tabs;
+  this.show_about = show_about;
+  this.show_popup = show_popup;
+  this.set_searchmod = set_searchmod;
+  this.show_uploadform = show_uploadform;
+  this.show_header_row = show_header_row;
+  this.hide_header_row = hide_header_row;
+
+
+  /**
+   *
+   */
+  function setenv(key, val)
+  {
+    env[key] = val;
+  }
+
+  /**
+   * Initialize UI
+   * Called on document.ready
+   */
+  function init()
+  {
+    rcmail.addEventListener('message', message_displayed);
+
+    /***  mail task  ***/
+    if (rcmail.env.task == 'mail') {
+      rcmail.addEventListener('menu-open', show_listoptions);
+      rcmail.addEventListener('menu-save', save_listoptions);
+      rcmail.addEventListener('responseafterlist', function(e){ switch_view_mode(rcmail.env.threading ? 'thread' : 'list') });
+
+      var dragmenu = $('#dragmessagemenu');
+      if (dragmenu.length) {
+        rcmail.gui_object('message_dragmenu', 'dragmessagemenu');
+        popups.dragmessagemenu = dragmenu;
+      }
+
+      if (rcmail.env.action == 'show' || rcmail.env.action == 'preview') {
+        rcmail.addEventListener('aftershow-headers', function() { layout_messageview(); });
+        rcmail.addEventListener('afterhide-headers', function() { layout_messageview(); });
+        $('#previewheaderstoggle').click(function(e){ toggle_preview_headers(this); return false });
+      }
+      else if (rcmail.env.action == 'compose') {
+        rcmail.addEventListener('aftertoggle-editor', function(){ window.setTimeout(function(){ layout_composeview() }, 200); });
+        rcmail.addEventListener('aftersend-attachment', show_uploadform);
+        rcmail.addEventListener('add-recipient', function(p){ show_header_row(p.field, true); });
+        layout_composeview();
+
+        // Show input elements with non-empty value
+        var field, fields = ['cc', 'bcc', 'replyto', 'followupto'];
+        for (var f=0; f < fields.length; f++) {
+          if ((field = $('#_'+fields[f])) && field.length && field.val() != '')
+            show_header_row(fields[f], true);
+        }
+
+        $('#composeoptionstoggle').parent().click(function(){
+          $('#composeoptionstoggle').toggleClass('enabled');
+          $('#composeoptions').toggle();
+          layout_composeview();
+          return false;
+        }).css('cursor', 'pointer');
+
+        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();
+      }
+      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 });
+
+        mailviewsplit = new rcube_splitter({ id:'mailviewsplitter', p1:'#mailview-top', p2:'#mailview-bottom',
+          orientation:'h', relative:true, start:310, min:150, size:12, offset:4 });
+        if (previewframe)
+          mailviewsplit.init();
+
+        new rcube_scroller('#folderlist-content', '#folderlist-header', '#folderlist-footer');
+
+        rcmail.addEventListener('setquota', update_quota);
+      }
+
+      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();
+      }
+    }
+    /***  settings task  ***/
+    else if (rcmail.env.task == 'settings') {
+      rcmail.addEventListener('init', function(){
+        var tab = '#settingstabpreferences';
+        if (rcmail.env.action)
+          tab = '#settingstab' + (rcmail.env.action.indexOf('identity')>0 ? 'identities' : rcmail.env.action.replace(/\./g, ''));
+
+        $(tab).addClass('selected')
+          .children().first().removeAttr('onclick').click(function() { return false; });
+      });
+
+      if (rcmail.env.action == 'folders') {
+        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);
+      }
+      else if (rcmail.env.action == 'identities') {
+        new rcube_splitter({ id:'identviewsplitter', p1:'#identitieslist', p2:'#identity-details',
+          orientation:'v', relative:true, start:266, min:180, size:12 }).init();
+      }
+      else if (rcmail.env.action == 'preferences' || !rcmail.env.action) {
+        new rcube_splitter({ id:'prefviewsplitter', p1:'#sectionslist', p2:'#preferences-box',
+          orientation:'v', relative:true, start:266, min:180, size:12 }).init();
+      }
+    }
+    /***  addressbook task  ***/
+    else if (rcmail.env.task == 'addressbook') {
+      rcmail.addEventListener('afterupload-photo', show_uploadform);
+
+      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();
+        new rcube_splitter({ id:'addressviewsplitter', p1:'#addresslist', p2:'#contacts-box',
+          orientation:'v', relative:true, start:286, min:270, size:12 }).init();
+
+        new rcube_scroller('#directorylist-content', '#directorylist-header', '#directorylist-footer');
+      }
+    }
+
+    // turn a group of fieldsets into tabs
+    $('.tabbed').each(function(idx, elem){ init_tabs(elem); })
+
+    // decorate select elements
+    $('select.decorated').each(function(){
+      if (bw.opera) {
+        $(this).removeClass('decorated');
+        return;
+      }
+
+      var select = $(this),
+        height = Math.max(select.height(), 26) - 2,
+        width = select.width() - 22,
+        title = $('option', this).first().text();
+
+      if ($('option:selected', this).val() != '')
+        title = $('option:selected', this).text();
+
+      var overlay = $('<a class="menuselector"><span class="handle">' + title + '</span></a>')
+        .css('position', 'absolute')
+        .offset(select.position())
+        .insertAfter(select);
+
+      overlay.children().width(width).height(height).css('line-height', (height - 1) + 'px');
+
+      select.change(function() {
+          var val = $('option:selected', this).text();
+          $(this).next().children().html(val);
+        });
+
+      var parent = select.parent();
+      if (parent.css('position') != 'absolute')
+        parent.css('position', 'relative');
+
+      // re-set original select width to fix click action and options width in some browsers
+      select.width(overlay.width());
+    });
+
+    $(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
+      var doc = this.contentDocument ? this.contentDocument : this.contentWindow ? this.contentWindow.document : null;
+      $(doc).mouseup(body_mouseup);
+    })
+    .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'
+        && !config.toggle
+        && (!config.editable || !target_overlaps(target, obj.get(0)))
+        && (!config.sticky || !rcube_mouse_is_over(e, obj.get(0)))
+      ) {
+        var myid = id+'';
+        window.setTimeout(function(){ show_popupmenu(myid, false) }, 10);
+      }
+    }
+  }
+
+  /**
+   * Update UI on window resize
+   */
+  function resize()
+  {
+    if (rcmail.env.task == 'mail' && (rcmail.env.action == 'show' || rcmail.env.action == 'preview')) {
+      layout_messageview();
+    }
+    if (rcmail.env.task == 'mail' && rcmail.env.action == 'compose') {
+      layout_composeview();
+    }
+
+    // make iframe footer buttons float if scrolling is active
+    $('body.iframe .footerleft').each(function(){
+      var footer = $(this),
+        body = $(document.body),
+        floating = footer.hasClass('floating'),
+        overflow = body.outerHeight(true) > $(window).height();
+      if (overflow != floating) {
+        var action = overflow ? 'addClass' : 'removeClass';
+        footer[action]('floating');
+        body[action]('floatingbuttons');
+      }
+    })
+
+  }
+
+  /**
+   * Triggered when a new user message is displayed
+   */
+  function message_displayed(p)
+  {
+    // show a popup dialog on errors
+    if (p.type == 'error' && rcmail.env.task != 'login') {
+      if (!me.messagedialog) {
+        me.messagedialog = $('<div>').addClass('popupdialog');
+      }
+
+      var pos = $(p.object).offset();
+      pos.top -= (rcmail.env.task == 'login' ? 20 : 160);
+      me.messagedialog.dialog('close');
+      me.messagedialog.html(p.message)
+        .dialog({
+          resizable: false,
+          closeOnEscape: true,
+          dialogClass: 'popupmessage ' + p.type,
+          title: env.errortitle,
+          close: function() {
+            me.messagedialog.dialog('destroy').hide();
+          },
+          position: ['center', pos.top],
+          hide: { effect:'drop', direction:'down' },
+          width: 420,
+          minHeight: 90
+        }).show();
+
+      window.setTimeout(function(){ me.messagedialog.dialog('close'); }, Math.max(2000, p.timeout / 2));
+    }
+  }
+
+
+  /**
+   * Adjust UI objects of the mail view screen
+   */
+  function layout_messageview()
+  {
+    $('#messagecontent').css('top', ($('#messageheader').outerHeight() + 1) + 'px');
+    $('#message-objects div a').addClass('button');
+
+    if (!$('#attachment-list li').length) {
+      $('div.rightcol').hide();
+      $('div.leftcol').css('margin-right', '0');
+    }
+  }
+
+
+  function render_mailboxlist(splitter)
+  {
+    // TODO: implement smart shortening of long folder names
+  }
+
+
+  function resize_leftcol(splitter)
+  {
+    // STUB
+  }
+
+
+  function layout_composeview()
+  {
+    var body = $('#composebody'),
+      form = $('#compose-content'),
+      bottom = $('#composeview-bottom'),
+      w, h;
+
+    bottom.css('height', (form.height() - bottom.position().top) + 'px');
+
+    w = body.parent().width() - 5;
+    h = body.parent().height() - 16;
+    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');
+
+    var abooks = $('#directorylist');
+    $('#compose-contacts .scroller').css('top', abooks.position().top + abooks.outerHeight());
+  }
+
+
+  function update_quota(p)
+  {
+    var 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');
+  }
+
+
+  /**
+   * Trigger for popup menus
+   */
+  function show_popup(popup, show, config)
+  {
+    // auto-register menu object
+    if (config || !popupconfig[popup])
+      popupconfig[popup] = $.extend(popupconfig[popup] || {}, config);
+
+    var visible = show_popupmenu(popup, show),
+      config = popupconfig[popup];
+    if (typeof config.callback == 'function')
+      config.callback(visible);
+  }
+
+  /**
+   * Show/hide a specific popup menu
+   */
+  function show_popupmenu(popup, show)
+  {
+    var obj = popups[popup],
+      config = popupconfig[popup],
+      ref = $('#'+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) {
+      var parent = ref.parent(),
+        win = $(window),
+        pos;
+
+      if (parent.hasClass('dropbutton'))
+        ref = parent;
+
+      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']();
+
+    // hide drop-down elements on buggy browsers
+    if (bw.ie6 && config.overlap) {
+      $('select').css('visibility', show?'hidden':'inherit');
+      $('select', obj).css('visibility', 'inherit');
+    }
+
+    return show;
+  }
+
+  /**
+   *
+   */
+  function target_overlaps(target, elem)
+  {
+    while (target.parentNode) {
+      if (target.parentNode == elem)
+        return true;
+      target = target.parentNode;
+    }
+    return false;
+  }
+
+
+  /**
+   * Show/hide the preview pane
+   */
+  function toggle_preview_pane(e)
+  {
+    var button = $(e.target),
+      frame = $('#mailpreviewframe'),
+      visible = !frame.is(':visible'),
+      splitter = mailviewsplit.pos || parseInt(bw.get_cookie('mailviewsplitter') || 320),
+      topstyles, bottomstyles, uid;
+
+    frame.toggle();
+    button.removeClass().addClass(visible ? 'enabled' : 'closed');
+
+    if (visible) {
+      $('#mailview-top').removeClass('fullheight').css({ bottom:'auto' });
+      $('#mailview-bottom').css({ height:'auto' });
+
+      rcmail.env.contentframe = 'messagecontframe';
+      if (uid = rcmail.message_list.get_single_selection())
+        rcmail.show_message(uid, false, true);
+
+      // let the splitter set the correct size and position
+      if (mailviewsplit.handle) {
+        mailviewsplit.handle.show();
+        mailviewsplit.resize();
+      }
+      else
+        mailviewsplit.init();
+    }
+    else {
+      rcmail.env.contentframe = null;
+      rcmail.show_contentframe(false);
+
+      $('#mailview-top').addClass('fullheight').css({ height:'auto', bottom:'28px' });
+      $('#mailview-bottom').css({ top:'auto', height:'26px' });
+
+      if (mailviewsplit.handle)
+        mailviewsplit.handle.hide();
+    }
+
+    if (visible && uid && rcmail.message_list)
+      rcmail.message_list.scrollto(uid);
+
+    rcmail.command('save-pref', { name:'preview_pane', value:(visible?1:0) });
+  }
+
+
+  /**
+   * Switch between short and full headers display in message preview
+   */
+  function toggle_preview_headers(button)
+  {
+    $('#preview-shortheaders').toggle();
+    var full = $('#preview-allheaders').toggle(),
+      button = $('a#previewheaderstoggle');
+
+    // add toggle button to full headers table
+    if (full.is(':visible'))
+      button.attr('href', '#hide').removeClass('add').addClass('remove')
+    else
+      button.attr('href', '#details').removeClass('remove').addClass('add')
+  }
+
+
+  /**
+   *
+   */
+  function switch_view_mode(mode)
+  {
+    if (rcmail.env.threading != (mode == 'thread'))
+      rcmail.set_list_options(null, undefined, undefined, mode == 'thread' ? 1 : 0);
+
+    $('#maillistmode, #mailthreadmode').removeClass('selected');
+    $('#mail'+mode+'mode').addClass('selected');
+  }
+
+
+  /**** popup callbacks ****/
+
+  function searchmenu(show)
+  {
+    if (show && rcmail.env.search_mods) {
+      var n, all,
+        obj = popups['searchmenu'],
+        list = $('input:checkbox[name="s_mods[]"]', obj),
+        mbox = rcmail.env.mailbox,
+        mods = rcmail.env.search_mods;
+
+      if (rcmail.env.task == 'mail') {
+        mods = mods[mbox] ? mods[mbox] : mods['*'];
+        all = 'text';
+      }
+      else {
+        all = '*';
+      }
+
+      if (mods[all])
+        list.map(function() {
+          this.checked = true;
+          this.disabled = this.value != all;
+        });
+      else {
+        list.prop('disabled', false).prop('checked', false);
+        for (n in mods)
+          $('#s_mod_' + n).prop('checked', true);
+      }
+    }
+  }
+
+
+  function spellmenu(show)
+  {
+    var link, li,
+      lang = rcmail.spellcheck_lang(),
+      menu = popups.spellmenu,
+      ul = $('ul', menu);
+
+    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'));
+          });
+
+        link.appendTo(li);
+        li.appendTo(ul);
+      }
+
+      ul.appendTo(menu);
+    }
+
+    // select current language
+    $('li', ul).each(function() {
+      var el = $('a', this);
+      if (el.data('lang') == lang)
+        el.addClass('selected');
+      else if (el.hasClass('selected'))
+        el.removeClass('selected');
+    });
+  }
+
+
+  /**
+   *
+   */
+  function show_listoptions()
+  {
+    var $dialog = $('#listoptions');
+
+    // close the dialog
+    if ($dialog.is(':visible')) {
+      $dialog.dialog('close');
+      return;
+    }
+
+    // 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', $.inArray(this.value, rcmail.env.coltypes) != -1);
+    });
+
+    $dialog.dialog({
+      modal: true,
+      resizable: false,
+      closeOnEscape: true,
+      title: null,
+      close: function() {
+        $dialog.dialog('destroy').hide();
+      },
+      width: 650
+    }).show();
+  }
+
+
+  /**
+   *
+   */
+  function save_listoptions()
+  {
+    $('#listoptions').dialog('close');
+
+    var sort = $('input[name="sort_col"]:checked').val(),
+      ord = $('input[name="sort_ord"]:checked').val(),
+      thread = $('input[name="view"]:checked').val(),
+      cols = $('input[name="list_col[]"]:checked')
+        .map(function(){ return this.value; }).get();
+
+    rcmail.set_list_options(cols, sort, ord, thread == 'thread' ? 1 : 0);
+  }
+
+
+  /**
+   *
+   */
+  function set_searchmod(elem)
+  {
+    var all, m, task = rcmail.env.task,
+      mods = rcmail.env.search_mods,
+      mbox = rcmail.env.mailbox;
+
+    if (!mods)
+      mods = {};
+
+    if (task == 'mail') {
+      if (!mods[mbox])
+        mods[mbox] = rcube_clone_object(mods['*']);
+      m = mods[mbox];
+      all = 'text';
+    }
+    else { //addressbook
+      m = mods;
+      all = '*';
+    }
+
+    if (!elem.checked)
+      delete(m[elem.value]);
+    else
+      m[elem.value] = 1;
+
+    // mark all fields
+    if (elem.value != all)
+      return;
+
+    $('input:checkbox[name="s_mods[]"]').map(function() {
+      if (this == elem)
+        return;
+
+      this.checked = true;
+      if (elem.checked) {
+        this.disabled = true;
+        delete m[this.value];
+      }
+      else {
+        this.disabled = false;
+        m[this.value] = 1;
+      }
+    });
+  }
+
+
+  function show_uploadform()
+  {
+    var $dialog = $('#upload-dialog');
+
+    // close the dialog
+    if ($dialog.is(':visible')) {
+      $dialog.dialog('close');
+      return;
+    }
+    
+    // add icons to clone file input field
+    if (rcmail.env.action == 'compose' && !$dialog.data('extended')) {
+      $('<a>')
+        .addClass('iconlink add')
+        .attr('href', '#add')
+        .html('Add')
+        .appendTo($('input[type="file"]', $dialog).parent())
+        .click(add_uploadfile);
+      $dialog.data('extended', true);
+    }
+
+    $dialog.dialog({
+      modal: true,
+      resizable: false,
+      closeOnEscape: true,
+      title: $dialog.attr('title'),
+      close: function() {
+        try { $('#upload-dialog form').get(0).reset(); }
+        catch(e){ }  // ignore errors
+
+        $dialog.dialog('destroy').hide();
+        $('div.addline', $dialog).remove();
+      },
+      width: 480
+    }).show();
+
+    if (!document.all)
+      $('input[type=file]', $dialog).first().click();
+  }
+
+  function add_uploadfile(e)
+  {
+    var div = $(this).parent();
+    var clone = div.clone().addClass('addline').insertAfter(div);
+    clone.children('.iconlink').click(add_uploadfile);
+    clone.children('input').val('');
+
+    if (!document.all)
+      $('input[type=file]', clone).click();
+  }
+
+
+  /**
+   *
+   */
+  function show_header_row(which, updated)
+  {
+    var row = $('#compose-' + which);
+    if (row.is(':visible'))
+      return;  // nothing to be done here
+
+    if (compose_headers[which] && !updated)
+      $('#_' + which).val(compose_headers[which]);
+
+    row.show();
+    $('#' + which + '-link').hide();
+    layout_composeview();
+    return false;
+  }
+
+  /**
+   *
+   */
+  function hide_header_row(which)
+  {
+    // copy and clear field value
+    var field = $('#_' + which);
+    compose_headers[which] = field.val();
+    field.val('');
+
+    $('#compose-' + which).hide();
+    $('#' + which + '-link').show();
+    layout_composeview();
+    return false;
+  }
+
+
+  /**
+   * Fieldsets-to-tabs converter
+   */
+  function init_tabs(elem, current)
+  {
+    var content = $(elem),
+      id = content.get(0).id,
+      fs = content.children('fieldset');
+
+    if (!fs.length)
+      return;
+
+    if (!id) {
+      id = 'rcmtabcontainer';
+      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);
+
+    // convert fildsets into tabs
+    fs.each(function(idx) {
+      var tab, a, elm = $(this), legend = elm.children('legend');
+
+      // 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 })
+
+      // remove legend
+      legend.remove();
+      // style fieldset
+      elm.addClass('tab');
+      // style selected tab
+      if (idx == current)
+        tab.addClass('selected');
+
+      // 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);
+    });
+  }
+
+  /**
+   * Show about page as jquery UI dialog
+   */
+  function show_about(elem)
+  {
+    var frame = $('<iframe>').attr('id', 'aboutframe')
+      .attr('src', rcmail.url('settings/about'))
+      .attr('frameborder', '0')
+      .appendTo(document.body);
+
+    var h = Math.floor($(window).height() * 0.75);
+    var buttons = {};
+    var supportln = $('#supportlink');
+    if (supportln.length && (env.supporturl = supportln.attr('href')))
+      buttons[supportln.html()] = function(e){ env.supporturl.indexOf('mailto:') < 0 ? window.open(env.supporturl) : location.href = env.supporturl };
+
+    frame.dialog({
+      modal: true,
+      resizable: false,
+      closeOnEscape: true,
+      title: elem ? elem.title || elem.innerHTML : null,
+      close: function() {
+        frame.dialog('destroy').remove();
+      },
+      buttons: buttons,
+      width: 640,
+      height: h
+    }).width(640);
+  }
+}
+
+
+/**
+ * Roundcube Scroller class
+ */
+function rcube_scroller(list, top, bottom)
+{
+  var ref = this;
+
+  this.list = $(list);
+  this.top = $(top);
+  this.bottom = $(bottom);
+  this.step_size = 6;
+  this.step_time = 20;
+  this.delay = 500;
+
+  this.top
+    .mouseenter(function() { ref.ts = window.setTimeout(function() { ref.scroll('down'); }, ref.delay); })
+    .mouseout(function() { if (ref.ts) window.clearTimeout(ref.ts); });
+
+  this.bottom
+    .mouseenter(function() { ref.ts = window.setTimeout(function() { ref.scroll('up'); }, ref.delay); })
+    .mouseout(function() { if (ref.ts) window.clearTimeout(ref.ts); });
+
+  this.scroll = function(dir)
+  {
+    var ref = this, size = this.step_size;
+
+    if (!rcmail.drag_active)
+      return;
+
+    if (dir == 'down')
+      size *= -1;
+
+    this.list.get(0).scrollTop += size;
+    this.ts = window.setTimeout(function() { ref.scroll(dir); }, this.step_time);
+  };
+};
+
+
+/**
+ * Roundcube UI splitter class
+ *
+ * @constructor
+ */
+function rcube_splitter(p)
+{
+  this.p = p;
+  this.id = p.id;
+  this.horizontal = (p.orientation == 'horizontal' || p.orientation == 'h');
+  this.halfsize = (p.size !== undefined ? p.size : 10) / 2;
+  this.pos = p.start || 0;
+  this.min = p.min || 20;
+  this.offset = p.offset || 0;
+  this.relative = p.relative ? true : false;
+  this.drag_active = false;
+  this.render = p.render;
+  this.callback = p.callback;
+
+  var me = this;
+  rcube_splitter._instances[this.id] = me;
+
+  this.init = function()
+  {
+    this.p1 = $(this.p.p1);
+    this.p2 = $(this.p.p2);
+
+    // check if referenced elements exist, otherwise abort
+    if (!this.p1.length || !this.p2.length)
+      return;
+
+    // create and position the handle for this splitter
+    this.p1pos = this.relative ? this.p1.position() : this.p1.offset();
+    this.p2pos = this.relative ? this.p2.position() : this.p2.offset();
+    this.handle = $('<div>')
+      .attr('id', this.id)
+      .attr('unselectable', 'on')
+      .addClass('splitter ' + (this.horizontal ? 'splitter-h' : 'splitter-v'))
+      .appendTo(this.p1.parent())
+      .bind('mousedown', onDragStart);
+
+    if (this.horizontal) {
+      var top = this.p1pos.top + this.p1.outerHeight();
+      this.handle.css({ left:'0px', top:top+'px' });
+    }
+    else {
+      var left = this.p1pos.left + this.p1.outerWidth();
+      this.handle.css({ left:left+'px', top:'0px' });
+    }
+
+    // listen to window resize on IE
+    if (bw.ie)
+      $(window).resize(onResize);
+
+    // read saved position from cookie
+    var cookie = bw.get_cookie(this.id);
+    if (cookie && !isNaN(cookie)) {
+      this.pos = parseFloat(cookie);
+      this.resize();
+    }
+    else if (this.pos) {
+      this.resize();
+      this.set_cookie();
+    }
+  };
+
+  /**
+   * Set size and position of all DOM objects
+   * according to the saved splitter position
+   */
+  this.resize = function()
+  {
+    if (this.horizontal) {
+      this.p1.css('height', Math.floor(this.pos - this.p1pos.top - this.halfsize) + 'px');
+      this.p2.css('top', Math.ceil(this.pos + this.halfsize + 2) + 'px');
+      this.handle.css('top', Math.round(this.pos - this.halfsize + this.offset)+'px');
+      if (bw.ie) {
+        var new_height = parseInt(this.p2.parent().outerHeight(), 10) - parseInt(this.p2.css('top'), 10) - (bw.ie8 ? 2 : 0);
+        this.p2.css('height', (new_height > 0 ? new_height : 0) + 'px');
+      }
+    }
+    else {
+      this.p1.css('width', Math.floor(this.pos - this.p1pos.left - this.halfsize) + 'px');
+      this.p2.css('left', Math.ceil(this.pos + this.halfsize) + 'px');
+      this.handle.css('left', Math.round(this.pos - this.halfsize + this.offset + 3)+'px');
+      if (bw.ie) {
+        var new_width = parseInt(this.p2.parent().outerWidth(), 10) - parseInt(this.p2.css('left'), 10) ;
+        this.p2.css('width', (new_width > 0 ? new_width : 0) + 'px');
+      }
+    }
+
+    this.p2.resize();
+    this.p1.resize();
+
+    // also resize iframe covers
+    if (this.drag_active) {
+      $('iframe').each(function(i, elem) {
+        var pos = $(this).offset();
+        $('#iframe-splitter-fix-'+i).css({ top: pos.top+'px', left: pos.left+'px', width:elem.offsetWidth+'px', height: elem.offsetHeight+'px' });
+      });
+    }
+
+    if (typeof this.render == 'function')
+      this.render(this);
+  };
+
+  /**
+   * Handler for mousedown events
+   */
+  function onDragStart(e)
+  {
+    // disable text selection while dragging the splitter
+    if (bw.konq || bw.chrome || bw.safari)
+      document.body.style.webkitUserSelect = 'none';
+
+    me.p1pos = me.relative ? me.p1.position() : me.p1.offset();
+    me.p2pos = me.relative ? me.p2.position() : me.p2.offset();
+    me.drag_active = true;
+
+    // start listening to mousemove events
+    $(document).bind('mousemove.'+this.id, onDrag).bind('mouseup.'+this.id, onDragStop);
+
+    // enable dragging above iframes
+    $('iframe').each(function(i, elem) {
+      $('<div>')
+        .attr('id', 'iframe-splitter-fix-'+i)
+        .addClass('iframe-splitter-fix')
+        .css({ background: '#fff',
+          width: elem.offsetWidth+'px', height: elem.offsetHeight+'px',
+          position: 'absolute', opacity: '0.001', zIndex: 1000
+        })
+        .css($(this).offset())
+        .appendTo('body');
+      });
+  };
+
+  /**
+   * Handler for mousemove events
+   */
+  function onDrag(e)
+  {
+    if (!me.drag_active)
+      return false;
+
+    var pos = rcube_event.get_mouse_pos(e);
+
+    if (me.relative) {
+      var parent = me.p1.parent().offset();
+      pos.x -= parent.left;
+      pos.y -= parent.top;
+    }
+
+    if (me.horizontal) {
+      if (((pos.y - me.halfsize) > me.p1pos.top) && ((pos.y + me.halfsize) < (me.p2pos.top + me.p2.outerHeight()))) {
+        me.pos = Math.max(me.min, pos.y - me.offset);
+        me.resize();
+      }
+    }
+    else {
+      if (((pos.x - me.halfsize) > me.p1pos.left) && ((pos.x + me.halfsize) < (me.p2pos.left + me.p2.outerWidth()))) {
+        me.pos = Math.max(me.min, pos.x - me.offset);
+        me.resize();
+      }
+    }
+
+    me.p1pos = me.relative ? me.p1.position() : me.p1.offset();
+    me.p2pos = me.relative ? me.p2.position() : me.p2.offset();
+    return false;
+  };
+
+  /**
+   * Handler for mouseup events
+   */
+  function onDragStop(e)
+  {
+    // resume the ability to highlight text
+    if (bw.konq || bw.chrome || bw.safari)
+      document.body.style.webkitUserSelect = 'auto';
+
+    // cancel the listening for drag events
+    $(document).unbind('.'+me.id);
+    me.drag_active = false;
+
+    // remove temp divs
+    $('div.iframe-splitter-fix').remove();
+
+    me.set_cookie();
+
+    if (typeof me.callback == 'function')
+      me.callback(me);
+
+    return bw.safari ? true : rcube_event.cancel(e);
+  };
+
+  /**
+   * Handler for window resize events
+   */
+  function onResize(e)
+  {
+    if (me.horizontal) {
+      var new_height = parseInt(me.p2.parent().outerHeight(), 10) - parseInt(me.p2[0].style.top, 10) - (bw.ie8 ? 2 : 0);
+      me.p2.css('height', (new_height > 0 ? new_height : 0) +'px');
+    }
+    else {
+      var new_width = parseInt(me.p2.parent().outerWidth(), 10) - parseInt(me.p2[0].style.left, 10);
+      me.p2.css('width', (new_width > 0 ? new_width : 0) + 'px');
+    }
+  };
+
+  /**
+   * Saves splitter position in cookie
+   */
+  this.set_cookie = function()
+  {
+    var exp = new Date();
+    exp.setYear(exp.getFullYear() + 1);
+    bw.set_cookie(this.id, this.pos, exp);
+  };
+
+} // end class rcube_splitter
+
+
+// static getter for splitter instances
+rcube_splitter._instances = {};
+
+rcube_splitter.get_instance = function(id)
+{
+  return rcube_splitter._instances[id];
+};
diff --git a/skins/larry/watermark.html b/skins/larry/watermark.html
new file mode 100644 (file)
index 0000000..d1061d1
--- /dev/null
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title></title>
+<style type="text/css">
+
+html, body {
+        height: 95%;
+}
+
+body {
+       background: url(images/watermark.jpg) center no-repeat #fff;
+}
+
+</style>
+</head>
+<body>
+
+</body>
+</html>
\ No newline at end of file